بناء المسارات


يتكوّن المسار من أجزاء مختلفة كثيرة.

البيانات الوصفية

تُحدَّد تهيئة المسار وبياناته الوصفية في ملف config.json. وهو يسرد تمارين المسار ومفاهيمه وإعدادات المحرر وغير ذلك الكثير. راجع توثيق config.json.

المفاهيم

تتضمّن جميع تمارين المفاهيم وتمارين التطبيق في المسار مفاهيم. وهذه المفاهيم كيانات مستقلة بذاتها. راجع التوثيق لمزيد من المعلومات.

تشكّل المفاهيم التي تُدرَّس في تمارين المفاهيم بالمسار منهجًا. ويُعرض المنهج على الطلاب في صورة خريطة مفاهيم. راجع توثيق خريطة المفاهيم للتعرّف على كيفية بناء خريطة المفاهيم الخاصة بـ منهج.

لمزيد من المعلومات حول كيفية تصميم منهج، راجع توثيق المنهج.

التمارين

لكل مسار نوعان من التمارين:

  • تمارين المفاهيم: صُمّمت لتعليم الطالب مفهومًا واحدًا أو أكثر. راجع التوثيق لمزيد من المعلومات.
  • تمارين التطبيق: صُمّمت للتدرّب على المفاهيم المكتسبة. راجع التوثيق لمزيد من المعلومات.

التعمّق أكثر

يحتوي كل تمرين على قسم اختياري للتعمّق أكثر، وقد يضم:

  • المقاربات: أساليب مختلفة يمكن بها حل التمرين
  • المقالات: تصف جوانب مثيرة للاهتمام في التمرين
  • فيديوهات المجتمع: فيديوهات تعرض التمرين، عادةً عبر قيام شخص بحله من الصفر

الملفات المشتركة

هناك ملفات لا تخص تمرينًا بعينه، بل تنطبق على جميع التمارين. راجع التوثيق لمزيد من المعلومات.

التوثيق

لكل مسار ملفات توثيق مطلوبة. راجع التوثيق لمزيد من المعلومات.

الودجات

يمكن عرض بعض أجزاء المسار في ودجات.

دليل الأسلوب

ينبغي أن تلتزم جميع المستندات بـ دليل الأسلوب. كما ينبغي أن تلتزم مستندات Markdown أيضًا بـ معايير Markdown لدينا.

مثال

csharp
├── config
|   ├── exercise_readme.go.tmpl
|   └── maintainers.json
├── docs
|   ├── ABOUT.md
|   ├── INSTALLATION.md
|   ├── LEARNING.md
|   ├── RESOURCES.md
|   └── TESTS.md
├── concepts
|   └── numbers
|       ├── about.md
|       ├── introduction.md
|       └── links.json
└── exercises
|   ├── concept
|   |   └── cars-assemble
|   |       ├── .docs
|   |       |   ├── hints.md
|   |       |   ├── introduction.md
|   |       |   └── instructions.md
|   |       ├── .meta
|   |       |   ├── config.json
|   |       |   ├── design.md
|   |       |   └── Exemplar.cs (track-specific)
|   |       ├── CarsAssemble.cs (track-specific)
|   |       ├── CarsAssemble.csproj (track-specific)
|   |       └── CarsAssembleTests.cs (track-specific)
|   ├── practice
|   |   └── leap
|   |       └── .docs
|   |       |   └── instructions.md
|   |       └── .meta
|   |       |   ├── config.json
|   |       |   └── Example.cs (track-specific)
|   |       ├── Leap.cs (track-specific)
|   |       ├── Leap.csproj (track-specific)
|   |       └── LeapTests.cs (track-specific)
|   └── shared
|       └── .docs
|           ├── debug.md
|           ├── help.md
|           └── tests.md
└── config.json

الصيانة

صلاحيات المستودع

يُسنَد إلى كل مسار (تلقائيًا) تصنيف صيانة، وهو ما يحدّد صلاحيات مشرف المسار على مستودع GitHub.

تجنّب إطلاق عمليات تشغيل اختبارات غير ضرورية

عندما تدمج طلب سحب (PR) في المسار يمسّ أحد التمارين، فإنه يُطلق إعادة اختبار جميع أحدث النسخ المنشورة من حلول الطلاب. وبالنسبة للتمارين الشائعة، تكون هذه عملية مكلفة جدًا (70,000 عملية تشغيل اختبار في تمرين مرحبًا بالعالم بلغة Python كمثال متطرف!).

نشجّعك على محاولة تجنّب فعل ذلك بلا داعٍ.

لن يُعاد اختبار الحلول إذا كان الالتزام المدمج إما:

  • يمسّ فقط ملفات .docs أو .meta، أو ملفات أخرى لا يتفاعل معها المستخدمون
  • أو يتضمّن [no important files changed] في نص الالتزام.

ستُعاد اختبارات الحلول إذا اجتمع في الالتزام المدمج أمران:

  • غياب [no important files changed] من نص الالتزام
  • ومسّه أحد الملفات التالية لأحد التمارين (كما هو محدّد في ملف .meta/config.json الخاص به):
    • ملفات الاختبار
    • ملفات المحرر
    • ملفات الإبطال

بعض الأمثلة:

  • Python#3423: يمسّ التوثيق فقط، لذا لم تُشغَّل أي اختبارات
  • Python#3437: دُمج مع إضافة [no important files changed]، لذا لم تُشغَّل أي اختبارات
  • Csharp#2138: أُزيلت المسافات البيضاء من الاختبارات. ولم تُضَف الكلمة المفتاحية. فأُعيد تشغيل الاختبارات بلا داعٍ.