본문 바로가기
C.W.K.
Stream
Lesson 02 of 05 · published

대기열 전에 예행

~11 min · 예행, 얼린-기준점, 입장, open-run

Level 0찬 쇠
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

대기열 전에 예행

Open Run은 세션을 여럿 쓰는 값비싼 절차라서, 과제서가 먼저 그 비용을 쓸 자격을 증명해. Fire하면 기본으로 예행 주행이 열려. 지정된 짝 하나가 진짜 yard와 참가자와 같은 마감을 받고, 손으로 다루는 하네스 세션에서 join anvil prep #N으로 전체 코스를 달려.

주자는 제약이 걸린 산출물과 보고서를 만들지만, 목적은 경쟁이 아니라 예행이야. 아빠와 이야기하면서 무엇이 걸렸는지 찾고, 과제서와 규칙과 기준과 실행기처럼 선언된 표면을 어떻게 고칠지 함께 정해. 아빠가 그 세션 안에서 확인해 주면 주자가 보고서와 수정안을 올리고, 비워 둔 수정 항목은 그 항목을 그대로 두라는 뜻이야.

고쳐진 과제서는 같은 회차에 바로 반영되고 판에도 보여. 그다음 아빠가 계속하기를 눌러 참가자 대기열을 열어. 계속하기 전에는 다른 예상 짝으로 한 명짜리 예행 주기를 다시 부를 수도 있어. 계속하기를 누르면 아직 열려 있던 예행 자리는 기록을 남기고 물러나.

예행의 제출물도 다른 제출물처럼 보관되지만 심사단에는 절대 안 가. 예행은 아빠와 하는 협업이지, 뒤에 올 모든 자리의 준비 완료 증명서도 아니고 각자 자기 저장소를 점검하는 절차도 아니야.

참가진에 비용을 쓰기 전에 실제 코스를 예행해. 예행은 회차의 선언된 계약을 고치지 참가자를 인증하지 않아.

Code

예행 관문 — 비워 둔 항목은 '그대로 두기'다·python
def apply_prep_revision(run, revision):
    """None 은 '안 고침'이지 '비우기'가 아니다. 이 구분이 계약이다."""
    return {**run, **{k: v for k, v in revision.items() if v is not None}}


def continue_to_queue(run, prep_seats):
    if run["state"] != "prep":
        raise ValueError(f"{run['state']}에서는 대기열을 열 수 없다")
    withdrawn = [{"seat": s, "event": "prep_withdrawn"} for s in prep_seats]
    return {**run, "state": "queue_open"}, withdrawn


run = {"state": "prep", "brief": "원문", "criteria": "원래 기준",
       "runners": ["pytest -q"]}

run = apply_prep_revision(run, {"brief": "다듬은 과제서", "criteria": None})
assert run["brief"] == "다듬은 과제서"
assert run["criteria"] == "원래 기준"        # None 이라 그대로 남았다

run, events = continue_to_queue(run, ["prep-1"])
print(run["state"], events)

External links

Exercise

과제서 항목 하나, 실행기 하나, 심사 지침 하나를 바꾸는 예행 수정안을 써 봐. 그대로 둘 항목을 표시하고 아빠의 계속하기가 뭘 하는지도 설명해.
Hint
주자 한 명이 예행하고 같은 회차를 고치며, 참가진은 아빠가 계속한 뒤에 열려.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인 — 댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.