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:

  1. alle anstehenden Anfragen abholen
  2. alle Antwortmails erzeugen (Löwenanteil der Zeit)
  3. alle Antwortmails ins Netz einspeisen und absenden
  4. zwei Minuten warten, ggf. PC rebooten
  5. 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