Skip to content

Generatoren für statische Websites

Ganz früher bestand eine Homepage, bestanden Webseiten allgemein im wesentlichen aus HTML-Dokumenten. Auf dem Weg zum Web 2.0 kamen zunächst CGI-Scripts für bestimmte Anwendungen auf; insbesondere aber mit der Verbreitung von PHP wurden Webseiten deutlich interaktiver. Blogs, Gästebücher, Kontaktformulare wären anders auch kaum vorstellbar. Nicht immer aber ist Interaktivität wirklich erforderlich. Manche eigentlich statische Seite wird nur deshalb dynamisch via PHP - oder auf vergleichbare Weise - erzeugt, weil es so bequem ist, die Erstellung einer Navigation und der Grundstruktur der Seiten zu automatisieren und Änderungen nur an einer Stelle vornehmen zu müssen. Das kann durch Installation eines CMS - oder eines dafür “zweckentfremdeten” Blogs oder Wikis - erfolgen; man kann auch wie ich schlicht die bisherigen HTML-Dokumente durch PHP-Scripts ersetzen, die im wesentlichen nichts anderes tun als vorgefertigte Funktionen für die Generierung des Seitengerüsts und der Navigation aufzurufen und ansonsten praktisch nur aus HTML bestehen. Meistens wäre es aber eigentlich gar nicht erforderlich, die Webseiten für jeden Aufruf neu zu generieren, weil sie sich nicht oder doch nur selten ändern. Ausreichend wäre es vielmehr, die Erstellung der an und für sich statischen Seiten aus Vorlagen - Templates - zu automatisieren und dabei ggf. auch automatisch die nötige Navigation zu erstellen.

Das leisten - in verschiedensten Variationen - static site generators, also Scripts oder Programmpakete, die man mit Schablonen (Templates) und Inhalten füttert und die daraus - ergänzt um eigene Programmschnipsel - die fertige Website erstellen. Vorteilhaft daran ist, dass die Webpräsenz im wesentlichen aus statischen HTML-Seiten bestehen kann, nur dort durch Scripts ergänzt, wo das auch tatsächlich für Interaktivität notwendig ist. Auf dem Webserver wird die Last deutlich verringert, weil nicht für jeden Seitenaufruf ein PHP-Interpreter gestartet werden muss; auch bestehen weniger Angriffsmöglichkeiten, weil kein ausführbarer Code mehr “live” auf dem Webserver laufen muss. Eine gewisse Interaktivität lässt sich auch durch tägliche, halbtägliche oder sogar stündliche Neuerzeugung der Webseiten erreichen; das macht für ein Forum oder auch ein Blog mit Kommentaren sicher wenig Sinn, aber wenn “nur” ein RSS-Feed oder die aktuellsten Tweets eingeblendet werden sollen, reicht das oft aus. Zudem lassen sich bspw. Kommentare auch durch externe Systeme wie Disqus vermittels Javascript einbinden.

Das Angebot an solchen Generatoren ist - wie bei Blogs, Wikis, CMS, Bugtrackern usw. - einigermaßen unüberschaubar geworden, wie man einer beliebigen Liste von Static Site Generators entnehmen kann. Gute Erfahrungen habe ich mit nanoc gemacht, mit dem auch der CCCS seine Website generiert; Jekyll wird bspw. bei GitHub genutzt, um dort Webseiten - direkt aus Git heraus - zu generieren. Der einzige Nachteil bei beiden ist ggf., dass sie in Ruby geschrieben sind und daher eigene Scripts und Erweiterungen sinnvollerweise ebenfalls in dieser Sprache zu halten sind. :-)

