[Logo]

Archive for the ‘Software’ Category

Bash-Prompt

Donnerstag, November 19th, 2009

Mal ein neuer Post zu praktischen Bash-Prompts, nachdem ich den alten doch wieder um einiges überarbeitet habe.

Ziele:

  • Übersichtlichkeit
  • Möglichst lange Eingabezeilen ohne Umbruch
  • Prompt soll auf verschiedenen Hosts unterscheidbar sein
  • Der Prompt soll möglichst informativ sein.

Lösung:

  • Zweizeiliger Prompt, eine Zeile mit vielen Informationen, eine mit nur einem > und der Eingabe dahinter.
  • Username und Hostname Farbkodiert, geschieht automatisch ueber eine Hashing-Funktion
  • Zeitausgabe ermöglicht es einfach zu sehen wann der Befehl beendet wurde, und damit auch wie lange er gebraucht hat.
  • Smiley in der Ausgabe zeigt ob der Befehl korrekt gelaufen ist (Return Code 0 = kein Fehler)

Um Farben aus hostname/username zu generieren, kann man einfach md5sum als hash-Funktion nutzen, und dann das erste Byte der md5summe ansehen. Das tut die Funktion hashcolor in meiner .bashrc. Dabei habe ich mir noch die Freiheit genommen, die Farben so zu sortieren, dass der Text  “root” eine Rote Farbe bekommt.

die Umgebungsvariable PROMPT_COMMAND darf einen Befehl enthalten, der ist in dem Falle die Funktion Prompt, welche auf der Linux-Konsole nur setps1 aufruft um den Prompt zu ändern, und in X-Terminals aber auch settitle und mittels Escape-Code den Titel des Fensters auf das letzte genutzte Kommando zu setyen.

Der Prompt sieht bei mir jetzt so aus:

12:59:56 :-) username@hostname:~

>

Die .bashrc dazu:

# If running interactively, then:
if [ "$PS1" ]; then
    ## aendert den xterm-Titel in das zuletzt benutzte Kommando usw.
    xtitle() {
        echo -ne "\033]0;[$(history 1 | cut -b 8-30)] $USER@$HOSTNAME:$PWD\007";
    }
    setps1() {
        if [ $? -eq 0 ];then smiley=":-)"; else smiley=":-(";fi
        export PS1="\t $smiley \[`hashcolor $USER`\]\u\[$grey\]@\[`hashcolor $HOSTNAME`\]\H\[$grey\]:\[$yellow\]\w\n\[$normal\]> "
    }
    if [ "${TERM}" != "linux" ]; then
        prompt() {
            setps1
            xtitle
        }
    else
        prompt() {
            setps1
        }
    fi
    PROMPT_COMMAND='prompt'
fi

normal='\e[0m'
black='\e[0;30m'
bblack='\e[1;30m'
red='\e[0;31m'
bred='\e[1;31m'
green='\e[0;32m'
bgreen='\e[1;32m'
yellow='\e[0;33m'
byellow='\e[1;33m'
blue='\e[0;34m'
bblue='\e[1;34m'
purple='\e[0;35m'
bpurple='\e[1;35m'
blue2='\e[0;36m'
bblue2='\e[1;36m'
white='\e[0;37m'
bwhite='\e[1;37m'
grey='\e[0;39m'
bgrey='\e[1;39m'

bgnorm='\e[0;0m'
bgblack='\e[0;40m'
bgred='\e[0;41m'
bggreen='\e[0;42m'
bgyellow='\e[0;43m'
bgblue='\e[0;44m'
bgpurple='\e[0;45m'
bgblue2='\e[0;46m'
bggrey='\e[0;47m'

function hashcolor {
    case $(echo $1|md5sum|cut -b 1) in
        0)echo -en $red;;
        1)echo -en $bblue;;
        2)echo -en $green;;
        3)echo -en $bgrey;;
        4)echo -en $yellow;;
        5)echo -en $byellow;;
        6)echo -en $blue;;
        7)echo -en $bred;;
        8)echo -en $purple;;
        9)echo -en $bpurple;;
        a)echo -en $blue2;;
        b)echo -en $bblue2;;
        c)echo -en $grey;;
        d)echo -en $bgreen;;
        e)echo -en $white;;
        f)echo -en $bwhite;;
    esac
}

