Date: 2024-11-23 23:05
From: rpt@desudoli.cz
Subject: Reboot rebooted
To: dalnopis@desudoli.cz
Tags: internet psaní software
Desc: Můj server gemini opět žije a další nenápadné změny.

Reboot rebooted

Po delší době se vracím k pravidelnému publikování. Alespoň doufám. Opět jsem změnil způsob, jak generuju tento blog. Co mě k tomu vedlo?

Unikonvertor

Začátkem léta jsem začal pracovat na projektu, který mi dlouho ležel v hlavě: univerzální konvertor, kde si uživatel může nadefinovat vlastní markup i výstup do HTML, Gemtextu a libovolně zformátovaného TXT souboru pro Gopher server. Konvertory nebo generátory blogu, které znám mají vstup i výstup víceméně pevně nadefinovaný a to mi připadalo jako velká nevýhoda. Např. můj oblíbený lowdown(1) exportuje poznámky pod čarou knižním stylem, tedy v patě stránky, což je na webu nepraktické. Footnotes na webu jsou přehlednější a pro čtenáře pohodlnější jako marginálie.[1]

Moje ksh(1) skripty sice generovaly footnotes tak, jak potřebuju, ale doufal jsem, že vytvořím něco univerzálnějšího. V první fázi konvertor, potom možná generátor blogu, i když ten už by těžko mohl být tak univerzální.

Plán byl mít konfigurační soubor, kde se nadefinuje markup a jeho výstup do HTML, případně Gemtextu.[2] Postupně jsem se dopracoval k poměrně funkčnímu skriptu, ale začátkem podzimu jsem vše ukončil s tím, že takový konvertor vlastně nepotřebuju. Proč? Dle mého soudu existuje jednodušší způsob. Rozdělanou práci jsem odložil a začal pracovat na novém, jednodušším konvertoru.

Jednodušší cesta

Neupdatoval jsem svůj Gemini server déle než rok. Náhodou jsem pročítal nějaké materiály o Gemini a znovu jsem si uvědomil, jak geniálně jednoduchý je to protokol, jak geniálně jednoduchý markup je Gemtext a jaká škoda je, že ho u nás málokdo používá.[3]

Proč vymýšlet nový markup, ze kterého budeme exportovat do dalších markupů, když existuje Gemtext? Psát v Gemtextu znamená psát přímo pro Gemini, tedy bez prostředníka, a to je hlavní výhoda, kterou v tom spatřuji. Dále je to jednodušší než psát v HTML, ale znamená to také omezené typografické možnosti. Řekl jsem si, že typografický asketismus mému jednoduchému psaní neublíží. Spíš prospěje. Plán tedy je psát text v Gemtextu a poté vygenerovat jeho dvojče v HTML.

Oživil jsem svůj Gemini server, doplnil chybějící texty a jal se psát konvertor. Místo ksh jsem tentokrát použil Perl. Jednak funguje na všech mých platformách a pak také obsahuje proměnné typu hash. Hash je vlastně array obsahující dvojice key => value, tedy cosi jako Object v javascriptu. Hodnota může být jednoduchý string, array nebo další hash. Proto mi tento typ připadá jako ideální konstrukce na zachycení textových bloků.

Gemtext je důsledně řádkový značkovací jazyk, pokud si vůbec zaslouží tak vznešené označení. Tzn. každá řádka je samostatná jednotka, žádné vnořené bloky. Pokud je dlouhá, stane se odstavcem, protože ji prohlížeč zalomí do bloku. Pokud krátká, zobrazí ji, jak je. Prázdné řádky jsou prázdné řádky. Řádky začínající určitými znaky se chovají přesně specifikovaným způsobem, např. jako hyperlink nebo citace. Napsat interpreter takového dokumentu je pak poměrně jednoduché. Ne tak napsat konvertor do HTML.

HTML je přímo postavené jako blok obsahující další vnořené bloky do libovolné hloubky. Dokonce i jednoduché konstrukce jako víceodstavcové citace, které v Gemtextu zapíšeme jako řádky uvozené příslušnou značkou, jsou v HTML vnořené odstavce „p“ v bloku „blockquote“. Skript si proto musí pamatovat typ předešlé řádky, a pokud je aktuální řádka stejného typu, zařadit ji do příslušného nadřazeného bloku. Gemtext má i další drobné výhody, např. odstavec jako dlouhý řádek. Jakkoliv je dlouhý řádek v TXT souboru otravný a je lepší zalomit odstavec na více přibližně stejně dlouhých řádků, z programátorského hlediska je snadnější pracovat s dlouhým řádkem. Snadněji se vkládají nezlomitelné mezery nebo inline markup.

Gemtext nemá žádné značky pro footnotes a navíc jsem chtěl zachovat inline tagy jako „em“ nebo „code“, takže jsem Gemtext obhohatil právě o tyto prvky. V Gemini prohlížeči vadit nebudou, v HTML udělají nějakou parádu. To skript sice trochu zkomplikovalo, ale i tak má jen asi 460 řádků. Tím jsem pokryl všechny dosavadní blogposty a do budoucna můžu svůj styl psaní ještě zjednodušit.

Hlavní platforma

Gemini se tak stává mou hlavní platformou a urguji každého, aby chodil číst tam. Ale díky konvertoru zůstává i HTML, takže se to mých 5,5 čtenáře nijak nedotkne. Dokonce to ani nezaregistrují, dokud si nepřečtou tento text.

ASCII kopie blogpostů už nepoputují na můj gopherovský server. Ten zůstane mimo a bude sloužit pouze pro anglicky psané poznámky. Vyjímky jsou možné.

A to je v tuto chvíli všecko.

EOF