programmierung - 6.2.2005 - 1.4.2005

upcoming change in PLT Scheme v300 - lambda, filter und fold raus. Jawoll. Schliesslich hat das der Python-Guido ja auch schon gefordert.

class.jabber.php ist eine PHP-Klasse zur Programmierung von Jabber-Diensten.

Cat2Tag Plugin

Das Cat2Tag Plugin ist etwas das mir noch für mein Fotoblog fehlte: eine Möglichkeit mit den WordPress Kategorien wie mit Flickr-Tags zu arbeiten.

Es werden die häufigsten Tags (20 Stück, kann auf alle umgestellt werden) angeboten in einer kleinen JavaScript Leiste und zusätzlich gibts ein Eingabefeld für Tags in die man einfach manuell weitere eingeben kann (oder eben aus der Liste der häufigsten welche reinklicken kann). Die Default-Kategorie wird einfach als Wort in der Tagliste aufgeführt. Neue Tags können einfach durch Verwendung derselben angelegt werden. Sehr praktisch.

Einzig die Hierarchie der Kategorien wird natürlich nicht abgebildet - die ist aber bei Tags eh nicht so wirklich interessant, die Hierarchie spielt bei Tags ja keine echte Rolle. Genauso wird die Tagbeschreibung (Kategorienbeschreibung) nicht gepflegt, die muss man dann nachträglich von Hand überarbeiten wenn man da was sinnvolles stehen haben will (z.B. für die Feeds).

Ein Problem hat das Plugin noch: es setzt das scharfe s "ß" nicht korrekt um bei der Kürzung von Umlauten aus Tagnamen. Scheint aber ein Problem zu sein das WordPress auch hat - auch bei manueller Kategorienanlage wird das "ß" nicht korrekt aufgelöst. Mit denen sollte man also vorsichtig sein. Und natürlich werden Umlaute nicht auf ihre Langform gewandelt sondern auf ihre Grundform - aus "ä" wird "a". Was die Tag-URLs dementsprechend etwas problematisch macht, da User wissen müssen wie der Tagname sich auf die URL umsetzt, wenn sie die URL selber hacken wollen. Das ist aber ebenfalls ein generelles Problem der Internationalization.

Eine Idee der Verbesserung wäre noch eine zusätzliche Querystring-Regel mit der man URLs mit Tag-Kombinationen (Natur+Tiere) realisieren könnte.

Ansonsten aber ein wirklich nettes Plugin mit einer für mich sehr praktischen Funktionalität.

APLX Version 2: The exciting cross-platform APL

APLX ist eine APL2 Implementation für verschiedene Systeme: Linux, Windows, Mac OS X. Leider etwas teuer - eine Personal-Version gibts nur für Linux billiger, ansonsten gibts auf dem Mac nur eine Evaluation-Version. Und wie die das Problem mit den APL-Sonderzeichen gelöst haben steht da auch nicht - vermutlich über kombinierte Tasten oder ähnliches. Ich wüsste jedenfalls nicht das es eine APL-USB-Tastatur gäbe.

Irgendwie hätte ich mal wieder Spaß mit APL rumzuspielen - die Sprache ist herrlich verrückt und hat ein paar Ecken die heute noch (ausser in Sprachen wie J und K natürlich, bedingt auch in Sisal) ihr Gegenstück suchen können. Speziell die Möglichkeit ganze Arrays von Werten auf einen Schlag zu bearbeiten und mit mächtigen Higher-Order-Funktionen zusammenzufassen ist wirklich spannend.

J gibt es mitlerweile auch in einer OS X Version, leider erst ab 10.3. Wäre noch eine Alternative, J kann im Prinzip als APL-in-ASCII betrachtet werden (wobei es eine ganze Menge Bereinigungen in der Sprachtheorie bietet gegenüber APL).

Alice ist jetzt in der Version 1.1 verfügbar - dabei ist auch ein Mac OS X Port. Leider nur über den Unix-Weg, also mit X11-Interface und ohne den native Code Just-in-Time-Compiler, aber immerhin kann man mit der Sprache mal spielen auf dem Mac. Zur Erinnerung: Alice ist ein ML-Dialekt mit starkem Fokus auf guter Unterstützung von Parallelität.

