Intern

Von WordPress zu Hugo Teil 3: Ein Blick zurück

31. Oktober 2025 · Intern · andreas · Kein Kommentar

Ende 2022 hat Hugo hier im Blog WordPress abgelöst und um das Fazit vorwegzunehmen: der Wechsel zu einem statischen Websitegenerator hat die damit verbundenen Erwartungen voll erfüllt.

Im Gegensatz zu dynamischen Websitegeneratoren werden bei statischen Websitegeneratoren die Seiten nicht bei jedem Aufruf neu aus einer Datenbank oder dem Dateisystem erstellt, sondern nur dann neu gebaut, wenn sich der Inhalt auch tatsächlich ändert. Der Einsatz eines statischen Websitegenerators ist aber nicht für jeden Einsatzzweck geeignet, denn z.B. bei einer großen Website mit vielen Autoren und täglich unzähligen Änderungen und eingehenden Kommentaren kann der Einsatz eines dynamischen Websitegenerators durchaus effizienter sein.

In vielen kleineren Projekten (wie z.B. dieser Website) werden Inhalte hingegen eher sporadisch hinzugefügt und dies i.d.R. auch nur ein oder wenige Male pro Woche. Hier kann der Einsatz eines statischen Generators den Wartungsaufwand so reduzieren, daß mehr Zeit für das eigentliche Schreiben der Beiträge bleibt und gleichzeitig einen Großteil der potentiellen Angriffsfläche auf dem Webserver verringern.

Wahl des Generators

Nach Sichtung mehrerer Alternativen fiel die Wahl auf Hugo, das mit einigen überzeugenden Features glänzt:

Genau wie Fossil, das seit Jahren bei mir als SCM im Einsatz ist, besteht Hugo aus einer einzigen ausführbaren Datei und funktioniert somit ohne tausend zu installierende Abhängigkeiten, Frameworks oder zukünfig vielleicht nur schwer zu schaffenden Voraussetzungen.

Zusätzlich verfügt Hugo über einen eingebauten Webserver mit integriertem Live-Reload, so daß ohne großen Aufwand lokal entwickelt und getestet werden kann. Last but not least ist Hugo auch rasend schnell, als Fausregel kann von 1ms pro bearbeitetem Inhalt ausgegangen werden. Dieser Punkt schien mir anfangs gar nicht so wichtig, aber spätestens beim Bearbeiten zentraler Templates ist es extrem nervenschonend, wenn die komplette Website selbst auf meinem antiquiertem i5-6600 in weniger als zwei Sekunden neu gebaut ist:

Start building sites … hugo v0.131.0+extended linux/amd64 BuildDate=2024-09-03T01:15:37Z VendorInfo=debian:0.131.0-1 | DE -------------------+------- Pages | 2164 Paginator pages | 1449 Non-page files | 5193 Static files | 10 Processed images | 0 Aliases | 844 Cleaned | 0 Built in 2359 ms

Neben einer guten und verständlichen Dokumentation war mir auch eine lebendige Community wichtig. Irgendwann kommt mit an Sicherheit grenzender Wahrscheinlichkeit ein Punkt, an dem man den Wald vor lauter Bäumen nicht mehr sieht und für zahlreiche Blog-Beiträge, Tutorials und ein reges Austauschforum dankbar ist.

Der Einstieg

Aller Anfang ist schwer, aber wenn man einmal verstanden hat, wie ein System tickt, so gehen die nächsten Schritte deutlich leichter.

Sinnvollerweise sollten erst einmal Erfahrungen mit einem neuen Werkzeug gesammelt werden und dies am besten mit einem Spielprojekt. Man kann sich das Leben aber auch unnötig schwer machhen und ohne Vorkenntnisse ein komplexes Projekt als Ziel anvisieren.

Auf der Suche nach für die Umsetzung des Blogs passenden Tutorials bin ich leider im Internet nicht fündig geworden. Die Suchmaschinen werfen zwar bei entsprechenden Suchanfragen einiges an Ergebnissen aus, aber die meisten gefunden Tutorials beleuchten nur einen Teilaspekt des geplanten Umfangs und es fehlt der umfassender Überblick.

