Bill Gates will das Internet sicherer machen - hat er vor die gesamte Windows-Betriebssystem-Reihe einzustellen und den Internet Explorer zu vernichten?
sysadmin - 23.11.2004 - 29.1.2005
Schüler muss wegen Computerwurms für anderthalb Jahre ins Gefängnis - aber wann wird die Firma deren anfällige Müllsoftware für diese Angriffe sorgt endlich mal vor Gericht gestellt? Die sitzen weiter da und scheffeln Milliarden - ohne für ihre Produktmängel in Haftung genommen zu werden. Jeder Automobilhersteller dessen Produkte so massive Sicherheitsmängel aufweisen wäre schon längst in Grund und Boden geklagt worden.
Blöder Spambot am Werke
Im Moment trommelt ein ziemlich dämlich gebauter Spambot auf meine Kommentarfunktion ein und müllt meine Moderationsqueue voll - durch kommt davon nix, der ist so dämlich das er alles im Klartext reinhaut, haufenweise Links und typische Spam-Wörter. Wird also von den banalsten Filtern erwischt. Nichtsdestotrotz kann sowas natürlich Fallout produzieren - nämlich Kommentare von anderen die in die Moderation rutschen (z.B. weil die Anzahl Links zu hoch ist) könnten von mir in dem Wust von hunderten Spamkommentaren übersehen und versehentlich mit gelöscht werden. Wenn dem so ist, es ist nicht persönlich. Ich hab nur keine Lust bei mehreren Hundert Spamkommentaren zu scharf hinzugucken ob ich auch wirklich nur Spam lösche ...
Update: Nachdem ich mir den mal ein bischen genauer angeguckt hab, hab ich ihn erstmal in /dev/null platziert - die Moderationsqueue wird von dem nicht mehr belastet und damit auch normal moderierte Kommentare nicht versehentlich gelöscht. Was mir bei der näheren Durchsicht spontan aufgefallen ist: es wird eine grosse Menge von sehr weit gestreuten IP-Adressen benutzt. Klingt sehr stark nach Botnet, zumal die IP-Adressen nach Stichprobenprüfung wohl alles dynamische Dialup-Adressen sind. Unsere Freunde die fremdgesteuerten Windows-Kisten sind also auch hier wieder mal das Pferd auf dem Spam reitet. Toll. Danke, Microsoft ...
Keinen direkten Zugriff auf Newsgroups mehr bei AOL - wir könnten jetzt ja davon träumen das der September zu Ende geht ...
SCO vs. Linux: SCO findet IBMs Code-Forderungen unzumutbar
SCO vs. Linux: SCO findet IBMs Code-Forderungen unzumutbar. Putzig - selber nach Code schreien, aber den eigenen nicht rausgeben können. Und wenn die tatsächlich durch die Herausgabe ihres eigenen Codes so blockiert würden - wie wollen die dann die ungleich grösseren Mengen Code von IBM sichten? Das den SCO-Leuten das ganze Heckmeck nicht peinlich ist ...
WP-Questionnaire Plugin
Ok, ich hab das Plugin für Wordpress 1.5 fertig. Simple Sache - ein Plugin und eine kleine Managementseite mit der man die diversen Fragen anlegen kann. Zur Installation lädt man das Plugin herunter und kopiert einfach die Files an die im readme.txt angegebenen Stellen und aktiviert das Plugin. Dann fügt man im Management bei Questionnaire einfach ein paar Fragen ein und fertig. Bei Kommentaren wird dann eine mehr oder minder blöde Frage gestellt, die mit einer möglichst kurzen Antwort befriedigt werden sollte (wir wollen die Kommentatoren ja nicht zu sehr nerven). Wenn die Antwort stimmt, wird der Kommentar - sofern nicht andere Anti-Spam-Methoden vorher zuschlagen - sofort freigegeben. Stimmt die Antwort nicht, wandert der Kommentar in die Moderation und muss vom Admin freigegeben werden.
Man kann natürlich auch einen heimlichen IQ-Test für seine Kommentatoren damit bauen und statt einfacher Fragen da kleine Rätsel reinpacken - nur wer diese löst darf sofort kommentieren
Ich hab das Plugin mal bei mir aktiviert, mal gucken ob es Auswirkungen auf das Kommentierverhalten der Leute hier hat. Ihr könnt ja mal eure Meinungen hier ablassen was ihr von so einer Anti-Spam-Methodik haltet.
Eine recht interessante mögliche Attacke auf jede Captcha-Lösung ist übrigens in den Kommentaren zu Eric Meyers WP-Gatekeeper zu finden: man kann einfach die Kommentarformulare sammeln und wegspeichern. Zusätzlich braucht man eine Site, auf der man diese verwenden kann - z.B. eine Site für freie Pornofilmchen. Dort präsentiert man die Captchas den Benutzern dieser Sites und nimmt deren Antwort an. Diese Antwort schickt man dann an das gespeicherte Formular und fertig ist der Kommentar. Natürlich kann man dagegen auch Massnahmen ergreifen - am besten warscheinlich ein codierter Timecode im Formular und eine Abweisung eines zu alten Timecodes, denn die Antworten durch die Pornogucker kommen ja vermutlich nicht sofort. Interessanter Ansatz, das ganze.
Update: das Plugin hat noch zwei Bugs. Zum Einen erwischt es auch Trackbacks (die natürlich die nötigen Variablen nie haben) und es kann im Moment noch recht einfach umgangen werden wenn man weiss wonach man im Formular gucken muss - man braucht nur ein Captcha zu lösen und kann damit dann andere Kommentare bespammen, in dem man die Kommentar-ID ändert. Das letztere ist übrigens bei sehr vielen Captcha-Lösungen ein Bug - man fällt einfach zu leicht drauf rein zu vergessen die Captchas an irgendeine Form von Seriennummer oder ähnliches zu binden so das ein Formular so in der Form nur einmal benutzt werden kann ...
Ich werd also in der nächsten Zeit da noch einen Update zu machen zu den Plugin.
Update 2: das Problem mit den Trackbacks und Pingbacks sollte jetzt gelöst sein. Das Problem mit dem Replay ist noch drin. Über das muss ich noch ein bischen grübeln. Meine bisherigen Lösungsansätze gefallen mir nicht so richtig dafür.
Update 3: ich habs jetzt erstmal hier wieder abgeschaltet. Ich krieg ja bisher keinen Kommentarspam und ohne zwingenden Grund ist selbst eine einfach zu beantwortende Frage ziemlich blöd ...
Internet Explorer nach Patch immer noch verwundbar
Internet Explorer nach Patch immer noch verwundbar - was ja schon peinlich genug ist. Aber die Empfehlung der Heise Redaktion:
Grundsätzlich bietet ActiveX aber immer ein Einfallstor für Schadcode und sollte gegebenenfalls deaktiviert bleiben. Einige Webseiten funktionieren dann aber nicht mehr fehlerfrei.
ist irgendwie seltsam: ActiveX ist mir noch nie sonderlich als Besuchsbremse für irgendwelche Webseiten aufgefallen. Ich bin ja nunmal Mac und Linux Benutzer - würden Webseiten nur mit ActiveX funktionieren, müsste mir das auffallen, da es konzeptbedingt bei mir nicht laufen kann (selbst im IE nicht, weil wegen falschem Prozessor).
Klar, es gibt ein paar Microsoft-eigene Produkte die auf ActiveX setzen - aber man kann wirklich nicht behaupten das die sich draussen im Netz sonderlich verbreitet hätten. Von daher würde ich sagen: ActiveX mindestens für die Internet-Zone deaktiviert lassen. Es hat dort keinen Wert. Und in den vertrauenswürdigen Zonen - was ich schon beim IE für einen ziemlichen Euphemismus halten - nur dann aktivieren, wenn es wirklich zwingend notwendig ist (weil z.B. eine Intranet-Lösung dummerweise ActiveX benutzt). Oder für das Surfen im Netz gleich einen vernünftigen Browser installieren. Ist eh die bessere Lösung ...
JSch for J2ME - keine Ahnung ob ich einen ssh Client auf dem Handy benutzen wollen würde (die Zeicheneingabe auf dem Handy ist mehr als krank), aber gehen würde es hiermit ...
ModSecurity - Web Intrusion Detection And Prevention / mod_security ist ein Apache-Modul das in Requests reinguckt und aufgrund von Filtern entscheidet ob ein Request durchgeht oder eine Filtermassnahme (Script, Log etc.) gestartet werden soll. Ganz interessant, auch wenn ich Regelbasiertes Filtern gegen Attacken generell eher skeptisch gegenüber stehe - die finden eben nur bekannte oder erwartete Angriffe. Das gefährliche sind da aber die unerwarteten Angriffe ...
MT-Blacklist -> Hijacked comments.cgi
MT-Blacklist -> Hijacked comments.cgi - wer Moveable Type benutzt sollte das Kommentarscript abschalten. Die eMail-Verifizierung die prüft ob die Absenderadresseingabe keine Mist enthält ist falsch - wodurch man zusätzliche Empfängeradressen reinmogeln kann wenn man diese mit einem Linefeed von der eigentlichen Absenderadresse trennt. Und damit kann man dann lustig MT benutzen um andere Leute zu spammen.
Ein echter Anfängerfehler - die eMail-Validierung geschieht mit einer Regex die nicht auf das Ende des Strings matched und dotall benutzt - dadurch geht sie nur bis zu einem eventuellen Linefeed und ignoriert den Rest danach. Saublöd.

