Archiv 14.1.2005 - 19.1.2005

Subtraction: New, Improved Original Flavor!

Khoi Vinh stellt sein neues Design vor. Irgendwie cool wie er durch Weglassen einen - für mich - recht interessanten Eindruck produziert. Mir gefällt es jedenfalls sehr gut.

Ich wär ja froh wenn ich mal ein eigenes Design hinkriegen würde und meine Designs nicht immer irgendwo klauen müsste ... (einer der echten Vorteile von WordPress - das Kubrick Design mag ja mitlerweile etwas weit verbreitet sein, aber es lässt sich wenigstens auch von Design-Daus wie mir anpassen ohne das einem alles um die Ohren fliegt)

WordPress NoFollow Plugin

Das WordPress NoFollow Plugin versieht Links in Kommentaren mit dem rel="nofollow" um ihnen das Google-Ranking zu nehmen. Wobe ich persönlich daran schade fände, das dann generell Links nicht mehr von den Kommentaren gefolgt wird - und damit gerade die für kleinere Blogs brauchbare Möglichkeit durch aktive Diskussion in anderen Blogs das eigene zu promoten wegfällt. Ok, letzten Endes ist das auch nicht so schlimm, aber irgendwie geht schon ein kleines Stückchen der Ein Link wäscht den Anderen Mentalität der Blogs verloren ... Ein kleines Handicap ist, das der Autor das Plugin direkt verlinkt hat und dummerweise sein Server das PHP direkt ausführt. Im Moment kann man es also nicht runterladen, man kriegt nur eine leere HTML Seite

Zope-Hosting und Leistung - Englische Version

Jemand bat mich um eine englische Übersetzung meines Artikels zu Zope Hosting und Performance. Hier ist sie - okay, es ist nicht so sehr eine direkte Übersetzung, sondern eine Überarbeitung der Geschichte auf Englisch. Viel Spaß damit.

