์ด์ ๋ถํฐ Webpack์ ์ด์ฉํด ๋ง๋ค์ด๋๊ณ ์ถ์๋ React ๋ณด์ผ๋ฌํ๋ ์ดํธ๋ฅผ ๋ง๋ค์ด๋ดค๋ค. ์ฌ๋ฌ ๋ ํผ๋ฐ์ค๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ๋ง๋ค์ด๋ดค๋๋ฐ ํ๋ฌ๊ทธ์ธ ๋ถํฐ ๋ก๋, ์ค์ ๋ด์ฉ๊น์ง ํ๋ํ๋ ์ฐจ๊ทผ์ฐจ๊ทผ ๊ธฐ๋กํ๋ฉฐ ์ดํด๋ณด์. ํ์ฌ์ ๋ด๊ฐ๋ง๋ ๋ณด์ผ๋ฌํ๋ ์ดํธ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฑ๋ฑ์ด ์ ์ ์์ฌ๊ฐ๋ ๊ฑธ ๋ณด๋ฉฐ ํ๋ค์ง๋ง ๋ฟ๋ฏํ ์์ฆ์ด๋ค..โญ๏ธ Webpack ์ด๋? ์นํฉ์ ๋จ์ํ ๋งํ์๋ฉด ๋ชจ๋ ๋ฒ๋ค๋ฌ์ด๋ค. ๋ชจ๋ : ์นํฉ์์์ ๋ชจ๋์ ๊ฐ์ข
.js .css .png ๋ฑ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ๊ตฌ์ฑํ๋ ์์์ ๋งํ๋ค. ๋ฒ๋ค๋ฌ : ์์์ ์กฐํฉํด์ ๋น๋ ๊ฒฐ๊ณผ๋ฌผ์ ๋ง๋๋ ์ญํ ES2015๋ถํฐ ๋ชจ๋ ์ด๋ผ๋ ๋ฌธ๋ฒ์ ์ง์ํ๊ฒ ๋์๊ณ ์ด ๋ชจ๋์ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ ๋ด๊ฐ ๋ง๋ ์ฝ๋๋ค์ ์ฌ์ฌ์ฉํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ๋ค. ๊ธฐ์กด์๋ ํ๊ทธ๋ฅผ ํตํด ์ฝ๋๋ฅผ ๋ถ๋ฌ์ค๊ณ ..
FE๋ฅผ ํฅํดโโ
ํ์ฌ์์ AWS R&D๋ฅผ ์งํํ๋ฉฐ ๋ณด์๊ทธ๋ฃน ์ค์ ์ ๋ถ์กฑํ ๋ถ๋ถ์ ๋๋ผ๊ณ ๋ค์ ์ ๋ฆฌํด๋ณด๋ IP IP (Internet Protocol) IP๋ ์ธํฐ๋ท์ด ํตํ๋ ๋คํธ์ํฌ์์ ์ ๋ณด๋ฅผ ์์ ํ๊ณ ์ก์ ํ๋ ํต์ ์ ๋ํ ๊ท์ฝ์ด๋ค. IP ์ฃผ์๋ ๊ฐ ํต์ ์ ์ํ ๊ณ ์ ๋ฒํธ์ด๋ค. IPv4์ IPv6๋ก ๋ฒ์ ์ด ๋๋์ด ์ง๋ฉฐ ์ผ๋ฐ์ ์ธ ์น ํต์ ์ IPv4๋ฅผ ์ด์ฉํ๋ค. ๊ฐ์ฅ ํฐ ์ด์ ๋ ๋ณด์์ ์ธ ์ธก๋ฉด์ด๋ค. ํ์ฌ ๊ตฌ์ถ๋ ๋ณด์์์คํ
๋ค์ ๋ชจ๋ IPv4๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก๊ณ ์์ด ํธํ์ด ์ด๋ ต๋คํ๋ค. IPv6๊ฐ ๋์จ ์ด์ ๊ฐ IPv4 ์ฃผ์ ํ์์ ๊ณ ๊ฐ ๋๋ฌธ์ด๋ฉฐ ์ค์ ๋ก IPv4์ ์ฃผ์๋ ๋ชจ๋ ์์ง๋์ด ์ฃผ์ ํ ๋น์ ํ์ง ์๊ณ ์๋ค. ๊ทธ๋ผ์๋ AWS๊ฐ์ ์๋น์ค์์ IPv4 ํ์์ ์ฃผ์๋ฅผ ๋ฐ๊ธํ ์ ์๋๊ฑด, ํด๋ผ์ฐ๋ ํ์ฌ๋ค์ IPv4๋ฅผ ์์ ํ๊ณ ์๊ณ ์..
์์ฆ Next.js๋ฅผ ์ฌ์ฉํ๋ฉฐ CSS-IN-JS ๋์์ด ์๋๋ ๋ฌธ์ ๋ก Tailwind CSS๋ฅผ ์์ฃผ ์ฌ์ฉํ๊ณ ์๋ค. VScode ์์ Tailwind CSS IntelliSense ๋ผ๋ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ ๊ณตํด Tailwind์์ ์ ํด์ง ํฌ๋งท์ ๋ณด์ฌ์ฃผ์ง๋ง ์ฝ๊ฐ์ ๋ถํธํจ์ด ์๋ค. ์ค์ ์ ํตํด ํด๊ฒฐํด๋ณด์! Tailwind Tailwind๋ CSS ํ๋ ์์ํฌ๋ก ์์ฒญ๋๊ฒ ๋ง์ utility class๋ก ์ด๋ฃจ์ด์ง ํ๋ ์์ํฌ๋ค. ๋ง๋ค์ด์ ธ ์๋ utility class๋ฅผ class์ ๋ฃ์ด์ฃผ๊ธฐ๋ง ํ๋ฉด ํด๋น ์คํ์ผ๋ง์ด ์ ์ฉ๋๋ค. ์ฌ์ฉ๋ฒ ์ค์น๋ฐฉ๋ฒ์ ๊ณต์ํ์ด์ง๋ฅผ ์ฐธ๊ณ ํ์. ๊ณต์ํ์ด์ง๋ฅผ ๋ฐ๋ผ ์ค์นํ๋ค๋ฉด ์ฌ์ฉ๋ฒ์ ๋ณ๊ฑฐ ์๋ค. function App() { return ( ); } export default App; ์ ํด์ง uti..
ํ์ฌ์์ 4deps์ ์นดํ
๊ณ ๋ฆฌ ๊ธฐ๋ฅ์ ๋ง๋ค์ด์ผ ํ๋๋ฐ ์ฌ๊ท ์ปดํฌ๋ํธ๋ฅผ ํ์ฉํด ๋ฐ๋ณต ์ฝ๋๋ฅผ ์ค์ผ ์ ์์์ต๋๋ค. 4deps๋ฅผ ๊ธฐ์ค์ผ๋ก ์ก์์ง๋ง ์ฌ๊ท๋ฅผ ์ฌ์ฉํ๋ฉด ๋ช deps๋ ๋ณด์ฌ์ค ์ ์์ฃ ! ์ฑ๋ฅ์ ์ธ ๋ฌธ์ ๋ ๋ณ๊ฐ์ง๋ง ๋ธ๋ผ์ฐ์ ์ ์ฑ๋ฅ์ด ๋ฐ๋ฌํ๋ฉด์ ์ด์ ๋๋ ๋ฌธ์ ๊ฐ ์๋ค ํ๋จํ์ต๋๋ค. ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ ์ฌ๊ท๋ ์๊ณ ๋ฆฌ์ฆ์ ํ๋๋ก ์ฃผ๋ก ์ฝ๋ฉํ
์คํธ ๋ฌธ์ ๋ฅผ ํ ๋ ๋ง์ด ์ ํ ์ ์๋๋ฐ, ๊ฐ์ฅ ๋ํ์ ์ธ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ์ฌ๋ก๋ก๋ ํผ๋ณด๋์น ์์ด์ด ์๋ค. const fibonacci = (num: number) => { if (num < 2) { return num; } return fibonacci(num - 1) + fibonacci(num - 2); }; ๊ฐ๋จํ๊ฒ ์ค๋ช
ํ์๋ฉด "์๊ธฐ ์์ ์ ํธ์ถํ๋ ํจ์"๋ฅผ ์ฌ๊ท ํจ์..
XSS (ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
) ์ด๋ฒ ๋ฉด์ ์์ XSS๊ฐ ๋ฌด์์ธ์ง ์ค๋ช
ํด ๋ฌ๋ผ๋ ์ง๋ฌธ์ ๋ฐ๊ณ ๋ณด์์ ์ด์๋ผ๊ณ ๋ง ์๊ณ ์์๋ ๋ถ๋ถ์ ๋ฐ์ฑํ๋ฉฐ ๊ธฐ๋กํด๋ณธ๋ค.๐
XSS๋ ? ์น ์์์ ๊ฐ์ฅ ๊ธฐ์ด์ ์ธ ์ทจ์ฝ์ ๊ณต๊ฒฉ ๋ฐฉ๋ฒ์ด๋ค. ์
์์ ์ธ ์ฌ์ฉ์๊ฐ ๊ณต๊ฒฉํ๋ ค๋ ์ฌ์ดํธ์ ์คํฌ๋ฆฝํธ๋ฅผ ๋ฃ๋ ๊ธฐ๋ฒ์ ๋งํ๋ฉฐ ๊ณต๊ฒฉ์ ์ฑ๊ณตํ๊ฒ ๋ ๊ฒฝ์ฐ ์ฌ์ดํธ์ ์ ์ํ ์ฌ์ฉ์๋ ์ฝ์
๋ ์ฝ๋๋ฅผ ์คํํ๊ฒ ๋๊ณ , ์๋์น ์์ ํ๋์ ์ํ์ํค๊ฑฐ๋ ์ฟ ํค, ์ธ์
ํ ํฐ ๋ฑ์ ์ ๋ณด๋ฅผ ํ์ทจํ๋ค. ๊ณต๊ฒฉ ๋ฐฉ๋ฒ โ๏ธ Stored XSS (์ ์ฅํ ํฌ๋ก์ค ์ฌ์ดํธ ์คํฌ๋ฆฝํ
) Stored Xss ๊ณต๊ฒฉ์ ๋ณด์์ด ์ทจ์ฝํ ์๋ฒ์ ์
์ฑ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ์ฌ ๋ฐ์์ํจ๋ค. ์๋ฒ์ ์
์ฑ ์คํฌ๋ฆฝํธ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ๋ฌ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง ๋ํ์ ์ธ ๋ฐฉ๋ฒ์ ๊ฒ์ํ, ์ฌ์ฉ์ ํ๋กํ, ๋๊ธ ๋ฑ์ ํตํด ์๋ฒ์..
debnounce๋ ? - debounce๋ ์ฌ๋ฌ ๊ฐ์ ์์ฐจ์ ์ด๋ฒคํธ ํธ์ถ์ ๋ง์ง๋ง(๋๋ ์ฒ์) ํ๋์ ํธ์ถ๋ง ํ๋๋ก ํ๋ ํ๋ก๊ทธ๋๋ฐ ๊ธฐ๋ฒ - ์ฃผ๋ก ๊ฒ์, ์คํฌ๋กค ๊ฐ์ ๋ฐ๋ณต์ ์ธ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๋ ์ฌ์ฉํ๋ฉฐ ์ ๋ช
ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ lodash๋ฅผ ์ค์นํ๋ฉด ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ค. - ๋ง์ฝ ํ์๊ฐ์
์์ ์ด๋ฉ์ผ์ ์ค๋ณตํ์ธ์ onChange ์ด๋ฒคํธ๋ก ์ฒดํฌํ๋ค๊ณ ํ์ ๊ฒฝ์ฐ ์ฌ์ฉ์์ ์
๋ ฅ๋ง๋ค API ํธ์ถ์ ํ๊ฒ ๋๋๋ฐ ์ด๋ฌ๋ฉด ๋์งํ ์๋ฒ ๋น์ฉํญํ์ ๋ง์ ์ ์๋ค. debouncing ์์ useEffect(() => { console.log(`http ์์ฒญ ${formData.email}`); }, [formData.email]); useEffect๋ฅผ ์ด์ฉํด email input์ด ์๋ฒ์ ๊ฐ์ ์์ด๋๊ฐ ์๋์ง ์ค๋ณตํ์ธ..
useState โญ๏ธ React์ state๋ ์ปดํฌ๋ํธ ๋ด๋ถ์ ๋ณ๊ฒฝ ๊ฐ๋ฅ ํ ๊ฐ์ด๋ค. ํจ์ํ ์ปดํฌ๋ํธ์์ useState ํ
์ ์ฌ์ฉํด ์ํ๋ฅผ ๋ณ๊ฒฝํ๋ค. import React, { useState } from 'react'; function App() { const [number, setNumber] = useState(0); return ( {number} ); } export default App; React ํจํค์ง์์ useState๋ฅผ ๋ถ๋ฌ์ import ํ ์ฌ์ฉํ ์ ์๋ค. useState์ ์ธ์์๋ ์ด๊ธฐ๊ฐ์ ํ ๋นํ๋ค. (๋ถ๋ฆฌ์ธ์ด๋ ๋ฐฐ์ด, ๊ฐ์ฒด๋ ํ ๋น ๊ฐ๋ฅ) useState๋ ๋ฐฐ์ด์ ๋ฐํํ๋๋ฐ ์ด๋ ์ฒซ๋ฒ์งธ number๋ ์์์ ํ์ฌ ์ํ, ๋๋ฒ์งธ ์์๋ Setterํจ์๋ฅผ ๋ฐํํ๋ค. setState..
๊ฐ์ธ ํ๋ก์ ํธ ๊ฐ์ธ ํ๋ก์ ํธ HODU์ต์ ์งํํ๋ ์ค ์ ํจ์ฑ๊ฒ์ฌ ๋ถ๋ถ์์ input๊ฐ์ด 1๊ฐ์ฉ ๋ฐ๋ฆฌ๋ ํ์์ด ๋์๋ค. ํ์๊ฐ์
input๊ฐ๋ค์ ์ ์ฅํ๊ณ ์๋ values ๊ฐ์ฒด์์ฑ values์์ ๊ตฌ์กฐ๋ถํดํ ๋นํ username, password๋ฅผ ์ ํจ์ฑ๊ฒ์ฌ ๋ก์ง์ ๋ฃ์ด์ฃผ๊ณ ์ด๋ฐ์์ผ๋ก onChange๋ฅผ ๊ฐ์งํ๋ฉฐ ๋ณ๊ฒฝํด ์ฃผ์๋๋ฐ ๋ฌธ์ ๋ ์ ํจ์ฑ test ์ ๊ทํํ์์ ๋ง๋ ๋ณ์์ ์ง์ state๊ฐ์ ๋ฃ์ผ๋ ๋ฐ์ํ ๋ฌธ์ ์๋ค. ์์ธ์ onChangeํจ์์ if๋ฌธ์ผ๋ก userNameRegExp, passwordRegExp ๋ฅผ ๋ฃ์๋์ state๋ setState๋ก ๋ณ๊ฒฝ๋์ง ์์ ๊ฐ์ด ์ ์ฉ๋๊ธฐ ๋๋ฌธ์ด๊ณ ์ด๊ฑด setState๊ฐ ๋น๋๊ธฐ๋ก ์๋ํ๊ธฐ ๋๋ฌธ์ด๋ค. ํด๊ฒฐ target๊ณผ targetName์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ isVal..