You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
Node Package
[NODE] ๐ Sharp ๋ชจ๋ ์ฌ์ฉ๋ฒ - ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง / ์ํฐ๋งํฌ ๋ฃ๊ธฐ
Sharp ๋ชจ๋ ๋ ธ๋ ์ง์์๋ ๋ง์ ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ํจํค์ง๋ค์ด ์์์ง๋ง, ๋๊น์ง ์ด์๋จ์ ๋ชจ๋์ด shap ์ด๋ค. ์ด๋ฏธ์ง ๋ฆฌ์ฌ์ด์ง ๋์ ์์ฒด๊ฐ cpu์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ก์๋จน๋ ์ฃผ๋ฒ์ด๋ผ, ๊ฐ๋ out of memory๋ก node๊ฐ ์ฃฝ๋ ๊ฒฝ์ฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ด๋ค. ๊ทธ๋ฐ ๊ด์ ์์ sharp ๋ชจ๋์ ๋ฆฌ์ฌ์ด์ง ์๋๋ ๋น ๋ฅด๋ฉฐ ๋ฉ๋ชจ๋ฆฌ๋ ๋ค๋ฅธ ๋์ข ๋ชจ๋ ๋๋น ๋ง์ด ์ก์ ๋จน์ง ์๋๋ค. Sharp ์ฌ์ฉ๋ฒ ์๋ ๊ณต์ ๋ฌธ์ ํํ์ด์ง์ ๋ค์ด๊ฐ๋ณด๋ฉด ์ต์ ์ ๋ํด ์์ฃผ ์ ์ ๋ฆฌ๋์ด์๋ค. sharp - High performance Node.js image processing sharp.pixelplumbing.com > npm install sharp sharp ๋ชจ๋ ์ค์น์ ์ฃผ์์ฌํญ โ ๏ธ sharp๋ OS์ ๋ฐ์ด๋๋ฆฌ๋ฅผ ์ด์ฉํ๊ธฐ ๋๋ฌธ์ ์๋์ฐ,..
[NODE] ๐ NVM ๋ชจ๋ ์ฌ์ฉ๋ฒ - ๋ ธ๋ ๋ฒ์ ์ค์์นญ
NVM (Node.js Version Manager) ๋ชจ๋ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ฐ๋ผ Node.js์ ๋ฒ์ ์ ๋ณ๊ฒฝํด์ผ ํ๋ ์ํฉ์ด ํ ๋ฒ์ฏค์ ๊ผญ ์จ๋ค. ํ์ ์ ํ ๋, ๋๋ ๋ค์ํ ํ๋ก์ ํธ๋ฅผ ๋์์ ์งํํด์ผ ํ ๋ ๋ค์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ / ํ๋ ์์ํฌ / ๊ฐ๋ฐํด์ ๋ฒ์ ํธํ ๋ฌธ์ ๋ฅผ ๊ฒช๊ธฐ ๋๋ฌธ์ด๋ค. ์ด๋ฐ ํ๊ฒฝ์์ ๊ทธ๋๋ง๋ค Node.js๋ฅผ ์ฌ์ค์น ๋ฐ ์ญ์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก๋ ํ๊ณ๊ฐ ์๊ณ ๋ถํธํ ๋ฟ๋๋ฌ ์ก์๋จน๋ ์๊ฐ๋ ์๊น๋ค. ์ด๋ฐ ์ํฉ์์ Node.js ๋ฒ์ ์ ์ํฉ์ ๋ฐ๋ผ ๋ณ๊ฒฝํด ๊ฐ๋ฉด์ ์ฌ์ฉํ๊ฒ๋ ๋์์ฃผ๋ ๊ฒ์ด NVM์ด๋ค. NVM ์ Node Version Manager๋ก์จ Node.js์ ๋๊ตฌ์ด๋ฉฐ, ์ํฉ์ ๋ฐ๋ผ ๋ฒ์ ์ ๋ณ๊ฒฝํด ๊ฐ๋ฉด์ ์ฌ์ฉํ๋ ๊ฒ์ ๋งํ๋ค. ์ผ๋ฐ ์ํํธ์จ์ด ์ค์นํ๋ฏ์ด exe ํ์ผ์ ๋ฐ์ ์ผ์ผํ ํด๋ฆญํ์ฌ ์ ๋ฐ์ดํธ ..
[NODE] ๐ Color-Hash ๋ชจ๋ - ๋๋ค ์์์ฝ๋
Color-Hash ๋ชจ๋ ๊ตฌํํ๋๋ฐ ์์ด ๋๋ค ์ซ์๊ฐ ํ์ํ๋ฏ์ด, ๋ง์ผ ๋๋ค ์๊น(color)๊ฐ ํ์ํ๋ค๋ฉด ์ด ๋ชจ๋์ ์ฐ๋ฉด ๋๋ค. Color-Hash ๋ชจ๋ ์ฌ์ฉ๋ฒ color-hash Generate color based on the given string (using HSL color space and SHA256).. Latest version: 2.0.1, last published: a year ago. Start using color-hash in your project by running `npm i color-hash`. There are 91 other projects in the npm registry using col www.npmjs.com > npm install color-hash ..
[NODE] ๐ Winston ๋ชจ๋ ์ฌ์ฉ๋ฒ - ์๋ฒ ๋ก๊ทธ ๊ด๋ฆฌ
Winston ๋ชจ๋ ์ด๋ค ์๋ฒ๋ ์ง ์ค์ ๋ก ์๋น์ค๋ฅผ ์ด์ํ๋ ค๋ฉด ๋ก๊ทธ๋ฅผ ๊ผผ๊ผผํ ๋จ๊ธฐ๋ ๊ฒ์ ํ์์ด๋ค. Log๋ ์๋ฌ๋ฅผ ํ์ ํ ์ ์๋ ์ด์ ์ด๊ธฐ ๋๋ฌธ์ ์๋ฒ๋ฅผ ์ด์ํ๋ค๊ณ ํ๋ฉด ๋ก๊ทธ ์์คํ ์ ๊ตฌ์ถํด์ ์์คํ ์ ์ด์ํด์ผ ํ๋ค. ์๋ฅผ๋ค์ด ์ด๋ค ์ฌ๋์ด, ์ด๋ค ์ด๋ฒคํธ, ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋์ง, ์ด๋ค ๋์์ ํ๋ค๊ฐ, ์ด๋ค ํธ๋์ญ์ ์ ๋๋ฆฌ๋ค๊ฐ, ์ด๋ค ์๋ฌ๊ฐ ๋ฌ๋์ง ์ด๋ฅผ ์ ๋ฐ ๊ด๋ฆฌํ ์ ์๋ค. Node.js์์๋ log๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋ ๋ชจ๋์ธ winston.js๊ฐ ์๋ค. ์์คํค(winston.js)๋ ์ค์ ์๋ฒ๋ฅผ ์ด์ํ ๋ console.log ์ console.error ๋ฅผ ๋์ฒดํ๊ธฐ ์ํ ๋ชจ๋์ด๋ค. console.log ์ console.error ๋ ๊ฐ๋ฐ ์ค์๋ ํธ๋ฆฌํ๊ฒ ์ฝ์ ๋ก๊ทธ๋ก ์๋ฒ์ ์ํฉ์ ..
[NODE] ๐ PM2 ๋ชจ๋ ์ฌ์ฉ๋ฒ - ํด๋ฌ์คํฐ / ๋ฌด์ค๋จ ์๋น์ค
Node.js ์ฑ๊ธ ์ค๋ ๋ Node.js๋ Chrome์ V8 ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ผ๋ก ๋น๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐํ์(runtime)์ผ๋ก โEvent Drivenโ, โNon-Blocking I/Oโ ๋ชจ๋ธ์ ์ฌ์ฉํด ๊ฐ๋ณ๊ณ ์ฑ๋ฅ์ด ๋ฐ์ด๋ ๋์ ํ๊ฐ๋ฅผ ๋ฐ๊ณ ์๋ค. Node.js๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋(thread)๋ก ๋์๊ฐ๋ค. Node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ๋จ์ผ CPU ์ฝ์ด์์ ์คํ๋๊ธฐ ๋๋ฌธ์ CPU์ ๋ฉํฐ์ฝ์ด ์์คํ ์ ์ฌ์ฉํ ์ ์๋ค. ๊ทธ๋์ ๋ง์ฝ ์๋ฒ์ ์ฌ์์ด 8์ฝ์ด์ด๋ฉฐ 16์ฐ๋ ๋๋ฉด, ํ๋ก๊ทธ๋จ์ ๋๋ฆฌ๋๋ฐ ์ต๋ 16๊ฐ ์ฝ์ด๋ฅผ ์ฌ์ฉ ํ ์ ์์ง๋ง, ๋ ธ๋๋ ์ฑ๊ธ ์ค๋ ๋ ์ด๊ธฐ ๋๋ฌธ์ ๋ชจ๋ ์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ๋ชปํด ์ต๋ ์ฑ๋ฅ์ ๋ด์ง ๋ชปํ๋, ์ฆ ์์์ ์ ๋๋ก ํ์ฉํ์ง ๋ชปํ๋ค. ๊ทธ๋์ Node.js๋ ์ด๋ฐ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์..
[NODE] ๐ cross-env ๋ชจ๋ ์ฌ์ฉ๋ฒ
๋ ธ๋ env ํ๊ฒฝ๋ณ์ ์ค์ ๋ณดํต ๋ ธ๋ ์๋น์ค๋ฅผ ๊ฐ๋ฐ(development)ํ๊ณ ๋ฐฐํฌ(production)ํ ๋ env ๊ฐ์ ์ด์ฉํด์ ๊ตฌ์ฑํ๋ค. ์๋ฅผ๋ค์ด ๋ฐฐํฌ ๋ชจ๋ ์ผ ๋์๋ ํ์ผ ์บ์ฑ, ์๋ฌ ๋ฉ์ธ์ง ๊ฐ์ถ๊ธฐ ๋ฑ ๋ฐฐํฌ์ ์ ํฉํ ํ๊ฒฝ ์ค์ ์ ํ๊ณ , ๊ฐ๋ฐ ๋ชจ๋ ์ผ ๋์๋ ํ์ผ ์บ์ฑ ๋ฐฉ์ง, ๋๋ฒ๊ทธ๋ฅผ ์ํ ์์ธํ ์๋ฌ ๋ฉ์ธ์ง ๋ณด์ด๊ธฐ ๋ฑ ๊ฐ๋ฐ์ ํ์ํ ํ๊ฒฝ ์ค์ ์ ํ๋ค. ์ค๋ฌด ์ฝ๋๋ฅผ ๋ค์๋ฉด ๋ํ์ ์ผ๋ก ๋ ธ๋ ์๋ฒ์ ๋ก๊ทธ๋ฅผ ์ฐ์ด์ฃผ๋ morgan ๋ฏธ๋ค์จ์ด์ผ ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ๋ก๊ทธ ๋ ๋ฒจ์ ๊ฐ๋ฐ์ผ๋๋ 'dev', ๋ฐฐํฌ์ผ๋๋ 'combined' ๋ก ์ค์ ํ์ฌ ์ ์ฉ์ํจ๋ค. // ๋ ธ๋ ํ๊ฒฝ ๋ณ์ ์ค์ ์ ๋ฐ๋ผ morgan ์ค์ ์ ๋ฌ๋ฆฌํจ if (process.env.NODE_ENV === 'production') { app.use(mo..
[NODE] ๐ Chalk ๋ชจ๋ - ๋ ธ๋ ์ฝ์ ๋ก๊ทธ๋ฅผ ์ปฌ๋ฌํํ๊ฒ โจ
๋ธ๋ผ์ฐ์ console.log ๊พธ๋ฏธ๊ธฐ ๋ธ๋ผ์ฐ์ ์ฝ์์ CSS ์คํ์ผ์ํธ๋ฅผ ์ง์ํ๊ธฐ ๋๋ฌธ์ ์กฐ๊ธ ๋ฒ๊ฑฐ๋กญ๊ธด ํ์ง๋ง ๋ง๋ค๊ธฐ ์ด๋ ต์ง๋ ์๋ค. console.log('%cHello, world!', 'color: #a4f644; background-color: red;'); %c ์ดํ์ ๊ธ์์๋ ๋ชจ๋ ๊ฐ์ ์คํ์ผ์ด ์ ํ์ง๊ฒ ๋๋ค. ์๋ก์ด ์คํ์ผ์ ์์ฐ๊ณ ์ถ์ผ๋ฉด %c๋ฅผ ๋ ์ฐ๋ฉด ๋๋ค. ํ๋ก ํธ์ค๋์์๋ ์ ํ ์ด๋ ค์ด ์์ ์ด ์๋๊ธฐ ๋๋ฌธ์, ๋น์ฐํ ๋ฐฑ์ค๋์์๋ ๋๋ ๊ฒ์ผ๋ก ์๊ฐํ๋ ๋ถ๋ค์ด ๋ง์๋ฐ ์๋๋ค. ์ ์ฝ๋์ฒ๋ผ css๊ฐ์ ์ฃผ์ด๋ ์ฌ์ ํ ๋ฐ๋ฅ๋งน๋ฅํ ํ์๊ธ์จ๋ง ๋์ฌ ๊ฒ์ด๋ค. ๋ฐ๋ผ์, ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก ์ ์ฉ์ ํด์ผ ํ๋ค. ๋ ธ๋ console.log ๊พธ๋ฏธ๊ธฐ ํฐ๋ฏธ๋์์๋ ์๊น์ ๋ณ๊ฒฝํ๊ธฐ ์ํด์ ANSI escape code๋ฅผ ..
[NODE] ๐ cors ๋ชจ๋ - CORS ๊ฐํธ ์ค์ ํ๊ธฐ
CORS ํ์ฉ ์ค์ ํ๋ ๋ฐฉ๋ฒ Node.js ์๋ฒ ํ๋ก์ ํธ์์ cors(cross origin resource sharing) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ํฌ๊ฒ 2๊ฐ์ง๊ฐ ์๋ค. ํ๋๋ ์ง์ ํค๋๋ฅผ ๋ช ์ํด์ ์ถ์ฒ(origin)์ ํํฐ๋งํ๋ ๊ฒ์ด๊ณ , ๋ค๋ฅธ ํ๋๋ cors ๋ ธ๋ ํจํค์ง๋ฅผ ์ฌ์ฉํด ์ข๋ ๊ฐํธํ๋ฉด์ ์ ๊ธฐ์ ์ผ๋ก ์ถ์ฒ๋ฅผ ํํฐ๋ง ํ ์ ์๋ค. 1. ์ง์ ํค๋์ ๋ช ์ CORS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด์๋ ์๋ต ํค๋์ Access-Control-Allow-Origin ํค๋๋ฅผ ๋ฃ์ด์ผ ํ๋ค. ์ด ํค๋๋ ํด๋ผ์ด์ธํธ ๋๋ฉ์ธ์ ์์ฒญ์ ํ๋ฝํ๊ฒ ๋ค๋ ๋ป์ ๊ฐ์ง๊ณ ์๋ค. //^ CORS ํ์ฉ res.setHeader('Access-Control-Allow-origin', '*'); res.setHeader('Access-Contro..
[NODE] ๐ UUID ๋ชจ๋ ์ฌ์ฉ๋ฒ
UUID ๋? UUID๋ Universally Unique IDentifier์ ์ฝ์๋ก, ์ ์ธ๊ณ์ ํ๋๋ฐ์ ์๋ ID๋ผ๋ ๋ป์ด๋ค. ์ด๋ฐ ID๋ ๊ณ ์ ํ๊ธฐ ๋๋ฌธ์ ์๋ฒ์์ ์ฌ์ฉ์๋ค์ UUID๋ฅผ ๋ถ์ฌ์ ๊ตฌ๋ถํ๋ ๋ฑ ์ฌ๋ฌ ๋ฐฉ๋ฉด์์ ์ ์ฉํ๊ฒ ์ฐ์ผ ์ ์๋ค. ์๋ฅผ๋ค์ด, DB๋ฅผ ๋ค๋ฃฐ ๋ PK๋ฅผ ์ฃผ๋ก auto increment ๊ฐ์ผ๋ก ์ฌ์ฉํ์ง๋ง, URL์ด๋ ํ๋ฉด์์ ๋ ธ์ถ ์ํค๋ฉด ํฌ๋กค๋ง์ด๋ ์ธ์ ์ ๊ณต๊ฒฉ์ ์ทจ์ฝํ๋ค๋ ๋จ์ ์ด ์๋ค. ๋๋ฌธ์ publicํ ํ๋ฉด๋จ์์๋ ramdom ํ UUID๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ์ฅํ๋ ํธ์ด๋ค. UUID๋ 16์ง์ 8์๋ฆฌ-4์๋ฆฌ-4์๋ฆฌ-4์๋ฆฌ-12์๋ฆฌ ํจํด์ผ๋ก ํํ๋๋ค. // UUID ํจํด ์์ 1604b772-adc0-4212-8a90-81186c57f598 UUID๋ก ํํํ ์ ์๋ ๊ฐ์ฒด์ ..
[NODE] ๐ bcrypt ๋ชจ๋ ์ํธํ ์๋ฆฌ & ์ฌ์ฉ๋ฒ
์ํธํ ๋ชจ๋ ์ํธํ ์ข ๋ฅ SHA-2(Secure Hash Algorithm 2) ๋ฏธ๊ตญ NSA์์ ์ค๊ณํ ์ํธํ ํด์ ํจ์. digest size๋ 224, 256, 512 bit๋ก ํด์ํจ์๋ก ๊ตฌ์ฑ๋์ด์ก์. GPU๋ฅผ ์ด์ฉํ ์ฐ์ฐ์๋๊ฐ ๋งค์ฐ ๋น ๋ฅด๊ธฐ ๋๋ฌธ์ password ์ํธํ์ ๊ถ์ฅ๋์ง ์์ GPU ์ฐ์ฐ์๋๊ฐ ๋น ๋ฅผ์๋ก ๊ณต๊ฒฉ์์ ํ๋์จ์ด๋ฅผ ํตํ ์คํ๋ผ์ธ brute force์ ๋ ์ทจ์ฝํ๋ค. ๋น ๋ฅธ ํด์๋ฅผ ์ฌ์ฉํ์ฌ ์ํธํ๋ฅผ ์งํ์ ๊ณต๊ฒฉ์๋ ์คํ๋ผ์ธ ๊ณต๊ฒฉ์ผ๋ก ์ด๋น ์์ญ์ต๊ฐ์ ํด์๋ฅผ ๊ณ์ฐํ ์ ์๋ค. PBKDF2 pbkdf2_hmac(ํด์ํจ์(sha256..), password, salt, iteration, DLen) ํด์ํจ์์ ์ปจํ ์ด๋ ์ญํ ์ ํ๋ค. ๊ฒ์ฆ๋ ํด์ํจ์๋ง์ ์ฌ์ฉํ๋ค. ํด์ํจ์์ salt๋ฅผ ์ ์ฉ ํ ..
[NODE] ๐ ๏ธ ๋ฐ๋ฒจ(Babel) ์ค์น & ์ฌ์ฉ๋ฒ
๋ฐ๋ฒจ(Babel) ์น ์ฝ๋ฉ์ ํ ๋ ๊ฐ์ฅ ๊น๋ค๋ก์ด ๊ฒ ์ค ํ๋๊ฐ ์น ํ์ค์ ํ์ํธํ์ฑ์ ๋ง์ถ๋ ๊ฒ์ด๋ค. โhtml์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ฝ๋์ ์ต์ ๊ธฐ์ ๋ค๋ง ์ฐ๋ฉด ๊ตฌ์ ๋ธ๋ผ์ฐ์ ์์ ์๋ํ์ง ์์ ํ๋ฅ ์ด ํฌ๊ณ , ๊ทธ๋ ๋ค๊ณ ์ฃ๋ค ๊ตฌ๋ฅ๋ค๋ฆฌ ์ฝ๋๋ฅผ ์ฐ์ ํ๋ฉด ๋ ๋ถํธํ๊ณ ์ฐ์ฐํด์ง๋ค. โ ์ด๊ฒ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋์จ ๊ฒ์ด ๋ฐ๋ก ๋ฐ๋ฒจ์ด๋ผ๋ ํด์ด๋ค. ์ด ํด์ ์๋ฐ์คํฌ๋ฆฝํธ์ ์ฝ๋๋ฅผ ๊ตฌ๋ฒ์ ์ ๋ง๊ฒ๋ ๋ณํ์์ผ์ฃผ๋ ์ญํ ์ ํ๋ค. ์ด๋ฌํ ํ๋์ ํธ๋์คํ์ผ๋ง ์ด๋ผ๊ณ ๋ถ๋ฆฌ์ด๋ค. BABEL PACKAGE ์ค์น ํ๋ก์ ํธ์ ๋ฐ๋ผ ์ค์ ์ด ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ์ ์ญ์ผ๋ก ์ค์นํ์ง ๋ง๊ณ ๋ก์ปฌ๋ก ์ค์นํ๋๋ก ํ์. npm install --save-dev @babel/core @babel/cli @babel/node @babel/preset-env @bab..
[NODE] ๐ ๏ธ nodemon ์ค์น & ์ฌ์ฉ ๋ฐฉ๋ฒ ์ ๋ฆฌ
nodemon ๋ชจ๋ Node.js ๊ฐ๋ฐ ์ ์๋ฐ ์คํฌ๋ฆฝํธ ํ์ผ๋ค์ ์์ ํ ๋๋ง๋ค ๋งค๋ฒ ctrl+c๋ฅผ ํตํด node๋ฅผ ์ข ๋ฃ ํ ๋ค์ ์คํํด์ค์ผ ํ๋ ๋ฒ๊ฑฐ๋ก์ ์ด ์์์ต๋๋ค. ํ์ง๋ง ํ์ผ๋ค์ ๋ชจ๋ํฐ๋งํ๊ณ ์๋ค๊ฐ ์์ ๋ ๊ฒฝ์ฐ ์๋์ผ๋ก ์๋ฒ๋ฅผ ์ฌ์คํ์์ผ์ฃผ๋ ์คํฌ๋ฆฝํธ ๋ชจ๋ํฐ๋ง ์ ํธ๋ฆฌํฐ nodemon๋ฅผ ์ด์ฉํ๋ฉด ๋ฒ๊ฑฐ๋ก์์ด ์๋นํ ์ค์ด๋ญ๋๋ค. nodemon ์ค์น npm 1.0์ด์์ ์ฌ์ฉํ ๊ฒฝ์ฐ nodemon์ ์ปค๋งจ๋๋ผ์ธ์์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ -g ์ต์ ์ ๋ถํ์ ๊ธ๋ก๋ฒ๋ก ์ค์น๋ฅผ ํฉ๋๋ค. $ npm install nodemon -g nodemon ์ฌ์ฉ๋ฒ ๊ธฐ์กด์ node.js ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํํ ๋ node app.js์ ๊ฐ์ด ์คํํด ์ฃผ์๋ค๋ฉด nodemon ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด์ ๋ค์๊ณผ ๊ฐ์ด ์คํํด ์ฃผ๋ฉด ๋ฉ๋๋ค...