Profile img

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at @hongminhee洪 民憙 (Hong Minhee).

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은: @hongminhee洪 民憙 (Hong Minhee).

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「@hongminhee洪 民憙 (Hong Minhee)」に。

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

洪 民憙 (Hong Minhee) shared the below article:

vim popup으로 floating window를 사용해보자

이광효 @widehyo@hackers.pub

Vim 8 이상에서 제공하는 `popup` 기능을 활용하여 플로팅 윈도우를 만드는 방법을 소개합니다. 특히 `popup_menu()`를 사용하여 리스트를 팝업 메뉴로 표시하고, `callback` 함수로 팝업 종료 동작을 변경하거나 `filter`를 통해 키 입력을 제어하는 방법을 설명합니다. Less 바인딩, visual mode, yank 기능을 포함한 `filter` 예시를 통해 `echomsg` 디버깅 내용을 쉽게 복사할 수 있도록 합니다. 또한, Ex 명령어나 시스템 명령의 결과를 플로팅 윈도우에서 편리하게 확인하는 함수를 제시하고, 자주 사용하는 명령에 대한 키 매핑 설정 방법을 안내합니다. Neovim에서는 플로팅 윈도우를 더 편리하게 사용할 수 있으며, Lua 스크립트를 통해 동일한 기능을 구현하는 방법을 소개합니다. 이를 통해 Vim과 Neovim에서 플로팅 윈도우를 활용하여 작업 효율성을 높일 수 있습니다.

Read more →
2

洪 民憙 (Hong Minhee) shared the below article:

NFA를 이용한 정규표현식 구현

이광효 @widehyo@hackers.pub

이 글은 톰슨의 구성을 사용하여 정규표현식을 구현하는 과정을 상세히 설명합니다. 정규표현식을 후위표현식으로 변환하고, 이를 바탕으로 NFA(Non-deterministic Finite Automata) state diagram을 만드는 핵심 단계를 다룹니다. Aho-corasick 알고리즘과의 유사점을 언급하며, tri 구조에서 state diagram으로의 발전된 자료 구조 사용을 강조합니다. 코드 예시와 함께 `split` 및 `match` 노드를 포함한 special node와 정규표현식 operator에 대응하는 NFA fragment를 시각적으로 제시하여 이해를 돕습니다. 특히, 파이썬으로 구현된 `post2nfa` 함수는 후위표현식을 state로 변환하는 방법을 설명하며, `re2post` 함수는 정규표현식을 후위표현식으로 변환하는 과정을 상세히 다룹니다. 마지막으로, graphviz를 사용하여 NFA diagram을 시각화하는 방법을 제시하며, 실제 정규표현식 예제에 대한 결과물을 제공합니다. 이 글을 통해 독자는 정규표현식 엔진의 핵심 원리를 이해하고, NFA를 이용한 패턴 매칭 구현에 대한 깊이 있는 통찰력을 얻을 수 있습니다.

Read more →
2

洪 民憙 (Hong Minhee) shared the below article:

functools.partial 구현기 (using awk)

이광효 @widehyo@hackers.pub

이 글은 `awk` 언어의 제약 사항을 극복하고 `functools.partial`과 유사한 기능을 구현하는 과정을 상세히 설명합니다. `awk`는 자료형, 함수, 변수 등 여러 면에서 제약이 많지만, 문자열 처리와 associative array를 활용하여 이를 극복합니다. 특히, 함수 시그니처를 문자열로 저장하고, global table을 이용하여 함수의 binding 정보를 관리하는 방식이 핵심입니다. `gawk`의 `@fn` 문법을 활용하여 함수 간접 호출을 구현하고, 런타임에서 필요한 정보를 담은 global variable을 직접 만들어 `functools.partial`의 기능을 흉내 냅니다. 이 글은 `awk`의 제약 속에서 창의적인 해결책을 찾아 함수형 프로그래밍의 가능성을 탐색하는 과정을 보여주며, `awk`에 대한 깊이 있는 이해와 응용력을 높이는 데 기여합니다.

Read more →
1

