[Fedify] ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ - ํ„ฐ๋ฏธ๋„์ด ์•„๋‹Œ ํ™˜๊ฒฝ์—์„œ๋Š” ์ƒ‰์ƒ์„ ๋นผ๋ณด์ž
ยท
Fedify
0. ํ„ฐ๋ฏธ๋„์ด ์•„๋‹Œ ๊ณณ์—์„œ๋Š” ์ƒ‰์ƒ์„ ๋นผ์•ผํ•˜๋Š” ์ด์œ ๋Š”?์ด์Šˆ ๋งํฌ: https://github.com/fedify-dev/fedify/issues/257PR ๋งํฌ: https://github.com/fedify-dev/fedify/pull/341 ์ด์Šˆ์—์„œ๋Š” ๋จผ์ € ‘Color and TTYs’๋ผ๋Š” ๊ธ€์„ ์ฝ์–ด๋ณด๊ธฐ๋ฅผ ๊ถŒํ•œ๋‹ค. ์ € ๊ธ€์˜ ๋‚ด์šฉ์„ ์š”์•ฝํ•˜์ž๋ฉด, ํ„ฐ๋ฏธ๋„์—์„œ ์ƒ‰์ƒ์ฝ”๋“œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค ๋•Œ, ํ‘œ์ค€์ถœ๋ ฅ์ด TTY(=Terminal)์— ์—ฐ๊ฒฐ๋˜์–ด์žˆ์„ ๋•Œ์—๋งŒ ์ปฌ๋Ÿฌ์ฝ”๋“œ๋ฅผ ์จ์•ผํ•œ๋‹ค๊ณ  ํ•œ๋‹ค๋Š” ๋‚ด์šฉ์ด๋‹ค. ํ„ฐ๋ฏธ๋„์ด ์•„๋‹Œ ๊ณณ์—์„œ๋Š” ์ƒ‰์ƒ์ฝ”๋“œ๊ฐ€ ์ œ๋Œ€๋กœ ์ถœ๋ ฅ๋˜์ง€ ์•Š๊ณ  ๊นจ์ง€๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. Fedify CLI์—์„œ๋Š” Deno๋ฅผ ํ™œ์šฉํ•˜๋Š”๋ฐ, Deno์—์„œ๋Š” ‘Deno.stdout.isTerminal()’ ๋ช…๋ น์–ด๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ„ฐ๋ฏธ๋„์ธ์ง€..
[Fedify] ์ฒซ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ๋ฅผ ํ•ด๋ณด์ž
ยท
Fedify
์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์•„์นด๋ฐ๋ฏธ ๋ฐœ๋Œ€์‹์ด ๋๋‚˜๊ณ , Fedify์— ๊ธฐ์—ฌ๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ๋‹ค์งํ–ˆ๋‹ค. Fedify์˜ Issue ํƒญ์— ๋“ค์–ด๊ฐ€ ๋‚ด๊ฐ€ ์‹œ์ž‘ํ•ด๋ณผ๋งŒํ•œ ์ด์Šˆ๊ฐ€ ์žˆ๋Š”์ง€ ์ฐพ์•„๋ณด์•˜๋Š”๋ฐ, ‘good first issue’ ํƒœ๊ทธ๊ฐ€ ๋ถ™์–ด์žˆ๋Š” ์ด์Šˆ๋“ค์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. ๊ทธ ์ค‘ ๊ดœ์ฐฎ์•„ ๋ณด์ด๋Š” ์ด์Šˆ๋ฅผ ๋ฐœ๊ฒฌํ•ด์„œ ๋Œ“๊ธ€๋กœ ์ด ์ด์Šˆ๋ฅผ ๋งก๊ณ  ์‹ถ๋‹ค๊ณ  ํ–ˆ๋‹ค. ์ด๋ฏธ ์ด ์ด์Šˆ๋ฅผ ๋งก๊ณ  ๊ณ„์‹ ๋ถ„์ด ์žˆ๋‚˜? ํ•˜๋Š” ์ƒ๊ฐ์ด ์ž ์‹œ ๋“ค์—ˆ์ง€๋งŒ, ์ž ์‹œ ํ›„ ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ์ง„ํ–‰ํ•ด๋„ ๋œ๋‹ค๋Š” ๋Œ“๊ธ€์„ ๋‚จ๊ฒจ์ฃผ์…จ๋‹ค. ์ด์ œ ๊ธฐ์—ฌ๋ฅผ ์‹œ์ž‘ํ•ด๋ณด์ž. 1. ๋จผ์ € CONTRIBUTING.md๋ฅผ ์ฝ์–ด๋ณด์ž๋ฐœ๋Œ€์‹์—์„œ ์˜คํ”ˆ์†Œ์Šค ๊ธฐ์—ฌ์ž๋“ค์„ ์œ„ํ•œ ๋ฌธ์„œ๊ฐ€ ์žˆ๋‹ค๋Š” ์‚ฌ์‹ค์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ๋ฐ”๋กœ CONTRIBUTING.md์ธ๋ฐ, ๋“ค์–ด๊ฐ€์ž๋งˆ์ž ์ „๋ถ€ ์˜์–ด๋กœ ๋œ ๋ฌธ์„œ์— ์ž ์‹œ ๊ธด์žฅ์„ ํ•˜๊ธดํ–ˆ์ง€๋งŒ ์–ด๋ ต์ง€ ์•Š๊ฒŒ ์ž‘์„ฑ๋˜์–ด ์žˆ์–ด์„œ..
[Fedify] ํŠœํ† ๋ฆฌ์–ผ์„ ๋”ฐ๋ผํ•˜๋ฉฐ ๋‚˜๋งŒ์˜ ์—ฐํ•ฉ์šฐ์ฃผ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค์ž
ยท
Fedify
์ •๋ง ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ 2025 ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜ ์ฐธ์—ฌํ˜• ํ”„๋กœ์ ํŠธ fedify์˜ ๋ฉ˜ํ‹ฐ๋กœ ์ฐธ์—ฌํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์ฐธ์—ฌ๊ฐ€ ๊ฒฐ์ •๋œ ๋‚ , ๋ฉ˜ํ† ๋‹˜์œผ๋กœ๋ถ€ํ„ฐ fedify์— ๋Œ€ํ•œ ์„ค๋ช…์ด ๋‹ด๊ธด ๋ฉ”์ผ์„ ๋ฐ›์•˜๋‹ค. ์ฒจ๋ถ€๋œ ๋งํฌ์—๋Š” fedify์— ๋Œ€ํ•œ ์„ค๋ช…๊ณผ ํ•จ๊ป˜ fedify๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋งˆ์ดํฌ๋กœ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“œ๋Š” ํŠœํ† ๋ฆฌ์–ผ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค.๐Ÿ”— https://hackers.pub/@hongminhee/2025/fedify-tutorial-ko fedify์— ๋Œ€ํ•œ ์‚ฌ์ „์ง€์‹์ด ๋งŽ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ์ž˜ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์„๊นŒ ๊ฑฑ์ •ํ–ˆ์ง€๋งŒ ์„ค๋ช…์ด ๋งค์šฐ ์ž์„ธํ•˜๊ฒŒ ์จ์ ธ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋ ต์ง€ ์•Š๊ฒŒ ๋”ฐ๋ผ๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ํŠœํ† ๋ฆฌ์–ผ์„ ์ง„ํ–‰ํ•˜๋ฉฐ fedify์™€ ์—ฐํ•ฉ์šฐ์ฃผ ๊ทธ๋ฆฌ๊ณ  ๊ฐœ๋ฐœ์— ํ•„์š”ํ•œ ๋‚ด์šฉ๋“ค์„ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๊ณ , ์ด ์ง€์‹๋“ค์€ ์•ž์œผ๋กœ ์˜คํ”ˆ์†Œ์Šค ์ปจํŠธ๋ฆฌ๋ทฐ์…˜์„ ํ•  ๋•Œ ๋งŽ์€ ๋„..
[Node.js ๊ฐ•์˜ ์ •๋ฆฌ] Call stack, Event Loop, EventEmitter, child_process, cluster, worker_threads ๋“ฑ์— ๊ด€ํ•˜์—ฌ
ยท
Node.js
์–„์ฝ”๋‹˜์˜ '์–„์ฝ”์˜ Node.js (Korean ver.)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%EC%96%84%EC%BD%94-node-js?srsltid=AfmBOopKCXPw7NK1HS79aeI2BufjFmy-iOHOM9eHCl2q_BVo1UNRMURr ์–„์ฝ”์˜ Node.js (Korean ver.) ๊ฐ•์˜ | ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ - ์ธํ”„๋Ÿฐ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ | , ๐Ÿ‡ฐ๐Ÿ‡ท This course is designed for Korean-speaking learners. If you speak English, Japanese, Vietnamese, or any other language, please take twww.inflearn.com 1. ..
[Node.js ๊ฐ•์˜ ์ •๋ฆฌ] ํŒŒ์ผ ์‹œ์Šคํ…œ, TCP/UDP, HTTP, ๋ฒ„ํผ์™€ ์ŠคํŠธ๋ฆผ, ๊ฐ์ข… ๋ชจ๋“ˆ์— ๊ด€ํ•˜์—ฌ
ยท
Node.js
์–„์ฝ”๋‹˜์˜ '์–„์ฝ”์˜ Node.js (Korean ver.)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%EC%96%84%EC%BD%94-node-js?srsltid=AfmBOopKCXPw7NK1HS79aeI2BufjFmy-iOHOM9eHCl2q_BVo1UNRMURr ์–„์ฝ”์˜ Node.js (Korean ver.) ๊ฐ•์˜ | ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ - ์ธํ”„๋Ÿฐ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ | , ๐Ÿ‡ฐ๐Ÿ‡ท This course is designed for Korean-speaking learners. If you speak English, Japanese, Vietnamese, or any other language, please take twww.inflearn.com1. ํŒŒ..
[Node.js ๊ฐ•์˜ ์ •๋ฆฌ] Node.js, REPL, Promise, async/await, Module, Nodemon์— ๊ด€ํ•˜์—ฌ
ยท
Node.js
์–„์ฝ”๋‹˜์˜ '์–„์ฝ”์˜ Node.js (Korean ver.)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%EC%96%84%EC%BD%94-node-js?srsltid=AfmBOopKCXPw7NK1HS79aeI2BufjFmy-iOHOM9eHCl2q_BVo1UNRMURr ์–„์ฝ”์˜ Node.js (Korean ver.) ๊ฐ•์˜ | ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ - ์ธํ”„๋Ÿฐ์–„ํŒํ•œ ์ฝ”๋”ฉ์‚ฌ์ „ | , ๐Ÿ‡ฐ๐Ÿ‡ท This course is designed for Korean-speaking learners. If you speak English, Japanese, Vietnamese, or any other language, please take twww.inflearn.com1. N..
[Next.js ๊ฐ•์˜ ์ •๋ฆฌ] ์„œ๋ฒ„ ์•ก์…˜, Parallel Route, ์ตœ์ ํ™”์— ๊ด€ํ•˜์—ฌ
ยท
Frontend/Next.js
์ด์ •ํ™˜๋‹˜์˜ 'ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs?srsltid=AfmBOoryPUbZjBwZDQne9kDfuiHCFu7VdxmeCNFtMqj4F58vfjIaezUX ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15) ๊ฐ•์˜ | ์ด์ •ํ™˜ Winterlood - ์ธํ”„๋Ÿฐ์ด์ •ํ™˜ Winterlood | , [์ž„๋ฒ ๋”ฉ ์˜์ƒ]ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js | Official Traillerํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(15+)15์‹œ๊ฐ„์˜ ๋ถ„๋Ÿ‰์œผ๋กœ Page Router๋ถ€ํ„ฐ App Router๊นŒ์ง€๐Ÿ’ก Page Router๋ž€?Nex..
[Next.js ๊ฐ•์˜ ์ •๋ฆฌ] App Router์— ๊ด€ํ•˜์—ฌ
ยท
Frontend/Next.js
์ด์ •ํ™˜๋‹˜์˜ 'ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs?srsltid=AfmBOoryPUbZjBwZDQne9kDfuiHCFu7VdxmeCNFtMqj4F58vfjIaezUX ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15) ๊ฐ•์˜ | ์ด์ •ํ™˜ Winterlood - ์ธํ”„๋Ÿฐ์ด์ •ํ™˜ Winterlood | , [์ž„๋ฒ ๋”ฉ ์˜์ƒ]ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js | Official Traillerํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(15+)15์‹œ๊ฐ„์˜ ๋ถ„๋Ÿ‰์œผ๋กœ Page Router๋ถ€ํ„ฐ App Router๊นŒ์ง€๐Ÿ’ก Page Router๋ž€?Nex..
[Next.js ๊ฐ•์˜ ์ •๋ฆฌ] Next.js์™€ Page Router์— ๊ด€ํ•˜์—ฌ
ยท
Frontend/Next.js
์ด์ •ํ™˜๋‹˜์˜ 'ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15)' ๊ฐ•์˜๋ฅผ ๋“ฃ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.๊ฐ•์˜ ๋งํฌ: https://www.inflearn.com/course/%ED%95%9C%EC%9E%85-%ED%81%AC%EA%B8%B0-nextjs?srsltid=AfmBOoryPUbZjBwZDQne9kDfuiHCFu7VdxmeCNFtMqj4F58vfjIaezUX ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(v15) ๊ฐ•์˜ | ์ด์ •ํ™˜ Winterlood - ์ธํ”„๋Ÿฐ์ด์ •ํ™˜ Winterlood | , [์ž„๋ฒ ๋”ฉ ์˜์ƒ]ํ•œ ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js | Official Traillerํ•œ์ž… ํฌ๊ธฐ๋กœ ์ž˜๋ผ๋จน๋Š” Next.js(15+)15์‹œ๊ฐ„์˜ ๋ถ„๋Ÿ‰์œผ๋กœ Page Router๋ถ€ํ„ฐ App Router๊นŒ์ง€๐Ÿ’ก Page Router๋ž€?Nex..
useRef๋ฅผ ํ™œ์šฉํ•˜์—ฌ stale closure๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž
ยท
Intern
์ฃผ์˜: ์ •ํ™•ํ•˜์ง€ ์•Š์€ ์„œ์ˆ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ A์—์„œ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด recoil state๊ฐ€ ๋ณ€๊ฒฝ๋˜๊ณ , Hook B์˜ useEffect์˜ ์˜์กด์„ฑ ๋ฐฐ์—ด์— ํ•ด๋‹น recoil state๊ฐ€ ์žˆ์–ด์„œ Hook B์—์„œ ๋™์ž‘์ด ์ˆ˜ํ–‰๋˜๊ฒŒ ์„ค๊ณ„๋ฅผ ํ–ˆ์—ˆ๋‹ค.ํ•˜์ง€๋งŒ Hook B์—์„œ recoil state์˜ ๋ณ€๊ฒฝ์„ ์ž˜ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ณ , ๋”ฐ๋ผ์„œ ์˜๋„์น˜ ์•Š๊ฒŒ ์ž‘๋™์ด ๋˜๋Š” ์ƒํ™ฉ์ด ๋ฒŒ์–ด์กŒ๋‹ค.1. ์™œ recoil state์˜ ๋ณ€๊ฒฝ์„ ๊ฐ์ง€ํ•˜์ง€ ๋ชปํ–ˆ์„๊นŒ? // Component A const [something, setSomething] = useRecoilState(somethingState); const handleItemClick = (e: React.MouseEvent) => { set..