Skip to content

Nibelungen Gravel Ride 2019

Zwei Gravelbiker fahren an Windrädern vorbei über eine Wiese

Nachdem ich dieses Jahr schon bei zwei CTFs (in Frankfurt und Mainz) mitgefahren bin, stand am Wochenende mein erster Gravel Ride mit über 100km Länge auf dem Programm: Über 100 Kilometer durch Rheinhessen und die Pfalz, fast ausschließlich auf Schotterpisten, unbefestigten Feld- und Waldwegen, über Pavés durch Weinberge, mit Steigungen von bis zu 19% und über 1300 Höhenmetern bei sommerlichen Temperaturen von knapp 30°C. Doch die trockenen Fakten beschreiben den Nibelungen Gravel Ride 2019 kaum ansatzweise, deshalb hier mein Bericht.

"Nibelungen Gravel Ride 2019" vollständig lesen

36. Treffen der PHP User Group Rheinhessen

LogoDie PHP User Group Rheinhessen trifft zum ersten Mal im Jahr 2015, diesmal wieder bei UDG Rhein-Main im Mainzer Zollhafen. Unser Themenschwerpunkt diesmal ist das PHP-Framework Laravel, das in letzter Zeit viele Anhänger gefunden hat.

Zu Laravel wird es zwei Vorträge von Stefan Kilp und Severin Neumann geben, und die beiden freuen sich auf eure Fragen und eine spannende Diskussion

Tom Klingenberg wird für uns außerdem auf die Themen zurückblicken, die den PHP Devroom auf der FOSDEM ’15 beschäftigt haben.

Bitte nutzt die Anmeldung hier auf der Event-Seite in Xing. Das hilft uns bei der Planung und Vorbereitung des Treffens. Tragt euch daher auch bitte wieder aus, falls ich nicht kommen könnt. Alternativ gibt es auch ein Event auf Google Plus.

Eingeladen sind neben den Gruppenmitgliedern auch alle PHP-Interessierten aus Rheinhessen und Umgebung! Die Teilnahme ist wie immer kostenlos. Bitte teilt das Event auch in anderen Sozialen Netzwerken und euren Blogs.

Danke!

Mehr Informationen von der PHPUG Rheinhessen gibt es auch auf Twitter @phpugrhh (Hashtag #phpugrhh).

Dieser Post erschien zuerst im Blog der PHPUG Rheinhessen.

Leistungsschutzrechtprotestplugin

Nachdem Ende letzter Woche das Leistungsschutzrecht für Presseverleger im Bundestag verabschiedet wurde, spülte meine Timeline das Wordpress-Plugin vom D64 Zentrum für Digitalen Fortschritt wieder in meine Aufmerksamkeit. Das Plugin lädt eine Blacklist aus dem Netz, in der die Domains von Verlagen gesammelt werden, die das LSR unterstützen. Mittels dieser Liste lenkt es Links zu den Verlagsseiten, die in Blogartikeln enthalten sind, auf eine Hinweisseite zum LSR um:

Coole Idee. Ein kurzer Blick auf GitHub sagte mir, dass es nicht schwer sein würde, das Plugin für Serendipity zu adaptieren. Gesagt, getan.

"Leistungsschutzrechtprotestplugin" vollständig lesen

22. Treffen der PHPUG Rheinhessen

Am Dienstag, dem 22. Januar 2013, fand das 22. Treffen der PHPUG Rheinhessen bei netz98 in Mainz statt. Neben dem „harten Kern“ konnten wir auch wieder einige neue Gesichter begrüßen, was uns immer ganz besonders freut.

Peter Eulberg präsentierte uns eine angepasste Version seines Webinars „Die effektive Website - vom Bedarf zum Erfolg“ und zeigte am Beispiel von WordPress, welche Aspekte auch schon bei kleineren Webseiten beachtet werden sollten und wie Kunden gezielt beraten werden können.

Zuvor hatte ich kurz vorgestellt, was man sich unter einer Code Kata vorzustellen hat und wozu diese gut ist. Das Konzept hatte ich über die Softwerkskammer Rhein-Main kennengelernt, und ich wollte ausprobieren, ob es sich im Rahmen der PHPUG einsetzen lässt. Also habe ich die Roman Numerals Kata als Guided Kata am Beamer durchgeführt und dabei viel Interessantes gelernt. Wir kamen auf eine Lösung, die ich so für mich noch nicht erarbeitet hatte. Und ich stellte fest, dass die vielen kleinen Schritte (baby steps) einer Kata wichtig sind, auch wenn sie auf den ersten Blick nerven. Das Format hat mir jedenfalls viel Spaß gemacht. Ich denke, wir sollten das bei Gelegenheit wiederholen.

"22. Treffen der PHPUG Rheinhessen" vollständig lesen

PHPUnit für die Entwicklung von Serendipity-Plugins

Geben wir es ruhig zu, der PHP-Code von Serendipity ist nicht mehr State of the Art, sondern zum großen Teil noch auf dem Stand von PHP 4. Dass dieser Code immer noch sehr zuverlässig funktioniert, und ob und wie mit dem aktuellen Stand umzugehen ist, soll hier nicht das Thema sein. Ich möchte hier auf die Entwicklung von Serendipity-Plugins eingehen, die nicht umsonst in einem eigenen Repository leben. Deren Qualität lässt sich mithilfe von Unit Tests sicherstellen.

PHPUnit für Plugins

Auch wenn die Grundfunktionalität von Serendipity durch Unit Tests abgedeckt ist: Die Plugin-Entwicklung ist bisher nicht so einfach zu testen. In meinen letzten Projekten waren Unit Tests mit PHPUnit ein zunehmend zentraler Bestandteil der Entwicklung. Entweder damit ich nachträglich sicherstellen konnte, dass Klassen und Methoden bei Veränderungen und Refactoring noch taten, was sie tun sollten; oder weil ich testgetrieben entwickelte, das heißt zuerst die Unit Tests und dann erst den zu testenden Code schrieb. Dieses Vorgehen möchte ich nicht mehr missen, und es hat mich gestört, dass es bei der Entwicklung von Serendipity-Plugins nicht ohne Weiteres möglich war.

Screenshot einer Konsole mit erfolgreich durchlaufenen Unit Tests

Daher habe ich mich hingesetzt und PHPUnit so in meine lokale Serendipity-Installation, die ich zum Entwickeln verwende, integriert, dass ich einzelne (Event-)Plugins separat testen kann. Die spezifischen Herausforderungen ließen sich recht schnell überwinden:

  • In Serendipity werden Plugins stark getrennt vom Core über Event-Hooks ausgeführt. Diese Hooks müssen natürlich einzeln getestet werden können.
  • Viele Variablen sind als global deklariert oder werden per Referenz "herumgereicht". Das erfordert einige Workarounds, die heute dank Dependency Injection und ähnlichen Entwurfsmustern zum Glück überflüssig sind.
  • Data Fixtures: Um Serendipity für die Tests "hochzufahren", wird eine Datenbankverbindung benötigt. Mir ist es bisher nicht gelungen, eine der unter Database Testing aufgeführten Methoden umzusetzen. Besser gesagt: Ich war einfach zu faul und habe die nötigen Daten in einer SQLite-Datenbank hinterlegt.
"PHPUnit für die Entwicklung von Serendipity-Plugins" vollständig lesen