초등학교 5학년 때? 6학년 때? 아니면 중학생 때? 무슨 컴퓨터 대회를 나갔는데 장소는 어느 학교 과학실이었고, 컴퓨터를 가져와야 했다. 그때나 지금이나 우리 집에는 차가 없었고, 노트북은 다른 사람들은 들고 온 것 같기도 한데 아무튼 흔하진 않았다. 온 가족이 CRT 모니터랑 본체 끌어안고 키보드 마우스 챙기고 케이블 빠진 거 없는지 확인하고… 그렇게 택시를 타고 시험장으로 가서 시험을 보고, 다시 다 분해해서 택시를 타고 집에 돌아왔다. 그래도 그게 나았던 기억이 난다. 어떤 시험은 어느 학교 컴퓨터실에서 거기 있는 컴퓨터를 썼는데, 소프트웨어가 제대로 실행되지 않았는데 자리를 바꿔달라고 말해야 하는지도 몰라서 대충 제대로 하지도 못하고 나왔던 기억이 나서.

4

옛날에는 KOI(한국정보올림피아드) 경시부문 지역대회 참가자가 자신의 컴퓨터와 모니터를 대회장으로 가져가야 하는 시대가 있었답니다. 플로피 디스켓에 코드를 저장해서 제출하던 시절이죠. 그 시절에 참 별별 일이 다 있었는데.

어느 해 서울대회 때 대상을 받은 분께 언론기사 보도용 사진 촬영 협조(??)를 위해 제 자리를 빌려드려야 했죠. 그러니까, 제가 대회 참석을 위해 가져간 모니터가 꽤 사진빨이 잘 받다보니, 언론사에서 저에게 자리를 빌려달라고 요청했던 겁니다.

다음날 신문에 나온 제 모니터와 컴퓨터, 그리고 낯선 대상 수상자의 얼굴을 보면서 살짝 금이 간 저의 동심. 그렇게 초등학교 5학년의 소년은 어떻게든 정보올림피아드 경시대회를 접수하겠다는 마음을 먹게 되고,

그렇게 세월이 흐르며... 훗날 소년은...

단 한 번도 경시대회 대상을 받거나 국가대표 후보 교육과정에도 진입하지 못했지만-

직업인으로 12년차, 어린 시절의 취미 개발을 포함하면 20여 년차 개발자로 오늘도 개발개발!

5
8
3
0

早晩間(조만간) 블로그 글로 仔細(자세)히 풀겠지만, Fedify 프로젝트가 STF로부터 投資(투자)를 받게 되어, 제가 앞으로 () 一年(일년) 동안 Fedify 프로젝트에만 專念(전념)할 수 있게 되었습니다.

21
4
0

We're excited to announce that has been awarded a service agreement by the @sovtechfundSovereign Tech Agency! The Sovereign Tech Fund is investing €192,000 in Fedify's development over 2025–2026 to strengthen the fediverse ecosystem.

This investment will enable us to significantly expand Fedify's capabilities and make it easier for developers to build federated applications. The commissioned work focuses on improving developer experience, adding comprehensive debugging tools, and ensuring Fedify remains at the forefront of innovation.

Here are the key milestones we'll be delivering:

  • Web framework integrations: Official adapters for Next.js, Elysia, Fastify, and Koa, making it seamless to add federation to existing applications

  • ActivityPub debug & development tools: Real-time debug dashboard with WebSocket monitoring, federation lifecycle hooks, and implementation checklist CLI to make federation interactions transparent and debuggable

  • Storage & infrastructure enhancements: SQLiteKvStore for robust file-based storage across Node.js, Deno, and Bun, plus performance optimizations for production deployments

  • Comprehensive documentation & examples: Specialized tutorials for building federated blogs, social networks, and content platforms, with complete working examples and migration guides

  • Observability & monitoring: Full OpenTelemetry metrics, performance benchmarking tools, and federation health dashboards for production environments

  • Advanced features & standards: FEP-ef61 (Portable Objects) support and implementation of emerging Fediverse Enhancement Proposals to keep Fedify at the cutting edge

All developments will be open source and available for the entire community to use, contribute to, and build upon.

https://www.sovereign.tech/tech/fedify

7
13
3
4

Optiqueを見てて、ぼーっと今年のアドカレは各言語とメジャーなコマンドラインパーサー/パーサーコンビネータの組み合わせを比較してみようかなーなんて

1
2
2

