Logfiles lesen mit Vim Mon, May 10. 2010
Um Änderungen an Live Logfiles in Vim mitzubekommen, hilft das Plugin TailBundle (:TabTail theLog.file), welches Änderungen an Dateien auf Wunsch (Ctrl-K) oder automatisch wieder einliest (siehe :tabh updatetime).
Für das Suchen in Logfiles empfiehlt es sich das farbliche Markieren von Suchergebnissen mit :set hlsearch einzuschalten. Mit :nohlsearch lassen sich die aktuellen Markierungen entfernen, mit :set nohlsearch lässt sich das Markieren wieder ganz abschalten. Noch angenehmer geht das mit dem MultipleSearch-Plugin (:Search PATTERN), mit welchem mehrere Suchergebnisse unterschiedlich farblich markiert werden können. Es war einmal und ist nicht mehr... Wed, Mar 17. 2010
Meine rxvt-unicode / urxvt Konfiguration Thu, Mar 19. 2009

Auf der Suche nach einem Terminal Emulator mit Unicode Support, vernünftigem Font-Handling, der sparsam mit Ressourcen umgeht, aber dennoch Schmankerl wie Tabs, transparente Fenster oder URL-Recognition bietet, bin ich vor Jahren bei rxvt-unicode (urxvt) gelandet und seitdem wirklich glücklich.
Download: Meine ~/.Xresources Konfiguration
Budapest - Silvester 2009 Sun, Jan 4. 2009
Nachdem wir letztes Silvester in München verbracht haben, zog es uns dieses Jahr für vier Tage nach Budapest. Eine wirklich schöne Stadt, deren Erkundung mir wohl auch aufgrund eigenartiger Servicekräfte und dem schweinekalten Wetter noch länger in Erinnerung bleiben wird.
Tipp an andere Netbook-Reisende: Das Cafe Angelika bietet freundliche Bedienung bei angenehmen Ambiente, leckere Kuchen und freien WLAN Zugang.

