Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。

嗨,我是 FedifyHolloBotKit 以及這個網站 Hackers' Pub 的開發者!

Website
hongminhee.org
GitHub
@dahlia
Hollo
@hongminhee@hollo.social
DEV
@hongminhee
velog
@hongminhee
Qiita
@hongminhee
Zenn
@hongminhee
Matrix
@hongminhee:matrix.org
X
@hongminhee

국내에서 판매하는 가정용 8포트 유선 공유기가 ipTime뿐이라, openwrt 올리고 싶다는 마음으로 디버그 콘솔까지 열어보고, 결국 납땜해서 시리얼 콘솔 연결해야 되나본데? 하고는, 그냥 돈으로 해결하자(?)라면서 OpenWrt One 과 USB전원 공급으로 충분히 돌아가는 스위치를 사는걸로 끝내버렸는데...

1
2
4

실제로 Hackers' Pub은 Mac mini M4 깡통에서 돌아가는데, 아직 Asahi Linux가 M4를 지원 안 해서 macOS 안에 컨테이너 띄워서 돌리고 있어요. Asahi Linux가 M4 지원할 때까지 숨 참고 기다리는 중입니다…

2
1

마크다운의 특별한 렌더링 없이 봐도 의미론적인 정보를 유지하는 특성을 좋아하기는 하는데, 자동 줄내림을 해주는 편집환경(예: 웹)에서는 줄내림을 줄내림으로 처리하지 않는 동작이 불편하다. 자꾸 까먹고 렌더링 안되는 줄내림을 쓰고는 "아, 맞다" 하게 된다.

0
1
2
2
4

Announcing LogTape 1.0.0

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

LogTape 1.0.0 has been released, marking a significant milestone for this zero-dependency logging library designed for the modern JavaScript ecosystem. This release emphasizes API stability and introduces high-performance features such as non-blocking sinks for console, stream, and file logging, along with the `fromAsyncSink()` function for integrating asynchronous logging operations. New sink integrations include packages for AWS CloudWatch Logs and Windows Event Log, enhancing LogTape's versatility. The update also brings a visually appealing console logging experience with the `@logtape/pretty` package, and seamless integration with existing Winston or Pino setups through adapter packages. Key developer experience enhancements include programmatic access to log levels and improved browser compatibility. LogTape 1.0.0 streamlines logging infrastructure with a comprehensive package ecosystem, offering specialized packages for various logging needs. This release provides a stable and mature logging solution, making it easier to manage and optimize logging in JavaScript applications.

Read more →
11

번아웃으로 아직 고생하는 가운데, 갑자기 삘이 와서 지난 1주간 170쪽짜리 소설을 Gemini로 써 버렸다. 소재가 너무 잔혹해서 (R-18G 수준) 그대로 공개하기에는 꺼려진다는 문제가 있을 뿐; 줄거리 자체는 내가 예상한 것 이상으로 잘 나왔는데 퇴고를 열심히 해서 그런 것 같다. 구체적으로 어떻게 된 거냐 하면,

  1. Gemini 2.5 Flash로 짧은 초안 작성 (1판)
  2. 이 초안의 중간 즈음에서 두 개의 새 줄거리를 만들어서 전체 줄거리 수가 3개가 됨
  3. 이대로는 안되겠다 싶어서 Flash의 제안을 일부 받아 들여 줄거리를 하나로 재조정 (2판)
  4. 이 시점에서 Gemini 2.5 Pro한테 평가를 부탁하고, 평가 내용을 다시 Flash에게 되먹여서 액션 아이템을 만들어 퇴고를 반복 (3~7판)
  5. 이 참에 번역도 맡겨야지 싶어서 Flash한테 먼저 초벌 번역을 시킴 (번역 1판)
  6. 초벌 번역을 Pro한테 주고 고쳐야 하는 부분을 그 이유와 함께 나열하게 함
  7. Flash한테 수정된 번역과 수정한 이유들을 주고 판단하게 시킨 다음 최종 번역본을 완성 (번역 2판)
  8. 마지막으로 Pro한테 전체 번역문을 주고 전체 번역 안에서의 일관성이 깨진 게 있는지 확인

