Profile img

Jaeyeol Lee

@kodingwarrior@hackers.pub · 667 following · 483 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

작업 내역

  • https://github.com/cosmoslide/cosmoslide/pull/45 PDF 업로드 기능이라도 구축은 해야할 것 같아서 진행함. 보통은 express라던가 등등 JS 기반의 웹서버 프레임워크에서는 파일시스템/S3/GCS 등의 스토리지에 파일을 업로드할때, 스토리지에 접근하는 과정 자체를 추상화하는 flydrive라는걸 쓰는데, flydrive는 NestJS에서 사용이 되지 않는 ESM-only 모듈이어서, 어떻게 해야 하나 하다가 Claude Code한테 AWS S3에 접근하는 것만 적당히 추상화해서 야크쉐이빙 해달라고 했더니 그냥 순식간에 되었다. 문서를 뜯어보고 구현해야하는 수고는 줄었고, aws sdk를 어떻게 활용하는지는 가성비있게 학습할 수 있는 기회가 되었다.

  • https://github.com/cosmoslide/cosmoslide/pull/46 프로필 화면에 Presentation 탭을 넣었고, 프레젠테이션 파일을 업로드하면 Create(Note) 액티비티가 발생되도록 처리했다. react-pdf 이용해서 커스텀 PDF 뷰어 적당히 끼워넣었다.

PDF 업로드 기능 가설 검증프레젠테이션을 위한 커스텀 PDF 뷰어프로필 화면에 Presentation 탭 넣었다.
4
2
0

Jaeyeol Lee shared the below article:

terminal buffer를 통한 pwd sync

이광효 @widehyo@hackers.pub

이 글은 Vim의 `:terminal` 커맨드를 활용하여 터미널 버퍼를 효율적으로 사용하는 방법에 대한 여정을 담고 있습니다. `:terminal`로 열리는 터미널 버퍼는 `Terminal-Job`과 `Terminal-Normal` 모드를 지원하며, `tmap`을 통해 제어할 수 있습니다. 특히 `terminal-api`를 이용하면 터미널 모드에서 Vimscript를 호출하여 Vim의 기능을 확장할 수 있습니다. 글에서는 터미널 버퍼의 현재 디렉터리를 Vim의 현재 디렉터리와 동기화하는 방법, 그리고 이를 자동화하는 과정을 상세히 설명합니다. `.bashrc` 설정과 Vimscript 함수를 결합하여 터미널에서 파일 시스템을 탐색할 때마다 Vim의 현재 디렉터리도 함께 변경되도록 구성합니다. 또한, 내장 셸(`:sh`)과의 전환, REPL 환경에서의 사용, 일회성 명령 실행 등 다양한 사용 사례를 고려하여 터미널 사용 모드를 전환하는 기능까지 구현합니다. 이 포스팅은 Vim의 터미널 기능을 깊이 있게 활용하고자 하는 사용자에게 유용한 팁과 실질적인 설정 방법을 제공하며, Vim과 터미널을 더욱 긴밀하게 통합하여 생산성을 높이는 데 기여합니다.

Read more →
3

드디어 구글 스터디잼 학습에서 목표로 했던 스킬 뱃지 10개를 모두 획득하고, 골드 등급에도 진입했습니다!
제 시간과 노력이 결실을 맺은 것 같아 더욱 뿌듯합니당. 프로필 보기

0
2
0

회사에서 딴 짓하고 싶다는 말에 터미널로 책을 읽으면 되는거 아니냐는 이야기가 나와서, 설마 Neovim 플러그인 중에 epub 플러그인이 있을까? 하고 알아봤다. 진짜 있다. vim 사용자들의 집념은 뭘까 진짜...

https://github.com/CrystalDime/epub.nvim

10

SC2TS: TypeScript로 포팅한 스타크래프트 2 리플레이 파서

SC2TS를 공개했습니다. 처음에는 Claude Code를 공부하기 위한 연습 프로젝트로 시작했던 작업이었습니다.

왜 TypeScript로 포팅했을까요?

여러 이유가 있었지만, 크게 다섯 가지 이유로 정리할 수 있습니다.

첫째, 충분히 흥미로운 프로젝트여야 했습니다. 끝까지 완성할 수 있는 동기부여가 필요했는데, 이 프로젝트는 그럴 만한 가치가 있다고 판단했습니다.

둘째, 이미 관련 경험이 있었습니다. 예전에 Blizzard의 공식 라이브러리인 s2protocol에 Pull Request를 보내본 적이 있어서, 프로젝트의 구조와 동작 방식에 어느 정도 익숙했습니다.

