Trends en technieken op Tek-X Chicago
TEK-X (uitgesproken als “Tek ten”) is een conferentie in Chicago voor professionele PHP developers. De conferentie bestaat uit 4 dagen, waarvan 1 tutorial dag en 3 dagen waarop er volop gepresenteerd wordt. De conferentie is redelijk breed opgezet wat inhoud betreft, er zijn zowel presentaties die betrekking hebben op het managen van een development team, als presentaties waarin uitgebreid wordt verteld over (veelal nieuwe) technieken die gebruikt kunnen worden en de beste manieren om dat te doen. Met dank aan Microsoft en Cal Evans konden mijn collega Arnold Zoutman en ik aanwezig zijn bij deze conferentie.
De eerste dag van de conferentie bestond uit 6 tutorials, waarin developers konden aanschuiven en in een informele sfeer nieuwe technieken konden uitproberen, of reeds bekende technieken verfijnen door instructies van de professionals te krijgen. Zo gaf Josh Holmes een mooie presentatie over het simpel houden van webdevelopment. Arnold Zoutman heeft op Frankwatching een mooi verslag geschreven van deze presentatie. Maar ook andere presentaties waren zeer de moeite waard.
Anti-spam & anti-gaming
Eli White is een ervaren developer die onder andere heeft gewerkt voor Digg.com. Hij vertelde over de veiligheidsproblemen die veel sites op dit moment kennen, en de verschillende opties om deze problemen -voor zover mogelijk- te voorkomen.
Het probleem
Op veel sites kunnen bezoekers hun reactie, commentaar of beoordeling achterlaten, of content delen met vrienden via sociale netwerken. Al deze opties zijn in potentie een extra beveiligingsrisico. Er zijn veel spammers actief die deze opties proberen te misbruiken, door geautomatiseerd reacties te plaatsen of artikelen te beoordelen die ze zelf geplaatst hebben. Een goed voorbeeld is de optie om reacties te kunnen plaatsen op een artikel op een weblog. Deze optie wordt regelmatig misbruikt door bedrijven, door op een geautomatiseerde manier reacties plaatsen met daarin links naar websites waarop ze proberen een product te verkopen, of simpelweg ten behoeve van linkbuilding / SEO waarde.
De mogelijke oplossingen
- De meest effectieve oplossing is om simpelweg elk ingevuld reactieformulier handmatig te controleren voordat er iets gepubliceerd wordt. Nadelen van deze optie zijn dat het tijdintensief is, en dat legitieme bezoekers even zullen moeten wachten voordat hun reactie geplaatst wordt. Daarmee is deze optie voor de grotere websites eigenlijk geen optie.
- Een andere optie is om bezoekers te verplichtten om in te loggen alvorens ze een reactie kunnen plaatsen. Je hebt dan meer controle over je bezoekers en personen die spam plaatsen kunnen geblokkeerd of verwijderd worden. Nadeel is dat er een hogere drempel ontstaat voor bezoekers om een reactie te plaatsen.
- Een andere optie die we steeds vaker zien is het plaatsen van een extra veld bij het reactieformulier, waarin een speciale code (of woord) ingevuld moet worden. Deze code wordt dan vaak getoond middels een afbeelding. Op die manier wordt het voor geautomatiseerde scripts / bots een stuk lastiger om automatisch reacties te plaatsen. Deze techniek wordt ook wel “Captcha” genoemd. Mogelijk nadeel is dat het voor bezoekers vervelend kan zijn om een extra code te moeten invullen.
- Een optie die er bij Digg.com voor heeft gezorgd dat de hoeveelheid spam met 90% gereduceerd werd, is het verplicht maken van de user-agent header. Als een website via een browser bekeken wordt, dan stuurt de browser een USER-AGENT header naar de website, waarin wat gegevens staan over de browser. Op die manier kunnen analytics pakketten onder andere detecteren welke browsers een bezoeker gebruikt. De geautomatiseerde scripts / bots die proberen misbruik te maken van formulieren op websites, sturen vaak geen user-agent header mee, en kunnen op deze manier dus simpel geblokkeerd worden.
- Javascript verplicht maken is een wat meer radicale optie. Wel effectief omdat 9 van de 10 geautomatiseerde scripts geen javascript uitvoeren, maar er zijn ook legitieme bezoekers die geen javascript kunnen gebruiken omdat ze bijvoorbeeld op een mobiel apparaat browsen, of omdat ze op een sterk beveiligd netwerk werken.
- Een hele slimme optie is om een verborgen veld in het formulier te plaatsen, en de waarde van het veld leeg te laten. Veel bots zullen proberen alle velden in een formulier te vullen, maar een echte bezoeker zal dit veld nooit invullen omdat het niet zichtbaar is. Op die manier kan onderscheid gemaakt worden tussen bezoekers en bots.
- Naast de bovengenoemde opties om formulieren veiliger te maken zijn er ook een aantal blacklists waarin IP adressen van bekende spammers bijgehouden worden. Op basis van die lijsten kunnen “bezoekers” geblokkeerd worden.
- Er zijn een aantal spam filters beschikbaar welke gebruikt kunnen worden om input van een formulier te scannen op spam. Voorbeelden zijn: SpamAssassin, Akismet (van WordPress), AntiSpamBee en Mollom.
Het mag duidelijk zijn dat er genoeg opties zijn, maar niet per definitie goede of slechte opties. Alles is afhankelijk van het soort website en de specifieke situatie van een website. Het combineren van verschillende opties is over het algemeen gezien voor veel sites een goed idee.
Bekijk hier de slides van de presentatie
XDebug
Derick Rethans, die op uiteenlopende manieren aan het PHP project mee werkt, spreekt meerdere keren op Tek-X. Hij behandelt verscheidene projecten, waaronder het DateTime object van PHP zelf en XDebug, een PHP extentie om het debuggen van PHP gemakkelijker en inzichtelijker te maken.
De XDebug demo die Derick gaf was redelijk uitgebreid. Hij liet zien hoe eenvoudig en inzichtelijk het debuggen binnen gemaakt kon worden door het gebruik van Xdebug. Met handige features als het tonen van gebruikte variabelen, geladen classen en laadtijden is het gemakkelijk om te vinden waar de bottlenecks van het script zich bevinden.
Het DateTime object is sinds PHP 5.2.0 geïmplementeerd binnen de PHP bibliotheek. Dit object is ideaal voor alle tijd en datum berekeningen binnen PHP. Het is mogelijk om berekeningen binnen alle (bekende) tijdzones te maken en stukken eenvoudiger om tijdsintervallen te stellen.
Bekijk hier de slides van de presentatie
Titanium
De markt vraagt om steeds meer mobile- en desktop applicaties. De talen die gebruikt kunnen worden voor deze applicaties zijn uit een lopend. Helaas is het met PHP niet mogelijk om een desktop of mobile applicatie te schrijven, met Titanium wordt dit wel mogelijk.
Tijdens deze sessie presenteert Ben Ramsey een uur lang de mogelijk heden met PHP binnen Titanium. De aankondiging van deze sessie doen veel beloven, maar helaas staat het allemaal nog redelijk in de kinderschoenen. Alle PHP die eventueel in een applicatie gebruikt gaat worden dient op een andere manier te worden aangeboden. Het is niet mogelijk om een bestand te selecteren en er op een snelle eenvoudige manier een mobile of desktop applicatie van te maken. Wel is het fijn om te weten dat PHP niet meer gelimiteerd is tot het gebruik op webservers alleen en dat het ontwikkelen van applicaties (al is het niet eenvoudig) mogelijk is.
Bekijk hier de slides van de presentatie
Developer trends in 2010
Matthew Schmidt is de VP Technology van Dzone.com, een sociale linkdump over webdevelopment. Hij vertelt een mooi verhaal over de developer trends en verwachtingen van 2010. Steeds meer (veelal kleine) development afdelingen stappen over op Agile development methoden. Hij sprak de verwachting uit dat ook steeds meer grotere bedrijven zullen volgen, en hun eigen interpretatie aan deze methode zullen gaan geven. In de browseroorlog verliest Internet Explorer steeds meer terrein. Snelle winnaar is Google Chrome.
Een andere trend is dat zowel front- als back-end developers steeds meer met Javascript / AJAX moeten kunnen werken. Vooral aan de back-end kant worden steeds meer front-end technieken toegepast. Er wordt in de media steeds meer gepubliceerd over veiligheid en mogelijke beveiligingsproblemen. Hackers worden slimmer, developers vertrouwen teveel op hun standaard frameworks wat beveiliging betreft en komen hierdoor steeds meer beveiligingsproblemen tegen, wat vervolgens negatieve publiciteit oplevert.
Matthew geeft aan dat rijke internet applicaties de toekomst zijn. Dus veel flexibiliteit en opties voor de gebruiker met interactieve interfaces. Er komen steeds meer apparaten met touch-screens en dat zorgt voor nieuwe navigatiemethoden. Tegelijkertijd zorgt dat ervoor dat developers extra rekening moeten houden met dit soort zaken. Er komen steeds meer nieuwe database types als vervanging –of naast- de relatieve databases. MongoDB, CouchDB. Nog niet veel bedrijven maken een volledige overstap, maar de interesse komt vanuit alle hoeken en is erg groot.
Versiecontrole bestaat al jaren lang, maar pas sinds kort is daar de concurrentiestrijd geopend. De oude en bekende pakketten zoals SubVersion en CVS blijven voorlopig nog wel bestaan, maar GIT is duidelijk en snel terrein aan het winnen. Steeds vaker en meer wordt er voor nieuwe programmeertalen gekozen als het gaat om specifieke project-oplossingen. Een aantal voorbeelden zijn: Ruby, Python, Clojure, Scala, Groovy.
HipHop for PHP
Scott MacVigar is sinds een kleine 6 maanden actief bij Facebook en draagt zijn steentje bij aan de verschillende open source projecten die Facebook heeft gelanceerd. Hij vertelt over het HipHopproject van Facebook. Ruim 2 jaar is er gewerkt aan HipHop, maar het heeft resultaat opgeleverd. Het doel was om code te optimaliseren, zodat er minder webservers nodig zouden zijn om de site te kunnen laten draaien, zonder verlies van functionaliteit.
Met HipHop zijn ze erin geslaagd om de benodigde capaciteit per webserver (gemiddeld) te halveren… Oftewel een enorme kostenbesparing op hardware! Het mooie aan dit verhaal is dat het project sinds kort volledig open source is gemaakt, en iedereen (die met PHP werkt) het dus gewoon uit kan proberen.
Met dank aan Arnold Zoutman.