... Vorwärts fahren
22.02.24, 17:32
Viele der technischen Artikel, die ich so gern lese, fangen mit dem lapidaren Satz an, It took me some time to figure this out, und das begründet schön, warum die Leute davon erzählen wollen. Es hat gedauert, es war anstrengend, ich muss mir das aufschreiben, mach nicht diesen und jenen Fehler. Schaut her, was ich gekonnt habe. Nun ist, was ich in den letzten drei Tagen "gekonnt" habe, von wenig allgemeinem Interesse, denn es dreht sich um Datenbanken. Und zwar um die der Markttransparenzstelle für Kraftstoffe. Dort müssen alle oder fast alle Tankstellen ihre Preise melden. Ich weiß nicht genau, für welche Ausnahmen das nicht gilt, und ich weiß auch nicht genau, wie schnell eine solche Meldung erfolgen muss, tippe jedoch auf das behördengerechte "unverzüglich". Das passt dazu, dass die Behörde den Antrag, den man behördengerecht stellen muss, erst Monate nicht bearbeitet und dann verloren hat. Dann war übrigens Fasching, was tatsächlich nicht mich beeinträgtigt hat, sondern die Behörde selbst. Wer will schon jeden Tag arbeiten.
Nun ist diese Meldung also Pflicht, und so vermutet man ein einfaches Beispiel, dem man als mittelmäßig begabter Mensch folgen kann, um seine Pflicht zu tun. Doch nein, es gibt Datenschemata und Schnittstellenbeschreibungen, und hier und dort ein Wörtchen zur verwendeten Verschlüsselung. Mein erster Schritt bestand also darin, eine konforme XML-Datei aufzubauen, was abgesehen von einem peinlichen Tippfehler auch gelang. Anschließend versuchte ich, den Datenbankzugang mit curl herzustellen, weil mir schlicht nichts Besseres bekannt ist. Da die Datenbank nur einen HTTP 40x wirft, wenn sie mit dem curl-Kommando unzufrieden ist, dauerte das ein Weilchen. Dann muss man sich auf der Internetseite der Mobilithek noch zusammenreimen, dass Angebot und Publikation ein und das selbe sind oder zumindest die gleiche ID verwenden, und schon kann man nach der Log-Ausgabe auf das verschickte XML-File suchen. Warum es stets drei Logs für einen Versand sind, habe ich nicht verstanden, und die Begriffe "Organisation" und "Tankstelle" habe ich auch noch durcheinandergebracht. Herrjeh, ich bin nun mal kein Konzern. Ich bin ja nicht mal eine Tankstelle. Ich werde gefragt, ich baue etwas. Das ist meist schon alles.
In einigen Iterationen konnte ich nun also Tipp- und Denkfehler beseitigen. Dann ging es um die Automatisierung. Schließlich kann und will ich nicht den ganzen Tag damit verbringen, aus dem Fenster auf einen Preismast zu schauen, um dann von Hand Zahlen in eine Datei einzutragen und deren Versand wiederum von Hand anzustoßen. Vor allem ist mit der fehlerfreien Akzeptanz durch die Datenbank auch noch nicht bestätigt, daß die gemeldeten Daten richtig sind und richtig verarbeitet werden. Nur die innere Form der Datei stimmt schon mal. Ich bastle also hin und her, verbringe viel Zeit in Warteschleifen und sehe dann mehr durch Zufall in einer dieser Benzinpreis-Apps, dass die Tankstelle gelistet wird. Zwar parallel zu ihrem vorigen Eintrag, aber das war wohl nicht zu vermeiden. Und irgendwann stimmen auch die Preise. Ein erster Sieg. Die Automatisierung zieht sich, denn die Preise kommen aus einem Kassensystem, in dem ich auf keinen Fall herumbasteln möchte. Ich binde den Datenordner also von einem meiner dauerlaufenden Kleingeräte aus ein und schreibe an ein paar Funktionen: Extrahieren von Preisdaten und Änderungszeiten aus den Logfiles, Extrahieren von Preisdaten und Änderungszeiten aus der XML-Datei. Vergleich. Update bei Änderung. Und Versand. Das ist eigentlich alles, aber bis es dann stabil läuft und auf die meisten Kleinigkeiten reagieren kann, dauert es dann doch. So ein Netzlaufwerk muss schließlich immer mal wieder neu verbunden werden, wenn einer der beiden Rechner abgeschaltet war. Und Sommer- und Winterzeit sind auch zu beachten bei der Zeitmeldung. Außerdem bekomme ich den Versand sowieso nicht über einen Windows-PC hin, da curl unter Windows nicht das beliebte OpenSSL hinterlegt hat, sondern ein ranziges schannel, das mit der vorher wunderbar funktionierenden Syntax nichts zu tun haben möchte und immer wieder von irgendwelchen Zertifikatespeichern faselt, statt die Zertifikatsdatei zu fressen. Aber Windows braucht kein Mensch, und nach drei Tagen bin ich soweit, das Logging noch soweit zu reduzieren, daß ich Fehler auch wirklich finden kann, wenn denn welche auftreten. Dann gehen wir live, und ich will mich eben zurücklehnen und zuschauen, wie meine Arbeit arbeitet, da kommt eine Mail mit einer Anfrage für ein sehr interessantes Problem. Ich schließe also eine Menge Fenster, öffne einige andere, und was wollte ich noch gleich, wo bin ich hier, und warum dokumentiere ich meine Arbeit immer so miserabel?
Lustig an der Geschichte ist außerdem, daß es Firmen gibt, die mit dieser Dienstleistung Geld verdienen wollen. Üblicherweise im Abo, und üblicherweise nicht ganz günstig. Für die Konzerne kein Problem, die setzen eben einen Programmierer für einen Monat hin und haben das dann selbst im Griff. Aber für einen Handwerker ist das System typisch für unsere Bürokratie völlig überzogen und kaum bedienbar. Das treibt für die Kleinen die Kosten nach oben und spielt, wie es unsere Politik nur allzu gerne tut, den Konzernen in die Hände. Je mehr man lernt über die Schwierigkeiten, mit denen kleine Unternehmen kämpfen, umso mehr möchte man sie schütteln, die Großkopferten, aber nur ganz vorsichtig, wegen der "Delegitimierung".
Nun ist diese Meldung also Pflicht, und so vermutet man ein einfaches Beispiel, dem man als mittelmäßig begabter Mensch folgen kann, um seine Pflicht zu tun. Doch nein, es gibt Datenschemata und Schnittstellenbeschreibungen, und hier und dort ein Wörtchen zur verwendeten Verschlüsselung. Mein erster Schritt bestand also darin, eine konforme XML-Datei aufzubauen, was abgesehen von einem peinlichen Tippfehler auch gelang. Anschließend versuchte ich, den Datenbankzugang mit curl herzustellen, weil mir schlicht nichts Besseres bekannt ist. Da die Datenbank nur einen HTTP 40x wirft, wenn sie mit dem curl-Kommando unzufrieden ist, dauerte das ein Weilchen. Dann muss man sich auf der Internetseite der Mobilithek noch zusammenreimen, dass Angebot und Publikation ein und das selbe sind oder zumindest die gleiche ID verwenden, und schon kann man nach der Log-Ausgabe auf das verschickte XML-File suchen. Warum es stets drei Logs für einen Versand sind, habe ich nicht verstanden, und die Begriffe "Organisation" und "Tankstelle" habe ich auch noch durcheinandergebracht. Herrjeh, ich bin nun mal kein Konzern. Ich bin ja nicht mal eine Tankstelle. Ich werde gefragt, ich baue etwas. Das ist meist schon alles.
In einigen Iterationen konnte ich nun also Tipp- und Denkfehler beseitigen. Dann ging es um die Automatisierung. Schließlich kann und will ich nicht den ganzen Tag damit verbringen, aus dem Fenster auf einen Preismast zu schauen, um dann von Hand Zahlen in eine Datei einzutragen und deren Versand wiederum von Hand anzustoßen. Vor allem ist mit der fehlerfreien Akzeptanz durch die Datenbank auch noch nicht bestätigt, daß die gemeldeten Daten richtig sind und richtig verarbeitet werden. Nur die innere Form der Datei stimmt schon mal. Ich bastle also hin und her, verbringe viel Zeit in Warteschleifen und sehe dann mehr durch Zufall in einer dieser Benzinpreis-Apps, dass die Tankstelle gelistet wird. Zwar parallel zu ihrem vorigen Eintrag, aber das war wohl nicht zu vermeiden. Und irgendwann stimmen auch die Preise. Ein erster Sieg. Die Automatisierung zieht sich, denn die Preise kommen aus einem Kassensystem, in dem ich auf keinen Fall herumbasteln möchte. Ich binde den Datenordner also von einem meiner dauerlaufenden Kleingeräte aus ein und schreibe an ein paar Funktionen: Extrahieren von Preisdaten und Änderungszeiten aus den Logfiles, Extrahieren von Preisdaten und Änderungszeiten aus der XML-Datei. Vergleich. Update bei Änderung. Und Versand. Das ist eigentlich alles, aber bis es dann stabil läuft und auf die meisten Kleinigkeiten reagieren kann, dauert es dann doch. So ein Netzlaufwerk muss schließlich immer mal wieder neu verbunden werden, wenn einer der beiden Rechner abgeschaltet war. Und Sommer- und Winterzeit sind auch zu beachten bei der Zeitmeldung. Außerdem bekomme ich den Versand sowieso nicht über einen Windows-PC hin, da curl unter Windows nicht das beliebte OpenSSL hinterlegt hat, sondern ein ranziges schannel, das mit der vorher wunderbar funktionierenden Syntax nichts zu tun haben möchte und immer wieder von irgendwelchen Zertifikatespeichern faselt, statt die Zertifikatsdatei zu fressen. Aber Windows braucht kein Mensch, und nach drei Tagen bin ich soweit, das Logging noch soweit zu reduzieren, daß ich Fehler auch wirklich finden kann, wenn denn welche auftreten. Dann gehen wir live, und ich will mich eben zurücklehnen und zuschauen, wie meine Arbeit arbeitet, da kommt eine Mail mit einer Anfrage für ein sehr interessantes Problem. Ich schließe also eine Menge Fenster, öffne einige andere, und was wollte ich noch gleich, wo bin ich hier, und warum dokumentiere ich meine Arbeit immer so miserabel?
Lustig an der Geschichte ist außerdem, daß es Firmen gibt, die mit dieser Dienstleistung Geld verdienen wollen. Üblicherweise im Abo, und üblicherweise nicht ganz günstig. Für die Konzerne kein Problem, die setzen eben einen Programmierer für einen Monat hin und haben das dann selbst im Griff. Aber für einen Handwerker ist das System typisch für unsere Bürokratie völlig überzogen und kaum bedienbar. Das treibt für die Kleinen die Kosten nach oben und spielt, wie es unsere Politik nur allzu gerne tut, den Konzernen in die Hände. Je mehr man lernt über die Schwierigkeiten, mit denen kleine Unternehmen kämpfen, umso mehr möchte man sie schütteln, die Großkopferten, aber nur ganz vorsichtig, wegen der "Delegitimierung".
... Rückwärts fahren