Mein neuer Liebling

Ich habe ein neues Lieblingsprogramm: Songbird! Das Programm als iTunes-Ersatz zu bezeichnen, ist fast schon eine Beleidigung. Es bietet alles, was ich von einem guten Musiktool erwarte – Songtextanzeige, Erweiterbarkeit über Module (Mozilla-Style) mit Autoupdate, mehrere Wiedergabelisten, Anbindung an ShoutCast und seit der kürzlich erschienenen Version 1.1 auch Verzeichnisüberwachung und die Anbindung an einen MusicStore (7digital). Dabei ist Songbird open-source und auf Windows, Linux und Mac lauffähig. Gegenüber iTunes empfinde ich es als übersichtlicher, insbesondere da man sich die benötigten Module selbst aussuchen kann. Unter diesen finden sich nette Dinge wie mashTape, welches zum gerade gespielten Interpreten Infos aus Wikipedia, last.fm etc. zusammenstellt und als Infobox anzeigt.

UNetbootin: Vereinfachte Linux-Installation auf Netbooks

Linux-Installation ohne Live-CD? Das Tool UNetbootin erstellt Live-USB-Sticks mit Linux.

Ein Betriebssystem auf einem Netbook zu installieren, kann gewisse Mühen bereiten: Da an den Kleinst-Laptops kein DVD-Laufwerk verbaut ist, muss – wenn die Installation über eine (Live-)CD/DVD durchgeführt wird – ein externes Laufwerk angeschlossen werden.
Ein USB-Stick als Installationsmedium kann einem die Arbeit erleichtern. (Zukünftige) Linux-Nutzer haben es da besonders leicht: Bevor man sich daran macht, den Stick zu formatieren, partitionieren etc., genügt ein Blick auf das Tool UNetbootin („Universal Netboot Installer“). Das Programm, das unter der GNU-GPL-Lizenz läuft, installiert eine Linux-Distribution der Wahl auf einen USB-Stick.
Nach dem Download und dem Start fragt UNetbootin zunächst, welche Distribution installiert werden soll. Dort bietet sich die Möglichkeit, aus der Liste eine der bekannteren Distributionen (wie z.B. (K,X)Ubuntu, Debian, openSUSE, Fedora u.ä.) auszuwählen. Ist die gewünschte Linux-Variante nicht dabei, kann man auf andere Distributionen als ISO-Datei zurückgreifen.
Über den so erstellten Live-Stick lässt sich das Betriebssystem der Wahl auf einem Notebook starten, nach Belieben mit der dort verbauten Hardware testen und (bei Gefallen) installieren. Dadurch lassen sich mit Sicherheit einige CD-/DVD-Rohlinge sparen.
Das Tool ist unter Windows und Linux lauffähig. Download und weitere Informationen unter http://unetbootin.sourceforge.net/

Auch Gnome gehen mal fremd

Obwohl ich unter Linux generell den Gnome-Desktop gegenüber KDE vorziehe, gibt es doch 3 KDE-Programme, die aus meiner Sicht kein gleichwertiges Pendant unter Gnome haben und die ich daher quasi „unter falscher Flagge“ verwende: Das Brennprogramm K3B, den LaTeX-Editor Kile und ganz besonders das KDE-Terminal „Konsole“. Letzteres lässt sich imho nicht nur wesentlich besser, schneller und gezielter konfigurieren als das Gnome-Terminal, es bietet auch die für Administrationsarbeiten unglaublich nützliche Funktion „send input to all sessions“. Damit ist es beispielsweise möglich, mehrere SSH-Sessions zu verschiedenen Servern zu starten und langweilige Standardaufgaben auf allen Servern mit nur einer Eingabe gleichzeitig zu erledigen – beispielsweise regelmäßige Paketupdates oder das Abnicken von Tripwiremeldungen, zu dem man vom grausamen Sysadmin gezwungen wird. Allerdings sollte man natürlich höllisch aufpassen, die Funktion nachher auch wieder zu deaktivieren. Insbesondere bevor man lustige Dinge wie „rm -rf *“ schreibt…

Unter KDE4 heißt die Funktion übrigens „Eingabe kopieren nach…“ (bzw. „copy input to…“). Sie ist zwar etwas aufwendiger zu bedienen als die alte Funktion, bietet dafür aber die Möglichkeit, die Fenster gezielt auszuwählen, an die die Eingabe übertragen werden soll.

Das böse „F“-Wort

Als Mitarbeiter des Rechenzentrums etwas über Filesharing zu schreiben ist wohl so als ob der Papst ein Lehrvideo zur Benutzung von Kondomen auf YouTube einstellt, aber ich bin ja schon lange für ein drittes vatikanisches Konzil. 🙂 P2P-Filesharing verströmt bekanntlich seit Langem den Duft des Illegalen, seine legalen Anwendungsbereiche dürfen dabei aber nicht übersehen werden und sind inzwischen sogar Gegenstand wissenschaftlicher Untersuchungen.

