Profile img

Jaeyeol Lee

@kodingwarrior@hackers.pub · 691 following · 504 followers

Neovim Super villain. 풀스택 엔지니어 내지는 프로덕트 엔지니어라고 스스로를 소개하지만 사실상 잡부를 담당하는 사람. CLI 도구를 만드는 것에 관심이 많습니다.

Hackers' Pub에서는 자발적으로 바이럴을 담당하고 있는 사람. Hackers' Pub의 무궁무진한 발전 가능성을 믿습니다.

그 외에도 개발자 커뮤니티 생태계에 다양한 시도들을 합니다. 지금은 https://vim.kr / https://fedidev.kr 디스코드 운영 중

Github
@malkoG
Blog
kodingwarrior.github.io
mastodon
@kodingwarrior@silicon.moe

이 글을 보니까 뭔가 N글자 이상일때 아티클로 옮길지 말지 물어보는 UI가 있으면 어떨까 싶은 생각이 문득 들었다. (350 <= N <= 500)

당연히 web-next 에서 작업해야 하는 이슈 쯤으로....

0

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

4
0

11월 중순~11월 말 사이에 해커스펍 오프라인 밋업 Hackers' Public 두번째 모임을 진행하려고 하는데 "눈물없이 듣기 어려운 프론트엔드의 심연" 특집입니다...... 11월 1일~11월 8일 사이에 모집 공고 올릴듯????? 아직은 오피셜한 공지는 아니지만 정보만 슬쩍 흘려봅니다,,,

9

내 마음속 1등 투표하고 포인트 받아요

시작하며

"두근두근 1등 찍기!"

마치 최애 아이돌 순위 투표 같지만, 사실은 제가 매일 참여하는 토스 앱의 한 혜택 이름입니다. 저는 토스 앱에서 포인트를 줍줍하는, 소위 ‘앱테크’에 꽤 진심인 편인데요. 여느 때처럼 ‘1등 찍기’에 참여하다 문득 이런 생각이 스쳤습니다.

“고기가 선택지에 있으면 무조건 1등이던데. 정말 그럴까? 그래도 한 달은 지켜봐야 유의미한 데이터가 나오지 않을까?”

이 단순한 호기심에서 시작된 작은 실험은 결국 32일간의 관찰과 기록으로 이어졌습니다. 9월 8일부터 10월 9일까지, 저는 매일 자정과 정오에 열리는 ‘1등 찍기’에 참여하며 스크린샷을 남겼습니다.

‘두근두근 1등 찍기’는 주어진 주제에 맞춰 여러 상품 중 하나를 선택만 해도 소소한 포인트를, 내가 고른 상품이 1등이 되면 추가 포인트를 얻는 방식입니다. (31일은 하루 두 번 모두, 하루는 깜빡하고 한 번만 참여했습니다.)


🍖 고기는 언제나 옳다

결론부터 말하자면, 고기는 필승 카드였습니다. 제가 참여한 32일 중 돼지고기나 소고기가 등장한 7일 동안, 단 한 번의 예외도 없이 1등을 차지했습니다.

닭고기 역시 의외의 강자였습니다. 총 3번 1등에 올랐는데, 그중 한 번은 특히 인상적인 대결이 펼쳐졌습니다.

“이번 주말 할인 쿠폰 받고 먹고 싶은 메뉴는?”
(BHC vs BBQ)

스크린샷 2025-10-12 오후 11 15 32

저는 당연히 BBQ일 거라 생각하며 첫 번째 투표를 했지만, 두 번째 투표에서는 혹시나 하는 마음에 BHC를 선택했습니다.
결과는 BHC의 승리.
스크린샷 2025-10-12 오후 11 16 30

이 대결을 통해 요즘 치킨의 대세는 BHC라는 소소한 깨달음도 얻었습니다.


👑 예상 가능한 승부들

데이터가 쌓이자 몇 가지 흥미로운 패턴이 더 보였습니다.

