Skip to content

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 Serendipty 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 ‘&lt;&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 = ‘UTF-8’ [, 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.

Meine Plugins für Serendipity

Ich hatte in die Runde gefragt, welche Plugins für Serendipity zu empfehlen sind - und möchte darauf natürlich auch selbst antworten.

Besonders wichtig sind mir folgende (Ereignis-)Plugins:

  • Statische Seiten,
  • Freie Artikel-Tags,
  • Dejure.org-Rechtvernetzung,
  • Textformatierung: GeSHi,
  • Textformatierung: Markdown,
  • Erweiterte Eigenschaften von Artikeln,
  • Microblogging (Twitter,Identica),
  • Avatar
  • und natürlich die diversen Spamschutz-Plugins.
"Meine Plugins für Serendipity" vollständig lesen

Plugins für Wordpress und Serendipity

Blogsysteme wie Wordpress oder das hier installierte und von mir sehr geschätzte Serendipity bringen von Haus aus bereits einen großen Funktionsumfang mit, der die Basisfunktionalitäten eines Blogs gut abdeckt. Ein wichtiger Grund dafür, das Bloggen nicht neu zu erfinden und ein eigenes Blogsystem zu schreiben, ist aber die große Zahl der verfügbaren Erweiterungen, die vielfältige neue Möglichkeiten bieten, Widgets in Seitenspalten zu plazieren, das Blog ans “Web 2.0” anzubinden, die eine Spamfilterung oder neue Ein- und Ausgabeformate ermöglichen oder ganz neue Funktionen wie Formulare, Foren, Fotoalben etc. pp. in das Blogsystem integrieren und es damit zu einer Art “CMS light” ausbauen.

Der große, manchmal kaum überschaubare Umfang der Plugin-Welt, die zudem in Bewegung ist und ständig größer wird oder auch an anderer Stelle (durch nicht mehr gepflegte Plugins) wieder schrumpft, birgt natürlich die Gefahr in sich, das ultimative Plugin zu übersehen, das man sich für das eigene Blog schon immer gewünscht hätte. Manchmal denkt man auch gar nicht an bestimmte Funktionen, stößt man aber anderswo darauf, hätte man sie auch gerne selbst zur Verfügung.

Daher die Frage in die Runde: Welche Plugins nutzt ihr in eurem Blog, sei es Wordpress, sei es Serendipity? Und, sinnvoller und wichtiger als bloße - oft endlose - Listen installierter Plugins, welche Erweiterungen findet ihr besonders wichtig, welche sind besonders neu oder vielleicht auch noch ziemlich unbekannt? Welche(s) Plugin(s) würdet ihr empfehlen, um mal etwas neues auszuprobieren, welches Plugin sollte bekanter werden?

Auf eure Empfehlungen und Erfahrungen bin ich erneut gespannt , gerne als Kommentar, gerne aber auch als eigener Beitrag mit Trackback nach hier.

Kategorien und Tags in meinem Blog

Ich sehe gerade, dass ich noch eine Darstellung meiner eigenen “Blogstruktur” im Nachgang zu meiner Frage an die Allgemeinheit (Struktur im Blog) vom vorvergangenen Wochenende schulde. Das will ich hiermit nachholen:

Auch ich nutze sowohl Kategorien als auch Tags - erstere für eine inhaltliche Strukturierung in Rubriken, letztere für eine Zuordnung zu denkbaren Suchbegriffen, analog zu Schlagworten.

Kategorien

Die Kategorien-Struktur ist für ein Blog wie dieses hier, das doch eine ganze Reihe letztlich völlig disjunkter Themenkomplexe abdeckt, deren einzige Verbindung eigentlich mein Interesse an dem jeweiligen Thema ist, besonders wichtig. Von wenigen Ausnahmen abgesehen bilden die Kategorien Themen ab, die man theoretisch auch jeweils in ein gesondertes Themenblog ausgliedern könnte (wenn ich denn zu jedem Thema auch mehr als eine Handvoll Beiträge schreiben würde):

  • Technisches aus der IT (Bits’n’Bytes) und Notizen zur Onlinewelt (Netzleben)
  • Rettungs- und Sanitätsdienstliches (Blaulicht)
  • Juristisches (Von Rechts wegen)
  • Geocaching (Dosensuche)
  • Verbindungsstudentisches (Mit Band und Mütze)
  • Privates (Aus dem Leben) einschließlich des früheren Pendlerlebens (Bahnfahren) und Fotos (Geknipst)
  • Rezensionen von Büchern, Filmen und anderen Werken

Daneben verbleiben dann noch die Meta-Ebene mit Beiträgen zum Blog selbst (Administratives) und zwei Querschnitts-Kategorien, nämlich Unmut (weitgehend synonym mit Bahnfahren ;-)) und Releases für Hinweise auf neue Versionen von mir gepflegter Software, FAQs oder Webseiten.

