تخطّى إلى المحتوى الرئيسي
اختبارات محلية

OpenLeetCode: دليل عملي لتشغيل اختبارات LeetCode محلياً مع مستودع مفتوح المصدر

OpenLeetCode: دليل عملي لتشغيل اختبارات LeetCode محلياً مع مستودع مفتوح المصدر
📑 محتويات المقال
    Reference OS v85 دقائق قراءة١ يوليو ٢٠٢٦informational: شرح أداة تقنية جديدة وكيفية تجربتها عملياً

    OpenLeetCode: دليل عملي لتشغيل اختبارات LeetCode محلياً مع مستودع مفتوح المصدر

    ستتعلم كيفية تثبيت وتشغيل OpenLeetCode محلياً لتشغيل اختبارات LeetCode، مع حلول للأخطاء الشائعة ونماذج عملية.

    الخلاصة: OpenLeetCode أداة CLI مفتوحة المصدر لتشغيل اختبارات LeetCode محلياً. التثبيت: استنساخ المستودع، npm install، npm link. التشغيل: openleetcode run path. README غير واضح، لذا اتبع الخطوات التقريبية. يدعم JavaScript وPython، مناسب للمطورين المحليين.
    OpenLeetCode دليل عملي796 كلمة تقريباًزارو — مكتبة الأدلة العملية
    OpenLeetCode: دليل عملي لتشغيل اختبارات LeetCode محلياً مع مستودع مفتوح المصدر
    Photo by Daniil Komov on Pexels
    LIVE PROJECTtherepanic/openleetcode★ 0

    Show HN: Openleetcode – LeetCode runner where tests live in the repo

    رابط المشروع على GitHub ↗

    MAP

    خريطة الصفحة

    اختر القسم الذي تحتاجه الآن

    1. ما هو OpenLeetCode؟ شرح مبسط
    2. من يحتاج OpenLeetCode ومن لا؟
    3. المميزات الرئيسية لـ OpenLeetCode
    4. المتطلبات الأساسية قبل التثبيت
    5. خطوات تثبيت OpenLeetCode (مع تحذير: README غير واضح)
    6. شرح ملف .env (إن وجد) والإعدادات
    7. تشغيل OpenLeetCode لأول مرة
    8. أخطاء شائعة وحلولها
    9. استخدامات عملية لأمثلة من LeetCode
    10. هل يستحق OpenLeetCode التجربة؟ تقييم موضوعي
    11. بدائل مشابهة لـ OpenLeetCode
    12. أسئلة شائعة (FAQ)
    !

    قبل أن تطبق

    الفكرة التي تمنع التسرع

    تعتقد أن مشاريع GitHub الجديدة لا تصلح إلا للمطورين المتقدمين؟ لكن OpenLeetCode يثبت العكس: أداة بسيطة تتيح لك تشغيل اختبارات LeetCode محلياً دون اتصال بالإنترنت.

    Q

    أسئلة التشخيص السريع

    قبل أن تطبق، اعرف أين تقف بالضبط

    1. هل تفضل العمل على اختبارات LeetCode محلياً بدلاً من المتصفح؟
    2. هل تحتاج لمشاركة اختبارات موحدة مع فريقك؟
    3. هل أنت مرتاح مع أدوات CLI وNode.js؟
    4. هل تبحث عن أداة مجانية وخفيفة؟
    5. هل تواجه مشكلة في فهم README المشروع؟
    6. هل تريد إضافة اختبارات مخصصة لمشاكل LeetCode؟
    7. هل تخطط لاستخدام الأداة بدون اتصال بالإنترنت؟

    نظام التشغيل: Input → Process → Output

    INPUT
    مشكلة LeetCode (مثل Two Sum) مكتوبة بلغة برمجة (Python, Java, إلخ) مع ملف اختبار
    PROCESS
    OpenLeetCode يقرأ ملف الاختبار، يشغل الكود مقابل حالات الاختبار، ويخرج النتائج
    OUTPUT
    تقرير بنجاح أو فشل كل اختبار مع رسائل الخطأ إن وجدت
    Decision Layer
    إذا فشل اختبار، يعرض الفرق بين المتوقع والفعلي
    Memory Layer
    يحفظ النتائج في مجلد logs أو تقارير (حسب الإعدادات)
    Feedback Loop
    يمكنك تعديل الكود وإعادة التشغيل حتى تمر جميع الاختبارات
    M

    لوحة قياس النجاح

    لا تعتمد على الانطباع؛ اختر مؤشراً تراجعه

    المؤشرطريقة القياسإشارة جيدة
    وقت التثبيتمن بداية clone إلى npm linkأقل من 5 دقائق
    عدد الاختبارات الناجحةتشغيل openleetcode run على مشكلة معروفةجميع الاختبارات تمر
    وضوح READMEعدد الخطوات الواضحة في READMEأكثر من 3 خطوات واضحة

    ظهر مشروع OpenLeetCode مؤخراً على Hacker News كأداة تسمح بتشغيل اختبارات LeetCode محلياً مع بقاء الاختبارات في المستودع. بدلاً من الاعتماد على منصة LeetCode فقط، يمكنك الآن تشغيل الاختبارات على جهازك، وتعديلها، ومشاركتها مع فريقك. هذا الدليل يشرح لك كيفية تثبيت الأداة وتشغيلها خطوة بخطوة، مع توضيح الأخطاء الشائعة وبدائلها.

    ملاحظة: README المشروع غير واضح تماماً، لذا الخطوات هنا تقريبية بناءً على بنية المشروع. سنشير إلى النقاط الغامضة ونقدم حلولاً عملية.

    ما هو OpenLeetCode؟ شرح مبسط

    OpenLeetCode هو أداة سطر أوامر (CLI) مفتوحة المصدر تسمح لك بتشغيل اختبارات LeetCode محلياً. الفكرة: بدلاً من كتابة الحل في موقع LeetCode وانتظار التحقق، يمكنك كتابة الحل في ملف على جهازك، وإضافة اختباراتك الخاصة، ثم تشغيل الأداة لترى النتيجة فوراً. الاختبارات تكون في مستودع GitHub، مما يسهل مشاركتها مع الفريق.

    من يحتاج OpenLeetCode ومن لا؟

    إعلان

    من يحتاجه: المطورون الذين يفضلون العمل محلياً، طلاب علوم الحاسب الذين يريدون تتبع تقدمهم، فرق العمل التي ترغب في مشاركة اختبارات موحدة.

    من لا يحتاجه: من يكتفي بحل المشاكل على موقع LeetCode فقط، أو من يبحث عن منصة متكاملة مع دروس فيديو.

    المميزات الرئيسية لـ OpenLeetCode

    • تشغيل اختبارات LeetCode محلياً دون اتصال بالإنترنت
    • إضافة اختبارات مخصصة لكل مشكلة
    • مشاركة الاختبارات عبر مستودع GitHub
    • خفيف وسريع (أداة CLI)
    • مفتوح المصدر (مجاني تماماً)

    المتطلبات الأساسية قبل التثبيت

    • Node.js (الإصدار 14 أو أحدث) مثبت على جهازك
    • npm (مدير حزم Node.js)
    • Git (للاستفادة من مستودع الاختبارات)
    • حساب GitHub (اختياري للمشاركة)

    خطوات تثبيت OpenLeetCode (مع تحذير: README غير واضح)

    ملاحظة: README المشروع لا يوضح خطوات التثبيت بوضوح. بناءً على بنية المشروع، إليك الخطوات التقريبية:

    1. استنساخ المستودع: git clone https://github.com/therepanic/openleetcode.git
    2. الدخول إلى المجلد: cd openleetcode
    3. تثبيت الاعتماديات: npm install
    4. ربط الأداة (اختياري): npm link لتتمكن من تشغيل الأمر openleetcode من أي مكان

    إذا واجهت أخطاء، تأكد من تثبيت Node.js و npm بشكل صحيح.

    شرح ملف .env (إن وجد) والإعدادات

    المشروع لا يتطلب ملف .env بشكل صريح، لكن قد تحتاج لتعيين بعض المتغيرات البيئية مثل LEETCODE_SESSION إذا كنت تريد جلب المشاكل من حسابك في LeetCode. ابحث عن ملف .env.example في المستودع، وانسخه إلى .env واملأ الحقول المطلوبة.

    تشغيل OpenLeetCode لأول مرة

    بعد التثبيت، جرب تشغيل الأمر: openleetcode --help لرؤية الأوامر المتاحة. لتشغيل اختبار لمشكلة معينة، استخدم: openleetcode run path/to/problem حيث المسار يشير إلى مجلد المشكلة الذي يحتوي على ملف الحل وملف الاختبار.

    أخطاء شائعة وحلولها

    الخطأالسببالحل
    Command not foundلم يتم ربط الأداةاستخدم npm link أو شغّل node index.js من مجلد المشروع
    Cannot find moduleلم يتم تثبيت الاعتمادياتشغّل npm install
    Test file not foundملف الاختبار غير موجود في المسار المحددتأكد من وجود ملف test.js أو test.py في مجلد المشكلة

    استخدامات عملية لأمثلة من LeetCode

    مثال: تشغيل اختبار لمشكلة Two Sum

    1. أنشئ مجلداً باسم two-sum
    2. ضع ملف الحل solution.js:
    function twoSum(nums, target) {
      const map = {};
      for (let i = 0; i < nums.length; i++) {
        const complement = target - nums[i];
        if (map[complement] !== undefined) {
          return [map[complement], i];
        }
        map[nums[i]] = i;
      }
      return [];
    }
    module.exports = twoSum;
    1. ضع ملف الاختبار test.js:
    const twoSum = require('./solution');
    const assert = require('assert');
    assert.deepStrictEqual(twoSum([2,7,11,15], 9), [0,1]);
    assert.deepStrictEqual(twoSum([3,2,4], 6), [1,2]);
    console.log('All tests passed');
    1. شغّل: openleetcode run two-sum

    مثال: إضافة اختبار جديد أضف سطراً في ملف test.js مثل: assert.deepStrictEqual(twoSum([3,3], 6), [0,1]);

    مثال: مشاركة مستودع اختبارات مع فريق ارفع مجلد المشكلة إلى مستودع GitHub، واطلب من فريقك استنساخه وتشغيل openleetcode run.

    هل يستحق OpenLeetCode التجربة؟ تقييم موضوعي

    OpenLeetCode أداة واعدة لكنها في مراحلها الأولى. README غير واضح، ونقص التوثيق قد يعيق المبتدئين. إذا كنت مطوراً متوسطاً وتحب التجربة، فجربها. لكن لا تتوقع دعماً كاملاً لجميع مشاكل LeetCode. الأداة مناسبة لمن يريد بيئة اختبار محلية خفيفة.

    بدائل مشابهة لـ OpenLeetCode

    الأداةالمميزاتالعيوب
    LeetCode CLI (مثل leetcode-cli)ناضجة، تدعم العديد من اللغاتتتطلب تسجيل دخول
    HackerRank CLIمشابهة لكن لمنصة HackerRankمحدودة بمشاكل HackerRank
    اختبارات يدوية باستخدام Jest/Mochaمرونة كاملةتحتاج إعداد يدوي لكل مشكلة

    أسئلة شائعة (FAQ)

    هل OpenLeetCode مجاني؟

    نعم، المشروع مفتوح المصدر ومجاني تماماً.

    هل يمكن استخدام OpenLeetCode بدون اتصال بالإنترنت؟

    نعم، بعد تثبيت الأداة وجلب المستودع، يمكنك العمل بدون إنترنت.

    ما هي لغات البرمجة التي يدعمها OpenLeetCode؟

    حسب README، يدعم JavaScript و Python بشكل أساسي. قد يدعم لغات أخرى حسب الإضافات.

    كيف أضيف اختبارات جديدة لمشكلة معينة؟

    أضف حالات اختبار في ملف الاختبار (مثل test.js) باستخدام assert أو مكتبة الاختبارات المفضلة لديك.

    هل OpenLeetCode متوافق مع جميع مشاكل LeetCode؟

    ليس بالضرورة. قد تحتاج لتعديل تنسيق الإدخال/الإخراج لبعض المشاكل.

    ما الفرق بين OpenLeetCode و LeetCode الرسمي؟

    LeetCode الرسمي منصة متكاملة مع محرر ومجتمع. OpenLeetCode أداة CLI محلية تركز على الاختبارات فقط.

    هل يوجد دعم للمجتمع العربي؟

    لا يوجد دعم رسمي، لكن يمكنك فتح issue أو المشاركة في مجتمع GitHub.

    خاتمة وتوصيات

    OpenLeetCode أداة مفيدة لمن يريد بيئة اختبار محلية لمشاكل LeetCode. ابدأ بتجربتها على مشكلة بسيطة مثل Two Sum. إذا أعجبتك، شاركها مع زملائك. تذكر أن الأداة جديدة، لذا كن مستعداً لبعض التجربة والخطأ.

    DO

    Playbook التطبيق

    خطوات عملية مرتبة من التشخيص إلى النتيجة

    خطوة 1

    تثبيت المتطلبات الأساسية

    لماذا؟ الأداة تعتمد على Node.js وnpm وGit

    كيف؟ تأكد من تثبيت Node.js >=14 و npm و Git. تحقق باستخدام node -v و npm -v و git --version

    الناتج: بيئة جاهزة للتثبيت

    خطوة 2

    استنساخ المستودع

    لماذا؟ للحصول على كود الأداة محلياً

    كيف؟ git clone https://github.com/therepanic/openleetcode.git

    الناتج: مجلد openleetcode

    خطوة 3

    تثبيت الاعتماديات

    لماذا؟ لتثبيت المكتبات المطلوبة

    كيف؟ cd openleetcode && npm install

    الناتج: node_modules مثبتة

    خطوة 4

    ربط الأداة (اختياري)

    لماذا؟ لتشغيل الأمر openleetcode من أي مكان

    كيف؟ npm link

    الناتج: أمر openleetcode متاح عالمياً

    خطوة 5

    تشغيل اختبار لمشكلة

    لماذا؟ للتأكد من عمل الأداة

    كيف؟ openleetcode run path/to/problem (مثال: openleetcode run two-sum)

    الناتج: نتائج الاختبارات

    TMP

    قوالب جاهزة للنسخ

    حوّل القراءة إلى تنفيذ سريع

    ملف حل لمشكلة Two Sum
    function twoSum(nums, target) {
      const map = {};
      for (let i = 0; i < nums.length; i++) {
        const complement = target - nums[i];
        if (complement in map) {
          return [map[complement], i];
        }
        map[nums[i]] = i;
      }
    }
    module.exports = twoSum;
    ملف اختبار لمشكلة Two Sum
    const twoSum = require('./solution');
    const assert = require('assert');
    assert.deepStrictEqual(twoSum([2,7,11,15], 9), [0,1]);
    assert.deepStrictEqual(twoSum([3,2,4], 6), [1,2]);
    console.log('All tests passed');
    ERR

    مصفوفة الأخطاء

    اعرف أين يتعثر الناس وكيف تتجنب ذلك

    الخطألماذا يحدث؟التصحيح
    Command not foundلم يتم ربط الأداة أو تشغيلها من المسار الصحيحاستخدم npm link أو شغّل node index.js من مجلد المشروع
    Cannot find moduleلم يتم تثبيت الاعتمادياتشغّل npm install في مجلد المشروع
    Test file not foundملف الاختبار غير موجود في المسار المحددتأكد من وجود ملف test.js أو test.py في مجلد المشكلة
    IF

    شجرة القرار

    ماذا تفعل حسب حالتك؟

    إذا: إذا كنت تريد بيئة اختبار محلية لمشاكل LeetCode

    إذن: استخدم OpenLeetCode

    إذا: إذا كنت تفضل منصة متكاملة مع دروس

    إذن: التزم بـ LeetCode الرسمي

    إذا: إذا كنت تحتاج دعماً للغات متعددة

    إذن: جرب leetcode-cli

    7D

    خطة تطبيق 7 أيام

    جدول صغير يمنع التسويف

    1. اليوم 1: تثبيت المتطلبات واستنساخ المستودع
    2. اليوم 2: تثبيت الاعتماديات وربط الأداة
    3. اليوم 3: تشغيل اختبار لمشكلة Two Sum
    4. اليوم 4: إضافة اختبار مخصص
    5. اليوم 5: تجربة مشكلة أخرى
    6. اليوم 6: مشاركة المستودع مع فريق
    7. اليوم 7: تقييم التجربة واتخاذ قرار
    FACT

    حقائق سريعة تحفظها

    نقاط مختصرة ترجع لها لاحقاً

    1. OpenLeetCode أداة CLI مفتوحة المصدر

    2. تسمح بتشغيل اختبارات LeetCode محلياً

    3. الاختبارات تبقى في مستودع GitHub

    4. يدعم JavaScript وPython بشكل أساسي

    5. لا يتطلب اتصالاً بالإنترنت بعد التثبيت

    6. README المشروع غير واضح

    7. الأداة في مراحلها الأولى

    8. مناسبة للمطورين الذين يفضلون العمل المحلي

    9. مجانية تماماً

    FAQ

    أسئلة شائعة

    إجابات مباشرة على ما يبحث عنه الزائر

    هل OpenLeetCode مجاني؟

    نعم، المشروع مفتوح المصدر ومجاني تماماً.

    هل يمكن استخدامه بدون إنترنت؟

    نعم، بعد تثبيت الأداة وجلب المستودع، يمكن العمل بدون إنترنت.

    ما هي لغات البرمجة المدعومة؟

    حسب README، يدعم JavaScript وPython بشكل أساسي.

    كيف أضيف اختبارات جديدة؟

    أضف حالات اختبار في ملف الاختبار (مثل test.js) باستخدام assert.

    هل OpenLeetCode متوافق مع جميع مشاكل LeetCode؟

    ليس بالضرورة، قد تحتاج لتعديل تنسيق الإدخال/الإخراج.

    ما الفرق بين OpenLeetCode و LeetCode الرسمي؟

    LeetCode منصة متكاملة، OpenLeetCode أداة CLI محلية للاختبارات فقط.

    هل يوجد دعم عربي؟

    لا يوجد دعم رسمي، لكن يمكنك فتح issue على GitHub.

    ABC

    مصطلحات سريعة

    تعريفات مختصرة تمنع الالتباس

    CLI

    واجهة سطر الأوامر، تتيح التفاعل مع البرنامج عبر الأوامر النصية.

    npm

    مدير حزم Node.js، يستخدم لتثبيت المكتبات.

    README

    ملف توثيق المشروع، يشرح كيفية الاستخدام.

    assert

    دالة في JavaScript للتحقق من صحة الشروط.

    Q+

    أسئلة مرتبطة يبحث عنها الناس

    استخدمها كمسارات متابعة داخل نفس الموضوع

    كيفية تشغيل اختبارات LeetCode محلياًOpenLeetCode tutorialLeetCode CLI بديلتشغيل LeetCode بدون إنترنتمشاركة اختبارات LeetCode مع فريقOpenLeetCode vs leetcode-cliأداة اختبار LeetCode مفتوحة المصدر

    لماذا هذا المرجع يتجاوز الموضوع نفسه؟

    تحول القارئ: من مطور يعتمد على LeetCode فقط إلى مطور يختبر حلوله محلياً ويشاركها مع فريقه

    • GitHub: استضافة مستودع الاختبارات
    • Node.js: بيئة تشغيل الأداة
    • LeetCode: منصة حل المشاكل
    SAVE

    كيف تستخدم هذا المرجع لاحقاً؟

    القيمة الحقيقية تظهر عند العودة والتطبيق

    لا تتعامل معه كمقال يُقرأ مرة واحدة. استخدمه كلوحة تشغيل: ارجع للتشخيص عند ظهور المشكلة، وللقوالب عند التطبيق، ولمؤشرات القياس عند المراجعة.

    OpenLeetCode أداة مفيدة لمن يريد بيئة اختبار محلية لمشاكل LeetCode. ابدأ بتجربتها على مشكلة بسيطة مثل Two Sum. إذا أعجبتك، شاركها مع زملائك. تذكر أن الأداة جديدة، لذا كن مستعداً لبعض التجربة والخطأ.

    UPD

    خطة تحديث هذا الدليل

    حتى يبقى المرجع صالحاً مع الوقت

    • تحقق من تحديثات المستودع كل أسبوعين
    • تابع إصدارات Node.js للتأكد من التوافق
    • راجع README إذا تم تحديثه
    • اختبر الأداة مع مشاكل جديدة من LeetCode

    زارو — مكتبة الأدلة العملية

    نحو مكتبة أدلة عملية: تشخيص، تنفيذ، قياس، وتحديث مستمر.

    Evergreen Reference + GitHub Intelligence + Multi-Stage AI OS v8.0.0-EVERGREEN-GITHUB-AI-INTELLIGENCE-OS

    [Object]
    كاتب في Ficus Web | تقرير إخباري وقصة قصيرة

    مقالات ذات صلة

    اقتراحات مبنية على أول تصنيف مرتبط بالمقال الحالي

    التعليقات (0)

    لا توجد تعليقات بعد. كن أول من يبدأ النقاش 👇