Das Grundprinzip ist bei allen Generatoren immer dasselbe: Es wird ein Grundgerüst für die Seiten in Form eines oder mehrerer Templates aufgebaut, gerne in HTML 5 und “responsive”, die dabei Platzhalter oder sogar entsprechend fortgeschrittenere Funktionen enthalten. Das Design erfolgt über CSS, wobei auch CSS-Präprozessoren wie LESS oder SASS zur Anwendung kommen können. Die einzelnen Webseiten schließlich können als HTML-Dokumente, aber besser noch in einfacheren Auszeichnungssprachen wie MarkDown, Textile, Asciidoc usw. angelegt werden. Dann gibt es in der Regel noch eine Konfigurationsdatei, aus der sich ergibt, wie die einzelnen Bausteine - Templates, CSS, Seiteninhalte - “bearbeitet” und zusammengefügt werden sollen. Aus diesen Anweisungen und Bausteinen generiert der Site Generator dann statische HTML-Dokumente (oder auch PHP-Scripts, oder Dokumente, die Javascript enthalten, oder …). In der Regel sind dabei eine Vielzahl von Filtern zur Interpretation von Markdown, LESS und Co. bereits enthalten; die eigenen Seiten und Designs lassen sich daher quasi aus einem Baukasten zusammensetzen, zumal als Basis für das Grundgerüst der Seiten auf Systeme wie Bootstrap oder HTML5 Boilerplate zurückgegriffen werden kann, die eigene Schriftarten, Icons und/oder Javascript direkt mitbringen oder zumindest entsprechende Anregungen enthalten. Mit verhältnismäßig wenig Aufwand lassen sich so die eigenen Inhalte hübsch, technisch modern und auf den verschiedensten Geräten vom Smartphone über das Tablet bis zum Laptop oder großen Desktopbildschirm ansehnlich darstellen.

Wenn man möchte, kann man auch die Quelldokumente in einem Versionsverwaltungssystem wie Git verwalten und bei jeder Änderung daraus automatisch eine neue Version der Webseiten erzeugen. Auf diese Weise ist ein Blogbeitrag, aber auch eine neue Seite der eigenen Homepage schnell in Markdown geschrieben, mit einem Vorspann - mit den notwendigen Informationen wie Titel, Autor, Erstellungsdatum, Typ pp., bspw. in YAML - versehen und im Git-Repository gespeichert; daraus erzeugt dann der Generator automatisch die neue Seite und passt - gleichfalls automatisch - alle davon betroffenen anderen Seiten (Inhaltsverzeichnis/Sitemap, Navigation, RSS-Feed, …) an und erzeugt sie, soweit nötig, neu.

Ich finde das sehr praktisch für alle Anwendungsfälle, die keine “Webapplikation” darstellen, sondern im wesentlichen statische Inhalte enthalten, die sich nicht minütlich oder stündlich, sondern eher täglich, wöchentlich oder auch nur alle Jubeljahre einmal ändern. Durchaus lässt sich aber auch ein Blog so betreiben, wenn man denn die interaktiven Elemente wie Kommentare pp. “outsourced”, bspw. an Anbieter wie Disqus. Mit ausreichend Zeit - ja, genau da liegt der Knackpunkt … :-) - plane ich, zumindest einige der von mir betreuten Webseiten in der Zukunft entsprechend umzustellen.

MarkdownPad

Über Markdown habe ich in diesem Blog schon mehrfach geschrieben. Ich nutze diese simple Auszeichnungssprache nicht nur für meine Blogbeiträge, sondern auch für FAQs, die sowohl als einfacher Text - bspw. für Postings im Usenet - als auch als HTML - bspw. im Web - veröffentlicht werden sollen, als Quelle für daraus generierte Webseiten oder bei Anbietern, die gleichfalls auf diese Auszeichnungssprache setzen, wie bspw. Github.

Bislang habe ich Markdown in meinem Standardeditor Sublime Edit 2 verfasst (oder ggf. in Notetab Pro), schließlich handelt es sich letztlich um einfachen Klartext, und den Text dann veröffentlicht und notfalls einmal nachbearbeitet. Wenn ich einmal wirklich eine Vorschau sehen wollte, habe ich einen der im Web vorhandenen Online-Konverter wie Markdown Live Preview benutzt, bei dem man links in ein Fenster seinen Text einfügen kann und der rechts daneben dann live die Umsetzung in HTML darstellt. Wenn man allerdings mit einer langsamen Internetanbindung irgendwo an der Küste sitzt - oder gar offline arbeiten möchte -, ist das kein optimaler Workflow. :-)

Daher bin ich jetzt - nach kurzer Suche über Google - auf den Markdown-Editor MarkdownPad 2 gestoßen, der einem im Prinzip das, was Markdown Live Preview online kann, offline bietet: links der Text in Markdown, rechts daneben das gerenderte HTML. Außerdem gibt es die bereits sattsam aus Web-Editoren wie in Wikis oder Blogs bekannten Buttons, mit denen man das entsprechende Markup generieren kann - eigentlich nicht nötig, weil das schöne an Markdown ja gerade ist, dass man es ganz natürlich tippen kann, aber mal ganz praktisch, wenn man nach einer Schaffenspause mal wieder ein spezielleres Markup vergessen hat und sich den Ausflug zu einer Syntaxübersicht sparen möchte. Außerdem kann man auf einfache Weise das generierte HTML direkt exportieren, wenn man das möchte.

