OSX/Leopard-Design für WordPress Admin

Ansich bin ich ja – entgegen einigen anderen sehr begeistert vom neuen Design des WordPress-Admins (ja, auch von den Farben) und gerade mit dem „Lighter Admin Menus„-Plugin (Dropdown-Menüs) ist er sehr gut bedienbar. Allerdings konnte ich beim Anblick des Leopard Admin-Designs von Teddy Hwang gerade nicht wiederstehen und werde es wohl auch erstmal in Betrieb lassen.

MaxOSX-Leopard-Design WordPress Admin

Update: Dürfte aber nur auf einem Mac so wirklich gut aussehen, da die Mac-typischen Schriften auch im CSS verwendet werden und auf Windows- oder Linux-Systemen in aller Regel nicht vorhanden sind. In diesem Fall sind das in erster Linie ‚Myriad Pro‘ und ‚Lucida Grande‘. Auch bei Cindy im Firefox sieht’s nicht so 100%ig gut aus – im Safari schon.

Safari: geschlossenes Tab wiederherstellen

Ich bin gerade mal wieder dabei mir den Safari anzugewöhnen. Primärer Grund dafür ist, dass der Firefox unter OSX nicht so 100% ig gut laufen will (teilweise hakelig, absturzträchtig) – egal ob 2.0.x oder 3.0bx. Dazu ein ander mal noch ein paar Worte. Ein Feature, dass mir bis gerade eben im Safari „gefehlt“ hat ist das wiederherstellen eines geschlossenen Tabs. Warum auch immer, aber ich bin nicht drauf gekommen einfach mal die Undo-Funktion zu probieren. Mit Cmd + Z bzw „Tab schliessen wiederrufen“ im Menü Bearbeiten lässt sich einfach jeder geschlossene Tab wiederherstellen.

Update: Das Kürzel bzw. der Menüpunkt scheint in der Windows-Version des Safari nicht zu existieren. Schade.

WordPress 2.5: IDs der Seiten und Beiträge wieder einblenden

Bei WordPress 2.5 wurden aus unverständlichen Gründen die IDs der Seiten und Beiträge aus den Auflistungen im Adminbereich verbannt. Für viele – gerade für Entwickler – war diese Info aber wichtig und so gab’s schon einige negative Stimmen deswegen.

Oliver Schloebe hat nun kurzerhand ein kleines Plugin programmiert, das die ID im Adminbereich wieder anzeigt. Das Plugin „Reveal IDs for WP-Admin 2.5“ gibt’s wie immer bei WordPress zum Download. Weitere Infos gibt’s in Olivers Blog.

WordPress-Performance: MySQL vs. Apache

Gestern Abend durfte ich im Rahmen eines Kundenprojekts einmal mehr Erfahrungen im Umgang mit »High traffic« auf einem WordPress-Blog machen. Es handelt sich dabei um einen Blog der im Normalfall täglich zwischen 8.000 und 20.000 Unique Visitors hat und mit eingen Plugins (üblicher Umfang) ausgestattet ist.

Gegen 20 Uhr hat ein Ausnahmesituation dann dazu geführt, dass innerhalb kürzester Zeit die Besucherzahlen stark angestiegen und für ca. 1-2 Stunden sehr hoch geblieben sind. Interessant war dabei die Entwicklung der Serverlast auf unterschiedlichen Ebenen. Das Projekt läuft auf diesem Server und unter meiner Betreuung seit ca. 4 Monaten. Die Konfiguration des Servers wurde durch die Erfahrungswerte der letzte Wochen und Monate immer wieder angepasst und läuft seit einiger Zeit auch bei kleineren Lastspitzen absolut Problemfrei. Der gestrige Ansturm jedoch hat dazu geführt, dass die Hardware an seine Grenzen geführt wurde. Die Unix-Load war zu Spitzenzeiten bei Knapp unter 100 anzufinden. Im normalen Betrieb steigt sie selten über 1.

