Štítekvydání15

./blog.sh 1.10

./blog.sh 1.10 je venku — vydání na GitHubu.

Vydání, které otevírá dveře programům. Každá obrazovka, kterou si přečteš, než něco uděláš, a každá akce, kterou ti nabídne, teď umí odpovědět i jako data. Program na jiném stroji se k nim dostane přes SSH, které server už má, a jen přes jeden skript, který mu dovolí spustit jeden příkaz enginu a nic jiného. Připojí se kódem, který ./blog.sh pair nakreslí v terminálu, takže nikdo nikam nepíše adresu ani klíč. Na tom stojí nativní appky pro iOS a Android, které se chystají.

Kolem toho archiv víc mluví o sobě. Karta „V tento den“ ukáže příspěvky z dnešního dne v dřívějších letech, /series/ je rejstřík všech sérií, stránka výpisu řekne, které dny pokrývá, a stránka 404 nabídne hledání rovnou vyplněné slovy z adresy, kterou nenašla. Na Macu ./setup.sh nabídne ikonu v Aplikacích, takže se blog dá otevřít bez psaní do terminálu. A druhý jazyk z 1.9 dospěl: série má jméno v každém jazyce a překlad si drží své staré adresy stejně jako příspěvek.

Jedna věc dopředu: stránka /write/ a zkratka SendPost ve verzi 1.11 skončí a nahradí je appky. V 1.10 fungují jako dřív.

Číst dál

./blog.sh 1.9

./blog.sh 1.9 je venku — vydání na GitHubu.

Vydání o publikování ve více jazycích. Vyjmenuješ je v site.locales a příspěvek si nechá jedno datum, jednu sadu štítků a jednu sérii, s textem pro každý jazyk, který napíšeš přes ./blog.sh translate. Vlastní jazyk webu zůstává v kořeni, každý další dostane svůj a jedno sestavení udělá všechny. Banner, menu, patička i štítky mluví každým jazykem taky; příspěvek, který nikdo nepřeložil, se ukáže i tak a odkáže na jedinou kopii, která existuje. Tenhle web tak běží anglicky a česky už od doby, kdy bylo vydání konceptem.

Kolem toho první hodina: dva lidé nainstalovali 1.9 od nuly a upgradovali kopii webu o 6 600 příspěvcích, přesně podle dokumentace, a všechno, o co zakopli, je opravené. Esc nikdy nic neudělá, instalační průvodce mluví tvým jazykem od první obrazovky a nevezme příklad ze šablony jako jméno tvého webu, vlastnosti konceptu ukážou, kde si ho přečíst — i s QR kódem pro telefon — a doctor --online se teď zeptá cíle nasazení, co mu v kořeni leží navíc.

Číst dál

./blog.sh 1.8

./blog.sh 1.8 je venku — vydání na GitHubu.

Vydání o tom, co se stane, když se něco pokazí. Každá stránka, feed a index se teď zapisuje do dočasného souboru a přejmenuje na místo, takže uložení přerušené plným diskem nebo sestavení zastavené uprostřed zápisu už nezanechá stránku v poloviční délce ani příspěvek o 0 bajtech, u kterého je starý text pryč. Studené sestavení tím zdraží zhruba o pětinu; sestavení z cache ne, takže běžný den publikování stojí přesně tolik co dřív.

Dvojí doručení už neznamená, že se něco stane dvakrát: příspěvek odeslaný z telefonu dvakrát nebo jedna potvrzenka doručená ve dvou kopiích najednou je teď jeden příspěvek a opětovný import exportu vlastního enginu už z 1200 příspěvků nedělá 2400. A adrese se už nevěří jen proto, že jako adresa vypadá — ../ ve slugu, v názvu mediálního souboru nebo v cíli přesměrování zůstane uvnitř webu, lokální nasazení zůstane uvnitř svého adresáře a přesměrování z feedu nemůže poslat stahování na localhost.

Číst dál

./blog.sh 1.7

./blog.sh 1.7 je venku. Stránka, která píše příspěvek na telefonu, ho teď i publikuje, a zjistí, co se stalo, místo aby jí to někdo řekl: před odesláním si vystaví stvrzenku a každé tři vteřiny se na ni ptá webu, dokud nepřijde odpověď.