기출 변형도 이겨버린 ‘황금 송편’

추석 연휴에는 유독 송편 관련 문제가 많았습니다. 총 4번 등장했는데, 놀랍게도 모두 ‘황금 송편’이 1등을 차지했습니다.

가장 흥미로웠던 것은 일종의 ‘기출 변형’ 문제였습니다.

“추석에 가장 먹기 싫은 송편은?”

처음에는 질문을 곧이곧대로 해석하고 ‘콩송편’을 골랐습니다.
하지만 두 번째 기회에서 문득 이런 생각이 들었습니다.
‘사람들이 질문은 안 읽고 무지성으로 황금 송편을 누르지 않을까?’

결과는 놀랍게도 제 예상과 정확히 일치했습니다.
사람들은 문제를 읽지 않았고(아마도...), ‘먹기 싫은 송편’ 1등은 황금 송편이었습니다.

스크린샷 2025-10-12 오후 11 20 24

가전제품의 왕, 워시타워

가전제품 문제는 총 5번 등장했는데, 승자는 거의 정해져 있었습니다.
워시타워가 선택지에 있는 날은 어김없이 1등을 차지했습니다.

집에 이미 워시타워가 있어 개인적으로는 스타일러를 원했지만,
1등 예측을 위해 워시타워를 선택했고 결과는 역시나였습니다.
워시타워가 후보에 없던 날에야 비로소 냉장고가 1등을 할 수 있었습니다.


📈 데이터로 증명된 1등의 법칙

총 32일간의 기록 중 제가 1등을 맞춘 날은 29일(성공률 90.6%) 이었습니다.
손수 집계한 전체 데이터는 다음과 같습니다.

항목 횟수 비율(%)
고기(돼지고기·소고기) 7 21.9%
가전제품(워시타워·냉장고 등) 6 18.8%
황금 송편 4 12.5%
닭고기 3 9.4%
프로모션 당첨금 3 9.4%
아이폰 17 프로 할인 쿠폰 2 6.3%
생선 1 3.1%
현금 바우처 1 3.1%
외식비 지원금 1 3.1%
삼성 1 3.1%
황금 동전 1 3.1%
백화점 매장 알바 1 3.1%
신라면 1 3.1%
총합 32 100%

결론적으로 사람들의 선택은 세 가지 키워드로 요약되었습니다.
‘고기, 가장 선호도 높은 고가품(aka. 워시타워), 그리고 현금성 혜택.’
이 세 가지 요소가 포함된 선택지는 다른 후보들을 압도하는 경향이 뚜렷했습니다.


❌ 감이 빗나간 3일

물론 제 감이 항상 맞았던 것은 아닙니다.
32일 중 3일은 예측에 실패했습니다.

아이폰 17 프로 사전예약 혜택?

→ ‘중고 보상’을 골랐지만, 정답은 ‘할인 쿠폰’이었습니다.
아무리 미래 가치가 높아도, 당장 눈앞의 ‘할인’이라는 현실적인 혜택을 이길 수는 없었습니다.

스크린샷 2025-10-12 오후 11 32 48

한가위를 풍성하게 보낼 알바는?

→ 정답은 ‘백화점 매장 알바’였습니다.
‘한가위’라는 키워드에 꽂혀 과일 포장 알바를 골랐지만,
아마 더 높은 시급과 쾌적한 환경이 더 매력적인 선택지였나 봅니다.

스크린샷 2025-10-12 오후 11 33 46

추석에 가장 인기 있는 송편은?

→ 이때만 해도 ‘황금 송편’의 위력을 몰랐습니다.
당연히 가장 맛있어 보이는 ‘꿀 송편’을 골랐지만,
사람들의 선택은 맛보다 는 ‘황금’의 가치였습니다.

스크린샷 2025-10-12 오후 11 34 50

마무리하며