Kürzlich hatte der Schockwellenreiter Probleme mit seinem Blog-Server. Er verwendet Zope mit Plone und CoreBlog. Da ich seit einigen Jahren professionelles Zope-Hosting betreibe, Systeme, die im Bereich von 2000-3000 Hits pro Minute liegen, dachte ich, ich stelle einige der Dinge zusammen, die ich gelernt habe (manchmal auf die harte Tour) über Zope und Performance.

  • Der wichtigste Schritt, den ich unternehmen würde: schlankere Anwendung. Werfen Sie alles aus Ihrer Zope-Datenbank, was nicht dort bleiben muss. Wenn es kein Content-Management benötigt, speichern Sie es in Ordnern, die von Apache bereitgestellt werden. Verwenden Sie mod_rewrite, um es nahtlos in Ihre Website zu integrieren, so dass die Leute von außen keinen Unterschied bemerken. Dies kann am besten für Layout-Bilder, Stylesheets usw. erfolgen - Apache ist viel schneller beim Liefern dieser Dateien.
  • Verwenden Sie Zope-Caching, wenn möglich. Der Hauptparameter, den Sie überprüfen müssen: Haben Sie genug RAM. Zope wird beim Verwenden von Caching wachsen (insbesondere der RAMCacheManager). Die automatische Bereinigung wird Sie nicht retten - Zope wird trotzdem wachsen. Richten Sie eine Prozessüberwachung ein, die automatisch Zope-Prozesse tötet und neu startet, die über eine obere Grenze hinauswachsen, um Paging aufgrund eines zu hohen Speicherverbrauchs zu verhindern. Dies ist sogar eine gute Idee, wenn Sie überhaupt kein Caching verwenden.
  • Es gibt zwei bemerkenswerte Cache-Manager: einer verwendet RAM und der andere einen HTTP-Beschleuniger. Der RAMCacheManager zwischenspeichert Ergebnisse von Objekten im Speicher und kann verwendet werden, um kleine Objekte zu zwischenspeichern, die viel Zeit oder Ressourcen für die Konstruktion benötigen. Der HTTPCacheManager dient zur Verwendung eines HTTP-Beschleunigers - die meisten Leute werden Squid verwenden, aber Sie können auch einen entsprechend konfigurierten Apache verwenden. Der Cache-Manager stellt die richtigen Expires- und Cache-Control-Header bereit, so dass der meiste Verkehr aus den HTTP-Beschleunigern und nicht aus Zope geliefert werden kann.
  • Große Zope-Objekte töten die Performance von Zope. Bei der Verwendung von Caching zerstören sie die Effizienz des Cachings, indem sie den Cache mit großen Blobs von Dingen verunreinigen, die nicht oft benötigt werden, und Zope selbst wird durch sie ebenfalls in der Performance beeinträchtigt. Der Grund dafür ist, dass die Zope-Ausgabe im Speicher konstruiert wird. Die Konstruktion großer Objekte im Speicher verbraucht viele Ressourcen aufgrund der Sicherheits- und Architekturschichten in Zope. Besser ist es, sie mit Cronjobs oder anderen Mitteln außerhalb des Zope-Servers zu erstellen und sie direkt mit Apache zu liefern. Apache ist viel schneller. Eine typische Situation ist, wenn Benutzer PDF-Dokumente in Zope erstellen, anstatt sie außerhalb zu erstellen. Schlechte Idee.
  • Verwenden Sie ZEO. ZEO ist großartig. Wirklich. Im Wesentlichen handelt es sich dabei nur um die ZODB mit einer kleinen Kommunikationsschicht darüber. Diese Schicht wird in Zope-Instanzen verwendet, anstatt die ZODB direkt zu verwenden. Auf diese Weise können Sie mehrere Prozessgruppen auf Ihrer Maschine ausführen, die alle mit derselben Datenbank verbunden sind. Dies hilft bei dem oben erwähnten Prozessneustart: Wenn einer ausgefallen ist, erledigt der andere die Arbeit. Verwenden Sie mod_backhand in Apache, um die Last zwischen den Prozessgruppen zu verteilen, oder verwenden Sie andere Lastausgleichswerkzeuge. ZEO macht auch regelmäßige Datenbankpacks einfacher: Sie laufen auf dem Server und nicht in den Zope-Instanzen - sie bemerken den laufenden Pack eigentlich kaum.
  • Wenn Sie es haben, verwenden Sie eine SMP-Maschine. Oder kaufen Sie eine. Wirklich - das hilft. Sie müssen ZEO und mehrere Zope-Instanzen ausführen - andernfalls wird Sie der globale Interpreter-Lock von Python treffen und Zope wird nur einen der beiden Prozessoren verwenden. Das ist einer der Gründe, warum Sie mehrere Prozessgruppen von Anfang an wollen - Verteilung der Last auf der Maschine selbst, Nutzung mehrerer Prozessoren.
  • Sie können die Leistung verbessern, indem Sie die architektonischen Schichten reduzieren, durch die Ihr Code geht. Python-Skripte sind schneller als DTML. Zope-Produkte sind schneller als Python-Skripte. Entfernen Sie komplexen Code von Ihrem Server und verschieben Sie ihn in Produkte oder andere externe Orte. Dies erfordert das Umschreiben von Anwendungscode, daher ist es nicht immer eine Option - aber wenn Sie es tun, wird es sich auszahlen.
  • Lassen Sie Ihre ZODB-Datei nicht zu groß werden. Die ZODB fügt nur beim Schreiben hinzu - die Datei wächst. Sie wächst ziemlich groß, wenn Sie nicht regelmäßig packen. Wenn Sie nicht packen und Sie Multi-GB-ZODB-Dateien haben, beschweren Sie sich nicht über langsame Serverstarts ...
  • Wenn Sie komplexen Code in Ihrer Zope-Anwendung haben, kann es sich lohnen, ihn in einen externen Server zu stellen und mit Zope über RPC-Mittel zu verbinden, um die Ausführung auszulösen. Ich verwende mein |TooFPy| für solche Dinge - ziehen Sie einfach den Code heraus, bauen Sie ein Tool und hängen Sie es über XMLRPC in die Zope-Anwendung ein. Ja, XMLRPC kann ziemlich schnell sein - zum Beispiel ist pyXMLRPC eine C-geschriebene Version, die sehr schnell ist. Das Verschieben von Code außerhalb von Zope hilft, weil dieser Code keinen der statisch zugewiesenen Listener blockieren kann, um Dinge zu berechnen. Das Erhöhen der Anzahl der Listener-Threads zahlt sich nicht so aus, wie Sie erwarten würden: aufgrund des globalen Interpreter-Locks wird trotzdem nur ein Thread zur gleichen Zeit laufen und wenn Ihr Code C-Erweiterungen verwendet, kann er sogar alle anderen Threads blockieren, während er verwendet wird.
  • Wenn Sie PostgreSQL verwenden, verwenden Sie PsycoPG als Datenbank-Treiber. PsycoPG verwendet Sitzungs-Pooling und ist sehr schnell, wenn Ihr System viele Hits erhält. Andere Treiber blockieren Zope oft aufgrund von Einschränkungen wie nur einer Abfrage zur gleichen Zeit und anderem solchen Unsinn. Viele Administratoren mussten auf die harte Tour lernen, dass 16 Listener-Threads nicht wirklich 16 verfügbare Slots sind, wenn SQL-Treiber ins Spiel kommen ...

Es gibt noch mehr Möglichkeiten, die Leistung zu verbessern, aber die oben genannten sind mit relativ wenig Aufwand umsetzbar und hängen größtenteils davon ab, ob Sie genug Speicher haben und vielleicht eine SMP-Maschine. Speicher ist wichtig - je mehr, desto besser. Wenn Sie Speicher in Ihren Computer stecken können, tun Sie es. Es gibt so etwas wie zu viel Speicher nicht (solange Ihr Betriebssystem die Menge an Speicher unterstützt, natürlich).