DrScheme 300er Serie

freshmeat.net: Project details for DrScheme: Yeeeehaaaa!!!! DrScheme wird Unicode-tauglich. Sehr schön. Ok, die anderen Features klingen auch sehr gut, vor allem die über Threads portablen Continuations - gibt ganz neue Möglichkeiten für Schweinereien im Code

Auf jeden Fall gehts bei der besten Scheme-Umgebung weiter und sie wird noch besser.

PythonEggs sind sowas wie .jar-Files für Python. Nur das sie auf ZIP aufbauen. Wird auch endlich Zeit, das man Python-Anwendungen als ein einzelnes File mit Abhängigkeitsdefinitionen runterladen kann und die Installation von Python Anwendungen damit endlich einfacher wird.

Ajaxing the Rails - die neueste Release von Ruby on Rails bietet auch Ajax-Support. Wobei hier der eigentliche Ajax-Teil wesentlich stärker integriert ist als bei anderen Frameworks - könnte interessant sein, denn bisher ist Ajax doch eher frickelig zu nutzen in grösseren Projekten.

Advanced Bash-Scripting Guide - alles was ihr schon immer über Bash-Scripting wissen wolltet aber nie zu fragen gewagt habt. Und noch ein bischen was ihr nie auf die Idee gekommen wäret zu fragen. Und dann noch das, was ihr eigentlich niemals hättet wissen wollen, aber trotzdem drin steht

The Man in Blue > Experiments > widgEditor ist ein Wysiwig-Editor für HTML der Textareas im Browser austauscht und in JavaScript geschrieben ist. Er hat einen integrierten Fallback auf normale Textareas, so das Browser ohne JavaScript immer noch mit normalem Text arbeiten können. Und er produziert sauberes XHTML. Und: er funktioniert bei mir tatsächlich mal vernünftig.

Bildbeschneidung mit DHTML und PHP dahinter. Könnte in einem Photo-Plugin ganz praktisch sein.

Agata Report ist sowas wie Crystal Reports, nur für Linux und Open Source. Könnte mal gelegentlich ganz praktisch sein, zumal es wohl auch Reports generieren kann die leicht auf einem Webserver laufen können.

Clement kapiert Demokratie nicht

Anders kann man die Lügen um die Position des Wirtschaftsministerium zur Patentrichtlinie nicht interpretieren. Es gibt einen eindeutigen und von allen Fraktionen getragenen Beschluss des Bundestages. Aber das Wirtschaftsministerium scheisst auf die Meinung des Parlamentes wie auch der Experten.

Übrigens ist das angebrachte Beispiel von der "zeit und platzsparenden Speicherung von Daten" eines das genau die Probleme anzeigt: es gab immer wieder Probleme mit Patenten auf Kompressionsalgorithmen die Formate defakto versiegelten für die Nutzung in Open Source Programmen - was gerade der in aller Munde geführten Interoperabilität ein ziemliches Bein stellt. Microsoft bräuchte nur die XML-Formate einfach in einem eigenen binären XML-Format speichern und könnte so per Patent in Europa verhindern das Open Source Software die Dokumente liest.

Andere - ältere - Beispiele für genau dieses Problem sind die GIF-Speicherung und der LZW-Algorithmus. Beides hat massive Probleme bereitet bei der Interoperabilität und genau das steht uns mit der vorliegenden Richtlinie auch in Europa bevor.

Die Behauptung des Wirtschaftsministerium das da nichts zu befürchten wäre ist also nichts weiter als eine dumme und durchschaubare Lüge. Letzten Endes wird hier von der Bundesregierung den Branchenriesen in die Hände gespielt und das auf Kosten des Mittelstandes und auf Kosten der Open Source Software.

Mehr dazu wie üblich beim FFII.

