Destekle iletişim

E-postayla, genellikle iki gün içinde yanıt veririz.

Google reCAPTCHA, kötüye kullanıma karşı bu gönderimi denetler; bu sırada veriler Google'a aktarılır. Komut dosyası yalnızca bu form açıldığında yüklenir.

← Tüm yazılar

Bir erişim günlüğünü yanlış saymanın iki yolu

Buradaki bir haftalık değişiklik, erişim günlüğünün tek bir gününden alınan sayımlara dayanıyordu: bir milyon satır, bunların yüz bini bize ait. Bunlardan herhangi birinin işe yarayıp yaramadığını anlamak için aynı sayımların daha sonra yeniden yapılması gerekir — ve ikinci kez elle bir araya getirilen sayımlar hiçbir zaman ilkindekilerle tam olarak aynı olmaz. Farklı bir bot listesi, farklı bir tarih aralığı, farklı bir grep.

Bu yüzden sayım, referans değerlerinin sabit olarak içine yazıldığı bir araca taşındı. İlk çalıştırma, referans değerlerinin alındığı günlüğün ta kendisi üzerinde yapıldı. Her şeyin eşit çıkması gerekiyordu.

İki satır eşit çıkmadı. İki seferde de araç haklıydı, ilk sayım yanlıştı.

sayılangerçektesahip belirteci10haftalık akış0398iki sayım da ters yönlerde yanlıştı

grep satırın tamamını okur

Haftanın manşet bulgusu, sayaç sahibi belirtecinin koca bir günde tek bir kez geçtiğiydi. Bu sayım, günlükteki satırların tamamına uygulanan bir desenle yapılmıştı — oysa günlükteki bir satır yalnızca isteği değil, yönlendiren sayfayı ve kullanıcı aracısını da içerir.

Tek eşleşme, bir arama motorunun yönlendiren sayfa adresindeki bir &t= dizisiydi. Birisi, adresinde tesadüfen bu iki karakter geçen bir mobil arama sonucundan gelmişti. İsteklerin kendisinde ise belirteç sıfır kez geçiyordu.

Bulgu daha da güçlendi; bu, yanılmanın tuhaf bir biçimi. Yine de yanlış. Önce istek alanını ayıklayın — combined biçimli günlükteki bir satırda tırnak içindeki ikinci alandır — ve aramayı onun içinde yapın.

Bir else-if zinciri özel durumu yutar

İkinci sayıma göre haftalık akış sıfır kez çekilmişti. Sınıflandırma makul görünüyordu:

if (url contains "/live/") ... else if (url contains "feed.xml") ...

Bu sitedeki akış adresleri şu biçimdedir: /live/<number>/feed.xml. Her biri ilk dalla eşleşti ve hiçbiri ikinci dala ulaşmadı. Gerçek sayı 398'di.

Yanlış sayıdan çıkarılan sonuç tesadüfen ayakta kaldı: bu 398 istek, üç genel tarayıcı kimliğiyle on bir dil önekinin tamamına eşit olarak dağılmıştı; bu da bir abonenin değil, her çeviriyi alan bir botun işiydi. Kimse abone olmamıştı. Ama “kimse abone olmadı” ile “sıfır istek” farklı ifadelerdir ve ikincisi, kimse kontrol etmeden önce defalarca aktarıldı.

İkisini de yakalayan kontrol

Sayım aracını, referans değerlerinin alındığı günün ta kendisi üzerinde çalıştırın. Her satırın eşit çıkması gerekir. Eşit çıkmayan her şey ya araçtaki ya da ilk sayımdaki bir hatadır; hangisi olduğu da iş işten geçtikten sonra değil, önem kazanmadan önce ortaya çıkar.

Bu, tek bir çalıştırma ve yaklaşık dört dakika sürdü. İki sayı da o sırada çoktan yazıya geçmişti ve hiçbiri kodu daha dikkatli okuyarak yakalanamazdı — ancak ölçümü kendi hesabını vermeye zorlayarak yakalanabilirdi.

Reklam