Dutch PHP Conference 2010 – dag 3
De derde en laatste conferentiedag was op zaterdag. Ik had verwacht dat het een stuk rustiger zou zijn, mede ook vanwege het mooie weer buiten, maar de opkomst was groot. De keynote over security-centered design heb ik overgeslagen, om toch wat uit te kunnen slapen, maar ik was mooi op tijd voor de presentaties. Ook hier moest weer gekozen worden uit de drie simultane tracks en de unconference, dus er was keuze genoeg. Op mijn programma stonden dependency injection, geo data, technical writing en code reviews.
Dependency injection
In de presentatie Real Word Dependency Injection sprak Stephan Hochdörfer over het toepassen van dependency injection in PHP. Hij startte met vertellen waarom afhankelijkheden slecht (kunnen) zijn: sterk gekoppelde code, moeilijk herbruikbare componenten en moeilijk testbare componenten. Door dependency injection te gebruiken worden de afhankelijkheden losser gemaakt.
Daarvoor kan het best een dependency injection framework gebruikt worden. Stephan maakt daarbij een onderscheid tussen simpele containers en full stacked frameworks.
Er zijn verschillende mogelijkheden in PHP voor dependency injection zoals constructor injection of setter injection. De configuratie kan door middel van annotaties (al dan niet op naam), of via een configuratiebestand in XML- of PHP-notatie. Stephan stipte daarbij de noodzaak van configuratiecaching aan, zodat de configuratie niet voor elke request opnieuw geparsed moet worden.
Al met al is er keuze genoeg en misschien wel teveel. Er zijn tientallen frameworks voor dependency injection en er is nog geen defacto standaard. Ook Stephan had een, op Spring gebaseerd, dependency framework geschreven. Ik vermoed dat met de tijd er wel een defacto standaard naar voren zal komen. Al met al was het een aardige introductie tot dependency injection in PHP.
Geo data
Marcus Deglos gaf een presentatie over het toepassen van geo data in PHP. Marcus stelt dat 80% van alle gegevens een geografische component heeft. Hij vertelt over de verschillende kaartrepresentaties en hoe hiertussen geconverteerd kan worden door middel van tools.
Geografische informatie kan uit verschillende bronnen worden gehaald, zoals onder andere:
- IP-adres (niet altijd betrouwbaar)
- Geo-informatie van de browser (bijvoorbeeld Geolocation API)
- Uit EXIF-informatie bij afbeeldingen (als de camera GPS-functionaliteit heeft)
Marcus ging daarna in op het gebruik van databases met een spatial extensie. Dergelijke databases hebben een datatype voor het opslaan van locaties en gebieden en hebben functies om te bepalen of een punt zich in een gebied bevindt en om de afstand tussen punten te bepalen. Ook voor MySQL is een dergelijke extensie beschikbaar, al wordt voor de afstandsbepaling blijkbaar geen rekening gehouden met de bolling van de aarde.
Voor het berekenen van afstanden tussen twee punten beschrijft hij twee methoden: de stelling van pythagoras (a2 + b2 = c2) en de Haversine formule. De laatste houdt rekening met de bolling van de aarde is daarom preciezer voor grote afstanden. Er is blijkbaar geen PHP-bibliotheek voor, maar de functies zijn vrij eenvoudig te schrijven (zie ook de slides).
Voor de visualisatie van de informatie toonde Marcus de Google Maps API met markers en overlays, heatmaps en een custom visualisatie die hij ontwikkeld had voor een mijnorganisatie. De punten werden daarbij omgezet van latitude/longitude en hoogte naar een x/y/z-stelsel, waarna ze eenvoudig door middel van Flash in 3D konden worden weergegeven. Een leuke toepassing.
Technical writing
Na de lunch was het tijd om te werken aan de soft skills. In Technical Writing 101 legde Elizabeth Naramore de basisprincipes uit voor het schrijven van een technisch artikel. Ze bracht het ook erg luchtig, dus het was een welkome afwisseling.
Het schrijven van een artikel is een vijf-stappenplan:
- Idee
- Pre-write
- Schrijven
- Bewerken
- Herhaal
De eerste drie stappen zijn vrij mechanisch. Elizabeth beschrijft hiervoor verschillende methoden om ze uit te voeren. Het moeilijke werk zit in het bewerken van het artikel zodat het prettig leesbaar wordt. Of, zoals ze het zelf verwoord: make it not suck. Verder geeft ze als advies mee om vooral artikelen te schrijven om er beter in te worden en dat jij de enige bent die kan delen wat je weet!
PHP Code review
De laatste presentatie was van Sebastian Bergmann over het reviewen van PHP code. Sebastian biedt het reviewen van PHP code door een externe als dienst aan.
In zijn presentatie noemt hij 5 typen reviews:
- formal inspection:
- over the shoulder:
- e-mail pass-around:
- pair programming:
- tool assisted:
Over deze methoden concludeert Sebastian dat formal inspections en pair programming bewezen technologieen zijn, maar veel tijd en inspanning vergen. Over the shoulder is het eenvoudigst te implementeren, maar niet af te dwingen
en e-mail pass around balans tussen geinvesteerde tijd en implementatiegemak.
Sebastian liet vervolgens zien hoe hij te werk gaat bij het reviewen van code, in dit geval een beta van WordPress.
Hij maakt daarbij gebruik van een aantal tools, deels zelf ontwikkelt, die interessant zijn om eens naar te kijken:
- phploc: toont aantal regels code en complexiteit van code
- pdepend: als jdepend
- coderank: duidt “interessante” plekken in de code aan
- phpcs: statische analyse tool die zoekt naar code smells
Met phpcode browser kan code met uitvoer van bovenstaande tools worden geannoteerd. Ook schijnen er integraties met de tools in Eclipse/PDT en Netbeans. Al met al goede tools om de gezondheid van de broncode te monitoren.
Na de presentatie was het tijd om naar huis te gaan en van het mooie weer te genieten. Het was een goede conferentie met veel interessante presentaties (en ik heb de unconference niet eens bezocht) op een mooie locatie.
Conclusie
Het is duidelijk dat de PHP community bezig is met professionaliseren. Dit uit zich in de aandacht voor schaalbaarheid, testbaarheid en het adopteren van agile werkprocessen. Thema’s die ook gelden voor Java en Ruby en essentieel blijken voor alle, behalve de meest triviale projecten.
Naast de presentaties waren de hands-on sessies op dag 1 ook interessant. Doordat een sessie een halve dag duurt is er ruimte om wat dieper op het onderwerp in te gaan. Al met al was het een leuke conferentie, die ik hoop ook volgend jaar bij te wonen.
Noot: Slides van de presentaties zijn te vinden op de Dutch PHP Conference 2010 pagina op joind.in.


Reageer
RSS feed for comments on this post · TrackBack URI