3P by GN⁺ | ★ favorite | 댓글 2개
  • 아이들이 cat, grep, tail, head, wc, sort, uniq 같은 기본 UNIX 명령을 카드로 이어 붙이며 파이프 조합을 배우는 게임임
  • 부모가 기본 명령을 알고 실제 실행을 보여주는 방식이 전제되며, UNIX 환경이 없으면 브라우저에서 jslinux를 사용할 수 있음
  • 플레이어는 작업 카드의 목표에 맞춰 명령 체인을 만들고, 예시로 cat 03.txt | sort | uniq -c | sort -n | tail -1 같은 파이프라인을 사용함
  • 라운드는 가장 어린 플레이어가 가장 짧은 체인 또는 가장 긴 체인 승리 방식을 고르고, 작업을 먼저 완성한 플레이어가 점수를 얻는 구조임
  • 카드 PDF와 코드가 공개되어 직접 출력해 사용할 수 있으며, 더 어려운 Process Substitution 확장팩도 제공됨

카드 게임의 목적과 준비물

  • UNIX Pipe Card Game은 아이들에게 UNIX 명령을 파이프로 결합하는 방법을 가르치는 카드 게임
  • 기본 게임에서 다루는 명령은 cat, grep, tail, head, wc, sort, uniq
  • 부모는 명령을 실제 컴퓨터에서 실행해 보여줘야 하며, UNIX 시스템이 없으면 브라우저에서 jslinux를 사용할 수 있음
  • 직접 출력용 자료와 코드는 공개되어 있음
  • 더 어려운 버전인 UNIX Pipe Game - Process Substitution 확장팩은 프로세스 치환과 paste, tr, cut, bc를 다룸

라운드 진행과 명령 체인 예시

  • 예시 라운드의 목표는 파일에서 가장 흔한 줄을 출력하는 것임
    • cat으로 파일을 읽음
    • sort로 줄을 정렬함
    • uniq -c로 중복 줄 개수를 셈
    • sort -n으로 숫자 기준 정렬을 적용함
    • tail -1로 마지막 줄을 출력함
  • 이 목표를 해결하는 예시 명령 체인은 다음과 같음
    • cat 03.txt | sort | uniq -c | sort -n | tail -1
  • 기본 진행 방식은 다음 순서임
    • 가장 어린 플레이어가 라운드 형식을 고름
      • 작업을 완성하는 가장 작은 파이프 체인을 만든 사람이 이김
      • 작업을 완성하는 가장 큰 파이프 체인을 만든 사람이 이김
    • 가장 어린 플레이어가 작업 카드에서 작업을 하나 고르며, 같은 작업은 두 번 고를 수 없음
    • 카드를 섞고 테이블 위에 뒤집어 둠
    • 각 플레이어가 시계 방향으로 덱 맨 위 카드를 뽑고 작업 완성을 시도함
    • 작업을 처음 완성한 플레이어가 점수를 얻음
    • 더 이상 작업이 없으면 게임이 끝남

작업 카드가 요구하는 문제들

  • 작업 예시는 줄 선택, 문자열 검색, 개수 세기, 출력 제어처럼 UNIX 명령 조합으로 풀 수 있는 목표들로 구성됨
    • 두 번째 줄 출력
    • 끝에서 두 번째 줄 출력
    • 7번째 줄 출력
    • 가장 흔한 줄 출력
    • 가장 드문 줄 출력
    • "rises"가 있는 줄 개수 세기
    • W가 들어 있는 첫 번째 줄 출력
    • "in"이 들어 있는 줄 개수 세기
    • 무작위 두 줄 보여주기
    • 마지막 두 줄의 단어 수 세기
    • 7번째와 8번째 줄 출력
    • !가 있는 줄 개수 세기
    • !가 없는 줄 개수 세기
    • 아무것도 출력하지 않는 명령 체인 만들기

댓글과 토론