이랬는데, 가장 곤란했던 건 역시 4였다. 왜냐하면 내용이 너무 길어서 텍스트 창에는 한 번에 안 들어가고(...), 잘라서 넣으면 이제 뭔 짓을 해도 앞부분을 까먹어 버렸기 때문이다. 최종적으로 동작한 방법은 소설을 최대 32KB 크기가 되도록 쪼갠 뒤 파일로 나눠어 업로드하고, 업로드가 끝난 뒤에 몇장까지 있는지 확인하고 뒤가 잘린 문장이 있는지 확인해서 뭔가 문제가 있으면 평가를 하지 않고 멈추라고 지시한 것. 혹시 이런 일 해야 하는 분은 참고하시길.

...뭐 이렇게 말하긴 했는데 사실 Flash한테 글 쓰기는 다 맡겼지만 세부적으로는 상당히 손을 많이 거쳤다. 한국어나 영어 번역이나 둘 다 그랬음. 나름 노력한 것도 있고 이 전체 내용을 다시 Flash한테 되먹였더니 찬사 일색(!!!!!)이라 진짠가 싶어서 어디 올려야 할 것 같긴 한데 소재가 소재다 보니 공개도 간단하지 않다는 게 곤란하다. 호옥시 관심 있으신 분께서는 메일로 pdf 파일을 보내 드리겠습니다.

소설 "싱크로니시티"의 한국어판 목차. 이하 다음과 같은 내용임:

싱크로니시티 Synchronicity
2025-06-22T00Z (7.4판), Gemini 2.5 Flash를 이용해 작성됨

프롤로그 - 2
1: 마리오네트 Marionette - 3
2: 태동 Genesis - 7
3: 틀 Frame - 13
4: 수치 Shame - 23
5: 목격 Witness - 37
6: 고난 Ordeal - 50
7: 울림 Resound - 65
8: 결점 Flaw - 73
9: 촉매 Catalyst - 82
10: 개조 Augment - 90
11: 의식 Ritual - 102
12: 쇼 Show - 108
13: 갈채 Acclaim - 117
14: 욕구 Desire - 130
15: 목도 Encounter - 141
16: 이미지 Image - 147
17: 진화 Evolution - 158
에필로그 - 163
'작가'의 변 - 164
작가의 변 - 166
'서평' - 170

참고로 이 소설은 99%가 Gemini의 출력 결과인데, 물론 그렇다고 해서 Gemini한테 모든 걸 맡긴 건 아니고 줄거리나 주요 설정 등은 내가 정했다. 그래도 요즘 LLM은 로컬하게는 좋은 텍스트를 뽑아 내므로 이렇게 쓰는 게 맞는 것 같긴 하다.

예를 들기 위해 6장의 한 장면을 스포일러를 자제하는 선에서 발췌하면:

튜브를 허리에 끼우고, 민준과 예지는 조심스럽게 모래사장으로 발을 내디뎠다. 10년 만에 느껴보는 바닷가 모래의 감촉은 너무나도 생생했다. 발바닥으로 전해지는 까끌까끌하고 부드러운 모래의 느낌, 따뜻한 햇살에 데워진 온기. VR 속에서는 느낄 수 없었던, 현실의 생생한 감각이었다.

파도가 발목을 간지럽히자 민준은 환한 미소를 지었다. 차가운 바닷물이 피부에 닿는 감각, 파도가 밀려왔다 사라지는 소리. 예지 또한 바닷물에 몸을 맡기고 파도에 흔들렸다. 튜브가 그녀의 몸을 안정적으로 지탱해 주었다.

오랜만에 릴렉스하는 시간이었다. 현실의 고통과 좌절은 잠시 잊고, 그들은 바닷물의 감촉과 파도 소리를 온몸으로 만끽했다. 어쩌면 이 바닷가에서만은, 그들이 잃어버린 모든 것을 잠시나마 잊고, 순수한 어린 시절로 돌아갈 수 있을 것 같았다.

바닷가에서 한참을 놀던 민준과 예지. 파도에 몸을 맡기고 튜브에 의지해 떠다니며, 그들은 오랜만에 현실의 감각을 만끽했다. 따뜻한 햇살과 시원한 바닷바람, 그리고 물결의 흔들림. 모든 것이 그들에게는 새롭고 경이로웠다.

그러던 둘이 모래사장으로 나와 튜브를 벗었을 때였다. 그들의 근처에서 모래놀이를 하던 두 아이가 민준과 예지를 발견하고 다가왔다. 얼핏 보아도 자신들과 동갑내기 정도로 보이는 또래 아이들이었다. 남자아이와 여자아이. 그들은 해맑은 얼굴로 민준과 예지를 바라보았다.