Hier soll es nun um ein Filesharing-Tool gehen, dessen Dienste ich speziell in LAN-Umgebungen nicht mehr missen möchte. Der konkrete Anlass war die Versammlung eines halben Dutzends bier- und chipsbewaffneter Endzwanziger nebst mehr oder minder moderner Unterhaltungselektronik in meinem Keller, kurz und neudeutsch: Eine LAN-Party. Aufgrund des höchst unterschiedlichen Alters des mitgeführten Equipments – die Spanne reichte von cebitfrisch bis prähistorisch – erwies es sich als erstaunlich schwierig, die neuesten Warcraftkarten oder die letzten Partybilder untereinander auszutauschen. Windows-Dateifreigaben mussten erstmal eingerichtet werden, waren dann über verschiedene Versionen (98, 2000, XP, Vista) aber auch nicht erreichbar, Linux wollte auch nicht so recht mitspielen und wenn dann noch diverse Personal Firewalls etwas zu sagen haben, kann man die Sache komplett vergessen. Also wurden schließlich USB-Sticks oder externe Festplatten herumgereicht, alles sehr nervig und unflexibel.

Ich machte mich bei nächster Gelegenheit auf die Suche nach einem Tool, welches dieses Dilemna eleganter lösen sollte. Und ich fand Lanshark, ein Programm des Schweizers Jonas Wagner. Die Programmversion 0.0.2 stimmte mich zwar etwas bedenklich, aber die verwendete Programmiersprache Python gab Anlass zur Hoffnung, dass ich das Programm selbst für meine Zwecke anpassen konnte. Das war im Endeffekt aber gar nicht nötig, da Lanshark bereits in der vorliegenden Version genau das Werkzeug war, nach dem ich gesucht hatte. Das Programm ist unter der GPL freigegeben, die Installation ist kinderleicht, Lanshark sucht im lokalen Netz selbständig nach Austauschpartnern, die Oberfläche ist übersichtlich und es gibt ein paar weitere nette Features (UTF8-Support oder eine Resumefunktion zum Beispiel). Daher beschränke ich meine Beteiligung am Projekt momentan auf die Pflege des Pakets für Debian/Ubuntu. Lanshark ist darüber hinaus für Windows, Gentoo und als tar-Ball für andere Linuxderivate verfügbar.

Abgesehen davon, dass es für LAN-Partys sehr nützlich ist, verwende ich Lanshark auch manchmal bei der Arbeit, z.B. um Dateien schnell und unkompliziert auf mehrere virtuelle Maschinen zu verteilen (wenn AFS nicht zur Verfügung steht). Also: Testen und immer schön artig (und legal) bleiben!

Thunderbird-Addons für “Profis”: Nostalgy

Teil 2 der Reihe Thunderbird Addons für Vielbenutzer

Mail, die man nicht archivieren möchte kann man einfach aus der Mailbox mit der Taste „D“ löschen und landet danach am Anfang der nächsten Email. Auf diese Art lässt sich eine volle Mailbox schnell duchlaufen und reduzieren. Leider geht das mit Mail, die man aufheben will nicht so leicht. Um Email zur Archivierung in Unterordner zu verschieben, muss man meist zur Maus greifen, was häufg lästig ist.

Mit dem Addon Nostalgy kann man auch diese Aufgabe bequem auf das Keyboard verlegen. Das lohnt sich insbesondere, wenn man viele Email bekommt, die man lediglich lesen und anschließend archivieren muss. (Die Möglichkeit, diese dann gleich per Filter in die passenden Ordner sortieren zu lassen, habe ich persönlich als nicht sinnvoll empfunden. Was bereits im Archivordner liegt liest man meistens gar nicht mehr…). „Thunderbird-Addons für “Profis”: Nostalgy“ weiterlesen

Logfiles: zeitliche Verteilung von Fehlern schnell sichtbar machen.

Ein schnelle Kommando-Sequenz, die bei der Analyse von Logfiles nützlich sein kann:

Taucht eine Fehlermeldung (oder eine ungewöhnliche Meldung) im Logfile auf, dann ist die Frage wie die zeitliche Verteilung dieser Fehler aussieht:

grep $SUCHBEGRIFF /var/log/$LOGFILE | cut -c 1-9 | uniq -c

ergibt eine Ausgabe in der in der ersten Spalte die Anzahl der Vorkommnisse und in dahinter Datum und Uhrzeit stehen. Damit kann man schnell überblicken, ob der Fehler sporadisch auftritt oder zu einer Uhrzeit gehäuft. Je nach Wahl der Cut-Grenzen, kann man in Stunden- oder auch 10-Minuten Intervallen schauen.

Perl und Unicode

