Artikel - 12.1.2005 - 20.1.2005

heise online - EU-Rat will weiteren Anlauf bei Softwarepatenten wagen

heise online - EU-Rat will weiteren Anlauf bei Softwarepatenten wagen und tritt weiter die Meinung der Bevölkerung und der Parlamente mit Füssen. Und unsere Regierung in Berlin sitzt weiter auf ihrem fetten von der Wirtschaft gepuderten Arsch und macht nichts. Egal ob durch so einen Mist der Softwaremittelstand Probleme bekommen wird, egal ob das ganze nur den grossen Softwaregiganten hilft, egal ob es nur ein Amerika-in-den-Arsch-kriechen ist. Niemand schert sich wirklich um die Sache, es sind doch nur so ein paar Softwarefuzzis die Krach machen, wen scheren die denn.

Und irgendwann wird selbst die dümmste Ministerin merken das Softwarepatente keine Arbeitsplätze schaffen.

zorniges Gesicht

Menschenverachtende Idee des Tages

Das Bangkog Hilton installiert Kameras im Todestrakt zur öffentlichen Ausstrahlung des Lebens der Gefangenen die auf die Hinrichtung warten - da hilft es auch nicht, das sie nicht planen die Hinrichtung selber zu zeigen. Das auch verurteilte Verbrecher Menschenrechte haben wird leider immer wieder ignoriert. Und damit stellt der Staat sich mit den Verbrechern letzendlich auf eine Stufe. Es verwundert also nicht, das ähnliche Praxis in den USA - zumindestens zum Teil - schon üblich ist. Das die Todesstrafe an sich sowieso schon eine der unmenschlichsten Ideen ist, die eine Gesellschaft haben kann (im Gegensatz zu allen anderen üblichen Strafen ist sie eben nicht reversibel oder zumindestens Entschädigbar bei Irrtum), steht sowieso ausser Frage. Staaten mit Todesstrafe (und damit letztendlich einem Rechtssystem das auf Rachegedanken und nicht auf Schutz der Gesellschaft aufbaut) kann ich nicht als sonderlich zivilisiert ansehen ...

SCO vs. Linux: SCO bekommt weiteres Material

Die auf den ersten Blick etwas seltsame Entscheidung der Richterin im Prozess SCO vs. IBM wird - wie üblich - von Groklaw erklärt. Die Rolle der Richterin ist eben nicht die Klärung wer Recht hat - das ist ein anderer Richter. Ihr Job ist nur dafür zu sorgen das alle Beteiligten alles relevante Material auf den Tisch legen. Es geht also alleine um die Ermittlungsunterlagen. Trotzdem ist das ganze natürlich wieder die nervige Verzögerungstaktik von SCO am Werk. Aber eben nicht der grosse Zwischenerfolg für SCO als das man das ganze evtl. sehen könnte.

Seltsame Haltung von Planetopia

Im Spreeblick hat der Planetopia-Journalist um Entfernung des Fragenmitschnittes gebeten - was mich daran fasziniert: er hatte keinerlei Skrupel seine verfälschten Schlüsse in der Sendung vor einem Milliionenpublikum zu veröffentlichen. Aber gegen die Veröffentlichung der Fragen die er gestellt hat, hat er was. Verträgt er seine eigene Medizin nicht?

Versicherungen wollen Einblick in Gentestergebnisse

Versicherungen wollen Einblick in Gentestergebnisse. War ja zu erwarten, das sowas kommt. Schliesslich ist das der beste Weg für diese Abzockunternehmen sich aus den letzten verbleibenden Situationen zu verpissen wo sie vielleicht doch bezahlen müssten. Und genau darum geht es bei Versicherungen ja: den Leuten etwas zu verkaufen das man ihnen im Ernstfall garnicht bereit ist zu geben. Ist ja auch leicht, die Politik zwingt die Bürger notfalls dazu.

Aber in der Gentechnik und dem Aufbau von Genprobensammlungen stecken ja überhaupt keine Risiken und wir sind doch alle viel zu paranoid das wir diesen Lügnern und Betrügern nicht glauben. Jau. Klar. Und Schweine können fliegen.

