
C و CGI يحركان منتج ويب تجاري في 2026
أطلق كوري بروفيت marketyour.games، منتج ويب تجاري مع حسابات وبحث ومجلدات ومدفوعات عبر Stripe ورسائل بريدية عبر Postmark، باستخدام C وCGI على OpenBSD. ملف ثنائي واحد يخدم جميع الطلبات.
تطبيق تجاري بـCGI في 2026
يقول كوري بروفيت إن marketyour.games أُطلق كمنتج ويب تجاري، مكتوب بلغة C ويعمل عبر CGI. يتضمن المنتج حسابات المستخدمين، ولوحة بحث لمنشئي المحتوى، ومجلدات لتنظيم المحتوى، ومدفوعات عبر Stripe وبريد معاملات عبر Postmark. يتبع التحسين التدريجي ولا يتطلب JavaScript.
الحزمة هي BCHS: OpenBSD وC وhttpd وSQLite. لا إطار عمل، ولا لغة قوالب، ولا خادم قاعدة بيانات منفصل، ولا حاوية. برنامج C يقرأ متغيرات بيئة CGI ويستجيب، وكود C يُخرج HTML مباشرة، بينما واجهة C API الخاصة بـSQLite تفتح ملف قاعدة البيانات. النشر هو ملف ثنائي مُجمَّع ثابتاً يُلقى ببساطة في مجلد.
ملف ثنائي واحد وثلاث مكتبات
كل طلب ينشئ عملية جديدة، لذا فإن نشر نسخة جديدة يعني استبدال ملف واحد. وفقاً لبروفيت، لا يتم إعادة تشغيل الخادم ولا يوجد تأخير، والطلبات الجديدة تستخدم ببساطة ملفاً ثنائياً جديداً. يوفر OpenBSD معاملات وأدوات افتراضية مثل pledge وunveil لحماية برنامج C، بينما يعمل httpd افتراضياً من chroot، لذا فإن ملف CGI الثنائي محاصر في بيئة معزولة.
المكتبات الإضافية هي: libcurl للطلبات الصادرة إلى Stripe وPostmark؛ libsodium لتوليد معرفات عشوائية وتشفير كلمات المرور والتحقق من HMAC لـwebhook الخاص بـStripe؛ وlibcjson لمعالجة JSON. فقط libcurl وlibsodium هما تبعيات البناء. libcjson هو ملف C واحد بدون تبعيات خارجية، بينما يُستخدم SQLite عبر amalgamation الرسمي الخاص به. كلاهما مضمّن في المشروع ويُجمَّع معه.
يحوّل بروفيت كل حركة httpd إلى ملف CGI الثنائي ويفعّل التجميع في ملف تنفيذي ذاتي لتحميله من الذاكرة. وفقاً له، يستغرق البناء النظيف بضع ثوانٍ، بينما يستغرق إعادة البناء أقل من نصف ثانية. سلسلة أدواته هي مترجم C وثلاث مكتبات، ومحرره الرئيسي هو Vim بدون إضافات.
ما الذي تغيّر
CGI يوفر القليل جاهزاً، لذا لا يزال يتعين كتابة أدوات معالجة وإنشاء ملفات تعريف الارتباط، ومعالجة والتحقق من معاملات query، ومعالجة والتحقق من بيانات النماذج، وتهريب المدخلات. كتب بروفيت نسخته الخاصة في ملف ترويسة واحد، cgi.h، لكنه غير متأكد من أن هذا كان الحل الصحيح. يشير إلى أن مكتبات مشابهة لـkcgi موجودة، رغم أن استخدامها يعني تبني نماذج API والأمان الخاصة بها، وكان يرغب في أدوات بأسلوب مكتبات stb.
استنتاجه هو أن CGI قديم لكنه ليس مهملاً. تفرّع العمليات (fork) أقل تكلفة من أي وقت مضى، وFastCGI تحديث محتمل إذا أصبح fork مشكلة يوماً ما. يعمل المنتج على ملف ثنائي واحد، بنموذج خدمة معياري منذ 2004، ويحتوي على أجزاء متحركة أقل من أي شيء أطلقه حتى الآن.
المصادر: prophitt.me
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.