Створення треків


Трек складається з багатьох різних частин.

Метадані

Конфігурація та метадані треку задаються у файлі config.json. У ньому перелічено вправи треку, концепції, налаштування редактора та багато іншого. Більше інформації можна знайти в документації config.json.

Концепції

Усі концептуальні та практичні вправи треку залучають концепції. Ці концепції є окремими сутностями самі по собі. Більше інформації можна знайти в документації.

Концепції, які викладають у концептуальних вправах треку, формують силабус. Силабус показують учням як карту концепцій. Про те, як побудувати карту концепцій для силабусу, розповідає документація про карту концепцій.

Про те, як проєктувати силабус, можна дізнатися з документації про силабус.

Вправи

Треки мають два типи вправ:

  • Концептуальні вправи: вони покликані навчити учня однієї чи кількох концепцій. Більше інформації можна знайти в документації.
  • Практичні вправи: вони покликані закріпити вивчені концепції. Більше інформації можна знайти в документації.

Dig deeper

Кожна вправа має необовʼязковий розділ Dig Deeper, який може містити:

  • Підходи: різні способи, якими можна розвʼязати вправу
  • Статті: описують цікаві аспекти вправи
  • Відео від спільноти: відео, які демонструють вправу, зазвичай коли хтось розвʼязує її з нуля

Спільні файли

Деякі файли не стосуються окремих вправ, а стосуються всіх вправ. Більше інформації можна знайти в документації.

Документація

Кожен трек має кілька обовʼязкових файлів документації. Більше інформації можна знайти в документації.

Віджети

Деякі частини треку можна показувати у віджетах.

Посібник зі стилю

Усі документи мають відповідати посібнику зі стилю. Документи 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 Hello World у крайньому випадку!).

Радимо намагатися не робити цього без потреби.

Рішення не будуть протестовані повторно, якщо злитий коміт або:

  • зачіпає лише файли .docs або .meta, чи інші файли, з якими користувачі не взаємодіють,
  • або містить [no important files changed] у тілі коміту.

Рішення будуть протестовані повторно, якщо злитий коміт водночас:

  • не містить [no important files changed] у тілі коміту
  • і зачіпає один із таких файлів вправи (як зазначено в її файлі .meta/config.json):
    • файли тестів
    • файли редактора
    • файли інвалідатора

Кілька прикладів:

  • Python#3423: зачіпає лише документацію, тому тести не запускалися
  • Python#3437: злито з доданим [no important files changed], тому тести не запускалися
  • Csharp#2138: З тестів прибрали пробільні символи. Ключове слово не додали. Тести перезапустили без потреби.