Jan 31
Am Freitag hatte ich noch ein JavaScript-Problem, das ich leider nicht mehr lösen konnte. Das Problem trat im Zusammenspiel der Multibox (einer Lightbox für verschiedene Inhalte auf MooTools-Basis) mit einem per AJAX geladenen Link auf. Multibox erweitert alle Links mit einer bestimmten CSS-Klasse durch ein onClick-Event, das ein Overlay über die Seite legt, in dem der verlinkte Inhalt angezeigt wird. Dies ist eigentlich auch eine ganz smarte Lösung, denn so erhalten Nutzer, die kein JavaScript (aktiviert) haben, den Inhalt als normalen Link. Allerdings wird mein Link zum Inhalt dynamisch per AJAX geladen. Daher hat das Multibox-Skript gar keine Chance, diesen Link onDOMReady zu kennen.
Mein Lösungsansatz war, einfach in der Verarbeitung des AJAX-Ergebnisses per JavaScript ein neues a-Element zu erstellen und in dem ohnehin schon auf der Seite vorhandenen Multibox-Element hinzuzufügen. Der Ansatz funktioniert auch tadellos im Firefox - leider nicht im Internet Explorer (Object doesn’t support this property or method).
Wenigstens wusste ich schon, an welcher Stelle der Fehler lag. Daher konnte ich das Problem (vereinfacht) nachstellen und heute auch aufspüren: Die von MooTools bereitgestellten Methoden setProperty und getProperty funktionieren im Internet Explorer nur bei Elementen, die bereits im ursprünglich an den Browser ausgelieferten HTML vorhanden sind, nicht bei nachträglich hinzugefügten Elementen.
Nehmen wir folgende (einfache) HTML-Seite:
-
<html>
-
<head>
-
<title>Test-Script</title>
-
<script type="text/javascript" src="js/mootools.v1.1.js"></script>
-
</head>
-
<body>
-
<div id="inDOM" style="border:4px solid #004000; background: #80FF00; width: 600px;">This is just a Test-DIV with the ID <em>inDOM</em></div>
-
<a href="#" onclick="doTest();">Test Me</a><br />
-
</body>
-
</html>
Weiterlesen »
Jan 29
Wenn ich nun schon motiviert bin, mich mit der PowerShell auseinander zu setzen, will ich natürlich auch gleich weiter machen. Aber es ist wie so oft, wenn man etwas neues lernt - auch wenn die einführenden Beispiele einleuchtend und einfach sind, hat man sie nach einem langen Arbeitstag schon wieder zum Teil vergessen.
Da ich mich kenne, weiß ich, dass ich viel besser lerne, wenn ich die Übung nicht nur mache sondern auch dokumentiere. Dazu werde ich nun einfach das Blog verwenden 
Weiterlesen »
Jan 29
Wie gesagt beschäftige ich mich gerade wenn etwas Zeit ist mit der Windows PowerShell. Einen ganz schönen Einsteiger-Workshop gibt es von Frank Koch, den ich gerade durcharbeite. Ein erstes kleines Skript ist dabei auch schon heraus gekommen - eine HTML-Seite mit den Windows-Services, sortiert nach Status (stopped oder running) und entsprechend dem Status farblich hinterlegt:
[UPDATE: Da das Syntax-Highlighting leider die Darstellung im Internet Explorer versaut, habe ich das kleine Skript erstmal entfernt. Wer sich dafür interessiert, findet es in dem Workshop von Frank Koch]
Sicherlich noch nicht die Monster-Anwendung, aber ich finde es schon ziemlich cool - und bin sehr gespannt, was die PowerShell noch so alles kann.
Jan 28
Gestern ist er also erschienen, der erste Release Candidate vom neuen Internet Explorer 8 (Meldung bei heise.de, golem.de). Download und Installation gehen recht fix, allerdings mit typischen Windows-Neustart. Der erste kleine Schock dann beim Einrichten:

Screenshot der IE8 "Vorgeschlagenen Sites"
Der Browser möchte mich auf Websites hinweisen, die mich auch interessieren könnten - basierend auf meinem Besuchsverlauf. Da muss ich doch glatt sagen - danke, ich verzichte.
Nach der Einrichtung musste ich natürlich gleich ein paar Seiten testen. Garbage-Collector.net sieht so aus, wie es soll:

