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
1
0
0
1
1
1
0
0
0
0

ๅฏ่ƒฝๆ˜ฏๆˆ‘็พๅœจๅพˆ้œ€่ฆ้€™ๆ–น้ข็š„ๅผ•่ทฏ
ๆ‰€ไปฅไธ่ซ–ๆ˜ฏๆ›ธ็ฑๆˆ–ๆ˜ฏIGๅœ–ๆ–‡
้ƒฝ็œ‹ๅˆฐไบ†้—œๆ–ผใ€ŒๆœŸๅพ…ใ€็š„่จŽ่ซ–

็ฉถ็ซŸๆ˜ฏ่ฆๆŠฑๆœ‰ๆœŸๅพ…ๅ‘ข
้‚„ๆ˜ฏไธๆœŸไธๅพ…๏ผŒไธๅ—ๅ‚ทๅฎณ๏ผŸ

้Ž็จ‹ไธญๆœ‰ๅพžไธๅŒ็š„่ง’ๅบฆๅŽปๆŽข่จŽ
ๅฐฑๆˆ‘่‡ชๅทฑ็š„็ถœๅˆ็ต่ซ–ๆ˜ฏ

ๅฏไปฅๆŠฑๆœ‰ๅˆ็†็š„ๆœŸๅพ…๏ผŒไธฆไธ”ๅšๅˆฐ่ชฒ้กŒๅˆ†้›ข

้‚„ๆ˜ฏๅฏไปฅๆœŸๅพ…้‚ฃไบ›็พŽๅฅฝ็š„ไบ‹็‰ฉๅ‡บ็พๅœจ็”Ÿๆดปไธญ
ไฝ†ๆ˜ฏ่ฆๅˆ†ๆธ…ๆฅšๅ“ชไบ›ๆ˜ฏ่‡ชๅทฑๅฏๆŽง็š„
้‡ๅฐไธๅฏๆŽง็š„ๅฐฑไธ่ฆ็ณพ็ตๅ…ง่€—
ๅฏๆŽง็š„้ƒจๅˆ†ๅฐฑ็›ก่‡ชๅทฑๆ‰€ๅŠ็š„ๆ”นๅ–„ๅฐฑๅฅฝ

็•ข็ซŸๅฆ‚ๆžœไป€้บผ้ƒฝไธๆœŸๅพ…
็”ŸๆดปไนŸๆ˜ฏๆœƒ่ฎŠๅพ—่ ปไนๅ‘ณ็š„

0
0
0

์„ฑํ‰๋“ฑ์„ โ€˜์„ฑํ‰๋“ฑโ€™์ด๋ผ ๋งํ•˜์ง€ ๋ชปํ•˜๊ณ ยทยทยท๋ฏผ์ฃผ๋‹น ์  ๋” ๊ณต์•ฝ ํ‡ด๋ณด ์กฐ์ง www.khan.co.kr/article/2025... "๋ฏผ์ฃผ๋‹น๊ณผ ์ด ํ›„๋ณด๊ฐ€ ์  ๋” ๊ณต์•ฝ์— ์†Œ๊ทน์ ์ธ ๋ฐ๋Š” ์ง€๋‚œ ๋Œ€์„ ์—์„œ 2030 ๋‚จ์„ฑ์˜ ์ง€์ง€๋ฅผ ๋ฐ›์ง€ ๋ชปํ•ด ํŒจ๋ฐฐํ–ˆ๋‹ค๋Š” ์ธ์‹์ด ์ž‘์šฉํ•œ ๊ฒƒ์œผ๋กœ ํ•ด์„๋œ๋‹ค. ๋ฏผ์ฃผ๋‹น ์—ฌ์„ฑ์œ„ ๊ด€๊ณ„์ž๋Š” โ€œ๋‹น์—์„  ์ด์ค€์„ ๊ฐœํ˜์‹ ๋‹น ํ›„๋ณด ๋“ฑ์ด 2030 ์„ฑ๋ณ„ ๊ฐˆ๋ผ์น˜๊ธฐ๋ฅผ ํ•˜๋ฉฐ โ€˜์žฌ๋ฏธ๋ณด๋Š”โ€™ ๊ฒƒ์— ๋‹นํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ผ ๊ฒƒโ€์ด๋ผ๊ณ  ๋งํ–ˆ๋‹ค."

์„ฑํ‰๋“ฑ์„ โ€˜์„ฑํ‰๋“ฑโ€™์ด๋ผ ๋งํ•˜์ง€ ๋ชปํ•˜๊ณ ยทยทยท๋ฏผ์ฃผ๋‹น ์  ๋” ...