Beitrag 4000

Wow. Das hier ist - in der derzeitigen Datenbank - der 4000ste Artikel

erstauntes Gesicht

Got New Spam Tactic Figured

Asymptomatic » Got New Spam Tactic Figured berichtet übert eine neue Taktik der Blogspammer. Und zwar tauchen relativ harmlose Kommentare auf Blogs auf, die keinen einzigen Link enthalten. Wenn die Spammer diese Kommentare über Google wiederfinden wissen sie, das sie dort höchstwarscheinlich weitere Kommentare ablassen können - und umgehen die Sperren, die darauf beruhen das ein Kommentar automatisch freigegeben wird wenn ein Besucher unter seiner eMail-Adresse schon mal einen freigegebenen Kommentar hatte. Es könnte also sein das nach einem Hey, Deine Seite finde ich toll Kommentar dann plötzlich ein Berg von Blogspam aufschlägt ...

RSS 1.1: RDF Site Summary (DRAFT)

RSS 1.1: RDF Site Summary (DRAFT) - wie sinnvoll. Irgendjemand hat sich RSS 1.0 (ja, dieses ungeliebte RDF-basierte Format das eigentlich keiner so richtig kennt) und dazu einen Update entworfen. Weil, es gibt ja noch nicht genug Feed-Formate, da muss man ja unbedingt noch eins dazu packen.

Passend dazu bin ich dann auch noch über das HTML Syndication Format gestolpert - auch so eine sinnvolle Sache, da hat sich jemand gedacht den Feed einfach als speziell getaggten XHTML Source auszuliefern.

Und im Gegensatz zur RSS 3.0(das auf YAML basiert statt auf XML) meinen die anderen beiden es wohl mehr oder weniger ernst (beim HTML Syndication Format hoffe ich ja immer noch das es nur eine aufwändig gestaltete Ente war ...)

Schwarzenegger lehnt Gnadengesuch ab

Der Terminator macht seinen Filmfiguren alle Ehre - und schickt mal wieder einen Menschen in den Tod.

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)

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.

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.

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 ...

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.

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.

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.

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.

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.

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.

VW-Zahlungen: Bundestagsabgeordneter tritt zurück

Wieso sind Politiker eigentlich grundsätzlich so blöd zu glauben das ihre Lügen nicht rauskommen? Oder wieso versuchen sie jedes Mal bei solchen Sachen wie den Nebeneinkünften, bei irgendwelchen Miles-and-More-Geschichten oder was sonst auch immer an Kleinkorruption so am kochen ist sich mit wirklich banalsten Lügen rauszuwinden?

Caching für PHP Systeme

Es gibt ja grundsätzlich zwei Wege wie man in einem PHP-basierten System caching betreiben kann. Ok, es gibt viel mehr, aber zwei Hauptwege sind deutlich erkennbar. Ich hab mal zusammengeschrieben was in dem Zusammenhang interessant ist - gerade weil im Moment ein paar Kollegen unter hoher Serverlast zu leiden haben. Das ganze ist allgemein gehalten, betrachtet aber aus begreiflichen Gründen auch die speziellen Folgen für WordPress.

  • Caching von vorkompilierten PHP Seiten
  • Caching von Seitenoutput