셋째, 선례가 있었습니다. 이미 Go 언어로 포팅된 버전이 존재했기 때문에, TypeScript로도 충분히 구현 가능하다는 확신이 있었습니다.

넷째, 적절한 난이도였습니다. 내부 구현을 세세하게 다 알고 있지는 않았지만, 충분히 복잡하면서도 AI의 도움을 받아 해결할 수 있는 수준이라고 판단했습니다.

다섯째, 그리고 가장 중요한 이유는 스타크래프트 2 관련 분석 사이트를 AI 기능과 함께 만들어보고 싶었는데, 기존 s2protocol이 더 이상 공식 지원을 받지 못하게 되었기 때문입니다. 이 문제를 해결하기 위해서는 직접 TypeScript 버전을 만드는 것이 최선의 선택이었습니다.


사실 이러나 저러나.. 중간에 잠깐 휴가도 있었어서 생각보다는 오래걸렸네요.

8
0
0

PyCon JP 2025 후기

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 PyCon JP 2025에 참가한 한국인 개발자의 생생한 후기를 담고 있습니다. 저자는 PyCon KR에 꾸준히 참여해왔지만, 해외 컨퍼런스는 처음이라 설렘과 기대를 안고 일본으로 향했습니다. 히로시마에서 열린 이번 행사에서 저자는 다양한 세션에 참여하고, Findy와 Python Asia Association에서 주최한 DrinkUp 파티, 그리고 PKSHA Technology의 파티에 참여하며 여러 개발자들과 교류했습니다. 특히 FastAPI 개발자인 tiangolo와의 만남, Neovim을 사용하는 데이터 엔지니어와의 공감대 형성, 그리고 Emacs 사용자에게서 느낀 위기감 등 재미있는 에피소드들이 인상적입니다. "Innovation is a side effect of solving problem"이라는 tiangolo의 어록은 깊은 인상을 남겼습니다. 이 글은 PyCon JP가 외국인을 위한 배려가 돋보이는 행사였으며, 다양한 주제의 세션과 네트워킹 기회가 많았음을 강조합니다. 다음 PyCon JP에 발표자로 참여하고 싶다는 의지를 밝히며, 한국 커뮤니티도 외국인이 즐길 수 있는 컨텐츠가 늘어나기를 바라는 마음을 전합니다.

Read more →
13
1
0
0
2
1

Some loosely organized thoughts on the current Zeitgeist. They were inspired by the response to my recent meta-project mentioned in my previous post mathstodon.xyz/@tao/1152541452, where within 24 hours I became aware of a large number of ongoing small-scale collaborative math projects with their own modest but active community (now listed at mathoverflow.net/questions/500 ); but they are from the perspective of a human rather than a mathematician.

As a crude first approximation, one can think of human society as the interaction between entities at four different scales:

1. Individual humans

2. Small organized groups of humans (e.g., close or extended family; friends; local social or religious organizations; informal sports clubs; small businesses and non-profits; ad hoc collaborations on small projects; small online communities)

3. Large organized groups of humans (e.g., large companies; governments; global institutions; professional sports clubs; large political parties or movements; large social media sites)

4. Large complex systems (e.g., the global economy; the environment; the geopolitical climate; popular culture and "viral" topics; the collective state of science and technology).

(1/5)

0
0
0
0

http://logitext.mit.edu/main 재미있는 웹 앱 중 하나. 논건 대수(Sequent Calculus)를 사용해 1차 논리("모든 대상에 대해"나 "어떤 대상이 있어"를 서술할 수 있는 논리)의 명제를 상호작용을 통해 증명해 볼 수 있다. 예를 들어 A /\ B -> A (A 그리고 B이면 A이다)를 증명하려면

  • 위 명제를 입력칸에 넣는다.
  • ->를 눌러 명제 안의 "이면"을 증명에서 쓸 수 있는 가정(|-의 왼쪽에 있는 것)으로 바꾼다.
  • 가정의 A /\B를 눌러 "그리고"의 양 측에 해당하는 가정 AB 각각을 얻는다.
  • 가정이나 결론의 A를 눌러 가정을 사용하는 것으로 증명을 끝낸다.

보다 입문자에게 친절한 설명은 http://logitext.mit.edu/tutorial 에서 읽어볼 수 있다.

4