IT&W rekonstruiert Mac-Video
IT&W rekonstruiert Mac-Video - ich würd ja direkt linken, aber denen hats den Server zerrissen ...
Microsoft entlässt Windows-Tester und setzt statt dessen auf automatische Tests. Wieder mal hat die Tool-Gläubigkeit zugeschlagen. Eine selten dämliche Idee, denn automatisierte Tests finden nur das was automatisiert ist. Es fehlt ihnen an der Intuition die Menschen (zumindestens wenn es gute Tester sind) haben. Aber Microsoft-Software hat auf mich eh noch nie den Eindruck besonders guter Tests gemacht ...
Virtualisierung für Desktop-Prozessoren - gerade für Serverparks sehr interessant. Natürlich geht das heute mit den diversen VMWare-Versionen, mit User-Mode-Linux und noch ein paar anderen Projekten, aber eine Unterstützung in der CPU macht solche Lösungen natürlich effizienter.
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.
Sicher und anonym im Internet mit Proxys - Anleitung zur Nutzung von Privoxy und tor. Hatte ich irgendwie noch nicht hier verlinkt. Ist so gut, sollte man lesen. Wird man nicht dümmer von.
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.
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.
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
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 ...
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.
PECL :: Package :: APC - PHP caching System, Open Source (nicht so komische Stunts wie phpAccelerator und nicht so tot wie turck mmCache)
SURBL -- Spam URI Realtime Blocklists - Reatime blocking list die Hostnamen aus URLs prüfen kann.
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.
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.
symbolics.com ist die älteste noch registrierte Domain. Very cool. Ich hab übrigens eine Symbolics bei mir im Zimmer stehen
Apple - Mac mini
Los, jetzt verratet schon welcher Torfkopf bei Apple versehentlich auf einen Cube getreten ist
kasia in a nutshell: Spam breeds more spam
Kasia macht ein faszinierendes Experiment: sie lässt einfach mal zwei Kommentarspameinträge stehen und wartet das Google sie indiziert hat. Keine 24 Stunden später wurde dieser Eintrag bombardiert mit Spam - mehrere hundert Stück.
Man kann also daraus folgern das die Spambots zumindestens teilweise zweistufig arbeiten und das es wirklich um das Googleranking geht. Der erste Eintrag ist sozusagen ein Testeintrag. Bleibt er stehen so das er über Google wiedergefunden werden kann, ist es ein Eintrag wo man gut spammen kann - er ist unbeaufsichtigt und wird von Google schnell indiziert. Ideales Futter für Spammer.
Google ist also integrales Werkzeug und Ziel gleichzeitig für die Spammer. Man kann auf jeden Fall durch technische Abtrennung der eigenen Kommentare (so wie es mein altes Weblog hatte wo die Kommentare nicht nur auf einer eigenen Seite hinter einem Popup-Link waren, sondern zusätzlich auch noch auf einem ganz anderen Webserver) und durch Indizierungsverbot für diese Kommentaradressen den Spammern den Wind aus den Segeln nehmen. Man würde zwar von den Testproben noch erwischt, aber der gigantische Schwung hinterher sollte ausbleiben.
Das könnte unter Umständen auch die Probleme des Schockwellenreiters begründen: aufgrund seiner exponierten Stellung dürfte Google ihn sehr oft besuchen und wenn erstmal ein Spamkommentar länger stehen bleibt und indiziert werden konnte (kann ja auch nur durch Glück des Spammers passieren, der einfach kurz vor Googles Besuch gespammed hat) hat sich der Spammer den Server in die Spamlisten eingetragen. Im Prinzip muss er ja nur einmal den Schockwellenreiter über Google bezüglich seiner Testspams gefunden haben.
Jetzt müsste ich nur noch eine gute Idee bekommen wie ich das ganze für Wordpress umsetzen kann. Popupkommentare gibts schon, aber ich müsste das ja auch noch auf eine andere virtuelle Adresse legen und dort per robots.txt die Suchmaschinen ausschliessen.
Linux: Tuning The Kernel With A Genetic Algorithm
Cool - Genetische Algorithmen zur Kernel-Optimierung einzusetzen, das hat was.

