[JS Deep Dive] 1,2,3์žฅ ์ •๋ฆฌ - ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋Œ€ํ•˜์—ฌ
ยท
Study/Modern JS Deep Dive
1์žฅ - ํ”„๋กœ๊ทธ๋ž˜๋ฐํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด๋ž€ ์ปดํ“จํ„ฐ์—๊ฒŒ ์‹คํ–‰์„ ์š”๊ตฌํ•˜๋Š” ์ผ์ข…์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์ด๋‹ค.→ 0๊ณผ 1๋ฐ–์— ์•Œ์ง€ ๋ชปํ•˜๋Š” ๊ธฐ๊ณ„๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์„ ์ •๋„๋กœ ์ •ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•˜๊ฒŒ ์š”๊ตฌ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•˜๋Š” ์ž‘์—… ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ๊ณ ๋ คํ•  ๋•Œ ์ปดํ“จํ„ฐ์˜ ์ž…์žฅ์—์„œ ๋ฌธ์ œ๋ฅผ ๋ฐ”๋ผ๋ด์•ผํ•˜๋Š”๋ฐ, ์ด๋•Œ ํ•„์š”ํ•œ ๊ฒƒ์ด ์ปดํ“จํŒ… ์‚ฌ๊ณ (Computational thinking)์ด๋‹ค. ๊ธฐ๊ณ„์–ด๋กœ ์ง์ ‘ ๋ช…๋ น์„ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์„ ๋Œ€์‹ ํ•  ๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ€์•ˆ์€์‚ฌ๋žŒ์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์•ฝ์†๋œ ๊ตฌ๋ฌธ์œผ๋กœ ๊ตฌ์„ฑ๋œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑ ํ•œ ํ›„, ๊ทธ๊ฒƒ์„ ์ปดํ“จํ„ฐ๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ผ์ข…์˜ ๋ฒˆ์—ญ๊ธฐ(์ปดํŒŒ์ผ๋Ÿฌ, ์ธํ„ฐํ”„๋ฆฌํ„ฐ)๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ตฌ๋ฌธ(syntax)์™€ ์˜๋ฏธ(semantics)์˜ ์กฐํ•ฉ์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋ฌธ๋ฒ•์„ ์ž˜ ์•ˆ๋‹ค๊ณ  ํ•ด์„œ ์™ธ๊ตญ์–ด..
[2024 FEConf] 'React Native์™€ Web์ด ๊ณต์กดํ•˜๋Š” ๋˜ ํ•˜๋‚˜์˜ ๋ฐฉ๋ฒ•' ๋‚ด์šฉ ์ •๋ฆฌ(feat. AI)
ยท
Event
์ด ๋ฐœํ‘œ๋Š” WebView์™€ React Native๊ฐ€ ํ†ต์‹ ์„ ํ•  ๋•Œ์˜ ๋ฌธ์ œ์ ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ ,webview-bridge ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ด ๋ฌธ์ œ์ ๋“ค์„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด ๋‹ด๊ฒจ์žˆ๋‹ค. https://github.com/gronxb/webview-bridge 1. ์›น๋ทฐ ํ†ต์‹ ์ด ์™œ ํ•„์š”ํ• ๊นŒ?์›น๋ทฐ ํ†ต์‹ ์ด ์™œ ํ•„์š”ํ• ๊นŒ? → InAppBrowser , Native Navigation, Shared Data์ด ์š”์†Œ๋“ค์ด ๊ฐ๊ฐ ๋ฌด์—‡์„ ๋œปํ•˜๋Š”์ง€ AI์—๊ฒŒ ๋ฌผ์–ด๋ดค๋‹ค. InAppBrowser (์ธ์•ฑ ๋ธŒ๋ผ์šฐ์ €): ์ธ์•ฑ ๋ธŒ๋ผ์šฐ์ €๋Š” ๋ชจ๋ฐ”์ผ ์•ฑ ๋‚ด์—์„œ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ์›น๋ทฐ ํ†ต์‹ ์ด ํ•„์š”ํ•œ ์ด์œ :์•ฑ ๋‚ด์—์„œ ์™ธ๋ถ€ ์›น ์ฝ˜ํ…์ธ ๋ฅผ ์›ํ™œํ•˜๊ฒŒ ํ†ตํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.์‚ฌ์šฉ์ž๊ฐ€ ์•ฑ์„ ๋ฒ—์–ด๋‚˜์ง€ ์•Š๊ณ ๋„ ์›น ๊ธฐ๋ฐ˜ ๊ธฐ๋Šฅ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ..
[2024 FEConf] '๋ฐ”ํ€ด ๋Œ€์‹  ๋กœ์ผ“ ๋งŒ๋“ค๊ธฐ' ๋‚ด์šฉ ์ •๋ฆฌ(feat. AI)
ยท
Event
์ด ๋ฐœํ‘œ๋Š” ํ† ์ŠคํŽ˜์ด๋จผ์ธ ๊ฐ€ ์–ด๋–ป๊ฒŒ ‘ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๋‹ต๋‹ต 3ํ˜•์ œ’๋ฅผ ํ•ด๊ฒฐํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋‚ด์šฉ์ด์—ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ ๋‹ต๋‹ต 3ํ˜•์ œ๋Š”๋””์ž์ธ ํ”„๋กœํ† ํƒ€์ž…์„œ๋ฒ„ API์š”๊ตฌ์‚ฌํ•ญ ๋ถ„์„์ด๋‹ค. ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์„ ํ•  ๋•Œ, ํ•ด๋‹น ์š”์†Œ๋“ค์ด ์™„์„ฑ๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฌ๋Š” ๊ฒƒ์ด ๋ณดํ†ต์ด์ง€๋งŒ, ๊ณ„์† ๊ธฐ๋‹ค๋ฆฌ๊ธฐ์—๋Š” ๋‹ต๋‹ตํ•˜๋‹ค.ํ† ์ŠคํŽ˜์ด๋จผ์ธ ๋Š” ์–ด๋–ป๊ฒŒ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์„๊นŒ?1. ๋””์ž์ธ ํ”„๋กœํ† ํƒ€์ž…๋””์ž์ธ ์‹œ์Šคํ…œ์„ ํ†ตํ•ด์„œ ๋””์ž์ธ ๋น„ํšจ์œจ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.๋””์ž์ธ ์‹œ์Šคํ…œ์˜ Strength์žฌ๋ฃŒ๋กœ์จ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ๊ณผ ํ˜•ํƒœ๋ฅผ ์ œ๊ณต์œ ์—ฐํ•œ ๊ตฌ์กฐ, ์žฌ์‚ฌ์šฉ์ด ์‰ฌ์›€ํ•˜์ง€๋งŒ ๋‹จ์ ๋„ ์žˆ๋Š”๋ฐ, ๋””์ž์ธ ์‹œ์Šคํ…œ์˜ Weakness๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ์ž์ฃผ ์ƒ๊น€์ž‘์„ฑํ•˜๋Š” ์‚ฌ๋žŒ ๋งˆ๋‹ค ์„œ๋กœ ๋‹ค๋ฅธ ๊ตฌํ˜„์ฒด๋ฅผ ์‚ฌ์šฉ → ๋ˆ„๊ตฌ๋Š” prop์œผ๋กœ, ๋ˆ„๊ตฌ๋Š” ํ•ฉ์„ฑ์œผ๋กœ ์˜ต์…˜์„ ์ฒ˜๋ฆฌํ•จํ™”๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ œํ’ˆ์˜ ์ฝ”๋“œ๊ฐ€ ๋Š˜์–ด๋‚  ..
[kuit_onboarding] ํ’€ํŽ˜์ด์ง€ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜ ๊ตฌํ˜„ํ•˜๊ธฐ(Framer-motion)
ยท
KUIT
0. ํ’€ํŽ˜์ด์ง€ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.KUIT ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€๋ฅผ ์–ด๋–ป๊ฒŒ ๋งŒ๋“ค๊นŒ ๊ณ ๋ฏผ์„ ์‹œ์ž‘ํ–ˆ์„ ๋•Œ, ๊ฐ€์žฅ ๋จผ์ € ๋– ์˜ฌ๋ž๋˜ ๊ฒƒ์ด ํ’€ํŽ˜์ด์ง€ ์Šคํฌ๋กค ์• ๋‹ˆ๋ฉ”์ด์…˜์ด์—ˆ๋‹ค. ์Šคํฌ๋กค ํ•œ ๋ฒˆ ๋‚ด๋ฆฌ๋ฉด ํ™”๋ฉด์ด ํ•˜๋‚˜์”ฉ ๋‚ด๋ ค๊ฐ€๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. PC์—์„œ ํœ ๋กœ ์Šคํฌ๋กค์„ ํ•˜๊ฑฐ๋‚˜, ๋ชจ๋ฐ”์ผ๋กœ ์œ„๋กœ ์Šค์™€์ดํ”„๋ฅผ ํ•˜๋ฉด ํ™”๋ฉด์ด ๋ฐ”๋€Œ๋Š” ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ๊ตฌํ˜„ํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค. fullPage.js์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ฐ๋Š” ๊ฒƒ์„ ๋จผ์ € ๊ณ ๋ คํ•ด๋ดค์ง€๋งŒ, ๋ผ์ด์„ผ์Šค ๋น„์šฉ์ด ์žˆ๋‹ค๋Š” ๋ง์„ ๋“ฃ๊ณ (๋น„์˜๋ฆฌ๋ฉด ๋ฌด๋ฃŒ๋ผ๊ณ  ํ•˜๊ธด ํ•˜์ง€๋งŒ) ํฌ๊ธฐํ–ˆ๋‹ค. ๊ทธ ๋Œ€์‹  Framer-motion์„ ์‚ฌ์šฉํ•ด์„œ ํ•œ ๋ฒˆ ๊ตฌํ˜„ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ฐ์€ ์ž˜ ์žกํžˆ์ง„ ์•Š์•˜์ง€๋งŒ, ๋‚ด๊ฒŒ๋Š” Claude๊ฐ€ ์žˆ์œผ๋‹ˆ๊นŒ. ๊ณ„์† ์งˆ๋ฌธํ•˜๊ณ , ์ˆ˜์ •ํ•˜๊ณ . ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜ค๊ธฐ๊นŒ์ง€ ๋ฐ˜๋ณตํ–ˆ๋‹ค..
[kuit_onboarding] Next.js ํ”„๋กœ์ ํŠธ์— strapi๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ถ”๊ฐ€ํ•ด๋ณด์ž
ยท
KUIT
1. SSG(Static Site Generation) + Headless CMS๋กœ ์ œ์ž‘ํ•ด๋ณผ๊นŒ๋™์•„๋ฆฌ ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€๋ฅผ ์ œ์ž‘ ์ค‘์ด๋‹ค. CSR๋กœ ์ œ์ž‘ํ• ๊นŒ, SSR๋กœ ์ œ์ž‘ํ• ๊นŒ ๊ณ ๋ฏผ ์ค‘์ด์—ˆ๋Š”๋ฐ, SSG(Static Site Generation)์„ ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค๋Š” ์˜๊ฒฌ์ด ์žˆ์–ด์„œ Next.js๋กœ SSG๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ๋™์•„๋ฆฌ ์˜จ๋ณด๋”ฉ ํŽ˜์ด์ง€๋Š” ๋‚ด์šฉ์ด ๊ฑฐ์˜ ๋ฐ”๋€Œ์ง€ ์•Š์œผ๋‹ˆ๊นŒ. ๊ทธ๋ž˜๋„ ์ปจํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•ด์•ผํ•  ์ˆ˜๋„ ์žˆ๋‹ค. ๊ทธ๋Ÿด ๋•Œ๋งˆ๋‹ค ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ๋ฐฐํฌํ•˜๋ฉด ๋˜์ง€ ์•Š์„๊นŒ ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ ๋„ ์ปจํ…์ธ ๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋Š”, ์ฝ˜ํ…์ธ  ๊ด€๋ฆฌ๋งŒ์„ ์œ„ํ•œ ์„œ๋น„์Šค์ธ Headless CMS๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋œ๋‹ค! ์–ด๋–ค Headless CMS๋ฅผ ํ™œ์šฉํ• ๊นŒ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€, strapi๊ฐ€ ์ข‹๋‹ค๋Š” ์‚ฌ๋žŒ๋“ค์˜ ์˜๊ฒฌ์ด ๋งŽ์•„์„œ strapi..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘์ตœ์†Œ์ง์‚ฌ๊ฐํ˜•’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/86491 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.programmers.co.kr1. ๋‚˜์˜ ์ฝ”๋“œfunction solution(sizes) { var arr1 = []; var arr2 = []; for(let card of sizes) { if(card[0] arr1 ๋ฐฐ์—ด๊ณผ arr2 ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.sizes ๋ฐฐ์—ด์„ ์ˆœํšŒํ•œ๋‹ค.๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ์ž‘๋‹ค๋ฉด ๋‘˜์„ ๋’ค๋ฐ”๊พผ๋‹ค.arr1์— ๊ฐ€๋กœ ๊ธธ์ด๋ฅผ, arr2์— ์„ธ๋กœ ๊ธธ์ด๋ฅผ pushํ•œ๋‹ค..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘K๋ฒˆ์งธ์ˆ˜’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/42748 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.programmers.co.kr1. ๋‚˜์˜ ํ’€์ดfunction solution(array, commands) { var answer = []; for(let arr of commands) { var newArr = []; for(let i = arr[0]; i a-b); answer.push(newArr[arr[2] - 1]); } ..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘๊ตฌ๋ช…๋ณดํŠธ’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/428851. ๋‚˜์˜ ํ’€์ดfunction solution(people, limit) { var sortedPeople = people.sort((a,b) => a-b); let cnt = 0; var i = 0; var j = sortedPeople.length - 1; while(i people ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ, sortedPeople ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•œ๋‹ค.ํฌ์ธํ„ฐ ๋‘ ๊ฐœ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. (i๋Š” 0, j๋Š” sortedPeople์˜ ๋งจ ๋์—)i๊ฐ€ j๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์„ ๋™์•ˆ ๊ณ„์† ์ˆœํšŒ๋ฅผ ํ•˜๋ฉด์„œ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’๊ณผ ์ž‘์€ ๊ฐ’์„ ๋”ํ•œ ๊ฐ’์ด limit๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์œผ๋ฉด i..
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] ‘์ฒด์œก๋ณต’ ํ’€์–ด๋ณด๊ธฐ
ยท
Algorithm/Programmers(JavaScript)
๋ฌธ์ œ ๋งํฌ: https://school.programmers.co.kr/learn/courses/30/lessons/42862 ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.programmers.co.kr1. ๋‚˜์˜ ํ’€์ดfunction solution(n, lost, reserve) { // ๋ฐฐ์—ด ์ •๋ ฌ lost.sort((a, b) => a - b); reserve.sort((a, b) => a - b); let lost_cnt = lost.length; for (let i = lost.length - 1; i >= 0; i--) { ..
'react-datepicker'์—์„œ ๋‚ ์งœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ๊ฒช์—ˆ๋˜ ์‹œํ–‰์ฐฉ์˜ค
ยท
Frontend
1. react-datepicker๋กœ ๋‹ฌ๋ ฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.ํ˜„์žฌ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ๋‹ฌ๋ ฅ์œผ๋กœ ๋‚ ์งœ๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์„ ๊ตฌํ˜„ํ•ด์•ผ ํ–ˆ๋‹ค. ๋‹ฌ๋ ฅ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์€ ํž˜๋“ค ๊ฒƒ ๊ฐ™์•„์„œ ‘react-datepicker’ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ์ผ๋‹จ ๋‹ฌ๋ ฅ UI๋ฅผ ํ”ผ๊ทธ๋งˆ์— ๋งž๊ฒŒ ์ปค์Šคํ…€ํ•˜๋Š” ๊ฒƒ์— ์ง‘์ค‘ํ–ˆ๋‹ค. ๋‹ฌ๋ ฅ์„ ์ปค์Šคํ…€ํ•˜๋Š” ๊ฒƒ์€ ์ƒ๊ฐ๋ณด๋‹ค ์–ด๋ ค์› ์ง€๋งŒ, ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ๊ฒช์œผ๋‹ˆ ๋น„์Šทํ•˜๊ฒŒ ๋ณด์ด๊ฒŒ ๋งŒ๋“œ๋Š”๋ฐ์—๋Š” ์„ฑ๊ณตํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.  2. ์ด์ œ ๋‚ ์งœ ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜์ž์ด์ œ๋Š” ์„ ํƒํ•œ ๋‚ ์งœ๋ฅผ ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•œ๋‹ค.๋จผ์ € ๊ตฌ์กฐ๋ฅผ ์„ค๋ช…ํ•˜์ž๋ฉด, SelectBox๋ฅผ ํด๋ฆญํ•˜๋ฉด ๋‚ด๊ฐ€ ๋งŒ๋“ค์–ด๋†“์€ Dialog ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋‚˜์˜ค๊ณ , Dialog ์ปดํฌ๋„ŒํŠธ์˜ children์— Datepicker๊ฐ€ ์žˆ๊ณ  ๊ทธ ๋ฐ‘์—๋Š” ํ™•์ธ(confirm) ๋ฒ„ํŠผ๊ณผ ๋‹ซ๊ธฐ(ca..