์ „์ฒด ๊ธ€

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend Developer
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Today I Learned ๐Ÿ“š โญ ๋ฐฐ์—ด์ด ๋‚˜ํƒ€๋‚ฌ๋‹คํ•˜๋ฉด ์ƒ๊ฐ๋‚˜๋Š” for๋ฌธ ๋‹ค์–‘ํ•œ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ๋ฅผ ๋ถ€์—ฌ๋ฐ›์•˜๊ณ , ํ•˜๋‚˜์”ฉ ํ’€์–ด๋ณด๊ณ  ์žˆ๋Š”๋ฐ ๋ฐฐ์—ด๋กœ ํ•˜๋Š” ๋ฌธ์ œ๋งŒ ๋‚˜์™”๋‹คํ•˜๋ฉด ์ž์—ฐ์Šค๋ ˆ for๋ฌธ์„ ์“ฐ๊ณ  ์žˆ๋‹ค. ์ด์ œ ์ง€๊ฒน๊ธฐ๊นŒ์ง€ํ•œ for๋ฌธ. ๋ฌธ์ œ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ฒ ์ง€๋งŒ ์–ด๋–ค ๋ฌธ์ œ๋Š” for๋ฌธ์„ ์“ฐ๋ฉด ํšจ์œจ์ ์ด๊ธฐ๋„ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ๋‚ด์žฅํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ๋Š” ์จ์„œ ํ’€๊ณ  ์‹ถ์€๋ฐ ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋‚˜๋‹ˆ๊น, ๋‚ด์žฅํ•จ์ˆ˜ ๋•Œ๋ฌธ์ธ๊ฑด์ง€, ์˜คํƒ€๊ฐ€ ์žˆ๋Š”๊ฑด์ง€, ๋‚ด๊ฐ€ ์“ฐ๋Š” ํ•จ์ˆ˜์— ํ™•์‹ ์ด ์—†์–ด์„œ ๊ณ„์†ํ•ด์„œ ํšŒํ”ผ๋งŒ ํ•˜๊ฒŒ ๋œ๋‹ค. ์˜ค๋Š˜ ํ•จ๊ป˜ ๊ณต๋ถ€ํ•˜๋Š” ํŒ€์› ์ค‘ ํ•œ ๋ถ„์ด reduce() ๋ผ๋Š” ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•ด์„œ ์„ค๋ช…ํ•ด์ค„ ์ˆ˜ ์žˆ๊ฒ ๋ƒ๊ณ  ๋ฌผ์–ด๋ณด์…”์„œ ๋”ฐ๋กœ ๊ฒ€์ƒ‰์„ ํ•ด๋ดค์—ˆ๋‹ค. reduce()ํ•จ์ˆ˜๋Š” ๊ทธ์ € ๋ฐฐ์—ด์˜ ์š”์†Œ์˜ ์ „์ฒด ํ•ฉ์‚ฐ์„ ๊ตฌํ•˜๊ฑฐ๋‚˜, ์ตœ๊ณ ๊ฐ’์„ ๊ตฌํ•  ๋•Œ ์ผ๋Š”..
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Today I Learned ๐Ÿ“š โญ ์ƒˆ๋กœ์šด ์ฃผ -! ์ƒˆ๋กœ์šด ํŒ€์›๋“ค! ์ƒˆ๋กœ์šด ์ฃผ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ๋‹ค. ์ด๋ฒˆ ์ฃผ๋Š” ์ฃผํŠน๊ธฐ ๋“ค์–ด๊ฐ€๊ธฐ ์ „์— ๊ธฐ์ดˆ์ ์ธ ๊ณต๋ถ€๋ฅผ ํ•˜๋Š” ์ฃผ๊ฐ„์œผ๋กœ ์ฃผํŠน๊ธฐ๋กœ โ€˜๋ฆฌ์•กํŠธโ€™๋ฅผ ์„ ํƒํ•œ ๋‚ด๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝ ๋ฌธ๋ฒ•์„ ๋‹ค์งˆ ์ˆ˜ ์žˆ๋Š” ์ฃผ์ด๊ธฐ๋„ ํ•˜๋‹ค. ์ด๋ฏธ ์ œ๊ณต๋ฐ›์€ ์ˆ˜์—…๋“ค์€ ๋ณธ ์ƒํ™ฉ์ด๊ณ  ๊ฐ€์ง€๊ณ  ์žˆ๋˜ ๋ชจ๋˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฑ…์„ ์ด๋ฒˆ์ฃผ์— ๋…ํŒŒํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ์ƒˆ๋กœ์šด ํŒ€์„ ๋ถ€์—ฌ๋ฐ›๊ณ , ๋‚˜๋Š” ์ด ํŒ€์˜ ํŒ€์žฅ์ด ๋˜์—ˆ๋‹ค! ๋ญ๋ž„๊นŒ, ์ง€๋‚œ ์ฃผ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธํ•˜๋ฉด์„œ ์‹œ๊ฐ„ ๋ถ„๋ฐฐ๋ผ๋˜๊ฐ€, ํ๋ฆ„๋„๋ฅผ ๋จธ๋ฆฟ์†์œผ๋กœ ๊ทธ๋ฆฌ๋Š” ์—ญํ• ์„ ํ–ˆ์—ˆ๋Š”๋ฐ (ํŒ€์žฅ๋„ ์•„๋‹ˆ์˜€์ง€๋งŒ) .. ์ด๋ฒˆ์—” ์ง„์งœ๋กœ ๊ทธ๋ž˜์•ผํ•˜๋Š” ์ƒํ™ฉ์ด ์™”๋‹ค. ์ƒˆ๋กœ ๋งŒ๋‚œ ํŒ€์›๋“ค๊ณผ ๊ฐ„๋‹จํ•œ ์ž๊ธฐ์†Œ๊ฐœ๋„ ์—†์ด ์ด๊ฒƒ์ €๊ฒƒ ๊ณ„ํš์„ ์ด์•ผ๊ธฐํ–ˆ๋˜ ๋‚˜ .. ใ…Ž ์„ฑ๊ฒฉ์ด ๊ธ‰ํ•ด๊ฐ€์ง€๊ณ  ์ด๊ฑฐ์› ใ…Ž โญ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ฒฉํŒŒ! ํ•ญํ•ด99..
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Weekly I Learned ๐Ÿ“š โญ1์ฃผ์ฐจ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ ๋งˆ๋ฌด๋ฆฌ ๊ธˆ์š”์ผ ์ž์ •๊นŒ์ง€์˜€๋˜ ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งˆ๋ฌด๋ฆฌํ•˜๋А๋ผ. 4-5์ผ์€ ์ง„์งœ ์ƒˆ๋ฒฝ 3์‹œ์—๋‚˜ ์ž ์— ๋“ค ์ˆ˜๊ฐ€ ์žˆ์—ˆ๋‹ค. ๋•๋ถ„์— TIL๋„ ์“ธ ์‹œ๊ฐ„์ด ์—†์—ˆ๋‹ค. ๋ชจ๋“ ๊ฒŒ ๋งˆ๋ฌด๋ฆฌ ๋œ ์ง€๊ธˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ”„๋กœ์ ํŠธ์— ๋Œ€ํ•œ ํšŒ๊ณ ๋ฅผ ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ชฐ์•„์น˜๋“ฏ์ด ํ•œ ํ”„๋กœ์ ํŠธ์—์„œ ๋ญ˜ ์–ป์„ ์ˆ˜ ์žˆ์„๊นŒ? ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•ด๋ดค๋Š”๋ฐ, ํ”ผ๋“œ๋ฐฑ ์‹œ๊ฐ„์— ํ•  ์งˆ๋ฌธ๋“ค์„ ์ค€๋น„ํ•˜๊ณ  ํ”„๋กœ์ ํŠธ์— ๋‚ด์šฉ์„ ๋ฌธ์„œํ™”์‹œํ‚ค๋ฉด์„œ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ์šฐ๋ฆฌ๊ฐ€ ์ง  ์ฝ”๋“œ๋ฅผ ๋ณผ ์‹œ๊ฐ„์„ ๊ฐ€์กŒ์—ˆ๋‹ค. ์„œ๋กœ๊ฐ€ ์ง  ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•˜๊ณ , ๋งˆ์ง€๋ง‰๊นŒ์ง€ ๊ตฌํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๋˜ ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ด์•ผ๊ธฐ๋ฅผ ํ•  ์‹œ๊ฐ„์„ ๊ฐ€์ง„ ๊ฑด ์ •๋ง ์ข‹์•˜๋‹ค. ํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ˜‘์—…์œผ๋กœ ๋๋งˆ์ณค๋‹ค๋Š” ๋ฟŒ๋“ฏํ•จ๊ณผ ์ด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ๋‚ด๊ฐ€ ๊ตฌํ˜„ํ–ˆ๋‹ค๊ณ ?! ๋ผ๋Š” ๊ฐ๊ฒฉ๊ณผ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ์ƒ๊ฐ์ด ๋“ค..
๋ณธ ํฌ์ŠคํŒ…์€ ์ง€๋‚œ 11์›”์— ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค โญ ์›น ์Šคํฌ๋ž˜ํ•‘ ํŒ€ ํ”„๋กœ์ ํŠธ๋กœ ์„œ๋กœ ํ•ด์•ผํ•  ๊ฒƒ ๋“ค์„ ๋‚˜๋ˆ„๋ฉด์„œ ์–ด์ฉ์ง€ ๋‚˜๋„ ๋ชจ๋ฅด๊ฒŒ ๋ฉ”์ธ ํŽ˜์ด์ง€์™€ ์ƒ์„ธํŽ˜์ด์ง€์— ๊ฑธ์นœ ์›น ์Šคํฌ๋ž˜ํ•‘ ์ž‘์—…์„ ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค. ๋‹ค๋“ค ํ•ด๋ณด๊ณ  ์‹ถ์€๊ฒŒ ์žˆ๋‹ค๊ณ  ํ•ด์„œ ๋„๋งก์•„ํ•˜๊ฒŒ ๋œ ๊ฒƒ์ธ๋‹ค. ๊ทธ ๋™์•ˆ ํ˜ผ์ž ๋…ํ•™์œผ๋กœ ํ•ด๋ณด์ง€ ๋ชป ํ•œ ๊ฒƒ์ด์—ฌ์„œ ์กฐ๊ธˆ ๋‘‘ํ”๋‘‘ํ”ํ–ˆ๋‹ค ์›น ์Šคํฌ๋ž˜ํ•‘(web scraping)์ด๋ž€? ์›น ์‚ฌ์ดํŠธ ์ƒ์—์„œ ์›ํ•˜๋Š” ๋ถ€๋ถ„์— ์œ„์น˜ํ•œ ์ •๋ณด๋ฅผ ์ปดํ“จํ„ฐ๋กœ ํ•˜์—ฌ๊ธˆ ์ž๋™์œผ๋กœ ์ถ”์ถœํ•˜์—ฌ ์ˆ˜์ง‘ํ•˜๋Š” ๊ธฐ์ˆ ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด ์šฉ์–ด์™€ ์œ ์‚ฌํ•œ ๋А๋‚Œ์œผ๋กœ ์“ฐ์ด๋Š” ๋‹จ์–ด๊ฐ€ ์›น ํฌ๋กค๋ง์ด๋‹ค. ํ˜ผ์šฉํ•ด์„œ ์“ฐ๊ณ  ์žˆ์ง€๋งŒ. ์›น ํฌ๋กค๋ง(web crawling) ์€ ์ž๋™ํ™” ๋ด‡(bot)์ธ ์›น ํด๋กœ๋Ÿฌ๊ฐ€ ์ •ํ•ด์ง„ ๊ทœ์น™์— ๋”ฐ๋ผ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ธŒ๋ผ์šฐ์ง•ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๋‚ด๊ฐ€ ํ•œ ๊ฒƒ์€ ์›น ์Šคํฌ..
๋ณธ ํฌ์ŠคํŒ…์€ ์ง€๋‚œ 11์›”์— ์—…๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค ์ •๋ณดDB ๋งŒ๋“ค๊ธฐ ์šฐ๋ฆฌ ํŒ€ ํ”„๋กœ์ ํŠธ์—๋Š” ์œ ์ €db, ๋ฆฌ๋ทฐdb, ์ •๋ณดdb ์ด 3๊ฐ€์ง€๊ฐ€ ํ•„์š”ํ•œ๋ฐ, ๋‚˜๋Š” ๊ทธ ์ค‘์— ์ •๋ณด db๊ฐ€ ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ ๋งŒ๋“ค๊ฒŒ ๋˜์„œ ํ•˜๋ฃจ์˜ ๊ณ„ํš์„ DB ๋ฐ์ดํ„ฐ๋ฅผ ๊ธ์–ด์™€์„œ ๋ณด๋‚ด๋Š” ๊ฒƒ์œผ๋กœ ์‹œ์ž‘ํ–ˆ๋‹ค. DB๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฑธ ๋จธ๋ฆฟ์†์œผ๋กœ ์ƒ๊ฐ๋งŒ ํ–ˆ์ง€ ๊ธฐ๋Šฅ ๊ตฌํ˜„ ๊ณ„ํš์„ ์งœ๋‹ค๋ณด๋‹ˆ ์šฐ์„  DB ๋จผ์ € ๋งŒ๋“ค์–ด ๋‘๋Š”๊ฒŒ ์—ฌ๋Ÿฌ๋ชจ๋กœ ํŽธํ•  ๊ฒƒ ๊ฐ™์•˜๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฌ ํŒ€ ํ”„๋กœ์ ํŠธ์˜ ๊ธฐํš์ด ์ œ๋Œ€๋กœ ๋ ์ง€ ํ™•์ธ์„ ํ•ด์•ผํ–ˆ๊ธฐ์— ๋ชฝ๊ณ DB๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ ์›น ํฌ๋กค๋ง๋ถ€ํ„ฐ ํ–ˆ๋‹ค. ๋‚˜ ํฌํ•จ ๋‹ค๋ฅธ ํŒ€์› ํ•œ๋ช…๋„ ๊ฐ™์€ ํŽ˜์ด์ง€์˜ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ฒŒ ๋˜๋ฉด์„œ ๊ฐ์ž ๊ฐ™์€ ์‚ฌ์ดํŠธ์˜ ์›น ํฌ๋กค๋ง๋ถ€ํ„ฐ ํ•ด๋ณด๊ธฐ๋กœ ํ•˜๊ณ  2์‹œ๊ฐ„ ์ •๋„ ๋’ค์— ๋‹ค์‹œ ๋งŒ๋‚˜์„œ ์ด์•ผ๊ธฐ๋ฅผ ๋‚˜๋ˆ„๊ธฐ๋กœ ํ–ˆ๋Š”๋‹ค. ์šฐ๋ฆฌ ๋‘˜ ๋‹ค ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ db๋ฅผ ๋งŒ๋“ค๊ณ  ์žˆ์—ˆ๋‹ค. ๋ฌผ๋ก ..
๋ณธ ํฌ์ŠคํŒ…์€ ์ง€๋‚œ 11์›”์— ์—…๋กœ๋“œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. โญ 1์ฃผ์ฐจ ํ”„๋กœ์ ํŠธ : ์ „์‹œ ๋ญํ•˜๋‹ˆ? (์ „์‹œํšŒ ๋ฆฌ๋ทฐ ์‚ฌ์ดํŠธ) ์™€์ด์–ดํ”„๋ ˆ์ž„ ์ž‘์„ฑ โœ” 1์ฃผ์ฐจ ํŒ€์›๋“ค๊ณผ ํ•จ๊ป˜ ๊ณ ์•ˆ๋œ ์•„์ด๋””์–ด๋ฅผ ์ฒด๊ณ„ํ™”์‹œํ‚ค๋Š” ๊ฒƒ์œผ๋กœ ๋Œ€๋ถ€๋ถ„์˜ ์‹œ๊ฐ„์„ ๋ณด๋ƒˆ๋‹ค. ๋‚ด๊ฐ€ ์ƒ๊ฐ์ง€ ๋ชปํ•œ ์•„์ด๋””์–ด์™€ ๊ธฐ๋Šฅ๋ถ€๋ถ„๋“ค์„ ํ•จ๊ป˜ ์ƒ๊ฐํ•ด๋‚˜๊ฐ€๋‹ค๋ณด๋‹ˆ ์ด๋ฏธ ๊ทธ๋Ÿด์‹ธํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ํƒ„์ƒํ•œ ๊ธฐ๋ถ„์„ ๋А๊ผˆ๋‹ค. โญ ํŒŒ์ด์ฌ jinja2 ์‚ฌ์šฉ๋ฒ• Jinja2 is a templating engine for Python. jinja๋Š” python ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์šฉ ์›น ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค. Flask๋กœ ์›น์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , jinja2๋Š” ๊ทธ ์†์—์„œ ์‹ค์žฌํ•˜๋Š” ์–ด๋–ค ํŒŒ์ผ์— ์–ด๋–ค ๋ณ€์ˆ˜๋ฅผ ์ง‘์–ด๋„ฃ์–ด์„œ ์•ฝ๊ฐ„ ๋ณ€๊ฒฝ์‹œ์ผœ์„œ html๋กœ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์—”์ง„์ด๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ajax๋ฅผ ํ†ตํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๋˜ ๊ฒƒ์„ jinja2..
๐Ÿ’ก ์ปค๋ฆฌ์–ด ์ „ํ–ฅ์˜ ์ด์œ  ์™œ ์ปค๋ฆฌ์–ด ์ „ํ–ฅ์„ ํ•ด? ๋ผ๋Š” ๊ถ๊ธˆ์ฆ์ด ์•„๋งˆ๋„ ๋‚ด ์ด๋ ฅ์„œ๋ฅผ ๋ฐ›์•„๋ณด์‹œ๋Š” ๋ถ„๋“ค์˜ ๋จธ๋ฆฟ์†์„ ์Šค์ณ ์ง€๋‚˜๊ฐˆ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋ž˜์„œ ๋‚˜๋Š” ์ƒ์„ธํžˆ ๊ทธ ์ด์•ผ๊ธฐ๋ฅผ ํ•ด๋ณผ๊นŒ ํ•œ๋‹ค. ๋ฌผ๋ก , ์ด๋ ‡๊ฒŒ ๋ธ”๋กœ๊ทธ์— ๊ตฌ๊ตฌ์ ˆ์ ˆ ์ ์–ด์„œ ๊ณต๊ฐœํ•  ํ•„์š”์žˆ์„๊นŒ? ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์ง€๋งŒ ๋ญ ์–ด๋–ค๊ฐ€, ๋‚œ ์‚ฌ๋žŒ๋“ค๊ณผ ๋‚ด ์ด์•ผ๊ธฐ๋ฅผ ๊ณต์œ ํ•˜๋Š”๊ฒŒ ์ฆ๊ฑฐ์šด ์‚ฌ๋žŒ์ด๋‹ˆ๊น ๐Ÿ˜Š ํ•œ๊ตญ์„ ๋– ๋‚˜ ์˜๊ตญ์œผ๋กœ! ์ด ๋•Œ ๋‚˜๋Š” ์ •๋ง ๋งŽ์ด ์ง€์ณ์žˆ์—ˆ๋‹ค. ๋‹ค๋‹ˆ๊ณ  ์žˆ๋˜ ์ง์žฅ ๋‚ด์˜ ํŒŒ๋ฒŒ ์‹ธ์›€์— ๋“ฑ์ด ํ„ฐ์ง€๊ณ  ์žˆ์—ˆ๊ณ , ์ผ์€ ์žฌ๋ฏธ์žˆ์—ˆ์ง€๋งŒ ๊ฒฌ์ œ ์„ธ๋ ฅ๋“ค๊ณผ ์œ„์—์„œ ๊ฐ€ํ•ด์ง€๋Š” ์••๋ฐ•์— ์ŠคํŠธ๋ ˆ์Šค๊ฐ€ ์ด๋งŒ์ €๋งŒ ์•„๋‹ˆ๊ณ  ๊ฑด๊ฐ•๋„ ์ ์  ์•ˆ ์ข‹์•„์กŒ์—ˆ๋‹ค. ์˜์‚ฌ๋Š” ๋ณ‘์›์„ ๋„ˆ๋ฌด ์ž์ฃผ ์ฐพ๋Š” ๋‚˜์—๊ฒŒ ํ•œ ๋‹ฌ์˜ ํœด์‹์„ ๊ถŒํ–ˆ๊ณ , ๋ฌผ๋ก  ํšŒ์‚ฌ์—์„œ ์ด๋ฅผ ๋ฐ›์•„ ์ค„ ์ด์œ ๊ฐ€ ์—†์—ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ง€๋‚ด๋‹ค๊ฐ€๋Š” ๋‚ด๊ฐ€ ์ข‹์•„ํ•˜๋Š” ์ผ์กฐ์ฐจ๋„ ์˜ค๋žซ๋™์•ˆ ํ• ..
๋ณธ ํฌ์ŠคํŠธ๋Š” 2021๋…„ 10์›”์— ๋“ฑ๋ก๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๋ณธ๊ฒฉ์ ์ธ ํ•ญํ•ด์— ์ฐธ์—ฌํ•˜๊ธฐ ์ „์— ์‚ฌ์ „์ค€๋น„๋ผ๊ณ  ํ•ด์„œ ๊ผญ ๋“ค์–ด์•ผํ•˜๋Š” ๊ฐ•์˜๋“ค์ด ์ œ๊ณต๋œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐ•์˜ ์ค‘ ์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜ ๊ฐ•์˜๋Š” ๊ผญ ๋“ฃ๊ณ  ์ฐธ์„ํ•ด์•ผํ•œ๋‹ค๊ณ  ๊ฐ•์กฐ ๋˜ ๊ฐ•์กฐ๋ฅผ ํ•˜์‹œ๋˜ ๋งค๋‹ˆ์ €๋‹˜. ๋‚˜๋Š” ์™„์ „ ๋ผ์ŠคํŠธ๋ฏธ๋‹›์œผ๋กœ 4๊ธฐ์— ์ฐธ์—ฌํ•˜๊ฒŒ๋˜์„œ ์‚ฌ์ „์ค€๋น„๋ฅผ ํ•  ์‹œ๊ฐ„์ด ๋”ฑ 5์ผ ๋‚จ์•„์žˆ์—ˆ๋Š”๋ฐ, ๊ทธ๊ฒƒ๋„ ์ค‘๊ฐ„์— ์ „์‚ฐ์˜ค๋ฅ˜๋กœ ๋‚ด๊ฐ€ 4๊ธฐ์— ์ฐธ์—ฌ๋ฅผ ๋ชปํ•˜๊ฒŒ ๋˜๋Š” ์ค„ ์•Œ๊ณ  ์ดํ‹€์ •๋„ ์‹œ๊ฐ„์„ ๋‚ ๋ ธ์—ˆ๋‹ค. ์šฐ์—ฌ๊ณก์ ˆ ๋์— ์ฐธ์—ฌํ•˜๊ธฐ๋กœ ๋งˆ์ง€๋ง‰์— ๊ฒฐ์ •์„ ํ•˜์˜€๊ณ , ๊ธ‰ํ•˜๊ฒŒ ๊ฐ•์˜๋ฅผ ๋ณด๋ฉฐ ์ค€๋น„๋ฅผ ์‹œ์ž‘ํ–ˆ๋‹ค. ๐Ÿ˜Š (+์ถ”๊ฐ€) ์™œ์ธ์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์‚ฌ์ „์ค€๋น„ ๊ฐ•์˜๋ฅผ ๋‹ค ๋“ค์—ˆ๋Š”๋ฐ, ์™„์ฃผ๊ฐ€ ๋œจ์ง€ ์•Š๋Š”๋‹ค. โ€ฆ. โญ ์›น๊ฐœ๋ฐœ ์ข…ํ•ฉ๋ฐ˜ ๊ฐ•์˜๋Š” ์ด 5์ฃผ์ฐจ๋กœ ์ค€๋น„๋˜์–ด์žˆ๋‹ค. 1์ฃผ์ฐจ โ€“ html,css,Bootstrap, Javascript(JQuer..
React.js๋ฅผ ์“ธ ๋•Œ ์ •๋ง ๋งŽ์ด ์“ฐ๋Š” hook ์ค‘์— ํ•˜๋‚˜์ธ useState ๊ธฐ๋ณธ ์ค‘์˜ ๊ธฐ๋ณธ์ž…๋‹ˆ๋‹ค. ์ผ๋‹จ hook์ด๋ž€ ๋ฌด์—‡์ด๋ƒ?! Hook์€ ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด useState๋Š” state๋ฅผ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ๋‹ค๋ฅธ Hook๋“ค์€ ๋‚˜์ค‘์— ์‚ดํŽด๋ด…์‹œ๋‹ค! ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๋˜ ์ค‘ state๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ํด๋ž˜์Šค ์ปดํฌ๋„ŒํŠธ๋กœ ๋ฐ”๊พธ๊ณค ํ–ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด์ œ ํ•จ์ˆ˜ ์ปดํฌ๋„ŒํŠธ ์•ˆ์—์„œ Hook์„ ์ด์šฉํ•˜์—ฌ state๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์€ ์•„์ฃผ ๊ฐ„๋‹จํ•˜๋‹ต๋‹ˆ๋‹ค. ์•„์ฃผ ๊ฐ„๋‹จํ•œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งŒ๋“ค๋ฉด์„œ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค Birthday Reminder ๋ผ๋Š” ์ปจ์…‰์˜ ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. 5๋ช… ๊ฐ€๋Ÿ‰์˜ ์‚ฌ๋žŒ ํ”„๋กœํ•„์ด ํ•„์š”ํ•ด์„œ ๋ ˆ๋“œ๋ฒจ๋ฒณ ๋ฉค๋ฒ„๋“ค ํ”„๋กœํ•„ ์‚ฌ์ง„์„ ๊ธ..
์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ API๋ฅผ ์—ฐ๋™ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต fetch API ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋ฆฌ์•กํŠธ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜์ด๊ธฐ๋•Œ๋ฌธ์— fetch๋ฅผ ์‚ฌ์šฉํ•ด์„œ API ๋ฐ์ดํ„ฐ๋ฅผ ๋น„๋™๊ธฐ ํ†ต์‹ ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ๋งŽ์€ ์‚ฌ๋žŒ๋“ค์ด ๋ฆฌ์•กํŠธ๋ฅผ ์“ธ ๋• Axios๋ฅผ ๋” ๋งŽ์ด ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. API๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์˜ค๊ธฐ ์œ„ํ•ด์„œ axios๋ฅผ ์จ๋ณด์ž! #Axios ๋‹ค์šด๋ฐ›๊ธฐ 1๏ธโƒฃ cmd ํ˜น์€ ์ฝ”๋“œ์—๋””ํ„ฐ ํ„ฐ๋ฏธ๋„์„ ์ด์š”ํ•ด์„œ axios๋ฅผ ๋‹ค์šด๋ฐ›์Šต๋‹ˆ๋‹ค npm i axios ์„ค์น˜๊ฐ€ ์ž˜ ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด Package.json ์„ ํด๋ฆญํ•ด๋ณด์‹œ๋ฉด ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ์–ด์š”. ์•ˆ์— axios๊ฐ€ ์žˆ๋‹ค๋ฉด ์„ค์น˜์™„๋ฃŒ! 2๏ธโƒฃ์ฝ”๋“œ๋ฅผ ์“ฐ๊ณ  ์žˆ๋Š” ํŒŒ์ผ์— import ํ•ด์ฃผ๊ธฐ axios๋ฅผ ์“ธ ๊ณณ์— ๊ผญ import๋ฅผ ํ•ด์ค˜์•ผ ์“ธ ์ˆ˜ ์žˆ๋‹ต๋‹ˆ๋‹ค 3๏ธโƒฃaxios๋ฅผ ์“ฐ๋Š”๋ฐ..
๋ฆฌ์•กํŠธ๋กœ ๊ฐ„๋‹จํ•œ ๊ฒŒ์‹œํŒ์„ ๋งŒ๋“ค์–ด๋ณด๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด ๊ฒŒ์‹œํŒ์— ๋“ค์–ด๊ฐ€๋Š” ๊ธฐ๋Šฅ ์ค‘์— ํ•˜๋‚˜๊ฐ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋“ฑ๋กํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค๊ณ  ๋ฉ”์ธ ํŽ˜์ด์ง€๋ฅผ ๋”ฐ๋กœ ๋งŒ๋“ค์–ด์•ผํ•ด์„œ router์„ ์จ์•ผํ–ˆ๋‹ค. React Router ๋ฆฌ์•กํŠธ๋Š” SPA (Single Page Application) ๋ฐฉ์‹์œผ๋กœ์จ, ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŽ˜์ด์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜๋Š” ๊ธฐ์กด์˜ MPA ๋ฐฉ์‹๊ณผ ๋‹ฌ๋ฆฌ ์ƒˆ๋กœ์šด ํŽ˜์ด์ง€๋ฅผ ๋กœ๋“œํ•˜์ง€ ์•Š๊ณ  ํ•˜๋‚˜์˜ ํŽ˜์ด์ง€ ์•ˆ์—์„œ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ํ˜•ํƒœ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ๊ทธ๋ฆผ์ฒ˜๋Ÿผ ํ•˜๋‚˜์˜ html ํŒŒ์ผ์—์„œ ํšŒ์›์ถ”๊ฐ€ ํŽ˜์ด์ง€๋กœ ๋„˜์–ด๊ฐ€๊ธฐ ์œ„ํ•ด์„œ ํด๋ฆญ์‹œ html์ด ๋ฐ”๋€Œ๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํšŒ์›์ถ”๊ฐ€.js๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ Œ๋”๋งํ•ด์˜ค๋Š” ๋ฐฉ์‹์ด SPA์ž…๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ด๊ฑธ ํ•˜๊ธฐ ์œ„ํ•ด์„œ react-router๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
JavaScript๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์–ด๋А ์ •๋„ ์ดํ•ดํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์ž ์ด๊ฒƒ์ €๊ฒƒ ํ”„๋กœ์ ํŠธ๋ฅผ ๋” ๋งŒ๋“ค์–ด๋ณด๊ณ , ๋” ์‰ฝ๊ฒŒ ๋งŒ๋“ค์–ด๋ณด๊ณ  ์‹ถ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ ๋ฆฌ์•กํŠธ์—๋„ ์†์„ ๋Œ”๋‹ค. React(๋ฆฌ์•กํŠธ)๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ค‘ ํ•˜๋‚˜๋กœ์„œ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋œ๋‹ค. ํŽ˜์ด์Šค๋ถ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋งŒ๋“ ๊ฑด๋ฐ, ์ž‘๋…„๊นŒ์ง€๋งŒ ํ•ด๋„ ๊ต‰์žฅํžˆ ํ•ซํ–ˆ๋Š”๋ฐ, ์š”์„ธ๋Š” ๋˜ ๋‹ค๋ฅธ๊ฒŒ ํ•ซํ•˜๋”๋ผ. ํ•˜์ง€๋งŒ ์–ด์ฉ” ์ˆ˜ ์—†๋‹ค ์ผ๋‹จ. ๋‚˜๋Š” ๋ฆฌ์•กํŠธ ๋ฐฐ๋ฅผ ํƒ”๋‹ค. ์‚ฌ์‹ค ๊ทธ๋ƒฅ ์›นํŽ˜์ด์ง€๋Š” HTML, CSS ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€๊ฐ€ ์ ์  ๋Š˜์–ด๋‚˜๊ณ , ๋™์ ์ธ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์›น์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์š”์ฆ˜์€ ๋‹จ์ˆœํ•œ ์›น์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์œ ๋™์ ์ธ ๊ฑธ ์ข‹์•„ํ•˜๋‹ค๋ณด๋‹ˆ ์ด๋Ÿด ๋•Œ, ๋ฆฌ์•กํŠธ๊ฐ€ ์ •๋ง ..