Zamknięcie blox.pl i eksport mojego bloga

Pod koniec lutego 2019 roku, niemalże dokładnie 10 lat od chwili powstania mojego bloga, otrzymałem wiadomość o zamknięciu serwisu blox.pl, które nastąpi pod koniec kwietnia. Decyzja ta nie jest nieoczekiwana, ponieważ wraz z rozwojem współczesnych technologii, blox.pl stawał się coraz bardziej reliktem minionej już epoki, pierwszej dekady XXI wieku, czasów, gdy pojęcie mediów społecznościowych jeszcze nie zostało nawet zdefiniowane.

Świadectwem tamtej epoki są również wpisy na moim blogu, które postanowiłem zachować i zmigrować w miejsce, nad którym posiadam kontrolę. Niektóre z tych wpisów są już całkowicie nieaktualne (jak np. dywagacje dot. niuansów serwisu Nasza Klasa), inne znajdują zastosowanie przeze mnie osobiście do dzisiaj (jak np. sposób zabezpieczania profilu przeglądarki, czy zasady bezpiecznego korzystania z internetu).

Opiszę krótko kilka ogólnych, technicznych aspektów migracji:

  • Ponieważ od 2013r. prowadzę nowy blog tylko o tematyce technicznej blog.pjsen.eu w języku angielskim, dlatego chciałem uniknąć przeniesienia treści starego bloga bezpośrednio do infrastruktury nowego.
  • Blox.pl udostępnia zawartość treści bloga w postaci współczesnego formatu eksportu z WordPress’a.
  • Najprościej byłoby zaimportować tę treść po prostu do nowego bloga opartego na WordPress, ale zarządzanie dwoma blogami to jest coś, czego chciałem uniknąć. Zależało mi na odizolowaniu starych treści w innym miejscu w możliwie najprostszy do wykonania i utrzymywania sposób.

Wymagania te zostały zrealizowane w następujący sposób:

  • Jako technologię utrzymywania treści bloga wybrałem tzw. statyczny generator stron o nazwie Hugo.
    • Statyczne generatory umożliwiają wytworzenie całej witryny internetowej na podstawie łatwo edytowalnych plików, zazwyczaj w formacie Markdown. Wygenerowana witryna jest w całości statyczna, można ją hostować wszędzie. Hugo jest dość dobrym generatorem, ponieważ składa się z pojedynczego pliku exe, a jego podstawowa obsługa ogranicza się praktycznie do uruchamiania hugo, hugo server i hugo new. Na stronie głównej można przeglądać bardzo bogaty katalog gotowych do użycia szablonów.
  • Aby przekonwertować treść do formatu Markdown użyłem Exitwp — skryptu napisanego w Pythonie 2.7. Niestety konieczna była ręczna modyfikacja tego skryptu, ponieważ spodziewał się on kilku elementów struktury xml, które nie były obecne w wyeksportowanej treści z blox.pl. Na szczęście, metodą zaledwie kilku prób i błędów usunąłem niepotrzebne linie ze skryptu, a inne brakujące wartości udało mi się zastąpić zaślepkami np. jako wordpress_id ustawiałem 0, ponieważ celem było tylko zmuszenie skryptu do przekonwertowania treści, a nie zachowania pełnej struktury metadanych.
  • Odniesienie do zasobów statycznych zawierały w ścieżce podkatalog, a Hugo zakłada, że będą one obecne na stronie głównej. Przy pomocy jednolinijkowego skryptu języka Perl i wyrażeń regularnych zmieniłem ścieżki do obrazków i plików we wszystkich 51 plikach wpisów:
  • find . -iname '*.markdown' -exec perl -pi -w -e 's/(\(resources\/)(.*)/\(\/$2/g' {} \;
  • Wpisy poddałem ręcznej korekcie w programie MarkdownPad. Zmodyfikowałem też układ strony, na swoje potrzeby. Pewną nieoczekiwaną dla mnie ciekawostką okazał się atrybut integrity tagu z odniesieniem do styli CSS. Była to suma kontrolna ustawiona sztywno na wartość wygenerowaną w momencie kompilacji szablonu. Ja zmodyfikowałem szablon, konieczne było więc usunięcie tego atrybutu (generowanie poprawnej wartości nie było do niczego potrzebne).
  • Niestety nie przekonwertowałem linków do wpisów w obrębie bloga. Nie miałem oczywistego pomysłu, jak zrobić to automatycznie ani czasu, żeby robić to ręcznie.

Na koniec, w celach pamiątkowych, wklejam zrzut ekranu starego bloga z momentu na chwilę przed jego likwidacją: Stary blog