์ฝ”๋“œ์Šคํ…Œ์ด์ธ 

2023๋…„ ํšŒ๊ณ ๋ก์„ ์“ฐ๋ ค๊ณ  ์‚ฌ์ง„์ฒฉ์„ ๋’ค์กŒ๋Š”๋ฐ, ๋”ฑํžˆ ์ฐ์€ ์‚ฌ์ง„์ด ์—†๋‹ค. ๊ทธ๋„ ๊ทธ๋Ÿด๊ฒƒ์ด, ์–ด๋”œ ๋‹ค๋‹ ์‹œ๊ฐ„์ด ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ํ•˜์ง€๋งŒ, ๊ทธ ์–ด๋–ค ํ•ด๋ณด๋‹ค๋„ ๋‚˜์—๊ฒŒ๋Š” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ํ•œ ํ•ด์˜€๋‹ค. โ€‹ โ€‹ ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ๊ฒƒ์„ ์ฐพ๊ณ , ๊ทธ๊ฒƒ์— ๋ชฐ๋‘ํ–ˆ๋‹คโ€‹ โ€‹ โ€‹ 2์›” ~ 7์›” ์ฝ”๋“œ์Šคํ…Œ์ด์ธ  ๋ถ€ํŠธ์บ ํ”„ (ํ”„๋ก ํŠธ์—”๋“œ) ์ฒ˜์Œ ์ฝ”๋”ฉ์„ ๋ฐฐ์› ๋‹ค. โ€‹ ์ฝ”๋“œ์Šคํ…Œ์ด์ธ ๋ผ๊ณ  ๊ด‘๊ณ ๋ฅผ ๋งŽ์ด ํ•˜๋Š” ๊ตญ๋น„๊ต์œก๊ธฐ๊ด€์ด ์žˆ๋‹ค. ์‚ฌ์ง„์— ๋ณด์—ฌ์ค€ ๊ฒƒ์ฒ˜๋Ÿผ ์ •ํ•ด์ง„ ํ‹€์„ ์ฃผ๊ณ , ๊ทธ ์•ˆ์—์„œ ์ฝ”๋“œ๋ฅผ ์งœ๋ผ๋Š” ํ˜•์‹์ด๋‹ค. ์ˆ˜์—…์€ ๋ชจ๋‘ ๋น„๋Œ€๋ฉด์ด๊ณ , ์žฌ๋ฏธ์—†๋Š” ๋ฌธ์„œ๋ฅผ ์ฃผ๋ฉด์„œ ๊ฑฐ์˜ ๊ทธ ์˜ˆ์ œ๋ฅผ ๊ฐ•์‚ฌ๊ฐ€ ์ฝ์–ด์ค€๋‹ค. ์‘ ๊ทธ๋ ‡๋‹ค ์ฃผ์ž…์‹์ด๋‹ค. ๊ทธ๋ž˜์„œ ์‹œ๊ฐ„๋Œ€๋น„ ์‹ค๋ ฅ์ด ๋ณ„๋กœ ์•ˆ๋Š”๋‹ค... ใ…Ž ๊ทธ๋ฆฌ๊ณ  ์žฌ๋ฏธ๋„ ์—†๋‹ค ใ… ใ…  ์ฃผ์ž…์‹ ๊ต์œก๋ฐฉ์‹ ๋•Œ๋ฌธ์— ์ฝ”๋”ฉํ•˜๋Š” ๋ง›(?) ์ด ์•ˆ๋‚œ๋‹ค.. โ€‹ํ•˜์ง€๋งŒ, ์ดˆ์‹ฌ์ž์—๊ฒ ์‹œ๊ฐ„์ด ํ•„์š”..
ยท React
Custom Hooks ๊ฐœ๋ฐœ์ž๊ฐ€ ์Šค์Šค๋กœ ์ปค์Šคํ…€ํ•œ ํ›…์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค Custom Hooks์€ ์ฝ”๋“œ ์ƒ์— ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ๋ฝ‘์•„๋‚ด์–ด ์žฌ์‚ฌ์šฉ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค ์—ฌ๋Ÿฌ url์„ fetch ํ• ๋•Œ, ์—ฌ๋Ÿฌ input์— ์˜ํ•œ ์ƒํƒœ๋ณ€๊ฒฝ ๋“ฑ ๋ฐ˜๋ณต๋˜๋Š” ๋กœ์ง์„ ๋™์ผํ•œ ํ•จ์ˆ˜์—์„œ ์ž‘๋™ํ•˜๊ณ  ์‹ถ์„๋•Œ ์ปค์Šคํ…€ ํ›…์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (์ปค์Šคํ…€ ํ›…๋„ ์ผ์ข…์˜ ํ•จ์ˆ˜, ๋‹ค๋งŒ ์ผ๋ฐ˜ ํ•จ์ˆ˜์™€ ๋‹ค๋ฅธ ์ ์€ ์ปค์Šคํ…€ ํ›… ๋‚ด๋ถ€์—์„œ ๋‚ด์žฅ hook์„ ๋ถˆ๋Ÿฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ) ์•„๋ž˜์˜ ๋‘ ์ปดํฌ๋„ŒํŠธ๋Š” ๋™์ผํ•œ ๋กœ์ง์„ ํฌํ•จํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค //FriendStatus : ์นœ๊ตฌ๊ฐ€ online์ธ์ง€ offline์ธ์ง€ returnํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ function FriendStatus(props) { // ๋™์ผ๋กœ์ง const [isOnline, setIsOnline] = useState(nul..
ยท React
React.lazy() ์™€ Suspense๋Š” ์ฝ”๋“œ๋ถ„ํ• ๊ณผ ์ง€์—ฐ๋œ ์ปดํฌ๋„ŒํŠธ ๋กœ๋”ฉ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ถ„ํ• ๊ณผ ์ง€์—ฐ๋œ ์ปดํฌ๋„ŒํŠธ ๋กœ๋”ฉ์€ ์ดˆ๊ธฐ์‹œ๊ฐ„์ด ๊ฐ์†Œ, ์„ฑ๋Šฅํ–ฅ์ƒ ๋“ฑ์˜ ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ถ„ํ• ์€ ๋ฌด์—‡์ผ๊นŒ? React์—์„œ ์ฝ”๋“œ ๋ถ„ํ• ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ dynamic import(๋™์  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. React ์—์„œ์˜ ์ฝ”๋“œ๋ถ„ํ•  form.addEventListener("submit", e => { e.preventDefault(); /* ๋™์  ๋ถˆ๋Ÿฌ์˜ค๊ธฐ๋Š” ์ด๋Ÿฐ ์‹์œผ๋กœ ์ฝ”๋“œ์˜ ์ค‘๊ฐ„์— ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. */ import('library.moduleA') .then(module => module.default) .then(someFunction()) .catch(handleError()); }..
ยท React
Component & Hook Function Component์™€ Class Component Hook์€ class๊ฐ€ ์•„๋‹Œ functionํ˜• ์ปดํฌ๋„ŒํŠธ์—์„œ๋งŒ ๋™์ž‘ํ•œ๋‹ค. Hook ์‚ฌ์šฉ๊ทœ์น™ 1. ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜์˜ ์ตœ์ƒ์œ„์—์„œ๋งŒ ํ˜ธ์ถœํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ˜๋ณต๋ฌธ, ์กฐ๊ฑด๋ฌธ, ์ค‘์ฒฉ๋œ ํ•จ์ˆ˜ ๋‚ด์—์„œ Hook์„ ์‹คํ–‰ํ•˜๋ฉด ์˜ˆ์ƒ๋Œ€๋กœ ๋™์ž‘ํ•˜์ง€ ์•Š์„ ์šฐ๋ ค๊ฐ€ ์žˆ๋‹ค. ์ปดํฌ๋„ŒํŠธ ์•ˆ์—๋Š” useState๋‚˜ useEffect์™€ ๊ฐ™์€ hook์ด ์—ฌ๋Ÿฌ๋ฒˆ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋Š”๋ฐ. react๋Š” ์ด hook์„ ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ์„ ํ•ด๋†“๋Š”๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋‚ด์—์„œ hook์„ ํ˜ธ์ถœํ•˜๊ฒŒ ๋˜๋ฉด, ํ˜ธ์ถœ๋˜๋Š” ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ์„ ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ  ๊ฒฐ๊ตญ ์˜ˆ๊ธฐ์น˜ ๋ชปํ•œ ๋ฒ„๊ทธ๋ฅผ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๋‹ค. 2. ์˜ค์ง ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜ ๋‚ด์—์„œ ์‚ฌ์šฉ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ๋ฆฌ์•กํŠธ ํ•จ์ˆ˜ํ˜• ์ปดํฌ๋„ŒํŠธ๋‚˜ ์ปค์Šค..
ยท React
Virtual DOM React ๋Š” UI ์ƒํƒœ๋ฅผ ์ถ”์ ํ•˜๊ณ  ๋ณ€ํ™”๊ฐ€ ์ผ์–ด๋‚œ ์š”์†Œ๋“ค์„ ๋น ๋ฅด๊ฒŒ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์žˆ๋„๋ก Virtual DOM ์ด๋ผ๋Š” ๊ฐ€์ƒ์˜ DOM ๊ฐ์ฒด๋ฅผ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์‹ค์ œ DOM ์‚ฌ๋ณธ ๊ฐ™์€ ๊ฐœ๋…์œผ๋กœ, React ๋Š” ์‹ค์ œ DOM๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ์กฐ์ž‘ํ•˜๋Š” ๋Œ€์‹  ์ด ๊ฐ€์ƒ์˜ DOM ๊ฐ์ฒด์— ์ ‘๊ทผํ•˜์—ฌ ๋ณ€ํ™” ์ „๊ณผ ๋ณ€ํ™” ํ›„๋ฅผ ๋น„๊ตํ•˜๊ณ  ๋ฐ”๋€ ๋ถ€๋ถ„์„ ์ ์šฉํ•ฉ๋‹ˆ๋‹ค DOM์€ ๊ณ„์ธต์  ํ˜•ํƒœ์˜ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฃŒ๊ตฌ์กฐ ์ค‘์—์„œ๋„ ํŠนํžˆ ํŠธ๋ฆฌ๋Š” “๋ฐ์ดํ„ฐ ์ €์žฅ”์˜ ์˜๋ฏธ๋ณด๋‹ค๋Š” “์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ํšจ๊ณผ์ ์œผ๋กœ ํƒ์ƒ‰” ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋ฏ€๋กœ, ๋น ๋ฅธ ์ž๋ฃŒ ํƒ์ƒ‰ ์„ฑ๋Šฅ์ด ์žฅ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ DOM ์ด ๋ณ€๊ฒฝ๋˜๊ณ  ์—…๋ฐ์ดํŠธ ๋œ๋‹ค๋Š” ๊ฒƒ์€ ๊ฒฐ๊ตญ ๋ธŒ๋ผ์šฐ์ €์˜ ๋ Œ๋”๋ง ์—”์ง„ ๋˜ํ•œ ๋ฆฌํ”Œ๋กœ์šฐ(reflow) ํ•œ๋‹ค๋Š” ๊ฒƒ์„ ..
Q. UI, UX์˜ ๊ฐœ๋…๊ณผ ๋‘ ๊ฐœ๋…์˜ ๊ด€๊ณ„์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด ์ฃผ์„ธ์š”. UI๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์‚ฌ์šฉ์ž๊ฐ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋˜๋Š” ์›น์‚ฌ์ดํŠธ์™€ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ๋””์ž์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. UI ๋””์ž์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ๋” ์‰ฝ๊ฒŒ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ดํ•ดํ•˜๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์ ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ UI ๋””์ž์ธ์€ ์ฃผ๋กœ ๋””์ž์ธ, ๋ ˆ์ด์•„์›ƒ, ์ƒ‰์ƒ, ํฐํŠธ ๋“ฑ๊ณผ ๊ฐ™์€ ์‹œ๊ฐ์ ์ธ ์ธก๋ฉด์„ ์ค‘์‹ฌ์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด, UX๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. UX ๋””์ž์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์ œํ’ˆ ๋˜๋Š” ์„œ๋น„์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋™์•ˆ ๋Š๋ผ๋Š” ๊ฐ์ •, ๊ฒฝํ—˜, ๋งŒ์กฑ๋„ ๋“ฑ์„ ๊ณ ๋ คํ•˜์—ฌ ์ œํ’ˆ์ด๋‚˜ ์„œ๋น„์Šค๋ฅผ ๋””์ž์ธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, UX ๋””์ž์ธ์€ ์‚ฌ์šฉ์ž๊ฐ€ ์›ํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์‰ฝ๊ณ  ๊ฐ„ํŽธํ•˜๊ฒŒ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ UX ๋””์ž์ธ์€ UI ๋””์ž์ธ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ..
๋„คํŠธ์›Œํฌ ๊ณ„์ธต๋ชจ๋ธ OSI 7๊ณ„์ธต ๋ชจ๋ธ 1๊ณ„์ธต: ๋ฌผ๋ฆฌ๊ณ„์ธต - ์ฃผ๋กœ ์ „๊ธฐ์‹ ํ˜ธ๋ฅผ ์ „๋‹ฌํ•˜๋Š”๋ฐ ์ดˆ์ , ๋“ค์–ด์˜จ ์ „๊ธฐ์‹ ํ˜ธ๋ฅผ ๊ทธ๋Œ€๋กœ ์ž˜ ์ „๋‹ฌํ•˜๋Š” ๊ฒƒ์ด ๋ชฉ์  2๊ณ„์ธต: ๋ฐ์ดํ„ฐ๋งํฌ ๊ณ„์ธต - ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „์†ก ๋ฐ ๋ฌผ๋ฆฌ์ฃผ์†Œ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ณ„์ธต 3๊ณ„์ธต: ๋„คํŠธ์›Œํฌ ๊ณ„์ธต - ๋ผ์šฐํŒ… ๋‹ด๋‹น, ๋น ๋ฅด๊ฒŒ ๋ณด๋‚ผ ์ตœ์ ์˜ ๊ฒฝ๋กœ ์„ ํƒ (IP ํŒจํ‚ท ์ „์†ก) 4๊ณ„์ธต: ์ „์†ก ๊ณ„์ธต - ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋“ค์ด ์ •์ƒ์ ์œผ๋กœ ๋ณด๋‚ด์ง€๋Š” ์ง€ ํ™•์ธํ•˜๋Š” ์—ญํ•  (TCP/UDP ์—ฐ๊ฒฐ) 5๊ณ„์ธต: ์„ธ์…˜ ๊ณ„์ธต - ์„ธ์…˜์˜ ์—ฐ๊ฒฐ์˜ ์„ค์ •๊ณผ ํ•ด์ œ๋ฅผ ์ˆ˜ํ–‰ 6๊ณ„์ธต: ํ‘œํ˜„๊ณ„์ธต - ์‘์šฉ๊ณ„์ธต์œผ๋กœ ์ „๋‹ฌํ•˜๊ฑฐ๋‚˜ ์ „๋‹ฌ๋ฐ›๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ฝ”๋”ฉ ๋˜๋Š” ๋””์ฝ”๋”ฉํ•˜๋Š” ๊ณ„์ธต, ์ผ์ข…์˜ ๋ฒˆ์—ญ๊ธฐ ์—ญํ•  ์ˆ˜ํ–‰ 7๊ณ„์ธต: ์‘์šฉ๊ณ„์ธต - ์ตœ์ข…์ ์œผ๋กœ ์‚ฌ์šฉ์ž์™€์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” ๊ณ„์ธต, ์‚ฌ์šฉ์ž๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ์‘์šฉํ”„๋กœ๊ทธ๋žจ๋“ค์ด ํ•ด๋‹น(chro..
ยท React
์‘ ๋งž๋‹ค! styled-component๋Š” ์›นํ‘œ์ค€์„ ํ–ฅ์ƒ์‹œํ‚จ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ? styled-components๊ฐ€ ์›นํ‘œ์ค€์„ ํ•ด์น˜์ง€ ์•Š๋Š” ์ด์œ ๋Š”, ๊ฒฐ๊ตญ styled-components๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ์Šคํƒ€์ผ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ CSS์™€ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ƒ์„ฑ๋œ CSS๋Š” HTML ๋ฌธ์„œ ๋‚ด์˜ ํƒœ๊ทธ์— ํฌํ•จ๋˜๋ฉฐ, ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ด๋ฅผ ํ•ด์„ํ•˜์—ฌ ๋ Œ๋”๋งํ•œ๋‹ค. ์•„์ฃผ ๋˜˜๋˜˜ํ•œ ๋…€์„์ด๋‹ค ๋‚œ ์•„์ง styled-component ์‚ฌ์šฉ์ด ์–ด์ƒ‰ํ•˜๋‹ˆ ์˜ค๋Š˜ ๊ณผ์ œํ•œ ๋‚ด์šฉ์„ ํฌ์ŠคํŒ… ํ•ด๋ณด๊ฒ ๋‹ค. styled-component๊ฐ€ ๋ญ”๋ฐ? styled-component๋Š” ๋ฆฌ์•กํŠธ์—์„œ css์Šคํƒ€์ผ์„ ์ž‘์„ฑํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ด๋‹ค ๊ธฐ์กด์˜ css๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ๋‹ฌ๋ฆฌ, 'styled-components' ๋Š” javascript ์ฝ”๋“œ๋‚ด์—์„œ css ์Šคํƒ€์ผ์„ ..
becky(์ง€์€)
'์ฝ”๋“œ์Šคํ…Œ์ด์ธ ' ํƒœ๊ทธ์˜ ๊ธ€ ๋ชฉ๋ก