๐Ÿ‹ 1์ฐจ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ  - LuluIsher ๐Ÿ‹

hangkemiiiยท2022๋…„ 6์›” 4์ผ
5

ํšŒ๊ณ ๋ก

๋ชฉ๋ก ๋ณด๊ธฐ
2/7
post-thumbnail

์„ธ์ƒ์˜ ๋ชจ๋“  ์‹œ์ž‘์€ ์–ด๋ ต๋‹ค

ํ•ญ์ƒ ๋ฌด์–ธ๊ฐ€๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค๋Š” ๊ฒƒ์€, ํฐ ๊ฒฐ์‹ฌ๊ณผ ๊ฐ์˜ค๊ฐ€ ํ•„์š”ํ•œ ์ผ์ด๋‹ค. ์ง€๊ธˆ ์ž‘์„ฑํ•˜๊ณ  ์žˆ๋Š” ์ด ํšŒ๊ณ ๋ก์˜ ์‹œ์ž‘์„ ์–ด๋–ป๊ฒŒ ์“ธ ์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ฒƒ์—๋„, ๊ฝค ๊ธด ์‹œ๊ฐ„์˜ ๊ณ ๋ฏผ ๋์—์„œ์•ผ ํ‚ค๋ณด๋“œ์— ์†์„ ์˜ฌ๋ฆด ์ˆ˜ ์žˆ์—ˆ๋‹ค. ๋‚˜์—๊ฒŒ ์žˆ์–ด์„œ ํ•ญ์ƒ ์‹œ์ž‘๋“ค์ด ์–ด๋ ค์› ๋˜ ์ด์œ ๋Š”, ์•„์ง ์ผ์–ด๋‚˜์ง€๋„ ์•Š์€ ๋์— ๋Œ€ํ•œ ๋‘๋ ค์›€ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฑฑ์ •๋“ค์ด ๊ธ์ •์ ์œผ๋กœ ์ž‘์šฉํ•  ๋•Œ์—๋Š” ์ฒ ์ €ํ•œ ์ค€๋น„์™€ ๊ณผ์ •๋“ค์„ ํ†ตํ•ด ๋ณด๋‹ค ์™„์„ฑ๋„ ๋†’์€ ๊ฒฐ๊ณผ๋ฌผ์„ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ, ๊ทธ๋ ‡์ง€ ์•Š์„ ๋•Œ์—๋Š” ๋‚˜ ์ž์‹ ์„ '์™„๋ฒฝ์ฃผ์˜'๋ผ๋Š” ํ‹€์— ๊ฐ€๋‘ฌ ๋„ฃ์–ด์„œ ์„ธ๋ถ€์ ์ธ ๊ฒƒ์— ์ง‘์ฐฉํ•˜์—ฌ ์ „์ฒด์ ์ธ ๊ทธ๋ฆผ์„ ๋ณด์ง€ ๋ชปํ•˜๋Š” ๊ฒฝ์šฐ ์—ญ์‹œ ์กด์žฌํ•˜์˜€๋‹ค.

๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฒˆ 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

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ์• ๋ฅผ ๋จน์—ˆ๋˜ ๋ถ€๋ถ„์€ 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 ์ฒ˜๋Ÿผ ํ™”๋ฉด์— ํ‘œ์‹œ๋˜๋Š” ๋ฐ”๋žŒ์— ํ”„๋กœ์ ํŠธ ์ข…๋ฃŒ๊นŒ์ง€ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ•œ ์•„์‰ฌ์›€์ด ์žˆ๋‹ค.

ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ž˜ํ•œ ์ 

๋‚ด ๊ฐœ๋ฐœ ์ธ์ƒ์˜ ์ฒซ๋ฒˆ์งธ ํ”„๋กœ์ ํŠธ์˜€๋˜ ๋งŒํผ, ์ž˜ํ•œ ์ ๊ณผ ์•„์‰ฌ์šด ์ , ๊ฐœ์„ ํ•  ์ ๋“ค์ด ์ •๋ง ๋ช…ํ™•ํ•˜๊ฒŒ ์กด์žฌํ–ˆ์—ˆ๋‹ค. ๊ทธ์ค‘์—์„œ ์šฐ์„ , ์ž˜ํ•œ ์  ๋ถ€ํ„ฐ ๋งํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

1. ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ์„ธ๋ถ„ํ™”

ํ”„๋กœ์ ํŠธ๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด์„œ ์ œ์ผ ๋จผ์ € ์ง„ํ–‰ํ–ˆ๋˜ ๊ฒƒ์€, ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž๋“ค๊ฐ„์˜ ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜ ํ†ต์ผ์ด์—ˆ๋‹ค. ์œ— ๊ธฐ์ˆ˜ ๋ถ„๋“ค์˜ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ ๋ฅผ ๋ณด๋ฉด์„œ, ์ฝ”๋”ฉ ์ปจ๋ฒค์…˜์ด ๋ช…ํ™•ํ•˜๊ฒŒ ํ†ต์ผ๋˜์ง€ ์•Š์•„์„œ merge๊ฐ€ ๋œ ์ดํ›„๋‚˜, ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์˜ ์ฝ”๋”ฉ์„ ๋ณด๋ฉฐ ํ˜ผ๋ž€์Šค๋Ÿฌ์› ๋˜ ๊ฒฝํ—˜๋“ค์ด ์žˆ์œผ์…จ๋‹ค๋Š” ๊ธ€์„ ๋ณด๊ณ , ์šฐ๋ฆฌ๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ด์ง€๋งŒ ์ค‘์š”ํ•œ ์ปจ๋ฒค์…˜๋“ค์„ ํ™•์‹คํžˆ ํ•ด๋‘๊ณ  ๊ฐ€์ž๋ผ๋Š” ๋งˆ์ธ๋“œ๋กœ ์ปจ๋ฒค์…˜ ํ†ต์ผ์„ ์ง„ํ–‰ํ–ˆ์—ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, conflict ๋ฌธ์ œ๋ฅผ ์ œ์™ธํ•˜๊ณ ๋Š” merge ์ดํ›„์—๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒŒ ๋  ์ผ์ด ์ƒ๊ฒผ์„ ๋•Œ, ํฐ ๋ฌธ์ œ์—†์ด ์ž˜ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

ํ•™๊ต, ํšŒ์‚ฌ, ๊ทธ ๋ฐ–์˜ ๋ชจ๋“  ๋‹จ์ฒด๋“ค์—์„œ ๊ณตํ†ต์ ์œผ๋กœ ์ง€์ผœ์•ผ ํ•  ๊ทœ์œจ์„ ์ •ํ•˜๋Š” ๊ฒƒ์€ ๋ชน์‹œ ์ค‘์š”ํ•œ ์ผ์ด๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—ญ์‹œ ์–ด๋–ป๊ฒŒ ๋ณด๋ฉด ๊ฐ™์€ ์–ธ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ๊ฐ๊ธฐ ๋‹ค๋ฅธ ํ‘œํ˜„์œผ๋กœ ๋Œ€ํ™”ํ•˜๋Š” ํ™œ๋™๊ณผ ๊ฐ™์€ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ปจ๋ฒค์…˜์„ ์ž˜ ์ •ํ•ด๋‘์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ตํ›ˆ์„ ์–ป์—ˆ๋‹ค.

2. Coder๊ฐ€ ์•„๋‹Œ Developer

