Kontaktovat podporu

Odpovíme e-mailem, obvykle do dvou dnů.

Google reCAPTCHA kontroluje toto odeslání kvůli ochraně před zneužitím; data se přitom předávají společnosti Google. Skript se načte až při otevření tohoto formuláře.

← Všechny články

Čeho všeho se smazání počítadla skutečně dotkne

Smazání počítadla tu vyprázdní 33 tabulek. Včera jich vyprázdnilo 25.

Všech osm, které vynechalo, vzniklo den předtím, mezi 11:10 dopoledne a 15:10 odpoledne.

33 tabulek uchovává něco o počítadle 8 z nich se nevyprazdňovalo — všechny vznikly den předtím těch osm dohromady obsahovalo 4 840 řádků dnes vloženy na abecední místo, ne připojeny na konec 25 osiřelých řádků nalezeno v jiných tabulkách a odstraněno

Jak mazání funguje

Majitel počítadla může své počítadlo smazat. Vyžaduje to POST, token majitele a ručně vypsané číslo počítadla, protože vrátit to nejde. Nic se neodkládá stranou: stínová kopie by byla opakem toho, oč majitel žádal, a odkazy na export jsou nad tlačítkem pro každého, kdo kopii chce.

Pak se v jediné transakci vyprázdní seznam tabulek, hlavní tabulka jako poslední, a do archivu se zapíše náhrobek, aby číslo nemohlo být nikdy přiděleno někomu jinému. Když selže kterákoli část, vrátí se zpět celé. Lepší nesmazat nic než smazat napůl.

Nad tím seznamem stojí v souboru tento komentář:

„Každá tabulka, která o tomto počítadle něco ví. Jako seznam, a ne rozeseté po kódu: co tu chybí, zůstane ležet jako osiřelý řádek, a nikdo si toho nevšimne.“

Komentář popsal mezeru den předtím, než se otevřela

Včera přibylo šest nových tabulek pro novou funkci — doba na stránce, hloubka scrollování, výstupní stránky — a k nim dvě další. Mezi 11:10 a 15:10.

Seznam pro mazání byl týž den upraven, aby do něj přibyla jiná nová tabulka. Těch osm přišlo až potom a seznam se už nepohnul. Jedno odpoledne tak smazání počítadla nechávalo za sebou 4 840 řádků dat o chování, rozesetých v osmi tabulkách. Mezera se našla další den a byla uzavřena; ukázala ale, že seznam potřebuje k úplnosti něco jiného než paměť.

Tohle není příběh o nedbalosti. Někdo seznam napsal, přesně věděl, proč je to seznam, zapsal, co se stane, když zaostane, a ještě ten den ho kvůli jedné tabulce aktualizoval. A stejně zaostal, protože udržovat dvě věci v souladu tím, že si na to člověk vzpomene, lidé zvládají spolehlivě přesně do toho odpoledne, kdy to nezvládnou.

Oprava a ta druhá oprava

Těch osm názvů v seznamu teď je. Byly vloženy na svá abecední místa, ne připojeny na konec, protože v seřazeném seznamu je mezera vidět, kdežto v seznamu, kam se jen připisuje, ne.

To je ta malá oprava. Ta podstatná je skript, který se databáze zeptá, které tabulky nesou číslo počítadla, přečte seznam přímo ze zdrojového souboru, místo aby ho opakoval, a obojí porovná. Kdo přidá tabulku, spustí ho jednou. Nedá se zapomenout tak jako seznam, protože nic neuchovává — odpověď pokaždé odvodí ze schématu.

Při prvním spuštění našel ještě něco: 25 řádků v dalších osmi tabulkách, jejichž číslo počítadla není ani v živé tabulce, ani v archivu. Nejde o smazaná počítadla — ta zanechávají náhrobek. Jsou to čísla, která nepatří vůbec ničemu, většinou zjevná testovací čísla z doby před zavedením kontroly archivu. Byla zapsána do souboru mimo kořenový adresář webu a pak odstraněna.

Co z toho plyne obecně

Každý seznam, který se musí udržovat v souladu s něčím jiným, se časem rozejde, a ta mezera nebude vidět, protože seznam, kterému chybí položka, vypadá přesně jako seznam úplný.

Obranou není disciplína. Je jí odvodit jednu stranu z druhé a ověřit, že se shodují — a spouštět to ověření ve chvíli, kdy někdo tu věc přidává, ne ve chvíli, kdy ho něco napadne.

Komentář nad seznamem měl pravdu ve všem kromě jednoho slova. Tvrdil, že si toho nikdo nevšimne. Někdo si všiml, o den později, protože hledal skriptem, a ne pamětí.

Reklama