Allerdings kommt dann irgendwann das Problem das der Kernel schlauer ist als sein Benutzer ...
Validierung von Wordpress Postings und Kommentare - könnte ich mir mal angucken. Wenn man schon ein validierendes Weblog hat, sollte es ja besser auch so bleiben ...
Probleme mit Firefox und Thunderbird auf OS X 10.2
Ich hab da ja letztens ( P2984) drüber geschrieben, das ich Probleme mit Firefox auf OS X habe. Mitlerweile hat sich herausgestellt woran es liegt. Es ist der Codetek Virtual Desktop Manager. Sobald der aktiv ist (ich hab ständig haufenweise Fenster offen und find sonst in dem Gewuse nix wieder - und nein, Expose wäre da auch keine wirkliche Hilfe), haben sowohl Firefox als auch Thunderbird diverse Fehlverhalten:
- nach dem Start ist das Menü leer. Man muss erst in den Hintergrund und dann wieder auf das Anwendungsfenster klicken, damit das Menü stimmt
- der Keyboardfokus stimmt nicht immer. Dann muss man das gleiche wie beim fehlenden Menü machen.
- nach dem Wechseln des Desktops (oder auch bei normalem Ausblenden und wieder Einblenden der Anwendung) ist das Fenster komplett leer - erst eine Grössenänderung bringt den Inhalt zurück.
Wie gesagt, das tritt nur mit dem Desktopmanager auf. Leider kann ich Expose nicht benutzen, da ich kein 10.3 habe. Ausserdem würde es mein Problem nicht lösen: ich brauche viele parallele Arbeitsbereiche in denen ich die ganzen Fenster für die jeweilige Aufgabe offen habe. Expose würde das nur sehr unzureichend erledigen.
Mift.

