Halbautomatisch - ein Weblog für automatisch.cc

Die Anforderungen

  • Das Erstellen neuer Beiträge soll möglichst bequem sein, d.h.
  • reStructuredText als Eingabeformat
  • kein Schreiben in Textareas von Webbrowsern
  • Die Beträge sollen, so wie die restliche automatisch.cc Website, als Textdateien im Subversion-Repository abgelegt werden können (kein erhöhter Wartungsaufwand durch Datenbank-Backups etc.).
  • Das Weblog soll sich in Design und Layout in die spartanische Welt von automatisch.cc eingliedern.
  • RSS-Feed

Die Umsetzung

Beiträge erstellen: Nabu

Nabu erledigt allein schon eine Menge Punkte aus der Anforderungsliste: es analysiert und verarbeitet reStructuredText Dateien und legt die Ergebnisse in einer (entfernten) Datenbank ab. Dabei ist die einzige Arbeit zur Wartung der Datenbank die man "händisch" erledigen muss, das Anlegen der Datenbank (und ggf. eines Benutzerkontos). Die ganze "Energie" des Systems steckt in den Textdateien (und im Nabu Code). Die Datenbank samt Inhalten kann Nabu innerhalb kürzester Zeit von Grund auf neu erzeugen.

Damit erreicht man also Bequemlichkeit sowohl beim Schreiben und Verwalten der Beiträge (nur Textdateien) als auch bei der Programmierung der Präsentationsschicht (man holt die Inhalte, wie gewohnt, aus einer Datenbank) und bei der Wartung (DB Backup ist überflüssig).

Was man an dieser Stelle anmerken sollte ist, dass Nabu momentan "out of the box" nur PostgreSQL mit dem Adapter psycopg2 unterstützt, was sich allerdings genau mit meinen persönlichen Vorlieben deckt. ;-)

Die Textdateien, die Nabu zur Verarbeitung vorgelegt werden, sehen z.B. so aus:

:Id: 9d64083b-b28e-4d54-9f6f-7c0655dac94e
:Datum: 2006-08-24 23:39:53
:Titel: Halbautomatisch: ein Weblog für automatisch.cc
:Kategorie: WWW
:Text:

    Jetzt ist es also so weit - `automatisch.cc`_ hat ein Weblog.  Technisch
    gesehen ist es eine Eigenentwicklung mit den beiden Haupt-Ingredienzien
    Nabu_ und Django_.  Eine etwas genauere Beschreibung der Umsetzung wird es
    bald auf `automatisch.cc`_ geben.

    Den Plan die "Aktuell" Meldungen um ein Weblog zu ergänzen (oder dadurch zu
    ersetzen), gibt es schon lange.  Eine wichtige Anforderung an das Blog
    System war allerdings, dass die Beiträge, wie auch die restliche Website,
    durch das Editieren von einfachen Textdateien gepflegt werden können.
    Trotzdem sollte es permanent gültige URLs, einen dynamischen Index, ein RSS
    Feed und später auch mal Kommentare etc. geben.

    Nabu_ ermöglicht mit minimalem Programmier- und Administrationsaufwand die
    Blogbeiträge aus den Textdateien in HTML umzuwandeln und in eine
    (entfernte) Datenbank zu stecken.

    Für die Präsentation inklusive RSS-Feed ist Django_ zuständig, was auch
    hier den Arbeitsaufwand extrem niedrig gehalten hat.

    Die Erstellung des Weblogs hat jedenfalls viel Spaß gemacht, wir werden
    sehen wie es mit den Inhalten aussieht... ;-)

    .. _nabu: http://furius.ca/nabu/
    .. _django: http://djangoproject.org/
    .. _automatisch.cc: http://www.automatisch.cc/

Das ist die Textdatei zum ersten halbautomatischen Blog Eintrag

Der Extraktor

Nabu, als generisches Werkzeug, kann natürlich nicht erraten, nach welchen Feldern es in den Textdateien suchen soll und was es genau mit gefundenen Weblog Inhalten tun soll. Im sogenannten Extraktor kann man entscheiden, welche Felder einen Weblog Beitrag ausmachen und welche man davon wie in die Datenbank schreiben will. Als kleine Besonderheit wandelt der Extraktor von Halbautomatisch den :Text: Teil gleich in HTML um und schreibt ihn in die Datenbank. Das ist in diesem Fall so einfach möglich, weil die ganze Website in reStructuredText geschrieben ist und das von Docutils erzeugte HTML automatisch die passenden CSS Klassen und Typen enthält.

Da das HTML nun direkt aus der Datenbank, ohne weiteren Verarbeitungsschritt, von der Präsentationsschicht verwendet werden.

Das "Script davor"

Ein Skelett für einen neuen Beitrag schreibt das Shellscript autoblog.sh z.B. mit einem solchen Aufruf:

./autoblog.sh Halbautomatisch: ein Weblog für automatisch.cc

Alle Argumente werden als "Thema" eingetragen, die UID und das Datum werden automatisch erzeugt, der neue Beitrag wird mit svn add für Subversion angemeldet und die die Textdatei wird mit Vim geöffnet.

Das "Script danach"

Für die Veröffentlichung von neuen Beiträgen oder Änderungen sorgt publizieren.sh, das folgende Aufgaben erledigt:

  • Nabu wird aufgerufen, um die Texte zu verarbeiten und neue Dateien und Änderungen an die Datenbank zu schicken.
  • Linkchecker prüft das gesamte Weblog auf ungültige Links.
  • Die Textdatei mit dem neuen Beitrag wird in das Subversion Repository übertragen.

Alle Argumente werden als Commit-Nachricht verwendet:

./publizieren.sh neuer Beitrag

Präsentation: Django

Django ist eines der "neuen, schnellen, geilen" Webframeworks für Python. Ich kann nur sagen, dass die Beschleunigung "von Null auf Weblog" wirklich beeindruckend war.

Das Django Tutorial geht davon aus, dass die Datenbankstruktur aus einem Modell, das mit Python Klassen beschrieben wird, automatisch generiert wird. Bei Halbautomatisch war die Ausgangssituation anders, weil die Datenbankstruktur ja von Nabu erzeugt wird. Aber auch das war kein Problem, Django erzeugt auf Wunsch auch aus einer vorhandenen Datenbank ein Datenbank-Modell, an dem man dann händisch herumfummeln kann.

Toll unterstützt wird auch die Erstellung von RSS-Feeds, das macht sich praktisch von selbst.

Die Weiterentwicklung

Halbautomatisch ist alles andere als fertig. Es fehlen Leistungsmerkmale (ja, es gibt ein deutsches Wort für "Features") wie: Kommentare, Filter für Kategorien, Trackback, ...

> zum Seitenanfang
[Acat powered] [rest2web powered] [Python powered] letzte Änderung am 07.06.2007 20:04
[Acidburn] [jeziorny.net] [www.localdomain.at] [keine Zielgruppe] [No Software Patents] [<No>OOXML]