كيف قُرِئ هذا
- الرمز
- الإصدار
- تصحيح الأخطاء
- القناع
- كلمات رمزية أُصلِحت
- مكتوب بـ
- مجموعة المحارف المعلَنة
- واحد من طقم
- أسطر مسح متوافقة
- المحارف
- وُجِد بـ
فتح index.html مباشرة من مجلد يمنع المتصفح من تحميل وحدات JavaScript، فلا يحدث شيء عند اختيار الصورة التي تُقرأ. قدّم المجلد عبر HTTP بدلا من ذلك:
powershell -ExecutionPolicy Bypass -File serve.ps1
ثم افتح http://localhost:8080/.
صوِّبه نحو رمز، أو أفلِت صورةً لواحد. يُقرأ هنا، ولا يُقرأ في أي مكان آخر.
قراءةُ رمز حسابٌ على بكسلات، والبكسلات هنا أصلاً. فإيجادُ الرمز، وتصحيحُ الميل، وفكُّ القناع، وإصلاحُ التلف بـ Reed-Solomon، وقراءةُ البتّات، كلها تجري في نحو ألفَي سطر من JavaScript في هذه الصفحة تستطيع قراءتها. والكاميرا هي الوعد نفسه لا استثناء منه: فالإطار يصل بكسلاتٍ في هذا التبويب، ويُفحَص، ويزول. ولا يُسجَّل شيء، ولا يُحفَظ شيء، وليست لهذه الصفحة وظيفة شبكية من أي نوع تُرسِل بها واحداً.
فحص حي: جارٍ الفحص…
دون اتصال: جارٍ الفحص…
لا داعي لأن تصدّقنا: افتح أدوات المطوّر، وراقب تبويب «الشبكة»، ثم امسح رمزاً والكاميرا تعمل. لن يحمل أي طلب إطاراً ولا محرفاً واحداً مما قاله. أو اقطع الاتصال بالإنترنت واقرأ الرمز رغم ذلك.
fetch ولا XMLHttpRequest ولا sendBeacon في أي موضع من src/، و Content-Security-Policy الخاصة بالصفحة لا تترك عنواناً يستطيع هذا الأصل الإرسال إليه لو وُجد. ولهذا لا تستطيع هذه الصفحة أن تقول لك إلى أين ينتهي رابط مختصَر: فمعرفةُ ذلك تعني السؤال، وهي لا تسأل.@، واسمٌ مكتوب بخطّ حروفه على شكل حروفنا، وإعادةُ توجيه — حيث تظهر. تحقّق بنفسك. لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع dist — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر:
github.com/A-Box-of-Tools/website
الملفات الجديرة بالقراءة أولا هي config/site.toml من أجل سياسة أمان المحتوى (Content-Security-Policy)، وsrc/binarize.js وsrc/detect.js لإيجاد رمز في صورة — العتبةُ ونقوشُ التحديد وتحويلُ المنظور — وsrc/qr-decode.js لقراءته، وsrc/reed-solomon.js لإصلاح ما أُسيئت قراءته، و src/linear.js للرموز المخطَّطة، وsrc/camera.js، وهو كل سطر في هذه الصفحة يلمس كاميرا.
إذا حذّرك برنامج الحماية في عملك من رفع ملف. إنه يراقب لحظة اختيار ملف في المتصفّح، ولا يمكنه أن يعرف إن كانت الصفحة تنوي إرساله — فيحذّر عند الاختيار. لا شيء يُرسَل من هنا: افتح أدوات المطوّر في متصفّحك، وانتقل إلى Network، ثم اختر ملفاً. لا يوجد أي طلب يحمله، ولا أي طلب أصلاً عدا المعاينة المحلية للصفحة. وهو الفحص نفسه الذي يستطيع أي شخص في قسم تقنية المعلومات لديك إجراؤه في نصف دقيقة.
صورة فوتوغرافية، أو لقطة شاشة، أو الكاميرا. وأياً اخترت، تُقرأ الصورة هنا، في هذه الصفحة، على جهازك — فلا يُرفع شيء، وإطارُ الكاميرا يُفحَص ويُرمى لا يُسجَّل.
وتستطيع كذلك لصق صورة مباشرة بـ Ctrl+V — ولقطةُ شاشة لرمز على الشاشة أسرع مدخل.
شغّل الضوء بعض الكاميرات وحدها لها واحد، وبعض المتصفحات وحدها تسمح لصفحة أن تطلبه. وحيث لا يُعرَض، فهو غير موجود.
ضوءُ الكاميرا هو المؤشِّر الصادق هنا: فهو مضاء ما دامت الإطارات تصل ومطفأ في اللحظة التي تتوقف فيها. ولا شيء بين تلك النقطتين يُكتَب على قرص، ولا عنوان في Content-Security-Policy الخاصة بهذه الصفحة يمكن أن تُرسَل إليه صورة.
يُعرَض، ولا يُفتَح أبداً. فالرمزُ المطبوع عنوانٌ لا يستطيع أحد قراءته، وذلك بالضبط ما يجعل لصق ملصق فوق واحد يستحق عناء أحدهم — فالسلسلة كلها هنا لتنظر إليها أولاً، والمضيفُ الذي ستبلغه فعلاً منادىً عليه على سطره وحده.
هل أنجزت المهمة؟
ما الذي حدث خطأ؟
شكرا — هذا يساعد.
يُرسَل الجواب فقط، وفقط عند الضغط على زر. لا يُرسَل ملفك أبدا، ولا اسمه، ولا أي شيء عنه.
# قارئ QR والباركود — امسح رمز QR من صورة أو من كاميرتك صوِّبه نحو رمز، أو أفلِت صورةً لواحد. يُقرأ هنا، ولا يُقرأ في أي مكان آخر. > اقرأ رمز QR من صورة أو لقطة شاشة أو كاميرتك، وانظر بالضبط إلى أين يذهب الرابط قبل أن تفتحه. وباركودات EAN وUPC وCode 128 وCode 39 وITF كذلك. ولا يُرفع شيء. هذه الصفحة أداة تفاعلية تعمل بالكامل داخل متصفحك، على العنوان https://abox.tools/ar/مسح-رمز-qr/ — ولا يُرفَع أي شيء تعطيه إياها. وفيما يلي كل ما تقوله الصفحة عن الأداة بالكلمات؛ لاستخدامها، افتح العنوان. ## صورك والرموز التي فيها لا تُرفع **أبدا**. لا يوجد خادم. قراءةُ رمز حسابٌ على بكسلات، والبكسلات هنا أصلاً. فإيجادُ الرمز، وتصحيحُ الميل، وفكُّ القناع، وإصلاحُ التلف بـ Reed-Solomon، وقراءةُ البتّات، كلها تجري في نحو ألفَي سطر من JavaScript في هذه الصفحة تستطيع قراءتها. **والكاميرا هي الوعد نفسه لا استثناء منه:** فالإطار يصل بكسلاتٍ في هذا التبويب، ويُفحَص، ويزول. ولا يُسجَّل شيء، ولا يُحفَظ شيء، وليست لهذه الصفحة وظيفة شبكية من أي نوع تُرسِل بها واحداً. - ✗ بلا رفع - ✗ بلا حساب - ✗ لا يُسجَّل شيء - ✓ يعمل دون اتصال - ✓ مفتوح المصدر ## كيف تقرأ رمز QR دون رفع الصورة 1. **أعطِه الصورة.** أفلِت صورة فوتوغرافية أو لقطة شاشة على الصندوق، أو الصق واحدة مباشرة، أو اضغط زر الكاميرا. ولا بأس بعدة صور دفعة واحدة — فكلٌّ تُقرأ وحدها وكلٌّ تنال جوابها. ولقطةُ شاشة لرمز هو على شاشتك أصلاً أسرع مدخل وأوثقه، لأنه لا عدسة ولا ميل ولا ضوء في الأمر. 2. **أدخِل الرمز كله في الإطار، والهامش معه.** الفراغ الأبيض حول الرمز جزء من الرمز: فهو كيف يجد القارئ أين ينتهي. والصورةُ المقصوصة إلى حافّة المربّعات هي السبب الأشيع بمفرده في ألا يُقرأ واحد، وملءُ نحو نصف الإطار بالرمز نحو الصواب — وأقربُ من ذلك تقع الأركان خارج الصورة. 3. **اقرأ العنوان قبل أن تقرّر شيئاً.** مغزى مسح رمز على ملصق أو عدّاد وقوف أو رسالة هو معرفةُ إلى أين يذهب، وذلك هو الشيء الوحيد الذي لا تدعك كاميرا الهاتف تفعله حقاً. والمضيف مطبوع هنا على سطره وحده. فإن لم يكن اسماً كنت تتوقّعه، فقد حصلت على ما جئت من أجله ولم يبقَ ما يُفتَح. 4. **خذ التحذيرات مأخذ الجدّ، ولا سيّما الهادئة منها.** عنوانٌ `http://` صِرف، أو اسمٌ بأبجدية ليست التي يبدو أنه بها، أو مختصِرُ روابط، أو أي شيء قبل `@` في العنوان — كلُّ واحد من هذه مسمّىً حيث يظهر. ولا واحد منها يثبت شيئاً وحده. وكلها تستحق عشر ثوانٍ قبل أن تذهب إلى هناك. 5. **إن لم يُقرأ، فغيّر الضوء قبل أن تغيّر أي شيء آخر.** كلُّ إخفاق تقريباً مشكلةُ عتبة: انعكاسٌ عبر الوسط، أو ظلٌّ على ركن، أو شاشةٌ مصوَّرة بميل يلتقط الإضاءة الخلفية. تحرّك حتى يزول الوهج عن الرمز، أو شغّل ضوء الكاميرا. وإن لم ينفع، فالتقط صورةً واحدة مسطَّحة مواجِهة وأفلِتها — فالصورةُ الساكنة تنال بحثاً أدقّ بكثير مما يناله إطار حيّ. 6. **افحص الصورة المأخوذة عيّنتها إن بدا الجواب غريباً.** افتح «كيف قُرِئ هذا» وانظر إلى الشبكة الصغيرة. فهي ما ظنّت هذه الصفحة أن الرمز إياه، مرسوماً من الوحدات التي أخذت عيّناتها. والقارئ الذي أساء قراءة رمز وأصلحه إلى شيء معقول سيُظهِر ذلك هناك، ولا يُظهِره في أي مكان آخر. ## النسخة الأطول [كيف تصنع رمز QR وتثبت أنه يُقرأ](https://abox.tools/ar/أدلة/صنع-رمز-qr-والتاكد-انه-يقرا/): أنشئ الرمز ثم تحقق منه بقارئ الموقع نفسه: المحتوى الحرفي، والرابط الحقيقي، بمقاس الطباعة ومن صورة فوتوغرافية، قبل الدفعة. كل ذلك في المتصفح، ولا شيء يُرفع. ## أيضا في الصندوق - [البصمة والمجموع التحقّقي](https://abox.tools/ar/حساب-قيمة-التجزئة/): افحص تنزيلاً في مقابل الرقم الذي نشره الناشر، دون أن ترسله إلى أحد. - [مولّد كلمات المرور والعبارات](https://abox.tools/ar/مولد-كلمات-المرور/): مصنوعة هنا، بمتصفحك أنت، ولا تُرسَل إلى أي مكان أبداً. ولا يُخزَّن شيء ولا سجلّ لها. - [منسِّق JSON](https://abox.tools/ar/تنسيق-json/): JSON وXML وHTML وCSS وYAML، منسَّقة أو محوَّلة. ولا شيء يُلصَق في خادم أحد آخر. - [محوّل YAML إلى JSON](https://abox.tools/ar/تحويل-yaml-الى-json/): الاتجاهان معاً، ويقول لك ثمن كلّ منهما. ولا شيء من ذلك يُلصَق في خادوم أحد آخر. ## أسئلة ### هل تُرفع الصورة إلى أي مكان؟ لا، ولا يُرفَع شيء قُرِئ منها. فالصورة يُفكّ ترميزها على لوحة في هذه الصفحة وتُقرأ هناك، بـ JavaScript يُخدَم من هذا الموقع. وليست لهذه الأداة وظيفة شبكية من أي نوع — فهي لا تجلب شيئاً ولا ترسل شيئاً أبداً — و`Content-Security-Policy` الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به، وليس واحد منها لنا. وأبين برهان أن تقطع الاتصال بالإنترنت: فستظل تعمل. ### هل تسجّل الكاميرا شيئاً؟ لا. إطارُ الكاميرا يصل بكسلاتٍ في هذا التبويب، ويُرسَم على لوحة، ويُفحَص، ويكتب فوقه الإطارُ التالي بعد نحو عُشر ثانية. ولا شيء يُكتَب على قرص ولا شيء يُحفَظ. ويتوقف البثّ في اللحظة التي تضغط فيها «أوقِف»، وحين يذهب التبويب إلى الخلفية، وحين تغادر الصفحة — والضوءُ الذي على كاميرتك هو المؤشِّر الجدير بالثقة، لأنه لا تستطيع صفحةٌ إطفاءه. ### لماذا تعرض عليّ الرابط بدل أن تفتحه؟ لأن ذلك هو الجزء المفيد. فرمزُ QR عنوانٌ لا تستطيع قراءته، وهو السبب كله في نجاح ملصق فوق الرمز الذي على عدّاد وقوف: فبحلول معرفتك إلى أين ذهب تكون قد وصلت. وهنا تُطبَع السلسلة كاملة، ويُنادى على المضيف على سطره وحده، وفتحُه زرٌّ منفصل تضغطه بعد أن تقرأ. وتلك نقرةٌ إضافية واحدة وهي النقرة التي احتاجت إليها الصيغة دائماً. ### ماذا يستطيع قراءته؟ رموز QR عند كل إصدار من 1 إلى 40، بمستويات تصحيح الأخطاء الأربعة كلها، بالأنماط الرقمي والأبجدي الرقمي والبايتي والكانجي، مع الإبلاغ عن مجموعات محارف ECI ورموز الإلحاق المهيكَل بدل إسقاطها في صمت. وعلى الجانب المخطَّط: EAN-13 وEAN-8 وUPC-A وUPC-E وITF-14 وInterleaved 2 of 5 وCode 128 وCode 39. ولا يقرأ Data Matrix ولا PDF417 ولا Aztec ولا MaxiCode. ### لا يقرأ رمزي. ما الخطب؟ تسعاً من كل عشر يكون واحداً من ثلاثة. الهامشُ الأبيض مقصوص، والقارئ يستعمل ذلك الهامش ليجد أين ينتهي الرمز. أو ثمّة انعكاس أو ظلّ عبر جزء من الرمز، فلا عتبة تفصل المربّعات الداكنة عن الفاتحة. أو الرمز أصغر في الإطار من أن تكون وحداته أكثر من بكسل أو بكسلين عرضاً. حرِّك الضوء، واملأ نحو نصف الإطار، والتقط الصورة مواجِهةً لا بميل. ### هل يستطيع قراءة رمز تالف أو مغطّى جزئياً؟ كثيراً، نعم، وذلك هو عملُ الصيغة كما صُمِّمت لا شيء بارع هنا. فكل رمز QR يحمل بيانات فحص Reed-Solomon، والرمزُ المصنوع عند المستوى H يستطيع فقدان نحو 30% من وحداته ويُعاد بناؤه بالضبط رغم ذلك. وتقول الصفحة كم كلمة رمزية اضطرّت إلى إصلاحها تحت «كيف قُرِئ هذا»، فترى كم كان قريباً من الحافّة. والذي لن تفعله أن تخمّن: فالرمزُ التالف فوق ما تحتمله الفحوص يُبلَّغ عنه بأنه غير مقروء لا يُجاب عنه خطأً. ### لماذا تقول إنها لا تستطيع إخباري إلى أين يذهب رابط bit.ly؟ لأن معرفة ذلك تعني سؤال bit.ly، وذلك طلبٌ شبكي. وكلُّ دعوى أخرى على هذه الصفحة تقوم على أنه لا شيفرة هنا تتصل بشيء، واستثناءٌ هادئ لهذا كان سيساوي أقلّ من الجواب. فيُسمّى المختصِر، ويُترَك ما يخفيه مجهولاً بصدق. وإن أردت حلّه، فالصقه في شيء مستعدّ للجلب. ### هل مسحُ رمز QR آمن أصلاً؟ مسحُه آمن. والتصرّفُ بموجبه هو الخطر، وهو خطر حقيقي: فالرموز الملصوقة فوق الرمز الحقيقي على عدّادات الوقوف وعلى طاولات المطاعم وعلى بطاقات تسليم الطرود صارت شائعة بما يكفي لأن يكون لها اسم. والذي يجعلها تنجح أن لا أحد يستطيع قراءة رمز بالنظر إليه. وقراءتُه دون فتحه — وهو ما تفعله هذه الصفحة — تزيل تلك الميزة كلها، والعشرُ ثوانٍ التي يستغرقها النظر إلى المضيف هي الدفاع كله. ### ما الشبكة الصغيرة التي تحت كل نتيجة؟ الوحدات التي أخذت هذه الصفحة عيّناتها فعلاً من صورتك، مرسومةً من جديد بمربّع لكل وحدة. وهي هناك كي تُفحَص القراءة بالعين لا أن يُوثَق بها: فإن بدت تلك الشبكة الرمزَ الذي صوّرته، فالجواب الذي فوقها جاء من البكسلات الصحيحة. ولا يعرض عليك هذا قارئٌ تقريباً، وهو الفرق بين أداة تستطيع فحصها وأخرى عليك تصديقها. ### هل يقرأ عدة رموز في صورة واحدة؟ واحداً لكل صورة، في الوقت الحالي. أفلِت عدة صور دفعة واحدة فتُقرأ كلٌّ وحدها، والكاميرا تقرأ رمزاً بعد رمز وأنت تحرّكها، محتفظةً بكل جديد لم ترَه من قبل. أما صورةٌ واحدة تحمل ورقةً من الرموز فعملٌ لقصّها، أو لتصويب الكاميرا نحوها واحداً واحداً. ### لماذا قالت إن باركودي بصيغة غير التي طلبتها؟ لأن الباركود لا يحمل اسمه. فـ UPC-A هو EAN-13 أول رقم فيه صفر، وITF-14 هو Interleaved 2 of 5 بأربعة عشر رقماً ورقمِ تحقّق صحيح، وCode 128 في نمطه الرقمي لا يشبه شيئاً آخر. والذي تبلّغ عنه هذه الصفحة هو ما تقوله الأشرطة زائد ما يؤكّده رقم التحقّق، وهو كل ما يعرفه الرمز نفسه. ### هل يعمل دون اتصال؟ نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل، بالكاميرا وكل شيء. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فقارئٌ يرسل صورتك بعيداً ليُفكّ ترميزها كان سيتوقف في اللحظة التي تقطع فيها الاتصال. ## كيف يمكن التحقق من وعد الخصوصية - **الصورة لا تُرفَع أبداً، والكاميرا ليست استثناء.** الصورةُ التي تفلتها هنا يُفكّ ترميزها على لوحة في هذه الصفحة وتُقرأ هناك. وإطارُ الكاميرا هو الشيء نفسه يصل ثلاثين مرة في الثانية: يُرسَم على تلك اللوحة، ويُفحَص، ويكتب فوقه الذي يليه. فلا إطار يُسجَّل، ولا واحد يُحفَظ، وانطفاءُ ضوء الكاميرا حين تضغط «أوقِف» هو الأمر كله. - **لا شيء هنا يجلب شيئاً.** لا يوجد `fetch` ولا `XMLHttpRequest` ولا `sendBeacon` في أي موضع من `src/`، و `Content-Security-Policy` الخاصة بالصفحة لا تترك عنواناً يستطيع هذا الأصل الإرسال إليه لو وُجد. ولهذا لا تستطيع هذه الصفحة أن تقول لك إلى أين ينتهي رابط مختصَر: فمعرفةُ ذلك تعني السؤال، وهي لا تسأل. - **تعرض عليك العنوان. ولا تفتحه أبداً.** رمزُ QR المطبوع عنوانٌ لا يستطيع أحد قراءته، وذلك بالضبط ما يجعل لصق ملصق فوق واحد يستحق عناء أحدهم. ولا يُفتَح شيء هنا. بل تُطبَع السلسلة كلها لتنظر إليها، ويُنادى على المضيف الذي ستبلغه فعلاً وحده، وتُسمّى الحيلُ التي تجعل عنواناً يبدو عنواناً آخر — اسمُ مستخدِم قبل `@`، واسمٌ مكتوب بخطّ حروفه على شكل حروفنا، وإعادةُ توجيه — حيث تظهر. - **وتعرض عليك ما أخذت عيّناته كذلك.** تحت كل نتيجة QR صورةٌ للوحدات التي قرأتها هذه الصفحة فعلاً من صورتك. فإن بدت الرمزَ الذي مسحته، فالجواب الذي فوقها سليم؛ وإن بدت تشويشاً، فليس سليماً. ولا يمكن فحصُ قارئ يناولك سلسلة ولا شيء غيرها على ذلك النحو. - **ما تُحمّله Google، وما لا يُعطى لها.** نصوص الإعلانات والقياس تأتي من Google، وزر التبرّع من Buy Me a Coffee. ولا يُعطى أيٌّ منها صورةً ولا إطاراً ولا شيئاً قُرِئ من واحد. وكل سطر يحوّل بكسلات إلى سلسلة يُخدَم من هذا الأصل نفسه ومُدرَج في المستودع. - **يعمل دون اتصال.** اقطع الاتصال بالشبكة، وتبقى الأداة كما هي، والكاميرا معها، لأنه لم تكن فيها خطوة شبكية قط. وهذا أبسط برهان على الإطلاق. **تحقّق بنفسك.** لا شيء مما سبق عليك تصديقه دون تحقق. تُولَّد هذه الصفحة من القوالب والإعدادات في المستودع بواسطة سكربت بناء يمكنك قراءته وتشغيله بنفسك، والنتيجة موجودة في فرع `dist` — فقارِن إذن بين ما يُقدَّم فعلا وما ينتجه بناء المصادر: https://github.com/A-Box-of-Tools/website الملفات الجديرة بالقراءة أولا هي `config/site.toml` من أجل سياسة أمان المحتوى (Content-Security-Policy)، و`src/binarize.js` و`src/detect.js` لإيجاد رمز في صورة — العتبةُ ونقوشُ التحديد وتحويلُ المنظور — و`src/qr-decode.js` لقراءته، و`src/reed-solomon.js` لإصلاح ما أُسيئت قراءته، و `src/linear.js` للرموز المخطَّطة، و`src/camera.js`، وهو كل سطر في هذه الصفحة يلمس كاميرا.
http:// صِرف، أو اسمٌ بأبجدية ليست التي يبدو أنه بها، أو مختصِرُ روابط، أو أي شيء قبل @ في العنوان — كلُّ واحد من هذه مسمّىً حيث يظهر. ولا واحد منها يثبت شيئاً وحده. وكلها تستحق عشر ثوانٍ قبل أن تذهب إلى هناك. كيف تصنع رمز QR وتثبت أنه يُقرأ أنشئ الرمز ثم تحقق منه بقارئ الموقع نفسه: المحتوى الحرفي، والرابط الحقيقي، بمقاس الطباعة ومن صورة فوتوغرافية، قبل الدفعة. كل ذلك في المتصفح، ولا شيء يُرفع.
لا، ولا يُرفَع شيء قُرِئ منها. فالصورة يُفكّ ترميزها على لوحة في هذه الصفحة وتُقرأ هناك، بـ JavaScript يُخدَم من هذا الموقع. وليست لهذه الأداة وظيفة شبكية من أي نوع — فهي لا تجلب شيئاً ولا ترسل شيئاً أبداً — وContent-Security-Policy الخاصة بالصفحة تُسمّي كل عنوان يجوز لها الاتصال به، وليس واحد منها لنا. وأبين برهان أن تقطع الاتصال بالإنترنت: فستظل تعمل.
لا. إطارُ الكاميرا يصل بكسلاتٍ في هذا التبويب، ويُرسَم على لوحة، ويُفحَص، ويكتب فوقه الإطارُ التالي بعد نحو عُشر ثانية. ولا شيء يُكتَب على قرص ولا شيء يُحفَظ. ويتوقف البثّ في اللحظة التي تضغط فيها «أوقِف»، وحين يذهب التبويب إلى الخلفية، وحين تغادر الصفحة — والضوءُ الذي على كاميرتك هو المؤشِّر الجدير بالثقة، لأنه لا تستطيع صفحةٌ إطفاءه.
لأن ذلك هو الجزء المفيد. فرمزُ QR عنوانٌ لا تستطيع قراءته، وهو السبب كله في نجاح ملصق فوق الرمز الذي على عدّاد وقوف: فبحلول معرفتك إلى أين ذهب تكون قد وصلت. وهنا تُطبَع السلسلة كاملة، ويُنادى على المضيف على سطره وحده، وفتحُه زرٌّ منفصل تضغطه بعد أن تقرأ. وتلك نقرةٌ إضافية واحدة وهي النقرة التي احتاجت إليها الصيغة دائماً.
رموز QR عند كل إصدار من 1 إلى 40، بمستويات تصحيح الأخطاء الأربعة كلها، بالأنماط الرقمي والأبجدي الرقمي والبايتي والكانجي، مع الإبلاغ عن مجموعات محارف ECI ورموز الإلحاق المهيكَل بدل إسقاطها في صمت. وعلى الجانب المخطَّط: EAN-13 وEAN-8 وUPC-A وUPC-E وITF-14 وInterleaved 2 of 5 وCode 128 وCode 39. ولا يقرأ Data Matrix ولا PDF417 ولا Aztec ولا MaxiCode.
تسعاً من كل عشر يكون واحداً من ثلاثة. الهامشُ الأبيض مقصوص، والقارئ يستعمل ذلك الهامش ليجد أين ينتهي الرمز. أو ثمّة انعكاس أو ظلّ عبر جزء من الرمز، فلا عتبة تفصل المربّعات الداكنة عن الفاتحة. أو الرمز أصغر في الإطار من أن تكون وحداته أكثر من بكسل أو بكسلين عرضاً. حرِّك الضوء، واملأ نحو نصف الإطار، والتقط الصورة مواجِهةً لا بميل.
كثيراً، نعم، وذلك هو عملُ الصيغة كما صُمِّمت لا شيء بارع هنا. فكل رمز QR يحمل بيانات فحص Reed-Solomon، والرمزُ المصنوع عند المستوى H يستطيع فقدان نحو 30% من وحداته ويُعاد بناؤه بالضبط رغم ذلك. وتقول الصفحة كم كلمة رمزية اضطرّت إلى إصلاحها تحت «كيف قُرِئ هذا»، فترى كم كان قريباً من الحافّة. والذي لن تفعله أن تخمّن: فالرمزُ التالف فوق ما تحتمله الفحوص يُبلَّغ عنه بأنه غير مقروء لا يُجاب عنه خطأً.
لأن معرفة ذلك تعني سؤال bit.ly، وذلك طلبٌ شبكي. وكلُّ دعوى أخرى على هذه الصفحة تقوم على أنه لا شيفرة هنا تتصل بشيء، واستثناءٌ هادئ لهذا كان سيساوي أقلّ من الجواب. فيُسمّى المختصِر، ويُترَك ما يخفيه مجهولاً بصدق. وإن أردت حلّه، فالصقه في شيء مستعدّ للجلب.
مسحُه آمن. والتصرّفُ بموجبه هو الخطر، وهو خطر حقيقي: فالرموز الملصوقة فوق الرمز الحقيقي على عدّادات الوقوف وعلى طاولات المطاعم وعلى بطاقات تسليم الطرود صارت شائعة بما يكفي لأن يكون لها اسم. والذي يجعلها تنجح أن لا أحد يستطيع قراءة رمز بالنظر إليه. وقراءتُه دون فتحه — وهو ما تفعله هذه الصفحة — تزيل تلك الميزة كلها، والعشرُ ثوانٍ التي يستغرقها النظر إلى المضيف هي الدفاع كله.
الوحدات التي أخذت هذه الصفحة عيّناتها فعلاً من صورتك، مرسومةً من جديد بمربّع لكل وحدة. وهي هناك كي تُفحَص القراءة بالعين لا أن يُوثَق بها: فإن بدت تلك الشبكة الرمزَ الذي صوّرته، فالجواب الذي فوقها جاء من البكسلات الصحيحة. ولا يعرض عليك هذا قارئٌ تقريباً، وهو الفرق بين أداة تستطيع فحصها وأخرى عليك تصديقها.
واحداً لكل صورة، في الوقت الحالي. أفلِت عدة صور دفعة واحدة فتُقرأ كلٌّ وحدها، والكاميرا تقرأ رمزاً بعد رمز وأنت تحرّكها، محتفظةً بكل جديد لم ترَه من قبل. أما صورةٌ واحدة تحمل ورقةً من الرموز فعملٌ لقصّها، أو لتصويب الكاميرا نحوها واحداً واحداً.
لأن الباركود لا يحمل اسمه. فـ UPC-A هو EAN-13 أول رقم فيه صفر، وITF-14 هو Interleaved 2 of 5 بأربعة عشر رقماً ورقمِ تحقّق صحيح، وCode 128 في نمطه الرقمي لا يشبه شيئاً آخر. والذي تبلّغ عنه هذه الصفحة هو ما تقوله الأشرطة زائد ما يؤكّده رقم التحقّق، وهو كل ما يعرفه الرمز نفسه.
نعم. حمِّل الصفحة مرة، ثم اقطع اتصالك بالإنترنت وستظل تعمل، بالكاميرا وكل شيء. وهذه أيضاً أبسط طريقة لإثبات أنه لا يُرفع شيء: فقارئٌ يرسل صورتك بعيداً ليُفكّ ترميزها كان سيتوقف في اللحظة التي تقطع فيها الاتصال.