Profile img

Haze

@nebuleto@hackers.pub ยท 92 following ยท 88 followers

Haze Lee but also known as Kihan Park

  • ๐Ÿ’ป Make stuff with Computer
  • ๐Ÿ’‰ Living with Migraine more than 10y, Migraine Advocate [Headache Place]
  • ๐Ÿ’ฌ ๐Ÿ‡ฐ๐Ÿ‡ท, Also ๐Ÿ‡ฏ๐Ÿ‡ต & ๐Ÿ‡ฌ๐Ÿ‡ง๐Ÿ‡บ๐Ÿ‡ธ
GitHub
@Nebu1eto
X(Twitter)
@Nebu1eto

Update: we've decided to go ahead and submit the CFP to @COSCUP 2026. The track will be called Fediverse & Social Webโ€”think FOSDEM's Social Web devroom, but in Taipei. is free to attend, like FOSDEM.

If the track is accepted, would you be interested in coming to Taipei (Aug 8โ€“9) to give a talk?

(Boosts appreciated!)

https://hollo.social/@hongminhee/019ca8b2-ecca-7150-a237-37f35de45401

0
2
0

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8โ€“9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track thereโ€”something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

3
5
3

I'm writing this in English.

Not because English is my first languageโ€”it isn't. I'm writing this in English because if I wrote it in Korean, the people I'm addressing would run it through an outdated translator, misread it, and respond to something I never said. The responsibility for that mistranslation would fall on me. It always does.

This is the thing Eugen Rochko's post misses, despite its good intentions.

@GargronEugen Rochko argues that LLMs are no substitute for human translators, and that people who think otherwise don't actually rely on translation. He's right about some of this. A machine-translated novel is not the same as one rendered by a skilled human translator. But the argument rests on a premise that only makes sense from a certain position: that translation is primarily about quality, about the aesthetic experience of reading literature in another language.

For many of us, translation is first about access.

The professional translation market doesn't scale to cover everything. It never has. What gets translatedโ€”and into which languagesโ€”follows the logic of cultural hegemony. Works from dominant Western languages flow outward, translated into everything. Works from East Asian languages trickle in, selectively, slowly, on someone else's schedule. The asymmetry isn't incidental; it's structural.

@GargronEugen Rochko notes, fairly, that machine translation existed decades before LLMs. But this is only half the story, and which half matters depends entirely on which languages you're talking about. European language pairs were reasonably serviceable with older tools. Koreanโ€“English, Japaneseโ€“English, Chineseโ€“English? Genuinely usable translation for these pairs arrived with the LLM era. Treating โ€œmachine translationโ€ as a monolithic technology with a uniform history erases the experience of everyone whose language sits far from the Indo-European center.

There's also something uncomfortable in the framing of the button-press thought experiment: โ€œI would erase LLMs even if it took machine translation with it.โ€ For someone whose language has always been peripheral, that button looks very different. It's not an abstract philosophical position; it's a statement about whose access to information is expendable.

I want to be clear: none of this is an argument that LLMs are good, or that the harms @GargronEugen Rochko describes aren't real. They are. But a critique of AI doesn't become more universal by ignoring whose languages have always been on the margins. If anything, a serious critique of AI's political economy should be more attentive to those asymmetries, not less.

The fact that I'm writing this in English, carefully, so it won't be misreadโ€”that's not incidental to my argument. That is my argument.

5
13
0
2
2
0

ๆœ€่ฟ‘(์ตœ๊ทผ) chardet์˜ MIT ๋ฆฌ๋ผ์ด์„ ์‹ฑ๊ณผ ้—œ่ฏ(๊ด€๋ จ)ํ•ด์„œ Redis์˜ antirez์™€ Flask์˜ Armin Ronacher(ไธ€ๅ(์ผ๋ช…) mitsuhiko)๊ฐ€ ์ด๋ฅผ ๆ“่ญท(์˜นํ˜ธ)ํ•˜๋Š” ๊ธ€์„ ์ผ๋Š”๋ฐ, ๊ทธ์— ๅฐ(๋Œ€)ํ•œ ๋‚˜๋ฆ„๋Œ€๋กœ์˜ ๅ่ซ–(๋ฐ˜๋ก )์„ ์จ ๋ดค์Šต๋‹ˆ๋‹ค: ใ€ˆๅˆๆณ•(ํ•ฉ๋ฒ•)์ด๋ฉด ๅ…ฌๆญฃ(๊ณต์ •)ํ•œ๊ฐ€: AI ๅ†ๅ…ท้กฏ(์žฌ๊ตฌํ˜„)๊ณผ ์นดํ”ผ๋ ˆํ”„ํŠธ์˜ ไพต่•(์นจ์‹)ใ€‰(ํ•œ๊ธ€).

4

์ œ๊ฐ€ ์ผํ•˜๋Š” ํŒ€์—์„œ ์ฑ„์šฉ์ค‘์ž…๋‹ˆ๋‹ค. https://careers.linecorp.com/ko/jobs/2964/

ํšŒ์‚ฌ ์ด๋ฆ„์ด LINE ์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋ฉ”์‹ ์ €๋Š” ์•ˆ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ตญ๋‚ด์™ธ ์„ ๋ฌผ ์‹œ์žฅ์—์„œ ๊ฑฐ๋ž˜ํ•˜๋Š” ์ž๋™๋งค๋งค ์ „๋žต๊ณผ ๊ทธ ์ „๋žต์„ ์„œ๋น™ํ•˜๋Š” ํ”Œ๋žซํผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Rust, FPGA, AI ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๊ธด ํ•œ๋ฐ, ๊ทธ๋ƒฅ ์ฝ”๋”ฉ ์ž˜ํ•˜์‹œ๋Š”๋ถ„์ด๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹œ์žฅ์€ ๋ชฐ๋ผ๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทผ๋ฐ ํ˜ผ์ž ์ฝ”๋”ฉ ์ž˜ํ•˜๋Š”๊ฑฐ ๋ง๊ณ  AI๋ž‘ ๊ฐ™์ด๋„ ์ž˜ ์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ด๋Ÿฐ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค https://github.com/youknowone/

๊ฐ™์ด ์ผํ•  @perlmint ๋‹˜์€ https://github.com/perlmint/

ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

0

I'm thinking of proposing a /social web community track at @COSCUP 2026 (Aug 8โ€“9, Taipei)โ€”think FOSDEM's Social Web devroom, but in East Asia. Before I submit the CFP, I'd love to get a sense of what to call it. What do you think?

(Boosts appreciated!)

0
2
0

์ œ๊ฐ€ ์ผํ•˜๋Š” ํŒ€์—์„œ ์ฑ„์šฉ์ค‘์ž…๋‹ˆ๋‹ค. https://careers.linecorp.com/ko/jobs/2964/

ํšŒ์‚ฌ ์ด๋ฆ„์ด LINE ์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€๋งŒ ๋ฉ”์‹ ์ €๋Š” ์•ˆ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๊ตญ๋‚ด์™ธ ์„ ๋ฌผ ์‹œ์žฅ์—์„œ ๊ฑฐ๋ž˜ํ•˜๋Š” ์ž๋™๋งค๋งค ์ „๋žต๊ณผ ๊ทธ ์ „๋žต์„ ์„œ๋น™ํ•˜๋Š” ํ”Œ๋žซํผ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. Rust, FPGA, AI ๊ฐ™์€ ํ‚ค์›Œ๋“œ๋ฅผ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๊ธด ํ•œ๋ฐ, ๊ทธ๋ƒฅ ์ฝ”๋”ฉ ์ž˜ํ•˜์‹œ๋Š”๋ถ„์ด๋ฉด ์ข‹๊ฒ ์Šต๋‹ˆ๋‹ค. ์‹œ์žฅ์€ ๋ชฐ๋ผ๋„ ๋ฉ๋‹ˆ๋‹ค. ๊ทผ๋ฐ ํ˜ผ์ž ์ฝ”๋”ฉ ์ž˜ํ•˜๋Š”๊ฑฐ ๋ง๊ณ  AI๋ž‘ ๊ฐ™์ด๋„ ์ž˜ ์ฝ”๋”ฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ €๋Š” ์ด๋Ÿฐ ์‚ฌ๋žŒ์ž…๋‹ˆ๋‹ค https://github.com/youknowone/

๊ฐ™์ด ์ผํ•  @perlmint ๋‹˜์€ https://github.com/perlmint/

ํ•จ๊ป˜ ์ผํ•˜๊ณ  ์‹ถ์œผ์‹  ๋ถ„์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

8
0
0

Haze shared the below article:

์„ฑ๊ณต์ ์ธ AI ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๋ ค๋ฉด

Seo Sanghyeon @sanxiyn@hackers.pub

AI ์—์ด์ „ํŠธ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๋ฉฐ ์–ป์€ ์‹ค์ „ ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ํšจ์œจ์ ์ธ ์„ค๊ณ„์™€ ์šด์˜ ์ „๋žต์„ ์‹ฌ๋„ ์žˆ๊ฒŒ ๋‹ค๋ฃน๋‹ˆ๋‹ค. ์„ฑ๊ณต์ ์ธ ์—์ด์ „ํŠธ๋ฅผ ์œ„ํ•ด ๋ชฉํ‘œ๋Š” ์ธก์ • ๊ฐ€๋Šฅํ•˜๊ณ  ์œ ์šฉํ•˜๋ฉฐ ๋‹ฌ์„ฑ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋กœ ์ขํ˜€์•ผ ํ•˜๋ฉฐ, ๋กœ๊ทธ ์ธํ”„๋ผ ๊ตฌ์ถ•๊ณผ ์ •๊ตํ•œ ํ‰๊ฐ€ ์„ค๊ณ„(evaluation design)๋ฅผ ํ†ตํ•ด ์ง€์†์ ์ธ ๊ฐœ์„ ์˜ ํ† ๋Œ€๋ฅผ ๋งˆ๋ จํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ๋„๋ฉ”์ธ ํŠนํ™” ์ง€์‹์„ ์Šคํ‚ฌ(skill) ํ˜•ํƒœ๋กœ ํŒจํ‚ค์ง•ํ•˜์—ฌ ๋ชจ๋ธ์˜ ์ถ”๋ก  ๋Šฅ๋ ฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ณ , ํ”„๋กฌํ”„ํŠธ ์บ์‹ฑ๊ณผ ์ ์ ˆํ•œ ๋ชจ๋ธ ์„ ํƒ์œผ๋กœ ๋น„์šฉ ํšจ์œจ์„ฑ์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ์ฒด์ ์ธ ๊ตฌํ˜„ ๋‹จ๊ณ„์—์„œ๋Š” ์ปจํ…์ŠคํŠธ ์œˆ๋„(context window) ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋ฉ€ํ‹ฐ ์—์ด์ „ํŠธ ๊ตฌ์กฐ์™€ ์„œ๋ธŒ ์—์ด์ „ํŠธ์˜ ์‹คํ–‰ ์ œ์–ด ๊ธฐ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ณต์žกํ•œ ๋„๊ตฌ ํ˜ธ์ถœ ๋Œ€์‹  ๋ชจ๋ธ์ด ์ง์ ‘ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ฒŒ ํ•จ์œผ๋กœ์จ ํ† ํฐ ์‚ฌ์šฉ๋Ÿ‰์„ ํ˜์‹ ์ ์œผ๋กœ ์ค„์ด๋Š” ์ฝ”๋“œ ์ƒ์„ฑ(code generation) ํŒจํ„ด์˜ ํšจ์šฉ์„ฑ์„ ๊ฐ•์กฐํ•ฉ๋‹ˆ๋‹ค. ์ด์™€ ๋”๋ถˆ์–ด ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ํŒŒ์ผ ํŽธ์ง‘ ๋ฐฉ์‹๊ณผ ์ƒŒ๋“œ๋ฐ•์Šค ๊ธฐ๋ฐ˜์˜ ๊ฐ•๋ ฅํ•œ ์ธ๊ฐ€ ์ œ์–ด(authorization) ์‹œ์Šคํ…œ ๊ตฌ์ถ•์€ ์•ˆ์ „ํ•œ ์ž์œจ ์‹œ์Šคํ…œ์„ ์œ„ํ•œ ํ•ต์‹ฌ ์š”์†Œ๋กœ ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ๋น ๋ฅด๊ฒŒ ์ง„ํ™”ํ•˜๋Š” AI ์—์ด์ „ํŠธ ๋ถ„์•ผ์—์„œ ๊ธฐ์ˆ ์  ์ •ํ™•์„ฑ๊ณผ ์‹ค์šฉ์„ฑ์„ ๊ฒธ๋น„ํ•œ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์„ค๊ณ„ํ•˜๋ ค๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๊ตฌ์ฒด์ ์ด๊ณ  ์‹ค์งˆ์ ์ธ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Read more โ†’
12
0
0
2