Zu beiden Hauptwegen gibt es eine ganze Reihe von Varianten. Die PHP Seiten selber liegen bei Webservern ja als Source vor - unverarbeitet und nicht irgendwie optimiert für den Ladeprozess. Hat man komplexe PHP Systeme laufen, fällt also bei jedem PHP-File das parsen und kompilieren in den internen Code an. Das kann bei Systemen mit vielen Includs und vielen Klassenbibliotheken durchaus beachtlich sein. An diesem Punkt setzt die erste Hauptrichtung des Cachings an: der erzeugte Zwischencode wird einfach weggespeichert. Entweder in shared Memory (Speicherblöcke die vielen Prozessen eines Systems gemeinsam zur Verfügung stehen) oder auf die Festplatte. Hier gibt es eine Reihe von Lösungen - ich selber setze turck-mmcache ein. Der Grund ist hauptsächlich das es nicht im shared Memory cached, sondern auf der Platte (was aber meines Wissens die anderen ähnlichen Lösungen auch tun) und das es für turck-mmcache ein Debian-Paket gibt. Und das ich bisher relativ wenig negative Erfahrungen damit gemacht habe (jedenfalls bei Debian stable - bei Debian testing sieht das anders aus, da fliegt einem die PHP Anwendung um die Ohren). Da WordPress auf einer grösseren Menge von Bibliotheksmodulen mit recht grossem Sourceinhalt basiert, bringt ein solcher Cache eine ganze Menge um die Grundlast von WordPress zu mindern. Da diese Caches in der Regel vollkommen transparent - ohne sichtbare Auswirkungen ausser der Beschleunigung - sind, kann man einen solchen Cache auch generell aktivieren.

Die Zweite Hauptrichtung für das Caching ist das Zwischenspeichern von Seiteninhalten. Hier kommt als Spezialität hinzu, das Seiten ja oft dynamisch abhängig von Parametern erstellt werden - und daher eine Seite nicht immer den gleichen Output erzeugt. Man denke nur an so banale Sachen wie die Anzeige des Benutzernamens wenn ein Benutzer angemeldet ist (und einen Cookie dafür gespeichert ist). Auch aufgrund von HTTP Basic Authentication (die Anmeldetechnik bei der das Popup-Fensterchen für Benutzer und Passwort kommt) können Seiteninhalte unterschiedlich sein. Und POST-Requests (Formulare die ihre Inhalte nicht über die URL mitschicken) produzieren auch wieder Output der von diesen Daten abhängig ist.

Grundsätzlich muss also ein Output-Cache diese ganzen Eingangsparameter berücksichtigen. Eine gute Strategie ist oft die POST-Ergebnisse garnicht zu cachen - denn dort würden auch Fehlermeldungen etc. auftauchen, die abhängig von externen Quellen (Datenbanken) sind und daher sogar bei identischen Eingabewerten unterschiedliche Ausgaben produzieren könnten. Man kann also eigentlich nur GET-Anfragen (URLS mit Parametern direkt in der URL) sinnvoll cachen. Hierbei muss man aber sowohl die gesendeten Cookies als auch die gesendeten Parameter in der URL berücksichtigen. Sofern das eigene System mit basic-Authentication arbeitet, muss auch das mit einfliessen in den Cache-Begriff.

Ein zweites Problem ist, das Seiten selten rein statisch sind - auch statische Seiten enthalten durchaus Elemente die man eigentlich lieber dynamisch haben möchte. Hier muss man also eine wesentliche Entscheidung treffen: reicht rein statischer Output, oder muss ein Mix kommen? Desweiteren muss man noch die Entscheidung treffen, wie sich Seitenaktualisierungen auswirken sollen - wie merkt der Cache, das etwas geändert wurde?

Ein Ansatz den man verfolgen kann ist ein sogenannter reverse-Proxy. Man packt einfach einen normalen Web-Proxy so vor den Webserver, das jeglicher Zugriff auf den Webserver selber technisch durch diesen Webproxy gezogen wird. Der Proxy steht direkt vor dem Webserver und ist somit für alle Benutzer verbindlich. Da Webproxies das Problem der Benutzerauthentifizierung, der Parameter und der POST/GET-Unterscheidung schon gut beherrschen sollten (in der normalen Anwendungssituation für Proxies sind die Probleme ja die gleichen), ist das eine sehr pragmatische Lösung. Auch die Aktualisierung wird von solchen Proxies meist recht gut gelöst - und im Notfall kann der Benutzer durch einen erzwungenen Reload den Proxy ja überreden die Inhalte neu zu ziehen. Leider geht diese Lösung nur dann, wenn man den Server selber unter Kontrolle hat - und der Proxy zieht noch weitere Resourcen, weshalb unter Umständen dafür kein Platz auf dem Server ist. Auch ist es stark von der Anwendung abhängig wie gut sie mit Proxies klar kommt - wobei Probleme zwischen Proxy und Anwendung auch bei normalen Benutzern aufstossen würden und deshalb sowieso gelöst werden müssen.

