洪 民憙 (Hong Minhee)'s avatar

洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · 954 following · 1269 followers

An intersectionalist, feminist, and socialist guy 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 메인테이너. , , , 等으로 自由 소프트웨어 만듦.

()

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

@hongminhee@hollo.social

Hello, I'm an open source software engineer in my late 30s living in , , and an avid advocate of and the .

I'm the creator of @fedify, an server framework in , @hollo, an ActivityPub-enabled microblogging software for single users, and @botkit, a simple ActivityPub bot framework.

I'm also very interested in East Asian languages (so-called ) and . Feel free to talk to me in , (), or (), or even in Literary Chinese (, )!

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

安寧(안녕)하세요, 저는 서울에 살고 있는 30() 後半(후반) 오픈 소스 소프트웨어 엔지니어이며, 自由(자유)·오픈 소스 소프트웨어와 聯合宇宙(연합우주)(fediverse)의 熱烈(열렬)支持者(지지자)입니다.

저는 TypeScript() ActivityPub 서버 프레임워크인 @fedify 프로젝트와 싱글 유저() ActivityPub 마이크로블로그인 @hollo 프로젝트와 ActivityPub 봇 프레임워크인 @botkit 프로젝트의 製作者(제작자)이기도 합니다.

저는 ()아시아 言語(언어)(이른바 )와 유니코드에도 關心(관심)이 많습니다. 聯合宇宙(연합우주)에서는 國漢文混用體(국한문 혼용체)를 쓰고 있어요! 제게 韓國語(한국어)英語(영어), 日本語(일본어)로 말을 걸어주세요. (아니면, 漢文(한문)으로도!)

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

こんにちは、私はソウルに住んでいる30代後半のオープンソースソフトウェアエンジニアで、自由・オープンソースソフトウェアとフェディバースの熱烈な支持者です。名前は洪 民憙ホン・ミンヒです。

私はTypeScript用のActivityPubサーバーフレームワークである「@fedify」と、ActivityPubをサポートする1人用マイクロブログである 「@hollo」と、ActivityPubのボットを作成する為のシンプルなフレームワークである「@botkit」の作者でもあります。

私は東アジア言語(いわゆるCJK)とUnicodeにも興味が多いです。日本語、英語、韓国語で話しかけてください。(または、漢文でも!)

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

来年配線がどうにかなったらPRIMARGYにHolloとMitraは移したさがある

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

Hollo, 起動時のメモリ量は若干増えたかなって気はするけどBunの時ほどひどいメモリリークはなくなってる, 300MB程度で収まってるので

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

Hollo 0.3.1→0.4.0

RE:
https://c.koliosky.com/notes/a2eeiewnrafg01hd

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

🎉

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

とりあえず帰ったらHolloを0.4.0に上げてみるか

Esurio's avatar
Esurio

@esurio1673@c.koliosky.com

いつの間にかHollo0.4.0がでてる

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

올 한 해를 마무리하며 〈聯合宇宙(연합우주)와 함께 한 一年(일년)〉이라는 主題(주제)로 블로그에 글을 올렸습니다. (페이지 구석의 링크를 눌러서 한글專用文(전용문)으로 바꿔서 보실 수 있습니다.)

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.ko-kore.html

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

I wrote a blog post to wrap up the year 2024: A year with the fediverse.

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.en.html

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

@hongminhee@hollo.social

Fediverse Advent Calendar 2024の24日目の記事を書きました。「フェディバースと共に過ごした一年」をテーマに書きました。

https://writings.hongminhee.org/2024/12/a-year-with-the-fediverse/index.ja.html

Fedify: ActivityPub server framework's avatar
Fedify: ActivityPub server framework

@fedify@hollo.social

Since 1.4.0, Object will have the emojiReactions property, which corresponds to the fedibird:emojiReactions property extended by .

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

@hongminhee@hollo.social

Fedifyにfedibird:emojiReactionsプロパティのサポートを追加中…

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

@hongminhee@hollo.social · Reply to KazukyAkayashi (Hollo)'s post

@KazukyAkayashi Don't know why, but Node.js (at least with v23.5.0) apparently fails to fetch your Iceshrimp server… 🤔

