Profile img

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
0

오늘 할 것

  • vimrc 모임 열리긴 한다고 공지하기
  • vimrc 장소 후원 모집하기
  • nestjs 프로젝트 진짜진짜 federation 잘 동작하는지 사이클 확인해보기
  • Hackers Public @ Seoul 모집 포스터 만들기
3
0

https://youtu.be/rVfRFd_26Q0?si=bkQhKROnEK2U8F22

김태호 작가의 인터뷰를 보면서 부끄러워졌다. 나는 훈련하고 있나? 집중 하고 있나? 생각해보면 그렇지 않은 채 달리고만 있었던 것 같다. 나도 50대 후반에 최고의 무언가를 만들고 싶고, 그러려면 지금부터라도 훈련을 시작해야겠다.

3
11
1
0
2
0
4

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, 맵리듀스와 하둡… 하나의 흐름으로 설명하기 어려운 프로그램들의 여러 측면을 다룬다고 할 수 있겠습니다.

원래 이 책을 읽는 방법은 이 책이 다루고 있는 예제 코드를 직접 돌려보고 연습 문제를 풀어보는 것이겠지만, 전작과 달리 그러지는 못했습니다. 그만큼 이해는 얕을 수밖에 없겠지만, 뭐 어쩔 수 없지요. 나중에 제게 이 책의 내용이 필요한 일이 온다면, 이런 개념이 어떻게 불린다는 것, 그리고 어디서 찾아야 할지는 이제 익혔으니 그 때 다시 돌아와서 머리를 싸매야겠지요.

Read more →
0

맥 미니가 자꾸 혼자 슬립 상태로 들어가길래 쓰고 있던 카페인의 문제인가 싶어서 지우고 keepingyouawake를 설치했는데 잘 될지 모르겠네...

사실 홈 서버는 맥 미니가 아니고 딴 거긴 한데 곧 얘를 중심으로 클러스터?를 만들어봐야 할 것 같기도..

0

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 →
13
2
2
1

내가 어쩌다가 이런 짓을 하게 되었나 타임라인을 정리하자면...

문제 파악

  1. 내가 만들고 있는 NestJS 앱에 fedify/nestjs 설치하고, FedifyModule 세팅해놓은 이후에 POST 요청 자체가 안 가고 있었음
  2. 왜 에러가 발생하나하고 들여다봤더니 TypeError: Response body object should not be disturbed or locked 이런 에러가 떴음.
  3. 오류가 발생한 위치는 fedify/express에서 코드 복붙할때 들어갔던 fromERequest 함수 호출 부분 이었음.
  4. 혹시나 하고, 비슷한 이슈가 있나하고 찾아봤는데 Fedify 279번 이슈에도 딱 내가 밟고 있는거랑 똑같은 에러메시지를 내뱉고 있었음.
  5. 이런 에러가 왜 발생했는지, 여기저기 찾아봤는데 hono에서도 비슷한 오류가 있었고 그걸 해결한 사례를 발견. 요약하자면, request의 body를 두번 읽으려고 해서 생긴 문제. req에 rawBody가 들어있으면 rawBody를 ReadableStream에 넣는 것으로 분기처리하고, 아니라면 기존의 코드(Readable.toWeb(req)) 그대로 사용하는 것.

해결 시도

  1. 도커 이미지 내부에는 에디터가 설치가 되어 있지 않음. 그래서, Dockerfile.dev 파일에 vim 의존성을 먼저 깔아둠
  2. vim 설치 후에는 docker compose exec app /bin/bash 커맨드로 도커 컨테이너 안쪽으로 들어가서, hono에서 하던 방식대로 시도하려고 했으나.... console.log 로 까보니 rawBody는 없고, 이미 파싱이 되어 있는 body만 남아있었음. -> 여기서 알게 된 점은.... "다른 미들웨어에 통과시키기도 전에 request에 있는 rawBody는 이미 읽혀져있구나..."
  3. NestJS의 소스코드를 까보긴 해야겠지만, 다시 돌아와서 여기Readable.toWeb(req)req.body로 바꾸니까 기적같이 그냥 돌아감...

NestJS 분석글... 쓰긴 해야겠지...? 근데, PR에도 올리긴 해야겠는데 어떡하지.... "이렇게 고치니까 되더라!!"는 좀 아닌 것 같다.

4
1
2

미리보기 이미지를 클릭하면 404가 뜨는데 링크를 클릭하면 잘 표시가 된다. 이슈 생성하러 가야지

1
0
6

박사과정을 하면 한번쯤은 내가 교수가 된다면 뭘 해볼까 생각해보게 되는 것 같다. 나의 경우에는 FPGA를 하나 사서 하드웨어부터 Verilog로 짜올려서 운영체제, 컴파일러를 만들고 C로 ray tracing을 짜는 두 학기짜리 프로젝트 과목을 해보고 싶다…만 이러면 조교가 죽어나갈 것을 알기에 꿈만 꿔본다.

0

박사과정을 하면 한번쯤은 내가 교수가 된다면 뭘 해볼까 생각해보게 되는 것 같다. 나의 경우에는 FPGA를 하나 사서 하드웨어부터 Verilog로 짜올려서 운영체제, 컴파일러를 만들고 C로 ray tracing을 짜는 두 학기짜리 프로젝트 과목을 해보고 싶다…만 이러면 조교가 죽어나갈 것을 알기에 꿈만 꿔본다.

14
1
11

First (non-reply!) post here at the lovely 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.

rubenerd.com/run-illumos-the-c

0
0
0
0
14
11
12
0
11
3

조만간 Hackers' Pub 티셔츠를 제작하려고 합니다. 가격이 얼마가 될 지는 모르겠는데 마플 기준으로는 1만원–2만원 사이 정도 될 것 같군요. 관심 있으신 분 계신가요?

4
1
5
5
4
5

밑바닥에서부터 연합우주 서비스를 만들고 있는데, 기능을 만들고 연합우주 연동을 붙이는 방식으로 접근하려니 자꾸 막히는 것 같음. 연합우주에서 어떻게 호환할지 먼저 생각해서 인터페이스를 만들고 거기에 기능을 갖다 붙이는 방식으로 접근해야 한다... 초기 단계는 수제코딩이 불가피한....

3
4
6

이번 주말........ 파이콘으로 한참 바쁠 예정입니다.....

  • 파이콘 내내 한국 연합우주 개발자 모임 부스 지키기
  • 일요일 파이콘 발표
  • OSTEP xv6 H2 스타트 끊기...
3