Freitag, 23. Januar 2009

// TODO: Liste

Mir ist vorhin aufgefallen, dass ich wirklich viele TODO Kommentare in meinen Sourcen verwende.

Beispiel:
// TODO: Free Resources

Nervig wird es dann, wenn man mal ein paar erledigen möchte - denn die müsste ich dann erstmal überall zusammensuchen. Schön wäre eine Liste die mir gleich alle Vorkommnisse, inklusive Dateinamen, Zeilennummer und Inhalt anzeigt. Also hab ich mal ein kleines Skript zusammengehax0rt welches genau das tut für mich. So sieht die Ausgabe aus:

control.h, 161  : Remove this later
prog.h, 7 : Implement error handling. Exceptions and Assertions.
prog.h, 57 : This is a temporary solution.
prog.h, 61 : Make a ref counter for destroying this
test.cpp, 151 : Free Resources Here */
test.cpp, 182 : Make this dynamic
test.cpp, 188 : Free resources

Und das alles (praktisch) mit einer einzigen Zeile:
#/bin/bash
egrep -n 'TODO' src/*.{h,cpp} | \
perl -pe 's#(?:src/)+(.+):+([0-9]+):+.*TODO:?\s?(.+)$#"\1" \2 "\3" #g' | \
xargs printf '%20s, %-4d : %s\n'

Ist das nicht genial? Der blaue Part sollte angepasst werden. :-)

Freitag, 16. Januar 2009

WLAN Signal Power Beep Script

Wieder einmal wurde ich beeindruckt von der IT-Solution™-Power, die Linux dem Normalsterblichen völlig selbstverständlich zur Verfügung stellt. Mein Problem war im Prinzip, dass sich mein WLAN Adapter draußen befindet und ich beim Ausrichten nicht auf meinen Bildschirm schauen konnte wie gut die Signalstärke war. Also schrieb ich mir schnell ein Skript welches mir die 'Link Quality' in Audio Signale mittels PC-Speaker ausgibt - denn die konnte ich draußen noch sehr gut hören.

while true; do

QUALY=`/sbin/iwconfig wlan0 | /bin/grep "Link Quality" | /usr/bin/perl -pe 's/.*=(\d+)\/\d+.*/$1/g'`
FREQ=$(($QUALY * 100))

if [ $FREQ == 0 ]; then
FREQ=100;
fi

echo "Beeping at freq $FREQ"
sleep 1 && /usr/bin/beep -f $FREQ -r 2

done

Natürlich hätte man das auch mit Windows machen können, aber eben nicht so schnell & einfach. Das 'Link Quality' in Zeile 3 gilt anzupassen, sollte es in deutsch sein. Das Kernel Modul für den PC-Speaker sollte geladen sein sowie das Programm `beep` installiert.

Update: Zugegeben, beep ist nicht gerade sehr flexibel. Man kann die Lautstärke nicht einstellen, Ausgabe über Kopfhörer nicht möglich usw. Außerdem musste ich mittlerweile feststellen dass die 'Link Quality' nicht sehr ausschlaggebend für die Gesamt-Qualität ist. Selbst bei über 50% kann die Verbindung immer noch schnell zusammenbrechen wenn der Signal Level einfach zu schlecht ist. Also habe ich mein Skript ein wenig modifiziert, Voraussetzung diesmal ist übrigens sox und eine geeignete Sound-Datei. Ich gehe hier von einem Mindest Signal Level von -90 aus und mein Interface ist wlan0:

while true; do

QUALY=`sudo iwconfig wlan0 | grep "Signal level" | perl -pe 's#.*Signal level:(-\d+) dBm.*#$1#'`
PITCH=`echo "scale=2; $(((92-($QUALY*-1))))/0.01" | bc`
echo -ne "\r$PITCH"
sleep 0.5 && play -q "beep.wav" pitch $PITCH

done

Sonntag, 11. Januar 2009

Vom Kopieren, Abkupfern und Ausbeuten

Schaut man sich mal die Job Angebote bei RAC an, wird man feststellen, dass ziemlich viele Leute heutzutage nicht unbeträchtliche Summen bezahlen um für spezielle Zwecke automatisch an Inhalte von diversen Webseiten ranzukommen. Ich meine damit Web-Scraping, Data Extraction usw.

Ein paar sind legitim, ein paar sind sogar "educational non-profit"-Projekte, ein paar Andere sind sogar hochgradig illegal. Ich fand sogar Bidding-Requests für Spam-Programme. Mich beeindruckte mitunter, dass es sich dabei ziemlich oft um Wetten handelt. Komplexe Applikationen werden da benötigt, die ganze AJAX Webseiten analysieren und die Daten entweder selbst verarbeiten, um Beispielsweise die besten Gewinnchancen auszurechnen, oder um die Daten irgendwo in irgendeine Datenbank einzutragen damit weiß-der-Geier-was damit passiert hinterher. Das ist auch der Grund warum wir mit Captchas genervt werden. Aber für die gibt es dann wieder neue Bids. Ich frage mich ernsthaft wie viele Webseiten ihre Inhalte auf denen von anderen, echten Webseiten zum größten Teil basieren?

