devdong

Welcome to devdong โ€” a cozy corner where developers share stories over a cup of coffee. โ˜•๐Ÿ’ป

CSRF์™€ XSS์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ๊ณผ ๋ฐฉ์–ด ์ „๋žต
์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ณด์•ˆ์—์„œ ๊ฐ€์žฅ ์ž์ฃผ ์–ธ๊ธ‰๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ณต๊ฒฉ ์œ ํ˜•์ธ CSRF์™€ XSS. ๋‘˜ ๋‹ค ์‹ฌ๊ฐํ•œ ๋ณด์•ˆ ์œ„ํ˜‘์ด์ง€๋งŒ, ๊ณต๊ฒฉ ๋ฐฉ์‹๊ณผ ๋ฐฉ์–ด ์ „๋žต์ด ์™„์ „ํžˆ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ๋‘ ๊ณต๊ฒฉ์˜ ํ•ต์‹ฌ ์ฐจ์ด์ ์„ ๋ช…ํ™•ํžˆ ์ดํ•ดํ•˜๊ณ , ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ์–ด ๊ธฐ๋ฒ•๋“ค์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด CSRF์™€ XSS๋ฅผ ํ˜ผ๋™ํ•˜๊ฑฐ๋‚˜ ๋น„์Šทํ•œ ๊ณต๊ฒฉ์œผ๋กœ ์—ฌ๊ธฐ๊ณค ํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋‘ ๊ณต๊ฒฉ์€ ๊ทผ๋ณธ์ ์œผ๋กœ ๋‹ค๋ฅธ ์ทจ์•ฝ์ ์„ ๋…ธ๋ฆฌ๋ฉฐ, ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฐฉ์–ด์ฑ…์ด ํ•„์š”ํ•ด์š”. ์ด ์ฐจ์ด์ ์„ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ํšจ๊ณผ์ ์ธ ๋ณด์•ˆ ์ „๋žต์˜ ์ฒซ ๊ฑธ์Œ์ž…๋‹ˆ๋‹ค.
ํฌ๋กฌ HSTS(Strict-Transport-Security) ํ•ด์ œ ๋ฐฉ๋ฒ• ์•Œ์•„๋ณด๊ธฐ
ํฌ๋กฌ์—์„œ HSTS ์„ค์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์•Œ์•„๋ณด์„ธ์š”. '์—ฐ๊ฒฐ์ด ๋น„๊ณต๊ฐœ' ์˜ค๋ฅ˜ ํ•ด๊ฒฐ ๋ฐ ๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํŒ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€๋” ๋กœ์ปฌ ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์‚ฌ์ดํŠธ๋ฅผ ๋””๋ฒ„๊น…ํ•  ๋•Œ, '์—ฐ๊ฒฐ์ด ๋น„๊ณต๊ฐœ๋กœ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค'๋ผ๋Š” ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ์ ‘์†์ด ์ฐจ๋‹จ๋˜๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณด์…จ์„ ๊ฒ๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ์˜ ์ฃผ๋ฒ” ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ HSTS(HTTP Strict Transport Security) ์ •์ฑ…์ธ๋ฐ์š”. ๋ณด์•ˆ์„ ์œ„ํ•ด ๊ผญ ํ•„์š”ํ•œ ๊ธฐ๋Šฅ์ด์ง€๋งŒ, ๊ฐœ๋ฐœ ๊ณผ์ •์—์„œ๋Š” ์ž ์‹œ ๊บผ๋‘์–ด์•ผ ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” HSTS๊ฐ€ ๋ฌด์—‡์ธ์ง€ ๊ฐ„๋‹จํžˆ ์•Œ์•„๋ณด๊ณ , ํฌ๋กฌ์—์„œ ์ด ์„ค์ •์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋Š” ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์„ ๋‹จ๊ณ„๋ณ„๋กœ ์‰ฝ๊ณ  ๋ช…ํ™•ํ•˜๊ฒŒ ์•ˆ๋‚ดํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋ฅผ ํ†ตํ•ด HSTS ๊ด€๋ จ ์˜ค๋ฅ˜๋ฅผ ๋ง๋”ํžˆ ํ•ด๊ฒฐํ•˜๊ณ  ๊ฐœ๋ฐœ ํšจ์œจ์„ ๋†’์—ฌ๋ณด์„ธ์š”!
๋ชจ๋‹ฌ(Modal)๊ณผ ๋‹ค์ด์–ผ๋กœ๊ทธ(Dialog) ์ฐจ์ด์  ์™„๋ฒฝํ•œ ์ •๋ฆฌ
์›น ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด '๋ชจ๋‹ฌ'๊ณผ '๋‹ค์ด์–ผ๋กœ๊ทธ'๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ž์ฃผ ์ ‘ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ด ๋‘˜์„ ๋น„์Šทํ•˜๊ฑฐ๋‚˜ ๊ฐ™์€ ์˜๋ฏธ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ๋„ ํ•˜์ฃ . ์‹ค์ œ๋กœ ์• ํ”Œ์—์„œ๋Š” ๋ชจ๋‹ฌ, ๊ตฌ๊ธ€์—์„œ๋Š” ๋‹ค์ด์–ผ๋กœ๊ทธ๋ผ๋Š” ์šฉ์–ด๋ฅผ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜๋ฉด์„œ ํ˜ผ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„์กŒ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด ๋‘˜์€ ์—„์—ฐํžˆ ๋‹ค๋ฅธ ๋ชฉ์ ๊ณผ ์ƒํ˜ธ์ž‘์šฉ ๋ฐฉ์‹์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ๋ชจ๋‹ฌ๊ณผ ๋‹ค์ด์–ผ๋กœ๊ทธ์˜ ์ •ํ™•ํ•œ ์ •์˜๋ถ€ํ„ฐ ์ฃผ์š” ์ฐจ์ด์ , ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ ์–ด๋–ค ์ƒํ™ฉ์— ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ์ •๋ฆฌํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ๋๊นŒ์ง€ ์ฝ์œผ์‹œ๋ฉด ๋‘ UI ์ปดํฌ๋„ŒํŠธ๋ฅผ ์–ธ์ œ, ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•ด์•ผ ํ• ์ง€ ์ž์‹ ๊ฐ์„ ์–ป๊ฒŒ ๋˜์‹ค ๊ฑฐ์˜ˆ์š”!
React Native๋Š” ๋งํ–ˆ๋‹ค? ์ง€์› ์ค‘๋‹จ์ด๋‹ค? ์ „ํ˜€ ์•„๋‹™๋‹ˆ๋‹ค.
์•„์ง๋„ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด React Native๊ฐ€ ์ง€์› ์ค‘๋‹จ ๋˜์—ˆ๋‹ค๊ณ  ์•Œ๊ณ  ์žˆ๋Š” ์‚ฌ๋žŒ๋“ค์ด ์ข…์ข… ๋ณด์ž…๋‹ˆ๋‹ค. ํ˜น์€ ์ง€์› ์ค‘๋‹จ ๋ฐ ๋งํ•œ ๊ธฐ์ˆ  ์•„๋‹ˆ๋ƒ๊ณ  ์ƒ๊ฐํ•˜๋Š” ์‚ฌ๋žŒ๋“ค๋„ ๊ฐ„ํ˜น ๋ณด์—ฌ์š”. ์ด๋Š” ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฆฌ์•กํŠธ ๋„ค์ดํ‹ฐ๋ธŒ๋Š” ๊พธ์ค€ํžˆ ์—…๋ฐ์ดํŠธ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
2025 ์ด์ œ jQuery๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋˜๋Š” ์ด์œ 
2006๋…„ ์กด ๋ ˆ์‹์ด "write less, do more"๋ผ๋Š” ๋ชจํ† ์™€ ํ•จ๊ป˜ jQuery๋ฅผ ์„ธ์ƒ์— ์„ ๋ณด์˜€์„ ๋•Œ, ์›น ๊ฐœ๋ฐœ์€ ์ƒˆ๋กœ์šด ์‹œ๋Œ€๋ฅผ ๋งž์ดํ–ˆ์Šต๋‹ˆ๋‹ค. ํ•œ๋•Œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ์˜ 65%๊ฐ€ ์‚ฌ์šฉํ•  ์ •๋„๋กœ jQuery๋Š” ์›น ๊ฐœ๋ฐœ์˜ ํ•„์ˆ˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ž๋ฆฌ ์žก์•˜์ฃ . ๋ณต์žกํ•œ DOM ์กฐ์ž‘๊ณผ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ, ์• ๋‹ˆ๋ฉ”์ด์…˜, Ajax ์š”์ฒญ๊นŒ์ง€ ๊ฐ„๊ฒฐํ•œ ์ฝ”๋“œ๋กœ ํ•ด๊ฒฐํ•ด์ฃผ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์ˆ ์€ ๋Š์ž„์—†์ด ๋ฐœ์ „ํ•˜๊ณ , ์›น ๊ฐœ๋ฐœ ํ™˜๊ฒฝ๋„ ํฌ๊ฒŒ ๋ณ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ‘œ์ค€๊ณผ React, Vue ๊ฐ™์€ ๊ฐ•๋ ฅํ•œ ํ”„๋ ˆ์ž„์›Œํฌ๊ฐ€ ๋“ฑ์žฅํ•˜๋ฉด์„œ jQuery์˜ ์ž…์ง€๋Š” ์˜ˆ์ „ ๊ฐ™์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” jQuery๊ฐ€ ๊ณผ๊ฑฐ์— ์–ด๋–ค ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๊ณ , ์™œ ์˜ค๋Š˜๋‚  ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ์—๋Š” ๋” ์ด์ƒ ์ตœ์„ ์˜ ์„ ํƒ์ด ์•„๋‹Œ์ง€ ๊ทธ ์ด์œ ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
jQuery ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์„ ๋ฐฉ์ง€ํ•˜๋Š” 4๊ฐ€์ง€ ๋ฐฉ๋ฒ•
์›น ๊ฐœ๋ฐœ์„ ํ•˜๋‹ค ๋ณด๋ฉด ํŠน์ • ์š”์†Œ๋ฅผ ํด๋ฆญํ–ˆ๋Š”๋ฐ, ์›ํ•˜์ง€ ์•Š์•˜๋˜ ๋ถ€๋ชจ ์š”์†Œ์˜ ์ด๋ฒคํŠธ๊นŒ์ง€ ํ•จ๊ป˜ ์‹คํ–‰๋˜๋Š” ๊ฒฝํ—˜์„ ํ•ด๋ณด์…จ์„ ๊ฒ๋‹ˆ๋‹ค. ์ด๋Š” '์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง(Event Bubbling)'์ด๋ผ๋Š” ํ˜„์ƒ ๋•Œ๋ฌธ์ธ๋ฐ์š”. ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์€ ์ž˜ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•˜๋ฉด ์œ ์šฉํ•˜์ง€๋งŒ, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์–˜๊ธฐ์น˜ ์•Š์€ ๋™์ž‘์„ ์œ ๋ฐœํ•˜์—ฌ ์ฝ”๋“œ๋ฅผ ๋ณต์žกํ•˜๊ฒŒ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” jQuery์—์„œ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์ด ๋ฌด์—‡์ธ์ง€ ์•Œ์•„๋ณด๊ณ , ์ด๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ์ œ์–ดํ•˜๋Š” ๋„ค ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์ž์„ธํžˆ ์„ค๋ช…ํ•ด ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์„ ํ†ตํ•ด ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ดํ•ด๋ฅผ ๋†’์ด๊ณ , ๋” ๊น”๋”ํ•˜๊ณ  ์˜ˆ์ธก ๊ฐ€๋Šฅํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์„ ์–ป์œผ์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค.
Page Router vs App Router vs React Server Components
React ์ƒํƒœ๊ณ„๊ฐ€ ์ง„ํ™”ํ•จ์— ๋”ฐ๋ผ Next.js๋Š” ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ๋‹ค์–‘ํ•œ ๋ Œ๋”๋ง ์˜ต์…˜์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ NextJS์˜ Page Router SSR(Server Side Rendering)๊ณผ React Server Components(RSC)๊ฐ€ ์žˆ์ฃ . ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ „ํ†ต์ ์ธ Next.js Page Router ๊ธฐ๋ฐ˜์˜ SSR๊ณผ Next.js App Router ๊ธฐ๋ฐ˜์˜ SSR, ๊ทธ๋ฆฌ๊ณ  React Server Components์˜ ์ฐจ์ด์ ์„ ์‚ดํŽด๋ด…์‹œ๋‹ค. ---
RAG vs ํŒŒ์ธํŠœ๋‹: ๋‚ด๊ฒŒ ๋งž๋Š” LLM ์ตœ์ ํ™” ์ „๋žต์€?
LLM์˜ ํ•œ๊ณ„๋ฅผ ๋„˜์–ด ์ตœ๊ณ ์˜ ์„ฑ๋Šฅ์„ ์ด๋Œ์–ด๋‚ด๋Š” RAG์™€ ํŒŒ์ธํŠœ๋‹! ๋‘ ๊ธฐ์ˆ ์˜ ์ฐจ์ด์ ๊ณผ ์žฅ๋‹จ์ , ๋‚ด๊ฒŒ ๋งž๋Š” ์ตœ์ ํ™” ์ „๋žต์„ ์„ ํƒํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด์„ธ์š”. ChatGPT์™€ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ์–ธ์–ด ๋ชจ๋ธ(LLM)์˜ ๋“ฑ์žฅ์€ ์šฐ๋ฆฌ์—๊ฒŒ ๋†€๋ผ์šด ๊ฐ€๋Šฅ์„ฑ์„ ๋ณด์—ฌ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ LLM์ด ๋งŒ๋Šฅ์€ ์•„๋‹ˆ์ฃ . ์ตœ์‹  ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•˜๊ฑฐ๋‚˜ ํŠน์ • ์ „๋ฌธ ๋ถ„์•ผ์— ๋Œ€ํ•œ ์ง€์‹์ด ์–•์•„ ๋ถ€์ •ํ™•ํ•œ ๋‹ต๋ณ€์„ ๋‚ด๋†“๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”๋กœ ์ด ์ง€์ ์—์„œ LLM์˜ ํ•œ๊ณ„๋ฅผ ๋ณด์™„ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๊ทน๋Œ€ํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๋‘ ๊ฐ€์ง€ ํ•ต์‹ฌ ๊ธฐ์ˆ , \\RAG(๊ฒ€์ƒ‰ ์ฆ๊ฐ• ์ƒ์„ฑ)\\์™€ \\ํŒŒ์ธํŠœ๋‹(Fine-tuning)\\์ด ๋“ฑ์žฅํ•ฉ๋‹ˆ๋‹ค. RAG์™€ ํŒŒ์ธํŠœ๋‹์€ ์ข…์ข… ํ•จ๊ป˜ ์–ธ๊ธ‰๋˜์ง€๋งŒ, ์‚ฌ์‹ค์€ ์„œ๋กœ ๋‹ค๋ฅธ ๋ชฉ์ ๊ณผ ๋ฐฉ์‹์„ ๊ฐ€์ง„ ๊ธฐ์ˆ ์ž…๋‹ˆ๋‹ค. RAG๋Š” LLM ์™ธ๋ถ€์˜ ์ตœ์‹  ์ •๋ณด๋ฅผ '๊ฒ€์ƒ‰'ํ•ด์„œ ๋‹ต๋ณ€์˜ ๊ทผ๊ฑฐ๋กœ ํ™œ์šฉํ•˜๋Š” ์•„ํ‚คํ…์ฒ˜์— ๊ฐ€๊น๊ณ , ํŒŒ์ธํŠœ๋‹์€ ํŠน์ • ๋ฐ์ดํ„ฐ์…‹์„ LLM์— ์ถ”๊ฐ€๋กœ ํ•™์Šต์‹œ์ผœ ๋ชจ๋ธ ์ž์ฒด๋ฅผ '๋ณ€ํ™”'์‹œํ‚ค๋Š” ํ›ˆ๋ จ ๋ฐฉ์‹์ด์ฃ . ๋งˆ์น˜ ์˜คํ”ˆ๋ถ ์‹œํ—˜(RAG)๊ณผ ํŠน์ • ๊ณผ๋ชฉ์„ ๊นŠ๊ฒŒ ํŒŒ๊ณ ๋“œ๋Š” ์‹ฌํ™” ํ•™์Šต(ํŒŒ์ธํŠœ๋‹)์— ๋น„์œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” RAG์™€ ํŒŒ์ธํŠœ๋‹์˜ ์ž‘๋™ ์›๋ฆฌ๋ถ€ํ„ฐ ๊ฐ๊ฐ์˜ ์žฅ๋‹จ์ , ๊ทธ๋ฆฌ๊ณ  ์–ธ์ œ ์–ด๋–ค ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š”์ง€ ๋ช…ํ™•ํ•˜๊ฒŒ ๋น„๊ต ๋ถ„์„ํ•ด ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๋” ๋‚˜์•„๊ฐ€ ๋‘ ๊ธฐ์ˆ ์„ ํ•จ๊ป˜ ์‚ฌ์šฉํ•˜์—ฌ ์‹œ๋„ˆ์ง€๋ฅผ ๋‚ด๋Š” ๋ฐฉ๋ฒ•๊นŒ์ง€ ์‚ดํŽด๋ณด๋ฉฐ, ์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ์ ํŠธ์— ๊ฐ€์žฅ ์ ํ•ฉํ•œ LLM ์ตœ์ ํ™” ์ „๋žต์„ ์ฐพ๋Š” ๋ฐ ๋„์›€์„ ๋“œ๋ฆด ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹ ์™„๋ฒฝ ๊ฐ€์ด๋“œ
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์˜ ํ•ต์‹ฌ ๊ฐœ๋…๋ถ€ํ„ฐ ์‹ค์ „ ํ™œ์šฉ๊นŒ์ง€! ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์ ์ธ ์ƒ์† ๊ตฌ์กฐ์™€ prototype, proto ์ฐจ์ด์ ์„ ์ฝ”๋“œ ์˜ˆ์ œ๋กœ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋‹ค๋ฃจ๋Š” ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ดํ•ดํ•ด์•ผ ํ•  ๊ฐœ๋… ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์ž…๋‹ˆ๋‹ค. ์ด ๋ฉ”์ปค๋‹ˆ์ฆ˜์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํ•ต์‹ฌ์ด๋ฉฐ, ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์„ฑ๊ณผ ๋ฉ”๋ชจ๋ฆฌ ํšจ์œจ์„ฑ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์–ด์š”. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ES6 ํด๋ž˜์Šค ๋ฌธ๋ฒ•์— ์ต์ˆ™ํ•ด์ง€๋ฉด์„œ ํ”„๋กœํ† ํƒ€์ž…์˜ ์ค‘์š”์„ฑ์„ ๊ฐ„๊ณผํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํด๋ž˜์Šค ๋ฌธ๋ฒ•๋„ ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ํ”„๋กœํ† ํƒ€์ž…์„ ํ™œ์šฉํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋™์ž‘ ์›๋ฆฌ๋ฅผ ๋” ๊นŠ์ด ์žˆ๊ฒŒ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ์–ด์š”. ์ด ๊ธ€์—์„œ๋Š” ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹์˜ ๊ธฐ๋ณธ ๊ฐœ๋…๋ถ€ํ„ฐ ์‹ค์ œ ํ™œ์šฉ ๋ฐฉ๋ฒ•๊นŒ์ง€, ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์ ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ๋“ค์„ ๋‹ค๋ค„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…๋“œ๋ฆด ํ…Œ๋‹ˆ, ๋๊นŒ์ง€ ๋”ฐ๋ผ์˜ค์‹œ๋ฉด ํ”„๋กœํ† ํƒ€์ž… ์ฒด์ด๋‹ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฑฐ์˜ˆ์š”!
๋งฅ ํ„ฐ๋ฏธ๋„ ๋ช…๋ น์–ด ์™„๋ฒฝ ๊ฐ€์ด๋“œ
๋งฅ ํ„ฐ๋ฏธ๋„ ๊ธฐ๋ณธ ๋ช…๋ น์–ด๋ถ€ํ„ฐ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ๊นŒ์ง€! pwd, ls, cd ๋“ฑ ํ•„์ˆ˜ ์ปค๋งจ๋“œ์™€ ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ์“ธ ์ˆ˜ ์žˆ๋Š” ํŒ๋“ค์„ ์ดˆ๋ณด์ž๋„ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๋จผ์ € ๋งˆ์ฃผํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ์ค‘ ํ•˜๋‚˜๊ฐ€ ๋ฐ”๋กœ ํ„ฐ๋ฏธ๋„์ž…๋‹ˆ๋‹ค. ๊ฒ€์€ ํ™”๋ฉด์— ํ•˜์–€ ๊ธ€์ž๋งŒ ๊นœ๋นก์ด๋Š” ๋ชจ์Šต์„ ๋ณด๋ฉด ๋ง‰๋ง‰ํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ํ„ฐ๋ฏธ๋„์€ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ต์ง€ ์•Š์œผ๋ฉฐ, ์˜คํžˆ๋ ค ๊ฐœ๋ฐœ ์ž‘์—…์„ ํ›จ์”ฌ ํšจ์œจ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ์ž…๋‹ˆ๋‹ค. ํ„ฐ๋ฏธ๋„(Terminal)์€ ์ปดํ“จํ„ฐ์™€ ์‚ฌ์šฉ์ž ๊ฐ„ ์†Œํ†ต์„ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์˜ˆ์š”. ๋งˆ์šฐ์Šค ๋Œ€์‹  ํ‚ค๋ณด๋“œ๋งŒ์œผ๋กœ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์„œ, ์ฝ”๋”ฉ์„ ํ•˜์ง€ ์•Š๋”๋ผ๋„ ์œ ์šฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋งฅ์˜ ํ„ฐ๋ฏธ๋„์€ ์œ ๋‹‰์Šค ๊ณ„์—ด ์šด์˜์ฒด์ œ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฆฌ๋ˆ…์Šค๋‚˜ ๋‹ค๋ฅธ ์œ ๋‹‰์Šค ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์™€ ๋งค์šฐ ์œ ์‚ฌํ•ด์š”. CLI(Command Line Interface)์™€ GUI(Graphic User Interface)์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๋ฉด ํ„ฐ๋ฏธ๋„์˜ ์žฅ์ ์„ ๋” ์ž˜ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. GUI๋Š” ์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ์‚ฌ์šฉํ•˜๋Š” ๋งˆ์šฐ์Šค ํด๋ฆญ ๋ฐฉ์‹์ด๊ณ , CLI๋Š” ํ„ฐ๋ฏธ๋„์—์„œ ํ…์ŠคํŠธ ๋ช…๋ น์–ด๋กœ ์ปดํ“จํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ๋ฐฉ์‹์ด์—์š”. CLI๋Š” ์ฒ˜์Œ์—” ์–ด์ƒ‰ํ•˜์ง€๋งŒ, ์ต์ˆ™ํ•ด์ง€๋ฉด ํ›จ์”ฌ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•œ ์ž‘์—…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ฌผ์Œํ‘œ(?) ๋ฌธ๋ฒ• ์ด์ •๋ฆฌ: 3๊ฐ€์ง€ ์‚ฌ์šฉ๋ฒ• ์™„์ „ ์ •๋ณต
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋ฌผ์Œํ‘œ(?) ์‚ฌ์šฉ๋ฒ•์„ ์ด์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž, ์˜ต์…”๋„ ์ฒด์ด๋‹, ๋„๋ฆฌ์‰ฌ ์ฝœ๋ ˆ์‹ฑ์˜ ๊ฐœ๋…๊ณผ ์‹ค๋ฌด ์˜ˆ์ œ๋ฅผ ํ†ตํ•ด ์ฝ”๋“œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ณ  ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ์„ธ์š”. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋“œ๋ฅผ ์งœ๋‹ค ๋ณด๋ฉด ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋“ฑ์žฅํ•˜๋Š” ๋ฌผ์Œํ‘œ(?) ๋•Œ๋ฌธ์— ๊ณ ๊ฐœ๋ฅผ ๊ฐธ์›ƒํ•œ ๊ฒฝํ—˜, ๋‹ค๋“ค ํ•œ ๋ฒˆ์ฏค ์žˆ์œผ์‹ค ๊ฑฐ์˜ˆ์š”. if๋ฌธ๊ณผ ๋น„์Šทํ•ด ๋ณด์ด๊ธฐ๋„ ํ•˜๊ณ , ๊ฐ์ฒด ์†์„ฑ์— ๋ถ™์–ด ์žˆ๊ธฐ๋„ ํ•˜๊ณ , ์—ฐ์‚ฐ์ž ์‚ฌ์ด์— ๋œฌ๊ธˆ์—†์ด ๋‚˜ํƒ€๋‚˜๊ธฐ๋„ ํ•˜์ฃ . ์ด ๋ฌผ์Œํ‘œ๋“ค์€ ์‚ฌ์‹ค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ํ›จ์”ฌ ๋” ๊ฐ„๊ฒฐํ•˜๊ณ  ์šฐ์•„ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์•„์ฃผ ์œ ์šฉํ•œ ๋ฌธ๋ฒ•์  ์žฅ์น˜์ž…๋‹ˆ๋‹ค. ํŠนํžˆ ์‹ค๋ฌด์—์„œ๋Š” ๋ฐ˜๋ณต์ ์ธ ์ฝ”๋“œ๋ฅผ ์ค„์—ฌ์ฃผ๊ณ  ์˜ˆ์™ธ ์ƒํ™ฉ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ์ •๋ง ๋งŽ์ด ์‚ฌ์šฉ๋ผ์š”. ์ด๋ฒˆ ํฌ์ŠคํŠธ์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ ์•Œ์•„์•ผ ํ•  ๋ฌผ์Œํ‘œ(?)์˜ ์„ธ ๊ฐ€์ง€ ์šฉ๋ฒ•์ธ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž, ์˜ต์…”๋„ ์ฒด์ด๋‹, ๊ทธ๋ฆฌ๊ณ  ๋„๋ฆฌ์‰ฌ ์ฝœ๋ ˆ์‹ฑ์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ ๋ฌธ๋ฒ•์ด ์™œ ํ•„์š”ํ•œ์ง€, ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ ์ฝ”๋“œ์—์„œ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๋ช…ํ™•ํ•œ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•ด ๋“œ๋ฆด๊ฒŒ์š”. ์ด ๊ธ€์„ ๋๊นŒ์ง€ ์ฝ์œผ์‹œ๋ฉด ๋” ์ด์ƒ ๋ฌผ์Œํ‘œ๋ฅผ ๋‘๋ ค์›Œํ•˜์ง€ ์•Š๊ณ  ์ž์œ ์ž์žฌ๋กœ ํ™œ์šฉํ•˜๋Š” ์ž์‹ ์„ ๋ฐœ๊ฒฌํ•˜๊ฒŒ ๋  ๊ฒ๋‹ˆ๋‹ค!
Claude.md๋กœ ๋”์šฑ ์Šค๋งˆํŠธํ•˜๊ฒŒ claude๋ฅผ ์จ๋ณด์ž !
๊ฐœ๋ฐœ ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ๋งˆ๋‹ค ๋™์ผํ•œ ํŒจํ„ด๊ณผ ๊ทœ์น™์„ Claude์—๊ฒŒ ๋ฐ˜๋ณต ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์— ์ง€์น˜์ง€ ์•Š๋‚˜์š”? Claude Code์™€ claude.md ํŒŒ์ผ์„ ํ™œ์šฉํ•˜๋ฉด ์ด๋Ÿฐ ๋ฒˆ๊ฑฐ๋กœ์›€์„ ์™„์ „ํžˆ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” claude.md๋ฅผ ํ†ตํ•ด AI ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํšจ์œจ์„ฑ์„ ๊ทน๋Œ€ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‹ค์ „ ์˜ˆ์‹œ์™€ ํ•จ๊ป˜ ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. Claude Code๋Š” ๋‹จ์ˆœํ•œ AI ์ฝ”๋”ฉ ๋„๊ตฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ์˜ ๋งฅ๋ฝ์„ ์ดํ•ดํ•˜๊ณ , ํŒ€์˜ ๊ฐœ๋ฐœ ๊ทœ์น™์„ ํ•™์Šตํ•˜๋ฉฐ, ์ผ๊ด€๋œ ์ฝ”๋”ฉ ์Šคํƒ€์ผ์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ํŽ˜์–ด ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒŒํŠธ๋„ˆ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ๋ชจ๋“  ๊ฒƒ์˜ ํ•ต์‹ฌ์— claude.md ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค.