์ตœ๊ทผ ์ž‘์„ฑํ•œ ๊ธ€
thumbnail
๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด๋””์ž์ธ ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด

๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด (Mediator Pattern) ๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด์€ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•œ ๊ณณ์—์„œ ๊ด€๋ฆฌํ•ด ๊ฐ์ฒด ๊ฐ„ ๊ฒฐํ•ฉ๋„๋ฅผ ๋‚ฎ์ถ”๋Š” ๋””์ž์ธ ํŒจํ„ด์ด์—์š”. ์‰ฝ๊ฒŒ๋งํ•ด ๊ฐ ๊ฐœ์ฒด๋“ค์ด ์„œ๋กœ ์ง์ ‘ ๋Œ€ํ™”ํ•˜์ง€ ์•Š๊ณ , ๋ฏธ๋””์—์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๊ฐ„์ ‘์ ์œผ๋กœ ์†Œํ†ตํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด์—์š”. ๋งŒ์•ฝ n๋ช…์˜ ์‚ฌ๋žŒ์ด ํ•จ๊ป˜ ํ˜‘์—…์„ ํ•˜๊ณ  ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•˜๋ฉด n*(n-1)/2 ๊ฐœ์˜ ํ†ต์‹ ์„ ์ด ํ•„์š”ํ•ด์š”.(n๊ฐœ์˜ ๊ฐ„์„  ์‚ฌ์ด์˜ ์„ ๋ถ„ ๊ธ‹๋Š” ๊ฒฝ์šฐ์˜์ˆ˜) ํ•˜์ง€๋งŒ 1๊ฐœ์˜ ์ค‘์žฌ์ž(Mediator)๋ฅผ ํ†ตํ•ด์„œ ๋Œ€ํ™”ํ•œ๋‹ค๋ฉด ๊ฐ ์‚ฌ๋žŒ์€ ๋ฉ”๋””์—์ดํ„ฐ๋งŒ ๋ฐ”๋ผ๋ณด๊ณ  ์ผ์„ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์ƒ๊ธฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์•„์š”. ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด UI ์ปดํฌ๋„ŒํŠธ ๊ฐ„ ์—ฐ๋™์ด๋‚˜, ์ฑ„ํŒ…๋ฐฉ์˜ ์‚ฌ์šฉ์ž๋“ค์ฒ˜๋Ÿผ "๋ชจ๋‘๊ฐ€ ์„œ๋กœ์—๊ฒŒ ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋‚ด๋Š” ๊ตฌ์กฐ"๋ฅผ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉ๋ผ์š”. ๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด ๊ตฌ์กฐ ๋ฏธ๋””์—์ดํ„ฐ ํŒจํ„ด์€ ์ค‘์žฌ์ž ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” Mediator, ๊ตฌ์ฒด์ ์ธ ์ค‘์žฌ ๋กœ์ง์„ ๋‹ด๋‹นํ•˜๋Š” ConcreteMediator, ์„œ๋กœ ๋Œ€ํ™”ํ•˜์ง€๋งŒ ์„œ๋กœ๋ฅผ ๋ชจ๋ฅด๊ณ  Mediator์—๋งŒ ์˜์กดํ•˜๋Š” Colleague, ๊ทธ๋ฆฌ๊ณ  ๊ทธ๋“ค์ด ์ˆ˜ํ–‰ํ•˜๋Š” ๋™์ž‘๋“ค๋กœ ๊ตฌ์„ฑ๋ผ์š”. Mediator ์—ญํ• : Colleague ๊ฐ์ฒด๋“ค ์‚ฌ์ด์˜ ์†Œํ†ต ๊ทœ์น™์„ ์ •์˜ํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค(ํ˜น์€ ์ถ”์ƒ ํด๋ž˜์Šค)์—์š”. ์–ด๋–ค ๊ฐ์ฒด๊ฐ€ ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด๋‚ด๋ฉด Mediator๊ฐ€ ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฐ›์•„ ์ ์ ˆํ•œ ๋Œ€์ƒ์—๊ฒŒ ์ „๋‹ฌํ•ด์š”. ํŠน์ง•: Colleague ๊ฐ์ฒด๋“ค์ด ์ง์ ‘ ์ฐธ์กฐํ•˜์ง€ ์•Š๋„๋ก ๋งŒ๋“ค์–ด ์ฃผ๋Š” ์ธํ„ฐํŽ˜์ด์Šค ์—์š”. ์˜ˆ์‹œ: ๋น„ํ–‰๊ธฐ ๊ตํ†ต ๊ด€์ œ ์‹œ์Šคํ…œ์ด์—์š”. ๋น„ํ–‰๊ธฐ๋“ค ๋ผ๋ฆฌ ์ง์ ‘ ํ†ต์‹ ํ•˜๊ธฐ ๋ณด๋‹ค ๊ตํ†ต ๊ด€์ œ ์‹œ์Šคํ…œ์—์„œ ๋น„ํ–‰๊ธฐ์— ๋‚ด์šฉ์„ ์ „๋‹ฌํ•ด์š”. Colleague ์—ญํ• : ์‹ค์ œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ฐ์ฒด๋“ค๋กœ Collea...
2025-12-07
0
0
1
thumbnail
์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด๋””์ž์ธ ํŒจํ„ด