Vedle toho druhá polovina téže myšlenky – měnit, čím příspěvek je, bez otevírání toho, co v něm stojí: jeho série, štítky, typ a tři příznaky, z jedné obrazovky. Pak karta odkazu zapsaná v hlavičce, asi padesát kreseb, které může nosit štítek, video přebalené na cestě dovnitř, aby čtenář nečekal na celý soubor, a sedmnáct oprav.

#blogsh #ruby #staticsite

./blog.sh 1.6

./blog.sh 1.6 je venku.

Sestavení přestalo znovu sestavovat to, co nikdo nezměnil: nové sestavení, které nemění nic, stojí sedminu toho, co dřív, obyčejná publikace asi dvě pětiny. Příspěvek jde předat jako soubor – skriptem, cronem, nebo novou stránkou na /write/ na blogu samotném, která odesílá z telefonu přes SSH, které server už má. Na síti nic nového nenaslouchá.

Kolem toho: řada ovládacích prvků sdílení pod příspěvkem, ikona, kterou může nést štítek, cesta ven z koše a z verzí a fotografie uložená jednou místo dvakrát.

#blogsh #ruby #staticsite

./blog.sh 1.5

1.5 je vydání, ve kterém se web naučil říkat, co drží. Vydání je na GitHubu.

Příspěvek, který nikdy neměl titulek, se dřív jmenoval podle své adresy – na vlastním referenčním archivu tohoto projektu to bylo 62 % z něj. Teď se jmenuje podle svých úvodních slov, všude kromě nadpisu, který zůstává datem, jako je od 1.3.

Přicházejí s ním dvě nové stránky: /archive/, mapa celého webu ve dvou úrovních, a /tag/, každé téma, o kterém kdy psal. Obě jsou sestavené z příspěvků samotných – nic k nastavení a nic k udržování.