"너희 쌍둥이야? 옷도 똑같고 완전 닮았네!" 남자아이가 순수한 호기심 가득한 눈으로 물었다.

한편 대응되는 영문은 이렇다:

With the tubes around their waists, Minjun and Yeji carefully stepped onto the sand. The sensation, felt for the first time in ten years, was incredibly vivid. The coarse but soft feel of the sand under their feet, warmed by the sun. These were real, vivid sensations they couldn't experience in VR.

When the waves tickled his ankles, Minjun smiled brightly. The feeling of cold seawater on his skin, the sound of the waves rolling in and out. Yeji also surrendered her body to the water, letting the waves rock her as the tube held her steady.

It was a long-overdue moment of relaxation. Forgetting the pain and frustration of reality, they savored the feel of the water and the sound of the waves. Perhaps, just here at the beach, they could forget everything they had lost and return to an innocent childhood.

Minjun and Yeji played at the beach for a long time. Carried by the waves, floating on their tubes, they relished the sensations of reality. The warm sun, the cool sea breeze, the rocking of the water—everything was new and wondrous.

It was when they came out to the sand and took off their tubes that two children playing nearby spotted them and approached. They looked to be about the same age—a boy and a girl—and they looked at Minjun and Yeji with bright, innocent faces.

"Are you two twins? You look exactly alike!" the boy asked, his eyes full of pure curiosity.

1

KT망 알뜰폰 유심으로 중고 KT 에그2 기기 돌리기 실험 및 관련 정보 추가 정리.

(1) 알고보니 제가 올해 SKT 데이터쉐어링 유심을 "2회선" 개통했더군요. 그래서 이번에 KB Liiv M 1회선 개통할 여유가 있었고, 이를 전부 소진하였으므로 KB Liiv M 데이터쉐어링 회선 개통은 불가능한 것이었습니다.

(2) 180일 내 모든 통신사를 합쳐 내국인이 3회선 초과하여 신규가입하지 못하게 한 규정을 우회할 방법이 정말 없는가... 고민이 되는데요. 이것도 떠오른 방법이 하나 있어서 시험해 볼 생각입니다. 잘못되면 얼마나 복잡한 문제에 놓일지는 아직 잘 모르겠지만.

(3) CJ 헬로모바일 KT회선 알뜰폰도 에그 공기계 내에서는 유심 전화번호가 잘 뜨는 것을 확인했습니다. 똑같이 "기기인증실패"로 실패하는군요.

(4) 그럼 이제 새로운 추가실험을 해 볼 건데요. 하나는 SKT 데이터쉐어링 회선 1개를 (?) KB Liiv M 데이터쉐어링 회선으로 (??) 번호이전을 하는 것입니다. 이게 된다면 정말 이상할 거 같긴 한데, 밑져야 본전이니까...

(5) 한편, 내 회선 개통정보 조회는 credit.or.kr 에서 할 수 있다고는 하는데. 모바일기기만으로 접근을 시도하려니 영 잘 안 되어서, PASS 앱을 통해 접근해 보았습니다... ...만 PASS 앱에서는 오전 9시 ~ 오후 8시 사이에만 조회가 가능하고 (??) 정작 가입일자를 안 알려줍니다.

180일 제한이 언제 풀릴지를 알아야 하겠는데, 쉽지 않군요!

1

번아웃으로 아직 고생하는 가운데, 갑자기 삘이 와서 지난 1주간 170쪽짜리 소설을 Gemini로 써 버렸다. 소재가 너무 잔혹해서 (R-18G 수준) 그대로 공개하기에는 꺼려진다는 문제가 있을 뿐; 줄거리 자체는 내가 예상한 것 이상으로 잘 나왔는데 퇴고를 열심히 해서 그런 것 같다. 구체적으로 어떻게 된 거냐 하면,

  1. Gemini 2.5 Flash로 짧은 초안 작성 (1판)
  2. 이 초안의 중간 즈음에서 두 개의 새 줄거리를 만들어서 전체 줄거리 수가 3개가 됨
  3. 이대로는 안되겠다 싶어서 Flash의 제안을 일부 받아 들여 줄거리를 하나로 재조정 (2판)
  4. 이 시점에서 Gemini 2.5 Pro한테 평가를 부탁하고, 평가 내용을 다시 Flash에게 되먹여서 액션 아이템을 만들어 퇴고를 반복 (3~7판)
  5. 이 참에 번역도 맡겨야지 싶어서 Flash한테 먼저 초벌 번역을 시킴 (번역 1판)
  6. 초벌 번역을 Pro한테 주고 고쳐야 하는 부분을 그 이유와 함께 나열하게 함
  7. Flash한테 수정된 번역과 수정한 이유들을 주고 판단하게 시킨 다음 최종 번역본을 완성 (번역 2판)
  8. 마지막으로 Pro한테 전체 번역문을 주고 전체 번역 안에서의 일관성이 깨진 게 있는지 확인

