المقدمة
ال 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 حل ذكي وسريع لتمثيل عنواين المواقع و دا يعتبر استخدامها الأشهر حاليًا, ولكن يمكن استخدامها في تمثيل أي بيانات.

مما يتكون ال 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 الموجود بالرسمة التوضيحية و اكتبولنا في التعليقات طلع فيه إيه!
سلام و نشوفكم الورقة الجاية إن شاء الله 👋
Discussion