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

洪 民憙 (Hong Minhee) :nonbinary:

@hongminhee@hollo.social

1,112 following1,903 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

@erincandescent@erincandescent.net
Postgres won't let you store `\u0000` (a legal JSON escape sequence!) in a JSONB record 🤯

Fortunately for our use case, our input data is Latin 1. I'm suggesting we replace the NULs with control picture ␀
@hongminhee@hollo.social
@PJFDF@masto.pt

Wait, what? 😯

can send email? Damn... @bagder I'm impressed (not that I didn't expected that), curl just keeps on giving. 😁

curl --url "smtp://$SMTP_SERVER:$SMTP_PORT" \
--ssl-reqd \
--mail-from "$SMTP_USER" \
--mail-rcpt "$EMAIL" \
--upload-file "$LOG_FILE" \
--user "$SMTP_USER:$SMTP_PASSWORD" \
--insecure

@hongminhee@hollo.social

Yes, we probably should have had this sooner… but hey, proper domain handling is coming to 1.5.0!

https://hollo.social/@fedify/01953693-1afd-7430-988a-23d649099e1c

hollo.social

We're excited to announce two …

We're excited to announce two major features coming in #Fedify 1.5.0, focused on giving you more control over domain names in your federated apps: ### [Separate WebFinger Host from Server Origin] Want different domains for your WebFinger handles and server URIs? Fedify 1.5.0 will let you use domains like `@alice@example.com` as fediverse handles while serving content from `https://ap.example.com`. This gives you more flexibility in how you structure your federated services. [Separate WebFinger Host from Server Origin]: https://unstable.fedify.dev/manual/federation#separating-webfinger-host-from-the-server-origin ### [Canonical Origin Support] Need to ensure consistent URLs across your infrastructure? The new canonical origin support lets you explicitly set your server's authoritative domain. This is particularly useful when running behind reverse proxies or load balancers—no more unexpected URLs generated from internal hostnames. [Canonical Origin Support]: https://unstable.fedify.dev/manual/federation#explicitly-setting-the-canonical-origin --- These features represent our ongoing commitment to making Fedify more flexible and production-ready. Can't wait to try these features? You can experiment with them today using our unstable release v1.5.0-dev.680+562e3dc0 ([JSR] & [npm]). Keep in mind that this is an unstable release intended for testing—use it in production at your own risk. Otherwise, stay tuned for the stable Fedify 1.5.0 release! #fedidev #ActivityPub [JSR]: https://jsr.io/@fedify/fedify@1.5.0-dev.680+562e3dc0 [npm]: https://www.npmjs.com/package/@fedify/fedify/v/1.5.0-dev.680

We're excited to announce two major features coming in 1.5.0, focused on giving you more control over domain names in your federated apps:

Separate WebFinger Host from Server Origin

Want different domains for your WebFinger handles and server URIs? Fedify 1.5.0 will let you use domains like @alice@example.com as fediverse handles while serving content from https://ap.example.com. This gives you more flexibility in how you structure your federated services.

Canonical Origin Support

Need to ensure consistent URLs across your infrastructure? The new canonical origin support lets you explicitly set your server's authoritative domain. This is particularly useful when running behind reverse proxies or load balancers—no more unexpected URLs generated from internal hostnames.


These features represent our ongoing commitment to making Fedify more flexible and production-ready.

Can't wait to try these features? You can experiment with them today using our unstable release v1.5.0-dev.680+562e3dc0 (JSR & npm). Keep in mind that this is an unstable release intended for testing—use it in production at your own risk.

Otherwise, stay tuned for the stable Fedify 1.5.0 release!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

• @alice@example.com
• @alice@ap.example.com
ALT text

Separating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: • @alice@example.com • @alice@ap.example.com

Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text

Explicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.

We're excited to announce two major features coming in 1.5.0, focused on giving you more control over domain names in your federated apps:

Separate WebFinger Host from Server Origin

Want different domains for your WebFinger handles and server URIs? Fedify 1.5.0 will let you use domains like @alice@example.com as fediverse handles while serving content from https://ap.example.com. This gives you more flexibility in how you structure your federated services.

Canonical Origin Support

Need to ensure consistent URLs across your infrastructure? The new canonical origin support lets you explicitly set your server's authoritative domain. This is particularly useful when running behind reverse proxies or load balancers—no more unexpected URLs generated from internal hostnames.