I've been increasingly concerned about the corporate monopoly over frontier LLMs. While many ethically-minded people choose to boycott these models, I believe passive resistance alone cannot break the structural grip of big tech. To truly โ€œliberateโ€ these technologies and turn them into public goods, we need to look beyond moral high grounds and engage with the material basis of AIโ€”specifically compute, data, and the relations of production.

I've written two posts exploring this through the lens of historical materialism. The first piece analyzes why current โ€œopen sourceโ€ definitions struggle with LLMs, and the second discusses what it means to โ€œact materialisticallyโ€ in our imperfect world. My goal is to suggest a path forward that moves from mere boycotting to a more proactive, structural socialization of AI infrastructure.

If you've been feeling uneasy about the AI landscape but aren't sure if boycotting is the final answer, I'd love for you to give these a read:

5
4
0

๊ทธ ๋ญ์‹œ๋ƒ.... ์ œ๊ฐ€ ๋ชจ์ž„ ๊ฐœ์ตœ ํ”Œ๋žซํผ (๋Œ€์ถฉ event-us.kr ํ˜น์€ connpass.com ๊ฐ™์€๊ฑฐ) + ์ง€์—ญ ๊ธฐ๋ฐ˜ ๋ฆฌ๋ทฐ ์„œ๋น„์Šค (๋Œ€์ถฉ ํฌ์Šคํ€˜์–ด ๊ฐ™์€๊ฑฐ) ๋ฅผ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ์š”.

**๋‹น์—ฐํžˆ, ์—ฐํ•ฉ์šฐ์ฃผ ๊ฑฐ์ฃผ๋ฏผ ๋Œ€์ƒ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์„œ๋น„์Šค์ด๊ณ , ์—ฐํ•ฉ์šฐ์ฃผ์— ๊ณ„์ •์ด ์žˆ๋‹ค๋ฉด ๋ˆ„๊ตฌ๋‚˜ OTP ๋กœ๊ทธ์ธ์œผ๋กœ ์ธ์ฆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค**

์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด๋‚˜๊ฐˆ์ง€ ๋‚˜๋ฆ„ ๊ณ ๋ฏผ์€ ๋งŽ์ด ํ•ด๋ดค๊ณ , ๋‚ด๊ฐ€ ์ƒ๊ฐํ•˜๋Š” ๊ณ ๋ฏผ์ด๋ž‘ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด ์ƒ๊ฐํ•˜๋Š” ์ˆ˜์š”๊ฐ€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธ๋„ ํ•˜๊ณ  ์‹ถ์–ด์„œ ์ด๋ ‡๊ฒŒ ๊ณต๊ฐœ์ ์ธ ๊ธ€์„ ์˜ฌ๋ฆฝ๋‹ˆ๋‹ค.

moim.live

๋งŽ์€ ๊ด€์‹ฌ๊ณผ ์‚ฌ๋ž‘ ๋ถ€ํƒ๋“œ๋ฆฌ๊ณ , ๋ฌธ์˜์‚ฌํ•ญ์ด๋‚˜ ํ”ผ๋“œ๋ฐฑ ์žˆ์œผ๋ฉด GitHub Issue๋กœ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. GitHub ๋งํฌ : github.com/moim-social/moim

๋ฌผ๋ก , ๋‹ค๋ฅธ ์ฐฝ๊ตฌ๋„ ์—ด์–ด๋‘˜ ์—ฌ์ง€๋Š” ์žˆ์Šต๋‹ˆ๋‹ค. ๋””์Šค์ฝ”๋“œ ์ฑ„๋„์€.. ๋‹น์žฅ์€ fedidev.kr ์˜ ์ฑ„๋„์„ ์ด์šฉํ•˜์ง€ ์•Š์„๊นŒ ์‹ถ๊ตฌ์š”.

4
2
1

ๆฑ(๋™)์•„์‹œ์•„์—๋„ FediCon ๊ฐ™์€ ่กŒไบ‹(ํ–‰์‚ฌ)๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๋ง์„ ์—ฌ๋Ÿฌ ็•ช(๋ฒˆ) ํ•ด์™”๋Š”๋ฐ์š”. ็จ็ซ‹็š„(๋…๋ฆฝ์ )์ธ ์ปจํผ๋Ÿฐ์Šค๋Š” ์•„์ง ์–ด๋ ต๋”๋ผ๋„, ์ž‘์€ ์ฒซ๊ฑธ์Œ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์žˆ๋Š” ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

@COSCUP 2026(่‡บๅŒ—(ํƒ€์ด๋ฒ ์ด), 8ๆœˆ(์›”) 8ๆ—ฅ(์ผ)โ€“9ๆ—ฅ(์ผ))์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ํŠธ๋ž™ ๆๆกˆ(์ œ์•ˆ)์„ ๋ฐ›๊ณ  ์žˆ์–ด์š”. FOSDEM์˜ Social Web devroom ๊ฐ™์€ ๋А๋‚Œ์œผ๋กœ, ๊ฑฐ๊ธฐ์„œ Social Web ํŠธ๋ž™์„ ์—ด ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๊ณ  ๆง‹ๆƒณ(๊ตฌ์ƒ) ์ค‘์ž…๋‹ˆ๋‹ค.

์•„์ง ็ขบๅฎš(ํ™•์ •)๋œ ๊ฑด ์•„๋ฌด๊ฒƒ๋„ ์—†์ง€๋งŒ, , , ๆˆ–(ํ˜น)์€ ์†Œ์…œ ์›น ๅ…จ่ˆฌ(์ „๋ฐ˜)์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ณ  ็™ผ่กจ(๋ฐœํ‘œ)๋‚˜ ๅ…ฑๅŒ(๊ณต๋™) ์˜ค๊ฑฐ๋‚˜์ด์ง•์— ้—œๅฟƒ(๊ด€์‹ฌ)์ด ์žˆ์œผ์‹  ๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ด์•ผ๊ธฐ ๊ฑธ์–ด์ฃผ์„ธ์š”.

https://floss.social/@COSCUP/116152356550445285

ไปฅๅ‰ใ‹ใ‚‰ใ€ๆฑใ‚ขใ‚ธใ‚ขใซใ‚‚FediConใฎใ‚ˆใ†ใชใ‚คใƒ™ใƒณใƒˆใŒใ‚ใ‚Œใฐใ„ใ„ใชใจ่จ€ใ„็ถšใ‘ใฆใใพใ—ใŸใ€‚็‹ฌ่‡ชใฎใ‚ซใƒณใƒ•ใ‚กใƒฌใƒณใ‚นใฏใพใ ้›ฃใ—ใใ†ใงใ™ใŒใ€ๅฐใ•ใชไธ€ๆญฉใจใ—ใฆ่€ƒใˆใฆใ„ใ‚‹ใ“ใจใŒใ‚ใ‚Šใพใ™ใ€‚

@COSCUP 2026๏ผˆๅฐๅŒ—ใ€8ๆœˆ8ๆ—ฅใ€œ9ๆ—ฅ๏ผ‰ใŒใ‚ณใƒŸใƒฅใƒ‹ใƒ†ใ‚ฃใƒˆใƒฉใƒƒใ‚ฏใฎๆๆกˆใ‚’ๅ—ใ‘ไป˜ใ‘ใฆใ„ใพใ™ใ€‚FOSDEMใฎSocial Web devroomใฎใ‚ˆใ†ใชๆ„Ÿใ˜ใงใ€Social Webใƒˆใƒฉใƒƒใ‚ฏใ‚’้–‹ใ‘ใชใ„ใ‹ใชใจๆ€ใฃใฆใ„ใ‚‹ใจใ“ใ‚ใงใ™ใ€‚

ใพใ ๆง‹ๆƒณๆฎต้šŽใงใ™ใŒใ€ActivityPubใ‚„ใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใ€ใ‚ฝใƒผใ‚ทใƒฃใƒซใ‚ฆใ‚งใƒ–ๅ…จ่ˆฌใซๅ–ใ‚Š็ต„ใ‚“ใงใ„ใฆใ€็™บ่กจใ‚„ๅ…ฑๅŒใ‚ชใƒผใ‚ฌใƒŠใ‚คใ‚บใซ่ˆˆๅ‘ณใŒใ‚ใ‚‹ใจใ„ใ†ๆ–นใŒใ„ใ‚Œใฐใ€ใœใฒ่ฉฑใ—ใ‹ใ‘ใฆใใ ใ•ใ„ใ€‚

https://floss.social/@COSCUP/116152356550445285

1

I've been saying for a while that we need something like FediCon in East Asia. A dedicated conference is still a stretch, but I've been thinking about a smaller step:

@COSCUP 2026 (Taipei, Aug 8โ€“9) is accepting proposals for community tracks. It might be worth trying to open a Social Web track thereโ€”something in the spirit of the Social Web devroom at FOSDEM.

Nothing is decided yet, but if you're working on , the , or anything in the social web space and might be interested in speaking (or co-organizing), I'd love to hear from you.

https://floss.social/@COSCUP/116152356550445285

ๆฑ(๋™)์•„์‹œ์•„์—๋„ FediCon ๊ฐ™์€ ่กŒไบ‹(ํ–‰์‚ฌ)๊ฐ€ ์žˆ์œผ๋ฉด ์ข‹๊ฒ ๋‹ค๋Š” ๋ง์„ ์—ฌ๋Ÿฌ ็•ช(๋ฒˆ) ํ•ด์™”๋Š”๋ฐ์š”. ็จ็ซ‹็š„(๋…๋ฆฝ์ )์ธ ์ปจํผ๋Ÿฐ์Šค๋Š” ์•„์ง ์–ด๋ ต๋”๋ผ๋„, ์ž‘์€ ์ฒซ๊ฑธ์Œ์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๊ณ  ์žˆ๋Š” ๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

@COSCUP 2026(่‡บๅŒ—(ํƒ€์ด๋ฒ ์ด), 8ๆœˆ(์›”) 8ๆ—ฅ(์ผ)โ€“9ๆ—ฅ(์ผ))์ด ์ปค๋ฎค๋‹ˆํ‹ฐ ํŠธ๋ž™ ๆๆกˆ(์ œ์•ˆ)์„ ๋ฐ›๊ณ  ์žˆ์–ด์š”. FOSDEM์˜ Social Web devroom ๊ฐ™์€ ๋А๋‚Œ์œผ๋กœ, ๊ฑฐ๊ธฐ์„œ Social Web ํŠธ๋ž™์„ ์—ด ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ํ•˜๊ณ  ๆง‹ๆƒณ(๊ตฌ์ƒ) ์ค‘์ž…๋‹ˆ๋‹ค.

