|
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.)
![]()
![]()
|