QEMU CPU Emulator
Hey, den kannte ich noch nicht: ein Emulator für verschiedene CPUs mit Just-in-Time-Compilation und Support für einen ganzen Mix von Target und Host CPU. Zum Beispiel einen Intel-Chip auf PPC emulieren. Oder umgekehrt einen PPC auf Intel. Oder ARM auf PPC. Und Sparc als Target ist auch schon angefangen.
Besonders interessant für Linux-User: es kann User-Emulation oder System-Emulation. Letztere macht das was Virtual PC macht - einen virtuellen Rechner darstellen. Erstere bietet einfach nur die Möglichkeit Binaries für eine andere CPU auf dem eigenen Rechner laufen zu lassen, auch wenn man eine andere CPU hat. Zum Beispiel Intel-Binaries auf einem Linux PPC starten - ohne grosse Systememulation.
Aufgrund der Just-in-Time-Compilation sollte das ganze auch deutlich schneller als Bochs sein. Für OS X gibts einen grafischen Launcher der auch gleich die Installation von qemu erledigt. Leider erst ab OS X 10.3. Hier gibts den Originalartikel.
RBL Prüfungsseiten für viele RBLs auf einmal
Wer wie ich keine Zeit hat hinter den tausenden von RBLs (Liste über mögliche oder angebliche Spam-Relays) hinterher zu rennen um zu prüfen ob wieder jemand einen eigenen Server fälschlicherweise dort gelistet hat, bieten diese zwei Links gute Dienste: sie prüfen einen grossen Satz von RBLs auf einen Schlag. Der erste Link ist der schnellere:
LXer: RANT_MODE=1: Current generation shells -- Will Microsoft Ever Fill The Needs of the Enter ...
Paul Ferris zerpflückt Microsofts Ankündigung einer tollen Shellumgebung für Longhorn in 2007. Und trifft wie ich finde voll den Nerv: eine Shell heute (und nach Möglichkeit eine die schon ein paar Jahrzehnte auf dem konzeptionellen Buckel hat) ist mehr wert als hohle Versprechungen für 2007 ...
Easy-to-Remember PINs
Und weil wir grad bei blöd sind: die Briten führen gerade Smartcards ein - Kreditkarten mit Chip. Und die Kreditkartenunternehmen scheinen öffentlich das Wechseln der PIN für die Chipkarte zu empfehlen. Also das Wechseln der zufällig erzeugten PIN zu einer anderen - und zwar einer leichter merkbaren. Wie so tolle Sachen wie Geburtstage oder Glückszahlen.
Mir stellt sich da eigentlich nur noch die Frage, wie hoch wohl der Rindfleischverzehr bei den Leuten ist, die sich diese dämliche Kampagne ausgedacht haben
Bei Schneier on Security gibts den Originalartikel.
Hartz IV: GAU bei der Arbeitslosengeld-II-Zahlung [Update]
Pfusch. Totaler Pfusch. Man macht bei solchen Monsterprojekten immer einen Problelauf mit Echtdaten im Voraus - um genau solche Katastrophen zu vermeiden. Aber diese Bundestölpel haben ja schon bei anderen Grossprojekten gezeigt das sie von tuten und blasen vielleicht Ahnung haben, aber nicht von EDV.

