Technik im RailServer
Diese Seite ist unverändert aus der Zeit übernommen, als
es den RailServer noch gab...
Drinnen steckt HAFAS
Kern des RailServers ist die mit der CD "Elektronisches Kursbuch Deutschland"
der Deutschen Bahn AG bzw. auch mit den
"Elektronischen Städteverbindungen" gelieferte Fahrplansoftware
der Fa. HaCon GmbH, Hannover.
Es handelt sich dabei um ein (übrigens sehr gut
programmiertes) interaktives Programm zur Ermittlung von Bahnverbindungen;
ein Batch-Modus ist nicht vorgesehen. Ich kann die Software
nur jedem empfehlen, der diesen RailServer mehr als nur sporadisch
benutzt. (Bezug über den CD-ROM-Verlag)
Das Entschlüsseln der Datenstruktur gelang mir nur ansatzweise (die
Bahnhofsdatei und die Entfernungstabelle - Dateien PLANB und PLANK -
konnte ich verstehen, den Rest nicht). Die Firma wollte
verständlicherweise auch nichts verraten; sie bietet eine DLL zum
Einbau in eigene Programme an, die auf die Daten zugreifen kann.
Trick mit "Virtual User"
Kurzerhand programmierte ich das erste TSR-Programm meines Lebens
mit einer Turbo Pascal-Uraltversion (normalerweise arbeite ich mit
Visual BASIC). Dieses simuliert anhand eines vorgegebenen kleinen
Programm-Skripts einen Benutzer, der auf bestimmte Fragen eines
Programms mit vorgegebenen Daten antwortet (also sowas wie
PROGRAMM.EXE < EINGABE.ASC, bloß "kontextsensitiv"). Ich
glaube, unter Un*x gibt es sowas standardmäßig (?).
Das Programm-Skript und die Daten können in einer Datei bereitgestellt
werden. Dazu gehört ein kleiner Compiler, den ich in VB/DOS realisiert
habe und der die benötigten komprimierten Programmskripte aus
dokumentiertem Quelltext erzeugt. Der Quelltext sieht vom Stil her
etwa so aus:
IF CURSOR AT 10,3
SENDKEY F3 #13
ELSE
SENDVAR Startbahnhof
END IF
Und noch ein paar Befehle mehr (GOTO, GOSUB, RETURN, was einem
BASIC-Programmierer halt so einfällt). Das Virtual-User-Programm
samt Compiler können Interessierte jederzeit von mir erhalten.
Vor- und Nachbearbeitung
Jetzt brauchte ich nur noch ein Programm, das eingehende Mails
analysiert, daraus die benötigten Variablendateien für den
"Virtual User" erstellt und die Ausgabe des HAFAS-Programms (eine in
eine Datei gedruckte Bahnverbindung) in eine Antwortmail
umformatiert. Das ging flott in Visual BASIC (für DOS),
allerdings ist die Ähnlichkeitssuche so lahm, daß ich
es demnächst in C neu schreiben will.
Datentransfer
Der Datentransfer vom/zum Mailhost funktioniert per Nullmodemkabel,
auf der DOS-Kiste, die das ganze abwickelt, ist "Telix" installiert.
Früher lief der RailServer zweimal am Tag bei mir zu Hause,
inzwischen steht ein Rechner in der Uni, der das die ganze Zeit
macht. Eine Umstellung auf &UUml;bertragung per NFS oder FTP wäre
angebracht, aber Zeit habe ich dazu bislang keine gehabt.
Beim Abholen wird wie folgt vorgegangen:
- alle anstehenden Anfragen abholen
- alle Antwortmails erzeugen (Löwenanteil der Zeit)
- alle Antwortmails ins Netz einspeisen und absenden
- zwei Minuten warten, ggf. PC rebooten
- goto 1
Welche Fehler auftreten
Manchmal bleibt die Software im Schritt 2 hängen. Die typische
Bearbeitungszeit für eine einzelne Anfrage liegt bei 5 bis 20
Sekunden, je nachdem, wie sehr die Ähnlichkeitssuche aufgrund
falscher Bahnhöfe den PC belastet. (Wie gesagt: Umstellung auf
C und einen schnelleren Rechner geplant...)
Wenn also der Statistik-Anzeige zu entnehmen ist, daß vor drei
Stunden 10 Anfragen zum Bearbeiten abgeholt wurden, dann liegt sicherlich
ein solcher Fall vor. Derzeit hilft da nur: Warten, bis ich es bemerke
(meist recht schnell) und behebe. Eine Mail an mich hilft nicht, da
ich den Zustand des RailServers stets noch vor dem meiner Mailbox
kontrolliere.
Befindet sich der RailServer laut Statistik-Anzeige hingegen länger
als 10 Minuten im "Wartungs"-Zustand (Schritt 4), dann ist es sehr
wahrscheinlich, daß ich gerade persönlich davorsitze und
herumbastele.
Dies sind alle Betriebsstörungen, die auftreten. Natürlich
kann es darüberhinaus auch zu falscher Bearbeitung von Anfragen
kommen, aber das sind dann Programmfehler, bei denen ich
i.d.R. für eine kurze Nachricht dankbar bin.
Studienarbeit
Ich habe mal eine Studienarbeit über den RailServer geschrieben,
die ich zwar nicht als HTML, aber im PostScript-Format
(mit gzip komprimiert) hier bereitstelle.
Frederik Ramm, 2001-04-25