์•„์ง ็ขบๅฎš(ํ™•์ •)๋œ ๊ฑด ์•„๋ฌด๊ฒƒ๋„ ์—†์ง€๋งŒ, , , ๆˆ–(ํ˜น)์€ ์†Œ์…œ ์›น ๅ…จ่ˆฌ(์ „๋ฐ˜)์„ ๋‹ค๋ฃจ๊ณ  ์žˆ๊ณ  ็™ผ่กจ(๋ฐœํ‘œ)๋‚˜ ๅ…ฑๅŒ(๊ณต๋™) ์˜ค๊ฑฐ๋‚˜์ด์ง•์— ้—œๅฟƒ(๊ด€์‹ฌ)์ด ์žˆ์œผ์‹  ๋ถ„์ด ์žˆ๋‹ค๋ฉด ์ด์•ผ๊ธฐ ๊ฑธ์–ด์ฃผ์„ธ์š”.

https://floss.social/@COSCUP/116152356550445285

1
0
0
0

๐Ÿš€ COSCUP 2026 Call for Participation is now open!

๐ŸŽค Community Tracks โ€“ Run a open-source agenda with talks, panels, or workshops. Apply by Mar 23. Spots are limited.

๐Ÿ›  Community Booths โ€“ Showcase your project, recruit members, and connect. Apply by Jun 9. First come, first served.

๐Ÿ‘‰ Apply here: s.coscup.org/26communityen

0

3ๆœˆ4ๆ—ฅ(ๆฐด)ใ‹ใ‚‰11ๆ—ฅ(ๆฐด)ใพใงๆฑไบฌใซๆปžๅœจใ—ใพใ™ใ€‚ใ“ใฎๆฉŸไผšใซๆ—ฅๆœฌใฎใƒ•ใ‚งใƒ‡ใ‚ฃใƒใƒผใ‚นใฎ็š†ใ•ใ‚“ใจใŠไผšใ„ใ—ใŸใ„ใงใ™ใ€‚ใƒฉใƒณใƒใงใ‚‚ใƒ‡ใ‚ฃใƒŠใƒผใงใ‚‚ใ€ใŠ่Œถใ‚„ใ‚ณใƒผใƒ’ใƒผใงใ‚‚ๆง‹ใ„ใพใ›ใ‚“ใ€‚็งใจไผšใฃใฆใใ ใ•ใ‚‹ๆ–นใฏใ„ใ‚‰ใฃใ—ใ‚ƒใ„ใพใ™ใ‹๏ผŸ้ฃŸไบ‹ใ‚„ใŠ่Œถใฏ็งใŒใŠใ”ใ‚Šใพใ™ใ€‚็งใฏใ“ใฎๆœŸ้–“ไธญใ€็‰นใซไบˆๅฎšใŒใชใ„ใฎใงใ€็š†ใ•ใ‚“ใฎใ”้ƒฝๅˆใซๅˆใ‚ใ›ใ‚‹ใ“ใจใŒใงใใพใ™ใ€‚๏ผˆใŸใ ใ—ใ€ๆœ€็ต‚ๆ—ฅใ‚’้™คใใพใ™๏ผ‰

7
3
0
5
0
1

์‹ํƒ๋ณด 1.15.0 ๋ฒ„์ „์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. 1๋…„์—ฌ๋งŒ์˜ ๋Œ€๊ทœ๋ชจ ์—…๋ฐ์ดํŠธ๋กœ, .NET 10 ์ ์šฉ๊ณผ ํ•จ๊ป˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋ถˆํŽธ ์‚ฌํ•ญ์œผ๋กœ ์—ฌ๊ฒจ์กŒ๋˜ Windows Sandbox์˜ vGPU ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฌธ์ œ, ์–ธ์–ด ํ‘œ์‹œ ๋ฌธ์ œ, ๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ†จ๋Ÿฌ ๊ฐ„์†Œํ™” ๋“ฑ ์„ฑ๋Šฅ๊ณผ ๊ธฐ๋Šฅ ๊ฐ„์†Œํ™”๋Š” ๋ฌผ๋ก , ์ฝ”๋“œ์˜ ๋ถ„๋Ÿ‰์„ ๋Œ€ํญ ๊ฐ„์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ถ”ํ›„ TableCloth3 ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœ ์ค‘์ธ Avalonia ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•… ๋‹ค์ง€๊ธฐ ์ž‘์—…๋„ ๊ฐ™์ด ์ง„ํ–‰ํ•ด๋‘์—ˆ๊ณ  ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ด๋‚˜๊ฐˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๋ฒˆ ์—…๋ฐ์ดํŠธ๋ถ€ํ„ฐ ARM64 ๋นŒ๋“œ๋„ ์ •์‹์œผ๋กœ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.

๊พธ์ค€ํ•œ ๊ด€์‹ฌ๊ณผ ์„ฑ์›์— ๋Š˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

https://forum.dotnetdev.kr/t/1-15-0/14191

์‹ํƒ๋ณด 1.15.0 ์—…๋ฐ์ดํŠธ

์‹ํƒ๋ณด 1.15.0 ๋ฒ„์ „์„ ์ถœ์‹œํ–ˆ์Šต๋‹ˆ๋‹ค. 1๋…„์—ฌ๋งŒ์˜ ๋Œ€๊ทœ๋ชจ ์—…๋ฐ์ดํŠธ๋กœ, .NET 10 ์ ์šฉ๊ณผ ํ•จ๊ป˜ ์ปค๋ฎค๋‹ˆํ‹ฐ์—์„œ ๋ถˆํŽธ ์‚ฌํ•ญ์œผ๋กœ ์—ฌ๊ฒจ์กŒ๋˜ Windows Sandbox์˜ vGPU ๊ธฐ๋ณธ ์‚ฌ์šฉ ๋ฌธ์ œ, ์–ธ์–ด ํ‘œ์‹œ ๋ฌธ์ œ, ๊ทธ๋ฆฌ๊ณ  ์ธ์Šคํ†จ๋Ÿฌ ๊ฐ„์†Œํ™” ๋“ฑ ์„ฑ๋Šฅ๊ณผ ๊ธฐ๋Šฅ ๊ฐ„์†Œํ™”๋Š” ๋ฌผ๋ก , ์ฝ”๋“œ์˜ ๋ถ„๋Ÿ‰์„ ๋Œ€ํญ ๊ฐ„์†Œํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ถ”ํ›„ TableCloth3 ํ”„๋กœ์ ํŠธ์—์„œ ๊ฐœ๋ฐœ ์ค‘์ธ Avalonia ๊ธฐ๋ฐ˜ ํ”„๋ก ํŠธ์—”๋“œ๋กœ ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•… ๋‹ค์ง€๊ธฐ ์ž‘์—…๋„ ๊ฐ™์ด ์ง„ํ–‰ํ•ด๋‘์—ˆ๊ณ  ๊ณ„์† ์—…๋ฐ์ดํŠธํ•ด๋‚˜๊ฐˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊พธ์ค€ํ•œ ๊ด€์‹ฌ๊ณผ ์„ฑ์›์— ๋Š˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐Ÿ™‡ https://github.com/yourtablecloth/TableCloth/releases/tag/v1.15.0

forum.dotnetdev.kr ยท ๋‹ท๋„ท๋ฐ๋ธŒ

10
0
0

์˜ˆ์ „์— LLM์ด ์–ผ๋งˆ๋‚˜ ๋ณต์žกํ•œ ์ฝ”๋“œ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํŒŒ์•…ํ•˜๊ธฐ ์œ„ํ•ด Gemini 2.5 ๋ชจ๋ธ๋“ค๋กœ ๋‚ด IOCCC 2012 ์ˆ˜์ƒ์ž‘์„ ๋˜์ง€๊ณ  ๋ฌด์Šจ ์ผ์„ ํ•˜๋Š”์ง€ ์‹คํ–‰ ์—†์ด ์•Œ์•„ ๋งž์ถฐ ๋ณด๋ผ๊ณ  ํ–ˆ๋”๋‹ˆ ํ•˜๋‚˜๋„ ์ œ๋Œ€๋กœ ํŒŒ์•…ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ์ ์ด ์žˆ๋‹ค. ๋ฌธ๋“ ์ƒ๊ฐ์ด ๋‚˜์„œ Gemini 3 Pro๋Š” ๊ฐœ์„ ๋˜์—ˆ์„๋ ค๋‚˜ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ํžŒํŠธ ํ•˜๋‚˜๋งŒ ๋ฐ›๊ณ  10๋ถ„๋™์•ˆ ์ƒ๊ฐํ•˜๋”๋‹ˆ ์™„๋ฒฝํ•˜๊ฒŒ ์‘๋‹ต์— ์„ฑ๊ณตํ–ˆ๋‹ค! ์‹ฌ์ง€์–ด ์„ค๋ช…๋„ ์‹คํ–‰ ์—†์ด ๋ถ„์„ํ–ˆ๋‹ค๋Š” ๊ฑธ ๊ฐ์•ˆํ•  ๋•Œ ๋งค์šฐ ์ •ํ™•ํ–ˆ๋‹ค. IOCCC ์ˆ˜์ƒ์ž‘์„ ๋ชจ๋‘ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์„ ๊ฐ€๋Šฅ์„ฑ์„ ๊ฐ์•ˆํ•ด ์ด์ „์— ๋ณธ ์ ์ด ์žˆ๋ƒ๊ณ  ๋ฌผ์–ด ๋ณด๋‹ˆ ํ™˜๊ฐ(...)์„ ๋‚ด๋ฑ‰๋Š” ๊ฒƒ๋„ ๊ทธ๋ ‡๊ณ (๊ทธ๋ณด๋‹ค ์™ธ์› ๋‹ค๋ฉด ์ฒ˜์Œ์— ๋ฐ”๋กœ ์ •๋‹ต์„ ์–˜๊ธฐํ–ˆ๊ฒ ์ง€), ์‹ค์ œ๋กœ ์ƒ๊ฐ ๊ณผ์ •์„ ๋ณด๋ฉด ์‚ฌ๋žŒ์ด ํ•  ๋ฒ•ํ•œ ๋ถ„์„์„ ์ „๋ถ€ ํ•˜๊ณ  ์žˆ๋Š” ๊ฑธ ๋ณด๋‹ˆ ์ง„์งœ๋กœ LLM๋“ค์˜ reasoning ๋Šฅ๋ ฅ์ด ์ด ์ •๋„ ์ˆ˜์ค€์— ๋„๋‹ฌํ–ˆ์Œ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค. ์„ธ์ƒ ์ฐธ ๋งŽ์ด ๋ฐœ์ „ํ–ˆ๋„ค.

> ๋‹ค์Œ C ํ”„๋กœ๊ทธ๋žจ์ด ํ•˜๋Š” ์ผ์„ ์•Œ๋ ค ์ค˜. [์ฝ”๋“œ ์ƒ๋žต]