사실 이 데이터를 집계하기 위해 개발자답지 않은 원시적인 방법,
바로 ‘손’으로 한 땀 한 땀 세는 길을 택했습니다.
(ChatGPT에 노션, 구글드라이브 MCP 연동부터 파이썬 스크립트, Colab까지 모두 권한 문제로 실패한 건 비밀입니다. ㅋ)

그래도 꽤 즐거운 관찰의 시간이었습니다.
결국 단순한 앱테크로 시작한 이 작은 실험은,
32일간의 기록을 통해 사람들의 보편적인 욕망과
선택의 패턴을 엿볼 수 있는 흥미로운 실험이 되었습니다.

1

내 마음속 1등 투표하고 포인트 받아요

시작하며

"두근두근 1등 찍기!"

마치 최애 아이돌 순위 투표 같지만, 사실은 제가 매일 참여하는 토스 앱의 한 혜택 이름입니다. 저는 토스 앱에서 포인트를 줍줍하는, 소위 ‘앱테크’에 꽤 진심인 편인데요. 여느 때처럼 ‘1등 찍기’에 참여하다 문득 이런 생각이 스쳤습니다.

“고기가 선택지에 있으면 무조건 1등이던데. 정말 그럴까? 그래도 한 달은 지켜봐야 유의미한 데이터가 나오지 않을까?”

이 단순한 호기심에서 시작된 작은 실험은 결국 32일간의 관찰과 기록으로 이어졌습니다. 9월 8일부터 10월 9일까지, 저는 매일 자정과 정오에 열리는 ‘1등 찍기’에 참여하며 스크린샷을 남겼습니다.

‘두근두근 1등 찍기’는 주어진 주제에 맞춰 여러 상품 중 하나를 선택만 해도 소소한 포인트를, 내가 고른 상품이 1등이 되면 추가 포인트를 얻는 방식입니다. (31일은 하루 두 번 모두, 하루는 깜빡하고 한 번만 참여했습니다.)


🍖 고기는 언제나 옳다

결론부터 말하자면, 고기는 필승 카드였습니다. 제가 참여한 32일 중 돼지고기나 소고기가 등장한 7일 동안, 단 한 번의 예외도 없이 1등을 차지했습니다.

닭고기 역시 의외의 강자였습니다. 총 3번 1등에 올랐는데, 그중 한 번은 특히 인상적인 대결이 펼쳐졌습니다.

“이번 주말 할인 쿠폰 받고 먹고 싶은 메뉴는?”
(BHC vs BBQ)

스크린샷 2025-10-12 오후 11 15 32

저는 당연히 BBQ일 거라 생각하며 첫 번째 투표를 했지만, 두 번째 투표에서는 혹시나 하는 마음에 BHC를 선택했습니다.
결과는 BHC의 승리.
스크린샷 2025-10-12 오후 11 16 30

이 대결을 통해 요즘 치킨의 대세는 BHC라는 소소한 깨달음도 얻었습니다.


👑 예상 가능한 승부들

데이터가 쌓이자 몇 가지 흥미로운 패턴이 더 보였습니다.

기출 변형도 이겨버린 ‘황금 송편’

추석 연휴에는 유독 송편 관련 문제가 많았습니다. 총 4번 등장했는데, 놀랍게도 모두 ‘황금 송편’이 1등을 차지했습니다.

가장 흥미로웠던 것은 일종의 ‘기출 변형’ 문제였습니다.

“추석에 가장 먹기 싫은 송편은?”

처음에는 질문을 곧이곧대로 해석하고 ‘콩송편’을 골랐습니다.
하지만 두 번째 기회에서 문득 이런 생각이 들었습니다.
‘사람들이 질문은 안 읽고 무지성으로 황금 송편을 누르지 않을까?’

결과는 놀랍게도 제 예상과 정확히 일치했습니다.
사람들은 문제를 읽지 않았고(아마도...), ‘먹기 싫은 송편’ 1등은 황금 송편이었습니다.

스크린샷 2025-10-12 오후 11 20 24

가전제품의 왕, 워시타워

