Zamysleli ste sa niekedy nad obrovským množstvom problémov, s ktorými sa každodenne stretávate? Niektoré sa časom vyriešia samy. Niektoré môžu byť ignorované. Niektoré by sa dali delegovať na niekoho iného, ak si to môžete dovoliť. Ak nie je dostupná žiadna z týchto možností, je potrebný váš čas a pozornosť. Zvyčajne sú to problémy, ktoré musíte vyriešiť osobne, aby ste mohli pokračovať v tom, čo robíte.
Ak napríklad kosíte trávnik novým žacím strojom a dôjde vám palivo, musíte nádrž doplniť, aby ste to dokončili. Ak maľujete lavičku a niekto si na ňu sadne počas prestávky, musíte nájsť spôsob, ako odstrániť čerstvo vytvorené umelecké dielo z farby. Dúfajme, že ten, kto je zodpovedný za dve okrúhle tvary, ktoré vám zostali, tam stále nesedí, inak máte viacero problémov na riešenie. Na mojej nedávnej ceste za blogom plným skvelých príspevkov som tiež dostal svoju porciu zaujímavých problémov na vyriešenie.
Sapper #
Pred asi pol rokom som objavil Svelte a okamžite som sa do neho zamiloval. Ak ste o ňom ešte nepočuli, je to ďalší javascriptový framework. Tento patrí do kategórie miznúcich frameworkov. Miznúci framework zmizne pred nasadením, pretože neexistuje žiadny virtuálny DOM. Zostanete s čistým balíkom kódu, ktorý modifikuje DOM s práve dostatočným množstvom riadkov. Jeho hlavnými konkurentmi v tejto oblasti sú samozrejme React, Angular a Vue, ale má vlastnú sadu výhod a nevýhod oproti nim.
Tieto tri giganty majú aj rozšírené príbuzné, ktoré umožňujú užitočnejšie funkcie ako SSR. Pre React je to Next, pre Vue je to Nuxt, aby som uviedol najrelevantnejšie. Podobne Svelte ponúka riešenie nazvané Sapper. Sapper je silne inšpirovaný týmito dvoma, takže ak ste ich niekedy používali, budete oboznámení.
Ako ste už tušíte z náznakov, tento blog je tiež poháňaný Sapperom. Zaujímavé je, že je predzostavený spôsobom, ktorý súlade s ďalším trendom v odvetví, ktorý som dokázal identifikovať — nazýva sa JAMstack. Tento názov znamená Javascript-APIs-Markdown-stack. So Sapperom môžete tiež nasadiť JAMstack aplikácie bez väčšieho úsilia, hoci si nie som istý, či sa o tom v dokumentácii spomína. Dúfajme, že aj vy uvidíte súvislosť, keď budete oboznámení s oboma.
Toto nie je JAMstack v úplnom zmysle, pretože v čase písania tu ešte
nepoužívam žiadne API, ale vydržte so mnou. Kombinácia javascript +
markdown je prítomná. Konkrétne, samotné príspevky sú všetky uložené ako
súbory s príponou .md. Moja motivácia pre zvolenie tohto prístupu je
dvojaká. Po prvé, nastavenie vyžaduje takmer žiadnu réžiu. Zatiaľ nie je
databáza. A po druhé, jednoducho otvoríte editor podľa vašej voľby a
píšete. V mojom prípade je to vim, ktorý používam takmer pre každý druh
textu. Keď súbor uložíte, je hotový. Nie je potrebné žiadne <textarea>
ani kopírovanie a vkladanie, ako by to bolo v prípade iných webových
riešení.
Ale toto nastavenie, hoci pre mňa efektívne, má aj niektoré významné nedostatky. Keďže Sapper nie je špecificky zameraný na tvorcov blogov, nemá vbudovanú funkcionalitu pre túto úlohu. Každú funkciu, ktorú potrebujete, si musíte sami naprogramovať. Žiadne fancy pluginy, ako by napríklad ponúkal WordPress. Hoci som PHP v minulosti hojne používal, z nejakého dôvodu som nakoniec nenasadil WordPress príliš ťažko. Bolo to možno dvakrát alebo trikrát pre nejaké vedľajšie projekty, ktoré už aj tak nie sú aktívne. Rozhodol som sa pre malé inkrementálne zmeny, aby sa konečný produkt stal tým, čo si v budúcnosti predstavujem.
Zoraďovanie príspevkov podľa dátumu #
Postupom času som dospel k záveru, že nasadené riešenia všeobecne spadajú do dvoch kategórií: monolitické a modulárne. Monolitické riešenia podporujú bohatú sadu funkcií za cenu ťažšej prispôsobiteľnosti. Modulárne riešenia podporujú minimalizmus a interoperabilitu za cenu réžie potrebnej na ich nastavenie.
Ako som už spomínal, so Sapperom ako motorom blogu verím, že som si zvolil to druhé. Jedným z prvých problémov, ktoré som musel riešiť, aby som mohol ďalej pokračovať, bolo zoraďovanie príspevkov podľa dátumu prvého publikovania. Momentálne, keďže sú to len súbory, sú zoradené podľa ich názvu, čo rozhodne nie je optimálne pre blog. Spočiatku som si to nevšimol, pretože príspevky sa čistou náhodou väčšinou zoradili správne, ale keď sa začali hromadiť, bolo pre mňa zrejmé, že to musím opraviť.
Zoraďovanie príspevkov získaných z databázy býva jednoduché. Celý blog je však uložený v repozitári git. To znamená, že v ňom sú uložené aj všetky dátumy vytvorenia a úpravy.
Proof of concept so zdrojovými kódmi a technickejšími detailmi nájdete v repozitári.
Záver #
Technika učenia sa robením vás niekedy tlačí do situácií, ktoré vopred neočakávate. A myslím, že to sa mi stáva častejšie než nie. Ukázal som, že môžete spoľahlivo poskytnúť blogové príspevky s dátumom vytvorenia (publikovania) aj s dátumom aktualizácie (úpravy) využívaním histórie commitov v gite.
Zostaňte naladení a uvidíte, či sa mi podarí udržať blog bez databázy. Ak máte akékoľvek komentáre alebo myšlienky, dajte mi vedieť.
Relevantné zdrojové kódy sú dostupné v repozitári