MarkdownPad ist kostenlos; die 15 Dollar teure “Professional”-Version beherrscht u.a. Tabellen in Markdown Extra und den Export in ein PDF. Ich finde das sehr praktisch und werde dieses Tool zukünftig für meine Markdown-Texte verwenden.

Druckertreiber für HP LaserJet 1015 unter Win7/Win8

Mir leistet seit Jahren ein kleiner, aber durchaus feiner HP LaserJet 1015 als Drucker gute Dienste. Er belegt recht wenig Platz, der Papiervorrat ist ausreichend, und man kann auch mal 100 Seiten am Stück drucken - für die heutigen Zwecke, bei denen ab und an mal ein Brief, eine Checkliste, ein Kalender oder ein Kartenausschnitt, vielleicht auch einmal ein Manuskript oder eine Reihe Handouts gedruckt werden sollen, ist das (auch von der Druckgeschwindigkeit) völlig ausreichend und mir - für Schwarzweißdruck - aus mehrerlei Gründen lieber als ein Tintenstrahldrucker, der in Gestalt eines HP OfficeJet Pro 8600 Anfang letzten Jahres auch hier eingezogen ist. Wenn doch einmal größere Druckmengen erforderlich sind, gibt es in der Regel im Büro eine Möglichkeit dafür, oder - oft sogar billiger - im Copyshop.

Problematisch ist aber die Treiberversorgung für neuere Windowsversionen. Für Windows 7 gab es - so weit ich weiß - gar keinen offiziellen Treiber, und die Treiber für Windows 8 und Windows 8.1 sind nur für den Anschluss via USB direkt am entsprechenden Rechner geeignet. Das hilft mir nicht, weil der Drucker am Linuxrechner hängt und von dort via CUPS als Netzwerkdrucker bereitgestellt wird …

Jedesmal also, wenn hier ein neuer Rechner einzieht, stehe ich neu vor dem Problem, einen Druckertreiber für den LaserJet zu installieren, und jedesmal habe ich vergessen, wie ich beim letzten Mal zu einer Lösung gekommen bin - ich erinnere mich nur daran, dass das Stunden gekostet hat, und das tut es dann auch erneut. Und jedesmal ärgere ich mich, dass ich meine Lösung dann nicht hinterher dokumentiert habe.

Daher nun dieser Blogeintrag, in dem für die Nachwelt (und vor allem für meinen nächsten Rechner!) festgehalten sei:

  • Eine Lösung ist die Installation eines anderen Druckertreibers, bspw. für einen LaserJet 3055 - es muss dann aber der PCL-Treiber sein, und das funktioniert nur unter Windows 7 mit PCL 5, nicht aber unter Windows 8 mit PCL 6; PCL-5-Treiber gibt es da nicht mehr.

  • Eine andere Lösung ist es, schlicht einen älteren Treiber auf der Webseite von HP herunterzuladen. Der “host based”-Treiber für Windows Vista funktioniert hier (zwar mit etwas Verzögerung vor dem ersten Ausdruck, ansonsten aber) beanstandungsfrei.

  • Ich habe das Gefühl, bei meinem vorletzten Rechner hätte ich noch eine andere Lösung - offenkundig auch mit einem älteren Treiber - gefunden, aber wenn das so ist, dann erinnere ich mich daran nicht mehr …

Falls zufällig jemand eine noch bessere oder anderweitig konstruktive Idee hat, bin ich im übrigen natürlich ganz Ohr!

Nachtrag vom 13.08.2016: Was - auch unter Windows 10 - funktioniert, ist der HP LaserJet PCLm Class Driver.

Congstar Prepaid