์—ฌํƒœ๊นŒ์ง€ ๋‚ด๊ฐ€ ๊ฐœ๋ฐœ ๊ณต๋ถ€๋ฅผ ํ•˜๋ฉด์„œ ๋Š๊ผˆ๋˜ ๊ฒƒ์€, ๋‚ด๊ฐ€ ๊ฐœ๋ฐœ์„ ํ•˜๊ณ  ์žˆ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ๊ทธ๋ƒฅ ๋‹จ์ˆœํžˆ ์ฝ”๋“œ๋ฅผ ๋”ฐ๋ผ์น˜๊ณ  ์žˆ๋Š”๊ฒŒ ์•„๋‹๊นŒ? ํ•˜๋Š” ์˜์‹ฌ์ด์—ˆ๋‹ค. ์‚ฌ์‹ค ์˜์‹ฌ์ด ์•„๋‹ˆ๋ผ ์ง„์‹ค์ด์—ˆ๋Š”์ง€๋„ ๋ชจ๋ฅธ๋‹ค. ๋‹จ์ˆœํžˆ ์ฑ…์—์„œ, ํ˜น์€ ์„ธ์…˜์—์„œ ์•Œ๋ ค์ค€ ์ฝ”๋“œ๋ฅผ ๋ณด๊ณ  ๊ทธ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ๊ณผ์ œ๋“ค์— ๋ถ™์—ฌ๋„ฃ๊ธฐ ํ•˜๋Š” ๊ฒƒ์€ Developing์ด ์•„๋‹ˆ๋ผ Coding์ด ๋งž๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ, ์ด ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ์จ์•ผ ํ•˜๋ฉฐ, ๋˜ ๊ทธ๊ฒƒ์ด ๋น„ํšจ์œจ์ ์ด๋ผ๋ฉด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ๋กœ์ง์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์„๊นŒ? ์™€ ๊ฐ™์€ ๊ณ ๋ฏผ๋“ค์„ ์ •๋ง ๋งŽ์ด ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™๋‹ค.

์–ด๋Š ๋‚ ์€, ์ •๋ง ๋จธ๋ฆฟ์†์— ์ „๊ตฌ๊ฐ€ ์ผœ์ง€๋“ฏ ์ฝ”๋“œ๊ฐ€ ์ƒ๊ฐ์ด ๋‚˜์„œ ๊ทธ ์ฝ”๋“œ๋กœ ์ž‘์„ฑ์„ ํ•œ ํ›„์— ์„ฑ๊ณต์ ์œผ๋กœ ์ถœ๋ ฅ์ด ๋˜์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒŒ ๊ฟˆ์ด์—ˆ์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์œ„์ฝ”๋“œ์— ์™€์„œ ๊ทธ ๊ฟˆ์„ ๋”๋“ฌ๋”๋“ฌ ๋˜์งš์–ด ๊ฐ€๋ฉฐ ๋กœ์ง์„ ์งœ๋ณด๋‹ˆ, ์™„๋ฒฝํ•˜๊ฒŒ๋Š” ์•„๋‹ˆ์–ด๋„ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„์ด ํ•ด๊ฒฐ๋˜์—ˆ๋˜ ์ˆœ๊ฐ„์ด ์žˆ์—ˆ๋‹ค. ์ •๋ง ๊ทธ๊ฒŒ ๊ฟˆ์˜ ๋‚ด์šฉ์ด์—ˆ๋Š”์ง€, ์•„๋‹ˆ๋ฉด ๊ทธ๋ƒฅ ๋‚ด๊ฐ€ ์ฒœ์ฒœํžˆ ๋กœ์ง์„ ๋œฏ์–ด๋ณด๋ฉด์„œ ํ•ด๊ฒฐํ•ด๋‚ธ ๊ฒƒ์ธ์ง€๋Š” ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ, ๊ทธ๋•Œ ์ฒ˜์Œ์œผ๋กœ '์•„, ์ด๊ฒŒ ๊ฐœ๋ฐœ์ด๊ตฌ๋‚˜. ์ฝ”๋”๊ฐ€ ์•„๋‹Œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜์–ด์•ผ๊ฒ ๋‹ค' ๋ผ๋Š” ์ƒ๊ฐ์„ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ๋‹ค. ๊ทธ ๋’ค๋กœ๋Š”, ๊ตฌ๊ธ€๋ง์„ ํ•  ๋•Œ๋„ ๋‹จ์ˆœํžˆ [~ํ• ๋•Œ ์“ฐ๋Š” ์ฝ”๋“œ]๋ผ๋Š” ๊ฒ€์ƒ‰ ๋ฐฉ์‹๋ณด๋‹ค, ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ์ƒ๊ฐ์„ ๋” ๋งŽ์ด ํ•ด๋ณด๊ณ  ๋‚œ ๋’ค์— ๊ฒ€์ƒ‰ํ•˜๋ ค๋Š” ์Šต๊ด€์„ ๊ฐ€์ง€๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ๋‹ค.