Was tun, wenn selbst diese Tipps oben nicht funktionieren? Ja, ich war in dieser Situation. Wenn Sie in eine solche Situation geraten, gibt es nur eine - eher brutale - Lösung: aktives Caching. Damit meine ich das Herausziehen von Inhalten vom Zope-Server mit Cronjobs oder anderen Mitteln und das Speichern in Apache-Ordner und das Verwenden von mod_rewrite, um nur statische Inhalte an Benutzer zu liefern. mod_rewrite ist Ihr Freund. Im Wesentlichen nehmen Sie einfach die Seiten, die Sie derzeit umbringen, und machen sie pseudo-statisch - sie werden nur gelegentlich aktualisiert, aber die Hits erreichen Zope überhaupt nicht.

Ein weiterer Schritt ist natürlich mehr Hardware. Wenn Sie ZEO verwenden, ist es kein Problem, eine Farm von Zope-Servern vor Ihren ZEO-Maschine zu stellen (wir haben derzeit 5 Dual-Prozessor-Maschinen, die die Zope-Instanzen ausführen, und zwei eher große, fette, hässliche Server im Hintergrund für Datenbanken, Frontend mit zwei Apache-Servern, die im Vergleich zu den Backend-Dingen fast wie Zwerge aussehen).

Zope ist eine fantastische Software - verstehen Sie mich nicht falsch. Ich mag es. Besonders die Tatsache, dass es eine integrierte Entwicklungsumgebung für Webanwendungen und Content-Management ist, ist sehr schön. Und die einfache Integration externer Datenquellen ist auch schön. Aber Zope ist ein Ressourcenfresser - das ist nicht diskutierbar. Es gibt kein solches Ding wie ein kostenloses Mittagessen.

DNA-Analysen: Bayern startet Bundesratsinitiative

Owl Content

DNA-Analysen: Bayern startet Bundesratsinitiative - wer sonst wenn nicht die Bayern? Aktuelle Vorkommnisse werden als willkommener Anlass gesehen um schnell irgendwelche Änderungen durchzuprügeln. Egal das durch diese Änderung weitaus mehr als mit Fingerabdrücken möglich wird - und das viel mehr Missbrauchsmöglichkeiten vorhanden sind (z.B. Gen-Analyse zur Bewertung von Tauglichkeiten).

Auch das Urteil des Bundesverfassungsgerichtes das explizit DNA Analysen auf besonders schwere Verbrechen eingeschränkt hat wird dabei ignoriert. Wen schert auch das Bundesverfassungsgericht, wenn man mit Populismus so schön für Stimmung sorgen kann ...

Grafedia

Grafedia ist sowas wie Links für die Hardware da draussen. Ein Wort als eMail-Adresse unter einer Domain benutzt und man erhält als Antwort ein File. Das Konzept ist also simpel - interessant wird es dadurch, das man Handys einsetzt um die Mail zu schicken - und das Ergebnis auch aufs Handy zurückbekommt. Und das man die Wörter irgendwo draussen an Wände und ähnliches packen kann. Irgendwie verrückt, irgendwie schön. (Gefunden beim Spreeblick)

LynuxWorks Introduces First User-Mode Linux Software for Apple PowerPC G5 Based on the Linux 2.6 Kernel - damit kann man jetzt auch auf PPC-Maschinen logisch getrennte virtuelle Umgebungen unter Linux aufbauen.

MathWorld News: The Mathematics of Tsunamis - interessante (wie ich finde) Erläuterung der Wellenentwicklung von Tsunamis. Gefunden im zeitwissen:log.

Organizer Overload

5 Minuten gegrübelt welches Gerät gerade einen Alarm abgegeben hat und woran zum Geier mich das erinnern sollte. Nach dem Check von mehreren Geräten und Programmen gemerkt das es ein eigentlich schon längst gelöschter Alarm im (nicht gesyncten, daher nicht aktuellen) PDA war. Mangelnde Erkennungsfähigkeit von Alarmsignalen durch Alarmtondiversitätsüberlastung ...

QuickSilver: Act Without Doing

Brian Mastbrook beschreibt sehr schön wie Quicksilver das beste aus den Welten der tastaturgesteuerten Interfaces und der grafischen Interfaces verbindet. Leider läuft QuickSilver erst ab 10.3, weshalb ich immer noch mit LaunchPad festhänge - das allerdings in den neuesten Versionen (bis auf den wirklich extrem lahmen Start) schon ganz gut mithalten kann.

Allgemein finde ich diese sich langsam entwickelnde Idee der Kombination von grafischen und tastaturgesteuerten Interfaces sehr angenehm. Grafische Oberflächen sind zwar gut in der Präsentation von komplexeren Strukturen (eine Verzeichnisstruktur erschliesst sich mir grafisch schneller als von der Shell), aber oftmals doch recht umständlich zu bedienen. Tools wie QuickSilver und LaunchPad helfen da ungemein. Vermutlich würde auch Apples Universal Key Access mir helfen - hätte ich 10.3 ...

Save Think Secret's Nicholas Ciarelli Petition

Save Think Secret's Nicholas Ciarelli Petition sollte man als Apple-User sich überlegen zu unterschreiben. Diese Klagerei von Apple jedenfalls ist weder positiv noch sinnvoll - schliesslich lebt die Apple-Welt auch unter anderem von ihren Gerüchten. Gefunden beim Spreeblick.

