์ „์ฒด ๊ธ€

๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป Frontend Developer
๐Ÿ“ What I Learned ๊ฒฉ๋™์˜ 10์›”์ด์—ˆ์„๊นŒ..? ์˜ฌ ํ•œ ํ•ด๋„ 2๋‹ฌ๋ฐ–์— ์•ˆ ๋‚จ์•˜๋‹ค๊ณ  ํ•˜๋‹ˆ ๊ฐ‘์ž๊ธฐ ์‹ฌ์žฅ์ด ๋‘‘ํ”๋‘‘ํ”ํ•œ๋‹ค. ๋ถˆ์•ˆํ•ด์„œ ๋ง์ด๋‹ค. ๐Ÿ’ป Work ๊ธฐ์กด์— ๊ตฌํ˜„ ์ค‘์ด๋˜ ํ”„๋กœ์ ํŠธ๋Š” ๋” ์ด์ƒ ์‹ ๊ทœ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ๋“ค์ด ๋ฌผ๋ฐ€๋“ฏ์ด ๋“ค์–ด์˜ค๋ฉด์„œ ๊ฐ‘์ž๊ธฐ ๊ธฐ์กด์— ํ•ด๋˜ ๊ณณ๋“ค์ด ์˜ฌ์Šคํƒ‘๋œ ๋А๋‚Œ์ด๋‹ค. ๊ทธ๋™์•ˆ ๋ฏธ๋ฃจ๋˜ ํ’ˆ์งˆ ๋ณด์™„ ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๋‹ค ์—ฌ์œ ๋˜๋Š” ๋ฐฑ์—”๋“œ๊ฐœ๋ฐœ์ž๊ฐ€ ์—†์–ด์„œ ์ฃผ๋กœ UI์ ์ธ ๋ถ€๋ถ„, ์‚ฌ์šฉ์ž์˜ ์‚ฌ์šฉ์„ฑ์„ ๊ณ ๋ คํ•˜๋Š” ์ž‘์—…๋“ค์ด ์ฃผ๋ฅผ ์ด๋ฃจ์—ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ ๋„ ์ฐธ์—ฌํ•˜๊ฒŒ ๋œ ์ƒˆ๋กœ์šด ํ”„๋กœ์ ํŠธ. ์›๋ž˜ ํ”Œ๋Ÿฌํ„ฐ๋กœ ๊ตฌํ˜„ํ–ˆ๋˜๊ฑฐ๋ฅผ ๋ฆฌ์•กํŠธ ๋ณ€ํ™˜ ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ผ๋‹จ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์—์„œ ํ™•์—ฐํ•˜๊ฒŒ ๋А๊ปด์ง€๋Š” ํ”Œ๋Ÿฌํ„ฐ์™€ ๋ฆฌ์•กํŠธ์˜ ์„ฑ๋Šฅ์ฐจ์ด. ํ”Œ๋Ÿฌํ„ฐ์˜ ๋งค๋ ฅ์€ ์•ˆ๋“œ๋กœ์ด๋“œ, ios, ์›น๊นŒ์ง€ ๋™์‹œ์— ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์ ์ธ๋ฐ, ์•ฑ์€ ..
drag and drop ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ด์„œ ๋‹น์—ฐํ•˜๋‹ค๋Š” ๋“ฏ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ฐพ์•„ ์ผ๋Š”๋ฐ, ์›ฌ๊ฑธ - ๊ฐ€๋กœ๋กœ ์›€์ง์ด๋Š” ์Šฌ๋ผ์ด๋“œ ๊ตฌํ˜„์„ ํ•˜๊ณ  ๊ทธ ์•ˆ์— ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„์€ ์•„๋ž˜์œ„๋กœ ์Šคํฌ๋กค์ด ๋˜์–ด์•ผ ํ•œ๋‹ค. ๊ฒŒ๋‹ค๊ฐ€ ์›น์•ฑ์ธ์ง€๋ผ ํ„ฐ์น˜๋กœ ๋“œ๋ž˜๊ทธ๊นŒ์ง€ ๋˜์•ผํ•˜๋Š” ์ƒํ™ฉ์ด์—ˆ๋‹ค. ์ฒ˜์Œ์— ๊ตฌํ˜„ํ–ˆ์„ ๋•Œ๋Š” siwper๋ผ๋Š” ๋ฆฌ์•กํŠธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ์Šฌ๋ผ์ด๋“œ ์•ˆ์ชฝ ๋ถ€๋ถ„์—๋„ ๋‹ค๋ฅธ ๋“œ๋ž˜๊ทธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ ์ง„ํ–‰ํ–ˆ๋Š”๋ฐ, ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ด์œ ์—์„œ ์ œ๋Œ€๋กœ ๊ตฌํ˜„์„ ํ•  ์ˆ˜๊ฐ€ ์—†์—ˆ๋‹ค. ๊ฐ„๋‹จํ•˜๊ฒŒ ์‚ฌ์œ ๋ฅผ ์ด์•ผ๊ธฐํ•ด๋ณด์ž๋ฉด, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊นŒ์ง€ ์ถฉ๋Œ์„ ํ•œ๋‹ค. ๊ฐ„ํŽธํ•˜๊ฒŒ ์“ฐ์ž๊ณ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์“ฐ๋Š”๋ฐ ์„œ๋กœ ์ถฉ๋Œํ•ด์„œ ๋‚œ์žฅํŒ์ด ๋œ๋‹ค. ์ถฉ๋Œ ์•ˆ๋˜๋Š”๊ฑธ ์ฐพ์•˜๋”๋‹ˆ ๊ฐ€๋กœ ์Šฌ๋ผ์ด๋“œ ๊ตฌํ˜„์„ ๋„์šด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ชจ๋“  ๋งˆ์šฐ์Šค ์ด๋ฒคํŠธ๋ฅผ ๋‹ค ๋บ์–ด๊ฐ€์„œ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋จนํžˆ์ง€ ์•Š๋Š” ์ผ๋„ ๋ฐœ์ƒํ–ˆ๋‹ค. ๊ฒฐ๊ตญ์€ ํ•˜..
๊ฐ๊ฐ ๋”ฐ๋กœ ๋ธŒ๋žœ์น˜์—์„œ ์ž‘์—…์„ ํ•˜๊ณ  develop ๋ธŒ๋žœ์น˜๋กœ push ํ•  ๋•Œ๋งˆ๋‹ค merge conflict๊ฐ€ ๋‚œ๋‹ค!!! workspace.xml ํŒŒ์ผ์€ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ์„ค์ •๊ณผ ๊ด€๋ จ๋œ ์ •๋ณด๊ฐ€ ๋“ค์–ด๊ฐ€ ์žˆ๊ณ , ๋‹ค๋ฅธ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋‹ค๊ณ  ํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณดํ†ต .gitignore์— ์˜ฌ๋ ค์„œ develop mergeํ•  ๋•Œ๋งˆ๋‹ค ์ถฉ๋Œ ๋‚˜๋Š” ๊ฒƒ์„ ๋ง‰๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ํ˜„์žฌ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ๊ฐ€ ํ˜‘์—…์šฉ์ด ์•„๋‹ˆ์—ˆ๋Š”๋ฐ, ๋น„์ฆˆ๋‹ˆ์Šค ์ผ์ •์ƒ ๊ฐ‘์ž๊ธฐ ํˆฌ์ž…์ด ๋˜๋ฉด์„œ ์—ฌ๋Ÿฌ ๊ฐœ๋ฐœ์ž์™€ ์“ฐ๋Š” ํ˜‘์—… ํ”„๋กœ์ ํŠธ๊ฐ€ ๋˜์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์•„๋งˆ๋„ ์„ ์ž„์ด .gitignore ์„ธํŒ…์— ์ด ๋ถ€๋ถ„์„ ๋น ๋œจ๋ฆฐ ๊ฒŒ ์•„๋‹๊นŒ ์ƒ๊ฐํ•ด ๋ณธ๋‹ค.
flutter๋กœ ๋นŒ๋“œํ•œ ํ”„๋กœ์ ํŠธ๋Š” react๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ์ž‘์—…์„ ์ง„ํ–‰ ์ค‘์ด๋‹ค. ํ”„๋กœ์ ํŠธ๋ฅผ flutter๋กœ ๋นŒ๋“œํ•˜๋Š” ์ž‘์—…์„ ๋‚ด๊ฐ€ ํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์–ด๋А์ •๋„ flutter์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์žˆ์–ด์„œ cloneํ•ด์„œ ์ฝ”๋“œ๋ฅผ ์‚ดํŽด๋ณด๋ ค๋Š”๋ฐ ๋ฒ„์ ผ์ด ๋งž์ง€ ์•Š์•„์„œ ์ œ๋Œ€๋กœ run์ด ๋˜์ง€ ์•Š๋Š”๊ฒƒ์ด๋‹ค! ํ”Œ๋Ÿฌํ„ฐ ๋ฒ„์ ผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ๐Ÿš€ ๊ต‰์žฅํžˆ ๊ฐ„๋‹จํ•˜๋‹ค! ํ„ฐ๋ฏธ๋„์— ์•„๋ž˜์™€ ๊ฐ™์ด ์ ์–ด์ฃผ๋ฉด ๋œ๋‹ค. flutter upgrade ๊ทธ์ „์— ์šฐ์„  version์„ ์ฒดํฌํ•ด๋ณด์ž flutter --version ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด version๊ณผ dart version๋„ ํ•จ๊ป˜ ํ™•์ธํ•˜์‹ค ์ˆ˜ ์žˆ๋‹ค. upgrade ํ›„์—๋Š” ์ž‘์—…์ค‘์ธ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์„œ flutter -v pub get ์„ ํ•œ๋ฒˆ ํ•ด์ค˜์•ผ ํ”„๋กœ์ ํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ๋Œ์•„๊ฐ„๋‹ค!
๋งจ๋‚  ์ •ํ•ด์ ธ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•œ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ๋งŒํ•˜๋‹ค๊ฐ€ ๋ชจ์ฒ˜๋Ÿผ ์ƒˆ๋กœ์šด UI๋ฅผ ์งœ์•ผํ•˜๋Š” ์ผ์ด ์ƒ๊ฒผ๋‹ค. ๋ฐ‘๋ฐฅ์„ ๊น”์•„๋ณด์ž๋ฉด ใ…‹ใ…‹... ์ฒ˜์Œ๋ถ€ํ„ฐ ๋นŒ๋“œํ•œ ํ”„๋กœ์ ํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ ์ค‘๊ฐ„์— ๋ผ์—ฌ๋“  ํ”„๋กœ์ ํŠธ์˜€๊ธฐ์— ์ฝ”๋“œ๋ฅผ ์ฝ์„ ๋•Œ๋ถ€ํ„ฐ ๋ฒ„๋ฒ…์ด๊ธด ํ–ˆ๋‹ค. ์ž ์ด์ œ ๋ฐ‘๋ฐฅ์€ ๊น”๋ฆผ. ๋‚ด๊ฐ€ ํ•ด์•ผํ•  ๋ชฉ๋ก 1. swiper ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์“ด๋‹ค. 2. navigator ๋ฒ„ํŠผ์„ ๋‚˜์˜ค๊ฒŒํ•˜๊ณ  ์ฒซ ์Šฌ๋ผ์ด๋“œ์—์„œ๋Š” ์™ผ์ชฝ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ฒŒ ๋งˆ์ง€๋ง‰ ์Šฌ๋ผ์ด๋“œ๋Š” ์˜ค๋ฅธ์ชฝ ๋ฒ„ํŠผ์ด ์‚ฌ๋ผ์ง€๊ฒŒํ•œ๋‹ค. 3. ์Šฌ๋ผ์ด๋“œ๋Š” ๋งˆ์šฐ์Šค ๋“œ๋ž˜๊ทธ๋กœ๋„ ๊ฐ€๋Šฅํ•˜๊ฒŒํ•œ๋‹ค. Code import React, { useState } from 'react'; import { Swiper, SwiperSlide } from 'swiper/react'; const Projects = () => { const [sw..
โŒ ๋ฌธ์ œ์ƒํ™ฉ {"code":"ER_NOT_SUPPORTED_AUTH_MODE","errno":1251,"sqlMessage":"Client does not support authentication protocol requested by server; consider upgrading MySQL client","sqlState":"08004","fatal":true}... Nodejs๋ฅผ ์‚ฌ์šฉํ•ด์„œ mySql์„ ์—ฐ๋™ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, mysql ๋ฐ์ดํ„ฐ๊ฐ€ ์•ˆ ๋ถˆ๋Ÿฌ์™€์ง€๋Š” ๊ฒƒ์ด๋‹ค. ์‚ฌ์šฉ๊ถŒํ•œ ์˜ค๋ฅ˜๋กœ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜์ด๋‹ค mysql ํŒจ์Šค์›Œ๋“œ ํ”Œ๋กœ๊ทธ์ธ์„ ์†Œํ™”ํžˆ์ง€ ๋ชปํ•ด์„œ ์ƒ๊ธด ์˜ค๋ฅ˜๋กœ mysql root๋กœ ๋“ค์–ด๊ฐ€์„œ ํŒจ์Šค์›Œ๋“œ๋ฅผ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค. ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 1. mysql root ๊ณ„์ •์œผ๋กœ ์ ‘์†ํ•˜๊ธฐ - ํ„ฐ๋ฏธ๋„์„ ์˜คํ”ˆ - 'cd /usr/l..
๐Ÿ“ What I Learned ํšŒ๊ณ ๋ฅผ ์จ์•ผ ํ•˜๋Š” ๊ฑธ๊นŒ?๋ผ๊ณ  ๊ณ ์‹ฌํ•˜๊ฒŒ ํ•œ ํ•œ ๋‹ฌ... ์—…๋ฌด๋Š” ๊ทธ๋ ‡๋‹ค์น˜๊ณ  ๊ฐœ์ธ๊ณต๋ถ€๋ฅผ ์ง„์งœ ํ•œ ๊ฐœ๋„ ๋ชป ํ–ˆ๊ธฐ ๋•Œ๋ฌธ...ใ…Ž.... ๐Ÿ’ป Work ์• ์ž์ผ๋ฐฉ๋ฒ•๋ก ์„ ๋”ฐ๋ผ์„œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ํ•˜๋Š”๋ฐ, ์ตœ๊ทผ์— PO๊ฐ€ ์ƒˆ๋กœ ๋“ค์–ด์˜ค๋ฉด์„œ ๊ธฐ์กด์˜ ์นธ๋ฐ˜ ํ˜•์‹์—์„œ '์Šคํฌ๋Ÿผ๋ฐ˜' ๋ผ๋Š” ํ˜•์‹์„ ์ทจํ•ด์„œ ์—…๋ฌด๋ฅผ ์ง„ํ–‰ ์ค‘์— ์žˆ๋‹ค. ์ปค๋‹ค๋ž€ ์—…๋ฌด ๋ฐฉ๋ฒ•๋ก ์ด ์ค‘์ ์ ์ธ ๊ฒƒ์ด์ง€ ๊ทธ๊ฒƒ์„ ์ง„ํ–‰ํ•˜๋Š” ๋ฐฉ์‹์— ์žˆ์–ด์„œ '์นธ๋ฐ˜' '์Šคํฌ๋Ÿผ๋ฐ˜'์ด ์ค‘์š”ํ•œ๊ฐ€์— ๋Œ€ํ•ด์„œ๋Š” ๊ทธ๋‹ค์ง€ ์‹ ๊ฒฝ์„ ์“ฐ์ง€ ์•Š์•˜์—ˆ๋Š”๋ฐ ์–ด์ฉŒ๋ฉด ์ค‘์š”ํ• ์ง€๋„. ๊ฐœ๋ฐœํŒ€์ด ์•„๋‹Œ ํŒ€๋“ค๊ณผ ํ•จ๊ป˜ ์“ฐ๋‹ค ๋ณด๋‹ˆ '๋ฐฐํฌ'์˜ ์‹œ๊ธฐ๋ผ๋˜๊ฐ€, 'QA' ์™„๋ฃŒ์˜ ์‹œ์ ์€ ๋ฌด์—‡์ด๋ฉฐ 'QA'๋Š” ๋ฌด์—‡์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ํ•˜๋Š” ๊ฒƒ์ธ๊ฐ€๋ถ€ํ„ฐ ๊ณ„์† ์˜ˆ๋ฏผํ•œ ๊ฒŒ ๋Œ€์‘ํ•  ์ˆ˜๋ฐ–์— ์—†๋Š” ์ผ๋“ค์ด ์ƒ๊ฒจ๋‚ฌ๋‹ค. ๊ธฐ๋ถ„์ด ํƒœ๋„๊ฐ€ ๋˜์ง€ ์•Š๊ฒŒ ํ•˜์ž ๊ธฐํš์—๋„ ..
์ง€๋‚œ ๋ฒˆ์— ๋งˆ์ฃผํ–ˆ๋˜ Nextjs ๋ผ์šฐํŒ… ๋ฌธ์ œ๋Š” ์ด์ œ ํ•ด๊ฒฐ ๋œ ๋“ฏ ํ–ˆ๋‹ค. ๊ด€๋ จ ์—๋Ÿฌ ํฌ์ŠคํŒ… ๋ณด๋Ÿฌ๊ฐ€๊ธฐ (๐Ÿ‘‰๐Ÿป https://mindevlog.tistory.com/191) ๋˜ ๋‹ค๋ฅธ ๋ผ์šฐํŒ… ๋ฌธ์ œ๊ฐ€ ๋ฐœ๊ฒฌ๋˜์—ˆ๋‹ค. ์ •์  ๋ผ์šฐํŒ…์€ cloudFront๋กœ ํ•ด๊ฒฐ์„ ๋ดค๋Š”๋ฐ, ์ด๋ฒˆ์—” ๋™์  ๋ผ์šฐํŒ…์ด ๋ฌธ์ œ์˜€๋‹ค!๐Ÿ˜” ์–ด๋– ํ•œ ๊ฒŒ์‹œํŒ์˜ ๊ฒŒ์‹œ๋ฌผ ์ƒ์„ธ๋กœ ๋“ค์–ด๊ฐˆ ๋•Œ , `/file/[id]` ์ด๋Ÿฐ์‹์œผ๋กœ ๋™์ ๋ผ์šฐํŒ…(dynamic routing) ์ฒ˜๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ƒˆ๋กœ๊ณ ์นจ(refresh)๋ฅผ ํ•˜๋ฉด, ํ•ด๋‹น ์ƒ์„ธ ํŽ˜์ด์ง€์— ์ถœ๋ ฅ๋˜์–ด์žˆ๋˜ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋“ค์ด ์‚ฌ๋ผ์ง€๊ณ , ์‹ฌ์ง€์–ด html ์—ญ์‹œ ์ถœ๋ ฅ ๋ชปํ•˜๊ณ  ๊ธฐ๋ณธํŽ˜์ด์ง€๋กœ ๋ณด๋‚ด๋ฒ„๋ฆฌ๋Š” ๊ฒƒ ์•„๋‹Œ๊ฐ€... ๋ฐฉ๋ฒ•์„ ์ฐพ์•„์„œ AWS cloudfront ํ•จ์ˆ˜๋ฅผ ๋‹ค์‹œ ์ž‘์„ฑ๋„ ํ•ด๋ณด๊ณ , lambda๋ฅผ ์จ์•ผํ•œ๋‹ค - next..
์ด๋ฏธ์ง€๋ฅผ ๋‹ค๋ฃจ๋Š” ์ž‘์—…์„ ์ง„ํ–‰ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ๊ธฐ์กด์— ํ•ด์˜ค๋˜ ๊ฒƒ๊ณผ ๋‹ฌ๋ฆฌ ์ด๋ฒˆ์—๋Š” ์—ฌ๋Ÿฌ ์ด๋ฏธ์ง€๋ฅผ ๋ฐฐ์—ด ํ˜•ํƒœ๋กœ ๋ณด๋‚ด์„œ url๋ฅผ ๋ฐ›์•„์™€์„œ ๋‹ค์‹œ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์™€ ํ•จ๊ป˜ create ํ˜น์€ update๋ฅผ ํ•ด์ค˜์•ผํ–ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ, ๋งŒ์•ฝ์— ๊ธฐ์กด์— url์ด ์žˆ๋Š” ์ƒํƒœ๋ฉด pass๋ฅผ ํ•˜๊ณ  ์ƒˆ๋กœ ๋„ฃ์€ ์ด๋ฏธ์ง€๋งŒ url์„ ๋‹ค์‹œ ๋ฐ›์•„์™€์„œ update๋ฅผ ํ•ด์ค˜์•ผํ•˜๋Š” ๊ฒƒ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋‹ค. api๋ฅผ ํ˜ธ์ถœํ•˜๊ธฐ ์ „์— console.log๋กœ body๋ฅผ ์ฐ์œผ๋ฉด ๋ถ„๋ช…ํžˆ ์—…๋ฐ์ดํŠธ ๋œ ์ด๋ฏธ์ง€ url์ด ์ฐํžˆ๋Š”๋ฐ, ๋ง‰์ƒ api๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด payload์— ์—…๋ฐ์ดํŠธ๋œ ๊ฐ’์ด ์•ˆ ์ฐํžˆ๋Š” ๊ฒƒ์ด๋‹ค!!!!!!!! ๋ฐ˜๋‚˜์ ˆ์„ ๋ถ™์žก๊ณ  ๋Š˜์–ด์ ธ์žˆ๋Š”๋ฐ ๋ฏธ์น ์ง€๊ฒฝ... async - await๋ฅผ ์จ์„œ ๋น„๋™๊ธฐ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์คฌ๋Š”๋ฐ ๋ญ๊ฐ€ ๋ถˆ๋งŒ์ด๋‹ˆ?! ๋ญ๊ฐ€ ์ž˜ ๋ชป ๋œ๊ฑด๋ฐ?! .... ๋ฌธ์ œ..
๐Ÿ“ What I Learned ์ •์‹ ์—†์ด ํ˜๋Ÿฌ๊ฐ„ ๊ฒƒ ๊ฐ™์€ 8์›”. ๊ฐœ์ธ์ ์ธ ๊ณต๋ถ€๋ณด๋‹ค๋Š” ์—…๋ฌด, ํŒ€ ํ”Œ๋ ˆ์ด์— ๋งŽ์ด ์น˜์ค‘ํ•œ ํ•œ ํ•œ ๋‹ฌ์ด์—ˆ๋‹ค. ๐Ÿ’ป Work ๐Ÿ›ก๏ธ ์ฐฝ๊ณผ ๋ฐฉํŒจ์˜ ์‹ธ์›€(?!) ์ƒˆ๋กœ์šด ์ œํ’ˆ ๊ฐœ๋ฐœ์— ๋“ค์–ด๊ฐ€๊ฒŒ ๋˜๋ฉด์„œ ๊ฑฐ๋“ญ๋˜๋Š” ํšŒ์˜. ๊ธฐํš ํšŒ์˜์— ๋”ฐ๋ฅธ ๊ฐœ๋ฐœํŒ€๊ณผ์˜ ๋ฏธํŒ…๋“ค์ด ์ด์–ด์กŒ๋‹ค. ๋งˆ์น˜ ์ด๊ฒƒ์€ ์ฐฝ๊ณผ ๋ฐฉํŒจ์˜ ์‹ธ์›€. ์‹ธ์›€์ด๋ผ๊ณ  ํ‘œํ˜„ํ•˜๊ธฐ๋Š” ํž˜๋“ค์ง€๋งŒ ๊ณผ์žฅํ•ด ๋ณด์ž๋ฉด ๊ทธ๋ ‡๋‹ค๋Š” ๊ฒƒ. ์š”๊ตฌ์‚ฌํ•ญ๋“ค์ด ์ฆ๋น„ํ•˜๊ณ , ํ”„๋ŸฐํŠธ์—”๋“œ์™€ ๋ฐฑ์—”๋“œ๊ฐ€ ๊ฐ€๋งŒํžˆ ๋“ฃ๊ณ  ์žˆ๋Š”๋ฐ... ์™œ ์ด๋ ‡๊ฒŒ '๋น„ํšจ์œจ์ '์ธ ๊ฒƒ๋“ค์ด ๋ˆˆ์— ์™์™ ๋“ค์–ด์˜ค๋Š” ๊ฑด๊ฐ€. ๋ฌผ๋ก  ๋น„ํšจ์œจ์ ์ธ๊ฒŒ ํ‹€๋ฆฌ๋‹ค๊ณ ๋Š” ์ƒ๊ฐํ•˜์ง€ ์•Š๋Š”๋‹ค. ๊ทธ๋“ค์€ '๋น„์ฆˆ๋‹ˆ์Šค'์ ์ธ ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜๋ฉฐ ๊ธฐํšํ–ˆ๊ณ , ๋‹ค๋งŒ ๊ทธ ๋ฐฉ์‹๋“ค์„ ์กฐ๊ธˆ ๋” ํšจ์œจ์ ์ด๊ฒŒ ๋ฐ”๊ฟ” ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์€๋ฐ ์™œ ์ด๋ ‡๊ฒŒ?๋ผ๋Š” ์ƒ๊ฐ์ด ๋“ค๊ฒŒ ํ•  ๋ฟ. ๋ณดํ†ต์€ ํ”„๋ก ํŠธ..
dart๋ผ๋Š” ์–ธ์–ด์™€ ํ†ต์—ญ์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ณ€์ˆ˜, ๋ฉ”์†Œ๋“œ ๋“ฑ์ด ํ•„์š”ํ•˜๋‹ค method๋Š” ๋ฏน์„œ๊ธฐ์™€ ๊ฐ™์€ ๊ธฐ๋Šฅ์„ ํ•˜๋Š”๋ฐ, ์–ด๋–ค ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค. ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์–‘ํ•œ ์•„์ดํ…œ์„ ๋ณด๊ด€ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณ€์ˆ˜์˜ ํฌ๊ธฐ๋„ ํƒ€์ž…์— ๋งž๊ฒŒ ์„ ์–ธ๋˜์–ด์•ผํ•œ๋‹ค. string, boolen ๊ณผ ๊ฐ™์ด ๋ง์ด๋‹ค. ์˜ˆ๋ฅผ ๋“ค์ž๋ฉด String์ด๋ผ๊ณ  ํƒ€์ž…์„ ์ •ํ•˜๊ณ  ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด์ฃผ๋ฉด ์ปดํ“จํ„ฐ๊ฐ€ ๊ทธ์— ๋งž๋Š” ๊ณต๊ฐ„์„ ์ค€๋น„ํ•˜๊ณ  ๋งŒ๋“ค์–ด์ค€๋‹ค. ์ด์ œ๋Š” ํด๋ž˜์Šค๋‹ค ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์ธํ˜•์ด ์žˆ๋‹ค๊ณ  ํ•˜๋ฉด, ๊ทธ ์ธํ˜•์„ ์ด๋ฃจ๊ธฐ ์œ„ํ•ด์„œ ๋‹ค์–‘ํ•œ ๋ถ€๋ถ„์ด ์กด์žฌํ•œ๋‹ค. ํŒ”, ๋จธ๋ฆฌ , ๋ชธํ†ต๊ณผ ๊ฐ™์ด ๋ง์ด๋‹ค. ์ €๋ ‡๊ฒŒ ๋ถ€๋ถ„์ ์œผ๋กœ ํŒŒํŠธ๋ณ„๋กœ ๋‚˜๋ˆˆ ๋ถ€๋ถ„์„ ํด๋ž˜์Šค๋ผ๊ณ  ์ดํ•ดํ•˜๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™๋‹ค. ํฌ๊ณ  ๋ณต์žกํ•œ ๊ฒƒ์„ ๋งŒ๋“ค๋•Œ ๋‚˜๋ˆ ์„œ ๋งŒ๋“ค์–ด ์กฐ๋ฆฝ! ๊ฐ์ฒด(object) ๋Š” ๋ˆˆ์— ์‹ค์ฒด๊ฐ€ ๋ณด์ด๋“ ..
๋ฌธ์ œ) Given an array of asynchronous functions functions, return a new promise promise. Each function in the array accepts no arguments and returns a promise. promise resolves: When all the promises returned from functions were resolved successfully. The resolved value of promise should be an array of all the resolved values of promises in the same order as they were in the functions. promise reje..