Wer mit XMLHTTPRequest und Common Lisp spielen will, CLiki : cl-ajax liefert das dafür nötige Framework zur einfachen Integration von Common Lisp Funktionen in Webanwendungen auf Araneida-Basis.

Naked Objects sind keine Schweinerei und Unanständigkeit, sondern einfach die Idee seine Objekte in Smalltalk direkt der Welt auszusetzen - jedes Objekt hat also sozusagen sein eigenes Mini-GUI mit dabei. Dadurch arbeiten Benutzer direkt mit den eigentlichen Objekten und viele Probleme von GUI-Frameworks fallen weg - es muss nicht mehr explizit zwischen GUI und Objekt vermittelt werden, das machen die Objekte selber.

Und wer kein Lisp mag oder kann, vielleicht hilft ja SAJAX - Simple Ajax Toolkit by ModernMethod - XMLHTTPRequest Toolkit for PHP das nicht nur PHP sondern auch noch Io, Lua, Perl, Python und Ruby unterstützt.

Usable XMLHttpRequest in Practice ist ein interessanter kleiner Artikel der anhand eines Beispiels die Nutzung von XMLHttpRequest erläutert und auf Useability-Aspekte eingeht.

ParenScript ist ein Compiler der Lisp nach JavaScript umwandelt. Für Lisp-basierte Webserver und Anwendungsframeworks sicherlich eine ziemlich geniale Sache, weil der Programmierer in seinen gewohnten Sprachmitteln arbeiten kann. Clientside Lisp auf Umwegen halt ...

CherryFlow - Continuations in Python

CherryFlow ist ein Continuation-based Framework für Python und CherryPy. Damit lassen sich auch in Python continuation-basierte Webserver bauen. Das besondere: CherryFlow benutzt entweder Stackless' dumpable Generators oder StateSaver, eine kleine C-Erweiterung die es unter normalem Python erlaubt laufende Generatoren zu kopieren. Genau das was ich damals gesucht habe um meine Continuations für Python zu vervollständigen

Poly/ML Home Page

Poly/ML ist eine sehr schnelle Implementation von Standard ML 97. Interessante Besonderheit (abgesehen von der Performance): das System orientiert sich weitaus stärker an Lisp-Systemen als an klassischen Kommandozeilencompilern. Man hat eine interaktive Arbeitsumgebung und ein Image das automatisch bei Beenden der Session gespeichert wird und somit alle Definitionen beim nächsten Lauf wieder verfügbar macht.

Der Vorteil dieser Arbeitsweise ist einfach das man sich sein System im Laufe der Zeit immer besser anpasst an die eigenen Bedürfnisse. Zusammen mit dem FFI und externen Libraries kann man sich so nach und nach eine schöne Umgebung zusammenstellen die genau für die anvisierten Ziele optimiert ist. Ausserdem spart man sich oft extra Objekt-Datenbanken: man speichert Werte (bzw. im Falle von ML dann Strukturen) einfach im Image und behält sie dort.

Dadurch das Poly/ML das Image einfach mittels mmap in den Adressraum hängt und nicht erst liest und später wieder schreibt ist das ganze auch recht fix - bei Image-Systemen stört ja häufig der Systemstart.

Oh, und Poly/ML läuft übrigens problemlos unter OS X ...

Die Geschwindigkeit des Compilers setzt sich leider im generierten Code nicht unbedingt fort, wie man aus diesem Vergleich sehen kann. Aber ähnlich wie bei OpenMCL ist die schnelle Umgebung gerade beim Prototyping durchaus von Vorteil. Man kann ja hinterher einen Compiler ansetzen der zwar länger braucht, aber dafür dann besser optimierten Code ausspuckt wie MLTon.

Ruby stuff for Macs

Ruby stuff for Macs ist ein fertiges DMG für sowohl Panther als auch Jaguar mit fertigem Ruby 1.8.2 und diversen Erweiterungen (unter anderem Rails und Rubygems!). Leider ist das 10.2 DMG kaputt - ich hab den Autor mal angeschrieben.