이랬는데, 가장 곤란했던 건 역시 4였다. 왜냐하면 내용이 너무 길어서 텍스트 창에는 한 번에 안 들어가고(...), 잘라서 넣으면 이제 뭔 짓을 해도 앞부분을 까먹어 버렸기 때문이다. 최종적으로 동작한 방법은 소설을 최대 32KB 크기가 되도록 쪼갠 뒤 파일로 나눠어 업로드하고, 업로드가 끝난 뒤에 몇장까지 있는지 확인하고 뒤가 잘린 문장이 있는지 확인해서 뭔가 문제가 있으면 평가를 하지 않고 멈추라고 지시한 것. 혹시 이런 일 해야 하는 분은 참고하시길.

...뭐 이렇게 말하긴 했는데 사실 Flash한테 글 쓰기는 다 맡겼지만 세부적으로는 상당히 손을 많이 거쳤다. 한국어나 영어 번역이나 둘 다 그랬음. 나름 노력한 것도 있고 이 전체 내용을 다시 Flash한테 되먹였더니 찬사 일색(!!!!!)이라 진짠가 싶어서 어디 올려야 할 것 같긴 한데 소재가 소재다 보니 공개도 간단하지 않다는 게 곤란하다. 호옥시 관심 있으신 분께서는 메일로 pdf 파일을 보내 드리겠습니다.

소설 "싱크로니시티"의 한국어판 목차. 이하 다음과 같은 내용임:

싱크로니시티 Synchronicity
2025-06-22T00Z (7.4판), Gemini 2.5 Flash를 이용해 작성됨

프롤로그 - 2
1: 마리오네트 Marionette - 3
2: 태동 Genesis - 7
3: 틀 Frame - 13
4: 수치 Shame - 23
5: 목격 Witness - 37
6: 고난 Ordeal - 50
7: 울림 Resound - 65
8: 결점 Flaw - 73
9: 촉매 Catalyst - 82
10: 개조 Augment - 90
11: 의식 Ritual - 102
12: 쇼 Show - 108
13: 갈채 Acclaim - 117
14: 욕구 Desire - 130
15: 목도 Encounter - 141
16: 이미지 Image - 147
17: 진화 Evolution - 158
에필로그 - 163
'작가'의 변 - 164
작가의 변 - 166
'서평' - 170
4

새로 마련한 중고 KT 5G Egg 2(MKL-E1100K)에게 Liiv 모바일 알뜰폰 유심 심어보기 실험은, 일단 절반의 실패로 추가실험을 준비중입니다.

  1. Liiv 모바일의 "무제한 요금제"는 스마트폰을 위한 요금제여서 Egg 같은 테더링용 기기에는 쓸 수 없다는 것을 알게 되었습니다. 어떻게 알게 되었느냐... 개통 시도한 Liiv 모바일 USIM을 Egg 에게 끼워보니 "기기인증실패"라는 특이한 메시지가 떴고, 같은 USIM을 아이폰에 끼웠더니 정상 동작했고, Liiv 모바일 앱에서 "기기등록"이라는 메뉴를 찾아 IMEI 입력을 시도해본 결과. '해당 요금제는 스마트폰만 가능하다'는 취지의 메시지.

  2. 그렇다면 '데이터쉐어링' 요금제를 추가로 가입하면 어떨까 생각했는데... '내국인은 180일 이내 3회선 이상 스마트폰 개통이 제한된다'는 오류메시지로 가입에 실패했습니다. (?!)