Der zweite Ansatz ist die Software selber - letzten Endes kann die Software ja genau wissen wann Inhalte neu erstellt werden und was für das Caching berücksichtig werden muss. Hier gibt es wieder zwei Richtungen der Implementierung. MoveableType, PyDS, Radio Userland, Frontier - diese erzeugen alle statische HTML Seiten und haben deshalb das Problem mit der Serverlast bei Seitenzugriffen nicht. Der Nachteil liegt auf der Hand: Datenänderungen erzwingen ein Neuerstellen der Seiten, was bei grossen Sites nervig werden kann (und dazu geführt hat das ich von PyDS auf WordPress gewechselt habe).

Die zweite Richtung ist das Caching aus der dynamischen Anwendung selber: beim ersten Zugriff wird der Output unter einem Cache-Key gespeichert. Beim nächsten Zugriff auf den Cache-Key wird einfach geguckt ob der Output schon vorliegt, wenn ja wird er ausgeliefert. Der Cache-Key setzt sich aus den GET-Parametern und den Cookies zusammen. Wenn Datenbankinhalte geändert werden, werden die entsprechenden Einträge im Cache gelöscht und damit die Seiten beim nächsten Zugriff neu erstellt.

WordPress selber hat mit Staticize ein sehr praktisches Plugin für diesen Einsatzzweck. In der aktuellen Beta ist es schon im Standardumfang mit drin. Dieses Plugin erzeugt wie oben beschrieben für Seiten einen Cache-Eintrag. Und berücksichtigt dabei die Parameter und Cookies - basic Authentication wird bei WordPress ja nicht benutzt. Der Clou ist aber, das Staticize die Seiten als PHP speichert. Die Cache-Seiten sind also selber wieder dynamisch. Diese Dynamik kann jetzt dazu benutzt werden um Teile der Seite mit speziellen Kommentaren zu markieren - wodurch für diese Teile der Seite dann wieder dynamische Funktionsaufrufe eingesetzt werden. Der Vorteil liegt auf der Hand: wärend die grossen Aufwände für die Seitenerstellung wie das Zuladen der diversen Bibliotheksmodule und das Lesen der Datenbank komplett erledigt sind können einzelne Teilbereiche der Site weiterhin dynamisch bleiben. Natürlich müssen die Funktionen dafür dann so aufgebaut sein das sie nicht das ganze Bibliothekswerk von WordPress brauchen - aber zum Beispiel dynamische Counter oder Anzeigen der gerade aktiven Benutzer oder ähnliche Spielereien lassen sich auch in den Cacheseiten somit weiter dynamisch halten. Matt Mullenweg benutzt es zum Beispiel um auch auf Seiten aus dem Cache ein Zufallsbild aus seiner Bibliothek anzuzeigen. Staticize löscht bei Erstellung oder Änderung eines Beitrags einfach den ganzen Cache - sehr primitiv und bei vielen Files im Cache kann das dann schon mal etwas länger dauern, aber dafür sehr wirksam und pragmatisch.

Welche Caches setzt man sinvollerweise jetzt wie ein? Ich würde bei komplexeren Systemen immer gucken ob ich nicht einen PHP Codecache einsetzen kann - also turck mMCache oder Zend Optimizer oder phpAccelerator oder was es sonst noch so gibt.

Den Anwendungscache selber würde ich persönlich nur dann aktivieren wenn er auch wirklich nötig wird durch die Last - bei WordPress kann man ja ein Plugin vorhalten und nur bei Bedarf aktivieren. Denn Caches mit statischer Seitenerstellung haben nunmal so ihre Probleme - Layoutänderungen sind erst nach Löschung des Cache aktiv etc.