Das Vorliegende Problem jedenfalls ist ein banales Schnittstellenproblem das zu einem solchen Stadium des Projektes garnicht mehr auftauchen hätte dürfen - ausser die Durchführenden sind komplett inkompetent und verblödet.
Bei heise online news gibts den Originalartikel.
eBay konnte Passwortklau nicht verhindern
Wir nehmen dieses Problem sehr ernst. - klar, und Schweine können fliegen.
Bei heise online news gibts den Originalartikel.
Alles neu für OS/2
OS/2 - ja, da war doch mal so ein Betrübssystem, lang lang ists her
Bei heise online news gibts den Originalartikel.
Deutsche WordPress Community
Zu Wordpress gibts eine deutsche Community Website mit Dokumentationen, Tipps und Tricks. Vielleicht für den einen oder anderen ganz interessant - ich krieg zwar immer noch von PHP Pickel, aber wenns schon PHP und dieser glorifizierte Index-File-Handler namens MySQL sein muss, dann doch bitte sowas wie Wordpress Hier gibts den Originalartikel.
EFF & TOR
Gute Neuigkeiten: EFF wird TOR (The Onion Router) unterstützen. Das ist gleich mal eine Gelegenheit auf die rabengute Anleitung zur Nutzung von TOR und Privoxy hinzuweisen. Man kann damit nicht nur verlässlich seine Spuren verwischen (auslöschen kann man nix, wie sich immer wieder zeigt - aber man muss es den Leuten ja nicht unnötig einfach machen) sondern sich auch gegen allzu neugierige Websites wehren. Alles in allem also eine sehr sinnvolle Geschichte.
Update : ich hab auf simon.bofh.ms mal einen tor Server installiert. Wenn das ganze nicht meine Bandbreite völlig auffrisst (ich habe 250 GB Freivolumen auf dem Server, das müsste von daher durchaus gehen) und auch die Serverleistung nicht darunter leidet wird das eine dauerhafte Einrichtung. Projekte wie tor leben nunmal davon, das möglichst viele Leute daran mitmachen und Resourcen zur Verfügung stellen.
Und tor ist vom praktischen Nutzen her tatsächlich Endusertauglich - wobei allerdings die Netzgeschwindigkeit über tor natürlich nicht mit der rohen Netzverbindung vergleichbar ist. Konzepte wie Onion Routing haben immer Auswirkungen auf die Performance. Wobei tor zwar langsamer als nackter Netzzugang ist, aber durchaus benutzbar - anders als zum Beispiel freenet, bei dem Zugriffe auf Sites absolut zur Qual werden.
Bei raben.horst fand ich den den Originalartikel.
EU-Gerichtspräsident bestätigt Sanktionen gegen Microsoft [Update]
Gut so.
Bei heise online news gibts den Originalartikel.
IRC, identd und Privacy
IRC ist bezogen auf Privacy ja ein generelles Problem: zum Einen gibt ein IRC-Nutzer über seinen Client und seine Client Verbindung einiges an Daten heraus - nicht unbedingt mehr als mit dem Webbrowser, aber trotzdem genug um ihn zu identifizieren. Zum Anderen ist gerade das IRC ja ein Ort an dem die Leute auch freiwillig eine Menge über sich sagen - oder über sich behaupten. Es liegt also nahe, das man im IRC auch anonym auftreten will - vielleicht nicht gerade in Fach-Chats, aber es gibt ja auch andere Channels.
Es liegt also nahe einfach über tor auf das IRC Netz der eigenen Wahl zuzugreifen und sich so technisch zu anonymisieren.
Hier gibt es gerade mit dem IRCNet in Deutschland aber einige Probleme: zum Einen werden Connections nicht von allen Rechnern von ausserhalb akzeptiert, zum Anderen werden identd Benutzerauflösungen vorausgesetzt. Beides macht natürlich mit Anonymisierenden Netzen Probleme: ich kann nicht sicherstellen das ich über diese Wege auf ein Netz zugreife und immer von einem deutschen Knoten komme - der Sinn der ganzen Anonymisierung liegt ja gerade in der Verteilung der Zugriffe über die ganze Welt.
Auch macht natürlich ein identd-Aufruf ein Problem: der müsste ja auf dem tor-Server von dem der Durchgriff nach draussen geht erledigt werden. Das geht natürlich durchaus - es gibt identd Server die für Abfragen einfach Standardwerte rausgeben. Aber trotzdem ist das natürlich schon eine seltsame Sache: um aufs IRC zugreifen zu dürfen muss ich einen Zugriff auf meinen Rechner zulassen. Das macht übrigens auch schon mit Firewalls ein Problem, wenn diese nicht entsprechend für identd-Antworten sorgt.
Der Grund ist natürlich klar: die Admins des Netzes wollen sicherstellen das sie wenigstens ein Minimum an Kontrolle über das haben, was auf ihre Server zugreift. Eine verständliche Forderung. Andererseits macht sowas natürlich den Betrieb von z.B. Hilfeforen im deutschen IRCNet schwierig - ich weiss aus eigener Erfahrung mit einem Channel das es absolut nicht trivial für viele Benutzer ist ihren Client entsprechend einzustellen. Und anonymisierende Netze bleiben ganz aussen vor.
Keine Ahnung welche Lösung es hier gibt - ausser mit einem Hilfeforum auf ein Netz auszuweichen das diese Probleme nicht hat.
Übrigens haben OS X User noch ein Problem: die IRC Clients mit Socks-Support (für den tor notwendig) kann man an einer Hand abzählen - selbst wenn man im Sägewerk arbeitet. Eine Hilfe kann hier socat bieten, mit dessen Hilfe lässt sich eine Verbindung zu einem Dienst über einen Socks-Proxy erstellen, ohne das die Client-Software dazu fähig sein muss. Allerdings ist die Installation und Nutzung von socat nicht unbedingt Anfängergeeignet. Schade, das Apple nicht im Betriebssystem selber eine entsprechende Vorrichtung implementiert hat, mit dem man einen SOCKS-Proxy automatisch nutzen kann - egal ob die Client-Software das nun selber kann oder nicht.
Who says safe computing must remain a pipe dream?
Bruce Schneier mit ein paar Tipps über Computersicherheit. Den wichtigsten will ich hier mal bringen, weil den kann ich absolut unterschreiben: If possible, don't use Microsoft Windows. Buy a Macintosh or use Linux.

