트랙 만들기


트랙은 여러 가지 요소로 이루어져 있어요.

메타데이터

트랙의 설정과 메타데이터는 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을 병합하면, 학생들이 제출한 풀이 중 최신 공개 이터레이션 _전부_가 다시 테스트돼요. 인기 있는 연습 문제라면 이 작업은 매우 비용이 커요 (극단적인 예로, Python Hello World는 테스트가 70,000번 실행됐어요!).

불필요하게 이 작업을 하지 않도록 노력해 주세요.

병합된 커밋이 다음 중 하나에 해당하면 풀이는 다시 테스트되지 않아요:

  • .docs나 .meta 파일, 또는 사용자가 직접 다루지 않는 다른 파일만 건드린 경우
  • 또는 커밋 본문에 [no important files changed]가 포함된 경우

병합된 커밋이 다음 두 가지에 모두 해당하면 풀이가 다시 테스트돼요:

  • 커밋 본문에 [no important files changed]가 없는 경우
  • 그리고 연습 문제의 다음 파일 중 하나를 건드린 경우 (해당 연습 문제의 .meta/config.json 파일에 지정된 대로):
    • 테스트 파일
    • 편집기 파일
    • 무효화 파일

몇 가지 예를 들어볼게요:

  • Python#3423: 문서만 건드려서 테스트가 실행되지 않았어요
  • Python#3437: [no important files changed]를 추가해서 병합했기 때문에 테스트가 실행되지 않았어요
  • Csharp#2138: 테스트에서 공백을 제거했어요. 키워드는 추가하지 않았어요. 테스트가 불필요하게 다시 실행됐어요.