[๋””์ž์ธ ํŒจํ„ด] ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด

์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด(Interpreter Pattern) ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด์€ ๋ฌธ๋ฒ• ๊ทœ์น™์ด ์žˆ๋Š” ์–ด๋–ค ์–ธ์–ด๋ฅผ ํ•ด์„ํ•˜๋Š” ํ•ด์„๊ธฐ๋ฅผ ๋งŒ๋“ค ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ–‰๋™ ํŒจํ„ด์ด์—์š”. ๋Œ€ํ‘œ์ ์œผ๋กœ SQL Parser, ์ •๊ทœ์‹ ์—”์ง„, ๊ตฌ๋ฌธ ํ•ด์„๊ธฐ(Typescript ๊ฐ™์€ ์–ธ์–ด ํ•ด์„) ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ์–ด์š”. ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด ๊ตฌ์กฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ํŒจํ„ด์€ ํฌ๊ฒŒ 4๊ฐ€์ง€ ์š”์†Œ๋กœ ๊ตฌ์„ฑ๋ผ์š”. Abstract Expression , Terminal Expression, Nonterminal Expression, Context๋กœ ์ด๋ฃจ์–ด์ ธ์š”. ๋ชจ๋“  ํ‘œํ˜„์‹์ด ๋”ฐ๋ผ์•ผํ•  interpret ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•ด์š”. ๋ฌธ๋ฒ• ๊ตฌ์กฐ์˜ ์ตœ์†Œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ํ•ด์š”. ๋ฌธ๋ฒ•์—์„œ ๊ฐ€์žฅ ๊ธฐ๋ณธ ๋‹จ์œ„(ํ† ํฐ)์„ ํ•ด์„ํ•˜๋Š” ํด๋ž˜์Šค์—์š”. ์ˆซ์ž, ๋‹จ์–ด ๊ฐ™์€ ๋‹จ์ผ ํ† ํฐ์„ ํ•ด์„ํ•ด์š”. Interpreter ํŒจํ„ด์˜ ๋Œ€๋ถ€๋ถ„์ด ์ด Terminal Expression์œผ๋กœ ๊ตฌ์„ฑ๋ผ์š”. ๋ณดํ†ต ๋ฌธ๋ฒ• ๊ทœ์น™์„ ์กฐํ•ฉํ•˜๋Š” ํ‘œํ˜„์‹ ์ด์—์š”. (+, -, *, %) ์—ฌ๋Ÿฌ Expression์„ ์กฐํ•ฉํ•ด์„œ ๋” ํฐ ์˜๋ฏธ๋ฅผ ๊ตฌ์„ฑํ•ด์š”. ์žฌ๊ท€์ ์œผ๋กœ ํ•˜์œ„ Expression์„ interpret ํ˜ธ์ถœํ•ด์„œ ์˜๋ฏธ๋ฅผ ๊ณ„์‚ฐํ•ด์š”. ํ•ด์„ ๊ณผ์ •์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ์–ด์š”. ๋ณ€์ˆ˜์˜ ๊ฐ’, ํ™˜๊ฒฝ ์„ค์ •, ์บ์‹œ ๋“ฑ์„ ์ €์žฅํ•ด์„œ ํ•„์š”ํ•˜๋ฉด Expression์— ์ œ๊ณตํ•ด์š”. ์˜ˆ์‹œ๋“ค ์ด๋ฒˆ์—๋Š” ์ฝ”๋“œ ์˜ˆ์‹œ๋ฅผ ์ง์ ‘ ๊ฐ€์ ธ์˜ค์ง€๋Š” ์•Š์„๊ฒŒ์š”. ์™œ๋ƒํ•˜๋ฉด ๊ฐœ๋…์ ์ธ ์ดํ•ด๊ฐ€ ๋” ์ค‘์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”. ์ด๊ฑด ํ”„๋กœ๊ทธ๋ž˜๋จธ๋กœ์„œ ๊ฐ€์žฅ ๊ธฐ์ดˆ์ ์ด๊ณ  ์ค‘์š”ํ•œ ๊ฐœ๋…์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์š”. ๋ชจ๋“  ์–ธ์–ด๊ฐ€ ๊ฑฐ์˜ ๊ฐ™์€ ๊ณผ์ •์œผ๋กœ CPU์—์„œ ์‹คํ–‰ ๊ฐ€๋Šฅํ•˜๋„๋ก ๊ธฐ๊ณ„์–ด๋กœ ํ˜น์€ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ํ†ตํ•œ ์‹คํ–‰์„ ์œ„ํ•œ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋กœ ๋ฒˆ์—ญํ•  ์ˆ˜ ...
2025-11-28
0
0
6
thumbnail
์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด๋””์ž์ธ ํŒจํ„ด

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

