My Book World Edition

Ich nutze ja schon seit einiger Zeit das Western Digital My Book World Edition als NAS.
Heute wollte ich herausfinden, ob es Wake-On-Lan (WOL) unterstützt.

Dabei bin ich auf diese Seite hier gestoßen, die viele Erweiterungen für das MBWE bietet. Sehr zu empfehlen, vor allem die Backup-Strategien. Ich werde sie mir wohl im Urlaub mal genauer anschauen und entsprechend umsetzen.

PS: WOL wird im Moment nicht unterstützt, soll aber zukünftig kommen, schreibt zumindest der WDTony.

Webseite in diversen Versionen testen

Vor einigen Tagen wollte ich eine Webseite in einer älteren Version vom IE testen. Dies stellte sich allerdings schwieriger raus als gedacht. Auf meinem Rechner (dienstlich) läuft Windows Server 2003 mit dem Internet Explorer 8, testen musste ich die Seite aber im IE7. Nun hat man folgende Optionen zur Auswahl:

BrowserShots und ähnliches:
Diese Seiten haben den Vorteil, eine Vielzahl an Browsern in den unterschiedlichsten Versionen abzudecken. Sind nur leider vorrangig für visuelle Tests gedacht. Da es in meinem Test rein um JavaScriptfunktionalität ging, war es leider ungeeignet. Da man zudem nur eine URL angeben kann, schied diese Option auch aus, da die Testversion der Seite nur auf meinem lokalen Rechner lief.

Internet Explorer 7 Standalone installieren:
Es gibt im Netz einige Installer, die einen vollwerten Internet Explorer 7 auf dem Rechner versprechen. Meine Erfahrungen waren leider nicht so gut, mal abgesehen, dass „meine“ Version nur Fehlermeldungen verursacht hat, sie hat auch dafür gesorgt, dass ich meine Favoriten nicht mehr im 8er Client öffnen konnte. Erst eine Deinstallation des 7er Clients, die Deinstallation des 8er Clients sowie anschließende Neuinstallation des 8er Clients haben mein System wieder in den Ursprungszustand versetzt. Absolut nicht akzeptabel.

Virtuelle Maschinen:
Microsoft bietet bereits fertig konfigurierte virtuelle Maschinen, diverse Windows Version mit unterschiedlichen Versionen des Internet Explorers. Die Windows Versionen sind nur eine begrenzte Zeit lauffähig, daher ist keine Lizenz notwendig.

IETester
Ein kleines aber feines Programm. Es simuliert alle IE Versionen seit der Version 5.5. Sogar die aktuelle 10er Preview (sofern man es installiert hat).

Für mich hat sich das letzte Tool bewährt, zumindest für meine kleinen Funktionstests, ob ich separate Fallbacks für Javascript-Funktionen benötige.

(ich bezog mich nur auf den IE, da man sonst eigentlich alle Browser separat installieren kann, der IE ist dafür allerdings zu stark im System verankert, gerade bei Windows 2003)

Tipp: StringReader und StringWriter

Ein kleiner Tipp für die Leute, die .NET Version 3.5 oder höher einsetzen:

Wer Text an Methoden / Klassen weitergeben will, die mit Streams arbeiten, sollte dies nicht umständlich über den MemoryStream lösen, sondern sich lieber mal die beiden Klassen StringReader und StringWriter anschauen. Geht deutlich einfacher und man braucht nicht umständlich mit irgendwelchen Encodings / Bytes / Stream-Positionen rumspielen.

XSLT Transformation in C#

Ich hatte ein recht umfangreiches Xml-Schema. Dieses wird ständig mal erweitert und eine andere Applikation benötigt nur einen Teil dieses Schemas. Dazu wurde es immer von Hand für die andere Applikation geändert. Um mir das Leben einfacher zu machen, wollte ich dies über eine XSLT-Transformation lösen, schließlich ist ein Schema auch nur eine XML-Datei. Ein großer Teil wurde einfach nur kopiert, dennoch sah die Ausgabe anders aus als die Eingabe. Mein Kopiertemplate sah folgendermaßen aus:

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
    <xsl:output method="xml" indent="yes"/>
    <xsl:template match="@* | node()">
        <xsl:copy>
            <xsl:apply-templates select="@* | node()"/>
        </xsl:copy>
    </xsl:template>
</xsl:stylesheet>

Einfach alle Nodes und Attribute kopieren, also nichts wildes. Dennoch wurde aus:

<xs:element name="comment" type="xs:string" minOccurs="0" />

folgendes:

<xs:element name="comment" type="xs:string" minOccurs="0"></xs:element>

Das Schema ist noch valide und funktioniert tadellos, nur sieht es nicht wirklich schön aus. Nachdem ich im Netz nach einen bestimmten Parameter im C#-Code und ähnliches gesucht hatte, wurde ich doch noch fündig. Das .NET-Framework bietet zwei verschiedene Methoden zur Transformation.
XslTransform und XslCompiledTransform. Der Kommentar in der MSDN sagt eigentlich alles:

Die XslCompiledTransform-Klasse ist ein XSLT-Prozessor, der die XSLT 1.0 Syntax unterstützt. Dies ist eine neue Implementierung, die im Vergleich zur veralteten XslTransform-Klasse die Leistung verbessert. Die Struktur der XslCompiledTransform-Klasse ist der XslTransform-Klasse sehr ähnlich.

Nebenbei werden auch noch das ShortEndTag unterstützt, womit mein Problem gelöst wäre. Der Vollständigkeit halber sollte noch auf diesen Blogeintrag hingewiesen werden: XslCompiledTransform Slower than XslTransform?, denn auch noch die veraltete XslTransform-Klasse scheint noch ihre Daseinsberechtigung zu haben.

WiiMC – Steuerung

Falls noch wer WiiMC nutzt, der sollte sich mal die Dokumentationsseite ansehen. Dort ist schön aufgelistet, welche Knöpfe auf der WiiMote welche Bedeutung haben, grade im Videomodus. Habe mir den wichtigen Teil ausgedruckt und liegt nun unterm Tisch, so kann ich im Film zum Beispiel zwischen den Sprachen hin- und herschalten.