04
Okt 19

Die Überreste einer einst an 3. Traffic-Stelle stehenden Webseite

Es sollte keine große Überraschung sein, dass die Langzeitverfügbarkeit von Internetinhalten eher so „mäh“ ist. In den letzten Jahrzehnten hat sich das Netz stark verändert. Das Silomodell machte Schule – vieles Eigene wurde Zugunsten der Plattformen aufgegeben und wer kann schon sagen, Herscher:in seiner eigenen Daten zu sein.

Natürlich gab es schon früher Plattformen. Einige davon verschwanden obwohl sie einmal der Platzhirsch waren. Populärstes Beispiel wahrscheinlich GeoCities, welches 2009 seinen Dienst einstellte. Einige Projekte machten es sich zum Ziel wenigstens einen Teil dieser Netzgeschichte zu bewahren. Wer sich für Details interessiert, sei auf das Wiki des Archive Teams verwiesen, welche GeoCities für die Nachwelt erhalten haben.

Die Sicherung des damaligen Homepage-Planeten brachte durchaus Kuriositäten hervor, wie z.B. GifCities1, wo man heute, bei vorhandener Geduld, damals eingesetzten Wackelbildchen durchsuchen kann. Andere Projekte (z.B. ReoCities) haben inzwischen selbst das Zeitliche gesegnet.

Was Künstler aus dem GeoCities-Archiv gemacht haben, kann man im Artikel „The Impulse of the Geocities Archive: One Terabyte of Kilobyte Age“ von Daniel Rourke (16.05.2013) über Olia Lialina und Dragan Espenschied und ihr Projekt One Terabyte of Kilobyte Age nachlesen. Meghan McDonough & Marcie LaCerte haben das Thema in diesem Jahr (20.09.2019) erneut aufgegriffen und berichtet in „The early internet is breaking—meet the people saving it“ ebenfalls über das Künstlerpaar.

Version 1.5 meiner ersten Homepage, natürlich mit Marquee-Effekt. Nicht im Bild: Farblich angepasste Scrollbalken. Ein Feature, welches nur der damals innovative IE beherrschte.

Erwähnt wird im Video/Artikel auch das Open Source Archivierungswerkzeug Webrecorder.io. Der ebenfalls von Rhizome, „Serviceleister“ für digitale Künstler, entwickelte Webrecorder Player könnte eine Option für mein eigenes Archivierungsproblem sein.

Edit: Oh je, ich bin Clickbait-geschädigt und produziere jetzt auch schon solche fürchterlichen Überschriften -_-“

  1. Katzengifs aus den 00er Jahren – anyone? []

03
Okt 19

Das Problem mit den dynamischen Inhalten: Alte Webserversicherungen zum Leben erwecken – Teil 2

Die Wahl haben zwischen Neuschreiben von altem Code oder doch Container anlegen, die mit alten PHP/MySQL-Versionen laufen. Es gibt noch eine dritte Möglichkeit, die jedoch voraussetzt, dass die Sicherungen auf den alten portablen Webservern unter WinXP noch einwandfrei funktionieren (was sie nur bedingt tun): Eine statische Sicherung der PHP-Ausgaben.

Alle drei Mölichkeiten sind mehr oder weniger – sehr – zeitaufwändig. Reverse Engineering hat das Problem, dass ich sowohl vor 10+ Jahren als auch jetzt ein absoluter Noob bin, was das Schreiben ordentlichen Codes angeht. Damals, weil es neu war – und heute, weil ich zuletzt vor etwa 10 Jahren wirklich aktiv gecoded habe. Seitdem ist viel passiert.

Mit einer steigenden Komplexität des Codes – Frameworks, Bibliotheken wird die Entwicklung einfacher/strukturierter – niemand muss das Rad mehr neu erfinden – doch die Komplexität dahinter steigt: viele Abhängigkeiten. Wird alles noch gewartet? Die Wetten, wie es in einem Jahr aussieht sind klar.

Trotz allem Aufwand wollte ich eines der Projekte wieder zum Leben erwecken. Was hat sich im letzten Jahrzehnt in PHP verändert? Wie funktionieren neue Funktionen? Es hat etwas befriedigendes, wenn dann nach und nach die PHP-Fehler verschwinden und die eigentlichen Inhalte ausgegeben werden. Und doch auch die traurige Gewissheit, dass es nicht sinnvoll ist, sämtlichen schlechten Code von damals in einer vermutlich ebenso schlechten Version wieder zum Leben zu erwecken. Bleiben die Optionen 2 und 3.


03
Okt 19

In die Kaninchenhöhle gefallen: alte Webserversicherungen zum Leben erwecken – Teil 1

Wenn nach langem Wunsch endlich ein Server zu Hause steht und die Idee aufkeimt, die Historie der eigenen Webseiten aus den Backups und portablen Webserver-Sicherungen an einer Stelle zusammenzuführen … und wieder zum Laufen zu bringen. Schließlich gibt es nichts schöneres, als sich über die Sünden der Vergangenheit zu amüsieren ^-^ – Augenkrebs und so (Hier am Beispiel der Crazylounge anno 2001).

Problem: Portable Webserver laufen nicht mehr. Genauer gesagt, die MySQL-Datenbank funktioniert unter Windows 10 nicht.

Versuch 1: Glücklicherweise funktioniert die Windows XP VM, welche ich bis vor gar nicht all zu langer Zeit noch zur Nutzung des Scanners einsetzte, nach wie vor einwandfrei. Der Webserver startet dort, inklusive Zugriff auf die MySQL-Datenbanken & phpMyAdmin. Dumm nur, dass in dem funktionerenden Webserver die betroffenen Datenbanken doch nicht drin waren.

