التواصل مع الدعم

نردّ عبر البريد الإلكتروني، عادةً خلال يومين.

يفحص Google reCAPTCHA هذا الإرسال للحماية من إساءة الاستخدام؛ وتُرسَل بيانات إلى Google. لا يُحمَّل السكربت إلا عند فتح هذا النموذج.

→ كل المقالات

طريقتان للخطأ في عدّ سجل الوصول

أسبوع من التغييرات هنا قام على أعداد مأخوذة من يوم واحد من سجل الوصول: مليون سطر، مئة ألف منها تخصنا. ولمعرفة ما إذا كان أي من ذلك قد نجح، يجب إجراء عمليات العدّ نفسها لاحقًا مرة أخرى — والأعداد التي تُجمع يدويًا مرة ثانية لا تطابق أبدًا تمامًا أعداد المرة الأولى. قائمة روبوتات مختلفة، ونطاق تواريخ مختلف، وخيار مختلف في grep.

لذلك انتقل العدّ إلى أداة كُتب فيها خط الأساس كقيمة ثابتة. وجرى التشغيل الأول على السجل نفسه الذي أُخذ منه خط الأساس. وكان على كل شيء أن يخرج متطابقًا.

سطران لم يتطابقا. وفي المرتين كانت الأداة على حق وكان العدّ الأصلي خاطئًا.

المعدودالفعليرمز المالك10الخلاصة الأسبوعية0398كلا العدّين كان خاطئًا في اتجاهين متعاكسين

grep يقرأ السطر كاملًا

كانت النتيجة الأبرز في ذلك الأسبوع أن رمز المالك ظهر مرة واحدة في يوم كامل. وقد عُدّ بنمط يُطابَق على أسطر السجل كاملة — وسطر السجل يحتوي على الطلب، لكنه يحتوي أيضًا على مصدر الإحالة ووكيل المستخدم (user agent).

كانت المطابقة الوحيدة &t= داخل عنوان URL لمصدر الإحالة من محرك بحث. فقد وصل أحدهم من نتيجة بحث على الهاتف احتوى عنوانها مصادفةً على هذين الحرفين. أما في الطلبات نفسها، فقد ظهر الرمز صفر مرة.

أصبحت النتيجة أقوى، وهذه طريقة غريبة للوقوع في الخطأ. لكنها تبقى خطأ. اقتطع حقل الطلب أولًا — وهو الحقل الثاني بين علامات الاقتباس في سطر السجل بصيغة combined — ثم ابحث داخله.

سلسلة else-if تبتلع الحالة الخاصة

قال العدّ الثاني إن الخلاصة الأسبوعية جُلبت صفر مرة. وبدا التصنيف معقولًا:

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

عناوين الخلاصات في هذا الموقع هي /live/<number>/feed.xml. وكل واحد منها طابق الفرع الأول ولم يصل قط إلى الثاني. الرقم الحقيقي كان 398.

الاستنتاج المستخلص من الرقم الخاطئ صمد مصادفةً: تلك الطلبات البالغ عددها 398 موزعة بالتساوي على بادئات اللغات الإحدى عشرة كلها تحت ثلاث سلاسل عامة للمتصفحات، وهذا زاحف يأخذ كل ترجمة، لا مشترك. لم يشترك أحد. لكن «لم يشترك أحد» و«صفر طلبات» عبارتان مختلفتان، والثانية اقتُبست مرارًا قبل أن يتحقق منها أحد.

الفحص الذي يكشف الخطأين كليهما

شغّل أداة العدّ على اليوم نفسه تمامًا الذي أُخذ منه خط الأساس. يجب أن يخرج كل سطر متطابقًا. وكل ما لا يتطابق هو إما خلل في الأداة أو خلل في العدّ الأصلي، ويتضح أيهما هو قبل أن يصبح لذلك أثر، لا بعده.

استغرق ذلك تشغيلًا واحدًا ونحو أربع دقائق. وكان الرقمان قد ظهرا مكتوبين قبل ذلك، ولم يكن أي منهما ليُكتشف بقراءة الكود بعناية أكبر — بل فقط بإلزام القياس بأن يثبت نفسه.

إعلان