Apple: Online-Beistandsservice

Steigt Apple in die Sozialen Dienste ein? Angesichts des Begriffswirrwarrs im OS X (Dashboard, Exposé, Spotlight) kann man sich gut vorstellen, dass der eine oder andere Mac-User geistig rübergekippt ist und einen Beistand brauchen kann.
apple.png
Apple-Mitarbeiter klingeln bei den Betroffenen an der Türe? Nein. Das geht natürlich online. Uber die Online-Beistandsservices. Die Nachfrage ist so gross, dass die Site nicht erreichbar ist. Wie damals CNN beim Tsunami.

Posted in My profiles | Comments Off on Apple: Online-Beistandsservice

Optimierung von MySQL-Abfragen: Der Slow-Query-Log

DelfinDen Feedbacks von meinem letzten Beitrag nach zu schliessen, stösst das Thema Query-Optimierung auf Interesse. Ich werde deshalb in nächster Zeit mehrere Artikel zu diesem Thema schreiben. Schritt 1: Die langsamen Queries identifizieren.

Unser erste Blick geht jeweils in den Slow-Query-Log. Braucht eine Abfrage mehr als 10 Sekunden, so wird sie in hostname.slow aufgelistet. Dieses Logging wird im my.cnf mit dem Keyword log-slow-queries aktiviert.

Continue reading

Posted in Database | Comments Off on Optimierung von MySQL-Abfragen: Der Slow-Query-Log

<label> : Rettung für Thinkpad-Besitzer

TrackPointKennt ihr den roten Knubbel auf der Thinkpad-Tastatur? Eingezwängt zwischen den Tasten “G”, “H” und “B” wie ein Schulbube im Gedränge der U-Bahn von Tokyo. Der Trackpoint.

Meine dank Thinkpad-Besitz neu gewonnenen Freunde schwören auf diesen Zeigefinger-Joystick. «Muesch mit dä Hand nöd immer zwüsched Tastatur und Muus wächsle. Super gäbig», sagen sie und demonstrieren ihre Skills, indem sie die Region “Stadt Zürich” (3mm2) bei der Regionenkarte in der tilllate-Navigation präzis treffen wie Tell den Apfel.

Karte Zürich tilllate.com
Continue reading

Posted in Web Development | 4 Comments

Bye bye Mac!

Mac and PC Ad«I am a Mac» – «And I am a PC». Zugegeben, Apple ist in Sachen Marketing Spitze. So gut, dass jeder Mac-Benutzer den Eindruck hat, etwas ganz besonderes zu sein. Auch ich gehörte dazu. Gehörte. Denn heute bin ich aus diesem Club ausgetreten. Bye bye Mac. Hello Lenovo.

Eingetreten bin ich vor etwa einem halben Jahr. Mein Kumpel war ein langjähriger Mac-Besitzer. Ich bewunderte sein edles Gerät im silberlook. Wenige, klare Linien. Die Hardware wie aus dem Design-Museum. Aber auch die Software: Eine Benutzeroberfläche mit atemberaubenden Effekten. Fenster schweben rein, schrumpfen zusammen ins Dock, der ganze Desktop dreht sich wie ein Würfel, wenn man im Parallels in den Full-Screen-Modus wechselt. «Silvan, das OS X ist kein Betriebssystem, es ist eine Philosophie», schwärmte er mir bei jedem Treffen vor.
Continue reading

Posted in Uncategorized | 23 Comments

Rassige SQL-Queries mit UNION

Hand in HandWas? Schon wieder überlastet? Jetzt haben wir doch gerade vier neue Server gekauft. Wollen wir nun weiter Hardware kaufen? Nein: Das erste, was wir in solchen Fällen machen, ist die Analyse des Slow Query Log der MySQL.

Hoppla: Da haben wir eine Query, welche 12 Sekunden dauert und auf 6 Tabellen zugreift. Diese Tabellen sind somit während dieser Zeit gelockt. INSERTs und UPDATEs müssen warten. Die auslösenden PHP-Prozesse auf den Webservern hängen, belegen einen Apache-Slot und damit Speicher. Mit der Zeit sind die all 512 Slots belegt, der Speicher gefüllt und der Benutzer hat seine Seite immer noch nicht gesehen.

Not nice.

Continue reading

Posted in Uncategorized | 6 Comments

Nachttischlektüre für Programmierer

Buchcover "Der Pragmatische Programmierer"«Du liest Fachbücher vor dem Einschlafen?», hat man mich gefragt, nach meinem Blog-Beitrag von letzter Woche, «dann träumst Du also von Kopplung und DRY-Prinzip? Reizend. Da lese ich lieber Das Sakrileg und träume von Sophie Neveu.»

