Direkt zum Hauptbereich

Tagebuch

Auf meinem Rechner befindet sich ein Verzeichnis "Archiv". Dort schlummern alte Dateien, die für mich keinen aktuellen Nutzen mehr haben und meist nur noch aus Nostalgiegründen nicht gelöscht wurden: Texte die heute ganz schnell über Google gefunden werden könnten, schlecht geschriebener Programmcode, Studienarbeiten, Spiele, die nicht mehr laufen.

Das Stöbern in diesen Ordnern hat etwas arschlogisches. Manches ist thematisch einsortiert, manches chronologisch, manches geschichtet: Ein Ordner enthält die Dateien meines letzten Rechners, der ein Archiv des vorletzten Rechners bis zurück (oder hinunter) zu meinem ersten PC (Ordnername "p75").

Dort liegt auch ein Ordner "tageneu" und Dateien mit Namen wie 1996011120 und folgendem Inhalt:
FEBEBEMMJ

\yëêy }çê gâééêu{B

Von Verschlüsselung kann hier keine Rede sein, aber es reichte aus, um ein versehentliches Lesen von anderen Computernutzern zu verhindern. Außerdem verhindert die Codierung heute, dass ich es mal ebenso lesen kann.

Ich schrieb die Tagebucheinträge in einem Pascalprogramm, zu dem ich von der Fernsehserie "Doogie Howser, M.D." inspiriert wurde.

Später übernahm dann ein Delphi-Programm.

Der erste Eintrag ist aus 1996, der letzte aus 2000. Nach 20 Jahren wollte ich doch gerne wieder lesen, was mich damals so bewegt hat. Außerdem war es ein guter Anlass um ein kleines Progrämmchen zu schreiben:

import os

def main():
    file_paths = get_sorted_file_paths('/ganz/geheimer/lokaler/pfad/')
    diary_entries = read_all_diary_entries(file_paths)
    print_diary_entries(diary_entries)

def get_sorted_file_paths(directory_path):
    return sorted([os.path.join(directory_path, f) for f in os.listdir(directory_path)])

def read_all_diary_entries(file_paths):
    return [read_diary_entry(file_path) for file_path in file_paths]

def read_diary_entry(file_path):
    encoded_byte_stream = read_file_byte_stream(file_path)
    text = decode(encoded_byte_stream)
    header = build_diary_header_text(file_path)
    return f"{header}\n{text}"

def read_file_byte_stream(file_path):
    with open(file_path, "rb") as f:
        return f.read()

def decode(encoded_content):
    rotated_bytes = rotate_non_whitespace_bytes(encoded_content)
    return rotated_bytes.decode('CP437').strip()
    #return rotated_bytes.decode('Latin-1').strip()

def rotate_non_whitespace_bytes(values):
    return bytes([rotate_non_whitespace_byte(c) for c in values])

def rotate_non_whitespace_byte(value):
    return (value - 20) if value > 32 else value

def build_diary_header_text(file_path):
    name = os.path.basename(file_path)
    return f"----- {name[6:8]}.{name[4:6]}.{name[0:4]}, {name[8:]} Uhr -----"

def print_diary_entries(diary_entries):
    print("\n".join(diary_entries))

if __name__ == "__main__":
    main()

Als nervigstes Problem hat sich die Suche nach dem richtigen Encoding gestaltet. Zuerst hatte ich die Funktion chr() verwendet. Diese nutzt aber Unicode und hat damit die Umlaute und das ß verschluckt.

Daraufhin machte ich mich dann auf die Suche, nach der richtigen Codepage. Das dauerte jedoch, bis ich merkte dass die Dateien mit zwei verschiedenen Codepages geschrieben wurden. Das Pascalprogramm nutzte CP437 (MS DOS), das Delphiprogramm dann Latin-1 (Windows). Ich habe noch keine Lösung gefunden, wie das Skript nun selbsts herausfindet, welche Codepage die momentan richtige wäre.

Und was kam nun inhaltlich dabei heraus? Das behalte ich natürlich für mich. Aber drei Dinge können verraten werden:
  • Ich hatte meine damaligen schulischen Leistungen teilweise falsch in Erinnerung.
  • Ein angefangenes Point & Click Adventure harrt seit nun bald einem Virteljahrhundert auf Fertigstellung.
  • Ich habe damals definitiv zu wenig getanzt. Das kann mit diesem Lied aus dem Jahr 1996 ein wenig nachgeholt werden:

Kommentare

  1. Das automatische Auswählen der richtigen Codepage ist NP-vollständig :-) Ich glaube, es gibt nur heuristische Verfahren. Du könntest den Text dekodieren und dann schauen, ob du häufig verwendete Worte findest, etwa "und", "der" und "ich".

    AntwortenLöschen

Kommentar veröffentlichen

Beliebte Posts aus diesem Blog

Utopie gesucht

In den 90er Jahren gab es meiner Meinung nach eine positive Zukunftssicht. Das sah man u.a. in der Serie Star Trek The next generation. Heute dagegen scheint es nur noch pessimistische Blicke auf die Zukunft zu geben. Auch die aktuellen Star Trek Serien stellen eine düsterere Welt dar. Dies könnte zu einer selbst erfüllenden Prophezeiung werden. Gibt es in der aktuellen Popkultur noch Utopien?

Sächsisch vs. Sachsen-Anhalter Mundart

Ich bin Iron Man

Ich wünsche meinen Lesern noch ein gesundes neues Jahr und hoffe, Ihr seid gut reingekommen. Wir haben den Silvesterabend mit Essen, Dinner for one, Wii Maro Kard, Dawak und Hero Quest gefüllt, und ein klein wenig geknallert. Das jüngste Kind war am Ende nicht ganz zufrieden. Es hätte noch mehr geböllert werden sollen, und das Mama und Papa halb zwei schon ins Bett wollten war auch viel zu früh.   Nach meinem sehr kurzen aber etwas intensiven Ausdauertraining , fühlte ich in den letzten Tagen öfters ein komischen Herzverhalten. So als ob das Herz kurz einen anderen Rhythmus schlägt, Luft pumpt oder so. Keine Schmerzen, aber es fühlte sich halt seltsam an. Also wurde mir kurzerhand mal ein Langzeit-EKG verpasst. Natürlich trat in der Zeit das Symptom dann nicht auf. Aber es war auch eine LED an dem Gerät dran, die schön durchs T-Shirt geblinkt hat .   Dieses Wochenende hat es dann auch noch geschneit, so dass die Kinder eine Schneeballschlacht machen und wir Schneeschippen konn...