Skip to content

Ein Serendipity-Testblog auf dem aktuellen Stand halten

Wenn man das Weblog-System Serendipity nicht nur nutzt, sondern auch testen möchte, empfiehlt es sich, neben dem “echten” eigenen Blog (der Live-Instanz) auch ein Testblog zu betreiben. Dort kann man dann jeweils den neuesten Code aus git auschecken und testen.

Um sicherzugehen, dass es sich auch wirklich um einen frischen Checkout handelt und nicht noch irgendwelche Dateien aus früheren Versionen “herumliegen”, lösche ich gerne die bisherige Installation und setze sie frisch auf. Dabei sollen aber die Datenbanken sowie vorhandene Plugins und Themes und Medien erhalten bleiben.

Für diesen Zweck verwende ich ein passendes Shellscript:

"Ein Serendipity-Testblog auf dem aktuellen Stand halten" vollständig lesen

Spamfilterung bei Trackbacks in s9y

Demletzt hatte ich danach gefragt, ob - und wenn ja: warum - Trackbacks (und Pingbacks) heutzutage nicht mehr so intensiv genutzt werden wie früher. Es gab dazu eine Vielzahl von Antworten aus technischer und sozialer Sicht - und die Erkenntnis, dass auch mein Blog einige der durch diese Antworten ausgelösten Trackbacks nicht verarbeitet hat. :-O

Als Ursache fand sich dann ein zu scharf eingestellter Spamfilter.

"Spamfilterung bei Trackbacks in s9y" vollständig lesen

Frischer Wind beim besten Blog der Welt

Bei Serendipity, dem besten Blog der Welt, tut sich was:

  • Mit der beta2 kommt die Version 2.1 ihrem Release näher.

  • Die seit dem #s9ycamp2015 in Arbeit befindliche neue Website wurde freigeschaltet. Responsive, elegant und mit komplett durchgesehener, überarbeiteter und neu strukturierter Dokumentation!

  • Auch das Serendipity-Blog wurde an das neue Design angepasst.

  • Und die optische Anpassung des Plugin- und Theme-Repository Spartacus folgte auf dem Fuß.

Das Redesign der Serendipity-Foren wird dann nicht mehr lange auf sich warten lassen; in dem entsprechenden Repository gibt es schon die ersten Commits.

Mitstreiter sind weiterhin herzlich willkommen!

Social Media Buttons für Serendipity

Im März 2016 hatte Mitch im Zusammenhang mit dem Redesign seines Blogs dort Social Media Buttons auf Basis von Shariff von der c’t eingebaut und auf meine Nachfrage nach einem entsprechenden Plugin für Serendipity auf seine überbordende ToDo-Liste verwiesen (wie gut ich das kenne). In dem entsprechenden Thread in den Serendipity-Foren konnte ich dann aber zu meiner Begeisterung nachlesen, dass sich onli bereits der Aufgabe angenommen und das Plugin serendiptiy_event_social geschaffen hatte.

Und, was soll ich sagen? - Es funktioniert, wie man sieht, seit vergangener Woche auch hier im Blog.

#s9ycamp2016

Vergangenes Jahr war es mir zu meiner Freude möglich, am ersten Treffen der Serendipity-Community im Linuxhotel in Essen teilzunehmen. Dieses Jahr mangelte es leider an der Zeit, aber es scheint wieder eine schöne und produktive Zusammenkunft geworden zu sein.

Man liest von Arbeiten an der Verbesserung der Infrastruktur des Projekts, dem vielleicht bald bevorstehenden Relaunch der doch arg altbackenen Webseiten (den wir letztes Jahr geplant hatten und der mittlerweile ganz offensichtlich erfolgreich umgesetzt wurde), einem Code of Conduct und der Arbeit an Serendipity 2.1, möglicherweise mit Unterstützung für PHP 7.x.

Mehr darüber bei …

Luftiges Frühlingskleid fürs Blog

In den letzten Wochen habe ich YellowLed gerne und interessiert beim “Live-Redesign” seines Blogs über die Schulter geguckt. Besonders neugierig gemacht hatte mich die zunächst nur en passant angesprochene Gestaltung der Startseite mit kurzen “Teasern”, die daraufhin ebenso unverzüglich wie umfänglich erläutert wurde (das nenne ich einmal Service!). Mitch hat den Gedanken dann in seinem Blog noch einmal erweitert umgesetzt.

