Skip to content

21. Treffen der PHP User Group Rheinhessen

Ich dachte, ich berichte mal wieder kurz von einem UG-Treffen in Mainz, dem einundzwanzigsten, wenn ich richtig mitgezählt habe. Inzwischen haben wir (die PHP User Group Rheinhessen) zwei Locations, sprich zwei Agenturen, bei denen wir uns im Wechsel treffen: netz98 und NIDAG. Diesmal waren wir wieder bei letzteren im Mainzer Zollhafen zu Gast (siehe Foto von Thomas).

Nils Adermann, einer der Entwickler von Composer, momentan dem Dependency Management-Tool für PHP schlechthin, stellte uns das Tool vor und beschrieb anschaulich, was man damit alles machen kann. Und das ist deutlich mehr, als es auf den ersten Blick scheint. Vielen Dank an Nils für diesen höchst interessanten Vortrag.

Im Anschluss gab's dann wie immer noch einen intensiven Erfahrungsaustausch über Composer und diverse andere Themen, die den Teilnehmern unter den Nägeln brannten. Dafür sind wir nach nebenan ins Schröder's umgezogen, wo es auch lecker zu essen und trinken gab. Vielen Dank an die NIDAG für die Räume, Nils für seinen Vortrag, und alle Teilnehmer fürs teilnehmen und mitmachen! Bis zum nächsten Mal!

2 Jahre PHP User Group Rheinhessen

Foto während des Treffens, aufgenommen von @casarock

Wir mir gerade auffällt, wird unsere User Group heute 2 Jahre alt - wenn man unser erstes Treffen als Geburtstag nimmt. Gestern trafen wir uns bereits zum 16. Mal und durften wieder einige neue Teilnehmer begrüßen.

Nach kurzem Hallo-Sagen und Aufwärmen standen zwei Vorträge auf dem Programm, die zwar nicht direkt PHP zum Thema hatten, aber für die anwesenden PHP-Entwickler dennoch interessant waren. Christian Münch zeigte, warum CoffeeScript die JavaScript-Programmierung für PHPler erträglicher machen kann. Die Beispiele mit Live-Coding waren sehr anschaulich.

Danach stellten wiederum Christian Münch und ich das Vagrant-Projekt und das Konfigurationsmanagement von Servern mittels Chef und Puppet vor. Auch hier gelang die Live-Demo, nämlich die automatisierte Basis-Installation eines Magento-Shops innerhalb einer Virtual Machine mit nur wenigen Befehlen. Dieses Thema wurde ausführlich diskutiert und sehr interessiert aufgenommen.

Ich denke, alle Teilnehmer hatten viel Spaß und konnten etwas von diesem Abend mitnehmen Das Feedback lässt zumindest darauf schließen:

Dieser Artikel ist ein Crosspost vom PHPUGRHH-Blog. Foto von @casarock.

Geotag-Plugin für Serendipity überarbeitet

Das Geotag-Plugin für Serendipity zeichnet Blogartikel auf Landkarten unterhalb des Beitrags oder in der Seitenleiste ein. Beim Verfassen kann ein Blogger einen Artikel mit den Geo-Koordinaten seines Aufenthaltsortes versehen (so genanntes Geotaggen). Diese Position wird anschließend auf einer kleinen Karte angezeigt. Nützlich ist diese Funktion ist beispielsweise für Reiseblogs.

Weniger Fehler, mehr Funktionen

Leider hatte das Plugin zuletzt einige Bugs, die zum Teil aus Schnittstellenänderungen von Google Maps resultierten. Grischa hat sich das Plugin vorgenommen und vorgestern eine neue Version eingecheckt, die die meisten Bugs behebt und sogar tolle neue Features mitbringt.

Allerdings berichtete Grischa von Problemen mit der Kartendarstellung in der Seitenleiste. In den Kommentaren zu seinem Artikel kam außerdem der Wunsch auf, neben Google Maps auch Karten von Openstreetmap einzubinden. Zum einen unterliegen letztere einer Creative Commons-Lizenz, zum anderen hat Google vor kurzem Zugriffsbeschränkungen für seine Kartenschnittstelle eingeführt. Leichtfertig kommentierte ich, dass ich mir das ja mal ansehen könnte. Als passionierter Openstreetmapper und Geocacher liegt mir das Thema eben am Herzen ;-)

Gesagt, getan. Der Aufwand war allerdings größer, als ich erwartet hatte. Zum einen lief das Plugin noch mit dem Google Map Javascript API in Version 2, die aber schon sein 1,5 Jahren als deprecated eingestuft ist und in absehbarer Zeit abgeschaltet werden wird; also habe ich den Code auf Version 3 umgestellt. Zum anderen habe ich Openstreetmap mithilfe der OpenLayers-Bibliothek eingebunden, die nicht gerade simpel zu benutzen ist. Sie ist andererseits zwar sehr mächtig, aber ich habe für das Plugin nur einen kleinen Teil ihrer Fähigkeiten benötigt. Doch nun ist es geschafft: Meine aktualisierte Version 1.26 habe ich gerade hochgeladen, sie dürfte in Kürze für alle verfügbar sein.

"Geotag-Plugin für Serendipity überarbeitet" vollständig lesen

Barcamp Mainz 2011

Logo des Barcamp Mainz 2011

Und wieder einmal steht ein Barcamp an, diesmal erfreulicherweise wieder in Mainz. Am kommenden Wochenende, also am 19. und 20. November 2011, werden sich einige hundert Barcamper an der Uni Mainz zum Gedankenaustausch treffen.