가전제품 문제는 총 5번 등장했는데, 승자는 거의 정해져 있었습니다.
워시타워가 선택지에 있는 날은 어김없이 1등을 차지했습니다.

집에 이미 워시타워가 있어 개인적으로는 스타일러를 원했지만,
1등 예측을 위해 워시타워를 선택했고 결과는 역시나였습니다.
워시타워가 후보에 없던 날에야 비로소 냉장고가 1등을 할 수 있었습니다.


📈 데이터로 증명된 1등의 법칙

총 32일간의 기록 중 제가 1등을 맞춘 날은 29일(성공률 90.6%) 이었습니다.
손수 집계한 전체 데이터는 다음과 같습니다.

항목 횟수 비율(%)
고기(돼지고기·소고기) 7 21.9%
가전제품(워시타워·냉장고 등) 6 18.8%
황금 송편 4 12.5%
닭고기 3 9.4%
프로모션 당첨금 3 9.4%
아이폰 17 프로 할인 쿠폰 2 6.3%
생선 1 3.1%
현금 바우처 1 3.1%
외식비 지원금 1 3.1%
삼성 1 3.1%
황금 동전 1 3.1%
백화점 매장 알바 1 3.1%
신라면 1 3.1%
총합 32 100%

결론적으로 사람들의 선택은 세 가지 키워드로 요약되었습니다.
‘고기, 가장 선호도 높은 고가품(aka. 워시타워), 그리고 현금성 혜택.’
이 세 가지 요소가 포함된 선택지는 다른 후보들을 압도하는 경향이 뚜렷했습니다.


❌ 감이 빗나간 3일

물론 제 감이 항상 맞았던 것은 아닙니다.
32일 중 3일은 예측에 실패했습니다.

아이폰 17 프로 사전예약 혜택?

→ ‘중고 보상’을 골랐지만, 정답은 ‘할인 쿠폰’이었습니다.
아무리 미래 가치가 높아도, 당장 눈앞의 ‘할인’이라는 현실적인 혜택을 이길 수는 없었습니다.

스크린샷 2025-10-12 오후 11 32 48

한가위를 풍성하게 보낼 알바는?

→ 정답은 ‘백화점 매장 알바’였습니다.
‘한가위’라는 키워드에 꽂혀 과일 포장 알바를 골랐지만,
아마 더 높은 시급과 쾌적한 환경이 더 매력적인 선택지였나 봅니다.

스크린샷 2025-10-12 오후 11 33 46

추석에 가장 인기 있는 송편은?

→ 이때만 해도 ‘황금 송편’의 위력을 몰랐습니다.
당연히 가장 맛있어 보이는 ‘꿀 송편’을 골랐지만,
사람들의 선택은 맛보다 는 ‘황금’의 가치였습니다.

스크린샷 2025-10-12 오후 11 34 50

마무리하며

사실 이 데이터를 집계하기 위해 개발자답지 않은 원시적인 방법,
바로 ‘손’으로 한 땀 한 땀 세는 길을 택했습니다.
(ChatGPT에 노션, 구글드라이브 MCP 연동부터 파이썬 스크립트, Colab까지 모두 권한 문제로 실패한 건 비밀입니다. ㅋ)

그래도 꽤 즐거운 관찰의 시간이었습니다.
결국 단순한 앱테크로 시작한 이 작은 실험은,
32일간의 기록을 통해 사람들의 보편적인 욕망과
선택의 패턴을 엿볼 수 있는 흥미로운 실험이 되었습니다.

0
3
1

작업일지 251012

