Archiv für den Monat: Juni 2007

Linux-Treff: Scripts mit sed

Gestern Abend am Linux-Treff haben wir etwas über den Befehl sed diskutiert. Ein recht praktisches Teil. Schon lange wollte ich für das Umbennen von Dateien etwas in dieser Art machen. Gestern war es soweit. Hier die Codezeile:

for i in *.ogg ; do mv „$i“ „`echo $i|sed ’s# – # #g’`“; done

Erklärung: hier werden alle .ogg-Dateien umbenant. Und zwar werden die Zeichen “ – “ (also Leerzeichen, Bindestrich, Leerzeichen) durch ein Leerzeichen (“ „) ersetzt. Die Trennzeichen (hier #) sind übrigens frei wählbar. Wenn wir beim Suchen/Ersetzen # einsetzen würden, könnten wir auch ein anderes Zeichen verwenden. sed ist noch viel mächtiger. Anstatt dieser Folge kann beispielsweise auch eine eine Datei mit der Endung .sed als Parameter verwendet werden. Dort drin können alle gewünschten Operationen aufgelistet werden. sed kann nicht nur ein einfaches Search&Replace (substitute) machen. Ich muss mich mal genauer einlesen [1] [2] Bis jetzt habe ich es immer mit der Stringverarbeitung versucht, was jedoch mit Leerzeichen nie wirklich gelungen ist. Die Zeile

#for i in *.ogg ; do mv „$i“ „${i/se/rep}“ ; done

hat für „normale“ Zeichen funktioniert. In Zukunft heisst die Lösung für solche Aufgaben sed.

Ein weiteres Thema war streamtuner [3]. Damit ist es möglich, Streams von Shoutcast und einigen weiteren Diensten zu verwenden. Ausserdem ist es möglich, die Songs gleich als MP3 gerippt auf die Festplatte zu holen. Für die Verwendung muss der Multimediaplayer xmms installiert werden. Für das Recording ist ausserdem das Programm streamripper erforderlich. Ansonsten wird man beim Aufnehmen mit einer hässlichen Fehlermeldung konfrontiert („There was an error creating the child process for this terminal“). Die Lösung dazu hab ich übrigens unter [4] gefunden. Mit den x tausend Stationen findet sicher jeder etwas Passendes für die Ohren 😉

Kurz haben wir noch über PHP/MySQL diskutiert. Einige in unserer LUG wolen sich neu damit befassen und haben schon kleine Test-Scrips erstellt. Dabei habe ich zufällig vom MySQL-Befehl „LOAD DATA INSIDE“ erfahren [5]. Wer weiss, wann man das mal brauchen kann…

[1] http://www.linux-ag.de/linux/LHB/node100.html
[2] http://www.linux-fuer-alle.de/doc_show.php?docid=181&catid=8
[3] http://www.nongnu.org/streamtuner/
[4] http://ubuntuforums.org/showthread.php?p=2821697
[5] http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Stellensituation

Gestern war am NTB Stellenbörstentag. Diverse Firmen haben einen Stand aufgebaut und um die Absolventen gebuhlt (noch der letzte Jahrgang, dem offiziell der Titel Ing. verliehen wird; wir sind ja Bachelors ;-)). Obwohl ich dieses Jahr nicht abschliesse, habe ich am Stand einiger interessanter Firmen vorbeigeschaut. Ich habe mir sagen lassen, dass es Stellenangebote gibt, auf die sich niemand melde (0 Bewerber). Der Arbeitsmarkt ist regelrecht ausgetrocknet. Während einem Gespräch hat ein Firmenvertreter als Witz vom Studienabbruch gesprochen. Wir haben darüber gelacht. Ich dachte an das berühmte Zitat von Wilhelm Busch: „Was man ernst meint, sagt man am besten im Spass“.

Ein Mathedozent hat heute ein zweites Rundmail zu einem IT-Studentenjob (Bereich Datenbanken) verschickt. Auf den ersten Aufruf habe sich niemand gemeldet. Während den Ferien Vollzeit und während dem Studium 5-10h pro Woche. Und dies bei einem bekannten Industriekonzern und einem der besten Arbeitgeber im Rheintal. Wenn jemand Interesse hat, vermittle ich gerne.

Man merkt es an den Jobs: die Wirtschaft läuft auf Hochtouren. Und gutes Personal ist Mangelware.

Böse Sprüche

Hab wieder einmal ein paar Sprüche zur Auflockerung erhalten:

Bei schwierigen Problemen entscheiden wir uns einfach für die richtige Lösung.

Im Zweifelsfall immer das Richtige tun!!!

Liebe ist nach tausenden von Bluescreens immer noch zu behaupten es gibt keine Alternative.

Wenn Windows die Antwort war, muss es eine doofe Frage gewesen sein.

linux is like a tipi: no windows, no gates, apache inside

Wenn Word für Längeres geeignet wäre, würde es nicht Word, sondern Sentence, Page oder Article heißen.

Oft erledigen sich viele Dinge, die man auf die längste Bank geschoben hat, allein dadurch, dass sie am anderen Ende herunterfallen.

Ein Absturz vernichtet zuverlässig und mit allerhöchster Sicherheit immer die wichtigsten Daten. Bevorzugt werden natürlich jene, von denen es kein Backup gibt.

In einer Hirarchie strebt jeder danach, bis in den Bereich seiner Inkompetenz aufzusteigen. – Murphys law

Warum gibts kein weibliches Boolean type TWMBool = {Ja, Nein, Vielleicht}?

Neues Adventure-Game

Wer erinnert sich nicht an die 90er-Jahre, als einmal die Indiana-Jones-Adventure-Games voll „in“ waren. Wir haben diese Games mit Leidenschaft gespielt, die Rätsel geknackt und uns in der Schule darüber unterhalten.

Auch wenn mittels scummvm diese nostalgischen Spiele auch heute noch gespielt werden können (auch unter Linux), habe ich etwas Neues gefunden: der Python-Challenge. Für mich eine Art Adventure-Game. Hochspannend und fast ein wenig süchtig-machend.

Am Freitag am LUG-Treff hat mich Paul darauf aufmerksam gemacht. Danke für diesen interessanten Tipp. Ich bin jetzt bei Level 5 angelangt (von zurzeit insgesamt 33). Ziel ist immer, die URL so anzupassen, damit man ins nächsten Level kommt. Und die Lösung dazu ist irgendwie auf der Seite versteckt bzw. in einer kleinen Aufgabe verpackt.

Es macht einfach Spass, diese kleinen Rätsel zu lösen. Dabei ist es völlig sinnlos, auch nur mit einem Gedanken an eine „manuelle“ Lösung zu denken. Ein kleines Python-Script muss in jedem Fall her. Seit einigen Tagen bin ich daran, diese ausserordentlich schöne Sprache zu lernen. Die grosse Begeisterung wird mit diesem Python-Challenge noch grösser. Und auch die Motivation, möglichst schnell möglichst viel in Python realisieren zu können.