Contatta l'assistenza

Rispondiamo per e-mail, di solito entro due giorni.

Per prevenire abusi, Google reCAPTCHA verifica questo invio; alcuni dati vengono trasmessi a Google. Lo script viene caricato solo quando apri questo modulo.

← Tutti gli articoli

Due modi per contare male il proprio registro

Una settimana di modifiche qui poggiava su conteggi presi da un giorno del registro degli accessi: un milione di righe, centomila delle quali nostre. Per sapere se qualcosa abbia funzionato, quegli stessi conteggi vanno rifatti più avanti — e conteggi messi insieme a mano una seconda volta non sono mai esattamente quelli della prima. Un’altra lista di bot, un altro intervallo di date, un altro grep.

Il conteggio si è quindi trasferito in uno strumento con la base scritta dentro come costante. La prima esecuzione è andata contro proprio il registro da cui la base proveniva. Tutto doveva risultare uguale.

Due righe non lo erano. Entrambe le volte lo strumento aveva ragione e il conteggio originale torto.

grep legge l’intera riga

Il risultato principale della settimana era che il token del proprietario fosse comparso una volta in un giorno intero. Era stato contato con un modello applicato a righe intere di registro — e una riga di registro contiene la richiesta, ma anche il referrer e l’identificativo del browser.

Quell’unica corrispondenza era un &t= dentro l’URL di provenienza di un motore di ricerca. Qualcuno è arrivato da un risultato di ricerca mobile il cui indirizzo conteneva per caso quei due caratteri. Nelle richieste vere e proprie il token è comparso zero volte.

Il risultato è diventato più netto, che è un modo strano di avere torto. Torto lo aveva comunque. Ritaglia prima il campo della richiesta — è il secondo campo tra virgolette di una riga di registro combinato — e cerca lì dentro.

Una catena else-if inghiotte il caso specifico

Il secondo conteggio diceva che il feed settimanale era stato scaricato zero volte. La classificazione sembrava ragionevole:

if (l’indirizzo contiene "/live/") ... else if (l’indirizzo contiene "feed.xml") ...

Gli indirizzi del feed su questo sito sono /live/<numero>/feed.xml. Ognuno di essi corrispondeva al primo ramo e non raggiungeva mai il secondo. Il numero vero era 398.

La conclusione tratta dal numero sbagliato è sopravvissuta per caso: quelle 398 richieste si distribuiscono uniformemente su tutti e undici i prefissi di lingua sotto tre identificativi di browser generici, e questo è un crawler che prende ogni traduzione, non un abbonato. Nessuno si era abbonato. Ma «nessuno si è abbonato» e «zero richieste» sono affermazioni diverse, e la seconda è stata citata più volte prima che qualcuno la verificasse.

La verifica che le prende entrambe

Esegui il tuo strumento di conteggio contro esattamente il giorno da cui viene la tua base. Ogni riga deve risultare uguale. Tutto ciò che non lo è, è o un difetto dello strumento o un difetto del conteggio originale, e scopri quale dei due prima che abbia importanza, anziché dopo.

Ci è voluta una esecuzione e circa quattro minuti. Entrambi quei numeri erano stati a quel punto ripetuti più volte per iscritto, e nessuno dei due sarebbe stato colto da una lettura più attenta del codice — solo obbligando la misurazione a rispondere di sé.

Pubblicità