Coding ActivityPubServer...

洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 854 following · 606 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
GHCup 오랜만에 다시 설치하는데 못보던 게 생겼다.
GHCup provides different binary distribution "channels". These are collections of tools
and may differ in purpose and philosophy. First, we select the base channel.
[S] Skip [D] Default (GHCup maintained) [V] Vanilla (Upstream maintained) [?] Help (default is "Skip").
@curry박준규 현재는 experimental인 cross build용 channel을 쓰면 GHCJS와 WASM GHC도 설치할 수 있답니다
any
쓰지 마세요
네
as unknown as
흐끼야악
지난 Google I/O Extended 에서 발표한 내용을 공유합니다. 핸즈온 세션이라 내용을 충분히 전하긴 어렵겠지만, 나름 유용한 사람도 있으실 것…
https://cojette.github.io/posts/firebasestudio/
…아이 자꾸 까먹음 종종 와야징.
GHCup 오랜만에 다시 설치하는데 못보던 게 생겼다.
GHCup provides different binary distribution "channels". These are collections of tools
and may differ in purpose and philosophy. First, we select the base channel.
[S] Skip [D] Default (GHCup maintained) [V] Vanilla (Upstream maintained) [?] Help (default is "Skip").
회사에 Admin페이지들이 RoR로 작성되어있었는데,
1. 개발환경 세팅이 오래걸리고,
2. RoR은 경험이 거의 없고 Active Record에 대한 지식이 없는데
3. 원하는 기능은 어렵지 않은 간단한 기능 추가들
인 상황이여서, 바이브 코딩을 첨으로 해봤다.
JS나 Python으로된 복잡한 프로덕션 프로젝트에는 써볼 엄두가 안났는데, 내부용 간단한 관리툴에 기능추가는 정말 안성 맞춤인 것 같다.
그리고 다른 언어들에 비해 RoR은 더욱 잘 맞는것 같기도.
이제 Zed에서 Claude Code를 베타로 사용 가능
------------------------------
- Claude Code 와 Zed 의 통합이 공개 베타로 출시
- 새로운 *Agent Client Protocol (ACP)* 도입을 통해 다양한 에이전트와의 연결 확장 가능성 실현
- 개발자는 Zed 내에서 Claude Code를 실시간, 다중 파일, 커스텀 워크플로우와 함께 활용 가능함
- *Claude Code용 ACP 어댑터* 가 오픈소스로 공…
------------------------------
https://news.hada.io/topic?id=22887&utm_source=googlechat&utm_medium=bot&utm_campaign=1834
i like the way claude code thinks...and it actually solve the problem...? Those days of painful ping-pong are gone now with 20-ish dollars?
간단한 글쓰기 서버로 굴리려고 오랜만에 꺼냈다.
방금 친구랑 모의면접을 봤는데(내가 면접관), 면접으로 알아낼 수있는게 딱히 있는지에 회의가 생겨버렸다. 아 물론, 내가 초보 면접관이라 면접스킬이 떨어지긴 한다만, 친구 얘기론(면접관 경험이 더 많음) 그래도 무난의 범위엔 든다고 한다. 이력서 기반으로 이것저것 물었는데, 만약에 이력서가 구라로 점철되있으면 그걸 걸러낼순 있었을 것이다. 근데 친구의 이력서는 당연히 그렇지 않았으니, 그냥 이력서가 구라가 아니란 사실 정도만;; 알아낼수 있었다. 이 이상 뭔가 더 꿰뚫어 보는게 가능할까... 하겠지? 그럼 어떻게 하는걸까.
'스킬 이슈에서 스킬 있슈로!' 라는 삼류 국비 학원 광고 문구 같은 말장난이 생각남
2025-09-03 오늘의 #cosmoslide 작업한 내용 메모
https://github.com/cosmoslide/cosmoslide/pull/13
- 이전 버전까지는 Cosmoslide 의 모든 계정은 public이고 팔로우 버튼을 누르면 바로 팔로우가 되는 로직으로 구현이 되어 있었음.
- 즉, Follow 액티비티를 받으면 액티비티를 보낸 액터의 inbox에다가 바로 Accept(Follow) 액티비티를 보내는 구성
- 이번에 작업한 내용은 각각의 계정을 private으로 변환할 수 있고, private 계정에 팔로우 버튼을 눌렀을때 바로 팔로우가 되는게 아니라 팔로우 요청으로 처리되도록 하는 작업이었음
- 즉, Follow 액티비티를 받으면, manuallyAcceptsFollowers 옵션이 false인 경우에만 Accept(Follow) 액티비티를 보냄
- 팔로우 요청 관리하는 화면 바이브코딩으로 적당히 빠르게 만들고..... 팔로우 요청을 수락하거나, 팔로우 요청을 거절하는 액션 자체는 서버 측 비즈니스 로직에서 처리한다기 보다는 가능하면 Federation에서 처리하도록 했음.
- 즉, 팔로우 요청 수락버튼을 누르면 Accept(Follow) 액티비티가 전송되고, 팔로우 요청 거절 버튼을 누르면 Reject(Follow) 액티비티가 전송되는 방식
로컬 환경에 있는 서로 다른 두 액터끼리는 잘 되는걸 확인했는데, 서로 다른 서버의 액터끼리 잘 되는지는 좀 더 테스트가 필요함.
이번 주말까지는 게시글 작성하고 원격 서버 타임라인에 노출되는 것까지 어떻게 되긴 할 듯.
오늘은 다른 파트에서 나온 이상 현상을 보다가 흔한 실수 중 하나인 memcpy(dest, src, strlen(src))
를 발견하고 공유했다. 동적 할당 방지를 위해 std::string
과 std::format
을 못 쓰는 상황도 아쉽고, 프로젝트 초창기에 다양한 helper class(std::array
기반 문자열 등)가 정립이 되지 않아 아쉽다. 그 때는 정말 초짜 신입이었으니, 별 도리가 없기도 했다.
올해 초에 조금이라도 바로잡고자 문자열 조작 로직을 개량해 직접 snprintf
를 쓰지 않고 편리하게 문자열을 다룰 수 있도록 변경한 적이 있었다. 꽤 많은 팀원이 그 존재를 익혔지만 수많은 레거시 코드는 앞으로도 태곳적 상태에 머물지 않을까. 슬프기보다는 아쉽다. 근원적인 실수를 줄일 수 있는 기회가 더욱 있었을텐데...
옛날 C++에러 메시지의 수준도 요즘 하는 일에서 발생하는 문제에 비하면 너무 감사한 수준이다.
ActivityPub Academy로 최종 테스트할 때마다 야수의 심장으로 테스트하는중
지난 몇 달간 htmx로 웹 앱을 만들면서 느낀 점은, 골디락스 존의 하위 50% 애플리케이션에만 htmx가 적합하다는 것이다. 클라이언트 상태를 조금이라도 다뤄야 하는 순간이 오면 불행이 시작된다. 하이퍼미디어 시스템의 철학에 동의하는데, 그 구현은 아일랜드 아키텍처의 접근법이 더 나을 수도 있겠다는 생각이 든다. https://deno.com/blog/intro-to-islands
https://www.typescriptlang.org/docs/handbook/mixins.html
Typescript에 Mixin 기능은 있는데, 정작 내가 원하는 형태로 지원하는 기능이 아니다. 내가 원하는건 그냥 dart 마냥 클래스의 메서드를 확장하는 것 그 이상 그 이하도 아닌데.... 흑흑...
Dart의 경우
mixin Dog {
void walk() { ... }
}
mixin Fish {
void swim() { ... }
}
mixin Bird {
void fly() { ... }
}
class Animal with Dog, Fish, Bird {
...
}
main() {
final animal = Animal();
animal.fly();
animal.swim();
animal.walk();
}
이런 느낌의 코드를 짜는게 가능하다.
Typescript도 유틸리티성 함수를 묶어서 mixin 문법처럼 매끄럽게 클래스에 포함시킬 수 있는 뭔가가 있었으면 좋겠다.
最近はScalaとかSwiftとかの「割とモダンな言語」が基底型に型消去するみたいなコンパイルテクでゼロオーバーヘッドのラッパー定義できる言語が増えてる気がしているので、別にRustだけではないと思う。
Rustが気軽に定義できるって話なら、そりゃそうだと思うけれど
https://hackers.pub/ap/notes/01990ddf-6e44-769a-995c-6fac70d06920
確かにHaskellにもあるか。使わなさすぎて忘れてた
Fediverseの開発環境、自分は何回か作り直しては崩してをしてるんだけど、現実どうするといいんだろうな
自分の環境の場合 tailscale + ローカルホスト用自前ドメインでローカルに閉じた https 環境を用意出来てるんだけど、この環境、コンテナだとホストのネットワークを使わないと tailscale の ip へ到達できないんだよね
今のところローカル専用の https ドメインはメインマシンに建てた caddy へ流してそこから各アプリケーションに分岐してるんよね
で let's encrypt の証明書は DNS チャレンジでワイルドカード証明書を取ってるんで取得には問題無いんだけど、ローカルのネットワークルーティングをどうするかが非常に悩ましい
Fediverseの開発環境、自分は何回か作り直しては崩してをしてるんだけど、現実どうするといいんだろうな
自分の環境の場合 tailscale + ローカルホスト用自前ドメインでローカルに閉じた https 環境を用意出来てるんだけど、この環境、コンテナだとホストのネットワークを使わないと tailscale の ip へ到達できないんだよね
最近はScalaとかSwiftとかの「割とモダンな言語」が基底型に型消去するみたいなコンパイルテクでゼロオーバーヘッドのラッパー定義できる言語が増えてる気がしているので、別にRustだけではないと思う。
Rustが気軽に定義できるって話なら、そりゃそうだと思うけれど
Value Objectが好きだけどオーバーヘッドが看過できない人向けの言語 → Rustすぎる
1시간 만에 완판! 걱정마세요 아직 대기 신청이 남아있습니다!
디버깅을 하다가 도저히 모르겠어서 Gemini한테 시켜서 해보라고했는데, 걔도 나랑 똑같은 시도를 한다음에 잘 모르겠다고 하니까 덤앤더머같다;;
✨ Hackers' Public 첫 오프라인 모임! ✨
Hackers' Pub 사용자들의 자발적인 모임, Hackers' Public이 📅 9월 14일(일) 오후 3시 ~ 6시 열립니다.
이번 모임에서는 많은 분들이 흥미로워할 두 가지 발표가 준비되어 있습니다:
- 🎨 Code As a Canvas: 코드에서 예술작품이 되기까지
- ✍️ 폰트는 어떻게 만들어지는가 – Neo둥근모 개발 후일담
또한 자유롭게 교류할 수 있는 네트워킹 시간도 마련되어 있으니 많은 관심 부탁드립니다 🙌
현재는 2차 모집 단계이며, 👉 신청은 포스터의 QR코드 또는 http://public.hackers.pub 에서 가능합니다. (두 경로 모두 동일한 이벤트 페이지로 연결됩니다)
2차 모집 기간은 9월 7일까지이며, 완판이 되었더라도 참가자 신청 대기하신 분 중에서 두분 정도 선정할 예정입니다!
洪 民憙 (Hong Minhee) shared the below article:
Fediverse Auxiliary Service Providers(FASP)の詳細解説
のえる @noellabo@hackers.pub
この記事では、Fediverseの課題を解決し、機能拡張を目指す新しいアーキテクチャ、Fediverse Auxiliary Service Providers(FASP)について解説します。FASPは、分散型ネットワークにおける検索・発見の限界や、セキュリティ・モデレーションの課題に対処するために開発されており、アカウント検索、コンテンツ検索、スパム検出などの機能を提供します。Mastodon gGmbHが主導し、NGI Searchプログラムからの資金提供を受けて開発が進められています。2025年にかけて基本仕様の公開、実装、テストが行われ、最終的にはFediverseエコシステム全体への拡大を目指しています。FASPは、Fediverseの可能性を大きく拡張する重要なプロジェクトであり、今後の進展が期待されます。
Read more →洪 民憙 (Hong Minhee) shared the below article:
Fediverse Auxiliary Service Providers(FASP)とは?
のえる @noellabo@hackers.pub
Fediverse Auxiliary Service Providers(FASP)は、分散型SNSであるFediverseの課題を解決するための「助っ人サービス」です。情報の探しにくさや小規模サーバーの不利といった問題を、検索サービス、スパム対策、トレンド表示といった機能で解消します。サーバー管理者はFASPを登録するだけで、高度な機能を外部サービスとして利用でき、ユーザーはどのサーバーにいても便利な機能を使えるようになります。Mastodonの最新バージョンで試験的な機能も登場しており、今後はスマホアプリなどからも利用可能になる予定です。FASPは、Fediverseをより便利で使いやすいSNSへと進化させる鍵となります。
Read more →Want to use C libraries in MoonBit? Now you can😆
With C-FFI, MoonBit can call native C functions — from low-level hardware ops to high-performance math.
A step-by-step guide to MoonBit’s C-FFI:
https://www.moonbitlang.com/pearls/moonbit-cffi
apkit書き直すか
해커스펍 오프라인 밋업 기대하고 있었는데 1차는 매진으로 못 사고 2차 기다리고 있었는데, 정신이 없어서 놓쳤네.. 담번엔 꼭 가봐야지
NeoVim Keybinding 사용 통계 보여주는 쓸만한 플러그인을 찾고 있다. 스스로 돌아보는 데에도 좋을 것 같고 다른 사람과 비교해보면서 유용한 패턴도 배워볼 수 있지 않을까
apmodel 0.4.0
書き直したばかりでまだドキュメント整備してないからもしも使いたいならソースコード見ながら使ってください
https://pypi.org/project/apmodel/0.4.0/
오랜만에 Termfedi 업데이트 Renote/React를 할 수 있게 Action 모드를 추가했다.
洪 民憙 (Hong Minhee) shared the below article:
한국의 eSIM 정책 문제점 분석
푸른곰 @purengom@purengom.com
서론 해외에서는 새 기기를 켜고 액티베이션 마법사만 따라가면 eSIM이 자동으로 이전되는 경험이 보편화되어 있습니다. 반면 한국은 여전히 IMEI/EID 전산 등록과 재다운로드 수수료(2,750원)가 당연한 절차로 남아 있습니다. 저는 이 구조가 보안 명분을 앞세운 과도한 통제이며, 결과적으로 소비자에게 비용과 불편을 전가한다고 판단합니다. 1) 자동 이전이 ‘가능한 […]
Read more →https://keivan.io/the-day-appget-died/
윈도 패키지 매니저 AppGet의 개발자가 WinGet 개발 과정에서 접촉했던 경험을 쓴 글.
MS가 오픈소스 친화적으로 바뀌고 있다고 하지만, 여전히 내부 문화가 매우 관료적이고 사내 정치가 toxic하다고 유명한데, 독립 개발자로서 MS와 컨택하는 일이 어떤 것인지 잘 알려주는 사례라고 봄.
Special thanks 한 줄만 적어줬어도 그가 분노하지는 않았겠지만, 그 한 줄 넣기가 어려운 게 Microsoft겠지.
쿼리도 뮤테이션도 프래그먼트도 내부스토어관리도 만들었다... 이제 개인용도 정도로는 사용할만 하지 않을까??? 그치만 relay-compiler 의존성을 버리고 싶다... 얘가 svelte 파일은 무시하고 쿼리도 무슨 리액트에나 맞는 이상한 네이밍 강요하고 수정해보려 해도 RIIR 당해서 플러그인 시스템도 사라지고 참별로다... 역시 페이스북이 만든 모든건 웹 생태계를 자기 중심에 맞추기 위한 음모다... (아무말)
컴파일러를 버리려면?? 역시 타입세이프 쿼리를 만들고 싶어...
일단 첫번째 목표였던 SvelteKit SSR에 맞게 load 함수에서 쿼리하게 만드는덴 성공했다... 이제 캐시 업데이트와 relay-compiler를 때려서 svelte 파일도 컴파일하도록 만들기와 그외등등이 남았다...
쿼리도 뮤테이션도 프래그먼트도 내부스토어관리도 만들었다... 이제 개인용도 정도로는 사용할만 하지 않을까??? 그치만 relay-compiler 의존성을 버리고 싶다... 얘가 svelte 파일은 무시하고 쿼리도 무슨 리액트에나 맞는 이상한 네이밍 강요하고 수정해보려 해도 RIIR 당해서 플러그인 시스템도 사라지고 참별로다... 역시 페이스북이 만든 모든건 웹 생태계를 자기 중심에 맞추기 위한 음모다... (아무말)
결국 SvelteKit용 자체 GraphQL 클라이언트를 만드는 중... (relay-runtime 기반이지만)
일단 첫번째 목표였던 SvelteKit SSR에 맞게 load 함수에서 쿼리하게 만드는덴 성공했다... 이제 캐시 업데이트와 relay-compiler를 때려서 svelte 파일도 컴파일하도록 만들기와 그외등등이 남았다...
Mastodonの引用ってどういう仕様だっけ
우부콘 코리아 2025에서 **"연합우주(Fediverse)란 무엇인가"**를 주제로 소개하는 세션을 가졌었는데, 그 때 쓰던 발표자료 한번 만들어놓으니까 "연합우주는 이런겁니다" 하고 던져주기 좋은 듯.....
발표자료는 여깄다네요... https://slides.kodingwarrior.dev/fediverse-onboarding-ubucon2025.pdf
포스터 본 사람들이 행사 참여 링크로 들어올 수 있게 QR코드를 넣었는데 너무 꽉찬 느낌이 들더라구요
시간이랑 정보는 어차피 행사 링크 들어가면 볼 수 있으니 빼는게 나을까요?
Parse, don’t validate는 언제 읽어도 좋은 글이다 https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
혹시 번역본이 편한 분은 여기에 번역본이 있습니다.(notJoon님 말고 다른 분들 보시라고 링크 달아 둡니다.)
https://eatchangmyeong.github.io/2022/12/04/parse-don-t-validate.html
@joonnotnotJoon
思い出すとここへ来る。
Parse, don’t validate는 언제 읽어도 좋은 글이다 https://lexi-lambda.github.io/blog/2019/11/05/parse-don-t-validate/
I just published a blog post on the use of type-level programming in TypeScript. It was originally a section of the larger post I’ve been alluding to but I broke it out and expanded it. It’s much more of an opinion piece than most things I write but I’d like to think I have a few decent insights in there. Please check it out and let me know what you think.
재밋는 빵셔널 하실 분
fp-ts 라는 함수형 라이브러리와 함께 화살표로 맛깔나는 설명을 해주십니다
https://dev.to/gcanti/getting-started-with-fp-ts-setoid-39f3
귀여운 마스코트는 21세기 현대 프로그래밍 언어 및 개발툴의 필수사항이며 그렇지 않은 툴은 귀여운 마스코트를 가진 툴 미만잡이다 반박시 코볼 쓰는 회사 취직함
vtsls 시도해봤다가 yarn pnp에서 go to definition이 망가졌고... 전혀 상관없을 것 같지만 왠지 denols의 go to definition도 망가졌다. 힘든 일요일이다.
Hackers' Public 포스터 완성~ https://public.hackers.pub/