These features represent our ongoing commitment to making Fedify more flexible and production-ready.

Can't wait to try these features? You can experiment with them today using our unstable release v1.5.0-dev.680+562e3dc0 (JSR & npm). Keep in mind that this is an unstable release intended for testing—use it in production at your own risk.

Otherwise, stay tuned for the stable Fedify 1.5.0 release!

Separating WebFinger host from the server origin

This API is available since Fedify 1.5.0.

Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle.

In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object:

const federation = createFederation({
  origin: {
    handleHost: "example.com",
    webOrigin: "https://ap.example.com",
  },
});

NOTE

Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized.

In the above example, two fediverse handles are recognized as the same:

• @alice@example.com
• @alice@ap.example.com
ALT text

Separating WebFinger host from the server origin This API is available since Fedify 1.5.0. Sometimes you may want to use different domain names for WebFinger handles (i.e., fediverse handles) and the server origin. For example, you may want to use https://ap.example.com/actors/alice as an actor URI but want to use @alice@example.com as its fediverse handle. In such cases, you can set the handleHost different from the webOrigin in the origin option. The handleHost is used to construct the WebFinger handles, and the webOrigin is used to construct the URLs in the Context object: const federation = createFederation({ origin: { handleHost: "example.com", webOrigin: "https://ap.example.com", }, }); NOTE Even if you set the handleHost different from the webOrigin, the other fediverse handle with the same domain name as the webOrigin will still be recognized. In the above example, two fediverse handles are recognized as the same: • @alice@example.com • @alice@ap.example.com

Explicitly setting the canonical origin

This API is available since Fedify 1.5.0.

Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin.

For example, if you want to set the canonical origin to https://example.com, you can pass the string:

const federation = createFederation({
  origin: "https://example.com",
});

NOTE

The origin option has to include the leading https:// or http:// scheme.

Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer.

CAUTION

For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.
ALT text

Explicitly setting the canonical origin This API is available since Fedify 1.5.0. Or you can explicitly set the canonical origin of the server by passing the origin option to the createFederation() function. The origin option is either a string or a FederationOrigin object, which consists of two fields: handleHost and webOrigin. For example, if you want to set the canonical origin to https://example.com, you can pass the string: const federation = createFederation({ origin: "https://example.com", }); NOTE The origin option has to include the leading https:// or http:// scheme. Such a configuration leads the constructed URLs using Context to use the canonical origin instead of the origin from the incoming HTTP requests, which avoids constructing unexpected URLs when a request bypasses a reverse proxy or a load balancer. CAUTION For example, suppose that your federated server (upstream) is accessible at the http://1.2.3.4:8000 and your load balancer (downstream) is accessible at the https://example.com and forwards the requests to the upstream server. In this case, you should set the canonical origin to https://example.com to construct the correct URLs. Otherwise, when some malicious actor directly sends a request to the upstream server, the constructed URLs will start with http://1.2.3.4:8000 instead of https://example.com, which can lead to security issues.

@hongminhee@hollo.social · Reply to 염산하

@ysh @rangho_220 북마크와 좋아요는 Hollo 관리 페이지에 있는 내보내기 기능을 쓰시면 CSV로 저장하실 수 있습니다. 포스트와 부스트는 제가 다른 댓글에서 언급한 방식(ActivityPub의 발신함 조회)으로 가능할 것 같습니다! (일반 포스트는 "type": "Create"로, 부스트는 "type": "Announce"로 표시됩니다.)

https://hollo.social/@hongminhee/019531ff-9e05-7152-b100-f6a8272b016f

hollo.social

@rangho_220@rangho.moe 로컬 타임라인…