Wenn man einen Reverse-Proxy einsetzen kann und die Resourcen auf der Maschine dafür auch ausreichen ist er sicherlich immer zu empfehlen. Alleine schon weil man so selber die Probleme mitbekommt, die in der eigenen Anwendung eventuell bezüglich Proxies drin sind - und die jedem Benutzer hinter einem Webproxy auch Ärger machen würden. Gerade wenn man zum Beispiel Zope benutzt gibt es sehr gute Möglichkeiten in Zope die Kommunikation mit dem Reverse Proxy zu verbessern - dazu ist ein Cache Manager in Zope verfügbar. Auch andere Systeme bieten dafür gute Grundlagen - aber im Endeffekt sollte jedes System das saubere ETag und Last-modified Header produziert und korrekt conditional GET (bedingte Zugriffe die mitschicken welche Version lokal schon vorliegt und dann nur aktualisierte Inhalte sehen wollen) behandeln geeignet sein.

Vesper gegen Ausbau von FMO

Wer einmal am FMO abgeflogen oder angekommen ist, der weiss Landesbauminister Vesper Recht hat mit der Einschätzung das die Erweiterung der Landebahn Blödsinn ist - denn ich kenne keinen anderen derartig toten Flughafen wie den von Münster und Osnabrück. Da ist einfach nur tote Hose. Und dagegen hilft auch keine längere Landebahn - auch nicht der tolle Terminalausbau. Jetzt ist die Halle in der nix los ist einfach nur grösser als vorher. Und mit der längeren Landebahn könnten halt grössere Flugzeuge nicht landen und nicht starten.

Apple - iLife

Das neue iLife05 klingt auch gut - vor allem natürlich das neue iPhoto mit RAW File Unterstützung. Was letztendlich ziemlich fies für mich ist: ich muss mich dann noch mehr fragen wieso ich mir eigentlich iView Media Pro gekauft habe - vor allem wo bei iPhoto 5 ja auch die Kalendersicht mit drin ist und Schlüsselwortsuche gibts ja auch schon lange.

böse heimliche Vaterschaftstests

Ich nehm die Reaktion bei Pepilog mal als Aufhänger. Einfach weil er einer ist den ich im Aggregator lese. Angesprochen sind aber alle Männer.

Was mich absolut fasziniert an der Diskussion ist die reichlich verquere Argumentation des Themas. Es taucht immer wieder das Argument des Kuckuckskindes und er bescheissenden Mutter auf - und wie ein Mann sich dagegen wehren könne, wenn nicht durch heimliche Vaterschaftstests.

Jetzt denken wir einfach mal aus der anderen Richtung über die Sache nach. Was wäre denn, wenn heimliche Vaterschaftstests legal wären. Was wären die Auswirkungen: Väter können ohne Zustimmung und Wissen der Mutter Material des - potentiell gemeinsamen - Kindes zur Genanalyse geben. Wohlgemerkt, das Kind wird vermutlich auch nicht gefragt, was im Säuglingsalter eh nicht ginge. Das gilt dann allerdings für alle Väter - auch da, wo der Vater nur glaubt er wäre nicht der Vater weil er krankhaft eifersüchtig ist oder sich aus der Verantwortung verpissen will oder sonstwie auf den Trichter kommt das Kind wär nicht von ihm. Ich überspitze jetzt bewusst - immerhin bringt die Gegenseite ja auch ständig die bescheissende Mutter als wär das die normalste Situation der Welt. Unterhaltsverweigerungen durch Väter sind aber durchaus eine - nachweisbar - übliche Situation ...

Es wird argumentiert, das man ja nicht das Recht zu der Analyseerlaubnis alleine der Frau geben könnte, weil dann ja der Mann benachteiligt wäre - er könnte sich nicht gegen Kuckuckskinder wehren. Andererseits wird durch den heimlichen Test die Frau komplett ausgeschlossen - wie passt das in die angeblich so gerechte Diskussion? Bei einem heimlichen Test wird sowohl die Frau als auch das Kind soweit ausgeschlossen, das sie nichtmal über das ganze informiert sind - ausser der Vater entscheidet selbstherrlich was er macht.