์•„์‰ฌ์šด ์ 

์ด ๊ธ€์˜ ์„œ๋‘์— ๋‚˜๋Š”, 'ํ›„ํšŒ๋ฅผ ์ž˜ ํ• ์ˆ˜ ์žˆ๋Š” ๋ฒ•'์ด๋ผ๊ณ  ์ ์–ด ๋‘์—ˆ๋‹ค. ํ›„ํšŒ๋ฅผ ์ž˜ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋ž€, ๊ฒฐ๊ตญ ๋ณธ์ธ์ด ~ํ–ˆ๋”๋ผ๋ฉด ์—์„œ ๊ทธ์น˜์ง€ ์•Š๊ณ  ์ด๋ฅผ ๋ฐœํŒ์‚ผ์•„ ๋‹ค์Œ์— ๊ฐ™์€ ์‹ค์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•˜์ง€ ์•Š๊ณ  ์„ฑ์žฅํ•˜๋Š” ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์•„์‰ฌ์› ๋˜ ์  ์—ญ์‹œ ์ ์–ด๋ณด๊ณ ์ž ํ•œ๋‹ค.

1. Hard Coding vs Clean Code

ํ•ญ์ƒ ๋‚˜์ค‘์— ๋‚ด ์ฝ”๋“œ๋ฅผ ๋ณด๊ฒŒ ๋˜๋ฉด, '์ด์•ผ.. ์ •๋ง ์ฝ”๋“œ๊ฐ€ ๋”๋Ÿฌ์šด๊ฑธ?' ํ•˜๋Š” ๋Š๋‚Œ์„ ๋ฐ›๊ณ ๋Š” ํ•œ๋‹ค. ์ด์— ๋Œ€ํ•ด์„œ ํ˜„์—…์—์„œ ์ผํ•˜๊ณ  ์žˆ๋Š” ๋‚ด ๋Œ€ํ•™ ๋™๊ธฐ์ธ ์ค€ํฌ๋ž‘ ์–˜๊ธฐ๋ฅผ ํ•ด๋ดค์—ˆ๋Š”๋ฐ, '์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋Š” ํด๋ฆฐ ์ฝ”๋“œ๋ณด๋‹ค๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์ค‘์ ์— ๋‘ฌ์•ผ ํ•œ๋‹ค.' ๋ผ๋Š” ์กฐ์–ธ์„ ๋ฐ›์•˜์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.

๊ทธ๋ ‡์ง€๋งŒ, 2์ฃผ๋ผ๋Š” ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„๋•Œ๋ฌธ์— ๋ฆฌํŒฉํ† ๋ง๊ณผ ์ปดํฌ๋„ŒํŠธ ์ •๋ฆฌ๋ฅผ ํ•˜์ง€ ๋ชปํ•œ์ฑ„ ์ œ์ถœํ•œ ์ ์€ ์ •๋ง ์•„์‰ฌ์šด ๊ธฐ์–ต์œผ๋กœ ๋‚จ์•˜๋‹ค. ์ผ๋‹จ ๋˜๋‹ˆ๊นŒ ๋‚˜์ค‘์— ๋ฆฌํŒฉํ† ๋ง ํ•ด์•ผ์ง€ ํ•˜๋ฉฐ ๋„˜๊ฒผ๋˜ ์ฝ”๋“œ๋“ค์ด ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์—์„œ ๋„ˆ๋ฌด ๋งŽ์•˜๋‹ค. (ex) ๋‹ค์ค‘ ํ•„ํ„ฐ๋ง, ์นดํ…Œ๊ณ ๋ฆฌ ๋ฒ„ํŠผ active, ํŽ˜์ด์ง€๋„ค์ด์…˜ ๋“ฑ๋“ฑ..) ๊ธฐ๋Šฅ ๊ตฌํ˜„์„ ์šฐ์„ ์œผ๋กœ ๋‘๋Š” ๊ฒƒ๋„ ์ข‹์ง€๋งŒ, ์ฒ˜์Œ์— ๋กœ์ง์„ ์งค ๋•Œ ๋ณด๋‹ค ๊ฐ€๋…์„ฑ์žˆ๊ณ , ํšจ์œจ์ ์ธ ์ฝ”๋“œ๋ฅผ ์งœ๋ ค๊ณ  ํ•˜๋Š” ์Šต๊ด€์„ ๋“ค์—ฌ์•ผ๊ฒ ๋‹ค.