The Temboz RSS aggregator

The Temboz RSS aggregator ist ein sehr nett gemachter Aggregator in Python. Er benutzt den Ultraliberal Feedparser für das Parsing und kann OPML importieren. Die Oberfläche finde ich schick gestaltet und die Administration ist recht simpel. Und er hat ein paar nette Features wie das zweispaltige Layout und die recht einfache integrierte Filtermöglichkeit sowie recht brauchbare Feedlistensortierungen. Ich spiel mit dem gerade mal ein bischen herum - auch wenn das warscheinlich meine Motivation einen eigenen Aggregator zu schreiben reduzieren wird

Tötet Schnappi

Tötet Schnappi

Teufelsgrinsen

Working with Automator

Working with Automator beschreibt wie das neue Automationswerkzeug von Mac OS X 10.4 arbeitet. Macht neugierig ... (Gefunden beim Schockwellenreiter)

Zope Hosting und Performance

Der Schockwellenreiter hat Probleme mit seinem Zope-Server. Da ich nun schon seit einigen Jahren professionell (in der Firma) Zope-Hosting mache und dabei auch ein paar ziemlich heftige Portale laufen habe (zwischen 2000 und 3000 Hits pro Minute sind da nicht selten - allerdings verteilt auf viele Systeme), hier mal ein paar Tipps von mir zur Skalierung von Zope.

  • Der wichtigste Schritt, den ich jedem empfehlen würde, ist entschlacken. Werft aus dem Zope all das raus was nicht rein muss - was statisch erstellt werden kann, was sich nur selten ändert, wo kein Content-Management nötig ist: raus damit. Packt es in normale Apache-Verzeichnisse. Nehmt Apaches mod_rewrite und sorgt dafür das die alten Adressen weiter funktionieren, aber aus dem Apache kommen. Das betrifft vor allem all die kleinen Scheisserlein wie Layoutgrafiken und so - die brauchen nicht aus dem Zope zu kommen, die werden besser aus dem Apache geliefert.
  • Benutzt das Zope-Caching, wenn irgend möglich. Irgend möglich heisst: genug Speicher auf dem Server, damit auch sich fettfressende Prozesse mal etwas Luft haben. Generell führt das Zope-eigene Caching dazu, das Prozesse immer fetter werden - das Aufräumen im eigenen Cache ist recht unbrauchbar. Also setzt eine Prozessüberwachung ein, die einen Zope-Prozess abschiesst und neu startet wenn er zu viel Speicher braucht. Ja, das ist wirklich sinnvoll und notwendig.
  • Gute Cachingmöglichkeiten gibt es im Zope zwei: den RAMCacheManager und den HTTPCacheManager. Ersterer speichert Ergebnisse von Zope-Objekten im Hauptspeicher und kann daher einzelne Seitenkomponenten cachen - packt das da rein, was komplex zu ermitteln ist.Der zweite (HTTPCache) arbeitet mit einem Squid zusammen. Packt einen Squid als HTTP Accelerator vor euren Zope und konfiguriert den HTTP Cache Manager entsprechend, so das Zope die passenden Expire-Header erzeugt. Dann wird ein Grossteil eures Traffics aus dem Squid betrieben. Der ist schneller als euer Zope. Alternativ zum Squid kann man auch einen Apache als HTTP Accelerator mit lokalem Cache konfigurieren - ideal für die, die keinen Squid installieren können oder wollen, aber durchaus Möglichkeiten zur weitergehenden Konfiguration eines Apache haben.
  • Grosse Zope-Objekte (und das meine ich wirklich im Sinne von KB) machen Zope tot. Beim Caching zerfetzen sie einem die schönste Cache-Strategie und Zope selber wird arschlahm wenn die Objekte zu gross werden. Der Grund liegt in der Zope-Architektur: alle Objekte werden erst mühsam in mehreren Schichten durch mehrere Softwarelayer zusammengedengelt. Im Speicher - und belegen daher im Speicher auch entsprechend Platz. Raus mit den komplexen Objekten mit riesigen KB-Zahlen. Macht sie kleiner. Erstellt sie statisch per Cronjob. Liefert sie aus dem Apache aus - es gibt nix blöderes als seine grossen PDFs alle im Zope in der ZODB abzulegen, oder gar dynamisch dort zu generieren.
  • Installiert ZEO. Das Teil rockt. Im Prinzip ist es nur die ZODB mit einem primitiven Serverprotokoll. Wichtig daran: euer Zope kann auf mehrere Prozessgruppen aufgeteilt werden. Das wollt ihr wenn ihr per Prozessüberwachung einen amoklaufenden Zopeprozess abschiessen wollt, aber das Portal von aussen möglichst unbeschädigt aussehen soll - in dem Fall packt ihr auf den Apache einfach mod_backhand drauf, oder eine andere Balancer-Technik zwischen Apache und Zope. Zusätzlich macht der ZEO auch das Packen der ZODB (sollte täglich laufen) einfacher, da der Pack im Hintergrund auf dem ZEO läuft und die Zope-Server selber nicht gross beeinträchtigt werden.
  • Wenn ihr habt, nehmt einen SMP-Server. Oder kauft euch einen. Wirklich - das bringt ne Menge. Voraussetzung ist allerdings die oben angesprochene Technik mit den mehreren Prozessgruppen - Python hat ein globales Interpreterlock, welches dazu führt das auch auf einer Mehrprozessor-Maschine eh nie mehr als ein Python-Thread gleichzeitig läuft. Von daher wollt ihr mehrere Prozessgruppen.
  • Performance gewinnt man auch durch Ausschaltung von Schichten. Leider ist das oft nur mit Softwareänderungen realisierbar, daher eher für Selberstricker interessant. Packt komplexe Abläufe raus aus dem Zope-Server und packt sie in Zope Products. Zope Products laufen native ohne Beschränkungen im Python Interpreter. Zope Python Scripte und DTML Dokumente werden hingegen durch viele Layer geschleppt die dafür sorgen das ihr euch an die Zugriffsrechte von Zope haltet, nichts böses tut und auch sonst ganz lieb seid. Und sorgen dafür das ihr langsamer werdet. Products lohnen sich - kosten aber Arbeit und sind entgegen der anderen mehr technischen Tipps nicht immer umsetzbar.
  • Zusätzlich hat es sich bewährt nicht zu viel Daten in die ZODB zu packen, vor allem nichts was diese erweitert - die ZODB wird nämlich nur grösser, kleiner wird sie nur beim Packen. Nach einiger Zeit hat man dann locker eine ZODB im GB-Bereich und braucht sich über langsame Serverstarts nicht wundern ...
  • Wenn komplexere Abläufe im System vorkommen kann es Sinn machen die ganz auszulagern. Bei mir kommt dann immer das |TooFPy| zum Einsatz. Einfach die ganzen komplexeren Sachen in ein Tool umwandeln und dort reinhängen - der Code läuft ungebremst schnell ab. Vom Zope dann einfach mit einem SOAP Client oder XMLRPC Client auf den Toolserver zugreifen und die Funktionen dort ausführen. Ja, die mehrfache XML Wandlung ist tatsächlich weniger kritisch als der Ablauf von komplexerem Code im Zope - vor allem wenn dieser Code einiges an Laufzeit beansprucht. Zope blockiert dann nämlich einen seiner Listener - die Anzahl ist statisch. Und einfach hochdrücken bringt nix - dank des globalen Interpreterlocks würden dann nur mehr Prozesse aufeinander warten, das dieses Lock freigegeben ist (z.B. bei jeder C-Erweiterung die zum Einsatz kommt). Für die XMLRPC Kommunikation gibt es eine gute und schnelle C-Implementierung die in Python integriert werden kann, damit ist das XML-Overhead-Problem irrelevant.
  • Wenn ihr PostgreSQL als Datenbank benutzt: nehmt PsycoPG als Datenbanktreiber. Das Session-Pooling bringt Zope erst richtig auf Touren. Generell solltet ihr schauen ob der entsprechende Datenbanktreiber irgendeine Form von Session Pooling unterstützt - notfalls über einen externen SQL Proxy. Denn sonst hängt in Zope bei SQL-Queries unter Umständen das ganze System, weil eine fette Query auf das Ergebnis wartet. Da ist schon mancher drauf reingefallen und hat lernen müssen das 16 Zope-Threads nicht gleichbedeutend mit 16 parallel bearbeiteten Zope-Zugriffen bedeuten muss, wenn SQL-Datenbanken im Spiel sind.

