المقدمة

ال QR Codes من الأشياء اللي بنشوفها بشكل شبه يومي في كل مكان 

فورقة وقلم و تعالوا نفهم هما إيه ونعرف إزاي ال Quick-Response Codes بتتحول ل URLs و إزاي كمبرمج تقدر تعمل تطبيق بسيط بيعمل generation ل QR Codes.


قبل ما نبتدي خلينا نعرف إن الهدف الأساسي وراء اختراع ال QR Codes هو تمثيل قدر كبير من المعلومات في مكان صغير.

ال QR Codes تم اختراعها في مصنع سيارات في اليابان من ٣٠ سنة عشان يكتبوا أكبر قدر من المعلومات عن القطعة المصنعة عليها.

فكرة العمل؟

الفكرة كانت تطوير لفكرة الـ barcode اللي بقدر أمثل بيها أرقام المنتجات باستخدام شرائط طولية ولكن الخطوط الطولية بتديني combinations محدودة وبالتالي أقدر أعبر عن معلومات قليلة ولكن لو بدلنا الخطوط بمربعات صغيرة هيبقي عندي combinations أكثر وبالتالي أقدر أمثل بيها معلومات أكثر 

خلينا نفكر في اللونين الأبيض والأسود للـ QR Code على أنهم صفر و واحد, نظام ثنائي عادي من اللي كلنا عارفينه, وكل 8 مربعات مع بعض هنعتبرهم وحدة واحدة (مش بيفكرك دا بال bytes?!) و بس كدا زي ما 011 بتمثل رقم 3 بال binary system فمربعين أسود وواحد أبيض هتمثل رقم 3 في رسمة ال qr code 

ونفس فكرة تحويل ال binary ل hexadecimal and ASCII هنقدر نكتب معلومات تحتوي على حروف وأرقام.

ولأن ممكن تحويل الأبيض والأسود (أو أي لونين متباينين) بسهولة لصفر و واحد تفهمه الأجهزة بسهولة بتعتبر ال QR Codes حل ذكي وسريع لتمثيل عنواين المواقع و دا يعتبر استخدامها الأشهر حاليًا, ولكن يمكن استخدامها في تمثيل أي بيانات.

How QR Codes Work
How QR Codes Work

مما يتكون ال QR Code 

 ال qr code بيستخدم المربعات الأبيض والأسود في أجزاء رئيسية:

  • Position markers: ودول ٣ مربعات كبيرة علي ٣ من زوايا المربع بتستخدمهم الكاميرات وأجهزة المسح عشان تحدد مساحة الكود وتقدر تقرأه بدقة 
  • Alignment pattern: ودا عبارة عن مربع آخر صغير يستخدم للاستدلال علي إتجاه قراءة الكود ليساعد الكاميرات علي سرعة تحليل الكود بمعرفة إتجاهه الصحيح 
  • White Margin: ودي مساحة بيضاء حوالين ال كود كله عشان تفصله وتعمل تباين بينه وبين الخلفية وكذلك في مساحة بيضاء حوالين ال position markers عشان تبرز وجودهم 
  • Data: وكتابة البيانات علي الكود بتبدأ من الركن الأيمن السفلي وكل 8 مربعات صغيرة بنعتبرهم وحدة واحدة

مميزات الـ QR code 

  • قدرته على تمثيل قدر كبير من البيانات في مساحة صغيرة
  • تنوع استخداماته لتنوع البيانات التي يمكن أن نضعها فيه مثل: رابط موقع, رقم هاتف, رسالة نصية, رسالة بريد إلكتروني ,إلخ... 
  • يحتوي على مستويات لمعاملات الخطأ Error correctors بتسمح إنه يفضل الكود مقروء حتى مع تضرر أجزاء منه سواء اتمسحت أو كانت متسخة والنسبة دي تصل إلى 30٪ وأنت اللي بتختار النسبة دي وبيتم تمثيلها في الكود.

Level L - up to 7% damage

Level M - up to 15% damage

Level Q - up to 25% damage

Level H - up to 30% damage

💡
كل لما مستوي معامل الخطأ المستخدم زاد كل لما هيزيد صغر المربعات اللي بتمثل البيانات داخل الكود

QR Code Generation Example

الإنترنت مليء بال qr code generators الجاهزة ولكن لنفترض انك بتبرمج تطبيق أو موقع لشركة أو مصنع وحابب تضيف فيه ميزة qr code generation للمنتجات. فهتلاقي مكتبات جاهزة في كل اللغات بتساعدك علي دا ودا مثال بسيط بلغة python:

قم بتحميل مكتبة qrcode أولاََ:

pip install qrcode 
import qrcode

# The data you want to write inside the qr code  
data = "https://www.eqraatech.com"

# Create a QRCode object
qr = qrcode.QRCode(
    version=1,  # controls the size of the QR Code
    error_correction=qrcode.constants.ERROR_CORRECT_L,  # controls the error correction used
    box_size=10,  # controls how many pixels each “box” of the QR code is
    border=4,  # controls how many boxes thick the border should be
)

# Add data to the QRCode object
qr.add_data(data)
qr.make(fit=True)

# Create an image from the QR Code instance
img = qr.make_image(fill="black", back_color="white")

# Save the image
img.save("qrcode.png")

# Optionally, display the image
img.show()

في الختام

النهارده عرفنا عن فكرة عمل ال qr codes وإنها تطوير لفكرة بسيطة منتشرة بالفعل ولكنها غيرت كتير وبقي بيستخدمها العالم كله في أقل من ٣٠ سنة, تقدروا تعملوا scan لل qr code الموجود بالرسمة التوضيحية و اكتبولنا في التعليقات طلع فيه إيه!

سلام و نشوفكم الورقة الجاية إن شاء الله 👋