Die interessanten Manpages zu dem Thema sind:

  • man console_codes erklärt die Escape Codes z.B. für Farben oder auch um den Titel eines X-Terminals zu ändern.
  • man bash erklärt, dass man Farbcodes in \[...\] einschliessen sollte, damit sie den Zeilenumbruch im Prompt nicht kaputt machen.

Finger weg von Ubuntu One?

Freitag, Oktober 30th, 2009

Dass es gefährlich ist private Daten unverschlüsselt auf fremden Servern zu lagern, sollte einem zwar klar sein, aber für manche Daten reicht diese Sicherheit ja vielleicht. Aber Ubuntu One hat eine ähnliche Klausel wie ICQ in ihren “Terms and Conditions”:

9. Collection and use of your data. We may collect certain non-personally-identifiable information, which is located on your computer. The information collected may include statistics relating to how often data is transferred, and performance metrics in relation to software and configuration. You agree this information may be retained and used by Canonical.

Ähnlich wie im Falle ICQ kann man argumentieren “ja die meinen ja nur Statistiken …”, rechtlich jedoch akzeptiert man dass alle Daten die einen nicht persönlich identifizieren von Canoncial gesammelt und benutzt werden dürfen.
Also Rat für alle die ihre Daten nicht Canoncial schenken möchten: Finger weg von Ubuntu One!

Ach ja, nur damit es erwähnt ist, sie lassen sich natürlich auch zusichern, dass sie die Nutzerdaten an die Polizei weitergeben dürfen, wenn sie gesetzlich dazu verpflichtet sind. Da wird man aber kaum einen Anbieter finden, der keine solche Klausel hat.

Paxle Suchframework released

Donnerstag, April 16th, 2009

Paxle ist ein komplettes, modulares Suchframework auf OSGi-Basis, bei dem alle funktionalen Komponenten sauber voneinander getrennt sind und deshalb einzeln ersetzt werden können. Metasuchfähigkeit ist über die Definition mehrerer Suchprovider möglich.
Zusätzlich zur Anbindung externer Quellen enthält Paxle auch einen Suchprovider der eine durch Crawling des Internets erzeugte lokale Datenbank auf dem Computer des Nutzers abfragt. Die Datenbankerstellung ist ebenfalls von Paxle abgedeckt, allerdings lassen sich auch andere DBs mit Paxle betreiben.
Paxle hat eine wenig restriktive Lizenz und ist Open-Source-Software im Sinne der OSI und FSF.

exceptions.TypeError: Error when calling the metaclass bases

Mittwoch, Februar 25th, 2009

Wenn Python diesen komischen Fehler anzeigt, heißt das oft dass man versucht ein Modul (statt einer Klasse) zu instanziieren.

.ape / .cue Dateien konvertieren

Dienstag, Februar 24th, 2009

APE ist das Monkey’s Audio Format, ein verlustfreier Audiocodec. Abgesehen davon kennt natürlich kaum ein Player das Format. Man kann die Dateien aber unter Linux mit den Programmen mplayer, bchunk, lame relativ einfach konvertieren:
mplayer -vo null -vc null -ao pcm:fast *ape;bchunk -w audiodump.wav *.cue track;rm audiodump.wav;for i in *.wav;do lame --preset extreme $i;done;rm *.wav
Im Detail:
mplayer -vo null -vc null -ao pcm:fast *.ape
Spielt die .ape Datei quasi ab und speichert das Ergebnis in audiodump.wav.
bchunk -w audiodump.wav *.cue track
trennt audiodump.wav an den Stellen die in der .cue Datei stehen, und nennt die Ergebnisse trackXY.wav. Mit -w schreibt es zusätzlich Wave-Header.
rm audiodump.wav
Entfernt audiodump.wav damit es nicht auch (als Ganzes) nochmal kodiert wird.
for i in *.wav;do lame --preset extreme $i;done
Kodiert die .wav in .mp3 mit sehr guter Qualität.
rm *.wav
Entfernt die übrig gebliebenen .wav Dateien.

