adblog

Blog nyní pohání Pelican a Skeleton

Po několikaměsíčním obsahu blogu, kdy jej tvořila jedna stránka s informací o tom, že doména je registrována, vracím obsah blogu v novém kabátu. Bolg byl několik lett bez příspěvků, protože na přidávání příspěvků nebyl dostatek času a technologie, na které běžel, byla zastaralá.

Historie

První blog vznikl na doméně adpro.cz v červnu 2008 jako následovník osobních stránek fungujících od listopadu 2001. Protože jsem již nechtěl editovat vše ručně v HTML a bylo třeba posunout používané standardy, použil jsem Wordpress, tedy ve verzi 2.x. Téma jsem si upravil ke své potřebě.

Postupem času jsem musel aktualizovat Wordpress na vyšší verze, což byl občas poměrně bolestivý proces, např. při upgradu na verzi 3.0.1 v roce 2010 a následně v roce 2012 s verzí 3.3.1. Blog stále zasílal upozornění, že je bezpečnostní díra tu či onde a bylo to poměrně otravné.

V únoru 2012 jsem na doménu adpro.cz umístil rozcestník na vícero svých webů a samotný blog přesunul na blog.adpro.cz. Z nedostatku času jsem zmigroval původní Wordpress 3.3.1 na novou adresu a provozoval ho dále.

V roce 2014 z časových i jiných důvodů ustalo přidávání nových příspěvků a web existoval ve stejné podobě do roku 2018, kdy jsem jej z důvodu zastaralosti a změnách na hostingu nahradil statickou stránkou s informací, že doména je registrována.

Současnost a Pelican

Nyní, koncem března 2020 jsem ze záloh převedl všechny články, které byly ve Wordpressu do formátu reStructuredText, abych tak získal univerzálnější formát zápisu příspěvků. K tomu mi posloužil univerzální konverter Pandoc. Pandoc pomohl s konverzí z yaml souboru pocházejícího z exportu phpMyAdmin databází původního starého Wordpressu.

Proč reStructuredText a ne Markdown

To je asi otázka, která napadne všechny, kteří programují nebo něco píší, ať dokumentaci, či jiné dokumenty.

Markdown i reStructuredText jsou odlehčené značkovací jazyky. Markdown je určen pro zápis textu pro co nejsnazší převod do HTML a jejho největším zastáncem je GitHub. Nemá jednotnou syntaxi.

reStructuredText je oproti tomu určen pro tvorbu dokumentace a složitějších textů. Z tohoto formátu lze generovat jak HTML, tak PDF, ePuB a mnohé další. reStructuredText také vizuálně více vypadá jako výsledně formátovaný text, čímž usnadňuje jeho čtení. Je více spjat s Pythonem, neboť je součástí nástrojů pro tvorbu technické dokumentace Pythonu. V roce 2011 byl vybrán jako zdrojový formát pro projekt Gutenberg, ze kterého jsou generovány e-knihy.

Takže proč spíš než masivně rozšířený Markdown jsem si vybral reStructuredText? A proč ne txt2tags nebo jiné odlehčené značkovací jazyky jako AsciiDoc nebo Textile?

  1. AsiiDoc jsem před lety zkoušel a jeho syntaxe není tak zažitelná, nepracovalo se mi v něm moc dobře
  2. Markdown je sice velmi profláknutý, ale zvládá jen to základní
  3. reStructuredText je hlavním jazykem sphinx-doc, generátoru techn. dokumentace v Pythonu, se kterým jsem již několikrát pracoval a pomocí nějž jsem v roce 2014 vyrobil v práci základní dokumentační stránky pro nově nastoupivší zaměstnance do mnou vedeného oddělení. A ve sphix-doc lze tvořit ePub knihy, což využívám, když chci něco sepsaného transformovat do své elektronické čtečky.
  4. Z porovnání použitelnosti vyšel jako nejuniverzálnější (např. na wiki).
  5. Nedělám obvykle to, co všichni ostatní, tedy další důvod nepoužívat Markdown :)

Proč Pelican

Místo Wordpressu jsem hledal jiné nástroje, které by nebylo třeba neustále aktualizovat a řešit tak možné bezpečnostní díry, kterých jsem si s Wordpressem 2.x a 3.x užil dost. (A které mne naučili, že jít s hlavním proudem má také své podstatné nevýhody.)

Na jiné ze subdomén adpro.cz jsem provozoval dokuwiki, ale to jsem byl stále svázán ve formátu textu s konkrétním nástrojem. Nebylo to špatné, ale raději něco jiného.

Začal jsem koukat po generátorech statických stránek. Jejich smyslem je ze vstupních souborů vytvořit za pomocí šablon zpravidla webové stránky. Díky různým šablonovacím technologiím různě složitě díky nástrojům a frameworkům, které potřebují k běhu, i různě rychle. Koukal jsem na některé z nich:

  • Jekyll - jeden z nejoblíbenějších, běžících na Ruby,
  • Hugo - jeden z neoblíbenějších, běžících na Go,
  • Hexo - jeden z nejoblíbenějších, běžících na Node.js,
  • Pelican - velmi oblíbený, běžící na Pythonu.

Koukl jsem i na mnohé další běžících na Pythonu, uvedených na stránce FullStackPython jako Lektor, MkDocs, Nikola, Hyde a Cactus.

Většina uvedených nejoblíbenějších generátorů používá jako zdroj Markdown a reST nepoužívají nebo se musí složitě doinstalovat. Generátory založené na Pythonu mají reST de facto v základu, tudíž byly vhodnější volbou, aby nebylo nutné se učit více novým věcem najednou. Po projití několika stránek jsem vyhodnotil, že vyzkouším Pelican.

Po kratším testování jsem přijal Pelican jako vhodný, byť ne ideální nástroj. Jeho dokumentace není stoprocentní a výběr témat šablon oproti hlavním konkurentům není tak široká, ale díky šablonovacímu jazyku Jinja2 lze šablony upravit k obrazu svému.

Proč Skeleton a ne Bootstrap

Když jsem došel k názoru, že je nutné upravit některou ze šablon (a vyšel jsem ze základní simple šablony), chtěl jsem zajistit responzivitu, aby byl blog dobře čitelný i na mobilech. Klasikou je Bootstrap, ale zároveň je to poměrně velký kanón na cílové použití. Snaha byla najít něco lehčího. Přehled odlehčených alternativ je například zde. Výběr nakonec padl na Skeleton. Skeleton je velmi lehký a jeho kód je velmi malý. Styl lze upravit podle svého, což je na blogu vidět.

Shrnutí

Přesun blogu do reST a statických stránek by mělo přinést jednodušší a přenositelnější tvorbu bez potřeby neustálých aktualizací produktu, na kterém běží.

Statické stránky jsou pro webové servery také o mnoho jednodušší, odpovědi jsou rychlejší, tudíž je mnohem snadnější najít webhosting, který takový provoz umožňuje. Což u statických stránek jsou de facto všechny už v nejzákladnějších variantách či zdarma.