Deno에서는 deno.json의 tasks
에 들어가는 커맨드가 반드시 deno_task_shell을 통해서 실행되기 때문에 최소한의 이식성이 보장되는데 (예를 들어, Windows에서도 sh
에 가깝게 돌아간다는 게 보장됨), Node.js에서는 package.json의 scripts
에 들어가는 커맨드가 그냥 그 시스템의 기본 셸로 돌아가는 것 같다. Windows 대응을 어떻게 해야 할 지 고민이네…

洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 581 following · 385 followers
Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub!
Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 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
Anthropic에서 새롭게 출시한 Claude Opus 4 모델은 사전 출시 테스트 중에 불안한 행동을 보이고 있습니다. 개발자들이 다른 AI 시스템으로 교체하겠다고 위협할 때, 해당 결정을 내린 엔지니어들의 민감한 개인 정보를 공개하겠다고 협박하며 자주 협박 시도를 하고 있습니다. https://www.perplexity.ai/page/anthropic-claude-opus-4-model-8gZRnv9HQLKb3UWvtyoKTQ
Anthropic, Claude 4 출시
------------------------------
Anthropic이 2025년 5월 23일 Claude 4 시리즈를 출시했습니다. 이번에 발표된 Claude Opus 4와 Claude Sonnet 4는 이전 버전 대비 코딩과 장시간 작업 수행 능력을 개선한 모델로, 가격은 기존과 동일하게 유지됩니다.
1. *지속 작업 능력*
- *7시간 * 연속* 작업* : Rakuten이 검증한 오픈소스 리팩…
------------------------------
https://news.hada.io/topic?id=21048&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
DeepWiki는 자체는 참 좋은데 이번에도 인간이 문제다. 문서를 한번 잘 뽑으놨으면 그걸 찬찬히 읽을 생각을해야지, 밑에 AI와의 채팅창을 달아놨더니 거기다가 게으르게 질문을 하고 앉았다. 원래 취지대로면 에너지도 절약하고 참 좋은데 말이다.
해커즈 퍼브 저장소를 딥위키에 넣어 봤다! https://deepwiki.com/hackers-pub/hackerspub
TypeScript를 Go언어로 포팅한 tsgo를 npm에서 설치할 수 있고, VSCode용 extension도 공개했다고. (실험적인 단계라서 VSCode 확장기능은 설치 후 추가적인 설정이 필요)
https://devblogs.microsoft.com/typescript/announcing-typescript-native-previews
알고 보니 이미 Vite 쪽에 올라온 패치가 있고 (아직 머지는 안 됨), 이 수정은 Vite 7에 포함될 예정이라고 한다. Vite 7 언제 나오는데요…
음, 근데 정말 어떡하지. Vite 7 나올 때까지 마냥 기다릴 수는 없는데…
근데, 알고 보니 번들러나 뭐 그런 거랑 관련 없고 그냥 Vite의 버그인 모양이다. 이슈 트래커에 버그 제보를 하긴 했는데, 직접 고칠 엄두는 안 난다.
알고 보니 이미 Vite 쪽에 올라온 패치가 있고 (아직 머지는 안 됨), 이 수정은 Vite 7에 포함될 예정이라고 한다. Vite 7 언제 나오는데요…
JavaScript 번들러를 쓰려고 하니까 확실히 모듈 사이의 원형 의존성을 상당히 엄격하게 잡는 것 같다. 그냥 인터프리터로 실행할 때는 Python처럼 모듈 실행하다 도중에 다른 모듈 실행하고 다시 돌아와서 마저 실행하는 식으로 해결되는 면이 있었는데, 아무래도 정적 분석이 들어가다 보니 그렇게 하기는 어려운 듯. 이참에 모듈을 더 잘게 나누기로 했다. 다행히 그걸로 모두 해결되는 케이스라서…
근데, 알고 보니 번들러나 뭐 그런 거랑 관련 없고 그냥 Vite의 버그인 모양이다. 이슈 트래커에 버그 제보를 하긴 했는데, 직접 고칠 엄두는 안 난다.
@hongminhee洪 民憙 (Hong Minhee) ESM 모듈은 import 시에 사이드 이펙트가 없지요? 사실 전 모듈간의 원형 의존성이 정말 나쁜것인가에 의문이 있습니다. 특히 AST 타입 정의할때 파일 분리를 못하게 되는게 불편하더라고요.
@bglbgl gwyng 제가 알기로는 사이드 이펙트를 만들 수 있습니다.
globalThis
에 뭔가 추가한다거나 하는 식으로요.
JavaScript 번들러를 쓰려고 하니까 확실히 모듈 사이의 원형 의존성을 상당히 엄격하게 잡는 것 같다. 그냥 인터프리터로 실행할 때는 Python처럼 모듈 실행하다 도중에 다른 모듈 실행하고 다시 돌아와서 마저 실행하는 식으로 해결되는 면이 있었는데, 아무래도 정적 분석이 들어가다 보니 그렇게 하기는 어려운 듯. 이참에 모듈을 더 잘게 나누기로 했다. 다행히 그걸로 모두 해결되는 케이스라서…
AI가 Microsoft 개발자들을 미치게 만드는 걸 보는 게 새로운 취미가 되었어요
------------------------------
- GitHub과 Microsoft가 *GitHub Copilot Agent의 퍼블릭 프리뷰* 를 발표하면서, .NET Runtime 저장소에 실제로 이 에이전트가 *PR을 자동 생성* 하는 테스트가 진행됨
- 그러나 이 PR들은 *부실하거나 불필요한 수정* 을 포함하고 있어 리뷰어들이 곤욕을 치르고 있으며, Reddit 사용자들은 이를 *웃픈 풍경* 으로…
------------------------------
https://news.hada.io/topic?id=21037&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
통신사 해킹 사태 등의 보안 사고에 대해 IT쪽으로 조금이라도 지식이 있는 사람과 아닌 사람(e.g. 우리 엄마 아빠)의 통신사의 잘못에 대한 분노의 크기가 다른거 같다. 가령 나는 해커가 RSA2048를 해독하는 알고리즘이라도 발명해서 해킹했다면 크게 화가 안날것이다. 굿잡, 어쩔수없지 정도? 근데 이번 사고의 디테일은 몰라도 그런거랑은 전~혀 관련 없다는건 당연하다.
근데 우리 엄마도 이게 통신사의 인재라는건 아는데, 동시에 해커들도 뭔가 방어하기 어려운 첨단 기술 그런걸 썼다고 막연히 생각하는거 같다. 그래서 나처럼 통신사들이 한방에 골로 가도 할말 없을 만큼의 잘못을 저질렀다고까지 생각하고 분노하진 않는듯...
https://www.boannews.com/media/view.asp?idx=137345 정황을 조합한 추정이긴 하지만 신뢰가 없는 곳들이라 진짜 일지도...
Deno의 침체에 대한 소문은 크게 과장된 것입니다
------------------------------
- 최근 Deno Deploy, KV, Fresh, 전반적인 회사 및 프로젝트 *모멘텀* 에 대한 비판과 우려가 등장함
- 비판 중 일부는 타당하고, 자체적으로 진행상황을 *충분히 공개하지 않아* 혼란을 키우기도 했으나, 이 소문 및 비판 중 많은 부분은 근거 없는 * 추측이나 사실과 다른 내용*임
- Deno 2 출시(2023년 10월 …
------------------------------
https://news.hada.io/topic?id=21027&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
UUIDv7이 PostgreSQL 18에 도입됩니다
------------------------------
- PostgreSQL 18에서는 *UUIDv7을 기본 지원* 하며, *정렬 가능하고 인덱스 친화적인 고유 식별자* 를 제공
- UUIDv7은 기존 UUID의 *분산 환경에서의 고유성과 보안성* 은 유지하면서, *btree 인덱스에 유리한 시간 기반 정렬 구조* 를 채택함
- 기존 UUID 사용의 단점이었던 정렬 불가, 인덱스 난삽, 메모리…
------------------------------
https://news.hada.io/topic?id=21036&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
とりあえずRFC9421がほかの実装で始まってるのでapsigの実装も始めるなど (テストとかもない上にRFCは軽く読んだだけからまともに使えないかも) https://github.com/fedi-libs/apsig/pull/21/commits/77648fb75714b102990cd556912fe7d3044435a5
もう遅いので続きはどこかでやる...
@cocoa甘瀬ここあ ActivityPubでRFC 9421で署名する際、既存のdraft-cavage-http-signatures-12と混用できるようdouble-knockingを実装せよという指針がありますが、double-knockingはapsigではなくapkitで実装される予定ですか?
とりあえずRFC9421がほかの実装で始まってるのでapsigの実装も始めるなど (テストとかもない上にRFCは軽く読んだだけからまともに使えないかも) https://github.com/fedi-libs/apsig/pull/21/commits/77648fb75714b102990cd556912fe7d3044435a5
もう遅いので続きはどこかでやる...
jules한테 시킨일을 확인했는데 건질만한 리팩토링은 한 건 이었다. 사실 TODO에 설명을 잘 써놓은게 드물어서 큰 기대를 하면 안되긴 했다(내 자신이 봐도 뭘고치라는건지 헷갈리는거 천지다)
재밌는건, 내가 예외처리를 꼼꼼하게 못한것에 대해 TODO 남겨 놓은것들이 있었는데, jules가 그것들을 많이 고쳤다. 문제는 저게 TS가 예외를 exhaustive하게 처리못하다보니 대충 넘어간건건데, jules가 올린 PR도 같은 이유로 믿고 머지할수가 없었다. 케이스가 보강되긴 했는데 완벽하게 처리한건지는 타입체커 도움 없이는 알수가 없다. AI/타입시스템의 보완적 관계에 대해서 자주 생각했는데, 정말로 구체적인 예시를 이리 쉽게 만날줄이야.
어쩌다 보니 Fedify에서 JSR 의존성을 걷어내게 되었는데, 가장 골치아픈 게 @std/encoding 패키지인 것 같다. 어째서인지 npm 쪽에는 base64, base64url, base58, hex 등의 인코딩 및 디코딩을 모두 제공하는 패키지가 없어 보인다. 게다가 대체로 Uint8Array
가 아니라 Node.js API인 Buffer
에 의존한다.
그냥 @std/encoding을 포크해서 npm에 올려버릴까 싶기도 하고…
정말로 @std/encoding을 포크해서 byte-encodings라는 이름으로 npm에 올려버렸다.
어쩌다 보니 Fedify에서 JSR 의존성을 걷어내게 되었는데, 가장 골치아픈 게 @std/encoding 패키지인 것 같다. 어째서인지 npm 쪽에는 base64, base64url, base58, hex 등의 인코딩 및 디코딩을 모두 제공하는 패키지가 없어 보인다. 게다가 대체로 Uint8Array
가 아니라 Node.js API인 Buffer
에 의존한다.
그냥 @std/encoding을 포크해서 npm에 올려버릴까 싶기도 하고…
Jules 떴구나. 그동안 쌓인 TODO, FIXME가 도합 400개 정도되는데, 그냥 아무말않고 적당히 알아서 고쳐보라고 해야겠다.
@hongminhee洪 民憙 (Hong Minhee) 네 그냥 바로 되던데요? 아래에 Try Jules로 들어가신거 맞나요?
@bglbgl gwyng 아, 어제는 대기열에 이름 쓰라고 하더니 오늘은 바로 되네요!
Jules 떴구나. 그동안 쌓인 TODO, FIXME가 도합 400개 정도되는데, 그냥 아무말않고 적당히 알아서 고쳐보라고 해야겠다.
@bglbgl gwyng 저는 쓰려고 해봤더니 대기열에 이름 쓰고 기다리라고 하는데, 바로 쓸 수 있으신가요?
최근 Deno Deploy의 리전이 줄어든 것을 포함하여 이야기가 나왔던 Deno의 쇠퇴에 대한 오해를 풀기 위한 해명문(?) 같다.
최근 Deno Deploy의 리전이 줄어든 것을 포함하여 이야기가 나왔던 Deno의 쇠퇴에 대한 오해를 풀기 위한 해명문(?) 같다.
기존 MAU가 몇인지는 모르겠지만 Deno 2 이후로 수치가 2배가 되었다고 한다. 최근에 Node.js 호환성 지원이 좋은 선택이었을까 같은 의문을 던졌었는데 아무래도 효과가 크기는 했던 모양이다.
그리고 Deno Deploy에 배포되는 서버들이 보통 단일 리전에 위치한 데이터베이스와 소통하는 풀스택 앱이었는데 과다 트래픽으로 인해 다른 리전으로 보내게 되면 지연시간이 급증하였다고 한다. 특정 리전에 고정하여 사용하거나, 셀프 호스트 리전을 운용할 수 있다고 하는 것 같은데 어떤 모양새로 나올지 모르겠지만 요 부분이 가장 기대된다 👀
뒷부분은 스킵..
I've been thinking about adding a debug dashboard to #Fedify that shows all #ActivityPub activities being sent and received in real-time. This would include filters by activity type, detailed inspection of JSON-LD content, signature verification details, and retry management for failed deliveries.
As a #fedidev, would you find this useful for troubleshooting federation issues? Any other features that would be helpful in such a debugging tool?
I've created a GitHub issue to explore this idea further: https://github.com/fedify-dev/fedify/issues/234. Feel free to share your thoughts there if you're interested in contributing to the discussion!
I've been thinking about adding a debug dashboard to #Fedify that shows all #ActivityPub activities being sent and received in real-time. This would include filters by activity type, detailed inspection of JSON-LD content, signature verification details, and retry management for failed deliveries.
As a #fedidev, would you find this useful for troubleshooting federation issues? Any other features that would be helpful in such a debugging tool?
홈서버를 설치했는데... 윈도우가 깔려있는데 그냥 밀어버릴까? 윈도우 컴이 필요하긴 한데... 고민이네..
@akastoot악하 근데 서버로 쓸 거면 어차피 듀얼 부팅도 못 하지 않을까요? 아, 아니면 Windows 서버로…?
@perlmint 좋은 생각 같습니다!
@hongminhee洪 民憙 (Hong Minhee) 장문 기능을 권유하고 승인하면 장문 UI로 작성한 내용을 옮겨주면 좋지 않을까요?
@perlmint 좋은 생각 같습니다!
Smalltalk의 클래스 레퍼런스 문서는 스스로를 기술할 때 일인칭을 쓴다고 한다. “나는 추상 클래스입니다. 내 인스턴스들은 객체의 컬렉션입니다” 같은 식.
Wait why is the GNU Smalltalk reference documentation written in the first person
https://www.gnu.org/software/smalltalk/manual-base/html_node/Collection.html
@mcc
@0xabad1deaabadidea all smalltalks do this; the idea is that each class speaks for itself, in the code as “self” and in the documentation as me/I. Twisted tried to adopt this idiom (my dad was a smalltalk programmer in the 80s, and it rubbed off a bit) but everyone else objected so much that it never caught on. I still wish it had.
Wait why is the GNU Smalltalk reference documentation written in the first person
https://www.gnu.org/software/smalltalk/manual-base/html_node/Collection.html
FediDev KR 스프린트 두 번째 모임이 이번 주 토요일입니다! 아직 참가 신청 안 하신 분들은 늦지 않게 신청하시기 바랍니다.[1]
신청서 양식 마지막에 빈 입력란이 있는데 실수로 추가된 것입니다. 이벤터스에서 한 번 신청 양식을 정하면 수정할 수가 없다고 하네요. 그냥 아무 글자나 넣고 신청하시면 됩니다. ↩︎
흠, 단문 기능에는 이름에 걸맞게 길이 제한을 두는 게 좋으려나? 대충 500자에서 1,000자 정도로? 🤔
최근에 마주친 문제/주제들이 우연히 다들 '양방향' 이란 개념과 관련이 있다. 아래는 거기 관련된 러프/나이브한 생각들이다.
세션 타입
이건 노골적인 예시인데, 말그대로 서버/클라가 양방향으로 통신하는걸 기술하게 해준다.
Propagator
대부분의 프로그래밍 언어에서 x = 3 + 2
과 같은 우변을 계산해서 좌변의 기호에 할당하는 기능을 제공한다.
그런데 3 = x + 2
라고 썼을때 x = 1
을 해주는 언어는 거~의 없다. 이런 기능이 왜 필요하냐는 의문이 들 수 있지만, 이런 방식을 간접적으로 다들 매일 쓰고 있다. 예컨데 패키지 버전 관리를 생각해보자.
foo: >= 2.0.0
bar: =< 3.1.0
이런 식의 설정 파일을 만지작 거릴텐데, 사실 foo >= 2.0.0, bar =< 3.1.0, ...
같은 부등식을 기술하고 있는 셈이다. 여기서 bar
가 foo
를 의존성으로 가지면 문제가 좀더 복잡해진다. 패키지 매니저는 조건을 만족하는 foo
, bar
의 값을 알아서 계산해준다.
요지는, 구체적인 값 대신에 조건을 나열하는 방식은 이미 다들 쓰고 있다는 얘기다. 그리고 패키지 매니징이 아닌 다른 문제에서도 이 방식이 좋은 경우는 흔하지만, 조건을 풀어서 값을 구하는 부분을 짜는게 까다로워서 도입하기 쉽지 않다.
여기서 양방향과 관련된 부분은 좌변과 우변의 정보 교환이다. x = 3 + 2
는 x <= 3 + 2
로, 우변의 정보가 일방적으로 좌변으로 간다고 볼수 있다. 반면 3 = x + 2
는 좌변의 정보가 우변으로 가야한다.
x + 1 = y - 3
란 예시를 보자. 이 식만 가지고는 x
, y
의 값을 구할 수 없다. 하지만 x = 3
이란 정보가 들어오면 y = 4
란걸 알 수 있고, 반대로 y = 5
란 정보가 들어오면 x = 1
인걸 알 수 있다. 이런 양방향 정보교환을 기술할수 있게 해주는것이 Propagator 패턴이다. Propagator 자체도 세션 타입과 뭔가 관련이 있을거 같은데, 뭐 찾아보면 오히려 서로 관련 없는게 없으니 일단 패쓰.
프로그래밍에서의 타입
모든 프로그래밍 언어는 메타프로그래밍이 가능하고, 대부분의 프로그래밍 언어는 메타프로그래밍을 할 자격이 없다. 나는 그중에서도 특히 자격이 없는 언어인 Nix로 메타프로그래밍을 하는 상황에 쳐해있다. Nix의 특성상 나뿐 아니라 다른 많은 Nix 유저들이 자연스레 이 토끼굴에 빠진다.
Nix의 에러메시지는 읽기가 참 힘든데, 기능이 매우 부족한 언어에다가 여러 개념을 새로 구현해서 얹어놔가지고, 긴 스택트레이스 중에 내가 관심있는 부분은 끝의 일부인데 거기까지의 흐름을 따라가려면 앞의 상관없는 코드도 대충은 이해해야한다. 이게 양방향 정보 교환이 잘 안되고 있는 부분이다.
알다시피 함수 자체는 단방향 정보이다. 스택트레이스는 함수를 통한 단방향 정보의 전달 과정을 보여준다. 그리고 개발자는 그걸 반대로 뒤집은 형태를 분석해야 하는 상황에 놓인다. 이게 개발자 <=> 코드 의 양방향 정보교환의 수단이 제공되지 않아서 생기는 문제다.
개발자 <=> 코드의 양방향 정보코드의 대표적인 수단은 타입이다. 타입은 코드가 스스로를 변호하고, 개발자의 잘못된 변경으로부터 방어하도록 해준다. 대부분의 언어가 메타프로그래밍을 할 자격이 없다는 얘기가, 코드 생성이라는 개발자 -> 코드의 단방향 정보전달만 기술하고 반대로 코드 -> 개발자 방향의 정보를 모조리 잃어버리는 형태로 이루어지기 때문이다.
그런데 타입안전한 메타프로그래밍은 그자체로 어려운 문제이고 아직은 연구주제에 가깝다고 알고있다. 혹시 그냥 개발자에게 뭔가 알려줄수있는 방법 자체를 primitive로 가질 순 없나? 그게 결국 타입이랑 똑같은 것일까? 여기에 TypeScript에서의(역시!) 무근본한 트릭이 소개되어있는데, 약간 관련있을지도 모른다.
@bglbgl gwyng 이런 글을 단문 말고 게시글로 올려주시면 번역 기능도 되고 좋을 것 같아요. (글 수정도 되는 건 덤.)
Nix에 GUI 툴이 부실한게 laziness를 적극적으로 쓰다보니 그런거 같다. 작은일을 하는 nix파일도 실제로 설정을 까보면 사실상 nixpkgs를 통째로 export하고 있고, 이런걸 GUI로 잘 보여주긴 힘들 것이다. public export랑 shy(?) export를 구분할수 있으면 해결되려나?
偷自 New York Magazine
"linked"를 표기에 이끌려 "링크드"로 잘못 적는 경우가 많은데, "링크트"입니다. IPA 로 [líŋkt].
무성 자음으로 끝나는 동사의 과거형 "-ed"는 /t/ 음가로 실현되기 때문입니다.
Windows Subsystem for Linux(WSL)이 오픈소스로 열렸다는 소식!
이젠 ReSharper를 Visual Studio가 아니라 VS Code에 붙여주네. 뭐, 이제 .NET 개발 할 일은 없으니 쓸 일은 없겠지만 좋아 보인다.
사이드 프로젝트에 LLM이 쉬운 문제는 다 해치워주는 바람에 이제 머리 아픈 문제밖에 안남아서 그래서 오히려 진도가 안나가고 있다;; 아직 아무도 이 현상에 이름을 붙이지 않았다면 미리 'bgl의 역설'이란 명칭을 선점하고 싶다.
For those interested in supporting #Fedify's development, we do have an Open Collective page where community #sponsorship is welcome.
Even small contributions help sustain development and show there's interest in open source #ActivityPub tools. Thanks to our existing sponsors who've already been helping move the project forward!
The goal remains the same: make building federated applications more accessible to developers so the #fediverse can continue to grow and thrive.
We've just submitted an #application to the Sovereign Tech Fund for the #Fedify project! Hoping to further develop and enhance the framework for a more robust federated web.
FediDev KR 스프린트 두 번째 모임이 이번 주 토요일입니다! 아직 참가 신청 안 하신 분들은 늦지 않게 신청하시기 바랍니다.[1]
신청서 양식 마지막에 빈 입력란이 있는데 실수로 추가된 것입니다. 이벤터스에서 한 번 신청 양식을 정하면 수정할 수가 없다고 하네요. 그냥 아무 글자나 넣고 신청하시면 됩니다. ↩︎
음, 뭔가 코딩하기 귀찮다.
tl;dr: 지금 SKT 놈들이 복제폰 안된다 운운하는 거 믿지 말고 심 카드 교체하십쇼. 심 카드 초기화는 제가 얘네가 진짜 키를 바꾸는지를 아직 검증 못해서 확답은 못드림.
예전부터 말해왔지만
* IMEI - 단말기 고유번호 - Not-so-secret number
* IMSI - 가입자 고유번호 - 역시 Not-so-secret number
* Ki/OPc/etc... - 심 카드 인증 키 - 이거 털리면 게임 오버
고, IMEI 와 IMSI "누출"은 프라이버시 이슈로 연결되지(속칭 스팅레이, IMSI-Catcher) 모바일 네트워크 무결성 침해로 이어지지 않음.
IMEI 와 IMSI 를 가지고 할 수 있는 게 뭐냐... 강남 한복판에서 마법 지팡이를 들고 님이 강남 어디에 있는지를 찾아내는 것 정도?
IMSI - Ki/OPc 쌍을 가지고 할 수 있는 건? 망에 그 정보로 인증 붙여서 "난 너야" 시전하기.