Als Glücksgriff hat sich das Buch “Build Websites with Hugo - Fast Web Development with Markdown” von Brian P. Hogan erwiesen, welches auch auf der Hugo-Website als Starthilfe aufgeführt wird. Nach einem kurzen allgemeinen Einstieg geht es mit den Themenblöcken “Building a Basic Theme”, “Adding Content Sections” sowie “Adding a Blog” recht schnell und verständlich in die Themenbereiche, die für die Umsetzung notwendig und hilfreich waren und das Grundgerüst stand nach recht kurzer Zeit und konnte mit den Inhalten befüllt werden.

Nacharbeiten

Nachdem die Inhalte wie in Teil 2 beschrieben exportiert und im Dateisystem angelegt waren, stand noch einiges an Nacharbeiten an. TinyMCE, welches bei WordPress bis einschließlich Version 4.9 im Einsatz war, produziert zwar weitestgehend sauberen Code, der aber doch noch an der ein- oder anderen Ecke bereinigt werden musste. Besonders “schön” waren mittels Copy & Paste aus Micosoft Office übernommene Passagen, welche mit zustzlichen Formatierungen bestückt waren.

Als zeitsparend hat es sich erwiesen, daß nur ein verschwindend geringer Teil an Blogbeiträgen mit dem WordPress-Editor Gutenberg erzeugt wurden, denn diese erforderten einen deutlich höheren Bereinigungsaufwand.

In einigen Beiträgen musste manuell nachgebessert werden, da der selbstgeschriebene Quick & Dirty-Export nicht sauber gearbeitet bzw. Dinge nicht umgesetzt hatte.

Letztendlich hat es sich als sinnvoll erwiesen, im Laufe der Zeit jeden vorhandenen Beitrag einmal im Texteditor zu öffnen und einer kurzen Kontrolle zu unterziehen, damit unter der Haube die Markdown-Dateien auch wirklich sauber waren.

Auch rund um die Kommentare wurde mehrfach nachgebessert. Letztendlich werden diese im JSON-Format in einem Unterordner im Verzeichnis des jeweiligen Beitrags abgelegt. Neue Kommentare werden vom Server als JSON-Datei abgelegt und in die lokale Entwicklungsumgebung transferiert - sicherlich kein Verfahren, das bei mehr als einer Hand voll Kommentaren pro Monat sinnvoll anwendbar wäre.

Werkzeuge

Zum Generieren der Website wird Hugo in der von Debain Stable mitgelieferten Version verwendet. Dies hat den Vorteil, daß sich die technische Basis nur ungefähr alle zwei Jahre ändert und zwischenzeitlich stabil bleibt. Der Nachteil dieser Vorgehensweise ist, daß Hugo recht kurze Entwicklungszyklen hat, neue Funktionen erst einmal nicht direkt zur Verfügung stehen und bei einem Versionswechel nach zwei Jahren i.d.R. einiges an Nacharbeiten anfällt.

Als Hauptwerkzeug zum Erstellen der Blogbeiträge dient Sublime Text, welches um einige Projekt-spezifische Snippets erweitert wurde. Mit diesen lässt sich z.B. schnell die notwendigen FrontMatter-Angaben für einen neuen Blogbeitrag erzeugen, Shortcodes für Bilder und Boxen einfügen oder per Tastendruck ein Link setzen. Auch ein paar externe Werkzeuge wurden eingebunden, um z.B. aus im Verzeichnis gespeicherten Bilddateien die Liste für eine Galerie zu erstellen.

Darüber hinaus gibt es noch einige (wenige) Skripte, welche z.B. die Meta-Informationen für Bildergalerien erzeugen oder andere leicht zu automatisierende Aufgaben übernehmen.

Der Abgleich mit dem Webserver erfolgt mittels rsync, welches über eine SSH-Verbindung beim Veröffentlichen den loaken Entwicklungsstand mit dem Inhalt des Webservers abgleicht.


Renovierung IV

21. Februar 2025 · Intern · andreas · Kein Kommentar

Das in den letzten Jahren verwendete Theme ist in den Grundzügen unverändert geblieben, wurde aber vorsichtig modernisiert:

