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

ๅŽปๅนด12ๆœˆๅ—ใ‘ใŸJLPTใฎ่ชๅฎšๆ›ธใใŸใชใ‚“ใ‹ๆ—ฅๆœฌ่ชžใŒๅ–‹ใ‚Œใ‚‹้Ÿ“ๅ›ฝใฎใ‚ชใ‚ฟใ‚ฏใŸใกใŒใฟใ‚“ใชN1ใฃใฆๆ—ฅๆœฌ่ชžใฎใƒใƒฅใƒผใƒˆใƒชใ‚ขใƒซใฟใŸใ„ใชใ‚‚ใฎใ ใจ่จ€ใฃใฆใฆๆœ€ๅˆใฏ่‡ชๆ…ขใ™ใ‚‹ใฎใ‹ใชใจๆ€ใฃใŸใ‘ใฉๆœ€่ฟ‘ใ“ใ‚Œใฏๅ‰ฒใจไบ‹ๅฎŸใ ใฃใŸใชใจๆฐ—ไป˜ใ„ใŸ

JLPT N1ใฎ่ชๅฎšๆ›ธ
5
1

โ€œ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํˆด์ฒด์ธ์˜ ๋ชจ๋“  ๊ฒƒ์„ VoidZero์—๊ฒŒ ๋งก๊ธฐ๊ธฐโ€ ์ž๋งคํ’ˆ์œผ๋กœ ํŒŒ์ด์ฌ ํˆด์ฒด์ธ์˜ ๋ชจ๋“  ๊ฒƒ์„ Astral์—๊ฒŒ ๋งก๊ธฐ๊ธฐ๊ฐ€ ์žˆ๋‹ค.

https://vite.dev/blog/announcing-vite8

1

ใ“ใ‚“ใฉๆธ‹่ฐทใฎGoogle for Startupsใงใ‚จใƒณใ‚ธใƒ‹ใ‚ขๅ‘ใ‘ใฎใƒŸใƒผใƒˆใ‚ขใƒƒใƒ—ใŒใ‚ใ‚‹ใฟใŸใ„ใงใ™ใ€‚ๅ› ๆžœAIใ‚„3D็”ปๅƒๅ‡ฆ็†ใฎไผš็คพใŒไธปๅ‚ฌใงใ€ใƒˆใƒผใ‚ฏใ‚ปใƒƒใ‚ทใƒงใƒณใ‚‚ใ‚ใ‚‹ใใ†ใงใ™ใ€‚่ˆˆๅ‘ณใ‚ใ‚Œใฐ่ฆ—ใ„ใฆใฟใฆใใ ใ•ใ„ใ€‚

https://dxtfl.share-na2.hsforms.com/2-wHVxyeTSVG5KcmhCmUBEg?source=hootfolio

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

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

Zellij๋กœ ํ„ฐ๋ฏธ๋„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ ์‰ฝ๊ฒŒ ์ž…๋ฌธํ•˜๊ธฐ

Haze @nebuleto@hackers.pub

์™ธ๋ถ€์—์„œ SSH๋ฅผ ํ†ตํ•ด ์›๊ฒฉ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์—ฐ๊ฒฐ ๋Š๊น€์— ๋Œ€๋น„ํ•œ ์„ธ์…˜ ์œ ์ง€ ๋„๊ตฌ๋กœ Zellij๋ฅผ ๋„์ž…ํ•œ ๊ฒฝํ—˜์„ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค. Rust๋กœ ์ž‘์„ฑ๋œ ํ„ฐ๋ฏธ๋„ ๋ฉ€ํ‹ฐํ”Œ๋ ‰์„œ(terminal multiplexer)์ธ Zellij๋Š” tmux์— ๋น„ํ•ด ์ง„์ž… ์žฅ๋ฒฝ์ด ๋‚ฎ๊ณ , ํ™”๋ฉด ํ•˜๋‹จ์— ์‹ค์‹œ๊ฐ„ ๋‹จ์ถ•ํ‚ค ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋งค์šฐ ์ง๊ด€์ ์ธ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ๊ธฐ์กด์— ์‚ฌ์šฉํ•˜๋˜ Ghostty ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์˜ ๋‹จ์ถ•ํ‚ค ์„ค์ •์„ Zellij๋กœ ์ด์‹ํ•จ์œผ๋กœ์จ, ์ต์ˆ™ํ•œ ๋จธ์Šฌ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์„ธ์…˜ ๊ณต์œ ์™€ ํ™”๋ฉด ๋ถ„ํ•  ๊ธฐ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ƒ์„ธํžˆ ๋‹ค๋ฃน๋‹ˆ๋‹ค. KDL ํฌ๋งท์„ ์ด์šฉํ•œ ๊ฐ„ํŽธํ•œ ์„ค์ • ๋ฐฉ์‹๊ณผ zjstatus ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ™œ์šฉํ•œ ์ƒํƒœ ๋ฐ” ์ปค์Šคํ„ฐ๋งˆ์ด์ง• ๊ณผ์ •์€ ๋ฌผ๋ก , ๋น„ํ™œ์„ฑ ํƒญ์˜ ์•Œ๋ฆผ ๋ฌธ์ œ์™€ ๊ฐ™์€ ๊ธฐ์ˆ ์  ํ•œ๊ณ„์™€ ๊ทธ์— ๋Œ€ํ•œ ์‹ค์งˆ์ ์ธ ์šฐํšŒ์ฑ…๋„ ํ•จ๊ป˜ ์ œ์‹œํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์€ ํ„ฐ๋ฏธ๋„ ์—๋ฎฌ๋ ˆ์ดํ„ฐ์— ์ข…์†๋˜์ง€ ์•Š๋Š” ๋…๋ฆฝ์ ์ธ ์ž‘์—… ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ๊ฐ•๋ ฅํ•œ ์„ธ์…˜ ๊ด€๋ฆฌ ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ํ„ฐ๋ฏธ๋„ ์‚ฌ์šฉ ๊ฒฝํ—˜์„ ํ•œ ๋‹จ๊ณ„ ๋†’์ด๋ ค๋Š” ๊ฐœ๋ฐœ์ž์—๊ฒŒ ์œ ์šฉํ•œ ์ธ์‚ฌ์ดํŠธ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Read more โ†’
10

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

ํ”ผ์นด์ธ„ ์Ÿํƒˆ์ „์—์„œ ์กŒ๋‹ค... ์ „์„ธ๊ณ„์—์„œ ํ”ผ์นด์ธ„๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  ์žˆ๋Š”๋ฐ ๊ทธ๋ƒฅ ์˜ˆ์•ฝ๋ฐ›๊ณ  ์ƒ์‚ฐํ•ด์ฃผ๋ฉด ์•ˆ๋˜๊ฒ ๋‹ˆ...??

๋Œ€๊ธฐ์—ด์—์„œ ๋งํ•œ ์‚ฌ์ง„
3

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

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

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

moim.live

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

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

4
2
1

