Dva spôsoby nesprávneho spočítania prístupového protokolu
V tomto článku
Týždeň tunajších zmien sa opieral o počty z jedného dňa prístupového protokolu: milión riadkov, z toho stotisíc našich. Aby sa zistilo, či niečo z toho fungovalo, treba neskôr tie isté počty zmerať znova — a ručne zostavené počty pri druhom raze nikdy nie sú celkom tie isté ako prvé. Iný zoznam botov, iný rozsah dátumov, iný grep.
Počítanie sa preto presunulo do nástroja so základným meraním zapísaným ako konštanta. Prvý beh sa vykonal nad tým istým protokolom, z ktorého základné meranie pochádzalo. Všetko muselo vyjsť rovnako.
Dva riadky nevyšli. V oboch prípadoch mal nástroj pravdu a pôvodný počet bol nesprávny.
grep číta celý riadok
Hlavným zistením týždňa bolo, že token vlastníka sa za celý deň objavil raz. Počítal sa pomocou vzoru porovnávaného s celými riadkami protokolu — a riadok protokolu obsahuje požiadavku, ale aj odkazujúcu stránku a user agenta.
Jediná zhoda bola &t= v URL odkazujúcej stránky vyhľadávača. Niekto prišiel z mobilného výsledku vyhľadávania, ktorého adresa náhodou obsahovala tieto dva znaky. V samotných požiadavkách sa token objavil nula ráz.
Zistenie sa posilnilo, čo je zvláštny spôsob omylu. Stále je to omyl. Najprv vyrežte pole požiadavky — je to druhé pole v úvodzovkách v kombinovanom riadku protokolu — a hľadajte v ňom.
Reťazec else-if pohltí konkrétny prípad
Druhý počet hovoril, že informačný kanál týždenného prehľadu bol načítaný nulakrát. Klasifikácia vyzerala rozumne:
if (url contains "/live/") ... else if (url contains "feed.xml") ...
Adresy kanálov na tomto webe sú /live/<number>/feed.xml. Každá jedna sa zhodovala s prvou vetvou a nikdy sa nedostala do druhej. Skutočný počet bol 398.
Záver vyvodený z nesprávneho čísla náhodou obstál: týchto 398 požiadaviek je rozložených rovnomerne do všetkých jedenástich jazykových prefixov pod tromi všeobecnými reťazcami prehliadačov, čo je prehľadávací robot načítavajúci každý preklad, nie odberateľ. Nikto sa neprihlásil na odber. Ale „nikto sa neprihlásil na odber“ a „nula požiadaviek“ sú rôzne tvrdenia a druhé sa opakovane citovalo predtým, než ho niekto overil.
Kontrola, ktorá zachytí oboje
Spustite nástroj na počítanie presne nad tým dňom, z ktorého pochádzalo základné meranie. Každý riadok musí vyjsť rovnako. Čokoľvek odlišné je buď chybou nástroja, alebo chybou pôvodného počtu a ukáže sa, ktorá to je, ešte predtým, než na tom záleží, nie až potom.
Stačil jeden beh a približne štyri minúty. Obe čísla sa už vtedy objavili v písomnej podobe a pozornejšie čítanie kódu by neodhalilo ani jednu z týchto chýb — odhaliť ich mohlo iba overenie samotného merania.