@rangho_220@rangho.moe 로컬 타임라인도 발신함(outbox)을 긁으면 되긴 합니다! 예를 들어 랭호 님 프로필을 `Accept: application/activity+json` 헤더와 함께 요청하면… ``` $ curl -s -H'Accept: application/activity+json' https://rangho.moe/@rangho_220 | jq . { "@context": […], "id": "https://rangho.moe/@rangho_220", "type": "Person". "featured": "https://rangho.moe/@rangho_220/pinned", "featuredTags": "https://rangho.moe/@rangho_220/tags", "inbox": "https://rangho.moe/@rangho_220/inbox", "followers": "https://rangho.moe/@rangho_220/followers", "following": "https://rangho.moe/@rangho_220/following", "liked": "https://rangho.moe/@rangho_220/liked", "name": "우주스타 아이도루 랭호 🌠", "outbox": "https://rangho.moe/@rangho_220/outbox", "preferredUsername": "rangho_220", "url": "https://rangho.moe/@rangho_220", … } ``` 이런 식으로 나오는데, 여기 보면 `outbox` URL이 나오죠. 그걸 또 요청해보면… ``` $ curl -s -H'Accept: application/activity+json' https://rangho.moe/@rangho_220/outbox | jq . { "type": "OrderedCollection", "id": "https://rangho.moe/@rangho_220/outbox", "@context": […], "totalItems": 141, "first": "https://rangho.moe/@rangho_220/outbox?cursor=0" } ``` 이렇게 나오고요. `first`를 또 따라가면… ``` $ curl -s -H'Accept: application/activity+json' https://rangho.moe/@rangho_220/outbox?cursor=0 | jq . { "type": "OrderedCollectionPage", "id": "https://rangho.moe/@rangho_220/outbox?cursor=0", "@context": […], "partOf": "https://rangho.moe/@rangho_220/outbox", "next": "https://rangho.moe/@rangho_220/outbox?cursor=40", "orderedItems": [ { "@context": […], "id": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137#create", "type": "Create", "actor": "https://rangho.moe/@rangho_220", "object": { "id": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137", "type": "Note", "attributedTo": "https://rangho.moe/@rangho_220", "content": "<p>안드로이드용 클라 괜찮은거 없나 모시돈 말구</p>\n", "contentMap": { "ko": "<p>안드로이드용 클라 괜찮은거 없나 모시돈 말구</p>\n" }, "likes": { "id": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137#likes", "type": "Collection", "totalItems": 0 }, "published": "2025-02-23T08:46:02.698Z", "replies": { "id": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137#replies", "type": "OrderedCollection", "totalItems": 0 }, "sensitive": false, "shares": { "id": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137#shares", "type": "Collection", "totalItems": 0 }, "source": { "type": "as:Source", "content": "안드로이드용 클라 괜찮은거 없나 모시돈 말구", "mediaType": "text/markdown" }, "to": "as:Public", "url": "https://rangho.moe/@rangho_220/019531fc-23ca-7523-8a62-6930fc3c8137" }, "published": "2025-02-23T08:46:02.698Z", "to": "as:Public" }, … ] } ``` 이런 식으로 올린 게시물이나 공유한 게시물들이 보이기 시작합니다. 다음 페이지는 `next` URL을 따라가면 되고요.

@hongminhee@hollo.social

@bori購讀(구독)】이 “subscription”의 完全(완전)飜譯語(번역어)機能(기능)하는 것은 唯獨(유독) 韓國語(한국어)에서만 그런 것 같더라고요. (제가 알기로는 中國語(중국어)日本語(일본어)에서는 그렇게 쓰이지 않아요.)

@kaorit@fedibird.com

番号の話に興味が湧いたので辞書を引いたら元々は英語のnumberの訳語だそうで。

番号の意味は「順番を示す符号。順序のしるし」。ナンバー(number)は「数・数詞」。

これらから推察するに順序立てて(後から辿れるように)並んでいれば数字やその他の符号が混じっていても問題は無さそう。

逆に順序が不明になるものには使えない言葉という事になるのかな。

英語(영어)境遇(경우), 確實(확실)히 “number”는 數字(숫자) 以外(이외)包含(포함)할 수 있다는 느낌이 있지요. 實際(실제)《위키낱말辭典(사전)英文板(영문판)에서 “number”를 찾아보면

A sequence of digits and letters used to register people, automobiles, and various other items.

Her passport number is C01X864TN.

라는 用例(용례)가 나와 있기도 하고요.

https://baram.me/@bori/114056446388564683

baram.me

보리 (@bori@baram.me)

모델명이나 일련번호도 Model Number나 Serial Number라고 쓰니까 영어의 Number도 꼭 숫자가 아닐 수 있을지도 모른다는 생각이 들긴 하지만 (미국은 자동차 번호 중간에 알파벳이 들어가기도 하고)

@hongminhee@hollo.social