Anyone have same errors Astro running in Bun?

I can't know how reproduce this...

Bun Canary v1.2.24-canary.26 (e3a1ae09) Windows x64
Windows v.win11_dt
CPU: sse42 avx avx2 avx512
Args: "node" "F:\amasecc\foxtail\node_modules\astro\astro.js" "dev"
Features: Bun.stderr(2) Bun.stdin(2) Bun.stdout(2) fetch(115) http_server jsc spawn(3) transpiler_cache(28) tsconfig process_dlopen(3)
Builtins: "bun:main" "node:assert" "node:async_hooks" "node:buffer" "node:child_process" "node:crypto" "node:dns" "node:events" "node:fs" "node:fs/promises" "node:http" "node:https" "node:module" "node:net" "node:os" "node:path" "node:perf_hooks" "node:process" "node:querystring" "node:readline" "node:stream" "node:tls" "node:tty" "node:url" "node:util" "node:vm" "node:zlib" "node:worker_threads" "ws" "node:v8" "node:http2"
Elapsed: 1791059ms | User: 47062ms | Sys: 25015ms
RSS: 1.45GB | Peak: 1.55GB | Commit: 1.41GB | Faults: 1572143 | Machine: 68.34GB

panic(main thread): Segmentation fault at address 0x2E
oh no: Bun has crashed. This indicates a bug in Bun, not your code.

To send a redacted crash report to Bun's team,
please file a GitHub issue using the link below:

 https://bun.report/1.2.24/wn2e3a1ae04gBugk0ggC228qyB+3p8wB__0omt2CA2A8C

error: script "dev" exited with code 3
1
1

해외리모트잡 페이가 국내에 비해 너무 좋길래, 주변에 어떻게 이럴수 있냐고 했더니 다들 너무 당연하게 국내 페이가 싸서라고 한다. 그리고 해외에서 한국 개발자 선호하는것도 그냥 단순히 싸고 가성비 좋아서라고 한다.

세계 10위권의 경제대국의 국민으로써 느낌이 좀 이상하다. 그러니까 나는 K-인도 개발자였구나..

10
2
4
1

최근 (오픈소스) 프로젝트 관련해서 종종 연락을 받고 있습니다. 대체로, 검토해보겠다던 기능이 추가되는데 왜이렇게 늦어지냐는 내용으로 추정됩니다.

추정인 이유는 건너서 들은 것도 있기 때문입니다.

제가 이 글을 올리는 이유는 상당히 험한 말도 나왔다는걸 전해 들었기 때문입니다.

저는 외부의 어떠한 보수도 받지 않고 혼자서 정규업무 외 시간에 제 프로젝트의 개선과 이슈사항을 해결하고 있습니다.

최근에 개인적 사유로 커밋 빈도가 줄었던 것은 맞지만 그럼에도 우선순위가 높은 작업은 너무 늦어지지 않도록 노력했습니다.

제 프로젝트로 구축 및 운영을 하시는 분들이 있다고 하니 늘 감사하게 생각합니다만, 저는 이 일을 보수를 받고 하지 않습니다.

혹여 답답하신 분이라면 깃허브에 올라와있는 제 프로젝트 내용물을 통채로 복사해서 전문 개발 업체에 커스터마이징을 맡기시길 바랍니다.

그렇게 나온 결과물에 대해선 독점권 행사도 무리없이 행사하실 수 있도록 적극적으로 돕겠습니다. 감사합니다.

9
1

이번 연휴 때 서울에서 모각작, 모각코 하실 파티를 만들어보려고 페북메신저 채널을 만들었습니다.! 파이브스팟이나 원루프사당을 쓸 것 같습니다.

https://m.me/cm/AbbiwdoizU4gxbqc/?send_source=cm:copy_invite_link

4
0
0
1
1

Optique 0.6.0 is adding shell completion! We already support:

  • Bash
  • zsh
  • fish
  • PowerShell

This covers most users, but should we add more niche shells? Your input helps us prioritize!

5
4

Looking at new Raspberry pi 500+, thought it's so cool, and saw flowy RGB LED then gasped. Who start to lead that trends/traditions/conventions?

1

news.hada.io/topic?id=23384