2025 Q2/Q3 Review

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 2025년 2분기 결산을 미루고 3분기에 몰아 작성한 개발자의 회고록입니다. 4월부터 9월까지 2~4주 단위로 굵직한 이벤트들이 연이어 발생하며 '업보 청산'의 시간을 보냈다고 합니다. 임금 미지급, 파이콘 발표 준비, Fedify 프로젝트 참여, UbuCon Korea 발표, PyCon KR 참여, Hackers' Public 주최, PyCon JP 참여 등 다사다난했던 3분기를 요약하고 있습니다. 특히 Fedify 프로젝트에 기여하며 NestJS 기반의 연합우주 소프트웨어 개발에 집중하고, Hackers' Public 밋업을 성공적으로 개최한 경험을 강조합니다. 현재는 수입이 거의 없는 상태이지만, 취업 준비와 외주를 병행하며 바쁘게 지내고 있습니다. Node.js 백엔드 엔지니어 또는 풀스택 엔지니어로서의 취업을 목표로 하고 있으며, 기술 면접 준비와 함께 OS 및 네트워크 관련 지식을 쌓고 있습니다. 마지막으로, 4분기에는 현재 진행 중인 프로젝트를 마무리하고 크리스마스 이전에 취업하는 것을 목표로 하고 있습니다.

Read more →
19
0

Optique 0.5.0 is out! Enhanced error handling and message customization for TypeScript CLI parsing.

Key improvements:

  • Fully customizable error messages
  • Automatic error conversion for withDefault callbacks
  • Better help text and module organization
  • 100% backward compatible
4
5
0

음식 사진을 업로드하면 AI가 한국어 트윗을 자동 생성해주는 사이드 프로젝트에요 https://tweet-gen-ai.vercel.app/

결과는 이런식으로 나와요 https://tweet-gen-ai.vercel.app/shared/v3SGg2NhcGXhblRIDDjNr

Replit 구독 해제했더니 서비스를 내려버려서-_-... vercel로 재배포했어요

vercel용으로 리팩토링 해야하니 Cursor > ChatGPT > Claude Max 순으로 써봤는데 결국 클로드가 해냈네요.

1

요전번에 산 책 '관계형 데이터베이스 실전 입문' 첫 챕터를 정리했다. 정리하는 김에 원래 대학원에서 썼던 학술용 홈피도 싹 다 갈아엎을 겸 해서 맘에 드는 테마 하나 포크해서 블로그도 다시 만들어서 첫 포스트로 써서 올림...글로 쓰다보니 뭔가 보충하면 좋을 것 같은 내용들이 보였는데, 특히나 관계형 모델에서 튜플(=행)은 하나의 집합이라서 그 원소가 사실 순서가 없어도 되는데 실제 SQL로 표현되는 테이블에서는 순서가 있어야한다는 지점이 흥미로워서 다른 DB 개론서들 보면서 그 내용들을 추가하다보니 결국엔 형식적으로 정의하는 부분까지 넣게 됐다. 써놓고 보니 배보다 배꼽이 더 커진 듯한 느낌이지만...뭐 어때, 재밌으면 됐지!

3
4

토큰-링 네트워크에서 영감을 얻어 노드들이 서로 토큰을 돌려가며 서로 헬스체크하는 일종의 탈중앙화(?) 헬스체크 서비스를 대충 만들어보았다. 토큰 네트워크를 토큰이 돌며 노드들이 서로의 주소를 사인하고, 만약 다음 노드가 없거나 연락 불가하다면 이슈어에게 다시 돌려주는 방식의 단순한 토큰링 네크워크인데, 잘 작동해서 기분이 좋다.

demo of token ring health check service
3

NestJS로 풀어보는 SOLID 원칙

Jaeyeol Lee @kodingwarrior@hackers.pub

이 글은 NestJS를 사용하면서 마주할 수 있는 소프트웨어 설계의 복잡성을 SOLID 원칙을 통해 해결하고자 한다. SOLID 원칙은 단일 책임 원칙(SRP), 개방-폐쇄 원칙(OCP), 리스코프 치환 원칙(LSP), 인터페이스 분리 원칙(ISP), 의존 역전 원칙(DIP)으로 구성되어 있으며, NestJS의 Controller, Service, Repository 구조를 통해 SRP를 실현하고, Interceptor를 통해 OCP를, 인터페이스를 통한 LSP, Guard, Pipe 등을 통해 ISP를, DI 컨테이너를 통해 DIP를 구현하는 방법을 설명한다. 각 원칙 위반 사례와 개선 사례를 비교하여 코드의 응집도, 유지보수성, 확장성, 유연성을 높이는 방법을 제시하며, 다이어그램을 통해 각 원칙이 적용된 코드 구조를 시각적으로 보여준다. 이 글을 통해 독자는 NestJS를 사용한 개발에서 SOLID 원칙을 적용하여 더 나은 소프트웨어 설계를 할 수 있을 것이다.

