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 sayacı silmek aslında nelere dokunuyor

Burada bir sayacı silmek 33 tabloyu boşaltıyor. Dün 25 tabloyu boşaltıyordu.

Atladığı sekiz tablonun hepsi bir gün önce, sabah 11.10 ile öğleden sonra 15.10 arasında oluşturulmuştu.

33 tabloda bir sayaca ait veri var 8'i boşaltılmıyordu — hepsi bir gün önce oluşturulmuştu bu sekizinde toplam 4.840 satır vardı bugün sona değil, alfabetik yerlerine eklendi diğer tablolarda 25 sahipsiz satır bulundu ve silindi

Silme nasıl işliyor

Sayaç sahibi sayacını silebilir. Bunun için bir POST isteği, sahibin belirteci ve elle yazılmış sayaç numarası gerekir, çünkü geri alma yoktur. Hiçbir şey kenara ayrılmaz: gölge bir kopya istenenin tam tersi olurdu; kopya isteyenler için dışa aktarma bağlantıları düğmenin hemen üstünde durur.

Ardından bir tablo listesi tek bir işlem içinde boşaltılır, ana tablo en sona kalır; numaranın bir daha asla başkasına verilmemesi için de arşive bir mezar taşı kaydı düşülür. Herhangi bir adım başarısız olursa her şey geri alınır. Hiçbir şeyin silinmemesi, yarısının silinmesinden iyidir.

Dosyada bu listenin üstünde şu yorum duruyor:

“Bu sayaç hakkında bir şey bilen her tablo. Koda dağılmış değil, liste hâlinde: burada eksik olan her şey sahipsiz bir satır olarak geride kalır ve kimse fark etmez.”

Yorum, açığı oluşmadan bir gün önce tarif etmişti

Dün yeni bir özellik için — sayfada geçen süre, kaydırma derinliği, çıkış sayfaları — altı yeni tablo ve bunların yanında iki tablo daha oluşturuldu. 11.10 ile 15.10 arasında.

Silme listesi de aynı gün, başka bir yeni tabloyu eklemek için düzenlenmişti. Sekiz tablo bundan sonra geldi ve liste bir daha değişmedi. Böylece bir öğleden sonra boyunca bir sayacı silmek, sekiz tabloya dağılmış 4.840 satırlık davranış verisini geride bıraktı. Açık ertesi gün bulundu ve kapatıldı; ortaya çıkardığı şey, listenin eksiksiz kalması için hafızadan başka bir şeye ihtiyaç duyduğuydu.

Bu bir dikkatsizlik hikâyesi değil. Birisi listeyi yazdı, neden bir liste olduğunu tam olarak anladı, geride kaldığında ne olacağını not etti ve aynı gün bir tablo için listeyi güncelledi. Yine de liste geride kaldı, çünkü iki şeyi hatırlamaya güvenerek uyumlu tutmak, insanların tam da yapmadıkları o öğleden sonraya kadar güvenilir biçimde yaptığı bir iştir.

Düzeltme ve öbür düzeltme

Sekiz ad artık listede. Sona eklenmek yerine alfabetik sıradaki yerlerine yerleştirildiler, çünkü sıralı bir listede boşluk göze çarpar, yalnızca sona ekleme yapılan bir listede çarpmaz.

Bu küçük düzeltme. Asıl önemli olan, veritabanına hangi tabloların sayaç numarası taşıdığını soran, listeyi tekrarlamak yerine doğrudan kaynak dosyadan okuyan ve ikisini karşılaştıran bir betik. Tablo ekleyen herkes onu bir kez çalıştırır. Bir listenin unutulabildiği gibi unutulamaz, çünkü hiçbir şey saklamaz — yanıtı her seferinde şemadan türetir.

İlk çalıştırmada başka bir şey daha buldu: sekiz tabloda daha, sayaç numarası canlı tabloda da arşivde de bulunmayan 25 satır. Silinmiş sayaçlar değil — onlar bir mezar taşı bırakır. Hiçbir şeye ait olmayan numaralar; çoğu, arşiv denetimi yokken kullanılmış, belli ki deneme amaçlı numaralar. Önce web kök dizininin dışındaki bir dosyaya yazıldılar, ardından silindiler.

Bundan çıkan genel ders

Başka bir şeyle uyumlu tutulması gereken her liste er geç bu uyumu kaybeder ve açık görünmez olur, çünkü bir girdisi eksik olan liste, eksiksiz bir listeyle tıpatıp aynı görünür.

Çare disiplin değil. Çare, bir tarafı diğerinden türetip ikisinin uyuştuğunu denetlemek — ve bu denetimi birinin aklına takıldığı anda değil, biri o şeyi eklediği anda çalıştırmaktır.

Listenin üstündeki yorum, tek bir kelime dışında her konuda haklıydı. Kimse fark etmez diyordu. Biri fark etti, bir gün sonra, çünkü hafızasıyla değil bir betikle aramaya çıkmıştı.

Reklam