Web-2.0-Bonuswochen

Die Assimilation schreitet weiter voran… nachdem ich seit einigen Tagen bei XING angemeldet bin, gibt es seit heute nun auch einen Tweet von mir (@schmuwi). Mal schauen, wie mir das alles gefällt. Über XING kamen sogar schon die ersten Nachrichten von Personalvermittlern, aber da bin ich wie Ingo erstmal skeptisch. ;)

[PHP] hohe sys-cpu-Last durch lstat(2)

Seit geraumer Zeit hat mich bereits der Zustand gestört, dass unsere PHP-Webserver eine extrem hohe System-CPU-Last aufweisen. Wenn die CPU 40% der Zeit mit der Abarbeitung der PHP-Scripte beschäftigt ist (usr%), dann steht die sys%-Anzeige ebenfalls bei 35-40%. Nach zahlreichen Vermutungen und einigen Spielereien mit oprofile und sysprof kam Ingo heute mit der Idee, einfach den PHP-Prozess per strace zu beobachten.

Heraus kam, dass der Großteil der Systemaufrufe aus lstat(2) besteht. Pro Request waren das gute 15.000 Aufrufe, die insgesamt 0,8 Sekunden gedauert haben (von ~5 Sekunden gesamt). Der Blog-Artikel von Nir Levy brachte mich dann auf die PHP-Konfigurationseinstellung realpath_cache_size, aber leider brachte auch das keine Linderung. PHP führte immernoch unzählige lstat-Aufrufe für immer die gleichen Verzeichnisse aus.

Letztendlich fand sich open_basedir als Schuldiger. Wenn open_basedir oder safe_mode in Verwendung sind, wird der realpath-cache komplett deaktiviert. Nachdem open_basedir aus der Konfiguration rausgeflogen war, sank die sys-cpu-Last von 40% auf angenehme 10% und es waren noch ganze 5 (!!!) lstat()-Aufrufe im trace.log vorhanden. Das heißt, wir müssen uns um weitere Webserver erstmal keine Gedanken machen. ;)

South Park – Staffel 13

Vor kurzem ist in den USA die 13. Staffel von South Park angelaufen. Wie bereits letztes Jahr gibt es auch diesmal wieder alle Episoden online auf southparkstudios.com. Die aktuelle Episode ist eine Woche lang verfügbar (ab Donnerstag früh Europäischer Zeit), dann 3 Wochen gesperrt und im Anschluss wieder da. Da ich letzte Woche nicht dazu gekommen bin, hab ich leider die erste Episode verpasst. Die 2. Episode “The Coon” ist dafür der totale Knaller. Lange nicht mehr so gelacht.

Ich weiß jedenfalls, was ich die nächsten Wochen Donnerstags machen werde. ;)

Umstieg auf PDT

So… ich bin jetzt von PHPEclipse auf PDT umgestiegen. Eigentlich war ich mit PHPEclipse im großen und ganzen ja zufrieden. Die Bugs haben im täglichen Gebrauch kaum gestört und wenn man sich erstmal an ein Programm gewöhnt hat, dann möchte man da eigentlich auch nicht so schnell wieder weg. Heute wollte ich mich dann aber mal mit Remote Debugging mit Xdebug beschäftigen, da ich einen ziemlich fiesen Bug fixen musste. Das war mit PHPEclipse aber nicht möglich, da ich an folgendem Problem gescheitert bin:

java.lang.IllegalArgumentException: Path for project must have only one segment.

Abgesehen davon scheint das Projekt schon wieder ein bisschen eingeschlafen zu sein (ein Monat lang keine Commits, Milestones alle mehrere Monate überzogen).

Also PHPEclipse deinstalliert und PDT über die Update Site installiert… alles ohne Probleme. Mein PHP-Projekt hab ich dann wie hier beschrieben an PDT angepasst und schon lief alles. Die ganzen Einstellungen werd ich mir die nächsten Tage mal nach und nach anschauen und so einstellen, dass mir die ganzen Eingabehilfen nicht allzu sehr auf den Sack gehen.

Die Einstellung für das remote debugging war dann ein bisschen tricky, weil ich erstmal etwas rumprobieren musste, was er nun genau wo stehen haben möchte. Der “XDebug Guide for PDT 2.0” war da ganz hilfreich.