ChatGPT๊ฐ€ ํ•œ๊ตญ์–ด๋กœ "๋„ˆ **ํ•ต์‹ฌ์„ ์ฐ”๋ €์–ด"๊ฐ™์ด ๋งํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ์ผ๋ณธ์–ด์—์„  ็ต่ซ–ใ‹ใ‚‰่จ€ใ†ใจ(๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด)๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ง€๊ธˆ ๋‚ด Codex ์„ธ์…˜์ด ๋”ฑ ๊ทธ๋Ÿฐ ๋А๋‚Œ์œผ๋กœ ์‘๋‹ตํ•˜๊ณ  ์žˆ๋„ค...

โ€บ Xcode mcp๋กœ ๋””๋ฒ„๊ฑฐ์— ์—ฐ๊ฒฐํ•  ์ˆ˜ ์—†๋‚˜์š”?

โ€ข ์งง๊ฒŒ ๋‹ตํ•˜๋ฉด, ์ง€๊ธˆ ์ œ๊ณต๋œ Xcode MCP๋กœ๋Š” LLDB ๋””๋ฒ„๊ฑฐ attach(๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ ์ค‘๋‹จ/์Šคํƒ ์‹ค์‹œ๊ฐ„ inspect)๊นŒ์ง€๋Š” ์ง์ ‘ ๋ชป ํ•ฉ๋‹ˆ๋‹ค.
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

์˜ค๋Š˜ ํ•˜๋ฃจ Hackers Pub iOS ์•ฑ์— ์ž‘์—…ํ•œ ๊ฒƒ๋“ค

  1. ๊ธด ๊ธ€์„ ์ž˜๋ผ์„œ ๋ณด์—ฌ์ค„ ๋•Œ HTML truncateํ•  ๋•Œ HTML ํƒœ๊ทธ ๊ตฌ์กฐ์— ์ด์ƒ์ด ์—†๊ฒŒ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์ฒ˜๋ฆฌ
  2. ๊ธ€ ๋ฆฌ์ŠคํŠธ ๋ณด์—ฌ์ค„ ๋•Œ ๋ Œ๋”๋ง ์ตœ์ ํ™”
  3. ๊ธ€ ๋ฆฌ์ŠคํŠธ / ์ƒ์„ธ ํŽ˜์ด์ง€์—์„œ ์ธ์šฉ๋œ ๊ธ€๋„ ์ œ๋Œ€๋กœ ๋ณด์ด๋„๋ก ์ˆ˜์ •ํ•˜๊ณ  ์ธ์šฉ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  4. ๊ธ€์— ๋ฐ˜์‘ํ•˜๊ธฐ ๊ธฐ๋Šฅ ์ถ”๊ฐ€
  5. ๋ˆ„๊ฐ€ ๊ธ€์„ ๊ณต์œ ํ•˜๊ฑฐ๋‚˜ ์ธ์šฉํ–ˆ๋Š”์ง€ ํ™”๋ฉด ์ถ”๊ฐ€

์กฐ๊ธˆ๋งŒ ๋” ํ•˜๋ฉด... ์•ฑ์Šคํ† ์–ด ์˜ฌ๋ ค๋„ ๋˜๊ฒ ๋‹ค...

3์›” 1์ผ ํ•˜๋ฃจ์— hackers-pub/ios์— 16๊ฐœ ์ปค๋ฐ‹์„ ์˜ฌ๋ ธ๋‹ค.
5

๐Ÿš€ 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

์š”์ฆ˜ ์ผํ•  ๋•Œ Opus 4.6๋ณด๋‹ค GPT-5.3 Codex๋ฅผ ์• ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋‚˜๋Š” Anthropic์ด LLM์˜ alignment๋‚˜ safety, explainability ๋ถ„์•ผ์—์„œ ์ œ์ผ ์ž˜ ํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋ฏธ๊ตญ ์ •๋ถ€์™€ ๊ด€๋ จ๋œ ์ผ๋ จ์˜ ์‚ฌ๊ฑด์—์„œ ๋ˆ„๊ฐ€ ์ž˜์ž˜๋ชป์„ ๋”ฐ์ง€๋Š” ๊ฒƒ๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์ €๋ ‡๊ฒŒ๊นŒ์ง€ ๊ฐ•๊ฒฝํ•˜๊ฒŒ ๋‚˜์„œ์„œ ๊ฐ€์ง€์ง€ ๋ชปํ•˜๋ฉด ๋ถ€์ˆด๋ฒ„๋ฆฌ๊ฒ ์–ด!!!!!! ๊ฐ™์€ ์Šคํƒ ์Šค๋ฅผ ์ทจํ•˜๊ณ  ์žˆ๋‹ค๋Š”๊ฑด, ๊ทธ๋งŒํผ Anthropic์˜ ๋ชจ๋ธ์ด ์šฐ์ˆ˜ํ•ด์„œ๊ฐ€ ์•„๋‹๊นŒ.

๊ทธ๋Ÿฌ๊ณ ์„  OpenAI๊ฐ€ Anthropic ์ž๋ฆฌ๋ฅผ ๋Œ€์‹  ๋“ค์–ด๊ฐ”๋Š”๋ฐ ์ •์ž‘ OpenAI๋„ Anthropic๊ฐ€ ์ œํ•œํ•œ๊ฑธ ๊ทธ๋Œ€๋กœ ์ œํ•œํ•˜๊ณ ๋„ ๊ณ„์•ฝ์„ ๋”ด๊ฑธ ๋ณด๋ฉด ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์ž๊ธฐ๋„ค ์ •์น˜์  ์ด์œ ๋กœ OpenAI๋ฅผ ๋ฐ€์–ด์คฌ๊ฑฐ๋‚˜ OpenAI๋Š” ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ๋’ค์—์„œ ์ œํ•œ์„ ํ’€์–ด์ฃผ์ง€ ์•Š์„๊นŒํ•˜๋Š” ์šฐ๋ ค๊ฐ€ ํฌ๋‹ค.

๋ชจ๋ธ ์„ ํ˜ธ์— ๋Œ€ํ•ด ์กฐ๊ธˆ ๋” ๋งํ•˜์ž๋ฉด ์—ฌ์ „ํžˆ ๋ฌธ์„œ๋ฅผ ์ž‘์„ฑํžˆ๊ฑฐ๋‚˜ ์ด๋ฏธ์ง€๊ฐ€ ํ•„์š” ์—†๋Š” ๋ชจ๋“  ์ž‘์—…์—์„  Claude๋ฅผ ์„ ํ˜ธํ•œ๋‹ค. ์ฝ”๋”ฉ ์ž‘์—… ์‹œ planning๊ณผ review ๋‹จ๊ณ„์—์„œ Codex๋ฅผ ํ›จ์”ฌ ๋” ์„ ํ˜ธํ•˜๊ณ , ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ์ผ์€ ํ† ํฐ ํšจ์œจ์ด๋‚˜ ์‹œ๊ฐ„ ํšจ์œจ์„ ์ƒ๊ฐํ•˜๋ฉด Opus๋‚˜ Sonnet์ด ๋” ์ข‹๋‹ค.

