Top Banner
Impulser fra London, hvordan programmere backups og debugging i PhpStorm Meetup #9
47

Meetup 9 i KristansandPHP

Apr 16, 2017

Download

Internet

Morten Bergset
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Meetup 9 i KristansandPHP

Impulser fra London, hvordan programmere backups og

debugging i PhpStorm

Meetup #9

Page 2: Meetup 9 i KristansandPHP

Agenda

Velkommen v/Morten

Freebies fra sponsor: php[architect]

PHP UK Conference v/Morten

Debugging i PhpStorm v/Dave

Presentasjon av Domeneshop

Backups i PHP

Page 3: Meetup 9 i KristansandPHP

Dagens tips: shorthand

Dersom du henter et tall fra databasen, men ikke vil vise tallet dersom det er 0:

(alle 3 gir samme resultat)

<?= ($row['antall']>0)?$row['antall']:'' ?> <?= ($row['antall'])?$row['antall']:'' ?>

<?= ($row['antall'])?:'' ?>

Page 4: Meetup 9 i KristansandPHP

Nyheter

Page 5: Meetup 9 i KristansandPHP

PHP 7.0.4 ble released 3. mars

Strict mode er hypa for tiden (både i PHP og MySQL)

Larvel Spark er lanseres snart, men kommer til å koste penger

https kryptering er mye omtalt for tiden, hostingselskaper gjør det lettere, Google gir det SEO points, browsere advarer når det ikke er https (f.eks. passord felt i skjema) og OpenSSL er nytt open source prosjekt :-)

Mandrill skal koste penger og folk er forbanna…

PhpStorm 11 er i public preview (jeg bruker EAP versjon av 11 og er kjempefornøyd med features og stabilitet)https://www.jetbrains.com/phpstorm/nextversion/

Page 6: Meetup 9 i KristansandPHP

jQuery 3

jQuery ble 10 år i januar, og om få uker kommer v3

$.get() og $.post() får ny signatur, tidligere var url først string parameter, slik er det ikke lengre...

unwrap() får selector, det blir kult!

data() vil endre properties til camel case, det kan skape litt trøbbel (my-property blir myProperty)

gode gamle load() er fjernet...

les mer her http://developer.telerik.com/featured/whats-new-in-jquery-3

eller last ned beta 1 her https://code.jquery.com/jquery-3.0.0-beta1.min.js

Page 7: Meetup 9 i KristansandPHP

PhpStorm 11 kommer i 2016(jeg bruker EAP versjonen)

Bedre PHP støtte (code completion etc)

Bedre refactoring

Konverter “switch” til “if”, bytte “if” og “else”

Debugge REST med klient internt i PhpStorm

SFTP/FTP/FTPS keep-alive

Bedre Angular 2 og TypeScript support

Bedre version controll features

Compact function support

Page 8: Meetup 9 i KristansandPHP

Morten, Odd Erik og Kristian på

PHP UK Conference

Page 9: Meetup 9 i KristansandPHP
Page 10: Meetup 9 i KristansandPHP
Page 11: Meetup 9 i KristansandPHP
Page 12: Meetup 9 i KristansandPHP
Page 13: Meetup 9 i KristansandPHP
Page 14: Meetup 9 i KristansandPHP
Page 15: Meetup 9 i KristansandPHP
Page 16: Meetup 9 i KristansandPHP
Page 17: Meetup 9 i KristansandPHP
Page 18: Meetup 9 i KristansandPHP

Hva likte jeg best?

PHP 7

Sikkerhet (2 foredrag)

Symfony (integrere legacy i moderne kode)

Automation

PhpStorm debugging

MySQL og JSON

Page 19: Meetup 9 i KristansandPHP

PHP 7

Page 20: Meetup 9 i KristansandPHP

PHP 7

Den er mye raskere enn 5.x

The <=> "spaceship" operator (sammenligning som returnerer -1, 0 eller 1)

Null coalesce operator ?? (returnerer den første som er satt)

Type hints og return type hints (for mer strict programmering)

Page 21: Meetup 9 i KristansandPHP

… PHP 7

Mange errors i 5.x har blitt catchable exceptions i 7

mysql_* er vekk :-)

Page 22: Meetup 9 i KristansandPHP

Sikkerhet

Page 23: Meetup 9 i KristansandPHP

Sikkerhet

Brukere er største risiko (dårlige passord, klikker på vedlegg, mer fokusert på brukervennlighet enn sikkerhet…)

A Ukrainian power plant was hacked & shutdown because someone had macros enabled in Excel

2 faktor login er god sikkerhet!

Sessions og kryptering: ikke lag noe selv!

