La Fonera

Nach dem Umzug verloren geglaubt und heute endlich wiedergefunden: Mein kleiner La Fonera! Demnächst werde ich mich mal daran wagen die Firmware gegen OpenWrt auszutauschen. Das stand schon auf meiner ToDo-Liste, bevor der La Fonera verloren ging…

La Fonera

Pumpenrätsel

Gerade bekam ich ein unterhaltsames Rätsel gestellt: Angenommen ein Pool mit 2400 Litern Fassungsvermögen soll leer gepumpt werden. Dazu stehen zwei Pumpen zur Verfügung. Alleine bewältigt die eine Pumpe den Pool in 2 Stunden, die andere in 3 Stunden. Wie schnell ist der Pool trockengelegt, wenn beide Pumpen zusammen eingesetzt werden?

Das interessante an dieser Aufgabe ist, dass das Fassungsvermögen des Pools für die Lösung völlig unerheblich ist.
Es genügt zu wissen, dass der Pool mit der einen Pumpe nach a Minuten geleert werden kann und mit der anderen in b Minuten. Nach x Minuten ist der Pool vollständig trockengelegt. Demnach muss gelten, dass der Pool nach a Minuten zu

\frac{x}{a}

geleert ist und nach b Minuten zu

\frac{x}{b}

. Der Pool ist leer, wenn a = x bzw. b = x gilt. Werden beide Pumpen eingeschaltet, ist das Wasser x Minuten zu einem Anteil von

\frac{x}{a} + \frac{x}{b}

aus dem Pool gepumpt. Es befindet sich kein Wasser mehr im Pool, wenn

\frac{x}{a} + \frac{x}{b} = 1

gilt. Nun können wir die Gleichung nach x auflösen:

x = \frac{1}{\frac{1}{a} + \frac{1}{b}}

.

Für a = 2 und b = 3 ergibt das:

x = \frac{1}{\frac{1}{2} + \frac{1}{3}} = \frac{6}{5}

Und

\frac{6}{5}

entsprechen nun wie vielen Stunden? Tipp:

\frac{60}{60}

sind die Entsprechung einer Stunde. 😉

TextMate – der Editor meiner Wahl

Bislang habe ich mit vim unter OS X gearbeitet, jedoch die mangelnde Integration in die Deskopumgebung vermisst. Vor kurzem bin ich dann nach einigen Zögern auf TextMate umgestiegen. Die Trialversion von Textmate hatte mich von Anfang an überzeugt, aber eigentlich wollte ich einer Open Source Software den Vorzug leisten. So probierte ich Smultron aus, doch konnte mich mit der eigenwilligen Oberfläche nicht anfreunden und vermisste auch einige Funktionen. So entschied ich mich entgegen meiner Prinzipien Abstand von Closed Source zu nehmen dann doch für Textmate. Die 39 Euro erwiesen sich als gut investiertes Geld: TextMate bietet alles, was ich mir von einem Editor wünsche und ich konnte ohne lange Einarbeitungsphase effizient sowohl an Websites, Java- und Ruby-Projekten, PHP-Scripts als auch an meinem Diplom arbeiten. Als besonders gelungen empfinde ich dabei die Integration von

\LaTeX{}

. Einzig bei PHP-Code innerhalb einer lstlisting-Umgebung gerät der Parser ins Straucheln und interpretiert den eingebetteten PHP-Code als

\LaTeX{}

, was dazu führt, dass der Parser nicht das Ende der lstlisting-Umgebung findet. Dadurch werden im folgenden sämtliche Autovervollständigungen und Fehlerkorrekturen einschließlich der Rechtschreibprüfung blockiert. Aber die für

\LaTeX{}

hinterlegte Grammatik kann zum Glück angepasst werden, so dass eingebetteter PHP-Code auch als solcher erkannt und geparst wird. Für Java und Python funktioniert das schon sehr gut. Ich werde mich demnächst intensiver damit befassen.

Textmate mit geöffneten Latexdokument

Ubuntu Edgy auf Dell Dimension 5150

Als ich versuchte Ubuntu Edgy auf meinem Dell Dimension 5150 zu installieren, brach der Installer schon beim Starten mit der Meldung Starting System log daemon: syslogd, klogd. ab. Zwar konnte das Problem durch den Bootparameter debian-installer/probe/usb=false behoben werden, doch sollte derartiges gar nicht nötig sein. An den USB-Bus angeschlossen sind ein Logitech Keyboard, eine alte Microsoft Maus sowie ein Lide30-Scanner von Canon. Bei der Installation von Dapper Drake auf gleicher Hardware gab es noch keine Probleme. Ich bin gespannt, wie sich Feisty Fawn schlagen wird. Selbst wenn Geräte am USB-Bus kaputt sind, sollte das System dadurch nicht einfrieren.

Wozu /media?