Welcome to Node.js v23.5.0.
Type ".help" for more information.
> await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci");
Uncaught TypeError: fetch failed
    at node:internal/deps/undici/undici:13484:13
    at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
    at async REPL1:1:33 {
  [cause]: AggregateError [ETIMEDOUT]:
      at internalConnectMultiple (node:net:1139:18)
      at internalConnectMultiple (node:net:1215:5)
      at Timeout.internalConnectMultipleTimeout (node:net:1739:5)
      at listOnTimeout (node:internal/timers:616:11)
      at process.processTimers (node:internal/timers:549:7) {
    code: 'ETIMEDOUT',
    [errors]: [ [Error], [Error] ]
  }
}
>
ALT text detailsWelcome to Node.js v23.5.0. Type ".help" for more information. > await fetch("https://social.zarchbox.fr/notes/a2dn3k8kt5hm3gci"); Uncaught TypeError: fetch failed at node:internal/deps/undici/undici:13484:13 at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async REPL1:1:33 { [cause]: AggregateError [ETIMEDOUT]: at internalConnectMultiple (node:net:1139:18) at internalConnectMultiple (node:net:1215:5) at Timeout.internalConnectMultipleTimeout (node:net:1739:5) at listOnTimeout (node:internal/timers:616:11) at process.processTimers (node:internal/timers:549:7) { code: 'ETIMEDOUT', [errors]: [ [Error], [Error] ] } } >
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · Reply to lamikennel's post

@lamikennel そうですね。ただ「辱説」という表現だけでは明白な差別発言かどうか分からないですね…

KazukyAkayashi (Hollo)'s avatar
KazukyAkayashi (Hollo)

@KazukyAkayashi@hollo.zarchbox.fr

Update Hollo to v.0.4.0 🎉 But I will have to rewrite my hollo.service for systemd :pikathinknothappy:

http://hollo.social/@hollo/01941325-8d0e-71e4-ad49-daef861c01d0

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

NTSK's avatar
NTSK

@ntek@hl.oyasumi.dev

Hollo 0.4.0 :neocat_googly:

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

@hongminhee@hollo.social · Reply to lamikennel's post

@lamikennel 【辱說】ですね。単に悪口や罵詈雑言を意味します。

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social · Reply to Hollo :hollo:'s post

Hollo 0.4.0がリリースされました!HolloはActivityPubをサポートする御一人様向けのマイクロブログソフトウェアです。

今回のバージョンの主な変更点は以下の通りです。

  • HolloはBunの代わりにNode.js 23+を使う様になり、メモリ使用量を大幅に改善しました

  • 実験的な機能フラグであるTIMELINE_INBOXESを追加しました。この機能フラグをオンにすると、タイムラインに表示する必要がある投稿をリアルタイムでフィルタリングして表示する代わりに、事前にデータベースに保存します。この方式は受け入れる投稿が多い比較的多くのインスタンスで有用ですが、現時点ではまだバグがある可能性が有ります。この動作は安定化された後、今後デフォルトになる予定です。

  • 管理ダッシュボードからアカウントのデータをCSVでインポートまたはエクスポートする事が出来ます。フォローしているアカウント、リスト、ミュートしたアカウント、ブロックしたアカウント、ブックマークをサポートします。

  • アカウントをdiscoverableに設定する事が出来ます。

  • アカウントにカバー画像が設定されている場合、プロフィールページに表示されます。

  • その他、様々なバグを修正しました。

詳細は完全な変更ログをご覧ください。

Hollo 0.4.0にアップグレードするには、以下の方法に従ってください:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social · Reply to Hollo :hollo:'s post

Hollo 0.4.0이 릴리스되었습니다! Hollo는 ActivityPub을 지원하는 일인 사용자용 마이크로블로그 소프트웨어입니다.

이번 버전의 주요 변경점은 다음과 같습니다.

  • Hollo는 이제 Bun 대신 Node.js 23+을 사용하여 메모리 사용량을 큰 폭으로 줄였습니다.

  • 실험적인 기능 플래그인 TIMELINE_INBOXES를 추가했습니다. 이 기능 플래그를 켜면 타임라인에 보여야 하는 게시물들을 실시간으로 필터링하여 표시하는 대신, 미리 데이터베이스에 저장하게 됩니다. 이 방식은 받아들이는 게시물이 많은 비교적 큰 인스턴스에서 유용하지만, 현재로서는 아직 버그가 있을 수 있습니다. 이 동작은 안정화된 뒤에는 앞으로 기본값이 될 예정입니다.

  • 관리 대시보드에서 계정의 데이터를 CSV로 가져오거나 내보낼 수 있습니다. 팔로하는 계정들, 리스트, 뮤트한 계정들, 차단한 계정들, 책갈피를 지원합니다.

  • 계정 설정에서 계정을 discoverable로 설정할 수 있습니다.

  • 계정에 커버 이미지가 설정되어 있을 경우 프로필 페이지에서 표시됩니다.

  • 그 외 여러 버그가 수정되었습니다.

자세한 내용은 전체 변경 내역을 확인하십시오.

Hollo 0.4.0으로 업그레이드하려면 아래 방법을 따르세요:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