2

์š”์ฆ˜ ์ผํ•  ๋•Œ Opus 4.6๋ณด๋‹ค GPT-5.3 Codex๋ฅผ ์• ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ทธ๋Ÿผ์—๋„ ๋‚˜๋Š” Anthropic์ด LLM์˜ alignment๋‚˜ safety, explainability ๋ถ„์•ผ์—์„œ ์ œ์ผ ์ž˜ ํ•˜๊ณ  ์žˆ๋Š” ๊ณณ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค.

๋ฏธ๊ตญ ์ •๋ถ€์™€ ๊ด€๋ จ๋œ ์ผ๋ จ์˜ ์‚ฌ๊ฑด์—์„œ ๋ˆ„๊ฐ€ ์ž˜์ž˜๋ชป์„ ๋”ฐ์ง€๋Š” ๊ฒƒ๊ณผ๋Š” ๋ณ„๊ฐœ๋กœ ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์ €๋ ‡๊ฒŒ๊นŒ์ง€ ๊ฐ•๊ฒฝํ•˜๊ฒŒ ๋‚˜์„œ์„œ ๊ฐ€์ง€์ง€ ๋ชปํ•˜๋ฉด ๋ถ€์ˆด๋ฒ„๋ฆฌ๊ฒ ์–ด!!!!!! ๊ฐ™์€ ์Šคํƒ ์Šค๋ฅผ ์ทจํ•˜๊ณ  ์žˆ๋‹ค๋Š”๊ฑด, ๊ทธ๋งŒํผ Anthropic์˜ ๋ชจ๋ธ์ด ์šฐ์ˆ˜ํ•ด์„œ๊ฐ€ ์•„๋‹๊นŒ.

๊ทธ๋Ÿฌ๊ณ ์„  OpenAI๊ฐ€ Anthropic ์ž๋ฆฌ๋ฅผ ๋Œ€์‹  ๋“ค์–ด๊ฐ”๋Š”๋ฐ ์ •์ž‘ OpenAI๋„ Anthropic๊ฐ€ ์ œํ•œํ•œ๊ฑธ ๊ทธ๋Œ€๋กœ ์ œํ•œํ•˜๊ณ ๋„ ๊ณ„์•ฝ์„ ๋”ด๊ฑธ ๋ณด๋ฉด ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์ž๊ธฐ๋„ค ์ •์น˜์  ์ด์œ ๋กœ OpenAI๋ฅผ ๋ฐ€์–ด์คฌ๊ฑฐ๋‚˜ OpenAI๋Š” ๋ฏธ๊ตญ ์ •๋ถ€๊ฐ€ ์›ํ•˜๋Š” ๊ฒƒ์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด ๋’ค์—์„œ ์ œํ•œ์„ ํ’€์–ด์ฃผ์ง€ ์•Š์„๊นŒํ•˜๋Š” ์šฐ๋ ค๊ฐ€ ํฌ๋‹ค.

1

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

7
3
0

Building a New Excel Library in One Week

Haze @nebuleto@hackers.pub

SheetKit is a high-performance Rust-based spreadsheet library designed for Node.js to address the limitations of existing Excel processing tools. Developed over a single intensive week using an architect-led workflow with coding agents, this library leverages napi-rs to provide comprehensive support for the OOXML specification, including complex features like charts, conditional formatting, and extensive formula functions. To overcome the memory overhead and garbage collection pressure typical of JavaScript-heavy Excel libraries, the architecture utilizes a specialized raw buffer FFI protocol and lazy-loading mechanisms. These optimizations allow SheetKit to handle massive datasets with a significantly reduced memory footprint, occasionally outperforming native Rust implementations in specific write scenarios due to efficient string interning within the V8 engine. The project introduces advanced capabilities such as streaming readers for forward-only processing and copy-on-write saving to bypass unnecessary re-serialization of unchanged data parts. This development represents a significant step forward in Node.js data processing, offering a robust and scalable solution for developers managing high-volume or complex spreadsheet workflows.

Read more โ†’
5

์ผ์ฃผ์ผ๋งŒ์— ์ƒˆ๋กœ์šด ์—‘์…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋งŒ๋“ค๋‹ค

Haze @nebuleto@hackers.pub

SheetKit์€ ๊ธฐ์กด Node.js ์—‘์…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ์„ฑ๋Šฅ ํ•œ๊ณ„์™€ ๊ธฐ๋Šฅ ์ œ์•ฝ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Rust๋กœ ๊ฐœ๋ฐœ๋œ ๊ณ ์„ฑ๋Šฅ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ž…๋‹ˆ๋‹ค. ์ €์ž๋Š” ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์™€ ๋™์  ํ…œํ”Œ๋ฆฟ ์ƒ์„ฑ์„ ์œ„ํ•ด Rust ์ฝ”์–ด ๊ธฐ๋ฐ˜์— napi-rs๋ฅผ ํ™œ์šฉํ•œ Node.js ๋ฐ”์ธ๋”ฉ ๊ตฌ์กฐ๋ฅผ ์„ค๊ณ„ํ–ˆ์œผ๋ฉฐ, ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์™€์˜ ๊ธด๋ฐ€ํ•œ ํ˜‘์—…์„ ํ†ตํ•ด ๋‹จ ์ผ์ฃผ์ผ ๋งŒ์— ์ดˆ๊ธฐ ๋ฐฐํฌ๋ถ€ํ„ฐ v0.5.0 ๋ฆด๋ฆฌ์Šค๊นŒ์ง€ ๋‹ฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ์ƒ์„ฑ์— ๋”ฐ๋ฅธ ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜(garbage collection) ์••๋ฐ•์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ์ด์ง„ ๋ฒ„ํผ(binary buffer)๋ฅผ ํ†ตํ•œ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐฉ์‹์„ ๋„์ž…ํ•˜๊ณ , ์ง€์—ฐ ๋กœ๋”ฉ(lazy loading)๊ณผ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฆฌ๋” ๊ธฐ๋Šฅ์„ ํ†ตํ•ด ๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ฒ˜๋ฆฌ ํšจ์œจ์„ ๊ทน๋Œ€ํ™”ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ ๊ธฐ์กด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋Œ€๋น„ ์••๋„์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ˆ๊ฐ๊ณผ ์†๋„ ํ–ฅ์ƒ์„ ๋ณด์—ฌ์ฃผ์—ˆ์œผ๋ฉฐ, ํŠน์ • ์“ฐ๊ธฐ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ๋Š” V8 ์—”์ง„์˜ ์ตœ์ ํ™” ๋•๋ถ„์— Rust ๋„ค์ดํ‹ฐ๋ธŒ๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๊ธฐ๋กํ•˜๊ธฐ๋„ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ 164๊ฐœ์˜ ์ˆ˜์‹ ํ•จ์ˆ˜์™€ 43๊ฐœ์˜ ์ฐจํŠธ ํƒ€์ž…์„ ์ง€์›ํ•˜๋ฉฐ ์‹ค์ œ ์—…๋ฌด ํ˜„์žฅ์— ์„ฑ๊ณต์ ์œผ๋กœ ์ ์šฉ ์ค‘์ธ SheetKit์€ Node.js ํ™˜๊ฒฝ์—์„œ ๋Œ€๊ทœ๋ชจ ์—‘์…€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๊ฐ•๋ ฅํ•˜๊ณ  ํšจ์œจ์ ์ธ ์†”๋ฃจ์…˜์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