Das hat auch mich motiviert; allerdings konnte ich mich mit kurzen Teasern für die Startseite dann doch nicht anfreunden. Stattdessen habe ich aber die linke Sidebar entfallen lassen und die Inhalte, auf die ich nicht verzichten mochte, von dort nach rechts transferiert. Insbesondere auf schmaleren Bildschirmen wirkt das Blog jetzt nicht mehr so überladen.

Um die Zeilenlänge dennoch im lesbaren Rahmen zu halten, habe ich die Maximalbreite von 100em auf 90em verkürzt und zudem auch die Breite des eigentlichen Textbereiches bei 60em gekappt. So sieht das vergleichsweise angenehm luftig aus - gerade richtig für den Frühling. :-)

"Luftiges Frühlingskleid fürs Blog" vollständig lesen

Und plötzlich sind sie 13 ...

Serendipity, kurz s9y, ist das Blogsystem, mit dem dieses Blog betrieben wird, und Serendipity ist - unter diesem Namen - gestern ein Teenager geworden.

Damit ist es ungefähr so alt wie dieses Blog, das am 01.06.2016 seinen 13. Geburtstag feiern wird, und begleitet mich auch schon fast so lange, nämlich seit dem 01.01.2005 (wobei ich ja fast vermute, dass der Schnitt nicht ganz so exakt auf dieses Datum fiel, aber was will man machen?).

Mehr Glückwünsche:

Serendipity 2.0.1

Heute wurde das erste kleinere Wartungsupdate von Serendipity veröffentlicht, das (Maintenance-)Release 2.0.1.

Neben einer sicherheitsrelevanten Änderung, deren zugrundeliegende Schwachstelle aber nur durch eingeloggte Autoren ausgenutzt werden konnte, gab es einige kleinere Änderungen vor allem rund um CSS und Javascript.

Die größte Änderung ist allerdings gar nicht das Release selbst, und sie findet sich auch nicht in dem Blog-Post, mit dem das Release angekündigt wurde: das Update kann jetzt automatisch aus dem Admin-Interface erfolgen, wie man das u.a. von Wordpress schon länger kennt. Beim Login wird man - wenn aktiviert - mit einem Hinweis auf das Update begrüßt und kann es auch direkt installieren. Und wie bei Serendipity fast immer: es funktioniert einfach!

#s9ycamp2015

Das diesjährige und überhaupt erstmalige Treffen der Serendipity-Community vom 06.03. bis 08.03.2015 im Essener Linuxhotel war ausdrücklich nicht als “Hackfest” oder Entwicklertreffen geplant, sondern als Zusammenkunft der Community mit dem Focus darauf, sich gegenseitig kennenzulernen, oder, wie Garvin es im offiziellen Blog formuliert hat, “to connect names to faces”. Und so kam es dann auch: neben dem harten Kern der Entwickler, der fast vollzählig anwesend war, hatten sich fast ebenso viele Nutzer eingefunden.

Bildquelle: © Matthias Mees

Überraschenderweise wurde nicht nur dieses Ziel erreicht - es war nicht nur ein nettes Wochenende, sondern wir haben (zwischen Frühstück, Mittag- und Abendessen :-)) auch einiges an konzeptioneller Arbeit erledigt:

  • Aus den Kernpunkten, die Serendipity als Blogsystem ausmachen und kennzeichnen, ergaben sich ein Mission Statement, Entwicklungsziele und ein neuer Slogan: “Not mainstream since 2002

  • Ein wesentlicher Aspekt waren auch die geplante Neustrukturierung der Webseiten sowie deren Umstellung auf ein neues System zu ihrer Generierung und die Konsolidierung der vorhandenen Dienste und Kommunikationswege.

  • Damit verbunden sein soll ein ausdrücklicher Hinweis auf die vielen verschiedenen Möglichkeiten, sich an dem Projekt zu beteiligten: als Entwickler, bei der Dokumentation, durch das Erstellen von Themes oder Plugins, verbunden mit einer Darstellung der Abläufe und Hinweisen für den Einstieg.

  • Daneben gab es noch Überlegungen zu spezifischen Code-Änderungen und neuen Features.

"#s9ycamp2015 " vollständig lesen

Serendipity-User-Treffen 2015

