Freitag, 15. Februar 2008

psycopg, segfaults, Valgrind

Diese Woche habe ich einen Segfault in psycopg behoben, der bei einem Zope-Server häufig für Abstürze sorgte. Das interessante: psycopg hat immer wenn ein Client-Encoding angegeben wurde, das keine Binde- oder Unterstriche enthalten hat, ein Byte zu wenig alloziiert. Genaue Fehlerbeschreibung und Patch gibts im Trac.

Schlussendlich hat mir Valgrind sehr geholfen das Problem zu analysieren. Die Aufrufzeile um einen Zope-Server, der im Vordergrund läuft zu überwachen ist:
valgrind --leak-check=yes --trace-children=yes --suppressions=valgrind-python.supp bin/zopectl fg
Die Suppressions-Datei wird im Python-Source-Code mitgeliefert und sorgt dafür, dass Valgrind sich nicht von Python's Memory-Manager für kleine Objekte verwirren lässt.

Mittwoch, 6. Februar 2008

zc.resourcelibrary und virtual hosting

zc.resourcelibrary ist ein exzellentes Werkzeug um automatisch Pakete von Ressourcen (CSS, JS, Bilder) gemeinsam zu registrieren und in eine HTML-Seite (via PageTemplate oder View-Klasse) einzubinden. Dabei werden sogar Abhängigkeiten (z.B. "Meine JS-Files benötigen MochiKit") berücksichtigt.

Da die URLs (CSS verweist auf Bilder) in einer Resource-Library statisch sind, muss man ein klein wenig aufpassen, wie man "Virtual-Hosting-kompatibel" bleibt.

Der kleine Trick besteht darin, alle URLs in CSS-Dateien relativ anzugeben. Dadurch wird die (automatisch berechnete) Basis-URL der Resource-Library ebenfalls auf die statisch enthaltenen Verweise angewandt.

Donnerstag, 24. Januar 2008

Zope ist nicht simpel - und das ist auch gut so

Dr. Dewar und Dr. Schonberg haben in zwei Artikeln dargestellt, warum Softwareentwicklung mehr ist als "einfach mal was zusammenzustöpseln":
Beide Artikel bestärken meinen Eindruck in Bezug auf die handwerklichen Fähigkeiten, die ich von Software-Entwicklern erwarte und wie diese von Hochschulen durchgängig enttäuscht werden.

Auch die typische Argumentation gegen Zope, dass es nicht "einfach sei", halte ich nicht für ein Problem, sondern für einen Vorteil. Nur weil es nicht simpel ist können wir komplexe und anspruchsvolle Probleme lösen und mehr tun als "zufällig die richtigen Komponenten raussuchen".

Ich möchte damit nicht für sinnnlos komplizierte Systeme argumentieren. Einfachheit darf aber nicht mit Simplizismus verwechselt werden.

Donnerstag, 20. Dezember 2007

Datenbank-Generationen: Am besten immer initialisieren

Wir merken uns: wenn man in der Zukunft eventuell Datenbankgenerationen in seiner Zope-3-Anwendung/Bibliothek/... benutzen will, dann sofort eine leere Generation anlegen.

Der Grund: Wenn die Generations-Infrastruktur noch nicht initialisiert ist, dann wird, wenn vorhanden, immer die `install`-Methode ausgefuehrt. Diese versetzt die Datenbank aber direkt in die aktuellste Generation.

Hat man keine `install`-Methode und eine neue Datenbank wird die Datenbank ohne irgendetwas zu tun sofort in die aktuellste Generation gehievt.

Im optimalen Fall beginnt man also immer bei 0. Beginnt man aber bei `None`, dann muss man den ersten Migrationsschritt immer noch in der Installation abbilden, was man eigentlich nicht sollte.

Donnerstag, 8. November 2007

Security-Target für Zope 3

Die Common-Criteria-Zertifizierung von Zope 3 geht wieder voran und wir haben einen konkreten Zeitplan, der die Arbeit bis zur Zertifizierung abdeckt. Als Zertifizierungstermin zielen wir März 2008 an.

Als ersten Schritt habe ich heute eine überarbeitete Version des "Security Target" (ST) zum TÜV geschickt und bin mal gespannt ob wir mit unseren Überarbeitungen jetzt eine finale Version produziert haben. Im Dezember wird es dann mit den anderen Dokumenten wie im ST beschrieben weitergehen.

Freitag, 26. Oktober 2007

Buzzword-Compliance

Mir ist diese Woche bei technorati ein Blog-Eintrag aufgefallen, der einen Wikipedia-Artikel zitierte und das Beispiel des Buzzword-Compliance-Artikels aufführte. Ich will das Beispiel hier nicht selbst wiedergeben, habe aber endlich mal den Artikel bei der Wikipedia aufgeräumt. Die alte Version steht hier, und ich wundere mich immer noch wer das mal formuliert hat ...

Dienstag, 16. Oktober 2007

Zope auf der Systems 2007

Die DZUG wird auf einem Gemeinschaftsstand mit gocept und syslab Zope auf der Systems in München vertreten. Neben den Informationsständen gibt es auch 3 Vorträge im Programm.

Details gibt es auf zope.de.