Oobe offline blog engine

Projektbeschreibung

Github-Link: www.github.com/schlingel/oobe

oobe ist eine kleine Skriptsammlung mit der man lokal auf der Maschine reine HTML-Files für einen Blog generieren kann. Die Idee kam aus der Überlegung, das der Aufwand immer und immer wieder für jeden Aufruf das HTML per PHP (Wordpress) auf dem Server zu erzeugen absolut nicht zu der Häufigkeit steht in der ich Änderungen an meinen Artikeln vornehme.

Neben diesem Hauptgrund gab es aber noch eine Liste weiterer Gründe die mich motivierten:
[ul]
[li]Beiträge per Git verwalten.
[/li][li]Automatisch eine PDF-Version und eine Web-Version für den Artikel erzeugen.
[/li][li]Artikel und Design sollten vollkommen unabhängig sein.
[/li][li]Performance-Vorteile durch das Verwenden von blankem HTML.
[/li][/ul]

Da im Hintergrund LaTeX verwendet wird, und ich die Style-Beschreibung von tex4ht furchtbar finde, habe ich eine sehr einfache Template-Sprache entworfen. So sieht im Moment das Basis-Template für eine Website aus:


<!DOCTYPE HTML>
<html>
	<header>
		<title>%TITLE% - %DATE%</title>
	</header>
	<body>
		%CONTENT%
	</body>
</html>

Zusätzlich kann man mit %AUTHOR% den Autoren der im Tex-File festgelegt wird in die Seite einfügen.

Technisch handelt es sich hier um ein Ant-Skript das mit Shell-Skripten und selbst geschriebenen Ant-Tasks ergänzt wurde. Daher benötigt oobe Ant und Java 7. Im Moment ist sie nur auf Windows lauffähig da das Shell-Skript nur als Batch-Skript verfügbar ist. (Da ich aber auch Linux verwende wird sich das noch ändern.)

Neben dem Erzeugen von PDFs und per Template festlegbarer Websites wird auch eine ordentlichere File-Struktur von meiner Anwendung angegeben. Dazu wird das vom htlatex erzeugte HTML geparsed und Bilder werden umgebogen. Die generierte File-Struktur sieht so aus:


 dist
 |
 +-css
 +-img
 +-pdf

Unter dist liegen dann die einzelnen HTML-Files.

Features
[ul]
[li]Generierung von frei gestaltbaren Websites aus Tex-Files.
[/li][li]PDF-Generierung
[/li][li]Upload zu Webspace per FTP
[/li][li]Frei konfigurierbar über Properties-File
[/li][/ul]

TODO-List
[ul]
[li]Per JS Kommentarfunktion nachrüsten. (Disquus, oder ähnliches wäre schon fertig.)
[/li][li]Handhabung beim Generieren von einzelnen Beiträgen erleichtern.
[/li][li]Aus den generierten Meta-Daten einen Blog-Role erstellen.
[/li][li]Tags-Funktion implementieren. (Einzelne Beiträge können getagged werden und auf einer Übersichtsseite kann dann anhand der Tags gesucht werden. Reines JS)
[/li][li]Indexseitengenerator programmieren der z.B. die letzten 10 Beiträge hernimmt und daraus eine nette Übersicht programmiert.
[/li][li] Bugfixes…
[/li][/ul]

Github-Projektstruktur
Das Projekt auf Github ist verschachtelt. Im Ordner engine findet man das oobe-Build-File. Alles darüber gehört zu dem in Java geschriebenen Ant-Task der in oobe verwendet wird. Bevor oobe lauffähig ist muss zum einen das config.properties-File angepasst werden und zum anderen das oobe.ant.jar gebaut werden. Dazu ruft man im oobe-Ordner ant prepare-oobe auf.

Der Installationsprozess auf einem System mit Java 7 und Ant sieht so aus:


git clone https://github.com/schlingel/oobe.git
cd oobe
ant prepare-oobe

Um dann einen Artikel anzulegen und auf den Server zu laden geht man so vor:


cd engine
vim|emacs|nano|whatever config.properties
ant create-article -Darticle.name=mein.artikel
vim|emacs|nano|whatever dein/articles/dir/mein.artikel.tex
ant publish

Hi,

hört sich interessant an …
aber PDF ist richtig interssant …

aber es gibt schon ähnliche Ansätze…

wie z.B.: http://jekyllrb.com/

Nutze ich selbst…

Gruß
Karl-Heinz

aber es gibt schon ähnliche Ansätze…

Richtig. Wie hast du das gefunden? Ich hab’s leider nicht geschafft, ansonsten hätte ich das geforked und einfach Latex integriert.

Aber ich bin mit dem aktuellen Stand von meiner Lösung sehr zufrieden und werde hier nur noch minimal nachbessern. Denn wenn das Hinzufügen, Entfernen, etc. ordentlich funktioniert schreibe ich noch zwei kleine Ant-Tasks die aus den Metadaten die im Moment auch schon generiert werden JSON-Files generieren.

Die ganze dynamische Templating-Sache schenke ich mir und verweise hier auf AngularJS oder ähnliches :slight_smile: So werde ich es für meinen Blog nämlich auch machen. Ein statisches JSON generieren, ganz normal per GET abholen und damit die „Dynamik“ in die Seite bringen.

PS:
Was sollen mir die drei Punkte sagen? Ist’s jetzt eine blöde Idee? Eine Gute aber zu spät? Kannst du ruhig direkt aussprechen :slight_smile:

Hi,

Das wäre Cool…
Es gibt schon was mich sehr an LaTeX erinnert…

https://github.com/hdpatel/jekyll-scholar-extras/blob/master/README (BibTeX)…

Ja ich hatte vorher so sachen wie theweml.org in Verwendung …aber diese Geschichte mit PERL / M4 etc…war mir auf die Dauer zu Komplex…jekyllrb.com ist einfacher…

Das sollte keine Kritik werden. Wichtig ist: Wenn es das tut was es soll dann ist das perfekt.

[QUOTE=schlingel;29751]PS:
Was sollen mir die drei Punkte sagen? Ist’s jetzt eine blöde Idee? Eine Gute aber zu spät? Kannst du ruhig direkt aussprechen :-)[/QUOTE]Garnichts…ich hatte die übersehen…Sorry.

Gruß
Karl-Heinz Marbaise

Jekyll ist von Tom Preston-Werner, Mitbegründer und CEO von Github. Jekyll wird nativ von Github-Pages unterstützt (das HTML wird also auf dem Server generiert). Insofern kann man schon mal davon gehört haben.

Ich hab’s leider nicht geschafft, ansonsten hätte ich das geforked und einfach Latex integriert.

Es gibt auch einen recht bekannten Aufsatz namens Octopress. Octopress unterstützt Plugins. Vielleicht kannst Du Deine Funktionalität ja auch so integrieren. Ist übrigens alles Ruby.

Was sollen mir die drei Punkte sagen? […] Kannst du ruhig direkt aussprechen :slight_smile:

Du solltest vielleicht nicht so viel in drei Punkte reinlesen…

(scnr)

Wenn du lieber python magst kann ich dir Pelican empfehlen.

EDIT: Um Kommentare selbst zu hosten gäbe es auch die Lösung Commentics