Dodona هي منصة تمرين عبر الإنترنت لتعلم الكود . إنها تريد تعليم الطلاب كيفية البرمجة بأكثر الطرق الممكنة وفعالية ممكنة. يعمل Dodona كمدرس مشارك عبر الإنترنت ، مصمم لمنح كل طالب وصول إلى التعليم عالي الجودة. ينصب التركيز على التصحيحات التلقائية وإعطاء ملاحظات ذات معنى على الحلول المقدمة من الطلاب.
يحتوي هذا المستودع على الكود المصدري لتطبيق الويب. إذا كنت ترغب ببساطة في استخدام Dodona ، فيرجى الانتقال إلى https://dodona.be.
يمكن العثور على وثائق المستخدمين النهائيين على https://docs.dodona.be.
دودونا مجاني في استخدام المدارس ونود أن نبقيه على هذا النحو! يستغرق الاحتفاظ بهذه المنصة وتشغيل الكثير من الوقت ، تمامًا مثل دعم مئات المدارس وآلاف الطلاب. إذا كنت ترغب في تمويل Dodona ، فيمكنك العثور على مزيد من المعلومات حول https://dodona.be/en/support-us/ أو الاتصال بالبريد الإلكتروني على [email protected].
هناك عدة طرق للاتصال بنا:
إذا كنت ترغب في المساعدة في التنمية ، فإن المشكلات الموسومة مع ملصق الطالب هي نقطة انطلاق جيدة.
mysql أو mariadb .mysql ، قم بتغيير sql-mode في كتلة تكوين mysqld : sql-mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION'
dodona مع إمكانية الوصول إلى قواعد بيانات dodona و dodona_test-N . ستحتاج إلى أكبر قدر من قواعد بيانات الاختبار التي لديك مؤشرات ترابط وحدة المعالجة المركزية. CREATE USER ' dodona '@ ' localhost ' IDENTIFIED BY ' dodona ' ;
GRANT ALL ON dodona. * TO ' dodona ' @ ' localhost ' ;
GRANT ALL ON dodona_test. * TO ' dodona ' @ ' localhost ' ;
GRANT ALL ON ` dodona_test-0 ` . * TO ' dodona ' @ ' localhost ' ;
...
GRANT ALL ON ` dodona_test-N ` . * TO ' dodona ' @ ' localhost ' ;ruby الصحيح باستخدام RVM (يمكن العثور على الإصدار المستخدم حاليًا هنا).node الصحيح باستخدام nvm والغزل (يجب القيام بأي إصدار عقدة حديثة).bundle install وتثبيت yarn installrails db:setup . (إذا حدث خطأ ما في قاعدة البيانات ، فيمكنك استخدام rails db:reset لإسقاط قاعدة البيانات وإعادة إنشائها وإعادة صياغتها.) إذا لم يستطع الخطأ "تهيئة قاضي Python" ، فاستخدم SKIP_PYTHON_JUDGE=true rails db:setupbin/server لبدء الخادم. يمكن العثور على مزيد من المعلومات حول كيفية بدء إعداد التطوير هنا. سيكون Dodona متاحًا على نطاق فرعي من المضيف المحلي: http: //dodona.localhost: 3000.هذه الخطوات غير مطلوبة لتشغيل الخادم ، لكنك تحتاج إلى Docker لتقييم التمارين بالفعل.
docker .docker pull dodona/dodona-pythonإذا كنت ترغب في بناء صور Docker بنفسك:
build.sh scripts تبني جميع الصور. ولكن مع البيانات الأولية ، لا يلزم سوى dodona-python . يمكنك بناء هذه الصورة باستخدام docker build --pull --force-rm -t "dodona-python" -f "dodona-python.dockerfile" . . هذه الخطوات غير مطلوبة لتشغيل الخادم ، ولكن هناك حاجة للسماح للتصورات بتحميل.
memcached .tmp/caching-dev.txt في جذر المشروع. بعض الأحجار الكريمة والتبعيات (مثل memcached) لا تعمل على النوافذ. يجب عليك استخدام WSL 2 بدلاً من ذلك ، وتشغيل كل شيء داخل WSL. هذا يعني أنك تستخدم WSL لقاعدة البيانات ، memcached ، git ، docker ، إلخ.
أبسط طريقة لبدء الخادم هي أمر rails s ولكن هذا لن يعالج قائمة انتظار التقديم ، وسيتم تجميع JavaScript بواسطة WebPack في الخلفية (بدون إخراج عندما يحدث خطأ ما).
bin/delayed_job start .yarn build:css --watch CSS الخاص بك معاد إعادة تحميله على الهواء مباشرة (استخدم بدون علامة --watch عندما تحتاج إلى بناء أوراق الأنماط وإعادة التحميل المباشر غير مطلوب).yarn build:js --watch JavaScript الخاص بك يتم إعادة تحميله على الهواء مباشرة (استخدم بدون علم --watch عندما تحتاج إلى بناء JavaScript وإعادة التحميل المباشر). لبدء خادم Rails ، تأخر الوظيفة ، وتجميع CSS وتجميع JS في نفس الوقت ، ما عليك سوى تشغيل bin/server .
هذا له خيبة أمل واحدة: تصحيح الأخطاء مع byebug مكسور.
يستخدم Dodona نطاقات فرعية من أجل أوصاف تمرين صندوق الرمل (وهي صفحات HTML تعسفية ويمكن استخدامها لأغراض ضارة إذا لم تكن رملًا بشكل صحيح). نحن نخدم التطبيق الرئيسي في التطوير من http: //dodona.localhost: 3000 وأوصاف التمرين من http: //sandbox.localhost: 3000.
إذا لم ينجح هذا خارج المربع ، فيمكنك إضافة الأسطر التالية إلى ملف /etc/hosts :
127.0.0.1 dodona.localhost
127.0.0.1 sandbox.localhost
لتربط الكود ، قم بتشغيل rubocop لروبي وروبي yarn lint لجافا سكريبت.
لدينا اختبارات في اختبارات JavaScript و Ruby و System:
yarn testbundle exec rails test:systembundle exec rails test هناك أيضًا فحص نوع للحصول على رمز مكتوب في TypeScript. يمكن تنفيذ ذلك باستخدام yarn typeCheck .
نصائح
PARALLEL_WORKERS env var لتحديد عدد مؤشرات الترابط التي يجب استخدامها.TestProf للاطلاع على اختبارات الياقوتbundle exec rails test filename لتشغيل ملف اختبار واحد ، استخدم bundle exec rails test filename:linenumber لتشغيل اختبار محدد