사실 제가 이런 저런 복잡한 사연으로 3달쯤 전에 SKT 데이터쉐어링 유심을 3개 정도 개통했었는데. 그것 때문인지, 아니면 알뜰폰 회선 자체를 제가 3회선을 갖고 있어서(U+ U모바일 1회선, CJ 헬로모바일 1회선...)인지는 잘 모르겠습니다. 시간 날 때 오류 메시지를 다시 천천히 살펴보아야겠는데 캡쳐는 했는가...

  1. 그렇다면 태블릿등 기기용 요금제로 전환하면 되겠다 생각해봤는데, 이런. 요금제 변경은 매월 1회만 가능하다는 이유로 실패했습니다.

  2. 신기한 것은 SKT 데이터쉐어링 유심이나 LG U+ 알뜰폰 유심을 Egg 에 심었을 때, "기기등록실패"가 아닌 다른 오류메시지가 떴다는 것인데요.

리브모바일 유심을 넣었을 땐 유심에서 번호 자체를 못 가져오는 상황과 달리... SKT 유심을 넣었을 땐 둘 다 USIM으로부터 스마트폰 번호는 잘 읽어오는 광경(!)을 볼 수 있었습니다.

//////

두 가지 실험을 해볼 수 있겠습니다. 하나는 이 유심의 요금제를 태블릿등 스마트기기용 요금제로 바꿔보는 것(7월 1일쯤에나 해볼 수 있겠군요), 다른 하나는 고객센터에 전화해서 데이터쉐어링 요금제 가입이 정말 불가능한지 알아보는 것.

보이스피싱범죄 등에 악용되는 문제 때문에 회선 개통에 제약을 두는 제도가 존재할 것으로 생각되긴 합니다. (SKT 데이터쉐어링 유심을 추가 발급할 때 안내받았던 사항입니다.)

적다 보니, CJ 헬로모바일 KT회선 알뜰폰 유심도 에그에 넣어봐야겠다 싶네요.

1

코드에디터의 탐색기 동작을 이렇게 개선하면 좋겠다.

지금 큰 프로젝트에서 이파일 저파일 돌아다니다보면 너무 많은 디렉토리들이 expand되어서 필요한 디렉토리를 찾는게 어려워진다. 이때 expand되어 있는 디렉토리중에, 직접 탐색기안에서 찾아서 들어간 경우가 있고, Go to Definition나 방금 닫은 창 다시 열기 등의 간접적인 방법으로 expand된 경우가 있다. 후자의 간접적인 방식으로 열린 파일이 닫혔을때 이로 인해 열린 디렉토리 중 전자의 방식으로 열리지 않은 것을 자동으로 닫아줬으면 좋겠다. 일종의 가비지 컬렉트?

...인데 https://github.com/microsoft/vscode/issues/150869 똑같은 제안이 있었는데 업보트가 부족해서 나가리됐구나ㅠ

2
12
0
0

나는 X11 규격이 너무 오래된 나머지 HDR조차 안되어서 웨이랜드 써야 하는건 아는데

그래도 난 X11 위에서 돌아가는 소프트웨어가 좋단 말이지
어짜피 웨이랜드 가봤자 커널에 소프트웨어가 직접 쓰루해서 디바이스 조작하는건 똑같고

오히려 X11보다 그래픽 드라이버가 불안정할때도 많고
데스크탑 환경 표준에 대해서 완전히 환경이 달라지고
이 구성 요소 자체도 이전 스택과 너무 많이 달라져서
걱정이 매우 크다

개인적으로 X11에서 모토로 삼는 X 서버에서 윈도우의 프레임을 라우팅하고 X 서버에서 프레임버퍼를 전부 관리해서 한 곳에서 중앙집중 관리하고 원격 접속이라던가 유연성을 추구할수 있는 아키텍쳐라서 좋아하는데

웨이랜드는 그런게 없이 컴포지터가 윈도우 매니징이랑 온갖 서브시스템을 제어하고 프레임 버퍼 관리와 유연성도 떨어져서 또 ad-hoc 서브시스템을 붙여야 해서 많이 안좋아함

0

오늘 발견한 흥미로운 링크들: Matt 타입스크립트 선생님은 종종 Effect 에 대해 트윗하는데 주로 이펙트를 찍먹해보시고 이걸 강의로 만들까말까 만들까말까 하신다. Michael EffectTS 의 BDFL 은 종종 맷 선생의 트윗에 답글을 달아 이펙트 얘기를 풍부하게 가꿔주신다.

