Und da ist er auch schon vorbei, der zweite Vortragstag der International PHP-Conference 2009 hier in Karlsruhe. Ich bin mittlerweile deutlich optimistischer gestimmt was den Anspruch und die Relevanz einer solchen Konferenz angeht, denn viele der Sessions waren wirklich gut.
Aber von vorne.
Der Erste Vortrag “Building configurable applications for the web” wurde gehalten von so einem Yahoo!-News Fuzzi. Wirklich interessant, wie die Ihre Applikationen skalieren bzw. auf große Lasten ausrichten. Im Grunde werden einfach alle Bereiche einer Webseite in Module aufgeteilt (News-Artikel, related-links, Werbebanner, Kommentare etc..) und mit Prioritäten versehen. So ist zum Beispiel der eigentliche Newstext ja der Kern der Seite – hat also eine hohe Priorität – wo hingegen ein Bereich der weniger entscheidend ist (Related Links, Webebanner) durchaus nicht kritisch sind. Das Geheimnis liegt nun darin, diese Module konfiguriebar (konkret: abschaltbar) zu machen. Wenn nun (un)erwartet viel Traffic auf eine Seite einschlägt (beim Tod Michael Jackson waren es 33.000 PI in der Sekunde!!), kann man einfach niedriger priorisierte Module abschalten und so Ausführungszeit gewinnen. Simpel wie effizient.
Die zweite Speak zum Thema Softwaremetriken verstehen und Nutzen war ebenfalls sehr interessant. Jemand wer ich, der bis dato nicht wusste was Metriken sind (es aber hätte wissen sollen) wurde hier wirklich gut Bedient. Softwaremetriken sind halt einfach statistische Werte des Codes. Also wieviel Zeilen enthält das Programm (Lines of Code, LOC) wieviele davon sind Kommentare, wieviele tatsächlich ausführbar und so weiter. Weiterhin werden bestimmte mathematische Faktoren erläutert, die aus dem Code gelesen werden können. Beispiel dafür ist die “Cyclomatic Complexity” die die Komplexität einer Methode als Zahlwert repräsentiert.
Diese Metriken dienen dazu, Code in Zahlen zu verwandeln und somit Codequalität zu messen. Das ist eben interessant bei einer Argumentation gegenüber Projekt-Managern, die nur mit puren Zahlen zu überzeugen sind.
Kurz vor dem Mittagessen gab es dann die Keynote über Webstandards. Ein Typ von Opera zeigte wirklich interessante neue Features von HTML5. Clientseitige Formularvalidierungen machen hier JavaScript beinahe unnötig. Auch das native <video> Element (dass der Firefox 3.5 mit einem ogg-Format ja schon unterstützt) bietet wesentlich mehr Vorteile als man vielleicht auf dem ersten Blick vermuten würde.
Dann wurde es etwas anstrengender. In der Session “Code sleeps smells” ging es um Refactoring Prinzipien. Also wann wir refactored? Was wird refactored und wie wird refacored? Wenn man sich auch nur ein wenig mit PHP beschäftigt hat und für den Martin Fowler nicht der Hauptdarsteller aus Herr der Ringe ist, wird genau nichts interessantes neues erfahren. Leider litt der Redner stark am 3L Syndrom (leise, langsam, langweilig) was dann in Kombination mit der ersten Session nach der Mittagspause extrem gefährlich war. Mitgenommen habe ich hier aber die “Boy scout rule” von der ich in Clean Code schonmal geselen habe. Diese besagt dass man den Campingplatz [den Code] immer ein Stückchen sauberer hinterlassen soll als man ihn vorgefunden hat”. Treffend formuliert.
Die folgende Session “Sichere Applikationen auf Basis des Zend-Frameworks” vom Security-Papst Stefan Esser war für mich persönlich die beste der Konferenz. Mir ist glaube ich noch nie so viel auf einmal klar geworden, wie in diesen Minuten der Session. Dafür erstmal ein Dankeschön an Stefan Esser. Ich benutze unserialize() jetzt unter ganz anderen Umständen. Auch habe ich sehr großen Respekt vor der Arbeit Essers. Irgendwann will ich auch mal so werden
In “How to achieve more with less code” von Stefan Priebsch ging es dann um “alltags-Code”, den jeder von uns oft benutzt und der auch viel kürzer, schneller und besser geht. Bestes Beispiel ist hier IMHO die möglichkeit, Arrays auch per Referenz zu “foreachen”. Sprich statt code bisher wie:
$array = array('one','two','three','four');
$result = array();
foreach($array AS $item) {
$result[] = doSomethingWith($item);
}
return $result;
Kann man seit PHP5 auch:
$array = array('one','two','three','four');
foreach($array AS &$item) {
$item = doSomethingWith($item);
}
return $array;
Das ist mir persönlich nicht neu, aber viele wissen davon nix. Unbedingt merken! Ganz interessant war auch der Ansatz HTML Formulare als DOMXML-Objekte zu parsen und dann mittels XPath ausdrücken dynamisch die Values zu setzen. Ganz ähnlicher Ansatz wie PHPTAL finde ich!
Ich war leider erst zum Mittag da, so dass ich so gerade noch in die Keynote Speech von Zend zum Thema “PHP in the cloud” rutschen konnte. Der Vortrag war vom Ansatz her interessant, bot aber irgendwie keine konkreten Empfehlungen oder Ideen. Die erste richtige Session war “Continuous Inspection and Integration of PHP-Projects” von Sebastian Bergmann und Stefan Priebsch. Es ging dort grob um automatisches deployment und Testing von Software. Wer sich schon mal mit dem Thema auseinander gesetzt hat, wird einiges wiedererkennen und sich nur wenig überrascht oder erleuchtet fühlen. Interessant aber das Tool “PHP Copy&Paste Detection”, dass sich beispielsweise in einen CI-Server integrieren lässt. Es erkennt Code-Dupletten, die zu inkonsistentem Code führen und diesen unnötig aufblähen.
Mitgenommen habe ich auch das Zitat
“Gute Tests ersetzen Dokumentation”
Die Aussage deckt sich ein wenig mit meinem momentan vorherrschendem Konflikt bei der Frage, ob Dokumentation gut oder böse ist (“Guter Code muss nicht dokumentiert werden”).
In der folgenden Session ging es um Messaging mit XMPP (“Building Real-Time Applications with XMPP” von Travis Swicegood). Ein wirklich spannender Vortrag rund um XMPP (also Jabber), dessen Anatomie und Funktionen (presence, message, Info/Query) gut erklärt am Beispiel von Twitter. Zwar wurde in dem Vortrag faktisch gar nicht auf PHP bzw. eine mögliche, konkrete Implementierung eingegangen, die Idee wurde aber klar und ich werde sicherlich einmal mehr darüber nachdenken, Prozesskommunikation (oder sogar Synchronisierung) über XMPP abzuwickeln.
Die letzte Session des Tages “Event-Driven-Architecture” von Benjamin Eberlei war eigentlich eine gute Ergänzung zu dem XMPP-Thema. Es dauerte zwar, bis das “Worum-gehts-eigentlich” Problem verschwand, nach dem es aber klar war, dass hier auf Observer-Patterns eingegangen wurde, konnte ich ein paar interessante Ideen abgreifen. Viel neues Erfuhr man leider auch hier nicht, aber von der Messaging-Lösung “Gearman” hatte ich bisher noch nicht gehört. Sollte man sich unbedingt mal anschauen, wenn man bestrebt ist, Aufgaben, die nicht direkt bei Ausführung erledigt werden müssen, in einen Hintergrund-Prozess auszulagern. Ich hab da schon ein paar Ideen entwickelt
Soweit die Zusammenfassung des ersten Tags.
Wer findet den Widerspruch?
Twitter war halt noch nie informativ oder verlässlich
6.41 Uhr Abfahrt Bielefeld Hauptbahnhof – ich muss schon ziemlich bescheuert sein. Die erste Geburtstatgs – SMS ist angekommen. Langsam geht die Sonne auf. Ich sitze im ICE 503 nach Karlsruhe auf dem Weg zur Internationalen PHP-Conference 2009 (aus Gründen der eigenen Faulheit werde ich künftig nur ‘IPC’ schreiben)
Ich habe dieses Jahr das Glück als Blogger akkreditiert zu sein und kann die 3 Tage mal voll durchziehen. Letztes Jahr saß leider nur ein Tag drin. Ich bin daher sehr gespannt.
Ich werde also in (deutlich) engeren Abständen in den nächsten Tagen hier bloggen. Wer noch die volle Dröhnung haben möchte, kann mir natülrich auch bei Twitter folgen!


