Všechno ostatní v 1.6

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

Pět příspěvků pokrylo to, o čem 1.6 je. Tenhle je zbytek, v pořadí, v jakém ho provozovatel potká.

Cesta ven z koše a z verzí

Obě úložiště měla cestu zpět – restore a výběr verze ve vlastnostech příspěvku – a žádnou cestu ven, takže obě léta rostla a nic neříkalo o kolik. empty trash a empty versions vypíšou, co se chystají odstranit, v položkách a v megabajtech, a než cokoli odejde, chtějí ten počet opsat. empty versions nechá každému příspěvku jeho nejnovější verzi, protože verze existují proto, aby odpověděly na „vrať mi, co jsem právě přepsal". doctor teď koš s příspěvky zaznamená, jako poznámku, ne jako závadu: na instalaci, kolem které tento engine vznikl, byl jediný způsob, jak ho vidět, du na serveru.

Fotografie uložená jednou

public.nosync/ dřív držel druhou kopii každého obrázku. Teď drží pevný odkaz, takže obrázky zabírají polovinu toho, co dřív – 1,8 GB na instalaci tohoto projektu. V záloze to neušetří nic, a to bylo změřeno, ne předpokládáno: 200 souborů pod dvěma jmény, 101 MB na disku, 201 MB v záloze. Nic k udělání; první sestavení po aktualizaci odkazy vytvoří.

check zná typ, který nezná

type: story se na příspěvku uložil a nikdo ho nečetl – žádný výpis, žádná položka menu, žádná ikona a ani slovo o tom proč. check teď pojmenuje osm typů, které zná, a cestu, kterou ten, kdo sahá po devátém, obvykle chce: štítek jmenovaný v nav:, který dá výpis s vlastním stránkováním, položkou menu a RSS. Vyžádáno v issue #42.

Co našly tři revize

Engine, nová stránka i přijímač prošly před tagem revizí od někoho, jehož úkolem bylo je rozbít, a každý nález se uzavřel testem, který na starém kódu padá. Čtyři z nich stojí za to znát, i když je nikdy nepotkáš.

Dva příspěvky napsané v týž okamžik nechaly jeden příspěvek. Ustálení jména příspěvku a zápis jeho souboru byly dva kroky s kopírováním médií mezi nimi, a kopírování s fotografiemi trvá vteřiny. Dva běhy, které začaly společně – zásilka z telefonu během importu, dva telefony jeden po druhém – dostaly oba odpověď, že jméno je volné, a soubor druhého nahradil soubor prvního. Oběma volajícím se řeklo, že to dopadlo dobře. Jméno se teď zabírá vytvořením souboru, což ze dvou běhů, které se ptají v týž okamžik, dokáže jen jeden; druhý pokračuje k dalšímu pořadovému číslu a oba příspěvky přežijí.

./setup.sh | tee setup.log opisoval přístupový token v čitelné podobě. Dotaz skrýval, co se píše, jen když byly oba proudy terminál. Kdo takhle web nastavoval, měl by předpokládat, že token v tom logu je, a vyměnit ho.

Připojení fotky přes symbolicky odkazovaný adresář v incoming/ smazalo originál. ln -s ~/Pictures incoming/photos je nasnadě, když člověk nechce fotografie kopírovat dvakrát, a úklid po uložení porovnával text cest, který žádné symbolické odkazy nesleduje – takže každý originál za tím odkazem byl v jeho dosahu.

Embed stále mohl propašovat skript kolem sanitizace, ve třech zápisech: <svg/onload=…>, javascript&#58; zapsané jako entita a <animate>, jehož hodnoty byly skript. Průchod teď prochází atributy značky a každého se ptá, co je, místo aby porovnával tvary. Je to táž pojistka, která obléká vlastní icon_svg štítku.

Jedenáct míst, kde se díval terminál

Engine se na jedenácti místech choval jinak podle toho, jestli byl náhodou připojený terminál – otázka, která se vyprázdnila jen na tty, klávesa nabídnutá na obrazovce a přijatá všude, štítek s písmenem mimo ASCII, který padal pod docker exec a v cronu, kde LANG není nastaven. Devět z nich je jmenováno v changelogu. Na všech záleží víc teď, když příspěvek může vstoupit z cronu nebo z telefonu, kde se žádný terminál nikdy nedívá.

Úplné poznámky, všechno, v CHANGELOG.md pod 1.6.

Komentáře