Što brisanje brojača zapravo zahvaća
O sadržaju i njegovoj provjeri
U ovom članku
Brisanje brojača ovdje prazni 33 tablice. Jučer ih je praznilo 25.
Svih osam koje je propustilo izrađeno je prethodnog dana, između 11:10 ujutro i 15:10 poslijepodne.
Kako brisanje radi
Vlasnik može izbrisati svoj brojač. Potrebni su POST, vlasnički token i ručno upisan broj brojača jer nema poništavanja. Ništa se ne ostavlja sa strane: skrivena kopija bila bi suprotno od traženog, a poveznice za izvoz nalaze se iznad gumba za svakoga tko želi kopiju.
Zatim se popis tablica prazni u jednoj transakciji, glavna tablica posljednja, a oznaka brisanja odlazi u arhivu kako broj nikada ne bi bio dodijeljen nekom drugom. Ako bilo koji dio ne uspije, sve se vraća. Bolje ne izbrisati ništa nego izbrisati napola.
Iznad tog popisa u datoteci stoji ovaj komentar:
„Svaka tablica koja nešto zna o ovom brojaču. Kao popis, a ne razbacano po kodu: ono što ovdje nedostaje ostaje kao napušteni redak i nitko ne primijeti.“
Komentar je opisao prazninu dan prije nego što je nastala
Jučer se pojavilo šest novih tablica za novu funkciju — vrijeme na stranici, dubina pomicanja, izlazne stranice — uz još dvije. Između 11:10 i 15:10.
Popis za brisanje uređen je istog dana radi dodavanja druge nove tablice. Tih je osam stiglo nakon toga i popis se više nije pomaknuo. Tako je jedno poslijepodne brisanje brojača ostavljalo 4.840 redaka podataka o ponašanju u osam tablica. Praznina je pronađena i zatvorena sljedećeg dana; pokazala je da je popisu trebalo nešto osim pamćenja da ostane potpun.
Ovo nije priča o nemaru. Netko je napisao popis, točno razumio zašto je popis, zapisao što se događa kada zaostane i baš ga tog dana ažurirao za jednu tablicu. I ipak je zaostao jer je održavanje dviju stvari usklađenima tako da se to pamti nešto što ljudi pouzdano rade sve do onog poslijepodneva kada to ne naprave.
Popravak i drugi popravak
Osam naziva sada je na popisu. Umetnuti su na svoja abecedna mjesta umjesto na kraj jer sortirani popis čini prazninu vidljivom, a popis na koji se samo dodaje na kraj ne.
To je mali popravak. Važan popravak jest skripta koja pita bazu podataka koje tablice nose broj brojača, čita popis iz izvorne datoteke umjesto da ga ponavlja i uspoređuje. Svatko tko doda tablicu pokrene je jednom. Ne može se zaboraviti kao popis jer ništa ne pohranjuje — svaki put izvodi odgovor iz sheme.
Pri prvom pokretanju pronašla je još nešto: 25 redaka u još osam tablica čiji broj brojača nije ni u aktivnoj tablici ni u arhivi. Nisu to izbrisani brojači — oni ostavljaju oznaku brisanja. Brojevi koji ne pripadaju ničemu, većinom očiti testni brojevi iz vremena prije provjere arhive. Zapisani su u datoteku izvan korijenskog web-direktorija, a zatim uklonjeni.
Na što se ovo može primijeniti
Svaki popis koji treba održavati usklađenim s nečim drugim na kraju će izgubiti usklađenost, a praznina će biti nevidljiva jer popis kojem nedostaje unos izgleda upravo kao potpun popis.
Obrana nije disciplina. Nego izvođenje jedne strane iz druge i provjera podudaraju li se — te pokretanje te provjere u trenutku kada netko doda stvar, a ne kada se netko zapita.
Komentar iznad popisa bio je u pravu u svemu osim jedne riječi. Rekao je da nitko ne primijeti. Netko jest, dan kasnije, jer je tražio skriptom umjesto pamćenjem.