오늘은 이펙트의 굿파츠에 대한 얘기로 스레드가 열렸다. https://x.com/mattpocockuk/status/1936083553483157714

나도 EffectTS 도입을 하고 싶지만 여러모로 기존 바닐라JS 스펙과 다른 모양의 코드가 나와서 여러모로 망설이고 있다. (내 기준 이펙트는 실행 코드를 작성하기 보다 실행 계획을 작성하는 개념으로 접근하고 있다) 프로덕션 코드를 새로 만든다면 EffectTS 도입을 고려하고 있지만 학습 난의도가 있어 이를 위해 함께 스터디하고 코드 마이그레이션 계획도 세워야하는데, 그럴 여유는 보통 없는게 현실.

아직은 neverthrow 부터 사용해보는 정도가 지금의 최선이라고 생각한다. 나는 throw 기반의 조건 제어 코드가 불편하다. try catch 안에서 if 절로 throw 하는 코드를 볼 때마다 불만이다. 복구할 수 있는 에러는 throw 하지 않는게 옳다고 생각한다. 물론 언어의 문제도 있지만... 그렇게 스레드를 읽던 중 effectively 라는 애매한 이름의 Alegbraic effects 를 구현한 라이브러리가 공개되어 있다는 것을 발견했다. 작성자 본인도 뻔뻔하게 홍보한다고 어필하고 있다. ;) effectively

EffectTS 라는 이름도 애매하지만 Effectively 는 더 애매하다. 인기가 많아지기 전에 그럴듯 한 이름으로 브랜딩되면 좋겠다. 아, 그렇게 생각하는 이유는 TS 씬에 이런 라이브러리/프레임워크가 자주 거론되면 좋겠다는 생각 때문이다.

얘기하고 싶은 것은, 아이러니하게 이 effectively 의 readme 가 매우 간결하고 읽기 쉽게 EffectTS 에 대해 소개하고 있기 때문이다. effect.website 의 문서는 뭔가 개선이 필요하다. 없는게 없이 다 있지만 실제 읽다보면 어려운 부분이 많고 더 많은 설명이나 예제가 필요한 경우가 생긴다. 미카엘 본인도 문서 개선 필요는 공감하는 것 같다. (해당 스레드 발언 추정) 그리고 또 다른 유저가 포스트를 안내해주셨는데, Effect-like code without Effect 짧게 읽기 좋다. 게다가 이 포스트가 담긴 사이트의 프로덕트도 유용해 보인다.

시작부터 Result 나 Optional 을 제공하는 언어가 많은 소프트웨어 엔지니어들에게 높은 선호도를 가지는 이유가 있다고 본다.

5

@bglbgl gwyng 역시 아무래도 1이 제일 큰 것 같고, 3의 경우엔 제가 tree-sitter를 쓰기보다는 parser-combinator로 하나하나 짜다 보니 생각을 못했네요. 2도 있으면 매우 편리하지만 critical하지는 않다는 점 동의합니다. TS에서 HKT를 지원...했었나요? 스테로이드라고 한다면 fp-ts 같은 라이브러리를 말하는 걸까요?

2

@d01c2Hyunjoon Kim 1. ADT 지원 여부 2. HKT 지원 여부 3. (장난감 언어 개발이 아닌 툴링도 제대로 다 만드는 시도에서) tree-sitter 바인딩 유무

1 >> 3 >> 2 정도로 중요한거 같네요. 러스트는 1, 3이 있어서 부럽고 하스켈엔 3이 없어서 제가 야크셰이빙하는 중입니다. 타스에 스테로이드 먹이면 1, 2, 3 다 되지 않나요?

@bglbgl gwyng 역시 아무래도 1이 제일 큰 것 같고, 3의 경우엔 제가 tree-sitter를 쓰기보다는 parser-combinator로 하나하나 짜다 보니 생각을 못했네요. 2도 있으면 매우 편리하지만 critical하지는 않다는 점 동의합니다. TS에서 HKT를 지원...했었나요? 스테로이드라고 한다면 fp-ts 같은 라이브러리를 말하는 걸까요?

1

타스나 러스트로도 구현을 해보긴 했는데 영... 러스트로 구현하는 사람들도 많은 걸 봐서 러스트는 skill-issue일 확률이 있지만, 타스는 미묘하게 아쉬운 부분이 계속 있는데 그건 아마 static typing이 아니라서일거야

