Skip to content

Kurze Durchsage: Blogumzug

Dieses Blog ist ab sofort unter blog.sperrobjekt.de erreichbar, die alte URL blog.sperr-objekt.de leitet hier hin weiter. Diesen Umzug habe ich bereits eine ganze Weile vor mir hergeschoben, und jetzt habe ich ihn einfach mal umgesetzt.

Mehrere Gründe haben mich zum Umzug bewogen:

  • Die Domain mit Bindestrich gefällt mir für mein Blog schon lange nicht mehr, die neue ist einfacher und eindeutiger.
  • Das Blog liegt jetzt auf einem Server, auf den ich per SSH zugreifen kann, was beim alten Hoster leider nicht möglich war, ohne in einen anderen Tarif zu wechseln.
  • Außerdem steht Serendipity 2.0 vor der Tür, was ich zum Anlass genommen habe, das Blog auf die neue Version zu ziehen.

Ich bin mir nicht sicher, ob alles (noch) wie erwartet funktioniert. Sollten euch Fehler oder Probleme auffallen, schreibt mir doch bitte auf Twitter @mattsches, über das Kontaktformular oder auf einem der anderen Kanäle, auf denen ich unterwegs bin. Danke!

Metatron - Ein CLI-Tool für Serendipity

Ich bin seit einiger Zeit der Console-Komponente von Symfony2 verfallen und habe bereits in mehreren Projekten sehr schnell Kommandos in PHP programmieren können, die auf der Shell ausgeführt werden können. Wir nutzen diese zur Administration von Applikationen, zum Generieren von Inhalten oder für regelmäßige Aufgaben von Cron-Jobs.

Im Bereich der Open Source Software sind mittlerweile auch diverse CLI-Tools entstanden, etwa das von Christian Münch initiierte n98-magerun für Magento, WP-CLI für Wordpress oder Drush für Drupal. Warum also nicht auch ein solches Tool für die alternative Blogsoftware Serendipity schreiben?

Gesagt, getan.

Metatron ist jetzt veröffentlicht, befindet sich aber noch im Alpha-Status und sollte keinesfalls produktiv eingesetzt werden. Der Funktionsumfang hält sich noch in Grenzen, aber wir planen, kontinuierlich neue Kommandos hinzuzufügen. Welche das sein werden, können die Serendipity-Nutzer mitentscheiden. Am besten äußert ihr Feature-Wünsche im Serendipity-Forum oder als Issue auf GitHub (mit dem Tag "enhancement").

"Metatron - Ein CLI-Tool für Serendipity" vollständig lesen

Serendipity 1.7 veröffentlicht

Wie Garvin im offiziellen Serendipity-Blog verkündet hat, gilt Version 1.7 der Blog-Software seit gestern offiziell veröffentlicht. Serendipity treibt dieses Blog schon seit Jahren an, und ich entwickle hin und wieder am Core und vor allem an Plugins für S9y mit.

Version 1.7 ist ein Release, der vor allem Bugfixes enthält und für noch mehr Stabilität und Kompatibilität mit PHP 5.3/5.4 sorgt - und außerdem nur noch mit PHP-Versionen >= 5.2 funktioniert. Damit sind zwar immer noch nicht alle PHP4-Altlasten entsorgt, aber zumindest müssen diese bei der Weiterentwicklung nicht mehr berücksichtigt werden. Die Entwickler-Community kann sich nun voll auf die Version 2.0 konzentrieren.

In der 20. Folge des Serendipity-Podcasts "S9y InfoCamp" sprechen Robert und Matthias mit Lead-Developer über alles Wissenwerte, das den neuen Release betrifft, und beleuchten auch die geplante Weiterentwicklung näher. Reinhören lohnt sich also.

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

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