ํญ์ ๋ฌด์ธ๊ฐ๋ฅผ ์์ํ๋ค๋ ๊ฒ์, ํฐ ๊ฒฐ์ฌ๊ณผ ๊ฐ์ค๊ฐ ํ์ํ ์ผ์ด๋ค. ์ง๊ธ ์์ฑํ๊ณ ์๋ ์ด ํ๊ณ ๋ก์ ์์์ ์ด๋ป๊ฒ ์ธ ์ง ๊ฒฐ์ ํ๋ ๊ฒ์๋, ๊ฝค ๊ธด ์๊ฐ์ ๊ณ ๋ฏผ ๋์์์ผ ํค๋ณด๋์ ์์ ์ฌ๋ฆด ์ ์์๋ค. ๋์๊ฒ ์์ด์ ํญ์ ์์๋ค์ด ์ด๋ ค์ ๋ ์ด์ ๋, ์์ง ์ผ์ด๋์ง๋ ์์ ๋์ ๋ํ ๋๋ ค์ ๋๋ฌธ์ด์๋ค. ์ด๋ฌํ ๊ฑฑ์ ๋ค์ด ๊ธ์ ์ ์ผ๋ก ์์ฉํ ๋์๋ ์ฒ ์ ํ ์ค๋น์ ๊ณผ์ ๋ค์ ํตํด ๋ณด๋ค ์์ฑ๋ ๋์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ถํ ์ ์์์ง๋ง, ๊ทธ๋ ์ง ์์ ๋์๋ ๋ ์์ ์ '์๋ฒฝ์ฃผ์'๋ผ๋ ํ์ ๊ฐ๋ฌ ๋ฃ์ด์ ์ธ๋ถ์ ์ธ ๊ฒ์ ์ง์ฐฉํ์ฌ ์ ์ฒด์ ์ธ ๊ทธ๋ฆผ์ ๋ณด์ง ๋ชปํ๋ ๊ฒฝ์ฐ ์ญ์ ์กด์ฌํ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์, ์ด๋ฒ 1์ฐจ ํ๋ก์ ํธ ์ญ์ ๋ด๊ฐ ์์ ์ ์ ๊ฐ์ก๋ ์กฐ๊ธ์ ๊ธด์ฅ, ์ค๋ ๊ณผ ๋๋นํ์ฌ ๋ง์น๊ณ ๋ ๋ค์ ํํ์ ์์ฌ์ ์ญ์ ๋ง์๋ ํ๋ก์ ํธ๋ก ๊ธฐ์ต์ ๋จ์๋ค. ํ๊ณ ์ ์๋๋ถํฐ ํํ์ ์์ฌ์์ด ๋ง์๋ค๋ ๋ถ์ ์ ์ธ ์ฝ๋ฉํธ๋ฅผ ์์ฑํ ์ด์ ๋, 'ํํ๋ฅผ ์ํ ์ ์๋ ๋ฒ' ์ญ์ ์ค์ํ๋ค๋ ์๊ฐ์ด ๋ค์ด์์ด๋ค. ํํ๋ฅผ ๋ฐ์ฑ์ผ๋ก, ๋ฐ์ฑ์ ๋ฐฐ์์ผ๋ก ๊ฐ๊ณต์์ผ ๋๊ฐ๋ฉด ์ด๋ ์ฑ์ฅ์ ๋ฐ๊ฑฐ๋ฆ์ด ๋ ์ ์๋ค. ํ๊ณ ์ ๊ธฐ๋ฅ ์ญ์ ๊ทธ๋ฐ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๋ด๊ฐ ์ด๋ค ์ฑ์ฅํต์ ๊ฒช์๊ณ , ๊ทธ๊ฒ์ ๋ค์ ๊ฒช์ง ์๊ฒ ์ ์ด๋๋ ๊ฒ. ๊ทธ๋ ๋ค๋ฉด ์ด์ ๋ถํฐ ๋ด๊ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ์ฑ์ฅํ๋์ง ์ ์ด๋ณด๊ณ ์ ํ๋ค.
ํด๋ก ํ๋ ์ฌ์ดํธ: lululemon - athletic apparel+ technical clothing
ํ๋ช : ์ ๋์์ด์
1์ฐจ ํ๋ก์ ํธ๋ก ํด๋ก ์ ์งํํ๊ฒ ๋ ์ฌ์ดํธ๋, ํ๋ฆฌ๋ฏธ์ ๊ธฐ๋ฅ์ฑ ์คํฌ์ธ ์จ์ด ๋ธ๋๋์ธ ๋ฃฐ๋ฃจ๋ ๋ชฌ์ด์๋ค. ์๋ ์ฒ์ ํด๋ก ์ ํ๋ ค๊ณ ํ๋ ์ฌ์ดํธ๋, ๋ฃฐ๋ฃจ๋ ๋ชฌ์ ํ๊ตญ ์ง์ ์ฌ์ดํธ์์ง๋ง, ๋ญ๊ฐ UI, ๊ธฐ๋ฅ์ ์ธก๋ฉด๋ค์ ๋ถ์ํด ๋ณด์์ ๋ ๋ฃฐ๋ฃจ๋ ๋ชฌ ์์ฒด์์ ์ ์ํ ๋๋์ด ์๋๋ผ ์ธ์ฃผ๋ก ์ ์ํ ์ฌ์ดํธ๋ผ๋ ๋๋์ ๊ฐํ๊ฒ ๋ฐ์์ ๊ฒฐ๊ตญ ๋ฃฐ๋ฃจ๋ ๋ชฌ์ ๋ฏธ๊ตญ ์ฌ์ดํธ๋ฅผ ํด๋ก ํ๊ธฐ๋ก ํ์๋ค.
2022.05.23 ~ 2022.06.03
FrontEnd 4๋ช , BackEnd 2๋ช
FrontEnd - HTML/CSS, JavaScript, React.js , React-Router, React-Router-DOM, Sass
BackEnd - Django
ํ์ ๋๊ตฌ๋ก๋ Trello๋ฅผ ํ์ฉํ์๋๋ฐ, ์๋ฌด๋๋ ๋ค๋ค ์ฒ์ ์ฌ์ฉํด๋ ํ๋ก๊ทธ๋จ์ด๋ค ๋ณด๋ ์ ํ์ฉํ์ง ๋ชปํ ์ฑ ํ๋ก์ ํธ๋ฅผ ์ข ๋ฃํ ๋๋์ด์๋ค. ์ด๋ฐ์๋ ๊ทธ๋ฅ ๊ฐ์ ์งํํ๊ณ ์๋ ์์ ์ ์ ์ฒด์ ์ธ ๋ด์ฉ๋ง ์ ์ด๋์์๊ณ , ์ ์ง ๋ฉํ ๋๊ป์ Trello๋ฅผ ์ ๊ทน์ ์ผ๋ก ํ์ฉํ๋ผ๋ ํผ๋๋ฐฑ์ด ์๊ณ ๋ ๋ค์๋ ์กฐ๊ธ ๋ ์ธ๋ถ์ ์ธ ํฐ์ผ๋ค์ ์์ฑํ์์ง๋ง ์ด๊ฒ๋ค์ด ๋ณธ์ธ์ To-Do List ๊ฐ์ ๊ธฐ๋ฅ์ผ๋ก๋ง ์ฌ์ฉ๋๊ณ ๊ฒฐ๊ตญ ์๋ก์๊ฒ ๊ณต์ ๋์ด ๊ฐ๊ฐ ๋ฌด์จ ์์ ์ ํ๊ณ ์๋์ง, ์ธ์ mergeํ์ฌ ๊ฐ์ด ์์ ํ ์ ์๋์ง์ ๊ฐ์ ์ค์ง์ ์ธ ํ์ ๋๊ตฌ๋ก๋ ์ ํ์ฉ๋์ง ๋ชปํ ๊ฒ ๊ฐ์ ์์ฌ์์ด ๋จ๋๋ค.
๋ค๋ง, ์ธ๋ถ์ ์ผ๋ก ํฐ์ผ์ ์์ฑํ๊ฒ ๋ ๋ค๋ก๋ ๋ด๊ฐ ์ธ์ ๊น์ง ๋ฌด์์ ์์ ํด์ผ ํ ์ง, ๋ ๋ญ๋ฅผ ๋๋ง์ณค๊ณ ๊ทธ๋ ๋ฌด์จ ๊ธฐ๋ฅ๋ค์ ์ค์ ์ ์ผ๋ก ์์ ํ์๋์ง์ ๋ํด ์๊ธฐ์์ผ ์ค ์ ์์๋ค๋ ์ ์ ๋ํด์๋ ์ข์ ๊ธฐ์ต์ผ๋ก ๋จ์์๋ค.
Product List ๊ธฐ๋ณธ UI์ scss๋ฅผ ๊ตฌํํด ๋๊ณ ๋์, ๋ฐฑ์๋๊ฐ API ๋ช ์ธ์๋ฅผ ๋ณด๋ด์ฃผ์ด์ผ ๋ค์ค ํํฐ๋ง๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ๊ตฌํํ ์ ์์๊ธฐ ๋๋ฌธ์, ๊ทธ ์ฌ์ด์ ๋น ์๊ฐ ๋์ ํด์ฉ๋์ด ๋ด๋นํ์ จ๋ Footer ์ปดํฌ๋ํธ ๊ตฌํ์ ๋์๋๋ ธ๋ค.
์ฒ์์๋, Footer ์ ๋์ผ ๊ธ๋ฐฉ ํ๋ค๋ฅ ์ง๋ฒ๋ฆฌ๊ณ ๋ค์ ๋ด ํ์ด์ง ๊ธฐ๋ฅ ๊ตฌํํ๋ ๊ฑฐ ๊ณ ๋ฏผํด๋ด์ผ์ง๋ผ๋ ์๊ฐ์ผ๋ก ์ํ์์ง๋ง, ์ธ๋ฒ์ Pull Request ํผ๋๋ฐฑ ์์ ๋์ master branch์ merge ๋ ์ ์์๋ค.
Footer ๊ฐ์ ๊ฒฝ์ฐ์๋, ๋ชจ๋ ํ์ด์ง์ ๊ณ ์ ์ ์ผ๋ก ๋ถ์ด์๋ ๋ถ๋ถ์ด๊ณ ๋ด๋ถ ๋ด์ฉ๋ ๋ณํ์ง ์๊ธฐ ๋๋ฌธ์ ์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ map์ผ๋ก ๋๋ ค์ฃผ์๋๋ฐ, ๊ทธ mapping ๋ก์ง์ ์ง๋๋ฐ์ ์์ด์ ์๊ฐ์ด ์์๋์์๋ค.
export const FOOTER_LIST = [
{
id: 1,
title: 'MY ACCOUNT',
subtitle: [
{ id: 1, name: 'Sign in' },
{ id: 2, name: 'Register' },
{ id: 3, name: 'Order Status' },
{ id: 4, name: 'Returns' },
],
},
{
id: 2,
title: 'HELP',
subtitle: [
{ id: 1, name: 'COVID-19 FAQ' },
{ id: 2, name: 'Services' },
{ id: 3, name: 'Ordering' },
{ id: 4, name: 'Shipping Policy' },
{ id: 5, name: 'Returns' },
{ id: 6, name: 'Sizing' },
{ id: 7, name: 'Our Products' },
],
},
{
id: 3,
title: 'ABOUT US',
subtitle: [
{ id: 1, name: 'Our Business' },
{ id: 2, name: 'Media' },
{ id: 3, name: 'Investors' },
{ id: 4, name: 'Strategic Sales' },
{ id: 5, name: 'LuluIsher Collective' },
{ id: 6, name: 'Sweat Collective' },
],
},
(...)
map ์์ ๋ค์ map์ ๋๋ฆฌ๋ ์์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์, Westagram์์ Mock data์ ๊ฐ Feed ๋ณ ๋ค๋ฅธ ๋๊ธ์ ์ ์ฉํ ๋ ์ฌ์ฉํ๋ ์ฝ๋์๋๋ฐ ๊ฐ์ ๋ก์ง์ ์ฌ์ฉํ๋ ๊ธฐ๋ฅ์ธ์ง์ ๋ํ ์ ๊ทผ์ด ๋ถ์กฑํ๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋๋ ์ด๋ฒ ๊ธฐํ์ ์ด๋ ๊ฒ ๋ค์ ํ๋ฒ ์ง๊ณ ๋์ด๊ฐ์ ์์ผ๋ก ๋น์ทํ ๋ก์ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ค๋ณต mapping์ ์ต์ํ๊ฒ ์ฌ์ฉํ ์ ์์ ๊ฒ ๊ฐ๋ค.
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ๊ฐ์ฅ ์ ๋ฅผ ๋จน์๋ ๋ถ๋ถ์ Product List Component ๊ตฌํ์ด์๋ค. ์ค์ ๋ก BackEnd์ ํต์ ์ ํ๊ธฐ ์ด์ ์ Mock data๋ก๋ง ๋ฐ์ดํฐ๋ฅผ fetchํด์ ์ฌ์ฉํ์ ๋๋, ๋ง์ฐํ๊ฒ๋๋ง ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ค๋ ๋ก์ง์ด ์ฝ๋ค๊ณ ์๊ฐํ์๋ค. ํ์ง๋ง ๋ค์ค ํํฐ๋ง, Sorting๊ณผ ๊ฐ์ด ์ถ๊ฐ์ ์ผ๋ก parameter๋ฅผ ๋ณ๊ฒฝํด์ค์ผํ๋ ๊ธฐ๋ฅ๋ค์ด ์ถ๊ฐ๋๋ฉด์ ์ ๋ง ๊ฟ์์๋ ๊ทธ ๋ก์ง์ ๋ํด ๊ณ ๋ฏผํ ์ ๋๋ก ๊ฐ์ด ์กํ์ง ์์์๋ค.
๊ทธ๋์ ์ฒ์์๋ ์ ๋ง ํผ์์๋ ๋์ ํ ์๊ฐ์ด ๋์ง ์์์, ๋ค๋ฅธ ์กฐ์์ ๊ฐ์ Product List ๊ตฌํ์ ๋ด๋นํ๊ณ ๊ณ์ ํ์๋์ ์ฝ๋๋ฅผ ์ฐธ๊ณ ํ์ฌ ๋์์ ๋ฐ์์๋ค.
const [filterValue, setFilterValue] = useState({
categoryValue: '',
sizeValue: '',
colorValue: '',
activityValue: '',
sortValue: '',
offValue: ''
});
const handleFilter = (value, name) => {
setFilterValue(prev => {
return { ...prev, [name]: value };
});
useEffect(() => {
const queryString = `?${
filterValue.categoryValue ? `sub_category=${filterValue.categoryValue}` : ''
} &
${filterValue.sizeValue ? `size=${filterValue.sizeValue}` : ''
} &
${filterValue.colorValue ? `color=${filterValue.colorValue}` : ''
} &
${filterValue.activityValue ?
`activity=${filterValue.activityValue}` : ''
} &
${filterValue.sortValue ?
`sort=${filterValue.sortValue}` : ''
}`;
navigate(queryString);
},
[filterValue]);
์ด๋ ๊ฒ state์ query Paramter๋ค์ ๊ธฐ๋ณธ ๊ฐ์ ์ ์ฅํด ๋ ๋ค, ๊ฐ ์นดํ ๊ณ ๋ฆฌ button์ onClick์ด๋ onChange ์ด๋ฒคํธ๋ค์ด ์ผ์ด๋ ๋ ๋ง๋ค ๊ทธ ๋ฒํผ์ value ๊ฐ์ผ๋ก state๋ฅผ ์ ๋ฐ์ดํธํ๊ณ , ๊ทธ ์ ๋ฐ์ดํธ๊ฐ ์ผ์ด๋๋ฉด useEffect๋ฅผ ํตํด query Parameter๊ฐ ๋ณ๊ฒฝ๋๋ ์์ ๋ก์ง์ด์๋ค. ๊ทธ๋ฌ๋ ์ด ์ฝ๋๋ก ๋ค์ค ํํฐ๋ง์ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์๋ก๊ณ ์นจ์ด ์ผ์ด๋ ๋๋ง๋ค url์ด ์ด๊ธฐํ๋์ง๋ง, pagination์ ํ์ด์ง๊ฐ ๋์ด๊ฐ๊ณ ๋ค์ ์๋ก๊ณ ์นจ์ด ๋์์ ์์ ์ด์ location.search๊ฐ ๋จ์์๋ ๋ฌธ์ ์ ์ด ์์๋ค.
๊ทธ๋์ ๋ค์ ๊ณ ๋ฏผ์ ๋ฌดํ ๋ฃจํ์ ๋น ์ง๊ณ ๋ ๋ค, ๋ด๊ฐ ์ค์ค๋ก ์๊ฐํด ๋ธ ๋ก์ง์ ์์ ๊ฐ์ ์ฝ๋์๋ค. ์ฌ์ค ์ด ์ฝ๋ ์ญ์, ๋์ผ ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๋ฒํผ์ ํด๋ฆญํ ์์ query parameter ๊ฐ์ด ๋ฎ์ด ์์์ง๋ ๊ฒ์ด ์๋๋ผ ๊ทธ ๋ค์ ๊ทธ๋๋ก ๋ถ๊ฒ ๋๋ ์์ฃผ ์ปค๋ค๋ ๋จ์ ์ด ์์ง๋ง, ์ด๋ป๊ฒ ๋ค์ค ํํฐ๋ง์ ํ ์ ์์๊น ์ค์ค๋ก ๊ณ ๋ฏผํ๋ค๊ฐ ๋ด ์๊ฐ๋ง์ผ๋ก ๊ตฌํํด๋ธ ์ฝ๋๋ผ๋ ์ ์์ ํ๊ณ ์ ์ฐ๊ณ ์ถ์๋ค. ๋ชป์๊ฒจ๋ ๋ด ์์์ ์์์ด๋๊น.. ํ์ง๋ง ์ฐจํ์ ๋ฆฌํฉํ ๋ง์ ํตํด์ ๋ ํด๋ฆฐํ๊ณ ํจ์จ์ฑ์ด ์ข์ ์ฝ๋๋ก ๋ณ๊ฒฝํด์ผ ํจ์ ๋ถ๋ช ํ๋ค.
๊ทธ๋ฆฌ๊ณ ์๋ก ์๊ฒ ๋ ์ฝ๋ ์ค์ ๊ฐ์ฅ ์ ๊ธฐํ๋ ๊ฑด, URLSearchParams
์๋ค. URLSearchParams๋ URL์ ์ฟผ๋ฆฌ ๋ฌธ์์ด์ ๋ํด ์์
ํ ์ ์๋ ์ ํธ๋ฆฌํฐ ๋ฉ์๋๋ฅผ ์ ์ํ๋ ์ฝ๋์ธ๋ฐ, URLSearchParams.get()
ํจ์๋ฅผ ํตํด Query Parameter์ ํน์ String ๊ฐ์ ์ฌ์ฉํ ์ ์์๋ค.
๋ค๋ง, get ํจ์๋ก ๋ค๋ฅธ key ๊ฐ์ ๋ถ๋ฌ์ค๋ ค๋ฉด, if ๋ฌธ์ด๋ || ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ทผํ๋ฉด ๋ ๊ฒ ๊ฐ์๋๋ฐ, ํ๋์ฝ๋ฉ์์ผ๋ก ์ด๋ฅผ ๊ตฌํํด๋ณด๋ ๊ทธ ์กฐ๊ฑด๋ฌธ ์ ์ฒด๊ฐ ๊ทธ๋ฅ String ์ฒ๋ผ ํ๋ฉด์ ํ์๋๋ ๋ฐ๋์ ํ๋ก์ ํธ ์ข ๋ฃ๊น์ง ๊ตฌํํ์ง ๋ชปํ ์์ฌ์์ด ์๋ค.
๋ด ๊ฐ๋ฐ ์ธ์์ ์ฒซ๋ฒ์งธ ํ๋ก์ ํธ์๋ ๋งํผ, ์ํ ์ ๊ณผ ์์ฌ์ด ์ , ๊ฐ์ ํ ์ ๋ค์ด ์ ๋ง ๋ช ํํ๊ฒ ์กด์ฌํ์๋ค. ๊ทธ์ค์์ ์ฐ์ , ์ํ ์ ๋ถํฐ ๋งํด๋ณด๊ณ ์ ํ๋ค.
ํ๋ก์ ํธ๋ฅผ ์์ํ๋ฉด์ ์ ์ผ ๋จผ์ ์งํํ๋ ๊ฒ์, ํ๋ก ํธ์๋ ๊ฐ๋ฐ์๋ค๊ฐ์ ์ฝ๋ฉ ์ปจ๋ฒค์ ํต์ผ์ด์๋ค. ์ ๊ธฐ์ ๋ถ๋ค์ ํ๋ก์ ํธ ํ๊ณ ๋ฅผ ๋ณด๋ฉด์, ์ฝ๋ฉ ์ปจ๋ฒค์ ์ด ๋ช ํํ๊ฒ ํต์ผ๋์ง ์์์ merge๊ฐ ๋ ์ดํ๋, ๊ฐ๊ธฐ ๋ค๋ฅธ ์ฌ๋๋ค์ ์ฝ๋ฉ์ ๋ณด๋ฉฐ ํผ๋์ค๋ฌ์ ๋ ๊ฒฝํ๋ค์ด ์์ผ์ จ๋ค๋ ๊ธ์ ๋ณด๊ณ , ์ฐ๋ฆฌ๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด์ง๋ง ์ค์ํ ์ปจ๋ฒค์ ๋ค์ ํ์คํ ํด๋๊ณ ๊ฐ์๋ผ๋ ๋ง์ธ๋๋ก ์ปจ๋ฒค์ ํต์ผ์ ์งํํ์๋ค. ๊ทธ ๊ฒฐ๊ณผ, conflict ๋ฌธ์ ๋ฅผ ์ ์ธํ๊ณ ๋ merge ์ดํ์๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋ ์ผ์ด ์๊ฒผ์ ๋, ํฐ ๋ฌธ์ ์์ด ์ ๋์ด๊ฐ ์ ์์๋ค.
ํ๊ต, ํ์ฌ, ๊ทธ ๋ฐ์ ๋ชจ๋ ๋จ์ฒด๋ค์์ ๊ณตํต์ ์ผ๋ก ์ง์ผ์ผ ํ ๊ท์จ์ ์ ํ๋ ๊ฒ์ ๋ชน์ ์ค์ํ ์ผ์ด๋ค. ํ๋ก๊ทธ๋๋ฐ ์ญ์ ์ด๋ป๊ฒ ๋ณด๋ฉด ๊ฐ์ ์ธ์ด๋ฅผ ์ฌ์ฉํ์ง๋ง ๊ฐ๊ธฐ ๋ค๋ฅธ ํํ์ผ๋ก ๋ํํ๋ ํ๋๊ณผ ๊ฐ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์, ์ถฉ๋์ด ์ผ์ด๋์ง ์๊ธฐ ์ํด์๋ ์ปจ๋ฒค์ ์ ์ ์ ํด๋์ด์ผ ํ๋ค๋ ๊ตํ์ ์ป์๋ค.
์ฌํ๊น์ง ๋ด๊ฐ ๊ฐ๋ฐ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๋๊ผ๋ ๊ฒ์, ๋ด๊ฐ ๊ฐ๋ฐ์ ํ๊ณ ์๋๊ฒ ์๋๋ผ ๊ทธ๋ฅ ๋จ์ํ ์ฝ๋๋ฅผ ๋ฐ๋ผ์น๊ณ ์๋๊ฒ ์๋๊น? ํ๋ ์์ฌ์ด์๋ค. ์ฌ์ค ์์ฌ์ด ์๋๋ผ ์ง์ค์ด์๋์ง๋ ๋ชจ๋ฅธ๋ค. ๋จ์ํ ์ฑ ์์, ํน์ ์ธ์ ์์ ์๋ ค์ค ์ฝ๋๋ฅผ ๋ณด๊ณ ๊ทธ๊ฒ๊ณผ ๊ด๋ จ๋ ๊ณผ์ ๋ค์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ ๊ฒ์ Developing์ด ์๋๋ผ Coding์ด ๋ง๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ ์ง๋ง ์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์, ์ด ๊ธฐ๋ฅ์ ๊ตฌํํ๊ธฐ ์ํด์๋ ์ด๋ค ์ฝ๋๋ฅผ ์จ์ผ ํ๋ฉฐ, ๋ ๊ทธ๊ฒ์ด ๋นํจ์จ์ ์ด๋ผ๋ฉด ์ด๋ค ๋ฐฉ์์ผ๋ก ๋ก์ง์ ๊ตฌํํ ์ ์์๊น? ์ ๊ฐ์ ๊ณ ๋ฏผ๋ค์ ์ ๋ง ๋ง์ด ํ๋ ๊ฒ ๊ฐ๋ค.
์ด๋ ๋ ์, ์ ๋ง ๋จธ๋ฆฟ์์ ์ ๊ตฌ๊ฐ ์ผ์ง๋ฏ ์ฝ๋๊ฐ ์๊ฐ์ด ๋์ ๊ทธ ์ฝ๋๋ก ์์ฑ์ ํ ํ์ ์ฑ๊ณต์ ์ผ๋ก ์ถ๋ ฅ์ด ๋์๋๋ฐ, ๊ทธ๊ฒ ๊ฟ์ด์์๋ค. ๊ทธ๋ฐ๋ฐ ์์ฝ๋์ ์์ ๊ทธ ๊ฟ์ ๋๋ฌ๋๋ฌ ๋์ง์ด ๊ฐ๋ฉฐ ๋ก์ง์ ์ง๋ณด๋, ์๋ฒฝํ๊ฒ๋ ์๋์ด๋ ๊ณ ๋ฏผํ๋ ๋ถ๋ถ์ด ํด๊ฒฐ๋์๋ ์๊ฐ์ด ์์๋ค. ์ ๋ง ๊ทธ๊ฒ ๊ฟ์ ๋ด์ฉ์ด์๋์ง, ์๋๋ฉด ๊ทธ๋ฅ ๋ด๊ฐ ์ฒ์ฒํ ๋ก์ง์ ๋ฏ์ด๋ณด๋ฉด์ ํด๊ฒฐํด๋ธ ๊ฒ์ธ์ง๋ ํ์คํ์ง ์์ง๋ง, ๊ทธ๋ ์ฒ์์ผ๋ก '์, ์ด๊ฒ ๊ฐ๋ฐ์ด๊ตฌ๋. ์ฝ๋๊ฐ ์๋ ๊ฐ๋ฐ์๊ฐ ๋์ด์ผ๊ฒ ๋ค' ๋ผ๋ ์๊ฐ์ ๊ฐ์ง๊ฒ ๋์๋ค. ๊ทธ ๋ค๋ก๋, ๊ตฌ๊ธ๋ง์ ํ ๋๋ ๋จ์ํ [~ํ ๋ ์ฐ๋ ์ฝ๋]๋ผ๋ ๊ฒ์ ๋ฐฉ์๋ณด๋ค, ์ด๋ป๊ฒ ์ ๊ทผํ ์ ์๋์ง ์๊ฐ์ ๋ ๋ง์ด ํด๋ณด๊ณ ๋ ๋ค์ ๊ฒ์ํ๋ ค๋ ์ต๊ด์ ๊ฐ์ง๋ ค๊ณ ๋ ธ๋ ฅํ๊ณ ์๋ค.
์ด ๊ธ์ ์๋์ ๋๋, 'ํํ๋ฅผ ์ ํ ์ ์๋ ๋ฒ'์ด๋ผ๊ณ ์ ์ด ๋์๋ค. ํํ๋ฅผ ์ํ๋ ๋ฐฉ๋ฒ์ด๋, ๊ฒฐ๊ตญ ๋ณธ์ธ์ด ~ํ๋๋ผ๋ฉด ์์ ๊ทธ์น์ง ์๊ณ ์ด๋ฅผ ๋ฐํ์ผ์ ๋ค์์ ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ์ง ์๊ณ ์ฑ์ฅํ๋ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ์์ฌ์ ๋ ์ ์ญ์ ์ ์ด๋ณด๊ณ ์ ํ๋ค.
ํญ์ ๋์ค์ ๋ด ์ฝ๋๋ฅผ ๋ณด๊ฒ ๋๋ฉด, '์ด์ผ.. ์ ๋ง ์ฝ๋๊ฐ ๋๋ฌ์ด๊ฑธ?' ํ๋ ๋๋์ ๋ฐ๊ณ ๋ ํ๋ค. ์ด์ ๋ํด์ ํ์ ์์ ์ผํ๊ณ ์๋ ๋ด ๋ํ ๋๊ธฐ์ธ ์คํฌ๋ ์๊ธฐ๋ฅผ ํด๋ดค์๋๋ฐ, '์ฃผ๋์ด ๊ฐ๋ฐ์๋ ํด๋ฆฐ ์ฝ๋๋ณด๋ค๋ ๊ธฐ๋ฅ ๊ตฌํ์ ์ค์ ์ ๋ฌ์ผ ํ๋ค.' ๋ผ๋ ์กฐ์ธ์ ๋ฐ์์๋ ๊ธฐ์ต์ด ์๋ค.
๊ทธ๋ ์ง๋ง, 2์ฃผ๋ผ๋ ํ๋ก์ ํธ ๊ธฐ๊ฐ๋๋ฌธ์ ๋ฆฌํฉํ ๋ง๊ณผ ์ปดํฌ๋ํธ ์ ๋ฆฌ๋ฅผ ํ์ง ๋ชปํ์ฑ ์ ์ถํ ์ ์ ์ ๋ง ์์ฌ์ด ๊ธฐ์ต์ผ๋ก ๋จ์๋ค. ์ผ๋จ ๋๋๊น ๋์ค์ ๋ฆฌํฉํ ๋ง ํด์ผ์ง ํ๋ฉฐ ๋๊ฒผ๋ ์ฝ๋๋ค์ด ์ด๋ฒ ํ๋ก์ ํธ์์ ๋๋ฌด ๋ง์๋ค. (ex) ๋ค์ค ํํฐ๋ง, ์นดํ ๊ณ ๋ฆฌ ๋ฒํผ active, ํ์ด์ง๋ค์ด์ ๋ฑ๋ฑ..) ๊ธฐ๋ฅ ๊ตฌํ์ ์ฐ์ ์ผ๋ก ๋๋ ๊ฒ๋ ์ข์ง๋ง, ์ฒ์์ ๋ก์ง์ ์งค ๋ ๋ณด๋ค ๊ฐ๋ ์ฑ์๊ณ , ํจ์จ์ ์ธ ์ฝ๋๋ฅผ ์ง๋ ค๊ณ ํ๋ ์ต๊ด์ ๋ค์ฌ์ผ๊ฒ ๋ค.
์ฐ๋ฆฌ ํ์ ํญ์ ์ค์ 10์ ๋ฐ์ ์คํ ๋ฉ ๋ฏธํ ์๊ฐ์ ๊ฐ์ก์๋ค. ๊ทธ๋ฌ๋ ๋งค๋ฒ ํ๋ก ํธ์๋์ ๋ฐฑ์๋๊ฐ ์๋ก ์งํ ์ํฉ์ ๊ณต์ ํ ๋๋ง๋ค ๊ทธ๋ฅ ๋ง์์ด ๊ณ ๊ฐ๋ง ๋๋์๋ ๊ธฐ์ต์ด ์๋ค. ํ์ธ๋์ด๋ ์์๋์ด ์ ๋ง ๋ฌธ์ ์์ด ๋ชจ๋ธ๋ง๊ณผ ์๋ฒ๋ฅผ ์ ์ง์ฃผ์ ์ ํฐ ํ์ ์์์ง๋ง, ๋ง์ฝ ํ๋ก ํธ์ ๋ฐฑ ์ฌ์ด์ ์ ๋ง ์ค์ํ ๋ํ๊ฐ ํ์ํ๋๋ฐ ์ด๋ฅผ ์ดํด ๋ชปํ๊ณ ๋์ด๊ฐ์ ์ฝ๋๊ฐ ์์ ์์ด์ ธ์ผ ํ๋ ์ํฉ์ด ์๋ค๋ฉด ํฐ์ผ์ด ๋ ์๋ ์์๋ค.
๊ฒฐ๊ตญ ์๋ก ๋งก์ ๋ถ์ผ๊ฐ ๋ค๋ฅด๋ค๊ณ ํด๋, ๊ฐ์ ํ์์ ํ๋ก์ ํธ๋ฅผ ์งํํ ํ์๋ค์ด๊ธฐ ๋๋ฌธ์ ์๋ก๊ฐ์ ์ํต์ ๋ชน์ ์ค์ํ๋ค. ์๋ก ์ํต์ ํ ๋๋, ์์ ์ด ์๋ ์ฉ์ด๋ผ๊ณ ํด๋ ์๋๋ฐฉ์ด ์ดํดํ๊ธฐ ์ฝ๊ฒ ํ์ด ์ค๋ช ํด์ฃผ๊ณ , ๊ทธ ์ฝ๋๊ฐ ์๋๋ฐฉ์ ๋ถ์ผ์ ์ด๋ค ์ฐ๊ด์ด ์๋์ง ์๋ ค์ฃผ๋ ์์ผ๋ก ๋ํ๋ฅผ ํด์ผ ํ ๊ฒ ๊ฐ๋ค.
๋น๋ฆฌ ์ ๋ฐ์ด๋ '๋ง์ ์ฌ๋์ด ์ฌ๋ฅ์ ๋ถ์กฑ๋ณด๋ค ๊ฒฐ์ฌ์ ๋ถ์กฑ์ผ๋ก ์คํจํ๋ค.' ๋ผ๋ ๋ช ์ธ์ ๋จ๊ฒผ๋ค. ์ง๋ ํ๋ฌ์ฐจ ํ๊ณ ์ ๋งํ๋ ๊ฒ์ฒ๋ผ, ํ๋ก์ ํธ์ ๋ฌด์์ ๋ถ๋ชํ๊ณ ๋ ๋ค์ ๋๋ 2์ฃผ์ ์ ๋๋ณด๋ค ์ฑ์ฅํด ์๋ ๊ฒ์ ๋๋ ์ ์๋ค. ์ฑ์ฅ์ ๋ฐ๊ฑธ์์ ๋ด๋์ ์ ์๊ฒ ๋ถ์ถํด ์ค ์ ๋์์ด์ ํ์๋ค๊ณผ ๋ฉํ ๋๋ค์๊ฒ ๋ฌดํํ ๊ฐ์ฌ์ ์ธ์ฌ๋ฅผ ๋๋ฆฌ๋ฉฐ.. 1์ฐจ ํ๋ก์ ํธ ํ๊ณ ๋!!
์์ฐ,,, ๊ธ์ด ์ ๋ง ์ง์์ ์๋ค์.. ์ด์ ๋๋ฉด ์ถ๊ฐํด์ผ ํ๋ ๊ฑฐ ์๋๋๊ผฌ ใ ?