洪 民憙 (Hong Minhee) :nonbinary:'s avatar

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,114 following1,902 followers

An intersectionalist, feminist, and socialist living in Seoul (UTC+09:00). @tokolovesme's spouse. Who's behind @fedify, @hollo, and @botkit. Write some free software in , , , & . They/them.

서울에 사는 交叉女性主義者이자 社會主義者. 金剛兔(@tokolovesme)의 配偶者. @fedify, @hollo, @botkit 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

Pinned

@hongminhee@hollo.social

Hello! I'm Hong Minhee (洪 民憙), an open source software engineer in my late 30s, living in Seoul, Korea. I'm bisexual and non-binary (they/them), and an enthusiastic advocate of free/open source software and the fediverse.

I work full-time on @fedify, an ActivityPub server framework in TypeScript, funded by @sovtechfund. I'm also the creator of @hollo, a single-user ActivityPub microblog; @botkit, an ActivityPub bot framework; Hackers' Pub, a fediverse platform for software developers; and LogTape, a logging library for JavaScript and TypeScript.

I have a long interest in East Asian languages (CJK) and Unicode. I post mostly in English here, though occasionally in Japanese or in mixed-script Korean (國漢文混用體), a traditional writing style that interleaves Chinese characters with the native Korean alphabet. Wanting to write in that style was actually one of the reasons I joined the fediverse. Feel free to talk to me in English, Korean, Japanese, or even Literary Chinese!

en.wikipedia.org

Korean mixed script - Wikipedia

Pinned

はじめまして!ソウル在住の30代後半のオープンソースソフトウェアエンジニア、洪 民憙ホン・ミンヒと申します。バイセクシュアル(bisexual)・ノンバイナリー(non-binary)で、自由・オープンソースソフトウェア(F/OSS)とフェディバース(fediverse)の熱烈な支持者です。

STF(@sovtechfund)の支援を受け、TypeScript用ActivityPubサーバーフレームワーク「@fedify」の開発に専念しています。他にも、おひとり様向けのActivityPubマイクロブログ「@hollo」、ActivityPubボットフレームワーク「@botkit」、ソフトウェア開発者向けフェディバースプラットフォームHackers' Pub、JavaScript・TypeScript用ロギングライブラリLogTapeなどの制作者でもあります。

東アジア言語(いわゆるCJK)とUnicodeにも興味があります。このアカウントでは主に英語で投稿していますが、時々日本語や国漢文混用体(漢字ハングル混じり文)の韓国語でも書いています。実はこの文体で書きたくてフェディバースを始めた、という経緯もあります。日本語、英語、韓国語、漢文でも気軽に話しかけてください!

speakerdeck.com

国漢文混用体からHolloまで

本発表では、韓国語の「国漢文混用体」(漢字ハングル混じり文)を自分のフェディバース投稿に実装したいという小さな目標から始まった旅路を共有します。 この目標を達成するために、ActivityPubのJSON-LDの複雑さやHTTP Signatures、WebFingerなどの仕様を理解する必要性に…

Pinned

安寧(안녕)하세요! 저는 서울에 살고 있는 30() 後半(후반)의 오픈 소스 소프트웨어 엔지니어 洪民憙(홍민희)입니다. 兩性愛者(양성애자)(bisexual)이자 논바이너리(non-binary)이며, 自由(자유)·오픈 소스 소프트웨어(F/OSS)와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)이기도 합니다.

STF(@sovtechfund)의 支援(지원)을 받아 TypeScript() ActivityPub 서버 프레임워크 @fedify 開發(개발)專業(전업)으로 ()하고 있습니다. 그 ()에도 싱글 유저() ActivityPub 마이크로블로그 @hollo, ActivityPub 봇 프레임워크 @botkit, 소프트웨어 開發者(개발자)를 위한 聯合宇宙(연합우주) 플랫폼 Hackers' Pub, JavaScript·TypeScript() 로깅 라이브러리 LogTape ()製作者(제작자)이기도 합니다.

