다른 연합우주 서버로부터 앙케트 조사를 담은 Create(Question)
액티비티가 자주 들어오고 있는데, Hackers' Pub에서도 적어도 앙케트 조사를 열 수는 없어도 참여할 수는 있게 해야 하나 고민하고 있다. 그런데 이것도 결국 UI가 귀찮은 문제인데…

洪 民憙 (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
Hackers' Pub에도 #해시태그 기능이 추가되었습니다.
Hackers' Pub은 검색에서 몇 가지 기본적인 문법들을 지원하고 있습니다. 문서화되지 않았기 때문에 한 번 정리해 봅니다.
문법 | 설명 | 예시 |
---|---|---|
" 키워드 " |
따옴표 안에 들어간 문자열을 띄어쓰기를 포함하여 찾습니다. 대소문자는 구분하지 않습니다. (따옴표 안에 따옴표를 넣으려면 \" 와 같이 이스케이프.) |
"Hackers' Pub" |
from: 핸들 |
해당 사용자가 쓴 콘텐츠만 추립니다. | from:hongminhee from:hongminhee@hollo.social |
lang: ISO 639-1 |
해당 언어로 쓰여진 콘텐츠만 추립니다. | lang:ko |
# 태그 |
해당 태그가 달린 콘텐츠만 추립니다. 대소문자는 구분하지 않습니다. |
#Fedify |
조건 조건 |
띄어쓰기 양 옆의 조건을 모두 만족하는 콘텐츠만 추립니다(논리곱). | "Hackers' Pub" lang:ko |
조건 OR 조건 |
OR 연산자 양 옆의 조건 중 하나라도 만족하는 콘텐츠를 추립니다(논리합). |
해커즈퍼브 OR "Hackers' Pub" lang:ko |
( 조건 ) |
괄호 안의 연산자들을 먼저 결합합니다. | (해커즈퍼브 OR 해커즈펍 OR 해커스펍) lang:ko |
구체적인 동작 방식은 Hackers' Pub 소스 코드를 보시면 더 자세히 알 수 있습니다.
드디어 @xtjuxtapose 님이 기다리시던 차단 기능이 구현되었습니다. 차단할 사용자의 프로필 페이지에 가서 팔로·언팔로 버튼 오른쪽에 보이는 말줄임표 아이콘에 마우스 커서를 갖다 대면 (모바일에서는 터치하면) 상세 메뉴가 나오는데, 그 안에 팔로워 삭제 버튼과 차단 버튼이 생겼습니다.
ActivityPub 프로토콜 수준에서는 차단은 Block
액티비티를 차단한 액터에게 보내며, 차단을 해제할 경우 Undo(Block)
액티비티를 보냅니다. 그러나, 그 액티비티를 받은 인스턴스의 구현이 차단한 사용자의 콘텐츠를 볼 수 없도록 막지 않을 수도 있습니다…만, 실질적으로는 모든 구현이 막고 있습니다. 아, 당연하지만 차단은 자동적으로 상호 언팔로를 수행합니다. 차단을 해제하더라도 풀렸던 팔로 관계는 자동적으로 회복되지 않습니다.
Hackers' Pub에 차단 구현하면서 지금 만들고 있는 코드인데… fromAccountToTarget
/fromTargetToAccount
말고 좀 더 짧으면서 좋은 이름이 없을까? 🤔
export type RelationshipState =
| "block"
| "follow"
| "request"
| "none";
export interface Relationship {
account: Account & { actor: Actor };
target: Actor;
fromAccountToTarget: RelationshipState;
fromTargetToAccount: RelationshipState;
}
Hackers' Pub에 차단 기능을 구현합니다.
차단 기능의 밑작업으로… 차단 당하는 기능을 만들었습니다. Hackers' Pub 사용자 여러분은 이제 연합우주 내 다른 인스턴스의 사용자로부터 차단 당할 수 있습니다. ActivityPub의 Block
액티비티 및 Undo(Block)
액티비티를 수신하고 처리할 수 있게 되었다는 뜻입니다. 하지만 아직 차단을 하는 건 안 됩니다. 오늘은 일단 여기까지 하기로 하고… 차단 기능은 아마 내일이나 완성될 것 같군요.
어떻게 git reset --hard
를 막아놓든가 해야지, 가끔 가다 한 번씩 꼭 실수로 작업하던 걸 날려서 후회를 하네…
Hackers' Pub에 차단 기능을 만들다 보니 일단 모델 쪽에서 팔로워 삭제 기능이 필요하다는 것을 깨달았다. 즉시 하던 작업 다 git stash
하고 팔로워 삭제 먼저 만드는 중… (하지만 UI로 노출하는 건 나중에 할 생각.)
Hackers' Pub에 차단 기능을 만들고 있는데, A가 B를 차단했을 때 A가 B의 콘텐츠를 볼 수 있어야 한다고 생각하시나요? 물론 타임라인 등에서는 기본적으로 다 가려지겠지만, B가 올린 콘텐츠의 퍼머링크를 굳이 찾아서 들어갔을 때 말이죠. 아, 당연히 B 입장에서는 A의 콘텐츠는 전혀 볼 수 없고요. (A가 공개로 올린 콘텐츠를 B가 로그인하지 않은 채 볼 수야 있겠지만…)
생각해 보니 에모지 반응 찍을 때 게시물이 Mastodon에서 작성된 경우에는 선택지를 없애는 게 나으려나…? Like
액티비티로 표현되는 ❤️ 이외에는 모두 Mastodon이 받아들이지 않는 EmojiReact
액티비티로 표현되기 때문에, 게시물 작성자가 어차피 에모지 반응을 볼 수 없으므로…
사실 Hackers' Pub 같은 거 운영하면서 최신 DevOps도 배우고 좀 그래야 하는데…
GeekNews가 자체적으로 ActivityPub을 구현하면 정말 좋을 것 같은데, 아마 그렇게 되는 것보다 Hackers' Pub에 링크 집계 기능을 넣는 게 더 빠르겠지…
PostgreSQL 내장 전문 검색의 가장 큰 문제는 성능이 아니라, 색인을 만들거나 검색할 때 대상 언어를 지정해야 한다는 것. 당연히 언어가 섞여 있으면 제대로 동작 안 하고, 색인하려는 내용이 어떤 언어로 작성되었는지 모를 때도 곤란하다.
技術者向けSNS「Hackers' Pub」の招待枠を持っています。ActivityPubに対応し多言語サポートもある、エンジニアや技術に興味がある方のためのコミュニティです。参加希望の方はDMやコメントでメールアドレスをお知らせください。招待状をお送りします。
#HackersPub #テック #プログラミング
RE: https://hackers.pub/@hongminhee/0195faee-783f-7d33-ad90-88c497655ab9
GeekNews의 〈소프트웨어 엔지니어로 산다는 건 미친 짓이야〉 주제에 @youknowone 님께서 쓰신 좋은 댓글:
소프트웨어 개발이 어려운 일이라는 사람들은 본인이 그 일을 하는 이유가 뭘까요? 고되고 힘든 일이지만 보람있는 일이라서 하시나요? 이 업계에서 그런 분들은 그리 많지는 않았던 것 같습니다. 남들이 못하는 것 같으니까 어렵다고 주장하는거지, 실상은 그게 본인한테 가장 쉬운 일이니까 하시는 것 아닌가요? 남들이 좀 띄워준다고 자화자찬하면서 나만 특별한 양 여기면서 눈을 가리지 말고 주위를 봐야합니다. 이공계에서 어떤 분야가 방구석에서 인터넷 좀 보고 독학한다고 (잘 하면) 몇달만에 현업에 투입할 수 있는 전문가가 됩니까?
(…중략…)
물론 남들이 가지지 못한 훌륭한 손재주를 가진 사람은 존중받아 마땅하지만, 약간의 손재주를 연마했다고 해서 소싯적 배워둔 손재주로 평생 먹고 살면 좋을텐데 왜 그럴수 없을까, 나는 이런 훌륭한 손재주를 가졌는데 다른 사람들처럼 힘들게 일하지 않아야 하는 것 아닐까, 나는 남들은 쉽게 하지 못하는 대단한 재능을 가진 것이 아닐까 등등의 특별한 나에 심취하는건 교만에 가까운 일이 아닐까 합니다.
@zerodice0검은곰 님, 어서 오세요!
메타적인 얘기지만, 저는 오늘 “Kubernetes는 적정 기술인가?”라는 떡밥이 Hackers' Pub 내부적으로 발생했다는 사실이 아주 기쁩니다. 여태까지는 Hackers' Pub 자체에 대한 떡밥이거나, GeekNews나 X에서 넘어온 떡밥이었거든요.
PostgreSQL에서는 GENERATED ALWAYS AS
절을 통해 생성된 칼럼을 지원하는데, 이게 간단한 사칙연산이나 문자열 연결 정도는 쉽게 가능하지만, 이 안에서 서브쿼리를 쓸 수 없기 때문에 조금만 복잡한 계산도 할 수가 없다. 나 같은 경우에는 {"foo": 1, "bar": 2, "baz": 3}
과 같은 jsonb
값이 있을 때 이로부터 6
과 같은 합산을 해야 하는 상황인데, sum()
같은 집계 함수를 쓸 수 없기 때문에 원하는 동작을 만들어 내지 못한다… 최후의 카드로 커스텀 함수 정의해서 쓰는 방법이 있긴 한데… 음…
개판으로 짜 뒀던 Hackers' Pub 코드, 더이상은 무리라서 리팩터링을 조금씩 해보고 있다. (여러분이 생각하는 것 이상으로 개판입니다.)
Hackers' Pub의 에모지 반응 기능은 Mastodon의 좋아요, Misskey 계열, Pleroma 계열, kmyblue 및 Fedibird의 에모지 반응 기능과 호환됩니다. 기술적으로는 기본 에모지인 ❤️는 Like
액티비티로 표현되며 그 외 나머지 에모지는 EmojiReact
액티비티로 표현됩니다. Mastodon, kmyblue, Fedibird의 좋아요는 ❤️ 에모지 반응으로 변환됩니다 (Misskey의 동작과 유사). 또한, Misskey 계열과 달리 한 사람이 한 콘텐츠에 여러 에모지 반응을 남길 수도 있습니다 (Pleroma 계열의 동작과 유사). Hackers' Pub 사용자가 남길 수 있는 에모지 반응은 ❤️, 🎉, 😂, 😲, 🤔, 😢, 👀 이렇게 7종이며, 그 외의 에모지 및 커스텀 에모지는 보낼 수는 없고 받는 것만 됩니다.
에모지 반응 기능이 배포되었습니다. 당분간 버그가 좀 있을 수도 있지만 양해 바랍니다. 전 이제 차단을 구현하러 가겠습니다…
ANSI SQL 표준에서 NULL
값이 서로 DISTINCT
하지 않은 것은… 그 성질이 아주 편할 때도 많지만, 그렇지 않을 때는 아주 골치가 아프다. 특히 UNIQUE
제약 조건이나 색인과 결부되면 더욱 그렇다.
Kubernetes를 아직도 쓸 줄 모르는 1人… Hackers' Pub도 그냥 Docker Compose로 운영하고 있습니다. 🙄
RE: https://hackers.pub/@ujuc/0196189f-1c95-7120-831b-27d7c51e8f38
패치 릴리스할 때 되도록이면 많은 버그 수정을 하나의 릴리스에 담고 싶은 충동.
JavaScript에 Object.map()
같은 함수 하나 있었으면 좋겠다. 맨날 Object.fromEntries(Object.entries(obj).map(...))
하기 귀찮다. (게다가 TypeScript에서 타입도 보존이 안 되어서 as
키워드 써야 함…)
주말에 했던 〈국한문혼용체에서 Hollo까지〉의 발표에서 대강:
- 연합우주에서도 국한문혼용체로 글을 쓰는데 사람들이 읽기 쉽게 한글 독음을
<ruby>
태그로 달고 싶다! - Mastodon에 패치를 할 수는 있지만 업스트림에 받아들여질 리가 없으니 패치된 Mastodon 서버를 직접 운영할 수 밖에 없다.
- 혼자 쓰자고 Mastodon 서버를 운영하려니 비용이 크다. 가벼운 ActivityPub 서버 구현을 만들어야겠다.
- ActivityPub 서버 구현을 바닥부터 하자니 할 일이 너무 많다. ActivityPub 프레임워크를 만들어야겠다. → Fedify
- Fedify를 만들었으니 일인 사용자용 ActivityPub 서버를 구현하자. → Hollo
- Hollo를 만들었으니 Seonbi를 연동하자.
- Seonbi를 연동하여 한자어에 한글 독음이
<ruby>
로 달게 했으나 Mastodon과 Misskey에서<ruby>
태그를 지원 안 한다. - Mastodon 쪽에 이슈를 만들고 연합우주에서 홍보하여 결국 패치됨. Mastodon에서도
<ruby>
지원! - Misskey 쪽에 패치를 보내서 결국 Misskey에서도
<ruby>
지원! - 행복한 국한문혼용 생활.
이상과 같은 이야기를 했더니, “야크 셰이빙이 엄청나다”라는 의견을 들었다.
RE: https://hackers.pub/@hongminhee/019603e0-33ef-700f-90f4-153c8c995135
Prisma를 쓰지 않을 이유가 하나 더 추가되었다…
Hackers' Pub에 리액션 기능 만들고 있는데, 선택 가능한 에모지 세트를 이 정도로 대충 정해봤습니다. 더하거나 뺄 게 있을까요? 그리고 5 종류인 게 많다고 보시나요 적다고 보시나요?
연합우주 계정의 이전에 관한 규격인 FEP-7628를 구현하고 있습니다. 아직 Hackers' Pub 계정을 다른 계정으로 이전하거나, 다른 계정을 Hackers' Pub 계정으로 이전하는 기능은 구현되지 않았지만, 그 밑작업으로서 FEP-7628을 이미 구현한 Mastodon, Misskey, Pleroma 등의 계정끼리 서로 이전한 것을 반영하는 기능은 구현되었습니다. 예를 들어, 제 옛날 계정 중 하나인 @hongminhee洪 民憙 (Hong Minhee) 계정을 보면 첨부한 캡처 화면처럼 계정의 이전 안내가 표시되게 됩니다.
오늘은 시간이 없어서 큰 작업은 못 하고, 그냥 아주 소소한 업데이트 하나 했습니다. 과연 뭐가 바뀌었을까요? (참고로 UI로도 드러나는 변화입니다.)
하지만 이식성을 위해서 짧은 옵션을 사용해야만 할 때도 있다. BSD 계열의 커맨드 구현들은 보통 긴 옵션을 아예 제공 안 하기 때문에… 😭
일본에 Fediverse Linux Users Group이라는 모임이 있는데, 거기서 〈국한문혼용체에서 Hollo까지〉라는 이상한 주제로 오늘 발표를 합니다…
RE: https://hollo.social/@hongminhee/019603c7-b5ef-7d81-bbd4-4c37d46edce9
正體中文翻譯現已可用!
我們很高興地宣布,Hackers' Pub 現在支援正體中文(zh-TW
)!這意味著我們的介面將更加親近使用正體中文的軟體工程師和技術愛好者。
關於 Hackers' Pub
Hackers' Pub 是一個專為軟體工程師共同分享知識和經驗的平台。我們不僅是一個社區,還是一個啟用了 ActivityPub 的社交網路,讓您可以在聯邦宇宙(fediverse)中關注您喜愛的開發者,並在您的訂閱流中獲取他們的最新貼文。
我們的特色:
- 開放的技術交流:自由分享您的知識、經驗和見解
- 多語言支援:現在包括正體中文在內的多種語言
- 聯邦互連:通過 ActivityPub 協議與其他平台(如 Mastodon)互通
- 程式碼分享:支援 Markdown 和程式碼語法高亮
- 包容性社區:遵循我們的行為準則,確保所有人都受到尊重
如何切換到正體中文
要將介面切換到正體中文,請按照以下步驟操作:
- 登入您的 Hackers' Pub 帳戶
- 前往「Settings」頁面
- 選擇「Language settings」標籤
- 在左側「Languages to select:」列表中找到並點擊「Chinese (Taiwan) 中文(台灣)」
- 該選項會移至右側的「Selected languages:」列表
- 如果您希望將正體中文設為主要介面語言,可以使用箭頭按鈕將其移至已選擇語言列表的最上方
- 點擊頁面底部的「Save」按鈕保存設定
我們也提供了正體中文版的 Markdown 指南,幫助您以最佳方式格式化您的貼文和文章。
加入 Hackers' Pub
Hackers' Pub 目前採用邀請制。如果您希望加入我們的社區,可以通過直接發送私人訊息(DM)給我來請求邀請碼。我們非常歡迎正體中文使用者的加入!
幫助我們改進
這是我們首次推出正體中文介面,可能仍有需要改進的地方。如果您發現任何翻譯錯誤或有改進建議,請透過以下方式聯繫我們:
- 在 GitHub 儲存庫中提交問題或拉取請求
- 在我們的討論區分享您的反饋
感謝您成為 Hackers' Pub 社區的一員,讓我們一起建立一個更加包容、多元的技術交流平台!
附言:如果您對其他語言的翻譯感興趣,請查看我們的翻譯貢獻指南(英文)。
@ryugeunsu유근수 님, 어서 오세요!
Hackers' Pub의 소스 코드 저장소를 제 개인 계정에서 hackers-pub 조직 계정으로 옮겼습니다.
@6aoi24aoi🏳🌈 さん、Hackers' Pubへようこそ!
【拡散希望】
Hackers' Pub(ハッカーズ・パブ)は現在開発中の、ソフトウェアエンジニアと技術愛好家の為のActivityPub対応ソーシャルネットワークです。現在は韓国語中心のコミュニティが形成されていますが、日本のエンジニアの方々にも参加していただきたいと考えています。
Hackers' Pubは短文の投稿[1]と長文の記事[2]の両方をサポートしています。日常的な会話や簡単な質問は短文投稿で、詳細な技術解説やチュートリアルなどは長文記事で表現できます。QiitaやZennのような技術ブログ機能と、MastodonやMisskeyのようなタイムライン機能を兼ね備えた一つのプラットフォームで、両方の利点を享受できます。何よりもActivityPubプロトコルに対応している為、Mastodon、Misskey、Akkoma等と連携可能です。(このアカウントもHackers' Pubから投稿しています!)
技術的な特徴として、拡張Markdownによるテーブル、脚注、警告ボックス、ダイアグラム、数式などの多様な記法をサポートし、構文ハイライト、行ハイライト、差分表示などの強力なコードブロック機能も備えています。また、様々な言語での投稿が可能で、将来的には自動翻訳機能も予定しています。
Hackers' PubはAGPL-3.0ライセンスの下で開発されているオープンソースプロジェクトです。コードの貢献や機能提案も歓迎しています。
現在はまだ開発段階のため招待制となっています。Hackers' Pubに興味がある方は、DMや返信でメールアドレスをお知らせいただければ、招待状をお送りします。技術コミュニティの一員として、ぜひご参加をお待ちしております。よろしくお願いいたします。
@gnh1201고남현 님, 어서 오세요!
이제 정말로 좋아요·에모지 반응 기능을 구현할 때가 왔다… 하지만 일단 낼모레 있을 第8回FediLUG勉強会 발표 준비부터 해야 한다…
@darkriss다크리스 안녕하세요, 어서 오세요!
@ash_kim0082kimBBang 님, 안녕하세요!
지금 Hackers' Pub에는 Fresh 2.0 알파를 쓰고 있는데, 여러 가지 아쉬운 점이 많지만 그 중 하나가 아일랜드 컴포넌트로 콘텍스트가 전달이 안 된다는 것. 현재 아일랜드 컴포넌트에는 로캘 같은 정보를 일일히 프랍(prop)으로 넘겨줘야 한다…
RE: https://hackers.pub/@kodingwarrior/0195f94d-61f3-7cab-8a34-f2a8ab0f9a4a
Claude Sonnet 3.7이 콘텍스트 윈도만 좀 더 컸더라면…
Hackers' Pub에 이제 알림 기능이 생겼습니다. 우상단 프로필 사진 바로 왼쪽에 알림 아이콘이 추가되었고, 이제 읽지 않은 알림이 있을 경우 그 위에 빨간 동그라미가 표시됩니다. 알림의 종류는 현재 다음 다섯 가지입니다:
- 누가 날 팔로했을 때
- 누가 날 언급했을 때
- 누가 내 글에 답글을 달았을 때
- 누가 내 글을 인용했을 때
- 누가 내 글을 공유했을 때