Es gibt natürlich noch eine ganze Menge mehr Sachen die man machen kann, aber die obigen sind weitestgehend aus dem Stand zu bewältigen und hauptsächlich davon abhängig das ihr genug Speicher im Server habt (und evtl. eine Mehrprozessormaschine - geht aber auch ohne). Wichtig ist der Speicher - je mehr desto besser. Wenn geht, steckt halt noch mehr Speicher rein. Man kann nicht zu viel Speicher haben ...

Was machen wenn das alles auch noch nicht reicht (ja, ich hatte das schon - manchmal hilft nur die ganz grobe Axt). Nun, in dem Fall gibt es Abwandungen der obigen Techniken. Meine Lieblingstechnik in dem Bereich ist aktives Caching. Damit meine ich, das im Zope an einer Stelle hinterlegt wird welche Dokumente aktiv gecached werden sollen. Dazu gehört dann auf der Kiste ein Script, das die Seiten vom Zope abruft und in ein Verzeichnis packt. Per Apache Rewrite Rules wird dann dafür gesorgt das von aussen die statischen Inhalte ausgeliefert wird. Im Prinzip sorgt man also dafür das die Seiten die am häufigsten besucht werden und die für diese Technik geeignet sind (also z.B. keine Personalisierungsdaten enthalten) einfach eine statische Seite rausgeht, egal was sonst passiert - die normalen Cachetechniken gehen da einfach nicht brutal genug vor, da geht noch zu viel Traffic durch auf den Server.

Ein weiterer Schritt ist natürlich der Einsatz weiterer Maschinen - einfach weitere Kisten daneben stellen und mit der ZEO-Technik miteinander verbinden.