Ich hatte bereits vor einiger Zeit geschildert, dass ich für den drahtlosen Netzzugang im Urlaub und auf Reisen auf einen Huawei E5331 setze, in dem eine Prepaid-Karte von Congstar mit einer aktivierten Tagesflat werkelt. Ganz richtig war mein Bericht jedenfalls zur Tagesflat aber nicht; deren Limit von 200 MB monatlich gilt nämlich nur für Vertragskarten. Bei Prepaid-Karten gibt es stattdessen für die Tagesflat ein tägliches (!) Limit von 25 MB, das ziemlich schnell aufgebraucht ist, worauf dann die Geschwindigkeit auf die üblichen 64 kb/s gedrosselt wird. Dafür ist es - zumindest neuerdings - möglich, jederzeit für weitere 99 Cent ein neues Paket mit 25 MB ungedrosseltem Datenverkehr (gültig für 24 Zeitstunden ab Abruf) zu buchen und sich auch das bereits verbrauchte Volumen anzeigen zu lassen, indem man nämlich einfach - über die entsprechende Datenverbindung - die Webseite datapass.de aufruft. Die zeigt das noch vorhandene und das verbrauchte Volumen an und bietet die Möglichkeit, mit einem Klick Volumen beliebig oft nachzubuchen. Sehr praktisch, wenn man unterwegs “nur mal eben” etwas erledigen will, kein Monatspaket für fünf, zehn oder mehr Euro buchen möchte und das knappe Inklusiv-Volumen von 25 MB nicht ganz ausreicht.

Hat man allerdings - vorhersehbar - etwas größeres vor, bspw. in einem längeren Urlaub, bei dem man bei schlechtem Wetter auch mal arbeiten und surfen möchte (und mit automatisierten Downloads bspw. von Android-Geräten im WLAN leben muss, wenn man vergisst, eben diesen zu deaktivieren), sollte man rechtzeitig (!) vorher statt der Tagesflat eines der größeren Pakete buchen. Die Kündigung der Tagesflat erfolgt nämlich zum Ablauf des Folgetages - und so lange die Tagesflat noch aktiv ist, kann kein anderes Surf-Paket mit Datenvolumen gebucht werden. Auch die Buchung erfolgt dann nicht instantan, sondern braucht etwas Zeit, bis die Bestätigung vorliegt.

Ist die Buchung allerdings gelungen, stehen - je nach Paket - 200 MB, 500 MB, 1 GB oder 3 GB für den mit Buchung beginnenden 30tägigen Abrechnungszeitraum zur Verfügung, und auch hier können beliebig oft für jeweils 5,- € Datenpakete von 200 MB (in den beiden kleineren Paketen) bzw. 500 MB (in den beiden größeren Paketen) auf dem bereits genannten Weg - oder auch per SMS - nachgebucht werden.

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.

Late adopter - bleich wie Papier

Offenkundig gehöre ich nicht (mehr?) zu den Menschen, die allzeit das neueste technische Gadget als allererster haben müssen - im Gegenteil.

Dauerte es schon bei dem Thema Smartphone ungewöhnlich lange, nämlich bis ins Frühjahr 2010, bis ich mich für ein solches erwärmen könnte (obwohl ich schon anderthalb Jahre vorher neidisch beobachtete, wie praktisch so eine Bedienoberfläche mit Touchscreen ist, während ich neben einem Skelett im Wald hockte … - aber das ist eine andere Geschichte), ist der Funke auch bei dem Thema “E-Book-Reader” bisher nicht so recht übergesprungen. Meine Frau nennt schon lange einen Kindle ihr eigen, von Kollegen habe ich mir bereits vor zwei Jahren die Vor- und Nachteile der verschiedenen Modelle erläutern lassen - dennoch konnte ich mich bislang nicht dafür erwärmen, ein gedrucktes Buch gegen ein elektronisches Gerät einzutauschen, obwohl ich schon mehrfach darüber nachgedacht hatte.

Den Anlass zum erneuten Überdenken bot jetzt die Tatsache, dass die beiden letzten Bücher von Karen Rose, die ich noch nicht gelesen hatte, nur als E-Books erschienen sind. Kurzentschlossen habe ich daher Mitte Juli einen Kindle Paperwhite geordert … und bin, mal wieder, durchaus zufrieden. Gerade die Art Bücher, die ich nach dem Lesen ohnehin wieder über BookMooch oder ähnliche Dienste vertauschen würde, kann ich sehr gut auch nur in elektronischer Form lesen. Außerdem hat so ein Gerät echte Vorteile, wenn man im ÖPNV unterwegs ist oder Pausen von 15-45 Minuten außerhalb des Büros zu füllen hat, so dass die Rückfahrt nicht lohnt.

Offenbar macht das Gerät auch durchaus süchtig, oder es geht einfach nur so schnell, “mal eben” in ein Buch hineinzuschauen; jedenfalls habe ich in dem knappen Monat seither immerhin 19 (gut, zumeist kürzere) Bücher rein elektronisch gelesen. Bemerkenswert.