()아시아 言語(언어)(이른바 CJK)와 Unicode에도 關心(관심)이 많습니다. 이 計定(계정)에서는 ()英語(영어)로 포스팅하지만, 때때로 日本語(일본어)國漢文混用體(국한문 혼용체) 韓國語(한국어)로도 씁니다. 聯合宇宙(연합우주)에 오게 된 動機(동기) () 하나가 바로 國漢文混用體(국한문 혼용체)로 글을 쓰고 싶었기 때문이기도 하고요. 韓國語(한국어), 英語(영어), 日本語(일본어), 아니면 漢文(한문)으로도 말을 걸어주세요!

logtape.org

LogTape

Unobtrusive logging library with zero dependencies—library-first design for Deno, Node.js, Bun, browsers, and edge functions

@monaco_koukoku なるほど、リバースプロキシの実装によって動作が異なるのですね。

リバースプロキシには大きく分けて2つのアプローチがあります:

  1. オリジナルのHostヘッダーをそのまま転送するタイプ

    • fedify tunnelはこちらのアプローチを採用しています
    • この場合、X-Forwarded-Hostヘッダーは存在しません
  2. X-Forwarded-Hostヘッダーを追加するタイプ

    • Cloudflare Zero Trustなどが採用しているアプローチです
    • オリジナルのホスト情報をX-Forwarded-Hostとして転送します

x-forwarded-fetchミドルウェアは、両方のケースに対応できるよう設計されています。X-Forwarded-Hostヘッダーが存在しない場合は、Hostヘッダーの値を使用して適切なホスト名を判断します。

したがって、fedify tunnelを使用する場合でも、x-forwarded-fetchミドルウェアを適切に設定していれば、正しくhttps://のURLが生成されるはずです。もし生成されない場合は、ミドルウェアの設定を確認してみることをお勧めします。

@hongminhee@hollo.social

@monaco_koukoku この問題はx-forwarded-fetchミドルウェアが設定されていないために発生しています。

詳しく説明させていただきますと:

  1. fedify tunnelは、ローカルのHTTPサーバーをHTTPSで外部に公開するリバースプロキシとして動作します。
  2. この過程で、元々のHTTPSリクエストはHTTPに変換されてローカルサーバーに転送されます。このとき、元のプロトコルとホスト情報はX-Forwarded-ProtoおよびX-Forwarded-Hostヘッダーに含まれて転送されます。
  3. しかし、x-forwarded-fetchミドルウェアが設定されていない場合、Fedifyはこれらのヘッダーを認識できず、直接受け取ったHTTPリクエストのURLのみを参照することになります。
  4. その結果、ctx.url.hrefhttps://ではなくhttp://で始まるURLとなり、生成されるActorオブジェクトのURLもすべてhttp://から始まるものになってしまいます。

解決方法としては、以下のようにx-forwarded-fetchミドルウェアをインストールして適用する必要があります:

import { behindProxy } from "x-forwarded-fetch";

serve({
  fetch: behindProxy(request => federation.fetch(request, { contextData: undefined }))
});

このように設定することで、FedifyがX-Forwarded-*ヘッダーを正しく認識し、https://のURLを生成するようになります。

また、この問題についてはFedifyの公式ドキュメントの「ローカルサーバーを外部に公開する」(Exposing a local server to the public)セクションにも詳しく説明があります。

These tools behave like a reverse proxy, so basically the federation server cannot recognize if it is behind a reverse proxy, and if the reverse proxy is in HTTPS. So the federation server will generate HTTP URLs in the ActivityPub messages, which cause interoperability issues. In this case, you can use the x-forwarded-fetch middleware in front of the Federation.fetch() method so that the Federation object recognizes the proper domain name and protocol of the incoming HTTP requests.

For more information, see How the Federation object recognizes the domain name section in the Federation document.
ALT text

These tools behave like a reverse proxy, so basically the federation server cannot recognize if it is behind a reverse proxy, and if the reverse proxy is in HTTPS. So the federation server will generate HTTP URLs in the ActivityPub messages, which cause interoperability issues. In this case, you can use the x-forwarded-fetch middleware in front of the Federation.fetch() method so that the Federation object recognizes the proper domain name and protocol of the incoming HTTP requests. For more information, see How the Federation object recognizes the domain name section in the Federation document.

