Archiv 9.7.2005 - 26.7.2005

Higher-Order Perl ist ein Buch (zur Zeit Papier, aber soll demnächst frei im Netz lesbar sein) das sich mit higher order functions und Perl beschäftigt - könnte ganz interessant sein, Perl bietet da eine ganze Menge Features versteckt unter all den geschweiften Klammern und anderen Sonderzeichen ...

Django mit FCGI und lighttpd ausführen

Diese Dokumentation ist für einen grösseren Kreis als nur .de gedacht, daher das ganze in Neuwestfälisch Englisch. Sorry. Update: I maintain the actually descriptions now in my trac system. See the FCGI+lighty description for Django. There are different ways to run Django on your machine. One way is only for development: use the django-admin.py runserver command as documented in the tutorial. The builtin server isn't good for production use, though. The other option is running it with mod_python. This is currently the preferred method to run Django. This posting is here to document a third way: running Django behind lighttpd with FCGI.

First you need to install the needed packages. Fetch them from their respective download address and install them or use preinstalled packages if your system provides those. You will need the following stuff:

  • [Django][2] selbst - derzeit aus dem SVN. Folgen Sie den Setup-Anweisungen oder verwenden Sie python setup.py install.
  • [Flup][3] - ein Paket mit verschiedenen Möglichkeiten, WSGI-Anwendungen auszuführen. Ich verwende den threaded WSGIServer in dieser Dokumentation.
  • [lighttpd][4] selbstverständlich. Sie benötigen mindestens die FastCGI-, die Rewrite- und die Accesslog-Module, diese sind in der Regel mit dem System kompiliert.

Nach der Installation von ligthttpd müssen Sie eine lighttpd-Konfigurationsdatei erstellen. Die hier angegebene Konfigurationsdatei ist an meine eigenen Pfade angepasst - Sie müssen diese an Ihre eigene Situation anpassen. Diese Konfigurationsdatei aktiviert einen Server auf Port 8000 auf localhost - genau wie der runserver-Befehl dies tun würde. Aber dieser Server ist ein Server für die Produktion mit mehreren FCGI-Prozessen und einer sehr schnellen Medienauslieferung.


 # lighttpd-Konfigurationsdatei
 #
 ############ Optionen, die Sie wirklich beachten müssen ####################

server.modules = ( "mod_rewrite", "mod_fastcgi", "mod_accesslog" )

server.document-root = "/home/gb/public_html/"
 server.indexfiles = ( "index.html", "index.htm", "default.htm" )

 diese Einstellungen binden den Server an dieselbe IP und denselben Port wie runserver

server.errorlog = "/home/gb/log/lighttpd-error.log"
 accesslog.filename = "/home/gb/log/lighttpd-access.log"

fastcgi.server = (
"/myproject-admin.fcgi" => (
"admin" => (
"socket" => "/tmp/myproject-admin.socket",
"bin-path" => "/home/gb/public_html/myproject-admin.fcgi",
"min-procs" => 1,
"max-procs" => 1
 )
 ),
"/myproject.fcgi" => (
"polls" => (
"socket" => "/tmp/myproject.socket",
"bin-path" => "/home/gb/public_html/myproject.fcgi"
 )
 )
 )

url.rewrite = (
"^(/admin/.*)$" => "/myproject-admin.fcgi$1",
"^(/polls/.*)$" => "/myproject.fcgi$1"
 )

Diese Konfigurationsdatei startet nur einen FCGI-Handler für Ihre Admin-Angelegenheiten und die Standardanzahl von Handlern (jeder davon mehrthreadig!) für Ihre eigene Website. Sie können diese Einstellungen mit den üblichen ligthttpd FCGI-Einstellungen feinabstimmen, sogar externe FCGI-Erzeugung und Auslagerung von FCGI-Prozessen auf einen verteilten FCGI-Cluster nutzen! Admin-Medien-Dateien müssen in Ihr lighttpd-Dokumentenverzeichnis.

Die Konfiguration funktioniert, indem alle Standard-URLs so übersetzt werden, dass sie vom FCGI-Skript für jede Einstellungsdatei behandelt werden - um weitere Anwendungen zum System hinzuzufügen, würden Sie nur die Umschreiberegel für die /polls/-Zeile duplizieren und diese in choices oder was auch immer Ihr Modul heißt ändern. Der nächste Schritt wäre die Erstellung der .fcgi-Skripte. Hier sind die beiden, die ich verwende:


 #!/bin/sh
 # dies ist myproject.fcgi - legen Sie es in Ihr Docroot

export DJANGOSETTINGSMODULE=myprojects.settings.main

/home/gb/bin/django-fcgi.py

 #!/bin/sh
 # dies ist myproject-admin.fcgi - legen Sie es in Ihr Docroot

export DJANGOSETTINGSMODULE=myprojects.settings.admin

/home/gb/bin/django-fcgi.py

Diese beiden Dateien nutzen nur ein django-fcgi.py-Skript. Dies ist nicht Teil der Django-Distribution (noch nicht - vielleicht werden sie es einbeziehen) und der Quellcode ist hier gegeben:


 #!/usr/bin/python2.3

def main():
 from flup.server.fcgi import WSGIServer
 from django.core.handlers.wsgi import WSGIHandler
 WSGIServer(WSGIHandler()).run()

if name == 'main':
 main()