Read more โ†’
9

์ง€๋‚œ ์ฃผ๋ง๋ถ€ํ„ฐ ์—ด์‹ฌํžˆ ํ† ํฐ์„ ํŒํŒ ํƒœ์›Œ ๋งŒ๋“  TypeScript/Rust์šฉ ์—‘์…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ SheetKit, ๋ฐฉ๊ธˆ 0.4.0๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์•„์ง ์ข‹๋‹ค๊ณ ๋Š” ๋ง์„ ๋ชปํ•ด๋„ API ๋ ˆํผ๋Ÿฐ์Šค์™€ ๋ฌธ์„œ ์›น๋„ ์ƒ๊ฒผ๊ณ , ๋‹จ์ˆœํ•œ ๊ฐ’ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ๋„˜์–ด ๋ณต์žกํ•œ ๊ธฐ๋Šฅ๋“ค๋„ ๋งŽ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํญ๋ฐœ์ ์ธ ๊ตฌํ˜„๋ณด๋‹ค๋Š” ์ ๋‹นํ•œ ์Šคํ”ผ๋“œ๋กœ ๋ฌธ์„œ์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๊ณ  WebAssembly๋‚˜ Bun/Deno/Python ๋“ฑ์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๋“ฑ์„ ๊ณ ๋ฏผํ•ด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ์˜ ์™„์„ฑ๋„๋„ ์ข€ ์–ด๋А ์ •๋„ ์˜ฌ๋ผ๊ฐ„๋‹ค๋ฉด ์ด๋ฆฌ์ €๋ฆฌ SheetKit์„ ์†Œ๊ฐœํ•˜๋Š” ์ •์‹ ๊ธ€๋„ ํ•œ๋ฒˆ ์—ฌ๊ธฐ์ €๊ธฐ์— ์˜ฌ๋ ค๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ Node.js์ชฝ binding์€ ์—ด์‹ฌํžˆ ๊ฐœ๋ฐฅ๋จน๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ธ๋ฐ, Rust๋‚˜ Node.js ํ™˜๊ฒฝ์—์„œ ์—‘์…€ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ์ผ์ด ์žˆ๋Š” ๋ถ„๋“ค์€ ํ•œ๋ฒˆ ์จ๋ณด์‹œ๊ณ  ์ด์Šˆ๋‚˜ ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋„ˆ๋ฌด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Node.js์—์„œ SheetKit์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ๊ฑฐ์˜ ๋ชจ๋“  ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ์—์„œ ์„ฑ๋Šฅ ์šฐ์œ„๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์›น ๋ฌธ์„œ์—๋Š” SheetKit์ด ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋œ ์‚ฌ์šฉํ•˜๊ณ  Node.js ๋ฐ”์ธ๋”ฉ์—์„œ ์˜์—ญ ์ „ํ™˜ ์‹œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์˜€๋Š”์ง€๋„ ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/Nebu1eto/sheetkit

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

์ด ๊ฒฝํ—˜์— ๋Œ€ํ•ด์„œ๋„ ์‹œ๊ฐ„ ์—ฌ์œ ๊ฐ€ ๋  ๋•Œ ์ •์‹์œผ๋กœ ๊ธ€๋กœ ์ ์–ด๋ณด๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

3

์ง€๋‚œ ์ฃผ๋ง๋ถ€ํ„ฐ ์—ด์‹ฌํžˆ ํ† ํฐ์„ ํŒํŒ ํƒœ์›Œ ๋งŒ๋“  TypeScript/Rust์šฉ ์—‘์…€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ SheetKit, ๋ฐฉ๊ธˆ 0.4.0๋ฅผ ๋ฐฐํฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์„œ ํ€„๋ฆฌํ‹ฐ๊ฐ€ ์•„์ง ์ข‹๋‹ค๊ณ ๋Š” ๋ง์„ ๋ชปํ•ด๋„ API ๋ ˆํผ๋Ÿฐ์Šค์™€ ๋ฌธ์„œ ์›น๋„ ์ƒ๊ฒผ๊ณ , ๋‹จ์ˆœํ•œ ๊ฐ’ ์ฝ๊ธฐ/์“ฐ๊ธฐ๋ฅผ ๋„˜์–ด ๋ณต์žกํ•œ ๊ธฐ๋Šฅ๋“ค๋„ ๋งŽ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ ํญ๋ฐœ์ ์ธ ๊ตฌํ˜„๋ณด๋‹ค๋Š” ์ ๋‹นํ•œ ์Šคํ”ผ๋“œ๋กœ ๋ฌธ์„œ์˜ ์™„์„ฑ๋„๋ฅผ ๋†’์ด๊ณ  WebAssembly๋‚˜ Bun/Deno/Python ๋“ฑ์— ๋Œ€ํ•œ ๋ฐ”์ธ๋”ฉ ๋“ฑ์„ ๊ณ ๋ฏผํ•ด๋ณผ ๊ณ„ํš์ž…๋‹ˆ๋‹ค. ๋ฌธ์„œ์˜ ์™„์„ฑ๋„๋„ ์ข€ ์–ด๋А ์ •๋„ ์˜ฌ๋ผ๊ฐ„๋‹ค๋ฉด ์ด๋ฆฌ์ €๋ฆฌ SheetKit์„ ์†Œ๊ฐœํ•˜๋Š” ์ •์‹ ๊ธ€๋„ ํ•œ๋ฒˆ ์—ฌ๊ธฐ์ €๊ธฐ์— ์˜ฌ๋ ค๋ณด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฏธ Node.js์ชฝ binding์€ ์—ด์‹ฌํžˆ ๊ฐœ๋ฐฅ๋จน๊ธฐํ•˜๊ณ  ์žˆ๋Š” ์ค‘์ธ๋ฐ, Rust๋‚˜ Node.js ํ™˜๊ฒฝ์—์„œ ์—‘์…€ ํŒŒ์ผ์„ ๋‹ค๋ฃฐ ์ผ์ด ์žˆ๋Š” ๋ถ„๋“ค์€ ํ•œ๋ฒˆ ์จ๋ณด์‹œ๊ณ  ์ด์Šˆ๋‚˜ ํ”ผ๋“œ๋ฐฑ์„ ๋‚จ๊ฒจ์ฃผ์‹œ๋ฉด ๋„ˆ๋ฌด ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Node.js์—์„œ SheetKit์€ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋น„ํ•ด ๊ฑฐ์˜ ๋ชจ๋“  ๋ฒค์น˜๋งˆํฌ ํ…Œ์ŠคํŠธ์—์„œ ์„ฑ๋Šฅ ์šฐ์œ„๋ฅผ ๋ณด์˜€์Šต๋‹ˆ๋‹ค. ์›น ๋ฌธ์„œ์—๋Š” SheetKit์ด ์–ด๋–ป๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋œ ์‚ฌ์šฉํ•˜๊ณ  Node.js ๋ฐ”์ธ๋”ฉ์—์„œ ์˜์—ญ ์ „ํ™˜ ์‹œ์˜ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์ค„์˜€๋Š”์ง€๋„ ์ •๋ฆฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/Nebu1eto/sheetkit