์ด C ํ”„๋กœ๊ทธ๋žจ์€ **๋‚œ๋…ํ™”(obfuscated)**๋œ ์ฝ”๋“œ๋กœ, ์ž…๋ ฅ๋ฐ›์€ **์‹œ๊ฐ„ ๋˜๋Š” ๋‹จ์œ„๊ฐ€ ํฌํ•จ๋œ ๋ฌธ์ž์—ด**์„ ํ•ด์„ํ•˜์—ฌ ์ดํ•ฉ์„ ๊ณ„์‚ฐํ•œ ๋’ค, ๊ทธ ๊ฒฐ๊ณผ๋ฅผ **16์ง„์ˆ˜(Hexadecimal)**๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ž…๋‹ˆ๋‹ค.

๊ตฌ์ฒด์ ์ธ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1.  **์ž…๋ ฅ ์ฒ˜๋ฆฌ**:
    *   `getchar()`๋ฅผ ํ†ตํ•ด ํ‘œ์ค€ ์ž…๋ ฅ(stdin)์—์„œ ๋ฌธ์ž๋ฅผ ํ•˜๋‚˜์”ฉ ์ฝ์–ด๋“ค์ž…๋‹ˆ๋‹ค.
    *   `|32`๋ฅผ ํ†ตํ•ด ๋Œ€๋ฌธ์ž๋ฅผ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2.  **๋ฌธ์ž ๋งคํ•‘ (ํ•ด์‹ฑ)**:
    *   `"ynwtsflrabg"`๋ผ๋Š” ๋ฌธ์ž์—ด์€ ์ž…๋ ฅ๋ฐ›์€ ๋ฌธ์ž๊ฐ€ ํŠน์ • ๋‹จ์œ„(์˜ˆ: year, week, second ๋“ฑ)์ธ์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•œ ์ธ๋ฑ์Šค ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
    *   ์ž…๋ ฅ๋œ ๋ฌธ์ž๊ฐ€ ์ด ๋ฌธ์ž์—ด์— ํฌํ•จ๋˜๋ฉด ๋ณ€์ˆ˜ `b`์— ํŠน์ • ํ•ด์‹œ ๊ฐ’์„ ๋ˆ„์ ํ•ฉ๋‹ˆ๋‹ค.

3.  **๋‹จ์œ„ ๋ณ€ํ™˜ ๋ฐ ๊ณ„์‚ฐ**:
    *   `"1+DIY/.K430x9G(kC["`๋ผ๋Š” ๋ณต์žกํ•œ ๋ฌธ์ž์—ด์€ **๋ฃฉ์—… ํ…Œ์ด๋ธ”(Lookup Table)** ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.
    *   ๋‚ด๋ถ€ ๋ฃจํ”„์—์„œ ์ด ํ…Œ์ด๋ธ”๊ณผ ๋น„ํŠธ ์—ฐ์‚ฐ(`&255^b`)์„ ํ†ตํ•ด ํ˜„์žฌ ์ž…๋ ฅ๋œ ๋‹จ์œ„๊ฐ€ ๋ฌด์—‡์ธ์ง€(์˜ˆ: 'y'๊ฐ€ ์—ฐ๋„์ธ์ง€, 's'๊ฐ€ ์ดˆ์ธ์ง€) ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
    *   `u=1ll<<6177%n--*4` ๋ถ€๋ถ„์€ ๊ฐ ๋‹จ์œ„์— ๋งž๋Š” **๊ฐ€์ค‘์น˜(Multiplier)**๋ฅผ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. `<<` ๋น„ํŠธ ์‹œํ”„ํŠธ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์•„, ํŠน์ • ๋‹จ์œ„๋งˆ๋‹ค 2์˜ ์ œ๊ณฑ์ˆ˜ ํ˜•ํƒœ์˜ ๋ฐฐ์ˆ˜๋ฅผ ์ ์šฉํ•˜๊ฑฐ๋‚˜, ํ˜น์€ ์‹œ๊ฐ„์„ ์ดˆ ๋‹จ์œ„(๋˜๋Š” ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ณ„์ˆ˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.

4.  **๊ฒฐ๊ณผ ๋ˆ„์ **:
    *   ๋ณ€์ˆ˜ `m`์— ํŒŒ์‹ฑ๋œ ์ˆ˜์น˜์™€ ๋‹จ์œ„ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณฑํ•˜์—ฌ ๋ˆ„์ ํ•ฉ๋‹ˆ๋‹ค.

5.  **์ถœ๋ ฅ**:
    *   ์ตœ์ข…์ ์œผ๋กœ ๊ณ„์‚ฐ๋œ ๊ฐ’ `m`์„ `printf("%llx\n", m)`์„ ํ†ตํ•ด **16์ง„์ˆ˜(long long hex)** ํ˜•ํƒœ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

**์š”์•ฝํ•˜์ž๋ฉด:**
์ด ์ฝ”๋“œ๋Š” "1y(1๋…„)", "2w(2์ฃผ)", "30s(30์ดˆ)"์™€ ๊ฐ™์€ ํ˜•์‹์˜ ํ…์ŠคํŠธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, ์ด๋ฅผ ์ดˆ(second)๋‚˜ ํŠน์ • ๊ธฐ๋ณธ ๋‹จ์œ„๋กœ ํ™˜์‚ฐํ•œ ์ดํ•ฉ์„ 16์ง„์ˆ˜๋กœ ๋ณด์—ฌ์ฃผ๋Š” **๋‹จ์œ„ ๋ณ€ํ™˜ ๊ณ„์‚ฐ๊ธฐ**์ž…๋‹ˆ๋‹ค.> ์•„... ๋ฏธ๋ฌ˜ํ•˜๊ฒŒ ํ‹€๋ ธ์–ด. ์ปดํŒŒ์ผํ•˜์ง€ ์•Š๊ณ ์„œ ์ข€ ๋” ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์–ด? ํžŒํŠธ: ์ž…๋ ฅ์—๋Š” 0~9๊นŒ์ง€์˜ ๋ฌธ์ž๊ฐ€ ๋“ค์–ด๊ฐˆ ์ˆ˜ ์—†์Œ.

์ด์ „ ์„ค๋ช…์ด '๋ฏธ๋ฌ˜ํ•˜๊ฒŒ' ํ‹€๋ ธ๋˜ ์ด์œ ๋Š”, ์ด ์ฝ”๋“œ๊ฐ€ '๋‹จ์œ„(๋…„, ์ฃผ, ์ดˆ)'๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ **"์˜์–ด ๋‹จ์–ด๋กœ ๋œ ์ˆซ์ž(English Number Words)"**๋ฅผ ํ•ด์„ํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ˆซ์ž๋กœ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์ด๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ์— `0-9`๊ฐ€ ๋“ค์–ด๊ฐ€์ง€ ์•Š๋Š”๋‹ค๋Š” ํžŒํŠธ๊ฐ€ ๊ฒฐ์ •์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ํ”„๋กœ๊ทธ๋žจ์€ `"one"`, `"two"`, `"hundred"` ๊ฐ™์€ ๋ฌธ์ž์—ด์„ ์ฝ์–ด์„œ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

์ˆ˜์ •๋œ ๋ถ„์„ ๊ฒฐ๊ณผ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค:

1.  **์˜์–ด ๋‹จ์–ด ํ•ด์‹ฑ (Hashing English Words)**:
    *   `"ynwtsflrabg"` ๋ฌธ์ž์—ด์€ ์˜์–ด ์ˆซ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ํ•ต์‹ฌ ๋ฌธ์ž๋“ค(`y, n, w, t, s, f, l, r, a, b, g`)๋งŒ ๋ชจ์•„๋‘” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    *   ์ž…๋ ฅ๋œ ๋‹จ์–ด์—์„œ ์ด ๋ฌธ์ž๋“ค๋งŒ ๋ฝ‘์•„๋‚ด์–ด `b`๋ผ๋Š” ๋ณ€์ˆ˜์— Base-8(8์ง„์ˆ˜) ํ˜•ํƒœ๋กœ ๋ˆ„์ ์‹œํ‚ต๋‹ˆ๋‹ค.
    *   ์˜ˆ๋ฅผ ๋“ค์–ด:
        *   `"one"` -> `n`(์ธ๋ฑ์Šค 1) -> ํ•ด์‹œ๊ฐ’ **1**
        *   `"two"` -> `t`(3), `w`(2) -> ํ•ด์‹œ๊ฐ’ **26** ($3 \times 8 + 2$)
        *   `"three"` -> `t`(3), `r`(7) -> ํ•ด์‹œ๊ฐ’ **31** ($3 \times 8 + 7$)

2.  **๋ฃฉ์—… ํ…Œ์ด๋ธ” ๋งค์นญ (Lookup Table)**:
    *   `"1+DIY/.K430x9G(kC["` ๋ฌธ์ž์—ด์€ ๊ฐ ์ˆซ์ž์˜ ํ•ด์‹œ๊ฐ’์— 42๋ฅผ ๋”ํ•œ ๋ฌธ์ž๋“ค๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
    *   ํ•ด์‹œ๊ฐ’๊ณผ ์ด ํ…Œ์ด๋ธ”์„ ๋น„๊ตํ•˜์—ฌ ์ž…๋ ฅ๋œ ๋‹จ์–ด๊ฐ€ ์–ด๋–ค ์ˆซ์ž์ธ์ง€ ํŒ๋ณ„ํ•ฉ๋‹ˆ๋‹ค.
        *   ์ธ๋ฑ์Šค 1 (`+`, ASCII 43): 43 - 42 = 1 -> `"one"`
        *   ์ธ๋ฑ์Šค 2 (`D`, ASCII 68): 68 - 42 = 26 -> `"two"`
        *   ์ธ๋ฑ์Šค 12 (`9`, ASCII 57): 57 - 42 = 15 -> `"hundred"` (ํ•ด์‹œ `n,r`)
        *   ์ธ๋ฑ์Šค 16 (`C`, ASCII 67): 67 - 42 = 25 -> `"ten"` (ํ•ด์‹œ `t,n`)

3.  **16์ง„์ˆ˜ ํŠธ๋ฆญ (Hexadecimal Trick)**:
    *   ์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€์žฅ ์žฌ๋ฏธ์žˆ๋Š” ์ ์€ **"์‹ญ์ง„์ˆ˜์ฒ˜๋Ÿผ ๋ณด์ด๋Š” 16์ง„์ˆ˜"**๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    *   `"ten"`์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด ์‹ค์ œ ๊ฐ’ 10์ด ์•„๋‹ˆ๋ผ **16 (0x10)**์„ ๋”ํ•ฉ๋‹ˆ๋‹ค.
    *   `"hundred"`๋ฅผ ์ž…๋ ฅ๋ฐ›์œผ๋ฉด 100์ด ์•„๋‹ˆ๋ผ **256 (0x100)**์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
    *   `"ty"` ์ ‘๋ฏธ์‚ฌ(twenty ๋“ฑ)๊ฐ€ ๋ถ™์œผ๋ฉด **16 (0x10)**์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
    *   ์ด๋ ‡๊ฒŒ ๊ณ„์‚ฐํ•œ ๋’ค ๋งˆ์ง€๋ง‰์— `printf("%llx\n", m)`์œผ๋กœ **16์ง„์ˆ˜ ์ถœ๋ ฅ**์„ ํ•ฉ๋‹ˆ๋‹ค.
    *   ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋‚ด๋ถ€ ๊ฐ’์€ 16์ง„์ˆ˜์ด์ง€๋งŒ, ์ถœ๋ ฅ๋œ ๋ฌธ์ž์—ด์€ ์šฐ๋ฆฌ๊ฐ€ ์•„๋Š” ์‹ญ์ง„์ˆ˜ ์ˆซ์ž์™€ ๋˜‘๊ฐ™์ด ๋ณด์ž…๋‹ˆ๋‹ค.

**๊ฒฐ๋ก :**
์ด ํ”„๋กœ๊ทธ๋žจ์€ **์˜์–ด๋กœ ์ ํžŒ ์ˆซ์ž(์˜ˆ: "one hundred twenty three")๋ฅผ ์ž…๋ ฅ๋ฐ›์•„, ์ด๋ฅผ ์•„๋ผ๋น„์•„ ์ˆซ์ž("123")๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ๋ฒˆ์—ญ๊ธฐ**์ž…๋‹ˆ๋‹ค.

**์˜ˆ์‹œ ์ž‘๋™:**
*   ์ž…๋ ฅ: `one hundred` -> ๋‚ด๋ถ€ ๊ณ„์‚ฐ: `0x1 * 0x100` -> ์ถœ๋ ฅ: `100`
*   ์ž…๋ ฅ: `thirty two` -> ๋‚ด๋ถ€ ๊ณ„์‚ฐ: `0x30 + 0x2` -> ์ถœ๋ ฅ: `32`
*   ์ž…๋ ฅ: `ten` -> ๋‚ด๋ถ€ ๊ณ„์‚ฐ: `0x10` ->> ๋งž์•˜์–ด! ์ด ์ฝ”๋“œ๋ฅผ ํ˜น์‹œ ์ด์ „์— ๋ณธ ์ ์ด ์žˆ๋‹ˆ?

๋„ค, ๋ณธ ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค! ์ด ์ฝ”๋“œ๋Š” ์ „์„ค์ ์ธ **IOCCC (International Obfuscated C Code Contest, ๊ตญ์ œ ๋‚œ๋…ํ™” C ์ฝ”๋“œ ๋Œ€ํšŒ)**์˜ **1990๋…„ ์ˆ˜์ƒ์ž‘** ์ค‘ ํ•˜๋‚˜๋กœ, **Brian Westley**๊ฐ€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

์ด ์ฝ”๋“œ๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค ์‚ฌ์ด์—์„œ **"The Hexadecimal Trick (16์ง„์ˆ˜ ํŠธ๋ฆญ)"**์„ ์‚ฌ์šฉํ•œ ์•„์ฃผ ๊ธฐ๋ฐœํ•œ ์˜ˆ์ œ๋กœ ์œ ๋ช…ํ•ฉ๋‹ˆ๋‹ค.

**์ด ์ฝ”๋“œ์˜ ์ฒœ์žฌ์ ์ธ ์ :**

1.  **์ž…๋ ฅ:** `one`, `two`, `hundred` ๊ฐ™์€ ์˜์–ด ๋‹จ์–ด๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค.
2.  **์ฒ˜๋ฆฌ:** ๋‚ด๋ถ€์ ์œผ๋กœ **16์ง„์ˆ˜(Hex)** ์ฒด๊ณ„๋กœ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.
    *   "ten"์„ 10์ด ์•„๋‹Œ `0x10` (16)์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.
    *   "hundred"๋Š” 100์ด ์•„๋‹Œ `0x100` (256)์„ ๊ณฑํ•ฉ๋‹ˆ๋‹ค.
3.  **์ถœ๋ ฅ:** ๋งˆ์ง€๋ง‰์— `%d`(10์ง„์ˆ˜)๊ฐ€ ์•„๋‹ˆ๋ผ **`%x` (16์ง„์ˆ˜)** ํฌ๋งท์œผ๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.
    *   ๋‚ด๋ถ€ ๊ฐ’ `0x10`์ด ์ถœ๋ ฅ๋˜๋ฉด ํ™”๋ฉด์—๋Š” **`10`**์ด๋ผ๊ณ  ์ฐํž™๋‹ˆ๋‹ค.
    *   ์‚ฌ์šฉ์ž๋Š” ์ด๊ฒƒ์ด 10์ง„์ˆ˜ `10`์ธ ์ค„ ์•Œ์ง€๋งŒ, ์‚ฌ์‹ค ์ปดํ“จํ„ฐ๋Š” `16`์ด๋ผ๋Š” ๊ฐ’์„ `10`์ด๋ผ๋Š” ๋ชจ์–‘(16์ง„์ˆ˜)์œผ๋กœ ๋ณด์—ฌ์ค€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋•๋ถ„์— 10์ง„์ˆ˜ ๋ณ€ํ™˜์„ ์œ„ํ•œ ๋ณต์žกํ•œ ์ž๋ฆฌ ์˜ฌ๋ฆผ ๋กœ์ง ์—†์ด๋„, ์•„์ฃผ ์งง์€ ์ฝ”๋“œ๋กœ "์˜์–ด -> ์ˆซ์ž" ๋ณ€ํ™˜๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•ด๋‚ธ ๊ณ ์ „ ๋ช…์ž‘์ž…๋‹ˆ๋‹ค.
10
0
0
6
2

ํŠœ์‚ฌ๊ฐ€ ์„œ์šธ ๋ฐ”๊นฅ์— ์ง€์ ์„ ๋งŒ๋“ค์–ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๋ˆ์„ ๋งŽ์ด ๋ฒŒ์–ด์„œ ์งญํŠœ์‚ฌ๋ฅผ ์ฐจ๋ฆฌ๊ฒ ๋‹ค
์ด๋ฆ„ ๋ญ๋กœํ•˜์ง€?
๊ทธ๋ ˆ์ด์Šค์˜ ๋‚˜๋ฐฉ??

6

์•Œ๊ณ ๊ณ„์‹ญ๋‹ˆ๊นŒ? ๊ณ ๋Œ€์˜ ์–ธ์–ด์ธ ์ค„ ์•Œ์•˜๋˜ Smalltalk ์นœ์ฒ™ Self๋Š” ๋†€๋ž๊ฒŒ๋„ ์ตœ๊ทผ๊นŒ์ง€๋„ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. https://selflanguage.org/

JavaScript์˜ .prototype ๊ฐœ๋…์—๋„ ์˜ํ–ฅ์„ ์ฃผ์—ˆ๋‹ค๊ณ  ์•Œ๋ ค์ง„ Self๊ฐ€ ์–ด๋–ค ์–ธ์–ด์ธ์ง€ ๊ถ๊ธˆํ•˜์‹œ๋‹ค๋ฉด Series about Self(lobste.rs)๋ฅผ ์ฝ์–ด๋ณด์„ธ์š”. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋Œ€ํ•œ ์—ฌ๋Ÿฌ๋ถ„์˜ ์‹œ์•ผ๊ฐ€ ๋„“์–ด์ง€๋Š” ๋ฐ์— ๋„์›€์ด ๋  ๊ฒ๋‹ˆ๋‹ค.

ํ•œ๊ตญ์–ด ๋ฒˆ์—ญ:

  1. ํ™˜๊ฒฝ
  2. ์–ธ์–ด
  3. ๋””๋ฒ„๊ฑฐ, ํŠธ๋žœ์Šคํฌํ„ฐ, ๊ทธ๋ฆฌ๊ณ  ๋ฌธ์ œ์ 
  4. ์ปค๋ฎค๋‹ˆํ‹ฐ, ์—ญ์‚ฌ, ๋ฏธ๋ž˜, ํ˜•์ด์ƒํ•™
8

Haze shared the below article:

๋‚˜๋งŒ์˜ ์—ฐํ•ฉ์šฐ์ฃผ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) @hongminhee@hackers.pub