Hollo 0.4.0 released! is a single-user federated microblogging software which is -enabled and powered by .

The key changes of this release include:

  • Hollo is now powered by Node.js 23+ instead of Bun for more efficient memory usage.

  • Added an experimental feature flag TIMELINE_INBOXES to store all posts visible to your timeline in the database, rather than filtering them in real-time as they are displayed. This is useful for relatively larger instances with many incoming posts, but as of now it may have several bugs. It is expected to be the default behavior in the future after it is stabilized.

  • Now you can import and export your data from the administration dashboard in CSV format: follows, lists, accounts you muted, accounts you blocked, and bookmarks.

  • You can now make your profile discoverable.

  • The profile page now shows an account's cover image if it has one.

  • Many bug fixes.

For the details, see also the full changelog.

You can upgrade to Hollo 0.4.0 using the following ways:

Hollo :hollo:'s avatar
Hollo :hollo:

@hollo@hollo.social

is currently testing .js instead of . (In fact, the hollo.social server is already running on Node.js!) If this test is successful, starting with the next release, Hollo will be powered by Node.js instead of Bun.

The main reason for switching to Node.js is to optimize memory usage. As you can see in the graph image below, Node.js uses significantly less memory than Bun. With this switch, Hollo is expected to be even more lightweight than before!

Are you interested in trying out the Node.js version of Hollo early? Try to pull ghcr.io/dahlia/hollo:0.4.0-dev.290!

Hollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
ALT text detailsHollo's memory usage graph. When I was running on Bun, it used about 4GB of memory, but after switching to Node.js, it uses about 0.5GB of memory.
botwiki.org's avatar
botwiki.org

@botwiki@mastodon.social · Reply to 洪 民憙 (Hong Minhee)'s post

@hongminhee Very cool!

Just a heads-up though about a somewhat similar (but recently discontinued?) project with the same name.

github.com/howdyai/botkit

Jaeyeol Lee (a.k.a. kodingwarrior) :vim:'s avatar
Jaeyeol Lee (a.k.a. kodingwarrior) :vim:

@kodingwarrior@silicon.moe

github.com/fedi-pipe/fedi-pipe

내맘대로 작업하는 리포....

전국멜로디협회 박김새라🔜12.12(목) 18:30 왕십리역 6출's avatar
전국멜로디협회 박김새라🔜12.12(목) 18:30 왕십리역 6출

@sarahparkkim.bsky.social@bsky.brid.gy

“파행”이 장애인 차별적인 어휘라는 걸 이제 막 알았습니다… 앞으로 꼭 단어의 뜻에 유의하면서 혐오의 단어를 쓰지 않도록 하겠습니다

RE: https://bsky.app/profile/did:plc:5fi7bgxe6svztyolfjkiyctw/post/3lefrv32lts2k

ポット🫖's avatar
ポット🫖

@pot@fedibird.com · Reply to 洪 民憙 (Hong Minhee)'s post

A stand-alone AP bot framework might be a great niche that is underserved. I think many Mastodon instances (understandably) aren't enthusiastic about accepting bot accounts.

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

FedifyベースのBotKitという名前のフェディバースボットを作成する為のフレームワークをブレーンストーミングしています。Fedifyより柔軟性は劣りますが、より短いコードで簡単なフェディバースボットを作成できる様にするのが目標です。どう思いますか?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

Fedify 基盤(기반)의 BotKit이라는 이름의 聯合宇宙(연합우주)(fediverse) 봇을 만드는 프레임워크를 브레인스토밍해보고 있어요. Fedify보다 柔軟性(유연성)은 떨어질테지만, 그래도 훨씬 짧은 코드로 簡單(간단)聯合宇宙(연합우주) 봇을 만들 수 있게 하는 게 目標(목표)입니다. 어떻게들 보시나요?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

I'm currently brainstorming a framework for creating fediverse bots called , based on . It's less flexible than Fedify, but the goal is to make it possible to create simple fediverse bots with much less code. What do you think?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social

A web UI that allows for easy configuration of . How useful!

https://ghostty.zerebos.com/

역보's avatar
역보

@yeokbo@uri.life

항공기 사고를 주로 다루는 유튜버 ’다큐9분‘의 코멘트. 참고가 되는 부분이 있어 소개.

> 수십년 분의 항공사고 보고서와 기사를 보며 느낀 것이 있습니다.

> 1. 속보 경쟁을 할 필요가 없습니다. 지난 항공 사고 뉴스를 보면 정말 어처구니 없는 속보가 대부분입니다. 초기에는 오보가 정말 많습니다. 목격담도 대부분 착각입니다. 오보도 굳이 알 필요가 없는 부수적인 것입니다. 궁금한 것이 많겠지만, 지금 단계에서는 모두 추측입니다. 가십거리로 소비하면 안 됩니다.