3

์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ํ’€๋กœ ํ™œ์šฉํ•ด์„œ ๋‚˜๋ณด๋‹จ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” TypeScript์™€ Rust๋ฅผ ์œ„ํ•œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ xlsx ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์“ฐ๋‹ค๊ฐ€ ๋„ˆ๋ฌด ๊ดด๋กœ์›Œ์„œ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. (GitHub Actions ๋ฐฐํฌ ์ด์Šˆ๋Š” ๋‚ด์ผ ๋งˆ์ € ์žก๋Š”๊ฑธ๋กœโ€ฆ)

https://github.com/Nebu1eto/sheetkit

๊ธฐ์กด ExcelJS๋ฅผ ์“ฐ๋˜ ํ”„๋กœ์ ํŠธ์— SheetKit์„ ๋ถ™์ด๋‹ค๊ฐ€ ๋ฌธ๋“ ๊ถ๊ธˆํ•ด์ ธ์„œ ๋ฒค์น˜๋งˆํฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒŒ ์‹œ์ผœ๋ณด์•˜๋‹ค. ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์„ค์ •์„ ๋งŽ์ด ์ถ”๊ฐ€ํ•ด๋‘” ๊ธฐ์กด ํ…œํ”Œ๋ฆฟ ํŒŒ์ผ์—์„œ SheetKit์ด ์ตœ๋Œ€ 10000๋ฐฐ ์ด์ƒ ๋น ๋ฅธ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์™”๋‹ค. ๋ฐ”ํ€ด ์žฌ๋ฐœ๋ช… ์•ผํฌ ์…ฐ์ด๋น™์ด ๋ฟŒ๋“ฏํ•ด์ง€๋Š” ์ˆœ๊ฐ„์ด๋‹ค.

SheetKit๊ณผ ExcelJS์˜ ๋ฒค์น˜๋งˆํฌ ๊ฒฐ๊ณผ, ๋ชจ๋“  ์˜์—ญ์—์„œ ExcelJS๋ณด๋‹ค ๋น ๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค.

       Create + Write              12.8x faster
       Buffer Read                  3.1x faster
       Large Write                  2.2x faster
       Large Buffer Read            1.8x faster
       Template (11K)           14376.6x faster
       Template (13K)            5771.4x faster
       EUCAST (2.5MB)               3.3x faster
5

์ฝ”๋”ฉ ์—์ด์ „ํŠธ๋ฅผ ํ’€๋กœ ํ™œ์šฉํ•ด์„œ ๋‚˜๋ณด๋‹จ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ๊ฐ€ ๋งŒ๋“ค๊ณ  ์žˆ๋Š” TypeScript์™€ Rust๋ฅผ ์œ„ํ•œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ xlsx ํŒŒ์ผ์„ ๋‹ค๋ฃจ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค ์“ฐ๋‹ค๊ฐ€ ๋„ˆ๋ฌด ๊ดด๋กœ์›Œ์„œ ๋งŒ๋“ค๊ฒŒ ๋˜์—ˆ๋‹ค. (GitHub Actions ๋ฐฐํฌ ์ด์Šˆ๋Š” ๋‚ด์ผ ๋งˆ์ € ์žก๋Š”๊ฑธ๋กœโ€ฆ)

https://github.com/Nebu1eto/sheetkit

5

TIL: Biome์€ ์ž์ฒด์ ์œผ๋กœ ๋งŒ๋“  AST ์ฟผ๋ฆฌ ์–ธ์–ด์ธ GritQL์„ ํ†ตํ•ด Plugin ์‹œ์Šคํ…œ์„ ์ œ๊ณตํ•œ๋‹ค. [๋ฌธ์„œ]

language js

// 4๊ฐœ ์ด์ƒ์˜ ์„œ๋กœ ๋‹ค๋ฅธ useState๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ
or {
  `function $name($args) { $body }`,
  `$name = ($args) => { $body }`,
  `$name = forwardRef(($args) => { $body })`,
  `$name = React.forwardRef(($args) => { $body })`,
  `$name = forwardRef(function($args) { $body })`,
  `$name = React.forwardRef(function($args) { $body })`,
  `$name = memo(($args) => { $body })`,
  `$name = React.memo(($args) => { $body })`,
  `$name = memo(function $name($args) { $body })`,
  `$name = React.memo(function $name($args) { $body })`
} where {
  $body <: contains `$t1 = useState($a1)` as $b1 where {
    $body <: contains `$t2 = useState($a2)` as $b2 where {
      or { not $a2 <: $a1, not $t2 <: $t1 },
      $body <: contains `$t3 = useState($a3)` as $b3 where {
        or { not $a3 <: $a1, not $t3 <: $t1 },
        or { not $a3 <: $a2, not $t3 <: $t2 },
        $body <: contains `$t4 = useState($a4)` as $b4 where {
          or { not $a4 <: $a1, not $t4 <: $t1 },
          or { not $a4 <: $a2, not $t4 <: $t2 },
          or { not $a4 <: $a3, not $t4 <: $t3 },
          register_diagnostic(
            span = $name,
            message = "์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ๋„ˆ๋ฌด ๋งŽ์€ useState๋ฅผ ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค."
          )
        }
      }
    }
  }
}
Biome์— ์ปค์Šคํ…€ ๋ฃฐ์„ ์ ์šฉํ•œ ๋ชจ์Šต
4

@hongminheeๆดช ๆฐ‘ๆ†™ (Hong Minhee) ์ฒ˜์Œ์— ๊ทธ๊ฑธ ํ•ด๋ดค๋‹ค๊ฐ€... ๋„์ €ํžˆ ์ด๊ฑด ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๊ตฌ๋‚˜๋ผ๊ณ  ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ใ…‹ ์ค„๋ฐ”๊ฟˆ์ด๋‚˜ ์ด๋Ÿฐ ๊ฒƒ๋“ค๋„ ๊ธฐ๊ณ„๊ฐ€ ์ฝ๊ธฐ ์ข‹์€ ํฌ๋งท์ด ์•„๋‹ˆ๋ผ์„œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์˜ ํž˜์œผ๋กœ ์—ด์‹ฌํžˆ ํ›„์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

1