Dvě věci, o kterých teď příspěvek může rozhodnout sám: kde končí jeho upoutávka (//--more--//, vyžádáno v issue #35) a kolik z něj ukáže karta ve výpisu – karty se řežou dřív, než se zapíší, místo aby se kreslily celé a skrývaly přes CSS. A blok kódu nese tlačítko kopírování, o které požádal provozovatel blogu plného návodů pro terminál.

Pod tím čtyři dny nepřátelské revize: dvě bug bounty, 237 potvrzených nálezů, každý uzavřený a přišpendlený testem, který na starém kódu padá – nebo zapsaný s počtem příspěvků, kterých se skutečně týká, což u třetiny z nich vyšlo na nulu.

Číst dál

./blog.sh 1.4

./blog.sh 1.4 je venku – vydání na GitHubu.

Nejširší vydání od 1.0. Přišly tři věci: widget commitů čte Giteu a Forgejo – požádal o to jeden z prvních lidí mimo tento projekt, kdo engine provozuje, protože většina Fediverse drží kód na Codebergu a zrcadlení na GitHub kvůli jedné kartě v postranním panelu bylo obchvat. widgets.commits.instance bere adresu serveru; to je celá konfigurace. Komentáře fungují na GoToSocial – zjištěno na arch-linux.cz, kde žádný příspěvek nikdy neukázal jediný komentář, potichu; moje vlastní testy měly Mastodon na obou koncích, takže to nikdy zachytit nemohly. A engine teď všude mluví jazykem webu: český nebo německý web dřív sledoval vlastní nasazení a varování sestavení v angličtině, o řádek nad přeloženou větou. Nějakých šedesát vět se přestěhovalo do lokalizací.

Číst dál

./blog.sh 1.3.2

./blog.sh 1.3.2 je venku – vydání na GitHubu.

Vydání pro GoToSocial, a obě opravy přišly z prvního webu, který blog.sh napojil na instanci GoToSocial: arch-linux.cz provozuje vlastní, místo aby mířil na účet na Mastodonu. Moje vlastní testy měly Mastodon na obou koncích, takže ani jednu najít nemohly.

GTS mluví API Mastodonu s vlastními přízvuky a dvě místa v enginu brala nářečí Mastodonu za celý jazyk: widget feedu se každého hostitele ptal nejdřív na JSON a přesně ten dostal, JSON Feed, který pak XML parser ohlásil jako poškozený; a doctor odmítl id účtu, na které tě jeho vlastní nastavení nasměrovalo, protože vyžadoval číslice tam, kde GTS odpovídá 26znakovým ULID.

Jedna drobnost pro skiny přišla z téhož webu: stránka výpisu teď říká, jestli je první. <body> nese page-first nebo page-cont, takže stylesheet rozezná začátek výpisu od jeho pokračování /page/N/ – něco, na co CSS samo nepřijde, protože neumí číst adresu.

Nic k migraci – git pull, nové sestavení, nasazení. Čekej jedno nasazení v plné velikosti: každá stránka výpisu se změní o těch pár bajtů a nic jiného se nepohne. Úplné poznámky →

./blog.sh 1.3.1

./blog.sh 1.3.1 je venku – vydání na GitHubu.

Opravné vydání o zdrženlivosti. Cron naplánované publikace teď odmítá oznámení, která nemůže vzít zpět: zpětně datovaný příspěvek se publikuje bez oznámení a příspěvek, který už nese adresu svého oznámení, se nikdy neoznámí znovu – ani cronem, ani přes publish, ani přes toot, ať ta adresa žije na kterékoli síti. Fronta si také bere zámek na každý zápis, takže běh, který přistane uprostřed úpravy, nemůže vrátit příspěvek, který právě publikoval.

První hodina čerstvé instalace přestala mást: preview a publish vypisují adresu, která se skutečně otevře, místo example.com, nasazení mluví jazykem webu a ukázková konfigurace už za tebe nevybírá Mastodon – síť je volba.

A prázdnota je teď odpověď, v obou směrech: vyprázdněná sekce si vezme svůj nadpis s sebou, místo aby shodila sestavení nebo nechala selhat doctor, a nadpis nad obsahem, který zůstává, jde konečně vypnout.

Nic k migraci – git pull, nové sestavení, nasazení. Úplné poznámky →

./blog.sh 1.3

./blog.sh 1.3 je venku.

Obléci web už neznamená upravovat engine: vlastní stylesheet, menu, postranní panel a úvodní obrázky jsou teď nastavení. Příspěvky se seskupují do sérií, stránky vystupují z proudu a každá úprava si nechává verzi před sebou.

A tři příkazy, které čtou celý archiv: check hlásí, co je rozbité, stats počítá, co tam je, a export to všechno zabalí do rozvržení Jekyllu. Cesta ven se dodává s ním.

#blogsh #ruby #staticsite

./blog.sh 1.2.1

./blog.sh 1.2.1 je venku.

Telefon do každé fotky, kterou pořídí, zaznamená, kde jsi stál. Sociální sítě to při nahrání odstraňují; statický web nemá nikoho, kdo by to udělal. Teď to dělá engine, na cestě do archivu – a doctor vyčistí ty, které jsi uložil dřív.

Bio, patička a claim banneru jsou teď Markdown. Byly to jediné texty na markdownovém blogu, které musely být HTML.

./blog.sh 1.2

./blog.sh 1.2 je venku – importní vydání.

Z osmi zdrojů importu je dvaadvacet: každá sociální síť, na kterou jsi pravděpodobně kdy něco psal, blogovací platformy a Wayback Machine pro blogy, jejichž platforma už neexistuje.

Nastavení webu je teď rozhovor. Stejně tak jeho vzhled, s kandidátskou paletou vykreslenou na tvém vlastním webu, než si ji necháš.

A obrazovka pro procházení archivu, který se stal příliš velkým na rolování.

./blog.sh 1.1

./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.

./blog.sh 1.0.1

./blog.sh 1.0.1 je venku – osmnáct oprav, žádnou z nich nenahlásil uživatel.

Vzešly z nezávislého ověřovacího průchodu nad vydáním: neúspěšný zápis mohl nechat příspěvek bez souboru, jeden špatný příspěvek mohl zastavit celé sestavení, chybějící soubor médií mohl smazat kopii, která už byla naživo.

Teď existuje CHANGELOG, který si klon může přečíst, a ./blog.sh version ti řekne, co provozuješ.

./blog.sh 1.0

./blog.sh 1.0 je venku.

Blogovací engine, který je složka a shellový skript. Standardní knihovna Ruby a bash – žádná databáze, žádné gemy, žádná administrace. Komentáře žijí na Fediverse. Osm importérů, aby měly tvoje archivy z Tumblru a Twitteru kam jít. Licence MIT.

Web, který čteš, je ten engine, jak běží sám sebou.