Die Commandline geht davon aus, dass sich im Verzeichnis nur eine .ape und eine .cue Datei befinden, und dann funktioniert der Befehl ohne die Namen zu kennen. Befinden sich mehrere im aktuellem Ordner, funktionieren die Anweisungen nicht, weil zum Beispiel der erste audiodump.wav durch den zweiten direkt überschrieben wird.

picpaste.py – fast image uploading

Sonntag, Februar 8th, 2009

picpaste.de is a nice website for posting images online. It stores images up to 2 weeks without access, and it provides a delete link, so the image can be removed before the chosen time.

With picpaste.py (markup) you can upload an image real fast: Just type “picpaste.py /path/to/image.jpg” on the commandline. you will get the image-link and the deletion-link on standard output, and if xclip is installed, the image-link is copied to the clipboard.

The MultipartPostHandler library is LGPL licensed, the main script can be used under the terms of the WTFPL.

lyrics search for the current song with MPD

Montag, Januar 5th, 2009

Another Tipp for Users of MPD:

firefox “https://ssl.scroogle.org/cgi-bin/nbbw.cgi?Gw=$(mpc|head -n1) lyrics&n=1″

searches for the current songname + “lyrics” on Scroogle (yeah, privacy).

Of course you can just change “firefox” i.e to “opera” and “https://ssl.scroogle.org/cgi-bin/nbbw.cgi?Gw=” to “http://google.de/search?q=” or what search-engine and browser you like.

Integer Underflow im KDE-Kalender

Montag, Dezember 22nd, 2008

Integer Underflow im KDE-Kalender (Ogg Theora Video)

Wenn man im KDE-Kalender in dem Uhr-Applet von KDE 3.5.10 zurückblättert bis zum September 1752, findet man diesen lustigen “Bug”. Vielleicht testet ja mal jemand ob der in KDE4 auch noch drin ist, ansonsten schreibe ich vielleicht ein Update wenn ich auf KDE4 gewechselt bin :D .

Wordpress 2.7

Freitag, Dezember 12th, 2008

Läuft hier jetzt. Scheint keine Probleme zu geben, das Admin-Interface ist tatsächlich besser.

Die üblichen Maßnahmen (update.php leeren) sind natürlich gemacht, danach noch die Zeile die im Dashboard einen Fehler erzeug in dashboard.php auskommentieren, sowie den wordpress.org und blogsearch.google.com feed aus dem Dashboard raus nehmen.
Außerdem habe ich noch die wp-comments-post.php wieder verschoben, damit die SPAM-Bots ins Leere laufen.

Für die neue Kommentarfunktion werde ich wohl irgendwann das Theme updaten müssen, aber das hat Zeit bis Wordpress 2.7 sich gut bewährt hat. Sollte irgendwas kaputt sein, meldet es ;) .

Google Chrome: Smileys gratis und schlechte Übersetzungen

Montag, September 22nd, 2008

Nachdem unter anderem André sich im Artikel über Google Chrome fragte was mit dieser Zeile gemeint ist:

-Bösartiger Software, mit der Ihre Tastatureingaben festgehalten werden (dafür bekommen Sie Smileys gratis)

Hier die einfache Aufklärung: Es ist eine ziemlich schlechte Übersetzung.

Eine kurze Recherche nach dem Text führt zur deutschen Übersetzung von Chrome(ium). Klickt man sich dann kurz weiter zur englischen Übersetzung, kann man das Original lesen, welches deutlich mehr Sinn ergibt:

Malicious software that tracks your keystrokes in exchange for free smileys

Das heißt sinnvoll übersetzt in etwa:

-Bösartige Software, welche ihre Eingaben aufzeichnet im Austausch gegen kostenlose Smileys“.

Gemeint ist also Spyware, welche verpackt in ein buntes Spassprogramm (kostenlose Smileys, lila Affen, etc.) den Nutzer ausspioniert.