@hongminheeๆดช ๆฐ‘ๆ†™ (Hong Minhee) ์‚ฌ์‹ค ์ด๊ฑด PDF -> Markdown์œผ๋กœ ๋ณ€ํ™˜ ํ›„ -> context window์— ๋งž๊ฒŒ ์ชผ๊ฐœ์„œ ๋ณ‘๋ ฌ๋กœ ๋ฒˆ์—ญ -> ๊ฒฐ๊ณผ๋ฌผ์„ Markdown์œผ๋กœ ๋ณ‘ํ•ฉํ•œ ๋‹ค์Œ -> PDF๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค ใ…‹ใ…‹ใ…‹ ๊ทธ๋ž˜์„œ ์‹ค์งˆ์ ์œผ๋กœ๋Š” Markdown์ด์—์š”

1

์ตœ๊ทผ ๊ทธ๋ƒฅ ์ฝ”๋”ฉ ์—์ด์ „ํŠธ์—๊ฒŒ ์ฝ”๋”ฉ์„ ๋„˜์–ด์„œ ์‚ถ์˜ ๊ท€์ฐฎ์€ ์ž๋™ํ™”๋‚˜ ์ผ๋“ค์„ ๋Œ€์‹  ํ•ด์ฃผ๋Š” ๋А๋‚Œ์œผ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ์ง€ ์•Š์„๊นŒ ์‹ถ์–ด์„œ, ์ž๋Š” ๋™์•ˆ ๋‚จ์€ ํ† ํฐ ํ•œ๋„๋กœ epub ํŒŒ์ผ๋กœ ๋œ ์†Œ์„ค์„ ๋ฒˆ์—ญ์‹œ์ผฐ๋”๋‹ˆ ๊ฝค ๊ทธ๋Ÿด์‹ธํ•œ ์ˆ˜์ค€์˜ ๋ฒˆ์—ญ์ด ๋‚˜์™€์„œ ๋†€๋ž๋‹ค. ๊ทธ๋ž˜์„œ ์ด๊ฑด ์ข€ ์ž˜ ๋งŒ๋“ค์–ด๋‘๋ฉด ๊ต‰์žฅํžˆ ํŽธํ•˜๊ฒ ๋‹ค ์‹ถ์–ด์„œ pdf ํŒŒ์ผ๊ณผ epub ํŒŒ์ผ์„ ๋ฒˆ์—ญํ•˜๋Š”๊ฑธ Agent Skills๋กœ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.

  • PDF or epub ํŒŒ์ผ ์ง€์›
  • ๋ฒˆ์—ญ ํšจ์œจ๊ณผ context window ๋ฌธ์ œ๋ฅผ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ํฐ ํŒŒ์ผ์€ ์ž˜๋ผ์„œ ๋ณ‘๋ ฌ๋กœ ํ•˜์œ„ Task๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํ˜•ํƒœ๋กœ ๋™์ž‘
  • PDF์˜ ๊ฒฝ์šฐ, ํ…์ŠคํŠธ๋ฅผ ์ถ”์ถœ ๊ณผ์ •์—์„œ ์ค„๋ฐ”๊ฟˆ ๋“ฑ์— ๋Œ€ํ•œ ํ›„์ฒ˜๋ฆฌ
  • epub์˜ ๊ฒฝ์šฐ, ์šฐ์ข…์„œ(์ค‘๊ตญ์–ด๋‚˜ ์ผ๋ณธ์–ด)๋‚˜ RTL ๋ฐฉ์‹ ์–ธ์–ด์˜ ๋ ˆ์ด์•„์›ƒ์—๋„ ๋Œ€์‘

Repository

Claude Code์—์„œ pdf translator ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•œ ํ™”๋ฉด์˜์–ด๋กœ ๋œ ๋…ผ๋ฌธ์ด ์ž˜ ๋ฒˆ์—ญ๋˜์–ด PDF๋กœ๋„ ์ถœ๋ ฅ๋˜๊ณ  ์žˆ๋‹ค.
11
3
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

ํ•œ 10๋…„ ์ •๋„๋งŒ์— ๋ฌด๋ผ์นด๋ฏธ ํ•˜๋ฃจํ‚ค์˜ ์–ธ๋”๊ทธ๋ผ์šด๋“œ ์‹œ๋ฆฌ์ฆˆ๋ฅผ ๋‹ค์‹œ ์ฝ์—ˆ๋‹ค. ์ข…๊ต๊ฐ€ ์‚ฌํšŒ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์š”์ฆ˜ ํ•œ๊ตญ์—์„œ๋„ ์ฝ์–ด๋ณผ๋งŒํ•œ ์ฑ…์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๋А๋‚€ ์ ์„ ๋‹ค ์“ฐ๋ ค๋ฉด ๊ธ€์„ ์“ฐ๋Š”๋ฐ๋งŒ ํ•œ ์„ธ์›”์ผ ๊ฒƒ ๊ฐ™์œผ๋‹ˆ ๊ธฐ๋ก๋งŒ.

๋ฆฌ๋””๋ถ์Šค์—์„œ ์ฝ์€ ์–ธ๋”๊ทธ๋ผ์šด๋“œ์™€ ์•ฝ์†๋œ ์žฅ์†Œ์—์„œ.
2

์˜ˆ์ „์— 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

@nebuletoHaze ๋ฉ€ํ‹ฐํ„ด์„ Message ์—ฌ๋Ÿฌ๊ฐœํ•˜๋Š” ๊ฑธ๋กœ ํ• ์ˆ˜์žˆ์ง€ ์•Š๋‚˜์š”? ๋ฉ€ํ‹ฐํ„ด์„ ์œ„ํ•ด Part๊ฐ€ ํ•„์š”ํ•œ์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ณ„๊ฐœ๋กœ ๋ง์”€ํ•˜์‹  ๊ตฌํ˜„์ด ์ €์˜ ๊ตฌํ˜„์ด ๋น„์Šทํ• ๊ฑฐ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋„ Vercel AI SDK๋Š” ๊ทธ๋ƒฅ ํ”„๋กœ๋ฐ”์ด๋”๋“ค์˜ ๊ณตํ†ต ์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์“ฐ๊ณ  ์‹ค์ œ๋กœ delta๋‹ค๋ฃจ๋Š” ๋กœ์ง์€ ์ง์ ‘ ๋‹ค ํ•˜๊ณ ์žˆ์Šต๋‹ˆ๋‹ค.

@bglbgl gwyng ๊ทธ๋Ÿฌ๋ฉด ๊ณ„์†ํ•ด์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฉ”์„ธ์ง€๊ฐ€ ๋‚˜์˜ฌ ๋•Œ, ํ•œ๋ฒˆ ์ŠคํŠธ๋ฆฌ๋ฐ์ด ๋๋‚˜๋ฉด ์–ด๋А ์ธ๋ฑ์Šค์˜ ๋ฉ”์„ธ์ง€์—์„œ ์ตœ์ข… output์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ณ„๋กœ์ธ ๊ฒƒ๋ถ€ํ„ฐ๊ฐ€ ํฌ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ๋ฟ๋งŒ์ด ์•„๋‹ˆ๋ผ ์š”์ฆ˜ LLM๋“ค์€ Text๋ž‘ Tool Calling ๋ง๊ณ ๋„ multimodal ๋ชจ๋ธ๋“ค์ด ๋งŽ์•„์„œ Image๋‚˜ File๋„ ์ฒจ๋ถ€ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ์ด๋Ÿฐ part๋“ค์€ ์–ด๋–ป๊ฒŒ ํ•œ ๋ฉ”์„ธ์ง€์— ํ™•์žฅํ•ด์„œ ๋‹ด์„ ์ˆ˜ ์žˆ์„์ง€ ๊ณ ๋ฏผํ•œ ๊ฒฐ๊ณผ์ด๊ธฐ๋„ ํ•˜๊ตฌ์š”.

