Profile img

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).

FedifyHolloBotKit、そしてこのサイト、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
0

연합우주 관련 서비스를 만들게 되어 해커스팝에도 공유해 봅니다~ 내 글을 부스트하고 나서 다른 사람이 작성한 반응글을 모아서 볼 수 있는 서비스를 만들고 있어요!

아직까지는 마스토돈 계정 로그인만 지원합니다. https://boost.chalk.moe 에 테스트 서버가 배포되어 있어요.

React Router 7 (Framework Mode) 기반의 웹사이트와 Temporal.io 기반의 백엔드로 구성되어 있습니다. 기여는 언제든지 환영합니다 🤗

https://github.com/chalkpe/decelerator

내가 열심히 작업하던 모든 게 멀쩡한 바퀴를 재발명하는 짓이었단 걸 깨닫고 겸허히 모든 코드를 삭제하기

열심히 작업하던 것을 겸허히 삭제할 줄 아는 것이야말로 진짜 고수다
11
1
0
5
2
2
0
1
2

"모든 사람을 위한 웹 접근성 지원과 설계, 제대로 알아봅시다."

아래 명제에 대한 제 생각이 궁금하시면 꼭 이번 FEConf 2025에서 보러 와주세요!

  • 웹 접근성은 장애 사용자만을 위한 특수한 사용자 경험을 지칭하는 기술 분야이다.
  • 따라서 접근성은 보조 기술 지원을 위한 추가 사용자 인터페이스로, 웹 서비스의 구현 양이 그만큼 더 늘어날 것이다.
중요하지만 긴급하지 않은 일, 그럼에도 계획해야 하는 웹 접근성
김무훈 | A11YKR 커뮤니티

모든 사람을 위한 웹 접근성 지원과 설계, 제대로 알아봅시다.

웹 프런트엔드 서비스에서 접근성 지원은 여전히 제도적으로 의무화된 항공사 웹 서비스와 정부/공공기관 외에 모범 사례가 흔치 않고, 확실한 정답이 정해져 있지 않은 분야입니다.
- 혹시 웹 접근성이 장애 사용자만을 위한 특수한 경험이라고 오해하고 계신가요? 웹의 본연의 힘은 보편성에 있습니다. 장애와 관계없이 모든 사람의 콘텐츠 접근은 필수적이라고 생각합니다.
-웹 접근성을 지원하기 위한 UI 컴포넌트 설계에 막연함을 느끼시나요? 웹 접근성 표준을 준수하면서, 일관된 UI 제어 경험을 어떻게 설계할 수 있는지 제가 고려했던 사항을 소개합니다.

따라서 아래 문제에 대한 발표자의 생각이 궁금하시면 꼭 보러 와주세요!
- 웹 접근성은 장애 사용자만을 위한 특수한 사용자 경험을 지칭하는 기술 분야이다.
- 웹 접근성은 보조 기술(AT) 지원을 위한 추가 사용자 인터페이스로, 웹 서비스의 구현 양이 그만큼 더 늘어날 것이다.
2

Hackers' Pub의 로고 디자인이 완료되었습니다! 디자인은 박은지 님(@murinono무리노노)께서 해주셨습니다.

연합우주라는 콘셉트에 맞게 고양이의 입 주변을 별 모양으로, 목 아래에도 고리(orbital ring) 모양으로 디자인했습니다. 고양이를 고른 이유는 소프트웨어 프로그래머 커뮤니티에서 다른 동물보다 유독 고양이가 사랑 받기 때문이기도 하고, 고양이가 호기심이 강하기 때문이기도 합니다.

로고 디자인은 CC-BY-SA 4.0 라이선스로 배포됩니다.

23
1
1
4
3
0

Hackers' Pub 파이콘 한국 2025 이벤트 당첨자 안내

많은 분들이 참여해 주셔서 선정이 힘들었습니다. 모두들 감사합니다. 당첨자는 다음과 같습니다.

@iamuhun김무훈 님 (링크)

