NestJS로 포폴쌓으려고 했는데, NestJS 특유의 이상한 동작때문에 억까당함

Jaeyeol Lee
@kodingwarrior@hackers.pub · 561 following · 418 followers
Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.
Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.
그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중
Blog
- kodingwarrior.github.io
mastodon
- @kodingwarrior@silicon.moe
Github
- @malkoG
오늘 할 것
- vimrc 모임 열리긴 한다고 공지하기
- vimrc 장소 후원 모집하기
- nestjs 프로젝트 진짜진짜 federation 잘 동작하는지 사이클 확인해보기
- Hackers Public @ Seoul 모집 포스터 만들기
Lobsters는 인터뷰도 하는구나
Lobsters Interview with Matklad https://lobste.rs/s/ntruuu #person
https://youtu.be/rVfRFd_26Q0?si=bkQhKROnEK2U8F22
김태호 작가의 인터뷰를 보면서 부끄러워졌다. 나는 훈련하고 있나? 집중 하고 있나? 생각해보면 그렇지 않은 채 달리고만 있었던 것 같다. 나도 50대 후반에 최고의 무언가를 만들고 싶고, 그러려면 지금부터라도 훈련을 시작해야겠다.
단문(Note
)과 긴 게시글(Article
) 모두에서 Markdown을 지원할 뿐만 아니라 구문강조와 TeX 수식을 지원한다는 점에서 Hackers' Pub은 연합우주에서 가장 소프트웨어 프로그래머가 쓰기에 적합한 플랫폼이라고 자부합니다.
실무로 통하는 웹 API - 파일 처리, 애니메이션, 음성 인식, 저장소, 웹 컴포넌트까지 기능으로 배우고 구현으로 완성하다 (조 아타디 (지은이), 김태곤 (옮긴이) / 한빛미디어 / 2025-09-01 / 27,000원) https://feed.kodingwarrior.dev/r/BQrjtk
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=370436615&partner=openAPI&start=api
듀오링고에 체스도 있네 ㅋㅋ
듀오링고에 체스도 있는데 언젠가 마작도 넣어주지 않을까 (
살고 싶으면 순정구련보등으로 날 이겨라
역시 수제코딩을 해야 감각이 늘고 리터러시가 생긴다..... 뇌에 힘주고 해야하는건 수제코딩..
Optique: Type-safe combinatorial CLI parser for TypeScript https://lobste.rs/s/dlobhb #javascript
https://optique.dev/
Weird flex, both @elk and
@phanpy are mentioned on "Introduction to AT Protocol" https://mackuba.eu/2025/08/20/introduction-to-atproto/
Jaeyeol Lee shared the below article:
7가지 동시성 모델
정진명의 굳이 써서 남기는 생각 @jm@guji.jjme.me
서지정보
서명: 7가지 동시성 모델
저자: 폴 부처(Paul Butcher)
역자: 임백준
출판사: 한빛미디어
출간일: 2016년 7월 15일
원서명: Seven Concurrency Models in Seven Weeks: When Threads Unravel
원서 출간일: 2014년
생각
『7가지 동시성 모델』은 『한국신화를 찾아 떠나는 여행』 다음으로 읽는 빌린책챌린지 책입니다. 뜬금없이 프로그래밍 도서로 뛰었지요. 최근에 관련된 업무를 하게 되어 손이 이 쪽으로 왔습니다. 시리즈의 전작이라고 할 수 있는 『브루스 테이트의 세븐 랭귀지』를 좋아하기도 했어서, 비슷한 감각으로 배울 수 있는 게 있을 거라 생각했습니다.
제가 전문적으로 프로그래밍을 익힌 분야는 기본적으로 과학적 계산(Scientific Computing) 중 일부분이고, 또 학계에 한정되어 있기도 해서 일반적으로 업계에서 프로그램을 작성하는 직무에 필요한 사고방식과 고려해야 할 문제에 익숙하다고 하기는 어렵습니다. 그래도 나름 산업적으로 활용되는 분야라 슈퍼컴퓨팅센터 같은 곳에 기웃거리면서 GPGPU니 병렬계산이니 하는 개념을 익히기도 했지만, 아무튼 제 졸업논문에 들어간 계산 정도는 병렬 계산은 커녕 순차적으로 실행되는 CPU 프로그램만으로도 충분했습니다.
그런 면에서 저는 코드의 흐름이 비동기적이 되는 부분부터 어려움을 느끼고, await/async, Promise, 뭐 이런 걸 정말 필요한 정도로만 알고 있습니다. 병렬 처리, 멀티스레딩 같은 건 말할 것도 없죠. 그런 점에서, 제가 모르는 영역에서 그래도 아는 키워드를 조금이라도 넓혀나가고 싶다는 것이 이 책을 집게 된 이유입니다.
이 책은 말 그대로 프로그래밍의 세계에서 동시성을 다루는 일곱 가지 모델을 다룹니다. 영어 제목에서는 좀 더 드러나지만, 7주간 금요일, 토요일, 일요일 분량을 읽고 실습하면서 개념을 익혀나가는 구성이지요. 스레드와 락, 함수형 프로그래밍, 클로저의 모티베이션, 액터, 채널, GPGPU, 맵리듀스와 하둡… 하나의 흐름으로 설명하기 어려운 프로그램들의 여러 측면을 다룬다고 할 수 있겠습니다.
원래 이 책을 읽는 방법은 이 책이 다루고 있는 예제 코드를 직접 돌려보고 연습 문제를 풀어보는 것이겠지만, 전작과 달리 그러지는 못했습니다. 그만큼 이해는 얕을 수밖에 없겠지만, 뭐 어쩔 수 없지요. 나중에 제게 이 책의 내용이 필요한 일이 온다면, 이런 개념이 어떻게 불린다는 것, 그리고 어디서 찾아야 할지는 이제 익혔으니 그 때 다시 돌아와서 머리를 싸매야겠지요.
맥 미니가 자꾸 혼자 슬립 상태로 들어가길래 쓰고 있던 카페인의 문제인가 싶어서 지우고 keepingyouawake를 설치했는데 잘 될지 모르겠네...
사실 홈 서버는 맥 미니가 아니고 딴 거긴 한데 곧 얘를 중심으로 클러스터?를 만들어봐야 할 것 같기도..
@akastoot악하 완전 짱이다
Jaeyeol Lee shared the below article:
Optique: 타입 안전한 CLI 파서 컴비네이터

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
이 글에서는 Haskell의 `optparse-applicative`와 TypeScript의 Zod에서 영감을 받아 제작된 새로운 CLI 파서 라이브러리인 Optique를 소개합니다. Optique는 파서 컴비네이터를 활용하여 CLI의 구조를 레고 블록처럼 조립할 수 있게 해줍니다. `option()`, `optional()`, `multiple()`, `or()`, `object()`, `constant()`, `command()`, `argument()` 등의 다양한 파서와 컴비네이터를 통해 복잡한 CLI 구조를 유연하게 정의할 수 있습니다. 특히, `or()`와 `object()` 컴비네이터를 사용하여 상호 배타적인 옵션이나 서브커맨드를 쉽게 구현하는 방법을 예제를 통해 설명합니다. Optique는 단순한 CLI 파서 역할에 집중하고 있어 모든 기능을 제공하지는 않지만, 복잡한 CLI 구조를 표현하는 데 유용하며, 소개 문서와 튜토리얼을 통해 더 자세한 내용을 확인할 수 있습니다.
Read more →밋업을 예고하지 않고, 밋업 공지를 예고하는 고도의 마케팅이군요@kodingwarriorJaeyeol Lee
@lionhairdino 제가 이런 쪽으로 달란트가 좀 있습니다
node_modules를 실시간으로 디버깅하기 위해 결국 Docker 이미지에다가 vim을 설치하는 결정을 하고 마는데.....
내가 어쩌다가 이런 짓을 하게 되었나 타임라인을 정리하자면...
문제 파악
- 내가 만들고 있는 NestJS 앱에
fedify/nestjs
설치하고, FedifyModule 세팅해놓은 이후에 POST 요청 자체가 안 가고 있었음 - 왜 에러가 발생하나하고 들여다봤더니
TypeError: Response body object should not be disturbed or locked
이런 에러가 떴음. - 오류가 발생한 위치는
fedify/express
에서 코드 복붙할때 들어갔던fromERequest
함수 호출 부분 이었음. - 혹시나 하고, 비슷한 이슈가 있나하고 찾아봤는데 Fedify 279번 이슈에도 딱 내가 밟고 있는거랑 똑같은 에러메시지를 내뱉고 있었음.
- 이런 에러가 왜 발생했는지, 여기저기 찾아봤는데 hono에서도 비슷한 오류가 있었고 그걸 해결한 사례를 발견. 요약하자면, request의 body를 두번 읽으려고 해서 생긴 문제. req에 rawBody가 들어있으면 rawBody를 ReadableStream에 넣는 것으로 분기처리하고, 아니라면 기존의 코드(
Readable.toWeb(req)
) 그대로 사용하는 것.
해결 시도
- 도커 이미지 내부에는 에디터가 설치가 되어 있지 않음. 그래서, Dockerfile.dev 파일에 vim 의존성을 먼저 깔아둠
- vim 설치 후에는 docker compose exec app /bin/bash 커맨드로 도커 컨테이너 안쪽으로 들어가서, hono에서 하던 방식대로 시도하려고 했으나.... console.log 로 까보니 rawBody는 없고, 이미 파싱이 되어 있는 body만 남아있었음. -> 여기서 알게 된 점은.... "다른 미들웨어에 통과시키기도 전에 request에 있는 rawBody는 이미 읽혀져있구나..."
- NestJS의 소스코드를 까보긴 해야겠지만, 다시 돌아와서 여기서
Readable.toWeb(req)
를req.body
로 바꾸니까 기적같이 그냥 돌아감...
NestJS 분석글... 쓰긴 해야겠지...? 근데, PR에도 올리긴 해야겠는데 어떡하지.... "이렇게 고치니까 되더라!!"는 좀 아닌 것 같다.
node_modules를 실시간으로 디버깅하기 위해 결국 Docker 이미지에다가 vim을 설치하는 결정을 하고 마는데.....
8월 30일~31일 쯤에 해커스펍 밋업 모집 공지 올려야지
@kodingwarriorJaeyeol Lee 자막을 잘 달면 괜찮지 않을까요? 요즘 LLM 덕분에 자막 달기 편해졌던데… (해 본 적 있어요.)
미리보기 이미지를 클릭하면 404가 뜨는데 링크를 클릭하면 잘 표시가 된다. 이슈 생성하러 가야지
@joonnotnotJoon 감사하십시오
@kodingwarriorJaeyeol Lee 생각해 보니 PeerTube 계정도 하나 만들어 두긴 해야겠네요.
@hongminhee洪 民憙 (Hong Minhee) Hackers Pub 채널로 만들기에는 비한국어권은 소외되는 뭐 그런 느낌이 있긴 해요.
@kodingwarriorJaeyeol Lee 아닠ㅋㅋ 이거 민희님 컨펌 받은건가요ㅋㅋㅋ
(일단 벌려놓고 생각해보기)
박사과정을 하면 한번쯤은 내가 교수가 된다면 뭘 해볼까 생각해보게 되는 것 같다. 나의 경우에는 FPGA를 하나 사서 하드웨어부터 Verilog로 짜올려서 운영체제, 컴파일러를 만들고 C로 ray tracing을 짜는 두 학기짜리 프로젝트 과목을 해보고 싶다…만 이러면 조교가 죽어나갈 것을 알기에 꿈만 꿔본다.
@jafffyJaewon Choi 방금 따끈따끈하게 교수님이 되신
@theeluwin제이미 선생님의 의견이 궁금해지네요(?)
박사과정을 하면 한번쯤은 내가 교수가 된다면 뭘 해볼까 생각해보게 되는 것 같다. 나의 경우에는 FPGA를 하나 사서 하드웨어부터 Verilog로 짜올려서 운영체제, 컴파일러를 만들고 C로 ray tracing을 짜는 두 학기짜리 프로젝트 과목을 해보고 싶다…만 이러면 조교가 죽어나갈 것을 알기에 꿈만 꿔본다.
빔은짱짱이다(회사컴에IdeaVim깔아둔염소)
@seralness세랄이
그런 당신에게 추천하는 vim.kr
해커스펍 오프라인 밋업... 일정은 확정되었고, 연사자분들도 좋은 분들로 모셨는데 때가 되면 공개하겠습니다...... 다음달 중순이긴 함...
아니다. 일정 확정되었으니까 정보만 흘려야지. 9월 14일입니다.... 자세한 정보는 올라오겠지만 캘박만 해두십쇼...
First (non-reply!) post here at the lovely https://mastodon.illumos.cafe.
I run old SunOS/Solaris on retrocomputers, and modern Tribblix for fun! This account will be for sharing my exploits on these systems.
Thanks again to the wonderful Stefano Marinelli for making this possible.
@kodingwarriorJaeyeol Lee ima kaeni modorimasu-ing
@z9mb1wwj otsu curry-sama deshita
@z9mb1wwj えっ‥と
해커스펍 오프라인 밋업... 일정은 확정되었고, 연사자분들도 좋은 분들로 모셨는데 때가 되면 공개하겠습니다...... 다음달 중순이긴 함...
9월내내 해커스펍 모임 기획, 워크숍 일정 기획으로 머리가 아픈 와중, PyCon JP 같이 가자는 유혹이 있어서 뿌리치기 어려움 이슈로 머리가 더 아픈,,,
어제 파이콘 라이트닝토크 하는데 커뮤니티 홍보하는거 보고... "아, 해커스펍 약파는걸로 라이트닝 토크 신청할 걸" 하고 땅치고 후회함
@z9mb1wwj 그냥 트리시터 츄라이 츄라이 하는 게 갑자기 떠올랐어요
Jaeyeol Lee님은 관공서 서류의 직업란에 뭐라 쓰지요? 프로그래머는 아니고... @kodingwarriorJaeyeol Lee
@lionhairdino 프로그래머라고 쓰면 되지 않나요? ㅋㅋㅋ
- 9월 : 해커스펍 모임, 어딘가에서의 워크숍? MT? 기획
- 10월 : OSSCA 2025 마무리 준비
- 11월 : VIMRC 2025
너무 바쁘다
으으 지각이다 지각
조만간 Hackers' Pub 티셔츠를 제작하려고 합니다. 가격이 얼마가 될 지는 모르겠는데 마플 기준으로는 1만원–2만원 사이 정도 될 것 같군요. 관심 있으신 분 계신가요?
조만간 또 추월하겠습니다
@jafffyJaewon Choi 안녕하세요! 반갑습니다 ㅋㅋ
정신없다 아이고
해커스펍 550명 돌파!!
해커스펍 500명 돌파 나이스~
기다리는 분들 위해서 커피 사가는중
밑바닥에서부터 연합우주 서비스를 만들고 있는데, 기능을 만들고 연합우주 연동을 붙이는 방식으로 접근하려니 자꾸 막히는 것 같음. 연합우주에서 어떻게 호환할지 먼저 생각해서 인터페이스를 만들고 거기에 기능을 갖다 붙이는 방식으로 접근해야 한다... 초기 단계는 수제코딩이 불가피한....
@crohasang크롸상 님이 작명해주신 덕분에, 찝찝한 기분도 덜어내고 진행하고 있는 프로젝트에 좀 더 속도를 낼 수 있을 것 같다..... 압도적 감사.... 기념으로 도메인도 샀다. https://cosmosli.de 뽕을 뽑자 이젠.....
이번 주말........ 파이콘으로 한참 바쁠 예정입니다.....
- 파이콘 내내 한국 연합우주 개발자 모임 부스 지키기
- 일요일 파이콘 발표
- OSTEP xv6 H2 스타트 끊기...