내가 Galaxy 시리즈를 안 쓰는 가장 큰 理由(이유)單純(단순)三星(삼성)不買(불매)하기 때문. (三星(삼성)不買(불매)理由(이유)는 너무나 많기 때문에 여기서는 省略(생략).) 메인 폰으로 iPhone을 쓰고 있지만, Android를 쓰게 되더라도 Google의 Pixel 시리즈 같은 걸 쓸 것 같다.

@hongminhee@hollo.social

I have great respect for @thisismissem's tremendous work on @hollo.😲

https://hachyderm.io/@thisismissem/114056333638591578

hachyderm.io

Emelia 👸🏻 (@thisismissem@hachyderm.io)

Extended my previous contribution to @hollo@hollo.social tonight with some tests for the `GET /api/v1/accounts/verify_credentials` route: https://github.com/fedify-dev/hollo/pull/126/files#diff-944986dc760a778a36a291dd17b1e234ece1252336b9eefed1032e64a468601e There's some magic going on here, but I'm pretty happy with the results. Though, node.js's test runner seems really slow at times and I've no idea why, like some of these are taking 1-4 seconds, whereas other tests are 54ms. I've tried instrumenting the code to find slownesses and I can't, everything's taking only milliseconds.

@thisismissem@hachyderm.io

Extended my previous contribution to @hollo tonight with some tests for the `GET /api/v1/accounts/verify_credentials` route:

github.com/fedify-dev/hollo/pu

There's some magic going on here, but I'm pretty happy with the results.

Though, node.js's test runner seems really slow at times and I've no idea why, like some of these are taking 1-4 seconds, whereas other tests are 54ms. I've tried instrumenting the code to find slownesses and I can't, everything's taking only milliseconds.

github.com

Refactor OAuth logic for improved testability by ThisIsMissEm · Pull Request #126 · fedify-dev/hollo

Overview This pull request aims to improve the ability to write tests for the OAuth routes &amp; middleware by extracting out helpers to create authorization codes, access tokens and client credent...

@thisismissem@hachyderm.io · Reply to Emelia 👸🏻

Found the slowness! It was because each account that was created for the tests generated two keypairs for activitypub usage. We don't need those for these tests.

Now they run in like 150ms each, or a 10x increase in speed.

@thisismissem@hachyderm.io · Reply to Emelia 👸🏻

One of the things I'm wanting to do is also implement some of the **planned** OAuth functionality for Mastodon in @hollo first to get a feel for how it works — I'm way better at writing typescript compared to ruby.

So things like Device Code Grant Flow for input constrained devices (sign-in to hollo on your TV or retro computer), or supporting access token expiration and Client ID Metadata Documents (which removes the need for a client to pre-register with a given server before doing an oauth flow).

@thisismissem@hachyderm.io · Reply to Emelia 👸🏻

This is part of the work to improve how @hollo does OAuth and to bring it up to par with Mastodon 4.3

However, one of those next steps requires a rather major refactor of how we do authorization grants and access tokens. Before we make those changes it would be great to be able to have some baseline test coverage in place.

Related issues:
- github.com/fedify-dev/hollo/is
- github.com/fedify-dev/hollo/is
- github.com/fedify-dev/hollo/is
- github.com/fedify-dev/hollo/is

github.com

Automated tests · Issue #14 · fedify-dev/hollo

Surprisingly, Hollo does not have any automated tests at all. It currently only relies on type checker. We need unit tests at least for the core logic.

@thisismissem@hachyderm.io

Another @hollo pull request for this weekend: improving the testability of the OAuth related code.

I was supposed to be having a "me" day and relaxing, but I started having a coughing fit and needing to focus on something to help calm my system down, and what better than a refactor?

github.com/fedify-dev/hollo/pu

github.com

Refactor OAuth logic for improved testability by ThisIsMissEm · Pull Request #126 · fedify-dev/hollo

Overview This pull request aims to improve the ability to write tests for the OAuth routes &amp; middleware by extracting out helpers to create authorization codes, access tokens and client credent...

@thisismissem@hachyderm.io

Extended my previous contribution to @hollo tonight with some tests for the `GET /api/v1/accounts/verify_credentials` route:

github.com/fedify-dev/hollo/pu

There's some magic going on here, but I'm pretty happy with the results.

Though, node.js's test runner seems really slow at times and I've no idea why, like some of these are taking 1-4 seconds, whereas other tests are 54ms. I've tried instrumenting the code to find slownesses and I can't, everything's taking only milliseconds.