Wie Sie sehen, ist es eher einfach. Es verwendet den threaded WSGIServer aus dem fcgi-Modul, aber Sie könnten genauso leicht den geforkten Server verwenden - aber da lighttpd bereits Preforking durchführt, denke ich, dass es nicht viel Sinn hat, auf der FCGI-Ebene zu forken. Dieses Skript sollte sich irgendwo in Ihrem Pfad befinden oder einfach mit vollständig qualifiziertem Pfad wie ich es tue referenziert werden. Jetzt haben Sie alle Teile zusammen. Ich habe meine lighttpd-Konfiguration in /home/gb/etc/lighttpd.conf, die .fcgi-Skripte in /home/gb/public_html und das django-fcgi.py in /home/gb/bin. Dann kann ich das ganze mit /usr/local/sbin/lighttpd -f etc/lighttpd.conf starten. Dies startet den Server, preforkt alle FCGI-Handler und trennt sich vom tty, um ein richtiger Daemon zu werden. Das Schöne daran: Dies wird nicht unter einem speziellen Systemkonto, sondern unter Ihrem normalen Benutzerkonto ausgeführt, sodass Ihre eigenen Dateibeschränkungen gelten. lighttpd+FCGI ist recht leistungsfähig und sollte Ihnen eine sehr schöne und sehr schnelle Option zum Ausführen von Django-Anwendungen bieten. Probleme:

  • Unter hoher Last stürzen einige FCGI-Prozesse ab. Ich habe zunächst die fcgi-Bibliothek verdächtigt, aber nach etwas Herumspielen (Core-Debugging) stellte sich heraus, dass es tatsächlich der psycopg auf meinem System ist, der abstürzt. Sie könnten also mehr Glück haben (es sei denn, Sie laufen auch Debian Sarge)

  • Die Leistung hinter einem Front-Apache ist nicht das, was ich erwartet hätte. Ein lighttpd mit Front-Apache und 5 Backend-FCGI-Prozessen erreicht nur 36 Anfragen pro Sekunde auf meinem Rechner, während django-admin.py runserver 45 Anfragen pro Sekunde erreicht! (immer noch schneller als mod_python über apache2: nur 27 Anfragen pro Sekunde) Updates:

  • Die Trennung der beiden FCGI-Skripte funktionierte nicht richtig. Jetzt passe ich nicht nur auf die .fcgi-Erweiterung, sondern auf den Skriptnamen an, so dass /admin/ wirklich das myproject-admin.fcgi verwendet und /polls/ wirklich das myproject.fcgi verwendet.

  • Ich habe [ein anderes Dokument online][6], das mehr Details zur Lastverteilung enthält

flup: random Python WSGI stuff - eine Sammlung von WSGI-Server-Adaptern für FCGI, SCGI und Apache Jakarta 1.3 Protokolle sowie noch ein paar WSGI-Middlewares zur Authentifizierung, Komprimierung und Fehlerhandling.

Idiotische Patente die elfundelfzigste

Immer wenn man meint, man hätte schon das idiotischste Patent geseheh, kommts garantiert noch dämlicher - Microsoft will Smileys patentieren:

Der am Donnerstag veröffentlichte Patentantrag beschreibt ein Verfahren, um selbst erzeugte Emoticon-Bildchen als Zeichenfolgen zu kodieren, die sich in Textnachrichten einbetten lassen.

Leonardo ist ein CMS mit Blog und Wiki Modulen in Python. Im Moment noch recht schlicht als CGI, soll aber auf WSGI und Paste umgestellt werden und könnte dann ganz interessant als generelle CMS-Komponenten in einer WSGI-Lösung sein.

Python Paste ist ein Meta-Framework - ein Framework zur Erstellung neuer Web-Frameworks auf WSGI-Basis. Viele interessante Middleware-Module und eine Reimplementation von WebWare auf WSGI-Basis.

Scotland Yard erschiesst Unschuldigen

Mitlerweile ist ja klar das der von der britischen Polizei Erschossene unschuldig war. Und trotzdem: Scotland Yard verteidigt Kopfschuss-Praxis. Der frühere Scotland Yard Leiter:

"Es gibt nur einen sicheren Weg, einen Selbstmordattentäter zu stoppen, der davon überzeugt ist, seine Mission auszuüben - sein Gehirn sofort zu zerstören, vollständig", schrieb er in der Sonntagszeitung "News of the World". "Das heißt, ihn mit zerstörerischer Wucht in den Kopf zu schießen, ihn sofort zu töten."

Man muss dabei bedenken, das waren Polizisten in Zivil - eine Panikreaktion wenn eine Gruppe bewaffneter Menschen in Zivilkleidung hinter einem her sind ist ja wohl vorprogrammiert. Das dann als Begründung für einen gezielten Kopfschuss zu nehmen ist mehr als nur Zynismus.

Hinrichtungen auf Verdacht als Antwort auf Terror - damit wird der angebliche Schutz der Gesellschaft selber zum Terror und zur Gefahr für jeden Bürger. Die Unmenschlichkeit der Polizei-Vertreter in der Verteidigung dieser Praxis - Police chief 'sorry' over death - ist einfach nur abstoßend.

Seaside ist ein flexibles und sehr interessantes Web-Framework in Smalltalk. Tutorials hatte ich schon mal dazu gelinkt, aber das Framework selber noch nicht - jedenfalls nicht an seiner neuen Adresse. Läuft auf Squeak und Visual Works - und durch deren breite Verfügbarkeit fast auf allem das sich Computer nennen darf und eine TCP/IP-Verbindung zur Aussenwelt hat.

verpflichtetes Versicherungssponsoring durch den Staat?

Bundesaussenminister Fischer will eine verbindliche Riester-Rente - fragt sich natürlich der Leser was der Aussenminister damit zu tun hat, aber egal:

Bundesaußenminister Joschka Fischer hat sich für die Einführung einer verpflichtenden privaten Rentenversicherung ausgesprochen. "Das Rentensystem muss bezahlbar sein. Ich wünsche mir, dass die Riester-Rente endlich verbindlich eingeführt wird und wir die Menschen zur privaten Vorsorge ermutigen"

Soso. Zur privaten Vorsorge ermutigen. Dazu dann eine verpflichtende Teilnahme an der grössten Versicherungsabzocke aller Zeiten - der Riester-Rente, deren Renditen bescheiden sind und deren Zahlungsabsicherungen mehr als fragwürdig sind.

Man könnte natürlich auch einfach ein Modell einer Bürgerversicherung wählen, bei dem jeder in die staatlichen Sozialversicherungen einzahlt, ohne Besserverdienenden ein Schlupfloch nach draussen zu lassen - gerade im Rahmen der tollen Ideen wie Ich-AG und vermehrter Selbstständigkeit wird nämlich das Sozialversicherungssystem noch weiter ausgehöhlt. Aber das wäre ja eine intelligente Lösung. Die Staatlichen Sozialversicherungen haben nämlich den Vorteil das sie durch die Verfassung gewissen Regeln unterworfen sind - und der Staat sicherstellen muss, das auch die entsprechenden Leistungen erbracht werden.

Statt dessen wird also weiter die private Versicherungsbranche gesponsort und nach Fischers Vorstellungen auch noch mit ner Pflicht für den Bürger. Ja sowas bringt Aufschwung, sowas macht Sinn. Das die Bürger da nur über den Tisch gezogen werden und viele Modelle reine Beutelschneiderei sind und eine Auszahlungssicherheit in keinster Weise gegeben ist, ignorieren wir einfach mal.