> 2. 피해 가족에 대한 지원이 필요합니다. 지금 무안으로 피해자 가족들이 급한 마음으로 내려가고 있을 겁니다. 대부분의 사고에서 이 분들은 방치되어 2차적인 피해를 입습니다. 정부도 피해자 가족에 대한 지원을 해야하지만, 시민들도 이 분들을 도와야 합니다. 댓글 하나를 쓸 때도 잠깐 고민하길 바랍니다.

> 3. 희생자들의 존엄성을 지켜줘야 합니다. 희생자들의 존엄성을 무시한 사진과 보도들이 퍼지는 경우가 많습니다. 끔찍한 사고 현장이 뉴스 가치가 있을 수 있지만, 언론들은 윤리준칙에 따라 엄중하게 보도해야 합니다. 다시 한번 말하지만 가십거리로 소비되면 안 됩니다.

> 4. 책임자를 빨리 잡아낼 이유가 없습니다. 책임자가 빨리 드러난다고 더 안전해지는 것이 아닙니다. 누군가의 악의로 사고가 일어나지 않습니다. 차분히 지켜보며, 피해자를 돕고, 다시 같은 일이 일어나지 않게 철저히 조사하는 것이 사고의 상처를 빨리 수습하는 길이 될 것입니다.

> 지금도 목숨을 걸고 구조작업을 하고 있을 구조대를 응원합니다.

m.youtube.com/post/UgkxlyK2mnm

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

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

FedifyベースのBotKitという名前のフェディバースボットを作成する為のフレームワークをブレーンストーミングしています。Fedifyより柔軟性は劣りますが、より短いコードで簡単なフェディバースボットを作成できる様にするのが目標です。どう思いますか?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
洪 民憙 (Hong Minhee)'s avatar
洪 民憙 (Hong Minhee)

@hongminhee@hollo.social · Reply to 洪 民憙 (Hong Minhee)'s post

Fedify 基盤(기반)의 BotKit이라는 이름의 聯合宇宙(연합우주)(fediverse) 봇을 만드는 프레임워크를 브레인스토밍해보고 있어요. Fedify보다 柔軟性(유연성)은 떨어질테지만, 그래도 훨씬 짧은 코드로 簡單(간단)聯合宇宙(연합우주) 봇을 만들 수 있게 하는 게 目標(목표)입니다. 어떻게들 보시나요?

import { createBot, mention, text } from "@fedify/botkit";
import { RedisKvStore } from "@fedify/redis";
import { Redis } from "ioredis";

// Create a bot instance:
const bot = createBot({
  // The bot will have fediverse handle "@greetbot@mydomain":
  username: "greetbot",
  // Set the profile icon (avatar):
  icon: new URL("https://mydomain/icon.png"),
  // Set the bio:
  bio: text`Hi, there! I'm a simple fediverse bot created by ${
    mention("@hongminhee@hollo.social").}`,
  // Use Redis as a key-value store:
  kv: new RedisKvStore(new Redis()),
  // Use Redis as a message queue:
  queue: new RedisMessageQueue(() => new Redis()),
});

// A bot can respond to a mention:
bot.on(/hi|hello|what'?s\s+up/i, (ctx) => {
  return ctx.reply(text`Hi, ${ctx.actor}!`);
});

// Or, a bot also can actively publish a post:
setInterval(async () => {
  await bot.publish(text`Hi, forks! It's an hourly greeting.`);
}, 1000 * 60 * 60);

export default bot;
ALT text detailsimport { createBot, mention, text } from "@fedify/botkit"; import { RedisKvStore } from "@fedify/redis"; import { Redis } from "ioredis"; // Create a bot instance: const bot = createBot({ // The bot will have fediverse handle "@greetbot@mydomain": username: "greetbot", // Set the profile icon (avatar): icon: new URL("https://mydomain/icon.png"), // Set the bio: bio: text`Hi, there! I'm a simple fediverse bot created by ${ mention("@hongminhee@hollo.social").}`, // Use Redis as a key-value store: kv: new RedisKvStore(new Redis()), // Use Redis as a message queue: queue: new RedisMessageQueue(() => new Redis()), }); // A bot can respond to a mention: bot.on(/hi|hello|what'?s\s+up/i, (ctx) => { return ctx.reply(text`Hi, ${ctx.actor}!`); }); // Or, a bot also can actively publish a post: setInterval(async () => { await bot.publish(text`Hi, forks! It's an hourly greeting.`); }, 1000 * 60 * 60); export default bot;
← Newer
Older →