Gestern ist mir ein kleines aber feines Feature in Windows 7 aufgefallen. Keine Ahnung ob es schon in Vista oder noch früheren Versionen zu finden war, ich habe es dort zumindest nie bemerkt. Zu finden ist es, wenn man in der System-Tray auf die Uhrzeit klickt:

Falls man nicht mitbekommen hat, dass die Uhren von Sommer- auf Winterzeit umgestellt wurden, und sich dann wundert, wieso Windows die Uhrzeit geändert hat, findet man einen kleinen Info-Dialog unter der Monatsansicht. Ich weiß nicht wie lange diese Info nach der Umstellung angezeigt wird, es gibt aber eine Option um diese Funktion zu deaktivieren, wenn man auf “Datum- und Uhrzeiteinstellungen ändern…” klickt.

Es hat eine ganze Weile gedauert, bis ich das herausgefunden hatte.

Ich besitze einen Canon CanoScan 4200f Flachbettscanner mit dem ich eigentlich sehr zufrieden bin. Die Qualität der Scans ist gut, die Geschwindigkeit auch und die mitgelieferte Software bietet alles was man braucht.

Wenn da nicht diese Fehlermeldung wäre, die ab einem bestimmten Zeitpunkt immer beim Scannen auftrat:

Fehlermeldung des Scanners

Toolbox neustarten, Treiber neu installieren, Toolbox neu installieren, neuere Version herunterladen, etc. Hat alles nichts genutzt. An meinem Notebook hat der Scanner auch einwandfrei funktioniert, ein Hardwareproblem war es also auch nicht. Ich hatte den Fehler auch schon früher mal bekommen, als einzige Lösung allerdings nur die Neuinstallation des Systems gefunden.

Vor ein paar Wochen trat der Fehler dann wieder auf und diesmal hatte ich genug. Nach langer Suche bin ich durch Zufall auf einen Forumsbeitrag gestoßen, der vorschlug, dass die PATH Umgebungsvariable zu lang sein könnte und der Treiber deswegen spinnt. Mein erster Gedanke war “So ein Blödsinn, was sollte denn die Variable mit dem Treiber zu tun haben?”. Aber was solls, seitdem man nicht mehr wie bei Windows XP den Rechner neustarten muss um die Änderung zu testen, kann man das ja schnell prüfen. Mein Ergebnis: Der Treiber meines Scanners hat tatsächlich ein Problem damit, wenn die PATH Variable zu lang ist! Wie kann das bitteschön sein?

Mit dieser PATH Variable funktioniert der Scanner einwandfrei:

C:\Program Files (x86)\MiKTeX 2.8\miktex\bin;%CommonProgramFiles%\Microsoft Shared\Windows Live;C:\Program Files (x86)\PC Connectivity Solution\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\Tools\Binn\;C:\Program Files\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\;C:\Program Files (x86)\Microsoft SQL Server\100\DTS\Binn\;C:\Program Files\TortoiseSVN\bin;C:\Program Files (x86)\Common Files\Roxio Shared\9.0\DLLShared\;C:\Program Files\gs\gs8.64\bin;D:\Programme\android-sdk_r04-windows;C:\Java\jdk1.6.0_21\bin;C:\Program Files (x86)\Mercurial\;C:\Program Files (x86)\TortoiseHg\;

815 Zeichen lang und mit wenigen Ausnahmen gehören die Einträge auch alle zu Programmen die ich zur Zeit benutze. Sobald ich aber ein neues Programm installiere, das sich in der Variable verewigt, verweigert der Scanner seinen Dienst. Vor zwei Tagen habe ich zum Beispiel Graphviz installiert, was die Länge der Variable durch diesen Eintrag

C:\Program Files (x86)\Graphviz2.26.3\bin

auf 856 Zeichen vergrößert hat.

Da der Scanner schon ein paar Jahre auf dem Buckel hat, ist nicht mit einer neuen Version des Treibers und der Toolbox zu rechnen. Also bleibt mir im Moment nur die Variable im Auge zu behalten und im Notfall vor dem Scannen ein paar Einträge auszuschneiden und sie hinterher wieder einzufügen. Keine besonders befriedigende Lösung.