Wie Dirk schon angekündigt hat, findet am ersten März-Wochenende 2015 ein Treffen der Serendipity-Entwickler- und Nutzergemeinde im Linuxhotel in Essen statt. Zweck ist kein “Hackfest”, sondern ein persönliches Kennenlernen der Entwickler und eben auch Nutzer - vielleicht auch ein Austausch über Erfahrungen, Entwicklungsmöglichkeiten und Ziele von und mit Serendipity nach dem vorläufigen Abschluss der großen Renovierung und dem Release 2.0.

  • Termin: 06.-08.03.2015
  • Ort: Linuxhotel in Essen
  • Kosten: 20,- € plus optional 30,- € für ein halbes Doppelzimmer und/oder 10,- € für Frühstück,
    maximal also 60,- € für die Zeit von Freitagabend bis Sonntagabend
  • Neben einer Zusammenfassung der bisherigen Informationen gibt’s auch einen Forenthread.
  • Wer nicht im Schlafsack auf dem Boden oder extern übernachten möchte, muss sich bis einschließlich 19.02.2015 bei Dirk melden.
  • Auch Tagesgäste sind willkommen, sollten sich aber gleichfalls bei Dirk melden.

Bisher ist die Gruppe noch recht klein; ich würde mich freuen, viele der (verbliebenen) Nutzer von Serendipity dort zu sehen!

Serendipity 2.0

Was lange währt, wird wirklich gut.

Nach dem zweiten Release-Candidate ist nun Serendipity 2.0 released und hier für dieses Blog installiert, wo sich im Dreivierteljahr seit dem Relaunch auch die Beta-Versionen schon bewährt haben.

Was andere dazu sagen

[Dieser Eintrag wurde nachträglich um weitere Beiträge in anderen Blogs ergänzt.]

Serendipity 2.0-rc2

Rund vier Monate nach der Installation der dritten Beta-Version von Serendipity 2.0 steht nun der erste (bzw. nach der schnellen Behebung eines kritischen Fehlers direkt der zweite) Release-Candidate zur Verfügung - sozusagen als kleines Weihnachtsgeschenk. :-)

Nach kurzem Test in meinem, nun ja, Testblog, setze ich diese Version jetzt auch direkt hier auf Netz - Rettung - Recht ein. Etliche (vor allem kleinere, teilweise aber auch nervige) Fehler wurden noch behoben (so zum Beispiel das Problem der ständig im Editor auftauchenden “Sicherheitskopien” älterer Eintragsentwürfe), einiges neu gestaltet (so die Auswahl der Kategorien und Tags und, sehr praktisch, ein Umschalter zwischen “Entwurf” und “Veröffentlichung” direkt beim “Speichern”-Button), und bisher bin ich sehr zufrieden.

Mal gucken, was sich noch an kleinen angenehmen Neuerungen - und vielleicht auch an verbliebenen Ecken und Kanten - findet. Ich bin gespannt, würde aber den Release-Candidate bereits jetzt empfehlen. (Klar, eine Sicherung der Dateien und der Datenbank (!) ist vor dem Update geboten.)

Ich hoffe, dass ich über die Weihnachtstage oder irgendwann im nächsten Jahr auch wieder einmal dazu komme, die Entwicklung näher zu verfolgen; einige kleine Kommentare und Bug-Reports haben sich noch angesammelt, die ich aber erst einmal reproduzieren und formulieren muss. Aber mit 2.0 soll die Entwicklung ja nicht beendet sein. ;-)

"Serendipity 2.0-rc2" vollständig lesen

htmlspecialchars(), PHP 5.4 und eine leere Ausgabe

Erst dachte ich, es liegt an mir - ich bin eben kein “Softwareentwickler”, sondern Dilettant (wie ich hoffe, im ursprünglichen Sinne). Nachdem jetzt aber auch ein Projekt wie Serendipity davon “gebissen” wurde, lohnt es sich vielleicht doch, ein paar Worte dazu zu schreiben, die anderen eine lange Google-Recherche ersparen.

Kurzum: Wenn nach einem PHP-Update (bspw. von Debian Squeeze mit PHP 5.3.3 auf Debian Wheezy mit PHP 5.4.35) Webapplikationen plötzlich verrückt spielen und Texte verschwinden, liegt das an einem geänderten Default der PHP-Funktion htmlspecialchars().

Die Langfassung

