Impulser fra London, hvordan programmere backups og debugging i PhpStorm Meetup #9
Impulser fra London, hvordan programmere backups og
debugging i PhpStorm
Meetup #9
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
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'])?:'' ?>
Nyheter
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/
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
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
Morten, Odd Erik og Kristian på
PHP UK Conference
Hva likte jeg best?
PHP 7
Sikkerhet (2 foredrag)
Symfony (integrere legacy i moderne kode)
Automation
PhpStorm debugging
MySQL og JSON
PHP 7
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)
… PHP 7
Mange errors i 5.x har blitt catchable exceptions i 7
mysql_* er vekk :-)
Sikkerhet
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!
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
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 :-)
SQL injection
Bruk PDO/mysqli med prepared statements
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
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)
Vise sensitive data
Feilmeldinger
Server info i header og feil-sider
The golden rulesby James Titcumb
Keep it simple
Know the risks
Fail securely
Don`t reinvent the wheel
Never trust anything/anyone
Eating spaghetti with Symfony
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)
Tips…
Lag små apps (som spiser av features til den store gamle koden)
3 alternativer
Wrapping legacy app
Proxy, som sender request håndtering til legacy eller Symfony
Hybrid, at legacy kaller Symfony
Automation
Hvorfor automatisere?
Unngå human fuckups
Slippe kjedelig, repeterende oppgaver
Effektivere, spare tid/kostnad
Hvordan
Gjør det manuelt og skriv notater
Automatiser litt
Automatiser litt til
Etterhvert er hele prosessen automatisert
PhpStorm debugging
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…)
Xdebug tips
Mer enn bare step over, into og out
Console lar deg manipulere on-the-fly
Frames lar deg gå backover i stacken :-)
MySQL og JSON
Nye JSON features i 5.7
Native JSON datatype
JSON functions
Generated columns
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!
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
https://joind.in/event/php-uk-conference
Mange foredrag har lagt ut slides på joind.in :-)