Der heimliche Vaterschaftstest missachtet das Mitbestimmungsrecht der Frau (es geht nicht um das alleinige Recht der Frau zur Entscheidung - sondern um die Mitbestimmung!) in dem es diese Mitbestimmung komplett negiert. Es missachtet auch das Recht des Kindes - wobei man darüber diskutieren kann ob zu dem Zeitpunkt wo diese Situation wohl üblicherweise auftritt (Kind im Säuglingsalter) das Selbstbestimmungsrecht des Kindes höher einzuordnen wäre als das Mitbestimmungsrecht der Eltern.

Zusätzklich stört mich wirklich gewaltig mit welcher Selbstverständlichkeit von der bescheissenden Mutter ausgegangen wird - hier wird etwas gefordert, das warscheinlich in 90 Prozent der Fälle garnicht zutrifft - die meisten Paare werden wohl immer noch ziemlich gut wissen das ihre Kinder von ihnen gemeinsam sind.

Eigentlich ist das ganze die archetypische Selbstversicherungssucht der Männer, die in jeder Einschränkung einer absoluten Freiheit ihrerselbst gleich vermuten das sie diskriminiert werden - sowas wie ein Emanzipationsneid der sich breit macht seit Frauen um ihre Rechte kämpfen.

Sorry, aber ich muss uns Männern mal eines sagen: eine Einschränkung der Freiheiten zur Wahrung der Rechte Anderer ist nicht zwangsweise eine Diskriminierung von einem selbst!

Und genau um die Wahrung der Rechte der Frau - nämlich der Mitbestimmungsrechte was das Kind angeht - werden durch heimliche Vaterschaftstests definitiv missachtet. Denn ganz egal ob der Vater der Vater ist oder nicht: die Frau ist nachweislich die Mutter. Ihre Rechte stehen auf keinen Fall in Zweifel. Aber sie werden durch den heimlichen Test missachtet und ihr abgesprochen - mit der Begründung das der Mann sich ja anders nicht wehren könne. Arme Mann schaft, wenn solche Ängste uns bewegen ...

Geheime VW-Richtlinie für Zahlungen an Politiker?

Ist doch beruhigend zu sehen wie Parteien für die Versorgung ihrer Politiker sorgen. Nein, das ist ganz bestimmt keine Korruption, sowas kann man sich doch garnicht vorstellen, das Politiker korrupt sind und das Konzerne sich Vorteile davon versprechen wenn sie Politikern Geld in den Arsch blasen.

Glossary für WordPress

Ich habe ein kleines Wordpress Plugin geschrieben das ein Glossary ähnlich wie bei Radio Userland oder PyDS implementiert. Mit dem Glossary werden einfach Texte die durch | (Pipe) Symbole begrenzt werden durch einen Ersatztext (der auch XHTML Markup enthalten kann) ersetzt. Spart Tipperei ...

Das Plugin installiert eine kleine Managementseite im Wordpress-Backend, das ganze funktioniert also nur mit Wordpress 1.5 (oder evtl. 1.3). Die nötige Datenbanktabelle wird nach Aktivierung des Plugins automatisch erstellt beim ersten Zugriff auf die Managementseite.

heise Security - News - Aufgedeckt und angeklagt

Wie Unternehmen ihre Inkompetenz durch Macht auszugleichen versuchen. Ich hoffe das französische Gericht entscheidet gegen diese absurden Forderungen. Full Disclosure ist oft die einzige Möglichkeit für Kunden sich gegen Sturheit und Unwillen von Herstellern zu wehren - man kann das schön in der Historie sehen, wie Firmen (selbst Branchenriesen wie SUN) sich über Jahre weigerten Fehler anzuerkennen und erst durch Listen wie Bugtraq dann letztendlich dazu gezwungen wurden was zu unternehmen.