@d01c2Hyunjoon Kim 1. ADT 지원 여부 2. HKT 지원 여부 3. (장난감 언어 개발이 아닌 툴링도 제대로 다 만드는 시도에서) tree-sitter 바인딩 유무

1 >> 3 >> 2 정도로 중요한거 같네요. 러스트는 1, 3이 있어서 부럽고 하스켈엔 3이 없어서 제가 야크셰이빙하는 중입니다. 타스에 스테로이드 먹이면 1, 2, 3 다 되지 않나요?

1

언어 구현을 하는 데에 최고의 언어는 뭘까... 예전엔 OCaml이라고 생각했었고 요즘은 Scala가 최고라고 생각하고 있기는 한데, 더 나은 대안 언어는 없을까? 탈JVM이 하고 싶다 (그렇다고 Scala Native는 아닙니다 진짜...)

3
4

내가 Git 쓰다가 왕대빵 커밋 똥히스토리 남기는 전형적인 패턴이다.

  1. 간단한 기능 A를 추가하려고 한다.
  2. A를 추가하려면 기존의 설계 B를 고쳐야한단걸 깨닫는다.
  3. B를 고친다.
  4. A를 추가한다.

이렇게 3, 4의 변경이 한데 들어가 있는 무근본 커밋이 탄생한다. 2 -> 3 사이에 stash를 하면 간단히 해결되는 문젠데 매번 까먹고 실천을 못한다.

5

@hongminhee洪 民憙 (Hong Minhee) 넵 아무래도 nginx로는 기존에 lua로 스크립팅을 많이해서 좀 덜 알려진거같고, 주력으로 밀지는 않는거같아요. 공식 문서도 deprecated 상태인것도 있을정도고... QuickJS 들어오기 전까지는 ES6도 부분적 지원만 하기도 해서요.

하지만 외부 라이브러리도 적당히 번들링하고 import 하면 되니 어떻게든 문제되는 부분만 간단하게 해치우고 십수년 전통의 다른 부분(리버스 프록시 등등)은 의존하고 싶을때는 이만한게 없는거같아요. 물론 lua나 OpenResty가 있긴 하지만 npm의 존재가 무시하기 힘들더군요… 마침 저는 grafana의 lezer-logql(파서)을 썼어야 했어서요.

2

QuickJS 개발자가 만든 옛 작품으로는
QEMU가 있고 TinyCC라는 C 컴피일러가 있으며
자바스크립트로 Pure 8086 에뮬레이터와
FFmpeg를 개발한 적이 있습니다

C 골프 코딩 대회에서 3번이나 우승하고
파이 소숫점 계산 대회에서 알고리즘 연구로 우승을 거머쥔 적이 있는 사람입니다

사람이 아니라는 뜻입니다

6
4
6

Nginx의 njs에 QuickJS 엔진 추가되니 기능이나 문법 제약도 거의 없어서 출근해서 해볼 성능 테스트만 제대로 되면 좀 복잡한 로직 필요한 리버스 프록시는 이걸로만 짤거같음. JS모듈들 대충 번들로 만들고 import해서 다 쓸수 있어서...

0
4
2
4
7
3

오늘은 projects.org 파일에서 내 노트 중 프로젝트를 찾아 리스트로 띄워주도록 스크립트를 짰다. org agenda도 좋던데 기능이 풍부해서 익히기 어려워서, 내가 신경쓰고 싶은 기능만 작게 만들었다.

org는 주피터 노트북이나 엘릭서 라이브북처럼 실행 스크립트를 파일 내에 넣어버릴 수 있고, 접어서 깔끔하게 결과만 볼 수 있어서 좋다.

projects.org 파일의 모습. SRC 블록은 접혀있고, 진행중, 완료, 폐기된 프로젝트들이 리스트업되어있다.SRC BLOCK을 펼친 모습. 프로젝트 목록을 뽑아내기 위한 Elisp 스크립트가 담겨있다.
3
3

WSL 및 WSL 2를 사용할 수 없는 Windows 환경에서 Linux 대응 Docker container 생성 및 정상 작동 여부 점검을 하려면 어떻게 해야 할까요?

문득. 사용중인 OS가 Windows Home 에디션이 아닌 Pro 라는 걸 떠올렸습니다. 아, 그럼 Hyper-V도 사용 금지일까 싶어 확인해보니. Hyper-V는 정상(?)적으로 작동합니다.