Die Analyse der Situation während des Ansturms und danach hat einige überraschende Aspekte hervorgebracht. Zum einen war entgegen meinen ersten Vermutungen der Datenbank-Server (MySQL) in keinster Weise schuld an der Auslastung. Klar stieg die Anzahl der Queries (Abfragen) in die Höhe, jedoch wurden nahezu alle vom großzügig angelegten Query Cache abgefangen, der sich komplett aus dem Arbeitsspeicher bedient und dadurch auch dafür gesorgt hat, dass der Webserver selbst bei recht hoher Systemlast noch zügig antworten konnte.

Die Auslastung des Arbeitsspeichers (insgesamt 4 GB) war während der ganzen aktion absolut im grünen Bereich. Grund dafür ist wohl vor allem die Tatsache, dass es sich fast ausschließlich um Lesezugriffe auf den DB-Server handelte und vorwiegend ein Beitrag aufgerufen wurde, der probemlos aus dem Cache geliefert werden konnte. Das tatsächliche Problem war zu Spitzenzeiten dann der Webserver (Apache 2.x) der bis zu 90 Requests/Sekunde handeln musste. Wie schon ander oben erwähnten geringen Memory-Auslastung zu erkennen war auch gar nicht der sonst oft erwähnte hohe Memoryfootprint des Indianers das Problem sondern eher die CPU-Last die dadurch entstand. Aus diesem Grund hat auch die kurzfristige Zuschaltung von WP-Supercache erwartungsgemäß keinen Erfolg gebracht.

CPU-Auslastung WordPress

Das eigentliche Problem beim hohen Resourcenverbrauch des Apache-Webservers sind dabei gar nicht unbedingt die blanken Userzugriffe auf dynamische Seiten, sondern eher die statischen Dateien die beim Aufbau der Seiten geladen werden. Dazu gehören z.B. Bilder des Layouts, Icons, kleine Javascript-Dateien etc. pp. Für jede dieser Dateien wird eine eigene Verbindung aufgebaut und belegt damit grundsätzlich erstmal den Verbrauch, den eine Verbindung braucht – egal ob sie einen Datenbankrequest zur Folge hat oder nicht. Pro Aufruf einer Seite entstehen so schnell mehr als 20 oder 30 Anfragen an den Webserver, Während der Spitzenzeit war das gut über den Statusmonitor des Webservers zu erkennen. EIn nicht unerheblicher teil der offenen Verbindungen kam durch Social-Bookmarking-Icons und ähnliches zu Stande. Mein Vorschlag an den Kunden wird daher sein den größten Teil der statischen Dateien – soweit möglich – auf einen zweiten Webserver (z.B. Lighttpd “Lighty”) auszulagern, der mit wesentlich weniger Resourcen klar kommt und auch für die Auslieferung dieser statischen Dateien optimiert wird. Das sollte die Ladegeschwindigkeit der Seiten noch einmal deutlich erhöhen und vor allem den Server bei Zugriffsspitzen deutlich entlasten.

Trotz allem wurde der gestrige Ansturm vom Server gut abgearbeitet und bis auf wenige Momente war die Seite problemlos erreichbar.

Ecto mit Custom Fields ab WP 2.5

Ecto, mein Lieblingsdesktopbloggingclient (was ein Wort), kann seit WordPress 2.5 und der vorletzten Beta (3.0b43) nun auch die Custom Fields von WP befüllen. Dass das bisher nicht ging, lag in erster Linie an WordPress, nicht an Ecto.

Die entsprechende Erweiterung der XMLRPC-Schnittstelle wurde mit Version 2.5 veröffentlicht. Daraufhin musste der Entwickler von Ecto nur noch die Funktion in Ecto aktivieren. Und so sieht das ganze aus:

Ecto mit Custom Fields

Auch Daniel Jalkut, der Entwickler von Mars-Edit hat auf der XML-RPC-Mailingliste angekündigt mit seinem Editor nachzuziehen.

Sidenote: Mit Custom-Fields ist es möglich zusätzliche Datenfelder an Beiträge in WordPress “anzuhängen”. Die Inhalte dieser Felder können dann entweder gesammelt am Ende des Beitrags ausgegeben oder individuell in’s Theme integriert und für zahlreiche Zwecke eingesetzt werden. In einem neuen Projekt werde ich selbst zum ersten mal damit arbeiten und freue mich daher doppelt über die rechtzeitige Integration in Ecto ;-)