In den letzten Tagen habe ich ein wenig an einer neuen Anwendung programmiert. Teil davon ist ein Baum in dem eine Hierarchie von Tags abgebildet ist und eine Liste mit Dateien, denen man n Tags zuweisen kann. Nach Dateien soll man über diese Tag-Hierarchie suchen können. Da sich nach einer anfänglichen Konfiguration die Tag-Hierarchie nicht mehr großartig ändert, habe ich mich für das Nested-Set Datenmodell zum Speichern in der Datenbank entschieden.

Die Tabellenstruktur des Baums, der Dateien und der Zuordnungstabelle sieht in etwa so aus:

Nodes { id, lft, rgt, parentId }
FileNodes { id, nodeId, fileId }
Files { id, name }

Im Tag-Baum will ich neben dem Namen des Tags auch die Anzahl der Dateien anzeigen, denen dieser Tag zugeordnet ist. Dabei dürfen natürlich Dateien in der Hierarchie nicht doppelt gezählt werden. Mit diesem Beispiel hier würde ich also für die Knoten folgendes Ergebnis bekommen ([Knoten]: Anzahl):
[1]: 5, [2]: 4, [3]: 3, [4]: 1, [5]: 2, [6]: 2

Continue reading

Ich habe schon oft Unterhaltungen mit anderen geführt, die der Meinung waren, dass Tags an sich überflüssig sein. Alles, was man so braucht, könne man auch in einer hierarchischen Struktur abbilden.

Natürlich ist es jedem selbst überlassen, ob er damit zurecht kommt oder nicht, aber hierarchische Strukturen stoßen schnell an ihre Grenzen.

Gehen wir dazu mal auf die Dateiebene. Die allermeisten nutzen heute immer noch die sehr alte Methode der Einsortierung mittels Ordnerstrukturen. Wir haben uns an diese Denkweise gewöhnt und sehen diese daher als gut und funktionierend an. Ich muss aber leider immer wieder feststellen, dass diese nur ungenügende Kategorisierungsoptionen bietet.

Hier ein Beispiel. Wenn man nur eine Ordnerstruktur zum Kategorisieren nimmt, dann hätte man vielleicht einen Ordner für “Dokumente”, wo es einen Unterordner “Rechnungen” gibt, in dem alle Rechnungen abgelegt werden. Ich z.B. bestelle häufig bei Amazon, daher würde es Sinn machen, einen weiteren Unterordner “Amazon” anzulegen. Soweit so gut.
Jetzt kommt aber das Problem: was ist, wenn ich gerne meine Einkäufe weiter aufteilen möchte. Ich will dadurch sehen können, wieviel ich in einem Monat für DVDs ausgegeben habe. Klar, ich kann natürlich einen weiteren Unterordner “DVDs” anlegen. Aber was, wenn ich nicht nur bei Amazon bestelle, sondern auch noch woanders? Dann hätte ich neben dem “Amazon” Ordner noch einen anderen Ordner, in dem ebenfalls ein “DVDs” Ordner liegt. Um die Ausgaben für alle DVDs zu erhalten, müsste ich jetzt schon eher umständlich in beiden Ordnern nachschauen.

Mit Tags wäre das einfacher. Ich könnte die Ordnerstruktur beibehalten und den Rechnungen in den “DVDs” Unterordnern den Tag “DVDs” und “Rechnungen” geben. Schon hätte ich über eine Suche nach diesen beiden Tags eine zentrale Übersicht über meine Rechnungen, bei denen ich DVDs gekauft habe.

