jump to article
...intermittent thoughts

Lesson learned

Manchmal muss man sich einfach nur eine Notiz machen, und das Leben wäre viel einfacher...

Seit einige Wochen hatte ich Problem mit meiner lokalen Entwicklungsumgebung. Da ich gerade einen Vortrag vorbereite war es nun an der Zeit, diese Probleme zu lösen. Also habe ich gestern einmal den kompletten Server neu installiert - naja, eigentlich keine wirklich schwere Arbeit, aber irgendwie scheue ich mich schon immer vor solchen Schritten. Dummerweise half dies auch rein gar nichts. Also habe ich ein Versions Downgrade gemacht - ich war nun fast sicher, dass ich ein Problem mit der aktuellsten Version habe und wollte auf die Version zurück, die wir auch produktiv einsetzen. Als ich mit dieser Aktion durch war, hatte ich eigentlich erwartet, ein perfekt funktionierendes System zu sehen. Weit gefehlt! Das Aussehen der generierten Seiten war noch genauso schrecklich wie vorher - und ich ziemlich ratlos.

Da nun aber des Problem definitiv nicht an der Server-Version liegen konnte, wusste ich wenigstens, dass ich noch einmal sehr genau nach eigenen Fehlern suchen musste. Nach einem kompletten Durchsuchen aller HTTP-Einstellungen blieb mir nur noch, ein und dieselbe Seite auf einem Produktivserver aufzurufen, danach lokal aufzurufen, und den HTML-Code zu vergleichen. Bei mehr als 100kB Quellcode bei den betroffenen Seiten eine Sache, die ich eigentlich um alles in der Welt vermeiden wollte. Wenn ich nur gleich an das absolut augenfällige gedacht hätte!

Beide Seiten unterschieden sich praktisch nur durch eine einzige Zeile, die erste:

auf dem Produktiv-System:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

auf dem Test-System:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


Und schon war alles klar: Durch die unterschiedliche DTD-Angabe schaltet der Browser in den So genannten Standard Compliance Mode - dummerweise reagiert der Browser dann eben komplett anders auf die angaben im Quellcode. Neben diversen unterscheiden in der Darstellung des Box-Modells werden aber auch CSS-Klassen case-sensistiv und das ist bei Seiten die CSS exzessiv nutzen eben ein Problem.

Als ich diese Zeile gefunden hatte, war mir auch schon klar, woran es genau lag. In der Notes.ini des lokalen Entwicklungssystems hatte ich einen einzelnen Eintrag hinzugefügt:

DominoCompleteDoctype=1

Was eben genau die Umschaltung der Angabe auf die loose.dtd erzwingt. Der Quellcode der Seite wird aber dadurch keineswegs sauberer. Das eigentlich dumme daran war eigentlich nur, dass ich diese Zeile Testweise in die Notes.ini eingefügt hatte, keinen Kommentar hinzugefügt hatte und dann komplett vergessen hatte, was und warum ich es gemacht hatte.

Ergo: never change a rare setting without a comment!

Party Pictures

Image:Party Pictures