NextGen Gallery Update für WordPress 2.5

Das derzeit beliebteste WordPress-Plugin für Bildergalerien ist wohl die »Next Gen Gallery« oder kurz NGG (das sagt auch die Topliste im Pluginverzeichnis). Nicht zuletzt die Einfachheit und dennoch hohe Flexibilität sind der Haupteinsatzgrund für dieses Plugin. Ich nutze selbst zwar keine Galerie für den Blog und das wird sich sicher auch so schnell nicht ändern, konnte aber bei Cindy miterleben wie schön und einfach sich mit der NGG arbeiten lässt.

Alex Rabe, der Programmierer der NGG hat sich während der Entwicklungsphase von WordPress 2.5 bereits um die Kompatibilität seines Plugins gekümmert, musste aber dennoch sehen, dass die bei Release des neuen WordPress aktuelle Plugin-Version nicht funktionsfähig war. Das hat er jedoch gleich am Tag danach behoben und gestern Version 0.92 veröffentlicht, die nun auch mit der finalen WP 2.5 funktioniert.

Gleichermaßen fängt er an daran zu zweifeln ob die Weiterentwicklung weiterhin sinnvoll ist, da WordPress 2.5 ja eine eigene Galeriefunktion bietet. Selbstverständlich sind beide nicht vergleichbar, da WP ja nur Artikelbasierte Galerien ermöglicht die bei weitem nicht das bieten, was NGG zu bieten hat.

Für alle Fans der NGG ist es nun vielleicht an der Zeit ihn in den Kommentare zur Weiterentwicklung zu ermutigen und evtl. auch mal den Donation-Button in der Sidebar zu klicken. Erfahrungsgemäß tun das nämlich immer die wenigsten ;-)

Die neue Version gibt’s wie immer bei WP.org im Plugin-Verzeichnis. Die Diskussion zur Version und zur Weiterentwicklung gibt’s im Blog von Alex.

WordPress 2.5 ist fertig

Vor wenigen Minuten wurde auf WordPress.org die Website relaunched und WordPress 2.5 released. Die Seite erstrahlt nun im Style des neuen Admin-Bereichs und präsentiert sich damit in dunklem anthrazit und hellem blau.

WordPress.org neues DesignDie neue WordPress-Version bietet neben dem neuen Admin-Design vor allem einiges neues im Bereich Media-Management. Der neue Mediamanager nimmt nun mehrere Uploads gleichzeitig entgegen und bietet deutlich mehr Möglichkeiten als bisher für das einfügen von Bildern, Audio-Dateien und Filmen. Die Suchfunktion umfasst nun Beiträge und Seiten, was bisher nur mit einem Plugin möglich war. Multi-Autoren-Blogs werden sich freuen, dass nun eine Sperre für das gleichzeitige Bearbeiten des selben Beitrags eingebaut wurde. Der WYSIWYG-Editor TinyMCE wurde auf die Version 3.0 aktualisiert und optisch an den neuen Adminbereich angepasst. Er soll angeblich besser mit Safari kompatibel sein als sein Vorgänger. Insgesamt kommt die “Beitrag erstellen”-Seite wesentlich aufgeräumter daher. Auf weitere Aktualisierungen gehe ich hier nicht detaillierter ein. Vor allem Entwickler sollten einen Blick auf den Beitrag bei WP.org werfen – es hat sich einiges im Hintergrund getan.

Auf den beiden deutschen Seiten WordPress-Deutschland.org und de.WordPress.org ist noch nichts von der neuen Version zu sehen – dazu ist das ganze noch zu frisch. Ohnehin würde ich jedem , der nicht sehr mutig und technisch fit ist mit dem Update noch ein paar Tage zu warten bis ggf. bekannt ist ob größere Probleme auftreten könnten. Ich werde die Sache (auch mit einigen Testinstallationen und für ein neues Projekt) im Auge behalten und hier berichten, falls ich mehr weiß.

WordPress Hacks, Cracks, Security (1)