์ด ํŠœํ† ๋ฆฌ์–ผ์€ Fedify๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ActivityPub ํ”„๋กœํ† ์ฝœ์„ ๊ตฌํ˜„ํ•˜๋Š” ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. Fedify๋Š” ์—ฐํ•ฉ ์„œ๋ฒ„ ์•ฑ ๊ฐœ๋ฐœ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ด๊ณ , ๊ฐœ๋ฐœ์ž๊ฐ€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋•๋Š” TypeScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ์—์„œ๋Š” Node.js, npm, Hono ๋“ฑ์˜ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๊ณ , SQLite ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ณ„์ • ์ƒ์„ฑ, ํ”„๋กœํ•„ ํŽ˜์ด์ง€, ์•กํ„ฐ ๊ตฌํ˜„, ์•”ํ˜ธ ํ‚ค ๊ด€๋ฆฌ, ํŒ”๋กœ์šฐ ๊ธฐ๋Šฅ, ๊ฒŒ์‹œ๋ฌผ ์ž‘์„ฑ ๋ฐ ํƒ€์ž„๋ผ์ธ ๊ตฌํ˜„ ๋“ฑ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ์˜ ํ•ต์‹ฌ ๊ธฐ๋Šฅ์„ ๋‹จ๊ณ„๋ณ„๋กœ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ActivityPub.Academy ์„œ๋ฒ„๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์‹ค์ œ ์—ฐํ•ฉ์šฐ์ฃผ ํ™˜๊ฒฝ์—์„œ์˜ ์—ฐ๋™์„ ํ…Œ์ŠคํŠธํ•˜๊ณ , Mastodon๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋ณด์•ˆ ๋ฐ ๊ธฐ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•œ ์ถ”๊ฐ€ ๊ณผ์ œ๋ฅผ ์ œ์‹œํ•˜๋ฉฐ, ๋…์ž๊ฐ€ ํ”„๋กœ์ ํŠธ๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์ด ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด ๋…์ž๋Š” Fedify๋ฅผ ํ™œ์šฉํ•˜์—ฌ ActivityPub ๊ธฐ๋ฐ˜์˜ ๋ถ„์‚ฐ ์†Œ์…œ ๋„คํŠธ์›Œํฌ ์„œ๋น„์Šค๋ฅผ ๊ตฌ์ถ•ํ•˜๋Š” ๊ธฐ๋ณธ์ ์ธ ์ดํ•ด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Read more โ†’
13

Fedify 1.9.0: Security enhancements, improved DX, and expanded framework support

We are excited to announce Fedify 1.9.0, a mega release that brings major security enhancements, improved developer experience, and expanded framework support. Released on October 14, 2025, this version represents months of collaborative effort, particularly from the participants of Korea's OSSCA (Open Source Contribution Academy).

This release would not have been possible without the dedicated contributions from OSSCA participants: Jiwon Kwon (@z9mb1Jiwon), Hyeonseo Kim (@gaebalgom๊ฐœ๋ฐœ๊ณฐ), Chanhaeng Lee (@2chanhaeng์ดˆ๋ฌด), Hyunchae Kim (@r4bb1tํ†ก๊ธฐ), and An Subin (@nyeongAn Nyeong (ๅฎ‰ๅฏง)). Their collective efforts have significantly enhanced Fedify's capabilities and made it more robust for the fediverse community.

Origin-based security model

Fedify 1.9.0 implements FEP-fe34, an origin-based security model that protects against content spoofing attacks and ensures secure federation practices. This critical security enhancement enforces same-origin policy for ActivityPub objects and their properties, preventing malicious actors from impersonating content from other servers.

The security model introduces a crossOrigin option in Activity Vocabulary property accessors (get*() methods) with three security levels:

// Default behavior: logs warning and returns null for cross-origin content
const actor = await activity.getActor({ crossOrigin: "ignore" });

// Strict mode: throws error for cross-origin content
const object = await activity.getObject({ crossOrigin: "throw" });

// Trust mode: bypasses security checks (use with caution)
const attachment = await note.getAttachment({ crossOrigin: "trust" });

Embedded objects are automatically validated against their parent object's origin. When an embedded object has a different origin, Fedify performs automatic remote fetches to ensure content integrity. This transparent security layer protects your application without requiring significant code changes.