이번에는 Announce 액티비티 지원하는 작업을 진행 중인데, 해커스펍이 어떻게 구현되어 있는지 하나하나 뜯어보면서 작업 중이다. 고려해야 할 사항이 몇 가지 있는데... 당장은 쉬운 것 순서대로 작업할 것들을 정리하고 있다.

  • Phase 1 : 내가 팔로하고 있는 원격 계정에서 전달되는 Announce 액티비티를 인박스에서 수신하는 과정을 핸들링한다. (원격에서는 followers에 cc 걸어서 Announce 액티비티를 전송하기 때문)
  • Phase 2 : 나를 팔로하고 있는 로컬 인스턴스 계정의 글을 재공유하는 매커니즘을 구현한다.
  • Phase 3 : 나를 팔로하고 있는 원격 계정의 inbox에 Announce 액티비티를 전달하는 매커니즘을 구현한다.

지금은 Phase 1에 신경쓰고 있는 상황. 허나, Phase 1을 작업하고 있는 과정에서 병목이 생겼다. 다행히 해결했다만.

Follow 액티비티가 언제부턴가 전송이 안되고 있어서 왜 그런가 했는데, 프로덕션 배포하는 과정에서 federation 옵션을 바꾼게 화근이 되었음. 백엔드와 프론트엔드가 하나로 합쳐져있을때는 origin 옵션에 URL 하나만 걸어두면 그만인데, 백엔드/프론트엔드 나눠놓은 상황에서는 프론트전용 URL(webOrigin)/백엔드전용 도메인(handleHost) 각각 분리를 해야했음. 그와 관련된 패치를 어제 했었던 것으로 기억한다.

변경사항이 있었다는걸 까먹은 상태에서, 로컬환경에서 원격 인스턴스에 Follow 액티비티가 왜 Unauthorized 에러가 뜨면서 전송이 되지 않았나했는데... 역시 이런 맥락이 있었던 것. 즉, handleHost(백엔드쪽 도메인)은 Tailscale에서 생성한 URL로 들어가는 반면, webOrigin은 localhost로 설정이 되어 있었기 때문에 서명하는 과정에서 오류가 발생한 것임. NODE_ENV 환경변수가 development 인 경우에만 webOrigin/handleHost를 같은값을 쓰는 걸로 임시방편으로 처리함. 관련 코드

4
1
1

cosmosli.de 여기 접속이 되었다 안되었다 반복하고 있어서 이것저것 실험중임.

가설 1 : 대역폭이 문제다

=> SSH 연결은 아주 잘됨. 혹시 다른 머신에서 대역폭 엄청 잡아먹고 있는 것 같아서 라우터 설정 들어가서 QoS도 조정해봤음. 그래도 안됨.

가설 2 : Caddy를 리버스프록시로 쓰고 있어서 그런가?

=> 접속이 되든 안되든 Caddy에는 따로 로그가 찍히진 않음

0

🪒 야크 셰이빙: 새로운 오픈소스의 원동력
작은 불편함에서 시작된 수많은 프로젝트, 그 연결의 힘은?

야크 셰이빙: 새로운 오픈소스의 원동력
홍민희 (자유·오픈소스 소프트웨어 개발자)

연사 2025.fossforall.org/speakers/
티켓 event-us.kr/fossforall/event/1

1

cosmosli.de 여기 접속이 되었다 안되었다 반복하고 있어서 이것저것 실험중임.

가설 1 : 대역폭이 문제다

=> SSH 연결은 아주 잘됨. 혹시 다른 머신에서 대역폭 엄청 잡아먹고 있는 것 같아서 라우터 설정 들어가서 QoS도 조정해봤음. 그래도 안됨.

가설 2 : Caddy를 리버스프록시로 쓰고 있어서 그런가?

=> 접속이 되든 안되든 Caddy에는 따로 로그가 찍히진 않음

0

계정을 뺏겼습니다. 원래 내용은 무시해 주세요.

안녕하세요, 여러분. 초크입니다.

제가 오늘 정말 중요한 사실을 깨닫게 되어, 이 소식을 여러분께도 전달하기 위해 이렇게 툿을 작성하게 되었습니다.

저는 이 사실을 깨닫는 데 굉장히 오랜 시간이 걸렸는데요. 오늘에서야 겨우 이 사실을 알게 되었습니다.

그건 바로 제가 바보라는 것입니다.