jetty: ISO-8859-1 == UTF-8 Tue, Aug 26. 2008
jetty-6.1.11/modules/util/src/main/java/org/mortbay/util/UrlEncoded.java:Danke, keine weiteren Fragen Eurer Ehren! Zum Vergleich die korrigierte Version von decodeTo in der aktuellen SVN HEAD Revision:
405 / -------------------------------------------------------------- /
406 /** Decoded parameters to Map.
407 @param in the stream containing the encoded parameters
408 */
409 public static void decodeTo(InputStream in, MultiMap map, String charset, int maxLength)
410 throws IOException
411 {
412 if (charset==null || StringUtil.__UTF8.equalsIgnoreCase(charset) || StringUtil.__ISO_8859_1.equalsIgnoreCase(charset))
413 {
414 decodeUtf8To(in,map,maxLength);
415 return;
416 }
417
418 if (StringUtil.__UTF16.equalsIgnoreCase(charset)) // Should be all 2 byte encodings
419 {
420 decodeUtf16To(in,map,maxLength);
421 return;
422 }
/ -------------------------------------------------------------- /
/** Decoded parameters to Map.
@param in the stream containing the encoded parameters
*/
public static void decodeTo(InputStream in, MultiMap map, String charset, int maxLength)
throws IOException
{
if (charset==null || StringUtil.__ISO_8859_1.equals(charset))
{
decode88591To(in,map,maxLength);
return;
}
if (StringUtil.__UTF8.equalsIgnoreCase(charset))
{
decodeUtf8To(in,map,maxLength);
return;
}
if (StringUtil.__UTF16.equalsIgnoreCase(charset)) // Should be all 2 byte encodings
{
decodeUtf16To(in,map,maxLength);
return;
}
ppk on JavaScript Sun, Jun 8. 2008
ppk on JavaScript - Modern, accessible, unobtrusive JavaScript explained by means of eight real-world example scripts, Peter-Paul Koch, 2007, 500 Seiten, newriders.com, ISBN: 0-321-42330-5.Peter-Paul Koch (ppk), kannte ich vor allem aufgrund seiner tollen W3C DOM Kombatibilitätstests. Als Leser hat er mich allerdings durch die online verfügbare Einführung seines Buches geködert, dort heißt es:
Obviously, I cannot teach you to use a tool that I myself don't understand. Therefore this book only treats those language features I work with. Object-oriented JavaScript, for instance, is conspicuously absent because I've never seen the need to use it.Äh, wie jetzt? Ein JavaScript Guru der nichts von OO hält? Ähm? Pff, interesting. JavaScript Bücher sprießen zur Zeit (wieder) wie Pilze aus dem Boden, der Konkurrenz hält ppk seine Erfahrungen an "richtigen" Projekten entgegen:
Where other books teach JavaScript using sample scripts that have little value in professional practice, ppk on JavaScript takes you inside eight real-world scripts created for actual, paying clients.Auch das hört sich zunächst recht gut an. Auf die Beispielskripte sollte man vorher unbedingt einen Blick werfen, denn als Ganzes sieht man diese im Buch leider nie wieder.
Wer wie ich Besitzer eines frühen Erstdrucks ist, der darf sich über eine Sammelausgabe freuen oder besser gesagt, wird sich über eine solche ärgern. Denn aufgrund eines Druckfehlers wurde aus dem geplanten "blue book of JavaScript" ein graues - wodurch mitunter die Lesbarkeit der Code-Beispiele leidet.
Inhalt: (detailliert)
- Purpose
- Context
- Browsers
- Preparation
- Core
- BOM
- Events
- DOM
- CSS modification
- Data retrieval
[Form Validation, lines 80-98, condensed heavily]
// els[i] is the form field currently being investigated
var req = els[i].getAttribute('validation');
var reqs = req.split(' ');
for (var j=0;j<reqs.length;j++) {
// run check
}
Für mich bieten solche Beispiele keinen essentiellen Mehrwert zu:
var text = "Hier steht eine Zeichenkette.";
var splitted_string_array = text.split(' ');
Im Gegenteil - erzwingen sie doch oft unnötige Kontextswitches für den Leser. Die Beispielskripte selbst werden nicht mit ihrem Kontext als Ganzes besprochen, sondern dienen vielmehr als praktische Veranschauung für gerade behandelte Eigenschaften, Methoden oder Konzepte. Ein Beispiel zu appendChild() aus Kapitel 8D auf Seite 368:
I use appendChild() many times in the example scripts. Take, for instance, this function from Sandwich Picker:
[Sandwich Picker, lines 184-186]
function addExtraButton() {
document.getElementById('extraButtonTarget').appendChild(extraButton);
}Bedingt durch diese Vorgehensweise wirkt auch der Aufbau der Inhalte nicht sehr durchdacht. Die Beispiele in den ersten Kapitel machen reichlich Gebrauch von Methoden oder Konzepten, die erst viel später erklärt werden. Mich störte auch die Art der informellen Einführung von neuen Inhalten; anstelle von Methoden-Signaturen findet man konkrete Anwendungsfälle und oft langatmige Erklärungen, ein Beispiel dazu (aus Kapitel 9A, Seite 424):
W3C's solution is the window.getComputedStyle() method, which works similarly but with a more complicated syntax:
var x = document.getElementById('test');
alert(window.getComputedStyle(x, null).color);[...]
Wofür das zweite Argument von getComputedStyle() steht, warum es null ist, bleibt unbeantwortet. Als Entwickler erwarte ich vollständige Signaturen. Letztendlich musste ich im Laufe meiner Leseerfahrung mit dem Buch immer wieder mit mir ringen, überhaupt noch weiter zu lesen. Zu den Stärken hingegen zählen die vielen Hinweise zu Browser-Inkompatibilitäten und Neulinge werden die ausführlichen Erklärungen (recht toll ist z. B. das Kaptel 7 über Events) zu schätzen wissen.
Zum Thema Exceptions noch ein Gustostückerl:
I am not a big fan of try/catch statements, since I don't like executing code that may cause an error.
Wien wartet auf Dich! Fri, May 30. 2008
Wien wartet auf Dich! - Der Faktor Mensch im DV-Management, Tom DeMarco und Timothy Lister, 1999 (2. Auflage), 267 Seiten, hanser.de, ISBN: 3-446-21277-9.
Was sich Übersetzer und Verlag bei der Wahl des Titels gedacht haben? Ich weiß es nicht. Vienna von Billy Joel ist zweifelsohne ein toller Song, aber auch mit dem Hintergrund dass man das Buch kennt, nur wenig passend für einen Ratgeber zur Projekt- und Teamführung.
1987 erschien die erste Auflage des in der Zwischenzeit zum Standardwerk für IT-Projekte aufgestiegenen Management-Bestellers von DeMarco und Lister: "Peopleware - Productive Projects and Teams". Zwölf Jahre später folgte die zweite Auflage mit acht zusätzlichen Kapitel und einigen wenigen Korrekturen. Die meisten der genannten Studien und Beispiele stammen deshalb aus den 80igern; COBOL ist noch in aller Munde und das Umfeld in vielen amerikanischen Arbeitsstätten von Entwicklern gleicht einem Dilbertschen Albtraum.
Seit dem hat sich einiges getan, doch das Wichtigste bei Software Projekten hat sich nicht verändert: Es kommt immer noch auf die Personen an. Im Mittelpunkt des Buches steht deshalb die Rolle des Managers: Wie ermöglicht man es den Mitarbeitern ihre Arbeit zu machen und nicht, wie man Mitarbeiter dazu bringt zu arbeiten.
Die größten Probleme bei unserer Arbeit sind keine technologischen Probleme, sondern soziologische Probleme.
Zum Inhalt:
- Teil I: Menschen führen
- Teil II: Die Büroumgebung
- Teil III: Die richtigen Personen
- Teil IV: Produktive Teams formen
- Teil V: Die Arbeit hier soll Spaß machen
- Teil VI: Wien wartet noch immer
Es gibt Tausende von Möglichkeiten, einen Arbeitstag zu verlieren, aber keine einzige, um einen Tag zurückzubekommen.Auf den Leser warten insgesamt 34 kurze Kapitel in denen die Autoren in einem lockeren, unterhaltsamen Stil viele Anekdoten und Erfahrungen aus ihrem Consulting-Alltag mit praktischen Ratschlägen gepaart zum Besten geben. Schwächen in der Übersetzung sind vorhanden, halten sich jedoch im Rahmen.
Ich musste während des Lesens immer wieder zustimmend nicken; aus Sicht eines Entwicklers klingt vieles selbstverständlich und einleuchtend. Doch einige Manager bzw. Unternehmen sehen ihre Mitarbeiter scheinbar eher als Zuchthühner die zu funktionieren haben. Als lästige Notwendigkeiten, deren Aufgaben darin bestehen ihren Vorgesetzten in endlosen Meetings untertänig Tribut zu zollen und sich irgendwie (wozu gibt es schließlich Wochenenden?) an die vorgegebenen Deadlines zu halten. Solche (zugegebenermaßen überzeichneten) Unternehmen verbrennen ihre Arbeitskräfte förmlich.
Die Wichtigkeit der Rolle des Managers bei Software Projekten wird jedoch auch von uns Entwicklern oft übersehen. Am besten überlegt man sich noch vor Annahme eines Angebotes, ob der Manager smart genug ist, um von ihm noch etwas zu lernen und die nötige Unterstützung zu erhalten. Wenn er Peopleware gelesen hat, ist das schon mal ein gutes Zeichen.
Die schwerste Sünde, die ein Manager begehen kann, ist es, die Zeit seiner Mitarbeiter zu verschwenden.
Bulletproof Ajax Thu, Apr 3. 2008
Bulletproof Ajax, Jeremy Keith, 2007, newriders.com, ISBN: 0-321-47266-7.There are plenty of books out there aimed at server-side programmers who want to learn about Ajax. This isn't one of them.
Nach dem gelungenen Erstlingswerk (DOM Scripting) von Jeremy Keith habe ich mir auch den Nachfolger, Bulletproof Ajax, angesehen.Als Fortsetzung zu DOM Scripting angelegt, wartet auf den Leser neben Neuem auch Altbekanntes. Kapitel 2 etwa, über "JavaScript and the Document Object Model" ist eine solche Wiederholung. Da bleibt bei 207 Seiten, großen Schriften (angenehm empfand ich die farbliche Gestaltung) und großen Randbereichen für fortgeschrittenen Tiefgang wenig Platz. Dass darf man sich auch nicht erwarten, denn diese überaus gelungene Einführung in Ajax richtet primär an "Front-end Web Designer".
Nachdem geklärt wurde was man sich unter Ajax vorstellen darf, der Kurzfassung von DOM Scripting, geht es in den Kapitel 3 und 4 mit der Vorstellung von
XMLHttpRequest und XML, JSON und HTML ans Eingefleischte.In the buzzword-filled world of Web design, it was almost inevitable that the name Ajax would show up sooner or later.Die folgenden Blöcke drehen sich um Hijax, Jeremys Begriff für Ajax-Webapplikationen die nicht auf Progressive Enhancement und Unobtrusive JavaScript vergessen, Herausforderungen im Ajax-Zeitalter, und Accessibility.
In Kapitel 8 wird das bisher Besprochene zu einem großen Ganzen, einem Webshop, zusammengefügt. Anhand dessen Online-Demonstration kann man sich recht gut ein Bild vom Umfang der besprochen Inhalte machen.
Zum Schluss erwähnt Jeremy noch kurz die üblichen Verdächtigen unter den JavaScript Libraries und gibt Tipps zur Wahl einer solchen.
Ajax is a cool technology, but that's not a good reason to use it. Ajax can improve usability: that's a much better reason to use it.
Web Standards Solutions Wed, Apr 2. 2008
Web Standards Solutions - The Markup and Style Handbook, Dan Cederholm, 2004, friendsofed.com, ISBN: 1-59059-381-2. 
Dan Cederholms Markup and Style Handbook zeigt Lesern, die über grundlegende XHTML und CSS Kenntnisse verfügen sollten, wie sich alltägliche Web Design Probleme schnell und einfach mit Web Standards lösen lassen.
Der Inhalt des 253 Seiten starken Buches verteilt sich in zwei Teilen auf 16 Kapitel (Markup-Teil: Lists; Headings; Tables Are Evil?; Quotations; Forms; <strong>, <em>, and Other Phrase Elements; Anchors; More Lists; Minimizing Markup, CSS-Teil: Applying CSS; Print Styles; CSS Layouts; Styling Text; Image Replacement; Styling <body>; Next Steps) in denen ein breites Spektrum an Alltäglichen und Nützlichen behandelt wird. Cederholms lockerer Stil gefällt mir ebenso, wie der Aufbau des Buches.
Kapitel beginnen mit der Vorstellung eines konkreten Problems, anschließend werden jeweils mehrere Lösungsvarianten vorgestellt und deren Vor- bzw. Nachteile besprochen. Es folgt eine Zusammenfassung und ein Extra Credit Abschnitt, in dem das Besprochene ein wenig vertieft wird. Die Beispiele sind einfach und nachvollziehbar, die Sprache ist klar und die Bebilderung unterstützt Cederholms Vorstellung von sauberem Markup und richtiger Semantik optimal.
Dem CSS Veteran bietet das Buch nichts Neues, aber für weniger Webstandards versierte Leser oder "Old-School Tabellen-Junkies" ist es ein wahrer Augenöffner der noch nichts von seiner Aktualität eingebüßt hat.
P.S.: Von Dan Cederholm gibt es auch ein aktuelleres, ähnliches Buch: "Bulletproof Web Design", mehr dazu später.
Test-Driven Development by Example Fri, Mar 21. 2008
Test-Driven Development - By Example, Kent Beck, 2003, awprofessional.com, ISBN: 0-321-14653-0."Code that isn't tested doesn't work."

Die Grundidee ist simpel: Write a test. Make it run. Make it right. Befolgt man dieses Rezept, so erhält man zum Dank dafür "realiable bug-free code no matter what it's level of complexity": Software die tut was sie soll, deren Design glänzt und eine umfassende und aktualisierte Testssuite obendrein. Oder so.
PART I: The Money Example
PART II: The xUnit Example
PART III: Patterns for Test-Driven Development
In den ersten beiden Teilen zeigt Beck anhand zweier kleiner Beispiele wie TDD in der Praxis aussehen kann. Zunächst entsteht ein Währungsrechner in Java: Er wird getestet, entwickelt, verbessert und irgendwann ist er da. Beck stellt sich seine Leser jedoch ein wenig sonderbar vor: Einerseits sollten diese von TDD noch nicht viel gehört haben, anderseits aber mit JUnit vertraut sein, denn eine Einführung in das Testing Framework gibt es nicht. Dieses Detail der praktischen Umsetzung bleibt den Lesern überlassen. Erst später, im Laufe des zweiten - hier entsteht ein xUnit Framework in Python - und dritten Teiles, fallen einige wenige (allgemeine) Worte dazu.
Die Beispiele illustrieren vor allem (auch) den Entwicklungsprozess hinter testgetriebener Entwicklung; wobei die Schritte vielerorts imho doch ein wenig zu atomar ausfallen.
"Clean code that works is out of the reach of even the best programmers some of the time, and out of the reach of most programmers (like me) most of the time."Der Dritte Teil ist für mich der Grund, warum das Buch gerade noch so die Kurve kratzt. Hier bietet Beck einen bunten Eintopf aus Patterns, Tipps und Erfahrungen zu TDD.
Doch diese interessante Einblicke alleine reichen mir nicht für eine klare Empfehlung, auch weil ich Becks Stil mit den vielen gekünstelten Schmäheinlagen und Kommentaren zu Gott und die Welt eher lästig als unterhaltsam fand.
"Failure is progress."
Kostenloses eBook von Hanser Mon, Mar 3. 2008
Ohne zum Inhalt konkret etwas sagen zu können, hat mich HANSER insofern schon mal positiv überrascht, als dem Buch eine kostenlose eBook-Version beiliegt. Seit Jahren ärgere ich mich darüber, dass das nicht eine völlige Selbstverständlichkeit unter den Verlagen ist. Immerhin kosten deren qualitativ durchwachsenen Bücher (übliche Preisspanne: 30,- bis 80,- EUR) eine Menge und werden oft schon nach wenigen Wochen durch eine Neuauflage obsolet. Doch die haben scheinbar anderes zu tun. Wie etwa über den Absatz von DRM kaputtisierten eBooks zu jammern, die gerade mal lächerliche 5,- bis 10,- EUR weniger als die jeweiligen Printausgaben kosten. Mich wundert es jedenfalls nicht, wenn sich "alternative eBook-Ausgaben" der Bücher im Netz verbreiten. Irgendwie scheinen Medienanbieter allgemein ein wenig lange zu brauchen um zu begreifen, dass Kundenverarsche auf Dauer einfach nicht funktioniert.Abzüge in der A-Note gibts allerdings ganz klar für den Zwang sich Adobe Digital Editions zur Nutzung antun zu müssen, aber ein Schritt in die richtige Richtung ist die Beigabe allemal.
Wo wir schon mal dabei sind: Wenn ein Buch wie beispielsweise »UNIX Filesystems« bei Amazon.com für 29.70,- USD (~ 19.55,- EUR) zu haben ist, während Amazon.de hierzulande 54.99,- EUR für selbiges veranschlagt, dann fühle ich als Kunde mich durchaus "irritiert".
Firefox Extension: It's All Text Mon, Mar 3. 2008
Für einen Bericht mache ich mich in den nächsten Wochen, kurz vor dem Release von Firefox 3, noch auf die Suche nach den nützlichsten Firefox 2 Extensions. Auswahl gibt es genug, addons.mozilla.org listet knapp 2000 Extensions; dafür fehlen mir noch konkrete Zielgruppen Vorstellungen. Jedenfalls will ich mit knappen Notizen hier nützliche und weniger nützliche Begegnungen festhalten, beginnend mit Erweiterungen die ich selbst einsetze.
Vorrangig für UNIX Geeks interessant, die ohnehin in ihrem Editor (Vim, Emacs, ...) leben und gerade für längere Text- oder Codeeingaben auch im Web den Komfort ihres Editors nicht missen mögen, ist It's All Text. Diese Erweiterung blendet bei Aktivierung eines <textarea>-Elements, also eines mehrzeiligen Texteingabefeldes, einen kleinen edit-Button ein, welcher einen vorkonfigurierten Editor öffnet. Nach Verlassen des Editors wird der Text automatisch in das Textarea-Feld übernommen. Schreibtest - Wörter pro Minute Tue, Jan 15. 2008
94 Wörter
Du hast 391 Punkte erreicht, damit befindest du dich auf Platz 2270 von 102164
Du schreibst 517 Zeichen pro Minute
Du hast 94 korrekt geschriebene Wörter und
Du hast 2 falsch geschriebene Wörter
Und das beim zweiten Versuch auf einer 8 Jahre alten, total abgenutzen, klebrig-klapprigen, urlauten, Tasten verschluckenden und sehr schwerfälligen Tastatur von Microsoft: Das Natural Keyboard Pro, dessen Nachfolger mich seit Jahren entäuschen, so dass ich immer noch auf dem Ding rumhämmere.
XUL Fri, Aug 31. 2007
XUL - Entwicklung von Rich Clients mit der Mozilla XML User Interface Language, Jonathan Protzenko, 2007, opensourcepress.de, ISBN: 978-3-937514-23-9.
Das gewählte Beispiel, ein Forum auf XUL Basis, finde ich zwar wenig interessant, doch Protzenko nutzt es für einen zweckdienlichen Streifzug in eine Reihe von zusammenspielenden Technologien wie CSS, DOM, DTD, JavaScript. LDAP, PHP, RDF, SOAP, SOAP, WSDL XBL, XML, XMLHttpRequest, XPCOM, XPI, XUL, ... Klingt nicht nur abschreckend, ist auch so. Protzenko übernimmt sich zudem bei dem Versuch es allen Lesern recht zu machen. [1]
Ebensowenig überzeugen mich Aufbau und Struktur seines Rundumschlags. Die Mängel die sich durch inhaltliche Lücken, zu viele Sprünge und anderseits unpassend wirkende Einschübe auftun, lassen die Vermutung hoch keimen, dass es sich hier ursprünglich um ein Uni-Projekt handelte aus dem schnell ein Einführungsbuch zu recht gepflastert werden sollte. Ein wenig stört mich auch der Versuch Protzenkos XUL als Konkurrent (!) von AJAX positionieren zu wollen.
Das 351 Seiten umfassende Buch gleicht einer Achterbahnfahrt. Auf gute Abschnitte folgt immer wieder ein Tief. So zählt Kapitel 6 ("Verbesserte Darstellung mit CSS") zu den Besseren, das darauffolgende Kapitel, eine Einführung in JavaScript ("Erste Animationen mit JavaScript"), hingegen enttäuscht wiederum wieder und glänzt eher mit Falschaussagen. [2] Statt nachlässige Einführungen in Grundlagen wie JavaScript, CSS, DOM und Co. zu riskieren, sollte sich ein Buch über XUL / Firefox Extensions da doch lieber Verweise in die entsprechende Fachliteratur erlauben und sich auf eine bessere Darstellung der Kernkonzepte konzentrieren. Auch der Code und seine Präsentation schließen sich an. Inkonsistenzen, stilistische Fragwürdigkeiten, nervige Patzer und lehrreiche Offenbarungen reihen sich aneinander. Das Bemühen dem Leser ein großes Gesamtbild zu zeichnen, kann man höchstens als unterentwickelt bezeichnen. Das Buch weist allgemein eine größere Affinität zur alten Mozilla Suite bzw. SeaMonkey auf, geht aber auch Firefox ein. Als sehr erfreulich und lehrreich empfand ich die zahlreichen Verweise auf hervorragende Online Quellen zur Vertiefung.
Bei diesem von Open Source Press verlegten Erstlingswerk von Jonathan Protzenko handelt es sich um eine Übersetzung der bereits 2005 erschienenen französischen Originalausgabe »XUL - Mozilla XPFE, XBL, XPI, CSS, JavaScript, XML, RDF, DOM, PHP 5« (ISBN: 2-212-11675-6). Das ist mir zunächst gar nicht aufgefallen, denn die Einführungskapitel überspielen beides noch: Erst später als es richtig zur Sache geht wunderte ich mich, wie ein 2007 erschienenes Buch, derart veraltet sein kann. Aufklärung brachte ein Blick in das Impressum. "Ahh, Übersetzung. 2005. Seufz.".
Die Übersetzung an sich ist durchwegs gelungen, doch mit dem Alter der Vorlage hat sich der Verlag keinen Gefallen getan. Vorallem mit Firefox 1.5 hat sich gerade hinsichtlich der Extension-Entwicklung einiges geändert. So haben beispielsweise die einfacher aufgebauten Manifest-Dateien (chrome.manifest) die vormaligen RDF-Dateien (contents.rdf) zur Registrierung einer Erweiterung im Wirtssystem abgelöst. Erst im Anhang wird auf diese Transition eingegangen; wodurch sich weite Teile des vierten Kapitels ("Eine echte Mozilla-Erweitung") zumindestens für FF Nutzer als überflüssig erweisen. Immer wieder quält man sich als Leser durch veraltete Darstellungen und ärgert sich darüber, dass hier bei der Nachbearbeitung und Übertragung nicht konsequenter eingegriffen wurde. Die fünf Anhänge betreiben Schadensbegrenzung und gehören wiederum zu den besseren Attributen des Buches:
- Firefox 1.5 und danach
- Firefox 2.0 und Änderungen an der Entwicklungsarbeit mit XUL (von Sebastian Schürmann)
- Liste der verwendeten XPCOM-Komponenten
- CSS: Syntax, Selektoren, Eigenschaften
- Referenz der grafischen XUL-Elemente
Eine deutschsprachige Errata, Codebeispiele zum Runterladen oder Weiterführendes sucht man auf der Seite des Verlages vergeblich; xulforum.org selbst bietet die Orginalquellen und weiteres Material - allerdings in Französisch.
Mein Fazit: Muss nicht sein! Zum Einen existieren hervorragende Online-Ressourcen, zum Anderen stürzen sich wieder mehr Verlage auf das Thema und bringen aktuellere Werke auf den Markt. Im April diesen Jahres erschien beispielsweise Programming Firefox im O'Reilly Verlag und im Oktober bringt entwickler.press mit Rich Clients mit Mozilla XUL einen deutschsprachigen Titel; weitere Bücher werden folgen.
[1] Das Buch richtet sich an professionelle Programmierer, Webentwickler, Designer und Anfänger. Siehe Abschnitt: "An wen wendet sich dieses Buch?", S. 16.
[2] "Nach jeder Anweisung in JavaScript steht ein Semikolon - ebenso wie in C oder Java", S. 129
DOM Scripting Tue, Aug 21. 2007
DOM Scripting - Web Design with Java Script and the Document Object Model, Jeremy Keith, 2005, friendsofed.com, ISBN: 1-59059-533-5. "You don't need to be a programmer to understand DOM Scripting. In fact, this book is aimed specifically at web designers."

Das 341 Seiten umfassende Buch beginnt mit einer kurzen pragmatischen JavaScript Einführung und widmet sich dann ausführlich der Erklärung des Document Object Models. Was ist das DOM und wozu das Ganze? Was kann man damit machen und wie kann man es machen? In den folgenden Kapitel soll der Leser anhand einer Reihe von ausführlich erklärten Praxisbeispielen ein Verständnis für die wichtigsten DOM Methoden und Eigenschaften erlangen. Schrittweise werden kleine Teilprojekte entwickelt (Bildergalerie, Elemente animieren, Inhalte mit JavaScript on the fly generieren oder verändern, Aussehen und Verhalten einer Seite dynamisch erweitern) die am Ende schließlich zu einem großen Ganzen, zu der Seite der fiktiven Band Jay Skript and the DOMSTERS, zusammengeführt werden.
Dem letzten Kapitel über die Zukunft von DOM Scripting, Webapplikationen und einer Einführung in Ajax folgt eine 16 seitige Referenz mit den wichtigsten Methoden und Eigenschaften des DOM. Den Schluss bildet ein 11 seitiger Index der zwar ganz brauchbar ist, aber dennoch eine Spur ausführlicher hätte ausfallen können. Die Referenz gibt es übrigens auch als Podbook zum Downloaden.
Jeremy achtet sehr auf den praktischen Real-World-Nutzwert seiner Beispiele. Er bemüht sich alle Anweisungen und Konzepte im Code zu erklären und auf mögliche Fragen des Lesers einzugehen. Seine ausführliche Art Code zu besprechen, tendiert ein wenig zu Wiederholungen, hat jedoch auch den Vorteil, dass der Code auch ohne Rechner nachvollziehbar bleibt.
Die einzelnen Kapitelinhalte bauen aufeinander auf und zeichnen sich zudem durch ihre Struktur aus:
- What this chapter covers
- Inhalt
- (Summary)
- What's next?
Man merkt dem Buch durchaus an, dass es von einem Autor geschrieben wurde, der nicht aus einem Informatik Umfeld kommt. Jeremy präsentiert seine Inhalte weniger formal strikt, als pragmatisch locker. Layout und Papier laden angenehm zu Randnotizen ein. Weniger toll hingegen ist, dass es zwar eine Webseite zum Buch gibt, aber der Code zum Buch nur auf der Seite des Verlages zu finden ist.
- Graceful degradation: ensuring that your web pages still work without JavaScript.
- Unobtrusive JavaScript: separating structure from behavior.
- Backwards compatibility: ensuring that older browsers don't choke on your scripts.