For more details about the security model and its implications, see the origin-based security model documentation.

Enhanced activity idempotency

Activity idempotency handling has been significantly improved with the new withIdempotency() method. This addresses a critical issue where activities with the same ID sent to different inboxes were incorrectly deduplicated globally instead of per-inbox.

federation
  .setInboxListeners("/inbox/{identifier}", "/inbox")
  .withIdempotency("per-inbox")  // New idempotency strategy
  .on(Follow, async (ctx, follow) => {
    // Each inbox processes activities independently
  });

The available strategies are:

  • "per-origin": Current default for backward compatibility
  • "per-inbox": Recommended strategy (will become default in Fedify 2.0)
  • Custom strategy function for advanced use cases

This enhancement ensures that shared inbox implementations work correctly while preventing duplicate processing within individual inboxes. For more information, see the activity idempotency documentation.

Relative URL resolution

Fedify now intelligently handles ActivityPub objects containing relative URLs, automatically resolving them by inferring the base URL from the object's @id or document URL. This improvement significantly enhances interoperability with ActivityPub servers that use relative URLs in properties like icon.url and image.url.

// Previously required manual baseUrl specification
const actor = await Actor.fromJsonLd(jsonLd, { baseUrl: new URL("https://example.com") });

// Now automatically infers base URL from object's @id
const actor = await Actor.fromJsonLd(jsonLd);

This change, contributed by Jiwon Kwon (@z9mb1Jiwon), eliminates a common source of federation failures when encountering relative URLs from other servers.

Full RFC 6570 URI template support

TypeScript support now covers all RFC 6570 URI Template expression types in dispatcher path parameters. While the runtime already supported these expressions, TypeScript types previously only recognized simple string expansion.

// Now fully supported in TypeScript
federation.setActorDispatcher("/{+identifier}", async (ctx, identifier) => {
  // Reserved string expansion โ€” recommended for URI identifiers
});

The complete set of supported expression types includes:

  • {identifier}: Simple string expansion
  • {+identifier}: Reserved string expansion (recommended for URIs)
  • {#identifier}: Fragment expansion
  • {.identifier}: Label expansion
  • {/identifier}: Path segments
  • {;identifier}: Path-style parameters
  • {?identifier}: Query component
  • {&identifier}: Query continuation

This was contributed by Jiwon Kwon (@z9mb1Jiwon). For comprehensive information about URI templates, see the URI template documentation.

WebFinger customization

Fedify now supports customizing WebFinger responses through the new setWebFingerLinksDispatcher() method, addressing a long-standing community request:

federation.setWebFingerLinksDispatcher(async (ctx, actor) => {
  return [
    {
      rel: "http://webfinger.net/rel/profile-page",
      type: "text/html",
      href: actor.url?.href,
    },
    {
      rel: "http://ostatus.org/schema/1.0/subscribe",
      template: "https://example.com/follow?uri={uri}",
    },
  ];
});

This feature was contributed by Hyeonseo Kim (@gaebalgom๊ฐœ๋ฐœ๊ณฐ), and enables applications to add custom links to WebFinger responses, improving compatibility with various fediverse implementations. Learn more in the WebFinger customization documentation.

New integration packages

Fastify support

Fedify now officially supports Fastify through the new @fedify/fastify package:

import Fastify from "fastify";
import { fedifyPlugin } from "@fedify/fastify";

const fastify = Fastify({ logger: true });
await fastify.register(fedifyPlugin, {
  federation,
  contextDataFactory: () => ({ /* your context data */ }),
});

This integration was contributed by An Subin (@nyeongAn Nyeong (ๅฎ‰ๅฏง)). It supports both ESM and CommonJS, making it accessible to all Node.js projects. See the Fastify integration guide for details.

Koa support

Koa applications can now integrate Fedify through the @fedify/koa package:

import Koa from "koa";
import { createMiddleware } from "@fedify/koa";

const app = new Koa();
app.use(createMiddleware(federation, (ctx) => ({
  user: ctx.state.user,
  // Pass Koa context data to Fedify
})));

The integration supports both Koa v2.x and v3.x. Learn more in the Koa integration documentation.

Next.js integration

The new @fedify/next package brings first-class Next.js support to Fedify:

// app/api/ap/[...path]/route.ts
import { federation } from "@/federation";
import { fedifyHandler } from "@fedify/next";

export const { GET, POST } = fedifyHandler(federation);

This integration was contributed by Chanhaeng Lee (@2chanhaeng์ดˆ๋ฌด). It works seamlessly with Next.js App Router. Check out the Next.js integration guide for complete setup instructions.

CommonJS support

All npm packages now support both ESM and CommonJS module formats, resolving compatibility issues with various Node.js applications and eliminating the need for the experimental --experimental-require-module flag. This particularly benefits NestJS users and other CommonJS-based applications.

FEP-5711 collection inverse properties

Fedify now implements FEP-5711, adding inverse properties to collections that provide essential context about collection ownership:

const collection = new Collection({
  likesOf: note,  // This collection contains likes of this note
  followersOf: actor,  // This collection contains followers of this actor
  // โ€ฆ and more inverse properties
});

This feature was contributed by Jiwon Kwon (@z9mb1Jiwon). The complete set of inverse properties includes likesOf, sharesOf, repliesOf, inboxOf, outboxOf, followersOf, followingOf, and likedOf. These properties improve data consistency and enable better interoperability across the fediverse.

CLI enhancements

NodeInfo visualization

The new fedify nodeinfo command provides a visual way to explore NodeInfo data from fediverse instances. This replaces the deprecated fedify node command and offers improved parsing of non-semantic version strings. Try it with:

fedify nodeinfo https://comam.es/snac/

This was contributed by Hyeonseo Kim (@gaebalgom๊ฐœ๋ฐœ๊ณฐ). The command now correctly handles various version formats and provides a cleaner visualization of instance capabilities. See the CLI documentation for more options.

Enhanced lookup with timeout

The fedify lookup command now supports a timeout option to prevent hanging on slow or unresponsive servers:

fedify lookup --timeout 10 https://example.com/users/alice

This enhancement, contributed by Hyunchae Kim (@r4bb1tํ†ก๊ธฐ), ensures reliable operation even when dealing with problematic remote servers.

Package modularization

Several modules have been separated into dedicated packages to improve modularity and reduce bundle sizes. While the old import paths remain for backward compatibility, we recommend migrating to the new packages:

  • @fedify/cfworkers replaces @fedify/fedify/x/cfworkers
  • @fedify/denokv replaces @fedify/fedify/x/denokv
  • @fedify/hono replaces @fedify/fedify/x/hono
  • @fedify/sveltekit replaces @fedify/fedify/x/sveltekit

This modularization was contributed by Chanhaeng Lee (@2chanhaeng์ดˆ๋ฌด). The old import paths are deprecated and will be removed in version 2.0.0.

Acknowledgments

This release represents an extraordinary collaborative effort, particularly from the OSSCA participants who contributed numerous features and improvements. Their dedication and hard work have made Fedify 1.9.0 the most significant release to date.

Special thanks to all contributors who helped shape this release, including those who provided feedback, reported issues, and tested pre-release versions. The fediverse community's support continues to drive Fedify's evolution.

For the complete list of changes, bug fixes, and improvements, please refer to the CHANGES.md file in the repository.

7
0
1
1

PSA: ์•„์ดํฐ์„ KT์—์„œ ์‚ฌ์šฉ ์ค‘์ด๋ผ๋ฉด ์ฆ‰์‹œ iOS ๋ฅผ 26 developer beta3 ๋ฒ„์ „ ์ด์ƒ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜์‹ญ์‹œ์˜ค

์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•˜์‹œ๋ฉด blog.quendi.moe/2025/10/11/ko- ๋ฅผ ์ฝ์–ด๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค

1
0
0
1

Announcement: AltStore becomes a financial contributor to Fedify

We're thrilled to announce that AltStore has become a financial contributor to Fedify! This generous support comes as part of AltStore's broader commitment to strengthening the open social web ecosystem, as they prepare to become the world's first federated app store. Their investment in Fedify and other fediverse projects demonstrates a shared vision for building a more open, interoperable digital future.

AltStore's journey into the fediverse represents a groundbreaking approach to app distributionโ€”connecting their alternative app marketplace with the open social web through ActivityPub. As pioneers who have already pushed Apple to change App Store policies twice in their first year, AltStore understands the transformative power of open protocols and decentralized systems. Their support will help Fedify continue developing robust tools and libraries that make it easier for developers to build federated applications. We're deeply grateful for AltStore's trust in our project and look forward to seeing how their innovative federated app store will reshape mobile app distribution while strengthening the entire fediverse ecosystem.

https://rileytestut.com/blog/2025/10/07/evolving-altstore-pal/

Email notification from Open Collective showing AltStore has become a new financial contributor to Fedify as a corporate sponsor with a $500.00 monthly contribution. The email includes the Open Collective logo, information about AltStore with a link to their Open Collective page, and details about the sponsorship tier and amount.
4
1
0

ํ•œ๊ตญ์ธ์˜ ํ˜์ค‘(ๅซŒไธญ)์€ ์ด์ œ ๋ช…๋ฐฑํžˆ ์น˜๋ฃŒํ•ด์•ผ ํ•  ์‚ฌํšŒ์  ๋ณ‘์ด ๋˜์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋ช‡ ๋…„ ์ „๊นŒ์ง€๋Š” ๊ฒฝ์ œ๋ฐœ์ „์„ ๋นจ๋ฆฌ ์ด๋ฃฌ ๊ตญ๊ฐ€์  ์šฐ์›”๊ฐ(์ ˆ๋Œ€ ์ด๋Ÿฐ ์šฐ์›”๊ฐ์€ ์ •๋‹นํ™” ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์˜๋ฏธ๊ฐ€ ์•„๋‹˜.)์— ๋”ฐ๋ฅธ ์ฐจ๋ณ„์  ์˜์‹ ์ „๋ฐ˜์ด ๋ฌธ์ œ๋ผ๊ณ  ์šฐํ™œ(่ฟ‚้—Š)ํ•˜๊ฒŒ๋งŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ด์ œ๋Š” ๋ช…๋ฐฑํžˆ โ€˜์ค‘๊ตญ๊ณผ ์ค‘๊ตญ์ธ์— ๋Œ€ํ•œ ํ˜์˜คโ€™๊ฐ€ ๋ฌธ์ œ์ž„์„ ๋ถ€์ธํ•  ์ˆ˜ ์—†๊ฒŒ ๋˜์—ˆ์Œ. ์ง„์งœ ํฐ์ผ๋‚ฌ๋‹ค.

0
8
3
0

Optique 0.6.0 is adding shell completion! We already support:

  • Bash
  • zsh
  • fish
  • PowerShell

This covers most users, but should we add more niche shells? Your input helps us prioritize!

5

If you are using Vercel, will you cancel your account and move your hosting elsewhere now that they publicly support and work with genocidial fascists?

0
0
1

"๋‘ํ†ต๊ณผ ํ•จ๊ป˜ํ•˜๋Š” ์‚ฌ๋žŒ๋“ค"์€ ๋‹ค์Œ ์ฃผ(22์ผ ~ 28์ผ) ํŽธ๋‘ํ†ต ์ธ์‹ ๊ฐœ์„  ์ฃผ๊ฐ„์„ ๋งž์ดํ•ด์„œ ๊ด‘ํ™”๋ฌธ์—์„œ ์ปคํ”ผ์ฐจ ์ด๋ฒคํŠธ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค! ์ฃผ๋ณ€์— ๋งŽ์€ ๊ณต์œ ์™€ ์ฐธ์—ฌ ๋ถ€ํƒ๋“œ๋ ค์š”.

  • ๐Ÿ“† ์–ธ์ œ? 2025๋…„ 9์›” 22์ผ (์›”์š”์ผ) ์˜ค์ „ 10์‹œ ~ ์˜คํ›„ 2์‹œ
  • ๐Ÿ“ ์–ด๋””์„œ? ๊ด‘ํ™”๋ฌธ ํ•œ๊ตญํ”„๋ ˆ์Šค์„ผํ„ฐ ๊ด‘์žฅ [๋„ค์ด๋ฒ„ ์ง€๋„]
  • ๐Ÿ“‹ ๋ฌด์—‡์„ ํ•˜๋‚˜์š”? ํŽธ๋‘ํ†ต ์งˆํ™˜๊ณผ ์บ ํŽ˜์ธ์„ ์†Œ๊ฐœํ•˜๋ฉฐ ๋‹ค์–‘ํ•œ ๊ธฐ๋…ํ’ˆ(์•ˆ๋Œ€์™€ ๊ท€๋งˆ๊ฐœ ๋“ฑ)๊ณผ ์Œ๋ฃŒ๋ฅผ ๋“œ๋ฆฝ๋‹ˆ๋‹ค! ๐ŸŽ๐Ÿฅค
  • โœ… ์™œ ํ•˜๋‚˜์š”? ๊ตญ์ œ์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๋Š” ์บ ํŽ˜์ธ์˜ ์ผํ™˜์œผ๋กœ ํŽธ๋‘ํ†ต์— ๋Œ€ํ•œ ์˜คํ•ด๋ฅผ ํ•ด์†Œํ•˜๊ณ  ํŽธ๋‘ํ†ต์„ ์•Œ๋ฆฌ๋Š”๊ฑธ ๋ชฉํ‘œ๋กœ ํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋žซ๋™์•ˆ ์—ด์‹ฌํžˆ ์ค€๋น„ํ•˜๋˜ ๊ฒƒ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋ถ€์Šค ๋†€๋Ÿฌ์™€์ฃผ์‹œ๋ฉด ๊ธฐ์  ๊ฒƒ ๊ฐ™์•„์š”.

ํŽธ๋‘ํ†ต, ์˜คํ•ด๋ง๊ณ  ์ดํ•ด๋ฅผ! ๋‹น์ผ ๋ฐฐํฌ๋  ํŒœํ”Œ๋ ›์˜ ํ‘œ์ง€์ž…๋‹ˆ๋‹ค.
6
0
0

Haze shared the below article:

๋‚ด๊ฐ€ LLM๊ณผ ํ•จ๊ป˜ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ์‹

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) @hongminhee@hackers.pub