0
2
1
0
0
1
1
0
0
0
1

Hey folks! We're excited to share a preview of a new API coming in 1.6 that should make structuring larger federated apps much cleaner: FederationBuilder.

As your Fedify applications grow, you might encounter circular dependency issues when registering dispatchers and listeners across multiple files. The new FederationBuilder pattern helps solve this by separating the configuration phase from instantiation.

Instead of this:

// federation.ts
import { createFederation } from "@fedify/fedify";

export const federation = createFederation<AppContext>({
  kv: new DbKvStore(), 
  queue: new RedisMessageQueue(),
  // Other options...
});

// Now we need to import this federation instance in other files
// to register dispatchers and listeners...

You can now do this:

// builder.ts
import { createFederationBuilder } from "@fedify/fedify";

export const builder = createFederationBuilder<AppContext>();

// other files can import and configure this builder...
// actors.ts
import { builder } from "./builder.ts";
import { Person } from "@fedify/fedify";

builder.setActorDispatcher("/users/{handle}", async (ctx, handle) => {
  // Actor implementation
});
// inbox.ts
import { builder } from "./builder.ts";
import { Follow } from "@fedify/fedify";

builder.setInboxListeners("/users/{handle}/inbox", "/inbox")
  .on(Follow, async (ctx, follow) => {
    // Follow handling
  });
// main.ts โ€” Only create the Federation instance at startup
import { builder } from "./builder.ts";

// Build the Federation object with actual dependencies
export const federation = await builder.build({
  kv: new DbKvStore(),
  queue: new RedisMessageQueue(),
  // Other options...
});

This pattern helps avoid circular dependencies and makes your code more modular. Each part of your app can configure the builder without needing the actual Federation instance.

The full documentation will be available when 1.6 is released, but we wanted to share this early with our community. Looking forward to your feedback when it lands!

Want to try it right now? You can install the development version from JSR or npm:

# Deno
deno add jsr:@fedify/fedify@1.6.0-dev.777+1206cb01

# Node.js
npm add @fedify/fedify@1.6.0-dev.777

# Bun
bun add @fedify/fedify@1.6.0-dev.777

0
0
0
0

Hey folks! We're excited to share a preview of a new API coming in 1.6 that should make structuring larger federated apps much cleaner: FederationBuilder.

As your Fedify applications grow, you might encounter circular dependency issues when registering dispatchers and listeners across multiple files. The new FederationBuilder pattern helps solve this by separating the configuration phase from instantiation.

Instead of this:

// federation.ts
import { createFederation } from "@fedify/fedify";

export const federation = createFederation<AppContext>({
  kv: new DbKvStore(), 
  queue: new RedisMessageQueue(),
  // Other options...
});

// Now we need to import this federation instance in other files
// to register dispatchers and listeners...

You can now do this:

// builder.ts
import { createFederationBuilder } from "@fedify/fedify";

export const builder = createFederationBuilder<AppContext>();

// other files can import and configure this builder...
// actors.ts
import { builder } from "./builder.ts";
import { Person } from "@fedify/fedify";

builder.setActorDispatcher("/users/{handle}", async (ctx, handle) => {
  // Actor implementation
});
// inbox.ts
import { builder } from "./builder.ts";
import { Follow } from "@fedify/fedify";

builder.setInboxListeners("/users/{handle}/inbox", "/inbox")
  .on(Follow, async (ctx, follow) => {
    // Follow handling
  });
// main.ts โ€” Only create the Federation instance at startup
import { builder } from "./builder.ts";

// Build the Federation object with actual dependencies
export const federation = await builder.build({
  kv: new DbKvStore(),
  queue: new RedisMessageQueue(),
  // Other options...
});

This pattern helps avoid circular dependencies and makes your code more modular. Each part of your app can configure the builder without needing the actual Federation instance.

The full documentation will be available when 1.6 is released, but we wanted to share this early with our community. Looking forward to your feedback when it lands!

Want to try it right now? You can install the development version from JSR or npm:

# Deno
deno add jsr:@fedify/fedify@1.6.0-dev.777+1206cb01

# Node.js
npm add @fedify/fedify@1.6.0-dev.777

# Bun
bun add @fedify/fedify@1.6.0-dev.777

0
0
0
0

ใ€‚

