์ „์ฒด ๊ธ€

์„ฑ์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธ€์„ ์ž‘์„ฑํ•˜๋ ค๊ณ  ๋…ธ๋ ฅ์ค‘ ์ž…๋‹ˆ๋‹ค
next.js์—์„œ .env.local ํŒŒ์ผ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋„ฃ์–ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์œ„์™€๊ฐ™์ด ํŒŒ์ด์–ด๋ฒ ์ด์Šค ํŒŒ์ด์–ด์Šคํ† ์–ด ์ ‘๊ทผ ํ‚ค๊ฐ™์€ ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณต๊ฐœํ•˜๋ฉด ์•ˆ์ข‹๊ธฐ ๋•Œ๋ฌธ์— ํ™˜๊ฒฝ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ค์–ด์„œ ๊ด€๋ฆฌ๋ฅผ ํ•ด์ฃผ๋Š”๊ฒŒ ์ข‹๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ .env.local ์„ ํ†ตํ•œ ๋ชจ๋“  ํ™˜๊ฒฝ๋ณ€์ˆ˜๋Š” Node.js์—์„œ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉํ•˜๋ ค๋ฉด NEXT_PUBLIC_์„ ๋ถ™์—ฌ์•ผ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค. (์œ„์™€ ์‚ฌ์ง„์ฒ˜๋Ÿผ) ๊ทผ๋ฐ ์œ„ ์‚ฌ์ง„์„ ๋ณด๋ฉด ์•Œ๊ฒ ์ง€๋งŒ ๋งจ ๋งˆ์ง€๋ง‰๋ถ€๋ถ„์„ ์ €๋ ‡๊ฒŒ ๋ฐ”๊ฟ” ๋†“์•„๋„ ์ž˜ ์ž‘๋™ํ•˜๊ธด ํ–ˆ๋‹ค. nextjs ๋Š” .env.local์—์„œ process.env๋กœ ํ™˜๊ฒฝ๋ณ€์ˆ˜๋ฅผ ๋กœ๋“œํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ ์ œ๊ณต ์ง€์›์ด ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ์•„๋ฌดํŠผ ์ด ๋ฐ–์—๋„ .env, .env.development, .env.production ๋“ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ ..
1. ์†Œ์ผ“์„ ๋ฐฐ์šด๋‹ค. - ๋ฐ์ดํ„ฐ ํ†ต์‹ ์—์„œ๋Š” ์†Œ์ผ“์„ ๊ตฌ์„ฑํ•˜๊ณ , ์‹ค์Šต์„ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. ๋ฐ์ดํ„ฐ ํ†ต์‹ ์—์„œ๋Š” ๊ฐ ๋ ˆ์ด์–ด์™€ ํ”„๋กœํ† ์ฝœ์„ ์ง์ ‘ ๊ตฌํ˜„ํ•ด๋ณด๋Š” ์‹ค์Šต์„ ํ•˜์˜€๊ณ  L1,L2 ๋ฅผ ๊ณต๋ถ€ํ•˜์˜€๋‹ค. ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ์—์„œ๋Š” ๊ทธ ์œ„์˜ ๋ ˆ์ด์–ด๋“ค์— ๋Œ€ํ•ด ๊ณต๋ถ€ํ•œ๋‹ค. 2. TCP/IP์— ๋Œ€ํ•œ ์ž์„ธํ•œ ํ•™์Šต TCP์—๋Š” ๋งŽ์€ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์ด ์žˆ๊ณ , IP์—๋„ Dijkstra ๋“ฑ์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ํฌํ•จ๋˜์–ด์žˆ๋‹ค. ์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜๋“ค์„ ํ•™์Šตํ•˜๊ฒŒ ๋œ๋‹ค. ๊ฒฐ๊ณผ์ ์œผ๋กœ๋Š” ์•„๋ž˜ 3๊ฐ€์ง€๊ฐ€ ์ฃผ ํ•™์Šต ๋ชฉํ‘œ๊ฐ€ ๋˜๊ฒ ๋‹ค. ์ปดํ“จํ„ฐ ๋„คํŠธ์›Œํฌ์˜ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ดํ•ด ์†Œ์ผ“ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ปดํ“จํ„ฐ๋„คํŠธ์›Œํฌ ๋ณด์•ˆ ์ดํ•ด
ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ๋กœ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ์‹ฌ์‹ฌ์น˜ ์•Š๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ๊ณ ๊ฐ€ [error] Property does not exist on type 'something' ์ด๋‹ค. ์–ด๋–ค ๋ธ”๋กœ๊ทธ ๊ธ€์—์„œ ์ด๋ฅผ ๊ทธ์ € any๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•˜๋˜๋ฐ ์ด๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์ด ์•„๋‹Œ ๊ฒƒ ๊ฐ™๋‹ค. ์œ„๋Š” ์ดˆ๊ธฐ ๋ Œ๋”๋ง ์‹œ์— ๋‚ด ๊ฐœ์ธํ”„๋กœ์ ํŠธ์ธ leafylog์˜ heatmap ๋ถ€๋ถ„์˜ ์Šคํฌ๋กค์„ ํ•˜๋‹จ๊ณ ์ •ํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ๋„ฃ์€ ์ฝ”๋“œ์ด๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์œ„์™€๊ฐ™์ด ์ถ”๊ฐ€ํ•˜์˜€์„ ๋•Œ ์—๋””ํ„ฐ์— ๊ฒฝ๊ณ ๊ฐ€ ๋œฌ๋‹ค. Propery does not exist on type never์ด๋‹ค. never๋Š” ์•„๋ฌด๊ฒƒ๋„ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š์•˜์„ ๋•Œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค. ๋ณธ ์—๋Ÿฌ์˜ ํ•ด๊ฒฐ์ฝ”๋“œ์ธ๋ฐ ๋ฅผ ์“ฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด never๊ฐ€ ๋œ๋‹ค. ํƒ€์ž…์„ ์ œ๋Œ€๋กœ ์ง€์ •ํ•ด์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ๊ณ„์†ํ•ด์„œ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ฌ ๊ฒƒ์ด๊ธฐ์— ํƒ€์ž…์ง€์ •์„ ์ž˜ ..
๊ฐœ์ธ ์‚ฌ์ด๋“œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ• ๊ฑฐ๋ฉด ๋‚ด๊ฐ€ ์•ˆํ•ด๋ณธ ๊ฒƒ๋“ค์„ ๊ตฌํ˜„ํ•ด ๋ณด๋Š”๊ฒŒ ์ข‹๋‹ค. ์˜ˆ๋ฅผ๋“ค์–ด ํฌ์ผ“๋ชฌ api๋ฅผ ์ด์šฉํ•œ ๋„๊ฐ ๋งŒ๋“ค๊ธฐ์—์„œ ๋ฌดํ•œ ์Šคํฌ๋กค์„ ๊ตฌํ˜„ํ•ด ๋ณธ๋‹ค๋˜๊ฐ€ ํ•˜๋Š”๊ฒŒ ๋„์›€์ด ๋ ๊ฒƒ์ด๋‹ค. ํ•™์Šต๊ธฐ๋ก ์›น์„œ๋น„์Šค๋Š” ์ ์ฐจ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•ด๋‚˜๊ฐ€๋ฉด์„œ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๊ณต๊ฐœํ•˜์—ฌ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ด๋‹ค. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์— ์ต์ˆ™ํ•ด์ง€๋Š”๊ฒŒ ์ข‹๋‹ค. ์ค‘์š”ํ•œ ๊ฑด ํƒ€์ž…์„ ์–ด๋–ป๊ฒŒ ์žฌ์‚ฌ์šฉ์„ฑ์ด ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ  ํ•จ์ˆ˜๋ฅผ ๋” ๋ช…ํ™•ํ•˜๊ฒŒ ์„ค๋ช…ํ•ด์ค„ ์ˆ˜ ์žˆ๋Š”์ง€. ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ์—์„œ ์—๋Ÿฌ๊ฐ€ ๋‚˜๋ฉด useState ํ˜น์€ '=' ์—์„œ ํƒ€์ž…์ด ๋งค์นญ์ด ๋˜์ง€ ์•Š๋Š”์ง€ ํ™•์ธํ•ด๋ณด๋ฉด ์ข‹๋‹ค.
ยท react
์—ฌ๋Ÿฌ๋ถ„๋“ค ๋ฆฌ์•กํŠธ์—์„œ useEffect๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ฝ”๋”ฉ์„ ํ•˜๋Š”๋ฐ useEffect๊ฐ€ 2๋ฒˆ ์‹คํ–‰๋˜์–ด ๋‚œ๊ฐ ํ•˜์…จ๋˜ ์ ์ด ์žˆ์œผ์‹ ๊ฐ€์š”? ์ € ๋˜ํ•œ useEffect์—์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ฒ˜๋ฆฌ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ์ฝ˜์†” ์ถœ๋ ฅ์„ ํ•ด๋ณด๋ฉด 2๋ฒˆ์ด ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์˜ ์ด์œ ๋กœ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 1.React StrictMode - CRA์—์„œ React Strict Mode ์—†๊ธฐ cra๋กœ ํ”„๋กœ์ ํŠธ๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค๋ฉด strict mode๊ฐ€ index.js์— ์ ์šฉ๋˜์–ด ์žˆ์„ ํ…๋ฐ ์ด๊ฒƒ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. 2. Next.js์—์„œ React Strict Mode ์—†์• ๊ธฐ next.config.js์—์„œ reactStrictMode๋ฅผ false๋กœ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค. strict ๋ชจ๋“œ๋Š” ์•ˆ์ „ํ•˜์ง€ ์•Š์€ ์ˆ˜๋ช… ์ฃผ๊ธฐ, ๋ ˆ๊ฑฐ์‹œ API ์‚ฌ..
๋‚˜๋Š” ๊นƒํ—ˆ๋ธŒ ์ž”๋””๋ฐญ ์ฒ˜๋Ÿผ ๋‚ด๊ฐ€ ํ•™์Šตํ•œ ๊ฒƒ์„ heatmap์˜ ํ˜•ํƒœ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋Š” ์›น์„œ๋น„์Šค (๊ฐœ์ธ ํ† ์ดํ”„๋กœ์ ํŠธ)๋ฅผ ๋งŒ๋“œ๋Š” ์ค‘์ด๋‹ค. ์‚ฌ์‹ค, ๋ฉ˜ํ† ๋‹˜๊ป˜์„œ ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ธฐ๋Šฅ๋“ค์„ ๋Œ€ํญ ์ค„์ด์ž๊ณ  ์ œ์•ˆํ•˜์…”์„œ ์กฐ๊ธˆ์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ณ ๋ คํ• ๊ฒŒ ๋งŽ์•˜๋‹ค. dummy data๋ฅผ ๋„ฃ๊ณ  ui๋ฅผ ๊ตฌ์„ฑํ–ˆ์„ ๋•Œ์™€ ํŒŒ์ด์–ด๋ฒ ์ด์Šค๋ฅผ ๋ถ™์˜€์„ ๋•Œ๋„ ์ฝ”๋“œ๊ฐ€ ๋‹ฌ๋ผ์ง€๊ณ  ์˜ˆ์ƒ์น˜ ๋ชปํ–ˆ๋˜ warning(ํƒ€์ž…์Šคํฌ๋ฆฝํŠธ props๊ด€๋ จ.. ์ผ๋‹จ any๋กœ ๋•œ์งˆ ํ•ด๋†จ๋Š”๋ฐ ๋นจ๋ฆฌ ๋ฐ”๊ฟ”์•ผ ํ•œ๋‹ค. asap...)์„ ๋งŒ๋‚˜๊ธฐ๋„ ํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ด์–ด๋ฒ ์ด์Šค ์Šคํ† ์–ด๋งŒ ์‚ฌ์šฉํ•˜๊ณ  ๋ฐฑ์—”๋“œ ๋กœ์ง์„ ์•„์˜ˆ ๋ชป์“ฐ๋‹ค๋ณด๋‹ˆ ๊ตฌํ˜„์ด ์ข€ ์–ด๋ ค์›Œ ์กŒ๋‹ค. ๋‚˜๋Š” ๋‹จ์ง€ ๋ชฉํ‘œ์ถ”๊ฐ€์™€ ํ• ์ผ ์ถ”๊ฐ€๋งŒ ํ•œ๋‹ค๋ฉด ๋ฐฑ์—”๋“œ์—์„œ ํ•„์š”ํ•œ ๊ฒƒ ๊ณ„์‚ฐ ํ›„ ๊ฐ์ž์˜ jsonํŒŒ์ผ๋กœ ๋‚ด๋ ค๋‹ค ์ฃผ๋ฉด ๋งค์šฐ ํŽธํ•˜๊ฒŒ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๊ฒ ..
ยท TIL
์œ„์˜ ๋ฐ์ดํ„ฐ๋ฅผ firestore์—์„œ ๋ฐ›์•„์™”๋‹ค. ์œ„์˜ state์— ์ €์žฅ์„ ํ•ด์•ผํ•œ๋‹ค. ์–ด๊น€์—†์ด ์ƒ๊ธฐ๋Š” ์—๋Ÿฌ useState์— ๋ฌด์Šจ ํƒ€์ž…์ธ์ง€ ์ฃผ์ง„ ์•Š๊ณ  ๋ฐฐ์—ด์ด๋ผ๋Š” ๊ฒƒ๋ง ์•Œ๋ ค์คฌ์œผ๋‹ˆ ์œ„์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ์ƒ๊ธด๋‹ค. ์ด ์นœ๊ตฌ๋“ค๋„ never ํƒ€์ž…์ด ์•„๋‹ˆ๋ผ๋ฉด์„œ ๊ฒฝ๊ณ ๋ฅผ ๋‚ด๋ฟœ๋Š”๋‹ค. ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ๋‘˜๋‹ค ํ•ด๊ฒฐํ•  ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ํ•˜๋‚˜๋ฅผ ํ•ด๊ฒฐํ•œ๋‹คํ•ด๋„ ํ•˜๋‚˜๋งŒ ํ•ด๊ฒฐ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ํ•ด๊ฒฐ๋˜์ง€ ์•Š์•˜๋‹ค. ์œ„๊ฐ™์ด ํ•ด์ค€๋‹ค๋ฉด ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ title,spentTime,progress๊ฐ€ {id:string}์ด ์•„๋‹ˆ๋ผ๊ณ  ํ•˜๋Š”๋ฐ ์ด ๋ถ€๋ถ„์€ ์™œ ์ด๋ ‡๊ฒŒ ๊ฒฝ๊ณ ๊ฐ€ ๋‚˜์˜ค๋Š”์ง€ ์ดํ•ด๊ฐ€ ์•ˆ๋œ๋‹ค. ํ•ด๊ฒฐ๋œ๋‹ค๋ฉด ๋‹ค์‹œ ํฌ์ŠคํŒ…ํ•ด์•ผ๊ฒ ๋‹ค.
๊น€ํƒœ์ง„
My Dev History๐Ÿ’ป