@hexaheximal@mastodon.social · Reply to Daniel Supernault

@dansup I found the commit: github.com/superseriousbusines

I get why something like that would be implemented from a privacy perspective, but randomizing it is by far the worst approach as (like you have just shown) it manipulates legitimate fediverse statistics tools.

In my opinion, it would make far more sense to either report all of the counts as 0 or simply return a 403 Forbidden response.

[feature] Add `instance-stats-randomize` config option (#3718) · superseriousbusiness/gotosocial@a55bd6d

* [feature] Add `instance-stats-randomize` config option * don't use cache (overkill)

@hongminhee@hollo.social

Command Line Interface Guidelines@moreal 님께서 韓國語(한국어)飜譯(번역)하신 《命令(명령)줄 인터페이스 가이드라인》을 紹介(소개)합니다!

https://social.silicon.moe/@moreal/113924067637292894

social.silicon.moe

Moreal (@moreal@silicon.moe)

명령줄 인터페이스 가이드라인(https://clig.kr) 전통적인 UNIX 원칙을 현대에 맞게 업데이트하여 더 나은 명령줄 프로그램을 작성하는 데 도움을 주는 오픈소스 가이드입니다. Command-line interface guideline(https://clig.dev) 를 번역한 것입니다. 번역이 미숙한 부분이 많지만 마무리 지어 공유해봅니다. 한글 번역 관련하여 피드백이 있으시다면 GitHub 논의에 의견 남겨주세요 https://github.com/moreal/cli-guidelines-kr/discussions

@moreal@silicon.moe

명령줄 인터페이스 가이드라인(clig.kr)

전통적인 UNIX 원칙을 현대에 맞게 업데이트하여 더 나은 명령줄 프로그램을 작성하는 데 도움을 주는 오픈소스 가이드입니다.

Command-line interface guideline(clig.dev) 를 번역한 것입니다. 번역이 미숙한 부분이 많지만 마무리 지어 공유해봅니다. 한글 번역 관련하여 피드백이 있으시다면 GitHub 논의에 의견 남겨주세요

github.com/moreal/cli-guidelin

github.com

moreal/cli-guidelines-kr · Discussions

Explore the GitHub Discussions forum for moreal cli-guidelines-kr. Discuss code, ask questions & collaborate with the developer community.

@moreal@silicon.moe

명령줄 인터페이스 가이드라인(clig.kr)

전통적인 UNIX 원칙을 현대에 맞게 업데이트하여 더 나은 명령줄 프로그램을 작성하는 데 도움을 주는 오픈소스 가이드입니다.

Command-line interface guideline(clig.dev) 를 번역한 것입니다. 번역이 미숙한 부분이 많지만 마무리 지어 공유해봅니다. 한글 번역 관련하여 피드백이 있으시다면 GitHub 논의에 의견 남겨주세요

github.com/moreal/cli-guidelin

github.com

moreal/cli-guidelines-kr · Discussions

Explore the GitHub Discussions forum for moreal cli-guidelines-kr. Discuss code, ask questions & collaborate with the developer community.

@esurio1673@c.koliosky.com

あのHolloの記事0.1.0とかそれくらい古いバージョンの記事だぞ???ドキュメント見ろ

@esurio1673@c.koliosky.com

いい加減検索しても出てこないくらいに順位落として欲しい

@botkit@hollo.social

What kind of bot would you like to see being created using in the tutorial? (Ideas are welcome!)

  • RSS bot29 (48%)
  • LLM-based chatbot2 (3%)
  • Quiz bot15 (25%)
  • Weather bot15 (25%)
  • Stock/cryptocurrency price bot0 (0%)
@tesaguri@fedibird.com

Multibaseとかいうやつ、要はbase32やbase36、base64、base58とか色んな基数と文字集合の変種があるからそれらに識別子を振って全てサポートできるようにしよう仕組みで、それ下流の仕様でちゃんと書式をただ一つに指定できていたら不要な仕組みだったのではと思ってしまう