Bundesgerichtshof spricht Urteil zu Domain-Grabbing
Hmpft. Einerseits gut - weil nicht jedem gleich die Domain weggenommen werden kann. Andererseits aber auch schlecht - die Domaingrabber werden sich jetzt freuen. Und wer mal mit solchen Leuten zu tun hatte, weiss wie spassig das wird da eine Domain rauszukriegen die sich jemand nur als Spekulationsobjekt belegt hat. Ob wir demnächst also auch mit ähnlichen Verhältnissen wie in den USA rechnen müssen wird sich zeigen. Bei den .com, .net und .org Adressen findet man jedenfalls immer häufiger nur zu generischen Seiten von Grabbern die sich dort breit machen.
Bei heise online news gibts den Originalartikel.
SCO vs. Linux: Eine journalistische Offenbarung
Die neuesten Spinnereien aus Absurdistan

Bei heise online news gibts den Originalartikel.
Pro-Linux News: Daffodil Replicator wird freie Software - Replicator der Datenbank-agnostisch ist und unter anderem PostgreSQL unterstützt
Kritik an Vorschlägen der ITU zur Netzverwaltung
Und wieder neue Hirnkrämpfe aus der ITU - diesmal sogar mit offensichtlichem Beleg des technischen Unverstandes dieses Bürokratiemonsters. Sorry, aber geografisch oder politisch orientierte Vergabe von IP-Adressen ist schlicht und einfach grober Unfug - alleine einen solchen Vorschlag einzubringen disqualifiziert einen schon für weiter Diskussionen um technische Belange des Internets ...
Ja, das RIPE und andere IP-Registries sind durchaus auch geografisch organisiert - aber deren Organisation orientiert sich an der groben geografischen Struktur der Netztopologie. Das auf so alberne Konzepte wie Nationalstaaten runterzubrechen wäre hirnverbrannter Blödsinn.
Bei heise online news gibts den Originalartikel.
Bankomat als Spielkonsole!
Autsch. Das schmerzt schon fast.
Bei Uhus Weblog Droppings fand ich den den Originalartikel.