Firmen müssen endlich einsehen das Sicherheit nicht im stillen Kämmerlein funktioniert, sondern nur dann wirkliche Sicherheit ist, wenn sie auch einer öffentlichen Betrachtung und Analyse standhält. Security by obscurity is no security at all ...

Kommentarspam

Da Kommentarspam auch bei Wordpress-Blogs in letzter Zeit vermehrt auftritt und ich nicht erst in den Spamtopf fallen muss um zu reagieren, habe ich mal vorsorglich Spam-Karma installiert. Das ist ein ziemlich mächtiges Tool bei dem man zum Glück einen Haufen Optionen auch abschalten kann. Ich hoffe das damit ein sicherlich irgendwann anstehender Sturm auf meine Kommentarfunktion abgewendet wird.

Natürlich hat so ein Tool immer auch potentielle negative Auswirkungen. Wer also keinen Kommentar los wird, es gibt immer noch das normale Feedback-Formular das dann eine ganz normale - und ungefilterte - Mail an mich absetzt. Sofern diese dann durch meinen Mail-Spamfilter durchkommt, weiss ich bescheid was los ist (bei 300-400 Spams am Tag alleine zu Hause kann ich nicht garantieren das ich eine fälschlich als Spam erkannte Mail bemerke - allerdings geht mir scheinbar recht wenig dabei verloren, statistische Spamfilter regeln halt).

Irgendwie schon strange wie wir unsere Kommunikationsmittel künstlich kastrieren müssen, nur weil Menschen grundsätzlich alles was auszunutzen ist auch irgendwann ausnutzen ...

Update: nachdem es einen Trackback vom Schockwellenreiter gefressen hat, hab ich es erstmal abgeschaltet. Das Hauptproblem dabei war, das der Trackback mit einer Meldung gefressen wurde, die angeblich in genau der von mir eingesetzten Version behoben sein soll.

Rund und gesund: Jan Ullrich auf Mallorca

Business as usual beim Team Telekom T-Mobile. Wilde Gerüchte, alberne Ideen (Zabael nicht zur Tour? Was für ein Blödsinn) und ein zu fetter Jan Ullrich. Und die Konkurrenz lacht sich wieder ins Fäustchen ... Nunja, wenn Armstrong wirklich die Tour nicht fährt, hat wenigstens einer der anderen Fahrer (Klöden oder Basso?) eine Chance.

Und mal wieder Handy-Krampf

Mein Handy-Vertrag war mal wieder kurz vor Ende und die T-Mobile begierig darauf das ich verlängere. Also haben sie mit Handys nach mir geworfen. Ein Motorola E398 ist es geworden - hey, mein modernstes Handy war ein Nokia 6110 und das hat Jutta sich gegriffen so das für mich nur das S3 Com blieb, wenn ich das Firmenhandy nicht nutzen wollte ...

Nunja, das E398 ist nett - es hat alles was man sich vorstellen kann. Und noch ein bischen mehr. Wer die technischen Daten wissen will, Motorola verrät die sicherlich gern. Mich interessiert eigentlich nur eines an dem ganzen Gesumsel: das Apple mit dem Handy zwar Daten austauschen kann und es als Modem benutzen kann, aber iSync nur über Kabel damit synchronisiert. Warum nur muss alles im Umfeld von Handys immer völlig unlogisch, kompliziert und wirr sein?

Achja, und das das Handbuch zum Motorola zwar ne Menge Text enthält, aber in weiten Teilen nichts erklärt, muss ich ja nicht extra erwähnen. Prall ist die Dokumentation der ganzen Optionen die man einstellen kann: im Handbuch sind diese Optionen nochmal aufgeführt. Und benannt. Und das wars. Keinerlei Erklärung was man da jetzt genau eintragen soll und wo man die Informationen her bekäme. Und unter APN, IMPS, etc. kann sich jeder natürlich was auf Anhieb vorstellen. Genauso wie man natürlich spontan weiss welche IM-Technik der IM-Client benutzt, wenn das nirgendwo steht. Nur mit Hilfe von Google habe ich einiges rausfinden können.

Handys sind doof.