Versuch 2: Internet-Suche bringt mich zur Anleitung „Recovering MySQL Files and Database Tables“ von Hetman Software. Mit Hilfe von MySQL Workbench können auch Datenbanken exportiert werden, deren Ordner aus dem ursprünglichen mysql-Verzeichnis in den mysql-Ordner einer bestehenden Datenbank hineinkopiert werden.

Nächster Schritt: Eine bestehende Datenbank muss her, also Docker-Container aufsetzen. Dieses Mal nicht in der Konsole sondern aus Bequemlichkeit direkt im Synology-Docker-Interface. Nicht vergessen die Variable MYSQL_ROOT_PASSWORD zu setzen.

Einrichten einer neuen Verbindung in MySQL Workbench: Hostname entspricht dem hostnamen des Servers, Port kann über docker ps herausgefunden werden. Klappt. Jetzt müsste ich die Ordner in den data-Ordner der Datenbank hineinkopieren …

Problem: Upload von Dateien in den MySQL-Docker-Container ist gerade etwas umständlich für mich.

Alternative: Eine MySQL-DB, die in Windows läuft und auf deren Verzeichnisse ich aus Windows heraus zugreifen kann, wäre doch etwas angenehmer. Glücklicherweise habe ich den Bitnami-WAMP-Stack noch nicht ins Nirvana geschickt, nachdem die darauf laufenden Services auf den Webserver umgezogen sind. Zugriff darauf klappt genauso wie das Hinzufügen der Ordner aus alten mysql-Ordnern.

Wie in der oben erwähnten Anleitung den Data Export für einen der alten Ordner anstoßen. Ich exportiere zu einer Self-Contained File inklusive Dump- und Schema-Instruktionen. Die Warnung, dass die MySQL-Version nicht übereinstimmt ignoriere ich. Mehr als schiefgehen kann es nicht, immerhin liegt mehr als ein Jahrzehnt zwischen den Versionen.

Anschließend nutze ich die Exportdatei um die Datenbank in der Docker-Datenbank zu importieren. Es werden Tabellen angelegt, in den Tabellen ist Inhalt der so aussieht, als sei er komplett. Zugegebenermaßen – inbesondere die frühen Datenbanken sind so basic, dass ich weniger Probleme erwarte.

Als nächster Schritt bleibt nun die große Aufgabe, den PHP-Teil der Webseiten wieder mit dem Datenbankteil zu verbinden. Denn natürlich möchte ich nicht mit einer PHP-anno-tubac-Version auf dem Server arbeiten. Dies ist ein größeres Projekt – oder ich finde eine Bibliothek, die mysql_* in mysqli_* transformiert. Aber nicht mehr heute.


29
Dez 18

WordPress-Update : Es scheint ja funktioniert zu haben

Die freie Zeit zwischen den Jahren habe ich genutzt, um den Schritt von WordPress 4.x auf 5.x zu wagen. Auf den ersten Blick sieht es gar nicht so schlimm aus, d.h. nichts offensichtliches ist kaputt gegangen. In wie fern dies für all die Anpassungen & Änderungen unter der Haube gilt, werde ich in den kommenden Tagen genauer prüfen müssen.

Definitiv gewöhnungsbedürftig ist der Gutenberg-Editor. Insbesondere die Eingabefelder für die Metaebene benötigen entweder Anpassung oder Gewöhnung. Ich bevorzuge weniger Klicks – und insbesondere keine animierten Reiter, die u.U. dazu führen, dass ich etwas falsches auswähle. Damit katapultierte ich diesen Beitrag einmal in den Papierkorb – nur um festzustellen, dass die Wiederherstellung ihn publizierte. Manchmal ist ein aktive Bestätigung, bevor eine Statusänderung übernommen wird, durchaus sinnvoll.


10
Jun 18

HSTS und nur noch HTTPS / Privacy Checker

Durch einen Beitrag im Netbib Weblog bin ich jüngst auf den Webseiten-Privacy-Checker von dataskydd.net  aufmerksam geworden. Beflügelt durch die erfolgreiche Verlängerung der Letsencrypt-Zertifikate, welche ich seit drei Monaten nutze, war ich motiviert auch andere suboptimale Zustände zu beheben.

So war der Blog bisher auch ohne Verschlüsselung erreichbar. Und auch die HTTP Strict-Transport-Security-Angabe (HSTS) war bisher nicht gesetzt. Ich zweifelte zuerst, ob ich diese Einstellung in meinem Hosteurope-Webpack tätigen kann. Glücklichweise zu unrecht. Dank eines Blogeintrages von Janiczek habe ich die Verbesserung dieses Aspektes mit einem simplen Copy&Paste in die .htaccess-Datei erreicht.

RewriteEngine on
RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Jetzt wurmen mich nur noch ein wenig die Grafiken, die WordPress von seiner eigenen Domain aufruft (s.w.org). Diese sind z.Zt. zwar nur in drei Dateien verlinkt (wp-admin/about.php, wp-includes/formatting.php und wp-includes/general-tempate.php1) – dennoch ist eine manuelle Anpassung nicht meine favorisierte Lösungsmöglichkeit. Einfache Wartung und so… Da ich zur Zeit keine Emojis einsetze und der Admin-Bereich meine Privatsache ist, werde ich es wohl auch erst mal dabei belassen.

 

  1. Analyse mit Hilfe von Notepad++ und der „rekursiven Suche in einem Verzeichnis“-Funktion – sollte mir wohl mal den find-Befehl unter Windows näher anschauen []