What is Hackers' Pub?

Hackers' Pub is a place for software engineers to share their knowledge and experience with each other. It's also an ActivityPub-enabled social network, so you can follow your favorite hackers in the fediverse and get their latest posts in your feed.

๋Œ€ํ™”์™€ ์„ค๋“, ํ˜‘์ƒ๊ณผ ํƒ€ํ˜‘, ์ •์น˜์™€ ๊ณต๋ก ์ด ์ด๋ฃจ์–ด์ ธ์•ผ๋งŒ ํ•  ์˜์—ญ์—์„œ, ์˜ค์ง ์˜๋ฒ•์ ˆ์ฐจ์— ์˜ํ•œ ๋ฐฐ์ œ์™€ ๊ฒฉ๋ฉธ๋งŒ์„ ์‹œ๋„ํ•˜๋ ค ๋“œ๋Š” ๋ชจ๋“  ์ƒํ™ฉ๋“ค์ด ๊ฐœํƒ„์Šค๋Ÿฝ๋‹ค.

0
0
0
0
0
0
0
0

๋ฏธ๊ตญ์€ ๋‹ฌ๊ฑ€์ด ๋ชจ์ž๋ผ๊ณ ,
์ผ๋ณธ์€ ์Œ€์ด ๋ชจ์ž๋ผ๊ณ โ€ฆ
์ด๋Ÿฌ๋‹ค ์šฐ๋ฆฌ๋‚˜๋ผ ๋†์ˆ˜์‚ฐ๋ฌผ ์ˆ˜์ถœ๊ตญ์ด ๋˜๋ ค๋‚˜?
โ€‹:blobcatsweat:โ€‹

์šฐ๋ฆฌ๋„ ์ธํ”„๋ผ ์‹œ์›์ฐฎ์€๋ฐ.

0

So knowing what we knew, we went out to ask people who were adults at the time of the deed. We asked them where they were living and which newspaper they had back then. After establishing that, we started asking about the murder.

And again we got the famous "I didn't know" again and again. We had copies of the newspaper from the incident and confronted them with it. They stuck to it. Nobody knew anything at all. The thing happened, became top news and nobody ever even heard of it.

They became angry at us for asking. Sometimes we were chased away. This was because we clearly noticed that they were lyiing and being teenager, we were not good at hiding the fact that we knew.

4/5

The frustrating thing about history is: When you study it, you see it all happening again. When one day the grandchildren of the young adults in the U.S. today will ask "Why didn't you say something when they deported innocent people to camps in El Salvador?" I can already tell their answer today "I didn't know."

5/5

Comic of an old man telling a young man "Those Who Do Not Learn History Are Doomed To Repeat It. Yet those who do study history are doomed to stand by helplessly while everyone else repeats it."
0
0
0

This didn't happen in secret. We went to the archive of the local newspaper and got articles about the event from back then. And it was all in there. The newspaper (which still exists today) stumbled over his own feet in order to justify the lynching. I couldn't believe what I was reading: "We strongly condemn any lynching but this case was clearly justified". The newspaper argued against any prosecution of the lynch mob. They said that "gesundes Volksempfinden" (healthy popular sentiment) made the event inevitable.

It was a huge story back then that dominated the news for quite so time. It was not hidden on the second page, but the top news of the month. There were quotes from local Nazi politicians who claimed to be proud of the deed. All was there in broad daylight. The SS wasn't even attempting to hide it.

3/5

So knowing what we knew, we went out to ask people who were adults at the time of the deed. We asked them where they were living and which newspaper they had back then. After establishing that, we started asking about the murder.

And again we got the famous "I didn't know" again and again. We had copies of the newspaper from the incident and confronted them with it. They stuck to it. Nobody knew anything at all. The thing happened, became top news and nobody ever even heard of it.

They became angry at us for asking. Sometimes we were chased away. This was because we clearly noticed that they were lyiing and being teenager, we were not good at hiding the fact that we knew.

4/5

0
0
0

We started out in school by analysing the murder of Friedrich Schumm on April 1st 1933. He was a jewish lawyer born in and where his parents still lived. On the day of a visit at home due to the marriage of his little sister, the SS was enforcing a boycott of the shop his father was operating.

He wanted to the enter the shop of his father but was hindered by the SS picket. A short fight ensued, a shot rang out and a man from the SS was seriously injured. Schumm fled, presented himself at a police station and was arrested.

Later that day, a lynch mob compromised of members of the SA/SS formed. The ransacked the shop of his father and with the help of Nazi politicians they entered the prison and his cell. They shot him 30 times.

2/5

Memorial stone for Friedrich Schumm

This didn't happen in secret. We went to the archive of the local newspaper and got articles about the event from back then. And it was all in there. The newspaper (which still exists today) stumbled over his own feet in order to justify the lynching. I couldn't believe what I was reading: "We strongly condemn any lynching but this case was clearly justified". The newspaper argued against any prosecution of the lynch mob. They said that "gesundes Volksempfinden" (healthy popular sentiment) made the event inevitable.

It was a huge story back then that dominated the news for quite so time. It was not hidden on the second page, but the top news of the month. There were quotes from local Nazi politicians who claimed to be proud of the deed. All was there in broad daylight. The SS wasn't even attempting to hide it.

3/5

0

I didn't know

When I learned about the holocaust as teenager in Germany, many people from the Nazi era were still alive and lived all around me. Being the curious person I always was, I asked them about what happened and their role in it.

"I didn't know" was the boilerplate answer. And as they were relatives and friends, I believed them at first.

Then in 1981 we got a new teacher for history and he exposed the lie. Or more precise: he got us exposing those lies.