Man kann natürlich auch Ruby selber kompilieren, sonderlich kompliziert ist das nicht. Für OS X gibts das auch in den DarwinPorts. Nur zickt da der Port unter 10.2 rum und kann nicht sauber kompiliert werden. Irgendwas im iconv-Modul - Syntaxfehler.

Irgendwie mag mein System heute kein Ruby

Update: jetzt funktioniert das Paket.

The fate of reduce() in Python 3000

The fate of reduce() in Python 3000 - tja, dann wird es wohl wirklich Zeit für mich die Sprache zu wechseln. Denn wer so blöd ist sich von Lisp-Wurzeln zu lösen wird nichts weiter schaffen als die mächtigeren Möglichkeiten mit primitiven Mitteln nachzubauen. Ruby sieht auch sehr brauchbar aus und so langsam gewöhne ich mich an die Syntax ...

Anonyme Funktionen (lambda in Python, Blöcke in Ruby oder Smalltalk) sind weitaus mehr als nur obskure Lisp-Überbleibsel. Ich hab viele Programmstücke die genau davon leben das ich Codeblöcke anonym durchreichen kann - letzten Endes dient das dazu seine eigenen Programmstrukturen zu schreiben. In Smalltalk und ähnlichen Sprachen (und in gewissem Sinne auch in Ruby) kann man darüber eine Sprache selber erweitern und entwickeln - was gerade einer der Stärken von Lisp und seinen Freunden ist (und deshalb ja auch in Smalltalk und seinen Freunden sich wiederfindet - die Smalltalk-Entwickler hatten eine Menge Lisp-Know-How).

Sprachen die sich an der Stelle selber kastrieren und meinen das Iteratoren und List-Comprehension (im Prinzip nichts weiter als verkürzt geschriebene Schleifen) wirklich ein brauchbarer Ersatz dafür sind sich eigene Kontrollstrukturen und eigene Sprachmittel programmieren zu können sind für mich mitlerweile völlig uninteressant geworden. Ich mag keine Sprachdesigner die meinen schlauer als der spätere Programmierer zu sein und denen ein Sprachkorsett aufzwingen wollen.

UnCommon Web Tutorial

Der Artikel hyper-cliki : Web/Continuation beschreibt wie man mit dem Continuation-basierten Webframework UnCommon Web in Common Lisp Webanwendungen schreibt. Sehr interessant, da Common Lisp selber ja bei Continuations deutlich mehr gehandicaped ist als Scheme - in Scheme sind Continuations per Standard first-class Objekte, in Common Lisp nicht.

Continuation-basierte Webserver haben den Vorteil das der eigentliche Code sehr ähnlich klassischen Anwendungen strukturiert werden kann. Man muss sich viel weniger auf das Event-Modell der klassischen Webprogrammierung einlassen und hat viel seltener mit expliziten Session-Konstrukten zu tun, weil die Session bei einem continuation-basierten Websystem implizit ist.

Continuation-basierte Web-Frameworks gibt es für folgende Sprachen:

  • [Smalltalk][1]
  • [Common Lisp][2]
  • [Scheme][3] (leider kein direkter Link auf den Webserver selber)
  • [SISC Scheme][4]
  • [Ruby][5] gleich [zweimal][6]
  • [Python (über CherryPy und entweder Stackless oder StateSaver)][7]

Sicherlich gibt es noch mehr, aber das sind die die ich auf die Schnelle finden konnte.

Hedgehog ist ein netter kleiner Lisp-Compiler und Bytecode-Interpreter mit speziellem Fokus auf geringem Resourcenverbrauch. Leider leidet die Interaktivität und das Debugging darunter: keine Tracebacks und keine REPL, nur Scripts laufenlassen und über grep im Pseudo-Assembler-Source nach der Abbruchstelle suchen. Da wäre es schön wenn die Sprache diese interaktiven Features per Option bieten könnte - in kleinen Kisten kann man das dann ja weglassen.