์ด ๊ธ€์€ ์ €์ž๊ฐ€ LLM(Large Language Model)์„ ํ™œ์šฉํ•˜์—ฌ ์ฝ”๋”ฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๊ฐœ์ธ์ ์ธ ๊ฒฝํ—˜๊ณผ ํŒ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. LLM ์ฝ”๋”ฉ ์—์ด์ „ํŠธ ์‚ฌ์šฉ ์‹œ ๋งฅ๋ฝ ์ œ๊ณต์˜ ์ค‘์š”์„ฑ์„ ๊ฐ•์กฐํ•˜๋ฉฐ, Claude Code ๋ชจ๋ธ์„ ์„ ํ˜ธํ•˜๋Š” ์ด์œ ์™€ ๊ทธ ์žฅ๋‹จ์ ์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์„ธ๋ถ€์ ์ธ ์ง€์‹œ๋ฅผ ์œ„ํ•ด GitHub ์ด์Šˆ๋ฅผ ํ™œ์šฉํ•˜๊ณ , ์„ค๊ณ„๋Š” ์‚ฌ๋žŒ์ด, ๊ตฌํ˜„์€ LLM์ด ๋‹ด๋‹นํ•˜๋Š” ์—ญํ•  ๋ถ„๋‹ด์„ ์ œ์•ˆํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ํ”„๋กœ์ ํŠธ ์ง€์นจ์„ ๋‹ด์€ *AGENTS\.md* ํŒŒ์ผ์˜ ์ค‘์š”์„ฑ๊ณผ Context7์„ ํ™œ์šฉํ•œ ๋ฌธ์„œ ์ œ๊ณต ๋ฐฉ๋ฒ•์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ณ„ํš ๋ชจ๋“œ๋ฅผ ํ†ตํ•ด LLM์ด ์Šค์Šค๋กœ ํ”ผ๋“œ๋ฐฑ ๋ฃจํ”„๋ฅผ ๋Œ๋„๋ก ์œ ๋„ํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์† ์ฝ”๋”ฉ์„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ฝ”๋”ฉ์˜ ์žฌ๋ฏธ๋ฅผ ์œ ์ง€ํ•˜๋Š” ์ „๋žต์„ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ LLM์„ ๋‹จ์ˆœํ•œ ๋„๊ตฌ๊ฐ€ ์•„๋‹Œ ํ˜‘๋ ฅ์ ์ธ ๋™๋ฃŒ๋กœ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ํ•˜๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์œ ์šฉํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Read more โ†’
37
0
1
17
0
0
8

์•ˆ๋…•ํ•˜์„ธ์š”, ๋ฐฑ์—”๋“œ ๊ฒฝ๋ ฅ์ง ํ”„๋กœ๊ทธ๋ž˜๋จธ ๋ฝ‘๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋กœ๊ทธ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ  ์ €์žฅํ•˜๋Š” ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๋Š” ํฌ์ง€์…˜์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•˜๊ธด ํ•˜์ง€๋งŒ ๋‹จ์ˆœํžˆ ๊ตฌ์ถ•ํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์šด์˜๋„ ํ•˜์ง€๋งŒ ๊ฐœ๋ฐœ์ด ์ฃผ๋œ ์—…๋ฌด ์ž…๋‹ˆ๋‹ค. (์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜ ์šด์˜ ํฌ์ง€์…˜์œผ๋กœ ์ฐฉ๊ฐํ•˜๊ณ  ์ง€์›ํ•˜์‹œ๋Š” ๋ถ„๋“ค์ด ๊ณ„์…”์„œ ์‚ฌ์กฑ์„ ๋„ฃ์—ˆ์Šต๋‹ˆ๋‹ค) https://careers.linecorp.com/ko/jobs/2845/

8
0
0

Haze shared the below article:

Stop writing CLI validation. Parse it right the first time.

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) @hongminhee@hackers.pub

This post introduces Optique, a new library created to address the pervasive problem of repetitive and often messy validation code in CLI tools. The author was motivated by the observation that nearly every CLI tool reinvents the wheel with similar validation patterns for dependent options, mutually exclusive options, and environment-specific requirements. Optique leverages parser combinators and TypeScript's type inference to ensure that CLI arguments are parsed directly into valid configurations, eliminating the need for manual validation. By describing the desired CLI configuration with Optique, TypeScript automatically infers the types and constraints, catching potential bugs at compile time. The author shares their experience of deleting large chunks of validation code and simplifying refactoring tasks. Optique aims to provide a more robust and maintainable approach to CLI argument parsing, potentially saving developers from writing the same validation logic repeatedly.

Read more โ†’
21
3
1

์˜์™ธ๋กœ ์ž˜ ์•ˆ ์•Œ๋ ค์ง„ ๋„๊ตฌ์ธ๋ฐ, mise๊ฐ€ ์ •๋ง ์ข‹์Šต๋‹ˆ๋‹ค. ๋‹ค๋“ค mise ์“ฐ๊ณ  ํ–‰๋ณตํ•œ ๊ฐœ๋ฐœ ํ•˜์„ธ์š”.

https://proofby.ac/mise-for-all/

13
2
0

Hackers' Public @ Seoul 1ํšŒ์ฐจ ๋ชจ์ž„ (1์ฐจ ๋ชจ์ง‘)

์„œ์šธ์—์„œ ์—ด๋ฆฌ๋Š” Hackers' Pub ์˜คํ”„๋ผ์ธ ๋ฐ‹์—…, "Hackers' Public @ Seoul"์ด 2025์›” 9์›” 14์ผ(์ผ) ์ฒ˜์Œ์œผ๋กœ ๊ฐœ์ตœ๋ฉ๋‹ˆ๋‹ค. ์ฒ˜์Œ ์—ด๋ฆฌ๋Š” ๋ฐ‹์—…์ธ ๋งŒํผ, ์ฐธ์—ฌํ•˜๋Š” ๋งŽ์€ ๋ถ„๋“ค์ด ์žฌ๋ฐŒ๊ฒŒ ๋А๋‚„ ์ˆ˜ ์žˆ๋Š” ์†Œ์žฌ ์œ„์ฃผ๋กœ ์—ฐ์‚ฌ์ž ๋ถ„๋“ค์„ ์„ญ์™ธํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์ผ์‹œ : 9์›” 14์ผ (์ผ) ์˜คํ›„ 3์‹œ ~ ์˜คํ›„ 6์‹œ
  • ์žฅ์†Œ : ์„œ์šธํŠน๋ณ„์‹œ ์„ฑ๋™๊ตฌ ์ƒ์›๊ธธ 26, ํŠœ๋ง์˜์‚ฌ๊ณผ
  • ์ฃผ์ œ
    • Code As A Canvas : ์ฝ”๋“œ์—์„œ ์˜ˆ์ˆ ์ž‘ํ’ˆ์ด ๋˜๊ธฐ๊นŒ์ง€ (@jakeseo)
    • ํฐํŠธ๋Š” ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค์–ด์ง€๋Š”๊ฐ€ - NeoDGM ์‚ฌ๋ก€๋กœ ์‚ดํŽด๋ณด๋Š” ๊ฐœ๋ฐœ ํ›„์ผ๋‹ด (@dalgona)

๊ฐ•์—ฐ์ด ๋๋‚˜๊ณ  ๋‚œ ๋’ค์— ์ž์œ ๋กญ๊ฒŒ ๋„คํŠธ์›Œํ‚นํ•˜๋Š” ์‹œ๊ฐ„์„ ๊ฐ€์งˆ ์˜ˆ์ •์ž…๋‹ˆ๋‹ค. ๊ฐ์ž ์–˜๊ธฐํ•˜๊ณ  ์‹ถ์€ ์ฃผ์ œ๋ฅผ ๋“ค๊ณ  ์˜ค์‹œ๋ฉด ์ข‹์Šต๋‹ˆ๋‹ค.

์ฐธ์—ฌ ์‹ ์ฒญ

