Kurzusok építése


Egy kurzus sok különböző részből áll.

Metaadatok

A kurzus konfigurációja és metaadatai a config.json fájlban vannak megadva. Ez sorolja fel a kurzus feladatait, fogalmait, szerkesztőbeállításait és még sok mást. Nézd meg a config.json dokumentációt.

Fogalmak

A kurzus összes tanuló- és gyakorlófeladata fogalmakhoz kapcsolódik. Ezek a fogalmak önmagukban is különálló egységek. További információért nézd meg a dokumentációt.

A kurzus tanulófeladataiban tanított fogalmak egy tantervet alkotnak. A tanterv a tanulók számára fogalomtérképként jelenik meg. Ha szeretnéd megtudni, hogyan építsd fel egy tanterv fogalomtérképét, nézd meg a fogalomtérkép dokumentációt.

Ha többet szeretnél megtudni a tanterv tervezéséről, nézd meg a tanterv dokumentációt.

Feladatok

A kurzusoknak kétféle feladatuk van:

  • Tanulófeladatok: arra szolgálnak, hogy egy vagy több fogalmat megtanítsanak a tanulónak. További információért nézd meg a dokumentációt.
  • Gyakorlófeladatok: a megtanult fogalmak gyakorlására szolgálnak. További információért nézd meg a dokumentációt.

Áss mélyebbre

Minden feladatnak van egy opcionális Áss mélyebbre szakasza, amely a következőket tartalmazhatja:

  • Megközelítések: különböző módok, ahogyan a feladat megoldható
  • Cikkek: a feladat érdekes szempontjait mutatják be
  • Közösségi videók: olyan videók, amelyek bemutatják a feladatot, általában úgy, hogy valaki a nulláról oldja meg

Megosztott fájlok

Néhány fájl nem egy-egy feladatra jellemző, hanem az összes feladatra érvényes. További információért nézd meg a dokumentációt.

Dokumentumok

Minden kurzushoz tartozik néhány kötelező dokumentációs fájl. További információért nézd meg a dokumentációt.

Widgetek

A kurzus egyes részei widgetekben is megjeleníthetők.

Stílusútmutató

Minden dokumentumnak követnie kell a stílusútmutatót. A Markdown-dokumentumoknak emellett be kell tartaniuk a Markdown-szabványainkat is.

Példa

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

Karbantartás

Tárolójogosultságok

Minden kurzushoz (automatikusan) hozzárendelnek egy karbantartási kategóriát, amely meghatározza a kurzus karbantartójának GitHub-tároló-jogosultságait.

A felesleges tesztfuttatások elkerülése

Amikor mergelsz egy olyan kurzus-PR-t, amely egy feladatot érint, azzal elindítod az összes tanulói megoldás legutóbb közzétett iterációjának újratesztelését. A népszerű feladatoknál ez egy nagyon költséges művelet (extrém esetben 70 000 tesztfuttatás a Python Hello Worldnél!).

Arra biztatunk, hogy próbáld elkerülni a felesleges újratesztelést.

A megoldásokat nem tesztelik újra, ha a mergelt commit:

  • csak .docs vagy .meta fájlokat, illetve olyan más fájlokat érint, amelyekkel a felhasználók nem találkoznak
  • vagy tartalmazza a [no important files changed] szöveget a commit üzenetének törzsében.

A megoldásokat újra fogják tesztelni, ha a mergelt commit egyszerre:

  • nem tartalmazza a [no important files changed] szöveget a commit üzenetének törzsében
  • és érinti egy feladat alábbi fájljainak egyikét (a feladat .meta/config.json fájljában meghatározottak szerint):
    • tesztfájlok
    • szerkesztőfájlok
    • invalidator fájlok

Néhány példa:

  • Python#3423: Csak dokumentumokat érint, így nem futottak tesztek
  • Python#3437: [no important files changed] hozzáadásával mergelték, így nem futottak tesztek
  • Csharp#2138: Whitespace-t távolítottak el a tesztekből. A kulcsszót nem adták hozzá. A teszteket feleslegesen futtatták újra.