cyrusharmon.org: More GCC-XML (new and improved -- now with pr0n!) - bekloppter Titel, aber geniale Sache: SBCL kriegt native Bindings zum Carbon API. Und stellt damit das zweite Open Source Lisp-System mit Integration in die OS X Welt dar (wobei Cocoa-Bindings natürlich noch cooler wären - aber das bietet bis jetzt im Open Source Bereich nur OpenMCL).

How to setup WebObjects 5.1 on Linux

How to setup WebObjects 5.1 on Linux beschreibt wie man WebObjects (das Original von Apple) unter Linux zum Laufen kriegt - wegen der Java-Basis der 5er-Versionen ist das ja mitlerweile deutlich problemloser geworden. Wobei mich natürlich die Objective-C Version noch weitaus mehr für Linux interessiert hätte - Java ist auf Linux nunmal nicht der grosse Überflieger was Performance angeht ...

Nunja, für die Objective-C-Version kann man auch gut auf SOPE( ich berichtete) zurückgreifen, es ist ja in vielen Bereichen kompatibel. Für den Einsatz von XCode gibt es ja auch Projekttemplates, so das man ähnlichen Komfort bei der Entwicklung geboten bekommt. Ich muss mal probieren wie das mit ProjectBuilder aussieht.

OpenACS

OpenACS ist eine immer wieder gerne übersehene Web-Applikations-Plattform die auf dem AOLServer und PostgreSQL basiert.

OpenACS liefert auch gleich noch einen ganzen Satz von fertigen Modulen mit - getreu seinem Namen als Ars Digita Community System bietet es einen ganzen Stall von fertigen Anwendungen. Ein komplettes CMS ist auch dabei. Und das ganze ist teilweise schon mehrere Jahre alt - aus Zeiten als andere CMS-Projekte noch davon träumten erdacht zu werden.

Der AOLServer ist ein multithreaded Webserver der TCL als Scriptingsprache einsetzt so wie man Apache oft mit PHP kombiniert. Allerdings ist der AOLServer sehr schnell und erstaunlich resourcenschonend. Das Teil heisst übrigens mit gutem Grund so: grössere Teile von AOL laufen auf dem Server und er stammt von dort. Taugt trotzdem was

Alles in allem ein spannender Oldtimer mit interessanten Features und - bedingt durch das Alter - einer recht guten Dokumentation. Aber auch einigen Warzen und Ecken die mitlerweile vielleicht etwas seltsam anmuten. Man muss dabei eben bedenken das zu Zeiten als ACS entwickelt wurde die Definition von CMS erst im Entstehen war.

SKYRiX Object Publishing Environment

Das SKYRiX Object Publishing Environment ist eine freie Variante eines Web-Applikations-Framework nach dem Modell von WebObjects. Speziell unter dem Aspekt das WebObjects neuerdings von Objective-C nach Java wandert ist SOPE sehr spannend - denn es ist immer noch Objective-C durch und durch.

Ausserdem läuft es nicht nur unter OS X, sondern auch unter Linux. Und mir gefällt natürlich das es auf PostgreSQL baut und nicht auf diesem glorifizierten Karteikasten ...

Wär glatt mal wieder ein Grund meine etwas eingerosteten Objective-C Kenntnisse aufzufrischen. Allerdings ist die Dokumentation noch recht spartanisch - man soll aber auf die WebObjects-Dokumentation zurückgreifen können für viele Bereiche.

Für Debian Sarge gibts übrigens ein Repository mit fertigen Paketen für SOPE. Steht allerdings noch nicht auf deren Homepage, nur auf der Freshmeat-Projekt-Seite zu SOPE.

Es ist übrigens die Basis für OpenGroupware.org - ein Groupware-Baukasten (nach eigener Aussage der Entwickler). Und es gibt eine Live-CD mit der man das ganze Monster testen kann, ohne gross was zu installieren.

Kann mir mal jemand erklären wieso ich das Projekt bisher nie gesehen habe? Hab ich Tomaten auf den Augen? Strange ...

Eine Warnung an Leute die damit loslegen wollen (ich hab gerade alles kompiliert, installiert und angetestet): die Dokumentation zu SOPE selber als nicht existent zu bezeichnen wäre noch geschmeichelt