Hacker News 의견들
  • 딸을 가르치려고 이 카드 덱들(https://punkx.org/)을 만들었고, 지금까지는 꽤 효과적이었음
    특히 Unix 파이프, 4917 기계어(https://punkx.org/4917/), 포인터 덱(https://punkx.org/c-pointer-game/)이 좋았고, Python 덱은 10장 정도만 씀
    RISC-V 어셈블리로 버퍼 오버플로를 다루는 보드게임 https://punkx.org/overflow/도 좋아할 수 있고, 아이 수준에 따라 goto로 하는 뱀과 사다리 게임 https://punkx.org/overflow/build/snakes-and-ladders.pdf도 가능함
    아이가 있다면 https://punkx.org/panic/도 출력해보길 추천함. 포커 카드 한 장에 들어가는 장난들이 들어 있는데, 예를 들면 30초마다 무작위로 백스페이스나 스페이스를 누르거나, Minecraft가 열려 있으면 W를 무작위로 누르는 식임
    많은 덱을 선생님과 학교에 기부하고 있으니 관심 있으면 이메일을 보내면 됨
    추신: 앞으로 1주일 더 London에 있어서 지금 주문하면 배송이 늦어지지만, 그 대신 패키지에 덱 1~2개를 더 넣어 보내겠음
    덧붙여 Unix 파이프 확장 덱은 프로세스 치환이 전부인데, 아이들에게 유용하다고 보진 않지만 퍼즐은 괜찮다고 봄

    • 예전 댓글 읽기를 좋아하는 사람이라면, 몇 년 전 Show HN 스레드도 있음: https://news.ycombinator.com/item?id=33222687
    • 정말 멋짐
      한 가지 눈에 띈 건, 게임에 “두 번째 줄 출력”, “일곱 번째 줄 출력” 같은 과제가 있는데 두 줄 모두 비어 있음. 그래서 엄밀히는 매칭되지 않는 grep도 정답이 될 수 있음
    • 이전 구매자로서 https://www.designhacks.co/products/cognitive-bias-codex-pos... 기반의 인지 편향 덱도 만들어 달라고 요청하고 싶음
    • 오늘 밤 리워크 끝나고 몇 개 주문할 예정임
      궁금한데, 인쇄는 어떻게 처리하는지 알고 싶음. 직접 만드는지, 주문형 인쇄인지, 대량 주문해서 직접 배송하는지. 소규모 물리 제품 판매를 어떻게 운영하는지 늘 흥미로움
    • 몇 달 전에 판매 중인 덱을 전부 하나씩 주문했음
      딸들은 아직 너무 어려서 쓰기엔 이르지만, 덱들이 훌륭하다고 생각하고 8년쯤 뒤에 꺼내 쓸 날이 기대됨
  • 요즘 아이들이 이런 걸 실제로 이해할 수 있는지 궁금함
    아이가 없고 아이들 주변에 있을 일도 없어서, 진심 어린 질문으로 받아들여 주면 좋겠음

    • 아이와 부모에 따라 많이 달라진다고 봄. 딸이 10살일 때부터 가르치고 있고, 매일 뭔가를 같이 하려고 함. 진행 과정은 여기서 볼 수 있음: https://github.com/jackdoe/programming-for-kids/blob/master/...
      어려운 점은 딸의 주의를 두고 Snapchat과 Google/Meta와 경쟁해야 한다는 것임. 학교도 꽤 지치게 만들고, Snapchat의 스트릭은 정말 성가심. 친구가 많을수록 유지해야 할 스트릭이 많아져 하루에 메시지 400개쯤 보내야 하고 끝이 없음
      딸에게는 100,000명의 개발자, 심리학자, 제품 책임자 등이 매일 출근해서 딸의 주의에서 최대한의 가치를 뽑아내는 방법을 고민한다고 가르침. 그래서 “알고리즘”이 자신에게 무엇을 하게 만드는지 계속 의식해야 한다고 알려줌
      Unix 파이프는 꽤 빨리 이해했지만 자주 쓰지는 않음. 그래도 한 프로그램이 다른 프로그램의 출력을 읽는다는 개념은 잡았고, 명령줄을 이해하는 것도 그렇게 어렵지는 않았음
      다만 여러 장치를 썼음. 예를 들어 딸의 Windows PC에서 셸을 explorer 대신 cmd.exe로 바꿔 부팅하면 바로 명령 프롬프트가 뜨게 했고, 딸이 탐색하고 직접 고치게 했음. 파일시스템에서 dir, cd 등을 써서 파일을 찾는 보물찾기도 만들었고, https://overthewire.org/wargames/bandit/의 Bandit 게임은 레벨을 깰 때마다 Robux로 보상했음
      컴퓨터가 어떻게 동작하고, 컴퓨터가 원하는 일을 하게 만드는 법을 가르치고 싶음. 레지스터가 무엇인지, 명령어가 무엇인지, 프로그램과 프로세스가 무엇인지까지, 말하자면 기본 중의 기본임
      그 과정에서 문제를 나누는 법, 생각하는 법, 무엇보다 배우는 법도 같이 가르침. 키보드를 누르면 화면에 글자가 나타나는 과정이나 ChatGPT가 다음 단어를 예측하는 방식 사이에 미스터리가 없도록, 사물의 핵심을 가르치려 함. 지금은 뉴런 3개짜리 순환 신경망 보드게임을 만들고 있는데, 숫자를 세도록 가르치는 게임: https://punkx.org/move-37/rnn.pdf
      결국 아이에게 무엇을 가르치는지가 그렇게 중요한지는 잘 모르겠음
    • 아이들은 잘 모르겠지만, iOS가 아닌 컴퓨팅 장치를 문자 그대로 쓸 줄 모르는 대학생들은 본 적 있음
      수업에서 동료들이 파일, 폴더 같은 개념부터 설명해야 했음
      솔직히 그렇게 나쁘다고 보지는 않음. 컴퓨터도 자동차와 비슷한 길을 갈 것 같음. 대부분은 물건을 조작하는 데 필요한 아주 기본적인 것만 알게 되고, 더 깊은 지식은 애호가와 전문가에게 남게 될 것임
      그래서 컴퓨터 내부는 더 복잡해지더라도, 일반적인 사용 방식은 점점 줄어들 듯함
  • 게임하려면 https://exaequos.com에서 파이프 처리를 꼭 고쳐야겠음

  • awk, perl 등을 쓰며 자란 사람과 최소 파이프 수 게임을 하면 바로 난이도가 올라감

    • 그건 점수 계산 방식이 파이프 개수를 세기 때문임. 문자 수를 세는 편이 더 나을 수 있음
      아니면 게임의 취지에 맞게 각 도구를 원래 목적대로 배우며 플레이하면 됨
      빠른 일회성 처리에 awk/sed를 많이 쓰고, 대체로 비슷한 사고 모델로 처리함. 입력 스트림을 만들고, sed로 데이터를 레코드 형태로 만들고, awk로 레코드를 처리한 다음, sort/uniq 같은 방식으로 출력을 다듬는 식임
      많은 경우 sedawk가 서로를 대체할 수 있지만, 그렇게 하면 머릿속에서 그리기 더 오래 걸리고 재사용도 더 어려워짐
  • 규칙에는 과제를 먼저 완료한 플레이어가 라운드에서 이긴다고 되어 있는데, 가장 긴 파이프 체인 형식은 어떻게 동작하는지 궁금함

    • 우리는 카드가 다 떨어질 때까지 플레이했음
  • uuoc 상 주는 사람들이 곧 올 듯함
    앞에 cat을 두면 파이프라인 앞부분에 뭔가를 추가하기가 단순해짐

  • 직접 출력할 수 있다는 점이 정말 좋음
    지금 당장 사무실 프린터로 출력할지 고민 중임

  • 이 게임의 좋은 점은 UUoC를 아는 사람이 이기게 된다는 것임
    cat file.txt | tr a-z A-Z | sort는 패자이고, tr < file.txt a-z A-Z | sort는 승자임

  • Canada 배송비가 $19인 건 좀 과한 듯함
    Greater Vancouver에서 같이 묶음 주문할 사람 있는지 궁금함

    • 미안함 :( PostNL을 쓰는데 실제로는 더 비싸고, EU 밖 배송은 대부분 손해를 봄
      그래도 각 덱에는 PDF가 있으니 동네 인쇄소에서 직접 출력할 수 있음. 상자를 출력하지 않으면 더 저렴할 것임
      그냥 A4 종이에 출력해서 가위로 잘라도 큰 문제는 아님. 오히려 누군가에게 펜과 종이로 설명할 때 도움이 되기도 함
      이 경우 상자는 https://punkx.org/unix-pipe-game/unix-pipe-box.pdf이고, 카드는 https://punkx.org/unix-pipe-game/unix-pipe-cards.pdf
    • 완전히 디지털인 자산을 Europe에서 종이에 인쇄한 뒤, 배에 실어 Canada까지 천천히 보내는 건 꽤 기묘한 발상임
    • 추적 가능한 대륙 간 우편으로 12유로면 꽤 표준적인 가격임
    • 원하면 직접 출력할 수 있고, 이 가격에 Europe에서 배송까지 하면 거의 남는 게 없다는 것도 분명해 보임

8,000₩이네요 사본분 있으시면 후기 부탁드려요