#
Archive for April, 2007

MP3 Tag

And one more WordPress plugin:
This one makes life easier, when you use an embedded MP3-player on your blog.
    »more…

Rumo und die Wunder im Dunkeln

Und noch ein fantastsiches Werk von Walter Moers: „Rumo & die Wunder im Dunkeln“, in dem alles was das Fantasy-Herz begehrt vorkommt: Kampf zwischen Gut und Böse, Unsterbliche Liebe, viel Blut und ein todesmutiger Held.

    »more…

Amazon Book Picture

I did it again: Another WordPress Plugin.
This one is very small and simple:
Amazon Book Picture allows you to include a simple tag with a books asin or isbn in your posts which is replaced by an image of that book from amazon.
    »more…

Mukke

Hab mir mal die Mühe gemacht und ein paar ältere Alben von mir und Freunden online gestellt. Zu finden auf der Musique Seite.

HTMLEscapeWriter

Sehr häufig kommt es vor, dass ich Text in HTML umwandeln und dabei Sonderzeichen in HTML-Entities escapen muss, beispielsweise wenn ich in einer JSP einen Stacktrace oder ein XML-Dokument anzeigen möchte.
Ich habe mir die einmalige Mühe gemacht, einen eigenen Writer hierfür zu schreiben, der es versteht, alle HTML-Entities, auch Zeilenumbrüche, korrekt zu escapen und darzustellen, und das sogar mit einer Unterstützung für Named Entities (wie z. B. & statt ").
Und da es wie alle anderen Writer ebenfalls ein Decorator ist, kann es sehr schön, einfach und Java-Konform in den Kode eingebunden werden, wie z. B. bei Exceptions: e.printStackTrace(new HTMLEscapeWriter(out));

Very often I need to convert plain text to HTML and thus convert all special characters of the text to HTML escapes, especially when working with JSP or Servlets. Now I wrote some Writer which handels all escaping on the fly and is able to convert either to unicode-escapes like &#34; or to named entities (if available) like &amp;. Also linkebreaks are converted to appropriate <BR/> tags.
Through the java-compliant usage as a writer decorator it’s easy to use. E. g. when used to print a stacktrace on a html page:
e.printStackTrace(new HTMLEscapeWriter(out));

HTMLEscapeWriter.java

Herr der Spamflut

Überall, ob Emailpostfächer mit und ohne Spamschutz oder Blog, die Spamflut bricht über mich, wie ein Tsunami. Ein Grund, sich dem Thema etwas genauer zu widmen.
    »more…

Ensel und Krete

Walter Moers schreibt mit „Ensel und Krete: Ein Märchen Aus Zamonien Von Hildegunst Von Mythenmetz“ wieder einmal aus der Perspektive des Übersetzers eines Klassikers der zamonischen Literatur vom Kultautor Hildegunst Von Mythenmetz.
Diesmal ist Mythenmetz jedoch nicht der eigentliche Protagonist seiner Geschichte, sondern zwei kleine elfenähnliche Zwergenkinder namens Ensel und Krete.

    »more…

XML Pull Parsing ganz klein

Früher oder später muss man in seinem Programm auch mit XML arbeiten, und sei es nur, um eine XML-basierte Konfigurationsdatei einzuladen.

Eine einfache Variante seine XML-Dokumente zu validieren und den Inhalt zur Verfügung zu stellen sind die große Zahl an XML-Java Binding APIs. In Java 1.6 gibt es dafür sogar das JAXP in der JDK.

Bei der JDK 1.4 ist das nicht so einfach. Entweder man schreibt seinen eigenen ContentHandler für SAX, oder wuselt alles in DOM ab, wobei das bei sehr langen und großen XML Dateien natürlich recht speicherfressend wird. Nun, der SAX Ansatz ist performanztechnisch viel versprechender, aber man muß für diese Pushparsing API seine eigene State-Machine schreiben und verwalten.
Viel einfacher geht es da mit Pull-Parsing, denn hier kann man einen einfachen Descent Parser schreiben, der rekurisv über Methodenaufrufe implementiert werden kann. Für XML Pull Parsing benötigt man jedoch wieder Libraries und damit Dependencies. Natürlich gibt es die Möglichkeit einen eigenen ContentHandler für SAX zu schreiben, der das Dokument komplett parst und die gefundenen Elemente auf einem Stack ablegt, um anschließend von einem Descent Parser verarbeitet zu werden (quasi Push-To-Pull Parsing). Aber auch dieser Ansatz legt das gesamte Dokument im Speicher ab.

Auf der Suche nach einer möglichst kleinen XML Pull API (ich wollte ja keine Dependencies nur um meine Konfigurationsdatei zu verarbeiten) habe ich kXML 2 gefunden. kXML ist ein freier XML Pull Parser, der eine besondere Variante, den kXML-Mini, bietet. Diese für Handhelds ausgelegte Version besteht aus ganzen zwei Klassen und ist frei erhältlich.

Für kleinere und gekapselte Projekte, die auf den Komfort von XML nicht verzichten wollen eine sehr gute Lösung.