github.com

Refactor OAuth logic for improved testability by ThisIsMissEm · Pull Request #126 · fedify-dev/hollo

Overview This pull request aims to improve the ability to write tests for the OAuth routes &amp; middleware by extracting out helpers to create authorization codes, access tokens and client credent...

日本語(일본어) 原文(원문)飜譯(번역):

辭典的(사전적)으로는 【番號(번호)】는 數字(숫자) 以外(이외)包含(포함)하는 듯한데, UUID처럼 알파벳 () 數字(숫자) 以外(이외)包含(포함)하는 文字列(문자열)番號(번호)라고 表現(표현)하는 것에는 違和感(위화감)을 느낀다.

日本語(일본어)는 그렇구나, 하고 韓國語(한국어)는 어떤가 싶어 찾아봤더니, 《標準國語大辭典(표준국어대사전)》에서는 (強調(강조)는 내가):

番號(번호)2

名詞(명사)次例(차례)를 나타내거나 識別(식별)하기 ()해 붙이는 數字(숫자).

라고 定義(정의)되어 있다.

https://misskey.io/notes/a4lvwxiqmzej02vl

misskey.io

:nullcatchan_goodnight: (@syuilo)

辞書的には「番号」は数字以外も含むっぽいけど、UUIDなどアルファベット等数字以外を含む文字列が番号と表現されているのに違和感を感じる

@syuilo@misskey.io

辞書的には「番号」は数字以外も含むっぽいけど、UUIDなどアルファベット等数字以外を含む文字列が番号と表現されているのに違和感を感じる

@hongminhee@hollo.social

なるほど、って、韓国語はどうなんだろうと思って調べてみると、『標準国語大辞典』では:

【番号2

〔名詞〕順番を表したり、識別する為に付ける数字

と定義されている。(強調は私が)🤔

https://misskey.io/notes/a4lvwxiqmzej02vl

misskey.io

:nullcatchan_goodnight: (@syuilo)

辞書的には「番号」は数字以外も含むっぽいけど、UUIDなどアルファベット等数字以外を含む文字列が番号と表現されているのに違和感を感じる

@syuilo@misskey.io

辞書的には「番号」は数字以外も含むっぽいけど、UUIDなどアルファベット等数字以外を含む文字列が番号と表現されているのに違和感を感じる

@syuilo@misskey.io

辞書的には「番号」は数字以外も含むっぽいけど、UUIDなどアルファベット等数字以外を含む文字列が番号と表現されているのに違和感を感じる

@kodingwarrior@hackers.pub

2024 W07

이번이 두번째다. Hackers Pub에 주기적으로 컨텐츠를 채워넣기 위해서 주기적으로 발행하는 글이지만, 아직까지는 어떻게 가는게 좀 더 나은 가치가 있는 컨텐츠가 될 지는 모르겠다. 뉴스레터를 많이 읽고는 있어서, 재미있다고 느꼈거나 이것만큼은 읽을만한 가치가 있다고 생각되는 글들은 여기에 포워딩하는 목적으로 쓸 것 같다.

재밌게 읽은 글들

  • Product Development Processes You Might Not have Heard of
    • The goal of building in ShapeUp is to build something that works. This something must include front end and back end – a fully functional, integrated piece of functionality, and not a chunk of a functionality that will be finalised in some later iteration

      • Shape up의 핵심은 온전히 동작하는 것을 만드는것. 세부사항은 다음 이터레이션으로 미루는 기능의 조각단위의 작업을 하는 것이 아님.
  • Bram 이후 개발자들의 Vim 유지보수 방향성
  • 10년 이상을 걸쳐 웹개발자에서 데이터베이스 개발자로 직무전환한 후기
    • 간단하게 요약하자면, 소프트웨어를 잘 이해하기 위해서 내부를 까보고 직접 만드는 것을 많이 했었고 커뮤니티 드리븐 성장을 하다보니 현 시점에 왔다는 내용. 전반적으로 재밌게 읽었고, 여러가지 재밌는 정보를 알았다.
    • 개발자 북클럽을 여는걸 생각하고는 있었는데, 사람들이 북클럽 여는건 생각했던 것보다 다들 비슷비슷한 것 같다. link
    • 컴파일러/DB/웹브라우저 등 소프트웨어 인터널을 까보는 것에 관심있는 사람들의 모임이 뉴욕 어딘가에는 있는 것 같다. link
  • 코드기반 프롬프트로 프롬프트 엔지니어링을 하기
    • Aider의 scripting과 함께한다면 어떨까? link
  • 개발자들과의 커피챗
    • 지금 내가 얼마나 알고 있고, 얼마나 잘하는지는 크게 중요하지 않을 수 있다. 앞으로 만나는 새로운 문제를 효과적으로 풀기 위해 필요한 새로운 기술을 얼마나 빠르게 잘 배울 수 있는지가 더 중요하다.