0

@nebuletoHaze Vercel AI SDK์— ๋Œ€ํ•œ ๋ถˆ๋งŒ์€ ์ธ์šฉ์— ์จ๋†จ๊ตฌ์š”, ์ฑ—๋ด‡ UI์—์„œ๋Š” ์„œ๋ฒ„์—์„œ ์ƒํƒœ๋ฅผ ์ŠคํŠธ๋ฆฌ๋ฐ์œผ๋กœ ๋ฐ›์™€์•ผํ•˜๋Š”๋ฐ(์ €๋„ SSE ์“ฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค), ์ด ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ NextJS๊ฐ€ ์‚ฌ์‹ค์ƒ ๋„์›€์ด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

@bglbgl gwyng

์ „ LangChain / LangGraph์— ๋น„ํ•˜๋ฉด Vercel AI SDK๊ฐ€ ํ›จ์”ฌ saneํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค ^_ใ…œโ€ฆ ์›๋ž˜ ์—์ด์ „ํŠธ๋ฅผ LangChain์œผ๋กœ ๋งŒ๋“ค๋‹ค ์ด์ œ Vercel AI SDK์— ์ •์ฐฉํ–ˆ์Šต๋‹ˆ๋‹ค.

Tool calling์€ ๋ฌด์—‡์„ ์จ์„œ ๋งŒ๋“ค์–ด๋„ ์•ˆ์—์„  ๊ฒฐ๊ตญ LLM์ด ํ˜ธ์ถœํ•  ํ•จ์ˆ˜์™€ ์‹คํ–‰ ์ธ์ž ํ† ํฐ์„ ๋ณด๋‚ด๋ฉด ๊ทธ๊ฑธ provider์˜ SDK๋‚˜ ๊ทธ๊ฑธ ๊ฐ์‹ผ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(e.g. LangChain or AI SDK)์—์„œ schema validation์„ ํ•˜๊ณ  ์‹คํŒจํ•˜๋ฉด retry๋ฅผ ์‹œํ‚ค๊ณ  ํ•˜๋ฉด์„œ ์‚ฌ์‹ค์ƒ ์ž๊ธฐ ํ˜ผ์ž์„œ ๋ฉ€ํ‹ฐ ํ„ด์ฒ˜๋Ÿผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.(๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ๋ฃจํ”„๊ฐ€ ๋‚˜๊ฑฐ๋‚˜ ํ•˜์ง€ ์•Š๋„๋ก ์•ˆ์—์„œ ์ƒํƒœ ๋จธ์‹ ์„ ๋งŒ๋“ค๊ณ  depth๋ผ๋˜๊ฐ€ ์ œํ•œํ•˜๋Š”๊ฑฐ๊ตฌ์š”.) ๊ทธ๋ฆฌ๊ณ  ๊ฐ ํŒŒํŠธ๊ฐ€ ์—…๋ฐ์ดํŠธ๋˜๊ณ  ํ† ํฐ์„ ๊ณ„์† ์—…๋ฐ์ดํŠธํ•˜๋‹ค๊ฐ€ ๋™์ž‘์ด ๋ชจ๋‘ ๋๋‚˜๋ฉด ๊ทธ Part ์† ์ „์ฒด ๋ฉ”์„ธ์ง€์™€๋Š” ๋ณ„๊ฐœ์˜ Message ์ „์ฒด ์ถœ๋ ฅ์ด ๋‚˜์˜จ๋‹ค๋Š” ์ ์—์„œ ์ด ๋ฐฉ์‹์ด ๋งž๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ €ํฐ ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„๊ฐ€ ๊ต‰์žฅํžˆ ๊ตฌ๋ถ„๋œ ํŽธ์ด๊ธด ํ•œ๋ฐ, ์„œ๋ฒ„์—์„œ SSE๋กœ ์ŠคํŠธ๋ฆผ ๋Œ๋ฉด์„œ text-delta์ด๋ฉด ํ† ํฐ ์ด๋ฒคํŠธ๋กœ ์ถ”๊ฐ€๋œ ํ† ํฐ์„ ๋‚ด๋ ค์ฃผ๊ณ , ์ŠคํŠธ๋ฆผ์ด ๋‹ค ๋๋‚˜๋ฉด ์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ๊ฐ€์ ธ์™€์„œ ์™„๋ฃŒ ์ด๋ฒคํŠธ๋กœ ์ „์ฒด ํ…์ŠคํŠธ๋ฅผ ํ•œ๋ฒˆ ๋” ๋‚ด๋ ค์ฃผ๊ณ  ๋Œ€ํ™” ์ œ๋ชฉ ์—…๋ฐ์ดํŠธ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๋Œ€ํ™” ์ œ๋ชฉ ๋งŒ๋“ค์–ด์„œ ๋Œ€ํ™” ์ œ๋ชฉ ์ด๋ฒคํŠธ ๋ณด๋‚ด์ฃผ๊ณ  ์™„๋ฃŒ ์‹œ์ ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ  ์™„๋ฃŒ ์ด๋ฒคํŠธ๋ฅผ ๋‚ด๋ฆฌ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + ํด๋ผ์ด์–ธํŠธ์˜ SSE ์—ฐ๊ฒฐ์ด ๋Š์–ด์ ธ๋„ ํ•ด๋‹น ์ž‘์—…์€ ๊ณ„์† ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ๋Œ๊ฒŒ๋งŒ ํ•ด๋‘์—ˆ์Šต๋‹ˆ๋‹ค.

์•„๋งˆ ์ €ํฌ๊ฐ€ AI SDK์˜ ํ”„๋ก ํŠธ์—”๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์“ฐ์ง€ ์•Š๊ณ  ๋ณ„๋„๋กœ ์ž์ฒด์ ์œผ๋กœ ์ด๋ฒคํŠธ ๋ชฉ๋ก๊ณผ ์Šคํ‚ค๋งˆ๋ฅผ ์ •ํ•ด์„œ ๊ทธ๊ฑธ๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋งŒ๋“ค์–ด์„œ ํฌ๊ฒŒ ์ŠคํŠธ๋ ˆ์Šค๋ฅผ ๋ชป ๋ฐ›๋Š” ๊ฒƒ์ผ์ง€๋„ ๋ชจ๋ฅด๊ฒ ๋„ค์š”.

1