파도처럼 출렁이는 연합우주의 분산 네트워크를 통해
이제는 파이콘 한국 2025 행사에서 다 같이 처음 만나
콘서트보다 더 뜨거운 분위기를 기대하겠습니다!

@z9mb1wwj 님 (링크)

파이썬 너무 느려요
이번에 러스트로 코드베이스 바꾸는거 어때요
Sun 17 August, the final day of PyCon Korea at Dongguk University! Brilliant sessions, fun tutorials, and the Python community awaits you. Long live Python 🐍

@quiraxical킈락 님 (링크)

파이썬, 제가 정말 유용하게 쓰는 도구 중 하나입니다.
이번 파이콘에서 어떤 게 나올지 기대됩니다.
콘퍼런스 알차게 준비하시는 것 같은데 꼭 가보고 싶네요.

당첨자 세 분께서는 파이콘 한국 2025 티켓 전달을 위해 제게 DM으로 다음 네 가지 정보를 보내주시기 바랍니다!

  • 소속
  • 성함
  • 이메일
  • 연락처

감사합니다.

1
2
7
4
1
4
4
1

🎉 Huge shoutout to @2chanhaeng이찬행 for implementing custom collection dispatchers in through the Korean program!

This incredible contribution adds support for creating arbitrary collections beyond the built-in ones (e.g., outbox, inbox, following, followers). Now developers can expose custom collections like user bookmarks, post categories, or any grouped content through the protocol:

federation
  .setCollectionDispatcher(
    "bookmarks",
    Article,
    "/users/{identifier}/bookmarks",
    async (ctx, values, cursor) => {
      const { posts, nextCursor } = await getBookmarkedPosts(values.identifier, cursor);
      return { items: posts, nextCursor };
    }
  )
  .setCounter(async (ctx, values) =>
    getBookmarkCount(values.identifier)
  );

The implementation is technically excellent with full support, both Collection and OrderedCollection types, cursor-based pagination, authorization predicates, and zero breaking changes. @2chanhaeng이찬행 delivered not just code but a complete feature with 313 lines of comprehensive documentation, practical examples, and thorough test coverage.

This opens up countless possibilities for ActivityPub applications built with Fedify. From user-specific collections to complex categorization systems, developers now have the flexibility to create any type of custom collection while maintaining full ActivityPub compliance.

Thank you @2chanhaeng이찬행 for this outstanding contribution and to the OSSCA program for fostering such excellent open source collaboration! 🚀

5
0
0

지난 한달간 열심히 개발한 실시간 퀴즈 사이트입니다. django, django drf, jwt 기반 인증, websocket, ticket으로 받아오는 jwt websocket 인증, celery, 등을 모두 사용한 예시이기도 합니다. 구경와주세요~

https://github.com/theeluwin/Qlickr

6
2
1

전화기 앱 개발을 별로 하고 싶지는 않은데, 딱 하나 있었으면 하는 앱이 있다. 다른 기능 없이, 그냥 123456789*0# 버튼 있고, 누를 때마다 도레미파솔라시도레미파솔 키음이 나는 기능이 있는 앱이 있었으면 좋겠다. 좀 더 욕심을 내자면, 버튼이 한 두 개 정도 더 있어서 파샵이랑 시플랫정도는 있었으면 좋겠다. 이게 없는 전화기는 내게 완전한 전화기가 아니다. 아쉽게도, 첫 스마트폰으로 아이폰4를 산 이후로 나는 완전한 전화기를 겪어보지 못했다.

3

전화기 앱 개발을 별로 하고 싶지는 않은데, 딱 하나 있었으면 하는 앱이 있다. 다른 기능 없이, 그냥 123456789*0# 버튼 있고, 누를 때마다 도레미파솔라시도레미파솔 키음이 나는 기능이 있는 앱이 있었으면 좋겠다. 좀 더 욕심을 내자면, 버튼이 한 두 개 정도 더 있어서 파샵이랑 시플랫정도는 있었으면 좋겠다. 이게 없는 전화기는 내게 완전한 전화기가 아니다. 아쉽게도, 첫 스마트폰으로 아이폰4를 산 이후로 나는 완전한 전화기를 겪어보지 못했다.