Glücklicherweise bin ich davon nicht betroffen. Nur finde ich es interessant, dass sich für solche Jobs immer Programmierer finden - und dann auch noch für irrwitzige Kleinstbeträge von $10. Wie ist sowas überhaupt möglich? Die Antwort: Drittländer. Geldnot, Devisenkurse, und kulturbedingte niedrige Lebensansprüche machen's möglich. Oder in einem Wort: Outsourcing.

Denn genau darauf basiert RAC zum allergrößten Teil. Nicht nur Scraper, nein, ganze Artikel über zig-tausende Wörter werden für ein paar Dollar von irgendwelchen Afrikanern geschrieben. Ob es Pakistani oder Rumänen sind - allesamt unterbieten sie sich auch noch gegenseitig bis aufs Mindeste, um den Job überhaupt zu bekommen. Der Schüler kann sich freuen - ein Inder erledigt seine Hausaufgaben für, umgerechnet, gerade mal ein Menu bei McDonalds. Eigentlich ist das ein Trauerspiel.

Und jetzt die Ironie: RAC wurde hochgelobt und mehrfach ausgezeichnet, unter Anderem als bestes Geschäftsmodell und gilt als eines der am schnellsten wachsenden IT-Unternehmen überhaupt. Natürlich hat das Ganze auch seine Vorteile. Es schafft eine Menge Arbeitsplätze und die, die in der Rangfolge nach oben kommen, können sich damit durchaus etwas aufbauen in ihrem Heimatland. Für komplizierte Sachen werden auch höhere Beträge bezahlt, aber Ausbeutung bleibt es meiner Meinung nach immer noch. Und vor Allem fördert es die Faulheit von Westlern: Wenn ich 4000€ verdiene, warum nicht 90% meiner Arbeit für 200€ von jemand Anderen erledigen lassen...

Gamestar.de

Ach ja, damals. Damals war alles besser, oder? Man trug noch nicht die ganze Last des Lebens auf seinen Schultern. Machte sich keine allzu-großartigen Gedanken um die Zukunft. Wie soviele Dinge, wusste man ebenfalls nicht, dass man als Teenager seine Seele verkauft wenn man sich bei Gamestar.de anmeldet.

Nach einer Slashdot Story in der Google Forscher vor Social-Networking Webseiten warnen, deren Personenbezogenen Daten irgendwann mal zusammengeführt werden könnten und quasi den gläsernen User möglich machen würden - wie es z.B. durch diverse Personen-Suchmaschinen wie Yasni oder 123people bereits geschieht - nahm ich mir vor, mal wieder Klarschiff zu machen.

Vor etwa 8 Jahren meldete ich mich bei Gamestar.de an und musste heute mit Erschrecken feststellen, dass ich meinen öffentlichen(!) Account garnicht löschen kann. Im Forum wird gesagt dass es angeblich technisch nicht möglich ist bla bla bla. Ich kann Allen die das lesen nur davon abraten sich da anzumelden...

Mittwoch, 7. Januar 2009

Passwörter von Files auf Rapidshare besorgen

Ich höre gerne ab und an mal alternativere Musik. Neben diversen Blogs nutze ich hauptsächlich eine Rapidshare Suchmaschine (angepasste Google Search) und die sog. Rapidlibrary. Erstere verweist zum größten Teil auf die Letztere. Das Problem mit der (eigentlich nützlichen) Library ist, dass sie lediglich die Dateinamen indiziert die auf Rapidshare liegen - d.h. es gibt also keine Zusatzinformationen. Und wenn die (zumeist gepackte) Datei passwortgeschützt ist, hat man ein echtes Problem. Das ist mir tatsächlich letztens erst passiert.

Was tut man also in so einem Fall? Man hat das begehrte File und kann so gut wie nichts damit anfangen. Ich lud mir also einen RAR-Passwort-Cracker herunter und versuchte mein Glück. Wir wurde irgendwann klar, dass das Ganze eigentlich ein ziemlich sinnloses Unterfangen ist. Warum, ganz einfach: Die meisten solcher Passwörter lauten 'domain.com'. Man bräuchte also im Prinzip ein Dictionary mit tausenden URLs von Webseiten mit illegalen Inhalten.

Als ich so darüber nachdachte und mein PC währenddessen abertausende von Kombinationen ausprobierte fiel mir plötzlich eine wesentlich einfachere Lösung ein: Man nehme die Zahl eines Rapidshare Links wie bei z.B. 'http://rapidshare.com/files/123456789/file.rar' und gebe sie schlicht bei Google ein. Sie wird so einzigartig sein dass man mit fast 100%iger Sicherheit den Ursprung dieser Datei finden wird und dadurch auch das Passwort. Sollte man plötzlich ein Login brauchen lässt man sich halt einfach den Cache von Google anzeigen.