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

Projects
Books
Archive
About









    Permalink
  1. Arduino | Ich baute ein Megabitmeter

    Vor einiger Zeit hab ich über den Podcast von Tim Pritlove (NSFW) von dem Projekt MegabitMeter erfahren. Es hat mich ehrlichgesagt fasziniert. Der eigentliche (im Namen implimzierte) Zweck zwar weniger, aber gernerell einfach Werte über ein USB Device darstellen zu können. Genaue Anwendungsfälle gibts weiter unten.

    Zunächstmal hab ich mich ausgiebig mit dem HowTo beschäftigt welches ich (bis auf ein paar Stellen) sehr gut finde. Die letzten Paar Unstimmigkeiten habe ich dann mit dem wirklich netten und zuvorkommenden Betreibern des Projekts via Mail abstimmen dürfen :) Das lag aber auch an meinen fehlenden elektrotechnischen Kenntnissen.

    Ich muss dazu sagen, dass ich in der glücklichen Situation war und jemanden kannte, der in einer Firma tätig ist, die solche Messgeräte anfertigt wodurch ich keinen Kit kaufen musste. Das ist auch der Grund warum das Messgerät etwas anders aussieht.

    Ich denke auch das der Sinn des Projekts eher das “do-it-yourself” ist und der wirtschaftliche Erfolg nur eine positiver Nebeneffekt der Betreiber ist… (Zumindest hoffe ich, dass ich das nicht falsch interpretiert habe). Außerdem schwierig war, dass der Kit 2 (incl. dem Arduino) nicht verfügbar war, da laut Twitter gerade keine Arduinio Nano in rauen Mengen billig einzukaufen sind. Den Arduino Prozessor habe ich deswegen von TinkerSoup.de geordert.

    Wenn alles fertig gebastelt ist, kann man dem Gerät einfach via echo Werte übergeben.

    $ echo "200" > /dev/ttyUSB0

    Ein paar Anwendungsbeispeile:

    Zufällige Zahlen auf das Gerät projezieren
    while true; do RND=$(($RANDOM % 99 * 10)); printf "$RND\n" > /dev/ttyUSB0 ;echo $RND; sleep 2 ; done

    Zombie Kill Meter (In Verbindung zu zombies.n0q.org)
    while true ; do mysql -u user -ppw -e \"SELECT kills from zombies.zre_kills ORDER BY id DESC LIMIT 1;\" | grep -v ^kills ; sleep 3; done" > /dev/ttyUSB0

    Port 80 Verbindungen des Webservers
    ssh user@host "while true; do echo \$(( $(netstat -tapn | grep -c -e ':80\s*') * 100 )) ; sleep 2; done" > /dev/ttyUSB0

    An weiteren Snippets bastle ich im Moment noch. Werden eventuell nachgereicht wenn Sie spruchreif sind. Am Ende noch ein riesen Danke für die Software und die Projektidee sowie das wunderbare HowTo an das Team von megabitmeter.de


  2. Permalink
  3. DeadDrop | Erlangen Kirchplatz

    Komme gerade vom ersten Versuch zurück, mich mal an einen DeadDrop zu stöpseln. Leider erfolglos, weil broken. Der genaue Link zum (kaputten) DeadDrop: http://deaddrops.com/db/?page=view&id=395

    Bei aller verwunderung gibt es in der Datenbank keinerlei Funktion einen Toten Toten Drop zu melden. Wie es der Zufall so will gibt es aber genau seit heute(!) einen neuen DeadDrop in Erlangen: http://deaddrops.com/db/?page=view&id=682


  4. Permalink
  5. PostgreSQL | 1000 und 1 Query

    Zur Zeit spiele und bastle ich nebenher mit PostgreSQL rum. Überlege ob ich mal eine alternative DB für das Zombie-Revolution-Environment an den Start bringe…

    Für meinen Use-Case scheint das allerdings nur begrenzt von Nutzen zu sein. Ich mache vielleicht etwas falsch, aber wenn ich 1000 Queries in MySQL kippe, dauert nur einen Bruchteil so lange wie in postgreSQL. Um das zu veranschaulichen:

    $ time for x in $(seq 1 1000) ; do mysql -u root -ppw -e "insert into foobar.foo values ($x, now());" ; done
    real 0m7.349s
    user 0m0.060s
    sys 0m0.380s

    $ time for x in $(seq 1 1000) ; do psql --quiet -d foobar -c "insert into foobar values ($x, now());" ; done
    real 1m28.363s
    user 0m37.450s
    sys 0m13.020s

    Kann mir jemand sagen woran das liegt? Ich kann mir nur schwer vorstellen das PostgreSQL so hinterher hinkt.


  6. Permalink
  7. ROT13 Verschlüsselung in Bash

    Seit ich meinen neuen Arbeitsweg antrete und täglich ca eine Stunde im Zug verbringe, höre ich umso mehr Podcasts. Besonders gut finde ich http://ulm.ccc.de/dev/radio/. Es ging unter anderem um Algorithmen und Kryptologie im Allgemeinen. Unter anderem eben auch die ROT13 Verschlüsselung.

    Grafik aus Wikipedia unter Public Domain

    Ich habe mir überlegt wie schwierig es wohl sein kann, diesen in Bash zu implementieren. Nach kurzem googlen findet man immer wieder eine kleine wirklich ausgefuchste, trickreiche Zeile:

    $ tr A-Za-z N-ZA-Mn-za-m

    Irgendwie war mir das aber zu langweilig, mir die Arbeit von einem vorgefertigten Binary erledigen zu lassen. Ich wollte es in echtem Bash selbst schreiben. Was ich dann auch getan habe.

    Usage:

    $ ./rot13 "hello world"
    uryyb jbeyq

    $ echo "hello world" | ./rot13
    uryyb jbeyq

    # Verschlüsseln und entschlüsseln hintereinander.
    $ echo "hello world" | ./rot13 | ./rot13
    hello world

    # Zeichentabelle anzeigen
    $ ./rot13 -t

    Sollten Zeichen vorkommen, die sicht nicht im Table befinden, werden diese automatisch erkannt und bleiben unverschlüsselt.

    $ ./rot13 "Ich wollte nur [...] und dann ist das Universum explodiert."
    Ipu jbyygr ahe [...] haq qnaa vfg qnf Uavirefhz rkcybqvreg.

    Genau genommen ist es sogar mehr als nur ROT13. Mit wachsendem Zeichen-Table wächst auch automatisch die Verschiebung der Stellen mit. Es ist also möglich einen eigens definierten Table mit Zeichen anzulegen und diesen zu nutzen. Einzige Bedingung: Es muss eine gerade Anzahl von Zeichen sein.

    Und zum Schluss: Danke an /dev/radio für die erhebliche Verkürzung meiner Zugfahrten :)