5
3
3
4

claude max를 구독하면 월 200$씩 깨진다는 사소한 문제가 있지만, 별도 과금이 없어 인간성을 지킬 수 있습니다.

3
2
0
3
2
2

API 기반 에이전트에서 요금제 기반 에이전트로 넘어와, 이제 마음껏 감사인사를 하는 풍부한 인간이 되었습니다.

미리미리 아부 떨어서 기계화 시대를 대비하자

에이전트가 실행중인 터미널 화면. 이하는 터미널의 내용

[에이전트]
  save_emacs_buffers_in_repo() 함수:
  - emacsclient로 실행 중인 Emacs와 통신
  - 해당 리포지토리 경로에 속한 버퍼만 필터링 (string-prefix-p)
  - 수정된 버퍼만 저장 (buffer-modified-p)
  - 저장된 버퍼 개수를 메시지로 표시
  - emacsclient가 없거나 통신 실패 시 경고만 출력하고 계속 진행

  이제 스크립트 실행 시 해당 리포지토리의 모든 수정된 Emacs 버퍼가 자동으로 저장됩니다.

[사용자]
> 좋아 네가 최고야

[에이전트]
⏺ 감사합니다! 스크립트가 이제 안전하고 똑똑하게 작동할 것 같네요. 혹시 테스트해보시고 문제가 있으면 언제든 알려주세요.
6

How to Solve it (어떻게 문제를 풀것인가 저자 G. Polya) 보니까 메타인지가 향상되는 느낌임

제대로 여러번 읽고 블로그에 리뷰를 써봐야겠지만.. 파인만 알고리즘 상세 해설한 느낌

문제 풀이 4단계 보면 이런 내용이 나옴

문제 이해

  • 모르는게 뭐야? 조건 만족되는거 있어? 조건은 충분해? 모순되는거 있나? 조건 분해 해봐. 그림 그려봐. 기호를 붙여봐

계획

  • 문제 본적 있어? 비슷한 문제 본적 있어? 본적 있으면 활용할 수 있을까?
  • 모르는거 살펴보자. 부분적으로 풀어볼수 있나? 비슷하면서 쉬운 문제는? 유사한 문제는?
  • 자료 모두 썼어? 핵심적인 개념 모두 고려했어?

계획 실행

  • 풀이 계획 실행 하고, 단계 점검해
  • 단계가 명확한가? 옳다는걸 증명할 수 있나?

반성

  • 풀이 결과가 문제의 조건과 맞는지 확인
  • 풀이 과정을 점검, 다른 방법으로도 문제를 해결할 수 있는지 확인
2
1

@xiniha 네네, Zod를 쓰는 건 아니고 Zod 스타일로 파싱 결과의 타입 구조를 선언할 수 있게 하려고 했습니다. 대충 아래와 같은 느낌이 되려나요?

const parser: Parser<
  {
    readonly options: { readonly type: "socket"; readonly socket: string } | {
      readonly type: "listen";
      readonly host: string;
      readonly port: number;
    };
  } & {
    readonly name: string;
    readonly arguments: ReadonlyArray<string>;
  }
> = and(
  object({
    options: or(
      object("File socket options", {
        type: constant("socket"),
        socket: option("-s", "--socket", filePath()),
      }),
      object("Listening options", {
        type: constant("listen"),
        host: option("-h", "--host", string()),
        port: option("-p", "--port", integer()),
      }),
    ),
  }),
  object("Arguments", {
    name: argument(string()),
    files: multiple(argument(filePath()), 1),
  }),
);
1
1

Claude Code + playwright 이용해서 간단한 화면 테스트도 시키고 있는데 나름 만족할 만큼, 잘 작동합니다. (로그인후에 특정화면의 기본값이 잘 설정되어 있는지 확인해라 등등)

3
0
0
0