ไธŠใฎ้šŽใฎ่ถณ้Ÿณใ€็žฌ้–“็š„ใซๆœ€้ซ˜ใง42.5dbๅฉใๅ‡บใ—ใŸ
ใ“ใ‚Œๅคฉไบ•ใซ่ฟ‘ใ„ใจใ“ใ‚ใง่จˆๆธฌใ—ใŸใ‚‰45db่ถ…ใˆใ‚‹ใ‹ใชใ‚(็ก็œ ใซ้ฉใ•ใชใ„้Ÿณ้‡ๅ€ค)

1
0
0
0
0
0
0

๊ตฌ์ถฉ์ œ๋ฅผ ๋จน์œผ๋ฉด ์›๋ž˜ ์šฐ์šธํ•จ์ด ๊ทน๋Œ€ํ™”๋˜๊ณ  ์‚ด๊ธฐ ์‹ซ์–ด์ง€๋‚˜์š”?
์•„๋‹ˆ, ์–ด์ฉŒ๋ฉด ๋‚ด๊ฐ€...

0
0
0

10์—ฌ๋…„ ์ „์— ๋Š˜์–ด๋‚˜๋Š” ํ˜์˜ค ๋Œ“๊ธ€ ๋ณด๋ฉด์„œ ์šฐ๋ คํ–ˆ๋˜๊ฒŒ ์ด์ œ ํ˜„์‹คํ™” ๋˜๋Š”๊ตฌ๋‚˜ ๐Ÿซ 

RE: https://bsky.app/profile/did:plc:uabkr6tn7ru4b4e5e6udleuf/post/3lnf4nctihs2h

0

ไฝœๆฏๅพˆๆญฃๅธธ๏ผˆ๏ผ‘๏ผ’้ปž็ก่ฆบ๏ผ‰ไฝ†ๆ˜ฏๆฏๆฌก้ƒฝๅˆฐ็ก่ฆบๆ™‚้–“ๆ‰ๆธ…้†’๏ผŒๅ…ถไป–ๆ™‚้–“้ƒฝๅ›ฐๅˆฐไธ่กŒ็œŸ็š„ๅพˆๅฟƒ็ดฏ.jpg

0

๋ชจ๋“  ์ฐจ๋ณ„์€ ์—†์• ์•ผํ•˜์ง€๋งŒ '๋ฒ•'์œผ๋กœ ๊ฐ€๋Š” ๊ฑด ์•ˆ๋œ๋‹ค๋Š” ๊ฒŒ ๋ฌด์Šจ๋ง์ด์ง€.. ์ฐจ๋ณ„ ๊ธˆ์ง€๋ฅผ ๋ฒ•์ œํ™” ์•ˆํ•˜๋ฉด ์ฐจ๋ณ„์ด ์–ด๋–ป๊ฒŒ ์—†์–ด์ง€์ง€? "๋‚˜ ์ฐจ๋ณ„ ํ•˜๊ณ  ์‹ถ์–ด"๋ฅผ "๋‚˜ ์ข‹์€ ์‚ฌ๋žŒ์ด์•ผ" ๋ž‘ ๊ฐ™์ด ๋งํ•˜๊ณ  ์‹ถ์–ด์„œ ๋ณ€๋ช…์„ ํ•˜๋‹ค๋ณด๋ฉด ์ด๋ ‡๊ฒŒ ๋ง๋„ ์•ˆ๋˜๋Š” ์†Œ๋ฆฌ๊ฐ€ ๋‚˜์˜จ๋‹ค.

RE: https://bsky.app/profile/did:plc:2sjfdilgcpeyjnqo7u6apdfn/post/3lnfddz54x22r

0
0

@thx@mustard.blog์ƒ์–ดํ•™์‚ฐํƒ€ :spinny_cat_gay: @thefoxfitunae@mustard.blogํ‚ค์ธ ๋„ค ํ—ˆ์–ธ์ฆ์„ ๋„˜์–ด ํƒœ์—ฐํ•˜๊ฒŒ ๊ฐ€์ง“๋งํ•˜๋Š” ๋ชจ์Šต์ด ๋ถ„๋…ธ๋ฅผ ์ผ์œผํ‚ค๋„ค์š”. 3์›” ์—ฐํŒจ์— 4์›”์€ ๋” ์—ฐํŒจ/์—ฐํŒจ๋ฅผ ๊ธฐ๋กํ•ด์„œ ๊ผด์ฐŒ๊นŒ์ง€ ํ–ˆ๋Š”๋ฐ ๋ง์ž…๋‹ˆ๋‹ค. ใ…Žใ…Žใ…Žใ…Ž

0
0
1
1
0
0