Technik

Zur Technik der Bücherkiste

(von Wolfgang Robben)

Wie alles begann...
Vor einiger Zeit fragte mich meine Freundin Steff (ich nenn' sie so, kein Tippfehler), ob man die Verwaltung ihrer Homepage nicht irgendwie "bequemer" machen könnte. Bis dahin hatte sie alle Seiten von Hand mit einem wohlbekannten HTML-Editor eines großen amerikanischen Softwarehauses selbst erstellt. Die Schwierigkeit war dabei, alle Links korrekt zu setzen. Außerdem wollte sie ein neues Seitenlayout gestalten und hätte dazu alle Seiten neu erstellen müssen! Eine unglaubliche Arbeit...
Ich machte ihr dann den Vorschlag, die Seiteninhalte in einer Datenbank abzulegen und dann die eigentlichen HTML-Seiten dynamisch zu erstellen. Dazu müsste sie "nur" alle Seiten neu eingeben.... Nunja....
Irgendwann wurde dann aber die Verwaltung doch zu mühselig und die Idee wurde erneut aufgegriffen. Also setzte ich mich an den Schreibtisch und die Kaffeemaschine in Gang und schrieb eine auf SQL aufsetzende Seitengenerierung. Leider mussten wir nach kurzer Zeit feststellen, dass unser Webspace-Provider häufig Opfer von Hackerangriffen wird und dann die MySQL Anbindung zusammenbricht. (Das könnte übrigens der Grund sein, wenn das Gewinnspiel mal nicht gehen sollte. Das benutzt nämlich nach wie vor MySQL!) Da Steff aber darauf bestand, dass ihre Seite immer zu erreichen sein muss, blieb mir nichts anderes übrig als eine eigene Datenbank-Lösung zu entwickeln.
"Na ja, so schwierig ist das ja nicht", dachte ich mir und frisch ans Werk. Zunächst schrieb ich das Verwaltungsprogramm, dass Steff zur Administration der Seite benutzt. Da sie sehr MS$-Office-mit-Pluspäckchen-und-Büroklammer verwöhnt ist, musste neben der Funktionalität auch noch die Optik stimmen, was mir die Sache nicht wirklich leichter machte.
Tage später war es dann soweit, ich präsentierte Steff die ersten dynamisch generierten Seiten und das Verwaltungsprogramm. Nach ca. 78 Millisekunden "Oh!" und "Ah!" sahen wir uns dann mit dem Schreckgespenst jedes Programmierers konfrontiert: die Seiten waren einfach viel zu langsam. Keine Chance viele hundert Zugriffe pro Stunde zu verarbeiten. Das lag nicht an der verwendeten Programmiersprache PHP, sondern ganz einfach an dem Datenbankalgorithmus aus dem Lehrbuch. (Ich sag ja, die Jungs an der Uni dozieren einfach nur Mist!)
Ich setzte mich also wieder ans Whiteboard und konstruierte eine neue Datenbankstruktur mit mehreren Indexdateien und einem besonderen Aufbau der Datensätze, der besonders schnelles Laden und sortieren ermöglicht. Erste Tests verliefen hervorragend (1000 Datensätze werden schneller sortiert angezeigt, als der Explorer die Webseite von der Platte saugen kann, hurra!) und ich war so glücklich, wie damals als ich mein erstes 10 PRINT "HALLO, WELT!" Programm auf dem Brotkasten programmierte.
Aber ich hatte die Rechnung ohne Steffs Perfektionismus gemacht. Sie wollte nämlich, dass die Seiten unbedingt nicht nur nach Autor, sondern auch nach Serie sortiert werden sollten, wenn es Teile dieser Serie gab. Wenn nicht, dann nach Titel, aber nur wenn es nicht mehrere Autoren dieses Namens gab, sonst eben zunächst nach Vornamen und dann nach Titel, und das ganze dann bitte auch noch nach Sparten sortiert und es muss möglich sein, jeweils nur einen bestimmten Bereich auswählen zu können und und und.... UFF!
Wie ihr allerdings seht, habe ich das alles nach und nach doch noch (hoffentlich korrekt!!) lösen können. Dafür hat das Projekt "Bücherkiste" mir aber auch die kompletten Semesterferien gestohlen und nahm sogar mehr Zeit ein als der Job... Was mag nun wohl als nächstes kommen? Ganz ehrlich: Ich hab keine Ahnung. Wir dürfen also alle gespannt sein, was Steff noch so ausheckt!

Die Datenbank:
Index-sequentielle Datenbank mir beliebig vielen Indexfiles. Im Gegensatz zu gängigen Implementationen gibt es keinen Master-Index, sondern jede Indexdatei definiert diesen Master-Index neu. Der Zugriff auf die Datensätze erfolgt über formatierte Dateinamen. Die Daten werden bereits im ISO-Format gespeichert, sodass keine Konvertierungen zur Laufzeit durchgeführt werden müssen. (Das hat mich einigen Kaffe und Pelmeni (*jamjam*) gekostet! Denn der ISO-Standard war mir und auch meiner Entwicklungsumgebung bis dato so gut bekannt wie balinesische Brotbäume.... Es gab einfach keine Unterstützung dafür unter Windows) Die Datenbank basiert übrigens vollständig auf PHP und benutzt keine Fremdkomponenten.

Das Verwaltungsprogramm
Das unter 32-Bit Windows laufende Programm ist sozusagen das Herz der Bücherkiste. Alle Alltagsfunktionen wie das Eingeben neuer Bücher, das Festlegen der Anzeigeoptionen oder das Administrieren der Datenbank können aus diesem einen Programm heraus bedient werden. Dabei unterstützt die Verwaltung die Eingabe mit vielen wichtigen Hilfetools (wie Notizblock, Seitenvorschau, Such- und Filterfunktionen, süße Animationen usw...) und häufigen Formatoptionen.
Damit sie recht hübsch aussieht und die Oberfläche nicht so viel Arbeit macht, benutzte ich Borland Delphi für die Programmierung. Ich programmiere sehr gerne in dieser Sprache, denn dadurch kann man sich bei der Arbeit auf das eigentliche Problem beschränken und die Oberfläche schnell zusammen klicken ohne dabei irgendwelche Performanceeinbußen in Kauf nehmen zu müssen (wie etwa bei einem wohlbekannten BASIC-Derivat eines großen amerikanischen Softwarehauses). In VC++ dagegen hätte ich vermutlich Monate für eine ähnliche Oberfläche gebraucht, ohne dass es irgendwelche Vorteile gebracht hätte. Außerdem mag ich die Firmenpolitik Borlands, dieses großartige Werkzeug für Privatanwender kostenlos zur Verfügung zu stellen.

Die Tools
Zahlreiche mehr oder weniger brauchbare Tools ergänzen das Bücherkiste-Paket. Steffs heißgeliebter "MenüMacher" ist zum Beispiel für all die transparenten GIF's zuständig, die Ihr als Überschriften auf den Seiten seht. Neben dem MenüMacher gibts auch noch den "Hypa-Linka", der automatisch die Verknüpfung zwischen normalen HTML- und dynamischen Seiten erstellt und zudem noch alle Hyperlinks in einem Dokument auf gültige Adressen überprüft, sowie ein Tool, dass einen Link in mehreren Dokumenten auf eine neue Adresse umstellt. Auch der "ColorPicker" sei hier erwähnt, denn ohne ihn hätte Steff es wohl nie geschafft, wirklich überall diese zartroten Farben einzusetzen. All die kleinen Gizmos sind im Laufe der Entwicklung der "neuen" Seite entstanden. Daneben gibt es dann noch die "nur-zum-privaten-Gebrauch-Tools", die derart hässlich-zweckmäßig aussehen, dass ich sie hier lieber nicht vorstellen möchte.....

Die Skripte
Auf den Seiten tummeln sich auch viele JavaScripts. Ob Ihr's glaub oder nicht, dass schwierigste an den Skripten war tatsächlich, sie auf jedem Browser zum Laufen zu bekommen. Ganz besonders lange habe ich am Navigationsmenü gebastelt. Leider habe erst sehr spät erfahren, dass es auf den meisten Browsern nicht richtig angezeigt wurde. Mittlerweile sollte es aber gehen, Image Preloading und multipler CSS Einbindung sei dank... Ich verwende übrigens zum Austesten die Browser Netscape 4.x, Netscape 6.x, Internet Explorer 5.x und 6.x sowie meinen Lieblingsbrauser Mozilla 0.9.x. Auf all diesen Browser wird die Seite korrekt dargestellt. Lediglich die lustigen bunten Rollbalken werden zur Zeit nur vom Internet Explorer unterstützt. Schade eigentlich, aber wirklich vermissen wird man sie dann doch nicht. Also versucht es ruhig mal mit Netscape, Opera oder Mozilla. Es gibt auch eine Welt abseits von Microsoft!

Abschließend
Wenn Ihr noch Fragen zu verwendeten Technik habt und/oder Interesse an einem der hier vorgestellten Programme; wenn Ihr wissen wollt, was es mit dem Software-Label Tiamatix auf sich hat oder ganz einfach nur selbst leidenschaftlich gerne programmiert und mir kostenlos Eure Sourcecodes überlassen wollt, damit ich mir eine goldene Nase damit verdienen kann, meldet Euch einfach bei mir. Ich gebe gerne Informationen und/oder Sourcecodes dieses Projektes weiter.
Eines muss ich der Vollständigkeit halber noch loswerden:
Alle auf diesen Seiten verwendeten Techniken und Algorithmen sind entweder Allgemeingut oder von mir selbst entwickelt. Es wurden keine Fremdprodukte oder Sourcecodes verwandt, die einer Lizenzierung bedürften. Sowohl die PHP-Skripte auf dem Server als auch die in die Seiten eingebundenen Java-Skripte sind urheberrechtlich geschützt und dürfen ohne ausdrückliche Erlaubnis nicht kopiert, verändert oder verbreitet werden.
Und bitte keine Skripte klauen! Fragt mich einfach und Ihr bekommt was Ihr wollt. Macht dann aber bitte einen kleinen Hinweis auf Eure Seite (Ganz versteckt, wo niemand ihn sieht, das ist schon OK). Dadurch kommt Ihr in den Genuss eines reinen Gewissens und ich hab ein wenig mehr Publicity.
Viel Spaß in Steffs Kiste!

Wolfgang Robben
(Freund, Programmierer, Frusteimer)

Screenshots:




(die Verwaltung bearbeitet gerade die Datenbank...)


(...der MenüMacher macht gerade ein Menü...)


(...der Hypa-Linka macht gerade irgendwas...)


(...und der ColorPicker macht Faxen!)

Powered by:

(Das hier soll keine Reklame sein sondern mein Dank an alle, die so hervorragende Softwarewerkzeuge kostenlos an den Mann/die Frau bringen! Ohne diese Produkte wäre die Seite in ihrer jetzigen Gestalt nur durch Werbung finanzierbar gewesen. Da ich selbst kostenlose Software mitentwickele freut es mich wieder einmal selbst erfahren zu haben, dass Attribute wie "kostenlos" und "leistungsfähig" absolut miteinander zu vereinbaren sind.)