์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด(์ฑ…์ž„ ์—ฐ์‡„ ํŒจํ„ด, Chain Of Responsibility) ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ์ผ ๊ฒฝ์šฐ, ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๋“ค์„ ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋Š” ํ–‰์œ„ ํŒจํ„ด์ด์—์š”. ์ด ํŒจํ„ด์€ ์ดํ•ด๊ฐ€ ์‰ฝ๊ณ  ๊ตฌ์กฐ๋„ ๋‹จ์ˆœํ•ด์„œ ๊ธ€์ด ๋งŽ์ด ์งง์„ ๊ฒƒ ๊ฐ™์•„์š”. ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด ๊ตฌ์กฐ ์—ญํ•  ์‚ฌ์Šฌ ํŒจํ„ด์€ Handler, ConcreteHandler, Request ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๊ณ  ๋ณด๋ฉด๋˜์š”. ๊ฐ ํด๋ž˜์Šค์˜ ์—ญํ• ์„ ์‚ดํŽด๋ด์š”. Handler (์ถ”์ƒ ํด๋ž˜์Šค ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค) ์—ญํ• : ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์—์š”. ๋‹ค์Œ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์ •ํ•˜๋Š” setNext ๋ฉ”์„œ๋“œ, ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š” handle ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์–ด์š”. ํŠน์ง•: ๊ณตํ†ต๋œ API(handle)์„ ์ œ๊ณตํ•˜์—ฌ, ConcreteHandler๋“ค์ด ๋”ฐ๋ผ์•ผ ํ•  ๊ทœ์น™์„ ๋ช…ํ™•ํžˆ ํ•ด์ค˜์š”. ์˜ˆ์‹œ: ๊ณ ๊ฐ ๋ฌธ์˜ ์ฒ˜๋ฆฌ ์‹œ์Šคํ…œ์—์„œ "๋ฌธ์˜ ์ฒ˜๋ฆฌ ์ธํ„ฐํŽ˜์ด์Šค" ConcreteHandler (๊ตฌ์ƒ ํ•ธ๋“ค๋Ÿฌ) ์—ญํ• : Handler๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ตฌ์ƒ ํด๋ž˜์Šค์—์š”. ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉด ์ฒ˜๋ฆฌํ•˜๊ณ  ์•„๋‹ˆ๋ฉด next.handle(request)๋กœ ๋„˜๊ฒจ์š”. ํŠน์ง•: ์ž์‹ ์ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์š”์ฒญ์ด๋ฉด ์ฒ˜๋ฆฌ, ์•„๋‹ˆ๋ฉด ๋‹ค์Œ Handler๋กœ ๋„˜๊ฒจ์š”. (๋ฌผ๋ก  ์‹ค์ œ๋กœ๋Š” ๋ชจ๋‘๊ฐ€ ์ฒ˜๋ฆฌํ•  ์ˆ˜๋„ ์žˆ๊ฒŒ ํ•  ์ˆ˜๋„ ์žˆ์–ด์š”. ํ•˜์ง€๋งŒ ์ฑ…์— ๋‚˜์˜จ๋Œ€๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์ด๋ ‡๊ฒŒ ์„ค๋ช…ํ•˜๊ณ  ๋„˜์–ด๊ฐˆ๊ฒŒ์š”.) ์˜ˆ์‹œ: ์ผ๋ฐ˜ ๋ฌธ์˜ ์ฒ˜๋ฆฌ ๋‹ด๋‹น์ž, ๊ธฐ์ˆ  ์ง€์› ๋‹ด๋‹น์ž, ๊ด€๋ฆฌ์ž Request ์—ญํ• : ์ฒ˜๋ฆฌํ•  ์š”์ฒญ ๊ฐ์ฒด์—์š”. handler๋“ค์ด ์ด request๋ฅผ ๋ณด๊ณ  ์ฒ˜๋ฆฌ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ๊ฑฐ์—์š”. ํŠน์ง•: ํ•ธ๋“ค๋Ÿฌ์—์„œ ์ฒ˜๋ฆฌํ•  ์š”์ฒญ์ด์—์š”. ์˜ˆ์‹œ: ...
2025-11-21
0
0
10
์‚ฌ์ดํŠธ ์ด์šฉ ํ†ต๊ณ„
์ฐจํŠธ ๋กœ๋”ฉ ์ค‘...
์‚ฌ์ดํŠธ ์•„ํ‚คํ…์ฒ˜
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
113
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
29
thumbnail
kernelOS

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

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