CMS do serwowania WWW w kilkunastu KB ? Sobieski na GitHubie i w moim labie

Do napisania tego wpisu skłoniło mnie kilka rzeczy:

  1. przeczytałem https://www.chip.pl/2019/11/alicja-polska-sztuczna-inteligencja/ (znowu poczułem, że to co polskie może być dobre)
  2. należy pisać o rozwiązaniach lekkich i wymieniać się doświadczeniami (a w każdym razie jest to zabawniejsze niż używanie gotowców)
  3. lekka nostalgia, a może chandra (w 2011 moja prywatna strona zaczęła korzystać z jednego z systemów CMS, czas na zmiany i zamknięcie pewnego rozdziału - a ponieważ od zawsze byłem fanem tworzenia treści elektronicznych, kilka słów również o tym co było kiedyś...)

Jeżeli kogoś nie interesują takie tematy jak PHP, proszony jest o poprzestanie w tym miejscu...

Etap 1

Na początku tworzyłem swoje teksty w plikach tekstowych albo korzystałem z binarnych własnościowych formatów - pierwsze rozwiązanie pozwalało generować mniejsze pliki (używano wtedy kodowania na 8 bitach i niezgodnych ze sobą stron kodowych i standardów takich jak Mazovia, strona kodowa 825 czy Windows 1250), drugie wymagało używania aplikacji komercyjnych.

To był czas MS-DOS (a więc również komendy edit) i Norton Commandera, Windows 3.1 i 3.11, potem oczywiście pojawiło się Chicago (Windows 95) i Windows 98...do tego Internet Explorer 2.0, 3.0, 4.0 i odpowiednie wersje Netscape.

Troszkę zapoznałem się z RedHatem i Mandrake/Mandrivą, zacząłem eksperymentować z Internetem (202122)... pochłaniałem również namiętnie Bajtka, PC-Kurier, Entera, Chipa... w których bardzo dużo można było poczytać o wykorzystaniu Internetu dla dobra ludzkości.

I wtedy otworzyłem stronę... która pojawiła się w wersji offline na CD.

Pionierskie dla mnie poniekąd czasy - adres wykorzystywał alias topnet.pl, początkowo używałem darmowego serwera free.com.pl.

Etap 2 (1999-)

Windows 2000 (i problemy z gubieniem plików Rejestru na komputerze z chipsetem VIA), potem nieśmiertelny XP... w międzyczasie pojawiło się też zauroczenie BeOS.

Poniekąd mieliśmy już ustawę o prawach autorskich, a ja tworzyłem strony HTML (również z JavaScript, ale bez Flash) i eksperymentowałem z formatami takimi jak HLP (własnościowy format aplikacji WinHelp) albo CHM (Microsoft Compiled HTML Help czyli archiwa z plikami HTML i nagłówkami).

Najbardziej bliski mi był chyba ten ostatni - przygotowałem np. serię artykułów do polskiego Chipa, w ramach własnych ćwiczeń wykonałem również konwersję roczników magazynów komputerowych (Enter, Chip, itd.) i Wiedzy i Życia, opowiadań klasyków, Pojęciownika Komputerowego czy własną wersję The HTML Reference Library 4.0 albo The Hardware Book.

W tym okresie moje strony były statyczne (tzn. nie były budowane z użyciem żadnego engine), za to miałem już stały Internet (Neostrada 128).