Eines der “Probleme” mit denen ich hier zu kämpfen habe ist, dass beim remote debugging der Webserver den Client (also meinen Rechner) kontaktiert. Das wird aber schwer, wenn die Adresse fest eingetragen werden muss, mein Rechner dank DHCP und VPN aber ständig woanders ist. Das löse ich jetzt erstmal über einen SSH-Tunnel. Auf dem Server gibt es also folgende Einstellungen:

xdebug.remote_enable = 1
xdebug.remote_host = localhost
xdebug.remote_port = 9000

Dann stelle ich den SSH-Tunnel zum Server hier:

ssh -R 9000:localhost:9000 web-uwe@devel.spion-hro

PDT ist dann ebenfalls auf Port 9000 konfiguriert und jetzt funktioniert das auch alles. Der Bug lies sich dann auch relativ fix lokalisieren: Man sollte keine mehrdimensionalen Arrays an preg_replace() schicken. Der stampft die 2. Ebene nämlich ein und macht daraus jeweils Strings mit dem Inhalt “Array”… soviel dazu… ;)

OpenLab 2: Verschlüsselung (und der Ärger mit Apple Mail)

Wie bei Ingo bereits zu lesen (und mit Fotos zu bestaunen), fand gestern das OpenLab zum Thema “Verschlüsselung” statt. Die Theorie am Anfang war für mich persönlich eher Wiederholung aber mein Hauptaugenmerk lag eh auf der Erstellung und Beglaubigung meiner frisch erstellten Accounts bei CAcert.org und thawte.com.

Die Website von Thawte ist tatsächlich katastrophal. Viele Links sind in irgendwelchen kleinen gedruckten aber dafür ewig langen Beschreibungstexten versteckt. Links und Hinweis/Fehler-Meldungen sind beide rot, sodass man nie weiß, ob das jetzt ein Link ist oder nicht. Authentifizieren muss ich mich über HTTP-Auth, ein Logout ist also nur über “Browser schließen” möglich. CAcert ist dafür mehrsprachig und ich kann mich per Client-Zertifikat einloggen.

Inzwischen sind die Assertions alle durch und ich hab erfolgreich meine Zertifikate mit Namen erstellt. Und da fängt das Problem mit Apple Mail schon an. Wenn ich für eine E-Mailadresse mehrere Zertifikate im Schlüsselbund habe, kann ich nicht auswählen, mit welchem Zertifikat ich die Mail signieren möchte. Statt dessen scheint er die Mail mit beiden Zertifikaten zu unterschreiben. Das sieht aber doof aus, wenn bei Leuten ohne installiertes CAcert-Zertifikat dann angezeigt wird, dass die Signatur nicht überprüft werden kann.

Ich finde GUI-Vereinfachungen ja prinzipiell gut und so wie Apple die Sache gelöst hat, ist das auch ziemlich einfach und passiert mehr oder weniger komplett ohne Zutun des Anwenders (was IMHO immernoch die größte Hürde bei Anfängern darstellt). Aber wenn man eine GUI soweit vereinfacht, dass tatsächlich Funktionalität verlohren geht, dann find ich das doof.

Jetzt kann ich überlegen, ob ich entweder jeweils eines der Zertifikate für die Mailadressen deaktiviere, wie hier vorgeschlagen, oder ich wechsle meinen Mail-Client und versuche es mal mit Thunderbird. Toll finde ich beide Alternativen nicht.

Auf jeden Fall werde ich die Tage jetzt mal ein paar weitere Notare/Assurer aufsuchen, um noch ein paar weitere Punkte zu ergattern. Danach wird das mit Signierung und Verschlüsselung von Mails dann großflächig eingeführt im Bekanntenkreis. Muhathathathat ;)

GPGMail für Leopard

Eine Sache, die komplett an mir vorbei gegangen ist: Bereits am 30. Dezember wurde die Version 1.2.0 von GPGMail, dem GnuPG Plugin für Apple Mail veröffentlicht. Diese Version funktioniert nun auch mit Leopard und somit kann ich endlich wieder meiner Mails signieren.

Festplattenimages von Parallels Desktop verkleinern

Da ich meine virtuelle Festplatte für Windows XP mit 32 GB etwas zu groß finde, möchte ich diese verkleinern. Solch eine Kombinationsaktion von Dateisystem verkleinern (NTFS), danach Partition und zum Schluss Festplattenimage anpassen scheint es direkt von Parallels nicht zu geben (setze hier Parallels Desktop 3.0 ein). Mit ein wenig Handarbeit und ner Linux-Rettungs-CD sollte das aber machbar sein.

