Série./blog.sh v1.18

./blog.sh 1.1

./blog.sh v1.1 — díl 1 z 8

./blog.sh 1.1 je venku.

Připni příspěvek nahoru. Plánuj do publikačních slotů, které se řadí do fronty, místo aby se srážely. Přikládej soubory jako karty ke stažení. Přejmenuj slug, aniž rozbiješ odkaz – stará adresa přesměrovává navždy. Jeden dialog pro všechno, co můžeš s příspěvkem udělat.

A pojistky nasazení, které měří sestavení proti sestavení, takže je neúspěšné nahrání nemůže potichu vypnout.

Příspěvek, který zůstává

./blog.sh v1.1 — díl 2 z 8

Titulní strana blogu je jediná stránka, která je prohlášením. Všechno ostatní je chronologie, která dělá svou práci.

Takže pinned: true v hlavičce publikovaného příspěvku teď drží jeho kopii nahoře na první stránce výpisu. To je celá funkce a zajímavá část je všude tam, kde se záměrně neuplatní.

Jen titulní strana

Výpisy podle typu, výpisy štítků, feed RSS a sitemapa zůstávají přísně chronologické. Připnutí je tvrzení o tom, co má návštěvník číst první, ne přepis toho, kdy byly věci napsány. Kdo odebírá feed, dostává příspěvky v pořadí, v jakém se staly, a připnutý příspěvek mu nepředbíhá frontu pokaždé, když se přepne.

Co se děje, jak stárne

Dokud je příspěvek ještě dost nový na to, aby podle data seděl na stránce 1, objeví se přesně jednou – připnutí ho nevytiskne dvakrát na téže obrazovce. Jakmile zestárne na stránku 2, objeví se na obou místech: nahoře na stránce 1 a na svém chronologickém místě na stránce 2.

Číst dál

Některé příspěvky jsou ke stažení

./blog.sh v1.1 — díl 3 z 8

Fotka v příspěvku je holé jméno souboru v řádku s obrázkem. Vždycky byla:

![Pohled z okna](window.jpg)

Takže soubor připojený k příspěvku je týž řádek bez vykřičníku:

[Poznámky ze čtení, 2025](reading-notes.pdf)

Celý řádek, který není nic než odkaz, mířící na holé jméno souboru se známou příponou, je příloha. Připraví se přes incoming/ jako fotka, uloží se vedle příspěvku jako fotka a nikdy tvůj web neopustí.

Řádek s adresou v sobě zůstává tím, čím vždy byl: odkazem. Rozdíl je holé jméno souboru – totéž pravidlo, kterým se fotky už řídí, takže není co nového se učit.

Vykreslená jako karta, ne jako odkaz

Příloha se vykreslí jako karta nesoucí popisek, příponu a velikost. Velikost tam je proto, že stažení si zaslouží říci, co stojí, než se k němu zavážeš – 40MB PDF na telefonu na mobilních datech je jiná nabídka než 200kB, a čtenář má mít možnost to rozhodnout.

Číst dál

Tři koncepty, tři rána

./blog.sh v1.1 — díl 4 z 8

Psaní nepřichází rovnoměrně. Přijde večer, kdy chtějí ven tři příspěvky, a pak týden nic. Publikovat je tak, jak byly napsány, znamená tři příspěvky za jednu noc a potom ticho – což je horší blog než tytéž tři příspěvky rozložené do tří rán.

Takže web teď může říci, kdy obvykle publikuje:

publishing:
  slots:
    - "mon 09:30"
    - "wed 09:30"
    - "fri 09:30"

Nebo, když píšeš víc, jediné "daily 09:00".

S tímhle v konfiguraci ti naplánování konceptu nabídne nejbližší slot, který žádný jiný naplánovaný příspěvek ještě nezabírá. Tři koncepty napsané za jeden večer dostanou nabídnuto pondělí, středu a pátek, v tomhle pořadí, aniž bys počítal dny.

Jen a pouze nabízí

Číst dál

Fotka, kterou tvůj iPhone nikomu neukáže

./blog.sh v1.1 — díl 5 z 8

iPhone fotí ve výchozím nastavení do HEIC. Safari ho vykreslí. Chrome ne. Firefox ne. Takže fotka rovnou z telefonu, připojená k příspěvku a publikovaná, je fotka, kterou většina tvých čtenářů nikdy neuvidí.

