Wie kann man Daten am besten historisieren? Viele Wege führen nach Rom – ich möchte an dieser Stelle einen beschreiben.
Möglichkeit 1: Man nutzt Frameworks in der Zielsprache. Zu erwähnen wäre Hibernate Envers oder Entity Framework Auto-History bzw. Audit.NET.
Möglichkeit 2: Man lässt das die Persistenz erledigen. Datenbank wie SQL Server unterstützen Temporale Tabellen. PostgreSQL hat Plugins – aber man ist auch gut beraten, selber Hand anzulegen – warum, zeige ich gleich. Temporal Tables sind im SQL:2011 Standard zu finden.
30.11.2021 Wir schreiben nun Ende November. Wir sind in einer sogenannten 4. PCR-Testwelle. Die Testwelle entstand durch das inzwischen gute PCR-Gurgel Angebot. Musste man letztes Jahr noch mehr als 100 EUR löhnen, so genügt es heute zum Bipa zu gehen, Tests zu holen und bei einer Tankstelle oder beim Billa wieder abzugeben.
Trotz des höheren Testaufwands sank die Anzahl der positiven Tests (Y-Achse: Anzahl der positiven Tests in % - Aktualisiert 28.12.2021)
Zu diesem Zweck hab ich mir von Oreilly 3 Bücher heruntergeladen und bin diese überflogen, um die Konzepte zu verstehen. Die in den Büchern vorgestellten Datenbanken verwendeten die sogenannte Gremlin Query Language. Trotzdem muss ich sagen: Ich war skeptisch – wie ich bei sehr vielen NoSQL Datenbanken skeptisch bin. Es gibt sicher einige gute (Cassandra, Redis, …) – aber viele scheinen mir auch klassische Sonntagsprojekte zu sein und haben niemals den Tiefgang und die Professionalität von e.g PostgreSQL.
Dabei kann man diverse Schritte zwischen C# und IL analysieren und auch manipulieren (in Form von Ergänzung). Die Manipulation macht unter anderem bei Aspekt orientierter Programmierung Sinn, wenn man Cross-Cutting-Concerns auslagern will. Das ging bis dato nur mit PostSharp gut. Vor- und Nachteile wurden hier im Detail abgehandelt. Ich habe Roslyn für die Analyse von Source-Code verwendet. Es funktioniert sehr gut. Die Challenge ist eher der Kompilierprozess per API – der ist ein wenig wackelig.
Es war im Jahr 2020. Das Frühjahr war durch Corona geplagt. Daher entschied ich mich für eine Umrundung von Tschechien und anschließend der Slowakei. Beim Wegfahren hat es bereits in Strömen geregnet. Nähe Bärenkopf die erste Pause. Die folgenden 2. Bilder schauten dann nicht mehr so heldenhaft aus.
Gefahren bin ich mit einer Stadler Track II Pro. Fairerweise muss ich sagen:
Der Flug von Wien nach Nizza war mit einem kurzen Stopp in Zürich verbunden. In Nizza bekamen wir ein tolles Mietauto: Toyota Corolla Hybrid – wirklich ein Top-Auto (leider auch der Anschaffungspreis – aber na gut). Von Nizza ging es über eine interessante Bergstrasse nach Castellane. Die Straßen sind nicht ungefährlich: auf einer Seite Fels – auf der andere Seite Abgrund – mit einer kleinen Steinmauer gesichert. Wenn ein ausscherender Bus um die Ecke kommt – spannend.
Begonnen hat die Planung mit: Wie komme ich überhaupt an den Start? Es gibt den Nachtzug nach Verona oder Feldkirch. Gegen einen geringen Aufpreis kann man das Motorrad mitführen lassen. Allerdings wollte ich dann in Zeiten von Corona auch nicht eine Nacht in einem 4rer Abteil mit Fremden verbringen. Also habe ich die Strecke so durchgeplant. Im Nachhinein: die Anstrengung war gigantisch – ich würde nie mehr eine so lange Strecke in so kurzer Zeit fahren – aber es war eine Once-in-a-Life-Experience – und daher ist es ok. Die Route hab ich von paesse.info und hab sie mit dem Tourenfahrer Magazin noch abgeglichen. Ebenfalls hab ich sie mit der Seite eines Guides gegengechecked, mit dem ich eine Woche in Rumänien in einer Gruppe war.
PostgreSQL unter Windows 10 Windows 10 mit Docker Desktop und WSL2 funktioniert einfach super. Man hat die Einfachheit von Windows gepaart mit der Power von Linux. Auf dem Entwicklerrechner habe ich daher:
version: "3.1" services: db: image: postgres command: ["postgres", "-c", "logging_collector=on", "-c", "log_directory=/var/log/postgresql", "-c", "log_filename=postgresql.log", "-c", "log_statement=all"] restart: always environment: POSTGRES_PASSWORD: postgres volumes: - postgres-volume:/var/lib/postgresql/data - ./init.sql:/docker-entrypoint-initdb.d/init.sql ports: - 5432:5432 volumes: postgres-volume: Gerichteter Graph Aufgabenstellung war die Speicherung eines gerichteten Graphen inklusive Informationen pro Kante. In SQL schaut es wie folgt aus:
Corona hat das Land noch fest im Griff. Leider braucht man inzwischen auch einen Test für den Schneeberg - daher ging es nach Pottenstein und zurück nach Berndorf.
GPX
Da ich auch einige Zeit im Internet suchen musste, hier eine kurze Zusammenfassung:
Man kann das UPC Connect Modem in den sogenannten Bridge Modus schalten lassen. Dann agiert es nur mehr als „einfaches“ Modem und „schleift“ das Internet durch. Dazu musste ich den UPC Support anrufen – man wird dann auf IPv4 umgestellt und bekommt eine neue Firmware zugewiesen (dauert ein wenig). Danach kann man eine FritzBox kaufen, die ein WAN Port hat – das sind leider nicht viele – und von den aktuellen Modellen gibt’s sowieso nur eine: Fritz!Box 7590 Das WAN Port verbindet man dann mit einem der Ethernet Ports der UPC Connect Box. Wer Telefonie hat: bei der Fritz!Box ist ein Y Kabel und ein Adapter dabei. Y Adapter kommt ins DSL Port der Frtiz!Box – das andere Ende (analog Telefonie) in das 1. Port der UPC Connect Box. Man kann auch noch weitere Telefone an den Analog Ports der Fritzbox anstecken. Funktioniert alles Out-Of-The Box. Warum sollte man ein Analog Telefon über die Fritz!Box schleifen?