Inhaltsverzeichnis
Abbildungsverzeichnis iv
Tabellenverzeichnis v
Abk ürzungsverzeichnis vi
Glossar viii
1 Einleitung 1
2 Aufgabenstellung 3
3 Vorhandene Systeme 7
3.1 ROA - Rutgers Optimality Archive 7
3.2 Der ROA-Spiegel in Marburg 8
3.3 Andere Archive 9
3.4 CMS - Content-Management Systeme 9
3.5 PCA im Vergleich zu den betrachteten Systemen 10
4 Auswahl der verwendeten Basistechnologien 11
4.1 Entwurfsmethodik 11
4.2 Generelle Ziele 13
4.3 Rahmenbedingungen 15
4.4 Anforderungen an den Webserver 16
4.5 Datenhaltung 17
4.5.1 SQL-Datenbanken 17
4.5.2 DB-MDateien 19
4.5.3 XML-Dateien 19
4.5.4 Text-Dateien 20
4.5.5 Die Entscheidung 21
4.6 Programmiersprache 21
4.6.1 Perl 21
4.6.2 Python 27
4.6.3 PHP 27
4.6.4 Java 27
ii
Inhaltsverzeichnis
4.7 HTML 28
4.8 CGI 28
4.8.1 Forms 29
4.8.2 HTTP-Request 30
4.8.3 CGI-Programme 32
5 Konkrete Planung 39
5.1 Das Datenmodell 41
5.2 Die Verzeichnisstruktur 42
5.3 Vorlagen 42
5.4 Anmeldung 44
5.5 Verwaltung 45
5.6 Auflisten und Anbieten der Arbeiten 48
5.7 Suchfunktion 48
5.8 Volltextsuche 49
5.9 Newsletter 54
5.10 Korrektheit und Fehler-Benachrichtigung 55
5.11 Vitalitäts-Überprüfung 55
5.12 Backups 56
5.13 Sicherheit 57
5.13.1 Code-, HTML- und SQL-Injection 57
5.13.2 Unix-Zugriffsrechte und ihre Folgen 60
5.13.3 CGI-Programme und Sicherheit 61
5.13.4 Spezielle Angriffszenarien 66
5.13.5 Zusammenfassung 67
5.14 Diverses 67
6 Implementierung 69
6.1 Technische Informationen 69
6.2 Modularisierung 70
6.3 CGI-Parameter und Verteilerfunktionen 71
6.4 Exempel: Die Suchfunktion 73
6.5 Qualitätssicherung 77
6.6 Dokumentation 78
6.7 Komplexität 78
6.8 Verwendete Software 79
6.9 Diverses 79
7 Schlussbemerkungen 82
7.1 Das Ergebnis 82
7.2 Nicht erreichte Ziele und Änderungen der Aufgabenstellung 82
7.3 Erweiterungen und die nächste Zukunft 83
7.4 Alternative Vorgehensweisen 84
iii
Abbildungsverzeichnis
4.1 Programmiersprachen der iX-Leser (entnommen aus heise2002a ) 22
4.2 Formular-Elemente 30
5.1 Anmeldungsschritte und zentrale Vorlage 45
5.2 Anmeldung als Automat 45
5.3 Verwaltung Hauptfenster 46
5.4 Verwaltung der Anmeldungen 47
5.5 HTML-Liste von Arbeiten 49
5.6 Darstellung einer einzelnen Arbeit 50
5.7 Suchmaske mit Ergebnis 51
6.1 Die eigenen Module von PCA 71
iv
Tabellenverzeichnis
5.1 Metadaten zu PCA-Nummer 1 . . . . . . . . . . . . . . . . . . . . . . . . . 42 5.2 Verzeichnisstruktur von PCA . . . . . . . . . . . . . . . . . . . . . . . . . . 43 5.3 Dimensionen von Volltextsuchsystemen . . . . . . . . . . . . . . . . . . . . 52 5.4 User-Datei von PCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 5.5 CGI-Formular zum Umbenennen . . . . . . . . . . . . . . . . . . . . . . . . 65 5.6 Konfigurationseinstellungen für incoming_dir . . . . . . . . . . . . . . . 65
6.1 Die Module von PCA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
6.2 Token in reguläre Ausdrücke wandeln . . . . . . . . . . . . . . . . . . . . . 74 6.3 Erzeugung des Parser-Objektes . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.4 Parsen und Auswerten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 6.5 Baum zu ’( a OR NOT b )’ . . . . . . . . . . . . . . . . . . . . . . . . . . . 76 6.6 Selber installierte Software . . . . . . . . . . . . . . . . . . . . . . . . . . . 80
v
Abkürzungsverzeichnis
GPL GNU Public License: [gpl] . AVMZ Medienzentrum der Universität Siegen [avmz] .
IIS Internet Information Server: Der
CMS
CPAN
CSV
CTAN
DINI
ABKÜRZUNGSVERZEICHNIS
RDBMS
Relationales Datenbank Mana-
UML URL Uniform Resource Locator: Vereinfacht: Webadressen.
Glossar
.pod
ausliefern
Seiten vom Webservern an den Be-
Dokument Meistist damit eine Arbeit im
Einstellen
hier: Dateien(Abstracts, Dokumen-
Footer (Oft statischer) HTML-Code der am Ende einer Webseite eingebaut wird.
Locking Betriebssystemunterstütztes Sperren einer Datei gegen störende Zugriffe durch andere Prozesse.
Metadaten Hier sind damit Titel, Abstract,
1 Einleitung
Professor Plag von der Anglistik der Uni-tationen wie die Perl-Anleitungen oder Unix versität Siegen wünschte sich ein System man-Pages verwiesen oder daraus zitiert. Damit dem er wissenschaftliche Arbeiten sei-bei wird die Form perldoc -f delete nes Fachgebietes für Interessierte zugäng-benutzt damit das nicht erst im Literaturverzeichnis nachgeschlagen werden muss. Die lich im Internet archivieren konnte. Mit diesem Anliegen wandte er sich an die Infor-meisten Literaturstellen sind URLs welche matik der Universität Siegen und daraus ent-aufgrund ihrer Länge und den damit ver-stand diese Arbeit. Die Implementierung ist bundenen Trenn- und Darstellungsproblemen als PCA („Pidgins and Creoles Archive“) un-meist nicht im Text sondern im Literaturverter http://www.pca.uni-siegen.de zeichnis ausgeführt werden. Über den Sei[pca] erreichbar. tenrand herausragende Code- und Daten-Schnipsel wurden hingegen in Kauf genom-Im nächsten Kapitel (2, S. 3) wird die Auf-
men. Wenn die Aussagen problemlos mit gabenstellung beschrieben. In Kapitel 3 (S. 7)
Google [google] im Internet nachgeschlagen werden vorhandene Systeme für diese Auf-
werden können und dort in mehreren Quelgabe dargestellt. Nach der Auswahl der Ba-len vorliegen, werden sie als Allgemeinwissistechnologien (4, S. 11) werden konkretere
sen betrachtet und nicht, oder nur selten mit Planungen (5, S. 39) ausgeführt. Ein Schwer-
Quellen belegt. Beispiel: „Apache ist neben punkt liegt hierbei auf Sicherheitsfragen und
konkreten Lösungen. Anschließend (6, S. 69) wird auf die Implementierung eingegangen und in den Schlussbemerkungen (7, S. 82) folgt eine Bewertung des Ergebnisses, ein lische Begriffe verwende ich wenn Sie zum Ausblick mit Erweiterungsmöglichkeiten und allgemeinem Sprachgebrauch gehören („Inein Vorschlag für eine alternative Vorgehens-ternet-Browser“) oder bestimmte (meist techweise. nische) Dinge bezeichnen deren Übersetzung mir nicht passend erscheint. Beispiele sind Nun einige Bemerkungen zu formalen
Indexer statt „Indizierungssysteme“ (5.8, S. Aspekten dieses Textes: Männliche Bezeich-49) oder Abstract statt „Zusammenfassung einungen wurden wertfrei stellvertretend für
ner wissenschaftlichen Arbeit“ oder einfach weibliche und männliche Personen benutzt.
nur „Zusammenfassung“. Diese Bezeichnun-Referenzen werden großzügig gesetzt um
gen werden oft optisch anders dargestellt. schnelles Navigieren in der PDF-Version die-Englische Zitate wurden nicht übersetzt. Beiser Arbeit zu ermöglichen. Oft stehen diese
spiele für verdeutlichte Sachverhalte sind zur einfach am Ende eines Satzes um den Lese-verkürzten Darstellung häufig nur eingeklamfluss nicht durch lange Formulierungen („wie
mert im Satz untergebracht oder als „Beispiel: in Kapitel 123 Seite 234 für den interes-
...“ hinter der Erläuterung. sierten Leser beschrieben wird“) zu unterbrechen. Gelegentlich wird hier auf Dokumen-In einer streng wissenschaftlichen Arbeit
1
1 Einleitung
ist die Verwendung von „ich“ verpönt. Hier nicht durch Vorgaben der Art “das wird mit geht es aber nicht um den möglichst unum-XML/XSLT/Java/... gemacht weil das der akstößlichen Nachweis von Hypothesen sondern tuelle Hype ist“ eingeschränkt. Zu guter Letzt um die Konstruktion eines Systems. Dazu wa-geht mein Dank an das AVMZ und speziell ren viele Einzelentscheidungen zu treffen und Volker Hess der unbürokratisch und kurzfrisoft aus Alternativen auszuwählen. Ein Bei-tig den Zugang einrichtete unter dem PCA spiel von Vielen: Macht man die Datenhal-jetzt läuft. Bei Problemen reagierte er immer tung in Text-Dateien, XML-Dateien, DBM-schnell und wirkte an der Lösung mit. Negati-
de der Alternativen implementieren können. und das AVMZ-System bezogen. Meist habe ich diejenige bevorzugt bei der ich am sichersten war das ich das geforderte Ergebnis korrekt und mit geringem Aufwand erhalte. Diese Überlegungen sind dokumentiert und da ich diese Entscheidungen getroffen habe und dazu stehe und auch weiß das es mehr als einen Weg gab habe ich das gelegentlich mit „ich“ kenntlich gemacht. Dasselbe gilt für die Auswahlkriterien der verwendeten Software. Es handelt sich hier nicht um eine Doktorarbeit bei der vom Doktoranden zu erwarten ist das er alle Forscher die so etwas ähnliches machen persönlich kennt und über alle aktuellen Entwicklungen informiert ist. Um meinen eingeschränkten Überblick über die vorhandenen Angebote darzustellen wurde auch in diesen Fällen gelegentlich die Ich-Form gewählt.
Wie in 4 (S. 11) und 5 (S. 39) erläutert wird, ist eine lineare Darstellung des Themas nicht ganz einfach. Daher werden gelegentlich Dinge wiederholt um den Zusammenhang zu verdeutlichen oder es sich bei Betrachtung aus einem anderen Blickwinkel ergibt. Danken möchte ich Professor Plag für die konstruktive Zusammenarbeit. Er hatte klare, nicht überzogene Zielvorstellungen und wollte ein einfaches, funktionierendes und zweckmäßig ausgerichtetes System. Das erleichterte die Planung und spätere Arbeit deutlich. Weiterhin danke ich Professor Merzenich für die Betreuung der Arbeit. Er ließ mir freie Hand bei der Realisierung und ich wurde
2
2 Aufgabenstellung
Die Aufgabe bestand darin eine
Web-Site
zu schaffen in der wissenschaftliche Arbeiten hochgeladen werden können. Diese sollten nach Freigabe öffentlich zugänglich und
im Archiv einsortiert sein. Professor Plag wünschte sich im Wesentlichen so etwas wie ROA welches in 3.1 (S. 7) ausführlicher beschrieben wird.
Er lieferte in den ersten Besprechungen ei-meldung erhalten die PCA-Mitarbeiter ne Liste seiner Wünsche und unterteilte das eine Email damit sie wissen das ei-System schon aus seiner Sicht in eine Service-ne neue Arbeit bearbeitet werden muss. , Upload- und Downloadkomponente. Dies Auch der Anmelder bekommt eine Email diente als Grundlage für die Aufgabenstel-zur Bestätigung. (5.4, S. 44) lung. Die drei Komponenten wären in betriebswirtschaftlichen Systemen als Teile des
müssen ihre Arbeiten anmelden. Dazu das Dokument vollständig hochgeladen
3
2 Aufgabenstellung
wurde bei verschiedenen und sich u.U. auch noch ändernden Dokumentenformaten (PDF, Word, Powerpoint, ...) wenn
überhaupt nur sehr aufwendig möglich.
Das Überprüfen besteht also darin das die Verwalter die Dokumente herunterladen, durchsehen, evtl. die Anmeldungsdaten überarbeiten und bei positivem Be-fund die Arbeit freigeben. Da es sich teil-
weise um Word-Dokumente handelt sollten diese auf Viren überprüft werden. Die Daten zu einer Arbeit und die Dokumente sind schlussendlich von den Verwaltern manuell einzustellen.
Selbstbedienung in dem Sinne das je-
der, bestimmte Gruppen oder Personen Arbeiten ohne Kontrolle einstellen entsprach nicht den Zielvorstellungen. Ebenso sollte das System nicht kooperativ sein: Jemand stellt seine Arbeit ein. Alle oder bestimmte Gruppen bewerten
Newsletter: Auf neue Arbeiten soll per
Interface bewerkstelligt werden kann.
(5.9, S. 54) Arbeiten anbieten: Die Informationen zu den Arbeiten sollen über Webseiten angeboten werden und Besucher die Möglich-
keit haben, die Dokumente herunterzuladen. Dazu bietet es sich an, pro Arbeit eidern können. (5.3, S. 42) ne Web-Seite mit allen Daten anzubieten über die auf die Download-Dateien zu-In den Vorbesprechungen mit Professor gegriffen werden kann. Beschränkungen Plag ergaben sich noch folgende Randbedinin der Art der Daten („nur Word“) sollte gungen:
es nicht geben. D.h. es werden „beliebi-
ge“ Dateien angeboten und das Format ist dem System egal. Die Daten sollten 4
2 Aufgabenstellung
bis alt. Also sollten die Seiten auch mit Die Gespräche enthielten auch Beratungsalten Browsern lesbar sein. Daraus er-anteile in denen unter anderem folgende Dingab sich das einfaches HTML ausgege-ge besprochen wurden: ben wird und kein Javascript, Java, Flash Technisch wäre es möglich einen Webser-oder Frames benutzt werden. ver auf einem PC mit Windows anzubieten. Der Rechner müsste dann aber immer einge-Daher wurde auch nicht weiter erwogen
schaltet sein und das Webserverprogramm im-
eine „Applikation“ innerhalb des Brow-mer laufen um Anfragen beantworten zu kön-
sers anzubieten. Das ist heute für grö-nen. Das ist bei einem Büro-PC normalerwei-
ßere Software (SAP, Oracle Enterpri-
se nicht der Fall. Betreibt man einen eige-se Applications, Siebel) üblich benötigt
nen Server wird immer ein Techniker benö-aber oft Plugins für die Browser und so-
tigt welcher sich im Notfall darum kümmert.
mit eine einmalige Installation beim Be-Webserver sind von außen erreichbar und da-
nutzer. Der Softwareanbieter kommt da-her dauernden Portscans und anschließenden
durch vom Windows-GUI los und ist zu-
Angriffsversuchen ausgesetzt. Also müssen
kunfstsicherer. Erfolgt der Zugriff über
regelmäßig und bei Bedarf Sicherheitsaktua-
den Web-Browser reicht es, Updates zen-lisierungen an Servern vorgenommen werden.
tral einzuspielen und alle Benutzer ha-
Einfacher wäre es daher, einen vorhandenen
ben beim nächsten Start die neue Ap-Server mit zu benutzen. Professor Plag orga-
plikation. Java-Applets fallen auch unter
nisierte einen virtuellen Server beim AVMZ
dieses Konzept. Diese laufen zwar auf
und auch den Domain-Namen „www.pca.uni-
vielen Rechnern aber immer noch auf
siegen.de“. Damit ergaben sich auch die tech-weniger Rechnern als normale HTML-
nischen Rahmenbedingungen (Linux-Server,
Seiten. Da die gewünschten Inhalte auch
Apache-Webserver) die in 4.3 (S. 15) un-
mit normalen HTML darstellbar sind und
ter bestimmten Gesichtspunkten genauer be-Applets ohne Mehraufwand keine we-
leuchtet werden.
sentlich bessere Funktionalität für PCA
Es sollten einige selten veränderte Websei-bieten würden, wurde über Applets für
ten im Archiv vorhanden sein. Dazu gehör-
die Besucher-Seiten nicht weiter nachge-ten Anleitungen wie Arbeiten hochzuladen
dacht.
sind, Links auf Tools wie ZIP-Programme und PDF-Viewer oder Verwendungsrichtlini- • Indem von ROA abgedeckten Fachgeen. Nach der Erstinstallation hat Professor biet ist es gängig die ROA-Nummer als Plag diese Seiten selber erstellt und eingebun-Referenz zu benutzen („Meine Arbeit den.
liegt bei ROA als 123-1102“). Daraus Von den anderen Archiven im Internet sind ergibt sich die Bevorzugung der Num-nur die Funktionen für Benutzer und teilweise die Anmeldeprozedur sichtbar. Die Verwalmern gegenüber den Autoren, Titeln oder Erscheinungsdaten bei den Auflistungen. tung der Arbeiten bekommen nur die Mit-ROA benutzt zweigliedrige Nummern arbeiter zu sehen. Daher bestanden diesbeder Form „NUMMER-DATUM“. Wenn züglich keine Vorgaben. Dafür hätte man Arbeit 123 im November 2002 erschie-z. B. Office- oder Windows-Scripting-Hostnen ist, wird daraus „123-1102“. Bei Makros schreiben und die Verwaltung auf lokalen PCs durchführen können. Auch wä-PCA sollten einfache Zahlen ohne zweiten Teil benutzt werden. re es möglich gewesen eine Java-Applikation
5
2 Aufgabenstellung
dafür zu schreiben. Der Einfachheit halber siken sollte der Betrieb nicht darstellen. und Konsistenz wegen wurde dasselbe CGI-Eine Teilname an DINI [dini] bzw. der System wie für die Anmeldungen und Such-Open Archives Initiative [oai] war nicht befunktionen benutzt. Ein Gruppensystem für absichtigt.
die Benutzer mit genauen Richtlinien wer, Die hier aufgeführten Anforderungen wurwas, wann, wo ändern oder hinzufügen darf, den im wesentlichen erfüllt. Abweichungen wurde nicht gefordert und somit auch nicht von den anfänglichen Planungen werden in implementiert. 7.2 (S. 82) aufgeführt. Eine rechtliche Beratung fand in Ermangelung der nötigen Kenntnisse nicht statt. Folgende Fragen wären zu klären: Datenschutz der Verwalter und Besucher durch Speicherung von IP-Nummern in Log-Files oder Verwendung von Cookies. Bei PCA werden keine Daten aktiv gesammelt. Nur die Logfiles des AVMZ existieren. So lange es keine Rechtsprechung diesbezüglich gibt und alle Server Logfiles speichern [heise2000a] also alle das so machen ist das eher ein theoretisches Problem. Copyright- und Meinungsäußerungsprobleme durch die angebotenen Seiten und Arbeiten könnten auch möglich sein. Zunächst einmal wird unterstellt das die Au-toren ihre Einwilligung zur Veröffentlichung geben und in ihren Arbeiten keine illegalen oder beleidigenden Dinge von sich geben. Dann könnte es immer noch passieren das ein Verlag seine Rechte durch öffentliches Anbieten einer Arbeit gefährdet sieht [heise2002c,heise2002d]. Das Risiko effektiver Sanktionen dürfte gering sein so lange der Verlag nicht in Deutschland oder der EU beheimatet ist. Auch wird unterstellt das die Au-toren das vorher abgeklärt haben. Momentan besteht die größte rechtliche Bedrohung insbesondere von privaten Websites in Abmahnanwälten. Webseitenbetreiber sollten sich gegen so etwas durch dauernde Beobachtung (Heise Newsticker [heisenews] oder speziellere Rechtsseiten lesen) schützen. So lange auf PCA nichts getan wird was die anderen nicht auch machen ist die rechtliche Situation zwar (mangels umfangreicher Rechtsprechung) nicht eindeutig geklärt aber große Ri-
6
3 Vorhandene Systeme
In einer mehr theoretisch ausgerichteten chen.
Arbeit wäre jetzt der Zeitpunkt gekommen den aktuellen Stand der Forschung darzustel-
3.1ROA - Rutgers len. Da der Schwerpunkt dieser Arbeit auf dem Entwickeln einer Lösung lag werden Optimality Archive
stattdessen vorhandene Archive für wissenschaftliche Arbeiten dargestellt.
Das ROA [roa] diente als Hauptvorlage für
Dieses und das vorhergehende Kapitel hän-
die Funktionalität welche PCA anbieten soll-gen insoweit zusammen als das die Wünsche
te. Während der Planung und Implementie-
an ein neues System oft auch durch Kennt-rung von PCA wurde auch ROA erneuert. Es
nis über vorhandene Systeme beeinflusst wer-
wird hier der aktuelle Zustand beschrieben
den. Aus der Aufgabenstellung ergeben sich
auch wenn die Technik und das Design beim
oft relativ naheliegend bestimmte Überlegun-Start von PCA andere waren.
gen über die man teilweise nicht weiter reflek-Die Startseite ist recht einfach und bietet
tiert, die aber vielleicht nur daher rühren das
Links auf Benutzungsregeln, Tools (Anzeige-alle anderen Webseiten das auch so machen.
programme für die verschiedenen Dokumen-Eine Einordnung in die Schubladen „das tenformate), eine Suchfunktion, Listen und
haben wir uns selber ausgedacht“ bzw. „das Anmeldung an. Die normalen Listen ließen
haben wir bei den anderen abgeschaut“ ist nur sich beim letzten Besuch nicht aufrufen, daher
für die Verwaltungsfunktionen möglich. Keiwerden diese hier nicht beschrieben. Die Liste
nes dieser Systeme (und auch PCA nicht) biemit den neuesten Einsendungen funktionierte
ten einen Blick auf ihr Verwaltungssystem. jedoch und darüber ließen sich in frei wählbar
Also wurde die Verwaltung von PCA ohne großen Segmenten (4, 7, 10, 13, 16, 19 Ein-
jegliche Kenntnisse über die Administrationsträge pro Seite) die Nummernbereiche durch-oberflächen fremder Systeme entworfen. blättern. Bei der kompakten Ansicht werden Daher werden in diesem Kapitel nur die für die Nummer, Titel, Autoren und die Dokudie Besucher öffentlich zugänglichen Funkmente als Links angeboten. Die Nummer, der tionen betrachtet. Dieses Wissen ist in die Pla-Titel und der Abstract führen auf eine HTMLnungen eingeflossen und manche Funktionali-Seite mit den ausführlichen Informationen zu tät wurde auch so erwartet. der Arbeit. Autoren-Namen sind mit einem
Seiten, die Keywords und das Fachgebiet ein. gegangen die über die Bibliothek der Universität Siegen erreichbar sind (3.3, S. 9). Dann Die gängigsten Dokumenttypen sind PDF, Word und Postscript. Seltener treten Wordperfolgt eine Beschreibung von CMS (3.4, S. 9) und zum Schluss wird ROA mit PCA vergli-fect, RTF oder HTML auf. Dokumente zu ei-
7
3 Vorhandene Systeme
ner Arbeit werden oft in mehreren Formaten wird gesagt das es mit PHP4 und MySQL angeboten und praktisch immer ist PDF da-läuft [roaa]. Wird ein Name nicht gefunden bei. Oft gibt es mehrteilige Arbeiten bei denen („meier“) wird nicht die erfolglose Anfrage dann die Kapitel als einzelne Dateien unter der Suchsprache sondern der WHERE-Teil derselben ROA-Nummer vorliegen. Alle Da-der SQL-Anweisung ausgegeben. teien werden auch im GNU gzip-Format angeboten.
Die Suchfunktion ist in kleiner Form auf
3.2 Der ROA-Spiegel in jeder Seite untergebracht aber es gibt auch eine eigene Suchseite. Die Suchsprache um- Marburg
fasst die logischen Operatoren (AND, OR, NOT) und greift auf Attribute über Anhäng-Von ROA gibt es an der Universität von Marsel an den Suchworten zu. Dadurch kann burg einen Spiegel [roamarburg]. Dieser biedie Suche auf Abstract, Autor, Dateiformat, tet nicht dieselbe Funktionalität von ROA Vorname, Nachname Titel oder Kommentar sondern die Dokumente mit einem vollständig eingeschränkt werden. Um nach einem Aueigenen Interface an. Der Grund dürfte dar-tor mit Nachnamen „Meier“ zu suchen wählt in liegen das ROA für seine Applikation Geld man in der Schnellsuche das Autor-Feld und bezahlt hat und die Software nicht weitergeträgt „Meier“ ein. Die Autoren-Suche erzeugt ben darf oder will. automatisch eine Abfrage {{meier}.ln} OR {meier}.fn für den last name bzw. Die Listen bestehen aus einer Seite in der first name. Alternativ schreibt man direkt alle Nummern als Ordner aufgeführt sind. {meier}.ln. Suche nach Phrasen und die Das erinnert optisch an den Zugriff auf FTP-Wildcards ’*’ und ’?’ sind auch vorhanden. Server über einen Web-Browser. Über die Die ausführliche Suchseite lässt in einem Feld Ordner-Symbole erreicht man die Beschreidirekte Anfragen in der Suchsprache zu, bietet bungsseite zu der Arbeit welche die Dokuaber auch eine vereinfachte Version in der die mente in ihren verschiedenen Ausprägungen Besucher bis zu vier Begriffe in ein Formular und auch immer als gzip-Dateien verlinkt. eintragen können.
Die Suchfunktion beschränkt sich auf Au-Die Anmeldung einer Arbeit fragt die Din-toren, Titel, den Abstract und die Nummer.
ge ab die dann auch in den Auflistungen ste-Arbeiten können auf dem Spiegel nicht an-hen: Titel, Bemerkungen, Autoren und deren
gemeldet werden. Also fehlt dieser Punkt. Es
Email-Adressen, Seitenzahl, Keywords und
werden noch Links auf Hilfsprogramme und
Untergebiet. Der Abstract kann dort direkt in
ein Hilfetext angeboten.
ein Textfeld eingegeben werden. Bei der An-ROA oder der Spiegel scheinen Probleme meldung muss angegeben werden wie viele zu haben da der Spiegel mit ROA-Nummer Dokumente hochgeladen werden sollen. Da es 438 endet wohingegen auf ROA schon über als unhöflich gelten dürfte, mit sinnlosen Da-500 Arbeiten liegen. ten eine Anmeldung vorzutäuschen um herauszufinden was nach dem Absenden der An-Interna sind nur bei der Suche aufgefalmeldung folgt, endete die Erforschung von len: Die URL enthält „config=htdig“ und im ROA damit. HTML-Text kommt „htdig“ vor. Das ist zwar kein Beweis aber ein Indiz, das htdig als Such-Interna sind bei ROA wenige zu entdecken. Auf einer Informations-Seite über das Archiv maschine benutzt wird.
8
3 Vorhandene Systeme
3.3 Andere Archive Die Dokumente liegen meist als PDF vor, Metadaten und Abstracts oder kurze Be-Es gibt noch weitere Archive mit wissenschreibungen werden über HTML und die schaftlichen Arbeiten. Die Homepages von Suchfunktionen angeboten. Auf eine Auflis-Professoren sind wegen der geringen Zahl von tung von Spezialitäten jeder Site wird verzich-Arbeiten keine gute Vorlage und wurden wetet.
gen der geringen Erfolgsaussichten dort interessante Dinge für den Entwurf von PCA zu
3.4 CMS -
findennicht untersucht. Auch handelt es sich dabei meist um Seiten die mit der Hand er-
gänzt werden. Stattdessen wurde das Angebot der Zeitschriften die elektronisch über die Webseiten PCA wurde in Gesprächen gelegentlich als der Universitätsbibliothek [unibibz] zugreif-CMS eingeordnet. Daher folgt hier eine Erbar sind oberflächlich betrachtet. Dort werden läuterung zu CMS. den Universitätsangehörigen Teile oder das Gesamtangebot von zwanzig Verlagen elek-Bei Websites die ständigen, relativ unifortronisch zugänglich gemacht. men Änderungen unterworfen sind, wird das Die meisten dieser Sites benötigen Javaseinzelne Ändern von Seiten schnell aufwencript. Welche Möglichkeiten einem Besudig. Ein erster Schritt besteht darin, nur die cher ohne Javascript entgehen (was nicht so Kerne der Seiten zu ändern und immer gleischlimm wäre) oder nicht funktionieren (was che Dinge wie Rahmen, Kopf und Fußele-
der Normalfall ist) wird hier nicht weiter erörtert. Die Beschreibung ist kurz und oberflächlich weil sich die Sites doch schon einmal ändern (z. B. durch Verlagsübernahmen) ligt bietet es sich an, diesen Prozess weiter und diese Sites eine Klasse größer als PCA zu automatisieren und zum Beispiel um Bebzw. ROA sind. rechtigungssysteme zu erweitern und man erhält ein Content-Management-System. Sites Organisiert sind die meisten Sites nach welche Nachrichten (Heise Newsticker [hei-Themengebieten und darin dann nach den senews]), oder andere gleichförmige, manuell Zeitschriften, also hierarchisch. Suchfunktiozu pflegende Informationen anbieten arbeiten nen gibt es immer. Diese unterscheiden sich üblicherweise mit solchen Systemen. Damit aber genauso wie das Design von Site zu Site. können Redakteure Artikel oder Nachrichten Suche über den kompletten Bestand ist üblich. Verwalten, per Web-Frontend eingeben oder Einschränkungen auf Themen oder Zeitschrifhochladen. Diese Artikel werden dann autoten werden auch oft angeboten, hierbei sind matisch in das vorhandene System eingebundann unterschiedlich gute Ansätze der Benutden und z.B. Auflistungen (neueste Nachrichzerführung zu erkennen. ten, neueste Testberichte) um den neuen Arti-Da es sich um elektronische Versionen kel oder um eine
Headline
und einen Link auf von Zeitschriften handelt, sind diese wiederden Volltext ergänzt. um nach Ausgaben angeordnet. Thematische Sammlungen zu bestimmten Gebieten gibt es Bei PCA sind die zu verwaltenden Inhalnicht, diese könnte man sich aber über Suche te einerseits die zu archivierenden Dokumenin
Keywords
selber generieren. te, andererseits die Metadaten die den Inhalt
9
3 Vorhandene Systeme
der anzubietenden Seiten darstellen. Bei CMS sind die zu verwaltenden Inhalte meist nur Texte und deren Metadaten. Dokumente zum Download sind damit eher selten gemeint. Die Suchfunktionen sind nach den Inhalten des CMS ausgerichtet. Nachrichten-CMS durchsuchen meist den Volltext der Nachrichten.
Bei IMDB [imdb] kann nach Regisseuren, Schauspielern, Filmtitel usw. gesucht werden. Die der Aufgabenstellung von PCA ähnlichsten CMS sind Download-Archive wie beispielsweise Tucows.com [tucows] oder das Heise-Shareware-Archiv [heisesoft]. Dort sind Programme in Kategorien eingeordnet und mit kurzen Beschreibungen versehen. In
7.4 (S. 84) wird eine alternative Implementierung von PCA mittels CMS vorgeschlagen. Für wissenschaftliche Arbeiten ist mir kein frei erhältliches Archivsystem bekannt aber das man nichts findet heißt nicht das es nichts gibt.
3.5 PCA im Vergleich zu
den betrachteten
Systemen
Die statischen HTML-Seiten von PCA ähneln ROA von Struktur und Inhalt. Diese wurden von Professor Plag zur Verfügung gestellt. Die Suchfunktionen wurden einfacher gestaltet (5.7, S. 48). Die Auflistungen sind ähnlich. Eine Kompression der Daten wurde als wünschenswert angesehen jedoch nicht durchgeführt (7.2, S. 83). Der Marburger Spiegel ist nicht sinnvoll mit PCA vergleichbar. Dasselbe gilt für die Zeitschriften-Archive welche in einer größeren Liga spielen und anders strukturiert sind. Bei PCA ist eine übergeordnete Struktur noch nicht nötig. Bei ROA könnte das angesichts 500 Arbeiten Sinn machen.
10
4 Auswahl der verwendeten
Basistechnologien
Im Kapitel 2 ging es darum, was vom Reservoir von Möglichkeiten ausgewählt wer-Auftraggeber gewünscht war. Dort wurden den weil einerseits keine Vorgaben bestanden technische Dinge meist nur enthalten wenn und andererseits das Angebot recht groß ist. Auch wenn dieses Kapitel einige Möglichkeideswegen der Auftraggeber gefragt werden musste oder gefragt wurde um potentiell über-ten für bestimmte Zwecke vorstellt gibt es oft flüssige Arbeit zu vermeiden. noch weitere wie z. B. kommerzielle CMS-Systeme oder andere Skript-Sprachen und Dieses Kapitel stellt die Entwurfs-Ebene Möglichkeiten die aus irgendwelchen Grünzwischen Aufgabenstellung und Detailpladen nicht allgemein bekannt sind und somit nung dar. Hier geht es um die Entscheidungen aus Unkenntnis nicht in Planungen einbezodie (meist) vor der Implementierung getrofgen wurden. fen wurden und alle, viele oder zentrale Teile In dieser Arbeit geht es auch im die Bedes Systems betreffen und damit einen großen gründung der Entscheidungen zur Konstruk-Einfluss auf die weitere Planung haben. tion eines guten Systems was aus Aufwands-Zunächst werden Entwurfsmethodiken begründen aber oft nicht immer möglich ist. Im handelt und danach allgemeine Ziele für die Rahmen von Begründungen werden Sachver-Entwicklung dargelegt. Anschließend folgen halte und andere Dinge oft durch Zusatzinfor-Architekturen für oder betreffend den Web-
server, die Datenhaltung (4.5, S. 17) und die verwendete Programmiersprache (4.6, S. 21). In den Abschnitten 4.7 (S. 28) und 4.8 (S. 28) gibt es keine Basistechnologien auszuwählen. CGI (4.8, S. 28) wird ausführlicher dargestellt wurde (build ), war kein passendes Angebot da es zur Interaktion zwischen dem Benutbekannt, wenn vorhandene Systeme benutzt zer (Besucher, Verwalter und Anmelder) und wurden (buy) wurde selber Programmieren dem System dient und auf die Programmieals zu aufwendig angesehen. Beispiel: Verrung entscheidenden Einfluss hat. wendung von Parse::RecDescent in 6.4 (S. In dieser Arbeit wird darauf verzichtet so 73). zu tun als wäre das Resultat hier noch nicht bekannt. Daher wird, wo es passend erschien, gelegentlich auch mit ein paar Worten auf die
4.1 Entwurfsmethodik Realisierung eingegangen. Auch werden Teile der Aufgabenstellung (2, S. 3) kurz wiederholt anstatt mit dauernden Verweisen die Les-Nachdem man weiß, was man machen soll, barkeit und das Verständnis zu erschweren. sollte man bei komplexeren Projekten ent-Bei der Planung konnte aus einem großen scheiden nach welcher Methode man vorge-
11
4 Auswahl der verwendeten Basistechnologien
hen will. analysiert wird (Analyse beim Kunden und Das Phasenmodell (Wasserfallmodell) der Gespräche mit dessen Mitarbeitern), nach klassischen Software-Technik besteht aus den Auftragserteilung alles klar ist und losgelegt Phasen Analyse und Definition, Entwurf, Ko-werden kann. Das über das System nachgedierung und Modultest, Integration sowie Ein-dacht wird und dem Auftraggeber dann Alsatz sowie Wartung und Pflege wobei War-ternativen vorgestellt werden dürfte bei kleitung und Pflege in der Praxis den größten An-nen Systemen eher der Realität entsprechen. teil der Arbeit darstellt, in den Darstellungen Auch wissen Kunden nicht immer genau was aber unter „sonstiges“ läuft (weiteres in [kel-sie wollen und die Aufgabenstellung muss ter2001a]). angepasst werden. Speziell bei stark inter-Die Anforderungen wurden in 2 (S. 3) be-aktiven Systemen (Online-Shops) ist direktes sprochen. Die Definition erfordert oft schon Feed-Back produktiver als sklavisches Festeine grobe Systemarchitektur da für den Ver-halten am Phasenmodell. Bei großen Systemen sind viele Dinge von außen festgelegt trag mit dem Kunden eine Kalkulation zu erstellen ist und dazu die Aufwände schon abge-wodurch beispielsweise eine Auswahl einer schätzt werden müssen. Die Festlegung die-Datenbank gar nicht erst erfolgen muss. Manser groben Systemarchitektur erfolgt in die-che Dinge werden auch durch die Entwicksem Kapitel durch die Auswahl der zu ver-ler festgelegt die oft nicht alle Möglichkeiten wendenden Technologien. Daher der Name in Betracht ziehen sondern einen engeren Fokus beispielsweise bei der Auswahl von Dadieses Kapitels. Beim Entwurf wird eine Artenbankherstellern
1
haben. chitektur entwickelt und das System in Module und deren Schnittstellen zerlegt. Module Korrekterweise müsste ein Teil der sollen von einer Person in unter einem Monat Software-Projekte unter Wartung und Pflege erstellt werden können. eingestuft werden. Auch wenn „Planung Auch wird in [kelter2001b] darauf hingeeines Onlineshops“ den Eindruck eines wiesen das diese Stufen nicht klar zu trennen neuen Projektes macht, ist es in Wirklichkeit sind und das Phasenmodell nicht strikt nach „nur“ die Anbindung an die vorhandenen Lehrbuch durchzuhalten ist. Argumentationen Systeme (Lagerverwaltung, Bestellwesen, der Form „X machen wir so, deswegen wur-Kundendaten) und Erweiterung derselben de so implementiert woraus sich ergab das für (Produktinformationen und Bilder für den Teilfunktion Y folgendes entschieden werden Onlineshop). Ein anderer Teil der Projekte musste ...“ sind im Phasenmodell nicht mögwäre besser mit „Konfiguration“ existierender lich da streng Top-Down geplant wird. Sol-Produkte beschrieben. Alles neu zu Programche Argumentationen und gegenseitige Intermieren ist meist zu aufwendig, also werden dependenzen tieferer Teilsysteme und deren beispielsweise Teile des Onlineshops für den Auswirkungen auf höhere Systeme wären bei
einer korrekten Dokumentation der Beweggründe für die konkrete Implementierung nötig. Anders gesagt: Die Aspekte aus 5 (S. 39) und der Implementierung (6, S. 69) sind sehr engmaschig verzahnt und gehen fließend in-einander über.
Das Phasenmodell unterstellt das nach der ersten Aufgabenbeschreibung das Problem
12
4 Auswahl der verwendeten Basistechnologien
letzten Kunden auch beim nächsten Kunden Diese Problematik wird noch einmal in 5.13
mitbenutzt und ggf. erweitert. Bei größeren (S. 57) dargelegt. Systemen (SAP, Navision, Oracle eBusiness Suite, Siebel und anderen) wird hauptsächlich wurden die Dinge die im Rest dieses Kapitels konfiguriert und nur fehlende Funktionen erläutert werden geplant. Anschließend fand werden durch eigene Entwicklungen ergänzt. die Entwicklung aber evolutionär unter Ein-Der letzten Teil des üblichen Produktbeziehung des Auftraggebers und ohne kon-Lebenszyklus, nämlich die Beseitigung von krete Entwurfsmethodik statt. Das System ist Software, kommt im Wasserfallmodell nicht so klein das dies (und speziell stark bürokraeinmal vor. Um ein neues System zu installietisierte Methoden) einen unnötigen Verwalren sind aus den alten Systemen die wertvol-tungsaufwand bewirkt hätten. In kommerzilen Daten (Kundendaten, Inventarlisten und ellen Projekten wo man sich beispielsweise alles was nicht so einfach neu eingegeben rechtlich absichern muss und auf Entwicklerwerden kann) zu entnehmen und vielleicht und Kundenseite vorhandene Netzwerke von auch im System definierte Arbeitsabläufe zu Systemen und Know-how existieren, hätte die übernehmen. Entwicklung anders ausgesehen. Inzwischen gibt es andere Modelle die evolutionäres Vorgehen, kurze Entwicklungszy-
4.2Generelle Ziele klen oder schrittweise Entwicklung von Teilen zusammen mit dem Auftraggeber bes-Knapp zusammengefasst waren generelle ser unterstützen sollen. Wenn man es in ei-Vorgaben Korrektheit, Vollständigkeit, Sine Schublade einordnen müsste, wäre komcherheit und Zukunftssicherheit. ponentenbasierte Entwicklung eine passende Bezeichnung da gezielt ausgesucht wurde was „Korrektheit“ bedeutet hier, korrekten Coverwendet werden kann und wie es zusam-de zu schreiben womit meist die Implemenmengebaut werden soll. Der Eigenanteil der tierung gemeint wird, aber auch, keine Ein-Programmierung war trotzdem sehr hoch. schränkungen zu machen oder Scheinlösun-Das Phasenmodell ist gut für Batch-gen zu implementieren die erst bei einer grö-Aufgaben: Input einlesen, transformieren, ßeren Anzahl eingestellter Arbeiten oder hö-Output ausgeben. Dort sind die klassischen heren Besucherzahlen auffallen. „Mehr als 99 Tätigkeiten eines Programmierers (Daten-Arbeiten geht nicht und muss extra bezahlt strukturen entwickeln, geschickte Program-werden“ sollte es bei PCA nicht geben und es mierung) angesiedelt. Als nächstes kommen sollte keine unnötigen Einschränkungen geinteraktive Anwendungen die gerne objektori-ben. Bei Planung der Vorlagen (5.3, S. 42) und entiert entwickelt werden. Dabei entsteht oft spezieller der Anmeldeformulare sowie der
ein Netzwerk von Objekten die miteinander kommunizieren. UML ist zum Entwurf von so etwas ausgelegt. Bei Web-Applikationen schränken indem beispielsweise fest fünf Au-(und auch schon im Intranet) dürfen diese torenfelder in das Anmeldeformular eingetra-Objekte einander nicht mehr trauen da sie gen werden. In Anlehnung an Forrest Gump: auf verschiedenen Rechnern laufen. Das wirkt „Beschränkt ist, wer beschränkte Arrays besich auf das gesamte System und dessen Pla-nutzt“. Skriptsprachen wie Perl allozieren Daten sowieso dynamisch und Arrays können nung aus und wird vermutlich noch nicht ausreichend in Entwicklungsmodellen beachtet. dynamisch wachsen und schrumpfen. Aber
13
4 Auswahl der verwendeten Basistechnologien
auch in C ist es beispielsweise problemlos lich und führt auch dazu das ein System einmöglich mit realloc() Arrays dynamisch facher bei anderen Kunden installiert werzu erweitern 2 . Ob Array-Grenzen dynamisch den könnte. Dieses Dokument ist relativ lang. sind oder fest einkompiliert sind ist für die Das rührt teilweise daher das viele AlternaÜberprüfung derselben egal. Ein wesentliches tiven beschrieben werden in denen ein CGI-Hindernis bei der Erweiterung von Softwa-Skript leben kann auch wenn PCA momenre dürften einprogrammierte Beschränkungen tan in einer anders konfigurierten Umgebung sein die oft nicht nötig sind. PCA hat keine läuft. Man kann sich auf nichts verlassen und Beschränkungen dieser Art. muss mit allem rechnen. Morgen könnte der Webserver anders konfiguriert sein oder PCA „Robustheit“ ist ein spezieller Aspekt der muss aus irgendeinem Grunde umziehen. Es Korrektheit. Abstrakt formuliert geht es darwar nicht Sinn der Entwicklung, ein System um das das System noch läuft, wenn sich die zu konstruieren das bei kleinsten Änderungen Umgebung (in weitestem Sinne) ändert. Wenn weitere Programmierung erfordert. ein Programm heute läuft, tut es das morgen Eine andere Form von Robustheit betrifft oder in zwanzig Jahren vielleicht nicht kordas Verhalten wenn Dinge nicht korrekt vorrekt. Ebenso läuft es vielleicht nur am 29. Fe-gefunden werden (Dateien fehlen, Ordner bruar nicht korrekt weil der Februar mit 28 sind nicht vorhanden). Sollen diese korrigiert Tagen in irgendeiner statischen Tabelle steht. werden oder das System abbrechen oder der Diese Beispiele sind klar als Fehler einzustu-Verwalter beispielsweise per Email informiert fen. Zur Vermeidung von Fehlern ist es sinnwerden? So etwas wurde im Einzelfall entvoll, vorhandene Module zu benutzen wenn schieden. diese gängig genug sind, um annehmen zu „Vollständigkeit“ bedeutet, die geforderten können das sie besser sind als selbstgeschrie-Anforderungen zu erfüllen, sinnvoll zu erweibener Code für diesen Zweck. tern oder, wo nötig, anzupassen. Was nicht er-Keine „richtigen“ Fehler sind Dinge wie
der Wechsel des Betriebssystems, eine neue Version der verwendeten Skriptsprache oder der Umzug in ein neues Home-Verzeichnis. welche Einschränkungen diese Möglichkei-Das ließe sich als Robustheit gegen Änderunten mit sich bringen und danach erst darum, gen bezeichnen. Um diese Robustheit zu erhöes skalierbar, effizient und sicher zu machen. hen sollten möglichst wenige Annahmen über Viele Projekte beschränken sich vermutlich das verwendete System fest im Code stehen, darauf etwas abzuliefern das so aussieht als und wenn dann sollten diese zentral zu änob es das tut was der Kunde will und es meist dern sein. Die Lage von beispielsweise den wohl auch halbwegs tut. Effizienz und Sicher-HTML-Seiten, Dateiordnern und anderer Pfaheit kommen nachrangig und werden oft nur de ist konfigurierbar und an einer zentralen hinzugeflickt wenn es Probleme gibt. Wer ein Stelle abgelegt um bei Änderungen nicht im System schlecht geplant hat, wird auch Repa-Quelltext Pfadnamen suchen zu müssen. Eiraturen nicht korrekt durchführen und häufig ne zentrale Funktion baut Pfadnamen zusamnur die Symptome bekämpfen und das Promen und liefert diese zurück(6.9, S. 80). Das blem nur scheinbar lösen. Sicherheit erfordert erhöht durch die eingezogene Abstraktionseinerseits exaktes Wissen über das was im schicht die Wartbarkeit und Kontrolle deut-System abläuft und wie es abläuft um das Sys-
2 Ähnlichder vector-Container-Klasse von Java. tem in sich sicher zu halten (5.13, S. 57) aber
14
4 Auswahl der verwendeten Basistechnologien
auch Fachwissen und Beobachtung der aktu-zer einzubeziehen um beispielsweise die Inellen Sicherheitslücken („Apache 1.xx hat ein teraktionen planen zu können. Trotzdem wird Sicherheitsloch“) um nicht durch die benutz-dieser Aspekt im weiteren nicht beleuchtet. te Software Löcher einzubauen. Auf Ersteres Bei den Verwaltern wurde unterstellt das diewurde geachtet, Zweiteres unterliegt im We-se ein Interesse haben, das System effizient zu sentlichen den Administratoren des Systems benutzen und auch bereit sind, Anleitungen zu wird aber durch Verwendung selber instal-lesen. Bei Besuchern können keine Vorkenntnisse vorausgesetzt werden. Anmelder haben lierter Software unterminiert die wiederum schnellere Implementierung und meist auch ein Interesse an der Anmeldung, kennen das höhere Qualität vielleicht aber keine höhere System aber nicht und sollten daher gut bei Sicherheit mit sich bringt. der Anmeldung unterstützt werden. Beispiel: Die Fehlermeldungen bei fehlenden Anmel„Zukunftssicherheit“ bezieht sich auf die dedaten sollten so sein das der Anmelder da-Robustheit gegen Änderungen aber auch auf mit etwas anfangen kann und nicht darauf ver-Wachstum. Beim gesamten Projekt wurde zichtet, seine Arbeit zur Verfügung zu stellen. immer an Effizienz im Sinne von „schnell Die technischen Rahmenbedingungen wa-und einfach zu Programmieren“ aber auch ren zu Beginn der Arbeit nicht klar. Daher „schnelles Programm“ gedacht. Das System wurde so geplant das keine hohen Anfordesoll höhere Besucherzahlen wegstecken könrungen an den Webserver gestellt wurden. Unnen ohne neu geschrieben werden zu müssen. terstellt wurde von Anfang an das der Ser-Da ROA das Vorbild war wurde mit 500 Arver unter Unix laufen würde aber nichts getan beiten geplant. um eine Implementierung unter Windows zu Erweiterbarkeit oder offene Schnittstellen erschweren. Das System läuft jetzt auch unsind bei so einem kleinen System nicht nötig. ter Windows XP in Verbindung mit Cygwin, Trotzdem wurde nichts getan um bewusst Er-Windows Apache und Perl. weiterungen zu erschweren oder den Zugriff
auf die Daten zu erschweren. In einem kon-Webserver beim AVMZ. Es handelte sich um kreten Fall hängt es aber immer von den neueinen normalen Apache-Webserver mit dem en Wünschen ab wie gut und einfach das Sys-Perl-CGIs und PHP möglich sind. Es ist ein tem anzupassen ist. Wenn beispielsweise die shell-Account vorhanden d.h. man kann vor Daten genau anders organisiert sind als wie Ort arbeiten, testen, Perl-Module oder Skripte sie für eine schnelle Erweiterung gebraucht installieren und schreiben. Bei vielen Proviwerden ist das zwar unschön, kann im Voraus dern lassen sich nur per FTP Skripte hochlaaber schlecht vorausgesehen werden. den. Diese können auch getestet werden, das ist aber umständlicher.
4.3 Rahmenbedingungen Einschränkungen bezüglich des Plattenplatzes gab es nicht. Es gibt einen Zugang Die personellen Rahmenbedingungen sind per FTP welcher von den Verwaltern zum schnell beschrieben: Jeder sollte Arbeiten an-Hochladen der überprüften Arbeiten, Vorlamelden und hochladen können. Die Verwal-gen und geänderter HTML-Seiten benutzt ter sollten die Arbeiten dann einstellen. Vom werden kann. Bei dem Server handelt es sich Informatik-Aspekt haben Personen hier nichts um einen virtuellen Webserver d. h. der Web-verloren. Für eine korrekte Planung sind aber server liefert in Abhängigkeit von der angedie Kenntnisse und die Motivation der Benut-forderten URL auf derselben(oder verschie-
15
4 Auswahl der verwendeten Basistechnologien
denen) IP-Nummer auf einer Maschine unter-grund der Suchanfrage zusammengestellt schiedliche Seiten aus. werden. Ebenso ist die Anmeldung einer Arbeit ein interaktiver Prozess wenn die Daten CGI-mäßig ist eine Konfiguration anzutrefinteraktiv überprüft werden sollen. Das gänfen die bei Universitäten oder innerhalb von
gige System dazu ist CGI welches ausführ-Firmen, bei kommerziellen Providern so aber licher in 4.8 (S. 28) erklärt wird. Eine einnur selten oder mit weiteren Einschränkunfachere Implementierung hätte sich ergeben gen anzutreffen sein dürfte: Der Server startet wenn man einfach die Anmeldedaten per Forjedes CGI unter derselben Unix-UserID. Das mular abgefragt und mit einem Mail-CGI wie wird in 5.13.2 (S. 60) weiter ausgeführt.
formmail.pl
(oder besser dessen sicheren Alternativen) an die Verwalter schicken würde. Diese könnten lokal auf einem Windows-
4.4Anforderungen an den
PC die Daten in z. B. Excel eintragen und per
Webserver
VisualBasic oder Windows Scripting Host die HTML-Seiten erzeugen und hochladen. Auch Auf eine allgemeine Beschreibung was ein dies war nur ein Beispiel um die zahlreichen Webserver tut wird hier verzichtet sondern nur Möglichkeiten. anzudeuten. speziellere Dinge beschrieben. Auch wird im-Das Hochladen der Arbeiten sollte anfangs plizit immer Apache als Webserver unterstellt über einen anonymen FTP-Zugang erfolgen. wenn nichts anderes da steht. Da es aber per CGI implementiert werden Da keine Java-Applikationen gewünscht konnte, wurde darauf verzichtet. waren und die Inhalte in Webbrowsern dar-Für die Webseiten wurde beschlossen, diestellbar sein sollten ergab sich das die Komse statisch auf dem Server liegen zu lassen munikation mit den Besuchern über HTML und nur bei Bedarf, also dem Einstellen eibzw. CGI erfolgen sollte. Einige Seiten sollten ner neuen Arbeit, neu auszurechnen. Die Seistatisch sein und würden nur gelegentlich geten ändern sich nicht häufig genug das sie bei ändert werden. Andere Seiten jedoch sind bei jedem Zugriff neu berechnet werden müss-Einstellen einer neuen Arbeit zu aktualisieren. ten. Statische Seiten benötigen keine zusätz-Das Aktualisierungsintervall hat eine Auswirliche Rechenzeit für Berechnungen oder das kung darauf ob die Seiten statisch auf dem Einbinden weiterer Dateien so das sie kein li-Server liegen können oder bei jedem Aufruf mitierender Faktor für höhere Besucherzahlen neu generiert werden sollen oder müssen. Dasind.
bei sind die Grenzen fließend. Mögliche Ab-Mit der konkreten Implementierung könnstufungen und die dafür nötigen technischen ten auch .shtml- oder PHP-Seiten erzeugt Mindestvoraussetzungen sind beispielsweise: und abgelegt werden. .shtml-Seiten bezeich-Statische Seite die sich selten ändert und mit nen üblicherweise SSI-Seiten welche Anweider Hand aktualisiert wird (kann jeder Websungen enthalten um beispielsweise das aktuserver), Seite die nur einheitliche Elemenelle Datum, die aktuelle Seite oder das letzte te (Header, Footer, Datum der letzten ÄndeÄnderungsdatum einer Webseite dynamisch rung) immer an denselben Stellen einbindet anzuzeigen. Auf dem Server liegen die Sei(.shtml-Dateien, SSI) und personalisierte Seiten mit den SSI-Anweisungen welche durch ten oder Seiten welche interaktiv Inhalte erden Server ausgewertet werden und der Besuzeugen (PHP, JSP, CGI, ASP). cher erhält dann die verarbeiteten Seiten. Die Die Suchfunktionen müssen interaktiv auf-mächtigeren Möglichkeiten von SSI sind das
16
4 Auswahl der verwendeten Basistechnologien
4.5 Datenhaltung
Einbinden von HTML-Schnipseln um beispielsweise einheitliche Header und Footer Die Daten für die einzelnen Arbeiten bestehen auf jeder Seite anzuzeigen oder auch das aus den Metadaten (Titel, Autoren, ...), dem Ausführen von CGI-Skripten und Einbinden Abstract und den Dokumenten. deren Output. Durch Verwendung von
#if
Die Dokumente könnten als BLOB in eierhöhen sich die Möglichkeiten noch einner SQL-Datenbank gehalten und per CGI mal deutlich: In Abhängigkeit aller bekannbei Anfrage den Besuchern ausgeliefert (zum ten Daten (Referer, Browser-Name, Aktuel-Download angeboten) werden. Wesentlich le Seite, CGI-Parameter,...) können die Seieinfacher ist es, die Dateien ganz normal in ten auf unterschiedliche Weise zusammen-Verzeichnissen zu halten. Der Webserver begestellt werden. Das System ist somit sehr arbeitet dann die Zugriffe und liefert die Domächtig [ct2001a] was aber wenig bekannt kumente genauso wie HTML-Seiten aus. ist. [selfhtml] beispielsweise kennt nur die
#include-Anweisung
und „unterschlägt“ Das gleiche gilt für die Abstracts. Allerdie Möglichkeiten durch
#if.
dings sollten diese auch als Inhalte in den Seiten zu den einzelnen Arbeiten stehen weshalb die Abstracts eine hybride Stellung als Client-Side-Includes wären beispielsweise Download-Dokumente und Daten einnehmen sehr nützlich um immer gleichartige Elemenkönnen. Bei ROA hingegen führen die mit te nicht ständig neu laden zu müssen und so„abstract“ bezeichneten Links auf die Über-
mit die Ladezeiten sowie die vom Server versichtsseite der jeweiligen Arbeit (3.1, S. 7). sandte Datenmenge (und damit den dafür zu zahlenden Betrag) zu verringern. Daran hat Titel, die Seitenzahl, die Autorennamen und bei der HTML-Definition allerdings niemand deren Email-Adressen, das Erscheinungsdagedacht weswegen Modem-Benutzer sich oft tum, Bemerkungen und Keywords (Tabelle
mit langen Ladezeiten herumärgern müssen. Teilweise ließe sich das mit XML und XSLT und/oder Javascript simulieren. Das erfordert über die verwendbaren Datenspeichermethoaber von den Besuchern neuere Browser. Da den. Die folgenden Möglichkeiten beschrei-PCA explizit auch für ältere Systeme erreichben gängige Verfahren. Kombinationen dabar sein sollte, wurde darauf verzichtet. von oder andere Methoden sind auch möglich. Nicht diskutiert werden Objektorientierte und weitere Nicht-relationale Datenbanksysteme. Zur Zeit werden oft noch Frames für so etwas wie Client-Side-Includes benutzt wel- 4.5.1SQL-Datenbanken
che den Nachteil haben das die aktuelle Kombination von Frame-Elementen nicht als Le-SQL ist der gängige Standard zur Abfrage re-
sezeichen abgelegt werden kann. Daher wer-lationaler Datenbanken. Ein RDBMS verwal-den Webseiten die Frames verwenden nicht tet mehrere 3 Datenbanken, diese wiederum
oder nur eingeschränkt auch nicht von Such-
enthalten mehrere Tabellen. Ergebnisse von
maschinen indiziert werden [heise2002e]. Da
Abfragen sind immer Tabellen welche aus Se-PCA keine große Website mit vielen Unter-lektion von Spalten und Zeilen von Tabellen
seiten darstellt wurde über solche Dinge nicht
3 „mehrere“ bedeutet hier „eine, mehrere oder keine“. weiter nachgedacht.
17
4 Auswahl der verwendeten Basistechnologien
und Kombination mit anderen Tabellen entstehen. In statischen Tabellen können Zeilen eingefügt, gelöscht oder abgeändert werden.
Tabellen haben Zeilen und Spalten die für jedes Element gleich definiert sind (VARIANTs oder UNIONs wie in Pascal oder C gibt es nicht). Da die Daten pro Spalte einheitlich sind, kann über Indizes effizient darauf zugegriffen und auch Kombinationsabfragen (Alle Kunden die Weihnachten für mehr als 200 Euro bestellt haben) über Tabellen hinweg sind für große Datenmengen möglich. Vorteile:
•
Bei vorausschauender Programmierung kann das RDBMS ohne Änderungen in den SQL-Anweisungen ausgetauscht werden. Das klappt nur bei Verwen-
dung „normaler“
SELECT-, INSERT-
und
UPDATE-Anweisungen.CREATE TABLE
und andere administrative Befehle sind bei jedem RDBMS anders
sobald unübliche Datentypen (Bitfelder, Boolesche Werte, BLOBs ) verwendet werden sollen. Für Kundendaten, Adressen und Bestellinformationen reichen die einheitlichen Datentypen aber aus. Dadurch können Server ersetzt werden oder Test- und Entwicklungssysteme mit einem Server eines anderen Herstellers kommunizieren als das Produktiv-System.
• Das RDBMS koordiniert parallele Zugriffe. Transaktionen ermöglichen korrektes „gleichzeitiges“ Ändern und Lesen mehrerer Tabellen ohne das andere Prozesse auf inkorrekten Zwischenzuständen arbeiten. CGI-Skripte welche SQL-Server benutzen unterliegen damit nicht dem technischen sondern „nur“ dem semantischen Parallelitätsproblem (4.8.3, S. 36). Alle anderen hier vorgestellten Systeme müssen gleichzeitigen Zugriff einplanen und selber durch
18
4 Auswahl der verwendeten Basistechnologien
• Normalerweise muss ein SQL-Server befür einen Wechsel Know-how über beide trieben werden. Da die meisten Server Datenbank-Systeme benötigt. einen Zugriff über Netzwerk erlauben, oder passend konfiguriert werden kön-
4.5.2DBM-Dateien
nen, wäre „irgendein“ MySQL-Server auf „irgendeinem“ Rechner der Universi-DBM-Dateien enthalten KV-Paare und existät für PCA ausreichend. Es gibt Systeme tieren in verschiedenen Varianten: dbm war die ohne ständig laufenden SQL-Server der Ursprung unter Unix. Dann gab es auskommen. Ein Beispiel ist der Zugriff den Nachfolger ndbm, die GNU-Alternative auf Access-Datenbanken (.mdb-Dateien) gdbm sowie das freie BerkeleyDB (bsdDB) unter Windows mittels Microsoft-Jet-welches inzwischen mit den Versionen 3 und Treibern mit ODBC. Die Jet-Treiber 4 eine sehr umfangreiche und über das einkönnen auch Excel-Dateien und ande-fache Abspeichern von KV-Paaren hinausgehende Funktionalität anbietet. Eine Übersicht re Datenformate mit SQL-Befehlen bearbeiten. Das würde beispielsweise ermög-der Eigenschaften ist in Tabelle 4.1 (S. 20) ablichen die PCA-Daten in einer Excel-gebildet.
Tabelle zu halten, dort den Titel, die Nachteile von DBM-Systemen im Ver-Autoren-Namen usw. einzutragen und gleich zu SQL-Datenbanken sind, das die Verdann mittels irgendeiner Skript-Sprache waltung der Werte in den Zeilen dem Programm unterliegt welches das Packen und welche ODBC-Zugriffe ermöglicht die Daten weiterzuverarbeiten um z.B. die Entpacken erledigen muss. Auch sind kei-HTML-Seiten daraus zu generieren. ne bequemen Zugriffsfunktionen, Selektionen und Verknüpfungen über mehrere Tabellen so
• Ein vorhandenes RDBMS auszutauschen wie in SQL möglich. Vorteile liegen darin das erfordert einen gewissen Aufwand da keine Server nötig sind und man alles selber jedes System für die kaum genorm-in der Hand hat kann wenn man das will oder ten Verwaltungsfunktionen eigene Lö-braucht. In Verbindung mit Perl lassen sich sungen anbietet. Weil die kostenlosen DBM-Dateien transparent als Hash anbinden RDBMS auch nicht immer den komplet-(4.6.1, S. 23). ten SQL92-Sprachumfang implementie-
ren müsste man sich dann auf eine geeig- 4.5.3XML-Dateien
nete Schnittmenge beschränken was für SELECT, INSERT und UPDATE ein ge-Wären die Daten komplizierter und hätten ringes Problem darstellt wenn das Sys-von vielen verschiedenen Programmen betem nur als Datenlager für gängige SQL-nutzt, im- oder exportiert werden müssen, Datentypen benutzt werden kann. Skrip-wäre XML ein geeignetes Datenformat. Dazu müssen Beschreibungsdateien (DTD) gete können somit ohne große Änderungen laufen, administrative Tätigkeiten schrieben werden was einen geringen Mehr(Backups, Anlegen von Tabellen) erfor-aufwand erfordert. Die Dateien sind von Mendern Anpassungen. Wenn proprietäre Ei-schen gerade noch lesbar, sollten aber besgenschaften eines RDBMS benutzt wur-ser nicht mit normalen Text-Editoren sonden (Trigger, stored procedures, BLOBs, dern XML-Editieren bearbeitet werden um die Einhaltung des Formates nicht zu gefähr-Bitfelder) oder ist der Wechsel mit höherem Aufwand verbunden. Auch wird den.
19
(0) on mixed universe machines, may be in the bsd compat library, which is often shunned. (1) Can be trimmed if you compile for one access method. (2) See DB_File. Requires symbolic links. (3) By default, but can be redefined.
Tabelle 4.1: DBM-Systeme (nach perldoc AnyDBM_File)
Für alle gängigen Programmiersprachen konnten sich CSV-Dateien in den Planungen existieren XML-Parser. Im Vergleich zu Text-auch nicht durchsetzen. Sie wären als Trans-Dateien bewirkt die Verwendung von Par-ferformat für den Import und Export in Excel sern für so kleine Datenstrukturen einen deut-einsetzbar aber die Planung gingen in eine anlich erhöhten Programmieraufwand beim Le-dere Richtung. sen und Schreiben der Daten.
Text-Dateien haben den Vorteil mit der
Hand editierbar und bei Problemen einfach
4.5.4 Text-Dateien
lesbar zu sein so lange die Datenformate nicht kompliziert sind. Auch erfordert dies, das CSV- und XML-Dateien könnte man auch die Werte mit entsprechenden Bezeichnungen darunter fassen sind hier aber nicht damit versehen werden um nicht „Zeile 12 enthält gemeint weil das Lesen und Editieren ohne den Vornamen, Zeile 13 den Nachnamen...“ spezielle Programme potentiell fehleranfällig als Formatbeschreibung zu haben. sind wie schon im letzten Abschnitt erläutert wurde.
CSV-Dateien enthalten einen Datensatz pro Ein Nachteil ist, das komplexere Datenfor-Zeile und die Elemente des Datensatzes sind mate und Binärdaten eher schlecht darin abdurch bestimmte Trennzeichen (oft ’;’ oder zulegen sind oder man sich sinnvolle Mecha-Tabulator) getrennt. Beliebig viele Autoren nismen dafür ausdenken und vielleicht auch könnten dadurch realisiert werden, das die-implementieren muss. Wenn Objekte serialise am Ende der (dann beliebig viele Elemen-siert und gespeichert zu werden ist auch so ette haltenden) Zeilen gesammelt werden. Lan-was nicht mehr editierbar und man kann genauso gut oder besser noch Datenbanken oder ge Zeilen die jeweils alle Metadaten enthalten sind schlecht mit der Hand zu editieren. Daher DBM-Dateien dafür nehmen.
20
4 Auswahl der verwendeten Basistechnologien
4.5.5 Die Entscheidung weiterentwickelt ohne jemanden um Erlaubnis fragen zu müssen. Bei C hingegen wel-Ein weiterer Grund gegen ODBC-Lösungen
ches einen Standartisierungsprozeß durchlau-
(Access, Excel, ...) unter Windows war das
fen muss, passiert nicht viel außer das alle
Ziel, Brüche beim Datenfluss (Anmeldung
Jahre neue Mutationen (C++, Objective C, Ja-auf Web-Server, Daten unter Windows-Excel,
va und jetzt neu C#) entstehen welche (von
HTML-Seiten auf Webserver) zu vermeiden.
Java und C# abgesehen) dann von verschiede-
Damit ergab sich dann die nachfolgen-nen konkurrierenden Compileranbietern um
de Entscheidung für die Datenhaltung. Wie
eigene proprietäre Eigenheiten ergänzt wer-
schon in 1 (S. 2) angedeutet gab es keine den. Für Programme die auf beliebigen Platt-Rahmenbedingungen die diese Entscheidung
formen laufen sollen ist der Ansatz von Perl,
erzwungen hätten und die anderen Möglich-
Python, Ruby, PHP und Java angenehmer da
keiten wären relativ indifferent gewesen weil
es dann meist an einem selber oder den ver-
auch sie Vor- und Nachteile gehabt hätten.
wendeten Modulen liegt wenn ein Programm Die Dokumente werden nicht in Datenauf einer anderen Plattform nicht läuft. Plattbanken archiviert sondern liegen als norma-formunabhängigkeit ist für die meisten Pro-
DBM-Dateien werden als Datenlager für programmiert hätte. die Suchfunktionen benutzt um alle Daten Nach [heise2002a] sind Skriptsprachen für schnell durchsuchbar beisammen zu halten Inhouse und Projekt-Programmierung unter (6.4, S. 73). den iX-Lesern beliebt (siehe Abb. 4.1, S. 22).
4.6.1 Perl
4.6 Programmiersprache
Das Perl für die Aufgaben von PCA geeignet Da das System vermutlich unter Unix laufen ist wird hier nicht explizit erläutert und ergibt würde und das häufig für CGI-Skripte benutzsich gelegentlich aus dem Kontext in der De-
te Perl vorhanden sein würde und ich wusstailplanung (5, S. 39) und der Implementiete das die Aufgabenstellung damit erreichbar rung (6, S. 69). Stattdessen wird die Sprache war, beschloss ich, das Projekt in Perl unoberflächlich vorgestellt. ter Zuhilfenahme von shell-Skripten durchzu-Der Name steht für „Practical Extraction führen. Eine echte Auswahl von Alternativen and Report Language“ und weist auf die Her-fand nicht statt. kunft als Alternative zu sh/awk hin. Die Spra-Ruby [ruby] und ASP werden nicht be-che ist unter der Artistic Licence [pal] frei im Quelltext verfügbar und wurde von Larry trachtet. Stattdessen wird länger auf Perl und kurz auf Python, PHP und Java eingegangen. Wall entwickelt der immer noch die Fäden in Alle genannten Sprachen außer ASP sind kos-der Hand hält. Perl [perl] ist eine interpretierte tenlos und relativ frei auf den meisten Platt-Skript-Sprache die ein im Vergleich zu C be-formen (Unix-Derivate und Windows) verfüg-quemes Umgehen mit Zeichenketten erlaubt. bar. Sie sind alle proprietär in dem Sinne das In C muss um jedes Byte (und immer eines eine zentrale Stelle die Sprache definiert und mehr für die Null am Ende) gekämpft werden. 21
Abbildung 4.1: Programmiersprachen der iX-Leser (entnommen aus [heise2002a])
Perl alloziert Speicher für Variablen automa-Form von jPython gibt es nicht. tisch und man braucht über Speicherverwaltung nicht nachzudenken. Da es mächtiger 4 ist Kurzer Sprachüberblick als /bin/sh, /bin/bash, awk oder sed konnte es sich als beliebte Sprache für CGI--Die Sprache hat die Fähigkeiten normaler
Skripte durchsetzen obwohl es im Gegensatz
prozeduraler Programmiersprachen wie ver-
zu PHP nicht speziell dafür entwickelt wurde. schachtelte Blöcke, lokale Variablen, Funk-Schon Version 4 wurde für CGIs benutzt,
tionen/Prozeduren, Referenzen auf Variablen,
Version 5 war ein ähnlich großer Schritt wie
Module und die weiteren gängigen Din-
L A T E X2.09 zu L A T E X2e. Die Sprache wird im-
ge. Perlskripte können dynamisch Quelltex-mer noch stetig weiterentwickelt. Seit Ende
te in Variablen zusammensetzen und dann mit
2002 ist Version 5.8 aktuell welche momen-
eval() ausführen.Das kann auch dazu be-tan noch nicht weit verbreitet ist da vorkom-
nutzt werden, try() und catch() aus Java oder
pilierte Module nicht binärkompatibel zu Perl
anderen Sprachen nachzubilden da das Ergeb-
5.6 sind und damit selber installierte Module
nis von eval()-Anweisungen bei einem Feh-nachzuinstallieren wären. Ähnlich wie L A T E X3
ler nicht zum Abbruch führt sondern abge-soll das seit „langem“ in Planung befindliche
prüft werden kann. Perl hat inzwischen Ob-Perl 6 besser, toller und komplett neu sein.
jektorientierung und die meisten Module bie-
Perl ist für alle gängigen Betriebssysteme vor-
ten ihre Dienste über Objekte und damit auf-
handen. Eine Java-Version wie bei Python in
rufbare Methoden an. Bei PCA wurden keine
Klassen implementiert sondern prozeduraler
4
Nach der Church’schen These sind alle Sprachen die Turingmaschinen simulieren können gleich mäch-
Codegeschrieben welcher aber die Klassen
tig (stark vereinfacht dargestellt), aber hier ist mit
die von manchen Modulen angeboten wer-
„Mächtigkeit“gemeint das mit weniger Code mehr
den und deren Methoden benutzt. Threads
erreicht werden kann weil die Sprache geeignetere
sind mit Perl möglich. Funktionen haben kei- Konstruktezur Verfügung stellt oder es vorhandene
ne festgelegten Argumentlisten sondern kön- Moduledafür gibt.
22
4 Auswahl der verwendeten Basistechnologien
nen auf ein Array mit den Parametern zugrei-Eigenschaften sehr mächtige Reguläre Ausfen. Damit lassen sich bequem optionale Pa-drücke welche die Arbeit gegenüber den rerameter realisieren. Eine Funktion kann über-gulären Ausdrücken nach Lehrbuch durch viel prüfen ob der Aufrufer ein Array oder einen syntactic sugar sehr erleichtern. einzelnen Wert als Rückgabewert haben will Ein häufiges Perl-Motto ist „There’s mo-und entsprechend unterschiedliche Ergebnisre than one way to do it“ was nicht nur die se liefern. Funktions-Ergebnisse können (bei Zahl der Konstrukte sondern auch die vielen entsprechender Implementierung) lvalues zu-Möglichkeiten dieser Konstrukte und zu derückliefern. ren Kombination beschreibt. Die Variablenarten sind im wesentlichen Perl wird nachgesagt das der Code unle-Skalare für einzelne Werte sowie die beiden serlich ist, aber das kann jeder Code sein Container-Typen Arrays und Hashes. Letztere welcher nicht wie bei Python eine bestimmheißen in Python „map“, in Java wohl „dicte Formatierung erzwingt. Bei Perl ergibt sich tionary“ und in awk (am bezeichnendsten) ein Leserlichkeitsproblem beispielsweise da„assoziative Arrays“. Skalare sind als Poindurch das nicht immer Klammern um Funktiter auf Daten zu interpretieren, welche Zahlen onsargumente stehen müssen was andererseits (Perl hat nur Floats, keine Integers bzw. nur den Code optisch luftiger aber die Semandurch ein Zusatzmodul), Zeichenketten, Obtik manchmal schlechter zu verstehen macht. jekte, Referenzen auf Arrays oder Hashes ent-Auch haben die meisten eingebauten Funktiohalten können. Dadurch ist es möglich, hiernen verschiedene Anzahlen von Argumenten archische und vernetzte Datenstrukturen zu (d.h. mehrere Signaturen pro Funktionsname) schaffen ohne wie in Pascal mit VARIANT oder anders formuliert optionale Argumente oder dem C-Äquivalent union arbeiten und und wirken sich beim Weglassen bestimmsich Datentypen definieren zu müssen. Durch ter Argumente dann auf eine Default-Variable die fehlende Typen-Erzwingung entfallen benamens $_ bzw. ein Array namens @_ aus stimmte Fehlersuchmöglichkeiten und Warndie nicht im Quelltext steht. Dadurch ist es hinweise, allerdings lassen sich dadurch deutim Extremfall möglich Code zu schreiben der lich schneller Programme schreiben. mit sehr wenigen Buchstaben (a..z) auskommt Unter Perl 4 ließen sich DBM-Dateien und viel auf impliziten Variablen arbeitet was (4.5.2, S. 19) an Hashes anbinden um diese die Leserlichkeit und das Verständnis nicht persistent zu speichern. In Perl 5 wurde dies gerade fördert. Es wird aber niemand darin erweitert und jetzt können beliebige Skalare, behindert leserliche und lange Variablen- und Hashes, Arrays und Filehandles transparent Funktionsnamen zu verwenden. über Interfaces realisiert werden. Dazu sind die Variablen mit tie() mit dem entsprechen- Qualitätssicherung
den Handler zu verbinden. Der Programmie-Bei größeren Projekten ist es sinnvoll mögrer kann danach beispielsweise ein Array ganz normal benutzen, die Daten liegen aber in ei-lichst viele Fehler durch die Compiler feststelner Datenbank über die per Interface transpa-len zu lassen und am besten, Programmierer rent zugegriffen wird. Die gängigen Beispiele mit allen technischen Mitteln zur Produktion sind aber immer noch DBM-Dateien in denen vernünftigen Codes zu zwingen. Das Suchen über Programmaufrufe hinweg persistent KV-logischer Fehler dauert schon lange genug als das man komplette Nachmittage beispiels-Paare in Hashes speichert. Perl hat neben vielen anderen unerwähnten weise durch falsch geschriebene Variablenna-
23
4 Auswahl der verwendeten Basistechnologien
men verlieren muss. Bei Perl kann mit use möglich, wird momentan aber nicht angebo- strict erzwungenwerden das Variable vor ten sondern das Skript bricht erst zur Laufzeit der ersten Benutzung definiert werden müs-ab, sobald die nicht zu findende Funktion ersen. Bei VisualBasic kann es mit option reicht wird.
explicit
eingeschaltet werden. Ob Python Bei Perl gibt es einige Dinge, die man von so etwas anbietet ist mir nicht bekannt. PHP modernen Sprachen wie C oder Java so nicht bietet solch eine Kontrolle über das Setzen begewöhnt ist und nicht erwartet. Diese rühstimmter Flags an. Bei streng getypten Spraren teilweise vermutlich daher, das alte Skripchen wie Java, C, Pascal, C++ ist so etwas te ohne Einschränkung weiterverwendet wer-normal, bei Skriptsprachen aber eher nicht um den sollen, was für die Nutzer neuerer Perlschnelle Entwicklung durch Verzicht auf viel Techniken dann zu Nachteilen in Form von Bürokratie (wie in Modula) zu erreichen. Ge-Mehraufwand führt. Allerdings sind mit Perl nerell ist zu bemerken das
use strict
von 5.8 bestimmte Dinge als
deprecated
deklariert vielen Programmierern nicht benutzt wird. und als in Perl 6 evtl. nicht mehr existent an-In vielen Perl-Manpages wird auf die Vergekündigt worden. Grundsätzlich ist das zu wendung der ’-w’-Option verwiesen welches begrüßen aber ein zweischneidiges Schwert. zur Laufzeit Warnungen ausgibt wenn bei-Wie bei der Einführung von L
A
T E X2e würspielsweise Variablen ausgelesen werden die den dann noch jahrelang Altlasten von nicht keinen definierten Wert haben. Das ist schon auf den neuesten Stand gebrachten Skripten einmal eine Hilfe zur Erkennung logischer verhindern das Perl 6 installiert wird wenn Fehler. C bietet so etwas nicht (oder nur mandiese Skripte mit Perl6 nicht mehr laufen. che Compiler. Die Fehlermeldung müsste in Bei der Planung von CGI-Programmen die etwa „Variable x used without prior initializaauf möglichst vielen Servern laufen sollen ist tion“ lauten) und erst recht nicht zur Laufzeit. zu beachten welche neuen oder alten Kon-Das so oft auf die Verwendung von ’-w’ verstrukte man nicht benutzen will weil sie mit wiesen wird scheint darauf hinzuweisen das Perl5.002, Perl5.4 oder Perl5.6 nicht laufen es bis heute bei Skript-Programmierern nicht würden. gängig ist. Mit etwas Know-how ist die Installati-
useDiagnostics
liefert umfangreion ganzer Modul-Hierarchien mit wenigen chere Warnungen und Fehlermeldungen als Handgriffen geschehen. Für unerfahrene Adohne Verwendung dieses Moduls und ist nützmins (also die Hauptzahl) ist die Installation lich bei Verwendung von Konstrukten mit deeines einzelnen Modules aber schon eine Helnen man sich noch nicht so auskennt. dentat was ein Festhalten an den alten Perl-
Die -T-Option (Taint-Mode) wird in 5.13.1 (S. 58) behandelt. Perl kann bisher nicht Tippfehler in Dokumentation
Funktions- und Methoden-Namen erkennen. Bei Methoden geht das nicht weil diese in Die Dokumentation ist seit Perl 4 so groß „Skalaren“ (Variablen) gespeichert werden geworden das man oft nicht immer sowo Daten und Objekte jeden Typs gespei-fort findet was man sucht. Der Start ist chert werden können. Dafür bräuchte es ei- perldocperl oder man perl. Etwas ne Datenflussanalyse welche erkennt, welche mehr zu perldoc steht im Dokumentationskapitel (6.6, S. 78). Die Kern-Dokumentation Klassen in der Variable stecken könnten. Für Funktionen wäre das vermutlich problemlos von Perl selber ist meist sehr hilfreich und für
24
4 Auswahl der verwendeten Basistechnologien
häufige Fallen und Fehler werden direkt kor-Skripten im Interpreter so wie bei Python ist rekte Lösungen und gelegentlich auch Tuto-nicht üblich. Perl hat ein Debugger-Interface rials angeboten. In der Wirtschaft nennt sich und wird beispielsweise vom Data Display so etwas „Best Practices“ und bedeutet gän-Debugger [ddd] unterstützt. Bei PCA wurde gige, als erfolgreich erwiesene Methoden für „Debug by print“ durchgeführt weil die Skripbetriebliche Prozesse. Bei den meisten Pro-te per CGI durch den Webserver aufgerufen grammiersprachen scheint dies nicht üblich werden und Debugger daran schlecht anzuzu sein. Büchern ist oft nicht zu zuzutrauen binden sind und das auch keine gängige Metechnisch weitgehend korrekte Lösungen zu thode zu sein scheint. Das könnte auch daran enthalten. Auch sind die Entwicklungszyklen liegen das Webbrowser nach einer Weile ohne freier Software inzwischen so kurz, das Bü-Antwort abbrechen was interaktives Debugcher nur selten aktuell sind und Webseiten mit ging mit Pausen durch Beobachtung mehrerer Anleitungen werden oft nicht auf den neus-Variablen und Nachdenken deutlich erschwert wenn nicht gar unmöglich macht. Also ist ten Stand gebracht. Durch das nicht entfernte alte Wissen erhöht sich der Aufwand, aktu-es einfacher, Daten mitzuschneiden und dieelles Wissen für möglichst gute Programmie-se nach dem Durchlauf anzuschauen oder Inrung (wie auch immer man das für sich selber formationen einfach in den erzeugten HTMLdefiniert) zu erlangen. Das ist aber kein Perl-Quelltext zu schreiben. Einige Entwicklungsspezifisches Problem. umgebungen lassen das Debuggen von CGI-Skripten zu. Wie aus 4.8 (S. 28) klar wird, Beispiele: Zum open-Befehl gibt es ein müssen dazu nur ein paar Environment-Variaeigenes Tutorial perldoc perlopentut blen wie QUERY_STRING und/oder die Einmit 980 Zeilen (Perl5.8.0). Ebenso gibt es zur gabe über STDIN dem Skript passend gelie-Interaktion mit anderen Prozessen die Manpafert werden. ge perldoc perlipc mit 1700 Zeilen. Im Vergleich dazu ist die Dokumentation von C-Funktionen armselig speziell da dort oft Bei-
Module
spiele fehlen und nicht auf den Code-Kontext Ein Vorteil von Perl liegt im umfangreichen eingegangen wird, damit die Funktionen ef-Angebot an optionalen freien Modulen welfektiv und effizient das gewünschte Ziel erzieche die häufigsten Aufgabestellungen abdelen.
cken. Zur Zeit der Abrufes lagen auf CPAN 4040 Module von 2300 Autoren. Der zentra-
Entwicklungunter Perl
le Ansatz über CPAN bewirkt das kein Wild-Freie Entwicklungsumgebungen (IDE, Inte-wuchs an Modulen entsteht sondern meist nur grated Development Environment) gibt es ein oder vielleicht schon einmal zwei Module beispielsweise in Verbindung mit Emacs. zu einem bestimmten Zweck vorliegen. Das Kommerziell gibt es von Activestate [active-vereinfacht die Auswahl eines Modules und
state] eine Entwicklungsumgebung für Win-bringt die Benutzer dazu, gemeinsam an der dows sowie weitere mehr oder weniger freie Entwicklung eines Modules zu wirken statt Umgebungen. Oft dürften die Skripte in ei-mit vielen Modulen für denselben Zweck die nem normalen Editor geschrieben und von Interessenten zu zersplittern. Bei den Skripder Kommandozeile oder bei CGI-Program-ten sieht die Sache anders aus. Es gibt unter CPAN auch Skripte aber es existieren men über Aufruf der entsprechenden Webseiten getestet werden. Interaktives Editieren von noch viele andere Skript-Archive auch spezi-
25
4 Auswahl der verwendeten Basistechnologien
ell für die Zwecke von Website-Besitzern die se einen DBI-Treiber der CSV-Dateien per häufig Programme für beispielsweise Foren, SQL-Anweisungen zugänglich macht und da-Formular-Mailer oder Besucherzähler suchen mit ohne SQL-Server auskommt. So wie CGI um einige gängige Anwendungen zu nennen. das Modul für CGI-Skripte ist, ist DBI das Tor Module können komplett in Perl sein aber zu den diversesten Datenbanken und eigentauch Libraries (meist in C) mitbringen oder lich allem was als Tabellen vorliegt. Das Mobenutzen. Die Installation von Modulen ist dul AnyData::Format::Mp3 erlaubt beispielsweitgehend standardisiert und ein „make test“ weise die SQL-Suche über die MP3-Tags um das Modul vor der Installation auf Lauf-lokal abgelegter Dateien. Die Module von fähigkeit zu testen ist bei den gängigen Mo-AnyData liefert beispielsweise auch SQLdulen möglich und üblich. In Verbindung mit Zugriff auf HTML-Tabellen, CSV-Dateien, dem CPAN-Modul lassen sich auch größe-XML-Dateien oder Webserver-Logfiles. re Hierarchien von abhängigen Modulen bequem und ohne viel Arbeit installieren.
Bewertung
Je verbreiteter ein Modul ist, desto besser Perl erfordert eine vermutlich hohe Einarbeiist meist die Dokumentation. Bei weniger vertungszeit und man lernt immer wieder etwas breiteten Modulen ist die Dokumentation oft neues dazu. Ein Hauptproblem könnte sein, nicht die kompletteste und manchmal wird effizient an Informationen zu kommen wie es nur auf Beispielskripte verwiesen. richtig geht. Da die meisten Programme „fer-Ein Beispiel: perldoc perlipc getig“ sind wenn sie den Anschein erwecken hört zur Perl-Standardauslieferung und erzu laufen und das Know-how oder der Wilklärt, wie man korrekt und sicher mit anderen le zur Korrektheit fehlt gibt es viele schlech-Prozessen kommuniziert. perldoc CGI hat te Skripte von denen viele Programmierer ler-3200 Zeilen und erklärt jede Funktion oder nen was das durchschnittliche Qualitätsniveau Methode ausreichend genau mit Beispieeher niedrig hält. Das dürfte aber für die meislen. Trotzdem wird nicht erklärt wie man ten Programmiersprache gelten und ist kein CGIs programmiert und muss sich das mit spezielles Perl-Problem. beispielsweise Selfhtml [selfhtml] oder den HTML-Spezifikationen von [w3org] und wei-Evolutionsmäßig verbreiten sich diejenigen teren Quellen selber beibringen. Lösungen welche mit den wenigsten Zeilen Dasselbe gilt für DBI. Dieses Modul gibt das Ziel dem ersten Anschein nach erreichen. ein Framework vor mit dem SQL-Befehle Kurzer Code ist oft aber nicht sicher, skaan alle Datenbanken für die ein entsprechen-lierbar oder robust gegen Änderungen. Beides Driver-Modul DBD::foo existiert gesen-spiel: Unter vielen C-Programmierern (und det werden können. Das erleichtert das ent-auch in Büchern) ist es verbreitet 0 statt wickeln von Datenbank-Anwendungen nach NULL zu schreiben auch wenn bei 64-Bit-Maschinen der Code nicht mehr läuft wenn Three-Tier/Two-Tier-Architektur mit Darstellung/Applikation/Datenbank bzw. Anwen-64-Bit-Pointer mit einer 32-Bit Null (also nur dung/Applikation deutlich und erlaubt auch zur Hälfte) gefüllt werden. Das wurde bei den Austausch des Datenbankherstellers mit der Einführung der Alpha-CPUs durch Digital vielleicht nur geringen oder (wenn man Equipment vor einigen Jahren erkennbar und gut geplant hat) ohne Änderungen. DBI ist wird in 2003 durch Einführung der 64-Bit-
26
4 Auswahl der verwendeten Basistechnologien
sen das 0 etwas anderes ist als NULL aber wenige PHP-Anweisungen oder komplette die fehlerhafte Literatur wird noch mindes-PHP-Skripte mit nur wenig HTML-Code tens ein Jahrzehnt weiter in Bibliotheken exis-enthalten. PHP-„Programme“/Seiten können tieren. gleichzeitig mit dem ihren Output umgeben-Der Zugriff auf Module ist inzwischen über den HTML-Code entwickelt und sofort durch CPAN und mehrere Suchmaschinen dafür ein-Laden im Browser überprüft werden. Das fach möglich. Gelegentlich muss man aber weicht die klassische Three-Tier-Logik der erst einmal auf die Idee kommen nach einem Trennung von Ausgabe (HTML, XML,...), Modul für einen bestimmten Einsatzzweck zu Logik (CGI, Remote Application) und Datensuchen. Auch erfordern die Module eine Ein-haltung (SQL-Server) auf: Die Ausgabe und lernzeit und zu viel Neues auf einen Schlag Logik finden im PHP-Programm statt, die Daführt schnell zu einem Misserfolg. Daher wur-tenhaltung kann in Dateien oder auch SQLde bei PCA nicht alles mit externen Modulen Datenbanken erfolgen. Dafür sind die Seiten schneller entwickelt was den Erfolg von PHP realisiert. Wenn man Perl einmal hinreichend be-begründen könnte. Bei der Planung von PCA herrscht gilt dann das oft genannte Motto: war PHP noch nicht so verbreitet und wurde „Perl makes easy jobs easy, and the hard jobs daher trotz dieser Vorteile nicht als Alternatipossible.“. ve in Betracht gezogen. Auch hätte es das Bearbeiten der Seiten durch den Betreiber problematisch gemacht da beim Bearbeiten PHP- 4.6.2Python
Anweisungen versehentlich entfernt werden Zu Python [python] kann ich nicht viel sa-könnten.
gen. Die Einrückung ist Teil der Syntax was So wie Perl so wird auch PHP stetig weidie Leserlichkeit erhöht und es erfreut sich terentwickelt. Version 3 hatte vermutlich noch einer hohen Beliebtheit. Auch ist es objek-nicht den Reifegrad wie beispielsweise Perl 5 torientiert. Die Programme können interak-oder L A T E X2e erreicht, was der ständigen Vertiv im Python-Interpreter erstellt werden und breitung aber keinen Abbruch tat. Durch Setfür die gängigen Problemstellungen existieren zen von Kontrollparametern können in der ak-Module. Python existiert auch in einer Java-tuellen Version ähnlich wie bei Perl beispiels-Version was eine höhere Verbreitung spezi-weise nicht deklarierte Variablen erkannt werden. Die neue Version 4.3 vom Dezember ell auf mobile Plattformen (Handy, elektronische Terminplaner und Adressverwaltungen) 2002 bietet auch Skript-Fähigkeiten für die als Perl bewirken könnte. Das ist allerdings Benutzung von der Shell aus [heise2002b]. für CGI-Programme die auf Server-Seite ab-Yahoo wollte auf Dauer auf PHP umsteigen laufen nicht von Interesse. [golem2002a] was eine Tauglichkeit für hohe Abrufzahlen vermuten lässt. Es gibt von den
PHP-Entwicklern auch optimierte Versionen
4.6.3 PHP
(ZEND-Engine [zend]) und ergänzende Pro-PHP [php] ist eine Sprache die zur dy-dukte welche kommerziell angeboten werden. namischen Erstellung von Webseiten entwickelt wurde. PHP-Seiten werden vom Web- 4.6.4Java
server interpretiert und das Ergebnis an den Java verbreitet sich auf Webservern stetig. Besucher gesendet. Die Seiten können in fließendem Übergang normales HTML und JSP sind Java-Anweisungen in Webseiten al-
27
4 Auswahl der verwendeten Basistechnologien
so PHP mit Java-Syntax um es vereinfacht zu vascript und Frames wurde verzichtet und die sagen. Seiten mit der Hand (oder Netscape Gold) erzeugt. Inzwischen ist Java (oder die Rechner auf denen es läuft) brauchbar schnell und wenn HTML-Code ist statisch in den Verwalman die verschiedenen Server die einander tungsskripten enthalten. Was die Besucher se-XML-, XSLT- und andere Dateien zuschieben hen sind statische Seiten oder aus den Vor-und deren Formate beherrscht hat man eine lagen erzeugte Seiten. Diese könnten auch mächtige Umgebung zur Verfügung die den PHP- oder SSI-Anweisungen enthalten. Bei aktuellen Stand der Technik darstellt. PCA sind zwar die Datenhaltung und Logik Als PCA geplant wurde sah die Performangemeinsam, die Darstellung ist aber optisch ce von Java noch düster aus und Firmen wie (nicht inhaltlich) vollständig konfigurierbar Corel entwickelten zwar in Java komplette und austauschbar. Office-Suiten die jedoch nicht angenommen Bei XML/XSLT würden die Programme wurden [heise1997a]. Auch gab es die nöti-XML-Daten erzeugen welche von XSLT-Begen Server wie Tomcat, Jakarta und solcherlei schreibungen dann in konkreten HTML-Code Dinge nicht oder sie waren noch im Entwickumgesetzt werden. Bei PCA hingegen finlungsstadium. Das Hauptkriterium für den den URL-Berechnungen in den Skripten statt. Ausschluss von Java aus den Planungen war XSLT und XML sind vielleicht etwas besser aber die Anforderung das ein Webserver datrennbar.
für um die entsprechenden Module zu erweitern gewesen wäre.
4.8 CGI Da PCA möglichst ohne hohe Anforderungen auf normalen Webservern laufen sollte und dort Apache, MySQL und Perl und/oder Da CGI die zentrale Technologie zur Interak-PHP gängig sind wurde über Java nicht weiter tion mit den Benutzern und Verwaltern darnachgedacht. stellt wird darauf möglichst knapp aber trotzdem ausführlich genug eingegangen um eine
Basis zum Verständnis der Ausführungen in
4.7 HTML
späteren Kapiteln zu geben. Bei CGI geht es darum das Anwender oder
HTML wird als bekannte Basistechnolo-Besucher in einem Webbrowser beliebige Da-gie vorausgesetzt. Eine gute Anleitung zu
ten eingeben und dann daraus individuell be-
HTML gibt [selfhtml]. Mehr findet sich un-rechnete Ausgaben meist in Form von Web-
ter [w3org]. Bei PCA wurde keine spezielle
seiten aber auch von Downloads erhalten.
HTML-Version festgelegt. Der Betreiber be-Zur Eingabe der Daten dienen Forms (For-
vorzugte für das Editieren der Seiten Netsca-
mulare). Bei Absenden werden daraus HTTP-pe Gold da er sich damit auskannte. Also ent-Anfragen 5 erzeugt. Diese interpretiert der standen die statischen Seiten damit wie auch
die Endbearbeitung der Vorlagen. Die Vorlagen werden in (5.3, S. 42) behandelt. Prinzipiell wurde darauf geachtet keine proprietären Elemente zu benutzen die nur auf einem bestimmten Browser laufen sondern einfaches HTML zu verwenden. Auf Ja-
28
4 Auswahl der verwendeten Basistechnologien
Webserver und führt dann das entsprechende CGI-Programm
6
(oder Skript oder PHP-Seite) aus welche die Formulardaten interpre-ten benutzt die der Benutzer nicht editie-
tiert und daraus das anzuzeigende Ergebnis erzeugt. Diese drei Schritte werden im folgenden näher erläutert.
4.8.1 Forms
Formulare sind Teil des HTML-Standards.
pl method=POST> beginnt ein Formular, /sonstwo/foo.pl wird beim Absenden des Formulars an den Webserver vom Server gesucht und bekommt die Daten übergeben.
checkbox: Eine oder mehrere anklickbare
Die method=-Angabe wird im nächsten Ab-Checkboxen.
schnitt behandelt. Beendet werden Formulare mit „“. Die aktuellen Werte aller radiobutton: Mehrere Schaltflächen von de-
Formular-Felder zwischen diesen beiden Anweisungen werden als KV-Paare in die Anfrage kodiert. Es können beliebig viele Formulare in einem HTML-Dokument schaltet. vorkommen. Vermutlich ist es verboten file: Erlaubt das Hochladen von Dateien und Formulare zu schachteln. wird bei PCA benutzt. Formulare haben keine optischen Auswirkungen sondern können an „beliebiger“ Stelle
im HTML-Code beginnen und enden. Einzelne Formularfelder hingegen sind meist sichtbar da sie editiert werden sollen (siehe auch Abb. 4.2, S. 30):
text: ein einzeiliges Eingabefeld.
password: ein einzeiliges Eingabefeld bei dem die Eingabe nicht offen sichtbar ist sondern durch Sternchen dargestellt wird um verdeckte Passworteingaben zu er-
hidden: Ein KV-Paar das nicht optisch dargestellt wird. Wird bei PCA im Verwal- 6 Hierwird nicht zwischen Skript und Programm un-
AlleElemente können mit einem Default- terschiedenweil es für die betrachteten Aspekte
Wert vorbelegt werden. Elemente können als keinen Unterschied macht.
29
4.8.2 HTTP-Request readonly markiert werden und sind durch die Benutzer dann nicht änderbar. Diese Fel-Bei Absenden des Formulars werden die akder können dann von beispielsweise Javas-tuellen VALUE-Attribute vom Webbrowser cript befüllt werden. Manche Eingabetypen
ausgelesen und mit dem jeweiligen NAMEkönnen Beschränkungen für die maximale
Attribut zu einem KV-Paar verbunden. Da-Größe der eingegebenen Daten enthalten. Auf
bei geht die Information verloren wie das Eleweitere Details wird hier nicht weiter einge-ment optisch ausgesehen hat. D.h. es ist möggangen.
lich in der aufrufenden HTML-Seite Check-Ein Beispiel für die verschiedenen Elemen-boxen durch Select-Felder zu ersetzen ohne
te ist in Abb. 4.2 (S. 30) dargestellt. Der Code dafür ist folgender: (Tabelle 4.2, S. 31)
Eine weitere Methode, CGIs aufzurufen angegeben wurde werden diese KV-Paare unbesteht darin, die URLs als Ziel in norterschiedlich vom Webbrowser an den Webmalen Links ( href=...url...>) server übermittelt. einzubauen. So etwas sieht man bei Surfen Bei GET werden die KV-Paare kodiert und häufiger und kann es am ’?’ gefolgt von hinter der ACTION-Angabe des ...foo.php?aktion= wird vom Server dem Skript über eine Envi- zeige-produkt-information\ ronment-Variable namens QUERY_STRING &produkt-id=1234 wäre ein Beispiel. zur Verfügung gestellt. Eigentlich ist das nur Manchmal werden auch html-Seiten mit ein Sonderfall eines normalen Seitenabrufes ’?’-Argumenten versehen um beispielsweise der auch per GET geschieht. Einschränkunden Weg eines Besuchers in den Log-Dateien gen bestehen darin das Environment-Varianachvollziehen zu können. blen unter manchen Systemen (speziell Windows) nur 1024 Zeichen lang sein dürfen was Mehrfaches Auftreten der selben Schlüsdie Größe der zu übermittelnden Informatio-selworte im Formular und den abgesendenen beschränkt. ten Daten sind erlaubt und auch sinnvoll einsetzbar. Beispiel: TV-Programm-Formular Für das Beispiel aus Abb. 4.2 (S. 30) mit mehreren Checkboxen die dann Teilmen-ergibt sich eine an den Webserver gegen der Menge „will-ich-sehen=ARD“, „will-sendete URL /cgi-bin2/test.pl? ich-sehen=ZDF“, „will-ich-sehen=WDR“ lie- k1=a+1&k2=a2&k3=a3&k4=a4&k5= fern. a5&k6=a6&k7=a7&k8=&ka=aa&k8=
30
4 Auswahl der verwendeten Basistechnologien
Tabelle 4.2: HTML-Quelltext zu Abb. 4.2 (S. 30)
a%0D%0A8&k10=abc und daraus die an Gewinnspielen zu vermeiden. Das so Environment-Variable QUERY_STRING mit etwas nicht funktioniert wird im Abschnitt dem Wert k1=a+1&k2=a2&k3=a3&k4= über Sicherheit 5.13 (S. 57) angedeutet. Internet-Explorer macht sich beim Reload a4&k5=a5&k6=a6&k7=a7&k8=&ka= aa&k8=a%0D%0A8&k10=abc. An den von POST-Seiten beispielsweise durch Werten hinter k1 und k8 sieht man das Leer-die Meldung „sollen die Daten noch mal zeichen, Zeilenenden und andere spezielle übertragen werden“ bemerkbar. Für das Bei-Zeichen speziell kodiert werden. Das ist eine spiel ergeben sich für REQUEST_METHOD mögliche Fehlerquelle für CGI-Skripte wenn der Wert POST anstelle von GET, für QUERY_STRING der Wert „abc=def“ aus beispielsweise Umlaute in Namensangaben angegeben werden und das Skript diese in der Action-URL und auf STDIN die Zeile ihrer Form als ’ k1=a+1&k2=a2&k3=a3&k4=a4&k5= a5&k6=a6&k7=a7&k8=&ka=aa&k8=
Wird als method=-Argument bei
a%0D%0A8&k10=abc. Ohne Angabe ent-
scheidet der Webbrowser was er für eine
die Daten auf dem Standard-Eingabestrom
Kodierung vornimmt und im Fall von Inter-
zur Verfügung gestellt. Es liegt dann am
net-Explorer 6.0 war das application/
Skript, diese auszuwerten. Vorteile sind die
Erwei- x-www-form-urlencoded.
beliebig große Menge an übertragbaren Daten
terung der
und das in der Adress-Zeile des Browsers kei-
enctype="text/plain" führtzu einer
ne sicherheitsrelevanten Daten wie Username
anderen Kodierung und auf STDIN wird
oder Passwort stehen. Der Hauptnachteil
folgendes geliefert:
liegt darin, das die URLs nicht gespeichert werden können. Allerdings kann das dazu k1=a 1
genutzt werden so etwas zu unterbinden k2=a2
und beispielsweise mehrfaches Teilnehmen k3=a3
31
4 Auswahl der verwendeten Basistechnologien
tet werden. Werden auf STDERR Fehler aus- k4=a4
gegeben landet diese in der Fehler-Logdatei k5=a5 k6=a6 des Webservers und der Besucher kriegt ei- k7=a7 ne Fehlermeldung und dann meist nichts vom k8= bisher erzeugten Output zu sehen. ka=aa Nun folgen ohne spezielle Reihenfolge be- k8=a
stimmte Dinge die für die Programmierer von
8
CGI-Skripten relevant sind. Die ersten bei- k10=abc
den Posten betreffen Sachverhalte die durch die Server-Konfiguration bzw. das Angebot an
Das CGI-Programm muss die Interpretati-Ergänzungen für Apache gegeben werde. Da-on der Werte über die Environment-Variable
nach kommen Dinge die durch CGI vorgege-
CONTENT_TYPE vornehmendie bei diesem
ben werden und deswegen in diesem Kapitel
Aufruf den Wert text/plain hat.
aufgeführt werden. Gleichzeitig wird oft die
Ein Mischen von POST und GET ist mög-
konkrete Implementierung bei PCA eingegan-lich ist vielleicht aber unüblich da die in-gen wenn eine separate Erwähnung im folgen-teraktiven Elemente sich nur auf die per
den Kapitel oder bei der Implementierung (6,
POST übertragenen Elemente auswirken. Ei-S. 69) meist aufgrund des geringen Umfanges
ne Session-ID könnte auf diese Weise per
nicht sinnvoll erschien.
’?ID=1234’ in allen aufgerufenen URLs mitgeführt werden. Auf genauere Erläuterungen
Verzeichnisstruktur
wird verzichtet. Sessions werden gleich angesprochen.
Wo der Server Skripte zu suchen hat ist in dessen Konfiguration festzulegen. Generell gibt
es zwei Konzepte wo Skripte liegen: Zusam- 4.8.3CGI-Programme
men mit den Webseiten in einem Verzeichnis-Das Skript kann nach Auswerten der CGIbaum oder in einem eigenen Verzeichnisbaum Parameter auf eine Menge von KV-Paaren zuder kein Teilbaum des HTML-Baumes ist. greifen und damit seine Aufgabe erfüllen. Es Apache-Konfigurationen beschreiben Bäume ist dringend anzuraten dies von fertigen Mo-oder Segmente für die einheitliche Regeln dulen erledigen zu lassen welche die gängigelten welche dann in Teilbäumen abgeändert gen Kodierungen kennen. Das vermeidet dauwerden können. Bei Apache wird festgelegt ernde Anpassungen nur weil Internet Explorer wie mit bestimmten Pfaden zu verfahren ist jetzt irgendetwas anders macht oder Besucher und wo die entsprechenden Dateien zu finden aus anderen Sprachregionen mit anderen Einsind. Weiteres zum Ablauf in Apache steht stellungen die Seiten besuchen. Bei PCA wird unter [ix2000a].
dazu das verbreitete und bei vielen Providern Jetzt wird die sicherere Methode mit geauch vorinstallierte Modul CGI.pm benutzt. trennten Verzeichnissen für HTML und CGI Der Output des Skriptes wird über den grob und vereinfacht beschrieben: Alle URLs Server an den Webbrowser des Besuchers die auf den HTML-Bereich zeigen werden übermittelt. Dabei muss es sich nicht immer von dort geholt und so wie sie sind (oder mit SSI-Umformungen) an den Besucherum HTML-Seiten handeln sondern es können darüber auch Dateien heruntergeladen oder browser ausgeliefert. Sinnvollerweise liegen der Browser auf eine andere Seite weitergelei-im HTML-Bereich also nur öffentliche Doku-
32
4 Auswahl der verwendeten Basistechnologien
mente. Private Dokumente (Logfiles, Statisti-cher zu senden ist. CGI-Skripte speichern übken usw.) sollten per Authentisierung (User-licherweise Ihre Daten „in der Nähe“. Also name und Passwort) gegen unberechtigten liegt kreditkarten.txt im öffentlichen Zugriff geschützt werden. HTML-Baum und ist potentiell weltweit per Alle URLs die auf den CGI-Bereiche http://... zugreifbar. Will man das nicht, müszeigen (/cgi-bin/...) werden überprüft sen die entsprechenden Endungen oder Da-und die entsprechenden Programme ausge-teien gezielt in der Server-Konfiguration ausführt wenn sie als ausführbar (executable) für genommen werden oder der Server darf beijedermann markiert sind. Das man das Ein-spielsweise nur .html-Dateien ausliefern oder schränken kann und nur für jedermann lesbare die Rechte müssen passen was wieder einen
Dateien ausgeliefert oder ausgeführt werden Rattenschwanz von Folgen beinhaltet (5.13.2, sind Details auf die nicht weiter eingegangen S. 60). wird.
gessen, diese Konfiguration wieder einzustel-Im CGI-Bereich liegende .txt-Dateien liegen zwar dort, werden aber nicht ausgeführt len oder ein Anwender nervt weil er seine oder wenn, dann führen sie in der Regel nur .txt-Dateien nicht ausliefern kann und schon zu Fehlern. Ein Webserver wird niemals auf ist
kreditkarten.txt
doch wieder lesdie Idee kommen eine dort liegende Datei bar. Das kann nur schief gehen wenn Da-
kreditkarten.txt
alsnormale Websei-ten für Skripte im öffentlichen Bereich für HTML-Dokumente liegen und die zusätzlite auszuliefern. Bei PCA ist es momentan so das die html-chen Sicherheitskonfigurationen kosten zu-Dateien in
$HOME/webroot/htdocs
sätzliche Arbeit, sind potentiell fehleranfälliegen und die CGI-Skripte in lig und erfordern Know-how. Man könnte die
$HOME/webroot/cgi-bin.
Das könnte Daten auch ausserhalb des HTML-Baumes lasich aber ändern weswegen die Sicherheits-gern. Das erfordert längere Dateinamen und aspekte der anderen Methode auch erklärt passende Planung und Disziplin. Mit anderen werden. PCA ist nicht streng auf eines der Worten: Es ist prinzipiell sicher wird aber verbeiden Systeme festgelegt da fast alle Pfade mutlich nur selten richtig gemacht. in einer Konfigurationsdatei abgelegt sind. In solch einer Konstellation wäre dann im-Der Pfad zur Konfigurationsdatei und für die mer noch das Skript bei Fehlkonfiguration (z. Fehler-Log-Dateien stehen fest im Quelltext B. kurz nach Aktualisieren des Servers oder und sind problemlos zu ändern da sie dort nur Umzug auf einen neuen Server) zugänglich ein Mal stehen. und würde dann vielleicht im Quelltext aus-Jetzt das unsicherere System mit Code im geliefert. Skripte sollten aufgrund der oft dar-HTML-Baum: Da es manchmal unbequem ist in gespeicherten Usernamens und Passwort-oder mehr Arbeit erfordert gibt es auch Kon-ID für SQL-Server und wegen des Wertes der Quelltexte auch nicht als normale Seiten figurationen welche festlegen das beispiels-
weise .php-Dateien die im normalen HTML-ausgeliefert werden. IIS hatte lange Zeit eine Baum liegen vom PHP-Parser ausgeführt wer-Lücke mit der die Quelltexte von ASP-Seiten den. Das geht für alle Dateitypen (.php, .pl, angezeigt werden konnten. Für PHP wäre eine .py für Python, .cgi usw.). Bei dieser Metho-Anzeigemöglichkeit für Quelltexte auch ein de liegen also Programme im HTML-Bereich Problem. Ebenso für JSP-Seiten. Bei Verzicht auf lokale Dateien und Ver-und der Webserver muss entscheiden ob die Datei auszuführen oder direkt an den Besu-wendung von Datenbanken (SQL-Servern) 33
4 Auswahl der verwendeten Basistechnologien
entfallen Datenlecks durch Dateien auch und könnte bei höheren Abrufzahlen bei PCA spedafür handelt man sich andere Sicherheitspro-ziell dazu genutzt werden, die Suche in den bleme ein (SQL-Injection 5.13.1, S. 57). Metadaten zu beschleunigen indem die entsprechenden Daten dauerhaft im Speicher ge-Das war nur ein Anriss der vielen Möghalten werden. lichkeiten und Varianten die bei Sicherheits-Um die Vorteile von mod_perl voll zu überlegungen zu beachten sind. Die Zahl der nutzen muss bewusst ausgenutzt werden das Möglichkeiten würde eine strukturierte Ausdie Skripte zwischen Aufrufen nur schlafen führung sehr lang machen und würde außer-und nicht entladen werden. Dazu lädt man exdem gute Kenntnisse über die Konfigurationsterne Daten beim Start so, das man zwischen möglichkeiten des jeweiligen Webservers erden Läufen immer wieder darauf zugreifen fordern.
kann und diese nicht bei jedem Lauf neu laden muss. Alternativ (und einfacher zur Umstel-
Optimierungen
lung vorhandener Systeme) ist es, Daten bei Die CGI-Programme werden pro Anfrage des Bedarf zu laden, nach Benutzung aber nicht Besuchers (also pro Absenden des entsprezu entfernen und bei erneutem Zugriff schon chenden Formulars) jeweils einmal gestartet. die im Hauptspeicher vorhandenen Daten zu Zur Beschleunigung gibt es für Perl und Pybenutzen falls diese noch aktuell sind. thon mod_perl und mod_python. Dort werden die Programme nach einem Durch- Validitätder CGI-Parameter
lauf schlafen gelegt und bei einem neuen CGI-Besucher können bei GET-Aufrufen in den Aufruf direkt mit den Daten gefüttert. Da-URLs herumtippen um die Parameter zu ändurch werden das erneute Parsen, Starten, dern oder auch Seiten die POST benutzen lo-Einlesen von Konfigurations-Dateien (z.B. kal speichern und dort Änderungen vorneh-Templates zur Darstellung des Ergebnisses) men um beispielsweise mehr als fünf Artikel und eine erneute Verbindung an einen SQLbestellen zu können oder sich mit vorgefertig-Server eingespart. ten Bestellformularen das Leben zu erleich-Eine Stufe aufwendiger sind Systeme wie tern. Oft kommt man damit nicht weit weil FastCGI [fastcgi]. Sie funktionieren damit, die Skripte nicht damit klarkommen
7
. oder ob das bestimmte CGI-Anfragen vom HTTPder Besucher selbstgemachte Bestellformula-Server an einen oder mehrere Server-Prore benutzt. gramme weitergeleitet werden, welche die Es sollten keine Annahmen über die Sei-Anfragen dann bearbeiten. Dabei können ten gemacht werden die zum Aufruf führen. Anfragen vom selben Besucher auch im-Wenn die Schaltknöpfe umbenannt werden mer demselben Prozess zugeschoben werden sollte das Skript weiter funktionieren. Ebenso der dann die passende
Shopping-Card
gleich wenn anstelle von fünf nun zehn Bestellpogriffbereit hat. So funktioneren auch Servsitionen möglich sind. Auch sollte nicht dalets in Java, denen vom Webserver Anfragen von ausgegangen werden das in der Seite einzugeschoben werden. Das fängt dann an in gebaute Java-Skripte oder andere aktiven In-Richtung Application Server zu gehen bei denen komplette Anwendungen auf dem Web-
server(oder woanders) und die Oberfläche auf dem Webbrowser des Benutzers laufen. Beim AVMZ ist mod_perl möglich. Es
34
4 Auswahl der verwendeten Basistechnologien
halte beispielsweise die Gesamtsumme einer stände nötig. Im folgenden wird oft ein Ein-Bestellung korrekt ausrechnen. Soll jemand kaufswagen als Beispiel genommen weil die der kein Javascript hat dann nichts bezahlen Aufgabe knapp und verständlich erklärt werweil die Bestellsumme leer ist ? Soll jemand den soll und lange Formulierungen das nicht der die Seite lokal speichert, manipuliert und leisten würden.
falsche Daten sendet für eine Bestellung viel-Bei PCA können die Daten aller Abläufe in leicht sogar Geld bekommen ? den Formularen mitgeführt werden. Der Server speichert erst beim endgültigen Absen-Mit anderen Worten: So wie schriftliden einer Anmeldung die Daten auf Platte. che Formulare manipuliert oder versehentlich Bei zusammenhängenden Formularen und ge-oder absichtlich falsch ausgefüllt werden könringen Datenmengen geht das und wird genen, so verhält es sich mit Web-Formularen. legentlich mit multiple windows bezeichnet. Die HTML-Seiten und dort enthaltene Java-
Der Zustand (oder wohin man will, siehe 6.3 Skripte oder andere Überprüfungen sind nur (S. 71)) wird als Teil der Formulareingaben für die Besucher. Die endgültige Kontrolle mitgeführt. Die Datenmengen sind bei PCA muss immer das CGI-Skript anhand der endklein. Das größte was zur Korrektur mehrmals gültigen Daten vornehmen. Bei großen Sihin und her gehen muss sind die Abstracts wetes ergibt sich dies teilweise dadurch das die niger als ein paar Kilobyte groß sind. Die Do-Webseiten optisch durch andere Personen gekumente werden am Stück hochgeladen wozu staltet werden als von denjenigen welche die keine Zustände gebraucht werden. Skripte schreiben und deswegen die Program-Eine Session bezeichnet im Folgenden mierer gar nicht erst implizite Annahmen über einen zusammenhängenden Besuch auf einer die Formulare machen können. Die Kontrolle Webseite. Den Browser zu beenden, die Seider fremden Daten hat noch weitere Aspekte te dauerhaft zu verlassen oder den Rechner die in 5.13 (S. 57) angesprochen werden. auszuschalten wird als Ende einer Session betrachtet.
CGI ist stateless und Sessiontracking
In einem Onlineshop kann nicht hinter je-Dann ergibt sich das nächste Problem für dem Link ein Formular mit allen Daten stemanche Anwendungen: Während normale cken. In solch einem Fall muss ein Besu-Applikationen bestimmte Zustände haben und cher gelegentlich durch Formulare (die man man beispielsweise einen Dialog erst schlie-oft optisch direkt erkennt) seinem Einkaufsßen muss um in dem aufrufenden Fenster wei-wagen Produkte hinzufügen können, sich antermachen zu können, ist CGI (und HTTP um sonsten aber frei auf der Seite bewegen es genau zu bezeichnen) stateless. Der Web-können. Der Besucher muss bei bestimmten server erinnert sich ohne entsprechende Vor-Aktionen seinem Einkaufswagen zugeordnet kehrungen nicht daran wo und welche CGI--werden können. Dazu gibt es verschiedene Techniken. Sinnvoll wären ID-Parameter wie Formulare wie ausgefüllt worden waren und wo es weitergehen muss. Der Besucher könn- ?id=1234 inden HTML-Urls die nur gete im Browser zurückgehen, Formulare noch legentlich ausgewertet werden. Andere Meeinmal absenden oder zweimal gleichzeitig thoden wären die IP-Nummer oder die Browwobei auf letzteres gleich noch genauer ein-serkennung zur Identifikation zu benutzen. gegangen wird. Bei komplizierteren Aktio-Browser-Kennungen oder IP-Nummern sind nicht eindeutig wenn beispielsweise Proxies nen (Einkaufswagen füllen, Adresse eingeben, Bestellung endgültig absenden) sind Zu-dazwischen hängen oder ein Rechnerpool der
35
4 Auswahl der verwendeten Basistechnologien
Universität einheitlich konfigurierte Rechner fer gelten dürften und damit gute Träger für hat deren Browser-IDs gleich sind und deren ein positives Image über den Shop sind) ab-IP-Nummer aus Sicht des Webservers auch gewiesen werden.
gleich ist weil die Zugriffe über einen Proxy erfolgen. Apache bietet an, aus den Benutze- GleichzeitigerAufruf von CGIs
rinformationen die bei jeder HTTP-Anfrage Ein weiteres Problem ist Parallelität bei mitgesandt werden eine ID auszurechnen welden Zugriffen. Wird schnell hintereinander che als Session-ID benutzt werden kann. Das in einem Textfeld Zeilenvorschub gedrückt ist im Gegensatz zu Cookies und Session-ID schickt der Browser oft schnell hintereinanin den URLs die beide als exakte (aber nicht der zwei Anfragen ab. Nur das Ergebnis der Fälschungssichere) Wiedererkennungsverfahletzten Anfrage wird dem Besucher angezeigt ren einzustufen sind, eine Heuristik. aber die erste Anfrage läuft unter Umständen Cookies werden gerne zur Wiedererkenkomplett durch. Es kann sein das der Websernung benutzt. In den Headern einer Antwort ver den Abbruch der ersten Übertragung bekann ein Server(bzw. das CGI-Skript welches merkt und dem Skript ein Signal schickt mit eine Anfrage beantwortet) für ein Pattern das dem das Skript dann seine Aktivitäten einsteldie aktuelle Domain beschreibt (*.heise.de für len kann aber diesbezüglich fehlen mir die Erwww.heise.de, aber nicht *.bild.de für einen fahrungen. Besucher von www.heise.de) ein Cookie set-Die Parallelität hat zwei Aspekte: Technizen welches Daten enthält. Ohne danach gesche Parallelität bei der zwei mal gleichzeitig fragt zu werden sendet der Browser des Bedasselbe Skript vom Rechner ausgeführt wird suchers dann bei jeder Anfrage an die durch (oder von verschiedenen Rechnern bei verteildas Pattern definierten Domains dieses Cooten Web-Servern. „gleichzeitig“ bezieht sich kie mit. Werden Cookies auf Platte gespeiauf die Start- und End-Zeiten der Bearbeichert, kann eine Session über das Beenden tung und nicht die Befehlsausführung auf der des Browsers und Abschalten des Computers CPU/den CPUs) und semantische Parallelität hinweg weiterlaufen und der Besucher dauerbei welcher der erste Aufruf schon durchgehaft erkannt werden. Wer bei amazon.de belaufen ist, danach jedoch ein zweiter Aufruf stellt, weiß das man auch Wochen später dort gestartet wurde wodurch beispielsweise eimit Namen begrüßt wird was dadurch erreicht ne Bestellung dann zwei mal vorliegt. In der wird. Die Persistenz bietet somit Möglichkei-Praxis kann das oft vermindert werden, inten zur gezielten Kundensprache und Persodem das endgültige Formular keine Texteinnalisierung weshalb Cookies so beliebt sind. gaben erlaubt sondern durch Klicken auf ei-Besucher abzulehnen die keine Cookies ne Schaltfläche aktiviert werden muss. Viele eingeschaltet haben, ist eine Unsitte vieler Doppeleingaben basieren vermutlich auf dop-Onlineshops. Cookies braucht man für Perpeltem Drücken des Zeilenvorschubes. sistenz über längere Zeiträume (Rechner ab-Semantische Parallelität ist meist nicht so geschaltet, Browser abgestürzt). Während eiproblematisch weil doppelte Ergebnisse (exner Session lassen sich aber andere Methoden akt gleiche Bestellungen, Anmeldungen in nutzen so das die Onlineshop-Programmierer Newsletter) meist leicht zu erkennen sind. ihren Kunden (den Onlineshops) durch solch schlechte Programmierung Umsätze entgehen Laufen beide Skripte parallel kann es passieren das dieselben Dateien von beiden lassen weil potentielle Kunden (die wegen des Abschaltens der Cookies als engagiertere Sur-Skripten gleichzeitig zum Schreiben geöff-
36
4 Auswahl der verwendeten Basistechnologien
net und dann abwechselnd beschrieben wer-sen wird auch nicht hundert prozentig korrekt den. Solche Dinge werden gerne herunterge-gearbeitet weil das eine zentrale Lock-Datei spielt und CGI-Programmierung in Verbin-erfordert hätte die wiederum bei Fehlern zu dung mit lock()-Funktionen habe ich in Bei-Blockade der Systeme führen könnten. Lange spielen noch nie gesehen. Bei überlasteten Transaktionen werden allerdings unterstützt: Webservern steigt die Wahrscheinlichkeit das Jemand editiert die Liste der Adressen, geht die (nun länger dauernden) CGI-Aufrufe sich Mittagessen, kommt wieder, speichert seine überlappen. Das kann jeden Rechner betref-Daten ab und in der Zwischenzeit haben sich fen. Gründe wären: Bericht im TV oder Hei-weitere Leute in die Listen eingetragen wird se Newsticker [heisenews] über eine Site auf korrekt gehandhabt. Wenn aber während des demselben Rechner, allgemein viele Besu-Speicherns jemand sich zeitgleich in die Liste cher, nicht optimierte CGI-Skripte, Datenban-einträgt (technische Parallelität), gewinnt eiken oder PHP-Seiten. ner der beiden Aufrufe, nämlich derjenige der zuletzt geschrieben hat. Mit SQL passiert ei-Um zu verdeutlichen das dies kein theoretisches Problem ist wurden bei cheatz.de 8 der nem so etwas nicht, aber für ein paar Email-Adressen lohnt kein SQL-Server. Abstand zweier Anfragen von gleichen IP-Nummern auf der Suchmaschine gezählt und in Tabelle 4.3 (S. 38) dargestellt 9 . Jeder 236’te Aufruf findet in derselben Sekunde statt. jeder 53’te innerhalb von 2 Sekunden oder weniger. Bei PCA werden die Daten erst gesammelt und dann per flock() die Daten gelockt auf einen Schlag geschrieben. Das vermeidet, in eine geöffnete Datei während des CGI-Laufes immer wieder ein bisschen hineinzuschreiben. Relevant war dies hauptsächlich für die Anmeldung. Speziell dort wäre es schade und peinlich wenn Anmeldungen nicht oder fehlerhaft gespeichert würden nur weil jemand doppelt den Absendeknopf gedrückt hat. Bei der Administration wurde nicht so sehr darauf geachtet da ein Eigeninteresse an korrekten Ergebnissen unterstellt wird. Probleme könnten sich ergeben wenn Suchdatenbanken oder HTML-Seiten parallel ausgerechnet werden. Dann muss man alles durchlaufen lassen und anschließend noch einmal ausrechnen. Bei den Anmeldungen für die Emailadres- 8 Fürdiese Site programmiere ich. Daher konnte ich diese Daten erfassen.
9 Die Startzeiten werden in ganzen Sekunden erfasst. Daher handelt es sich hier nicht um die echten Abstände sondern die Spalte ’0 Sek’ enthält alle Aufrufe die in derselben Sekunde stattfanden.
37
5 Konkrete Planung
Nachdem die grundsätzlichen Rahmenbe-dann das Risiko zu bergen doch nicht damit dingungen festgelegt waren, werden hier kon-erfolgreich zu sein. kretere Dinge erklärt. Hier würden gut Klas-Detail-Architektur und Implementierung sendiagramme, mehrstufige Modulhierarchierfolgten oft zeitgleich wenn man „gleich“ en und Kommunikationsmechanismen hinmit „am selben Tag“ gleichsetzt. Nachdem einpassen. einzelne Module fertig waren, wurde mit dem Auftraggeber das weitere Vorgehen abgeklärt Allerdings ist PCA „flacher“ als andere oder Dinge wurden abgeändert. Diese Ent-Systeme. Wenn man die Abstraktionsstufen scheidungen hatten dann Auswirkungen auf absteigt ist man schnell unten beim Quelldie anderen Module (6.2, S. 70). text angelangt. Es gibt keine mehrschichtige Architektur in „Layern“ (Kundenobjekte, Dieses Dokument soll keinen Erlebnis-Kontenobjekte und was sonst noch, die dann bericht darstellen sondern die Konstruktivon anderen Modulen benutzt werden und sel-on und Implementierung strukturiert darber wieder Persistenzmodule oder Datenbank-stellen. Einen sauberen Top-Down-Ansatz Klassen benutzen) oder wenn, dann sind diese nach dem Wasserfall-Modell vorzutäuschen integriert in den Modulen enthalten weil das ist aber auch nicht Sinn dieser Arbeit. Einziehen von zusätzlichen Abstraktionsstu-Die unteren Stufen wurden depth-first fen wegen des hohen Aufwandes nicht sinndurchlaufen. Module entstanden und wirkten voll erschien. Dafür das es flacher ist, hängen sich auf die Planungen der anschließend imallerdings die meisten Dinge voneinander ab plementierten Module aus. Ein Grund dürfte weil es nur ein zentrales, übergreifendes Dadarin liegen das die Funktionen der Modutenobjekt, die Metadaten zu einer Arbeit, gibt. le eng zusammenhängen und keine unterge-ordneten Zwischenmodule beispielsweise zur Die Planung größerer System erfolgt oft Datenhaltung existieren. mit Hilfsmitteln in denen beispielsweise die Datenmodelle oder auch schon Objekte, Klas-Es kann und soll hier nicht jede Funktisen und Funktionen so beschrieben werden on beschrieben und auf jedes Detail eingedas bei Verwendung geeigneter Tools (z. gangen werden. Details werden teilweise er-B. UML) direkt Datenbankschemata (Men-wähnt, oft aber als „Handwerk“ eingestuft ge von u. U. verknüpften SQL-Tabellen) oder und daher nicht darauf eingegangen. Auch ist eine genaue Einstufung wann es entschieden leere Klassen erzeugt welche dann „nur“ noch ausgefüllt werden müssen. So ein Entwurf wurde und ob es in die Implementierung gelohnt eher zur Strukturierung großer Systeme hört Geschmackssache. Weiterhin wurde ei-oder wenn man mit den Tools wirklich schnell ne subjektive Auswahl getroffen: Dinge wie und somit effizient zum Ziel kommt. Bei PCA Benutzerführung und Design werden wenig wurde so nicht vorgegangen weil mir keine oder nicht angesprochen. Wartung des Systemes und Wartbarkeit der Quelltexte kommen passenden Werkzeuge bekannt waren und diese auch erst erlernt hätten werden müssen um nur gelegentlich vor. Weitere Dinge werden
39
5 Konkrete Planung
nicht erwähnt. dbmx.GDBM_File benannt. Um gleichzei-Der Quelltext beschreibt was gemacht wur-tig während der Erzeugung der DBM-Dateien de, das Programmierhandbuch [pcaph] (80 weiterhin suchen zu können ist ein mehr-Seiten) was die Teile tun, das Verwalterhand-stufiges Erzeugen- und Umbenennen-System buch [pcavh] (20 Seiten) wie das System zu nötig, weil manche DBM-Systeme ihre Daverwalten ist und die Webseiten wie es zu be-ten oft zweiteilig abgelegen (.pag- und .dirnutzten ist. In einer Architektur-Beschreibung Dateien). So etwas ist wie Transaktionen bei welche die vor der Programmierung festleg-Datenbanken durchzuführen und wurde folbaren Dinge beschreibt ist zu begründen was gendermaßen realisiert: Die Dateien werden man ansonsten hätte tun können und warum als foo.new angelegt, dann werden die alten man die aktuelle Wahl getroffen hat. Bei ande-Dateien von foo auf foo.old umbenannt ren Systemen ist das vielleicht einfacher weil und schlussendlich foo.new auf foo umbediese kein so breitgefächertes Funktionsspek-nannt.“.
Solche Entscheidungen waren überall zu trum anbieten oder nicht so viele andere Systeme brauchen oder es einfach keine Alterna-treffen und wären oft nicht kürzer als gerade tiven gab. eben zu dokumentieren. In diesem Fall mischt Alternativen könnten genauer erläutert wer-es Architektur und Implementierung, allerden. Entscheidungen die aufgrund von Erfah-dings sind die Probleme des Überschreibens rung (also Nachdenken in der Vergangenheit) potentiell noch benutzter Dateien allgemein und würden daher auch in die Architektur pasin fünf Minuten entschieden wurden, würden bei Darstellung in dieser Arbeit seitenweise sen. Deswegen wurde parallele Ausführung
Erläuterungen erfordern wenn man es korrekt machen wollte da schließlich jede Entscheidung zu begründen ist. Alternativ könnte man sich die Arbeit ein-gens nicht daraus das ein Perl-Motto lautet fach machen und mit vermeintlichen Sach-„There’s more than one way to do it“. Dieses zwängen die Diskussion verkürzen: „Es war Argument würde die Implementierung betrefnur gdbm vorhanden, also musste das genutzt fen.
werden“. Korrekterweise müsste es aber hei-Im Gegensatz zu einzelnen Modulen oder ßen: „Es war nur gdbm vorhanden. bsdDB einzelnen Java-Klassen wo es oft nur darum hätte selber installiert werden müssen. Die geht, wer welche Information von wem be-Vorteile und Unterschiede von bsdDB und kommt und in welcher Form wo hinschiebt gdbm sind folgende ...“ oder noch korrek-und was berechnet, ist bei Entwurf und Impleter „Unter Windows wurde bsdDB benutzt, mentierung von Internet-Systemen auch stänunter dem AVMZ-Server gdbm weil es vor-dig an Sicherheit zu denken worauf lang und handen war. Die Unterschiede sind folgen-doch nicht umfassend in 5.13 (S. 57) eingegangen wird. Das CGI stateless ist erfordert de... Das Modul suche.pm kann selber erkennen welches System vorhanden ist und zusätzliche oder andere Überlegungen als bei
wählt danach die Datenbank aus. Um Probleme durch Zugriff zweier unterschiedlicher DBM-Systeme auf Dateien gleichen Namens zu vermeiden (... Erklärung was dann passie-Implementierung (6, S. 69) aufgeführt werden können werden aber hier dargestellt wenn ren würde ...), werden die DBM-Dateien mit ihrem DBM-System z. B.
search_titel.
es sinnvoll erschien. Auch sind die Grenzen
40
5 Konkrete Planung
zur Implementierung im Gegensatz zu den Die Abstracts werden als .txt-Dateien zugroßen Entscheidungen aus 4 (S. 11) fließend. sammen im selben Ordner wie die Dokumen-Teilweise werden auch nur direkt die Ent-te zu einer Arbeit gehalten. Die anderen Metascheidungen vorgestellt und weniger ausführ-daten werden pro Arbeit in je einer Text-Datei lich begründet wie in den vorhergehenden Ab-gehalten um daraus bei Bedarf die HTMLschnitten. Seiten zu erzeugen. Eine Zeile beginnt mit dem Key der durch Die Reihenfolge ist folgendermaßen: Zueinen Doppelpunkt abgeschlossen wird. Alerst generelle Dinge die für die danach erklärles danach bis zum Zeilenende ist der Value. te Anmeldung und Verwaltung nötig waren. Schlüssel dürfen keine Doppelpunkte enthal-Anschließend kommen die Suchfunktionen in ten und mehrzeilige Werte sind nicht möglich. den Metadaten und als Volltext und danach Das Format ist primitiv aber reicht für die vorein paar Worte zum Newsletter. Danach kom-handenen Daten vollkommen aus. men wieder allgemeine Dinge die von den
konkreten Planungen abhingen und alle Be-Tabelle 5.1 (S. 42) abgebildet. reiche betrafen: Backups, Vitalitätsüberprüfung und ein großes Kapitel über Sicherheit. jedem Autor eine Email-Adresse abgelegt Das Geplante wird gelegentlich durch werden kann und man über die Nummern
Screenshots
greifbarer gemacht. Die Bilder die entsprechenden Paare zusammenbringen werden aber meist nicht explizit besprochen. kann. Auch wird damit die Reihenfolge der Ein weiterer Grund für die Bilder in die-Nennung festgelegt da dies manchem Ausem Kapitel war, das im Implementierungs-tor vielleicht wichtig erscheint. Das System kapitel (6, S. 69) die meisten Systemfunktiowurde zusätzlich zu den Planungen so ernen nicht besprochen werden. Die Screensweitert das auch HTTP:-Adressen (für Fachhots sind aus einer Testinstallation und dagruppen oder Herausgeber) und Bemerkunher inhaltlich nicht immer mit der öffentlichen gen („emeritiert“) nicht von den Anmeldern PCA-Installation [pca] identisch. aber den Verwaltern dort untergebracht und in den HTML-Seiten passend angezeigt werden
5.1 Das Datenmodell können.
Bei Verwendung einer SQL-Datenbank (als Zu speichern waren Usernamen und Passwor-Ergebnis einer klassischen Entity-Relationte für die Verwalter, Konfigurationsdaten um ship-Modellierung) wären Autoren in einer nicht alles im Quelltext der Skripte stehen zu separaten Tabelle abgelegt und über eine Verhaben und die Dokumente und Metadaten für knüpfungstabelle mit der Tabelle für die Medie Arbeiten. Nur letztere werden hier behantadaten verbunden worden. Diese Autoren delt. hätten dort nur einmal vorkommen brauchen so das Namensänderungen in der Autoren-Die zu speichernden Metadaten waren: Au-torennamen und deren Email-Adressen, Ti-Tabellen sich beim nächsten Ausrechnen auf tel, Jahr, Seitenzahl, Keywords, Bemerkungen alle Listen ausgewirkt hätten. Das ist aber und der Text der Abstracts. Es werden auch bei wissenschaftlichen Arbeiten wohl unübder Name und die Email-Adresse des Anmel-lich (in einer Literaturstelle landen genau die ders abgefragt. Dieser dient der Verwaltung Daten die auf dem Titelblatt der Arbeit stehen) und es handelt sich nicht um Kundenals Kontaktperson für Nachfragen und wird nicht auf den Webseiten aufgeführt. datenbanken wo Adressänderungen möglichst
41
5 Konkrete Planung
autor1:Ingo Plag
autor1_email:plag@anglistik.uni-siegen.de autor2:Christian Uffmann autor2_email:uffmann@mailer.uni-marburg.de jahr:2000-11
keywords:epenthesis,paragoge,restructuring,syllable kommentar:Paper presented at the Creole Conference, Regensburg, June 1998 seitenzahl:29 submitter:Ingo Plag submitter_email:plag@anglistik.uni-siegen.de
titel:Phonological restructuring in creole. The development of paragoge in Sranan
Tabelle 5.1: Metadaten zu PCA-Nummer 1
sofort und überall und daher zentral für alle ist zu Test-Zwecken auch per HTTP zugreifbar. In Verbindung mit weiterer Argumentatizugreifenden Systeme durchgeführt werden. on ist das keine Sicherheitslücke aber es könn-Nachteilig könnte das werden, wenn Aute auch außerhalb von htdocs/ liegen und toren ihre Email-Adressen ändern und diese wäre dann nicht mehr von außen zugreifbar. in jeder Arbeit dieses Autors zu ändern sind. Momentan ist das noch kein Problem. Neue Anmeldungen, Abstracts und Dokumente werden in intern/incoming/ abgelegt und mit den Verwaltungsfunktionen
5.2 Die
(5.3, S. 42) dann in die entsprechenden Ordnern unter doc/ verschoben. Verzeichnisstruktur
Aus der Verzeichnisstruktur leitet sich einiges
5.3 Vorlagen
für die Implementierung ab. Daher wird diese hier aufgeführt. Auf eine Begründung der Da der Betreiber das Aussehen der Seiten än-Entscheidung sowie deren Vor- und Nachteile dern können wollte wurde ein Vorlagensystem wird verzichtet. Alle Pfade sind in einer zen(Templating-System) entwickelt. Dabei wertralen Konfigurationsdatei abgelegt und änden die Vorlagen untersucht und bestimmte derbar.
Kommandos 1 . durch konkrete Daten ersetzt. Genaueres Erläuterungen stehen im PCA-Ein Problem ergab sich durch Auflistungen Verwalterhandbuch [pcavh]. Wichtige Vermehrerer gleichartiger Elemente und speziell zeichnisse sind in Tabelle 5.2 (S. 43) aufgeden Autoren deren Zahl nicht beschränkt wurführt. de. Verzeichnisse enden im Folgenden mit ’/’ Vorhandene Templating-System waren mir um sie von Dateien zu unterscheiden. Unbei der Entscheidung nicht bekannt und hater htdocs/ liegen die statischen (mit der ben (nach einer oberflächlichen Betrachtung) Hand erzeugten) Webseiten und die Einstiegsdas Problem eher für ausgebildete Persoseite. Pro Arbeit existiert unter doc/ ein Ordner der als Namen die jeweilige intern/
42
5 Konkrete Planung
$HOME\webroot\htdocs
| | | | | | | | | | | | | | | |
\usr .................................. Fremde Programme
Tabelle 5.2: Verzeichnisstruktur von PCA
nen zu sein. Die Systeme sind sehr mäch-beispielsweise dem Formular um eine Arbeit tig und erlauben Kontrollstrukturen wie if-endgültig anzumelden gelöscht. Dazu müssen then-else, case-Anweisungen oder eingebau-Blöcke beliebig tief geschachtelt Unterblöcke ten Programmcode. Das hätte eher zur Verwir-enthalten können.
rung geführt und das Risiko das wichtige Ele-Durch Verwendung von Iteration ließ sich mente versehentlich im Webseiten-Editor hindas Ziel erreichen, nirgendwo auf Arrays feswegeditiert werden erhöht. Auch finden Änter Länge festgelegt zu sein. Ein Nachteil ist, derungen am Aussehen der Seiten nicht so das nicht sofort erkennbar wird, wie es mit häufig statt, als das das Erlernen einer kommehreren Elementen aussieht. plexen Beschreibungssprache lohnt weil die
Ein Beispiel ist [BLOCK
Kenntnisse über zu beachtende Details beim
AUTOR TRENNER=’,
nächsten Mal nicht mehr vorhanden wären.
Eine ’]$(autor_link)[/BLOCK]. Funktion iteriert über jeden Autor einer Genauer ist das System im PCA-Arbeit, setzt den Wert autor_link und Programmierhandbuch [pcaph] beschrieben. trennt die Blöcke durch den Trenner ’, ’. Es gibt Variablen und Blöcke. Die Blö-
cke werden anhand ihrer Namen aus den
[BLOCK KEIN_ABSTRACT]No
Vorlagen herausgeholt und darin dann die
Abstract,
entsprechenden Variablen durch aktuelle FILE TRENNER=’, ’]$(file_link) ($(file_size))[/BLOCK] ist die Zeile Werte ersetzt. Manchmal sind die Blöcke auch nur Texte der Form „Sie haben eine für die Dokumente zu einer Arbeit. Hier Email angegeben aber keinen Autorennamen wird über die Liste der Dokumente iteriert. dafür“. Wenn die Anmeldungen überprüft Der Block KEIN_ABSTRACT wird vom werden und Fehler auftreten, werden dann Programm aktiv gelöscht wenn ein Abstract die Blöcke mit den entsprechenden Fehlern existiert, danach kommt der FILE-Block in stehen gelassen und die anderen Blöcke mit dem der Link auf die Datei und deren Größe
43
5 Konkrete Planung
angezeigt werden. Daran sieht man auch das werden die Seiten an seine Wünsche anzupas- file_link denDateinamen und die URL sen.
darauf enthalten muss was von den Skripten erledigt wird. Dies durchbricht die Trennung
5.4 Anmeldung von Darstellung und Berechnung aber so etwas beispielsweise durch Makros oder Kontrollflüsse in den Vorlagen zu ermögli-Die Anmeldung sollte für die Besucher selbstchen hätte das Verständnis erschwert und die erklärend sein. Abstracts können direkt in erwähnten Risiken durch HTML-Editoren einem Formular eingegeben werden. Dokumit sich gebracht. Heutzutage sind HTML-mente können über ein Formular hochgela-Editoren schlauer als früher und lassen wohl den werden. Die Metadaten werden in einem
die Finger von allem was sie nicht selber mehrstufigen Prozess erfasst (Abb. 5.2, S. 45 erzeugt haben. In den Anfangstagen von PHP und Abb. 5.1, S. 45) Nach Ausfüllen der Da-und ähnlichen Sprachen war dem aber nicht ten werden diese überprüft. Treten Fehler auf, so und daher stammen diese Befürchtungen. werden diese ausgegeben und im (selben) For-Nachteile sind momentan das Variablen mular können die Daten korrigiert werden. zwar beliebig oft in einer Vorlage vorkommen Auch wenn das trivial klingt ist es zwar eindürfen, aber Blöcke gleichen Namens nicht. fach, die Daten auf technische „Korrektheit“ Das wäre nützlich, um dieselbe Information zu überprüfen, aber alle Fälle mit vernünftigen Fehlermeldungen zu versehen damit die an verschiedenen Stellen anzuzeigen. Dazu müsste das System umgebaut werden weil es Anmelder auch wissen was sie falsch gemacht darauf basiert das man sich einen Block ei-haben und die Anmeldung nicht abbrechen nes bestimmten Namens herausholt und nur wird schnell aufwendig. Treten keine Fehler noch darauf arbeitet (und vielleicht dort noch auf, so wird das Korrekturformular weitereinmal Blöcke herausholt usw.) und anschlie-hin angeboten, darunter oder darüber folgt jeßend die Texte vor und hinter dem Block wie-doch eine textuelle Zusammenfassung der Dader davor bzw. dahinter hängt und vielleicht ten und ein Formular das nur aus versteckten andere Blöcke dort herausholt. (hidden) KV-Paaren besteht und ein endgül-In einer Vorlage lassen sich auch mehrere tiges Einstellen erlaubt. Das endgültige Ab-Schritte eines Ablaufes halten wie Abb. 5.1 senden und Korrigieren durch zwei Formu-
(S. 45) zeigt. Jede Ausgabeseite enthält Teile lare zu trennen erschien sinnvoll damit noch die auch in der vorhergehenden oder nachfol-einmal ein Blick auf die Daten geworfen wergenden Seite vorkommen. Die Reihenfolge in den kann und nicht Änderungen und endgülder Vorlage der Abbildung ist Absicht und er-tiges Einstellen gleichzeitig stattfinden. Bemöglicht es, das diejenigen Teile(Blöcke) die merkenswert ist noch das im Korrekturforvon einem Ausgabefenster (Zustand) nicht ge-mular immer fünf freie Autorenfelder angebraucht werden, gelöscht und die nötigen Blö-boten werden. Das erlaubt sukzessives Aufcke mit den entsprechenden Daten ausgefüllt stocken der eingetragenen Autoren auch für werden. Das vermeidet Redundanz beim Än-größere Arbeiten. Komplette Konferenzbändern der Formulare. Aus entwicklungshistori-de mit hundert Autoren bestehend aus 20 Kaschen Gründen ist das bei PCA nicht vollstän-piteln sind problemlos bei PCA anzumelden dig optimiert worden. und hochzuladen. Das hundert Autoren vielleicht seltsam aussehen ist ein anderes Pro-Das System ist recht einfach konnte vom Verwalter aber ohne Verluste dazu benutzt blem aber speziell bei der Zahl der Autoren
44
und der Dokumente sowie deren Dateinamen Anmeldungen, Abstracts und Dateien mög-
wurden keine Einschränkungen gemacht (4.2, S. 13).
Nach der Anmeldung der Metadaten er-Die Metadaten vorhandener Arbeiten könhalten der Anmelder und die Verwalter eine nen editiert werden. Dabei werden Fehleinga-Email und die Verwalter können anfangen, ben mit Warnungen versehen, aber absichtlich die Arbeit zu überprüfen und einzustellen. toleriert um keine Einschränkungen zu ma-Bei Abstracts gibt es keine Email aber beim chen.
Hochladen von Dateien wird eine Email ver-Das Verwaltungs-System kann auch ohne
sendet damit Missbrauch (Hochladen illega-FTP benutzt werden aber es ist möglich und
ler Daten) und Fehler beim Hochlade-Prozess üblich die Arbeiten per FTP herunterzuladen,
(Dateien mit 0 Byte Größe) sofort bemerkt zu überprüfen und mit FTP an den endgülti-
werden können. gen Platz zu schieben. Das Einstellen erfolgt zweistufig: Erst wird ein Ordner zu der PCA-Nummer erzeugt. Eine dort liegende Markie-
5.5Verwaltung
rungsdatei sorgt für eine exponierte Anzeige der Arbeit in den Verwaltungsfenstern (IN_ Zur Verwaltung wird ein einfaches und nicht WORK in Abb. 5.3, S. 46) bis die Arbeit eingestellt wird. Sind alle Dokumente hochladen, konfigurierbares Interface angeboten in dem Zugriff auf die aktuell noch nicht eingestellten kann die Arbeit endgültig eingestellt werden.
45
5 Konkrete Planung
Abbildung 5.3: Verwaltung Hauptfenster
Dabei wird eine Email (auch eine Vorlage) mit ist sofort zugreifbar. Hierbei wird IN_WORK den Daten der Arbeit und dem Abstract an nicht beachtet.
alle angemeldeten Newsletter-Mitglieder ver-Für das Löschen oder Ersetzen von Arsendet. Der Versand der Email zu einem be-beiten durch neue Dokumente werden keine stimmten Milestone und optische Erinnerung technischen Vorgaben gemacht. Es gibt unter an die Verwalter sind die beiden Gründe für anderen folgende Vorschläge: die Markierung als IN_WORK. Eine Auswir-
kung auf die anderen Teile des Systems (Daten anbieten, durchsuchen, herunterladen) hat diese Datei somit nicht was beabsichtigt ist. Daten die noch versteckt werden sollen können in den Eingangsverzeichnissen gehalten und bearbeitet werden. Was eingestellt wurde,
der Konfigurationsdaten, speziell um Email-Adressen oder die Namen von Vorlagen ändern zu können. Zu jedem Feld kann ein Hilfetext hinterlegt werden. Weiterhin können die Adressen für den Newsletter bearbeitet werden.
hat existiert nicht. Von geänderten Dateien
5 Konkrete Planung
ten die Zugriffsrechte passend und aktiv ge-Keywords und die Abstract-Texte der Daten. setzt werden damit der CGI-User die entspre-Die Dateinamen, Seitenzahl, Jahresangaben chenden Daten auch noch schreiben kann. und Bemerkungen sind nicht durchsuchbar. Die Verwaltungsfunktionen sind mit reich-Einfache Systeme bieten nur vorgefertiglich Bildern auf 20 Seiten im Verwalterhandte Suchanfragen an, wo dann nur die zu subuch [pcavh] beschrieben. chenden Worte eingetragen (oder freigelas-Ein Hilfesystem wie in Applikationen übsen) werden können. Beispiel: Produkte bei lich ist wurde nicht eingebaut. Balloons oder Online-Händlern.
Informationen in der Statusleiste als kontext-Bessere Suchsysteme haben zwei Stufen: abhängige Hilfe anzubieten, wäre möglich ge-Es wird in irgendetwas gesucht und die wesen aber aus Aufwandsgründen nicht rea-Ergebnismengen können über eine „Sprache“ lisiert. Stattdessen wurden Informationen die verbunden werden. Die bei Altavista und potentiell vergessen werden als normaler Text anderen Suchmaschinen übliche Suchsprache in den Formularen untergebracht. mit ’+’ und ’-’ hat für beispielsweise +a +b +c -d -e -f g h i die Semantik
a AND b AND c AND (NOT d) AND
5.6 Auflisten und
(NOT e) AND (NOT f) AND ( g OR h OR i ). Damit lässt sich nicht alles aus- Anbietender Arbeiten drücken was hier aber nicht bewiesen wird 2 . Also wurde beschlossen AND, OR und NOT Die Arbeiten werden auf einer langen Lissowie Klammern zu implementieren auch te mit allen Arbeiten als Komplettverzeichnis wenn dies mit erhöhtem Aufwand verbunden sowie kleinen Listen in von der Verwaltung ist. Genaueres sowie die Grammatik finden frei wählbarer Stückelung angeboten (Abb.
bzw. genau ein Zeichen anstelle der bei SQL cken von PCA-5 erreicht man dann den Zuüblichen ’%’ und ’_’ festgelegt. Die einzige stand wie er in Abb. 5.6 (S. 50) abgebildet ist. Besonderheit bei der Suchsprache besteht dar-Ausgerechnet werden diese Listen und Seiin das ’*’ auf einzelnen Worten arbeitet und ten durch manuellen Anstoß in der Verwal’**’ über Worte hinweg. ’Mac*Gyver’ findet tungsoberfläche. Dabei werden alle Seiten ’MacGyver‘ aber nicht ’Mac Gyver’ weil letzkomplett neu ausgerechnet. Ab 10,000 (zehnteres zwei Worte sind. ’Mac**Gyver’ hingetausend) Arbeiten wäre deutlich anzuraten, gen findet ’Mac Gyver‘ aber auch ’C. Mac nur die geänderten Teile neu auszurechnen. Leod, A. Gyver’. Bis 1000 Arbeiten lohnt der Aufwand einer In 6.4 (S. 73) wird der Umbau der SuchanÄnderung nicht.
fragen in konkrete reguläre Ausdrücke für Perl und das Suchsystem genauer dargelegt.
5.7 Suchfunktion
Auf den Metadaten zu den Arbeiten sollte gesucht und die passenden Arbeiten angezeigt werden können. Durchsucht werden die Titel, Autorennamen und deren Email-Adressen,
48
Reguläre Ausdrücke werden den Besuchern nicht angeboten auch wenn dies einfacher gewesen wäre. ’*’ und ’?’ sind gängige Wildcards und stattdessen die regulären Formulierungen ’.’ bzw. ’.*’ zu verlangen dürfte bei Besuchern die üblicherweise ungern Anleitungen lesen zu Verwirrung und damit Ablehnung des Systems führen wie meine Erfahrungen mit der Suchmaschine von cheatz.de zeigen.
von vielen Besuchern nur ungern benutzt. Vielleicht aus Unkenntnis über die mächtigen Möglichkeiten, damit Daten zu finden, vielleicht aber auch wegen schlechter Erfahrungen mit nicht funktionierenden Suchfunktionen vieler Webseiten.
Daher sollten die Daten auch immer gut es gibt einige freie Suchmaschinen. [morüber die HTML-Seiten erreichbar sein. gan2001] ist ein auch an anderen Stellen häu-
49
figer genannter Bericht der nicht all zu alt ist und einige Systeme vorstellt. Da diese Systeme ständig weiterentwickelt werden sind vergleichende Artikel sehr schnell (innerhalb von ein bis zwei Jahren) veraltet. In der Praxis wird meist das System benutzt das gerade bei der aktuellen Linuxdistribution dabei war, in der letzten iX besprochen wurde oder das letztes Mal benutzt wurde.
schiedene Dimensionen für den Einsatzzweck zu unterscheiden wie in Tabelle 5.3 (S. 52) angerissen wird.
ten sammeln, Daten indizieren und darin suchen. Die Anforderungen sind vielfältig. Ei- ne häufige Anwendung für einzelne Perso-
meinen Vorstellungen von Sicherheit passte. Swish-E ist einer der beiden Nachfolger von SWISH welches wohl nicht mehr existiert. Der andere Nachfolger ist Swish++ in C++ (Swish-E ist in C) welches den Vorteil böte, Indizes inkrementell zu erweitern.
5 Konkrete Planung
nung behelfen. Das Durchsuchen mehrerer Even if you can be sure that any user supplied data is safe, this piped open Indizes ist bei Swish-E und vielen anderen still passes the command parameters Suchsystemen üblich. through the shell. If nothing else, it’s Ein Herausstellungsmerkmal von Swish- justan extra unnecessary step to run- Eist, das zu Dokumenten nicht nur die
ning Swish-e. URL sondern ein selber editierbarer Satz von Therefore, the recommended approach Properties gespeichert werden kann, welcher is to fork and exec swish-e directly wi- auchgezielt in den Suchanfragen benutzt wer- thoutpassing through the shell. This den kann. Properties werden meist für Meta- processis described in the perl man pa- datenbenutzt und können Autoren, Titel und
ge perlipc under the appropriate hea- weitereInformationen enthalten.
Type: perldoc perlipc
If all this sounds complicated you may
wish to use a Perl module that does all the hard work for you.
Im Zitat wird Code-Injection beschrieben worauf 5.13.1 (S. 57) noch einmal eingeht. Für PCA wurde das Modul das die ganze harte Arbeit macht benutzt. Bei Swish-E kann ein Index nur in einem Rutsch ausgerechnet werden. Wenn das aufgrund der Datenmengen problematisch ist kann man sich mit einem Hauptindex (der ge-Die Flexibilität und der erzwungene Konlegentlich ausgerechnet wird) und häufiger erzeugten Hilfsindizes sowie geschickter Pla-figurationsaufwand sind auch bei SAP und
52
5 Konkrete Planung
anderen Systemen vonnöten und ein häufiger problem durch Aufruf externer Programme Grund für das Scheitern der Einführung sol-durch Code-Injection (5.13.1, S. 57). Das cher Systeme. Ob das ein Vorteil ist mag also Konfigurieren der Indizierung ist mühselig dahingestellt sein. Der Aufwand ist „nur“ für und insgesamt kostet die Installation verhälteine Suchmaschine die einmal installiert und nismäßig viel Zeit was durch vernünftigedann „für immer“ läuft als sehr hoch einzu-re Programmierung (durch die Webglimpseschätzen. Der hohe Konfigurations-Aufwand Programmierer) hätte vermieden werden köngilt für jedes Indexer-System. Einfacher ist nen.
es, wenn bei der Linux-Distribution schon ein Andere Indexersysteme haben Vorteile bei-System vorhanden ist, welches ohne Arbeit spielsweise beim selektiveren Auswählen benutzt werden kann. Scheitern tut dies dann dessen was von externen Webseiten indiziert daran das es Webseiten gibt, die nicht statisch werden soll.
vorliegen sondern aus Datenbanken erzeugt Jedes System behauptet von sich, schnell werden (Personal-Informationen, Produktzu sein. Da einige Systeme stetig weiter-Informationen) oder Dateien in den HTMLentwickelt werden und 32 MByte vor Jahre Verzeichnissen liegen, die nicht durchsucht noch viel waren, heute aber 256 MByte keine werden sollen weil sie von außen nur durch nennenswerte Menge an Hauptspeicher sind, Eingabe eines Passwortes erreichbar sind. Das sind Einstufungen bezüglich des benötigten heißt das der Inhalt des durchsuchten Datei-Hauptspeichers mit Vorsicht zu genießen und systems nicht damit übereinstimmt was in der besser nicht in die Entscheidung über ein Sys-Suchfunktion angeboten werden soll und das tem einzubeziehen. Wie viel Plattenplatz die erfordert Konfigurationsaufwand und Know--Indizes brauchen ist hingegen deutlich interhow. essanter und könnte für manche Systeme ein Häufig wird Glimpse genannt. Es ist ein KO-Kriterium sein. Bei PCA spielte das keine Text-Indizierer der als Basis für beispielswei-Rolle.
se Harvest dient (vielleicht inzwischen nicht Um Dokumente zu durchsuchen welche mehr). Das System ist inzwischen kommernicht als Text-Strom vorliegen (HTML, .txt) ziell aber für akademischen Gebrauch kosmüssen diese gefiltert und als Wort-Strom tenlos. Trotzdem wurde es als unfreie Softdem Indexer zugeführt werden. Als Filter für ware eingestuft und deswegen nur als letzbeispielsweise PDF und Word gibt es nur wete Möglichkeit in Betracht gezogen. Da ich nige Alternativen. Die für PCA benutzten Proschon einmal Webglimpse installieren musste
gramme finden sich in Tabelle 6.6 (S. 80). eine kurze Bewertung: Glimpse ist gut und ein reiner Kommandozeilen-Indexer. Webglimp-Google gewöhnt, den Kontext der Trefferse ist ein Satz von Skripten welche Glimpse Worte angezeigt zu bekommen. Swish-E und zum Indizieren und Durchsuchen von Webdie anderen Suchmaschinen wissen zwar häuseiten nutzen und macht einen schnell zufig, an welcher Stelle ein Wort vorkommt, sammengeschusterten Eindruck. Ein herauskönnen aber die Texte nicht wieder daraus herstellen
3
. Als Trick werden beispielsweise ragendes Merkmal von Glimpse ist die fehlertolerante Suche um beispielsweise bis zu
drei Tippfehler in einer Suchanfrage zu erlauben. Die Suchfunktion von Webglimpse ist von der Funktionalität in Ordnung, ist aber ein Paradebeispiel für das Sicherheits-
53
5 Konkrete Planung
die ersten 10,000 Byte jedes Textes als Attri-Auf Passworte oder mehrstufige Anmeldebut gespeichert. Für die Texte die der Suchan-systeme wurde verzichtet. Bei großen Sites frage entsprechen werden diese 10,000 Byte wäre das nötig um Missbrauch zu minimiedann vom Suchskript „mit der Hand“ und ren und auch möglichst nur korrekte Emailnicht etwa dem Indexer-System nach den Adressen im Bestand zu haben um die Zahl Suchworten durchsucht und diese Worte und der Rückläufer klein zu halten. deren Kontext dann dargestellt. Wie im vorigen Abschnitt beschrieben, besteht die Aufgabe des Newsletters darin, die Besonders überzeugen kann das nicht. Die Interessenten über neue Arbeiten zu informie-Zahl der Fundstellen ist üblicherweise klein ren. Dazu wird eine Vorlage mit allen Metada-oder wird absichtlich beschränkt („nur die ten inklusive des Abstract-Textes gefüllt und ersten 20 Treffer“). Für diese 20 Dokumendann an die Empfänger versandt. te müssen dann die Kontexte gesucht und Es gibt folgende Arten von Mailnicht ein Kontext pro Wort sondern besser die Empfängern: Kontexte gesucht werden in denen gemein-To:-Empfänger bekommen die Email und das same Such-Worte nahe beieinander vorkom-To:-Feld steht offen in jeder Email. men. Dazu sind keine Properties im Swish-E-Cc (Carbon Copy): Diese Empfänger bekom-Index zu speichern sondern es könnten auch men Kopien der Email und das Feld ist für Text-Dateien mit den kompletten Inhalten zujeden Empfänger ersichtlich. Damit kriegt greifbar auf der Platte liegen. Die Word- oder jeder mit das man dem Chef auch eine Kopie PDF-Dokumente on-the-fly bei jeder Suche in geschickt hat und plötzlich wird doch mal Wortströme umzuwandeln ist auch für schnelfleißig am Projekt gearbeitet. le Server zu aufwendig. Bcc (Blind Carbon Copy): Diese Empfänger Bei PCA werden keine Kontexte angezeigt. bekommen auch Kopien der Email zugesandt. Als Folge sieht die Volltextsuche etwas ärm-Zu sehen bekommen die Bcc:-Empfänger lich aus da nur Links auf die Trefferdokumenaber nur das To:- und Cc:-Feld, nicht jete ohne Kontext ausgegeben werden. doch die anderen Bcc:-Empfänger. Nur das Programm welches die Email erzeugt und
das verteilende Programm (bei PCA ist das
5.9 Newsletter
sendmail) kennen das Bcc:-Feld. Beim Absenden werden alle Empfänger Über die PCA-Webseiten kann sich jeder des PCA-Newsletters im Bcc:-Feld eingeam Newsletter anmelden und abmelden. Um tragen. Dadurch reicht es, einen Emailfälschliches An- und Abmelden zwar nicht text zu erzeugen, welcher „sendmail“ nur zu verhindern aber dem Inhaber der Emaileinmal übergeben werden muss und von Adresse bemerkbar zu machen bekommt die„sendmail“ dann an die unterschiedlichen ser in beiden Fällen eine Hinweis-Email. Es Empfänger verteilt wird. Das in Universitäten werden nur die Email-Adressen erfasst. Ge-und in anderen Umgebungen übliche offene naue persönliche Daten um gezielt Werbung Cc: wurde absichtlich nicht gewählt weil dann zu versenden sind bei PCA nicht erforderlich. nur einer der Empfänger sich einen Emailvirus einzufangen braucht und diesen dann
teiname des Dokumentes und vielleicht noch die
automatisch an alle Adressen aus allen Sei- Position)zu liefern. Die andere Richtung („gib mir
nen Emails (also auch den Newsletter-Emails) die 10 Worte vor und hinter den Fundstellen für
sendet. Auch braucht keiner zu wissen wer „CGI“) ist vielleicht nicht möglich.
54
5 Konkrete Planung
sonst noch auf dem Newsletter steht und das Nachmittag vereinzelt Leute melden wenn erlaubt dann, privatere Adressen einzutragen die Suchmaschine seit Mitternacht ausgefalals beispielsweise die offizielle Universitäts-len ist. Das bedeutet das man selber die meisadresse. Auch sollte der Inhalt einer Email ten Fehler finden muss weil die Besucher etnicht kürzer sein als die Liste der Empfänger was träge diesbezüglich sind. die im Header-Bereich der Email. Ein Nach-Die Rückgabewerte von Funktionen wurteil ist, das im To:-Feld eine andere Adresse den (wenn es relevant war) ausgewertet und steht als die Adresse des Empfängers was für bei Fehlern („Datei ’foo.txt’ kann nicht gelemanche Spamfilter ein Kriterium für Spam ist. sen werden“) passende Fehlermeldungen er-Um To: für die Empfänger zu benutzen zeugt. Alle Fehlerausgaben werden mitgemüsste pro Empfänger eine Mail generiert loggt um gelegentlich in den Logfiles zu se-und sendmail übergeben werden wenn die hen ob und wenn ja, was bei den Besuchern Empfänger nicht alle öffentlich oder zusamschiefgelaufen ist. Inzwischen gibt es dann men in To: oder Cc: stehen sollen. Das dauauch Mails an den Betreiber und mich da ert lange und würde damit erfordern das das praktisch nie eine Email hereinkommt und das Absenden nicht vom CGI aus erfolgt damit momentan keine Belastung darstellt. man nicht am Browser auf das Ende des Mail-Da das nur einen Teil der Fehler betrifft, versandes warten muss. Dazu ließe sich noch nämlich die vom System selbst erkannten mehr schreiben aber kurz gesagt: Genau einen oder fatalen Fehler, ist es trotzdem unerläss-Mailtext zu erzeugen und „sendmail“ die lich, gelegentlich selber den eigenen Server Arbeit machen zu lassen ist deutlich schnelzu besuchen und alles auszuprobieren. Inler, zuverlässiger und einfacher. Also wurde teressant wäre auch, alle oder selektiv die das Bcc:-Feld benutzt. den Besuchern ausgegebenen Seiten mitzuspeichern um zu sehen wie beispielsweise die
Suchmaschine benutzt wird und ob sie so
5.10 Korrektheit und
funktioniert das der Besucher etwas davon hat oder vielleicht niemand auch nur einen Tref- Fehler- fermit seinen Suchanfragen erzielt. Meist be- Benachrichtigung
schränkt man sich aber auf Bewegungsprofile und noch häufiger nur auf das Auswerten von Das betrifft die Planungen der Rahmenbedin-Logfiles mit Statistiktools (webalizer [webaligungen der Programmierung und nicht das zer]) was aber auch nur ein Teil einer Gesamtkonkrete Programmieren. Deswegen ist wird konzeption ist, dem Besucher eine gut zu bees hier aufgeführt. Es wurde so programnutzende Site anzubieten die er gerne besucht miert und geplant das keine Inkonsistenzen und als hilfreiches Instrument versteht. entstehen sollten. Oft wurden Fehlermeldungen ausgegeben wenn Konsistenzbedingungen nicht erfüllt sind. Anders gesagt: Es wird 5.11 Vitalitäts-
oft„ängstlich“ und vorsichtig programmiert
Überprüfung
und beispielsweise geschaut ob die Verzeichnisse in die man etwas schieben will auch vor-handen sind. Dabei geht es darum das man mitbekommen Erfahrungen mit cheatz.de zeigen das auch will, das der Server nicht oder nicht mehr richbei 30,000 Besuchern pro Tag sich erst gegen tig läuft. Kompakt formuliert lässt sich das
55
5 Konkrete Planung
5.12 Backups Problem wie folgt anreißen: Ein toter Server kann nicht um Hilfe rufen, ein Server der sein Backups sind eine wichtige Grundlage zur Er-Gedächtnis verloren hat weiß nicht wen es haltung der Funktionsfähigkeit. anrufen soll, ein Server dessen Telefon nicht funktioniert kann niemanden anrufen usw. . Unter Unix sind für normale Benutzer die Kommandozeilenprogramme tar, cpio oder Speziell hier ist es wichtig, das jedes Glied pax zur Datensicherung üblich. Bei den im (Überwachungs-)System funktioniert. An-Betreibern handelt es sich um Windowssonsten ergeben sich Fehlalarme die nach ei-Benutzer, denen der Lernaufwand zur Bener Weile nicht ernst genommen werden oder dienung einer Shell nicht zugemutet werden Alarme fallen aus und der Aufwand hat nicht kann und auch nicht zugemutet werden sollte gelohnt.
weil seltene Tätigkeiten (das Rücksichern der
Man könnte auf anderen Servern Überprü-
Backups) schnell vergessen werden und die
fungsskripte laufen lassen die regelmäßig tes-benötigten Informationen dann nicht greifbar
ten ob beispielsweise die Suchfunktion noch
sind.
geht und das die Startseite nicht von Hackern
Also wurde folgendes Konzept entwickelt:
verändert wurde. Auch diese Server könnten
Die Arbeiten sind von den Betreibern per FTP
Probleme haben und letztendlich kommt man
zu sichern. So etwas ist innerhalb der Uni-zu der Fragestellung ob sich die Mühe für
versität problemlos möglich und bessere FTP-
des Selbstentwickeln einer korrekten und si-
Programme erlauben einen Abgleich des lo-cheren Lösung lohnt wenn viele Ausfallsze-kalen und des entfernten FTP-Verzeichnisses
narios nicht gut behandelt werden können und
um Dateien nicht doppelt zu übertragen.
man davon abhängt, das das Netzwerk funk-Das System benutzt keine symbolischen tioniert, Emails versandt werden können, die
Links um einen problemlosen Backup per ZIP Server eingeschaltet sind, die Perl-Interpreter
zu ermöglichen und keine Probleme mit Adnicht verschoben wurden usw.
ministratoren zu bekommen die so etwas er-
Es gibt professionelle Dienste welche die
fahrungsgemäß oft nicht beherrschen 4 .
Erreichbarkeit einer Website für Geld beob-Ein Backup per FTP auf einen Windows-achten und ggf. den Betreiber informieren.
Rechner wäre wieder einspielbar. Allerdings
Vielleicht existieren auch kostenlose Anbie-müssten mit relativ viel Aufwand (auch wenn
ter. Dort könnte man PCA mal eintragen.
es ein Skript dazu gibt), die Unix-Permissions
Für Windows könnte es Programme ge-wieder gesetzt werden da das System vital da-ben die im Hintergrund laufen und Sitebetrei-
von abhängt das bestimmte Dateien bestimm-ber informieren wenn ausgewählte Webseiten
te Berechtigungen besitzen (5.13.2, S. 60).
nicht mehr erreichbar sind. Unix-Lösungen erfordern einen zweiten Account auf einem
Version der Daten und Skripte erzeugt. Die-
zweiten Server sowie Aufwand für Konfigu-
ser Backup müsste im Notfall mit den aktu-ration und vielleicht auch Programmierung.
ellen Daten der Betreiber kombiniert werden
Es müssten regelmäßig mit der Hand alle um einen aktuellen Verzeichnisbaum zu er-Funktionen durchprobiert werden. So etwas halten. Das Einspielen wäre nach einer hal-wird gerne vergessen wie man an manchen ben Stunde erledigt. Die Restaurierung der
Websites bemerkt die nicht gewartet werden Dateirechte könnte länger dauern. Ebenso ist
und mit der Zeit immer mehr „herunterkom-
4 DieAVMZ-Mitarbeiter sind nicht damit gemeint. men“.
56
5 Konkrete Planung
das Überprüfen der Funktion der Webseiten im Folgenden die Value-Werte aus den KVnicht unaufwendig da es mit der Hand gesche-Paaren des CGI-Aufrufes gemeint. hen muss und alle Funktionen (Suchen, An-Zuerst werden „tiefere“ Aspekte wie Codemelden, hochladen Abstract, hochladen Datei, und HTML-Injection angesprochen. Dann Verwalten) ausprobiert werden müssen. folgt eine Beschreibung von Dingen welche Auf inkrementelle, verteilte und automatidurch die Zugriffsrechte von Unix bedingt sierte Backup-Systeme wurde verzichtet. Zu werden. Anschließend eine Darstellung unter beachten wäre hierbei das solche Systeme in„Wer will was womit“ welches die Steuerung krementell arbeiten müssten um nicht zu viele von CGI-Skripten behandelt. Zum Schluss Daten zu erzeugen. kommen ein paar nicht behandelte Dinge oder Gesichtspunkte.
Hier werden absichtlich nicht mit Gefähr- 5.13Sicherheit
dungsstufen, Gefährdungsarten und anderen Dingen wie beispielsweise im Grundschutz-CGI-Skripte nehmen Daten von außen entge-handbuch [gshb] argumentiert weil es konkret gen, werten diese aus, lesen und/oder schreium CGI-Programme geht. ben Daten und liefern Ausgaben. Es sind also normale Programme deren Input von außen
5.13.1 Code-, HTML- und über den Webserver kommt. Die Sicherheitsprobleme ergeben sich nun dadurch, das den SQL-Injection
externen Daten nicht getraut werden kann. Bei Injection handelt es sich darum, über die Das klingt einfach, hat bei komplexeren Ak-CGI-Argumente Befehle oder Daten in das tionen aber deutliche Auswirkungen auf die System einzubringen welche an späteren Stel-Planung.
len zur Kompromittierung des Systems führen Viele CGI-Anleitungen beschränken sich wenn aus diesen Daten Anweisungen (Komdarauf, zu zeigen wie Parameter ausgele-mandozeilenprogramme oder Datenbankabsen werden und häufige Aufgabenstellungen fragen) für andere Systeme generiert werden. (Gästebücher, Besucherzähler) programmiert D.h. die Anfragen können Semantik enthalwerden. Sicherheit wird selten angesprochen ten die nicht angeboten werden soll. Im über-und die komplexeren Anforderungen durch nächsten Abschnitt geht es um Semantik, die komplexere Systeme (Foren, Anwendungen zwar intendiert ist, aber nicht in diesem Rahwie beispielsweise PCA, Online-Shops) wermen: Sieser User soll diese Funktion auf dieden selten oder überhaupt nicht behandelt. sen Objekten nicht ausführen dürfen kann es Schon die einfachen Beispiele beispielsweiaber. se zum Ergänzen einer Email-Verteiler-Liste
enthalten keinen Code, um die Aktionen auf den Dateien transaktionsorientiert durchzuführen und alle darauf zugreifenden Skripte auf verlassen das die vorgelagerten HTML-hintereinander und nicht gleichzeitig auf Da-Seiten und darin enthaltener Javascript-Code teien zugreifen zu lassen. Noch komplexere oder Formularfeld-Optionen wie beispiels-Probleme z. B. der Sicherheit sind der Zielweise MAXLENGTH= für die maximale gruppe für solche Anleitungen anscheinend Länge von Eingaben in einem Text-Feld auch nicht zuzumuten. beachtet werden. Ein CGI-Skript muss immer Mit „Parametern“ oder „Argumenten“ sind davon ausgehen, beliebige Daten zu bekom-
57
5 Konkrete Planung
men. Damit erschließt sich auch der Zweck der -T-Option von Perl: Sie erzwingt das von au-Code-Injection führt dazu, das unerßen eingeführte Variable und alle daraus abgewünschter Code ausgeführt wird. Perl hat leiteten Werte (z.B. in Form von Zeichenketeinen mächtigen open-Befehl welcher auch
tenzuweisungen) als „Tainted“ 6 gelten. Ver-
Pipes öffnen kann um andere Programme mutlich wird dazu ein Taint-Attribut zusammit Input zu versorgen oder deren Ausgaben men mit jedem Wert mitgeführt. Bestimmauszulesen. Auch kann Perl mit eval() te Aktionen wie Aufrufe fremder Program-Code in Zeichenketten als Perl-Anweisungen me oder Öffnen von Dateinamen die irgendinterpretieren und ausführen, was bei der wie mit als tainted markierten Variablen in Suchfunktion (6.4, S. 77) als Beschleuni-Verbindung gekommen und somit selber als gungsmöglichkeit vorgeschlagen wird (aber tainted eingestuft werden, führen dann zur so das es sicher wäre). Enthält der ausgeführte Laufzeit zum Abbruch der Skripte. Um aus Code Teile der übergebenen Daten, so kann solch einer Variablen Werte für die Verwenauf diesem Wege unter Umständen malicious dung in geschützten Kommandos zu machen Code ausgeführt werden. müssen die zu verwendenden Werte mit regu-Zur Volltext-Suche werden gerne externe
lären Ausdrücken aus den Variablen heraus-Programme gestartet, diesen die Suchanfra-geholt werden. Dabei kann genug falsch ge-ge übergeben und die Ergebnisse ausgewer-
macht werden. Faule Programmierer würden
tet. Ein fiktives Beispiel: system("grep
einfach alles mit ^.*$ matchen lassen und
$A liste.txt") ruft die Shell mit der
dann kann man es auch sein lassen. Mangels
angegeben Zeile auf, die grep mit dem ak-Erfahrung mit dem Taint-Mode wurde dieser
tuellen Wert der Variable ’$A’ auf und lie-
nicht eingeschaltet. Dieser ist auch eher als
fert die Ausgabe auf STDOUT welches vom
Alarmanlage zu verstehen da das Programm
Webserver dann an den Browser des Be-abbricht wenn potentiell gefährliche Werte in suchers weitergeleitet wird 5 . perldoc -f bestimmten Funktionen benutzt werden und
system gibt detaillierte Informationen dar-
er deckt nicht alles ab. Eine konstruktive Lö-über. Wurde $A aus CGI-Argumenten erzeugt
sung dieser Problematik liefert -T somit nicht.
was bei Suchanfragen normal sein dürfte, so
Mehr dazu unter perldoc perlrun und
wären folgende Werte für $A potentiell schäd- perldocperlsec.
lich: ‘rm -rf /‘ (Backticks in der Shell), Eine Lösung gegen Injection wäre, alle selt„a b ; cat /etc/passwd “ (Per Sesamen Zeichen aus den übergebenen Werten mikolon ein weiteres Kommando eingefügt). auszufiltern. Das klingt einfach, ist aber nur Wenn beliebige Kommandos ausgeführt werfür Dateinamen und einfache Vor- und Nachden können, kann in mehreren Schritten namen realisierbar. Wenn ein Formular Umder komplette Account übernommen werlaute im Nachnamen eines Autors entfernt ist den. Häufige Ziele von Hackern sind wohl das nicht akzeptabel. das Installieren von Backdoor-Programmen, Weitere Lösungen bestehen beispielsweise die dann zu Denial-of-Service-Attacken, der darin, möglichst viel selber zu machen um Übernahmen weiterer Accounts oder Server auf den Aufruf externer Programme in Ver-oder anderen Zwecken dienen. bindung mit CGI-Argumenten verzichten zu
58
5 Konkrete Planung
können. Beispiele: Es muss nicht /bin/rm durch eine optische Kontrolle seltsame Daten zum Löschen von Dateien aufgerufen werden auszufiltern.
weil es die Funktion unlink() gibt (aus SQL-Injection ist das Ergänzen von [ct2002a]). Einen grep-Befehl selber nachzu-SQL-Anweisungen durch unerwünschte bauen kostet schon den Aufwand, eine Datei Teile. Beispiel: SELECT nachname, zu öffnen und die Zeilen mit einem regulä- telefonnummer,funktion FROM ren Ausdruck zu filtern. Andere Befehle sind mitarbeiter WHERE nachname nicht, oder nur aufwendig selber nachzubauen LIKE "$A%" könnte durch schlecht geprüfweshalb meist darauf verzichtet wird. te Parameter wie " OR gehalt>50000 open() und system() besitzen auch si- OR"abc"=" (die " sind Teil des Angriffes chere Formen zum Öffnen von Dateien und und keine Randbegrenzer) für $A zu SELECT zum Aufruf von externen Programmen. Die nachname, telefonnummer, Verwendung ist vermutlich nicht gängig, da- funktionFROM mitarbeiter her nur selten in Beispielen anzutreffen und WHERE nachname LIKE "" OR somit „nur“ den Perlanleitungen zu entneh- gehalt>50000OR "abc"="%" werden men. und man sieht die Namen der Mitarbeiter die PCA braucht keine Aufrufe dieser Sormehr als 50,000 verdienen. Das Beispiel war te in Verbindung mit Benutzereingaben und nicht allzu realistisch. Ein komplizierteres auch die Volltextsuche ist per Modul und C-Beispiel: Ein Online-Auktionsanbieter hat Bibliothek angebunden. Benutzer und deren Passworte als Klartext in Bei HTML-Injection geht es darum, in einer Datenbank liegen. Auch bietet er eine Formularfelder HTML-Code einzuschleusen, gegen SQL-Injection nicht gesicherte Suchwelcher dann in den angezeigten Seiten funktion über die Mitgliedernamen an. Durch eingebaut wird. Dabei kann es sich auch geeignete Anfragen lassen sich nun alle um Javascript-Anweisungen handeln, welche Benutzer ausgeben, deren Passworte mit ’a’ dann bei den Besuchern oder Administratoren anfangen, dann diejenigen deren Passworte unerwünschte Dinge bewirken. Ein Bereinimit ’b’ anfangen usw. Dasselbe dann für den gen der Eingaben ist aus den beschriebenen zweiten Buchstaben usw. Aus den Ergebnis-Gründen (Nachnamen und Titel mit gefährliseiten lassen sich dann alle Passworte für alle chen Zeichen) nicht so einfach. Ein Titel wie eingetragenen Benutzern kombinieren. Dieser „1<2 ? Neue Forschung beweist das Gegen-Angriff bräuchte |alphabet| ∗ Passwortlänge Zugriffe 7 was deutlich weniger als die teil !!!“ oder auch Anführungszeichen dürfen |alphabet| Passwortlänge nicht entfernt werden. Die Regel muss also theoretischen
lauten: Nichts wird gefiltert, alles wird pas-Möglichkeiten für ein Passwort sind. Bei send kodiert. Anstelle von ’<’ muss beispiels- 2 ∗ 26+ 10 = 70 (aufgerundet) Buchweise der Text ’<’ in den Ausgaben stestaben (Groß, klein und 0 − 9) und einer hen. Das Modul CGI.pm erledigt das automa-Passwortlänge von 8 ist die Passwortliste tisch für Formularfelder die mit dessen Funkfür alle Benutzer in 560 Seitenabrufen austionen erzeugt wurden. Auf den per Vorlagen gelesen. Vollständiges Ausprobieren aller erzeugten Seiten ist das nicht überall der Fall möglichen Passworte (Brute-Force-Angriff) (eben weil Vorlagen benutzt werden) aber in bräuchte 70 8 = 5.7 ∗ 10 14 Möglichkeiten der Verwaltung durch die alle Metadaten hin-und das jeweils einmal pro Benutzer. Die durch müssen, werden die passenden Funktio- 7 |alphabet|: Anzahlder Buchstaben im Alphabet. nen benutzt. Es liegt dann an den Verwaltern,
59
5 Konkrete Planung
Datenbankschemata sind bei offener Soft-FreeBSD aber diese Dinge werden hier nicht ware (beispielsweise für Diskussionsforen) besprochen.
bekannt und bei Fehlern in der Argument-Eine Datei hat einen Eigentümer und eine weiterleitung wären solche Angriffe möglich. Gruppe. Für diese beiden sowie ’others’ (al-Passworte müssen als Klartext gespeichert le, World) gibt es je einen Satz eine rwxssein, wenn per Email vergessene Passwort Bitkombination. ’others’ wird im Folgenden versendet werden können sollen. PCA betrifft mehrmals benutzt und bezeichnet die Rechte das nicht weil es nur die Verwalter als Rolle für alle Accountinhaber auf dem Rechner, die hat und kein SQL benutzt wird. nicht der Inhaber sind oder zu der jeweiligen Gruppe gehören. [heise2002e] stellt kompakt übliche Fehler Wesentlich bei der Ausführung eines CGI-und Möglichkeiten zur Code- und HTML-In-Programms ist die User-ID und Gruppen-ID jection speziell mit Perl, PHP und in Verbinunter welcher das Skript läuft. Daraus ergeben dung mit SQL vor. sich in Verbindung mit den Zugriffsrechten Während des Betriebes von PCA gab welche Aktionen das Skript an Dateien und es einmal Warn-Emails (im Rahmen der
Fehler-Benachrichtigung 5.10, S. 55) weil je-mand folgende CGI-Argumente ausprobierte: ler User-ID werden hier nicht betrachtet. Ver-
/cgi-bin/pca.cgi?action=|ls|,
zeichnisse werden in den Betrachtungen hier
?action=;ls|%0a.html, ?action=
komplett ausgenommen weil sie einige Be-
;ls
und
?action=;ls|.
DieBedrohung sonderheiten haben und das einer kurzen, verdurch Injection ist also realistisch aber bei ständlichen und strukturierten Darstellung ab-PCA nicht auszunutzen. träglich wäre. Gruppen wären eine brauchbares Konzept zur Verteilung von Rechten
5.13.2 Unix-Zugriffsrechte und an Dateien, Skripten und anderen Dingen die von mehreren Personen genutzt werden sol- ihreFolgen
len. Dieses Potential wird jedoch wenig ge-Hier geht es darum, wie die Dateirechte unnutzt.
ter Unix gesetzt werden müssen, damit das Es gibt zwei gängige Methoden auf System läuft. Was genau die Probleme und Webservern: Beim ersten Konzept laufen Szenarien sind wenn Dateien offen für andere Skripte unter der ID des Users dem der (virtusind wird hier nicht beschrieben. elle) Server gehört und dürfen daher alles was Unter Unix gibt es diverse User die jeweils der Account-Inhaber darf. Ein Skript kann eine eigene uid (UserID) haben und die in an alle Dateien herankommen und man muss mehreren Gruppen eingetragen sein können. diese nicht für andere Benutzer oder Grup-Dateien vergeben die Rechte r (Read, Lesen), pen freischalten. Für Skripte denen man nicht w (Write, Schreiben) und x (eXecute, ausführtraut weil sie aus fremder Quelle stammen ist bar, für Programme und Skripte). das problematisch. Auf das s-Bit wird genauso wenig einge-Das andere System benutzt einen zentralen gangen wie das x-Bit für Verzeichnisse. Un-Account (im Folgenden ’CGIuser’ genannt) ter Linux können mit bestimmten Program-unter dem alle CGIs aller virtuellen Server men und dem ext2-Dateisystem Dateien als laufen. Die verschiedenen virtuellen Webserver gehören aber immer noch verschiedenen nicht löschbar, nur verlängerbar und ähnliche Dinge festgelegt werden. Ähnliche Dinge hat Benutzern mit verschiedenen Accounts. Das
60
5 Konkrete Planung
ist auf dem AVMZ-Server für PCA momen-plizit von A freigeschaltete Dateien und Vertan der Fall. Damit das Skript lesend oder zeichnisse zugreifen. Da dies aufwendig ist, schreibend an eigene Dateien herankommen wird es wohl nur selten gemacht. kann muss man diese für alle (’others’) les-Hier werden nur ein paar ausgewählte Probar oder sogar schreibbar machen. Alternableme angesprochen: Für jeden schreibbare tiv könnte man die Dateien vom Skript an-Dateien können manipulierte Informationen legen lassen, kommt dann als Accountinhaenthalten. Da die Ordner offen sind, könnten ber vielleicht nicht gut an deren Inhalte oder andere illegale Daten dort hineinlegen. Wenn muss im CGI-Skript entsprechende Vorkeh-CGI-Skripte oder PHP-Seiten für jeden lesrungen treffen. Wenn beide Seiten (Besitzer bar sind und das müssen sie oft sein damit des Accounts und CGIuser) schreiben sollen, sie vom Webserver ausgeführt werden, so stemuss das (wenn keine passenden Gruppen hen dann u. U. Zugangsdaten für SQL-Server existieren) so geregelt werden das die Datei darin. Wenn die erste Methode für CGI-Skripfür ’others’(also auch alle anderen) schreibte benutzt wird, so könnten die Informatiobar ist. Wem die Datei gehört ist dabei egal. nen (wie auch alles andere was konfiguriert Soll nur eine Seite lesen können, reicht es werden kann) in Dateien ausgelagert werden, wenn ’others’ nur lesen dürfen und die Dadie im Gegensatz zu den Skripten nur von der tei der schreibenden Seite gehört. Die Mög-UserID der Skriptausführung lesbar sind. lichkeiten sind sehr vielzählig und werden da-Dabei handelt es sich ausschließlich um her nicht alle aufgeführt. Das gesamte System Angriffe von innen also von Leuten die einen basiert darauf, das man den „Kollegen“ wel-Account auf dem Rechner haben (oder deren che ’others’ repräsentieren vertrauen kann das Account übernommen wurde). In Kombinatidiese die Dateien nicht manipulieren. on mit anderen Angriffen (Injection im vor-Der gesamte Workflow bei PCA ist CGIhergehenden Abschnitt und Missbrauch der basiert. Die Verwaltungsfunktionen müssen Skripte im nächsten Abschnitt) könnten auch somit alles schreiben dürfen und somit sind Angriffe von außen daraus Nutzen ziehen. fast alle Dateien die nicht nur gelesen werden PCA wäre sicher, wenn die Skripte unter müssen (Vorlagen, Usernamen und Passwortder eigenen ID laufen würden was momentan Datei, Programmtexte) für others schreibnicht der Fall ist. bar. Gäbe es die Verwaltungsfunktionen nicht und würden stattdessen die davon angesto-
5.13.3CGI-Programme und ßenen Dinge beispielsweise über Unix-Shell-Zugang geregelt, würde es reichen, dem CGI- Sicherheit
user nur das lesen zu lassen was er braucht Nachdem es eher um technische Dinge ging, und nur zum Hochladen von Dateien muss ein wird hier behandelt wie man die Skripte hereinzelner Ordner schreibbar gemacht werden. einlegen kann d.h. das System so mit CGI-Sinnvoller als die beiden gerade erklärten Parametern versorgt das unerwünschte Dinge Methoden wäre es, wenn die CGI-Skripte von passieren. beispielsweise User ’A’ unter einer separaten ID wie beispielsweise ’Acgi’ laufen würden Dieser Abschnitt bezieht sich hauptsächlich und beide gemeinsam in einer Gruppe ’Acgi’ auf die Verwaltungsfunktionen. Theoretisch wären. Das wäre sicher gegen Ausspionieren könnte man auch die Suchfunktionen, Anmeldung oder Hochladen von Dateien hereinle-und Zugriff durch andere Benutzer oder deren CGI-Programme, und Acgi darf nur auf ex-gen aber deren Funktionalität ist beschränkt
61
5 Konkrete Planung
und eben weil jeder diese Funktionen nut-beschränkt es wird auch keine Mindestlänge zen können soll wurden sie so geplant das vorgegeben. Die Passworte müssen von der sie strohdumm nur genau das tun was sie sol-Shell aus gesetzt werden. Dafür gibt es keine len und keine versteckten Zusatzsemantiken CGI-Verwaltungsmöglichkeit. MD5 ist eine anbieten („wer ’Briefkasten’ als Titel sucht Hash-Funktion die einen (möglichst nicht umkriegt eine Liste aller Dateien im incoming/-kehrbaren) Fingerprint eines Byte-Streams Verzeichnis“ gibt es bei PCA nicht). erzeugt (weiteres in perldoc Digest:: CGI-Programme bekommen Anweisungen MD5). Hashfunktionen sollten sich dadurch (eigentlich „Parameter“, aber diese werden auszeichnen das möglichst nahe Eingabewerhier als Anweisungen interpretiert) von au-te möglichst unterschiedliche Ausgabewerte ßen. Auch wenn es einfach dargestellt wird, erzeugen damit bei einem Vergleich der Funkbestimmt der folgende Kernsatz den Kontroll-tionswerte „sicher“ ist, das in beiden Fällen fluss eines CGI-Programms und damit die derselbe Input vorlag. Die Datei dazu sieht
(zur Sicherheit abgeändert) so aus: Tabelle 5.4 konkreten Planungen: Wer ist das überhaupt, was will der von mir, darf der das, kann ich (S. 63) das ?
„Was will der“ beschreibt die Frage, wie Formulars werden darin versteckt (also per die Parameter in den Formularen zu bestim-POST) Username und Passwort mitgeführt. men sind, damit das Skript bei Absenden des Im nachhinein sinnvoller wäre das Vergeben einer ID nach Übergabe einer richtigen Formulars weiß, was der Besucher überhaupt will. Das wird ansatzweise in 6.3 (S. 71) User/Passwort-Kombination gewesen. Diese erläutert. „Kann ich das“ bezieht sich auch wäre dann anstelle User/Passwort in jeder auf Implementierungsdinge wie beispielswei-Anfrage enthalten. Sinnvollerweise laufen se Fehlermeldungen wenn Dateien zweimal solche IDs nach einer Weile ab. Verhindert von ’foo’ nach ’bar’ umbenannt werden sol-werden muss auf jeden Fall, das z. B. eine len was beim zweiten Mal eine Fehlermel-halbe Stunde lang ein Abstract editiert wird, dung liefern sollte. dieser gespeichert werden soll und dann Für den Sicherheitsbereich wichtiger sind eine Fehlermeldung kommt, man sich neu „Wer ist das“ und „darf der das“. Die ers-einloggen muss und die Daten neu einzute Frage behandelt die Authentisierung. Übli-geben sind. Das ist möglich aber nicht oft cherweise müssen für so etwas Passworte und anzutreffen. Dazu wären alle KV-Werte Usernamen angegeben werden die dann über-versteckt in ein Formular einzubauen, dieses prüft werden. Stimmen diese, wird dem Be-um Text-Felder für Usernamen und Passwort nutzer gängigerweise eine Rolle zugewiesen zu versehen und bei richtiger Eingabe wird welche bestimmt, was er machen darf. die Funktion dann trotz der zwischenzeit-Passworte als Klartext zu hinterlegen ist lichen Unterbrechung ausgeführt. Wer die Übertragungen belauscht kann am Anfang nur nötig, wenn diese Passworte beispielsweise per Email an Benutzer versendet werden einer Sitzung immer das Passwort herausmüssen. Eine Alternative wäre, eine Email bekommen. Eine ID während einer Sitzung an den Benutzer zu senden in der ein Link herauszubekommen bedeutet einen Zugang auf ein CGI steht, welches das Passwort auf bis zum Ablauf der ID (z.B. nach einer halben einen neuen Wert setzt. Bei PCA ist so et-Stunde Nichtbenutzung). Gegen parallelen Zugriff könnte die IP-Nummer von der aus was nicht nötig. Die Passworte werden daher mit MD5 kodiert abgelegt. Die Länge ist nicht zugegriffen werden darf mit der Session-ID
62
5 Konkrete Planung
$ cat data/users.txt
# User
Tabelle 5.4: User-Datei von PCA
(lokal auf dem PCA-Server) gespeichert deutet einen Wechsel im Paradigma von erwerden. Wer über während einer Verbindung laubt?=f( Rolle( UserID, Passwort), Aktion) wechselnde Proxies zugreift kann das dann auf erlaubt?=f( Benutzer( UserID, Passwort), nicht wenn sich deren IP-Nummer während Aktion, Objekt). jedes Zugriffes ändert. Weiter werden die Ein Framework für letzteres wäre bei In-Details nicht ausgeführt. ternetanwendungen wichtig da es aufwendig ist und gut geplant werden muss. In Commu-Nachdem klar ist, wer die Anfrage sennities und speziell Internet-Foren sind offene det, muss diese ausgewertet werden um zu Feindschaften, Beleidigungen und Verleumerkennen, was getan werden soll. Das CGI dungen ganz normal. Speziell dort kann man stateless ist, und was es aus informationstech-
nischer Sicht zu beachten gibt, wird in 6.3 (S. 71) erläutert. Aus Sicherheitstechnischer Sicht muss dann geklärt werden ob der Absender der Kommandos diese auch ausführen beispielsweise Foren oder Editiermöglichkeidarf. Bei PCA ist die Sache recht einfach: Es ten von den Autoren der jeweiligen Arbeit gibt nur einen Benutzer ’admin’. Der darf jede verwaltet werden sollen. Beispiel: [heisesoft] Administrationsfunktion benutzen. Ein Auf-bietet den Autoren der dort aufgeführten Softzeichnen der Daten, wer, wann, was, wo ge-ware an ihre Daten zu ändern. Die Autoren macht hat findet nicht statt. sollen „natürlich“ nur ihre Daten ändern können.
Üblicherweise werden Funktionsberechti-Da die von außen kommenden Kommangungen über Rollen definiert. In größeren dos alle Informationen enthalten und die CGI-Systemen mit vielen Funktionen wäre es sinn-Skripte (ohne Session-System) keine Zustänvoll, Funktionen zu definieren und mehrere de speichern, müssen die Datenflüsse und davon dann in einem gerichteten Graphen zu-Kontrollinformationen anders geplant wersammenzufassen um Personen einfacher eiden als bei normalen Anwendungen bei dene Rolle (Geschäftsführer, Bestellungseingenen man den anderen Teilsystemen vertrauen ber, Reklamationseingeber im Callcenter) mit kann. den vielen daran hängenden Funktionen zu-Zwei Beispiele für missbräuchliweisen zu können. In noch komplexeren Systemen wie beispielsweise Internet-Foren sind che Verwendung: „Schiebe die Dadie „Rollen“ (=Satz erlaubter Aktionen) nicht tei nach /etc/passwd $HOME/
nur vom Benutzer sondern den betroffenen webroot/htdocs/doc/123/3.doc“ Objekten abhängig. Ein Forumsadministrator wo sie dann weltweit per http: abdarf in seinem Forum alles, in anderen Fo-gerufen werden kann. „Schiebe
ren nur schreiben und in andere Foren viel- .../intern/incoming/FILE123 leicht nicht einmal hineinschauen. Das be-nach $HOME/webroot/htdocs/
63
5 Konkrete Planung
index.html“ und schon ist die Start-chern von Abstracts und Metadaten der Anseite durch eine andere Seite ersetzt. meldung wird vollständig vom Skript kontrolliert welches eigenständig die Dateinamen Bei diesem Problem handelt es nicht um Inim Eingangsordner hochzählt. Bei den Dokujection wie schon vorher erklärt sondern um menten sollten die Dateinamen erhalten bleidas Ausnutzen der vorhandenen Semantik: ben was aber nicht zwingend war. Bei PCA ist es im Verwaltungsbereich mög-Ein Beispiel für die Verwaltungsfunklich, Dateien zu verschieben, hochzuladen, zu tionen (die umbenennen, verschieben löschen und teilweise auch zu editieren. Ein und löschen anbieten müssen): „Schiebe Befehl sollte nicht lauten können „schiebe die hochgeladene Datei nach /etc/passwd“ 8 . Der aus dem Eingangsverzeichnis die Datei abstract1.txt in den Ordner für Ar-Befehl muss lauten „Datei als foo.doc hochlabeit 123.“. Daraus berechnen die Skripte den“. Wohin Dateien gelagert werden hat der dann das .../intern/incoming/ Aufrufer nicht zu bestimmen und wird vom abstract1.txt in .../htdocs/doc/ Skript beim Aufruf festgestellt: Es ist spar- 123/abstract.txt zuverschieben sam mit Daten umzugehen und nur das nötigsist. Das erfordert eine Indirektion oder te nach außen zu geben und nur das was än-anders gesagt: Es muss in einer Tabellen derbar sein muss, von außen entgegenzunehmen 9 . Alles was intern nachgeschaut werden nachgeschaut werden. Auch lässt sich einfacher /users/home/pca/webroot/ kann, muss bei jedem Aufruf intern nachgese- htdocs/incoming inein Feld eines hen werden.
Bearbeitungsformular schreiben als meh-Pfadangaben haben grundsätzlich nichts rere Werte. Tabelle 5.5 (S. 65) zeigt den in solchen Anweisungen verloren. Selbst HTML-Quelltext zum Umbenennen einer im wenn man überprüfen würde ob beispiels-Incoming-Verzeichnis liegenden Datei. weise der Pfad mit incoming/ anfängt file bezeichnet die Originaldatei. hindert das niemanden daran beispielswei- dirkey bezeichnetabstrakt in welchem se incoming/../../../../../etc/ Verzeichnis file liegt 10 Das einzig sichtbare passwd hochladen zu wollen. Ein relativer Feld ist der Absendeknopf und das Eingabe-Pfadname kann durch genügend viele ‘’../’ feld für file2 wo der neue Name drinsteht. einen absoluten Pfadnamen beliebig genau Wie es aussieht ist in Abb. 5.4 (S. 47) als annähern. Die Pfade korrekt zu überprüfen ’new_0.anmeldung.txt’ mit dem Schaltknopf wäre eine Idee, ist aber nicht-trivial. Einfacher ’Umbenennen’ ersichtlich. Für die anderen ist es, abstrakte Bezeichnungen zu verwen-Schaltflächen dieses Screenshots werden den. Die Hochlade-Befehle bei PCA brauchen ähnliche Formulare benutzt. keine Pfadbezeichner weil klar ist wohin Da-In der Konfiguration stehen jetzt noch zu teien hochgeladen werden sollen. Das Spei- ...cgi_incoming... folgendeEinträ- 8 Technischkorrekt müsste man „Datei die vom User
ge: ?? (S. ??)
unter dem das CGI-Skript läuft schreibbar ist und
Es reicht nicht nur, das cgi_incoming_
wichtig ist und nicht gelesen oder geschrieben wer-
dir bekanntist, sondern es muss auch für den soll“ schreiben. Aus Verständlichkeitsgründen wird exemplarisch /etc/passwd geschrieben damit die gewünschte Funktion freigeschaltet sein die Bedrohung klar wird obwohl das kein echtes
9 In den KV-Feldern können ruhig gefälschte Preise stehen. Ausgelesen werden müssen jedoch nur die Bestellmenge und Produktbezeichnung.
64
5 Konkrete Planung
Tabelle 5.5: CGI-Formular zum Umbenennen
cgi_incoming_dir:../htdocs/intern/incoming
cgi_incoming_url:/intern/incoming dirkey_abstract_edit:cgi_incoming_dir doc_dirname dirkey_delete:cgi_incoming_dir dirkey_einstellen:cgi_incoming_dir dirkey_entry_edit:cgi_incoming_dir description_dir dirkey_rename:cgi_incoming_dir
Tabelle 5.6: Konfigurationseinstellungen für incoming_dir
damit dieser Funktion nicht andere Verzeich-Formularfelder ausgewertet und Dateien (ohnisbezeichnungen, in denen nichts umbenannt ne Locking) bearbeitet werden. werden darf, untergeschoben werden. Das be-In sich ist das System sicher und würde deutet eine zweite Zuordnung. Der Befehl anderen AVMZ-Benutzern nicht in ihre Ordlautet rename_file und das darf nur mit ner schreiben können. Durch Erweiterung der Verzeichnissen geschehen die in dirkey_ Verwaltungsfunktionen um das Editieren der rename stehen. Wären die Dateien jetzt noch Konfiguration sind auch die Verzeichnisdavon verschiedenen Personen editierbar d.h. eiten editierbar so das dann auch beliebige Verne Objektorientierte Verteilung der Rechte, zeichnisse dort eingetragen werden könnten. müssten diese Zugriffsrechte anders verwaltet Das wären schon kompliziertere Angriffe und werden. dazu müssten die Zugangsdaten für die Verwaltung bekannt sein was an sich schon ein Das sich nur wenige diese Arbeit machen hinreichend großes Problem darstellt. und wenn, dann meist erst wenn schon Sicherheitsprobleme aufgetreten sind ist wahr-Die Implementierung auf diese Weise wäre scheinlich. Mit Hilfsfunktionen geht auch das aus genannten Gründen nicht notwendig gerelativ einfach aber so weit muss man erst ein-wesen. Aus strukturellen Gründen (Wartbarmal abstrahieren aber (wie schon erwähnt) die keit, Änderung nur an zentralen Stellen) wurmeisten CGI-Anleitungen enden damit, das de es trotzdem gemacht. Der Schutz durch
65
5 Konkrete Planung
.htacces und Usernamen und Passworte wird auch nicht besprochen. Das wäre eine Ergänzung.
5.13.4 Spezielle
Angriffszenarien
Hier werden einige Dinge die beim Betrieb eines Webservers häufig eine Bedrohung darstellen sehr kurz zusammengefasst. Eine Vollständige Auflistung aller Möglichkeiten ist nicht beabsichtigt. Das folgende bezieht sich auf Angriffe von außen. Von innen hat wie schon mehrmals dargelegt jeder Zugriff.
Private Daten: Die Anmeldedaten enthalten die Kontaktadresse des Anmelders. Diese sind momentan über http: zugreifbar was aber ohne Einschränkungen jederzeit abstellbar wäre und nur aus Bequemlichkeit zum schnellen Überprüfen der Daten so ist. Die Email-Adressen der Newsletter-Mitglieder sind nicht zu veröffentlichen und liegen zusammen mit anderen internen Daten in einem nichtöffentlichen Ordner.
Anbieten illegaler Daten: Auf PCA können beliebige Dateien hochgeladen werden.
Geschieht dies, bekommen bestimmte Personen eine Email. Damit erledigt sich das Problem dann schnell. Wäre das incoming-Verzeichnis für Zugriffe von Buffer Overflows: Hierbei werden überaußen gesperrt, brächte das Hochladen
illegaler Daten nichts, weil diese nicht mehr zugreifbar wären.
Der Betrieb eines FTP-Servers hätte viel mehr Risiken diesbezüglich mit sich gebracht.
Denial of Service: Das hat zwei Aspekte: Man könnte PCA benutzen um andere zu belästigen oder durch gezielte oder massiv parallele Anfragen versuchen, den
66
5 Konkrete Planung
5.13.5 Zusammenfassung und könnte das AVMZ und die anderen Accounts nicht beeinträchtigen.
Sicherheit ist nicht das Sahnehäubchen bei der Detailplanung (Module, Interfaces, Interaktion, Konkrete Programmierung, ...) sondern 5.14 Diverses
ein Klotz am Bein wenn man es richtig machen will. Es betrifft die meisten Module und Hier werden kurz Dinge angesprochen die ist fast genauso integrierend für das System auch bei der konkreten Planung bedacht werwie die gemeinsamen Daten. Nachträgliches den mussten. Die Begründungen fallen sehr Ergänzen dürfte sich meist als schwer erweikurz aus und Alternativen werden nicht oder sen. kaum erwähnt. Einen Anspruch auf Vollstän-Es können nicht einfach vorhandene Batchdigkeit erhebt diese Liste nicht. oder Intranet-Systeme weiterverwendet werden sondern jegliche Kommunikation ist vor-
sichtig bezüglich der gelieferten Daten vorzunehmen und Zugriffe müssen passend er-
laubt oder abgewiesen werden. Ein CGI-Programmier glaubt nichts, niemals, niemandem von nirgendwo. Die dadurch implizierten Aspekte bei der Planung werden für Programmierer nicht besonders gut kommuniziert und How do I check a valid mail in der Öffentlichkeit stehen oft andere Sicheraddress? heitsprobleme im Vordergrund.
„Zwei Server können dreimal so viel potentiellen Ärger machen“. Jeder Server für sich
kann Probleme haben und die Kommunikation zwischen den Beiden kommt noch als drittes Teilsystem hinzu. Dasselbe gilt für Sicherheitsüberlegungen. Je mehr Teile ein System hat, desto mehr Angriffsmöglichkeiten auf die einzelnen Teile und vielleicht auch auf die Verbindungen dazwischen kann es geben. PCA ist so sicher wie es momentan mit vernünftigen Maßstäben im vorhandenen Rahmen gemacht werden kann. Innere Angriffe sind möglich, so lange Dateien und Verzeichnisse wegen des cgi-Users schreibbar sein müssen. Wären sie das nicht, gäbe es keine inneren Angriffspunkte
11
. Wäre die Konfiguration nicht über die Ver-
67
5 Konkrete Planung
und diese trotzdem Ihre Mails kriegen Schnellsuche: Da es bei ROA eine Schnell-
sollen. Frage 2: Ist die Mail zustellbar? Das ist die eigentliche interessierende Frage. Diese lässt sich nur dadurch beantworten das eine Email an diese Adresse versendet wird. Erhält man eine Antwort (in Form eines CGI-Aufrufes oder einer Mail-Antwort oder wie auch immer) weiß man das an diese Email-Adresse erfolgreich Emails versendet werden können. Das ist bei PCA nicht nötig. Hätte man mehr Anmeldun-
gen könnte man diese durch erzwungene Rückantwort überprüfen. Damit verhindert man falsche Anmeldungen und missbräuchliche Anmeldung durch andere Personen. Interface: Benutzerführung über HTML ist ein Thema das gerne unterschlagen wird und diese Thematik wird oft von Psychologen oder Verhaltenswissenschaftlern bearbeitet.
Usability ist genauso wichtig wie das eigentliche Angebot weil der Preis den die Besucher für eine kostenlose Webseite zahlen die aufgewandte Zeit ist. Kriegen die Besucher auf einer anderen Site indifferente Informationen schneller (also billiger in Bezug auf die aufgewandte Zeit), wird diese Site auf Dauer das Rennen machen.
Großartige Überlegungen wurden für PCA nicht getroffen. Die Seiten sollten einfach sein und die Navigation orientiert sich an ROA. Alle Informationen sind schnell erreichbar und für interessierte und Web-erfahrene Personen sollte die Bedienung keine Probleme darstellen. Es gibt keine Dinge die unerwartet viele Klicks benötigen um Benutzer nicht davon abzuhalten, die gesuchte In-formation zu finden.
68
6 Implementierung
Hier werden Informationen zur Im-zwischen dem AVMZ-Server und dem Sysplementierung gegeben. Genauere In-tem zu Hause ausgetauscht. Auch wurde formationen finden sich im 80-seitigen die Volltextsuche zuerst unter Windows ein-PCA-Programmierhandbuch [pcaph] und den gebaut. Das System läuft somit auch unter WindowsXP in Verbindung mit cygwin-Quelltexten.
Perl 5.8 und Apache 1.3.22 und das öffentli-Wie auch im letzten Kapitel ist ein Topche Produktions-System als http://www. Down-Ansatz aufgrund der vielfältigen Auf- pca.uni-siegen.de [pca]unter Linux gabenstellung nicht komplett in vernünftigem und Perl5.6. Auch wenn die Erwähnung von Rahmen darstellbar weil das System einen Windows nicht danach klingt: Alles (Skripte, breiten Satz von Funktionen bietet. Hier wer-Wartung, Dokumentation, Webseiten, CGIden nur exemplarisch einige Dinge angespro-Funktionen) läuft (von einer Kleinigkeit abchen.
gesehen (7.1, S. 82)) auf beiden Plattformen. Nach technischen Informationen wird die Die CGI-Programme sind vollständig in Modularisierung (das was im Wasserfallm-Perl geschrieben. Selbst erstellte Hilfsproodell einen eigenen Planungsabschnitt dargramme speziell zur Indizierung der Volltextstellt) dargelegt. Anschließend wird beschrie-Suche sind in sh/bash und awk. Weiterhin gibt ben wie die Steuerung von Außen funktioes einige shell/awk-Skripte zur Erzeugung der niert. Danach wird die Suchfunktion detail-Dokumentation, Code-Kontrolle (6.5, S. 77) lierter beschrieben und dann folgen kürze-und Verwaltungstätigkeiten. Verwendete Softre Abschnitte über Qualitätssicherung, Dokuware (6.8, S. 79) ist meist in C. mentation, Rechenbedarf und welche fremde Software eingesetzt wurde. Inklusive Dokumentation ergaben sich ca. 11,500 Zeilen. Doppelte und leere Zeilen nur einmal gezählt (in Pascal-Terminologie: BE- 6.1Technische GIN und END werden genau einmal für das gesamte Projekt gezählt), bleiben 6500 Zei- Informationen
len. Werden Zeilen welche ’;’ und ’$’ enthalten als Programmzeilen gezählt, so ergeben
Das System entstand zuerst unter FreeBSD
sich 2550 Programmzeilen, 2400 Zeilen Do-
4.x mit Perl5.6 und Apache 1.x. Als das
kumentation (für das Programmierhandbuch)
AVMZ den Webserver zur Verfügung stell-und 1050 Zeilen Kommentare. Es wurden
te wurde die erste Version unter Linux auf
130 Funktionen gezählt 1 . Die meisten Shell-
einem Dual-Prozessor-System installiert und
Skripte und das Verwalterhandbuch [pcavh]
an die Wünsche des Auftraggebers ange-wurden nicht mitgezählt. Das Programmier-passt. Die Dokumentation und der Feinschliff
handbuch [pcaph] ist in der Zählung enthal-
der Module entstanden dann unter Windows XP, ActivePerl, Apache und Cygwin 1 Alle Daten ohne Gewähr da diese Zahlen schnell mit und wurden dann im Ping-Pong-Verfahren grep und wc zusammengestellt wurden.
69
6 Implementierung
ten da es automatisch aus den in den Skripten gesucht wird. Um dieses zu erstellen gibt es und Modulen eingebauten Dokumentationen nicht aufgeführte shell-Skripte die über die erzeugt wird. Verwaltungsoberfläche oder per Hand oder Cronjob ausgeführt werden können. Nicht selber programmierte Module sind hier nicht
6.2 Modularisierung
aufgeführt.
Modulbildung ist ein wichtiger Teil bei
Anstatt viele CGI-Skripte zu schreiben die un-der Entstehung von Software. Die Aufgabe
terschiedliche Namen haben, läuft alles über
wird klassischerweise so weit zerlegt das die
ein CGI-Programm namens pca.cgi. Die-Teile von einer Person in weniger als ei-ses erkennt anhand eines CGI-Argumentes
nem Monat implementiert werden können.
action= welches Modul zu laden ist. Das
Bei PCA wurde etwas anders vorgegangen
geladene Modul wertet dann die anderen CGI-
als nach Lehrbuch: Zuerst wurde die Anmel-Parameter aus um seine Aufgabe zu Erfüllen.
dung implementiert weil dort alle Daten zu
Ein Beispiel: pca.cgi?action= erheben waren. Der erste Prototyp wurde mit
suche&a=search_normal&suche_ dem Auftraggeber abgeklärt und Details ge-
titel=creo*&suche_autor= ändert. Dann kamen erste Verwaltungsfunk- &suche_keywords=&suche_ tionen und schließlich der Rest.
abstract=&suche_volltext=
Die realisierte Reihenfolge ergab sich da- &button=search führtdazu, das das
durch das eine Arbeit erst angemeldet werden,
Modul suche.pm geladen wird. Darin wird
dann in der Verwaltung überprüft und einge-
dann die gleichnamige Funktion suche()
stellt werden muss und dann erst beispielswei-
aufgerufen. Diese wertet alles weitere aus
se HTML-Seiten und Such-Indizes dazu ge-
und führt die Suche nach ’creo*’ in den
neriert werden können.
Titeln durch. Nach den anderen Metadaten Eine Planung der Moduleinteilung im Vorwird in diesem Beispiel nicht gesucht da die aus fand nicht statt. Stattdessen waren die anentsprechenden Value-Werte der KV-Paare zubietenden Funktionsgruppen klar und dazu leer sind.
entstand dann jeweils ein Modul. Die Fertig-Der Vorteil des zentralen Skriptes sind eistellung anderer Module war meist Voraussetne zentrale Steuerung des Mitschneidens von zung für die Implementierung der zugehöri-Fehlermeldungen und das nur an einer Stelle gen Verwaltungsfunktionen. Beispiele: Besuder Pfad auf den Perl-Interpreter stehen muss. cher müssen sich in den Newsletter eintragen Bei einem der zwei Ausfälle von PCA reichte können, bevor man deren Adressliste verwales, in pca.cgi den Pfad auf die neue Positen kann. Suchindizes müssen erstellt sein, betion des Perl-Programms zu ändern und alles vor die Suchfunktionen fertiggestellt werden lief wie zuvor. können. pbcgi.pm ist eine Sammlung aller gemeinsamen Funktionen und wird daher von Für allgemeine Hilfsfunktionen hätten weiallen Modulen genutzt. Jede Kommunikation tere Module entwickelt werden können. Der mit dem System findet über pca.cgi statt. einzige Nachteil von pbcgi.pm besteht al- listen.pm istfür die Erstellung der Lis-lerdings darin das es so groß ist. Daher wurten zuständig was von den Verwaltungsfunk-de darauf verzichtet es in Teile aufzutrennen welche dann auch von allen Modulen benötigt tionen in admin.pm angestoßen wird. Die Volltextsuche braucht ein Index-File in dem würden.
70
Tabelle 6.1: Die Module von PCA
6.3 CGI-Parameter und Trennzeichen selber machen. Allerdings lohnt sich das erst bei vielen Argumenten Verteilerfunktionen
und bei Betrachtung der meisten CGI-Urls in der Adressleiste eines Browsers wird
Wie in 4.8 (S. 28) erklärt, erfolgt jede
schnell klar, das der Aufwand meist nicht
Kommunikation mit dem CGI-Programm
lohnt. Bei gängigen CGIs werden meist nicht
über KV-Paare. Wenn Applikationen per
viele Daten übertragen, bei der Verwaltung
KV-Paaren über CGI-Aufrufe zu steuern
von PCA kann es allerdings schon einmal
sind, stellt sich die Frage nach einer sinn-notwendig sein, mehr als eine handvoll
vollen Wahl der Key-Namen. Es gibt keine
KV-Paare (beispielsweise alle angemeldeten
Namespaces für CGI-Parameter. Diese
Newsletter-Adressen) zu übertragen. Da lohnt
könnte man sich aber beispielsweise mit
71
6 Implementierung
sich eine Struktur schon, damit Funktionen zur Auswertung dieser Parameter mehrmals benutzt werden können. Weil das Projekt übersichtlich war, wurden keine Namespaces simuliert (Beispielsweise so:
suche::
wurde.
volltext::suchanfrage=foo
und
submitabstract::check::
Der action=-Parameter bestimmt das auf-
abstract_text=bar)
sondernnur darauf zurufende Modul, darin wird anhand von a=geachtet das Keys halbwegs strukturiert und in der Verteilerfunktion passende Unterfunkinsbesondere einheitlich benannt werden. tionen (meist eine oder mehrere wenn meh-Eine Vorstufe von Namespaces besteht bei rere Formulare auszugeben sind) aufgerufen PCA darin das die Keys zu KV-Paaren in welche die weiteren Parameter auswerten und der Verwaltung mit
kv_
anfangen um Nadann die eigentliche Arbeit machen. menskollisionen mit anderen Argumenten zu Das folgende wird durch Abb. 5.2 (S. 45) vermeiden.
besser verständlich: Es ist egal ob die Me-Es gibt diverse Möglichkeiten für die tadaten aus einem leeren Startformular oder Steuerung. Diese zu erläutern würde viel Platz einem Korrekturformular stammen. In beiden wegnehmen weswegen darauf verzichtet und Fällen müssen Daten überprüft werden. Also die Implementierung in PCA dargestellt wird: wird die auszuführende Aktion in die CGI-- action=foo wirdvon pca.cgi ausge-Formulare kodiert. Im Beispiel: a=’check’ alwertet und bewirkt dort, das Modul foo. so Überprüfe die Eingaben. Für PCA bedeu- pm geladenwird. Welche Funktionalität aus tet dies: Der a=-Wert ist implementierungsdiesem Modul gewünscht wird, wird imtechnisch nicht als Zustand eines (endlichen) mer über den Parameter a=... beschrieben. Automaten anzusehen da es nur bezeichnet Neue Module könnten das aber anders mawo man hin will und nicht, wo man sich chen, weil es nur eine Konvention ist. gerade befindet bzw. wo man gerade her-Ein Beispiel: Für das Modul
kommt. Für einen Benutzer sind die Recht- submitabstract.pm gibtes folgenecke die Zustände. Für das System hingegen de Werte für ’a’:
sind die mit ’CGI’ markierten Kreise zusam-a=”: Es wird die Vorlage form_
mengenommen der einzige Zustand. Diese
angezeigt. Dort abstract_new
Kreise zusammenzufassen würde ein korrek-
kann ein neuer Abstract eingetragen
tes Zustandsdiagramm ergeben, der Verständ-
werden. Der Absenden-Knopf benutzt
lichkeit aber nicht dienen. Die CGI-Kreise
a=’check’‘.
als zustandslose Funktion zu bezeichnen wäre nicht ganz korrekt weil beim Abspeichern die a=’check’: Der Abstract wird überprüft. Es Anmeldungen aufsteigend nummeriert werwird die Vorlage form_abstract_ den und mehrfaches Aufrufen unterschiedli- check angezeigt.Sind keine Fehler vorche Ergebnisse liefert. Die anderen Übergän-handen wird der Abstract zusammen mit ge haben keine Seiteneffekte und liefern bei einem Knopf zum endgültigen Einstelselbem Input immer dieselben Ergebnisse zulen angezeigt was a=’submit’ ausrück. löst. Ebenso kann der Abstract überar-Weil alle Daten in den Formularen gehalbeitet werden was beim Absenden wieder ’a=check’ liefert. ten werden ist bei PCA das parallele Aus-
72
6 Implementierung
füllen (und Absenden) mehrerer Anmeldun-Feld) hinzuzunehmen müssen nur die (zwei) gen möglich. Schließt der Anmelder seinen Arrays mit den bisher vier Namen um den Na-Browser vor dem endgültigen Absenden sei-men des neuen Feldes (beispielsweise ’komner Anmeldung, so sind alle Daten verloren mentar’) erweitert werden. Nur die Erzeugung weil er bei Rückkehr auf die Seite nicht (per der Indizes ist unterschiedlich, weil der Ab-Cookies oder sonst irgendwie) wiedererkannt stract in einer anderen Datei steht als die Mewird. Das dürfte akzeptabel sein. Bei Onli-tadaten und bei diesen wiederum jeder Autor neshops ist das etwas anders, das wird hier je ein Feld für Name und Email-Adresse hat aber nicht behandelt. welche gemeinsam durchsucht werden sollen.
der Arbeit laufen zu lassen und diese cher die Seiten manipulieren könnte. Diese interpretieren zu müssen wurde beschlossen, eigentlich nicht möglichen Zustände müssen die Informationen in DBM-Dateien zu halten trotzdem implementiert werden (4.8.3, S. 32) um schnell darin suchen zu können. Im Nachweil die vom CGI-Skript in das Formular einhinein wären Text-Dateien mit einer Zeile gebauten versteckten Datenfelder abgeändert pro PCA-Nummer (Abstracts wären dann worden sein könnten. So etwas ist in normasehr lange Zeilen) genau so gut gewesen. Für len Anwendungen bei denen man sich auf den Autoren, Abstract, Titel und Keywords wird Zustand der Applikation verlassen kann, nicht je eine DBM-Datei angelegt die bei Suche nötig. Ein „Fälschen“ der anderen Formulare nach diesem Metatyp mit tie() transparent als wird nicht modelliert da es keinen Zweck er-Hash in Perl eingebunden (4.6.1, S. 23) und füllt. Bei der Verwaltung sind solche Manipudann mit dem Perl-grep-Befehl durchsucht lationen nicht anzunehmen wurden teilweise wird. Da die Abstracts durchsucht werden aber trotzdem implementiert (5.13.3, S. 61). sollten deren Länge nicht beschränkt sein Bei der Anmeldung und allen öffentlichen sollte, war dazu das Speichern „beliebig“ lan-Bereichen muss hingegen immer mit Missger Werte nötig. Wie aus Tabelle 4.1 (S. 20) brauch gerechnet werden. Einfacher ausgeerkenntlich wird, sind nur bsdDB und gdbm drückt: Man gibt das Formular aus der Hand dazu geeignet da sie keine size limits haben. und weiß nicht, was zurückkommt und dar-Als Key-Werte wurden die PCA-Nummern aus ergeben sich Rahmenbedingungen bei der benutzt, als Values die jeweiligen Daten. Programmierung. Die einzelnen Suchworte (Token) müssen vor Verwendung von grep in reguläre Aus-
drücke umgewandelt werden. Dazu werden 6.4 Exempel: Die
nach folgender Tabelle die Jokerzeichen in
Suchfunktion
den Suchanfragen umgewandelt: ?? (S. ??):w Perl hat ein sehr umfangreiches Regular-Exemplarisch wird hier auf die Suchfunktio-Expression-System welches stetig weiternen für die Metadaten eingegangen: entwickelt wird. \s bedeutet ein White-Die Suche ist für jeden Metatyp identisch. space (Leerzeichen, Tabulator oder Zeilenum-Es gibt keine einzige if, select oder case-bruch). \S ist das Gegenteil, also jedes Zei-Abfrage die hart kodiert abprüft ob beispiels-chen das kein Leerzeichen ist. Damit ließen sich ’*’ und ’**’ schnell implementieren. weise nach dem ’Titel’ gesucht wird. Um weitere Typen (beispielsweise das Kommentar-Vorher müssen Dinge wie ’.’ oder ’*’ die
73
6 Implementierung
my %map=(
Tabelle 6.2: Token in reguläre Ausdrücke wandeln
spezielle Bedeutung haben umgewandelt wer-wird) abzuarbeiten. den da ein ’.’ auch einen Punkt finden soll.
Auf die Details wird verzichtet. als Code so aus: Tabelle 6.4 (S. 75) Hätte man reguläre Ausdrücke zur Suche erlaubt, wäre diese Arbeit nicht nötig geweaus der Suchanfrage den Baum 2 . AND und sen. Allerdings wäre das von den Besuchern OR werden bezüglich der Priorität gleich vermutlich wenig benutzt worden. Kombi-behandelt. Wer eine Reihenfolge haben will nierte Worte („Phrasen“) beispielsweise mit ’ soll Klammern benutzen. Für jede Produktion zu erkennen und zu suchen wurde nicht realider Grammatik wird von $parser eine siert. Methode mit dem Namen der Produktion Um die einzelnen Suchworte zu verbinangeboten.
den wurden die Operatoren AND, OR und
NOT sowie Klammern () erlaubt. Ebenso ist b )’ ist in Tabelle 6.5 (S. 76) angegeben. es erlaubt, Worte ohne Verbinder (AND, OR, NOT) hintereinander zu hängen was dann ei-
programmiert werden. Diese Funktion ar-ner impliziten Verknüpfung mit AND ent-
beitet den Baum ab und ruft bei Erreichen
spricht.
einer Blattes die entsprechende Suche mit Diese Sprache lässt sich (wie in grep 3 auf die den entsprechenden Ausdruck Compilerbau-Vorlesungen gelehrt wird) in der jeweiligen DBM-Datei sucht. Das nicht mit regulären Ausdrücken erkennen Ergebnis ist eine Menge (Array) von Zahweil durch die Klammern beliebig tiefe len (den PCA-Nummern) welche mit den Verschachtelungen möglich sind. Die Altergängigen (selbstgeschriebenen) Mengennativen waren: Selber einen Parser schreiben funktionen beim Aufstieg innerhalb des oder ein passendes Modul suchen. Um das
Risiko eines Fehlschlages zu verringern wurde das Modul Parse::RecDescent benutzt. Eine Auswahl war nicht nötig weil es sonst nichts gibt. Mit diesem Modul wird ein Parser-Objekt erzeugt (Tabelle 6.3, S. 75). Das mit dem End-Token war nötig damit der Parser nicht nach der ersten Produktion aufhört sondern gezwungen ist, die Suchanfrage bis zur Zeichenkette
PCA_SUCHMASCHINEN_END_TOKEN
(welche an die Suchanfragen angehangen
74
6 Implementierung
my $parser = new Parse::RecDescent (q{
| expr_1op
|
expr_0op: identifier | expr_brack
expr_brack: ’(’ expr_2op ’)’
operator: OP1 | OP2 | LBRA | RBRA | END_TOKEN
OP2: ’AND’ | ’OR’ OP1: ’NOT’ LBRA: ’(’ RBRA: ’)’
END_TOKEN: ’PCA_SUCHMASCHINEN_END_TOKEN’
identifier: ...!operator /\S+/
}
) or pbdie("Interner Fehler: Bad grammar\n");
Tabelle 6.3: Erzeugung des Parser-Objektes
my $tree = $parser->expression($anfrage .’ ’.$_END_TOKEN ); if(defined $tree) {
@menge = auswertung_tree(\%SCONF, $tree, $what ); } else {
Tabelle 6.4: Parsen und Auswerten
Baum-Auswerters vereinigt, geschnitten oder Compilerbau-Vorlesungen behandelt werdas Komplement (für NOT) gebildet werden. den: So wie andere Parser mag auch Parse::RecDescent keine linksrekursiven
Die Auswertung hätte mit Erfahrung viel-Regeln, die Grammatik ist nur deswegen so
leicht bequemer direkt in der Grammatik vor-
lang weil sie die Sprache nicht nur produ-genommen werden können. Zugunsten einer
zieren sondern auch einen eindeutigen Baum
einfacheren Fehlersuche wurden Parsen und
dazu zurückliefern soll was bedeutet, das die
Baum-Auswertung jedoch in zwei Schritten
Produktionen untereinander zu priorisieren
ausgeführt.
sind. Das ist auch der Grund für die Form
Hier einige Dinge die genauer in
75
6 Implementierung
expression=HASH(0x1061199c)
END_TOKEN->END_TOKEN=HASH(0x105c699c) __VALUE__->PCA_SUCHMASCHINEN_END_TOKEN __RULE__->expression expr_2op->expr_2op=HASH(0x10621ba0) __RULE__->expr_2op expr_1op->expr_1op=HASH(0x105779e4) __RULE__->expr_1op expr_0op->expr_0op=HASH(0x10577a38) __RULE__->expr_0op expr_brack->expr_brack=HASH(0x10577b70)
des abgebildeten Baumes. Sinnvoll wäre es, formationen zu den entsprechenden PCA-sinnvolle Fehlermeldungen einzubauen. Das Nummern werden über das Vorlagen-System ginge durch zusätzliche Produktionen welche dann ausgegeben. Wird im Volltext gesucht, die Fehler beschreiben, darauf wurde aber so liefert dies eine Menge von PCA-Numverzichtet. mern zurück welche mit den Ergebnissen der Autoren,...-Suche geschnitten werden. Die Ergebnisse für Autoren, Abstract usw. werden am Schluss geschnitten wenn in mehr Um dem Besucher Informationen über poals einem Metatyp gesucht wurde. Die In-tentielle Tippfehler und die Trefferquote von
76
6 Implementierung
6.5 Qualitätssicherung Worten zu geben werden die Treffer pro Such-wort mitgezählt und am Ende der Suche ausgegeben.
Es wurden „use strict“ und das -w-Flag
Die Suche unterscheidet nicht nach Großvon Perl benutzt (4.6.1, S. 23). Die Lebens-
und Kleinschreibung weil das nicht nötig erzeit von Variablen wurde durch Blöcke meist
schien. Ebenso wurde auf den Aufwand vermöglichst kurz gehalten denn je kürzer Varia-zichtet Sonderzeichen wie Umlaute korrekt ble leben, desto weniger Ärger (z. B. durch
suchen zu können. Wer ein Wort in mehre-Tippfehler) können sie an anderen Stellen
ren Typen optional suchen will „( Titel=creo* im Quelltext verursachen. Globale Variable
OR Keywords=creo* )“ muss jeweils eine existieren nur als Steuerungsparameter (wel-Suchanfrage starten weil Felder der Metatyches DBM-System wird benutzt, wie heißt
pen geschnitten (AND-verknüpft) werden. der Pfad auf die Konfigurationsdatei), nicht Die beiden größten Kritikpunkte an der Sujedoch für den regulären Datenfluss. Das ruche sind die geringe Optimierung und das keidimentäre System von Perl zur Überprüfung ne Beschränkung der Ergebniszahl und oder von Funktions-Signaturen wurde auch be-Blättern in den Ergebnissen möglich ist. Letznutzt. Auf Taint-Checks wurde verzichtet. teres ist nicht nötig, so lange PCA nicht viele
Dokumente enthält (7.3, S. 83). Der geringe Optimierungsgrad ergibt sich dadurch das das können um Compiler-Warnungen 4 oder fehgrep pro Suchwort über alle Einträge zu ei-
lende Module festzustellen Ein Test-System
nem Metatyp läuft. Der Aufwand besteht also
wie es bei optionalen Perl-Modulen üblich ist,
aus (Anzahl der Arbeiten)*Suchworte regulä-
gibt es nicht.
ren Abfragen.
Auf die Dokumentation wird gleich noch
Eine alternative Implementierung wäre, aus
eingegangen. Die Verwendung von POD--der Suchanfrage eine Perl-Anweisung mit
Dokumentation im Quelltext verringert die
’and’, ’or’ und ’not’ zu machen und diese mit
Wahrscheinlichkeit, das die Dokumentation
eval() durch Perl interpretieren zu lassen.
und Implementierung allzu weit auseinan-
Das wäre schneller weil jedes DBM-Element
derdriften. Konzepte und Abstraktere Dinge
nur einmal aus der Datei gelesen und dar-
können in externen Dokumenten beschrieben
auf die komplette Suchanfrage (’a OR b’)
werden. Funktionen sollten vor Ort (also im
angesetzt würde, und weil Perl eine Lazy-
Quelltext) dokumentiert sein.
Evaluation bei der Auswertung logischer Aus-CVS oder RCS wurden nicht benutzt. Für
drücke betreibt. Auch würde der Parser ent-größere Projekte wäre das sicher sinnvoll.
fallen da die Anfragen relativ einfach in Perl-Wer meinen Programmierstil nicht mag, Anweisungen konvertierbar wären und Synkann mit einem Skript eine mit Perl-Tidy an taxfehler vom Perl-Compiler entdeckt und seine Vorstellungen von Einrückungen, Posidann einfach dem Benutzer zurückgemeldet tion von ’{’, ’}’ und ’;’ und ähnliche Dinge werden könnten. Die Statistik über die Trefangepasste Version herstellen. fer pro Wort wäre dann nicht mehr möglich und müsste entfallen.
ellen Metadatensuche aber kein Problem (7.3, S. 84).
77
6 Implementierung
6.6 Dokumentation chen nach einer Weile ohne neue Daten eine Übertragung ab. Also sollten per CGI ange-Die Dokumentation entstand im POD-Format stoßene Dinge nicht zu lange dauern damit es welches das für Perl-Quelltexte gängige Forkeine Probleme beispielsweise in Form halb mat ist. Mit Konvertern können aus Dokuausgerechneter Listen gibt. Auch sollten die menten mit POD-Anweisungen die Forma-Verwalter nicht minutenlang dem Skript bei te .txt, .html, .man oder auch .tex erzeugt der Indizierung zugucken müssen weil sie das werden. Bei PCA werden die Dokumentatio-Browserfenster nicht schließen dürfen. nen in .txt, .html und .tex erzeugt. Aus den Das Indizieren und Suchen haben Komple.tex-Dateien entsteht in Verbindung mit PDFxitätsklassen aus O(n) mit n:Anzahl der Ar-LaTeX das Programmierhandbuch [pcaph]. beiten. Unterstellt wird, das die Zahl der DoÄnderungen sind somit sofort ohne Aufwand kumente pro Arbeit, und Größe der Metadain der Dokumentation repräsentierbar. ten (Autoren pro Arbeit, Länge der Abstracts) Mit beispielsweise perldoc ./suche. nicht beliebig wächst auch wenn PCA diesbe- pm könnensich PCA-Programmierer oder züglich nicht limitiert ist. technisches Personal die Dokumentationen Speicherzugriffe und Rechenzeit sind nicht von der Kommandozeile aus ansehen. das Problem da die Metadaten (welche die eigentlich verwalteten Daten darstellen) klein Es gibt ein Skript das die Module durchsind. Die Plattenzugriffe sind der Flaschensucht und auflistet, welche Funktionen nicht hals für zukünftiges Wachstum. Die Volltextdokumentiert wurden oder wenn Dokumentasuche wird hier nicht betrachtet. tion für eine nicht existente Funktion (Tipp-Bis 1000 Arbeiten sind keine Probleme zu fehler im Funktionsnamen) vorliegt. befürchten. Danach wäre zu überlegen, be-Durch Einbau von exit; in die Shellstimmte Verwaltungsaufgaben nur noch an-Skripte konnte dahinter POD-Dokumentation zustoßen und über shell-Skripte auszuführen. untergebracht werden. Somit konnten auch Die Daten aus einer Datenbank zu lesen wäre die Shell-Skripte vernünftig dokumentiert und für das Einlesen eine gute Idee, da aber immer deren Anleitungen im Programmierhandbuch noch viele HTML-Dateien zu erzeugen sind, abgedruckt werden.
wäre das nur ein Verzögern des Problems. In-Auch das Verwalterhandbuch kann per krementelles Ausrechnen nur der geänderten Skript automatisch neu erstellt werden. Die Dateien wäre eine weitere Optimierungsmög-Texte sind aber (bis auf einen Abdruck der lichkeit. Es ist immer zu überprüfen welche aktuellen Konfiguration) alle mit der Hand er-Dateien in den Ordnern liegen was man nachts stellt worden.
machen und dann zwischenspeichern könnte. So integriert wie bei Java, wo jede Klasse Bei 10.000 Arbeiten sollte man besser alles mit jeder benutzten Klasse verknüpft ist und nachts ausrechnen lassen oder nur inkremenviel vollautomatisch erkannt und verknüpft tell diejenigen Dinge neu ausrechnen die sich wird, ist die Dokumentation von Perl nicht. auch geändert haben. Ähnliche Überlegungen könnten für den
6.7 Komplexität benötigten Plattenplatz und wichtiger, den benötigten RAM-Bedarf angestellt werden. Die Problematik für die Laufzeit von CGI--Durch Verwendung von DBM-Dateien für die Metadaten sind für die Suche keine kom-Programmen ist folgende: PCA wird über CGI-Skripte verwaltet. Internetbrowser bre-pletten Sammlung beispielsweise aller Ti-
78
6 Implementierung
tel und wichtiger, der Abstracts (weil die-oft nicht. Das soll hier aber nicht weiter bese größer sind) im Hauptspeicher. Beim Er-trachtet werden.
zeugen der HTML-Listen sind allerdings der
Bequemlichkeit halber alle Daten in einer
6.9 Diverses
großen Datenstruktur zugreifbar so das dann der größte Hauptspeicherbedarf besteht. Die
Wie schon in 5.14 (S. 67) folgen hier Din-
Indizierung der Volltextsuche ist die Aufga-ge die einen leichten Schimmer auf die vie-be von SWISH-E welches laut eigener Web-len Details der Implementierung geben. Eine
seite schon etwas Speicher braucht was aber
Begründung wird oft nicht gegeben und eine
bisher auf dem aktuellen PCA-Rechner kein
Vorstellung der (wie immer vielen) Alternati-
Problem war.
ven entfällt auch.
Eine kurze Bewertung: So lange Festplatten und RAM-Speicher schneller wachsen als
und weitere werden nicht erwähnt da sie
schon vorhanden waren und nicht installiert werden mussten. Auf die verschiedenen Lizenzsysteme und speziell philosophische Diskussionen darüber man den Browser nicht darauf warten wird nicht eingegangen. Schnipsel aus Man-
Pages oder der Dokumentation zu benutzen dürfte nicht darunter fallen. Ebenso kann damit nicht gemeint sein, per
#include
in C auf Bibliotheken zuzugreifen so lange diese nicht statisch sondern dynamisch verlinkt
werden. Die Lizenzen greifen vermutlich erst dann, wenn die durch die Lizenz abgedeckletzte Glied wartet. Mit
Proc:Daemon
ten Quelltexte ganz oder teilweise in eige-
nen Quelltexten benutzt (mit Copy-and-Paste übernommen) werden. Dann muss man evtl. anderen seine Texte zur Verfügung stellen oder was die Lizenzen sonst verlangen. The Proc::Daemon::Init func-
Das viele weitverbreitete Produkte (MyS-QL, BerkeleyDB, Java, ...) eigene oder um eigene Ergänzungen erweiterte GPL-Lizenzen
haben erleichtert die Auswahl von Software 79
6 Implementierung
PAL: Perl Artistic License [pal]
staPi: ’same terms as Perl itself’
Tabelle 6.6: Selber installierte Software
from the controlling terminal). 3 Forks another child process and exits first child. This prevents the potential of acqui-
ring a controlling terminal. 4 Changes the current working directory to "/". 5 Clears the file creation mask. 6 Closes all open file descrip-Funktionen einfach mitbenutzt werden tors. konnten. Eine weitere KV-Datei enthält
Das CGI-Programm hat durch das fork() alle Informationen vom Eltern-Prozess
weitern.
geerbt und kann dann das Skript zur Volltextindizierung starten. Datei-Funktion: Eine zentrale Funktion ist
Programmier-Stil: Es gab kein Schema für die Funktionsnamen. Diese wurden ähnlich benannt wenn es um dieselben Dinge geht. Auch gab es keine Vorgaben für die Benennung von Variablen.
Konfiguration: Hier sind wichtige Daten enthalten. Durch den zentralen Ansatz und den fast vollständigen Verzicht auf Pfadangaben in den Quelltexten (nur der Pfad auf die Konfigurationsdatei muss irgendwo stehen und die Pfade für Fehler-Logs
80
6 Implementierung
nis wo die HTML-Listen liegen) mit dem Konfigurationswert für
list_keywords_fname_all
zu einem Pfad verbunden und zurückgeliefert. Die Funktion kann auch mehrere zusätzliche Argumente (meist die PCA-Nummer) in die Pfade einbauen:
get_fname($CONF,’abstract_ fname’,$num);
gibt den Pfadnamen zum Abstract zu PCA-Nummer
$num
zurück.
Da einige Dateien auch als URL angeboten werden müssen, gibt es auch eine zentrale Funktion für URLs welche mit get_url($CONF,’abstract_ url’,$num) beispielsweise die URL zum dem Abstract von Arbeit $num zurückliefert. Diese Funktion kennt aber nur fünf Url-Typen da nicht so viele verschiedene Seiten-Arten existieren.
Keyword-Liste: Diese wurde eingebaut um eine Statistik über die verwendeten Key-words anzubieten und die Autoren zu motivieren beim Anmelden vorhandene Keywords zu benutzen. Diese Statistik wird bei der Anmeldeseite verlinkt. Dort stehen die Keywords und deren Anzahl. Über Links können diese Keywords dann direkt in der Suchmaschine gesucht werden um die passenden Arbeiten aufzulisten.
Newsletter-Listen bearbeiten: Da CGI stateless ist, kann nicht einfach die Liste mit den Newsletter-Anmeldungen in einem CGI angeboten, die Keys email_1 .. email_123 genannt und dann das Ergebnis komplett wieder in die Liste geschrieben werden. In der Zwischenzeit könnten sich nämlich neue Interessenten in den Newsletter eingetragen haben. Das Verwaltungsformular hätte dann eine nicht aktuelle Version der Da-
81
7 Schlussbemerkungen
Zunächst werden das Ergebnis und die ve nutzbar welche mit denselben Metadaten nicht erreichten Aufgaben beschrieben. Dann auskommen und Nummern als Strukturierung folgt ein Ausblick auf das Verhalten bei für die Arbeiten benutzen. Die Verwaltung ist Wachstum, gefolgt von Problemen im Hin-nicht konfigurierbar aber das sind interne Seiten welche nicht optisch anzupassen sind. Für blick auf Individualsoftware und Wartung sowie alternative Vorgehensweisen. andere Metadaten wären die Skripte zu erweitern.
Kurzes Gedankenspiel: Wenn ROA seine
Technik nicht mehr haben wollte, wäre es 7.1 Das Ergebnis
schnell möglich dort die PCA-Technik einzusetzen. Zwei Stunden wären großzügig für die
Das System läuft und tut was es soll. PCA
Konfiguration anzusetzen, ein Tag für die In-ist einfach und vielleicht sogar primitiv, er-
stallation von SWISH-E und von Zusatzmo-
füllt seine Aufgabe aber, ist in den beschrie-dulen da bei so etwas schnell unerwartete Pro-benen Grenzen sicher und hat zum aktuellen
bleme auftreten. Die Vorlagen zu ändern wä-
Zeitpunkt nur einen bekannten „Schönheits-re zeitaufwendiger, aber das läge im Aufga-Fehler“: Der Upload von Dateien macht
benbereich der Auftraggeber. Ebenso wäre bei
bei der Windows-Installation Probleme wenn
Umzug auf einen neuen Webserver ein Tag
eine unpassende Kombination aus Apache
Arbeit anzusetzen. Mit Backups das System
(Windows-Apache) und Perl (cygwin-Perl)
wieder aufzusetzen könnte in einer Stunde ge-
benutzt werden. Ein echter Fehler ist das nicht
weil das Produktivsystem unter Linux und Apache läuft und dieser Fehler dort nicht auf-
haben (4.2, S. 13) wurde durchgehalten.
tritt. Alle anderen Funktionen (Anmeldung, Abstract hochladen, Verwaltung, Indizierung, Suche in Metadaten und Volltext) funktionie-
7.2Nicht erreichte Ziele ren einwandfrei auch unter Windows. Wäre
es ein kommerzielles Projekt, könnte es problemlos bei potentiellen Kunden auf einem Windows-Laptop vorgeführt und konfiguriert werden.
Die Ausgaben und die Programmlogik sind Ein Virencheck wäre mit F-Prot und dosemu recht gut (aber nicht perfekt) getrennt. Durch unter Linux möglich gewesen. Allerdings bedie Vorlagen lässt sich das gesamte Ausse-nötigt dies ein MS-DOS was neben dem Inhen der Seiten und der Emails die Besucher stallationsaufwand des PC-Emulators und der erhalten von den Site-Betreibern ändern (5.3, Integration mit der Unix-Umgebung den Er-S. 42). Somit wäre das System ohne jegliche werb einer MS-DOS-Lizenz oder den Einsatz Neuprogrammierung auch für andere Archi-freier DOS-Versionen wie FreeDOS [freedos]
82
7 Schlussbemerkungen
oder OpenDOS (nur eingeschränkt frei [open-Das Problem hat sich inzwischen dadurch dos]) erfordert hätte. Die direkt unter Linux entschärft das das verbreitete PDF-Format lauffähigen und mir bekannten Virenscanner schon komprimiert ist und dafür eine zusätzsind kommerziell. Also wurde darauf verzich-liche Kompression nicht nötig ist. Bei Word-tet und die Verwalter müssen selber nach Vi-Dokumenten könnte eine Kompression allerren suchen. Dazu können sie auf viele freie dings schon zu geringerem Transfervolumen und kommerzielle Scanner unter Windows führen was aber erst bei vielen Downloads zurückgreifen. (in Folge vieler Besucher in Folge vieler an-Anfangs wurde geplant das Hochladen der gebotener Dokumente) von Interesse ist. Der Dokumente und des Abstracts über einen Vorteil von ZIP wäre, das ein Link auf die FTP-Server zu erledigen. Stattdessen wurde Site, die Arbeit und der Abstract zusammen das System so implementiert das Abstracts in einer ZIP-Datei angeboten werden köndirekt über die Web-Seiten eingegeben und nen. PCA kann problemlos auch Archive zum Download anbieten, diese wären aber von den die Dokumente per CGI hochgeladen werden können. Das erspart den zusätzlichen Betrieb Verwaltern selber zu erstellen und hochzulaeines FTP-Servers und die damit verbunde-den.
nen Sicherheitsüberlegungen und den zusätz-Die Suche wurde auf die Volltexte der Arlichen Aufwand. beiten erweitert obwohl dies nicht ausdrück-Auf eine Kompression der Arbeiten wurde lich gefragt war.
verzichtet. Das gzip-Format (oder inzwischen bzip2) ist bei der Haupt-Zielgruppe die Win-
dows verwenden dürfte, nicht allzu verbreitet. 7.3 Erweiterungen und die
ZIP wäre sinnvoll gewesen aber die Verwal- nächsteZukunft
tung wäre aufwendig geworden da ein Überblick über komprimierte, nicht komprimierte Änderungen am optischen Aussehen können und nicht zu komprimierende Dateien nötig von den Verwaltern vorgenommen werden. ist. Das foo.doc.gz die komprimierte Ver-Neue Aufgaben kommen hinzu wenn das Syssion von foo.doc ist, ist auch für ein Skript tem mehr Dokumente enthalten sollte: Dann leicht ersichtlich. Aber ob in foo.zip jetzt müsste die Suchfunktion überarbeitet werden, auch wirklich foo-chapter1.doc, . . . , nur die ersten paar Dokumente anzuzeigen foo-chapter5.doc und foo-title. oder ein Blättern in den Suchergebnissen zu doc enthalten sind, ist nur durch Hineinerlauben. Angesichts der geringen Zahl eingeschauen in die Archive möglich. Ein einfatragener Arbeiten ließ sich dies nicht sinnvoll ches Shell-Skript das pro Arbeit eine Ziptesten weswegen es nicht implementiert wur-Datei erzeugt wäre schnell geschrieben käme de. mit mehrteiligen Arbeiten oder Arbeiten in
mehreren Formaten nicht gut klar da dann Heuristiken anzusetzen wären ob
123.doc
oder
123.pdf
oder beides im ZIP-Archiv ar-Ein Virentest von Dokumenten wäre bei einer chiviert werden soll. Ein graphisches Verwalhöheren Zahl von Anmeldungen zur Entlastungsprogramm als CGI-Programm hingegen tung wünschenswert. braucht wegen der umfangreicheren Funktio-Da die Seiten momentan statisch sind, nalität die graphisch anzubieten wäre ein Vielfaches der Entwicklungszeit. braucht nur die Suchfunktion mehr Rechen-
83
7 Schlussbemerkungen
zeit wenn die Besucherzahl steigt. werden.
Im Nachhinein hätte man direkt alle Meta-Viele Webseiten bieten inzwischen Foren Daten als Properties von SWISH-E speichern zu Berichten oder Nachrichten-Texten an. und nur per SWISH-E suchen können. Die Eine Kommentierungsfunktion für Arbeiten Volltextsuche wurde aber später hinzugefügt oder ähnliche Dinge könnte weitere Besucher weswegen das kein Designfehler ist sondern und vielleicht potentielle Anbieter von Areine Möglichkeit zur Ablösung der aktuellen beiten anziehen. Das würde dann den Auf-Metadatensuche darstellt. wand rechtfertigen der mit der immer nötigen Soll eine Teilnahme an DINI erwogen werÜberwachung von Foren verbunden ist. Auch den muss das Programm erweitert werden, könnte man als Personalisierung anbieten, bei die dazu nötigen Metadaten in den passen-Aktualisierungen einer Arbeit oder Veröffentden Formaten zu erzeugen oder es können lichung ähnlicher Arbeiten informiert zu werper Skript von einem Drittprogrammierer diden. Dieser Aufwand lohnt aber erst bei einer rekt die PCA-Metadaten ausgelesen und dargut besuchten Site. aus passende Informationen erzeugt werden. Müssten für DINI oder aus anderen Grün-
den neue Attribute (beispielsweise ein tag- 7.4Alternative
genaues Datum oder eine weltweit eindeuti-
Vorgehensweisen
ge ID) hinzugefügt werden, wären die Skripte entsprechend zu erweitern. Die Struktur Dieser Abschnitt stellt die Überlegungen inist nicht optimal dafür ausgelegt allerdings klusive Bewertung dar die bei einer Aufwurden möglichst wenig Codezeilen durch tragsvergabe an eine wirtschaftlich orientier-Copy-and-Paste wiederverwendet und meist te Softwarefirma abgelaufen wären. Dort wäeine Funktion für wiederholte Tätigkeiten gere es darauf angekommen, schnell und einfach schrieben. Dadurch sind manche Dinge recht das Ziel zu erreichen. einfach zentral zu ändern. Mit 3000 Testdatensätzen (Die Liste der Als das System geplant wurde, waren Arbeiten von Project Gutenberg [gutenberg]) XML, XSLT, XHTML und PHP noch nicht läuft es problemlos und auch die Suchfunk-allzu ausgereift. Es sind zwar mächtige Techtion auf den Metadaten (Titel, Autor) arbei-niken aber wie dieses Dokument das ohtet ohne nennenswerte Verzögerung. Somit ne Sicherheitsüberlegungen deutlich kürzer kann PCA bis 1000 Arbeiten als zukunftssi-wäre in Verbindung mit Pressemitteilungen cher gelten. Die Volltextsuche und Suche in über Sicherheitslücken [heise2003a] andeuden Abstracts konnte mangels umfangreicher tet: Simple Sicherheitsüberlegungen werden Dokumentsammlungen nicht in diesem Aus-oft unterlassen und die Systeme nicht gemaß getestet werden. nug beherrscht oder überblickt. Das jemand Die Software ist momentan nicht das Pro-XML, XHTML, XSLT im Zusammenspiel blem bei PCA. Die erste Frage ist, ob es bei beherrscht und diese korrekt, sicher und efder entsprechenden Zielgruppe bekannt genug fizient einsetzt ist somit unwahrscheinlich. ist und benutzt wird. Das zweite wäre, das die Den Auftrag auf viele Personen (Berater, potentiellen Anbieter von Arbeiten dieses An-Programmierer, XML-Programmierer, XSLTgebot auch nutzen. Dann schafft es PCA viel-Programmierer, Datenbankverwalter, Screen-Designer, Marktforscher) zu verteilen war in leicht, eine genügend große kritische Masse zu erreichen um eifrig besucht und benutzt zu den Hochzeiten des neuen Marktes üblich, in-
84
7 Schlussbemerkungen
zwischen ist aber wieder sparen angesagt und ben die evtl. die Anforderungen zum Anbiekomplexe Systeme sollen von möglichst we-ten der Arbeiten abdecken. Die Arbeit des nigen Personen entwickelt und eingerichtet Systementwicklers bestünde dann in der Auswerden. wahl und Konfiguration der entsprechenden Der Aufwand für vernünftige Programmie-Module. Ein (von Virentest und inhaltlicher rung ist sehr hoch. Durch Verwenden vorhan-Überprüfung abgesehen) vollständig compudener Perl-Module hätte dieser (im Tausch ge-terunterstützter Ablauf wie er momentan in gen die Zeit zum Erlernen der Module) viel-PCA vorhanden ist, ist bei einer geringen Zahl leicht etwas verringert werden können. Viel-von Anmeldungen nicht nötig. Man könnte leicht existieren auch brauchbare Frameworks beispielsweise per Webformular alle Anmelfür CGI-Basierte Oberflächen. Wie an Abb. dedaten ohne weitere Überprüfung als Mail 5.2 (S. 45) deutlich wird, handelt es sich oft versenden lassen und dann mit Copy-andum Arbeitsabläufe (Workflows). Deren opti-Paste in die entsprechenden Verwaltungsfunktionen der PHPNuke-Download-Module einsche Gestaltung und beispielsweise das Platzieren der Schaltflächen und Eingabeelemen-tragen. So wäre schnell ein lauffähiges Syste und das Ausprobieren kostet oft ein Viel-tem herausgekommen wenn der Entwickler faches der Zeit, die das Programmieren der einen Überblick über das vorhandene Angeeigentlichen Logik benötigt. Die Programm-bot an Modulen hat. logik ist bei diesen Systemen eher primitiv. Das Problem der Wartung und Pflege von PCA wie es jetzt ist und auch bei anderer Im-Oft sind nur ein paar Datenquellen anzuzapfen und Eingabedaten aus einem Formular in plementierung (z. B. wie gerade skizziert) ist persistente Datenbehälter (SQL-Datenbank, ähnlich: Momentan kann nur ich PCA war-Text-Datei) zu schieben wofür heutzutage ef-ten. Die Dokumentation ist umfangreich aber fizient zu benutzende (mit wenigen Zeilen das System besteht aus vielen Teilen was jezu programmierende) Bibliotheken existieren. manden anfangs erschlägt. Auch sind immer Viel Zeit geht auch für die Programmierung genau die Details nicht dokumentiert die man der Überprüfung der Daten verloren. Ob es gerade braucht. passende Validierungsmodule für so etwas PHP-Systeme muss auch jemand instalgibt ist mir nicht bekannt. lieren und bei Bedarf erweitern. Bei Weg-Individualsoftware hat den Vorteil, genau gang der Person welche das System konfiguden Wünschen des Auftraggebers entsprechen riert hat, wäre sämtliches Know-how verlozu können. Andererseits ist der Programmier-ren. Eine Hilfskraft die sich darin einarbei-aufwand hoch und Konfigurieren von vorhan-tet muss man finden und wie bei den verdener Software scheint oft schneller und da-schiedenen Distributionen für Linux (Suse, mit billiger zu sein. Debian, Mandrake, RedHat-Admins kennen Eine alternative Implementierung bestünde meist nur ihr System und sind oft abwertend gegenüber den anderen Systemen eingedarin, sich die vorhandenen PHP-Systeme anzuschauen. Mit PHPNuke [phpnuke], PostNu-stellt) hat die neue Hilfskraft genau mit andeke [postnuke] und anderen Abkömmlinge von ren PHPNuke-Abkömmlingen gearbeitet und
PHPNuke gibt es einige CMS-Systeme unter PHP welche sich einer großen Beliebtheit erfreuen und durch zahlreiche Module erwei-Firmen zu übergeben hat den Nachteil das diese Firmen oft Wartungsverträge verkaufen tert werden können. Es soll einen großen Satz von Downloadmodulen für diese Systeme ge-wollen und man dann beispielsweise 50 Eu-
85
7 Schlussbemerkungen
ro pro Monat für „nichts“ bezahlt. Die Sicherstellung der Betriebsbereitschaft hat ihren Wert, der aber oft nicht als geldwert eingestuft wird. Auch wollen Firmen nach einer Weile nichts mehr von Ihrem System wissen oder fordern für Erweiterungsarbeiten enorme Summen.
Eine andere Möglichkeit läge darin, beispielsweise bei SourceForge.net [sourceforge], „the world’s largest Open Source software development website“ [sourceforge], oder unter den CMS-Systemen (für beispielsweise PHP) ein passendes Projekt zu finden welches zukunftssicher erscheint und vielleicht von mehreren Professoren für jeweils deren Forschungsarbeiten auf mehreren Websites in unterschiedlichen Designs aber mit selber technischer Basis benutzt und von die Wartung gemeinsam bezahlt wird. Diese Idee wäre technisch interessant aber Personalressourcen zu teilen ist nicht jedermanns Sache. Hochschulrechenzentren könnten mit solch einem Dienst vielleicht ein Geschäftsmodell aufziehen da so etwas für viele Fachgruppen interessant wäre, der Aufwand für vernünftige Lösungen hoch ist wie diese Arbeit andeutet.
86
7 Schlussbemerkungen
Literaturverzeichnis [heise2002c 22. Nov 2002] : Kommer-
[ct2001a2001] SVEN LENNARTZ: Dynamische Seiten - Server Side Includes richtig einsetzen. In: c’t (2001), Nr. 20, S. 224
[ct2002a 2002] DANIEL NABER: Schotten dicht - Typische Programmierfehler bei [heise2002d 28. Apr 2002] :
E-
CGI-Skriptenund Anwendungen vermei-
den. In: c’t magazin für computertechnik (2002), 12, Nr. 24, S. 220-222
[golem2002a 30. Okt 2002] : setzt auf PHP.
[heise1997a] :
griffsdatum: 19. Jan 2003 heit* webserver“ bei Heise Newsticker.
[heise2000a 26. Okt 2000] : Hintergrund:
[heise2002a 2002] JÜRGEN SEEGER: Leserumfrage 2002: Trends 2002. In: iX - Magazin für professionelle Computertechnik (2002), Nov, Nr. 11, S. 12-.
datum: 4. Jan 2002
[kelter2001b 2001] UDO KELTER: Daten- [heise2002b28. Dez 2002] : Skriptbanksysteme I. 22. Okt 2001 2001 sprache PHP in neuer Version.
87
Homepages
musings/opensource-indexers/. - Zugriffsdatum: 10. Okt 2002
[pal]
Zugriffsdatum: 10. Jan 2003
[cpan ] :
CPAN - Comprehensive Perl Ar-
[pcaph]
[pcavh]
SWISH-SEARCH - SWISH-e Searching Instructions - CGI Danger!. -[roamarburg ] : European Mirror of the
[fastcgi ] :
FastCGI Home.
- URL
http:
Not Cited
[freedos ] : The FreeDOS Project |Welcome.
7 Schlussbemerkungen
[webalizer ] :
Home of The Webalizer.
[postnuke ] : PostNuke Navigation. - URL
[imdb ] :
The Internet Movie Database.
-
URL http://www.imdb.com/. - Zugriffsdatum: 10. Jan 2003
[gutenberg ] : Project Gutenberg official ho- [gshb] : IT Grundschutzhandbuch des Bun-
[avmz] : Medienzentrum (home). - URL
[mysql ] :
MySQL: The World’s Most Po-
datum:10. Jan 2003
[oai ] :
[opendos ] : OpenDOS Unofficial Home Pa- 12.Jan 2003 [sapdb ] : SAP DB - The FREE Enterprise
[perl ] : Perl Development - Eine von vie- [searchtools] : Searchtools. -URL [php ] : PHP: Hypertext Preprocessor.
- URL
http://www.php.net.
- Zugriffsdatum: 11. Jan 2003 ging es nicht
[phpnuke ] :
PHP-Nuke.
- URL
http:
89
7 Schlussbemerkungen
[sourceforge ] : SourceForge.net. - URL http://sourceforge.net/. - Zugriffsdatum: 12. Jan 2003
[swishe ] : SWISH-Enhanced. - URL http://swish-e.org/. - Zugriffsdatum: 6. Jan 2003
[tucows ] : Tucows Downloads - Download freeware and shareware software. - URL http://www.tucows.com/. -Zugriffsdatum: 10. Jan 2003
[unibibz ] :
Universitätsbibliothek Siegen -
Zugriffsdatum:26. Jan 2003
[ctan ] :
Welcome to CTAN: the Comprehen-
Jan2003
[w3org ] : World Wide Web Consortium. -URL http://www.w3.org. - Zugriffsdatum: 10. Jan 2003
[zend ] : Zend - The php Company. - URL http://www.zend.com. - Zugriffsdatum: 19. Jan 2003
Not Cited
URL http://www.cygwin.com/. -Zugriffsdatum: 10. Jan 2003
90
Arbeit zitieren:
Peter Böckmann, 2003, Ein Internetarchiv für elektronische Dokumente: Entwurf und Implementierung, München, GRIN Verlag GmbH
Dieser Text kann über folgende URL aufgerufen und zitiert werden:
Einbetten
DOI
Formatvorlage (Microsoft Word) für eine Diplomarbeit, Masterarbeit, Ha...
Für MS Word 2003 - Update 2010
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Formatvorlage (OpenOffice) für eine Diplomarbeit, Masterarbeit, Hausar...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 35 Seiten
Formatvorlage / Vorlage zur Erstellung einer Diplomarbeit, Bachelorarb...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 15 Seiten
Formatvorlage / Vorlage für eine Diplomarbeit / Hausarbeit
Für MS Word 2007 - dotx
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 25 Seiten
Anleitung zum Erstellen schriftlicher Arbeiten: Der Aufbau einer wisse...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 20 Seiten
Erstellen einer schriftlichen Hausarbeit
Vorlagen, Muster, Formulare, Infobroschüren
Hausarbeit, 14 Seiten
Grundtechniken wissenschaftlichen Arbeitens
Bibliografieren - Reden - Schr...
Vorlagen, Muster, Formulare, Infobroschüren
Skript, 46 Seiten
Ratgeber zur Erstellung wissenschaftlicher Arbeiten. Diplomarbeiten - ...
Vorlagen, Muster, Formulare, Infobroschüren
Ausarbeitung, 39 Seiten
Peter Böckmann hat den Text Ein Internetarchiv für elektronische Dokumente: Entwurf und Implementierung veröffentlicht
Peter Böckmann hat einen neuen Text hochgeladen
Medea - Entwurf und Implementierung eines objektorientierten Framework...
Stefan Etschberger
HdA Dokumente zur Architektur 21/22 position alltag
architecture in the context of...
Ellen Bareis, Gabu Heindl, Ernst Hubeli, Otto Kapfinger, Nils Norman, Marc Ries, Riklef Rambow, Markus Bogensberger, Susanne Baumann-Cox, Maria Nievoll, Drehli Robnik
Marktstudie Output Management: Elektronische Dokumente revolutionieren
Auswirkungen auf den Output Ma...
Heinrich Barta
Rechtssichere Transformation signierter Dokumente
Anforderungen, Konzepte und Um...
Sebastian Apfelbaum, Antje Brandner, Wolfgang Greska, Thomas Kunz, Dagmar Messingschlager, Alexander Roßnagel, Andreas U. Schmidt, Daniel Wilke
Entwurf und Simulation von Halbleiterschaltungen mit PSPICE
Anleitung zur sachkundigen Pla...
Haybatolah Khakzar
0 Kommentare