Eins ist sicher: bei der Idiotie unserer Politiker gibts demnächst viel zu verdienen in der Versicherungsbranche. Die dann vermutlich nichts besseres zu tun hat als unsere dann privaten Zwangsrenten an der Börse zu verzocken und an Hedgefonds zu verhökern.

Verrückter Vinokourov ...

... schnappt der einfach den Sprintermannschaften den Sieg in Paris vor der Nase weg. Damit hat nun wirklich niemand gerechnet. Erst greift er sich noch zwei Sekunden Gutschrift im Kampf um die Gesamtwertung und da den 5. Platz ab und dann will er einfach sich nicht einreihen und den Sprintern das Feld überlassen. Klasse Aktion, solche Überraschungen mag ich

Da wird Otto wieder schäumen

Owl Content

Jetzt muss er warscheinlich gegen die EU wettern, denn die EU-Kommission pocht auf Unabhängigkeit der Datenschutzbehörden:

Die EU-Kommision hat gegen Deutschland ein Vertragsverletzungsverfahren wegen Missachtung der EU-Datenschutzrichtlinie eingeleitet. Sie beanstandet, dass die Aufsicht über die Gewährleistung der Privatsphäre hierzulande in staatlicher Hand ruht. Die "derzeitige Organisation der für die Überwachung der Datenverarbeitung im nicht-öffentlichen Bereich zuständigen Kontrollstellen" sei "nicht mit Gemeinschaftsrecht vereinbar", heißt es in einem heise online vorliegenden Schreiben der Generaldirektion für Justiz, Freiheit und Sicherheit.

In wieweit man in Anbetracht der Bestrebungen zu längeren Speicherzeiten für Komunikationsdaten innerhalb der EU viel auf das plötzliche Eintreten der EU-Kommission für den Datenschutz geben sollte ist eine ganz andere Sache ...

GNU Modula-2 war mir bisher unbekannt. Schön das sich Modula-2 auch in der GNU-Compilerfamilie wiederfindet. Auch wenn Modula-2 für mich nur noch historisches Interesse hat - dynamische Sprachen wie Python sind mir einfach wesentlich lieber. Aber es gab mal Zeiten als ich noch fleissig in Modula-2 programmiert habe.

MochiKit ist eine JavaScript-Bibliothek mit einer ganzen Reihe von Erweiterungen für JavaScript. Vor allem Iteratoren, vernünftige funktionale Konzepte (filter, map, partial application), aber auch eine ganze Reihe neuer Ideen, wie zum Beispiel eine sehr nette AJAX-Integration. Sieht schon ganz nett aus, muss ich mal mit rumspielen.

Spitzenköche kämpfen für Linda - und wollen eine Unterschriftenaktion starten. Hey, meine Unterschrift habt ihr dafür. Schliesslich bin ich bei Kartoffeln extrem wählerisch. Und nein, da reichts nicht das die neue Kartoffelsorte einen Namen aus Startrek Voyager trägt

Von Pechvögeln und Favoriten

Naja, heute war eines auf jeden Fall ganz klar (neben der Tatsache das Armstrong halt immer noch besser als Ullrich fährt, auch beim Zeitfahren): Rasmussen ist der Pechvogel des Tages. Zwei Stürze, 5 Defekte und über 7 Minuten eingetütet bekommen, das tut weh. Zum Glück ist er angekommen und er kann sich trösten: auch heute bekommt er ein gepunktetes Trikot übergestreift.

Die nächste Tour zeichnet sich mit den Favoriten auch ab: Ullrich und Basso ganz oben in der Liste. Vinokourov sicherlich auch ein Favorit, aber definitiv mit deutlichem Abstand. Mag ja sein das irgendwann ein neuer Fahrer nachkommt - aber die drei sind auf jeden Fall beim Kampf um den Sieg dabei.

Interessanter wird es allemal wenn Armstrong nicht mehr antritt - die Favoriten fürs nächste Jahr liegen definitiv deutlich enger beieinander und damit dürften die Kämpfe auch wieder spannender werden. Ullrich und Vinokourov klar die deutlich stärkeren Zeitfahrer, Basso der deutlich bessere Bergfahrer - das wird mit Sicherheit spannend.

Nur eins kapier ich auch am Ende der Tour nicht: wieso T-Mobile den Zabel nicht mitgenommen haben. Diese Pfeifen.

Und wieder mal Django

Django - das kommende Webframework für Python - hat jetzt SQLite 3 Support. Damit ist eine Installation einer Entwicklungsumgebung für Django-Projekte jetzt extrem simpel geworden: Python 2.3 oder Python 2.4 muss da sein und ansonsten noch SQLite3 und PySQLite2. Auf dem Mac ist also im Prinzip schon alles da, ausser PySQLite2 - letzteres kann man sich aber von www.pysqlite.org holen und einfach mittels sudo python setup.py install installieren. Und schon kann man mit Django loslegen und die Tutorials durcharbeiten. Kein Apache mehr nötig, kein PostgreSQL (zwar die netteste aller SQL-Datenbanken, aber trotzdem für eine Entwicklungsumgebung auf Notebook manchmal einfach Overkill) und vor allem nicht psycopg - dessen Installation leider einen fast vollständigen PostgreSQL-Source-Tree erfordert. Es gibt also keine Ausrede für Pythonistas mehr sich nicht mit Django zu beschäftigen

Internet-Pranger der US-Strafverfolgungsbehörden

Scheiss auf Persönlichkeitsrechte, im Land der Mutigen und Freien stellt das US-Justizministerium eine Sexualstraftäter-Datenbank ins Netz. Und wer glaubt das wär ja nicht so schlimm, trifft ja nur Vergewaltiger und Pädophile:

Die Online-Aktivitäten der US-amerikanischen Strafverfolger richten sich nicht nur gegen verurteilte Straftäter. Die Polizei von Chicago hat kürzlich eine Site in Betrieb genommen, auf der Personen abgebildet und mit Namen veröffentlicht werden, die der "Unterstützung der Prostitution" verdächtigt werden. Auf der Site findet sich der Hinweis, dass die aufgeführten Personen als unschuldig gelten, bis ein Gericht ihre Schuld festgestellt hat.