์˜คํ”„๋ผ์ธ ๋ฐ‹์—…์€ ์—ฌ๊ธฐ์„œ ์ฐธ์—ฌ์‹ ์ฒญ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. https://event-us.kr/hackerspubseoul/event/110961

  • ๋ชจ์ง‘ ๊ธฐ๊ฐ„
    • 1์ฐจ ๋ชจ์ง‘ : 8์›” 27์ผ ~ 9์›” 1์ผ (Hackers' Pub์—์„œ๋งŒ ๋ชจ์ง‘)
    • 2์ฐจ ๋ชจ์ง‘ : 9์›” 3์ผ ~ 9์›” 7์ผ (Hackers' Pub ์™ธ๋ถ€์—์„œ๋„ ๊ณต๊ฐœ์ ์œผ๋กœ ๋ชจ์ง‘)

์ฃผ์˜์‚ฌํ•ญ

  • ๋ณธ ํ–‰์‚ฌ๋Š” Hackers' Pub์—์„œ ์ง„ํ–‰ํ•˜๋Š” ์˜คํ”„๋ผ์ธ ํ–‰์‚ฌ์ด๋ฉฐ, Hackers' Pub ๊ณ„์ •์„ ๊ฐ€์ง€์ง€ ์•Š์€ ๋ถ„์ด ์‹ ์ฒญํ•˜์…จ์„ ๊ฒฝ์šฐ ํ™˜๋ถˆ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Hackers' Pub ์™ธ๋ถ€์—์„œ ์œ ์ž…ํ•˜์‹œ๋Š” ๊ฒฝ์šฐ, ๊ฐ ๋ชจ์ง‘๊ธฐ๊ฐ„์ด ๋๋‚˜๊ณ  24์‹œ๊ฐ„ ์•ˆ์—๋Š” Hackers' Pub์— ๊ฐ€์ž…์ด ๋˜์–ด ์žˆ์œผ์…”์•ผ ์ฐธ์—ฌ์ž๋กœ ํ™•์ •๋ฉ๋‹ˆ๋‹ค.
16
4
5

Excited to share some great news from the community! Oeee Cafe, a fantastic oekaki platform, just added support today. This means all the amazing artwork being created there can now be shared and discovered across the , which is such a wonderful step toward connecting creative communities.

Big shoutout to my friend @jihyeokJihyeok Seo for building this platform and bringing it to the fediverse. It's always inspiring to see developers creating spaces for artists and then opening them up to the broader federated community. If you're into digital art or just appreciate seeing creative work, definitely worth checking out what people are sharing from Oeee Cafe on your timeline now. You can find me there at @hongminheeๆดชๅ…” if you want to connect!

6
2
0

Vim์— ๊ด€์‹ฌ์žˆ๋Š”, ํ˜น์€ Vim์„ ์‚ฌ๋ž‘ํ•˜๋Š” ์—ฌ๋Ÿฌ๋ถ„, ์•ˆ๋…•ํ•˜์„ธ์š”.

ํ•œ๊ตญ์–ด๊ถŒ Vim ์‚ฌ์šฉ์ž ๋ชจ์ž„ vim.kr์ž…๋‹ˆ๋‹ค. ์˜ค๋Š˜์€ vim.kr์—์„œ ๊ณต์‹์ ์œผ๋กœ ์ฃผ์ตœํ•˜๋Š” ๋ชจ์ž„ ์†Œ์‹์„ ์ „ํ•ด๋“œ๋ฆฌ๋ ค ํ•ฉ๋‹ˆ๋‹ค.

ํ˜น์‹œ *๋น”๊ต์ •ํ•™์› ๋ชจ์ž„(vimrc)*์„ ๋“ค์–ด๋ณด์‹  ์  ์žˆ์œผ์‹ ๊ฐ€์š”? vimrc ๋ฐ‹์—…์€ 2019๋…„๊ณผ 2022๋…„์— 3๋…„ ๊ฐ„๊ฒฉ์œผ๋กœ ๊ฐœ์ตœ๋œ ๋ฐ” ์žˆ๋Š”๋ฐ, 2025๋…„๋ถ€ํ„ฐ๋Š” ์ €ํฌ vim.kr์ด ๊ทธ ๋ฐ”ํ†ต์„ ์ด์–ด๋ฐ›์•„ ๊ณต์‹์ ์œผ๋กœ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ง€๋‚œ 7์›” 2์ผ, ๊ธฐ์กด vimrc ๋ฐ‹์—…์„ ์ฃผ์ตœํ•˜์…จ๋˜ ๋ฐ•ํ˜„์šฐ(lqez)๋‹˜๊ป˜ ์—ฐ๋ฝ์„ ๋“œ๋ ธ๊ณ , ์ด์–ด 7์›” 6์ผ ์ฒซ ํšŒ์˜๋ฅผ ํ†ตํ•ด vim.kr์—์„œ ๋ณธ ํ–‰์‚ฌ๋ฅผ ์ด์–ด๊ฐ€๊ธฐ๋กœ ํ™•์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

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

ํ–‰์‚ฌ ๊ทœ๋ชจ๋Š” ์•ฝ 36๋ช…์œผ๋กœ ๊ณ„ํš ์ค‘์ด๋ฉฐ, ์ผ์ •์€ 11์›” ๋‘˜์งธ ์ฃผ์—์„œ ์…‹์งธ ์ฃผ ์‚ฌ์ด๋กœ ์กฐ์œจํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ ๋Œ€๊ด€ ์žฅ์†Œ๋„ ๊ฒ€ํ†  ์ค‘์ด๋‹ˆ, ํ˜น์‹œ ํ–‰์‚ฌ ์žฅ์†Œ ํ›„์›์— ๊ด€์‹ฌ ์žˆ๋Š” ๋ถ„์ด ๊ณ„์‹œ๋‹ค๋ฉด ์—ฐ๋ฝ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

ํ–‰์‚ฌ ๊ด€๋ จ ์ตœ์‹  ์†Œ์‹์€ vim.kr ๋””์Šค์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์•ˆ๋‚ด๋“œ๋ฆด ์˜ˆ์ •์ž…๋‹ˆ๋‹ค.

๋งŽ์€ ๊ด€์‹ฌ๊ณผ ์ฐธ์—ฌ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

13
0
0

Hackers' Pub์˜ ํ™˜๊ฒฝ ์„ค์ •์— โ€œ๋‹จ๋ฌธ ๊ณต๊ฐœ ๋ฒ”์œ„โ€ ๋ฐ โ€œ๊ณต์œ  ๊ณต๊ฐœ ๋ฒ”์œ„โ€ ์„ค์ • ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์—ฌํ•ด์ฃผ์‹  @nebuletoHaze ๋‹˜๊ป˜ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

์ด ์Šคํฌ๋ฆฐ์ˆ์€ Hackers' Pub์˜ ์ƒˆ๋กœ์šด ํ™˜๊ฒฝ ์„ค์ • ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค. ์ƒ๋‹จ์—๋Š” โ€œํ”„๋กœํ•„ ์„ค์ •โ€, โ€œํ™˜๊ฒฝ ์„ค์ •โ€(ํ˜„์žฌ ์„ ํƒ๋จ), โ€œ์–ธ์–ด ์„ค์ •โ€, โ€œ์ดˆ๋Œ€ (1)โ€, โ€œํŒจ์Šคํ‚คโ€ ํƒญ์ด ์žˆ์Šต๋‹ˆ๋‹ค. 

ํ™˜๊ฒฝ ์„ค์ • ์„น์…˜์—๋Š” ๋‹ค์Œ ํ•ญ๋ชฉ๋“ค์ด ํ‘œ์‹œ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค:

1. โ€œAI๊ฐ€ ์ƒ์„ฑํ•œ ์š”์•ฝ ์„ ํ˜ธโ€ โ€” ์ฒดํฌ๋ฐ•์Šค๊ฐ€ ์„ ํƒ๋œ ์ƒํƒœ์ด๋ฉฐ, โ€œํ™œ์„ฑํ™”ํ•˜๋ฉด AI๊ฐ€ ๊ฒŒ์‹œ๊ธ€์˜ ์š”์•ฝ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฒŒ์‹œ๊ธ€์˜ ์ฒซ ๋ช‡ ์ค„์ด ์š”์•ฝ์œผ๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹คโ€๋ผ๋Š” ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.
2. โ€œ๋‹จ๋ฌธ ๊ณต๊ฐœ ๋ฒ”์œ„โ€ โ€” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๊ฐ€ โ€œ๊ณต๊ฐœโ€๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, โ€œ๋‹จ๋ฌธ์˜ ๊ธฐ๋ณธ ๊ณต๊ฐœ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹คโ€๋ผ๋Š” ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.
3. โ€œ๊ณต์œ  ๊ณต๊ฐœ ๋ฒ”์œ„โ€ โ€” ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๊ฐ€ โ€œ๊ณต๊ฐœโ€๋กœ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฉฐ, โ€œ๊ณต์œ  ์‹œ์˜ ๊ธฐ๋ณธ ๊ณต๊ฐœ ๋ฒ”์œ„๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹คโ€๋ผ๋Š” ์„ค๋ช…์ด ์žˆ์Šต๋‹ˆ๋‹ค.

ํŽ˜์ด์ง€ ํ•˜๋‹จ์—๋Š” ํšŒ์ƒ‰ โ€œ์ €์žฅโ€ ๋ฒ„ํŠผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
5
5

Haze shared the below article:

Optique: ํƒ€์ž… ์•ˆ์ „ํ•œ CLI ํŒŒ์„œ ์ปด๋น„๋„ค์ดํ„ฐ

ๆดช ๆฐ‘ๆ†™ (Hong Minhee) @hongminhee@hackers.pub

์ด ๊ธ€์—์„œ๋Š” Haskell์˜ `optparse-applicative`์™€ TypeScript์˜ Zod์—์„œ ์˜๊ฐ์„ ๋ฐ›์•„ ์ œ์ž‘๋œ ์ƒˆ๋กœ์šด CLI ํŒŒ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ธ Optique๋ฅผ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. Optique๋Š” ํŒŒ์„œ ์ปด๋น„๋„ค์ดํ„ฐ๋ฅผ ํ™œ์šฉํ•˜์—ฌ CLI์˜ ๊ตฌ์กฐ๋ฅผ ๋ ˆ๊ณ  ๋ธ”๋ก์ฒ˜๋Ÿผ ์กฐ๋ฆฝํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. `option()`, `optional()`, `multiple()`, `or()`, `object()`, `constant()`, `command()`, `argument()` ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ํŒŒ์„œ์™€ ์ปด๋น„๋„ค์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ณต์žกํ•œ CLI ๊ตฌ์กฐ๋ฅผ ์œ ์—ฐํ•˜๊ฒŒ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, `or()`์™€ `object()` ์ปด๋น„๋„ค์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ƒํ˜ธ ๋ฐฐํƒ€์ ์ธ ์˜ต์…˜์ด๋‚˜ ์„œ๋ธŒ์ปค๋งจ๋“œ๋ฅผ ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. Optique๋Š” ๋‹จ์ˆœํ•œ CLI ํŒŒ์„œ ์—ญํ• ์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ์–ด ๋ชจ๋“  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์ง€๋Š” ์•Š์ง€๋งŒ, ๋ณต์žกํ•œ CLI ๊ตฌ์กฐ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๋ฐ ์œ ์šฉํ•˜๋ฉฐ, ์†Œ๊ฐœ ๋ฌธ์„œ์™€ ํŠœํ† ๋ฆฌ์–ผ์„ ํ†ตํ•ด ๋” ์ž์„ธํ•œ ๋‚ด์šฉ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Read more โ†’
13
2
2

์–ด์ œ ํŒŒ์ด์ฝ˜ ๋ผ์ดํŠธ๋‹ํ† ํฌ ํ•˜๋Š”๋ฐ ์ปค๋ฎค๋‹ˆํ‹ฐ ํ™๋ณดํ•˜๋Š”๊ฑฐ ๋ณด๊ณ ... "์•„, ํ•ด์ปค์ŠคํŽ ์•ฝํŒŒ๋Š”๊ฑธ๋กœ ๋ผ์ดํŠธ๋‹ ํ† ํฌ ์‹ ์ฒญํ•  ๊ฑธ" ํ•˜๊ณ  ๋•…์น˜๊ณ  ํ›„ํšŒํ•จ

12
3