짧은 글 읽어 주셔서 감사하십시오. 수고합니다.

0

계정을 뺏겼습니다. 원래 내용은 무시해 주세요.

안녕하세요, 여러분. 초크입니다.

제가 오늘 정말 중요한 사실을 깨닫게 되어, 이 소식을 여러분께도 전달하기 위해 이렇게 툿을 작성하게 되었습니다.

저는 이 사실을 깨닫는 데 굉장히 오랜 시간이 걸렸는데요. 오늘에서야 겨우 이 사실을 알게 되었습니다.

그건 바로 제가 바보라는 것입니다.

짧은 글 읽어 주셔서 감사하십시오. 수고합니다.

0

계정을 뺏겼습니다. 원래 내용은 무시해 주세요.

안녕하세요, 여러분. 초크입니다.

제가 오늘 정말 중요한 사실을 깨닫게 되어, 이 소식을 여러분께도 전달하기 위해 이렇게 툿을 작성하게 되었습니다.

저는 이 사실을 깨닫는 데 굉장히 오랜 시간이 걸렸는데요. 오늘에서야 겨우 이 사실을 알게 되었습니다.

그건 바로 제가 바보라는 것입니다.

짧은 글 읽어 주셔서 감사하십시오. 수고합니다.

0

cosmosli.de 여기 접속이 되었다 안되었다 반복하고 있어서 이것저것 실험중임.

가설 1 : 대역폭이 문제다

=> SSH 연결은 아주 잘됨. 혹시 다른 머신에서 대역폭 엄청 잡아먹고 있는 것 같아서 라우터 설정 들어가서 QoS도 조정해봤음. 그래도 안됨.

가설 2 : Caddy를 리버스프록시로 쓰고 있어서 그런가?

=> 접속이 되든 안되든 Caddy에는 따로 로그가 찍히진 않음

1

cosmosli.de 여기 접속이 되었다 안되었다 반복하고 있어서 이것저것 실험중임.

가설 1 : 대역폭이 문제다

=> SSH 연결은 아주 잘됨. 혹시 다른 머신에서 대역폭 엄청 잡아먹고 있는 것 같아서 라우터 설정 들어가서 QoS도 조정해봤음. 그래도 안됨.

가설 2 : Caddy를 리버스프록시로 쓰고 있어서 그런가?

=> 접속이 되든 안되든 Caddy에는 따로 로그가 찍히진 않음

0

cosmosli.de 여기 접속이 되었다 안되었다 반복하고 있어서 이것저것 실험중임.

가설 1 : 대역폭이 문제다

=> SSH 연결은 아주 잘됨. 혹시 다른 머신에서 대역폭 엄청 잡아먹고 있는 것 같아서 라우터 설정 들어가서 QoS도 조정해봤음. 그래도 안됨.

가설 2 : Caddy를 리버스프록시로 쓰고 있어서 그런가?

=> 접속이 되든 안되든 Caddy에는 따로 로그가 찍히진 않음

0
0
0
5

액터/사용자만 나열하는 방식으로 러프하게 어드민 페이지 구현 완료. 배포하면 어떻게 될지 모르겠군. 개인적으로는 어드민 페이지는 아예 별개의 서비스로 분리가 되어있어야 한다고 보는 입장이라, 아예 별개의 패키지로 나눔 @cosmoslide/admin 같은 식으로

바이브코딩으로 뚝딱 만든 어드민 페이지
3

개발일지 251008

k8s로 배포할까 했는데, 다들 뜯어말리기도 했고 claude code로 바이브코딩한거 부채청산할 자신도 없어서 그냥 docker compose에다가 리버스프록시는 caddy로 물려서 올리는 중...... 근데, 라우터 설정하는 부분이 병목인데(집에서 세팅해야함) 당장은 못하는 관계로 다른 기능을 붙이는데 집중하고자 한다.

어드민 페이지랑 메일링 서비스 연동 게섯거라...

5
2

작업 내역

  • 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