Screenshot von Garbage-Collector.net im IE8
Auch “meine” anderen Webseiten - die beruflichen - laufen grundsätzlich, trotzdem sind mir schon ein paar kleinere (und hoffentlich schnell und einfach zu fixende) Layout-Bugs aufgefallen.
Einen ersten Blick auf die Entwicklertools (zu finden unter “Extras” oder mit der F12-Taste) habe ich auch geworfen - sehen gut aus. Die Entwicklung wird damit sicherlich ein gutes Stück vereinfacht.
Jan 25
Um mittels NaturalDocs automatisch eine Dokumentation zu erstellen, muss auf der Kommandozeile eine ganze Latte an Argumenten übergeben werden: Das Verzeichnis, in dem der zu dokumentierende Quelltext steht, das Ausgabeverzeichnis für die Doku und ein Verzeichnis für die Konfiguration. Praktisch sieht ein Aufruf von NaturalDocs bei mir ungefähr so aus:
F:\Software\NaturalDoc\NaturalDocs.bat -i c:\xampp\htdocs\meinProjekt -o HTML c:\xampp\htdocs\meinProjekt\_dokumentation\output -p c:\xampp\htdocs\meinProjekt\_dokumentation\config -cs UTF-8
So einen Aufruf automatisiert man doch. Also mal schnell eine kleine .bat-Datei geschrieben - und dabei festgestellt, dass ich a) die Syntax gar nicht mehr drauf habe (unter DOS habe ich regelmäßig Batch-Dateien geschrieben) und b) die guten alten .bat-Dateien sowas von beschränkt sind…
Daher habe ich mir die Windows PowerShell 1.0 herunter geladen. Startet man die PowerShell, sieht sie auf den ersten Blick genau so aus, wie die gute alte cmd.exe in blau. Aber davon darf man sich nicht täuschen lassen - das Teil ist mächtig. Richtig mächtig.
Die integrierte Skriptsprache hat erstmal alle Basics an Bord - arithmetische Operationen, reguläre Ausdrücke, Schleifen, Fallunterscheidungen, … Wem das nicht reicht, kann immer noch analog zu WSH-Skripten sämtliche COM- und ActiveX-Objekte nutzen. Und wenn man dort an die Grenzen stößt - es stehen auch alle Klassen und Funktionen des .NET-Frameworks zur Verfügung. Es dürfte sich eigentlich keine Automatisierung finden, die nicht mittels Windows PowerShell gelöst werden könnte.
Ich werde mich jedenfalls mal so richtig intensiv mit der Shell beschäftigen. Ergebnisse hier
Jan 25
Heute habe ich mich mal auf die Suche nach einem Software-Dokumentationswerkzeug gemacht, das aus Quellcodekommentaren automatisch eine Dokumentation erstellt. Da ich verschiedene Sprachen zum Entwickeln verwende (angefangen beim guten alten PHP bis hin zu den ersten Gehversuchen in C#) wäre ein Tool, das verschiedene Programmiersprachen unterstützt, sehr willkommen.
Gefunden habe ich zwei Kandidaten: Doxygen und Natural Docs. Hängen geblieben bin ich bei Natural Docs, das auf die sonst üblichen, von JavaDoc bekannten Dokumentationsdirektiven (@author etc) verzichtet und eher auf “natürliche” Sprache setzt:
-
/*
-
Function: Multiply
-
-
Multiplies two integers.
-
-
Parameters:
-
-
x - The first integer.
-
y - The second integer.
-
-
Returns:
-
-
The two integers multiplied together.
-
-
See Also:
-
-
<Divide>
-
*/
-
int Multiply (int x, int y)
-
{ return x * y; };
Mal schauen, wie es sich in der Praxis schlägt
Jan 21
Seit dem 1. Januar 2009 bietet der Karlsruher Verkehrsverbund (KVV) eine “freiwillige Mobilitätsgarantie” an, die bei genauerer Betrachtung eigentlich ein (schlechter) Witz ist:
- Sie gilt nur im Karlsruher Stadtgebiet
- Sie gilt erst ab einer Verspätung von 20 Minuten
- Sie gilt nicht bei “Verzögerungen, die beispielsweise durch Falschparker, Unfälle, Streiks, Unwetter oder andere von den VBK nicht beeinflussbare Ereignisse verursacht werden“
- Sie wird nur nach Einsendung oder Abgabe eines Garantieschecks spätestens 14 Tage nach dem “Vorfall” gewährt
Heute wurde meine Bahn ab dem Durlacher Tor über den Betriebshof umgeleitet. Nähere Informationen gab es nicht, aber ich vermute einfach mal, dass auf der Strecke zwischen Durlacher Tor und Tullastraße eine andere Bahn mal wieder einen Schuss gebaut hat - was dann ein Unfall wäre, der nicht von der Garantie abgedeckt wäre.
Trotzdem habe ich mir das Formular herunter geladen, ausgefüllt und werde es morgen im Kundenzentrum am Europaplatz abgeben. Mal schauen, ob sich die Verkehrsbetriebe herablassen, mir 5 € zu überweisen oder die Schuld von sich schieben.
(Witziges Detail am Rande: Eigentlich muss man die verwendete Fahrkarte als Original oder Kopie befügen; bei Abo-Inhabern reicht gnädigerweise auch die Abo-Nummer. Leider ist die einzige Nummer auf meiner Jahres-Abo-Karte zwei Ziffern länger als das vorgesehene Feld und enthält keinen Bindestrich. Ich kann mir gut vorstellen, dass deswegen die Zahlung verweigert wird - vielleicht darf ich ja sogar 60 € zahlen, da ich ohne gültigen Fahrausweis unterwegs war? Zuzutrauen wäre es dem KVV…)