트랙은 여러 가지 요소로 이루어져 있어요.
트랙의 설정과 메타데이터는 config.json 파일에 정의돼요. 이 파일에는 트랙의 연습 문제, 개념, 편집기 설정 등이 담겨 있어요. 자세한 내용은 config.json 문서를 확인해 봐요.
트랙의 모든 개념 연습 문제와 실습 연습 문제에는 _개념_이 등장해요. 개념은 그 자체로 별개의 존재예요. 자세한 내용은 문서를 확인해 봐요.
트랙의 개념 연습 문제에서 가르치는 개념들은 하나의 _실라버스_를 이루어요. _실라버스_는 학생들에게 _개념 지도_로 보여줘요. _실라버스_의 개념 지도를 만드는 방법은 개념 지도 문서에서 알아볼 수 있어요.
실라버스를 설계하는 방법은 실라버스 문서를 확인해 봐요.
트랙에는 두 가지 유형의 연습 문제가 있어요:
각 연습 문제에는 선택 사항인 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을 병합하면, 학생들이 제출한 풀이 중 최신 공개 이터레이션 _전부_가 다시 테스트돼요. 인기 있는 연습 문제라면 이 작업은 매우 비용이 커요 (극단적인 예로, Python Hello World는 테스트가 70,000번 실행됐어요!).
불필요하게 이 작업을 하지 않도록 노력해 주세요.
병합된 커밋이 다음 중 하나에 해당하면 풀이는 다시 테스트되지 않아요:
.docs나 .meta 파일, 또는 사용자가 직접 다루지 않는 다른 파일만 건드린 경우[no important files changed]가 포함된 경우병합된 커밋이 다음 두 가지에 모두 해당하면 풀이가 다시 테스트돼요:
[no important files changed]가 없는 경우.meta/config.json 파일에 지정된 대로):
몇 가지 예를 들어볼게요:
[no important files changed]를 추가해서 병합했기 때문에 테스트가 실행되지 않았어요