이글을 보면서 비슷한 생각을 함과 동시에, 이제 Code에 대한 버전관리가 아닌, 프롬프트에 대한 버전관리가 필요한 시점이 아닌가 하는 생각이 들었다.

결국 파악하려는건 설계자의 의도이고 기존 개발에 있어서는 개발문서 - 주석 - 코드 로 이어지는 형태가 되었는데, 현실적으로는 세 구성요소가 항상 동기화 되기 힘들기 때문에 코드를 이해하는 상황이 많았다.

하지만 모든 코드를 LLM을 통한 바이브 코드를 하고 해당 코드와 명령 프롬프트를 함께 버전관리를 한다면 오히려 위 사례의 동기화 문제를 해결할 수 있게 되지 않을까. 그리고 별도의 문서작업이 없이 개발에 대한 의도와 스팩이 코드의 버전과 함께 잘 관리된다면 그보다 더 좋은 건 없다고 생각한다.

1
1
3
1
1

@z9mb1wwj 일단 LLM과 AI 도구에는 언제나 hype이 가득해서 그대로 믿으면 안되는 것은 있지만, 지금 시점에서 Sonnet 4.5는 경쟁 모델이나 자사의 상위 모델보다도 에이전틱 코딩 등에서 더 좋은 벤치마크 결과를 내고 있어요. 그리고 Claude Code는 지금 시점에서 잘 만든 코딩 에이전트 중 하나구요.

전 사람들이 Claude와 Anthropic을 욕하는 이유가 초기보다 줄어든 Quota와 최근 일련의 성능 저하 이슈 등이 있다고 생각하는데, Sonnet 4.5는 가격이나 quota 아니면 속도 등에서 기존 Sonnet과 큰 차이가 없고 오히려 결과도 Opus보다 좋은 경우가 더 많아서 이러면 Quota 문제에 대해 기존보다 덜 스트레스를 받을 수 있다고 생각해요. 이제 Claude Code에 usage 커맨드도 들어가서 사용량 체크도 쉬워졌구요.

2
2
1

DB 책 보는데 논리학 기본 파트들을 쭉 훑어주길래 올만에 복습이나 할까 하면서 보고 있는데 문제는 영어 원어가 안 적혀져있고 다 번역어로만 적혀있어서 다시 역으로 번역하면서 보고 있음...정량자는 quantifier, 속박변수는 bound variable, 범용정량자는 universal quantifier 등등..이런 용어들 학교 다닐 때 형식 의미론 수업에서 영어로만 배웠지 (근데 그마저도 가르치는 교수가 막말로 더럽게 못 가르쳤음) 한국어로는 사실상 처음 보는 거라서 좀 헤매고 있다 😵‍💫

2

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

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

10
1
1
1

Claude Sonnet 4.5
------------------------------
- Claude Sonnet 4.5는 *코딩, 추론, 수학 능력* 에서 최고 수준의 성능을 보여주는 최신 AI 모델임
- 업데이트된
Claude Code 는 체크포인트, 개선된 터미널 UI, VS Code 확장, 메모리 관리 기능이 추가되어 복잡한 작업을 장시간 지속할 수 있음
- 새롭게 공개된
Claude Agent SDK 는 에이전트 개발을 위한…
------------------------------
https://news.hada.io/topic?id=23358&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

1
1

On the Claude API, we’ve added two new capabilities to build agents that handle long-running tasks without frequently hitting context limits:

- Context editing to automatically clear stale context
- The memory tool to store and consult information outside the context window

Claude Sonnet 4.5 is available everywhere today—on the Claude Developer Platform, natively and in Amazon Bedrock and Google Cloud's Vertex AI.

Pricing remains the same as Sonnet 4.

For more details: https://www.anthropic.com/news/claude-sonnet-4-5

1

TypeScript와 React에 File-based App 서버를 부착하여 단순하지만 완결성있는 풀 스택 개발 환경을 구축할 수 있습니다. 여기에 AGENTS.md 파일이나 mcp.json을 추가한다면 풀 스택 프로젝트에 바이브코딩까지 얹을 수 있겠습니다.

https://forum.dotnetdev.kr/t/typescript-react-file-based-app-c-api/13812

2
1

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

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

왜 TypeScript로 포팅했을까요?

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

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

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

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

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

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


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

8