Toll, nicht war? Hängen wir dein Bild einfach mal an den Pranger, den kleinen Nebensatz wird der Lynchmob sicherlich lesen bevor er das Seil auspackt und mit deinem Arsch zum nächsten Baum zieht. Und sowieso, Sexualstraftäter kann man als Begriff ja garnicht weit genug fassen ...

Grosser Lauschangriff auch in Sachsen Verfassungswidrig

Owl Content

Sachsens Verfassungsgerichtshof kippt in Teilen den "Großen Lauschangriff" und natürlich fühlen die Poltiker sich trotzdem bestätigt, es müssen ja nur die Gesetze geändert werden - sorry, aber das sehe ich anders. Die Denke muss geändert werden und es ist schade das die Verfassungsrichter nicht da deutlicher werden.

Apache modauthtkt ist ein Framework für Single-Signon in Apache-basierten Lösungen über Technikgrenzen (CGI, mod_perl und was sonst noch so existiert) hinweg. Müsste ich mir mal angucken, könnte für mich interessant sein.

Doohan alias Scotty gestorben

Scotty wurde zum letzten Mal hochgebeamt - und diesmal wird ihn wohl keiner aus dem Musterpuffer seines Transporters rekonstruieren können. Trinken wir ein Gläschen Scotch auf ihn.

Wie die BWLer unter Bertelsmann in die Bildungspolitik einziehen

Bei Telepolis gefunden: TP: Durchsetzung von Controlling und Ranking auf allen Ebenen:

Wäre ein kritischer Ökonom zum Kongress geladen gewesen, er hätte die Strategie der Bertelsmänner wohl so formuliert: Demokratische Entscheidungsfindung und offene Diskussion wird ersetzt durch Steuerungsverfahren aus der neueren Betriebswirtschaftslehre. Überzuckert wird alles mit dynamischen Anglizismen aus dem Marketing-Babbel, dahinter aber stecken oft Ideen aus dem BWL-Fach Controlling. Früher sprach man prosaischer vom Rechnungswesen/Interne Revision, meinte aber dasselbe: die innerbetriebliche Steuerung und Kontrolle von Produktionsprozessen. Die erfolgt mittels Nutzwertanalyse, Erfolgsrechnung, Budgetierung, Profit Center, Kennzahlen für alles und jedes etc.

Meine persönliche Abneigung gegen die BWL als meines Erachtens viel zu kurzsichtige Vision von Markt sollte ja mitlerweile bekannt sein. Die Verknüpfung mit einem recht scheinheilig agierenden Grossverlagshaus macht das ganze aber dann wirklich brisant - denn solche Konzerne haben nunmal in erster Linie eigene wirtschaftliche Interessen und sollten daher aus Bildungspolitischen Diskussionen rausgehalten werden, ganz besonders sind sie definitiv die falschen um sie in bildungspolitische Entscheidungsfindungen als Berater einzubinden. Aber im Zuge der Privatisierungsgeilheit der Politiker werden immer wieder solche Böcke geschossen - verbunden mit den dabei automatisch entstehenden Marketinglügen die von solchen Unternehmen dann zur Festigung der eigenen Route aufgebaut werden (wie z.B. die im Text zitierte Umfrage über Studiengebühren, bei der einfach der Weg des kostenlosen Studiums ausgeschlossen wurde - und dann behauptet wurde, das Studenten mehrheitlich für Studiengebühren wären).

Das grösste Problem bei dieser engen Verknüpfung mit der Wirtschaft - egal ob jetzt Bertelsmann in der Bildungspolitik oder andere Firmen in anderen Bereichen - ist die fehlende demokratische Kontrolle. Politiker werden noch rudimentär kontrolliert, öffentliche Einrichtungen sind durch das neue Informationsgesetz zur Offenlegung vieler Bereiche gezwungen, aber Entscheidungsfindungen in privatwirtschaftlichen Einrichtungen unterliegen diesen Kontrollen nicht. Wenn Politiker sich aber zum Beispiel auf Untersuchungen aus der Wirtschaft berufen wird man über das Informationsfreiheitsgesetz zwar bis zu dem Punkt kommen - das die Entscheidung auf einer Studie von Institut Sowieso basiert - aber über die Struktur und den eigentlichen Inhalt der Studie erfährt man unter Umständen garnichts. Und damit ist die Kontrolle durch die Bevölkerung stumpf ausgehebelt.

Gerade bei der Wichtigkeit der Bildungspolitik muss meines Erachtens jeder Einfluss von Wirtschaft und Industrie ausgeschlossen werden. Völlig egal was diese fordern - sie haben in der politischen Gestaltung der Bildungspolitik nichts verloren. Aber leider verkaufen unsere Politiker die politische Steuerung immer wieder an privatwirtschaftliche Institute, anstatt die Arbeit selber zu machen. Und sie verkaufen damit unsere Zukunft und unsere Souveränität als Gesellschaft an die Wirtschaft.

EU-Haftbefehl verfassungswidrig

Das Bundesverfassungsgericht fällt eine Entscheidung zum EU-Haftbefehl - und die fällt negativ aus. Der EU-Haftbefehl verstösst gegen das Grundgesetz. Und unsere Regierung? Bezeichnet das als Schlag gegen die Terrorbekämpfung und mokiert sich über die Bürokratisierung. Bitte was? Das Grundgesetz einzuhalten ist keine Prinzipienreiterei und Bürokratisierung, sondern eine Notwendigkeit. Aber das interessiert Frau Zypries genausowenig wie die Entscheidung des Bundestags gegen die Softwarepatentrichtlinie - und sie kündigt gleich eine Gesetzesinitiative an, die den EU-Haftbefehl wieder möglich macht.

Ich finds zum Kotzen. Wohlgemerkt, der Verdächtige ist in Deutschland nicht überführt oder verurteilt worden - die Abschiebung/Auslieferung basiert allein auf einem EU-Haftbefehl aus Spanien. Und es ist nicht so das nicht versucht worden wäre ihn hier zu verurteilen - es reichte einfach nur nicht, was vorgelegt wurde.

Also wird einfach mal die Unschuldsvermutung ausgehebelt und das Grundgesetz als alberne Bürokratie abgetan - alles im Namen der Terrorbekämpfung.

Wer schützt uns eigentlich vor den Wahnsinnigen in Berlin?