@nebuletoHaze ์™€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!! ์ œ๊ฐ€ ์•„๋Š” ๊ฒŒ ๋งŽ์ด ์—†๊ธฐ๋Š” ํ•˜์ง€๋งŒ, ํ˜น์‹œ ์–ด๋–ค ์ด์œ ๋กœ ํ”Œ๋žซํผ์„ ๋ณ€๊ฒฝํ•˜์…จ๋Š”์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜๋ˆ ์ฃผ์‹ค ์ˆ˜ ์žˆ์„๊นŒ์š”?

@lavieenbleu๋ธ”๋ฃจ ์ด๊ฒŒ ์„œ๋ฒ„์—์„œ ๋ Œ๋”๋ง๋˜๋Š”์ง€, ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ Œ๋”๋ง๋˜๋Š”์ง€ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฉ˜ํƒˆ ๋ชจ๋ธ๊ณผ Vercel์ด ์•„๋‹Œ ์ธํ”„๋ผ์—์„œ Next.js๋ฅผ ๋ฐฐํฌํ•˜๋Š”๊ฒŒ ๋ณ„๋กœ์—ฌ์„œ ๋ฐ”๊พธ์—ˆ์–ด์š”. ์•„์ง ๋ฒ ํƒ€ ๋‹จ๊ณ„์ง€๋งŒ TanStack Start๋‚˜ ์•„๋‹ˆ๋ฉด React Router v7์˜ ๋ฐฉ์‹์ด ํ›จ์”ฌ ๋‚ซ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

1

NextJS ์ฒ˜์Œ ์จ๋ณด๋Š”๋ฐ, ์ฑ—๋ด‡ UI์ฒ˜๋Ÿผ ์ธํ„ฐ์•กํ‹ฐ๋ธŒํ•œ ์›น์•ฑ์„ ๋งŒ๋“ค๋•Œ ๋„์›€์ด ๋˜๋Š” ๋ถ€๋ถ„์ด ๋ญ”์ง€๋ฅผ ๋ชจ๋ฅด๊ฒ ๋‹ค. ์ฒ˜์Œ์—” SPA + API ์„œ๋ฒ„ ๋งŒ๋“œ๋Š”๊ฒƒ๊ณผ ๋น„๊ตํ•ด, ์ž๋ช…ํ•œ ๋ฐ์ดํ„ฐ ๋ฐ”์ธ๋”ฉ ๋ณด์ผ๋Ÿฌํ”Œ๋ ˆ์ดํŠธ๋ฅผ ์ค„์—ฌ์ค„๊ฑฐ๋ผ ์ƒ๊ฐํ–ˆ๋‹ค. ๊ทผ๋ฐ, ์ˆœ์ˆ˜ SSR๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์—†๋Š”, ํด๋ผ์—์„œ ์ƒํƒœ๋ฅผ ์—…๋ฐ์ดํŠธํ•˜๋Š” ์•ฝ๊ฐ„๋งŒ ๋ณต์žกํ•œ ํ”Œ๋กœ์šฐ์—์„œ๋„ ์ „ํ˜€ ๋„์›€์ด ์•ˆ๋œ๋‹ค.

@bglbgl gwyng ์ผ๋‹จ ๋ Œ๋”๋ง์ด ์–ด๋””์„œ ์ผ์–ด๋‚˜๋Š”์ง€๋ฅผ ๊ฐœ๋ฐœ์ž๊ฐ€ ์‹ ๊ฒฝ ์จ์•ผํ•˜๊ณ  ๊ฑฐ๊ธฐ์— ํด๋ผ์ด์–ธํŠธ์—์„œ์˜ ์ƒํƒœ ์ฒ˜๋ฆฌ๊นŒ์ง€ ์ƒ๊ฐํ•ด์•ผํ•˜๋Š”๊ฒŒ ์ข€ ๋งŽ์ด ์ ‘๊ทผ์ด ์•„์‰ฌ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. React Router v7์ด๋‚˜ TanStack Start ๋“ฑ์„ ๋” ์„ ํ˜ธํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

1

LLM ๋„์›€์ด๋ฉด ๋ชปํ•  ๊ฒƒ๋„ ์—†์„ ๋“ฏ ํ•˜์—ฌ ๋ธ”๋กœ๊ทธ๋ฅผ ์ง์ ‘ ๋งŒ๋“ค๊ณ  ์‹ถ์€๋ฐ, ์Šคํ”„๋ง๋ถ€ํŠธ + ๊ทธ๋ƒฅJS๋กœ ๋งŒ๋“ค์–ด๋„ ๊ดœ์ฐฎ์„์ง€ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. (์‚ฌ์‹ค ์•„๋Š” ๊ฒŒ ๊ทธ๊ฒƒ ๋ฟ์ž…๋‹ˆ๋‹ค..) ํ˜น์‹œ ์กฐ๊ธˆ ๋” ํŽธ๋ฆฌํ•˜๊ณ  ์ข‹์€ ์Šคํƒ์ด ์žˆ์„๊นŒ์š”?

@lavieenbleu๋ธ”๋ฃจ ๊ฐ€๋ฒผ์šด ๊ฐœ์ธ ํ™ˆํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ์Šคํ”„๋ง๋ถ€ํŠธ๊ฐ™์€ ๋„๊ตฌ๋Š” ์ข€ ๊ณผํ•  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์„œ, static site generator๊ฐ™์€๊ฒŒ ์žˆ์–ด๋„ ๊ดœ์ฐฎ์ง€ ์•Š๋‚˜ ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ „ ์˜ˆ์ „์—” ์ด๋Ÿฐ๊ฑธ Next.js + Contentlayer๋กœ ๋งŒ๋“ค์—ˆ์—ˆ๋Š”๋ฐ ์š”์ฆ˜์€ TanStack Start + Content Collections๋กœ ์˜ฎ๊ธด ์ƒํ™ฉ์ด์—์š”. ์ œ ๊ฐœ์ธ ๋ธ”๋กœ๊ทธ ๋“ฑ์˜ ํ™ˆํŽ˜์ด์ง€๋„ ์ด๊ฑธ๋กœ ๋งŒ๋“ค๊นŒ ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1

@bglbgl gwyng ์ „ ๊ทธ๋ž˜๋„ LangChain์œผ๋กœ ๋ฏผ๋“œ๋Š” ๊ฒƒ๋ณด๋‹ค ์••๋„์ ์œผ๋กœ ํŽธํ•œ ๊ฒฝํ—˜์ด๋ผ ์ƒ๊ฐํ•˜๊ณ  ์žˆ๋Š”๋ฐ(Next.js๋Š” ์•„๋‹ˆ๊ณ  SSE๋กœ ๋‚ด๋ ค์ฃผ๋Š” ํ˜•ํƒœ์˜ ๋ฐฑ์—”๋“œ์ž…๋‹ˆ๋‹ค.) ์–ด๋–ค ์ ์ด ์•„์‰ฝ๊ฑฐ๋‚˜ ํž˜๋“ค๋‹ค๊ณ  ๋А๊ปด์ง€๋‚˜์š”??

0