Sunday, June 17. 2007
Diese Woche Tristesse Royale gelesen. Sehr unterhaltsam, und enthält einige interessante Aussagen über alle möglichen Aspekte unserer Kultur an sich. Am besten gefällt mir folgende Stelle aus dem Kapitel "Der Rock": Rock wird betrieben von Buben, die am liebsten nur Gitarrensoli spielen wollen. Wer schon einmal in einer Band gespielt hat, weiß, daß es gefährlich wird, sobald der Gitarrist endlich die Pentatonik beherrschaft: Dann will er nämlich seine Soli haben und am liebsten durch das ganze Stück hindurch. Das Warten auf das Solieren wird für ihn dann plötzlich zum Inhalt und Sinn aller Stücke. Rock ist eigentlich von seinem innersten Wesen her genau wie diese Klischee-Bubenband aus der allgemeinen Jugendzeit. Einfach wahr.
Das Buch ist übrigens konstruiert als Unterhaltung von fünf Personen, allesamt Bekanntheiten der deutschsprachigen Popliteratur-Szene. Eigentlich hab ich mir das Buch ja gekauft für die langen Flugzeiten nach Argentinien und zurück, aber wenigstens hab ich noch zwei andere Bücher, und zwar Faserland und dann noch der dicke Wälzer Der Baader Meinhof Komplex, ein Standardwerk über die Geschichte der RAF.
Monday, June 11. 2007
Fefe schreibt, er ist vom BKA wegen eines Dokuments "Verdachtskriterien islamistischer Terrorismus" abgemahnt worden. Er hat daraufhin das File entfernt (keine Angst, archive.org hat zwei Sicherungskopien). Aber dieser Fall zeigt wieder mal, was ich mir schon länger denke: wir brauchen einen zuverlässigen Zensurschutz für relevante Dokumente, konzeptionell ähnlich archive.org, nur soll der Archivierungsvorgang vom User angestoßen werden können. Das ganze muss nicht mal primär öffentlich sein, die archivierten Dokumente sollten allerdings noch entsprechend veröffentlichbar sein. Insbesondere Fefe's Blog ist relativ anfällig für das "Verschwinden" interessanter Dokumente, so verlinkt er auf interessante Artikel wie diesen (ein toller Fall, um die Absurdität der ganzen Sex-Offender-Verfolgung in den USA zu zeigen), bei denen der Originalartikel leider nicht mehr verfügbar ist. So ging es mir bisher schon öfter, dass ich mir alte Artikel aus seinem Blog gesucht habe, und dass der ursprüngliche Artikel, veröffentlicht auf der Internetseite irgendeines US-Provinzblattes, nicht mehr verfügbar war. Das ist natürlich blöd, und deswegen hätte ich für sowas gerne einen (am besten für die Strafverfolgungsbehörden nicht erreichbaren) Server, mit dem man sowas dauerhaft sichern kann. Archive.org ist zwar toll, aber die crawlen eben, und auch bei weitem nicht alles.
Wednesday, June 6. 2007
Ich hab mir gestern den Spaß erlaubt, und ein paar ncurses-Applikationen gefuzzt. Fuzz testing ist eine Testmethode, bei der man ein Programm mit zufälligen Eingaben "beschießt", und schaut, wie das Programm reagiert, insbesondere, ob es abstürzt. Besonders im Security-Bereich ist in letzter Zeit Fuzz testing relativ beliebt geworden, vor allem weil es ziemlich "billig" ist, einen derartigen Test aufzusetzen, und die Chance, Bugs und insbesondere Buffer Overflows zu finden, relativ hoch ist (man erinnere sich nur an diesen Fall).
Auf jeden Fall hab ich snownews und raggle, meine zwei (featuremäßig unterlegenen) "Konkurrenten" in Sachen RSS-Feedreader für die Textkonsole, mal mit einem simplen "cat /dev/urandom | snownews" bzw. "cat /dev/urandom | raggle" gefuzzt, und beide sind so richtig schön gestürzt, snownews mit einer NULL-Pointer-Dereferenzierung, und raggle mit einem Methodenaufruf auf ein nil-Objekt (raggle ist ja in Ruby geschrieben; auf jeden Fall ist der Fehler konzeptionell ähnlich zu einer NULL-Pointer-Dereferenzierung). Na, was hab ich gelacht.
Zugegeben, wenn man das gleiche mit newsbeuter macht, schmiert der auch schön ab, aber daran bin nicht ich schuld, sondern ncurses.
Ein paar andere Applikationen hab ich auch so nebenbei getestet, so etwa slrn (der ist ganz cool, ignoriert stdin, und macht sich stattdessen /dev/tty auf), mutt (der interpretiert Daten auf stdin, wenn stdin kein TTY ist, als Input für ein Mail), centericq (der interpretiert den Datenmüll als normale Eingabe, stürzt aber nicht ab) und vim (der warnt, dass stdin kein TTY ist, läuft aber auch durch).
Monday, June 4. 2007
Freitag und Samstag war ich auf den Linuxwochen in Wien, und ich muss sagen, das war ein sehr produktives Wochenende. Ich hab selbst einiges an newsbeuter weiterarbeiten können, und Clifford hat auch an der STFL einiges erweitert. So wird jetzt z.B. der Cursor in Listen am Anfang des jeweiligen ausgewählten Eintrag platziert, was inbesondere für Braille-Zeilen relevant ist. Ausserdem können jetzt die Keybindings der Widgets durch eine Belegungen ersetzt oder ergänzt werden (in newsbeuter wird mit diesem Feature die Navigation durch Listen konfigurierbar gemacht), und man kann durch Tastendrücke beliebige Events generieren. Auch ansonsten konnte ich einige Leute von newsbeuter überzeugen, die Userbase wird also noch weiter steigen. Insbesondere die Möglichkeit, etwas direkt herzuzeigen, und sofort auf Fragen eingehen zu können, ist wirklich spannend. Man hat unmittelbares User-Feedback, was als Entwickler äußerst angenehm ist.
Thursday, May 31. 2007
Es tut sich wieder was bei newsbeuter. Und zwar hab ich in den letzten Tagen eine Filtersprache entwickelt, um dynamische Abfragen für theoretisch alles zu ermöglichen, primär aber, um Feeds und Artikel in Feeds zu filtern, nach Kriterien wie Autor, Titel, Inhalt, Veröffentlichungsdatum, Anzahl der ungelesenen Artikel, URL des RSS-Feeds, usw. usf. Derzeit ist es so implementiert, dass man in der Feedübersicht die Taste F drückt, eine Abfrage eingibt, die gefilterte Feedübersicht präsentiert kriegt, und diese Filterung wieder löschen kann. Ein Abfrage sieht etwa so aus: unread_count > 0 and unread_count <= 20 Mit dieser Abfrage erhält man alle Feeds, die mindestens einen, aber 20 oder weniger ungelesene Artikel enthalten. Bald werden auch solche Abfragen möglich sein: ( author =~ "Frank" or author =~ "John" ) and ( title =~ "Linux" or title =~ "FreeBSD" ) Das würde alle Artikel der Autoren "Frank" oder "John" (als Text innerhalb der Quotes sind übrigens Regular Expressions möglich) mit "Linux" oder "FreeBSD" im Titel. Eine freie Gestaltung der Abfragen ist möglich, "the sky is the limit" wie es im Englischen so schön heisst. Die Abfrage rssurl =~ "^https:" filtert übrigens alle Feeds mit HTTPS-URL heraus. Wie man merkt, kommt man mit diesen Mitteln schnell zu vorher ungeahnten Möglichkeiten.
Implementiert habe ich den Parser für diese Abfragesprache übrigens mit Coco/R für C++, ein Compilergenerator, der an der Uni Linz entwickelt wird. Das ging ziemlich schnell und intuitiv, und mit den verfügbaren Beispielen für z.B. dem Compiler für die Minisprache Taste war es auch mir Compilerbau-Unerfahrenen möglich, schnell zu einem funktionierenden Parser zu gelangen. Die Code-Templates für die Generierung der Klassen rundherum (die "frame files") musste ich etwas adaptieren, etwa um aus einem std::istream statt aus einem FILE* zu parsen (was den Vorteil hat, über std::ifstream Dateien und über std::istringstream auch Strings anbinden zu können). Die Anbindung an newsbeuter selbst habe ich so gestaltet, dass ich einen Matcher implementiert habe, der einen geparsten Ausdruck gegen jedes beliebige Objekt prüfen kann, solange dieses nur von der Basisklasse matchable (enthält lediglich zwei pure virtual functions zum überprüfen, ob ein Attribut vorhanden ist, bzw. um dessen Wert abzurufen) abgeleitet ist. Damit erhalte ich die größtmögliche Flexibilität, und kann eben theoretisch jedes Objekt matchen (auch wenn das nicht wirklich bei allen Objekten innerhalb von newsbeuter Sinn macht). Die eigentliche Integration war mit diesen Vorarbeiten dann ein Kinderspiel, und mittlerweile ist die Funktion zum Verstecken der bereits gelesenen Feeds sogar über die Filtersprache implementiert (über exakt den gleichen Mechanismus hängen sich dann auch die anderen Filterabfragen rein). Erstmals präsentieren werde ich dieses neue Feature übrigens übermorgen auf den Linuxwochen Wien. Kommt zahlreich.
Endrekursionen sind Rekursionen, bei denen der rekursive Funktionsaufruf die letzte Operation zum Berechnen des Funktionsergebnisses ist. Eine wichtige Eigenschaft von Endrekursionen ist, dass sie zu Iterationen transformiert werden können, d.h. der Speicherverbrauch auf dem Stack bleibt konstant, während bei nicht-endrekursiven Funktionen der Speicherverbrauch auf dem Stack mit der Rekursiontiefe wächst. Das ist insbesondere relevant für funktionale Sprachen, deren einziges Mittel zur Iterationen die Rekursion darstellt. Das sei einmal der Theorieteil.
Gestern hab ich mir aufgrund einer Diskussion mit nion zu dem Thema mal angeschaut, was der gcc mit endrekursiven Funktionen in C denn genau macht. Und siehe da: der gcc transformiert endrekursive C-Funktionen doch tatsächlich zu Iterationen! Folgende Codesnippets zeigen es deutlich:
int sum (int n) { if (n == 0) return 0; return n + sum (n - 1); }
wird zu sum: pushl %ebp xorl %eax, %eax movl %esp, %ebp movl 8(%ebp), %edx .L3: testl %edx, %edx je .L4 addl %edx, %eax decl %edx jmp .L3 .L4: popl %ebp ret
Damit das auch etwas praxisrelevanter wird, hier der Code zum rekursiven Freigeben einer verketteten Liste: void delete_word_r(word_t * e) { if (e) { word_t* next = e->next; if (e->word) free(e->word); free(e); delete_word_r(next); } }
Der gcc macht folgendes daraus: delete_word_r: pushl %ebp movl %esp, %ebp pushl %esi pushl %ebx movl 8(%ebp), %ebx .L33: testl %ebx, %ebx je .L38 movl (%ebx), %eax movl 4(%ebx), %esi testl %eax, %eax je .L36 subl $12, %esp pushl %eax call free addl $16, %esp .L36: subl $12, %esp pushl %ebx movl %esi, %ebx call free addl $16, %esp jmp .L33 .L38: leal -8(%ebp), %esp popl %ebx popl %esi popl %ebp ret
Coole Sache. In beiden Assembler-Snippets ist weder ein "call sum" noch ein "call delete_word_r" zu finden.
Monday, May 28. 2007
Einerseits hab ich wieder ein Panorama gemacht:
Andererseits hab ich noch ein zweites Libellen-Foto gemacht:
Ausserdem gibt es wieder Fotos vom Konzert am Samstag, und zwar hier.
Sunday, May 27. 2007
Folgender Schnappschuss ist mir heute mittag gelungen:
Eine Version in besserer Auflösung gibt's hier.
Friday, May 25. 2007
nion hat einen sehr interessanten Artikel zum Thema Callgraphen generieren veröffentlicht. Darin stellt er zwei verschiedene Methoden vor, um Callgraphen zu generieren, und zwar einerseits ein Tool namens "egypt", das aus der Register transfer language, die GCC per Commandline-Switch ausspucken kann, Files für das Tool "dot" generiert, und andererseits eine Methode, bei der über einen GCC-Commandline-Switch für jeden Funktionsein- und -austritt je ein Funktionsaufruf in den Code eingefügt wird, und über eine per LD_PRELOAD nachgeladene Shared Library zur Laufzeit ein dynamischer Callgraph der tatsächlichen Ausführung aufgezeichnet wird, ebenfalls für dot. Für Programmierer, die sich auch mit der Instrumentierung von Code auseinandersetzen, wird der Artikel auf jeden Fall interessant sein.
Mit C++ funktioniert das ganze grundsätzlich auch, allerdings werden die Graphen bei der Verwendung der C++ Standard Library, insbesondere der über Templates realisierten Klassen, sehr schnell sehr gross. Allein das Starten von newsbeuter bei einem leeren Cache-File spuckt ein ca. 30 MB (!!) großes dot-File aus.
Thursday, May 24. 2007
Nachdem es nur noch weniger als ein Monat dauert, bis ich nach Argentinien aufbreche, schau ich mich langsam um Ausrüstungsgegenstände um, die ich eventuell gebrauchen könnte, z.B. feste Winterschuhe (südliche Hemisphäre und so), die auch wandertauglich sind, oder so essentielle Dinge wie ein ordentlicher, großer Rucksack. Ich will nämlich keine Koffer oder Reisetaschen schleppen. Also bin ich gestern zum Eybl und hab mir mal angeschaut, was die denn da so alles haben. Tja, das Ergebnis ist eher ernüchternd. Erstens einmal, der größte Trekking-Rucksack hat grad mal ein Fassungsvermögen von 70 Liter, kostet schlappe EUR 199,-, und ist schmal und hoch, genau das, was ich eben nicht will (weil dann der Schwerpunkt weit oben ist, das find ich unangenehm zu tragen). Also bin ich einfach in den nächsten grindigen Armyshop gegangen, und hab mir dort angeschaut, was es so an Rucksackmodellen gibt. Und da bin ich auf einen Essl Trekking-Rucksack Modell "RU 85" gestoßen, um günstige EUR 100,-. Das Modell hat mich wesentlich besser angeschaut, nicht nur wegen des Volumens von 85 Litern, sondern auch, weil die Form in etwa so war, wie ich mir das vorgestellt hab, und weil ein Regenschutz integriert ist. Ich hab den also spontan gekauft, und auch gleich dazu verwendet, meine Einkäufe heimzutragen (insbesondere ein 6er Tragerl Mineralwasser, summa summarum ca. 10 kg), und bin vom Tragekomfort her sehr zufrieden. Nachdem in Sachen Wanderschuhen auch nicht passendes gefunden habe, werd ich mir wohl auch da überlegen, auf Equipment aus dem "Militärumfeld" zu setzen. Wären die schweren Feldschuhe nicht sooo hoch, dann wären die eigentlich ideal für meine Anforderungen.
Friday, May 18. 2007
Sicher ist das schon einigen Leuten aufgefallen, dass Videos zu kontroversen Themen der heutigen Zeit, wie z.B. 9/11, Israel, Libanonkrieg, Iran, Irakkrieg, Türkei oder die USA ansich, die entsprechend weit oben gereiht sind bei Youtube, von tausenden von Kommentaren ueberschwemmt, wo sich jede Menge Leute mit variierender Ausdrucksfähigkeit und Rechtschreibkenntnis gegenseitig mit Einzeilern niederflamen. Revisionisten haben in so einer Umgebung natürlich die besten Möglichkeiten, sich auszubreiten. Und so auch bei einem Video auf Youtube, das ich raufgeladen habe, und das einen Ausschnitt der faschistischen Wochenschau zu den Februarkämpfen 1934 in Linz zeigt ( siehe Wikipedia zu den Hintergründen). Gestern hat da ein User mit scheinbarem Bundesheer-Hintergrund doch tatsächlich so Sachen wie "Es lebe die christlichsoziale Partei!" und "Die Christlichsozialen waren die einzigen in Österreich die sich gegen den Nationalsozialismus stellten!" gepostet. Letzteres stimmt natürlich, im Kontext vor 1938, weil die Christlichsozialen die einzigen waren, die das noch machen konnten. Die Opposition steckte ja schon in den austrofaschistischen Anhaltelagern. 1938, ja, da war das was anderes. Da hat ein Christlichsozialer (bzw. ein Mitglied der Nachfolgeorganisation) das Berchtesgadener Abkommen unterschrieben.
Aber die Kommentare zeigen auf jeden Fall eindeutig, wes Geistes Kind diese Person ist. In der Öffentlichkeit würde sich heutzutage sowas niemand mehr trauen zu sagen, da wird die die Gesinnung höchstens durch ein Dollfuß-Bild hier und da zur Schau gestellt. Kennen wir ja aus dem ÖVP-Parlamentsklub. Aber im Internet, da traut sich jeder Internet-Parteikader und jeder Wohnzimmer-General, seine Meinung, und sei sie noch so absurd oder selbstentlarvend, zu postulieren, im Schutze der Pseudonymität. Nicht, dass das per se was schlechtes wäre (ich sollte mal über meine Leidenschaft zu Flames und Trolling in der neoliberalen Blogszene bloggen [die sich in Österreich als "liberal" gibt und gleichzeitig sozialdarwinistische Thesen postuliert, aber das nur nebenbei]), nur gerade in diesem Fall (der Austrofaschismus war ja nur das zweitschlimmste politische System nach der Nazi-Herrschaft, deswegen wird es überhaupt nicht aufgearbeitet) zeigt sich, welche Ideologien in den Köpfen der Menschen noch herumschwirren. Und natürlich werden diese Ideologien in den Youtube-Kommentaren ausgelebt, neben den 9/11-Verschwörungstheoretikern, den Israelverteidigern bzw. -gegnern, den Irankrieg-Befürworter bzw. -Gegnern, den türkischen Nationalisten bzw. Islamisten, und den Verteidigern der US-amerikanischen Politik bzw. deren Gegnern. Ohne dass das eigentlich irgendeinen Sinn hätte, weil eine sinnvolle Diskussion kommt in diesem völlig ungeeigneten Medium (Threading, anyone? Usenet hat halt doch noch seine Qualitäten, nur das kann der 08/15-Youtube-Klicker nicht bedienen) nicht wirklich möglich ist.
So, heute geht's nach Graz, wo morgen die Linuxtage stattfinden. Ich bin mit meinem Vortrag über newsbeuter dabei (schöne Grüße an den Herrn PR, der den Namen jedesmal spöttisch ausspricht, wenn ich ihn erwähne, und der sich längstens eine Windows-GUI-Version davon wünscht). Nun denn, ich hab spontan entschlossen, aufgrund der schlechten Zugverbindung schon um 11:10 loszufahren, damit ich um 14:00 in Graz ankomme. An meinen Slides muss ich noch etwas feilen, da werd ich eh noch genug Zeit haben dafür. Na dann...
Thursday, May 10. 2007
Gerade ist meine DVD-Box von The Prisoner gekommen. Diese Serie wurde Ende der 60er Jahre gedreht, und soll ja sehr schräg und vor allem sehr psychedelisch sein. Ich bin also schon ziemlich gespannt, weitere Berichte folgen. Achja, fuer die Simpsons-Fans in meiner Leserschaft: die Folge The Computer Wore Menace Shoes ist eine einzig große Anspielung auf ebendiese Serie. Eigentlich bin ich durch genau diese Folge auf "The Prisoner" aufmerksam geworden.
Tuesday, May 8. 2007
newsbeuter 0.4 ist released. Die Konfigurationsmöglichkeiten haben sich verbessert, die Geschwindigkeit des Reload hat sich massiv verbessert, es gibt Unit Tests und eine italienische Übersetzung, und, was das tollste ist, newsbeuter unterstützt jetzt auch Snownews/Liferea extensions. Damit gibt es keinen Grund mehr, nicht von snownews auf newsbeuter umzusteigen.
Thursday, May 3. 2007
Heute beim "Abpfiff" gewesen... der Abpfiff bei der Freistädter Brauerei ist ein "all you can drink"-Event, wo man EUR 6,- zahlt, was zu essen und ein Pfiff-Glas kriegt, und sich soviel Bier hinter die Binde kippen kann, wie man will, zumindest zwei Stunden lang. In den zwei Stunden hab ich immerhin 13 getrunken, und 14 gezapft. Dementsprechend geht's mir auch.
|