Zope ist eine fantastische Software - gerade die hohe Integration von Entwicklungsumgebung, CMS und Server ist oft ungemein praktisch und die leichte Integrierbarkeit in externe Datenquellen ist ebenfalls sehr nett. Aber Zope ist ein Ressourcenschwein, das muss man so einfach mal sagen.

Zyklische Dependencies

Debian hat ein wunderschönes Paketsystem. Und es hat eine ganze Reihe von sehr brauchbaren Werkzeugen um Backports einfacher zu machen - zum Beispiel in dem man mit debootstrap ein chroot-Environment zusammenstellt in dem man gefahrlos die Pakete zusammentragen kann die man für den Build braucht und dann ein entsprechendes Paket erstellt. Ich habe das ganze schon mehrfach benutzt, es ist wirklich klasse.

Allerdings kann einen das auch manchmal in den Wahnsinn treiben. Ich wollte die neuste SQLite aus der Debian Testing installieren. Dazu brauche ich erstmal die nötigen Tools um das Paket builden zu können. Da ich ein neues chroot Environment aufgesetzt hatte, war noch nicht alles da - zum Beispiel fehlte mir cdbs, ein sehr mächtiges (und mitlerweile viel benutztes) Tool zur einfachen Erstellung von Debian Paketen. Das hatte ich schon mal vorher portiert, aber ich dachte mir die Gelegenheit sei günstig da mal eine aktuelle Version zu bauen.

Dachte ich. Fing auch ganz harmlos an - es braucht für die Dokumentation springgraph - ein Tool zur Formatierung von Grafen. Das Tool selber hat eigentlich keine Builddependencies (ausser den obligatorischen Debhelpern). Fein. Baut auch sehr schnell. Bei der Installation meckert es dann über fehlende Perlmodule für die GD2 Einbindung. Ok, Perlmodule zu portieren ist oft nervig, aber dieses sah eigentlich ganz simpel aus. Eine Reihe von Buildabhängigkeiten, klar, aber sonst harmlos. Bis auf den Fakt, das es zum Builden cdbs braucht.

Aaaaarghl!!!!

Okok, ich weiss was man machen muss. Trotzdem. Manchmal hab ich das Gefühl die Debian-Maintainer setzen sich heimlich zusammen um mich in den Wahnsinn zu treiben

D Programming Language

Das Referenzbuch zur D Programming Language(einem Nachfolger von C und C++ mit diversen Highlevel-Ideen) hat eine sehr faszinierende Klausel in der ersten Seite der Sprachbeschreibung stehen:

Note: all D users agree that by downloading and using D, or reading the D specs, they will explicitly identify any claims to intellectual property rights with a copyright or patent notice in any posted or emailed feedback sent to Digital Mars.

Ich habe so die Vorstellung das eine solche Klausel - die automatisch nur durch das Lesen der Dokumentation für einen Benutzer zwingend wird und etwas fordert, das der Benutzer unter Umständen garnicht leisten kann - ein bischen absurd ist. Mich würde mal die Meinung der Blawger dazu interessieren

E-Mails dürfen nicht gefiltert werden

Urteil: E-Mails dürfen nicht gefiltert werden - eine wichtige Entscheidung mit potentiell weitreichenden Folgen. Denn gerade die Stärkung des Rechts auf Geheimhaltung von eMail aber auch die Filterung führt in Unternehmen sicherlich zu Konflikten. Wichtig vor allem ist es, weil hier die Anwendbarkeit des Post und Fernmeldegeheimnisses auf eMail festgelegt wurde - ein Punkt, der bisher oft problematisch war.

Ok, bleibt natürlich noch offen was alles vor Gericht als plausibler Grund für Filterung Bestand hat - warscheinlich dann wieder etwas mehr als nur die Virenabwehr. Trotzdem ein Schritt in die richtige Richtung.

Anwärter auf den Preis für das absurdeste WordPress Plugin: ein Code39 Barcode Generator. Naja, vielleicht können dann ja Leute die Webseiten immer ausdrucken damit was anfangen

Entwicklung der Aqua-Variante von OpenOffice für Macintosh eingestellt - schade. Ok, NeoOffice/J ist eine brauchbare Alternative aber trotzdem, eine voll native OpenOffice Version hätte was gehabt.

Das Unwort 2004

Egal was morgen verkündet wird - mein Unwort ist Reform . Wie jeder Hirnfurz eines Ministers als Reform tituliert wurde ist einfach unsäglich dämlich.

Nach Fahndungserfolg im Fall Moshammer: Ruf nach Ausweitung der DNA-Analyse - wdr.de - Panorama - und die Büchse der Pandora öffnet sich immer weiter.

Planteopia - Wissenverbiegungsmagazin

No TV Logo

Das Wissen schafts verbiegungsmagazin hat ja einen Beitrag über Weblogs verbrochen - und ein paar Blogger haben dazu Input geliefert. Das Ergebnis war natürlich ein totales Debakel - was will man von einem SAT.1 Magazin auch anderes erwarten? Sehr humorvoll die Reaktion vom Spreeblick auf den Quatsch. Und die Aufregung vom Schockwellenreiter kann ich gut verstehen.