1/5

We started out in school by analysing the murder of Friedrich Schumm on April 1st 1933. He was a jewish lawyer born in and where his parents still lived. On the day of a visit at home due to the marriage of his little sister, the SS was enforcing a boycott of the shop his father was operating.

He wanted to the enter the shop of his father but was hindered by the SS picket. A short fight ensued, a shot rang out and a man from the SS was seriously injured. Schumm fled, presented himself at a police station and was arrested.

Later that day, a lynch mob compromised of members of the SA/SS formed. The ransacked the shop of his father and with the help of Nazi politicians they entered the prison and his cell. They shot him 30 times.

2/5

Memorial stone for Friedrich Schumm
0

I didn't know

When I learned about the holocaust as teenager in Germany, many people from the Nazi era were still alive and lived all around me. Being the curious person I always was, I asked them about what happened and their role in it.

"I didn't know" was the boilerplate answer. And as they were relatives and friends, I believed them at first.

Then in 1981 we got a new teacher for history and he exposed the lie. Or more precise: he got us exposing those lies.

1/5

0
0
1
1
0
0
0
0
0

่ฎ€:

> ่ปŠไธŠ็š„ๆœฌๅœฐๅšฎๅฐŽ่ชช๏ผŒๅ…ถๅฏฆๆœฌๅœฐ็š„ๆƒ…ๆณไนŸๆฒ’ๆœ‰ๆˆ‘ๅ€‘ๆƒณๅพ—้‚ฃ้บผ่ช‡ๅผต๏ผŒๅ€’ๅกŒ็š„ๆˆฟๅญไผฐ่จˆๆœ€ๅคšไฝ”ๅ…จๅธ‚็š„5%๏ผŒ็„ถ่€Œ๏ผŒๆ‰€ๆœ‰ๅค–่ง€็œ‹่ตทไพ†ๅฎŒๅฅฝ็š„ๆˆฟๅญ๏ผŒ่ฃ้ข้ƒฝๆœƒๆœ‰่ฃ‚็ธซใ€‚

>ๆˆ‘ๅœจๆ‹ๆ”ๆ™‚๏ผŒๆœƒๆ„Ÿๅˆฐ็ทฌ็”ธๅคง้ƒจๅˆ†ๆˆๅนดไบบๅฐๆ–ผ้ก้ ญๆœ‰็€ๅผท็ƒˆ็š„ๆŠ—ๆ‹’๏ผŒๅณไพฟๅœจๅพˆ้ ็š„ๅœฐๆ–น็œ‹ๅˆฐๆœ‰ไบบๅœจๆ‹ๆ”๏ผŒไธๅฐ‘ไบบไนŸๆœƒๆŠŠ้ ญ่ถ•็ทŠๆ‰ญๅˆฐไธ€้‚Š๏ผŒๆˆ–่€…่ถ•็ทŠๆ”พไธ‹ๆ‰‹ไธญ็š„ๆฑ่ฅฟๆ‚็€่‡‰ใ€‚่ปๆ”ฟๅบœไธ€็›ดๅšดๆ ผๆŠŠๆŽงๅช’้ซ”ๅ’Œ็ถฒ็ตก๏ผŒไธๅธŒๆœ›ๅค–็•Œไบ†่งฃ้€™ๅ€‹ๅœ‹ๅฎถ็™ผ็”Ÿ็€ไป€้บผ๏ผŒไธŠ้กๆŽก่จชๅฐๆœฌๅœฐไบบไพ†่ชชๆ˜ฏไธ€็จฎๆฅต็‚บๅฑ้šช็š„่กŒ็‚บใ€‚

theinitium.com/visual/images/2

0

Ex-Millionรคr warnt: โ€žรœberreichtum ist eine der grรถรŸten Gefahren unserer Zeitโ€œ

taz.de/Ex-Millionaer-warnt/!60

> Sebastian Klein war mal mehrfacher Millionรคr. Heute engagiert er sich gegen Superreiche. รœber gierige Start-Up-Jungs, Nazigeld und die Leistungslรผge.

0
0
0

There are so many (decades of) excellent demos!

