Ubuntu hängt beim booten beim Laden von modem-manager

Nach langer Zeit wieder mal ein Post:

Beim Hochfahren meines Notebooks konnte ich von heute auf morgen ein seltsames Verhalten feststellen: Ubuntu (10.04) hängt sich beim Hochfahren auf und zwar an dieser Stelle:

[...]
modem-manager: Loaded plugin Gobi  
modem-manager: Loaded plugin Nokia  
modem-manager: Loaded plugin Generic  
modem-manager: Loaded plugin Longcheer  
modem-manager: Loaded plugin Novatel  
modem-manager: Loaded plugin Sierra  
modem-manager: Loaded plugin AnyData  
modem-manager: Loaded plugin Option High-Speed  
modem-manager: Loaded plugin ZTE  
modem-manager: Loaded plugin Option  
modem-manager: Loaded plugin MotoC  
modem-manager: Loaded plugin Huawei  
modem-manager: Loaded plugin Ericsson MBM
[...]

Die Auswahl von verschiedenen Kernelversionen bzw. dem Recoverymode brachte hier aber keine Änderung. Genauso wenig kann ich hier mit einer Problemlösung dienen, denn auch Google hat hier nicht weiter geholfen. Ich habe über Nacht keine Änderung am PC bzgl. UMTS-Modem oder Sonstiges vollbracht.

Das Problem hat sicher eher per Zufall gelöst: Nachdem ich so oft neu gestartet hatte, dass die Platte überprüft wurde, gings nach der Überprüfung auf einmal...

Reminderfox per FTP synchronisieren

Mittlerweile benutze ich auch das Firefox/Thunderbird Addon Reminderfox. Damit kann man Termine und Aufgaben zeitlich ähnlich organisieren wie mit Lightning. Was mir bei der Benutzung von Reminderfox wichtig war, ist die Synchronisationsmöglichkeit über das Netzwerk. Und genau dieses "Feature" bietet Reminderfox. Eine Synchronisation ist per FTP bzw. WebDAV möglich. Ich habe hierbei FTP gewählt.

Geht eigentlich auch ganz einfach: Den Server, das Verzeichnis, wo der Kalender liegen soll, und Zugangsdaten müssen eingetragen werden. Das habe ich meiner Meinung nach auch richtig gemacht, doch bekam ich ständig den Fehler:

Unerwarteter Fehler! (2147500037)

Die Google-Suche und Suche in der Mailingliste des Reminderfox-Projekts haben mich leider nicht wirklich weiter gebracht. Die Lösung war dabei eigentlich recht einfach:
Meine Eingaben waren:

ftp://servername/kontoname/ordner/dateiname

richtig wäre allerdings gewesen:

ftp://servername/ordner/dateiname

Der Kontoname hat hier nichts zu suchen; und schon läufts wie am Schnürchen.

Den einzigen Nachteil den Remindefox noch hat, ist die fehlende "große" Kalenderansicht, wie es sie bei Lightning gibt.

HP CM1312 NFi zum drucken bringen

Problem beim HP CM1312 NFi: Treiber unter Windows 7 erfolgreich installiert, doch das Drucken will einfach nicht funktionieren. Der Ausdruck lautet jedes Mal:

PCL XL Error
Subsystem: TEXT
...

Nach kurzer Google-Suche lässt sich das Problem aber relative schnell beheben:

Unter "Geräte & Drucker" klickt man rechts auf den betreffenden Drucker und öffnet die "Druckeigenschaften". Dort öffnet man im Reiter "Allgemein" die "Einstellungen" und stellt "Printing Optimization" von "Auto" auf "Optimiert für Text und Vektoren". Danach den Drucker nochmal ein- und ausschalten und man kann einfach drucken.

Snap-In für Fenster

Windows 7 stellt ja mit Aero eine sehr praktische Funktion bereit: Snap-In für Fenster. Dabei wird ein Fenster auf die linke Hälfte des Bildschirms platziert, wenn man das Fenster an den linken Bildschirmrand zieht. Das gleiche kann man für die rechte Hälfte machen. Unter Ubuntu (gnome) ist eine solche Funktion leider nicht standardmäßig integriert. Zum Glück kann man sich hier leicht behelfen:

Zuerst muss man den CompizConfig Einstellungs-Manager und das Tool wmctrl installieren, soweit dies noch nicht geschehen ist.

sudo aptitude install compizconfig-settings-manager wmctrl

Im CompizConfig Einstellungs-Manager ("System -> Einstellungen -> CompizConfig Einstellungs-Manager") das Plugin "Commands" aktivieren und bei einem Kommando deiner Wahl folgenden Code für das Verschieben in die linke Hälfte einfügen:

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b remove,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,0,0,$HALF,-1

Für die rechte Hälfte dann:

WIDTH=`xdpyinfo | grep 'dimensions:' | cut -f 2 -d ':' | cut -f 1 -d 'x'` && HALF=$(($WIDTH/2)) && wmctrl -r :ACTIVE: -b remove,maximized_horz && wmctrl -r :ACTIVE: -b add,maximized_vert && wmctrl -r :ACTIVE: -e 0,$HALF,0,$HALF,-1

Diese Kommandos kann man unter einem der Reiter "... Bindings" z.B. einer Tastenkombination oder einer Interaktion am Bildschirmrand zuweisen und los gehts.

Zwei eingeschnappte Programme ^^

Der Schein trügt

Letzens habe ich ein interessantes Codefragment in einer Vorlesung gesehen:

unsigned char x;
 
x = ~0xFF;
 
if(x == ~0xFF) {
	// should go there
} else {
	// but is ending up here
}

Wir landen hier eigentlich unerwartet im else-Zweig, aber warum?

Dabei muss man wissen, dass 0xFF z.B. bei einem 16-Bit-µC im Regelfall auch in ein 16-Bit-Register geladen wird, wenn intern (im Prozessor) damit gearbeitet wird, z.B. bei einer Addition.

Bei der Zuweisung wird 0xFF im Prozessorregister zu 0x00FF expandiert. Durch die Negation (~) ändert sich der Registerinhalt in 0xFF00. Das ist alles noch kein Problem, da durch den unsigned char nur die unteren 8 Bit berücksichtigt werden und somit 0x00 in x abgelegt wird.

Beim Vergleich wird dann 0x00 im Prozessorregister zu 0x0000 und wird somit mit 0xFF00 (0xFF -> 0x00FF -> (~) -> 0xFF00) verglichen. Und dieser Vergleich ergibt dann FALSE, weshalb wir dann auch im else-Zweig enden.