Ich wollte nur [...] und dann ist das Universum explodiert.

Projects
Books
Archive
About









    Permalink
  1. Mail | Evolution und sein K.O.-Kriterium

    Vor längerer Zeit suchte ich mir einen neuen Mail-Client. Mein Thunderbird 2.XY (ich kann mich wirklich nicht mehr an den genauen Release in Xubuntu 9.10 erinnern) hat desöfteren zicken gemacht. Meine drei E-Mail-Konten werden allesamt von Thunderbird sortiert. Da dies IMAP-Postfächer sind, überträgt sich die Verschiebung von Mails auch auf meine anderen 3 Mail-Clients. Unter anderem Mail von Apple am Macbook, iPhone Mail und Xubuntu Thunderbird zuhause. So muss ich nur einen Regelsatz pflegen und hab trotzdem überall geordnete Mails.


    evo-logo3

    Nun der Single-Point-of-Failure (oder auch Arbeits-PC) der 24 Std in Betrieb ist und Mails sortiert, hängt sich ständig auf, stürzt ab oder ignoriert willkürlich Filter. Gerade als ich 4 Wochen nicht in der Arbeit und teils auch in den USA war, war es sehr ungünstig nach 3 Tagen festzustellen das im Posteingang 600 unsortierte Mails liegen. Ein Umstieg stand an. Habe mich für Evolution entschieden und fand das auch im ersten Moment sehr sehr schön gemacht. Es gibt nur einen riesen Nachteil. Es ist nicht möglich, dass eintreffende Mails automatisch sortiert werden.

    Auch der Lösungsansatz von http://ubuntuforums.org/showthread.php?t=99930 konnte mir nicht helfen.

    Jedesmal STRG + Y zu drücken kommt absolut nicht in Frage. Das funktioniert auch nicht, da ich nicht rund um die Uhr in der Arbeit bin. Später habe ich versucht dieses Event irgendwie über CronJob aus dem Source-Code starten zu lassen. Ohne Erfolg.

    Ich muss wirklich sagen, schöne Arbeit Evolution. Würde dieses tolle Mailprogramm auch sehr gerne weiterhin benutzen. Aber unter diesen Umständen auf keinen Fall. Schade, dass wirklich schöne Software immer an irgendwelchen Kleinigkeiten scheitern. Was keinen Vorwurf gegenüber der Software selbst darstellt. Eher ein kleines Makel was für einzelne User wichtig wäre. So bin ich nun zu Thunderbird 3.0 migriert und liege Nachts wach, aus Angst morgens von Mails überrollt zu werden ;)


  2. Permalink
  3. Bash | Inkrement-Methoden und Effizienz

    Desöfteren schlage ich mich in Bash-Scripting mit den Meldungen “unärer Operator” und ähnlichen Fehlern herum. Inkrementierungen über i=$[$i+1] funktionieren unter entsprechenden Umständen nicht. In Bash mit Zahlen umzugehen ist garnicht so leicht, finde ich. Manchmal werden die Zahlen als Char statt Int interpretiert und manchmal darf man zu einer Variable mit Wert 0 keine Addition durchführen. Das kann natürlich an meinen mangelnden Fähigkeiten liegen, aber heute habe ich mich auf die Suche nach Lösungen zu diesem Thema gemacht.

    # 1
    let i+=1 # increment
    let i-=1 # decrement

    # 2
    let i++ # increment
    let i-- # decrement

    # 3
    i=$[$i+1] # increment
    i=$[$i-1] # decrement

    # 4
    i=$((i+1)) # increment
    i=$((i-1)) # decrement

    # 5
    ((i++)) # increment
    ((i--)) # decrement

    # 6
    i=$(expr $i + 1) # increment
    i=$(expr $i - 1) # decrement

    # 7
    : $[ n = $n + 1 ] # increment
    : $[ n = $n - 1 ] # decrement

    Das waren so die üblichen Varianten mit denen ich mir die letzten Monate geholfen habe. Mitunter wirklich unschöne Sachen. Auf http://tldp.org/LDP/abs/html/declareref.html bin ich dann allerdings auf eine sehr elegante Lösung gestossen. Via “declare” lässt sich eine Variable auf einem bestimmten Typ festnageln. “declare -i VAR” deklariert (haha) die Variable “VAR” nach Integer. So lässt sich quasi direkt damit rechnen. Anschliessend das Beispiel um im Bild zu bleiben:

    # Declare Variante
    declare -i i # -i = integer
    i=$i+1 # increment
    i=$i-1 # decrement

    Das geht wiederrum auch mit mehreren Variablen, Zahlen und Rechenoperationen. Ein kleines einzeiliges Beispiel:

    j=5 ; k=12 ; declare -i i ; i=$j*10+$k/2 ; echo $i

    Natürlich gibt es auch noch andere lustige Modi die man seiner Variable aufs Auge drücken kann:

    declare -r # readonly
    declare -a # array
    declare -x # export variable
    declare -f # function

    Alles in Allem sehr nett. Werde jetzt erstmal ein paar Skripte umbauen. Denke ich.


  4. Permalink
  5. Bash | Scripting-Aufgabe @ School

    Wie erwähnt, gab es gestern den Test in Anwendungsentwicklung.

    Aufgabenstellung: Erstelle ein Skript “rechner”, welches 2 Parameter aufnimmt und über Abfrage innerhalb des Skriptes den Modus auswählbar macht. Folgende Modi und Funktionen müssen enthalten sein:

    Modus 1: Multiplikation
    Usage: ./rechner 1  2
    Ausgabe: Das Ergebnis von 1 * 2 = 2

    Modus 2: Counter
    Usage: ./rechner 2 8
    Ausgabe : 2-3-4-5-6-7-8

    Formatierung muss genau der Vorgabe entsprechen. Außerdem darf der erste Parameter nicht größer als der Zweite sein und falsche Modi-Angabe mit Fehler gemeldet werden.

    Ich muss für meinen Teil ganz ehrlich sagen, dass das wohl ein noch viel unsinnigeres Programm ist. Wenn ich auch glaube, dass es einfach nur um die Erfüllung bestimmter Umstände geht. Der Rest ist anscheinend ziemilch egal.

    Gelöst habe ich das ganze wie folgt:

        #!/bin/bash
        i=$1
        if [ $1 -gt $2 ]; then echo "Falscheingabe" ;  exit 200; fi
    
        echo "Multiplikation = 1"
        echo "Einserschritte = 2"
        echo -n "Modus eingeben:" ; read modus
    
        if [ $modus -eq 1 ] ; then
                echo -n "Die Multiplikation aus $1 * $2 = "; expr $1 \* $2
        elif [ $modus -eq 2 ] ; then
                while [ $i -lt $2 ] ; do
                echo -n  "$i-"
                i=$[$i+1]
                done
                echo "$2"
        else
                echo "Falscheingabe"
        fi

    Und wie von @nicohofmann prophezeit: Die 1 ;)


  6. Permalink
  7. Bash | Linux und Scripting an meiner Schule

    Diese Woche war (bzw. ist immernoch, aber wenn ich in der Vergangenheit spreche fühlt es sich so an als wärs schon vorbei und das ist gut) Berufsschulwoche. Nun jedenfalls habe ich die grosse Freude dort in Bash-Scripting unterrichtet zu werden. Ungewöhnlich für Lehrkörper ist unserer relativ begeisterter Linux-Benutzer und schiebt an allen Enden etwas LinuxKnow-How mit ein. Das ist sehr schön weil ich Bash und Linux sehr mag.

    #!/bin/bash

    Morgen wird es einen Test geben, bei dem wir innerhalb 30 Minuten eine bestimmte Aufgabe scripten sollen und als “Abgabe” sozusagen vorführen müssen.

    Eine Vorbereitung für diesen Test lautete wie folgt:

    Schreibe ein Script, welches durch Angabe von Parametern in verschiedenen Zeitintervallen und maximaler Ausführdauer das aktuelle Datum und die Uhrzeit ausgibt. Außerdem soll zwischen 2 Modi gewechselt werden können. Mit vorangestelltem Text “Uhrzeit ist:” und nur die Uhrzeit.

    Usage Beispiel:
    ./zeitausgabe 2 10 modus

    Naja. Bevor wieder diverse Trolle in den Kommentaren ihrem Ruf gerecht werden: Die Klasse ist bis auf einen %-Anteil von ca 5 komplett Windows-User und haben Bash-Scripting seit ca 7 Schultagen unterrichtet bekommen. In dieser Dimension wird also auch der Test Morgen ausfallen. Ich bin gespannt.

    Meine Lösung der Aufgabe:

    #!/bin/bash
        interval=$1
        gesamtdauer=$2
        modus=$3
        count=0
    
        if [ "$modus" = "txt" ]; then
                while [ $count -lt $gesamtdauer ]; do
                let count+=$interval
                sleep $interval ; echo "Das ist die Systemzeit: $(date)"
                done
        else
                while [ $count -lt $gesamtdauer ]; do
                let count+=$interval
                sleep $interval ; echo $(date)
                done
        fi

  8. Permalink
  9. Offtopic | nyc

    Zugegebenermaßen war die letzten 2 Wochen hier relativ wenig los. Das hatte zwei Gründe.
    Zum einen war ich mit meiner besseren Hälfte für knappe 2 Wochen nach New York geflogen um Urlaub zu machen und andererseits weil die Platten des Servers kurzzeitig den Dienst verweigert haben. Nach 7 Tagen Stillstand (ja, wenn mal wirklich was passiert, muss man ja ca 6000km entfernt sein -_- ) hab ich zwetschge.org dann heute wieder zum Laufen bekommen.

    Relativ simpel via
    fsck -y /dev/ida/c0d01p

    Zum Schluss noch bisschen was auf die Augen :)

    Ich und so.
    DSC00937

    IE8 Fehlermeldung am TimesSquare
    DSC00935

    Empire State Building
    DSC01173

    DSC01164

    DSC00953

    DSC00934

    DSC01145

    DSC01197