The "blending adjacent frames together for YouTube is definitely cheating" reminds me of the quip from a Razor1911 prod, "Insert No Coins" (https://www.pouet.net/prod.php?which=55991):

"Our intro runs better in realtime than on YouTube"

Some relatively recent (within the last decade or so) favs of mine:

Neonsky by Ephidrena (Amiga, AGA): https://www.pouet.net/prod.php?which=67789

subside by Unique (Amiga, AGA) I dig mostly because it takes a sample, "Computers aren't the thing; they're the thing that gets us to the thing." from Halt & Catch Fire (which I mostly hated as a show) and puts it to good use: https://www.pouet.net/prod.php?which=67140

"another one"/"Number One" by CNCD & Fairlight (this was ostensibly made in @notchvfx@graphics.social [as were some other more recent CNCD & FLT prods like ziphead maybe?] It inspired me to get a laptop with an RTX1080 to take a class back in 2019 which was a fun couple of days! Now, if only I could figure out how to do that sort of stuff for income instead of a happy money sink? I sold that laptop in 2020 though, so I would need something newer [hopefully lighter?] with a decent [presumably now better?] GPU for such fun. ;) : https://www.pouet.net/prod.php?which=77399

CC: @cwebber@social.coopChristine Lemmer-Webber
0

โ€œ์†Œ์…œ๋ฏธ๋””์–ด๋Š” ํ˜„์‹ค์—์„œ ๋ฐ€๋ ค๋‚ฌ๋‹ค๊ณ  ์ขŒ์ ˆํ•˜๋Š” ์†Œ๋…„๋“ค์˜ ๋„ํ”ผ์ฒ˜๋กœ์„œ ์œ„๋กœ์™€ ์†Œ์†๊ฐ์„ ๋ถ€์—ฌํ•˜๋ฉด์„œ ํ˜์˜ค ํ‘œ์ถœ๊ณผ ๊ทน๋‹จ์ฃผ์˜์˜ ๋ฌธ์„ ์—ด๊ณ  ์žˆ๋‹ค๋Š” ์šฐ๋ ค๊ฐ€ ๊ณผ์žฅ์€ ์•„๋‹Œ ๋“ฏํ•˜๋‹ค.โ€ www.hani.co.kr/arti/opinion...

๋ถ•๊ดด๋œ โ€˜์†Œ๋…„์˜ ์‹œ๊ฐ„โ€™ [์œ ๋ ˆ์นด]

0
0
0
0

ํ•œ๋•์ˆ˜ ์ด ๋ฌผ๊ฑด๋„ ์œค๊ฐ€ ๋ชป์ง€ ์•Š๊ฒŒ ๊นฝํŒ ์น˜๋Š” ์ค‘์ธ ๋“ฏ, ๊ฐ„๋งŒ ์ข€ ์ž‘๋‹ค ๋ฟ์ด์ง€.

์ง€๊ฐ€ ๋ญ”๋ฐ ๋ฐฉ์œ„๋น„ ํ˜‘์ƒ์— ๋‚˜์„ ๋‹ค๊ณ  ์ง€๋ž„์ด์—ฌ!

0

๋ฐ”์ด์—๋ฅธ ๋ฎŒํ—จ์€ ์„ผํ„ฐ๋ฐฑ๋“ค์ด ์‹ฌ๊ฐํ•œ ๋ถ€์ƒ์œผ๋กœ ์ดํƒˆํ•œ ์ƒํƒœ์—์„œ ์•„ํ”ˆ ๋ชธ ๊ฐˆ์•„๊ฐ€๋ฉฐ ๋›ฐ์–ด์ฃผ๋Š” ๊น€๋ฏผ์žฌ ์„ ์ˆ˜์—๊ฒŒ, ์˜๋ฆฌํ•˜๊ณ  ํ™œ๋™๋Ÿ‰ ๋งŽ์€, ๋งจ์‹œํ‹ฐ์˜ ๋กœ๋“œ๋ฆฌ ๊ฐ™์€ ์›”ํด ์ˆ˜๋ฏธ๋„ ์—†๋Š” ์ƒํƒœ์—์„œ ๊ทน๋„๋กœ ๋ผ์ธ ๋Œ์–ด์˜ฌ๋ฆฐ ์ „์ˆ ์˜ ๋ถ€๋‹ด์„ ์ง€์šด ์ƒํƒœ์ž„. ์ƒ์‹œ ์—ญ์  ํ›„๋ณด ์ž๋ฆฌ๋ผ๊ณ  ๋ณด๋ฉด ๋จ.

๋ˆ„๊ตฌ๋„ ์ž˜ํ•  ์ˆ˜ ์—†๋Š” ์ƒํ™ฉ์—์„œ ๋‚ด๋ถ€์—์„œ์กฐ์ฐจ ํŒ๋‹จ๋ ฅ ์•ˆ ์ข‹๋„ค, ๋ชปํ•˜๋„ค, ํŒ”์•„์•ผ ํ•˜๋„ค, ๊ฐ™์€ ์†Œ๋ฆฌ ํ•˜๋Š” ๊ฑฐ ๋ณด๋ฉด ๋ช…์„ฑ๊ณผ ์ธ๊ธฐ์— ๋น„ํ•ด ์šด์˜ ์ˆ˜์ค€์€ ๋–จ์–ด์ง€๋Š” ๋“ฏ. ๊ฐ๋…์€ ์ƒํ™ฉ์„ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฑฐ ๊ฐ™์€๋ฐ ์ •์ž‘ ์œ—์ž๋ฆฌ์˜ ๋ฐ”๋ฐ”๋ฆฌ์•ˆ ํ• ๋ฐฐ๋“ค์ด ์—ฌ์—‰... ์ด๋Ÿฌ๋‹ˆ ์šฐ์Šน์„ ๋ชปํ•˜์ง€, ์‹ถ์Œ.

0

โ€œ์†Œ์…œ๋ฏธ๋””์–ด๋Š” ํ˜„์‹ค์—์„œ ๋ฐ€๋ ค๋‚ฌ๋‹ค๊ณ  ์ขŒ์ ˆํ•˜๋Š” ์†Œ๋…„๋“ค์˜ ๋„ํ”ผ์ฒ˜๋กœ์„œ ์œ„๋กœ์™€ ์†Œ์†๊ฐ์„ ๋ถ€์—ฌํ•˜๋ฉด์„œ ํ˜์˜ค ํ‘œ์ถœ๊ณผ ๊ทน๋‹จ์ฃผ์˜์˜ ๋ฌธ์„ ์—ด๊ณ  ์žˆ๋‹ค๋Š” ์šฐ๋ ค๊ฐ€ ๊ณผ์žฅ์€ ์•„๋‹Œ ๋“ฏํ•˜๋‹ค.โ€ www.hani.co.kr/arti/opinion...

๋ถ•๊ดด๋œ โ€˜์†Œ๋…„์˜ ์‹œ๊ฐ„โ€™ [์œ ๋ ˆ์นด]

0
0

BotKit 0.2.0 Released

We're pleased to announce the release of BotKit 0.2.0! For those new to our project, is a framework for creating standalone bots that can interact with Mastodon, Misskey, and other platforms without the constraints of these existing platforms.

This release marks an important step in our journey to make fediverse bot development more accessible and powerful, introducing several features that our community has been requesting.

The Journey to Better Bot Interactions

In building BotKit, we've always focused on making bots more expressive and interactive. With version 0.2.0, we're taking this to the next level by bringing the social aspects of the fediverse to your bots.

Expressing Your Bot's Personality with Custom Emojis

One of the most requested features has been support. Now your bots can truly express their personality with unique visuals that make their messages stand out.

// Define custom emojis for your bot
const emojis = bot.addCustomEmojis({
  botkit: { 
    file: `${import.meta.dirname}/images/botkit.png`, 
    type: "image/png" 
  },
  fedify: { 
    url: "https://fedify.dev/logo.png", 
    type: "image/png" 
  }
});

// Use these custom emojis in your messages
await session.publish(
  text`BotKit ${customEmoji(emojis.botkit)} is powered by Fedify ${customEmoji(emojis.fedify)}`
);

With this new API, you can:

Engaging Through Reactions

Communication isn't just about posting messagesโ€”it's also about responding to others. The new reaction system creates natural interaction points between your bot and its followers:

// React to a message with a standard Unicode emoji
await message.react(emoji`๐Ÿ‘`);

// Or use one of your custom emojis as a reaction
await message.react(emojis.botkit);

// Create a responsive bot that acknowledges reactions
bot.onReact = async (session, reaction) => {
  await session.publish(
    text`Thanks for reacting with ${reaction.emoji} to my message, ${reaction.actor}!`,
    { visibility: "direct" }
  );
};

This feature allows your bot to:

Conversations Through Quotes

Discussions often involve referencing what others have said. Our new support enables more cohesive conversation threads:

// Quote another message in your bot's post
await session.publish(
  text`Responding to this interesting point...`,
  { quoteTarget: originalMessage }
);

// Handle when users quote your bot's messages
bot.onQuote = async (session, quoteMessage) => {
  await session.publish(
    text`Thanks for sharing my thoughts, ${quoteMessage.actor}!`,
    { visibility: "direct" }
  );
};

With quote support, your bot can:

Visual Enhancements

Because communication is visual too, we've improved how your bot presents itself:

  • Image attachments now properly display in the web interface
  • Your bot's content looks better and provides a richer experience

Behind the Scenes: Enhanced Activity Propagation

We've also improved how activities propagate through the fediverse:

  • More precise propagation of replies, shares, updates, and deletes
  • Activities are now properly sent to the original message authors

These improvements ensure your bot's interactions are consistent and reliable across different fediverse platforms.

Taking Your First Steps with BotKit 0.2.0

Ready to experience these new features? BotKit 0.2.0 is available on JSR and can be installed with a simple command:

deno add jsr:@fedify/botkit@0.2.0

Since BotKit uses the Temporal API (which is still evolving in JavaScript), remember to enable it in your deno.json:

{
  "imports": {
    "@fedify/botkit": "jsr:@fedify/botkit@0.2.0"
  },
  "unstable": ["temporal"]
}

With these simple steps, you're ready to create or upgrade your fediverse bot with our latest features.

Looking Forward

BotKit 0.2.0 represents our ongoing commitment to making fediverse bot development accessible, powerful, and enjoyable. We believe these new features will help your bots become more engaging and interactive members of the fediverse community.

For complete docs and more examples, visit our docs site.

Thank you to everyone who contributed to this release through feedback, feature requests, and code contributions. The BotKit community continues to grow, and we're excited to see what you'll create!


BotKit is powered by Fedify, a lower-level framework for creating ActivityPub server applications.

BotKit 0.2.0 ๋ฆด๋ฆฌ์Šค

BotKit 0.2.0 ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์Šค๋˜์—ˆ์Šต๋‹ˆ๋‹ค! BotKit์„ ์ฒ˜์Œ ์ ‘ํ•˜์‹œ๋Š” ๋ถ„๋“ค์„ ์œ„ํ•ด ๊ฐ„๋‹จํžˆ ์†Œ๊ฐœํ•˜์ž๋ฉด, BotKit์€ TypeScript๋กœ ๊ฐœ๋ฐœ๋œ ๋…๋ฆฝํ˜• ๋ด‡ ํ”„๋ ˆ์ž„์›Œํฌ์ž…๋‹ˆ๋‹ค. Mastodon, Misskey ๋“ฑ ๋‹ค์–‘ํ•œ () ํ”Œ๋žซํผ๊ณผ ์ƒํ˜ธ์ž‘์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ธฐ์กด ํ”Œ๋žซํผ์˜ ์ œ์•ฝ์—์„œ ๋ฒ—์–ด๋‚˜ ์ž์œ ๋กญ๊ฒŒ ๋ด‡์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค๋Š” ์—ฐํ•ฉ์šฐ์ฃผ ๋ด‡ ๊ฐœ๋ฐœ์„ ๋” ์‰ฝ๊ณ  ๊ฐ•๋ ฅํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์—ฌ์ •์—์„œ ์ค‘์š”ํ•œ ๋ฐœ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค. ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ์š”์ฒญํ•ด ์™”๋˜ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ๋“ค์„ ์ƒˆ๋กญ๊ฒŒ ์„ ๋ณด์ž…๋‹ˆ๋‹ค.

๋” ๋‚˜์€ ๋ด‡ ์ƒํ˜ธ์ž‘์šฉ์„ ์œ„ํ•œ ์—ฌ์ •

BotKit์„ ๊ฐœ๋ฐœํ•˜๋ฉด์„œ ์šฐ๋ฆฌ๋Š” ํ•ญ์ƒ ๋ด‡์ด ๋” ํ‘œํ˜„๋ ฅ ์žˆ๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ด ํ’๋ถ€ํ•˜๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐ ์ง‘์ค‘ํ•ด ์™”์Šต๋‹ˆ๋‹ค. 0.2.0 ๋ฒ„์ „์—์„œ๋Š” ์—ฐํ•ฉ์šฐ์ฃผ์˜ ์‚ฌํšŒ์  ์ธก๋ฉด์„ ๋ด‡์— ์ ‘๋ชฉ์‹œ์ผœ ํ•œ ๋‹จ๊ณ„ ๋” ๋ฐœ์ „์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.

์ปค์Šคํ…€ ์—๋ชจ์ง€๋กœ ๋ด‡์˜ ๊ฐœ์„ฑ ํ‘œํ˜„ํ•˜๊ธฐ

๊ฐ€์žฅ ๋งŽ์ด ์š”์ฒญ๋ฐ›์•˜๋˜ ๊ธฐ๋Šฅ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ง€์›์ž…๋‹ˆ๋‹ค. ์ด์ œ ๋ด‡์€ ๋…ํŠนํ•œ ์‹œ๊ฐ์  ์š”์†Œ๋กœ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹๋ณด์ด๊ฒŒ ํ•˜๋ฉฐ ์ž์‹ ๋งŒ์˜ ๊ฐœ์„ฑ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

// ๋ด‡์˜ ์ปค์Šคํ…€ ์—๋ชจ์ง€ ์ •์˜ํ•˜๊ธฐ
const emojis = bot.addCustomEmojis({
  botkit: { 
    file: `${import.meta.dirname}/images/botkit.png`, 
    type: "image/png" 
  },
  fedify: { 
    url: "https://fedify.dev/logo.png", 
    type: "image/png" 
  }
});

// ๋ฉ”์‹œ์ง€์— ์ปค์Šคํ…€ ์—๋ชจ์ง€ ์‚ฌ์šฉํ•˜๊ธฐ
await session.publish(
  text`BotKit ${customEmoji(emojis.botkit)}์€ Fedify ${customEmoji(emojis.fedify)}์˜ ์ง€์›์„ ๋ฐ›์Šต๋‹ˆ๋‹ค`
);

์ด ์ƒˆ๋กœ์šด API๋ฅผ ํ†ตํ•ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜์‘์„ ํ†ตํ•œ ์†Œํ†ต

์†Œํ†ต์€ ๋‹จ์ˆœํžˆ ๋ฉ”์‹œ์ง€๋ฅผ ๊ฒŒ์‹œํ•˜๋Š” ๊ฒƒ๋งŒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ๋ฉ”์‹œ์ง€์— ๋ฐ˜์‘ํ•˜๋Š” ๊ฒƒ๋„ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๋ฐ˜์‘ ์‹œ์Šคํ…œ์€ ๋ด‡๊ณผ ํŒ”๋กœ์›Œ ์‚ฌ์ด์— ์ž์—ฐ์Šค๋Ÿฌ์šด ์ƒํ˜ธ์ž‘์šฉ ์ง€์ ์„ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

// ํ‘œ์ค€ ์œ ๋‹ˆ์ฝ”๋“œ ์—๋ชจ์ง€๋กœ ๋ฉ”์‹œ์ง€์— ๋ฐ˜์‘ํ•˜๊ธฐ
await message.react(emoji`๐Ÿ‘`);

// ๋˜๋Š” ์ •์˜ํ•œ ์ปค์Šคํ…€ ์—๋ชจ์ง€๋กœ ๋ฐ˜์‘ํ•˜๊ธฐ
await message.react(emojis.botkit);

// ๋ฐ˜์‘์„ ์ธ์‹ํ•˜๊ณ  ์‘๋‹ตํ•˜๋Š” ๋ด‡ ๋งŒ๋“ค๊ธฐ
bot.onReact = async (session, reaction) => {
  await session.publish(
    text`${reaction.actor}๋‹˜, ์ œ ๋ฉ”์‹œ์ง€์— ${reaction.emoji} ๋ฐ˜์‘์„ ๋‚จ๊ฒจ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!`,
    { visibility: "direct" }
  );
};

์ด ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ด‡์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • Message.react()๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์œ ๋‹ˆ์ฝ”๋“œ ์—๋ชจ์ง€๋กœ ๋ฉ”์‹œ์ง€์— ๋ฐ˜์‘ํ•˜๊ธฐ
  • ์ •์˜ํ•œ ์ปค์Šคํ…€ ์—๋ชจ์ง€๋กœ ๋ฐ˜์‘ํ•˜๊ธฐ
  • Bot.onReact์™€ Bot.onUnreact ํ•ธ๋“ค๋Ÿฌ๋กœ ๋ฐ˜์‘ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์ธ์šฉ์„ ํ†ตํ•œ ๋Œ€ํ™”

ํ† ๋ก ์—์„œ๋Š” ์ข…์ข… ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ๋งํ•œ ๋‚ด์šฉ์„ ์ฐธ์กฐํ•ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์€ ๋” ์‘์ง‘๋ ฅ ์žˆ๋Š” ๋Œ€ํ™” ์Šค๋ ˆ๋“œ๋ฅผ ๋งŒ๋“ค์–ด ์ค๋‹ˆ๋‹ค.

// ๋ด‡์˜ ๊ฒŒ์‹œ๋ฌผ์—์„œ ๋‹ค๋ฅธ ๋ฉ”์‹œ์ง€ ์ธ์šฉํ•˜๊ธฐ
await session.publish(
  text`์ด ํฅ๋ฏธ๋กœ์šด ๊ด€์ ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค...`,
  { quoteTarget: originalMessage }
);

// ์‚ฌ์šฉ์ž๊ฐ€ ๋ด‡์˜ ๋ฉ”์‹œ์ง€๋ฅผ ์ธ์šฉํ•  ๋•Œ ์ฒ˜๋ฆฌํ•˜๊ธฐ
bot.onQuote = async (session, quoteMessage) => {
  await session.publish(
    text`${quoteMessage.actor}๋‹˜, ์ œ ์ƒ๊ฐ์„ ๊ณต์œ ํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!`,
    { visibility: "direct" }
  );
};

์ธ์šฉ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋ด‡์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • quoteTarget ์˜ต์…˜์œผ๋กœ ๋ฉ”์‹œ์ง€ ์ธ์šฉํ•˜๊ธฐ
  • Message.quoteTarget์„ ํ†ตํ•ด ์ธ์šฉ๋œ ๋ฉ”์‹œ์ง€์— ์ ‘๊ทผํ•˜๊ธฐ
  • ์ƒˆ๋กœ์šด Bot.onQuote ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋กœ ์ธ์šฉ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌํ•˜๊ธฐ

์‹œ๊ฐ์  ๊ฐœ์„ 

์†Œํ†ต์€ ์‹œ๊ฐ์ ์ธ ์š”์†Œ๋„ ์ค‘์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ด‡์˜ ํ‘œํ˜„ ๋ฐฉ์‹์„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์›น ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ด๋ฏธ์ง€ ์ฒจ๋ถ€ํŒŒ์ผ์ด ์ œ๋Œ€๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค
  • ๋ด‡์˜ ์ฝ˜ํ…์ธ ๊ฐ€ ๋” ๋ณด๊ธฐ ์ข‹์•„์ง€๊ณ  ํ’๋ถ€ํ•œ ๊ฒฝํ—˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค

๋‚ด๋ถ€ ๊ฐœ์„ : ํ–ฅ์ƒ๋œ ์•กํ‹ฐ๋น„ํ‹ฐ ์ „ํŒŒ

์—ฐํ•ฉ์šฐ์ฃผ์—์„œ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ „ํŒŒ๋˜๋Š” ๋ฐฉ์‹๋„ ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋‹ต๊ธ€, ๊ณต์œ , ์—…๋ฐ์ดํŠธ, ์‚ญ์ œ์˜ ๋” ์ •ํ™•ํ•œ ์ „ํŒŒ
  • ์›๋ณธ ๋ฉ”์‹œ์ง€ ์ž‘์„ฑ์ž์—๊ฒŒ ์•กํ‹ฐ๋น„ํ‹ฐ๊ฐ€ ์ œ๋Œ€๋กœ ์ „์†ก๋ฉ๋‹ˆ๋‹ค

์ด๋Ÿฌํ•œ ๊ฐœ์„  ์‚ฌํ•ญ์€ ๋‹ค์–‘ํ•œ ์—ฐํ•ฉ์šฐ์ฃผ ํ”Œ๋žซํผ์—์„œ ๋ด‡์˜ ์ƒํ˜ธ์ž‘์šฉ์ด ์ผ๊ด€๋˜๊ณ  ์•ˆ์ •์ ์œผ๋กœ ์ด๋ฃจ์–ด์ง€๋„๋ก ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

BotKit 0.2.0์œผ๋กœ ์ฒซ ๊ฑธ์Œ ๋–ผ๊ธฐ

์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ๊ฒฝํ—˜ํ•ด ๋ณด๊ณ  ์‹ถ์œผ์‹ ๊ฐ€์š”? BotKit 0.2.0์€ JSR์—์„œ ๋ฐ›์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐ„๋‹จํ•œ ๋ช…๋ น์–ด๋กœ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

deno add jsr:@fedify/botkit@0.2.0

BotKit์€ Temporal API(JavaScript์—์„œ ์•„์ง ์‹œ๋ฒ”์ ์ธ ๊ธฐ๋Šฅ)๋ฅผ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ deno.json์—์„œ ์ด๋ฅผ ํ™œ์„ฑํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

{
  "imports": {
    "@fedify/botkit": "jsr:@fedify/botkit@0.2.0"
  },
  "unstable": ["temporal"]
}

์ด ๊ฐ„๋‹จํ•œ ๋‹จ๊ณ„๋ฅผ ํ†ตํ•ด ์ตœ์‹  ๊ธฐ๋Šฅ์œผ๋กœ ์—ฐํ•ฉ์šฐ์ฃผ ๋ด‡์„ ๋งŒ๋“ค๊ฑฐ๋‚˜ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ค€๋น„๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ์˜ ์ „๋ง

BotKit 0.2.0์€ ์—ฐํ•ฉ์šฐ์ฃผ ๋ด‡ ๊ฐœ๋ฐœ์„ ์ ‘๊ทผํ•˜๊ธฐ ์‰ฝ๊ณ , ๊ฐ•๋ ฅํ•˜๋ฉฐ, ์ฆ๊ฒ๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์šฐ๋ฆฌ์˜ ์ง€์†์ ์ธ ๋…ธ๋ ฅ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ๋“ค์ด ์—ฌ๋Ÿฌ๋ถ„์˜ ๋ด‡์ด ์—ฐํ•ฉ์šฐ์ฃผ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋” ๋งค๋ ฅ์ ์ด๊ณ  ์ƒํ˜ธ์ž‘์šฉ์ด ํ’๋ถ€ํ•œ ๊ตฌ์„ฑ์›์ด ๋˜๋Š” ๋ฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋ผ๊ณ  ๋ฏฟ์Šต๋‹ˆ๋‹ค.

์ „์ฒด ๋ฌธ์„œ์™€ ๋” ๋งŽ์€ ์˜ˆ์ œ๋Š” ์ €ํฌ ๋ฌธ์„œ ์‚ฌ์ดํŠธ์—์„œ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”ผ๋“œ๋ฐฑ, ๊ธฐ๋Šฅ ์š”์ฒญ, ์ฝ”๋“œ ๊ธฐ์—ฌ๋ฅผ ํ†ตํ•ด ์ด๋ฒˆ ๋ฆด๋ฆฌ์Šค์— ๋„์›€์„ ์ฃผ์‹  ๋ชจ๋“  ๋ถ„๋“ค๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. BotKit ์ปค๋ฎค๋‹ˆํ‹ฐ๋Š” ๊ณ„์† ์„ฑ์žฅํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“ค์–ด๋‚ผ ์ž‘ํ’ˆ๋“ค์„ ๊ธฐ๋Œ€ํ•ฉ๋‹ˆ๋‹ค!


BotKit์€ ActivityPub ์„œ๋ฒ„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ํ•˜์œ„ ๋ ˆ๋ฒจ ํ”„๋ ˆ์ž„์›Œํฌ์ธ Fedify์˜ ์ง€์›์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.

0

ใ€้€Ÿๅ ฑใ€‘ใ€Œ็งใฏ็ดๅพ—ใงใใชใ„ใ—ๆฎ‹ๅฟตใ€ๅ…ตๅบซ็œŒ็Ÿฅไบ‹้ธๅทกใ‚ŠSNSใงโ€œไธ้ฉๅˆ‡ๆŠ•็จฟโ€ใฎๅงซ่ทฏๅธ‚่ญฐใŒใ€Œ่ญฐๅ“ก็ถšๆŠ•ใ€ใ‚’่กจๆ˜Žใ€Œไฝ•ใ‚’ใ‚‚ใฃใฆใฎ่พž่ทๅ‹งๅ‘Šใชใฎใ‹ใ‚ใ‹ใ‚‰ใชใ„ใ€(MBSใƒ‹ใƒฅใƒผใ‚น)
news.yahoo.co.jp/articles/ae3b

ๆ–Ž่—คๆ”ฏๆŒ่€…ใ ใ‘ใซๆ–Ž่—คใจๅŒใ˜ใ‚ˆใ†ใชใ“ใจ่จ€ใ†ใ€‚่จ€ใ„ๅผตใฃใŸใ‚‚ใฎๅ‹ใกใจใ„ใ†ๆฅ็Ÿฅใ‚‰ใšใช้ขจๆฝฎใŒใพใ‹ใ‚Š้€šใฃใฆใ„ใ‚‹ใฎใฏใ€็Ÿฅไบ‹ใŒใใ†ใชใ‚“ใ ใ‹ใ‚‰ใ€ใ“ใ‚Œใ‹ใ‚‰ใ‚‚ใฃใจใใ†ใชใ‚‹ใ ใ‚ใ†๏ผˆใใฎๅ‰ใซๅฎ‰ๅ€ใจใ„ใ†ๆฅ็Ÿฅใ‚‰ใšใŒใ„ใŸๅ›ฝใ ใ—๏ผ‰ใ€‚

0
0
0
0
0
1
0
0
0
0
1

์œค์—ฌ์ • ์•„๋“ค ๋™์„ฑ๊ฒฐํ˜ผ์‹ ๊ณ ๋ฐฑ์— ์„ฑ์†Œ์ˆ˜์ž ๊ฐ€์กฑ๋“ค โ€œํฐ ํž˜โ€ ํ™˜์˜ ์ˆ˜์ • 2025-04-21 10:10 www.hani.co.kr/arti/society...

์œค์—ฌ์ • ์•„๋“ค ๋™์„ฑ๊ฒฐํ˜ผ์‹ ๊ณ ๋ฐฑ์— ์„ฑ์†Œ์ˆ˜์ž ๊ฐ€์กฑ๋“ค โ€œํฐ ํž˜...

0

ํ•ญ์šฐ์šธ์ œ๋Š” ํ•ดํ”ผ์ƒํƒœ๋กœ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ๋ณด๋‹จ ๋‡Ÿ์†์— ์šฐ์šธํ•œ ์ฑ„๋„์„ ๊บผ๋ฒ„๋ ค์„œ ์ด์„ฑ์  ํŒ๋‹จ์„ ์„ ๋ช…ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋Š” ๋А๋‚Œ์— ๊ฐ€๊นŒ์šด๊ฑฐ๊ฐ™์•„์š” ์ด๊ฒŒ ๊ดœํžˆ ํ•ญ์šฐ์šธ์ œ๋ฅผ ์š”์•ฝํ•˜๋Š” ์งค๋กœ ๋„๋Š”๊ฒŒ ์•„๋‹Œ

0

I didn't know

When I learned about the holocaust as teenager in Germany, many people from the Nazi era were still alive and lived all around me. Being the curious person I always was, I asked them about what happened and their role in it.

"I didn't know" was the boilerplate answer. And as they were relatives and friends, I believed them at first.

Then in 1981 we got a new teacher for history and he exposed the lie. Or more precise: he got us exposing those lies.

1/5

0
0
1

ํ‰์ง€๋ถ€ํ„ฐ ์˜ค๋ฅด๋ง‰๊ธธ๊นŒ์ง€ ๊ฐ€๋ณ๊ฒŒ ๊ฑธ์„ ์ˆ˜ ์žˆ๊ฒŒ ๋•๋Š” ์›จ์–ด๋Ÿฌ๋ธ” ๋กœ๋ด‡. 7์‚ด์งœ๋ฆฌ ๋‹ค์ •ํ•œ ์†์ฃผ์™€ ๋Œ€ํ™”ํ•˜๋Š” ๊ธฐ๋ถ„์„ ๋А๋ผ๊ฒŒ ํ•˜๋Š” ๋ฐ˜๋ ค๋กœ๋ด‡๊นŒ์ง€. โ€˜๋Œ๋ด„ ๋กœ๋ด‡โ€™์„ ์ง์ ‘ ์ฒดํ—˜ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

๋Œ๋ด„ ๋กœ๋ด‡์„ ์จ๋ดค๋‹ค, ์‹ ๋ฐ•ํ•œ ๊ธฐ์ˆ ์— ๋งˆ์Œ๊นŒ์ง€ ์ฝ์—ˆ์œผ๋ฉดโ€ฆ

0
0

์„œ์šธ์‹œ๊ฐ€ ์ „๊ตญ์žฅ์• ์ธ์ฐจ๋ณ„์ฒ ํ์—ฐ๋Œ€(์ „์žฅ์—ฐ)์˜ ์ง€ํ•˜์ฒ  ํƒ‘์Šน ์‹œ์œ„์— ๋˜๋‹ค์‹œ ํ˜•์‚ฌ ๊ณ ๋ฐœ๋กœ ๋Œ€์‘ํ•˜๊ณ  ๋‚˜์„ฐ์Šต๋‹ˆ๋‹ค. ์˜ค์„ธํ›ˆ ์„œ์šธ์‹œ์žฅ ์ทจ์ž„ ์ดํ›„ ์ด์–ด์ ธ ์˜จ โ€˜๊ณ ์†Œยท๊ณ ๋ฐœ ๋Œ€์‘โ€™ ๊ธฐ์กฐ๊ฐ€ ์˜ฌํ•ด๋„ ๋ฐ˜๋ณต๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. www.hani.co.kr/arti/area/ca...

์ „์žฅ์—ฐ ์‹œ์œ„ ๋•Œ๋งˆ๋‹ค โ€˜๊ณ ์†Œโ€™๋กœ ๋งž๋Œ€์‘ํ•˜๋Š” ์„œ์šธ์‹œ

0

์ง„๋ณด๋‹น ๋Œ€์„  ํ›„๋ณด์— ๊น€์žฌ์—ฐ...โ€œํŽ˜๋ฏธ๋‹ˆ์ŠคํŠธ ๋Œ€ํ†ต๋ น ๋˜๊ฒ ๋‹คโ€ ์ด์–ด "์ƒˆ๋กœ์šด ํ‰๋“ฑ ๊ณตํ™”๊ตญ์„ ์—ด์–ด๋‚ด๊ฒ ๋‹ค. ์ฐจ๋ณ„๊ธˆ์ง€๋ฒ•์œผ๋กœ ์กด์—„ํ•œ ์ผ์ƒ์„ ์ง€ํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๋‚˜๋ผ, ์ผํ•˜๋Š” ์‚ฌ๋žŒ ๋ˆ„๊ตฌ๋‚˜ ๋…ธ๋™์กฐํ•ฉ์„ ํ†ตํ•ด ๊ถŒ๋ฆฌ๋ฅผ ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๋‚˜๋ผ๋ฅผ ๋งŒ๋“ค๊ฒ ๋‹ค"๋ฉฐ "์†Œ๋“, ์  ๋”, ์ฃผ๊ถŒ, ์ง€์—ญ ๋“ฑ ๋ชจ๋“  ๋ถˆํ‰๋“ฑ์„ ๊นจํŠธ๋ ค๊ฐ€๋Š” ๋Œ€ํ†ต๋ น, ๋Œ€ํ•œ๋ฏผ๊ตญ ์ตœ์ดˆ์˜ ํŽ˜๋ฏธ๋‹ˆ์ŠคํŠธ ๋Œ€ํ†ต๋ น์ด ๋˜๊ฒ ๋‹ค"๊ณ  ๋ฐํ˜”๋‹ค. ์ž…๋ ฅ 2025.04.20 03:52 www.womennews.co.kr/news/article...

์ง„๋ณด๋‹น ๋Œ€์„  ํ›„๋ณด์— ๊น€์žฌ์—ฐ...โ€œํŽ˜๋ฏธ๋‹ˆ์ŠคํŠธ ๋Œ€ํ†ต๋ น ๋˜๊ฒ ...

0
0

์ „์žฅ์—ฐ ์‹œ์œ„ ๋•Œ๋งˆ๋‹ค ์„œ์šธ์‹œ๋Š” โ€˜์†Œ์†กโ€™ ๋งž๋Œ€์‘โ€ฆโ€œ์ œ๋„์  ๋Œ€ํ™” ํ•„์š”โ€ ์ˆ˜์ • 2025-04-21 15:31 ๋“ฑ๋ก 2025-04-21 15:16 www.hani.co.kr/arti/area/ca...

์ „์žฅ์—ฐ ์‹œ์œ„ ๋•Œ๋งˆ๋‹ค ์„œ์šธ์‹œ๋Š” โ€˜์†Œ์†กโ€™ ๋งž๋Œ€์‘โ€ฆโ€œ์ œ๋„์  ...

0