아직 Secure Boot 관련 옵션이 잘 이해되지는 않고, GPU 패쓰쓰루 같은 게 가능할지도 자신이 없지만 (내장그래픽 없이 NVIDIA GPU 1개만 있는 환경이라 괜히 잘못 건드리면 디스플레이만 날아가는 대참사가 염려되지만) 일단 컨테이너를 생성하고 실행하는 일 자체는 꽤 가능해질 거 같은 좋은 예감이 드네요.

어차피 GPU 패쓰쓰루 없이도 Windows 환경의 Ollama 에게 연결만 된다면 되는 거니까.

Windows Sandbox 이후로 Hyper-V를 꺼내보는 건 무척 오랜만이네요. 특이한 제약조건에서 특이한 문제들을 풀어보는 경험이 언젠간 큰 틀에서 다 도움이 되기를...

2

프로젝트 여러개 동시에 작업할 일이 있어서 Claude Code를 동시에 여러개 돌려야 하는데, 한 화면에서 볼 수 있는 괜찮은 멀티플렉서가 뭐가 있을까 하고 찾아봤는데.... zellij가 제 몫을 하는 것 같다.

사용방법이 어려울 줄 알고 쫄아서 시도 조차를 안했었는데, 화면 최하단에 어떤 단축키를 쓰면 어떤 동작이 일어난다고 친절하게 명시되어 있어서 진입장벽도 그렇게 있지는 않은듯....?

프로젝트별로 다른 pane으로 분리해서 각각 독립적으로 실행되는 Claude Code 에이전트를 굴리는 모습이다.
4

두달내내 발표자료를 깎지 않을까.. 싶네요.. 파이콘(세션 발표, 커뮤니티 소개 발표) / 우부콘(세션 2개) / 모각작모임 라이트닝 토크. 요렇게 5개를 준비하게 생겼습니다.

전반적으로 내용은 얼추 완성이 되긴 했는데, 피그마로 만들었던 자료를 구글 슬라이드 기반의 템플릿으로 하나하나 다 옮겨야 함...

그리고 Claude Code로 실험을 좀 많이 하게 될 것 같아요

6

Zed는 아직 쓰지도 않는데도 요즘 보기드문 장인정신이 느껴지는 소프트웨어라 호감이 간다. 지금 쓰고있는 Windsurf는 VS Code 포크떠서 AI 채팅만 추가했는데 하루에 3번 터져서 에디터를 재시작해야한다(AI 채팅 패널이 터지는거라 VS Code가 아닌 Windsurf 문제로 보임). 5조 투자받은건 어따썼니??

5
2

# Ask Hackers Pub : 이번 주말에 뭐 하시나요?

이번 주말에 뭘 하려고 계획 중인지 편하게 얘기해 보아요.
읽을 책, 가볼 곳, 해볼 것.. 어떤 것이든 좋습니다.
도움 요청이나 피드백 요청도 좋습니다.
물론! 아무것도 하지 않고 쉬는 것도 훌륭합니다.

* 지난 주말에 계획하셨던 일의 회고도 한 번 남겨보면 좋을 것 같아요.

1

E2EE (단대단 암호화)가 들어간 블루스카이 비밀글 서비스는 어떨까요.... 서버에서도 내용을 읽을 수 없고, 당사자들만 읽을 수 있어요

그리고 약간 기존 트위터 비계처럼, 허가/거절 방식으로 팔로워를 받아요.

E2EE라 (정확히는 구현된 방법때문에) 누구누구 선택해서 그 사람들한테만 공개되게 할 수 있어요.

아 대신에, 회원가입때 비밀번호를 만드셔야하고, 로그인할 때도 치셔야해요. (마스터 키) 백업 키는 제공해드려요.

3

@hongminhee洪 民憙 (Hong Minhee) そのあたりは過去に検証したのか忘れたんですけど、単純にpyldがアクティブにメンテナンスされてなかったのと(現状は1年近くmasterにコミットがない、rdflibもJSON-LDは処理できるもののそちらは試していない)、エラーを吐き出して正常に処理できないみたいな理由だった気がします🤔 (後者に関しては実際そうだったかは覚えてないので後で試してみます)

パフォーマンスは多分関係ないと思いますけど、試しに組み込んでみて許容できないレベルまで低下するようなら今後も避けるかもしれないです

1