Warum Jörg allerdings das ganze nicht gleich gegen Honorar gemacht hat, um wenigstens ein positives Ergebnis aus dem Quatsch zu ziehen, ist mir nicht so ganz klar. Hat er wirklich erwartet das sich bei SAT.1 irgendwas sinnvolles zum Thema Grassroots-Journalismus ergeben kann? Faktenfälschung und manipulative Schnitte sind bei solchen Magazinen doch an der Tagesordnung - es geht nur um reisserischen Müll, mit wirklicher Berichterstattung oder Reportage hat das ganze nichts zu tun.

Und Planetopia selber? Naja, im Gegensatz zur Boulevardpresse (deren Eskapaden manchmal vor unfreiwilligem Humor strotzen) ist das ganze auch noch so schlecht aufgezogen und die Beiträge so flach gehalten, das es nichtmal als Trash-Unterhaltung taugt ...

ChapterZero » IllustRender - man kann das vorige mit LaTeX auch ins Perverse treiben: der hier bindet über Ghostscript dann auch noch Grafiken ein ...

Clark Dalton gestorben?

Clark Dalton ist laut Gerüchten in Salzburg gestorben - ich gestehe, in meiner Jugend hab ich auch grössere Mengen von Perry Rhodan Heften gelesen ... Update: es ist war. Walter Ernsting ist tot. Komisch, wie ich mit dem Schriftsteller eigentlich nur sein Pseudonym verbinde und wie fremd sein richtiger Name klingt.

Kallisys | Newton | Einstein Project

Das Einstein Project ist ein Emulator für die Apple Newton Hardware. Dadurch wird zwar der eigene Mac nicht kleiner (und damit auch kein Ersatz für den PDA), aber man kann wenigstens mit einem der interessantesten PDA-Betriebssystemen spielen. Gefunden in Rainer Joswigs Lispnews.

Loch gegen Raab: Konto gesperrt, Gerichtsvollzieher bestellt - so muss man mit dem Raab umspringen

Longhand

Longhand ist ein netter kleiner Formelevaluator. Man könnte es auch Taschenrechner nennen, aber es ist ja ein Programm für den Desktoprechner. Sowas wie eine grafische Variante von bc - unterstützt auch beliebig grosse Zahlen. Nett und simpel für die kleine Berechnung zwischendurch.

MonkeyTyping - The PEAK Developers' Center

MonkeyTyping ist Phillip J. Ebys Ansatz für optional statisches Typing in Python. Sieht sehr interessant aus, die Idee. Was mich an Phillip immer wieder begeistert ist seine Fähigkeit über den Sprachtellerrand zu gucken - man denke nur an seine Arbeiten für generische Funktionen in Python. Genau solche Schübe braucht Python mal dringend wieder - einige Diskussionen rund um Python zeigen die ersten Anzeichen von Sprach-Inzucht (zum Beispiel diese nahezu Hass-Reaktionen auf die Erwähnung von Lisp und Lips-Features bei einigen Python-Advocates).

TextWrangler jetzt frei wie Freibier

Wenn ich mir den Featurevergleich vom jetzt kostenlos verfügbaren TextWrangler und BBEdit ansehe, dann gibt es eigentlich nur ein Feature, das mir fehlen würde: Shell Sheets. Diese Shell Sheets sind absolut genial - jedenfalls wenn man wie ich auf alten Macs mit MPW gearbeitet hat und sich an die Arbeitsweise gewöhnt hat. Im Prinzip wie ein Shell-Fenster im Emacs, nur das der Editor drumherum bedienbar ist

Ansonsten ist allenfalls noch die Einschränkung keine TextFactories mit TextWrangler bauen zu können (ausführen kann man sie aber) zu nennen, all den anderen Kram halte ich persönlich für absolut verzichtbar - besonders diese ganzen HTML Werkzeuge habe ich eigentlich nie benutzt.

Schön das BareBones endlich wieder eine nennenswerte freie Version ihres Editors zur Verfügung stellen.

Using LaTeX in WordPress » LatexRender as a plugin - ja, es ist das was man vermutet: eine Einbindung von LaTeX in WordPress. Weird.

Die Achse der Frommen: Lebt denn d'r alte Darwin noch?

Keine Kirche!

Kreationismus ist Unfug. Grober Unfug. Auf den Rücken von Schülern ausgetragen die mit solchem Mumpitz in Zeiten zurückgedrängt werden, die man eigentlich mit der Entschuldigung der katholischen Kirche bei Galileo Galilei(ok, der war da auch schon ein paar Jahrhunderte tot und so ganz echt war die Entschuldigung auch nicht) überwunden glaubte.

Und es ist erschreckend wie nah diese Welle von Dummheit uns kommt - mit Italien und Serbien sozusagen vor die Haustüre. Und ich bin mir garnicht so sicher das wir wirklich so sicher vor dem Übergreifen dieser Seuche sind, wie wir glauben.

heise online - Huygens Countdown: The day after - das erste Farbbild (ok, immer noch recht monochrom trotz Farbe) und eine Aufnahme des Windgeräusches auf Titan. Leider ist der Server mit dem Sound im Moment überlastet.

