제가 추천하는 ActivityPub 입문 가이드 목록입니다.

洪 民憙 (Hong Minhee)
@hongminhee@hackers.pub · 416 following · 277 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
흠, Nushell로 넘어가 볼까…?
나도 Fedify 처음 만들 때는 TypeScript에서 타입 서커스를 어떻게 잘 해서 Activity Vocabulary를 모델링하려고 했다가 때려쳤던 기억이 난다. 그 때는 복잡도 이전에 내가 그걸 만들 TypeScript 실력이 없었기 때문에 때려친 거긴 하지만. 현재의 Fedify는 그냥 코드 생성을 이용한다.
비록 이제는 나도 Git을 메인 형상 관리 시스템으로 사용하지만, Mercurial을 Git보다 먼저 배웠고 오랫동안 좋아했던 사람으로서 큰 Mercurial 저장소들이 하나 둘 Git으로 전환하는 것은 다소 씁쓸한 소식인 것 같다.
요즘 의욕도 없는데 이런 거나 한 번 만들어 볼까…
흠, 나도 Cursor를 다시 써 볼까… 🤔
I wish #Zed had profiles like Visual Studio Code. The interference between extensions is annoying. For example, Biome and Deno both try to do formatting.
요 며칠 동안은 Fedify 작업을 했고, 오늘은 오랜만에 Hollo 작업을 할 예정…이긴 한데, 주로 코딩보다는 PR 리뷰하는 게 주가 될 듯? 잘 하면 오늘 새 릴리스를 할 수도 있다.
5월 24일(土) 한국 연합우주 개발자 모임(FediDev KR)에서 두 번째 스프린트 모임을 개최합니다! 장소는 뚝섬역 5번 출구쪽에 위치한 튜링의 사과(@TuringAppleDev튜링의 사과)입니다.
참고로 스프린트 모임이란 함께 모여서 오픈 소스 코딩을 하는 자리인데, 한국 연합우주 개발자 모임의 스프린트에서는 새로운 연합우주 서비스나 앱을 개발하거나, 번역이나 문서에 기여하는 등 연합우주와 관련된 다양한 오픈 소스 활동을 모여서 함께 합니다. 지난 스프린트 모임의 기록을 스프린트 블로그(@sprints.fedidev.kr한국 페디버스 개발자 모임)에서 살펴보실 수 있습니다.
저는 그날 Fedify, Hollo, Hackers' Pub에 기여하시고자 하는 분들을 옆에서 도와드릴 예정입니다. Fedify, Hollo, Hackers' Pub에 기여해보고 싶었던 분들이 계시다면 모임에 참가하여 저와 함께 스프린트를 해보는 것도 좋을 것 같습니다.
이번 모임에 관심이 있으신 분은 행사 신청 페이지를 참고하시기 바랍니다.
바뀌지도 않은 코드가 잘 되다가 갑자기 안 되니 미치고 팔짝 뛰겠다…
Fedify에 드디어 RFC 9421을 얼추 구현했고, 이제 상호운용성 테스트를 위해 Mastodon의 특정 브랜치를 실제로 인스턴스로 띄워서 액티비티를 송수신해봐야 한다. 그런데 Mastodon 띄우기가 너무나 귀찮다… (Mastodon 띄우기 귀찮아서 ActivityPub 개발 시작한 사람.)
예전부터 생각하던 건데, git reset --hard
를 인자 없이 쓰면 git stash
로 동작하거나, 아니면 적어도 인자 없이 썼을 때 오류가 나게끔 설정할 수 있었으면 좋겠다. 별 생각 없이 날려도 괜찮겠지 싶어서 git reset --hard
쳤다가 몇 분 뒤에 후회하는 경우가 종종 있다.
@leetekwooteklee 님 어서 오세요!
요 며칠 코딩이 잘 안 되는 느낌… 아닌가, 원래 평소에도 이랬던가? 😑
The abbreviation #a11y itself is not very accessible. #accessibility
국산 코드에서 gubun
같은 식별자를 볼 때, 우리는 그게 왜 type
내지는 discriminator
가 아닌지 물을 것이 아니라, 어째서 구분
이 될 수 없는지를 물어야 한다.
혹시 Rails 프로젝트 좀 경험해보신 분 계신가요? Mastodon 저장소에서 단위 테스트를 돌리고 싶은데 어떻게 돌리는지 잘 모르겠습니다. 일단 bundle install
로 의존성은 다 설치해둔 상태입니다.
FedifyにRFC 9421を実装した後、昨晩からhttpsig.orgで生成(署名)したテストベクターとの照合を試みていたが、どう見てもテストに成功せず、一日を無駄にした末に、httpsig.orgで生成したテストベクターがhttpsig.orgでも検証に失敗するという事実を悟ってしまった。
먼 미래에는 어떻게 될 지 잘 모르겠지만, 일단 코딩 에이전트한테 LSP를 툴로 쥐어 줘야 하는 게 아닌가 하는 생각이 요즘 많이 든다.
Claude Code가 다 좋은데, Claude 모델들이 죄다 콘텍스트 윈도가 짧아가지고 금방 오토 컴팩션이 도는 탓에, 그러고 나면 하던 걸 죄다 까먹고 갑자기 바보가 된다…
Hackers' Pub은 기본 Markdown 문법 외에 다양한 확장 문법을 지원합니다. TeX을 통한 수식, 각주, 경고 박스(admonitions), 표, Graphviz를 통한 도표, 코드 블록에서 특정 줄만 강조하기 등…
마땅한 기술 블로깅 플랫폼을 못 찾았다면, Hackers' Pub도 고려해 보세요!
After reviewing FEP-5624: Per-object reply control policies and GoToSocial's interaction policy spec, I find myself leaning toward the latter for long-term considerations, though both have merit.
FEP-5624 is admirably focused and simpler to implement, which I appreciate. However, #GoToSocial's approach seems to offer some architectural advantages:
- The three-tier permission model (allow/require approval/deny) feels more flexible than binary allow/deny
- Separating approval objects from interactions appears more secure against forgery
- The explicit handling of edge cases (mentioned users, post authors) provides clearer semantics
- The extensible framework allows for handling diverse interaction types, not just replies
I wonder if creating an #FEP that extracts GoToSocial's interaction policy design into a standalone standard might be worthwhile. It could potentially serve as a more comprehensive foundation for access control in #ActivityPub.
This is merely my initial impression though. I'd be curious to hear other developers' perspectives on these approaches.
#FEP5624 #fedidev #fediverse #replycontrol #interactionpolicy
댓글 막기 옵션을 구현하려고 했더니, 연합우주에서 댓글을 막았다는 것을 나타내는 합의된 속성 같은 게 없는 것 같다. 내가 멋대로 어휘를 하나 정해서 써도 되겠지만… 음…
요 며칠 리니어 스위치가 달린 기계식 키보드 쓰다가 방금 정전용량 무접점 키보드로 바꿔보았다. 이건 이것대로 타건감이 좋아서 기분 전환이 되는 듯!
Hackers' Pub에 글 올릴 때 도표를 Graphviz로 그리면 좋은 점: 도표 안의 글자도 함께 번역된다!
Hackers' Pubに興味はあるけれど、DMで招待状をお願いするのは気が引けるという方のために、Googleフォームを作成しました。メールアドレスを入力するだけで、Hackers' Pubの招待状をお送りします。たくさんのご応募をお待ちしています‼️
현재 Hackers' Pub은 Fresh 2.0 알파 버전을 사용하고 있는데, Fresh 자체의 한계점도 많이 느꼈고 무엇보다 최근 몇 달 사이에 정식 릴리스를 향한 진전이 보이지 않기에 GraphQL 준비가 끝나면 프런트엔드를 SolidStart로 점진적으로 옮겨가고자 한다.
과연 나는 언제까지 compose.yaml에서 이미지 태그 수정하고 docker compose up -d
를 하는 수동 배포 방식을 유지할 것인가…
개인적으로 영단어 “side effect”의 가장 적절한 번역은 “부작용”이라고 생각하고, 실제로 프로그래밍 이외의 분야에서는 여전히 이 번역어를 가장 많이 쓰는 것 같은데… 사람들이 “부작용”을 副作用이 아니라 否(?)作用이라고 착각하는 것을 염려해서인지 프로그래밍 분야에서는 “부수 효과” 같은 번역어를 더 많이 쓰는 듯하다. “부작용”의 “부”(副)는 “사장”–“부사장”할 때의 “부”인데 말이다.
바이브 코딩이 아니라 바이브 코칭이다. LLM의 작업을 쉴 새 없이 살펴보며 이상한 짓 시도할 때마다 옆에서 코칭해 줘야 함…
흑흑… 안돼! (Hackers' Pub은 Deno로 돌아가고 있습니다…)
LLM으로 번역 기능 만드는데 원본 서식을 그대로 유지하게 하는 게 정말 어려운 것 같다…
.github/copilot-instructions.md, .cursorrules, .windsurfrules, CLAUDE.md… 이것 말고도 많이 있을텐데, 어차피 들어가야 하는 내용은 다 거기서 거기. 지금은 한 파일에 적고 심볼릭 링크로 같은 곳을 바라보게 하고 있지만, .editorconfig처럼 그냥 어떤 식으로든 표준화가 되었으면 좋겠다.
대충 만든 Open Graph 이미지 생성기도 좀 제대로 다시 짜야 하는데… 지금은 너무 울퉁불퉁함.
Hackers' Pub에 다국어 콘텐츠 기능 추가하는 중… 일단 맨 처음에는 기계 번역 먼저 넣고, 나중에 수동 번역 기능도 넣으려고 합니다.
Drizzle ORM이 어서 Temporal.Instant
를 지원했으면 좋겠다. 그 전에 드라이버가 먼저 지원해야 하려나? PostgreSQL의 timestamp with time zone
타입이 나노초 정밀도인데 Date
는 밀리초 정밀도라 값이 손실되고 있다.
@youknowone 님 어서 오세요!
저도 비슷한 생각인데, Haskell이나 Rust는 코너 케이스를 다루지 않고는 컴파일도 못 하게 금지하는 경우들이 꽤 많고 (그래서 좋은 언어지요), 빠르게 해피 패스만을 검증하고 싶을 때는 Python 같은 널널한 언어(복잡하고 규모가 큰 소프트웨어를 만들 때는 나쁜 언어가 되지요)가 쉽게 느껴질 수 있다고 생각합니다. 즉, Haskell이나 Rust가 어렵다고 말할 때의 어려움은 개념적 이해의 난도라기 보다는 시행착오의 커브의 경사를 얘기하는 것 같아요.
비슷한 측면에서 저는 Python의 들여쓰기를 강제하는 문법이 프로그래밍 초심자에게 좋은 습관을 처음부터 정착시키는 데에는 일조할 수 있겠지만, 결코 쉽지는 않다고 생각합니다.
RE: https://hackers.pub/@bgl/01967f97-67ab-7a98-a6e5-16cb3ef31856
Hackers' Pub 저장소에 보내주신 @perlmint 님과
@morealLee Dogeon 님의 CSS 및 PWA 관련 패치들이 모두 적용되어 배포까지 완료되었습니다.
- https://github.com/hackers-pub/hackerspub/pull/44
- https://github.com/hackers-pub/hackerspub/pull/45
- https://github.com/hackers-pub/hackerspub/pull/46
- https://github.com/hackers-pub/hackerspub/pull/47
여러분의 많은 기여 감사합니다. 🙏
참고로 현재 hackers.pub에 배포된 게 어떤 버전인지 알고 싶다면 https://hackers.pub/nodeinfo/2.1에 들어가셔서 software.version
을 보시면 됩니다. 버전의 마지막 부분인 빌드 넘버가 Git 커밋 해시입니다.
@cat나는낭만고먐미 님 어서 오세요!
Temporal.Instant
는 나노초 정밀도를 지원한다는 것 하나만으로 Date
뿐만 아니라 JavaScript 생태계의 다른 모든 대안 시간 라이브러리가 대체할 수 없는 API라고 생각한다. 표준인데다 쓰기 쉬운 API는 덤.
몰랐는데 WezTerm을 만든 Wez Furlong이 원래 Watchman 만든 사람이었구나.
Hackers' Pub에 GraphQL API를 추가하고 있습니다. https://hackers.pub/graphql가 GraphQL 엔드포인트입니다. 아직 인증 기능도 없고 노출된 노드도 얼마 없습니다만, 차차 추가해 나갈 예정입니다. 다음은 예시 쿼리입니다:
{
actorByHandle(handle: "@hongminhee@hackers.pub") {
uuid
iri
type
handle
instance {
host
software
softwareVersion
}
name
bio
avatarUrl
url
}
}
@like_keyboard호띠 님 안녕하세요, 어서 오세요!