naver/fe-news ๋‰ด์Šค๋ ˆํ„ฐ ๋ทฐ์–ด (๋น„๊ณต์‹)

๋ชฉ์ฐจ
๋ชฉ์ฐจ

    2021-10

    ๋งํฌ & ์ฝ์„๊ฑฐ๋ฆฌ

    SELF-PARKING CAR IN 500 LINES OF CODE

    Self-Parking Car Evolution ํ”„๋กœ์ ํŠธ๋Š” ์œ ์ „ ์•Œ๊ณ ๋ฆฌ์ฆ˜(Genetic Algorithm)์˜ ๊ธฐ๋ณธ ์ž‘๋™ ์›๋ฆฌ๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์˜ ํ”„๋กœ์ ํŠธ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ์ž๋™์ฐจ์˜ ์ž์œจ ์ฃผ์ฐจ ํ•™์Šต ๊ณผ์ •์„ ํ†ตํ•ด ์ ‘๊ทผํ•˜๋ฉฐ, ์ด ๊ธ€์€ 500 ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ž์œจ์ฃผ์ฐจ ํ•™์Šต ๊ณผ์ •์„ ๋‹จ๊ณ„๋ณ„๋กœ ์„ค๋ช…ํ•œ๋‹ค.

    Self-Parking Car Evolution ์‹œ๋ฎฌ๋ ˆ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €์—์„œ ๊ณผ์ •์„ ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ํ•ด ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

    Gatsby 4 Beta released

    Gatsby๋Š” ๋ฆฌ์•กํŠธ์™€ GraphQL ๊ธฐ๋ฐ˜์˜ ์ •์  ์›น์‚ฌ์ดํŠธ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ”„๋ ˆ์ž„์›Œํฌ๋กœ 4.0 ๋ฒ ํƒ€ ๋ฒ„์ „์ด ๋ฆด๋ฆฌ์ฆˆ๋˜์—ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ธฐ๋Šฅ๋“ค์ด ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.

    • Server side rendering: ์ด์ œ Gatsby์—์„œ๋„ ๋Ÿฐํƒ€์ž„์— ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ณ  ๋ Œ๋” ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Deferred static generation: ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ๋นŒ๋“œ ํƒ€์ž„์— ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ , ์–ด๋–ค ํŽ˜์ด์ง€๋Š” ๋นŒ๋“œ ํƒ€์ž„์—, ์–ด๋–ค ํŽ˜์ด์ง€๋Š” ๋Ÿฐํƒ€์ž„์— ์ƒ์„ฑ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • Parallel processing: ๋ฉ€ํ‹ฐํ”„๋กœ์„ธ์‹ฑ์„ ํ•จ์œผ๋กœ์จ SSG(Static site generation) ๋นŒ๋“œ ์‹œ๊ฐ„์„ ํš๊ธฐ์ ์œผ๋กœ ์ค„์˜€๋‹ค.

    Interactive Learning Tools For Front-End Developers

    CSS, JavaScript, ๋ฆฌ์•กํŠธ, ์ •๊ทœํ‘œํ˜„์‹, SQL ๋“ฑ์„ ๊ฒŒ์ž„๊ฐ™์ด ์žฌ๋ฐŒ๊ฒŒ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋“ค์„ ๋ชจ์•„๋‘์—ˆ๋‹ค.

    React ์ƒํƒœ ๊ด€๋ฆฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Zustand์˜ ์ฝ”๋“œ๋ฅผ ํŒŒํ—ค์ณ๋ณด์ž

    TOAST UI Calendar์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ƒํƒœ๋ฅผ ํšจ๊ณผ์ ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ์ƒํƒœ ๊ด€๋ฆฌ ๋„๊ตฌ๋ฅผ ๋งŒ๋“ค์–ด ๋ณด๋ ค๋Š” ๊ณผ์ •์—์„œ ์ฐพ๊ฒŒ ๋œ Zustand์— ๋Œ€ํ•ด์„œ ์ƒ์„ธํžˆ ์•Œ๋ ค์ค€๋‹ค. ์™œ Zustand๋ฅผ ์„ ํƒํ•˜๊ฒŒ ๋˜์—ˆ๊ณ , ๊ทธ๋ฆฌ๊ณ  ๋‚ด๋ถ€ ๋™์ž‘์›๋ฆฌ๊นŒ์ง€ ์ž˜ ์„ค๋ช…ํ•ด ์ฃผ๊ณ  ์žˆ๋‹ค.

    Stop Using Atomic Design

    ์ปดํฌ๋„ŒํŠธ ๊ธฐ๋ฐ˜์˜ ์›น ๊ฐœ๋ฐœ์„ ํ•˜๋ฉด์„œ ๋งŽ์€ ์ด์•ผ๊ธฐ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋… ์ค‘์— Atomic Design์ด ์žˆ๋‹ค.

    ์ด ๊ธ€์—์„œ๋Š” ์ƒ๋Œ€์ ์œผ๋กœ ์ˆœ์ˆ˜ํ•˜์ง€ ์•Š๊ณ , ์œ ์šฉํ•˜์ง€ ์•Š๋‹ค๋Š” Atomic Design์˜ ๋‹จ์ ์„ ์„ค๋ช…ํ•˜๋ฉด์„œ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ๋งํ•˜๊ณ  ์žˆ๋‹ค. ๋‹ค์Œ ๊ธ€์ธ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ์ปดํฌ๋„ŒํŠธ๋กœ ์ด์–ด์ง„๋‹ค.

    ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ์ปดํฌ๋„ŒํŠธ

    ์šฐ๋ฆฌ๊ฐ€ ์ž‘์„ฑํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด๋Š” ์ง€์† ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ์˜ˆ์ƒํ•  ์ˆ˜ ์—†๋Š” ๋ณ€๊ฒฝ์— ๊ทธ๋‚˜๋งˆ ์œ ์—ฐํ•˜๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.

    ์ด ๊ธ€์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ณ€๊ฒฝ์— ์œ ์—ฐํ•œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•๋ก ์„ ์ œ์‹œํ•œ๋‹ค.

    1. ์ปดํฌ๋„ŒํŠธ๋Š” ๋ฐ์ดํ„ฐ์™€ ์—ญํ• ์„ ์ค‘์‹ฌ์œผ๋กœ ์ถ”์ƒํ™”ํ•œ๋‹ค.
    2. ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋กœ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์„ค๊ณ„ํ•œ๋‹ค.

    Performance Monitoring in GraphQL - Sentry, Apollo Server

    BFF์—์„œ GraphQL์˜ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋งŽ์€ ์˜คํ”ˆ ์†Œ์Šค ์ค‘ ํ•˜๋‚˜์ธ Apollo Server๋ฅผ ๋งŽ์ด ์„ ํƒํ•œ๋‹ค. ๋˜, Sentry๋Š” ์—๋Ÿฌ ํŠธ๋ž˜ํ‚น ์„œ๋น„์Šค๋กœ FE์˜ ๋ชจ๋‹ˆํ„ฐ๋ง๋ฟ๋งŒ ์•„๋‹ˆ๋ผ BE์˜ ๋ชจ๋‹ˆํ„ฐ๋ง๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. ์ด ๊ธ€์—์„œ๋Š” Apollo Server์˜ Plugin ๊ธฐ๋Šฅ์„ ์ด์šฉํ•ด Sentry๋ฅผ ํ†ตํ•ด resolver ๋‹จ์œ„๋กœ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์•ˆ๋‚ดํ•ด ์ค€๋‹ค.

    How To Study Design Patterns as a Web Developer

    ๋Œ€๋ถ€๋ถ„ ๋””์ž์ธ ํŒจํ„ด์˜ ๋‚ด์šฉ์€ OOP ๊ธฐ๋ฐ˜ ์–ธ์–ด์— ์˜ํ–ฅ์„ ๋งŽ์ด ๋ฐ›์•„ ๊ทธ ์•„์ด๋””์–ด์— ๋งŽ์ด ์ –์–ด์žˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค๋ฅธ ์–ธ์–ด ๊ฐœ๋ฐœ์ž์— ๋น„ํ•ด class ์‚ฌ์šฉ์ด ์ ์€ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋Š” ๊ฑฐ์˜ ๋Œ€๋ถ€๋ถ„ OOP ๊ธฐ๋ฐ˜์œผ๋กœ ์ž‘์„ฑ๋œ ๋ฌธ์„œ๋“ค์ด ์–ด์ƒ‰ํ•˜๊ฒŒ ๋А๊ปด์งˆ ์ˆ˜ ์žˆ๋‹ค. ์ด์— ๋Œ€ํ•ด ์ €์ž๋Š” ํด๋ž˜์Šค์™€ ๊ฐ์ฒด๋Š” ๋„๊ตฌ์ผ ๋ฟ์ด๋ฉฐ ๋””์ž์ธ ํŒจํ„ด์€ ๋ฌธ์ œ์™€ ์†”๋ฃจ์…˜์„ ์„ค๋ช…ํ•œ๋‹ค๋Š” ๊ฒƒ ๊ทธ ์ž์ฒด์ž„์„ ๊ฐ•์กฐํ•˜๋ฉด์„œ, ํŒจํ„ด์„ ์ ์šฉํ•˜๊ณ  ํ•จ์ˆ˜ํ˜•์œผ๋กœ ๋ฐœ์ „์‹œํ‚ค๋Š” ๊ณผ์ •์„ ์˜ˆ์‹œ๋กœ ์ƒ์„ธํ•˜๊ฒŒ ๋ณด์—ฌ์ค€๋‹ค.

    Does for-loop Nesting Order Affect Performance?

    ์ค‘์ฒฉ for loop์—์„œ ์ˆœ์„œ์— ๋”ฐ๋ผ ์„ฑ๋Šฅ์ด ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ์„๊นŒ? ๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜๋ฉด loop ํšŸ์ˆ˜๊ฐ€ ๋งŽ์€ for loop๋ฅผ ์•ˆ์ชฝ์— ์œ„์น˜์‹œํ‚ฌ์ˆ˜๋ก ์„ฑ๋Šฅ์ด ์ข‹๋‹ค๊ณ  ํ•œ๋‹ค. ์‹ค๋ฌด์—์„œ๋Š” ์ด๋Ÿฐ ๊ฒฝ์šฐ๊ฐ€ ๊ฑฐ์˜ ๋ฐœ์ƒํ•˜์ง„ ์•Š๊ฒ ์ง€๋งŒ ์ฐธ๊ณ ์šฉ์œผ๋กœ ๋ด๋‘๋ฉด ์ข‹์„ ๋“ฏํ•˜๋‹ค.

    ํŠœํ† ๋ฆฌ์–ผ

    The Super Tiny Compiler

    ์ฝ๊ธฐ ์‰ฌ์šด JavaScript๋กœ ์ž‘์„ฑ๋œ ํ˜„๋Œ€ ์ปดํŒŒ์ผ๋Ÿฌ์˜ ์ฃผ์š” ๋ถ€๋ถ„๋“ค์— ๋Œ€ํ•ด ๋งค์šฐ ๊ฐ„๋‹จํ•˜๊ฒŒ ์ž‘์„ฑ๋œ ์˜ˆ์ œ๋‹ค. ์ฝ”๋“œ์™€ ์ฝ”๋“œ ๋‚ด์˜ ์ฃผ์„์„ ํ†ตํ•ด ํ˜„๋Œ€ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ํ•™์Šตํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์ค€๋น„๊ฐ€ ๋˜์—ˆ๋‹ค๋ฉด, 1k ๋ผ์ธ์˜ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ํ•™์Šต์„ ์‹œ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

    [์ฐธ๊ณ ]ํ•œ๊ธ€ ๋ฒˆ์—ญ

    A JavaScript developerโ€™s guide to browser cookies

    ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ฟ ํ‚ค ์ž‘๋™ ๋ฐฉ์‹, ํด๋ผ์ด์–ธํŠธ์™€ ์„œ๋ฒ„์—์„œ ์ฟ ํ‚ค์— ์•ก์„ธ์Šคํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•, ๋ธŒ๋ผ์šฐ์ €์˜ ์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฟ ํ‚ค์˜ ๊ฐ€์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ณ  ์ฟ ํ‚ค๋ฅผ ๋ณด๋‹ค ์•ˆ์ „ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•œ๋‹ค.

    How to use React Context like a pro

    ๋ฆฌ์•กํŠธ์˜ ๋‚ด์žฅ Context API๋Š” ํ˜„์žฌ ๋งค์šฐ ์œ ์šฉํ•˜๊ฒŒ ์“ฐ์ด๊ณ  ์žˆ๋‹ค.

    ์ด ๊ธ€์—์„œ๋Š” Context API๋ฅผ ํ”„๋กœ์ฒ˜๋Ÿผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌ๋Ÿฌ ํŒจํ„ด์„ ์ฝ”๋“œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•œ๋‹ค.

    Event Bubbling and Event Catching in JavaScript and React โ€“ A Beginner's Guide

    ์ด ํŠœํ† ๋ฆฌ์–ผ์€ JavaScript์™€ ๋ฆฌ์•กํŠธ์—์„œ ์ด๋ฒคํŠธ ์ „ํŒŒ๊ฐ€ ์–ด๋–ป๊ฒŒ ์ด๋ฃจ์–ด์ง€๋Š”์ง€ ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ์„ค๋ช…ํ•œ ๊ธ€์ด๋‹ค.

    ์ฝ”๋“œ์™€ ๋„๊ตฌ

    Partytown

    ์‹คํ—˜์  ๋„๊ตฌ์ธ Partytown์€ AngularJS๋ฅผ ๊ฐœ๋ฐœํ–ˆ๋˜ Miลกko Hevery๊ฐ€ CTO๋กœ ์ผํ•˜๊ณ  ์žˆ๋Š” Builder.io์—์„œ ๊ฐœ๋ฐœํ•œ lazy ๋กœ๋”ฉ๋˜๋Š” 6kb์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๋ฆฌ์†Œ์Šค๋ฅผ ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ(๋˜๋Š” ์„œ๋“œํŒŒํ‹ฐ)๋ฅผ web worker์— ์žฌ๋ฐฐ์น˜ํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ ๋ถ€๋‹ด์„ ๋œ์–ด์ฃผ๊ณ  ์—ฌ๋Ÿฌ๋ถ„์˜ ์ฝ”๋“œ๊ฐ€ ๋น ๋ฅด๊ฒŒ ์‹คํ–‰๋  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“ค์–ด ์ค„ ์ˆ˜ ์žˆ๋‹ค.

    ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ• ๊นŒ?

    1. ์Šคํฌ๋ฆฝํŠธ๋“ค์€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ์‹คํ–‰๋˜์ง€ ์•Š๋„๋ก type="text/partytown"์œผ๋กœ ์„ค์ •
    2. Service Worker์˜ onfetch ํ•ธ๋“ค๋Ÿฌ ์„ค์ •์„ ํ†ตํ•ด ํŠน์ • ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑ„๊ฒŒ ํ•œ๋‹ค.
    3. Worker ์Šค๋ ˆ๋“œ ๋‚ด์—์„œ ์‹คํ–‰๋  ์Šคํฌ๋ฆฝํŠธ๊ฐ€ Web Worker์—๊ฒŒ ์ „๋‹ฌ
    4. Web Worker๋Š” JavaScript Proxy๋“ค์„ ์ƒ์„ฑํ•ด ๋ฉ”์ธ ์Šค๋ ˆ๋“œ API(DOM ์กฐ์ž‘ ๋“ฑ์˜) ํ˜ธ์ถœ์„ ๋ณต์ œํ•˜๊ณ  ์ „๋‹ฌํ•œ๋‹ค.
    5. JS ํ”„๋ก์‹œ์— ๋Œ€ํ•œ ์š”์ฒญ์€ ๋™๊ธฐ XHR ํ˜ธ์ถœ์„ ์‚ฌ์šฉ
    6. Service Worker๋Š” ์š”์ฒญ์„ ๊ฐ€๋กœ์ฑˆ ๋‹ค์Œ, ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์™€ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•œ๋‹ค.
    7. ์ดํ›„, Service Worker๊ฐ€ ๋ฉ”์ธ ์Šค๋ ˆ๋“œ๋กœ๋ถ€ํ„ฐ ๊ฒฐ๊ณผ๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ Web Worker ์š”์ฒญ์— ์‘๋‹ตํ•œ๋‹ค.
    8. Web Worker์—์„œ ์‹คํ–‰๋˜๋Š” ์ฝ”๋“œ ๊ด€์ ์—์„œ ๋ณธ๋‹ค๋ฉด, ๋ชจ๋“  ๊ฒƒ์€ ๋™๊ธฐํ™”๋˜์—ˆ๊ณ , ๊ทธ๋ฆฌ๊ณ  ๊ฐ๊ฐ์˜ document ํ˜ธ์ถœ์€ ์ฐจ๋‹จ๋˜์—ˆ๋‹ค.

    ๋ณด๋‹ค ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋‹ค์Œ ๋งํฌ๋“ค์„ ์ฐธ๊ณ ํ•˜๋ผ.

    Theatre.js

    ์›น์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ์…˜ ๋””์ž์ธ ์—๋””ํ„ฐ๋กœ ํ”„๋กœ๊ทธ๋žจ์ ์œผ๋กœ ๋˜๋Š” ์‹œ๊ฐ์  ๋„๊ตฌ๋ฅผ ํ†ตํ•ด ํŽธ์ง‘ํ•  ์ˆ˜ ์žˆ๋‹ค.

    ์˜จ๋ผ์ธ ๋ฐ๋ชจ ์ขŒ์ธก ํ•˜๋‹จ์˜ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ด ๋น„์ฃผ์–ผ ํŽธ์ง‘ ๋„๊ตฌ๋ฅผ ์—ด ์ˆ˜ ์žˆ๋‹ค.

    Ackee: A Self-Hosted, Node-Based Web Analytics Tool

    Ackee๋Š” Node.js ๊ธฐ๋ฐ˜์˜ ์›น์‚ฌ์ดํŠธ์˜ ํŠธ๋ž˜ํ”ฝ์„ ๋ถ„์„ํ•˜๊ณ  ์œ ์šฉํ•œ ํ†ต๊ณ„๋ฅผ ์ œ๊ณตํ•ด์ฃผ๋Š” ๋„๊ตฌ๋‹ค.

    ์ง์ ‘ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ๋Ÿฌ ํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ด๋“œ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค.

    Tasuku (ใ‚ฟใ‚นใ‚ฏ): A Minimal Task Runner for Node

    Tasuku๋Š” Node.js๋ฅผ ์œ„ํ•œ ํƒœ์Šคํฌ ๋Ÿฌ๋„ˆ๋‹ค.

    ํƒœ์Šคํฌ๋ฅผ ๋ผ๋ฒจ๋ง ํ•  ์ˆ˜ ์žˆ๊ณ , ์„ฑ๊ณต, ์‹คํŒจ, ๋กœ๋”ฉ ์ค‘ ๋“ฑ์˜ ์ƒํƒœ๋ฅผ ํ„ฐ๋ฏธ๋„์— ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๋‹ค.