brunch.co.kr

개발자들과의 커피챗

커피챗 예전에 함께 일했던 후배와 연말에 식사를 같이 하는 자리가 있었다. 대화를 나누다가 다음에 시간이 되면 본인 팀의 개발자들과 커피챗을 해 줄 수 있냐는 얘기가 나왔다. 그리고 이번 주에 그런 자리를 가졌다. 유사한 경험을 몇 차례 했는데 이번 경험도 즐거움이 있어서 정리를 해 보려 한다. 시작하며 내게 코칭, 커피챗 등을 요구하는 개발자나 개발 조직

@garam@cafe.otter.homes

사람들이 로마자와 영어를 혼동하곤 한다고 생각하는 게 어떠한 한국어 로마자 표기에서도 ‘byul’은 ‘뷸’임에도 영어를 차용해서 ‘별’을 ‘byul’로 쓰는 경우가 많다는 것이다.

@femiwiki@planet.moe

🧑‍💻 페미위키 오픈소스 컨트리뷰터 & 개발팀 모집
개발팀에서는 이런 분들을 모십니다!

github.com/femiwiki/femiwiki/

개발진이 거의 없어서 허덕이고 있습니다... 뭔가 쪼그만거 하나라도 만들 수 있으시다면 일단 지원해주세요!

(공식메일이나 DM, 깃허브 이슈 등으로 컨택해주시면 됩니다!)

페미위키 오픈소스 컨트리뷰터 & 개발팀 모집
ALT text

페미위키 오픈소스 컨트리뷰터 & 개발팀 모집

우대 사항:

페미위키 편집 경험이 한 번 이상 있으신 분
AWS 경험이 필요하신 분
사실상 표준이 아닌 기술/서비스에 거부감이 덜 하신 분 (예: Vue.js, Less.js, GitLab, Nomad, PHP)
기억 나는 리눅스 명령어가 세 개 이상인 분
ARM 서버 운영 경험이 있으신 분
JS를 TS로 변환하면 개운하신 분
GitHub Actions 사용 경험이 있으신 분
PHP 문법을 기억하시는 분
git rebase를 쳐본 적 있으신 분
오픈소스를 사랑하시는 분
마지막 장의 서비스 아키텍처를 보고 궁금한 게 생기신 분
ALT text

우대 사항: 페미위키 편집 경험이 한 번 이상 있으신 분 AWS 경험이 필요하신 분 사실상 표준이 아닌 기술/서비스에 거부감이 덜 하신 분 (예: Vue.js, Less.js, GitLab, Nomad, PHP) 기억 나는 리눅스 명령어가 세 개 이상인 분 ARM 서버 운영 경험이 있으신 분 JS를 TS로 변환하면 개운하신 분 GitHub Actions 사용 경험이 있으신 분 PHP 문법을 기억하시는 분 git rebase를 쳐본 적 있으신 분 오픈소스를 사랑하시는 분 마지막 장의 서비스 아키텍처를 보고 궁금한 게 생기신 분

2. 업무 내용

신규 프로젝트
* 레벨 제도
* 프로필 페이지
* 게이미피케이션 / 도전과제
* HA 구성

상시 업무
* 서비스 모니터링
* 버그 수정
* 기술 지원
* 소프트웨어 업그레이드
ALT text

2. 업무 내용 신규 프로젝트 * 레벨 제도 * 프로필 페이지 * 게이미피케이션 / 도전과제 * HA 구성 상시 업무 * 서비스 모니터링 * 버그 수정 * 기술 지원 * 소프트웨어 업그레이드

관심 있다면 망설임 없이 https://github.com/femiwiki 접속!
ALT text

관심 있다면 망설임 없이 https://github.com/femiwiki 접속!