Nach einem Update meines Servers auf das aktuelle Debian Anfang diesen Jahres stellte ich fest, dass u.a. bei votetakers.de manche Teile der Seite einfach verschwunden waren. Eine genauere Betrachtung ergab, dass es sich dabei exakt um solche Teile handelte, die (a) dynamisch generierte Inhalte enthalten, aus denen mit der Funktion htmlspecialchars() unerwünschter HTML-Code entfernt wird (indem <> in &amp;lt;&amp;gt; umgewandelt wird), und bei denen (b) im entsprechenden Text Umlaute vorkamen.

Nach erster Ratlosigkeit stellte ich fest, dass die einzige Änderung an dieser Funktion zwischen PHP 5.3 und PHP 5.4 der geänderte Default für den verwendeten Zeichensatz war. Vollständig besteht der Aufruf von htmlspecialchars() nämlich nicht nur in der Übergabe des zu konvertierenden Textes in der Art htmlspecialchars('Ich bin ein Tästtext!'), sondern enthält u.a. auch noch Flags und das Encoding:

  1. string htmlspecialchars ( string $string [, int $flags = ENT_COMPAT | ENT_HTML401 [, string $encoding = &#8216;UTF-8&#8217; [, bool $double_encode = true ]]] )

Dabei hat sich der Default von ISO-8859-1 auf UTF-8 geändert:

If omitted, the default value of the encoding varies depending on the PHP version in use. In PHP 5.6 and later, the default_charset configuration option is used as the default value. PHP 5.4 and 5.5 will use UTF-8 as the default. Earlier versions of PHP use ISO-8859-1. 

Also habe ich testweise alle Aufrufe von htmlspecialchars() im Code ergänzt um passende Flags (zwingend, weil der Parameter im Funktionsaufruf vor $encoding steht und daher mit übergeben werden muss, wenn man $encoding setzen will) und das Encoding ‘ISO-8859-1’ … und danach tat es wieder.

Die Ursache dafür dürfte wohl darin liegen, dass htmlspecialchars() sinnigerweise einen leeren String zurückgibt, wenn der übergebene String - im entsprechenden Encoding - unzulässige Zeichen enthält:

If the input string contains an invalid code unit sequence within the given encoding an empty string will be returned, unless either the ENT_IGNORE or ENT_SUBSTITUTE flags are set.

Das führt dann zum “Verschwinden” der entsprechenden Text-Teile in der Ausgabe. Böse Falle.

Gut, man hätte vielleicht den Funktionsaufruf direkt richtig machen können, und warum das Problem überhaupt auftritt, obwohl die Datenbank als Collation “UTF-8’ hat, weiß ich auch nicht - vielleicht weil die Webseiten als Encoding ISO-8859-1 haben? Wie auch immer: so ist das nicht nett. Und noch weniger nett, dass es (vor PHP 5.6) keine Möglichkeit gibt, einen Default zu setzen, so dass man jeden (!) Aufruf von htmlspecialchars() mit Flags und Encoding “aufpeppen” muss - oder man ersetzt htmlspecialchars() sinnvollerweise direkt durch eine eigene Funktion, wie auch in einem Kommentar zur PHP-Dokumentation geraten wird.

Nachdem ich im März im Blog von Felix Pfefferkorn auf dieses Problem stieß und jetzt auch die Serendipity-Developer den Code kurz vor dem geplanten Release-Candidate noch einmal umkrempeln mussten, ist es wohl an der Zeit, dazu ein paar Worte zu schreiben - offenbar bin ich wenigstens nicht der einzige Dilettant (im besten Sinne, natürlich ;-)).

Nachwort

Ja, ich stehe dazu: ich hasse die Probleme mit Charset-Konversionen, überall - sowohl das unselige Problem der verschiedenen Zeilenende-Markierung in Windows und Unixen als auch Dinge wie das BOM (“Byte Order Mark”) am Anfang einer Textdatei, die dann durch ältere Software nicht mehr geöffnet werden kann, als auch die ganze unselige Hin-und-Her-Konvertiererei, oft ohne dass man der Datei ansehen könnte, welches Encoding sie denn nun genau hat. Am Ende stehen dann “kaputte” Postings, E-Mails oder Webseiten.

Und ich stehe auch dazu, dass ich den Umgang von PHP (und Apache und …) mit Zeichensätzen, insbesondere das Problem, wie man richtig mit Formulareingaben umgeht, einfach bisher nicht verstehe. Aber dazu wollte ich ohnehin bei Gelegenheit mal etwas schreiben.