Als Tipp: eine WebObjects-Anwendung ist sozusagen ein kleiner Webserver in sich - man startet sie einfach und hängt den Apache mittels des mod_ngobjweb Moduls vor diesen kleinen Mini-Server und dann kann man auf die Elemente der Applikation zugreifen. Ist nicht gerade offensichtlich für jemanden der WebObjects nicht kennt ...

Stu Nicholls Cutting Edge CSS An amazing CSS puzzle ist ein kleines Labyrinthspiel das nur in CSS realisiert wurde - kein JavaScript. Wow. (gefunden beim photomatt)

Ich wusste garnicht das der SmartEiffel The GNU Eiffel Compiler mitlerweile auch nach Java Bytecode compiliert. Könnte man ja vielleicht auf dem Mac zusammen mit der Java-ObjC-Bridge benutzen um Programme dort zu schreiben und mal wieder ein bischen mit Eiffel zu spielen.

Back to the Future: The Story of Squeak - wie eine der coolsten Smalltalk-Umgebungen entstanden ist.

PL/I for GCC ist eine Implementierung von PL/I als Frontend im GCC. Sehr interessant, da es nicht ein Präcompiler mit C-Output ist und anders als frühere Projekte nicht das Ziel nur einer Subset-Implementierung hat (wobei natürlich im Moment noch nur ein Subset implementiert ist - aber der wächst ständig). Ich gebs zu, die barocke Syntax von PL/I mag ich immer noch, auch wenn es schon viele Jahre her ist das ich damit programmiert habe.

Trackbacks generell moderieren

Für WordPress gibts ja ein Plugin das Trackbacks automatisch auf moderiert setzt. Das arbeitet aber mit zusätzlichen Datenbankzugriffen (setzt nach der Erstellung des Trackbacks das Moderationsflag), was bei Trackback-Spammern eher doof ist - jeder zusätzliche Datenbankzugriff treibt die Systemlast in die Höhe. Daher hab ich mal meine eigene Version davon geschrieben, die ganz ohne zusätzliche Datenbankzugriffe auskommt. Source gibts hier.

BA soll Accenture bei Online-Jobbörse begünstigt haben

BA soll Accenture bei Online-Jobbörse begünstigt haben - wundert das noch jemanden? Der Pfusch an dem Teil kennt keine Grenzen. Und jetzt ist es halt Pfusch und Kungelei - war bei dem miesen Ergebnis zu erwarten.

Was mich daran immer wieder wütend macht: wenn man selber in der Branche tätig ist, wundert man sich nur darüber was für horrende Preise bei solchen Geschäften gemacht werden - und wie mies die Leistung dann ist, die geliefert wird. Man selber muss aber bei jeder Stunde die geleistet wird am besten drei Stunden Nachweistätigkeit investieren um sein Geld zu bekommen, weil bei kleineren Geschäften ist Geiz ja Geil.

A Call to Action in OASIS

A Call to Action in OASIS ist ein offener Brief einer ganzen Reihe von Open Source Grössen gegen die neuesten Standardrahmenbedingungen von OASIS. OASIS beschäftigt sich mit der Standardisierung von Datenformaten und Webservices und in den neuesten Rahmenbedingungen sollen auch Standards erlauben die auf patentierten Techniken aufbauen - und damit im Endeffekt den Firmen Mittel an die Hand gäben mit diesen Standards Open Source Programme auszuschliessen. Im Prinzip der Neu-Aufguss der gleichen blöden Idee vom W3C - das auf die Proteste dann diese Idee wieder von Deck gezogen hat.

Plugin API for WordPress listet Actions und Filter auf, die WordPress definiert. Wird gerade mit Inhalt gefüllt.

Ape kann Python-Objekte in Zope transparent auf Filesystemobjekte oder PostgreSQL Datenbanken mappen. Könnte auf der Arbeit sehr interessant sein. Kann auch standalone (ohne Zope) benutzt werden.