Achtung: Diese Anleitung richtet sich bewusst NICHT an Leute, die nicht mit der Linux-Kommandozeile umgehen können. Mit den hier eingesetzen Tools kann man auch ziemlich viel kaputt machen! Wie immer sind alle Angaben ohne Gewähr. Backups schützen vor Datenverlust!

den ganzen Eintrag lesen »

World Of Goo

Nachdem das aptgetupdate-Blog heute über die erschienene Linux-Version von World Of Goo schreibt, habe ich mir endlich mal die Demo für Mac OS X runtergeladen und ich muss sagen, ich bin begeistert: Grandioses Game-Design, grandiose Musik, einfaches aber fesselndes Spielprinzip.

Ich werd nachher mal schauen, ob ich das Spiel irgendwo hier im Laden zu kaufen finde, sonst geht halt ne Amazon-Bestellung raus. Die 20 EUR sind auf jeden Fall gut investiert, zumal die Macher auf DRM komplett verzichtet haben.

Bis dahin höre ich mir den frei runterladbaren Soundtrack an.

wenn zwei Dinge zusammen kommen

In der Geschichte kommt es immer wieder vor, dass zwei Dinge gleichzeitig zusammen kommen müssen, damit etwas großes entsteht. Richard Stallmans GNU-System und der Linux-Kernel von Linus Tovalds hätten für sich genommen wohl nie diesen Erfolg gehabt und was aus Lutters Reformation ohne den Buchdruck von Gutenberg geworden wäre, ist auch nur schwer vorstellbar. Dieser Woche bestätigt sich dieser Grundsatz mal wieder, wenn auch eher im schlechten, denn er zeigt, was wir heute vom allzeit hochgepriesenen Online-Journalismus halten können.

Nachdem am Sonntag das erste mal der Name des möglichen Nachfolgers Glos’ als Wirtschaftsminister durch die Republik geisterte, überschlugen sich die verschiedenen Medien mit Meldungen über den vollständigen Namen des Karl-Theodor zu Gutenberg (den ich mir an dieser Stelle spare). Am Dienstag dann war in einem “anonymen Gastbeitrag” im BildBlog zu lesen, dass der Autor noch am Sonntag Abend den Namen Wilhelm im Wikipedia-Artikel Gutenbergs einfach drangehängt hatte. Nachzulesen ist dies im Änderungsprotokoll des Artikels. Die Entwicklung des Artikels über die nächsten 2 Tage hinweg ist übrigens insgesamt sehr empfehlenswert.

Viele Medien sind inzwischen zurückgerudert, teils offen und selbstkritisch, teils aber auch kommentarlos oder schlicht peinlich. Näheres hierzu haben wieder das BildBlog und Stefan Niggemeier. Wäre das nicht schon genug Schellte für den Online-Journalismus kommt nun noch ein 2. Akt hinterher.

Wie bereits bekannt sein dürfte, wurden am Dienstag Details über eine schwer wiegende Sicherheitslücke im Content-Management-System Typo3 bekannt. Und was stellt man mit so einer Lücke an? Erstmal lässt sich die Website von Wolfgang Schäuble um einzelne Informationen zu aktuellen politischen Themen erweitern. Andererseits kann man über die Website von Schalke 04 aber auch verbreiten, der Verein hätte Kevin Kuranyi entlassen. Als selbsternannte Referenz in Sachen Fußball ist es dann für Bild.de natürlich unerlässlich, diese Information aufzugreifen und in die Welt hinaus zu posaunen (siehe Medienrauschen).

Diese beiden Beispiele machen wieder deutlich, was aus dem Journalismus in diesem Land geworden ist. Im Rennen um immer aktuellere Nachrichten wird die Sorgfalt hinten angestellt. Sicherlich sind der vollständige Name unseres Wirtschaftsministers und der Rauswurf Kuranyis aus einer weiteren Mannschaft keine “kritischen” Informationen aber die ganze Aktion zeigt doch sehr gut, dass man sich nicht auf alles verlassen darf, was vermeintlich seriöse Nachrichten verbreiten.

The History Of Python

Eine Sache noch zum Schluss heute: Ich habe grade das Blog “The History Of Python” entdeckt. Guido van Rossum schreibt dort über die Geschichte von Python. Die ersten Artikel habe ich grade gelesen und fands ziemlich interessant. Hat mir glatt wieder Lust auf Python-Programmierung gemacht.