Warum Martin Schwimmer vom Trademark Blog Bloglines Bloglines aufgefordert hat seinen Feed aus dem Angebot zu nehmen - passt zur IzyNews Diskussion.

Morganically Grown » MiniPosts Plugin for WordPress - ein Plugin für Blogmarks - diese kleinen Titellosen Postings. Ich mach die noch mit einem gepatchten Template und einer eigenen Kategorie.

no status quo » RunPHP WordPress Plugin führt PHP-Code direkt in Postings aus. Damit kriegt man sowas wie < ?php echo "Makros"; ?> in Wordpress.

PHP Markdown - neuere Version als im Wordpress CVS. Ich hab Markdown aber abgeschworen - die Performance war stellenweise absurd hoch.

argh!

Da kann ich argh! einfach nur zustimmen, dem Kommentar zu Annett Louisan.

Blogs - die neue Geldmaschine?

Ein Plugin das ich sicherlich nicht installieren werde:

BlogMine enables content targeted ads in both feeds and web pages, simplifies and increases revenue generation for bloggers. The service provides a universal way to monetize all blog related content, regardless of whether it is published to the web or as an RSS feed.

DNS Stuff: DNS tools, WHOIS, tracert, ping, and other network tools.

Ein ganzer Sack voll Tools rund um Nameserver, Erreichbarkeiten etc. Sehr praktisch wenn man mal eben prüfen will ob die Reverse Resolution der Serveradresse auch von ausserhalb verlässlich funktioniert. Oder wenn man mal eben einen ganzen Satz von RBLs gegen eine IP testen will (da hatte ich letztens ja auch schon rbls.org für gefunden). eMail-Tests. Routing-Informationen. Und und und ...

ESA - Cassini-Huygens - First image from Titan

ESA - Cassini-Huygens - First image from Titan - da ist es, das erste Bild vom Titan, aufgenommen aus 16 Kilometer Höhe. Ich will mehr davon

Und bei Heise gibt es mehr davon. Klasse. Die Landestelle - wow.

FBI versenkt 170 Mio Dollar Software Projekt - wegen unerwarteter Probleme . Komisch, das die Probleme in der IT immer noch unerwartet sind ...

Gericht stoppt Anzeigenkampagne von Krebsarzt Rath

Schon peinlich das ein solcher Scharlatan nur aufgrund von Formfehlern erstmal gestoppt wird. Man sollte meinen das man solchem Mumpitz schon viel früher das Handwerk legen kann.

Google bekommt Patent auf Suchbegriffhervorhebung

Google bekommt Patent auf Suchbegriffhervorhebung - und damit verstösst meine Website gegen genau dieses Patent. Dank des Search-Highlight-Plugins für WordPress (ist im Standardumfang mit drin) werden bei mir nämlich Suchbegriffe farblich gekennzeichnet, wenn man von einer Suchmaschine auf meine Seiten kommt. Tja, verklag mich doch, Google ...

Patente an sich sind schon problematisch genug, aber solche Banalpatente sind einfach nur Moppelkotze.

heise online - Huygens-Countdown +8h: Doch ein paar Wermutstropfen - Mist, der Wetterbericht fällt aus ...

heise online - Neue Zürcher Zeitung digitalisiert alle Jahrgänge seit 1780 - irgendwie cool. Noch cooler wenn die Ergebnisse frei zugänglich gemacht würden, ich könnte mir vorstellen das es für Historiker ein faszinierender Informationspool sein könnte.

Mordermittlungen: Modemacher Moshammer ist tot | tagesschau.de - wieso lese ich da eigentlich dauernd immer Modeermittlungen?

PECL :: Package :: APC - PHP caching System, Open Source (nicht so komische Stunts wie phpAccelerator und nicht so tot wie turck mmCache)

Raumsonde «Huygens» sendet Daten - Yeah!

Suchbegriffs Zeitgeist ist wieder da

Ich habe wieder einen Suchbegriffs Zeitgeist für dieses Blog. Vorher wurde der ja vom Community Server erstellt, jetzt habe ich dafür ein Pythonscript geschrieben das diesen Zeitgeist automatisch erstellt. Das ganze dann in das Template-System von Wordpress integriert, so das auch das Layout stimmt.

Natürlich habe ich diese Seite in meiner robots.txt für die Suchmaschinen ausgeklammert, damit diese Suchbegriffe und Links auf die Suchmaschinen zurück nicht von diesen wieder zum Pageranking benutzt wird - sonst würden die Benutzer irgendwann nur noch auf meiner Zeitgeistseite laden. Und das wäre dann ja Google-Spamming

Ich find diese Art von Suchbegriffsauswertung (ich werte übrigens einen ganzen Sack von Suchmaschinen dafür aus) immer recht spannend, da damit viel besser zu sehen ist was das Netz interessiert als mit den normalen Auswertungen die Logwerkzeuge so anbieten.

SURBL -- Spam URI Realtime Blocklists - Reatime blocking list die Hostnamen aus URLs prüfen kann.