Zahlreiche Mitglieder der vor zwei Jahren auf dem ersten Mainzer Barcamp gegründeten PHP User Group Rheinhessen haben Sessions rund um PHP und zu angrenzenden Themen angekündigt, so dass wir eventuell eine Art durchgehenden PHPUG-Track anbieten könnten. Natürlich wird über die Sessions direkt auf dem Barcamp abgestimmt, aber bei Interesse würden wir das gern anbieten ;-)

Ich selbst möchte ein Thema aufgreifen, über das ich auf der PHP Unconference in Hamburg einiges gelernt habe: DevOps mit Vagrant und Chef. Noch stecke ich mitten in der Session-Vorbereitung, aber bis zum Wochenende werde ich fertig, da bin ich zuversichtlich. Und ich möchte mich mit vielen interessanten Menschen unterhalten, viel neues erfahren, und vielleicht auch noch eine zweite Session anbieten - mal sehen.

Einen guten Überblick über weitere Sessions, die wahrscheinlich gehalten werden, bietet das von den Teilnehmern bereits im Vorfeld befüllte Session-Radar. Während des Barcamps wird das Geschehen voraussichtlich anhand derdes Twitter-Hashtags #bcmz #bcmz11 oder #bcrm verfolgt werden können.

Update: Wie oben angepasst ist #bcmz offenbar das allgemeingültige Hashtag. Außerdem vergaß ich zu erwähnen, dass am Sonntag parallel zum Barcamp Mainz die TEDxYouth@RheinMain stattfindet mit einem Programm speziell für Kinder und Jugendliche.

PHP-CodeSniffer in Netbeans integrieren

Hohe Code-Qualität ist nicht nur in großen Projekten wichtig, an denen mehrere Programmierer sitzen. Auch im Kleinen hilft die Einhaltung formaler Richtlinien (Coding Standards), Fehler zu vermeiden und den Quellcode wartbar zu halten. Mittlerweile existieren auch für PHP diverse Tools, die den Programmierer beim Coden unterstützen. Zwei davon, Code-Sniffer und Mess Detector, bemängeln automatisch anhand definierter Regeln auch kleine Unachtsamkeiten wie fehlende Kommentare, ungenutzte Variablen oder übermäßig komplizierten Code. Diese lassen sich recht einfach auch in IDEs wie Netbeans integrieren, wie ich im folgenden kurz zeige.

PEAR-Pakete downloaden

Voraussetzung sind die PEAR-Pakete PHP_CodeSniffer, das von Greg Sherwood betreut wird, und PHP_MD (PHP Mess Detector von Manuel Pichler). Die Links verweisen auf Installationsanleitungen. In der Regel lassen sich die Pakete mit PEAR-Bordmitteln installieren.

Unter Linux werden unter /usr/bin die beiden Batchfiles phpcs bzw. phpmd installiert, die zum Ausführen der Tools verwendet werden sollten, weil sie Prüfungen vornehmen und benötigte Klassen importieren.

Netbeans-Plugin installieren

Bei der Suche nach entsprechenden CodeSniffer-Plugins für Netbeans habe ich zwei Projekte gefunden. Das Plugin von Benjamin Eberlei wurde im April 2010 zum letzten Mal aktualisiert und hat bei mir nicht richtig funktioniert (YMMV). Das PHP CodeSniffer Netbeans Plugin (Download für Netbeans 6.9.1) lief auf Anhieb und hat auch die Unterstützung für PHP_MD bereits integriert. Zur Installation ladet ihr die *.nbm-Datei herunter und installiert das Plugin in Netbeans unter "Extras → Plugins → Heruntergeladen → Plugins hinzufügen …". Gegebenenfalls ist jetzt ein Neustart von Netbeans nötig.

Tools konfigurieren

Unter "Extras → Optionen → PHP → phpMD bzw. phpCodeSniffer" können nun globale Einstellungen vorgenommen werden. In der Regel müssen zunächst die jeweiligen Batch-Dateien (/usr/bin/phpmd und /usr/bin/phpcs) angegeben werden. Außerdem kann ein Coding-Standard, z.B. "Zend" eingetragen werden (mehr Infos dazu in der Dokumentation). Über die Schaltfläche "Test Settings" lässt sich überprüfen, dass die Batch-Dateien korrekt angegeben wurden.

Wird jetzt eine PHP-Datei im Netbeans-Editor geöffnet, parsen die Tools den Dateiinhalt und geben ihre Ergebnisse im "Aufgaben"-Fenster aus. Dort lassen sich die Resultate auch gruppieren und filtern. Diese variieren natürlich je nach Coding Standard und werden jeweils beim Speichern einer Datei neu ermittelt.

Projektspezifische Einstellungen

Wer möchte, kann sich auch eigene, so genannte "Sniffs" programmieren, also eigene Validierungsregeln aufstellen. Sollen diese allerdings nicht global für alle Projekte gelten, sondern nur für einzelne, ist etwas Handarbeit gefragt. Im Netbeans-Projektverzeichnis, also im Verzeichnis nbprojects, muss eine Datei codesniffer.properties angelegt werden, die projektspezifische Settings beinhaltet. Dort können verschiedene Optionen gesetzt werden, allerdings bin ich mir nicht sicher, ob alle möglichen Kommandozeilenargumente auch dort gesetzt werden können. Soll ein eigenes Ruleset definiert werden kann man darauf verweisen:

phpcs.standard=/pfad/zum/eigenen/ruleset.xml

Es sind im Endeffekt nur kleine Helferlein, aber sie erledigen nützliche Arbeit im Hintergrund. Und sie machen sich nach einer Weile fast selbst überflüssig, wenn man als Programmierer darauf achtet, nicht immer wieder die gleichen Fehler "vorgehalten" zu bekommen.