شيفرة هذه الصفحة لم تبدأ العمل.

فتح index.html مباشرة من مجلد يمنع المتصفح من تحميل وحدات JavaScript، فلا يحدث شيء عند اختيار الصورة التي تُقرأ. قدّم المجلد عبر HTTP بدلا من ذلك:

powershell -ExecutionPolicy Bypass -File serve.ps1

ثم افتح http://localhost:8080/.

قارئ QR والباركود — امسح رمز QR من صورة أو من كاميرتك

صوِّبه نحو رمز، أو أفلِت صورةً لواحد. يُقرأ هنا، ولا يُقرأ في أي مكان آخر.

اللغة: العربية
عرض الشيفرة المصدرية
صورك والرموز التي فيها لا تُرفع أبدا. لا يوجد خادم.

قراءةُ رمز حسابٌ على بكسلات، والبكسلات هنا أصلاً. فإيجادُ الرمز، وتصحيحُ الميل، وفكُّ القناع، وإصلاحُ التلف بـ Reed-Solomon، وقراءةُ البتّات، كلها تجري في نحو ألفَي سطر من JavaScript في هذه الصفحة تستطيع قراءتها. والكاميرا هي الوعد نفسه لا استثناء منه: فالإطار يصل بكسلاتٍ في هذا التبويب، ويُفحَص، ويزول. ولا يُسجَّل شيء، ولا يُحفَظ شيء، وليست لهذه الصفحة وظيفة شبكية من أي نوع تُرسِل بها واحداً.

فحص حي: جارٍ الفحص…

دون اتصال: جارٍ الفحص…

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

1 أرِه الرمز

صورة فوتوغرافية، أو لقطة شاشة، أو الكاميرا. وأياً اخترت، تُقرأ الصورة هنا، في هذه الصفحة، على جهازك — فلا يُرفع شيء، وإطارُ الكاميرا يُفحَص ويُرمى لا يُسجَّل.

وتستطيع كذلك لصق صورة مباشرة بـ Ctrl+V — ولقطةُ شاشة لرمز على الشاشة أسرع مدخل.

2 ماذا يقول

يُعرَض، ولا يُفتَح أبداً. فالرمزُ المطبوع عنوانٌ لا يستطيع أحد قراءته، وذلك بالضبط ما يجعل لصق ملصق فوق واحد يستحق عناء أحدهم — فالسلسلة كلها هنا لتنظر إليها أولاً، والمضيفُ الذي ستبلغه فعلاً منادىً عليه على سطره وحده.

عرض بصيغة Markdown

كيف تقرأ رمز QR دون رفع الصورة

  1. أعطِه الصورة. أفلِت صورة فوتوغرافية أو لقطة شاشة على الصندوق، أو الصق واحدة مباشرة، أو اضغط زر الكاميرا. ولا بأس بعدة صور دفعة واحدة — فكلٌّ تُقرأ وحدها وكلٌّ تنال جوابها. ولقطةُ شاشة لرمز هو على شاشتك أصلاً أسرع مدخل وأوثقه، لأنه لا عدسة ولا ميل ولا ضوء في الأمر.
  2. أدخِل الرمز كله في الإطار، والهامش معه. الفراغ الأبيض حول الرمز جزء من الرمز: فهو كيف يجد القارئ أين ينتهي. والصورةُ المقصوصة إلى حافّة المربّعات هي السبب الأشيع بمفرده في ألا يُقرأ واحد، وملءُ نحو نصف الإطار بالرمز نحو الصواب — وأقربُ من ذلك تقع الأركان خارج الصورة.
  3. اقرأ العنوان قبل أن تقرّر شيئاً. مغزى مسح رمز على ملصق أو عدّاد وقوف أو رسالة هو معرفةُ إلى أين يذهب، وذلك هو الشيء الوحيد الذي لا تدعك كاميرا الهاتف تفعله حقاً. والمضيف مطبوع هنا على سطره وحده. فإن لم يكن اسماً كنت تتوقّعه، فقد حصلت على ما جئت من أجله ولم يبقَ ما يُفتَح.
  4. خذ التحذيرات مأخذ الجدّ، ولا سيّما الهادئة منها. عنوانٌ http:// صِرف، أو اسمٌ بأبجدية ليست التي يبدو أنه بها، أو مختصِرُ روابط، أو أي شيء قبل @ في العنوان — كلُّ واحد من هذه مسمّىً حيث يظهر. ولا واحد منها يثبت شيئاً وحده. وكلها تستحق عشر ثوانٍ قبل أن تذهب إلى هناك.
  5. إن لم يُقرأ، فغيّر الضوء قبل أن تغيّر أي شيء آخر. كلُّ إخفاق تقريباً مشكلةُ عتبة: انعكاسٌ عبر الوسط، أو ظلٌّ على ركن، أو شاشةٌ مصوَّرة بميل يلتقط الإضاءة الخلفية. تحرّك حتى يزول الوهج عن الرمز، أو شغّل ضوء الكاميرا. وإن لم ينفع، فالتقط صورةً واحدة مسطَّحة مواجِهة وأفلِتها — فالصورةُ الساكنة تنال بحثاً أدقّ بكثير مما يناله إطار حيّ.
  6. افحص الصورة المأخوذة عيّنتها إن بدا الجواب غريباً. افتح «كيف قُرِئ هذا» وانظر إلى الشبكة الصغيرة. فهي ما ظنّت هذه الصفحة أن الرمز إياه، مرسوماً من الوحدات التي أخذت عيّناتها. والقارئ الذي أساء قراءة رمز وأصلحه إلى شيء معقول سيُظهِر ذلك هناك، ولا يُظهِره في أي مكان آخر.

النسخة الأطول

كيف تصنع رمز 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؟

لأن معرفة ذلك تعني سؤال bit.ly، وذلك طلبٌ شبكي. وكلُّ دعوى أخرى على هذه الصفحة تقوم على أنه لا شيفرة هنا تتصل بشيء، واستثناءٌ هادئ لهذا كان سيساوي أقلّ من الجواب. فيُسمّى المختصِر، ويُترَك ما يخفيه مجهولاً بصدق. وإن أردت حلّه، فالصقه في شيء مستعدّ للجلب.

هل مسحُ رمز QR آمن أصلاً؟

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

ما الشبكة الصغيرة التي تحت كل نتيجة؟

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

هل يقرأ عدة رموز في صورة واحدة؟

واحداً لكل صورة، في الوقت الحالي. أفلِت عدة صور دفعة واحدة فتُقرأ كلٌّ وحدها، والكاميرا تقرأ رمزاً بعد رمز وأنت تحرّكها، محتفظةً بكل جديد لم ترَه من قبل. أما صورةٌ واحدة تحمل ورقةً من الرموز فعملٌ لقصّها، أو لتصويب الكاميرا نحوها واحداً واحداً.

لماذا قالت إن باركودي بصيغة غير التي طلبتها؟

لأن الباركود لا يحمل اسمه. فـ UPC-A هو EAN-13 أول رقم فيه صفر، وITF-14 هو Interleaved 2 of 5 بأربعة عشر رقماً ورقمِ تحقّق صحيح، وCode 128 في نمطه الرقمي لا يشبه شيئاً آخر. والذي تبلّغ عنه هذه الصفحة هو ما تقوله الأشرطة زائد ما يؤكّده رقم التحقّق، وهو كل ما يعرفه الرمز نفسه.

هل يعمل دون اتصال؟

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