2. Back-End์™€ ๋Œ€ํ™”ํ• ๋•Œ ํŒŒํŒŒ๊ณ ๋ฅผ ์ผœ์•ผํ•˜๋‚˜..?

์šฐ๋ฆฌ ํŒ€์€ ํ•ญ์ƒ ์˜ค์ „ 10์‹œ ๋ฐ˜์— ์Šคํƒ ๋”ฉ ๋ฏธํŒ… ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์—ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋งค๋ฒˆ ํ”„๋ก ํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ์„œ๋กœ ์ง„ํ–‰ ์ƒํ™ฉ์„ ๊ณต์œ ํ•  ๋•Œ๋งˆ๋‹ค ๊ทธ๋ƒฅ ๋ง์—†์ด ๊ณ ๊ฐœ๋งŒ ๋„๋•์˜€๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค. ํ˜œ์ธ๋‹˜์ด๋ž‘ ์˜ˆ์€๋‹˜์ด ์ •๋ง ๋ฌธ์ œ์—†์ด ๋ชจ๋ธ๋ง๊ณผ ์„œ๋ฒ„๋ฅผ ์ž˜ ์งœ์ฃผ์…”์„œ ํฐ ํƒˆ์€ ์—†์—ˆ์ง€๋งŒ, ๋งŒ์•ฝ ํ”„๋ก ํŠธ์™€ ๋ฐฑ ์‚ฌ์ด์— ์ •๋ง ์ค‘์š”ํ•œ ๋Œ€ํ™”๊ฐ€ ํ•„์š”ํ–ˆ๋Š”๋ฐ ์ด๋ฅผ ์ดํ•ด ๋ชปํ•˜๊ณ  ๋„˜์–ด๊ฐ€์„œ ์ฝ”๋“œ๊ฐ€ ์™„์ „ ์—Ž์–ด์ ธ์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์™”๋‹ค๋ฉด ํฐ์ผ์ด ๋‚  ์ˆ˜๋„ ์žˆ์—ˆ๋‹ค.

๊ฒฐ๊ตญ ์„œ๋กœ ๋งก์€ ๋ถ„์•ผ๊ฐ€ ๋‹ค๋ฅด๋‹ค๊ณ  ํ•ด๋„, ๊ฐ™์€ ํŒ€์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•  ํŒ€์›๋“ค์ด๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ๊ฐ„์˜ ์†Œํ†ต์€ ๋ชน์‹œ ์ค‘์š”ํ•˜๋‹ค. ์„œ๋กœ ์†Œํ†ต์„ ํ•  ๋•Œ๋Š”, ์ž์‹ ์ด ์•„๋Š” ์šฉ์–ด๋ผ๊ณ  ํ•ด๋„ ์ƒ๋Œ€๋ฐฉ์ด ์ดํ•ดํ•˜๊ธฐ ์‰ฝ๊ฒŒ ํ’€์–ด ์„ค๋ช…ํ•ด์ฃผ๊ณ , ๊ทธ ์ฝ”๋“œ๊ฐ€ ์ƒ๋Œ€๋ฐฉ์˜ ๋ถ„์•ผ์— ์–ด๋–ค ์—ฐ๊ด€์ด ์žˆ๋Š”์ง€ ์•Œ๋ ค์ฃผ๋Š” ์‹์œผ๋กœ ๋Œ€ํ™”๋ฅผ ํ•ด์•ผ ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๋งˆ์น˜๋ฉฐ