Read more →
4
0
0
0
0
0
0
0

“이펙티브 소프트웨어 아키텍처” 책은 소프트웨어 아키텍처 개론서이다. 아키텍처 자체에 대한 내용을 다루진 않고, 아키텍처을 효과적으로 하는 데 필요한 기반 또는 관련 요소를 다룬다.

내겐 모호한 책이다. 소프트웨어 개발 관련 직무를 수행한 지 얼마 안 되거나 아키텍처가 필요한 상황을 겪어본 적이 없는 사람에게 더 유익할 것같다. 특히 소프트웨어 엔지니어링 직군이 아닌 사람이 아키텍처를 고민한다면 책이 친절하다고 느낄 것이다.

책 표지책 갈무리 1책 갈무리 2
2

요즘 당근 AI 개발 - AI가 만든 파도 위에서 과감히 서핑하는 법 / AI 에이전트, 프롬프트 엔지니어링, VoC 자동 분석, 운영자동화, 바이브 코딩 AI 검색과 추천까지 당근의 AI 활용 이야기 (당근 팀 (지은이) / 골든래빗(주) / 2025-10-10 / 22,000원) feed.kodingwarrior.dev/r/o2dE03

aladin.co.kr/shop/wproduct.asp

0

추석 연휴(10월 중순) 지나면 동시에 해야하는거

  • 이력서 돌리기
  • 외주 다시 시작
  • OSSCA 프로젝트 마무리 짓기 (연휴 기간에는 영혼갈아넣어서 완성도 높일거임)
  • MT? 워크샵? 아무튼 기획
  • Hackers Pub 두번째 모임 기획
  • vimrc 모임 기획
  • 밀린 커피챗

전부 11월까지는 끝내야함....

갑갑하구만..

3

Jaeyeol Lee shared the below article:

'블루스카이즘', 정치 폭력, 그리고 권위주의 하의 개방 소셜 네트워크

잇창명 EatChangmyeong💕🐱 @eatch@hackers.pub

이 글은 개방형 소셜 네트워크인 블루스카이가 미국 정치 지형 변화 속에서 겪는 어려움을 분석합니다. 중도 논객들의 비판과 가짜 뉴스 확산으로 '좌편향' 플랫폼이라는 낙인이 찍히고, 정부의 검열 압박까지 받는 상황을 설명합니다. 특히 찰리 커크 피살 사건을 계기로 블루스카이에 대한 정치적 공격이 심화되고 있으며, 이는 앱 스토어 퇴출과 같은 실질적인 위협으로 이어질 수 있음을 지적합니다. 저자는 블루스카이가 빅테크의 엔시티피케이션(enshittification) 문제 해결에 집중하는 동안, 권위주의 정부의 탄압이라는 새로운 위협에 직면했다고 주장합니다. 따라서 단순한 플랫폼 이동의 자유를 넘어, 정치적 탄압에도 살아남을 수 있는 회복탄력성 있는 네트워크 구축이 필요하다고 강조합니다. 이 글은 기술적 자유와 정치적 억압 사이의 복잡한 관계를 조명하며, 미래 소셜 네트워크의 방향성에 대한 중요한 질문을 던집니다.

Read more →
5
8
0
0

“소프트웨어 아키텍처 101” 책은 소프트웨어 아키텍처를 주제로 소프트웨어 엔지니어링 접근 방식을 여러 체계로 분류하고, 각각을 설명한다. 아키텍처를 다루는 데 그치지 않고 아키텍트의 역할과 소프트스킬도 간략하게 다뤄서, 아키텍처라는 활동을 기초부터 차근 차근 두루 살펴본다.

저자는 절충점(트레이드오프)을 근간으로 삼아 내용을 기술한다. 책 초반부에 “아키텍처는 모든 게 다 트레이드오프”라고 선언한다. 그래서 여러 아키텍처를 소개하고 설명할 때에도 무엇이 트레이드오프 요소일지 설명하는 점이 유익하다.

이런 주제를 다루는 책은 주니어에게 자칫 헛바람 또는 손에 망치를 들게 하는데, 자신의 커리어 단계에서 아키텍처를 어떻게 학습하고 소화할지 제안하는 점이 인상적이다.

원제에 fundamentals이라는 표현이 있는데, 기초나 입문이라는 표현이 좀 더 어울리는 책이다.

책 표지책 갈무리 1책 갈무리 2책 갈무리 3책 갈무리 4책 갈무리 5책 갈무리 6책 갈무리 7책 갈무리 8
1
0
0