๐ Project8 [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ์ซ์ ์ผ๊ตฌ ํ ์คํธ ์ฝ๋ ๋ถ์ํ๊ธฐ ๐ ํ ์คํธ ์ฝ๋๋ฅผ ๋ถ์ํ๋ ์ด์ ๋ฌธ์ ๋ฅผ ํ์ด๋ด๊ธฐ ์ํด์๋ ๊ทธ ๋ฌธ์ ์์ ์๊ตฌํ๋ ๋ฐ๋ฅผ ์ ํํ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ต์ข ์ฝ๋ฉ ํ ์คํธ ๋ ๊ธฐ๋ฅ ์๊ตฌ ์ฌํญ๊ณผ ๋๋ถ์ด, ํ ์คํธ ์ฝ๋์์ ์๊ตฌํ๋ ๋ฐ๋ฅผ ์ ํํ๊ณ ๋น ๋ฅด๊ฒ ์๊ณ ์ ์ฝ๋๋ฅผ ์ ์ ์ด ํํค์ณ๋ณด๊ณ ์ ํ๋ค. ๋ ๋์๊ฐ, ์์ผ๋ก ๋จ์ ํ ์คํธ๋ฟ๋ง ์๋๋ผ ์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ ์ง๋ณด๊ณ ์ถ์๋ค. ํ๋ฆฌ์ฝ์ค ๊ธฐ๊ฐ์๋ '๊ทธ๋ ๊ตฌ๋~' ํ๊ณ ๋๊ฒผ๋ ํ ์คํธ ์ฝ๋๋ฅผ ํ๋ฆฌ์ฝ์ค ์ข ๋ฃ ํ์ ์๊ฐ์ ๋ด์ด ๊น๊ฒ ํ๋ณด์๋ค. ๋๋ถ์ด, Jest๋ ํ ์คํธ ์ฝ๋ ๊ด๋ จ ๊ฐ๋ ๋ ํจ๊ป ๊ณต๋ถํด ๋ณด์๋ค. ์ฐธ๊ณ ๋ก ์ ์ฒด ํ ์คํธ ์ฝ๋๋ ์ฐ์ํํ ํฌ์ฝ์ค repo์์๋ ๋ณผ ์ ์๋ค. 1๏ธโฃ ์์! ์ผ๋จ ๋ถ๋ฌ์ค๊ธฐ // App ์ปดํฌ๋ํธ๋ฅผ ๋ถ๋ฌ์ด import App from '../src/App.js'; // @woowa.. 2023. 11. 24. [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 6๊ธฐ ์ข ๋ฃ ํ๊ณ ๐ฅบ ํ๋ฆฌ์ฝ์ค๊ฐ ๋๋ฌ๋ค ๐พ ํ๋ฆฌ์ฝ์ค ๋ฐ์์ทจ โพ๏ธ 1์ฃผ ์ฐจ ์ซ์ ์ผ๊ตฌ ๋ฏธ์ PR โพ๏ธ 1์ฃผ ์ฐจ ์ซ์ ์ผ๊ตฌ ๋ฏธ์ ํ๊ณ ๐๏ธ 2์ฃผ ์ฐจ ์๋์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์ PR ๐๏ธ 2์ฃผ ์ฐจ ์๋์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์ ํ๊ณ ๐ฑ 3์ฃผ ์ฐจ ๋ก๋ ๋ฏธ์ PR ๐ฑ 3์ฃผ ์ฐจ ๋ก๋ ๋ฏธ์ ํ๊ณ ๐ 4์ฃผ ์ฐจ ํฌ๋ฆฌ์ค๋ง์ค ํ๋ก๋ชจ์ ๋ฏธ์ PR ๐ 4์ฃผ ์ฐจ ํฌ๋ฆฌ์ค๋ง์ค ํ๋ก๋ชจ์ ๋ฏธ์ ํ๊ณ โ๏ธ ์์ฝํ์๋ฉด ์ด๋ ๋ ํ๋ค์์ง๋ง ๋ง์ด ๋ฐฐ์ ๋ค. ๋ปํ ์ด์ผ๊ธฐ์ง๋ง ์ ๋ง ๊ทธ๋ ๋ค. ๋ฐฐ์ด ์ ์ด๋ผ๊ณ ํ๋ฉด.. ๋ชจ๋ฅด๋ ๊ฒ์ ์๊ฒ ๋ ๊ฒ๋ ์์ง๋ง, ๋ถ์กฑํ ์ ์ ์๊ฒ ๋์ด '๊ณต๋ถํ ๊ฑฐ๋ฆฌ'๋ฅผ ๋ง์ด ๋ง๋ ๊ฒ๋ ํฐ ์ํ์ด๋ค. ํ์ตํ ๋ ๊ฐ์ฅ ์ค์ํ ๊ฒ ์ค์ ํ๋๊ฐ ๋ชจ๋ฅด๋ ๊ฒ์ ์๋ ๊ฒ์ด๋ผ ์๊ฐํ๋ค. ์ง๊ธ๊น์ง๋ ๋ด๊ฐ ๋ถ์กฑํ๊ฑฐ๋ ๋ชจ๋ฅด๋ ๊ฒ์ด ๋ญ์ง ์ ๋ชฐ๋๋ค๋ฉด, ํ๋ฆฌ์ฝ์ค๋ฅผ ํตํด ๋ ์ฑ์ ๋๊ฐ์ผ ํ ๊ฒ.. 2023. 11. 17. [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 6๊ธฐ 4์ฃผ์ฐจ ํฌ๋ฆฌ์ค๋ง์ค ํ๋ก๋ชจ์ ๋ฏธ์ ํ๊ณ ๊ฐ์ธ์ ์ผ๋ก๋ ๋ฏธ์ ์ํ์ ํตํด ์ฑ์ฅํ ๊ณผ์ ์ ๊ธฐ๋กํ๊ณ , ๋๊ตฐ๊ฐ์๊ฒ๋ ์ด ๊ธ์ด ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค :) ๐ ๏ธ 4์ฃผ ์ฐจ ๊ฒฐ๊ณผ๋ฌผ 4์ฃผ ์ฐจ ๋ฏธ์ : ํฌ๋ฆฌ์ค๋ง์ค ํ๋ก๋ชจ์ PR ๐ฎ 4์ฃผ ์ฐจ ๋ฉ์ผ ๋ด์ฉ 1๏ธโฃ 4์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ 3์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ๋ ํจ์ ๋ถ๋ฆฌ์ ํจ์๋ณ ํ ์คํธ ์์ฑ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ ์ง๋ 3์ฃผ ์ฐจ ๋ชฉํ๊ฐ 4์ฃผ ์ฐจ๊น์ง ์ด์ด์ง๊ธฐ์ (1) ํด๋์ค(๊ฐ์ฒด)๋ฅผ ๋ถ๋ฆฌํ๋ ์ฐ์ต, (2) ๋๋ฉ์ธ ๋ก์ง์ ๋ํ ๋จ์ ํ ์คํธ ์์ฑ ์ฐ์ต ๋ ๊ฐ์ง๋ฅผ ๋ ์ฐ์ตํ๋ผ๋ ์ค๋ช ์ด ์์๋ค. ๋คํ์ด์๋ค. ๋ญ๊ฐ ๋ ์ถ๊ฐ๊ฐ ๋์๋ค๋ฉด ๋ฏธ์ ๋์ด๋๊น์ง ๊ฒน์ณ์ ธ ํ๋ค์์ ํ ๋ฐ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๋ด์ฉ์ ๋ '๊ณ ๋ํ'ํ๋ฉด ๋๊ฒ ๋ค ์๊ฐํ๋ค. 2๏ธโฃ ํด๋์ค(๊ฐ์ฒด) ๋ถ๋ฆฌํ๋ ์ฐ์ต ํนํ ํด๋์ค(๊ฐ์ฒด)๋ฅผ ๋ถ๋ฆฌํ๋ ๊ฒ์ ๋ํด ๋ ๊น๊ฒ ๊ณ ๋ฏผํด ๋ณผ ์ ์.. 2023. 11. 15. [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 6๊ธฐ 3์ฃผ์ฐจ ๋ก๋ ๋ฏธ์ ํ๊ณ ๊ฐ์ธ์ ์ผ๋ก๋ ๋ฏธ์ ์ํ์ ํตํด ์ฑ์ฅํ ๊ณผ์ ์ ๊ธฐ๋กํ๊ณ , ๋๊ตฐ๊ฐ์๊ฒ๋ ์ด ๊ธ์ด ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค :) ๐ ๏ธ 3์ฃผ ์ฐจ ๊ฒฐ๊ณผ๋ฌผ 3์ฃผ ์ฐจ ๋ฏธ์ : ๋ก๋ PR ๐ฎ 3์ฃผ ์ฐจ ๋ฉ์ผ ๋ด์ฉ 1๏ธโฃ 3์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ 2์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ๋ ํจ์ ๋ถ๋ฆฌ์ ํจ์๋ณ ํ ์คํธ ์์ฑ์ด ๋ชฉํ์๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒ 3์ฃผ ์ฐจ ๋ฏธ์ ์์๋ 2์ฃผ ์ฐจ์์ ํ์ตํ ๊ฒ์ ๋ํด (1) ํด๋์ค(๊ฐ์ฒด)๋ฅผ ๋ถ๋ฆฌํ๋ ์ฐ์ต, (2) ๋๋ฉ์ธ ๋ก์ง์ ๋ํ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ๋ ์ฐ์ต์ด๋ผ๋ ๋ ๊ฐ์ง ๋ชฉํ๊ฐ ์ถ๊ฐ๋์๋ค. 2๏ธโฃ ํ ์คํธ ์ฐ์ต ์์ง๊น์ง ๋๋ฉ์ธ ๋ก์ง๊ณผ ๋จ์ ํ ์คํธ์ ๊ฐ์ ์ฉ์ด๋ค์ด ๋ฏ์ค ์ ์์ง๋ง, ์ผ๋จ ์์ ๊ธฐ๋ฅ๋ถํฐ ํ ์คํธ๋ฅผ ์์ฑํ๋ ์ฐ์ต์ ์์ํด ๋ณด๊ธฐ๋ก ํ๋ค. 1์ฃผ ์ฐจ ํผ๋๋ฐฑ์์ ์ ๊ณต๋ ์ซ์ ์ผ๊ตฌ ํผ๋๋ฐฑ ๊ฐ์ ํ๋ฐ๋ถ์ ๋จ์ ํ ์คํธ๋ฅผ ์์ฑํ.. 2023. 11. 8. [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 6๊ธฐ 2์ฃผ์ฐจ ์๋์ฐจ ๊ฒฝ์ฃผ ๋ฏธ์ ํ๊ณ ๊ฐ์ธ์ ์ผ๋ก๋ ๋ฏธ์ ์ํ์ ํตํด ์ฑ์ฅํ ๊ณผ์ ์ ๊ธฐ๋กํ๊ณ , ๋๊ตฐ๊ฐ์๊ฒ๋ ์ด ๊ธ์ด ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค :) ๐ ๏ธ 2์ฃผ ์ฐจ ๊ฒฐ๊ณผ๋ฌผ 2์ฃผ ์ฐจ ๋ฏธ์ : ์๋์ฐจ ๊ฒฝ์ฃผ PR ๐ฎ 2์ฃผ ์ฐจ ๋ฉ์ผ ๋ด์ฉ 1๏ธโฃ ์ง๋ 1์ฃผ ์ฐจ ๋ฏธ์ ์ ์ด์ด.. 1์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ๋ git, ๋ถ์ผ๋ณ ์ธ์ด, ๊ทธ๋ฆฌ๊ณ ๋ฏธ์ ์ฌ์ดํด์ ์ต์ํด์ง๋ ๊ฒ์ด์๋ค. ๊ทธ๋ฆฌ๊ณ 2์ฃผ ์ฐจ๋ถํฐ๋ ์ฐํ ์ฝ ๋ฏธ์ ๊ณผ์ ์ ์ ๋๋ก ๋ง๋ณผ ์ ์๋ ๊ณผ์ ์ธ '์๋์ฐจ ๊ฒฝ์ฃผ' ๊ฒ์์ด์๋ค. ์๊ตฌ์ฌํญ์ ์ดํดํ๋ ๊ฒ ์ด๋ ค์ธ ์ ์์ง๋ง ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ์ ํ์ ํ๋ ๊ฒ๋ ์ข์ ๊ฐ๋ฐ์์ ์ญ๋ ์ค ํ๋๋ค. ๊ณ ๋ฏผ ์์ด ๋ฌด์์ ์ง๋ฌธํ๊ฑฐ๋ ๋ค๋ฅธ ์ฌ๋์ ๋์์ ๋ฐ๊ธฐ ์ ์ ์ค์ค๋ก ๊ณ ๋ฏผํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ๋ณด๋ ๊ฒ์ ์ถ์ฒํ๋ค๊ณ ํ๋ค. 2๏ธโฃ 2์ฃผ ์ฐจ ๋ฏธ์ ์ ๋ชฉํ 2์ฃผ ์ฐจ ๋ฏธ์ ์์๋ 1์ฃผ ์ฐจ์์ .. 2023. 11. 1. [์ฐ์ํํ ํฌ์ฝ์ค] ์ฐํ ์ฝ ํ๋ฆฌ์ฝ์ค 6๊ธฐ 1์ฃผ์ฐจ ์ซ์ ์ผ๊ตฌ ๋ฏธ์ ํ๊ณ ๊ฐ์ธ์ ์ผ๋ก๋ ๋ฏธ์ ์ํ์ ํตํด ์ฑ์ฅํ ๊ณผ์ ์ ๊ธฐ๋กํ๊ณ , ๋๊ตฐ๊ฐ์๊ฒ๋ ์ด ๊ธ์ด ๋์์ด ๋์์ผ๋ฉด ํ๋ ๋ง์์ ๋๋ค :) ๐ ๏ธ 1์ฃผ ์ฐจ ๊ฒฐ๊ณผ๋ฌผ 1์ฃผ ์ฐจ ๋ฏธ์ : ์ซ์ ๊ฒ์ ์ผ๊ตฌ PR ๐ฎ 1์ฃผ ์ฐจ ๋ฏธ์ ๋ฉ์ผ ๋ด์ฉ 1๏ธโฃ ๊ฐ๋ฒผ์ด ๋ฏธ์ ..? 1์ฃผ ์ฐจ ๋ฏธ์ ์ธ '์ซ์ ์ผ๊ตฌ ๊ฒ์'์ ๋ณด๊ณ ๋ฐ๊ฐ์ ๋ค. ์ง๋ ๊ธฐ์๋ค์์ ์์ฃผ ๋์๋ ๋ฏธ์ ์ด์๊ธฐ ๋๋ฌธ์ด๋ค. (ํ์๋ 6๊ธฐ์ ์ง์ํ๊ณ ) ์ง๋ 5๊ธฐ์์๋ 2์ฃผ ์ฐจ ๋ฏธ์ ์ด์๋๋ฐ ์ด๋ฒ์ 1์ฃผ ์ฐจ์ ๋ฐฐ์ ๋ผ์ ์ค์? ํ๋ค. ์๋ง ์ง๋ ๊ธฐ์ 1์ฃผ ์ฐจ '์จ๋ณด๋ฉ' ๋ฏธ์ ์ด ๊ธฐ๋ฅ ๊ตฌํ๋ณด๋ค๋ ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด์ ๊ฐ๊น์์ ๊ทธ๋ฐ ๊ฒ ์๋๊น? ํ๋ ์ถ์ธก์ ํด๋ณด์๋ค. ์ฒซ ๋ฉ์ผ ๋ด์ฉ์ ์ํ๋ฉด, ๊ฐ๋ฐ ํ๊ฒฝ ์ธํ ๊ณผ Git ๋ฑ ๋ฏธ์ ์ธ์๋ ์ถ๊ฐ๋ก ์ตํ์ผ ํ๋ ๋ถ๋ถ๋ค์ด ์์ด '๊ฐ๋ฒผ์ด ๋ฏธ์ '์ผ๋ก ์ค๋นํ๋ค๊ณ ํ๋ค. ์ ๋ง ๊ฐ.. 2023. 10. 25. [๐ ๋ง์ง ๊ณต์ ์ฌ์ดํธ] ๋ฆฌ์กํธ๋ก CRUD ๊ตฌํํ๊ธฐ ๐ ๏ธ ๊ตฌํํ ๊ธฐ๋ฅ ์น ์ฌ์ดํธ ๋ด์์ ์ฌ์ฉ์๋ค์ด ์์ ๋กญ๊ฒ ๋ง์ง ์ถ์ฒ ๊ธ์ ์ฌ๋ฆด ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ณ ์ถ๋ค. As-Is: ํ์ฌ๋ ๊ธฐ์กด์ ์ฌ๋ผ์จ ๊ธ์ ๋ณผ ์ ์๊ธฐ๋ง ํจ โก๏ธ To-be: ๋ง์ง ์ ๋ณด ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๊ธ์ Create, Read, Update ๊ทธ๋ฆฌ๊ณ ์ญ์ ๋ฒํผ์ ๋๋ฅด๋ฉด Delete ํ ์ ์๋ค. ๐ก ๊ตฌํ ๊ณผ์ - Create 1. input ์นธ์ ๋ง๋ ๋ค. input์ ํ์ ์ ์๋์ ๊ฐ์ด ๋ค์ํ๋ ๊ณจ๋ผ์ ํ์ฉํด ๋ณด์. // ์์๋๋ก or ๊ทธ๋ฅ 2. onChange ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ํ์ฉํ๋ค. onChange ๋๋ onInput๋ผ๋ ์ด๋ฒคํธ ํธ๋ค๋ฌ๋ฅผ ์ฌ์ฉํด ์ฌ์ฉ์๊ฐ ์ ๋ฌด์ธ๊ฐ ์ ๋ ฅ ์, ์ค๊ดํธ ์์ ์๋ ์ฝ๋๊ฐ ์คํ๋๋๋ก ํ๋ค. {console.log("์ฌ์ฉ์๊ฐ ์ ๋ ฅํ๋ฉด ๋ํ๋๋ ๋ด์ฉ")}} /> ์.. 2023. 5. 16. [๐ ๋ง์ง ๊ณต์ ์ฌ์ดํธ] ๋ชจ๋ฌ์ฐฝ ๊ฐ์ ๋์ ์ธ UI ๋ง๋ค๊ธฐ ๐ ๏ธ ๊ตฌํํ ๊ธฐ๋ฅ ์ฑ์์ญ, ๊ฐ๋จ์ญ, ์๊ตฌ์ ์ญ ์ด ์ธ ๊ฐ์ ์ ๋ชฉ์ด ์๊ณ ํ์ฌ ๋์์ง๋ ๋ชจ๋ฌ์ฐฝ์๋ ์ ๋ชฉ์ด ์๊ตฌ์ ์ญ์ผ๋ก๋ง ๋ณด์ด๋๋ฐ, ๊ฐ ์ ๋ชฉ์ ํด๋ฆญํ๋ฉด ๊ทธ์ ๋ง๋ ๋ชจ๋ฌ์ฐฝ์ ๋์ฐ๊ณ ์ถ๋ค. ์๋ฅผ ๋ค์ด, ์ฑ์์ญ ์ ๋ชฉ์ ํด๋ฆญํ๋ฉด ์ฑ์์ญ ๋ง์ง์ ์๊ฐํ๋ ๋ชจ๋ฌ์ฐฝ์ด ๋์์ง๋๋ก ๋ง์ด๋ค. As-Is: 3๊ฐ์ ์ ๋ชฉ์ด ์์ผ๋ ํ์ฌ๋ ๋ชจ๋ฌ์ฐฝ์ 1๊ฐ์ ์ ๋ชฉ์ผ๋ก๋ง ๋ธ โก๏ธ To-be: ๊ฐ ์ ๋ชฉ์ ํด๋ฆญํ๋ฉด ํด๋น ์ ๋ชฉ์ ๊ฐ์ง ๋ชจ๋ฌ์ฐฝ์ ๋์ฐ๊ณ ์ถ์ ๐ง ์ฒ์ ์์ฑํ ์ฝ๋ ์ฒ์์๋ ์ ๋ชฉ๋น 1๊ฐ์ฉ ์ด 3๊ฐ์ state๋ฅผ ๋ง๋ค์ด ์ฃผ์ด์ผ ํ๋, ์๋๋ฉด ํ์ดํ ์ธ๋ฑ์ค์ ๋ง๊ฒ props๋ฅผ ๋ด๋ ค์ฃผ์ด์ผ ํ๋ ์๊ฐํ๋ค. ์ผ๋จ์ modalTitle์ด๋ผ๋ state๋ฅผ ์์ฑํด์ฃผ๊ณ , ์ผํญ์ฐ์ฐ์ ์์ ๋ฃ์ด์ฃผ์๋ค. import './App.css'; import lo.. 2023. 5. 11. ์ด์ 1 ๋ค์