Profilordner von Thunderbird

Wenn man sein Thunderbirdprofil sichern möchte so ist es praktisch zu wissen wo man dieses findet. Dies ist dabei je nach Betriebssystem unterschiedlich:

Linux: ~/.thunderbird/xxx.default
Windows 2000/XP: C:\Dokumente und Einstellungen\%Benutzername%\Anwendungsdaten\Thunderbird\Profiles\xxx.default
Windows Vista/7; C:\User\%Nutzername%\AppData\Roaming\Thunderbird\Profiles\xxx.default

Die Profile können im übrigen Betriebsysten übergreifend kopiert werden (z.B. Windows zu Linux).

Weitere Informationen gibt es unter:
http://www.thunderbird-mail.de/wiki/Profile_verwalten

Openbook Linux

Galileo Press veröffentlich einige seiner aktuellen Werke immer als Openbook, so das sie jedermann kostenlos lesen kann. Sehr lobenswert :) Mir hat es im Moment das Buch Linux – Das umfassende Handbuch angetan, da es von Einsteigerthemen über Shellprogrammierung bis tiefere Einblicke in den Kernel alles bietet, was man wissen möchte. Zu finden ist das Buch dabei unter http://openbook.galileocomputing.de/linux/. Viel Spaß beim lesen :)

FreeUniverse

Gestern bin ich über ein interessantes Spiel gestolpert, welches auf den Namen FreeUniverse hört. Es handelt sich dabei um einen 2D Weltraumsimulator. Die offizielle Projektseite ist dabei unter http://www.dsource.org/projects/freeuniverse/ zu finden. Dort kann auch eine entsprechende Windowsversion heruntergeladen werden. Man müsste nur einmal schauen ob es auch möglich ist eine Linux Version davon zu kompilieren, ansonsten bleibt ja noch Wine ;)

Interessantes Problem beim Bitmap locken in Verbindung mit Mono und .NET

Manchmal sucht man den Fehler an der falschen Stelle, wie ich gestern bei einem Quelltext feststellen dürfte welcher auf .NET und Mono laufen sollte. Man nehme folgenden C# Code:

Bitmap bmp=new Bitmap((int)width, (int)height, PixelFormat.Format32bppArgb);
BitmapData data=bmp.LockBits(new Rectangle(0, 0, (int)width, (int)height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

Marshal.Copy(intern.imageData, 0, data.Scan0, (int)(width*height*4));

bmp.UnlockBits(data);
data=null;
return bmp;

Dieser Code kopiert Daten in ein Bitmap. Unter .NET funktioniert dies tadellos. Also lag der Gedanke nah das dies ein Mono Problem ist. Nach etlichen Tests ergab sich dann aber das es genau umgekehrt ist. Es liegt an der Zeile:

BitmapData data=bmp.LockBits(new Rectangle(0, 0, (int)width, (int)height), ImageLockMode.ReadOnly, PixelFormat.Format32bppArgb);

und zwar speziell an dem ImageLockMode.ReadOnly. Dort könnte z.B. ImageLockMode.ReadWrite stehen und schon würde es unter .NET und Mono funktionieren. Doch warum geht es nun bei .NET trotzdem mit der falschen Variante? Die .NET API reicht die Parameter korrekt an die GDI+ weiter, diese ignoriert sie aber. Aus diesem Grund funktionierte es unter .NET. Sprich Mono hat alles richtig gemacht :)