عن المشروع
7days-golang هو مستودع تعليمي من سلسلة «تنفيذ من الصفر بلغة Go في 7 أيام» يشرف عليه geektutu، ويعتمد ترخيص MIT. يساعد المستودع القراء على فهم المبادئ الداخلية لهذه الأدوات من خلال تنفيذ مكونات Go الأساسية الشائعة تدريجيًا على مدى 7 أيام، حيث تُقسَّم أدلة كل مشروع فرعي حسب الأيام، مع سلسلة مقالات شرح على موقع المؤلف.
يتضمن بشكل رئيسي أربعة مشاريع فرعية:
1. إطار الويب Gee (gee-web): إطار ويب منفَّذ على غرار gin، وتشمل محتويات الأيام السبعة بالترتيب: أساسيات واجهة http.Handler، وتصميم سياق Context، والتوجيه القائم على شجرة Trie، والتحكم في مجموعات المسارات (Group)، وآلية الوسيطات (Middleware)، وتضمين قوالب HTML، ومعالجة الاسترجاع من Panic والمتانة.
2. الذاكرة المؤقتة الموزعة GeeCache (gee-cache): نظام تخزين مؤقت موزع منفَّذ على غرار groupcache، وتغطي محتوياته استراتيجية الإزالة LRU، والذاكرة المؤقتة المتزامنة على جهاز واحد، وخادم HTTP، والتجزئة المتسقة (Consistent Hashing)، والاتصال بين العقد الموزعة، وتنفيذ singleflight لمنع انهيار الذاكرة المؤقتة، إضافة إلى استخدام Protobuf كصيغة لتبادل البيانات.
3. إطار ORM باسم GeeORM (gee-orm): إطار ORM مصمَّم بالاستناد إلى xorm وgorm. يوضح المؤلف أنه نظرًا لأن gorm v2 كان لا يزال قيد التطوير، ولأن تصميم xorm أسهل في الفهم، فقد اعتمد تصميم الواجهات بشكل رئيسي على xorm، مع الاستناد إلى gorm في بعض تفاصيل التنفيذ. تشمل محتويات الأيام السبعة: أساسيات database/sql، والتعيين بين الكائنات وبنية الجداول، وإضافة السجلات والاستعلام عنها، والعمليات المتسلسلة والتحديث والحذف، والخطافات (Hooks)، ودعم المعاملات، وترحيل قواعد البيانات (Migrate).
4. إطار RPC باسم GeeRPC (gee-rpc): إطار RPC منفَّذ بناءً على مكتبة Go القياسية net/rpc، وتبلغ شيفرته نحو 1k سطر، وقد أُضيفت عليه قدرات مثل تبادل البروتوكولات، وتسجيل الخدمات واكتشافها، وموازنة الأحمال، ومعالجة المهلات، ودعم تصحيح أخطاء بروتوكول HTTP. يُشرح يومًا بيوم: الخادم وترميز الرسائل، والعميل الداعم للتزامن وعدم التزامن، وتسجيل الخدمات، ومعالجة المهلات، ودعم بروتوكول HTTP، وموازنة الأحمال، واكتشاف الخدمات ومركز التسجيل.
بالإضافة إلى ذلك، يتضمن المستودع أربعة أمثلة لـ Go WebAssembly (demo-wasm) توضح كيفية كتابة Hello World، وتسجيل الدوال، والتعامل مع DOM، والدوال الراجعة، والمقال المرافق هو «دليل Go WebAssembly الموجز».
كما يوصي المؤلف بمواد قراءة مرافقة تشمل «الدليل الموجز للغة Go» و«أسئلة الاختبارات الكتابية والمقابلات للغة Go» و«البرمجة عالية الأداء بلغة Go»، ويقترح على القراء التعرف أولًا على القواعد الأساسية للغة Go والبرمجة المتزامنة وإدارة الاعتماديات قبل البدء بالتطبيق العملي. هذا المستودع مناسب لمتعلمي Go الراغبين في فهم آليات عمل أطر الويب والذاكرة المؤقتة الموزعة وORM وRPC بعمق من خلال قراءة الشيفرة المصدرية وكتابتها يدويًا.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.