Bei den meisten anderen Fachbüchern geht es mir gleich. Der Pragmatische Programmierer ist da anders. Dies zeigt nur schon der Blick ins Inhaltsverzeichnis: Kapitel 1: Der Hund hat meinen Quelltext gefressen, Kapitel 10: Leuchtspurmunition, Kapitel 37: Unlösbare Rätsel. Satire, Kriegsroman oder Indiana Jones? Nein, nicht ganz so abenteuerlich. Aber exemplarisch für Stil des Buches: Trockene Themen wie “Testing”, “Orthogonalität” und “Metaprogrammierung” werden durch farbige Beispiele und eine sympathische Sprache beschrieben.
Continue reading

Posted in Programming | 1 Comment

PNG: Halbtransparenz dank Alphakanal

Glass of WaterDas tilllate-Logo kriegt anlässlich des Welt Aids Tag eine rote Schleife. Die Aufgabe wäre leicht gewesen – gäbe es keine IE 6 mehr im Cyberspace.

Der Grafiker liefert mir das Logo. Ich öffne es im Fireworks und setze den Hintergrund transparent. Schliesslich soll das Logo sowohl auf der Tages-Skin, als auch auf der dunklen Nacht-Skin von tilllate gut aussehen. Ich speichere das Logo als GIF. GIF unterstützt ja Transparenz.

Logo Weltaidstag tilllate Tag

Wow. Schön sieht das aus. Neckisch, wie sich die Schleife über den Rahmen hinausragt. Wie sieht’s in der Nachtvariante aus?
Continue reading

Posted in Uncategorized | 3 Comments

Teste häufig: Jede Stunde. Automatisch.

Acid Test for Browsers“Teste häufig”, predigt “Der Pragmatische Programmierer”, mein aktuelles Nachttischbuch. Häufiges Testen = automatisches Testen. Denn wer will schon die gleichen Testcases immer und immer wieder durchführen?

Funktionstests machen wir mit Selenium, wie früher schon berichtet. Im Normalfall öffnet man den TestRunner und startet den gewünschten Test per Mausklick.

Für das automatisch ausgelöste Testen kann dem TestRunner der Parameter auto=true übergeben werden: Die Testsuite wird geladen, die Tests werden sofort, ohne Zutun des Benutzers abgespult.
Continue reading

Posted in Programming, Web Development | 3 Comments

OOP in JavaScript

RhinozerosWeiterbildung ist ein Hauptthema bei den “IT-Team Meetings”, welche wir jede Woche durchführen. Gestern hat Ciprian uns eine Einführung in Objektorientierte JavaScript-Entwicklung gegeben.

Denn tausende Zeilen unstrukturierter Code ist bei komplexen RIA-Projekten ein Wartungs-Albtraum. Deshalb wird bei unseren nächsten Projekten Wert auf eine saubere Struktur gelegt.

Faszinierend an Javascript (offiziell ECMAScript genannt) ist das Objektkonzept. Bei PHP unterscheidet man zwischen Klassen und Objekten. Eine Klasse wird vor der Ausführung des Programms definiert und dann zur Laufzeit instanziert. Bei Javascript sind Klassen wie Objekte behandelt. Genau genommen instanziert man also ein Objekt und nicht eine Klasse, um sich ein Objekt zu erzeugen.
Continue reading

Posted in Programming | 2 Comments

Stau in den Servern

Stau“Laaaangsam ist die Site”, haben sich die Regional Manager am Freitag bei mir beklagt. Langsam ist ein weiter Begriff. Um diese Aussage messbar zu machen, möchte ich als Ergänzung zum Nagios und Ganglia eine Messung der Antwortzeiten unserer Website einführen.

Die Integration einer derartigen Messung in Nagios oder Ganglia hat sich als schwierig erwiesen. Deshalb habe ich mich für eine “Roll-your-Own”-Lösung entschieden: Erfassung der Antwortzeiten (= Dauer eines vollständigen HTTP-Requests) mittels Curl und Cron-Job. Eintragen in ein RRD-File. Anzeige mittels rrdtool graph.

Die ersten Ergebnisse sind interessant:
Antwortzeiten Fotoübersichts-Seite

Dies ist eine Messung auf die Fotoübersichtsseite. Wenn die Server nicht belastet sind, sind die Zugriffszeiten bei <500ms. Also völlig im vertretbaren Rahmen. Schlimm wird es, sobald eine gewisse Schwelle überschritten wird. Dann explodieren die Zahlen: Gestern Sonntag dauerte es über acht Sekunden, um eine Indexseite abzurufen.
Continue reading

Posted in IT Infrastructure | Comments Off on Stau in den Servern