๋นŒ๋ฆฌ ์„ ๋ฐ์ด๋Š” '๋งŽ์€ ์‚ฌ๋žŒ์ด ์žฌ๋Šฅ์˜ ๋ถ€์กฑ๋ณด๋‹ค ๊ฒฐ์‹ฌ์˜ ๋ถ€์กฑ์œผ๋กœ ์‹คํŒจํ•œ๋‹ค.' ๋ผ๋Š” ๋ช…์–ธ์„ ๋‚จ๊ฒผ๋‹ค. ์ง€๋‚œ ํ•œ๋‹ฌ์ฐจ ํšŒ๊ณ ์— ๋งํ–ˆ๋˜ ๊ฒƒ์ฒ˜๋Ÿผ, ํ”„๋กœ์ ํŠธ์— ๋ฌด์ž‘์ • ๋ถ€๋”ชํžˆ๊ณ  ๋‚œ ๋’ค์˜ ๋‚˜๋Š” 2์ฃผ์ „์˜ ๋‚˜๋ณด๋‹ค ์„ฑ์žฅํ•ด ์žˆ๋Š” ๊ฒƒ์„ ๋Š๋‚„ ์ˆ˜ ์žˆ๋‹ค. ์„ฑ์žฅ์˜ ๋ฐœ๊ฑธ์Œ์„ ๋‚ด๋”›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋ถ€์ถ•ํ•ด ์ค€ ์‹ ๋‚œ์•„์ด์…” ํŒ€์›๋“ค๊ณผ ๋ฉ˜ํ† ๋‹˜๋“ค์—๊ฒŒ ๋ฌดํ•œํ•œ ๊ฐ์‚ฌ์˜ ์ธ์‚ฌ๋ฅผ ๋“œ๋ฆฌ๋ฉฐ.. 1์ฐจ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ  ๋!!

profile
Front-End Developer

8๊ฐœ์˜ ๋Œ“๊ธ€

comment-user-thumbnail
2022๋…„ 6์›” 5์ผ

์™€์šฐ,,, ๊ธ€์ด ์ •๋ง ์งœ์ž„์ƒˆ ์žˆ๋„ค์š”.. ์ด์ •๋„๋ฉด ์ถœ๊ฐ„ํ•ด์•ผ ํ•˜๋Š” ๊ฑฐ ์•„๋‹™๋‹ˆ๊ผฌ ใ…?

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2022๋…„ 6์›” 5์ผ

๊ธ€์—์„œ ์ •์„ฑ์ด ๋Š๊ปด์ง€๋Š” ๊ฒƒ์ด ๋„ค์นด๋ผ์ฟ ๋ฐฐ๋‹นํ† ๋ฅผ ๋ฟŒ์…”๋ฒ„๋ฆฌ์‹ค ๊ฒƒ ๊ฐ™๋„ค์š”~

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2022๋…„ 6์›” 5์ผ

ํ˜•๊ฒธ๋‹˜์€ ์ฐฝ์ž‘์„ ํ–ˆ์œผ๋ฉด ์ข‹๊ฒ ์–ด...

1๊ฐœ์˜ ๋‹ต๊ธ€
comment-user-thumbnail
2022๋…„ 6์›” 6์ผ

๊ฑฐ์˜ ์ฑ…์ด๋„ค์š”... ์ถœ๊ฐ„ ๊ฐ€์ฆˆ์•„!!!!

1๊ฐœ์˜ ๋‹ต๊ธ€