Staré chování bylo to nejhorší možné: soubor vstoupil, sestavení ho nedokázalo změřit a obrázek ze stránky potichu zmizel – i s popiskem. Žádná chyba. Jen příspěvek s dírou tam, kde byla fotka.

Odmítnuto, s příkazem, který potřebuješ

Připojení HEIC teď uložení zastaví a vypíše přesný převodní příkaz pro stroj, u kterého stojíš:

sips -s format jpeg photo.heic --out photo.jpg      # macOS
heif-convert photo.heic photo.jpg                    # Linux

Tvůj soubor zůstane přesně tam, kde byl, v incoming/. Nic se nemaže, nic se nehádá. Převedeš ho a pokračuješ.

Nebo převedeno, když si řekneš

Číst dál

Starý odkaz pořád zná cestu

./blog.sh v1.1 — díl 6 z 8

První příspěvek na tomto webu je o fotce, která zmizela z blogového zápisu z roku 2012, zatímco odkaz na ni fungoval dál. Rozpad odkazů je důvod, proč tento engine existuje, takže engine, který by si potichu rozbíjel vlastní adresy, by byl špatný vtip.

Přejmenování příspěvku mění jeho adresu. To je nevyhnutelné – slug je adresa. Co je odvratitelné, je to, aby se ze staré adresy stala 404.

Co přejmenování dělá teď

Přejmenuj příspěvek – r v dialogu vlastností – a příspěvek si svou starou adresu zaznamená do sebe. Sestavení pak na každé adrese, kterou příspěvek kdy měl, drží jednostránkové přesměrování.

Odkaz v dva roky starém tootu se dál překládá. Odkaz, který někdo dal do vlastního blogového příspěvku, se dál překládá. Můžeš opravit slug, kterého lituješ, aniž tě oprava stojí každý odkaz na něj, který už ve světě existuje.

Přesměrování patří příspěvku

Číst dál

Menu se zkrátilo

./blog.sh v1.1 — díl 7 z 8

Průvodce dřív vypisoval deset věcí, které můžeš udělat. Teď jich vypisuje pět a engine umí víc než dřív.

To není paradox, to je přiznání: osm z těch deseti nebyly činnosti. Byly to operace s příspěvkem v kostýmu položky menu.

Všechno o příspěvku na jednom místě

./blog.sh props <slug> – nebo v průvodci vyber příspěvek a stiskni v – ukáže, co se o něm dá vědět. Stav, typ, štítky, jestli je připnutý, jestli byl oznámen a kde. Když je naplánovaný, celou publikační frontu.

A akce bydlí tam také, vedle skutečností, na které působí. Koncept nabízí publikovat a naplánovat. Publikovaný příspěvek nabízí stáhnout, znovu oznámit, připnout nebo odepnout, přejmenovat, smazat.

Už nejdeš do menu, nezvolíš „stáhnout" a pak nehledáš příspěvek. Jdeš k příspěvku a vidíš, že stažení je jedna z věcí, které právě teď umí.

Co zůstalo, kde bylo

Číst dál

Pojistka, která se sama vypnula

./blog.sh v1.1 — díl 8 z 8

Nasazení tohoto webu má dvě pojistky. Když má sestavení náhle mnohem méně souborů, než je naživo, nebo mnohem méně bajtů, nasazení se zastaví. Existují proto, že rozbité sestavení vypadá pro rsync --delete přesně jako záměrné, a statický web je vždy jen jednu sebejistou synchronizaci od vymazání.

V 1.0 se uměly samy vypnout. Trvale. Potichu. Tady je jak, protože tvar téhle chyby je užitečnější než oprava.

Reference byla špatná věc

Pojistky porovnávaly nové sestavení s manifestem nasazení – záznamem toho, co je na cíli. Rozumné, dokud nahrání neselže. Neúspěšné nahrání nechá manifest mimo skutečnost a pojistka měřící proti záznamu, o kterém ví, že je špatně, by spustila poplach při každém dalším běhu.

Takže tam byla značka: po neúspěšném běhu pojistky odvolat, dokud nepřijde čistý běh a referenci neobnoví.

Číst dál