๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด ๊ธ€

(54)
์‹ค์ „ ํ”„๋กœ์ ํŠธ - ๋‚ด๋ˆ๋‚ด์—ฌ ๊ด‘๊ณ  ์—†๋Š” ์•Œ๋งน์ด๋กœ ๊ฐ€๋“ ์ฐฌ ์ •๋ณด๋ฅผ ์ฐพ๊ณ  ์‹ถ์œผ์‹œ๋‹ค๋ฉด ์œ ์ €๋“ค์ด ๋‚ด ๋ˆ์œผ๋กœ ์—ฌํ–‰ํ•˜๊ณ  ์ธ์ฆํ•˜๋Š” ๋‚ด๋ˆ๋‚ด์—ฌ๋ฅผ ์จ๋ณด์„ธ์š”! ๊ด‘๊ณ  ์—†๋Š” ์—ฌํ–‰ ํ›„๊ธฐ ๋‚ด๋ˆ๋‚ด์—ฌ๋กœ ๋– ๋‚˜๊ธฐ โœˆ๏ธ Back-End Github ๐Ÿ‘€ Front-End Github ๐Ÿ‘€ ๐Ÿง‘๐Ÿป‍๐Ÿ’ป๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป ํŒ€์› ์†Œ๊ฐœ ์„œ๋น„์Šค ๊ฐœ์š” ๋‚ด ๋ˆ๋‚ด๊ณ  ๋‚ด๊ฐ€ ์—ฌํ–‰ํ•˜๋Š”, ์ง„์ •์„ฑ์žˆ๋Š” ๊ตญ๋‚ด ๋‹จ๊ธฐ ์—ฌํ–‰ ์ •๋ณด ๊ณต์œ  ํ”Œ๋žซํผ ์„œ๋น„์Šค ์„œ๋น„์Šค ์•„ํ‚คํ…์ณ Front-end node.js, ์‚ฌ์šฉ์ž ์š”์ฒญ์— ๋”ฐ๋ฅธ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก ๋™์  ์›น ํ˜ธ์ŠคํŒ…์ด ๊ฐ€๋Šฅํ•œ EC2์™€, ๋ฆฌ๋ฒ„์Šค ํ”„๋ก์‹œ๋กœ์„œ์˜ ์—ญํ• ์„ ํ•˜๋ฉฐ ์„œ๋ฒ„๊ฐ€ SSL ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๋Š”๋ฐ ๋“œ๋Š” ๋น„์šฉ์ด ์—†๋Š” nginx๋ฅผ ์ด์šฉํ•ด ๋ฐ์ดํ„ฐ ๋ณด์•ˆ์„ ์œ„ํ•ด https ํ™˜๊ฒฝ์œผ๋กœ ๋Š๊น€์—†๋Š” ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต ํ•  ์ˆ˜ ์žˆ๊ณ  ๋งŽ์€ ๋ ˆํผ๋Ÿฐ์Šค๋ฅผ ๊ฐ€์ง„ PM2๋ฅผ ํ†ตํ•œ ๋ฌด์ค‘๋‹จ ๋ฐฐํฌ๋ฅผ ..
20221105 React Hooks - Custom Hooks ์ปค์Šคํ…€ ํ›… Hook์˜ ๊ทœ์น™ React ํ•จ์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ(๋ฐ˜๋“œ์‹œ Functional Component ์•ˆ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ) ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ตœ์ƒ์œ„์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ชป ์”€ Custom Hook - ๋‘ ๊ฐœ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜์—์„œ ๊ฐ™์€ ๋กœ์ง์„ ๊ณต์œ ํ•˜๊ณ ์ž ํ•  ๋•Œ๋Š” ๋˜ ๋‹ค๋ฅธ ํ•จ์ˆ˜๋กœ ๋ถ„๋ฆฌ ํ•จ. - ์ค‘๋ณต๋œ ์ฝ”๋“œ๋ฅผ ๋ฐœ๊ฒฌํ•˜๋ฉด ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด์„œ ์ค‘๋ณต์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Œ. - ์ปค์Šคํ…€ ํ›… ๋‚ด๋ถ€์—์„œ ๋‹ค๋ฅธ ํ›…๋“ค์„ ์ž์œ ๋กญ๊ฒŒ ์กฐํ•ฉ๊ฐ€๋Šฅ(ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ) - ์ปค์Šคํ…€ํ›… ๋‚ด๋ถ€์—์„œ ์ปค์Šคํ…€ ํ›…์ด ๊ฐ€์ง€๋Š” ์Šคํ…Œ์ดํŠธ์™€ ์ดํŽ™ํŠธ๋Š” ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ด๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์ด ์•„์ฃผ ์ข‹์Œ use0000 ์ฒ˜๋Ÿผ ๋ฐ˜๋“œ์‹œ ๋งจ ์•ž์— use๋ผ๋Š” ๋‹จ์–ด๋ฅผ ๋ถ™์—ฌ์„œ ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์ด Hook์ด๋ผ๋Š” ๊ฑธ ์•Œ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค˜..
20221104 React Hooks - useReducer Hook์˜ ๊ทœ์น™ React ํ•จ์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ(๋ฐ˜๋“œ์‹œ Functional Component ์•ˆ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ) ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ตœ์ƒ์œ„์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ชป ์”€ useReducer - useState์˜ ๋Œ€์ฒดํ•จ์ˆ˜ - ์ฝœ๋ฐฑ ๋Œ€์‹  ๋””์ŠคํŒจ์น˜๋ฅผ ์ „๋‹ฌ ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž์„ธํ•œ ์—…๋ฐ์ดํŠธ๋ฅผ ํŠธ๋ฆฌ๊ฑฐ ํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ์˜ ์„ฑ๋Šฅ์„ ์ตœ์ ํ™” ํ•  ์ˆ˜ ์žˆ์Œ - useReducer๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ๋‹ค์ˆ˜์˜ ํ•˜์œ—๊ฐ’์„ ํฌํ•จํ•˜๋Š” ๋ณต์žกํ•œ ์ •์  ๋กœ์ง์„ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ state๊ฐ€ ์ด์ „ state์— ์˜์กด์ ์ธ ๊ฒฝ์šฐ์— ๋ณดํ†ต useState๋ณด๋‹ค useReducer๋ฅผ ์„ ํ˜ธ reducer : state๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ๋Š” ์—ญํ•  dispatch: state ์—…๋ฐ์ดํŠธ๋ฅผ ์œ„ํ•œ ์š”๊ตฌ action: ์š”๊ตฌ์˜ ๋‚ด์šฉ ๋””์ŠคํŒจ์น˜๋กœ ์•ก์…˜(์š”..
20221103 React - ๊ฐ€์ƒ๋” (Virtual DOM) DOM(Document Object Model) ์›นํŽ˜์ด์ง€์— ๋“ค์–ด๊ฐ€ ์žˆ๋Š” ๊ตฌ์กฐ๋“ค์„ ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ตฌ์„ฑํ•œ ๊ฒƒ Virtual DOM (VDOM) ๊ฐ€์ƒ๋” UI์˜ ์ด์ƒ์ ์ธ ๋˜๋Š” "๊ฐ€์ƒ"์ ์ธ ํ‘œํ˜„์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ  ReactDOM๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด “์‹ค์ œ” DOM๊ณผ ๋™๊ธฐํ™”ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ฐœ๋…. ์ด ๊ณผ์ •์„ ์žฌ์กฐ์ •(Reconciliation)์ด๋ผ๊ณ  ํ•จ. - ๋ฆฌ์•กํŠธ๋Š” ๊ฐ€์ƒ๋”์„ ์‚ฌ์šฉํ•ด์„œ ์‹ค์ œ๋”์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฒƒ์„ ๋น ๋ฅด๊ฒŒ ๋งŒ๋“ค์–ด ์คŒ - ๊ฐ€์ƒ๋”์€ ์‹ค์ œ๋”๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์„ ๋‹ด๊ณ  ์žˆ๋Š” ๋ณต์‚ฌ๋ณธ ๋ณต์‚ฌ๋ณธ: ์‹ค์ œ ๋”์ด ์•„๋‹Œ ์ž๋ฐ”์ŠคํŠธ๋ฆฝํŠธ ๊ฐ์ฒด ํ˜•ํƒœ๋กœ ๋ฉ”๋ชจ๋ฆฌ ์•ˆ์— ์ €์žฅ๋˜์–ด ์žˆ์Œ (์‹ค์ œ ๋”์ด๋ž‘ ๋˜‘๊ฐ™์€ ์—˜๋ฆฌ๋จผ์ธ  ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ) - ๋ธŒ๋ผ์šฐ์ € ๋ฌธ์„œ์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผ ๋ถˆ๊ฐ€ ๋ฆฌ์•กํŠธ๋Š” ๋‘๊ฐ€์ง€ ๊ฐ€์ƒ ๋”์„ ๊ฐ€์ง€๊ณ  ์žˆ์Œ 1. ๋ Œ๋”๋ง ์ด์ „ ํ™”๋ฉด ๊ตฌ์กฐ๋ฅผ ๋‚˜..
20221102 React Hooks - useMemo, useCallback Hook์˜ ๊ทœ์น™ React ํ•จ์ˆ˜ ๊ตฌ์„ฑ ์š”์†Œ ๋‚ด์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ(๋ฐ˜๋“œ์‹œ Functional Component ์•ˆ์—์„œ ์‚ฌ์šฉํ•ด์•ผ ํ•จ) ๊ตฌ์„ฑ ์š”์†Œ์˜ ์ตœ์ƒ์œ„์—์„œ๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์Œ ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ์•ˆ์—์„œ ๋ชป ์”€ useMemo, useCallback ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ useMemo๋Š” ํŠน์ • ๊ฒฐ๊ณผ๊ฐ’์„ ์žฌ์‚ฌ์šฉํ•  ๋•Œ ์‚ฌ์šฉ useCallback์€ ํŠน์ • ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์ง€ ์•Š๊ณ  ์žฌ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉ memoization (๋ฉ”๋ชจ์ด์ œ์ด์…˜) ์ปดํ“จํ„ฐ ํ”„๋กœ๊ทธ๋žจ์ด์ด ๋™์ผํ•œ ๊ณ„์‚ฐ์„ ๋ฐ˜๋ณตํ•ด์•ผ ํ•  ๋•Œ, ์ด์ „์— ๊ณ„์‚ฐํ•œ ๊ฐ’์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•จ์œผ๋กœ์จ ๋™์ผํ•œ ๊ณ„์‚ฐ์˜ ๋ฐ˜๋ณต ์ˆ˜ํ–‰์„ ์ œ๊ฑฐํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์†๋„๋ฅผ ๋น ๋ฅด๊ฒŒ ํ•˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. ๋™์  ๊ณ„ํš๋ฒ•์˜ ํ•ต์‹ฌ์ด ๋˜๋Š” ๊ธฐ์ˆ ์ด๋‹ค. - ์ž์ฃผ ํ•„์š”ํ•œ ๊ฐ’์„ ์บ์‹ฑํ•ด ๋‘์–ด์„œ ๊ทธ ๊ฐ’์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š”๊ฒŒ ..
20221025 Meta og ํƒœ๊ทธ๋กœ ์นด์นด์˜คํ†ก, sns ๊ณต์œ ์‹œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งŒ๋“ค๊ธฐ Meta og ํƒœ๊ทธ - ์นดํ†ก์ด๋‚˜ SNS URL ๊ณต์œ ์‹œ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ํƒœ๊ทธ ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋กœ ๋ณด์—ฌ์ง€๋Š” ์ด๋ฏธ์ง€๋Š” ์นด์นด์˜คํ†ก ๊ธฐ์ค€ ๊ฐ€๋กœ : 400px, ์„ธ๋กœ : 210px๊ฐ€ ์ตœ์  HTML ํŒŒ์ผ
20221024 input type="file" ์šฉ๋Ÿ‰ ์ œํ•œํ•˜๊ธฐ 1. ํ”„๋กœ์ ํŠธ์— ์‚ฌ์šฉ์ž๊ฐ€ ๋™์˜์ƒ ์—…๋กœ๋“œ๋ฅผ ํ•˜๋ ค๋ฉฐ ๋ฐฑ์—”๋“œ์™€ ์„œ๋กœ ๋™์˜์ƒ ํฌ๊ธฐ๋ฅผ 200๋ฉ”๊ฐ€๋กœ ์ œํ•œ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ๋กœ ํ•˜์˜€์Œ. 2. ํผ๋ฐ์ดํ„ฐ๋ฅผ ํฌ์ŠคํŠธ๋กœ ๋ณด๋‚ด๋Š”๋ฐ, ๋“ฑ๋ก๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„๋•Œ 200๋ฉ”๊ฐ€๊ฐ€ ๋„˜์œผ๋ฉด ์•Œ๋Ÿฟ์œผ๋กœ ์•Œ๋ ค์ค„ ์ˆ˜ ์žˆ๋„๋ก ์ฝ”๋“œ๋ฅผ ์งœ๋ด„. 3. ์ฝ˜์†”์ฐ์–ด๋ด๊ฐ€๋ฉฐ ํŒŒ์ผ ์‚ฌ์ด์ฆˆ๊ฐ€ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ๋‚˜์˜จ๋‹ค๋Š” ๊ฑธ ํ™•์ธํ•˜๊ณ , 200๋ฉ”๊ฐ€๋ฅผ ํ‚ฌ๋กœ๋ฐ”์ดํŠธ๋กœ ๋ฐ”๊พธ๊ณ  maxFileSize๋กœ ์„ ์–ธํ•ด์ค€ ๋‹ค์Œ ๋น„๋””์˜ค์˜ ์‚ฌ์ด์ฆˆ๊ฐ€ maxFileSize๋ณด๋‹ค ํด ๊ฒฝ์šฐ ์•Œ๋Ÿฟ์ฐฝ์œผ๋กœ ์•Œ๋ ค์คŒ. (๋“ฑ๋ก๋ถˆ๊ฐ€) // ๋™์˜์ƒ 200MB ํฌ๊ธฐ ์ œํ•œ const [errorMsg, setErrorMsg] = useState(false); const [isSuccess, setIsSuccess] = useState(false); const validateSelec..
20221008 video ์‚ฌ์šฉํ•˜๊ธฐ https://developer.mozilla.org/ko/docs/Web/HTML/Element/Video : ๋น„๋””์˜ค ์‚ฝ์ž… ์š”์†Œ - HTML: Hypertext Markup Language | MDN HTML ์š”์†Œ๋Š” ๋น„๋””์˜ค ํ”Œ๋ ˆ์ด๋ฐฑ์„ ์ง€์›ํ•˜๋Š” ๋ฏธ๋””์–ด ํ”Œ๋ ˆ์ด์–ด๋ฅผ ๋ฌธ์„œ์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋””์˜ค ์ฝ˜ํ…์ธ ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ์š”์†Œ๊ฐ€ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์— ์ข€ ๋” ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. developer.mozilla.org src : ์žฌ์ƒํ•  ๋น„๋””์˜ค์˜ ์ฃผ์†Œ width : ์š”์†Œ์˜ ๋„ˆ๋น„ height : ์š”์†Œ์˜ ๋†’์ด loop : ๋ฐ˜๋ณต ์žฌ์ƒ poster : ์‚ฌ์šฉ์ž๊ฐ€ ๋น„๋””์˜ค ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ์ด๋ฏธ์ง€ ํŒŒ์ผ์˜ ์ฃผ์†Œ๋ฅผ ๊ถŒ์žฅ preload : ์Œ์•…์„ ์žฌ์ƒํ•˜๊ธฐ ์ „์— ๋ชจ๋‘ ๋ถˆ๋Ÿฌ์˜ฌ์ง€ ์ง€์ • (value: auto, metadata, none)..