Von den beiden letztgennten Beispielen abgesehen lässt sich in der Regel jedem Beitrag genau eine Kategorie zuordnen; auf eine hierarchische Untergliederung der Kategorien kann ich weitgehend verzichten.

Neben diesem System wäre es für mich auch denkbar, über Kategorien auch zwei (möglicherweise sogar mehr) parallele Gliederungssysteme zu verwirklichen, die den Inhalt nach unterschiedlichen Kriterien gliedern. Man könnte bspw. die Kategorien Rezensionen und Releases nehmen und sie um weitere Kategorien wie Tutorials, Kommentare usw. ergänzen. Dann könnte man jedem Beitrag (mindestens) zwei Kategorien zuweisen: einmal das Thema (IT, Notfallrettung, Juristisches, Geocaching usw.), zum anderen die Art des Beitrags (Rezension eines Programms, eines Fachbuchs, eines Geocaches; Release eines Programms, eines neu gelegten eigenen Caches; Tutorials für Software, für Erste-Hilfe-Maßnahmen, zu Rechtsfragen usw.).

Tags

Kann man sich die Kategorien wie die Rubriken einer konventionellen Publikation oder die Sachgebiete eines bibliothekarischen Katalogs vorstellen, so nutze ich Tags zur Verschlagwortung oder zur Erstellung eines Index, so dass sich auf diese Weise bestimmte, voraussichtlich häufiger auftretende Themen finden lassen.

Dabei haben sich Tags aus dem technischen Bereich in Form von Hard- und Softwareprodukten oder Programmiersprachen wie git, s9y oder PHP, aber auch debian oder squeeze ergeben; daneben stehen Tags zu Gruppen oder Institutionen (DRK, bawue.net), aber auch Orten (berlin) ebenso wie zu Rechtsgebieten (Internetrecht, Strafrecht) oder zu bestimmten Gerichten (BGH). Auch Gegenstände von Rezensionen (Bücher, Videos) finden sich, und natürlich schlicht ganz allgemein bestimmte Themen (rettungsdienst, urlaub). Etwas inkonsequent haben sich daneben Tags zur Kategorisierung von Beiträgen dazwischengemogelt; so gibt es Tutorials (anleitung) und die Reihe followerpower, aus der auch der Beitrag stammt, auf den ich mir gerade selbst antworte.

Weitere Gesichtspunkte

Wie man sieht, bin ich bei Kategorien, vor allem aber bei Tags nicht wirklich konsequent; manches ist “historisch gewachsen”, wie man so schön sagt, manches gerät über die Zeit aus dem Blick - so habe ich gerade beim Schreiben dieses Beitrags an einigen Stellen Tags wie anleitung oder die Kategorie Rezension ergänzt. ;-)

Ich bemühe mich aber auch, die “Seiteneffekte” von Kategorien und Tags zu nutzen, nämlich einmal, dass Serendipity für jede Kategorie und jedes Tag neben der Möglichkeit, nur “passende” Beiträge anzuzeigen, auch einen eigenen Feed anbietet, so dass einzelne Themen gezielt “abonniert” werden können, und zum anderen, dass auf diese Art und Weise unter jedem Artikel passende Beiträge als “ähnlich” angeboten werden. Zumindest im Fall des Tags followerpower nutze ich schließlich, dass aus den Kategorien und Tags automatisch Hashtags für die Ankündigung des neuen Beitrags auf Twitter erzeugt werden.

#followerpower

Über weitere Anregungen, Berichte, eigene Erfahrungen und Empfehlungen zur Struktur in euren Blogs freue ich mich, sei es als Kommentar oder bei längeren Beitrag als Trackback/Pingback, sei es hier oder noch besser im ursprünglichen Beitrag.

Serendipity 2.0-beta3

Rund drei Monate nach dem Release der Beta-Version von Serendipity 2.0 haben sich etliche kleinere und größere Verbesserungen und Fehlerbehebungen angesammelt, so dass die Zeit reif war für eine dritte Beta-Version, die ich mittlerweile - nach einem Probelauf im Testblog und der obligatorischen Sicherheitskopie - auch hier auf Netz - Rettung - Recht einsetze.

Ich bin sehr zufrieden: alles ist noch runder, funktionaler, praktischer geworden, und die in meinem letzten Beitrag aufgezählten kleineren Haken und Ösen sind wohl auch allesamt verschwunden.

Leider war ich in den letzten zwei Monaten nicht mehr in der Lage, täglich die Diskussionen im Forum und den Issue Tracker weiterzuverfolgen oder mich gar selbst einzubringen - man hat es wohl auch an der erneuten relativen Stille hier im Blog bemerkt -, aber ich habe den Eindruck, dass Serendipity 2.0 auf einem sehr guten Weg ist.

tweetbackcheck