์ตœ๊ทผ ์ž‘์„ฑํ•œ ๊ธ€
thumbnail
์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด๋””์ž์ธ ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด

์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ, ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰์œ„ ํŒจํ„ด์ด์—์š”. ์ด ํŒจํ„ด์€ ์ดํ•ด๊ฐ€ ์‰ฝ๊ณ  ๊ตฌ์กฐ๋„ ๋‹จ์ˆœํ•ด์„œ ๊ธ€์ด ๋งŽ์ด ์งง์„ ๊ฒƒ ๊ฐ™์•„์š”. ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด ๊ตฌ์กฐ ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด์€ Handler, ConcreteHandler, Request ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด๋˜์š”. ๊ฐ ํด๋ž˜์Šค์˜ ์—ญํ• ์„ ์‚ดํŽด๋ด์š”. Handler (์ถ”์ƒ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค) ์—ญํ• : ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์š”. ๋‹ค์Œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜๋Š” setNext ๋ฉ”์„œ๋“œ, ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” handle ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์š”. ConcreteHandlerX ์—ญํ• : Handler๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌ์ƒ ํด๋ž˜์Šค์—์š”. ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ฒ˜๋ฆฌํ•˜๊ณ  ์•„๋‹ˆ๋ฉด next.handle(request)๋กœ ๋„˜๊ฒจ์š”. Request ์—ญํ• : ์ฒ˜๋ฆฌํ•  ์š”์ฒญ ๊ฐ์ฒด์—์š”. handler๋“ค์ด ์ด request๋ฅผ ๋ณด๊ณ  ์ฒ˜๋ฆฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๊ฑฐ์—์š”. ์œ„ ๊ทธ๋ฆผ์€ Client์—์„œ request๋ฅผ Handler ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ์š”์ฒญํ•  ๊ฒฝ์šฐ ์ฒ˜๋ฆฌ ๋˜๋Š” Flow Chart์—์š”. ๋˜๊ฒŒ ์‰ฝ์ฃ ? ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด ์˜ˆ์‹œ ์ด๋ฉ”์ผ ๋ถ„๋ฅ˜ ๊ธฐ๋Šฅ์„ ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•˜๋Š” ์˜ˆ์‹œ๋ฅผ ๋ณด์—ฌ์ฃผ๋ ค๊ณ  ํ•ด์š”. ํ•ธ๋“ค๋Ÿฌ๊ฐ€ ์ŠคํŒธ, ํŒฌ, ๋ฒ•์  ๋ฉ”์ผ์„ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š”๋ฐ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋ณ„๋„์˜ ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ „๋ฌธ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋งŒ๋“ค๊ฑฐ๊ณ , ์ฒด์ธ์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์„ ๋ณด์—ฌ์ค„ ๊ฑฐ์—์š”. // ์ด๋ฉ”์ผ ์š”์ฒญ ๊ฐ์ฒด class Email { constructor(public subject: string, public body: string) {} } // ์ถ”์ƒ H...
2025-11-21
0
0
5
thumbnail
๋””์ž์ธ ํŒจํ„ด๋นŒ๋” ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ๋นŒ๋” ํŒจํ„ด

