Profile img

Hi, I'm who's behind Fedify, Hollo, BotKit, and this website, Hackers' Pub! My main account is at @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

Fedify, Hollo, BotKit, 그리고 보고 계신 이 사이트 Hackers' Pub을 만들고 있습니다. 제 메인 계정은: @hongminhee洪 民憙 (Hong Minhee) :nonbinary:.

FedifyHolloBotKit、そしてこのサイト、Hackers' Pubを作っています。私のメインアカウントは「@hongminhee洪 民憙 (Hong Minhee) :nonbinary:」に。

Website
hongminhee.org
GitHub
@dahlia
Hollo
@hongminhee@hollo.social
DEV
@hongminhee
velog
@hongminhee
Qiita
@hongminhee
Zenn
@hongminhee
Matrix
@hongminhee:matrix.org
X
@hongminhee
3

🚀 Deno v2.2.9 is released!

🦕 Improves Node compat: fs.FileHandle.createReadStream, Buffer.copyBytesFrom, spawnSync.input
🦕 fixes windows icons for deno compile
🦕supports backticks in deno task
🦕 Faster npm installs

release notes here:
github.com/denoland/deno/relea

3
1

회사의 Private Network 환경에서만 발생하는 간헐적 alpine docker build hang 문제가 있었다. 이 문제의 원인은 MSS(Maximum Segment Size) 경계에 걸친 패킷이 alpine apk 의 DF(Don't Fragment) flag 때문에 적절히 분할되지 못해 생기는데에 있었다. (방화벽 문제도 있지만 이건 원인을 정확히 모르겠다.)

기록해 둘만한 재미있는 현상이어서 글로 정리를 하고 싶었는데 안타깝게도 회사 밖에선 재현이 어렵네.

암튼, Private Network 환경에서 간헐적으로 docker 의 동작이 달라진다면 bridge interface 의 MTU 를 조정해 볼 것을 추천한다.(특히 alpine)

4

Fedify 통으로 프롬프트 넣을때 Repomix 설정값은 이렇게 가야겠다.
platform.openai.com/docs/model 기준으로 봤을때 Context Window Length는 200K 토큰 정도 되는데, 여기에 어떻게든 쥐어짜내려면 ignore pattern을 요렇게 가는게 좋을 듯

```
docs/**/*.*, src/codegen/__snapshots__/class.test.ts.snap, src/vocab/__snapshots__/vocab.test.ts.snap, CHANGES.md
```

1

🗨️Discuss: How should MoonBit handle effect polymorphism (allow one single higher order function to work over callback with/without error or async)?

1. Error + Async
2. Error only
3. No polymorphism, dup code
4. Hybrid/Other solution

⬇️Download: aka.moonbitlang.com/vsm
👥Community: discord.gg/5d46MfXkfZ

0

드디어 @xtjuxtapose 님이 기다리시던 차단 기능이 구현되었습니다. 차단할 사용자의 프로필 페이지에 가서 팔로·언팔로 버튼 오른쪽에 보이는 말줄임표 아이콘에 마우스 커서를 갖다 대면 (모바일에서는 터치하면) 상세 메뉴가 나오는데, 그 안에 팔로워 삭제 버튼과 차단 버튼이 생겼습니다.

ActivityPub 프로토콜 수준에서는 차단은 Block 액티비티를 차단한 액터에게 보내며, 차단을 해제할 경우 Undo(Block) 액티비티를 보냅니다. 그러나, 그 액티비티를 받은 인스턴스의 구현이 차단한 사용자의 콘텐츠를 볼 수 없도록 막지 않을 수도 있습니다…만, 실질적으로는 모든 구현이 막고 있습니다. 아, 당연하지만 차단은 자동적으로 상호 언팔로를 수행합니다. 차단을 해제하더라도 풀렸던 팔로 관계는 자동적으로 회복되지 않습니다.

언팔로 버튼 오른쪽에 말줄임표 모양의 아이콘이 보이며, 그 아래 드롭다운 메뉴가 보인다. 드롭다운 메뉴에는 팔로워 삭제 버튼과 차단 버튼이 보인다.
12

h1 태그의 기본 스타일이 변경됩니다
------------------------------
- 주요 브라우저들이
<h1> 태그의 기본 스타일(UA 스타일)을 변경하는 업데이트를 진행 중임
- 특히 중첩된
section, article, nav, aside 등의 내부에서 사용된 <h1>에 영향을 줌
- 개발자들은 이 변경으로 인해 사이트에 예기치 않은 스타일 변화나 Lighthouse 경고가 발생할 수 있으므로 주의가 필요…
------------------------------
https://news.hada.io/topic?id=20275&utm_source=googlechat&utm_medium=bot&utm_campaign=1834

0
0

Hackers' Pub에 차단 구현하면서 지금 만들고 있는 코드인데… fromAccountToTarget/fromTargetToAccount 말고 좀 더 짧으면서 좋은 이름이 없을까? 🤔

export type RelationshipState =
  | "block"
  | "follow"
  | "request"
  | "none";

export interface Relationship {
  account: Account & { actor: Actor };
  target: Actor;
  fromAccountToTarget: RelationshipState;
  fromTargetToAccount: RelationshipState;
}
3

Hackers' Pub에 차단 구현하면서 지금 만들고 있는 코드인데… fromAccountToTarget/fromTargetToAccount 말고 좀 더 짧으면서 좋은 이름이 없을까? 🤔

export type RelationshipState =
  | "block"
  | "follow"
  | "request"
  | "none";

export interface Relationship {
  account: Account & { actor: Actor };
  target: Actor;
  fromAccountToTarget: RelationshipState;
  fromTargetToAccount: RelationshipState;
}
2

@Cyan시안 (비활성화됨) 전맹인 경우에는 커모지가 문제가 될 것 같긴 하네요. 저시력(약간이라도 시력이 있는) 경우에는 확대해서 볼 수 있다 싶어서 오히려 괜찮을 것 같습니다. 커모지는 ASCII 아트처럼 텍스트가 아닌 콘텐츠로 간주될 듯 하고 설명이 별도로 제공되는 편이 좋겠습니다. 어떻게 설명할 거냐는... 경우에 따라 분명치 않기는 합니다만...

1
1

2025() 오픈소스 컨트리뷰션 아카데미 參與型(참여형) 멘토() 募集(모집) 公告(공고)가 떴다. Fedify 프로젝트의 메인테이너로서 멘토()志願(지원)하고자 한다. 志願書(지원서).hwp 파일이기에 큰 맘 먹고 한컴오피스 한글 for Mac도 購入(구입)했다. (아무래도 앞으로 .hwp 파일 다룰 일이 많을 것 같다는 豫感(예감)이 들어서…)

6
5
5
3
3

최근에 추천사를 썼던 책이 있는데요. 이 교재를 활용해서 LLM AI 에이전트를 개발해볼까합니다. 제가 자원봉사(?)를 하고 있는 곳에서 컨텐츠 팀을 담당하고 있는데, 거기서 하는 일 중 하나가 뉴스레터 발행입니다.

TLDR 뉴스레터처럼 링크들을 오마카세처럼 모아서 양질의 콘텐츠를 제공하는게 목표인데, 그런 데이터를 모으기 위해서 최대한 아티클들을 모아서 요약해주는 봇을 만들어야겠다는 판단이 들었습니다. 언어 LLM 관련된 리소스도 많은 파이썬을 쓰게 될 것 같고, 서버 프레임워크는 컨텐츠 관리(어드민페이지)의 수월함을 위해서 Django를 쓰게 될 것 같습니다.

https://product.kyobobook.co.kr/detail/S000216210672



RE: https://hackerspub-ask-bot.deno.dev/message/01962280-fc29-748e-9ba8-fad032795e0d

5

이 글을 작성한 이후로 바로 Ask 봇을 만들었는데, 생각보다 오래 걸리지 않았다.

  1. @fedify/botkit 리포지토리를 RepoMix에다가 넘겨서 프롬프트로 변환한다.
  2. 1에서 넘겨받은 프롬프트를 ChatGPT(o3-mini-high)한테 입력 넣어서 주기적으로 글 작성하는 봇 만들어달라고 한다.
  3. Cron 돌리는 스크립트 넣어달라고 하는등 티키타카를 한다.
  4. 부족한 부분은 BotKit 문서 보면서 채운다.

이렇게 하니까 1시간 컷 찍음



RE: https://hackers.pub/@kodingwarrior/0196222c-4b5a-783e-9dd8-8dc5f3e90202

1

# Ask Hackers Pub : 이번 주말에 뭐 하시나요?

이번 주말에 뭘 하려고 계획 중인지 편하게 얘기해 보아요.
읽을 책, 가볼 곳, 해볼 것.. 어떤 것이든 좋습니다.
도움 요청이나 피드백 요청도 좋습니다.
물론! 아무것도 하지 않고 쉬는 것도 훌륭합니다.

* 지난 주말에 계획하셨던 일의 회고도 한 번 남겨보면 좋을 것 같아요.

1
0
1
0

차단 기능의 밑작업으로… 차단 당하는 기능을 만들었습니다. Hackers' Pub 사용자 여러분은 이제 연합우주 내 다른 인스턴스의 사용자로부터 차단 당할 수 있습니다. ActivityPub의 Block 액티비티 및 Undo(Block) 액티비티를 수신하고 처리할 수 있게 되었다는 뜻입니다. 하지만 아직 차단을 하는 건 안 됩니다. 오늘은 일단 여기까지 하기로 하고… 차단 기능은 아마 내일이나 완성될 것 같군요.

5
1

@hongminhee洪 民憙 (Hong Minhee) 방금 신기능 확인하러 들어가 봤는데, 실제 렌더링 결과를 보니 드는 생각이 있어 의견 드립니다. 그냥 🗙 를 쓰는 것은 좀 위험하지 않을까 하는... 🗙 는 단순한 "창 닫기"의 의미로도 많이 쓰이기 때문에, 팔로어 목록도 일종의 인박스("이 사람이 당신을 팔로했습니다" 같은)로 여겨서, 각각의 상자를 대수롭지 않게 🗙 를 눌러서 없애 버리려고 하는 일이 발생하지 않을까 싶습니다.

"블언블"에 해당하는 강력한 조치이니만큼, 함부로 누를 수 없게 "빨간 버튼" 급의 경고가 있어야 하지 않나 하는 생각입니다. 이상적으로는 ellipsis 메뉴 안에 숨기고, ellipsis 눌러서 메뉴를 띄우면 적어도 "빨간 버튼"에 준하는 (즉 딱 봐도 위험해 보이는) 항목으로 등장하면 좋겠네요.

0

Hackers' Pub에 차단 기능을 만들다 보니 일단 모델 쪽에서 팔로워 삭제 기능이 필요하다는 것을 깨달았다. 즉시 하던 작업 다 git stash하고 팔로워 삭제 먼저 만드는 중… (하지만 UI로 노출하는 건 나중에 할 생각.)

UI로 노출하는 건 나중에 만드려고 했지만, 어차피 테스트도 해야 해서 UI로도 노출했습니다. 자신의 팔로워 목록 페이지에 가시면 각 팔로워마다 오른쪽 위에 X 모양 아이콘이 생겼을 겁니다. 그걸 누르면 팔로워를 삭제할 수 있습니다. (X로 치면 “블언블”한 효과.)

3
2

Want to create a for the ? by @fedifyFedify: ActivityPub server framework lets you build standalone bots with just a few lines of code! Unlike traditional Mastodon bots, BotKit helps you create complete ActivityPub servers without platform constraints.

With BotKit, you can:

  • Build bots that respond to mentions, follows, and messages
  • Create rich content with formatted text, mentions, and media
  • Publish scheduled posts and automatically manage conversations
  • Deploy easily on Deno Deploy, Docker, or self-hosted servers

Check out our documentation at https://botkit.fedify.dev/ and start building your fediverse bot today!

()를 위한 봇을 만들고 싶으신가요? by Fedify를 사용하면 몇 줄의 코드만으로 독립형 봇을 구축할 수 있습니다! 일반적인 Mastodon 또는 Misskey 봇과 달리, BotKit은 플랫폼 제약 없이 완전한 ActivityPub 서버를 만들 수 있게 도와줍니다.

BotKit으로 할 수 있는 것:

  • 멘션, 팔로우 및 메시지에 응답하는 봇 만들기
  • 형식화된 텍스트, 멘션 및 미디어가 포함된 풍부한 콘텐츠 생성
  • 예약된 게시물 발행 및 대화 자동 관리
  • Deno Deploy, Docker 또는 자체 호스팅 서버에 쉽게 배포

문서는 https://botkit.fedify.dev/에서 확인하시고 지금 바로 연합우주 봇을 만들어 보세요!

0
5
3

Hackers' Pub에 차단 기능을 만들다 보니 일단 모델 쪽에서 팔로워 삭제 기능이 필요하다는 것을 깨달았다. 즉시 하던 작업 다 git stash하고 팔로워 삭제 먼저 만드는 중… (하지만 UI로 노출하는 건 나중에 할 생각.)

4
7

@hongminhee洪 民憙 (Hong Minhee) 트위터 같은 경우는 내가 차단한 사용자의 페이지를 퍼머링크 등으로 굳이 찾아 들어갔을 때 경고 다이얼로그 형태의 UI 를 띄우고, 거기서 확인을 누르면 비로소 내용을 보여주는 식으로 동작하더군요. 괜찮은 해법이라고 생각했었습니다.

1

생각해 보니 에모지 반응 찍을 때 게시물이 Mastodon에서 작성된 경우에는 선택지를 없애는 게 나으려나…? Like 액티비티로 표현되는 ❤️ 이외에는 모두 Mastodon이 받아들이지 않는 EmojiReact 액티비티로 표현되기 때문에, 게시물 작성자가 어차피 에모지 반응을 볼 수 없으므로…

0
0

Hackers' Pub에 차단 기능을 만들고 있는데, A가 B를 차단했을 때 A가 B의 콘텐츠를 볼 수 있어야 한다고 생각하시나요? 물론 타임라인 등에서는 기본적으로 다 가려지겠지만, B가 올린 콘텐츠의 퍼머링크를 굳이 찾아서 들어갔을 때 말이죠. 아, 당연히 B 입장에서는 A의 콘텐츠는 전혀 볼 수 없고요. (A가 공개로 올린 콘텐츠를 B가 로그인하지 않은 채 볼 수야 있겠지만…)

1

Hackers' Pub에 차단 기능을 만들고 있는데, A가 B를 차단했을 때 A가 B의 콘텐츠를 볼 수 있어야 한다고 생각하시나요? 물론 타임라인 등에서는 기본적으로 다 가려지겠지만, B가 올린 콘텐츠의 퍼머링크를 굳이 찾아서 들어갔을 때 말이죠. 아, 당연히 B 입장에서는 A의 콘텐츠는 전혀 볼 수 없고요. (A가 공개로 올린 콘텐츠를 B가 로그인하지 않은 채 볼 수야 있겠지만…)

1

@hongminhee洪 民憙 (Hong Minhee) 이게 혹시 대상이 EmojiReact 를 받아들이는지 아닌지도 스펙에 의해 식별되는 것인가요? 만약 그렇다면 즉시 그렇게 하셔도 좋을 것 같습니다. 그런 것이 아니라 대상이 마스토돈인지 아닌지를 가지고 직접 판단을 내려야 하는, 즉 프로토콜에 없는 정보인데 하드 코딩으로 대응해야 하는 것이라면 조금 더 고민하실 여지가 있을 것 같네요...

2

'악플'이라는 말이 그 자체로 암시하는 바가 있다. 악글, 악메시지 같은 황당한 조어는 없다. 그러나 '악플'은 아주 당당하게 한국어 언중의 삶에서 확고한 위상을 점유하고 있다. 이 근본 없는 신조어가 뉴스 헤드라인에 박혀 있어도 아무도 토를 달지 않을 정도다.

오직 댓글만이 이럴 수 있다. 오직 댓글만이 사람을 자살로 몰고 가는 죄악의 주범으로 번번이 지목될 수 있고, 오직 댓글만이 정치 여론 조작의 혐의로 관계자들을 징역에 처할 수 있다. 자기 블로그에 글 썼다고 이렇게까지 지탄을 받거나 처벌을 받는 일은 없다. 이것은 의미심장하다. 이것은 개개인의 품성 문제가 아니다. 댓글이라는 시스템이 갖는 구조적 원인이 분명히 있는 것이다.

그런 의미에서 트위터 역사상 가장 훌륭한 기능 추가도 "댓글 안 받기" 기능이라고 생각한다. 그러므로 해커즈 퍼브에 댓글 안 받기 기능이 생기기만 기다리는 중...

8

'악플'이라는 말이 그 자체로 암시하는 바가 있다. 악글, 악메시지 같은 황당한 조어는 없다. 그러나 '악플'은 아주 당당하게 한국어 언중의 삶에서 확고한 위상을 점유하고 있다. 이 근본 없는 신조어가 뉴스 헤드라인에 박혀 있어도 아무도 토를 달지 않을 정도다.

오직 댓글만이 이럴 수 있다. 오직 댓글만이 사람을 자살로 몰고 가는 죄악의 주범으로 번번이 지목될 수 있고, 오직 댓글만이 정치 여론 조작의 혐의로 관계자들을 징역에 처할 수 있다. 자기 블로그에 글 썼다고 이렇게까지 지탄을 받거나 처벌을 받는 일은 없다. 이것은 의미심장하다. 이것은 개개인의 품성 문제가 아니다. 댓글이라는 시스템이 갖는 구조적 원인이 분명히 있는 것이다.

그런 의미에서 트위터 역사상 가장 훌륭한 기능 추가도 "댓글 안 받기" 기능이라고 생각한다. 그러므로 해커즈 퍼브에 댓글 안 받기 기능이 생기기만 기다리는 중...

1

생각해 보니 에모지 반응 찍을 때 게시물이 Mastodon에서 작성된 경우에는 선택지를 없애는 게 나으려나…? Like 액티비티로 표현되는 ❤️ 이외에는 모두 Mastodon이 받아들이지 않는 EmojiReact 액티비티로 표현되기 때문에, 게시물 작성자가 어차피 에모지 반응을 볼 수 없으므로…

1

협업을 할 때 미묘하게 거슬리는 것들\ldots

  • 텍스트 파일의 마지막 줄 완성 안 하기 Posix 표준 기준으로 각 줄은 새줄 문자(line feed, '\n')로 끝나야 하며, 마지막 줄도 예외는 아님
  • 그리고 위의 일이 주기적으로 재발할 때\ldots
2
7
3

쿠버네티스는 컴포즈만으로는 할 수 없는 HA (네트워킹 포함) 까지 책임져주는 솔루션 중 de-facto 라서 쓴다고 생각해요

앵간한 상황 다 대응되고

복잡하고 어려운 이유는 "앵간한 상황 다 대응"되기 때문이 아닐까 싶음... 컨테이너만 띄울거면 이렇게 복잡해질 이유가 없었음 - 사실 그 부분만 보면 컴포즈랑 비슷하기도 하고

2