Ian Bicking vergleicht FileSystemView vs. LocalFS als Alternativen um Zope-Objekte im Filesystem zu speichern.

Apache Rivet - TCL als Alternative zu PHP in den Apache einbinden und damit dynamische Seiten gestalten. Den Teufel mit dem Beelzebub austreiben?

Introducing sIFR: The Healthy Alternative to Browser Text

Introducing sIFR: The Healthy Alternative to Browser Text beschreibt eine auf JavaScript, CSS und Flash aufbauende Methode um Textstyling von den Beschränkungen von CSS zu lösen und beliebige Fonts zu verwenden.

Die Technik arbeitet ähnlich wie Image-Replacements durch CSS, nur das der ausgetauschte Text mit der Seite mitwachsen kann (z.B. wenn der Benutzer einen grösseren Basefont eingestellt hat). Hat ein Besucher Flash und JavaScript verfügbar, werden entsprechend markierte Textbereiche durch ein Flash-Rendering ersetzt.

Hat der Besucher kein Flash oder ist JavaScript deaktiviert, sieht er ganz normale Textinhalte über die Möglichkeiten des Browsers. Die Accessibility bleibt also weitestgehend erhalten - das HTML bleibt semantisch und Screenreader bei Textbrowsern sowie semantisch gesteuerte HTML Reader sollten problemlos damit klar kommen, Sehbehinderte mit grossen Fonts auch - durch Deaktivierung von Flash zum Beispiel würde der eingestellte Userfont gewählt.

Besser als CSS-Image-Replacement für Header ist es allemal, da es sich an die dynamische Umgebung wesentlich besser anpassen kann. Image-Replacements werden nicht gezoomed und unterstützen kein Copy-and-Paste der Inhalte (was von Flash ebenfalls unterstützt wird).

Die Technorati Plugin Beta stellt eine ähnliche Liste wie die normalen Kommentare zur Verfügung - nur stammen die Links und Textauszüge aus dem Technorati Link-Kosmos zu einem Artikel. Ich überlege gerade ob man sowas nicht sinnvollerweise auch mit blogger.de machen könnte - damit könnte man auch die erwischen, die nicht über Trackback oder Pingback automatisch verlinkt sind. Man müsste natürlich Duplikate gegen die normalen Trackbacks und Pingbacks testen. Hmm.

phpOpenTracker ist ein Live-Access-Auswerter für Webseiten. Er kann direkt in PHP-Anwendungen integriert werden oder über Webbugs (kleine unsichtbare Grafiken) aus statischen Webseiten gesammelt werden. Man kann damit ziemlich viel über das Benutzerverhalten in den Webseiten erkennen. Und bei Asymptomatic wird gerade an einem WP-Plugin dafür gestrickt, mit dem man die entsprechenden Auswertungen im WP-Backend zu sehen bekommt ...

javascript:xmlhttprequest [JPSPAN] - XMLHttpRequest ist das, was GMail und andere Webanwendungen mit hoher Interaktivität zum Ticken bringt. Integration von JavaScript Code mit Server Code über kleine HTTP-Requests die dann nur Teile der Seite aktualisieren.

Was einen erwartet wenn man MySQL 4.0 auf 4.1 aktualisiert. Ok, Datenbankversionsupgrades sind nie einfach und können immer mal Probleme machen.

Microsoft Interoperability

Ian Bicking beschreibt was Microsoft Interoperability wirklich heisst. Ein Zitat des Support-Mitarbeiters von Microsoft:

Microsoft isn't in the business of integrating with non-Microsoft software.

Deep Links finden in Logfiles

Weil mich der Pepino gerade danach fragte hab ich mal mein Deep Link Finder Script online gestellt. Es ist ein einfaches Python Script. Sollte ab Python 2.2 laufen, möglicherweise sogar mit Python 2.1 (ist aber nicht getestet). Das Script wird im Source konfiguriert (ich hab Kommentare dazu geschrieben) und dann einfach mit mehreren Logfiles als Parameter aufgerufen. Es sammelt aus Apache Combined Logs raus welche Sites wie oft auf angegebene Dateitypen (konfigurierbar, eingestellt sind einige Bildertypen) deep linked. Es spuckt dazu ein HTML Fragment raus das man mit Header und Footer garnieren kann um es online zu stellen - zum Beispiel entstehen so meine Zeitgeist-Seite für Deep Links. Die anderen Seiten haben ähnlich aufgebaute Scripte, nur das halt Suchbegriffe und generelle Referrer eingesammelt werden.

Ich guck mir ab und an die Deep Linker Liste an und wenn dann da jemand auftaucht der recht viel deep linkt und kein Aggregator oder News-Service ist, dann kriegt derjenige ein entsprechendes Austauschbild vorgesetzt. Aber eben auch wirklich nur diese Sites. Mich stört das nämlich auch immer wenn mir in meinem Feedreader unterstellt wird ich sei ein Bilderdieb oder Traffic-Räuber

Firefox - IDN - 0 Info - 0 Transparenz

Kai schimpt über Firefox - IDN - 0 Info - 0 Transparenz - und er hat Recht mit seinem Rant. Von kommerziellen Providern ist man ja dieses Security-Gemauschel gewöhnt, aber bei Open-Source-Projekten nervt es mich auch jedes Mal ganz besonders. Wann kapieren die Leute endlich mal das nur eine frühe Disclosure den Usern überhaupt die Chance gibt sich zu sichern? Geheimhaltung von Fehlern basiert auf der absurden Annahme das man der erste sei der diesen Fehler bemerkt hat. Was schlicht albern ist: ein Blackhat der diesen Fehler bemerkt wird ganz sicher nichts an die grosse Glocke hängen sondern diesen Fehler so lange wie möglich ausnutzen. Und damit profitiert von einer zu langen Geheimhaltung nur derjenige, dem man nicht helfen sollte.

Im Fokus der Überlegungen rund um Security muss der Benutzer stehen - und zwar der mündige Benutzer, der in der Lage ist die Informationen in sinnvolles Handeln umzusetzen. Den unmündigen Benutzer scherts eh nicht, der klickt auf alles. Aber ein Sysadmin der ein Problem kennt kann zumindestens durch eigene Aufklärung seiner User dazu beitragen das diese vielleicht für eine gewisse Zeit etwas vorsichtiger sind. Ein nicht informierter Sysadmin hat dazu nicht mal die Spur einer Chance.

In "Von der GPL" schreibt Isotopp über die GPL und was tatsächlich drin steht und wie man es verstehen kann. Eine recht gute Erläuterung, wie ich finde. Sollte jedem empfohlen werden zu lesen der den Unfug glaubt, den Microsoft, SCO und einige andere über die GPL verbreiten.

The MBROLA PROJECT HOMEPAGE - das MBROLA Projekt liefert einen freien Phonemsynthesizer. Phoneme rein, Sprache raus. Als Basis dienen Diphone-Datenbanken, die für eine ganze Reihe von Sprachen verfügbar sind. Auf der Projektseite gibt es auch Links zu Text-to-Speech-Projekten die auf MBROLA aufbauen.

Optimization Surprises

In dirtSimple.org: Optimization Surprises schreibt Phillip J. Eby über Optimierungen die er an seiner Implementation von generischen Funktionen in Python gemacht hat. Ich finde es immer wieder faszinierend wenn er über dieses Projekt schreibt, weil mir generische Funktionen gut aus Common Lisp bekannt sind. Faszinierend ist allerdings auch wie er halbe Mikrosekunden an Performance rausquetscht

In seinem Fall macht das übrigens durchaus Sinn, da es ja um eine zentrale Maschinerie geht die bei generischen Funktionen ständig aufgerufen wird. Minimale Performancesteigerungen machen in engen Schleifen eine ganze Menge aus.

Auch sehr interessant ist was er über die inneren Mechanismen von Python herausfindet und welche Auswirkungen z.B. alleine die Existenz von Closures in einer Funktion auf die Abläufe hat.

Spannend. Absolut spannend.