๋นŒ๋” ํŒจํ„ด(Builder Pattern) ๋นŒ๋” ํŒจํ„ด์€ ๋ณต์žกํ•˜๊ฒŒ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ ๋Š” ๊ฐ์ฒด ์ƒ์„ฑ ๊ณผ์ •์„ ์บก์Аํ™”ํ•˜๊ณ  ์‹ถ์„๋•Œ ์“ฐ๋Š” ์ƒ์„ฑ ํŒจํ„ด์ด์—์š”. ๊ฐ์ฒด ์ƒ์„ฑ ๋กœ์ง์ด ๋ณต์žกํ•œ ๊ฒฝ์šฐ๋‚˜ ๋™์ผํ•œ ๊ตฌ์กฐ์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ์„ค์ •์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ ์œ ์šฉํ•ด์š”. SQL์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒฝ์šฐ, ํ”„๋ก ํŠธ์—”๋“œ๋Š” zod๋ผ๋Š” ํƒ€์ž… ๊ฒ€์ฆ์„ ๋งŒ๋“œ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ๋งŽ์ด ์‚ฌ์šฉ๋˜์š”. ๋นŒ๋” ํŒจํ„ด ๊ตฌ์กฐ (Director ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋”ํŒจํ„ด) Director ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜๋Š” ๋นŒ๋” ํŒจํ„ด์€ ๋ณต์žกํ•œ ์ƒ์„ฑ ๊ณผ์ •์„ ์ œ์–ดํ•˜๋Š” Director, ์ œํ’ˆ ์ƒ์„ฑ์— ํ•„์š”ํ•œ ๋ฐฉ๋ฒ•์„ ์ถ”์ƒํ™”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์ธ Builder, Builder ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ConcreteBuilder, ๊ทธ๋ฆฌ๊ณ  ๊ฒฐ๊ณผ๋ฌผ์ธ Product๋กœ ๊ตฌ์„ฑ๋˜์š”. Director ์—ญํ• : Builder๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด ์ƒ์„ฑ ์ˆœ์„œ์™€ ๊ณผ์ •์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• ์ด์—์š”. Client ๋Œ€์‹  ๋ณต์žกํ•œ ์ƒ์„ฑ ๋กœ์ง์„ ๊ด€๋ฆฌํ•ด์š”. ํŠน์ง•: ์–ด๋–ค ConcreteBuilder๊ฐ€ ์‚ฌ์šฉ๋ ์ง€ ๋ชจ๋ฅด์ง€๋งŒ, Builder ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ผ๊ด€๋œ ๋ฐฉ์‹์œผ๋กœ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ์–ด์š”. ์˜ˆ์‹œ: ๊ฑด์ถ• ๊ฐ๋… โ†’ ์–ด๋–ค ์ง‘์„ ์ง“๋“  "๊ธฐ์ดˆ โ†’ ๊ณจ์กฐ โ†’ ๋ฒฝ โ†’ ์ง€๋ถ•" ์ˆœ์„œ๋กœ ์ง€์‹œํ•ด์š”. Builder ์—ญํ• : ๋ณต์žกํ•œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋‹จ๊ณ„๋“ค์„ ์ถ”์ƒ ๋ฉ”์„œ๋“œ๋กœ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์š”. ํŠน์ง•: Product๋ฅผ ๋งŒ๋“œ๋Š” ์ตœ์†Œ ๊ธฐ์ค€์„ ์ •์˜ํ•˜๊ณ , ConcreteBuilder๋“ค์ด ๋”ฐ๋ผ์•ผ ํ•  ๊ณตํ†ต API๋ฅผ ์ œ๊ณตํ•ด์š”. ์˜ˆ์‹œ: ์ง‘ ์ง“๊ธฐ ์„ค๊ณ„๋„ โ†’ buildFoundation(), buildWalls(), buildRoof() ๋“ฑ์˜ ๋‹จ๊ณ„๋ฅผ ์ •์˜ํ•ด์š”. ConcreteBuilder ์—ญํ• :...
2025-11-14
0
0
10
thumbnail
๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด๋””์ž์ธ ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด

๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด(Bridge Pattern) ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด์€ ์ถ”์ƒํ™” ๊ณ„์ธต(Abstraction)๊ณผ ๊ตฌํ˜„ ๊ณ„์ธต(Implementor)๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ตฌ์กฐ ํŒจํ„ด์ด์—์š”. ์ถ”์ƒํ™” ๊ณ„์ธต์„ ๊ธฐ๋Šฅ ํด๋ž˜์Šค ๊ณ„์ธต์ด๋ผ๊ณ  ๋ณด๊ธฐ๋„ ํ•ด์š”. ๊ทธ๋ž˜์„œ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ์ถ”์ƒํ™” ๊ณ„์ธต์„, ๊ตฌํ˜„์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์œผ๋ฉด ๊ตฌํ˜„ ๊ณ„์ธต์„ ํ™œ์šฉํ•˜๋ฉด ๋˜๋‹ˆ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅ์ด ๊ฐ€๋Šฅํ•˜๊ฒŒ ๋˜๋Š” ๊ฑฐ์—์š”. ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด ๊ตฌ์กฐ Abstraction(์ถ”์ƒํ™” ๊ณ„์ธต, ๊ธฐ๋Šฅ ๊ณ„์ธต)๊ณผ Implementor(๊ตฌํ˜„ ๊ณ„์ธต)์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์ด์–ด์ฃผ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ธŒ๋ฆฟ์ง€ ํŒจํ„ด์ด์—์š”. ๋‘ ๊ณ„์ธต์„ ์ง์ ‘ ๋ฌถ์ง€ ์•Š๊ณ , ์ค‘๊ฐ„์— ๋‹ค๋ฆฌ๋ฅผ ๋†“์•„ ์„œ๋กœ ๋…๋ฆฝ์ ์œผ๋กœ ๋ฐœ์ „ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ด์€ ๊ฑฐ์—์š”. ๊ทธ๋ฆผ์˜ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ด ๋ณผ๊ฒŒ์š”. Abstraction (์ถ”์ƒํ™” ๊ณ„์ธต์˜ ์ƒ์œ„ ์—ญํ• , ๊ธฐ๋Šฅ ๊ณ„์ธต์˜ ์ƒ์œ„ ์—ญํ• ) ์—ญํ• : Client๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์ถ”์ƒ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ๋‚ด๋ถ€์— Implementor๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ตฌํ˜„ ์ผ๋ถ€๋ฅผ ์œ„์ž„ํ•ด์š”. ํŠน์ง•: ์–ด๋–ค Implementor๋ฅผ ์‚ฌ์šฉํ•  ์ง€ ๋ชจ๋ฅด์ง€๋งŒ, ๋‹จ์ง€ ํ˜ธ์ถœํ•˜์—ฌ ๊ธฐ๋Šฅ์„ ๋งŒ๋“œ๋Š”๋ฐ ์‚ฌ์šฉํ•ด์š”. ์˜ˆ์‹œ: ๋ฆฌ๋ชจ์ปจ -> TV๊ฐ€ ์‚ผ์„ฑ์ธ์ง€ LG์ธ์ง€ ๋ชจ๋ฅด์ง€๋งŒ "์ „์› ํ‚ค๊ธฐ", "์ „์› ๋„๊ธฐ"๊ฐ€ ๊ฐ€๋Šฅํ•ด์š”. RefinedAbstraction (์ถ”์ƒํ™” ๊ณ„์ธต์˜ ๊ตฌํ˜„ ํด๋ž˜์Šค) ์—ญํ• : Abstraction์— ์ •์˜๋œ operation()์„ ์‹ค์ œ๋กœ ๊ตฌํ˜„ ๋ฐ ํ™•์žฅํ•ด์š”. ์—ฌ์ „ํžˆ Implementor๋ฅผ ์‚ฌ์šฉํ•ด์—ฌ ๊ตฌํ˜„ํ•ด์š”. ํŠน์ง•: Abstraction์„ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ๋Šฅ ๊ณ„์ธต๊ณผ ์•ฝํ•œ ๊ฒฐํ•ฉ์„ ๊ฐ€์ ธ์š”. ์˜ˆ์‹œ: LG ๋ฆฌ๋ชจ์ฝ˜, ์ข…ํ•ฉ ๋ฆฌ๋ชจ์ฝ˜ ๋“ฑ.. Implementor (๊ตฌํ˜„ ๊ณ„์ธต์˜ ์ธํ„ฐํŽ˜์ด์Šค...
2025-11-14
0
0
4
์‚ฌ์ดํŠธ ์ด์šฉ ํ†ต๊ณ„
์ฐจํŠธ ๋กœ๋”ฉ ์ค‘...
์‚ฌ์ดํŠธ ์•„ํ‚คํ…์ฒ˜
banner
banner
๋งŽ์ด ๋ณธ ๊ธ€
thumbnail
ProseMirrorNextJsShiki

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ์—”๋“œ - ์—๋””ํ„ฐ

๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ โ€“ ์—๋””ํ„ฐ ์•ˆ๋…•ํ•˜์„ธ์š”. ์ฒซ ๋ฒˆ์งธ ๋ธ”๋กœ๊ทธ ๊ธ€์ž…๋‹ˆ๋‹ค. ์ €๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ•˜๊ณ  ํ•ด๊ฒฐํ•œ ๊ณผ์ •์„ ๊ธฐ๋กํ•˜๊ณ  ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธ€์„ ์ž˜ ์“ฐ๋Š” ํŽธ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ˆ˜์ •ยท๋ณด์™„ํ•˜๋ฉด์„œ ํšจ์œจ์ ์œผ๋กœ ์ง€์‹์„ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ œ๊ฐ€ ์ง์ ‘ ๋งŒ๋“  ๋ธ”๋กœ๊ทธ ์—๋””ํ„ฐ๋ฅผ ์†Œ๊ฐœํ•˜๋ ค ํ•ฉ๋‹ˆ๋‹ค. 1๋‹ฌ ๊ฐ€๊นŒ์ด ๋‹ค์–‘ํ•œ ์—๋””ํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ–ˆ๊ณ , ๊ฒฐ๊ตญ ProseMirror ๊ธฐ๋ฐ˜ Tiptap์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŒํƒญ์€ ํ™•์žฅ์„ฑ์ด ๋›ฐ์–ด๋‚˜๊ณ  Viewer๋ฅผ JSON/Text ํ˜•์‹ ๋ชจ๋‘ SSR ๊ฐ€๋Šฅ Next.js & ๋ฐฑ์—”๋“œ์™€ ๊ถํ•ฉ์ด ์ข‹์Œ ์—๋””ํ„ฐ SSR ํ™•์žฅ์„ฑ ์—”์ง„ WYSIWYG Markdown RIch Text ๊ธฐํƒ€ editor.js ๐ŸŸก โ†—๏ธ ์ž์ฒด โœ… ๐ŸŸก โœ… ๋ฌธ์„œ ์ข‹์Œ. Json ๊ตฌ์กฐ. react-md-editor โŒ โžก๏ธ ์ž์ฒด โŒ โœ… โŒ ์ด์ง€์œ… ์‚ฌ์šฉ์„ฑ ์•ˆ์ข‹์Œ. toast UI โŒ โฌ‡๏ธ ProseMirror โœ… โœ… โœ… ๋ฌธ์„œํ™” ๋‚˜์จ. ํ”Œ๋Ÿฌ๊ทธ์ธ ์ ์Œ. quill ๐ŸŸก โ†—๏ธ Delta โœ… ๐ŸŸก โœ… ๋ฌธ์„œ ์ข‹์Œ. JSON ๊ตฌ์กฐ. TipTap โœ… โ†—๏ธ ProseMirror โœ… ๐ŸŸก โœ… ๋ฌธ์„œ ๋ณดํ†ต. ๊ธฐ๋Šฅ ์ž˜ ๋‚˜๋‰จ. ProseMirror โœ… โฌ†๏ธ ์ž์ฒด โœ… โŒ ๐ŸŸก ๋ฌธ์„œ ์ตœ๊ณ . ๋†’์€ ๋Ÿฌ๋‹ ์ปค๋ธŒ. ๐Ÿ‘‰ ๊ฒฐ๋ก : ๊ฐ„๋‹จ ๊ธฐ๋Šฅ ์œ„์ฃผ๋ผ๋ฉด Quill/Editor.js ์ถ”์ฒœ. ํ•˜์ง€๋งŒ ์ปค์Šคํ…€ ๊ธฐ๋Šฅ ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด Tiptap/ProseMirror๊ฐ€ ์ตœ์ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ €์˜ ์—๋””ํ„ฐ์— ํ•„์š”ํ•œ ๊ธฐ๋Šฅ๋“ค์˜ ๊ธฐ๋Šฅ๋“ค์„ ์ •๋ฆฌํ•ด ๋ดค์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ํ…์ŠคํŠธ ํŽธ์ง‘ ๊ธฐ๋Šฅ ๊ธ€์”จ์ฒด ๋ณ€๊ฒฝ (๊ตต๊ฒŒ, ๋ฐ‘์ค„, ๊ธฐ์šธ์ž„, ์ƒ‰๊น”, ๋ฐฐ๊ฒฝ์ƒ‰) ๊ธ€๋จธ๋ฆฌ ๊ธฐํ˜ธ, ๋ฒˆํ˜ธ ๊ธฐํ˜ธ, ์ฒดํฌ ๋ฆฌ์ŠคํŠธ ๋ฌธ๋‹จ ์ขŒ, ...
2025-03-16
0
2
279
thumbnail
NextJsCritical CSSSentry

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ ์—”๋“œ - ์„ฑ๋Šฅ ์ตœ์ ํ™”

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 1๋ฒˆ์งธ ๊ธ€ ์ดํ›„ ๋ธ”๋กœ๊ทธ์˜ ๋งˆ์Œ์— ์•ˆ๋“œ๋Š” ๋ถ€๋ถ„ ์ˆ˜์ •์„ ํ•˜๋А๋ผ 2๋ฒˆ์งธ ๊ธ€ ์“ฐ๊ธฐ๊นŒ์ง€ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ €๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹๋“ค๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์ตœ์ ํ™”๋ฅผ ํ–ˆ๋Š”์ง€ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ๊ธ€์„ ์ฝ๊ธฐ ์•ž์„œ ํ•จ๊ป˜(?) ์ถ•ํ•˜ํ•  ์ผ์€ ์ตœ์ ํ™” ๊ฒฐ๊ณผ Lighthouse 4๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ๋ชจ๋‘ 100์ ์„ ๋‹ฌ์„ฑํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜ํ•˜ ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•  ๊ฒƒ์€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์›์ธ์„ ์–ด๋–ป๊ฒŒ ์ฐพ์•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™” ํ–ˆ๋Š”์ง€ ์†Œ๊ฐœ๋“œ๋ฆด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋”ํ•ด Lighthouse๋กœ ์ ์ˆ˜๋กœ ์ธก์ •๋˜์ง€๋Š” ์•Š์ง€๋งŒ, [๋„คํŠธ์›Œํฌ๊ฐ€ ์˜ค๋ฅ˜๋‚  ์ •๋„๋กœ ๋А๋ฆฐ ์ƒํ™ฉ]์ด๋‚˜ [์ƒˆ๋กœ๊ณ ์นจ ์ƒํ™ฉ์—์„œ ํ•˜์–€์ƒ‰ ๊นœ๋ฐ•์ž„์œผ๋กœ ์ธํ•œ ๋ถˆํŽธํ•œ ์ƒํ™ฉ]์„ ๊ฐœ์„ ํ•œ ๊ณผ์ •๋„ ์†Œ๊ฐœ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜ ์‚ฌ์ง„์€ ์ตœ์ ํ™”๋ฅผ ์™„์ „ํžˆ ๋งˆ์น˜๊ณ  ํ™ˆํ™”๋ฉด์„ Lighthouse๋กœ ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, ๊ถŒ์žฅ์‚ฌํ•ญ, ๊ฒ€์ƒ‰์—”์ง„ 4๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ ์ˆ˜๋ฅผ ์ธก์ •ํ•œ ๊ฒฐ๊ณผ๋“ค์ž…๋‹ˆ๋‹ค. Lighthouse๋Š” ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ์˜ Lighthouseํƒญ์—์„œ ๋ˆ„๊ตฌ๋‚˜ ์„ฑ๋Šฅ์ธก์ •์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ํˆด์ž…๋‹ˆ๋‹ค. Lighthouse ์ ์ˆ˜ ์ธก์ •์‹œ ์ฃผ์˜ํ•  ์ ์€ ์‚ฌ์šฉ์ž ๋„คํŠธ์›Œํฌ, ์ปดํ“จํ„ฐ, ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ThirdParty Cookie๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๊ฐ€ ๋А๋ฆฌ๋ฉด ์„ฑ๋Šฅ ์ธก์ • ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ธก์ •ํ•  ๋•Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ‰์†Œ์—๋„ ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์œผ๋กœ ์จ๋“œํŒŒํ‹ฐ Cookie๋Š” ์ฐจ๋‹จํ•˜์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Home ํ™”๋ฉด(์–ด๋“œ๋ฏผ ๋กœ๊ทธ์ธ) Home ํ™”๋ฉด(์ผ๋ฐ˜์œ ์ € ๋กœ๊ทธ์ธ) Home ํ™”๋ฉด(๋น„ ๋กœ๊ทธ์ธ) ์–ด๋“œ...
2025-03-27
1
2
112
thumbnail
turborepotsconfigmonorepo

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ์—”๋“œ - ๊ตฌ์กฐ ๋ฐ ์„ค์ •

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ์—”๋“œ ๋ธ”๋กœ๊ทธ๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์—ฌ๋Ÿฌ ๋ฒˆ ์„ธํŒ…์„ ์‹œ๋„ํ–ˆ๊ณ , ๊ทธ ๊ณผ์ •์—์„œ ํฌ๊ธฐ๋„ ์—ฌ๋Ÿฌ ๋ฒˆ ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์‹œ๋„ ๋์— monorepo ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹์ด ๊ฐ€์žฅ ๊น”๋”ํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‚˜๋ˆ„๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ์—๋„ ํŽธํ•˜๋‹ค๋Š” ๊ฒฐ๋ก ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ํด๋” ๊ตฌ์กฐ๋งŒ์œผ๋กœ ๊ธฐ๋Šฅ์„ ๊ตฌ๋ถ„ํ•˜๋ ค ํ–ˆ์„ ๋•Œ๋Š” ํด๋”๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ์„ธ๋ถ„ํ™”๋˜์—ˆ๊ณ , ๊ทธ๋ ‡๋‹ค๊ณ  ํŒจํ‚ค์ง€๋“ค์„ repo๋ฅผ ๋‚˜๋ˆ„๋ ค ํ•˜๋ฉด ๊ด€๋ฆฌํ•˜๊ณ  ๋‹ค๋ฅธ ์•ฑ์— ์ ์šฉํ•˜๊ธฐ ์งœ์ฆ๋‚ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์—๋””ํ„ฐ ๊ธฐ๋Šฅ์„ ํฌํ•จํ•˜๋ ค๋‹ค ๋ณด๋‹ˆ ์ฝ”๋“œ ์–‘์ด ๋งŽ์•„์ง€๋ฉด์„œ ๋„๋ฉ”์ธ๊ณผ ์ฝ”๋“œ๊ฐ€ ์„ž์ด๊ธฐ ์‰ฌ์› ์Šต๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, ํ•˜๋‚˜์˜ ๋ ˆํฌ์—์„œ ๋ชจ๋“ˆ๋ณ„๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋„๋ฉ”์ธ๊ณผ ์ฝ”๋“œ๊ฐ€ ๋ถ„๋ฆฌ๋˜๋ฉฐ, ์žฌ์‚ฌ์šฉ์„ฑ ๋ฐ ์‚ฌ์šฉ์„ฑ(๊ฐœ๋ฐœ์ž ๊ฒฝํ—˜)๊นŒ์ง€ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์—์„œ ํ™•์‹คํžˆ ์žฅ์ ์ด ์žˆ๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ๋ธ”๋กœ๊ทธ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•œ Monorepo ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ ํด๋” ๊ตฌ์กฐ (tsconfig Reference ๊ธฐ๋Šฅ ์‚ฌ์šฉ) ํ˜„์žฌ ํด๋” ๊ตฌ์กฐ (Just in Time packages ์ ์šฉ) 1.1 App๊ณผ Package ๋ธ”๋กœ๊ทธ ํ”„๋กœ์ ํŠธ์—์„œ App์€ ์Šคํ† ๋ฆฌ๋ถ, React Web, React Native 3๊ฐœ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒจํ‚ค์ง€๋Š” Design System, Editor, Domain, Utils 4๊ฐœ์™€ ts์™€ esLint ์„ค์ •์„ ์œ„ํ•œ tsConfig, eslintConfig 2๊ฐœ๋กœ ๊ตฌ์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค. App React Web React Native Storybook Package DesignSystem Editor Domain Utils tsConfig esLintConfig ์—ฌ๊ธฐ์„œ Domain์„ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•œ ๋ชฉ์ ์€ ์ข€๋” API๋ฅผ ์ฒด๊ณ„์ ์œผ...
2025-04-13
0
0
65
์ข‹์•„์š” ๋งŽ์€ ๊ธ€
thumbnail
Command Pattern

[๋””์ž์ธ ํŒจํ„ด] ์ปค๋งจ๋“œ ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ์ปค๋งจ๋“œ ํŒจํ„ด ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ปค๋งจ๋“œ ํŒจํ„ด์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. ์ปค๋งจ๋“œ ํŒจํ„ด์€ ์š”์ฒญ(ํ–‰์œ„, ํ–‰๋™)์„ ๊ฐ์ฒด๋กœ ์บก์Аํ™”ํ•ด์„œ ์š”์ฒญ์„ ๋งค๊ฐœ๋ณ€์ˆ˜ํ™”ํ•˜๋Š” ํŒจํ„ด์ด๋‹ค. (ํ–‰๋™ ํŒจํ„ด) ์ฃผ๋กœ ์š”์ฒญ์„ ๋ณด๋‚ธ ๊ฐ์ฒด์™€ ์š”์ฒญ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ์—๋””ํ„ฐ์˜ ์‹คํ–‰ ๊ธฐ๋ก์„ ์ €์žฅํ•˜๋ฉฐ [redo/undo]๋ฅผ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜, ์ž‘์—… ํ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ๋งŽ์ด ์‚ฌ์šฉ๋œ๋‹ค. ์ปค๋งจ๋“œ ํŒจํ„ด์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์š”์†Œ๋“ค๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค. ์ปค๋งจ๋“œ ๊ฐ์ฒด : ์‹ค์ œ ์‹คํ–‰๋  ๋™์ž‘์„ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋กœ "๋ฆฌ์‹œ๋ฒ„"์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ๋ฆฌ์‹œ๋ฒ„ ๊ฐ์ฒด : ์‹ค์ œ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค. ์ธ๋ณด์ปค ๊ฐ์ฒด : ์ปค๋งจ๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ฃผ์ฒด์ด๋‹ค. ํด๋ผ์ด์–ธํŠธ : ์ปค๋งจ๋“œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ ์ธ๋ณด์ปค์— ํ• ๋‹นํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๊ทธ ์ƒ๊ด€๊ด€๊ณ„๋ฅผ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ์ปค๋งจ๋“œ ํŒจํ„ด์„ ์„ค๋ช…๋งŒ ๋“ค์–ด์„œ๋Š” ๊ฐ์ด ์•ˆ์˜ฌ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋ž˜ ๊ฐ„๋‹จํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ปค๋งจ๋“œ ํŒจํ„ด์œผ๋กœ ๊ตฌํ˜„ํ•ด๋ณด์ž. ์š”๊ตฌ์‚ฌํ•ญ ์Šค์œ„์น˜ ์ „์›์„ on/offํ•˜์—ฌ ์ „๋“ฑ์„ ๋„๊ณ  ํ‚ฌ ์ˆ˜ ์žˆ๋‹ค. // Receiver: ์‹ค์ œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด class Light { on() { console.log("๐Ÿ’ก ๋ถˆ์ด ์ผœ์กŒ์Šต๋‹ˆ๋‹ค."); } off() { console.log(" ๋ถˆ์ด ๊บผ์กŒ์Šต๋‹ˆ๋‹ค."); } } // Command ์ธํ„ฐํŽ˜์ด์Šค (Invoker๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ์˜์กดํ•˜์—ฌ Command ๊ฐ์ฒด ๊ตฌํ˜„์€ ๋ชจ๋ฆ„) interface Command { execute(): void; } // Concrete Command: ๋ถˆ ์ผœ๊ธฐ class LightOnCommand implements Comm...
2025-08-29
0
3
27
thumbnail
kernelOS

[์šด์˜์ฒด์ œ] ์šด์˜์ฒด์ œ์™€ ์ปค๋„

์šด์˜์ฒด์ œ์™€ ์ปค๋„ ์ปดํ“จํ„ฐ์˜ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์€ ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ํ•˜๋“œ๋””์Šคํฌ์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋ฉ”๋ชจ๋ฆฌ์— ํ”„๋กœ์„ธ์Šค๋ฅผ ์˜ฌ๋ฆฌ๊ณ , CPU์—์„œ ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ์ •๋ณด๋ฅผ ๊ฐ€์ง€๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‚ฌ์šฉ์ž๋Š” GUI๋ฅผ ํ†ตํ•ด์„œ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ๋งŒ ์‚ฌ์šฉ์ž์™€์˜ ์ƒํ˜ธ์ž‘์šฉ์„ ํ†ตํ•ด์„œ ์›ํ•˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ด๋Ÿฌํ•œ ์—ญํ• ์„ ํ•˜๋Š” ๊ฒƒ์ด ์šด์˜์ฒด์ œ(OS)์ด๋‹ค. ์‚ฌ์šฉ์ž ์ž์›๊ณผ ์‹คํ–‰ ๋‹จ๊ณ„๋ฅผ ๊ณ„์ธต์ ์œผ๋กœ ์ปค๋„ ๊ณต๊ฐ„, ์‚ฌ์šฉ์ž ๊ณต๊ฐ„, ์‹œ์Šคํ…œ ์ฝœ, ํ•˜๋“œ์›จ์–ด๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ๋‹ค. ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์€ ์‹œ์Šคํ…œ ์ฝœ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์ปค๋„ ์˜์—ญ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ณ , ์ปค๋„ ์˜์—ญ์€ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„์—์„œ ์‚ฌ์šฉํ•œ ์‹œ์Šคํ…œ ์ฝœ API์— ๋”ฐ๋ผ ํ•˜๋“œ์›จ์–ด๋ฅผ ์กฐ์ž‘ํ•˜๊ฒŒ ๋œ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์‚ฌ์šฉ์ž ๊ณต๊ฐ„๊ณผ ์ปค๋„ ๊ณต๊ฐ„์ด ๋‚˜๋‰˜์–ด ์žˆ๋“ฏ์ด, CPU๋„ ์‚ฌ์šฉ์ž ๋ชจ๋“œ์™€ ์ปค๋„ ๋ชจ๋“œ 2๊ฐ€์ง€์˜ ๋ชจ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์‚ฌ์šฉ์ž ๋ชจ๋“œ์—์„œ ํ†ต์ œ์—†์ด ํ•˜๋“œ์›จ์–ด์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ๋ณด์•ˆ๊ณผ ์•ˆ์ •์„ฑ์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉฐ, ๋™์ผ ์ž์›์— ์—ฌ๋Ÿฌ CPU๊ฐ€ ์ ‘๊ทผํ•  ๋•Œ๋„ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ํŠน๋ณ„ํžˆ ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.์•„๋ž˜ ๊ทธ๋ฆผ์€ CPU๊ฐ€ ์ด์ค‘ ๋ชจ๋“œ๋กœ ๋ชจ๋“œ๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ทธ๋ฆผ์ด๋‹ค. ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ์ด ํ”„๋ฆฌํ„ด๊ธฐ๋ฅผ ์“ฐ๊ฑฐ๋‚˜, ํ•˜๋“œ๋””์Šคํฌ์— ์ž…๋ ฅํ•˜๋Š” ๋“ฑ์˜ ์ปค๋„ ์˜์—ญ์ด ํ•„์š”ํ•œ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ์ปค๋„ ๋ชจ๋“œ์— ์ง„์ž…ํ•˜๊ณ , ๋‹ค์‹œ ์‚ฌ์šฉ์ž ๋ชจ๋“œ๋กœ ๋Œ์•„์˜จ๋‹ค. 1.1 ์šด์˜์ฒด์ œ ์šด์˜ ์ฒด์ œ๋Š” ์ปดํ“จํ„ฐ ํ•˜๋“œ์›จ์–ด์™€ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์—์„œ ์ƒํ˜ธ์ž‘์šฉ์„ ์ง€์›ํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ ์†Œํ”„ํŠธ์›จ์–ด๋‹ค. ์šด์˜์ฒด์ œ๋Š” ํ•˜๋“œ์›จ์–ด ์ž์›(CPU, ๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ ์žฅ์น˜ ๋“ฑ)์„ ํšจ์œจ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜...
2025-06-27
1
3
49
thumbnail
NextJsCritical CSSSentry

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ ์—”๋“œ - ์„ฑ๋Šฅ ์ตœ์ ํ™”

[๋ธ”๋กœ๊ทธ ์†Œ๊ฐœ] ํ”„๋ก ํŠธ์—”๋“œ ๋ฐฉ๋ฌธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. 1๋ฒˆ์งธ ๊ธ€ ์ดํ›„ ๋ธ”๋กœ๊ทธ์˜ ๋งˆ์Œ์— ์•ˆ๋“œ๋Š” ๋ถ€๋ถ„ ์ˆ˜์ •์„ ํ•˜๋А๋ผ 2๋ฒˆ์งธ ๊ธ€ ์“ฐ๊ธฐ๊นŒ์ง€ ๋งŽ์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ๊ธ€์—์„œ๋Š” ์ €๊ฐ€ ์–ด๋–ค ๋ฐฉ์‹๋“ค๋กœ ๋ธ”๋กœ๊ทธ๋ฅผ ์ตœ์ ํ™”๋ฅผ ํ–ˆ๋Š”์ง€ ์†Œ๊ฐœํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„  ๊ธ€์„ ์ฝ๊ธฐ ์•ž์„œ ํ•จ๊ป˜(?) ์ถ•ํ•˜ํ•  ์ผ์€ ์ตœ์ ํ™” ๊ฒฐ๊ณผ Lighthouse 4๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ์—์„œ ๋ชจ๋‘ 100์ ์„ ๋‹ฌ์„ฑํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ํ•˜ํ•˜ ์ด๋ฒˆ ๊ธ€์—์„œ ์†Œ๊ฐœํ•  ๊ฒƒ์€ ์„ฑ๋Šฅ์— ์˜ํ–ฅ์„ ๋ผ์น˜๋Š” ์›์ธ์„ ์–ด๋–ป๊ฒŒ ์ฐพ์•˜๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ์–ด๋–ป๊ฒŒ ์ตœ์ ํ™” ํ–ˆ๋Š”์ง€ ์†Œ๊ฐœ๋“œ๋ฆด๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์— ๋”ํ•ด Lighthouse๋กœ ์ ์ˆ˜๋กœ ์ธก์ •๋˜์ง€๋Š” ์•Š์ง€๋งŒ, [๋„คํŠธ์›Œํฌ๊ฐ€ ์˜ค๋ฅ˜๋‚  ์ •๋„๋กœ ๋А๋ฆฐ ์ƒํ™ฉ]์ด๋‚˜ [์ƒˆ๋กœ๊ณ ์นจ ์ƒํ™ฉ์—์„œ ํ•˜์–€์ƒ‰ ๊นœ๋ฐ•์ž„์œผ๋กœ ์ธํ•œ ๋ถˆํŽธํ•œ ์ƒํ™ฉ]์„ ๊ฐœ์„ ํ•œ ๊ณผ์ •๋„ ์†Œ๊ฐœ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜ ์‚ฌ์ง„์€ ์ตœ์ ํ™”๋ฅผ ์™„์ „ํžˆ ๋งˆ์น˜๊ณ  ํ™ˆํ™”๋ฉด์„ Lighthouse๋กœ ์„ฑ๋Šฅ, ์ ‘๊ทผ์„ฑ, ๊ถŒ์žฅ์‚ฌํ•ญ, ๊ฒ€์ƒ‰์—”์ง„ 4๊ฐ€์ง€ ์นดํ…Œ๊ณ ๋ฆฌ์˜ ์ ์ˆ˜๋ฅผ ์ธก์ •ํ•œ ๊ฒฐ๊ณผ๋“ค์ž…๋‹ˆ๋‹ค. Lighthouse๋Š” ํฌ๋กฌ ๊ฐœ๋ฐœ์ž๋„๊ตฌ์˜ Lighthouseํƒญ์—์„œ ๋ˆ„๊ตฌ๋‚˜ ์„ฑ๋Šฅ์ธก์ •์„ ์‰ฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“  ํˆด์ž…๋‹ˆ๋‹ค. Lighthouse ์ ์ˆ˜ ์ธก์ •์‹œ ์ฃผ์˜ํ•  ์ ์€ ์‚ฌ์šฉ์ž ๋„คํŠธ์›Œํฌ, ์ปดํ“จํ„ฐ, ๋ธŒ๋ผ์šฐ์ € ํ™˜๊ฒฝ์— ๋”ฐ๋ผ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค. ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ ThirdParty Cookie๋ฅผ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฐจ๋‹จํ•˜์ง€ ์•Š์•˜๊ฑฐ๋‚˜, ๋„คํŠธ์›Œํฌ๊ฐ€ ๋А๋ฆฌ๋ฉด ์„ฑ๋Šฅ ์ธก์ • ๊ฒฐ๊ณผ๊ฐ€ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์„ฑ๋Šฅ ์ธก์ •ํ•  ๋•Œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํ‰์†Œ์—๋„ ๋ธŒ๋ผ์šฐ์ € ์„ค์ •์œผ๋กœ ์จ๋“œํŒŒํ‹ฐ Cookie๋Š” ์ฐจ๋‹จํ•˜์‹œ๊ธธ ์ถ”์ฒœ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Home ํ™”๋ฉด(์–ด๋“œ๋ฏผ ๋กœ๊ทธ์ธ) Home ํ™”๋ฉด(์ผ๋ฐ˜์œ ์ € ๋กœ๊ทธ์ธ) Home ํ™”๋ฉด(๋น„ ๋กœ๊ทธ์ธ) ์–ด๋“œ...
2025-03-27
1
2
112