Gemäß den Empfehlungen des FHS sollte /media zum Einbinden von Wechseldatenträgern wie CD-ROMs, DVDs, USB-Sticks und ähnlichen in unixartigen Betriebssystemen genutzt werden. Warum nicht /mnt als „Mount point for a temporarily mounted filesystem“ ebenfalls für Wechseldatenträger genutzt werden sollte, die als solche ebenfalls nur temporär eingebunden werden, erschließt sich mir nicht ganz. Spätestens bei USB-Festplatten verliert die Unterscheidung zwischen /mnt /media meines Erachtens an Eindeutigkeit.

Meine Top 10 Unixshell-Kommandos

IBM hat unter Productivity tips einen interessanten Artikel veröffentlicht, der einige Tipps enthält, wie mensch seine Produktivität auf der Kommandozeile optimieren kann.
Als sehr aufschlussreich empfinde ich die vorgestellte Möglichkeit durch Kombination bekannter UNIX-Tools eine Statistik der am häufigsten in der Shell aufgerufenen Kommandos zu erstellen.

$ history|tail -1000|awk '{print $2}'|awk 'BEGIN {FS="|"} {print $1}'|sort|uniq -c|sort -r

Auf dem MacBook:

92 cd
89 ls
44 vim
34 gcc
30 awk
31 make
17 sudo
13 wget
13 java
10 echo
9 top

Auf dem Server:

80 ls
51 cd
47 sudo
41 apt-get
40 tail
23 exit
17 df
10 grep
10 rm
10 chmod
9 cat

Um eine repräsentativere Statistik zu erstellen, wäre es ratsam mit history -c sparsamer umzugehen. 😉

ext2 unter Windows

Linux ist oft die letzte Rettung, um Daten von einer zerstörten Windows Partition zu retten. Das Problem ist nur, wohin die Daten sichern? Die Schnittmenge der von Windows und Linux unterstützten Dateisysteme bildet FAT32. FAT32 hat viele Unzulänglichkeiten, von denen in Praxis am schwersten wiegt, dass Dateien nicht größer als 4 GB sein dürfen. Das Spiegeln einer Partition mit dd wird damit unmöglich, ohne das Dump in mehrere kleine Dateien zu splitten.
Der Schreibzugriff auf NTFS-Volumes ist unter Linux nur auf Umwegen über captive Userland“treiber“ zu empfehlen, wenngleich der im Linux-Kernel implementierte NTFS-Support seit Version 2.6.12 nicht mehr als experimentell eingestuft wird. Captive kann jedoch leider nicht immer genutzt werden, da dazu der original Treiber ntfs.sys von Microsoft vorliegen muss. Außerdem ist der Zugriff über captive auf NTFS-Volumes sehr langsam, da ein erheblicher Overhead durch die API-Emulation entsteht.

Einen Ausweg aus der Misere bietet explore2fs, ein Open Source Tool für Windows, das es ermöglich ext2 und ext3 Partitionen und Images zu öffnen. Der Lesezugriff funktioniert damit auf ext2 und ext3 formatierte Volumes sehr zuverlässig, so dass es kein Problem darstellt auch größere Datenmenge von einer NTFS-Partition unter Linux zu sichern, um sie später unter Windows mit Hilfe vom explore2fs wiederherzustellen.

ProFTPD – langsame Logins

Dauert das Anmelden auf einem mit ProFTPD betriebenen FTP-Server ungewöhnlich lange, ist die Ursache zumeist ein DNS Lookup des Clients.
Abhilfe schaffen die folgenden Optionen in der proftpd.conf:

UseReverseDNS off
IdentLookups off

Wird eine eingehende aktive oder ausgegehende passive Datenverbindung angestoßen, versucht der FTP-Server die IP-Adresse des Clients in einen Namen aufzulösen. Das braucht ein wenig Zeit; und sofern die Auflösung der IP nicht möglich ist, weil zum Beispiel der DNS durch eine Firewall blockiert wird, wartet ProFTD bis zum Timeout durch die libc.
Ähnlich verhält es sich mit den IdentLookups: Hier versucht der FTP-Server mittels Ident-Protokoll den Benutzernamen des Clients zu erfragen – wird das Protokoll vom Client nicht unterstützt oder die Abfrage durch einen Portfilter (aka Firewall) blockiert, muss ProFTPD auf ein Timeout warten.

Spaß mit C++

Welchen Wert hat i?

int i = 44;
i = i-- - i--;

Zu gewinnen gibt es nichts, außer der Bestätigung die Wirkung Postdecrementoperators verinnerlicht zu haben und zu wissen, warum gut daran getan ist ihn nicht kombiniert mit anderen Anweisungen zu verwenden, wenn gut wartbarer Code gefragt ist. Als kleinen Bonus erhält man noch Antwort auf die Frage nach dem Leben, dem Universum und dem ganzen Rest.

Any fool can write code that a computer can understand.
Good programmers write code that humans can understand.

Martin Fowler