In den letzten Tagen wird ja wieder einmal viel über die Sicherheit bzw. Unsicherheit von WordPress gesprochen. In erster Linie wird WordPress beschimpft wie schlecht und unsicher es doch ist. Das ist teilweise sogar unbestritten, ich will jedoch nicht weiter darauf eingehen. Wie so oft fehlt es bisher an praktischen Lösungsansätzen. Gar nicht mal so sehr wenn’s darum geht das eigene Blog abzusichern – dafür finden sich genügend Tipps – eher aber wenn’s darum geht nach Eindringlingen zu suchen und zu prüfen ob man selbst betroffen ist.

„WordPress Hacks, Cracks, Security (1)“ weiterlesen

Mac OSX: weiße Seite bei MAMP

Für zukünftige Änderungen am Blog wollte ich gerade eine lokale Arbeitsversion auf dem Mac installiert. Mit Hilfe von MAMP ist das grundsätzlich kein großes Problem. MAMP Pro eignet sich wunderbar um lokal mehrere vHosts zu installieren. Da die Bedienung recht komfortabel ist und SVN ohnehin einige Probleme mit Samba-Freigaben hat, überlege ich im Moment auch meinen lokalen Entwicklungsserver unter Linux aufzugeben und die Websites künftig auf den Mac zu legen.

Ein Problem, dass beim Versuch ein mit Plugins und individuellen Anpassungen vollgepacktes WordPress auf dem lokalen Rechner zum laufen zu bringen auftrat war, dass alle Aufrufe von dynamischen Seiten in einer weißen Seite endeten. Der »White screen of Death« von MAMP. Statische Dateien wurden einwandfrei ausgeliefert. Damit war die Sache klar und ein Blick in’s PHP error log (/Applications/MAMP/logs/php_error.log) bestätigte die Vermutung: Das Memory Limit von PHP – also der Wert, der angibt wieviel Arbeitsspeicher von PHP-Scripts verwendet werden darf – ist bei MAMP auf übliche 8MB voreingestellt und reicht damit für etwas umfangreichere Instanzen von WordPress oder andere CMS-Installationen auf keinen Fall aus.

Zur Veränderung dieses Wertes finden sich im Netz einige Anleitungen, die zum Teil jedoch irrtümlich darauf verweisen die php.ini im Verzeichnis /Applications/MAMP/conf/php5/php.ini (bzw. php4/php.ini) zu bearbeiten. Diese Änderungen führen jedoch nicht zum Erfolg. Ein Blick in auf die mitgelieferte Ausgabe von phpInfo zeigt warum. Das “Loaded Configuration File” befindet sich in /Library/Application Support/living-e/MAMP PRO/conf/php.ini. Auch eine Änderung dieser Datei führt nicht zum Erfolg, da die bei jedem Start von MAMP wieder überschrieben wird.

Einzige Lösung: Im Menü Ablage von MAMP gibt es ein Untermenü “Vorlage editieren”. Darunter befinden sich alle relevanten Config files, die auf Klick in einem Texteditor geöffnet werden. Darin kann nun nach herzenlust editiert werden. Natürlich sollten Änderungen mit Vorsicht vorgenommen werden, da ein Fehler durchaus dazu führen kann, dass der Webserver nicht mehr startet.

Die hier nötigen Änderungen finden sich nach einer Suche (⌘+F) nach “memory”. Der Standardwert des Parameters “memory_limit” “8M” kann je nach Wunsch deutlich erhöht werden. Ich hab’ ihn lokal mal auf “128M” gesetzt (”memory_limit = 128M”) – das sollte für die meisten Dinge ausreichend sein. Nach dem schließen des Fensters werden die Änderungen automatisch gespeichert. Ein anschließender Neustart des Servers über den Start/Stop-Knopf in MAMP Pro übernimmt die Änderungen und alles sollte wie gewünscht funktionieren.

Mac OSX und das Tastenchaos mit Linux

Man muss sich schon ziemlich umstellen, wenn man von Linux (oder auch Windows) auf einen Mac umsteigt. Es gilt alte Gewohnheiten zum Teil abzulegen und sich neue anzueignen. Dazu gehört z.B. die Navigation mittels Tastatur – speziell die Navigation mit dem Cursor in einem Textverarbeitungsprogramm.

„Mac OSX und das Tastenchaos mit Linux“ weiterlesen