Ein weiteres Beispiel, dass ich noch gravierender finde: Es gibt eine Datei, die mehreren ‘Kategorien’ zugeordnet ist. Wenn man nur Ordner benutzt, kann es schnell vorkommen, dass man eine Datei entweder doppelt auf der Festplatte ablegen müsste oder sich merken müsste, dass die Datei dann nur bei Kategorie A und nicht bei Kategorie B zu finden ist. Für jemanden wie mich, der eher vergesslich ist, absolut keine Lösung. Als Beispiel sei hier mal wieder Amazon genannt. Ich habe einen Artikel bestellt und festgestellt, dass ich ihn doch nicht haben will. Also wird er zurückgeschickt.
Ich brauche eine Info, dass die Rechnung damit ungültig ist. Aber das Dokument ist ja nicht wirklich eine Rechnung, daher sollte die Datei eigentlich noch woanders liegen. Oder halt nur im Ordner “Rechnungen” und nicht im Ordner “Retour”.
Mit Hilfe von Tags wäre es hier ziemlich egal, wo die Datei liegt, da man nur über Tags sucht und so die Zuordnung auch wieder findet.

Tags sind also etwas sehr sinnvolles. Nur wie nutzen? Windows und Mac OSX haben Unterstützung dafür eingebaut. Bei Windows kann man über die Eigenschaften einer Datei Stichwörter vergeben und beim Mac sind es die Spotlight Kommentare. Die Suche unter Windows ist mehr als unzureichend, die Spoptlight Suche ist da schon deutlich besser, aber immer noch nicht der Weisheit letzter Schluss.

Ich habe für Windows kein Tool gefunden, das mit den Stichwörtern arbeiten würde. Unter dem Mac gibt es ein hervorragendes Tool, das ich gerade noch teste: Leap. Einen ausführlichen Test werde ich später verfassen, wenn ich ein wenig mehr Erfahrung gesammelt habe.

Gestern bin ich über einen Beitrag bei lifehacker.com gestolpert, in dem es um Online Backup auf normalem Webspace ging. Dabei wurde gewarnt, dass man die AGBs seines Anbieters genau durchlesen sollte, bevor man Daten nur zu Backupzwecken neben seinen Webseiten ablegt. Einige Anbieter verbieten dieses nämlich explizit und nehmen sich das Recht heraus, solche Daten ohne Nachfrage unwiderruflich zu löschen. Als Alternative dazu wurde mozy genannt, ein Online Backup Service.Continue reading

Tja, nach Jahren des Wollens und Wünschens, habe ich mir gestern dann endlich einen Mac gekauft, genauer gesagt einen 20″ iMac. Und ich bin mehr als nur zufrieden mit dem Gerät.

Vieles ist anders, manches ist sehr gewöhnungsbedürftig. Aber bisher habe ich keine Showstopper kennen gelernt und ich hoffe auch, dass das so bleiben wird 😉

Ich werde daher auch ab und an von meinen Erfahrungen mit dem Mac berichten, aber komplette Artikel zum Umstieg werde ich wohl nicht posten, schließlich haben das schon genügend Leute vor mir getan.

Ich bin am Wochenende über einen Blogpost gestolpert, den ich sehr interessant fand: http://blogs.msdn.com/brada/archive/2008/03/16/silverlight-2-developer-poster.aspx

Dort kann man sich ein Poster für Devs zu Silverlight 2 herunterladen und ausdrucken. Es wurde bei vielen Präsentationen während Mix08 ausgeteilt.

Informativ und wirklich hübsch, jeder der sich für Silverlight 2 interessiert sollte einen Blick riskieren 🙂

Btw: Joe Stegman hat hier eine Deepzoom Version des Posters erstellt.

Auf meiner Suche nach möglichst vielen Tools, die man sinnvoll im Web ausführen kann, bin ich auf ein sehr interessantes Mindmap Tool gestoßen: Mindomo.

Es beherrscht die meisten Funktionen, die man von einem Mindmapping Tool erwartet und sieht dabei noch wirklich gut aus. Auch die Verarbeitungsgeschwindigkeit ist hervorragend.

Ich kann nur jedem empfehlen, dieses Tool mal aus zu probieren, da es auch einen kostenlosen Zugang gibt (alternativ dazu gibt es einen Zugang, der 6$ pro Monat kostet).