Textanalyse: Der erste Schritt zum OO-Design

Forscher

Als ETH-Betriebs- und Produktionsingenieur (Grundstudium Elektrotechnik) weiss ich, wie man triviale Sachverhalte in komplex wirkenden PowerPoint-Slides darstellt. Von sauberem OO-Design wurde mir hingegen nichts beigebracht. So kam es, dass die erste tilllate-Version vom Jahr 2000 aus 30 PHP3-Skripten à je 2000 Zeilen aufgebaut war.

Zum Glück war ich von 10 bis 16 ein Ober-Geek und verbrachte vor dem C-128D und Amiga, währende andere auf dem Fussballplatz oder am ZSC Match waren. Zum Glück: Denn trotz 2 Jahren Consulting-Ausbildung blieb noch ein kleines bisschen PC-Affinität übrig. Ich lernte schnell, dass der PHP3-Spaghetti-Code von damals weder wart- noch ausbaubar war.

Continue reading

Posted in Programming | 1 Comment

Heute bin ich zu nichts gekommen!

Man having too much work on his deskMan hat sich für den Arbeitstag grosse Ziele gesteckt. Doch am Abend geht man mit dem Gefühl nach Hause, man habe nichts erreicht. Drei Tricks, welche mir helfen, am Ende des Tages befriedigter ins Bett zu sinken.

"Zu nütem bin ich cho hüt", jammere ich im IT-Zvieri, "kein Schritt wyter bin ich mit ELDAS-Projekt"

"Zu nütem bin ich hüt cho", das höre ich auch meine Kollegen vom Management immer wieder sagen, "kein Schritt wyter bin ich mit em Verkaufskonzept für Sales International".

"Zu nütem bin ich hüt cho", das höre ich auch von Roger, unserem Applikationsentwickler, "kein Schritt wyter mit em Akkreditierigstool".

Den ganzen Tag hat man mit kleinen, unbedeutenden und unbefriedigenden Aufgaben verbracht. Ein Bug im Code da, eine Query für das Marketing dort. Diese Aufgaben sind zudem auch noch völlig unerwartet reingeflattert. Dabei wollte ich doch beim ELDAS-Projekt nun endlich das Migrationskonzept fertigstellen.

Am Abend gehe ich unbefriedigt nach Hause und fühle ich mich, als käme ich nicht vom Fleck.

Was kann man dagegen tun? Meine Erfahrungen:

Continue reading

Posted in Arbeit | 2 Comments

Mit dem Notebook in der Economy-Class

Flugzeug-Flügel

"Lange, langweilige Stunden im Überseeflug? Das habe ich nicht mehr, seit ich jeweils mein Notebook mitnehme", schwärmt mein Kollege, "da kannst Du DVDs schauen, arbeiten, Musik hören.".

Ich sitze soeben mit Continental 79 auf dem Flug nach New York, um dort Schwester zu besuchen. 8 Stunden Economy Class. Mit dabei im Handgepäck: Mein Lenovo T60. Mit Ersatzakku.

DVDs schauen?

"Nip/Tuck" habe ich dabei. Die komplette dritte Staffel. Doch schon nach der ersten Folge ist Akku Nummer 1 leer. Windows Media Player hat mein Akku schneller geleert als ein Münchner sein Mass. DVDs schauen: Ungeeignet.

Continue reading

Posted in My profiles | 5 Comments

Diät für die Foto-Tabelle

Orange on Diet“Silvan, das Hinzufügen von Fotos ist schweinelangsam am Weekend! Die Fotografen sind am jammern. Ich bekomme andauernd Anrufe. Mach was!”. So beklagten sich die Regionalmanager in den letzten Wochen.

Unsere Überwachungstool bestätigen die Situation: Wie aus dem Maschinengewehr wird mein Handy von Nagios mit SMS beschossen. Die graue Kurve, welche im Ganglia die Server-Load beschreibt, ist weit über der roten Linie. Moreti, unser Tool, um die Antwortzeit zu messen meldet mehrere Sekunden, um eine tilllate-Seite zu liefern.

Server-Load-Graph
Continue reading

Posted in IT Infrastructure, tilllate.com | 5 Comments

Unsichtbare Tabellen zur Seitengestaltung?

Bundesrat MerzDass man die Tabellen nicht dazu verwenden soll, um das Layout einer Seite zu gestalten, lernt man inzwischen ja im Kurs “Homepages erstellen für Senioren” – am ersten Nachmittag. Ich behaupte: Teilweise geht es nicht ohne Tabellen-Missbrauch.

Den <table>-Tag, seine Kids <thead>, <tbody> und die Enkel <tr>, <td>sollen nur eingesetzt werden, um tabellarische Daten darzustellen. Börsenkurse, Fussballresultate, Listen von Events. Semantisch korrekt heisst das Stichwort. Die Tags sinngemäss angewendet.

Geht’s wirklich ganz ohne Layout-Tabellen? “Natürlich”, höre ich mich sagen. Vor einem halben Jahr.

Meine Meinung habe ich inzwischen geändert und behaupte – etwas wagemutig vielleicht: In bestimmten Fällen kommt man nicht um unsichtbare Tabellen herum.