Życie zmusiło mnie do rejestracji własnej domeny (topnet.pl był i się zmył), a stronę przygarnął Fan Klub Nokii Radka Wrocławskiego ( https://web.archive.org/web/20040325034650/http://www.fkn.pl/). Dużo udzielałem się w sprawach związanych z GSM - opis netmonitora, projekt Gammu, itp. (więcej o tamtych czasach w podsumowaniu).

To były romantyczne czasy upowszechniania się telefonów komórkowych - 3,66 PLN z VAT z Tak-Tak (taktowanie co minutę) i brak SMS odchodziły do lamusa, Idea była już dwuzakresowa, itd.

Gimby nie znajo, pewien smak technologii tamtych czasów może dać np. strona domowa pana Pawła Wimmera.

Etap 3 (2004-)

Początkowo czasy Windows XP SP2 i wiara w Pentium 4 (miałem i używałem zarówno Northwooda jak i Prescotta), potem pojawiły się dwurdzeniowce (Turion 64 X2 i Core Duo) i koszmarek pod nazwą Vista (nie chcę słyszeć, że ten system był piękny i w ogóle - w stosunku do XP czy oryginalnego NT 4.0 marnotrawił zasoby wręcz gigantycznie i zdania nie zmienię).

Miałem wtedy dwie strony (oprócz własnej było gammu.org) i używałem CMS takiego jak MediaWiki, jak również pracowałem nad własnymi aplikacjami PHP.

W tym czasie zacząłem migrować do formatów darmowych takich jak ODT albo DOCX, zaś w TV leciały reklamy z prawdziwym jajem takie jak "Simplus Team vs Heyah" (polecam wyszukać na YouTube, chodzi o kampanię "Dziewczyna" z ofertą 39 groszy do swojaków) czy "Reklama - Era Tak-Tak - Ratownicy" (znów kłania się YouTube).

Nokia straciła znaczenie i w końcu moje Gammu+ stało się już wspomnieniem (tzn. wielu użytkowników korzysta z Gammu, natomiast ja przestałem się zajmować tą tematyką).

Etap 4 (2010-)

Stronę postawiłem na Drupalu (wydawał się przyszłościowy w porównaniu do MediaWiki), zamknąłem gammu.org i ponieważ ciągnie wilka do lasu, to zacząłem zajmować się takimi systemami mobilnymi jak Android, Tizen, iOS czy Firefox OS.

Zaczęło się od Galaxy S Samsunga (iPhone wydawał się jakiś taki okaleczony), interesowałem się tematem używania XML do kodyfikacji prawa - to wtedy powstały m.in. takie projekty jak Przepisy Drogowe (enginy dla różnych platform + jeden zestaw danych).

Słowa klucz z tamtego okresu - XML, JSON, UTF-8.

Po serii artykułów moich "ulubionym" Linuxem zostało się Ubuntu (chyba z lenistwa). Coraz mniej korzystałem z Gadu-Gadu i ICQ, coraz więcej w WhatsApp i Facebooka, miałem na koncie również pierwsze nieśmiałe próby z GitHubem.

Etap 5 (2019-)

Gdy mówię video, myślę YouTube... Gdy mówię poczta, myślę GMail...

Internet jest zdominowany przez kilka wielkich korporacji i jedną przeglądarkę, niestety to co według nas stało się częścią kultury, przechodzi do historii i jak widać w nowym regulaminie YouTuba wielu z nas może być niedługo niemile zaskoczonych.

To nie jedyny przykładem tego, że właściwie wszystko podporządkowane jest mamonie - czy ktoś pamięta Flickra i usunięcie milionów zdjęć?

Nasze komputery są potężniejsze niż kiedyś, mamy więcej rdzeni niż kiedykolwiek, ale czy potrafimy z tego jeszcze korzystać?

Coraz częściej słychać o wyciekach danych i Internet nie jest już wyłącznie romantycznym miejscem, gdzie ludzie chcą się dzielić - standardem są gównoburze, artykuły sponsorowane czy wszechobecne reklamy.

Liczy się głównie to, żeby dokopać i mieć sensację - większość ludzi interesuje co jest na Allegro, Ali, co się dzieje na Instagramie i w kilku innych miejscach... i nic więcej, a w każdym razie takie mam wrażenie.

Od strony technicznej - JQuery odchodzi do lamusa zastępowane innymi "lekkimi" rozwiązaniami i choć w różnych serwisach teksty tworzy się korzystając z ładnego edytora, to wynikiem edycji jest stary dobry HTML.

Sam osobiście obecnie generuję kod HTML (zapisywany z użyciem UTF-8), czasem pliki MD, ODT, DOCX, PDF albo EPUB.

I w tym miejscu podjąłem decyzję o przekształceniu swojej strony z Drupala na własny prosty engine.

Projekt nosi nazwę Sobieski. 

Założenia projektowe

  • Artykuły i komentarze do artykułów są zapisywane w plikach tekstowych (UTF-8)
  • Engine ma być prosty i ma wszystko generować automatycznie
  • Interface ma być dostosowany do urządzeń mobilnych i desktopowych
  • Strona ma zapamiętywać ilość odwiedzin (tzn. ile razy otwarto dany artykuł - jest to zliczane jako ilość wizyt z różnych adresów IP, przy czym wizyta z jednego adresu jest zaliczana jako nowa po ustalonym interwale czasowym)
  • Generowane URL są niezmienne
  • Całość ma być możliwie mocno zoptymalizowana
  • Nie ma edycji komentarzy ani złożonego trackingu (niepotrzebne)
  • Cookies i JavaScript są używane w ostateczności

Technologia

Od strony serwera PHP (znam go od lat i jest wystarczający) + SQLite (powinien być wystarczający do zapisywania liczników odwiedzin) + pliki UTF-8, od strony klienta prosty HTML z prostym CSS (JavaScript jest używany dosłownie w jednym miejscu).

Format plików z artykułami

Pliki mają nazwy zgodne z regułą "DATA_ID.txt" (np. 20190404_256.txt), co pozwala je łatwo posortować.

Treść jest zapisana w kolejnych linijkach: nagłówki, pusta linia, (opcjonalnie: tekst podsumowujący i tag zamykający), tekst, (opcjonalnie jeden lub więcej komentarzy)

Przykłady:

Title:Test page 1
Author:marcin
When:11 Nov 2019
Taxonomy:Polski,Polski artykuł,x86

Page teaser (but no beginning of page)
<!--teaser-->
Page context

<a href=?q=2>Second page</a>

Title:Example page 2
Author:marcin
When:11 Nov 2019
Taxonomy:English,x86,English article

Page teaser and beginning of page
<!--break-->
Page context

<a href=?q=1>First page</a>
<p><a href=?q=test>First page</a>

<!--comments-->
Title:my comment 1
ID:369
Author:Anonymous (not verified)
When:1 Aug 2010

Text
<!--comment-->
Title:my comment 2
ID:370
Author:Anonymous (not verified)
When:1 Aug 2010

<b>Text</b>

Przykładowe linki

  • ?page=5 - piąta podstrona strony głównej
  • ?q=taxonomy/term/dobreprogramy.pl&page=2 - druga podstrona strony z artykułami z taxonomią "dobreprogramy.pl"
  • ?q=node/369 - artykuł o ID 369
  • ?q=time/2013-12 - lista artykułów z grudnia 2013
  • ?q=przepisy_drogowe - artykuł o aliasie "przepisy_drogowe"

    Podsumowanie

    Napisałem moduł importujący dane z Drupala, przekształciłem swoje artykuły i wygląda na to, że wszystkie założenia są spełnione i całość jest bardzo lekka i elastyczna (w każdym razie wystarczająca do moich celów). Do edycji używam edytora tekstowego, wersjonowanie plików tekstowych wykonuję wykorzystując git. Strona działa nawet bez JavaScript (jest używany jedynie do kolorowania linków, a dokładniej ustawiania stylu odnośników), cookies są używane jedynie do zapisywania info o tym, czy włączony jest tryb ciemny i mobilny.

    Phase 1 completed.

    Na chwilę obecną muszę popracować nad refaktoringiem kodu (to zawsze jest potrzebne), nad wydajnością wersji dark (Firefox Preview ma z tym problem - https://github.com/mozilla-mobile/fenix/issues/6549) i wyglądem.

    Wersja na dzisiaj (cały engine ma ok. 25 KB kodu):

    https://github.com/marcinwiacek/Sobieski

    Jeżeli ktoś na tym portalu byłby zainteresowany tą tematyką, z chęcią ją rozwinę...