Page 24: Meetup 9 i KristansandPHP
Page 25: Meetup 9 i KristansandPHP

Sikkerhets tips

Bare lagre det du trenger

Ha en kriseplan - hva gjør du om ting går til helvete?

Rutiner for håndtering av låst konto og nytt passord

God sikkerhet endres stadig - følg med!

Alltid oppdater sikkkerhets patcher

Composer for enkel oppdatering

Page 26: Meetup 9 i KristansandPHP

Trust no one

Filter input

hindre SQL injection og crap i databasen

Escape output

hindrer Cross-Site Scripting

echo htmlspecialchars($string, ENT_QUOTES, ‘UTF-8');

{{$string}} i Laravel :-)

Page 27: Meetup 9 i KristansandPHP

SQL injection

Bruk PDO/mysqli med prepared statements

Page 28: Meetup 9 i KristansandPHP

Cross-Site Request Forgery (CSRF)

CSRF attacks specifically target state-changing requests

Typisk trykke på en link i epost e.l.

endre din epost, legge til noe i shopping cart etc

Løsningen er token i hvert skjema

Page 29: Meetup 9 i KristansandPHP

Timing attacks

Uten begrensning kan hacker finne passord med timing attacks (hver gang man kommer ett tegn lengre i riktig passord, så tar det litt mer tid, fordi da sjekkes neste tegn)

Page 30: Meetup 9 i KristansandPHP

Vise sensitive data

Feilmeldinger

Server info i header og feil-sider

Page 31: Meetup 9 i KristansandPHP

The golden rulesby James Titcumb

Keep it simple

Know the risks

Fail securely

Don`t reinvent the wheel

Never trust anything/anyone

Page 32: Meetup 9 i KristansandPHP

Eating spaghetti with Symfony

Page 33: Meetup 9 i KristansandPHP

Tips

Twig for å ta ut html templates

Service container (global klasse som håndterer instasiering av objekter/servicer)

Bruk events for å håndtere sekundære ting (f.eks. når man oppretter en ordre så er det primært å lagre, men det så sende en bekreftese på epost er sekundært, og kan gjerns flyttes i en egen PHP fil)

Page 34: Meetup 9 i KristansandPHP

Tips…

Lag små apps (som spiser av features til den store gamle koden)

Page 35: Meetup 9 i KristansandPHP

3 alternativer

Wrapping legacy app

Proxy, som sender request håndtering til legacy eller Symfony

Hybrid, at legacy kaller Symfony

Page 36: Meetup 9 i KristansandPHP

Automation

Page 37: Meetup 9 i KristansandPHP

Hvorfor automatisere?

Unngå human fuckups

Slippe kjedelig, repeterende oppgaver

Effektivere, spare tid/kostnad

Page 38: Meetup 9 i KristansandPHP

Hvordan

Gjør det manuelt og skriv notater

Automatiser litt

Automatiser litt til

Etterhvert er hele prosessen automatisert

Page 39: Meetup 9 i KristansandPHP

PhpStorm debugging

Page 40: Meetup 9 i KristansandPHP

Xdebug

Lagd av Derick Rethans

Han likte logo`n til PHP gruppen vår :-)

Debugging aktiveres med query string eller cookie (Firefox og Chrome har adons for det…)

Page 41: Meetup 9 i KristansandPHP

Xdebug tips

Mer enn bare step over, into og out

Console lar deg manipulere on-the-fly

Frames lar deg gå backover i stacken :-)

Page 42: Meetup 9 i KristansandPHP

MySQL og JSON

Page 43: Meetup 9 i KristansandPHP

Nye JSON features i 5.7

Native JSON datatype

JSON functions

Generated columns

Page 44: Meetup 9 i KristansandPHP

Nice…

MySQL vil gi feilmelding dersom man prøver å lagre invalid JSON tekst

JSON felter blir lagret binært og er 10x raskere enn tekst søk

Kan lage virtuelle kolonner basert på JSON data for indeksering gir super rask lookup!

Og det er planlagt flere features i kommende versjoner!

Page 45: Meetup 9 i KristansandPHP

Funksjoner

select JSON_EXTRACT gir sql select i JSON string

JSON search, where clause i JSON objektet:where feature->”$.properties.STREET” is null

JSON_SEARCH gir json path til queries etterpå

JSON_OBJECT bygger opp json streng on-the-fly

JSON_REPLACE for enkle oppdateringer inni json

Page 46: Meetup 9 i KristansandPHP
Page 47: Meetup 9 i KristansandPHP

https://joind.in/event/php-uk-conference

Mange foredrag har lagt ut slides på joind.in :-)