Continue reading

Posted in Web Development | 11 Comments

Replikation mit MySQL: Tricky!

DelfinPro Sekunde werden auf tilllate.com 5000 Abfragen von den Datenbank-Servern beantwortet. Wie können wir diese Last auf 30 Datenbank-Server verteilen? Mit Replikation. Aber auch nach fünf Jahren Erfahrung habe ich dieses Feature noch nicht ganz im Griff.

Auf Datenbank-Ebene besitzt tilllate.com vier Servergruppen mit unterschiedlichen Funktionen (= “horizontale Skalierung”): Werbung, Statistik, Chat und schliesslich der Rest der Website tilllate.com. Werbung, Statistik und Chat kommen mit einem einzelnen Datenbank-Server aus.

Der “Rest” macht 90% der Abfragen aus. Der Rest sind 27 MySQL Datenbank-Server. Auf diesen 27 Server befindet sich eine identische Kopie der Haupt-Datenbank. Damit dies so bleibt, muss jede Änderung der Datenbank (z.B. eine UPDATE-Query) wird über einen definierten Weg auf alle 27 Maschinen repliziert. Wir benutzen hier die Replikations-Features von MySQL.

Einfache Master-Slave-Replikation
Continue reading

Posted in Database, IT Infrastructure, tilllate.com | 11 Comments

Interview with the tilllate-AJAX-Chat developer.

Portrait CiprianAfter 4 years having a slow reload-frame-based chat (also called “codename Neandertal”) tilllate has launched a new, state-of-the-art chat. In addition of average-joe chat functionality you can also open your own private rooms and invite your friends there. I spoke with Ciprian, our developer of this product.

Screenshot chat

How successful is the new tool?
The tilllate members seem to chat a lot in the new chat. Almost 100 000 messages the 1st day, and 125 000 the second day. I think it’s quite a lot. But there were also bug reports. Really weird ones: “There’s something wrong with tilllate. They don’t have the old slow and ugly chat anymore. This must be an error! With such a cool chat I am going to spend even more time on tilllate. That’s bad for my career.”
A new thing for me was to hear somebody complaining the web it’s too fast (“Es isch fast zu schnell!!“).
Continue reading

Posted in tilllate.com, Web Development | 4 Comments

phpAdsNew im kommerziellen Einsatz

BillboardHöre ich von Web-Applikationen, deren Namen mit “php” beginnen, sträuben sich bei mir die Nackenhaare: Meist sind dies löchrige Bastelarbeiten für die private Homepage. Eine derartige App sorgt aber für 95% von unserem Umsatz: phpAdsNew.

Täglich über drei Millionen Bannereinblendungen werden bei tilllate durch dieses Tool ausgeliefert. Damit eine derartige Performance überhaupt möglich ist, mussten wir phpAdsNew in einem Cluster aufbauen: Request auf das Ad-Tool laufen über einen Load Balancer auf momentan zwei identische Dual-Xeon/4GB/Gentoo-Mühlen. Dort läuft die Applikation (natürlich mit e-Accelerator) und greift auf einen weiteren DB-Server zu (MySQL5).
Continue reading

Posted in tilllate.com | 8 Comments

Optimierung von MySQL-Abfragen: Verwendung des Index

DolphinVor zwei Wochen habe ich erklärt, wie man mit dem Slow-Query-Log die langsamsten Datenbank-Abfragen identifizieren kann. Nun möchte ich besprechen, wie man diese langsamen Queries beschleunigen kann. Nutze den Index ist die Zauberformel.

Die erste Frage: Was ist der Index? – Nun, das ist Euch bestimmt bekannt. Sonst hilft Wikipedia.

Schaut man sich an, wie die Dateien bei MySQL (MyISAM-Struktur) auf der Disk gespeichert ist, so ist die Index-Datei an der Endung MYI zu erkennen (MYD sind die effektiven Daten, frm die Tabellendefinition):

cameron tilllate # ls -lh users.*
-rw-rw---- 1 mysql mysql 65M Jan  7 16:51 users.MYD
-rw-rw---- 1 mysql mysql 90M Jan  7 16:51 users.MYI
-rw-rw---- 1 mysql mysql 15K Jan  6 06:20 users.frm

Die Index-Datei users.MYI wird bei MySQL im RAM gehalten, während die effektiven Daten (Usernamen, Passwörter, Adressen) auf der Disk bleiben. Ein Grund, dass der Zugriff schnell ist.
Continue reading

Posted in Database | 10 Comments

Rounded Corners mit CSS und JavaScript

Rounded CornerSchon seit dem Beginn im 2000 verwendet tilllate gerundete Ecken als Design-Element. Doch wie kriegt man diese mit elegant hin? Ein Vergleich der Techniken.

Methode 2000: Ich hatte keine grosse Ahnung von HTML und arbeitete noch mit <font>-Tags. *tschudder*. Mein Trick, um die runden Ecken hinzukriegen war trivial:

Rounded Corners v2000

Continue reading

Posted in tilllate.com, Web Development | 7 Comments