CMS do serwowania WWW w kilkunastu KB ? Sobieski na GitHubie i w moim labie
11.11.2019 | aktual.: 12.11.2019 12:57
Do napisania tego wpisu skłoniło mnie kilka rzeczy:
- przeczytałem https://www.chip.pl/2019/11/alicja-polska-sztuczna-inteligencja/ (znowu poczułem, że to co polskie może być dobre)
- 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)
- 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) Page context <a href="?q=">Second page</a>
Title:Example page 2 Author:marcin When:11 Nov 2019 Taxonomy:English,x86,English article Page teaser and beginning of page Page context <a href="?q=">First page</a><p><a href="?q=tes">First page</a> Title:my comment 1 ID:369 Author:Anonymous (not verified) When:1 Aug 2010 Text 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
[list][item]
[/item][/list]
Jeżeli ktoś na tym portalu byłby zainteresowany tą tematyką, z chęcią ją rozwinę...