Co potichu hnije

Díl 4 ze 9 — ./blog.sh v1.3

./blog.sh doctor se ptá, jestli je instalace v pořádku, a trvá to vteřinu. Nemá co říci k archivu čtyř tisíc příspěvků, ve kterém se jeden obrázek nikdy nestáhl, tři trvalé odkazy nikam nevedou a dva příspěvky si nárokují tutéž starou adresu.

./blog.sh check to všechno projde a řekne.

Co hledá

Každý nález pojmenuje příspěvek a slug – něco, kam jít a co opravit – a nese řádek, co s tím udělat.

  • Média, o která si příspěvek říká a nemá je, včetně náhledu videa. Obvykle import, jehož stažení selhalo. Stránka vykreslí díru.
  • Obrázky uložené v rozměru 1 px nebo menší. Sestavení je bere jako sledovací pixely a zahazuje je i s popiskem, takže stránka přijde o obojí, aniž to řekne. Tohle se dělo už nějakou dobu, než to cokoli hledalo.
  • Vnitřní odkazy mířící do prázdna – typicky trvalý odkaz zbylý po importu.
  • Adresáře médií, které žádný příspěvek nevlastní, zbylé po smazaném příspěvku nebo po importu, který běžel dvakrát. Stojí disk, ne správnost, takže jsou to varování.
  • Soubory ve vlastním adresáři příspěvku, které příspěvek už nejmenuje. Import jen a pouze přidává, takže zdroj, který mezi běhy obrázek odebere, nechá jeho soubor stát.
  • Dvě série, jejichž jména se liší o znak či dva – jedna série s překlepem, který si potichu založil vlastní. Jména lišící se jen v číslicích se nechávají být: rok-2025 vedle rok-2026 jsou dvě roční série, ne chyba.
  • Jedna stará adresa nárokovaná dvěma příspěvky. Vyhrává ten, který se vykreslí poslední, a čtenáři toho druhého přistanou na něm.

Co řekl o tomto webu

Kontrola archivu

Čtu posty: 37/37

⚠️  Post fourteen-years-every-image-came-home už soubor 01.jpg ve svém
   adresáři médií nejmenuje.
   Zbylo po obrázku, který zdroj mezi importy odebral nebo přejmenoval.
   Post na něj neodkazuje; až se podíváš, smaž ho sám.

Problémů: 0, věcí ke kouknutí: 1.

Jedno varování na malém, pečlivě udržovaném archivu, a je to nález, který toto vydání přidalo. Řádek opravy tipuje na import, protože to je obvyklý viník – jenže na tomto webu nikdy nic importováno nebylo. Ten zbloudilý soubor byl můj a jeho příběh je nudnější a obyčejnější než kterýkoli import. Ten příspěvek jsem napsal jednoho rána; o čtyřicet minut později jsem na jeho začátek přidal screenshot, všechno pod ním se posunulo o jedno místo dolů a obrázek, který byl 01.jpg, se zapsal znovu jako 02.jpg. Tytéž bajty, týž kontrolní součet, nové jméno. Příspěvek ten večer vyšel se šesti obrázky a sedmý – staré jméno jednoho z nich – seděl ve svém adresáři další dva týdny, 124 kB, na které nic neukazovalo.

Což je pro tu kontrolu lepší argument než ten, který jsem měl. Nezajímá ji, kdo soubor nechal, a tady chytila případ, kde se nic neztratilo a nic nerozbilo – jen kopie obrázku, který příspěvek pořád má, pod jménem, které už nepoužívá.

Soubor je teď pryč a nový běh to říká:

✅ Uvnitř archivu je vše v pořádku — postů: 43, média, odkazy i přesměrování
   sedí.

Archiv je v pořádku.

Jen hlásí

Nic tady nemaže adresář ani nepřepisuje příspěvek. Hodnota kontroly je v tom, že jejímu výstupu jde věřit, a kontrole, která také jedná, se musí věřit dvakrát.

Končí nenulově jen u chyb, nikdy u varování, takže může viset na cronu a ozvat se jen tehdy, když je něco skutečně rozbité. Dlouhé seznamy mají strop dvacet řádků na druh – ale počty v souhrnu jsou archivu, ne obrazovky, takže jeden špatný import nemůže pohřbít všechno ostatní a nemůže ani přikrášlit součty.

--online je jiný nástroj s týmž jménem

Ptá se webu na každý odkaz, který web opouští, a trvá to minuty, ne vteřinu, a proto si o něj musíš říci jménem.

Co je ochoten prohlásit za mrtvé, je záměrně úzké: hostitel, který se už nepřekládá, a stránka odpovídající 404 nebo 410. Časový limit, odmítnuté spojení, 5xx nebo 403 je web říkající teď ne – hlásit je by proměnilo jeden rozmarný večer ve čtyřicet nálezů, které jsou zítra všechny v pořádku. Cokoli, co vypadá mrtvě, se před uvěřením potvrdí druhým požadavkem, protože některé servery odpoví na HEAD 404 a na GET 200 pro tutéž adresu.

Verdikty se pamatují čtrnáct dní, takže běh příští týden se ptá jen na odkazy, které poslední dobou neviděl.

Nejtěžší nebylo nacházet věci

Bylo to nenacházet věci, které tam nejsou. První poctivé běhy prohlásily zdravý archiv za rozbitý: každý vnitřní odkaz na stránku výpisu, stránku štítku nebo stránku série se vrátil jako mrtvý, protože ty adresy zapisuje sestavení a check čte obsah. Kontrola, která každou noc končí nenulově na zdravém archivu, tě naučí ignorovat noc, kdy to myslí vážně.

Jedna záměrná výjimka ten průchod přežila. Odkaz na sérii s jediným publikovaným dílem se pořád hlásí, protože výpis série existuje až od druhého dílu – adresa je dnes skutečně prázdná a začne fungovat ve chvíli, kdy publikuješ druhý díl.

Komentáře