Jython 2.2 in der Mache

Die Jython Webseiten geben noch nix her, aber in der Mailingliste gabs vor ein paar Tagen eine Info das eine neue Alpha für Jython 2.2 raus ist - und zwar diesmal (war ja schon Ende 2004 mal so weit) eine die funktioniert. Viele Features der neueren Python-Versionen sind drin, auch Generatoren/Iteratoren. Von daher ist es nicht identisch mit Python 2.2, sondern eher ein gutes Stück auf den Weg zu Python 2.3 von den Features her. Da der Entwickler mit OS X arbeitet und dort entwickelt ist es relativ problemlos dort zu installieren.

Zur Installation, da das nirgendwo explizit erwähnt wird:


java -jar [jython .version.elend.langer.name.jar]

Dann kommt ein grafischer Installer der alles auf die Platte kippt. Dann in dem Zielverzeichnis noch zusätzlich folgende Befehle eingeben:


chmod 755 jython
chmod 755 jythonc

Dann sind die beiden (jython ist der Interpreter und jythonc ein Compiler) auch aufrufbar und es kann losgehen. Beim ersten Start von jython wird eine ganze Reihe von Systempaketen aktiviert, also nicht wundern über die vielen Meldungen vom sys-package-mgr.

Wer Jython nicht kennt: das ist eine Reimplementierung von Python auf der Java Virtual Machine. Dadurch lassen sich sehr elegant alle Java-Libraries benutzen und durch die interaktive Shell von Jython lässt sich auch mit Java-Klassen interaktiv spielen. Sehr schön um mal schnell Sachen auszuprobieren. Aber natürlich auch sehr schön um zwar die Portabilität von Java zu haben, aber nicht die kranke Sprache

Und es ist halt einfach witzig so Sachen wie die hier zu machen:


Jython 2.2a1 on java1.4.2_07 (JIT: null)
Type "copyright", "credits" or "license" for more information.
>>> import java.lang
>>> dir(java.lang.Number)
['byteValue', 'doubleValue', 'floatValue', 'intValue', 'longValue', 'shortValue']
>>> import java
>>> dir(java)
['__name__', 'applet', 'awt', 'beans', 'io', 'lang', 'math', 'net', 'nio', 'rmi', 'security', 'sql', 'text', 'util']
>>> ```

Erste Django Tutorials online

Die Django-Programmierer legen mit den Tutorials los. Das erste Tutorial beschäftigt sich primär mit der Erstellung des Datenbankmodells und des Grundcodes für die zu verwaltenden Objekte und das zweite Tutorial beschäftigt sich mit der automatisch generierten Administrationsoberfläche. Sehr nett, das ganze.

Das System ist natürlich stark auf Content-Erstellung und Verwaltung ausgerichtet - aber trotzdem allgemein genug, so das man es auch für anders gelagerte Inhalte nutzen kann. Die ganze Administration wird automatisch aus dem Objektmodell und einigen Hints erstellt, orientiert sich also immer an den realen Daten im System. Und die Default-Optik ist auch recht ansprechend.

Die Serverintegration geschieht einfach über mod python - also über den Apache. Was ebenfalls ein Vorteil ist, denn mod python bietet sehr hohe Performance schon von Hause aus. Und für heftigere Fälle gibts ja das Caching in Django. Ich muss sagen, was ich bisher von Django sehe gefällt mir ausgesprochen gut.

Ein wichtiger Hinweis fehlt in der Installationsanleitung: Apache2 ist zwingend nötig, und daher auch ModPython in der entsprechenden Version. Mac OS X liefert aber nur Apache 1.3 und viele andere Server haben auch nur den 1.3er Apache zur Verfügung, da hat Django also noch ein echtes Manko.

Wer übrigens auf Debian von Apache zu Apache2 upgraden will: wenn mod perl im Einsatz ist, vergesst es. Das mod perl2 für den Apache2 in der Debian Sarge ist kompletter Schrott - als ob die API-Änderungen in mod perl2 im Vergleich zum alten mod perl nicht schon nervig genug wären. Im Prinzip kriegt man damit keine Perl-Module mehr so einfach zum Laufen.

Update: Übrigens ist gerade im Subversion zu Django eine Menge Aktivität drin um die Pflicht für Apache zu beseitigen. Ein einfacher Entwicklungsserver ist schon drin, man wird also in Zukunft für erste Spielereien keinen Apache mehr benötigen. Und auch das Deployment könnte man damit auf Dauer auch auf andere Beine stellen - z.B. FCGI hinter lighttpd.

Update 2: Das dritte Tutorial ist da und beschäftigt sich mit der Sicht für den Besucher. Die haben ein ganz schön heftiges Tempo im Moment bei Django.

Erster Etappensieg für Gerolsteiner in der Tour

Wow. Das war ne Etappe - die Top-Fahrer haben klar gezeigt wie das Leistungsniveau liegt. Armstrong und Basso mit den besten Beinen, Ullrich sehr stark und damit auch eine klare Ansage an Klöden und Vinokourov, wer der Kapitän ist. Aber definitiv nicht stark genug für Armstrong. Ob Basso Armstrong knacken kann weiss ich auch nicht - heute haben ihm seine Helfer doch deutlich gefehlt, Sastre und Julich fehlt halt doch das letzte Stückchen Kraft.

Aber die absoluten Stars sind Gerolsteiner. Zum Einen natürlich die immer noch super Platzierung von Leipheimer, ihrem Kapitän. Aber den Vogel abgeschossen hat Georg Totschnig mit seinem Etappensieg. Dem ersten in der Tour für Gerolsteiner überhaupt und auch dem ersten Etappensieg in der Tour für Totschnig. Ich hab schon lang keinen Fahrer und sportlichen Leiter mehr sich dermaßen über einen Sieg freuen sehen wie Totschnig und Holczer. Klasse Leistung, dicke Gratulation an die beiden dafür.

Übrigens ist Gerolsteiner gerade der Typo3-Server (jau, Gerolsteiner benutzt Open Source) gestorben - könnte das vielleicht am Etappensieg und den vielen neugierigen Besuchern liegen?

Foundations of Python Network Programming ist ein relativ neues Buch über Netzwerkprogrammierung mit Python. Behandelt alle möglichen Ecken der Netzwerkprogrammierung die man sich denken kann - ziemlich klasse der erste Eindruck. Ich kenn zwar die meisten Sachen schon irgendwoher, aber so kompakt in einem Buch ist das trotzdem nett zum Nachlesen. Zusammen mit Dive Into Python würde ich die beiden als das ideale Gespann zum Python lernen sehen.

HsShellScript ist eine Haskell-Library mit der man Shell-Script-typische Probleme mit Haskell lösen kann. Also Funktionen zur Steuerung von Prozessen und Zugriff auf Systeminformationen etc. Sieht sehr nett aus, lässt sich wegen fehlendem mntent.h aber leider nicht auf OS X compilieren.

mod_haskell ist leider seit Jahren nicht mehr weiter entwickelt worden - es bietet eine Integration von Hugs und ghc in den Apache-Server.

PerlPad ist ein Service für Mac OS X der es ermöglicht in jeden Cocoa-Textfenster Perlcode auszuführen und den Output zu sammeln, oder selektierten Text durch ein Perl-Script zu schicken.

Regular Expressions in Haskell ist eine Implementation von Regular Expressions komplett in Haskell.

Web Authoring System Haskell (WASH) ist eine Sammlung von Haskell-Libraries (genauer gesagt DSLs - domain specific langugages - in Haskell) zur Programmierung von Webanwendungen. Enthalten ist CGI-style Programmierung, HTML-Generierung, Mailhandling und Datenbanktreiber für PostgreSQL.

Django - neues Webframework für Python

Mal wieder ein weiteres Web-Framework für Python, diesmal mit dem markigen Namen Django. Ich bin zwar skeptisch was weitere Webframeworks angeht - gibt schon haufenweise, und ich muss gestehen das ich zu dem einen oder anderen auch was beigetragen habe - aber dieses bietet einige interessante Ansätze.

Zum Einen addressiert es ähnliche Lösungen wie Ruby on Rails - erwähnt Ruby on Rails aber mit keinem Wort. Das ist schon mal positiv, man hat in letzter Zeit fast den Eindruck das die Python-Programmierer wegen ROR in Panik verfallen und meinen alles müsse sich nur noch daran orientieren.

Zum Anderen bietet Django automatisch generierte Backendseiten. Das ist etwas das ich sehr mag und was ich z.B. an Zope so nett finde - man hat gleich einen Weg mit dabei mit dem man mit den eigentlichen Daten rumspielen kann, noch bevor das eigentliche Frontend steht. Sehr praktisch gerade in der ersten Entwicklungsphase.

Auch einige der anderen Ideen sind ganz witzig - zum Beispiel das Mapping von URLs zu Handlern im Python-Code über regular Expressions. Erinnert ein bischen an mod_rewrite im Apache (wobei bei solchen Lösungen immer die Frage der Priorisierung von sich überlappenden regulären Ausdrücken bleibt). Und ein integrierter object-relation-Manager ist auch nicht schlecht, auch wenn man da natürlich auch genausogut auf fertige Lösungen zurückgreifen kann. Und das die Entwickler gleich daran gedacht haben das man effiziente Cache-Systeme braucht und dabei dann auf memcached setzen ist auch nett - viele Projekte sterben irgendwann den Tod der Load, nur weil nicht rechtzeitig an Caching gedacht wurde.

Die Template-Sprache sieht allerdings etwas gewöhnungsbedürftig aus und irgendwie frage ich mich dabei schon warum es davon fast noch mehr geben muss als von Webframeworks

SCO stolpert über die eigenen Füsse

Zumindestens scheint es so wenn es eine eMail über No 'smoking gun' in Linux code gibt.

The e-mail, which was sent to SCO Group CEO Darl McBride by a senior vice president at the company, forwards on an e-mail from a SCO engineer. In the Aug. 13, 2002, e-mail, engineer Michael Davidson said "At the end, we had found absolutely nothing ie (sic) no evidence of any copyright infringement whatsoever."

Die Mail ist schon länger bekannt, aber jetzt erst veröffentlicht worden - vorher war sie als Teil der Gerichtsunterlagen noch unter Verschluss. Schon peinlich für SCO wenn so nach und nach die ganzen traurigen Details zum Vorschein kommen. Vor allem peinlich: SCO argumentiert mit dem gleichen Consultant der wohl hier nix gefunden hat aber vorher mal behauptet hat es gäbe gleichen Code. Irgendwie sollte SCO mal so langsam die Argumentation auf die Reihe bringen, sonst bringts das ganze Gelüge und Erpressen auf Dauer nicht ...

Patentierte Menschen

Mal wieder ein Alleingang des Europäischen Patentamtes gegen alle Gesetze:

Das Europäische Patentamt (EPA) hat im Februar 2005 ein Patent erteilt, das zur Auswahl des Geschlechts von Kindern dient, die aus künstlicher Befruchtung hervorgehen. Patentinhaber ist die US-Firma XY Inc, USA. Dies belegt eine aktuelle Recherche von Greenpeace. Laut Patentschrift mit der Nummer EP 1257 168 B werden Samenzellen tiefgekühlt und nach den Geschlechts-Chromosomen getrennt. Das Patent umfasst das technische Verfahren und die Samenzellen selbst. Menschen werden damit auf eine Ebene mit Verfahren in der Tierzucht gestellt.

Schon idiotisch zu welchem Unfug sich die Beamten im EPA hergeben lassen und vor welche noch so idiotischen Karren sie sich spannen lassen. Nachdenken scheint jedenfalls nicht Bestandteil deren Stellenbeschreibung zu sein ...

Integrationssicherung oder Fremdenfeindlichkeit?

Tolle Idee aus Bayeren (hey, ich bin in München, da kann ich auch mal bayrische Themen aufgreifen): Integration von Ausländerkindern: Nur wer Deutsch kann, darf in die Schule. Die Frage die sich mir stellt: trifft die Regelung nur Ausländerkinder, oder werden generell alle Kinder mit schlechten Deutschkenntnissen zurückgeschickt? Und wenn zurückgeschickt wird - ist sichergestellt, das die Kindergartenplätze mit den Sprachförderungskursen auch existieren? Oder werden so einfach nur Ausländerkinder aus der Schule gehalten damit alles schön deutsch bleibt?

Durchschnittlich zehn Prozent aller Volksschüler in Bayern haben eine nicht-deutsche Muttersprache.

Sorry, aber das dürften deutlich mehr als 10 Prozent sein - denn wenn ich hier in Bayern mir anhöre was die Leute sprechen, dann ist das beileibe nicht immer Deutsch, auch wenns so ähnlich klingt. Also wie siehts aus - werden auch die Dialektgeschädigten Kinder zu Sprachkursen geschickt, oder triffts nur die unbeliebten Ausländer?

robots.txt als angeblicher Kopierschutz

Es gibt keine Idee die blöd genug wäre das nicht Anwälte oder Politiker sie haben könnten: Eignet sich die Datei robots.txt als Kopierschutz? fragt sich jetzt eine Kanzlei in den USA, weil über das Internet Archiv auf historische Daten zugegriffen werden konnte, obwohl in neueren Versionen der Website per robots.txt dem Internet Archiv der Zugriff untersagt wurde:

Harding, Earley, Follmer & Frailey, mit denen sich Healthcare Advocates zuvor im einem Rechtsstreit auseinander gesetzt hatte, wirft Healthcare Advocates nun Verstöße gegen dem DMCA vor, dem Internet Archive hingegen Vertragsbruch, da diese nicht wie erklärt den Zugriff auf die historischen Daten gesperrt hätten. Daher verlangt Healthcare Advocates auch vom Internet Archive Schadensersatz.

Nicht nur das da jemand die Funktion von robots.txt falsch versteht - es ist kein Kopierschutz, sondern eben nur ein Hint für Robots, ob sie die Daten abgreifen dürfen oder nicht - zusätzlich sind die auch noch extrem dreist. Das Internet Archiv bringt seine Leistung kostenlos - aber man kann ja mal auf Vertragsverletzung klagen und Schadensersatz fordern.

Irgendwie ziemlich bescheuert das ganze. Die Vorstellungen von solchen Technik-Versagern sind immer wieder erheiternd ...

(und ja, auch in München gibt es Internet-Zugang )

Tour trotz Armstrong spannend

Und zwar weil eine ganze Reihe Fahrer mich echt mit Leistung beeindrucken. Da ist zum Beispiel heute natürlich Vinokourov, aber ganz besonders die Leistung von Jörg Jaksche - den hat da wohl keiner im direkten Umfeld von Armstrong erwartet. Auch die Platzierung von CSC mit drei Topfahrern ganz vorne - Basso, Sastre und Julich - ist klasse. Aber richtig nett ist die gute Position von Botero und Moreau - beide haben definitiv zu alter Form zurückgefunden. Und Vinokourovs Sieg wird ihn vielleicht für seine Schwäche gestern entschädigen.

Nur das ich die Etappe nur mit gelegentlichen Blicken in den Ticker mitbekommen habe ist irgendwie schade. Aber ich bin ja zum Arbeiten hier, da will ich mal nicht zu laut meckern

Nachtrag: traurig stimmt mich aber schon das Jens Voigt wegen 42 Sekunden Zeitüberschreitung aus dem Rennen genommen wurde - meines Erachtens hätte die Rennleitung da schon ein Auge zudrücken können. Andererseits hatte er ja wohl eine Bronchitis, von daher ist es für seine Gesundheit vielleicht garnicht so abträglich wenn er nicht weiter fährt. Ob er freiwillig aufgegeben hätte ist bei seinem Angriffswillen ja eher fraglich.

Der Berg ruft

Naja, nicht wirklich. Berge gibts ja direkt in München nicht. Also ruft wohl eher das Hofbräuhaus. Oder vielmehr die Kollegen. Jedenfalls bin ich mal für zwei Tage weg. Macht hier nicht alles kapputt ...

Kaum mit sauberen Mitteln

kann die Übergabe der .net Registrator an VeriSign abgegangen sein, wenn man sich ansieht wie ICANN unter VeriSigns Knute ist:

VeriSign kann ab 1. Januar 2007 nach Belieben die Preise der .net-Adressen erhöhen. Außerdem sicherte ihnen die Internet Corporation for Assigned Names and Numbers (ICANN) eine automatische Verlängerung der Laufzeit nach sechs Jahren zu.

Wer jetzt noch glaubt das da kein Geld geflossen ist, dem verkaufe ich gerne ne Waschmaschine mit Gummibandantrieb ...

Microsoft liebt SpyWare

Jedenfalls klassifiziert Microsoft diese jetzt anders:

Demnach empfiehlt das Programm seit dem Update von Ende März, verschiedene als mäßig gefährlich klassifizierte Claria-Produkte ebenso wie solche der Spywareschmieden WhenU und 180solutions zu ignorieren.

Sorry, aber Nachrichten aufpoppende Hintergrundprogramme sind grundsätzlich abzulehnen, dabei interessiert mich auch nicht die Bohne welche Samtpfotenargumentationen die Hersteller dieses Mülls sich einfallen lassen.

Sorry, aber ein Hersteller von Betriebssystemsoftware der mit einer Anti-Spyware-Prüfung solchen Schrott nicht als zu deinstallieren vorschlägt ist schlichtweg unglaubwürdig.

Strafverfolger fordern Zugang zu Whois-Daten

Owl Content

Tja, IP-Adressen und Domains nicht auseinanderhalten können, aber unbeschränkten Zugang zu Whois-Datenbankinhalten fordern. Tolle Strategie. Dabei ist es hochgradig dämlich: ich kann mir beim besten Willen keine Situation konstruieren wo der Domaininhaber wirklich die interessante Information ist. Im Gegenteil, fast immer gehts um IP-Adressen - und die sind den Registries und darüber den Providern zugeordnet, aber diese Zuordnungen sind öffentlich. Die Zuordnungen danach - wie also die Provider die Adressen weiter vergeben - sind eh nicht in irgendwelchen Whois-Datenbanken mit öffentlichem Zugang drin, sondern bei den Providern gespeichert. Überlegen wir uns mal ein paar Fälle: illegaler Upload oder Download geschützer Werke um sowas aufzuklären benötigt es die IP-Adresse des Nutzers und die Zuordnung über die Zeit - denn oft sind das dynamische Adressen. Die Informationen kann nur der Einwahlprovider liefern, in dessen Bereich die IP liegt. Diese Zuordnung zum Provider ist öffentlich über whois abfragbar, alles weitere geht eh nur beim Provider. illegal betriebener Server Die Domain unter der der läuft ist erstmal wurscht - interessanter ist die IP des Hosts auf dem der Kram liegt. Klar, die Domain liefert unter Umständen Hinweise auf Mitverantwortliche, aber interessant ist die IP - denn darüber kriegt man den Hoster für das System und der hat Unterlagen wem er diesen Server zur Verfügung gestellt hat. Ausserden kann auch nur der die Zugriffsprotokolle auf diesen Server haben über den z.B. festgestellt werden könnte welche IP den Upload gemacht hat - und dann sind wir wieder beim oberen Fall. eMail mit Beleidigungen, Drohungen oder anderem verbotenen Inhalt auch hier hilft die Domain höchstwarscheinlich recht wenig - interessanter ist die IP der Server auf denen die Mails eingetütet und ausgeliefert wurden. Denn darüber kann man über Zugriffsprotokolle die IP des einliefernden oder abholenden Systems bekommen und dann mit dem ersten Punkt wieder an den Nutzer herankommen.

Sorry, aber ich sehe wirklich keinen Grund warum die Domaindaten öffentlich sein sollten oder warum Strafverfolgungsbehörden einen dringenden Zugang zu den Daten haben müssen - klar, Markenrechtsanwälte würden das gerne haben, aber ich glaub nicht das es hier um erleichterten Zugriff für Markenrechtsanwälte gehen würde ...

Für mich klingt das ganze arg danach das hier mal wieder einfach gefordert wird, ohne das wirklich konkreter Bedarf vorliegt. So wie auch immer wieder Abhörmaßmahmen ohne triftigen Grund bekannt werden - und dann die Ermittlungsbehörden mal wieder in die Schusslinie bringt. Irgendwie wäre es schon schön wenn bei den ganzen Forderungen der Behörden mal konkrete Anlässe drin stünden, warum denn diese Forderung erhoben wird, denn dann könnte man mal über wirkliche Lösungen für deren Probleme nachdenken - schliesslich gehts bei der Weigerung der Datenherausgabe nicht darum die Ermittlungsbehörden zu behindern, sondern den Datenschutz zu gewährleisten.

FineTunes muss ich mir mal merken. MP3s und OGGs ohne DRM. Und die Musikauswahl ist auch auf den ersten Blick einigermaßen brauchbar. Muss ich mal durchstöbern ...

JavaScript-Aktionen über CSS Selektoren zuordnen

Cool stuff: Behaviour ist eine JavaScript Library mit der man JavaScript-Aktionen an CSS Selektoren binden kann. Der Vorteil: die Aktionen verschwinden aus dem HTML-Code - der so deutlich schlanker wird. Und die Aktionen lassen sich durch Änderung der Selektoren jederzeit an neue Gegebenheiten anpassen.

In meinen ersten Anwendungen von Ajax bin ich genau über das Problem gestolpert: die JavaScript-Aktionen müllen den gerade erst mühsam auf semantisches HTML reduzierten Code voll. Genau das was mich vorher an den ganzen Table-Layouts geärgert hat, ärgert mich jetzt an der ganzen JavaScript-Geschichte. Eine saubere Trennung von Code, Semantik und Stil ist also genau das was ich brauche. Eigentlich würde sowas in den HTML-Standard gehören.

Muss ich ganz dringend mal ausprobieren, denn wenn das von der Performanz her brauchbar ist, sollte ich ein paar der letzten Ajax-Aktionen nochmal näher angucken und ändern ...

Jens Voigt in Gelb

Sowas liebe ich. Ein wirklich starker Etappensieger mit einer super Leistung. Ein technisch perfektes Paarzeitfahren von Voigt und Moreau. Einmal das Gesamtklassement durchgerührt und das gelbe Trikot bei einem meiner Lieblingsfahrer (der andere darf ja dieses Jahr nicht mitfahren). Hey, wegen meiner kann Jens Voigt die Farbe gerne noch ein paar Tage länger tragen

Was für Jutta: UnicodeChecker erlaubt eine einfachere Navigation im Unicode Zeichensatz und das Auffinden der entsprechenden Zeichen nach Namen. Ausserdem liefert es Informationen über Zeichen (z.B. ob es eine Gross/Kleinvariante gibt etc.).

macminicolo Mac Mini colocation - eigene Mac Mini in Datacenter aufstellen. Gibts sowas auch in Deutschland?

Plash: the Principle of Least Authority shell

Interessantes Konzept: Plash ist eine Shell die Programmen eine Library unterschiebt über die alle Zugriffe auf das Filesystem schicken. Dadurch kann man kontrollieren welche Funktionen ein Programm wirklich ausführen darf. Das dient diesmal nicht dem Schutz vor Aktivitäten des Benutzers, sondern dem Schutz des Benutzers vor Aktivitäten des Programms. Gerade wenn man Programme installiert die man nicht kennt kann man unter Umständen sich Trojaner einfangen - Plash hilft da, indem man explizit nur die Bereiche der Platte für das Programm freischaltet, die dieses auch braucht.

Dazu werden alle Zugriffe auf das Dateisystem intern über einen eigenen Miniserver geroutet - das eigentliche Programm wird unter einem frisch allozierten Benutzer in einem eigenen chroot-Jail ausgeführt, hat also gar keine Chance irgendwas ausserhalb zu machen das nicht explizit erlaubt wird.

Sehr interessantes Konzept, vor allem für Systemadministratoren. Funktioniert leider (erwartungsgemäß) nicht mit grsecurity zusammen - klar, grsecurity soll ja gerade einige der in Plash verwendeten Tricks genau verhindern helfen. In diesem Fall scheitert es an der Anforderung von executable Stack.

Ich bin ja ein ausgemachter S5 Fan, aber wer lieber etwas einfachere HTML-Strukturen auf Basis von mehreren Files haben will, für den ist vielleicht pylize eine Lösung. Mit PyLize werden aus einem Präsentationsfile die Folien als einzelne HTML-Seiten mit gemeinsamen Styling generiert.

Na das wird doch sicher den Schockwellenreiter freuen: KSVG2 (und KDOM und KCanvas) wurde in WebCore integriert. Zwar erstmal nur experimentell, aber das ist doch schon mal ein Anfang. Irgendwann wird SVG ja vielleicht doch mal eine brauchbare Verbreitung finden.

Boot KNOPPIX from an USB Memory Stick - vielleicht eine Alternative zu spblinux, speziell mit der c't-Knoppix-Variante?