Halbautomatisch - ein Weblog für automatisch.cc
Inhalt dieser Seite:
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, ...

![[Acat powered]](images/powered_by_acat.png)
![[rest2web powered]](images/rest2web140x62.gif)
![[Python powered]](images/python-powered-h-50x65.png)
![[Acidburn]](images/acidburn.png)
![[jeziorny.net]](images/button_net.jeziorny_2.png)
![[www.localdomain.at]](images/localdomain_button.png)
![[keine Zielgruppe]](images/keinezielgruppe.gif)
![[No Software Patents]](images/nswpat80x15.gif)
![[<No>OOXML]](images/noooxml_sm.png)