๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป 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 ๋งŒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํžˆ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ ํŽ˜์ด์ง€๊ฐ€ ์ ์  ๋Š˜์–ด๋‚˜๊ณ , ๋™์ ์ธ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์›น์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์š”์ฆ˜์€ ๋‹จ์ˆœํ•œ ์›น์ด ์•„๋‹ˆ๋ผ, ๋ชจ๋ฐ”์ผ์—์„œ๋„ ์“ธ ์ˆ˜ ์žˆ๋Š” ์œ ๋™์ ์ธ ๊ฑธ ์ข‹์•„ํ•˜๋‹ค๋ณด๋‹ˆ ์ด๋Ÿด ๋•Œ, ๋ฆฌ์•กํŠธ๊ฐ€ ์ •๋ง ..
์ด๋Ÿฐ ๋ฌด์Šจ….์ด์ œ๊ป€ git pull origin master / git push origin master๋กœ ์ž˜ ๋˜์–ด์™”๋Š”๋ฐ ๋œฌ๊ธˆ์—†์ด ์˜ค๋ฅ˜๊ฐ€ ์—„์ฒญ ๋‚˜์„œ ๋˜ 30๋ถ„๊ฐ€๋Ÿ‰ ํ—ค๋งค์—ˆ๋‹ค. ……. ์•„๋‹ˆ …master๊ฐ€ ์–ธ์ œ main ์œผ๋กœ ๋ฐ”๊ผˆ์Šด๊ฝˆ? ๊ตฌ๊ธ€๋ง์„ ํ•ด๋ณด๋‹ˆ 2020๋…„ 10์›”์ฏค๋ถ€ํ„ฐ ๋ฐ”๊ผˆ๋‹ค๋Š”๋ฐ, … ๋ช‡ ์ฃผ ์ „์— ์˜ฌ๋ฆฐ repository์— ํŒŒ์ผ๋“ค ๋‹ค ์–ด๋–ป๊ฒŒ ์˜ฌ๋ผ๊ฐ„๊ฑฐ์ž„? ๋‚˜ master๋กœ ์˜ฌ๋ ธ๋Š”๋ฐ? ํ˜ผ๋ž€ํ•˜๋‹ค ํ˜ผ๋ž€ํ•ด….. [์˜ค๋ฅ˜ ๋ฉ”์„ธ์ง€] fatal: couldn’t find remote ref master [ํ•ด๊ฒฐ] git pull origin master ๋ฅผ git pull origin main ์œผ๋กœ ์˜ฌ๋ ค์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค git push origin master ๋ฅผ git push origin main์œผ๋กœ ์˜ฌ๋ฆฌ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค –..
๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ๋‚˜์ค‘์— ๋‹ค์‹œ ์ฐพ์•„๋ณด๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์†Œํ•œ ๊ฒƒ๊นŒ์ง€ ๊นƒํ—™์— ์˜ฌ๋ ค๋‘๋ ค๋Š” ํŽธ์ธ๋ฐ. ํ”„๋กœ์ ํŠธ๋ฅผ ๊นƒํ—ˆ๋ธŒ๋กœ pushํ•˜๋Š” ๋„์ค‘์— ๊ฐ‘์ž๊ธฐ ์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋–ด๋‹ค error: src refspec master does not match any error: failed to push some refs to ‘https://github.com/repository’ ํ•ด๊ฒฐ ๋ฐฉ์•ˆ์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๋‹ค! ์ฒซ ๋ฒˆ์งธ ๋ฐฉ์•ˆ์€. ๋‹ค์‹œ git init์„ ํ•ด์„œ push๊นŒ์ง€ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ! ํ•˜์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•์œผ๋กœ ๋‚˜๋Š” ํ•ด๊ฒฐ์„ ๋ณด์ง€ ๋ชป ํ–ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋ฐฉ์•ˆ์€, git branch๋ฅผ main ์—์„œ master๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๋Š” ๊ฑฐ๋‹ค. ๋””ํดํŠธ ๊ฐ’์œผ๋กœ ์ง„ํ–‰๋˜๋Š” ๊ฒŒ main์€๋ฐ master๊ฐ€ ๋ธŒ๋žœ์น˜๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์•„์„œ ์ƒ๊ธด ์˜ค๋ฅ˜์ธ ๊ฒƒ์ด๋‹ค. git push..
๋ฐ(Ming) ๐Ÿฐ
'๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (21 Page)