Der noch aus WordPress-Zeiten stammende Header wurde verkleinert, aufgehellt und gleichzeitig mit der Position sticky sowie einem backdrop-filter versehen. Der M.U.L.E.-Mechtron wurde als SVG neu erstellt, was unabhängig von der Vergrößerungsstufe zu einer gestochen scharfen Darstellung führt.

Sollte es noch irgendwo klemmen, bitte die Kommentar-Funktion mit entsprechenden Hinweisen füttern.

Vielen Dank!


Verbesserte Anzeige der internen Suchergebnisse

07. Mai 2024 · Intern · andreas · Kein Kommentar

Bereits länger in Planung, wurde soeben eine verbesserte Anzeige der Suchergebnisse implementiert.

Dort wo bisher immer der Anfang des Beitrags angezeigt wurde

Suchergebnis alt

wird ab sofort der Teil des Beitrags angezeigt, der die erste Fundstelle des Suchbegriffs enthält:

Suchergebnis neu

Somit lassen sich die Suchergebnisse bereits in der Übersicht besser auf ihre Relevanz hin unterscheiden.


WEBNET webratings: andi's Homepage

07. April 2023 · Intern · andreas · Kein Kommentar

Beim Aufräumen habe ich einen Screenshot gefunden, der sich - wie an der URL zu erkennen - auf eine meiner ersten Gehversuche im damals noch recht neuen World Wide Web bezieht.

WEBNET webratings

Die Screenshot-Datei datiert auf den 20. Juni 1999, ich gehe aber davon aus, daß die im Footer genannte “1997” den Zeitpunkt des Reviews genauer trifft.

Keine Ahnung, ob und wie relevant die “WEBNET webratings” jemals waren, 2023 gibt es zu dem Dienst noch nicht mal einen Wikipedia-Eintrag und der Server “www.webnet.com.au” liefert nur noch ein “HTTP 403 “Forbidden””.

Lediglich beim Hartford Courant ist ein Beitrag mit dem Titel “Marc Makes A Hit On The Web” vom 23. Juli 1998 zu finden, welcher ein paar Hintergrundinfos liefert:

It may not be as big as Microsoft, IBM or Yahoo, but MARC Inc. of Manchester has earned the same rating for its Web site — four out of five stars — from the Australia-based IIS Webnet Webratings.

Webnet Webratings is an internet communications solutions provider that rates Web sites weekly for free. Scores are based on content, navigation of site, appearance and the ease of reading. Each category is rated from one to five stars and an average score is awarded.

The company receives anywhere from 50 to 100 Web sites for review every day, said Karen Threlfall, project designer. Anyone can submit a site, whether it is a personal home page or a major corporation.

“The majority receive three stars,” she said. “Four is very good and five is impressive.”

Somit fällt meine damalige Site mit einem Rating von “4” unter “very good” und ich fand mich wohl in namhafter Gesellschaft, wobei mich eine prozentuale Verteilung der Bewertungen durchaus interessieren würde.

Das mit dem “young guy” hat sich inzwischen erledigt und die einige Jahre gepflegte Alanis Morissette-Discography ist Dank Diensten wie Discogs längst Geschichte. Das “easy to navigate” und “well done” treffen aber hoffentlich auf den Nach-nach-…-Nachfolger immer noch zu.


Neue Kategorie: Lesenswert

14. März 2023 · Intern · andreas · Kein Kommentar

Seit Ende 2014 wurden hier mehr oder minder regelmäßig aus meiner Sicht interessante Links unter dem Schlagwort “Lesenswert” veröffentlicht. Im Gegensatz zu “Hörenswert” wurde hierfür allerdings nie eine eigene Kategorie eingeführt, sondern diese als Teil der Kategorie “IMHO” behandelt.

Dieser Schiefstand wurde nun beseitigt und alle “Lesenswert”-Beiträge wurden in eine eigene Kategorie verschoben. Die sich ändernde URL ("/misc/lesenswert/" statt “/misc/imho”) wurde aus Übersichtsgründen in Kauf genommen und auch kein Alias für die alte URL eingerichtet.

Viele externe Links auf die Linksammlung(en) dürfte es sowieso nicht geben.