Obwohl ich eigentlich ganz gut verstehe, wie Unicode in seinen verschiedenen Ausprägungen funktioniert, war mir (und ist zum Teil noch) ein Rätsel, wie Perl damit umgeht. In der Vergangenheit hatte ich vornehmlich das Problem, dass Skripte obskure Unicode-Fehlermeldungen an Stellen produzierten, an denen ich garantiert nicht mit Unicode arbeiten wollte. Ursache ist die Verwendung eines Unicode-Locales unter Linux, z.B. das bei uns standardmäßig eingesetzte „de_DE.UTF-8“. Dafür benutze ich seit einiger Zeit diesen Quickfix:

if (defined $ENV{"LANG"}) {
exec 'env', 'LANG=C', $0, @ARGV unless $ENV{"LANG"} eq "C";
}

Damit wird das Skript garantiert im Locale „C“ ausgeführt.

Jetzt hatte ich zum ersten Mal eine Situation, in der ich wirklich Unicode benutzen wollte. Es ging darum, Umlaute im Input in die Umschreibung „ae“ etc. umzuwandeln. Mein erster Versuch dafür war grundsätzlich richtig:

$input =~ s/ä/ae/g;

Das funktionierte aber nicht, d.h. die Umlaute blieben erhalten. Nach etwas Suchen habe ich gefunden, dass man das Pragma utf8 setzen muss, wenn solche Zeichen im Skripttext auftauchen. So funktioniert es also:

use utf8;

$input =~ s/ä/ae/g;

NB: das setzt voraus, dass das Skript mit einem UTF8-fähigen Editor geschrieben und gespeichert ist.

Fehler in Gnome bei Aufruf eines Webservers

Mir ist im Rahmen der Arbeit mit dem Modul “webserver” von Python aufgefallen, dass Gnome bzw. GTK einen kleinen Fehler aufweist. Beim Aufruf einer URL erscheint nämlich ggf. die Nachricht “Error: Failed to send command: 500 command not parseable” auf stderr. Der folgende Aufruf behebt das Problem (für Firefox als Webbrowser, eine Zeile):

gconftool –set /desktop/gnome/url-handlers/http/command
–type=string ‘firefox -remote openurl('/%s,new-tab')’

Ob der Fehler überhaupt existiert, kann mit folgendem Befehl geprüft werden:

gconftool –get /desktop/gnome/url-handlers/http/command

Wenn bei der Ausgabe die “openurl” Option in Anführungsstrichen steht, existiert der Fehler.

Die Kontrolle nochmal mit Python und dem subprocess-Modul:

>>> import subprocess
>>> p1 = subprocess.Popen([“gconftool”,”–get”,
”/desktop/gnome/url-handlers/http/command”],stdout=subprocess.PIPE)
>>> p1.communicate()[0]
‘firefox -remote “openurl('/%s,new-tab')”n’

Das Geheimnis der Semaphoren

Nein, hier geht es nicht etwa um die Hüter des schringseldingselnden Donnerwutzes aus Harry Potter, sondern um Datenstrukturen zur Prozesssynchronisation, die mich auf unseren Linuxservern schonmal des öfteren ärgern. Wenn beispielsweise Apacheprozesse mit einem “Segmentation fault” abrauchen oder mit der Meldung “no space left on device” die Arbeit verweigern, obwohl die Platte mehr als genug Platz bietet, sind nicht selten die Semaphoren daran schuld (wer nicht weiß, was Semaphoren sind: http://de.wikipedia.org/wiki/Semaphor_%28Informatik%29).

Nun gibt es zwei Wege, sich zu behelfen, wenn einem die Semaphoren ausgehen: Die Anzahl der Semaphoren erhöhen oder die bestehenden abschießen.

Die Anzahl der Semaphoren erfährt man im (virtuellen) proc-Dateisystem unter “/proc/sys/kernel/sem”. Die 4 Zahlen repräsentieren die Kernelparameter SEMMSL, SEMMNS, SEMOPM, SEMMNI (Google kennt die Bedeutung ;) ).

Die folgende Einstellung hat uns wesentlich mehr Ruhe vor diesen Plagegeistern verschafft:

sysctl -w kernel.sem=”1000 96000 128 500″

Zum Abschießen hat sich bei uns ein kleines Shellskript bewährt, das vor allem darauf achtet, keine Semaphoren des Users “root” zu erwischen, was unangenehme Folgen haben könnte (ohnehin übernehme ich für die Tipps keine Garantie in Bezug auf unerwünschte Nebenwirkungen!):

#!/bin/bash
sem=`sudo ipcs -s | grep -v root | grep 0×00 | cut -d’ ‘ -f2`
for i in $sem; do sudo ipcrm sem $i; done

Ein weiterer Beitrag zum Thema: http://www.cryptronic.de/wiki/Blogs/20070211_vserver_und_semaphores