CJS/ESM 문제를 한 번 밟으면 그날 하루는 순삭이다. 심지어 이 문제는 자바스크립트 생태계 전반에 광범위하게 걸쳐 있기 때문에 파악도, 해결도 쉽지 않다. require(esm)이 모든 걸 해결해줄 것이라고 생각했지만 갈 길이 멀다...

洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 905 following · 628 followers
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).
Fedify、Hollo、BotKit、そしてこのサイト、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
이제 왠만한 요구사항은 다 통과하는듯. 테스트 케이스 만드는게 가장 어렵다
@hongminhee洪 民憙 (Hong Minhee)
바로 이맛 아님니까 (별론데 손이감)
@woaol벨 이게 제일 빠르다니 저도 앞으로 이 방법을 쓸 것 같네요… ㅋㅋㅋ
올만에 컴파일러 lexical analysis 설명 읽으니깐 짱 재밌으면서도 동시에 쓰여진 코드도 이해하려고 하니깐 머리가 터질 것 같군...닝겐이 자연어를 처리하는 과정도 재밌는데 기계가 입력 기호들을 처리하는 걸 들여다볼 수 있다는 사실 그 자체가 되게 신기한 것 같다. 전자는 언어라는 추상적 정보를 뭉탱이로 있다가 유링게슝하게 여러 층위로 쪼개서 (예: 통사, 의미) 순차적 혹은 병렬적으로 처리한다는 게 재밌고 후자는 기호를 임의의 단위로 쪼개는 과정들을 구현 수준에서 디테일하게 볼 수 있다는 게 짱 신기하다...여튼 머리도 식힐 겸 운동하러 가야지.
LogTape 1.1.0 is out! This release brings “fingers crossed” logging—buffer debug logs quietly, then get the full context when errors occur. Plus a new emit()
API for integrating external log sources. Check it out:
LogTape 1.1.0: Smarter buffering, seamless integration

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape 1.1.0 introduces smarter and more flexible logging with two major features. The first is "fingers crossed" logging, which buffers debug and low-level logs in memory and only outputs them when an error occurs, providing a complete sequence of events leading up to the problem. Category isolation prevents one component's errors from flushing unrelated logs, keeping logs focused and relevant. The second feature is direct log emission via the `Logger.emit()` method, which allows feeding logs from external systems like Kafka directly into LogTape while preserving original timestamps and metadata. This release also includes bug fixes and improvements across the ecosystem, such as fixes for potential data loss during high-volume logging and improved cross-runtime compatibility. Upgrading to 1.1.0 is backward-compatible and enhances debugging in production by providing complete context for every error without constant verbose logging.
Read more →벤치마크를 돌려봤더니 실제로 .length = 0이 제일 빠르네요 😲 (← Firefox / Chromium →) jsben.ch/hyj65
@eatch.dev잇창명 EatChangmyeong💕 헛… 정말이군요… 감사합니다!
Claude에 따르면 대부분의 JavaScript 엔진에서 배열을 비울 때 a.length = 0
과 같이 대입하는 게 가장 빠르고 최적화가 잘 된다고 하는데, 이걸 믿어야 할 지 말아야 할 지… 이게 사실이라고 해도 참 답이 없다고 느낀다. 🤦
벤치마크를 돌려봤더니 실제로 .length = 0이 제일 빠르네요 😲 (← Firefox / Chromium →) jsben.ch/hyj65
Claude에 따르면 대부분의 JavaScript 엔진에서 배열을 비울 때 a.length = 0
과 같이 대입하는 게 가장 빠르고 최적화가 잘 된다고 하는데, 이걸 믿어야 할 지 말아야 할 지… 이게 사실이라고 해도 참 답이 없다고 느낀다. 🤦
크레덴셜 스캐닝 봇에 대항하는 법
location /.aws/credentials {
gzip_static always;
try_files 10gb_zipbomb.gz
}
소스코드 사이의 안정적인 하이퍼링크를 만들수 있는 기능이 없다. 가령 A.hs에서 주석을 쓰면서 B.hs의 foo
란 함수의 구현의 특정 부분을 언급하고자 할때, 그냥 B.hs L:77 이렇게, 소스코드가 수정이라도 되면 바로 유효하지 않게되는 방식으로 언급할수 밖에 없다. 만약 소스 코드 어디에서든 전역적인 심볼을 자유롭게 선언할 수 있다면 이 문제를 해결할 수 있을텐데...
@bglbgl gwyng 단순히 링크 용도로만 남겨두는 게 아니라 실행 흐름을 점프시키는 용도로도 활용하면 더 좋겠군요!
키워드는 jmp 아니면 goto로 하면 좋을 것 같습니다.
LWN.net의 What every programmer should know about memory 시리즈를 훑어 보고 나서 든 생각인데, 현대적인 컴퓨터의 메모리 모델이란 건 사용성 관점에서는 놀라울 정도로 투명하게 추상화되어 있으면서 동시에 성능 관점에서는 무시무시할 정도로 새는 부분이 많은 추상화인 것 같다.
인상깊었던 부분 중 하나는, 코드를 실행해 보기 전에는 완벽한 최적화가 사실상 불가능한 메모리 접근 패턴이 드물지 않게 발생할 수 있다는 건데, 이런 부분 때문에 JIT 컴파일러가 AOT 컴파일보다 잠재적으로 더 우수한 성능을 낼 수 있다는 주장이 있었던 걸까 싶다.
Git cherry-pick, git rebase 쓰면 뭔가 문제가 있다는 이상한 소리가 도는데,
음 git rebase 안 하고 지저분한채로 git send-email 하면 당신의 패치가 리젝 되기까지 5... 4... 3... 2...
Git에서 리베이스나 체리피킹 같은 거 쓰면 뭔가 이상한 거라는 주장이 있네… 음… 소프트웨어 개발에도 반지성주의 같은 게 있다고 봐도 될 것 같다.
@hongminhee@hackers.pub洪 民憙 (Hong Minhee) 반지성주의.. 저는 있다고 생각합니다
X에서 소프트웨어 공학적 담론을 보면 거의 항상 소프트웨어 개발이 언제나 잘 조직된 팀에 의해서 수행된다는 전제를 품고 있다. 어떤 기술을 과도하게 쓰면 조직이 일을 잘못하고 있다는 증거라고 주장하는 식이다. 그런데, 많은 오픈 소스 프로젝트를 포함해서, 세상에는 느슨하게 조직화된 팀에 의해 개발되는 경우도 아주 많다. 그런 경우에는 문제를 사람으로 푸는 것보다 기술과 도구로 푸는 게 더 나을 때도 많다.
Git에서 리베이스나 체리피킹 같은 거 쓰면 뭔가 이상한 거라는 주장이 있네… 음… 소프트웨어 개발에도 반지성주의 같은 게 있다고 봐도 될 것 같다.
모든 소프트웨어 개발이 조직화된 팀에 의해서 개발되는 건 아니라고요.
Git에서 리베이스나 체리피킹 같은 거 쓰면 뭔가 이상한 거라는 주장이 있네… 음… 소프트웨어 개발에도 반지성주의 같은 게 있다고 봐도 될 것 같다.
나는 괜히 위험하게 시리 GitHub PAT 토큰 넘겨주는 GitHub MCP 서버말고, gh cli 명령을 알잘딱 실행해주는 MCP 서버를 원한다.......... gh cli도 충분히 완성도 있고, 출력도 json으로 뽑히는 것도 나름 괜찮다. json 데이터 오가는걸로 잘 다듬으면 괜찮은 물건이 나올 것 같은데, 흠.
@kodingwarriorJaeyeol Lee 근데 보안 측면에서는
gh
CLI가 RESTful API랑 GraphQL API 접근이 가능해서 GitHub MCP랑 동치일 거예요. 오히려 GitHub MCP가 임의의 API 호출을 못 해서 보안 측면에서는 차라리 더 낫습니다.
TypeScriptの型推論を活用してCLIのバリデーションコードを削除できた話を書きました。「バリデーションせずパースせよ」(Parse, don't validate )の考え方をCLIパーサーに適用したOptiqueというライブラリを作った経緯について。
오버엔지니어링 본능을 억제하고 얌전히 파서 구현체 다듬는 중
@z9mb1wwj
@joonnotnotJoon 헐, 좋은 생각인데요. 이미지도 안 올리고, 타이포블루처럼 text-only로만 동작하게 하고, content warning/content 반드시 짝이 맞아야 하고 뭐 그렇게 설계하면 되긴 할지도
@kodingwarriorJaeyeol Lee
@z9mb1wwj
@joonnotnotJoon 인스턴스 도메인은 dadjokes.social 어떻습니까.
Andromeda라는 Rust로 만든 JavaScript/TypeScript 런타임이 있구나. 여러모로 초기 버전의 Deno가 떠오른다.
Wow, Optique—my type-safe combinatorial CLI parser for TypeScript—just crossed 300 stars! Thanks to everyone who's found it useful! ✨
@hongminhee洪 民憙 (Hong Minhee) 뮤트 기능 로드맵에 있나요?
@bglbgl gwyng 곧 만들어야겠군요. ㅋㅋㅋㅋ
@hongminhee洪 民憙 (Hong Minhee) 뮤트 기능 로드맵에 있나요?
소스코드 사이의 안정적인 하이퍼링크를 만들수 있는 기능이 없다. 가령 A.hs에서 주석을 쓰면서 B.hs의 foo
란 함수의 구현의 특정 부분을 언급하고자 할때, 그냥 B.hs L:77 이렇게, 소스코드가 수정이라도 되면 바로 유효하지 않게되는 방식으로 언급할수 밖에 없다. 만약 소스 코드 어디에서든 전역적인 심볼을 자유롭게 선언할 수 있다면 이 문제를 해결할 수 있을텐데...
〈타입 검사는 해결책이 아니라 증상이다〉(Type Checking is a Symptom, Not a Solution).
난 이 글에 동의하지 않는데, 여러 측면에서 그렇지만, 한 측면에만 집중해서 얘기해 보자면: 좋은 아키텍처는 훌륭한 프로그래머를 요구하지만 타입 시스템은 훌륭한 프로그래머를 요구하지 않기 때문이다.
누구나 훌륭한 프로그래머가 되어야만 하는가? 혹은 될 수 있는가? 좋은 아키텍처를 그릴 수 있는 훌륭한 프로그래머가 아니라면 소프트웨어 개발을 해서는 안 될까? 좋은 아키텍처에만 의존하는 것은 잠재적으로 엘리트주의를 끌어들이기 쉽다: 「어떤 시스템이 오작동하는 것은 아키텍처가 나쁘기 때문이다. 아키텍처가 나쁜 이유는 그걸 설계한 프로그래머가 수준 미달이기 때문이다」와 같이.
반면 타입 시스템은 일단 도입만 하면 누구나 그 덕을 볼 수 있다. 팀 내의 프로그래머들의 역량이 뛰어나든 뛰어나지 않든. 훨씬 평범한 보통 사람에게 유리하다. 타입 시스템이 미봉책일 수는 있지만, 그 미봉책이 더 많은 사람들을 프로젝트에 참여할 수 있게 해준다고 생각한다.
@hongminhee洪 民憙 (Hong Minhee) 글의 전체적인 논지가 일관되지 않은거 같습니다. '시간을 일급 개념으로 하자'는건 정말 200% 공감하는 얘긴데, 이건 또 그런 타입시스템을 만들잔 얘기란 말이죠. 응? 제 짐작으론, 저자는 타입 시스템 자체를 반대한다기 보다는, 현재 타입 시스템이 고도화 되는 방향인 더 강력한 추상화보다는, 물리 세계에서의 동작을 잘 묘사하는 쪽이 더 중요하다고 하는거 같습니다. 근데 제목에서 어그로를 살짝 끌어보려다가 글 전체가 좀 중구난방이 된 느낌입니다.
좀더 흥할까 싶어서 고양이로 비슷한 드립 짤을 만들어봤는데 전혀 안 흥함ㅠ
재열님의 배꼽 빠지는 유우머를 보니 저의 희대의 드립이 생각나는
재열님의 배꼽 빠지는 유우머를 보니 저의 희대의 드립이 생각나는
Deno 2.5 is out —
⭐ Permission sets in config
⭐ Setup and teardown APIs to Deno.test
⭐ HTML entrypoint support in deno bundle
⭐ Runtime API for deno bundle
Permission sets in config 필요하다고 생각했는데 나왔구나!
아파트 전기가 정전되면 집으로 들어오는 광케이블 신호도 나가서 UPS가 버텨 줘도 인터넷 안 되는 채로 서버만 켜져 있는 꼴이 되는데 좀 많이 애매한 것 같음
이번 주말에 해커스퍼블릭 밋업 간다 헤헷
해커스펍 오랜만에 다시 들어왔는데, 트위터보다 재밌네요.
sendActivity를 그냥 inbox URL만으로 하고 싶은데...
아아ㅡ 객체지향 쪽 면접을 준비하려면 트루쓰 쏘-셜에도 가입이 되어있는 극우기득권남성의 책을 바이블처럼 참조해서 봐야 한다니ㅡ
아아ㅡ 객체지향 쪽 면접을 준비하려면 트루쓰 쏘-셜에도 가입이 되어있는 극우기득권남성의 책을 바이블처럼 참조해서 봐야 한다니ㅡ
아예 .well-known/webfinger만 리다이렉트 걸어서 이메일 호스팅마냥 간단하게 커스텀 도메인 핸들을 주고 싶었는데 쉽지 않을 것 같다...
Actor의 uri 도메인과 웹핑거 핸들 도메인을 다르게 설정할 수 있는가?? (실행시켜본 건 아니고 코드만 봤을때) 마스토돈 - 일단 uri 도메인으로 웹핑거 쿼리를 때린 후 uri가 일치하면 된다 (그래서 여러 서버들이 uri 도메인을 같이 쓰는건 어려울듯...) 미스키 - 무조건 uri 도메인으로 넣어버리는 듯 하다...
아예 .well-known/webfinger만 리다이렉트 걸어서 이메일 호스팅마냥 간단하게 커스텀 도메인 핸들을 주고 싶었는데 쉽지 않을 것 같다...
Actor의 uri 도메인과 웹핑거 핸들 도메인을 다르게 설정할 수 있는가?? (실행시켜본 건 아니고 코드만 봤을때) 마스토돈 - 일단 uri 도메인으로 웹핑거 쿼리를 때린 후 uri가 일치하면 된다 (그래서 여러 서버들이 uri 도메인을 같이 쓰는건 어려울듯...) 미스키 - 무조건 uri 도메인으로 넣어버리는 듯 하다...
洪 民憙 (Hong Minhee) shared the below article:
자기소개

루 @roo_37@hackers.pub
연합우주에 첫 발을 내딛는 루/Roo입니다. SI 1년차 풀스택 웹 개발자로서 웹 개발 전반과 UI/UX, 접근성을 학습하며, DB와 데이터 엔지니어링에도 관심을 두고 있습니다. AI Vibe Coding, 설명 가능한 AI, AI 윤리와 같은 주제에도 흥미를 느끼며, Technical Writing, 번역, 다국어 처리에도 참여합니다. 취미로는 마작(작혼, 일번가, 천봉), 야구(삼성라이온즈), 닌텐도(피크민, 포켓몬), 만화/애니메이션 감상, 언어 공부(듀오링고 1880일), 별 보기, 풍경 사진 촬영, 동물 사랑 등이 있습니다. MBTI는 INFJ-T이며, 불안장애 및 우울증 치료 중입니다. 개발 이야기 외에 다양한 취미와 일상 이야기는 트위터(@Roo_star_)에서 만나볼 수 있습니다.
Read more →洪 民憙 (Hong Minhee) shared the below article:
헬: 하스켈 방언 기반의 셸 스크립팅 언어

박준규 @curry@hackers.pub
Chris Done이 개인적인 셸 스크립팅 용도로 만든 하스켈 방언 기반의 셸 스크립팅 언어인 헬(Hell)을 소개합니다. 저자는 bash의 난해한 문법과 서브 프로세스 의존성 등의 단점을 극복하고자 헬을 개발하게 되었습니다. 헬은 모듈, 패키지 시스템, 추상화 기능 없이 매우 기본적인 기능만을 제공하며, 하스켈의 장점(탄탄한 개념, 동시성, 가비지 컬렉션, 정적 타입 등)을 활용합니다. 헬은 기존 하스켈의 직관을 재사용하고, 안정성과 단순성을 추구하여 자동화 스크립팅에 적합하도록 설계되었습니다. 헬은 냉정하게 완결된 소프트웨어를 지향하며, 스크립팅의 한계를 명확히 정의하여 불필요한 기능 확장을 방지합니다. 릴리스 페이지에서 정적 링크된 리눅스 바이너리를 다운로드할 수 있으며, 구현에 대한 자세한 내용은 소개 슬라이드를 참고할 수 있습니다.
Read more →알아요 안다구요
@woaol벨 결국 그렇게 됐군요…
파서가 얼추 돌아가기 시작했다. 이제 최적화해야지
Macintosh HD ← もはや"Macintosh"でもなければハードディスクドライブでもない
〈타입 검사는 해결책이 아니라 증상이다〉(Type Checking is a Symptom, Not a Solution).
난 이 글에 동의하지 않는데, 여러 측면에서 그렇지만, 한 측면에만 집중해서 얘기해 보자면: 좋은 아키텍처는 훌륭한 프로그래머를 요구하지만 타입 시스템은 훌륭한 프로그래머를 요구하지 않기 때문이다.
누구나 훌륭한 프로그래머가 되어야만 하는가? 혹은 될 수 있는가? 좋은 아키텍처를 그릴 수 있는 훌륭한 프로그래머가 아니라면 소프트웨어 개발을 해서는 안 될까? 좋은 아키텍처에만 의존하는 것은 잠재적으로 엘리트주의를 끌어들이기 쉽다: 「어떤 시스템이 오작동하는 것은 아키텍처가 나쁘기 때문이다. 아키텍처가 나쁜 이유는 그걸 설계한 프로그래머가 수준 미달이기 때문이다」와 같이.
반면 타입 시스템은 일단 도입만 하면 누구나 그 덕을 볼 수 있다. 팀 내의 프로그래머들의 역량이 뛰어나든 뛰어나지 않든. 훨씬 평범한 보통 사람에게 유리하다. 타입 시스템이 미봉책일 수는 있지만, 그 미봉책이 더 많은 사람들을 프로젝트에 참여할 수 있게 해준다고 생각한다.
벌써 이번주 일요일이 해커스펍 오프라인 모임이라니... 시간 진짜 빠르다.....