이젠 ReSharper를 Visual Studio가 아니라 VS Code에 붙여주네. 뭐, 이제 .NET 개발 할 일은 없으니 쓸 일은 없겠지만 좋아 보인다.
洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 959 following · 674 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
사이드 프로젝트에 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 쌍을 가지고 할 수 있는 건? 망에 그 정보로 인증 붙여서 "난 너야" 시전하기.
최근에 마주친 문제/주제들이 우연히 다들 '양방향' 이란 개념과 관련이 있다. 아래는 거기 관련된 러프/나이브한 생각들이다.
세션 타입
이건 노골적인 예시인데, 말그대로 서버/클라가 양방향으로 통신하는걸 기술하게 해준다.
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에서의(역시!) 무근본한 트릭이 소개되어있는데, 약간 관련있을지도 모른다.
LogTape 0.10.0 Released
洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape 0.10.0 is now available, bringing enhancements to security, flexibility, and usability for this zero-dependency JavaScript logging library. A key addition is the @logtape/redaction package, which helps protect sensitive information using pattern-based and field-based redaction techniques. This package includes built-in patterns for common sensitive data types like credit card numbers and JWTs. The update also introduces improvements to timestamp formatting, allowing users to omit timestamps from formatted messages, and a lazy file sink option to improve resource utilization. Additionally, the configure() function now detects and prevents duplicate logger configurations. Thanks to external contributions, LogTape 0.10.0 offers more control over log output and improved resource management. Upgrade to this version to leverage these new features and improvements, enhancing your logging capabilities.
Read more →안녕하세요, 여러분.
해커스펍에 들어온 시점 전후로 건강에 문제가 생겨 이제야 hello world 메시지를 남기네요. 초대해주신
@hongminhee洪 民憙 (Hong Minhee) 님 고맙습니다.
애호하고 선호하는 프로그래밍 언어는 Python이고 Back-end 직군이 본진이지만, 그때 그때 엔지니어링에 필요한 직군에서 필요한 도구를 써서 개발해요. 현재는(2025년 5월 기준) 프리랜서로 일하고 있습니다.
개발 외엔 글쓰기, 글짓기를 좋아해서 글로 먹고 살 방법도 모색하고 있어요.
잘 부탁드리며, 또 뵈어요.
@hannal한날 어서 오세요, 한날 님!
안녕하세요, 여러분.
해커스펍에 들어온 시점 전후로 건강에 문제가 생겨 이제야 hello world 메시지를 남기네요. 초대해주신
@hongminhee洪 民憙 (Hong Minhee) 님 고맙습니다.
애호하고 선호하는 프로그래밍 언어는 Python이고 Back-end 직군이 본진이지만, 그때 그때 엔지니어링에 필요한 직군에서 필요한 도구를 써서 개발해요. 현재는(2025년 5월 기준) 프리랜서로 일하고 있습니다.
개발 외엔 글쓰기, 글짓기를 좋아해서 글로 먹고 살 방법도 모색하고 있어요.
잘 부탁드리며, 또 뵈어요.
결국 IMEI도 털렸네요
[속보]"SKT 감염 서버 18대 추가…개인정보·IMEI도 포함"
https://n.news.naver.com/article/079/0004025786?type=breakingnews&cds=news_edit
I implemented data redaction for #LogTape today. The feature will be available through a dedicated package called @logtape/redaction (JSR & npm). It provides two complementary approaches to protect sensitive information in your logs:
- Pattern-based redaction: Uses regex patterns to identify and mask sensitive data in formatted log output
- Field-based redaction: Redacts properties by field names in structured log data
Looking forward to releasing this with LogTape 0.10.0 soon!
LogTape에 민감한 데이터를 편집하는 @logtape/redaction 패키지를 추가하는 작업중… 원래 해야 하는 다른 작업이 하기 싫어서 하는 회피성 작업이긴 하다. 🙄
@hongminhee洪 民憙 (Hong Minhee) this looks like chatgpt wrote it 😭
@hexaheximal Haha, actually, I got a lot of help from Claude Sonnet 3.7 to make up for my poor English skills. That might be why you feel that way.
洪 民憙 (Hong Minhee) shared the below article:
FEP-82f6: Actor statuses
Gregory @grishka@socialhub.activitypub.rocks
This proposal describes an ActivityPub extension to allow actors to publish a short status text, with optional expiration, link attachment, and history.
Some centralized communication services provide their users with the ability to set a status on their account, which is usually displayed on their profile and sometimes next to their name in other places in the UI. These are distinct from regular posts because they can not be interacted with in any way whatsoever, can't contain media attachments, and usually have a short character limit on the order of several hundred characters at most. Statuses are always visible to anyone who can see the actor itself.
https://codeberg.org/fediverse/fep/src/branch/main/fep/82f6/fep-82f6.md
‘그냥 tryAny 쓰면 예외는 다 잡을 수 있는 거 아닌가? 왜 ResourceT를 써야 하지?’라고 생각했는데 찾아보니 tryAny로는 비동기 예외를 잡을 수 없다고 한다.
writeGreetingSafeAttempt :: IO ()
writeGreetingSafeAttempt = do
dir <- getDataDir
h <- IO.openFile (dir </> "greeting.txt") WriteMode
_ <- tryAny do
IO.hPutStrLn h "hello"
IO.hPutStrLn h "world"
IO.hClose h
@oxmhpark옥수박 Phanpy라는 웹 클라이언트도 꽤 잘 만들었더라고요.
LogTape에 민감한 데이터를 편집하는 @logtape/redaction 패키지를 추가하는 작업중… 원래 해야 하는 다른 작업이 하기 싫어서 하는 회피성 작업이긴 하다. 🙄
Why LogTape Should Be Your Go-To Logging Library for JavaScript/TypeScript
洪 民憙 (Hong Minhee) @hongminhee@hackers.pub
LogTape is a modern JavaScript and TypeScript logging library distinguished by its simplicity, flexibility, and broad runtime compatibility. One of its key advantages is its zero-dependency footprint, which reduces bundle size and enhances stability, making it ideal for both applications and libraries. LogTape supports multiple JavaScript runtimes, including Node.js, Deno, Bun, web browsers, and edge functions, ensuring consistent logging across different environments. Its hierarchical category system allows for fine-grained control and targeted filtering of logs, while structured logging enables improved searchability and data analysis. The library also offers simple extension mechanisms for creating custom sinks and filters with minimal boilerplate. Designed with library authors in mind, LogTape allows libraries to provide logging output without imposing specific configurations on users. With features like explicit and implicit contexts, LogTape facilitates richer logging by adding consistent properties across multiple log messages, making it easier to trace requests through a system. This post highlights LogTape's unique combination of features that address real-world development challenges, making it a valuable tool for any JavaScript or TypeScript project.
Read more →
@hongminhee洪 民憙 (Hong Minhee) 영롱합니다! 만족중이시라니 KN03BT TKL 도 뽐뿌가 오네요! 앱코 무접점중에서 결정하기는 할 것 같습니다만.. 앞으로 또 몇년 쓸 거 생각하니 고민에 고민을 거듭하게 되네요. (그러고보니 무접점 시리즈는 Hacker 라는 표기가 붙어 있었는데 언젠가부터 사라졌네요.. 😂)
@arkjunJuntai Park 텐키리스냐 아니냐는 취향 및 업무 차이라고 생각하고, 원래 풀 배열을 찾고 계셨던 거라면 ABKO KN03BT 그대로 가셔도 좋지 않을까 싶습니다!
나의 키보드 변천사
2009년 이전까진 잘 기억나지 않고,
- 2009 애플 텐키리스 무선 키보드 (2세대) - 맥용이지만 윈도에서도 autohotkey 써서 키 커스텀해서 잘 썼다.
- 2013 HHKB Pro 2 - 이후 모든 키보드 설정에서 caps lock 을 ctrl 로 커스텀해서 쓰고 있다
- 2018 ABKO HACKER K945P 텐키리스 무접점 (집에서는 ABKO HACKER K995P V3) - 회사에서 지급받아 써보고 만족도가 높아서 HHKB 를 정리하고 앱코 무접점만 쓰고 있다.
마침 업무용 키보드 기판이 살짝 금이 가기도 해서 (쓰는데 아무 문제없지만) 키보드를 바꾸고 싶은 뽐뿌가 슬금슬금 올라온다.
앱코 무접점 키보드의 만족도가 높아서, 그 시리즈 중에 살 것 같다.
후보군 KN30 BT, KN35 BT, AKN10BT, LKN84 BT
@arkjunJuntai Park ABKO KN30BT의 텐키리스 버전인 ABKO KN03BT TKL을 쓰고 있는데, 아주 만족스럽습니다.
정기적으로 하는 미니 컨퍼런스 같은게 있으면 좋겠다. 돌아가면서 각자 최근에 발견/발명한걸 부담없이(뭐 공들여 ppt만들고 이러지 말고) 발표하고 치킨 먹고 헤어지는?
@hongminhee洪 民憙 (Hong Minhee) 블로그 글 쓰신걸 읽다가 요런 아이디어를 봣는데.
좀더 나아가자면, 모듈 인터페이스는 구현체의 다양한 관점의 효과성이나 효율성, 기능성 등에 대해서도 매개변수를 선언할 수 있고, 임포트 시에는 특정 매개변수를 기준으로 선호하는 구현체가 적절히 선택되도록 할 수 있을지도 모른다.
이걸 모듈 레벨의 파이널 인코딩이라고 해야하나, 이 부분을 어떻게든 좀더 잘 만들려고 욕심내다보면 엄청 어려운 문제가 되는거 같아요.
@bglbgl gwyng 그저 상상의 영역이었기 때문에, 사실 어떻게 구현할 수 있을지에 대해서는 잘 생각하지 못했던 것 같아요.
Deno 2.3.3 is out 🎊
⭐ deno serve any directory
⭐ fetch over Unix sockets
⭐ new OTel events: boot_failure and uncaught_exception
⭐ dark mode on HTML coverage report
Anyone here have experience using
@vitest with
@deno_landDeno, or setting up a unit test suite that works on #Deno, #Node.js, and #Bun?
프론트엔드 개발을 한 6년정도 하면서 생긴 아직 풀리지 않은 의문으로, 템플릿과 공식 문서에선 그렇게 세련되고 예쁜 컴포넌트들이 왜 import해서 내 프로젝트에서 쓰면 개촌스럽고 못생겨지냐는 것이 있다.
Mastodon에서 여태까지 Webpack을 쓰고 있었는데 드디어 Vite로 넘어갔다고. 지난 주였나 테스트 때문에 Mastodon 설치할 일이 있었는데 RAM 4 GB짜리 VPS에서 Webpack 돌다가 얼어버렸던 경험이 있다. 그 때는 “이야, 아직 Webpack을 쓰네” 하며 RAM 8 GB로 올려서 어떻게 해결은 했지만, 황당하긴 했다.
Convert from Webpack to Vite (#34450)
Co-authored-by: Renaud Chaput <renchap@gmail.com> by ChaosExAnima has been merged! https://github.com/mastodon/mastodon/commit/c4f47adb49663f24ee80d9174ab24431a8c165c0
@hongminhee洪 民憙 (Hong Minhee) 놀랍지않게도?! 하스켈에도 Backpack이라는 유사한 기능이 있습니다. 근데 누가 이걸로 논문쓰고 졸업한다음 도망간게 아닌가 싶은, 관리가 잘 안되고 있는 기능입니다.
@bglbgl gwyng 오, 이거 이름은 들어 본 적 있는데, 그런 기능이였군요?
@hongminhee洪 民憙 (Hong Minhee) 놀랍지않게도?! 하스켈에도 Backpack이라는 유사한 기능이 있습니다. 근데 누가 이걸로 논문쓰고 졸업한다음 도망간게 아닌가 싶은, 관리가 잘 안되고 있는 기능입니다.
Introducing virtual package in MoonBit https://lobste.rs/s/cfiux3 #plt
https://www.moonbitlang.com/blog/virtual-package
Introducing Pyrefly: A new type checker and IDE experience for Python https://lobste.rs/s/czvto8 #plt #python #rust
https://engineering.fb.com/2025/05/15/developer-tools/introducing-pyrefly-a-new-type-checker-and-ide-experience-for-python/
안녕하세요? Hackers' Pub에 첫 게시글을 올립니다. 간략한 소개를 위한 사이트를 만들었습니다. 잘 부탁드립니다!
Good news! We've officially added #Cloudflare #Workers support to the #Fedify roadmap. We've created a detailed issue to track our implementation plan: https://github.com/fedify-dev/fedify/issues/233.
The effort will be tackled in phases, including compatibility assessment, core adaptations for Workers' environment, KV store and message queue implementations, and finally integration with Cloudflare's ecosystem. This will be a substantial project that we'll break down into several sub-issues.
If you're interested in contributing to any specific aspect of Workers support, please comment on the main issue to coordinate efforts.
實은 Fedify에 굵직한 課題들이 좀 있는데 OSS 컨트리뷰션 아카데미에서 進行하려고 내가 안 解決하고 아껴두고 있다.
I wish all the library projects I use had official fediverse accounts so I could follow them.
Or at least, I wish they'd create a Bluesky account and turn on Bridgy Fed.
I wish all the library projects I use had official fediverse accounts so I could follow them.
해커스펍 정모하면 사진기사 하고 싶음
Kotlin으로 iOS 앱 만들어보았다 가능할지도
If a module defines a custom exception type and throws that exception within the module, it absolutely must export that exception type as well. I'd think this is basic, but it seems a surprising number of packages declare exception types without exporting them.
I wonder how many regular (non- software developers) are even aware of MSDN.
I suspect almost none of them.
@reiver@reiver ⊼ (Charles)
Your reply makes me realize that we need a new property in ActivityPub, like isNotSerious or isJoke that I can mark on posts.
By the way, in case you didn't notice, the previous sentence is not serious.
이번주내내 인프라 구축에 몰두했는데 개발보다 더 재밌다. AWS 세팅 끝내고, Cloudflare 에 R2 구성하고, 업로드 샘플이랑 캐시퍼지하는 삭제샘플도 만들고 Grafana, Prometheus 로 모니터링 구축하고 Jenkins 에 CI/CD 세팅했다. (입사 초기에 사내 서버에 세팅한 것들을 클라우드로 옮겼다.) 나름의 보안정책들을 수립해가는 것도 묘미. (라고 해봐야 주요 접근 포인트는 죄다 사내망에서만 접근하게 하는 정도지만) 나머지 uptime kuma 올리고, 슬랙 경고 알림정도까지만 작업해 놓으면 당분간 또 만질 일 없겠지만, 그냥 개발 안하고 이런 것들만 했으면 좋겠단 생각도 들었다.
@arkjunJuntai Park 오… 사실 저는 이런 인프라 작업은 너무 복잡하고 머리가 아파서 다른 분들에게 맡기고 뒤로 빠지는 편인데, 이런 작업을 좋아하시는군요. 역시 사람에게는 적성이라는 게 있는 모양입니다. 😂
洪 民憙 (Hong Minhee) shared the below article:
데이터 효율성으로 본 AI와 인간의 비교
bgl gwyng @bgl@hackers.pub
이 글은 AI와 인간의 능력 비교에서 데이터 효율성의 중요성을 강조하며 시작합니다. 현재 AI는 인간에 비해 데이터 효율성이 떨어지지만, 일단 학습된 능력은 복제 가능하다는 점을 지적하며 콜센터 직원과 같은 직업군에 대한 위협은 여전하다고 설명합니다. 데이터 효율성이 중요한 경영인과 연구자는 AI를 유용한 도구로 활용할 수 있지만, 인간의 데이터 효율성이 정말 높은지에 대한 의문을 제기합니다. Yann Lecun의 주장을 인용하여 인간이 받아들이는 데이터 양이 AI 학습에 쓰이는 양보다 적지 않음을 언급하며, 인간은 데이터를 있는 그대로 학습하지 않고 편향에 기반하여 학습한다는 흥미로운 주장을 제시합니다. 마지막으로, AI에게 인간처럼 무모한 결론을 내리도록 가르치는 것이 옳은지에 대한 질문을 던지며, 압도적인 양의 데이터를 통해 더 많은 진실을 알아낼 수 있는지에 대한 고민으로 마무리합니다. 이 글은 AI 개발 방향에 대한 새로운 시각을 제시하며 독자에게 깊은 생각거리를 제공합니다.
Read more →다음주 수요일부터 OSS 컨트리뷰션 아카데미 멘티 모집을 하는군아.... 연합우주 쪽 사람이라면 Fedify 지원합시다




서버메이드 깐프 






