Příspěvek, který čekal na terminál

Díl 2 ze 7 — ./blog.sh v1.7

Příspěvek se píše v tramvaji: titulek, čtyři odstavce, dvě fotografie s popisky. Přepínač nad tlačítkem Odeslat říká Draft, což říká vždy, dokud ho někdo nepřepne. Odeslat, a karta s odpovědí se vrátí s adresou náhledu. A pak to sedí. Vydat draft byl příkaz, příkaz chce terminál a tramvaj žádný nemá.

1.6 chtěla to rozhodnutí na špatném konci: publikovat ve chvíli odeslání, dřív než blog cokoli vykreslil, nebo se podívat na vlastní stránku blogu a pak hledat klávesnici. 1.7 to uzavírá, a pak uzavírá i cestu, kterou se odpověď vrací.

Jeden soubor, týmž spojením

Karta s odpovědí u draftu teď nese tlačítko Publikovat. Stisk pošle jeden soubor jménem publish.txt, ve kterém je slug a nic víc – týmž panelem sdílení, týmiž dvěma zkratkami, týmž SSH spojením, kterým šel sám příspěvek.

Stránka pro psaní na /write/ v telefonu, s textem, štítky a tlačítkem Odeslat
Stránka, na které se příspěvek píše: táž stránka na každém telefonu a jediná, kterou engine publikuje jako soubor.

Přijímač ten tvar zná: jeden soubor v zásilce, s tímhle jménem. Nic neukládá. Přečte slug a spustí publish <slug> --yes --json. Slug se stává argumentem příkazu, takže se kontroluje stejně tvrdě jako jméno souboru – malá písmena, číslice a pomlčky, žádná pomlčka na začátku, která by se četla jako přepínač, žádný nový řádek uprostřed, který by slepil dva řádky do jednoho slova – a cokoli jiného se odmítne tady, místo aby to vysvětlovalo to, do čeho to narazí. publish.txt, který vstupuje vedle markdownového souboru, není žádost; uloží se jako každý jiný soubor.

publish --yes --json odpovídá jedním objektem – slug, path, state, url, deploy, warnings, tvar, který vypisuje add --json – a odchází s nulou, ať říká cokoli, protože Zkratky v iOS výstup vzdáleného příkazu, který selhal, zahodí. Stiskni tlačítko dvakrát a druhý stisk dostane odpověď, místo aby byl vykonán: already_published, s adresou.

Odpověď, pro kterou si stránka sama dojde

Cesta zpět má jeden zlom, který nic na serveru nespraví. Odpověď cestuje jako URL, a stránka uložená na ploše telefonu běží s vlastním úložištěm: URL se otevře v prohlížeči, kde draft, o kterém je, neexistuje. Draft zůstane v kopii na ploše a vypadá jako neodeslaný. Telefon, který vjede do výtahu, přijde o tutéž odpověď z nudnějšího důvodu.

Stránka tedy přestává čekat. Dřív než cokoli odešle, zvolí své odpovědi jméno – šestnáct hexadecimálních znaků z náhodného zdroje prohlížeče, pro každé odeslání nové – a zapíše ho do příspěvku jako receipt:. Sestavení pak nechá malý soubor na /write/r/<jméno>.json. Tady je jeden, celý:

{"slug":"on-the-tram","state":"draft","title":"On the tram","url":"https://example.com/draft/41a0a9b77caef98a/on-the-tram/","warnings":[]}

Stránka si o tu adresu říká každé tři vteřiny po dobu pěti minut, a řekne, když nikdy nepřijde: stránka, která by to vzdala mlčky, by byla k nerozeznání od příspěvku, který nikdy nedorazil. Stiskni Publikovat a ptá se na totéž jméno, dokud stav neřekne publikováno.

Zapisuje ho sestavení, a to ho drží pravdivý: publikování příspěvku přepíše týž soubor, adresa náhledu draftu ustoupí veřejné; smazání příspěvku ho přestane generovat a úklid ho odnese. Odpověď, která dorazí, je sama důkazem, že sestavení i nahrání prošly.

Co v něm je a co ne

Pět věcí: slug, stav, titulek, adresa a to, na co si uložení muselo stěžovat – obrázek, jehož rozměr nešel přečíst, video, na které bude čtenář čekat. Telefon je to jediné místo, kde k jejich přečtení není terminál.

Nic jiného, záměrně. Ne cesta, kterou příspěvek má na serveru. Ne to, co běh řekl o webu místo o příspěvku – chybějící base_url, cokoli, před čím varovalo nové sestavení – protože soubor sedí na veřejné adrese a jeho jedinou ochranou je, že jeho jméno je šestnáct náhodných znaků. Kdo je má, může ho číst. Náhled draftu, který jmenuje, je adresa, na které je draft čitelný tak jako tak.

Co pořád odmítá udělat

Cokoli s příspěvkem, který už na blogu je. Stránka ho neumí otevřít, upravit, smazat, přejmenovat, naplánovat ani stáhnout publikovaný příspěvek zpět. Napíše jeden příspěvek, odešle ho a nabídne, že ho publikuje – a jen ten jeden, protože publikování bere stvrzenku, kterou tahle stránka vystavila. Je to návrh z 1.6 s jedním krokem navíc, ne konzole rostoucí na webu.

Co to stojí

Stisk Publikovat oznamuje. Je to cesta, kterou publish jde u stolu – datum ustálené, příspěvek venku na všech sítích, které má web nastavené, web znovu sestavený a nasazený – a na telefonu není žádné zpět.

Pět minut běží od odeslání, ne od obnovení stránky: stránka znovu otevřená o hodinu později se ptát nevrátí. A na webu, jehož nasazení čeká na příští naplánovaný běh, může být soubor na serveru starší než trpělivost stránky. Stránka pak řekne, že odpověď zatím není, že se blog možná ještě sestavuje, a ať se člověk podívá, než odešle znovu – což není totéž jako „selhalo", a obvykle neselhalo.

Kde stránka je

Běží na tomto webu, na /write/. Je to ukázka a nic si nenechává: co napíšeš, zůstane ve tvém prohlížeči, a k odeslání je třeba klíč, který žije ve zkratce v telefonu toho, kdo blog provozuje. Otevři ji, piš do ní, a nic tady se nepohne.

Komentáře