You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
Node
๐ require vs import ๋ฌธ๋ฒ ๋น๊ต (CommonJS vs ES6)
require vs import ๋ฌธ๋ฒ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐ์ ํ๋ค๋ณด๋ฉด ๋ชจ๋์ ๋ถ๋ฌ์ค๋ ๋ฌธ๋ฒ ๋๊ฐ์ง ( require / exports ) ์ ( import / export ) ํค์๋๋ฅผ ์ ํ๊ฒ ๋๋๋ฐ, ์ด ๋์ ๋น์ทํ๋ฉด์๋ ๋ฌ๋ผ ๊ฐ๋ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ๋ฐํ๋๋ฐ ์์ด ํผ๋์ ์ค๋ค. ๋๋ค ์ธ๋ถ์ ํ์ผ์ด๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ ์ฝ๋๋ฅผ ๋ถ๋ฌ์จ๋ค๋ ๊ฐ์ ๋ชฉ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง, ์ ํ ๋ค๋ฅธ ๋ฌธ๋ฒ ๊ตฌ์กฐ๋ฅผ ์ง๋๊ณ ์๋ค. ( require / exports ) ๋ NodeJS์์ ์ฌ์ฉ๋๊ณ ์๋ CommonJS ํค์๋์ด๊ณ Ruby ์ธ์ด ์คํ์ผ๊ณผ ๋น์ทํ๋ค๋ผ๊ณ ๋ณผ์ ์๋ค. ( import / export ) ๋ ES6(ES2015)์์ ์๋กญ๊ฒ ๋์ ๋ ํค์๋๋ก์ Java๋ Python ์ธ์ด ๋ฐฉ์๊ณผ ๋น์ทํ๋ค. ์๋ฅผ ๋ค์ด, ์๋ 2์ค์ ์ฝ๋๋ ๊ธฐ๋ณธ..
[NODE] ๐ express-rate-limit ๋ชจ๋ - API ์ฌ์ฉ๋ ์ ํํ๊ธฐ
API ์ฌ์ฉ๋ ์ ํํ๊ธฐ ๋ง์ผ ์ธ์ฆ๋ ์ฌ์ฉ์๊ฐ ๊ณผ๋ํ API ์ฌ์ฉ์ ํ๊ฒ ๋๋ฉด API ์๋ฒ์ ๋ฌด๋ฆฌ๊ฐ ๊ฐ ์ ์๋ค. ๋ํ DOS๊ณต๊ฒฉ์๋ ๋๋นํด์ผ ๋๋๋ฐ, DOS๋ ์ง์์ ์ผ๋ก ์๋ฒ์ ์์ฒญ์ ๊ณผ๋ํ๊ฒ ํด์ ์๋ฒ๋ฅผ ๋ง๊ฐ๋จ๋ฆฌ๋ ๊ฑธ ์๋ฏธํ๋ค. ์๋ฅผ ๋ค์ด, api์์ฒญ์ ๊ณ์ ์๋ก๊ณ ์นจํด์ ๋ง๊ตฌ๋ง๊ตฌ ์์ฒญํ๊ฒ ๋๋ฉด ๊ทธ๊ฒ DOS๊ณต๊ฒฉ์ธ ์ ์ด๋ค. ์ด๋ฅผ ๊ฐ์ธ์ด ํ์ง์๊ณ ์ง๋จ์ด ๋จ์ฒด๋ก ํ๊ฒ๋๋ฉด, ํ๋ฒ ์ฏค ๋ค์ด๋ณธ ๋๋์ค ๊ณต๊ฒฉ์ด ๋ฐ๋ก ์ด๊ฑธ ์๋ฏธํ๋ค. ๋ฐ๋ผ์ ์ผ์ ๊ธฐ๊ฐ ๋ด์ API๋ฅผ ์ฌ์ฉํ ์ ์๋ ํ์๋ฅผ ์ ํํ์ฌ ์๋ฒ์ ํธ๋ํฝ์ ์ค์ด๋ ๊ฒ์ด ์ข๋ค. ๊ฑฐ๊ธฐ๋ค ์ ๋ฃ/๋ฌด๋ฃ ์๋น์ค๋ฅผ ์ด์ํ๋ค๊ณ ํ๋ฉด, ๊ณผ๊ธ ์ฒด๊ณ๋ณ๋ก ํ์์ ์ฐจ์ด๋ฅผ ๋ ์๋ ์์ ๊ฒ์ด๋ค. (๋ฌด๋ฃ ํ์์ 100๋ฒ๋ง, ์ ๋ฃ ํ์์ 1000๋ฒ ์ด์ฉ๊ฐ๋ฅํ๊ฒ ์ค์ ) ์ด๋ฌํ ๊ธฐ๋ฅ์ expre..
[NODE] ๐ API ์๋ฒ ๋ฒ์ ๊ด๋ฆฌ ํ๋ ๋ฐฉ๋ฒ
API ์๋ฒ ๋ฒ์ ผ ๊ด๋ฆฌ ๋ณดํต API ์๋ฒ ์์ค์ ๋ผ์ฐํฐ ๋ถ๋ถ์ ๋ณด๋ฉด ํ์ผ์ด V1, V2 ์ด๋ฐ์์ผ๋ก ๋์ด ์์ ๊ฒ์ด๋ค. ๋ผ์ฐํฐ์ ์ด๋ฆ์ธ v1์ ๋ฒ์ 1์ด๋ผ๋ ๋ป์ด๋ค. ๋ผ์ฐํฐ ํ์ผ ๋ง๋ค ๋ฒ์ ์ ๋ถ์ด๋ ์ด์ ๋ ํ ๋ฒ ๋ฒ์ ์ด ์ ํด์ง ์ดํ์๋ ๋ผ์ฐํฐ๋ฅผ ํจ๋ถ๋ก ์์ ํ๋ฉด ์ ๋๊ธฐ ๋๋ฌธ์ด๋ค. ์๋ํ๋ฉด ๋ค๋ฅธ ์ฌ๋์ด๋ ์๋น์ค๊ฐ ๊ธฐ์กด API๋ฅผ ์ฐ๊ณ ์์์ ํญ์ ์ผ๋์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๊ธฐ์กด์ API ์๋ฒ์ ์ฝ๋๋ฅผ ๋ฐ๊พธ๋ฉด, ์ด์ API๋ฅผ ์ฌ์ฉ ์ค์ธ ํ๋ก๊ทธ๋จ๋ค์ด ์ค์๋ํ ์ ์๊ธฐ ๋๋ฌธ์, ๊ธฐ์กด ์ฌ์ฉ์์๊ฒ ์ํฅ์ ๋ฏธ์น ์ ๋๋ก ์์ ํด์ผ ํ๋ค๋ฉด ๋ฒ์ ์ ์ฌ๋ฆฐ ๋ผ์ฐํฐ๋ฅผ ์๋ก ์ถ๊ฐํ๊ณ , ์ด์ API๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋๋ค์๊ฒ ์๋ก์ด API๊ฐ ๋์์์ ์๋ฆฌ๋ ๊ฒ์ด ์ข๋ค. ์ด๋ฅผ Deprecated ์ฒ๋ฆฌ ๋ผ๊ณ ํ๋ค. ๋ํ ์ด์ API๋ฅผ..
[NODE] ๐ API ์๋ฒ ํต์ ์ดํดํ๊ธฐ (JWT ํ ํฐ ์ ์ฒญ/๋ฐ๊ธ ์ ์ฐจ)
API(Application Programming Interface) : ๋ค๋ฅธ ์ ํ๋ฆฌ์ผ์ด์ ์์ ํ์ฌ ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์๊ฒ ํ์ฉํ๋ ์ ์ ์ด ์ฅ์์๋ NodeBird ์ฑ์ REST API ์๋ฒ๋ฅผ ๋ง๋ ๋ค. API ์๋ฒ๋ ํ๋ฐํธ์๋์ ๋ถ๋ฆฌ๋์ด ์ด์๋๋ฏ๋ก ๋ชจ๋ฐ์ผ ์๋ฒ๋ก๋ ์ฌ์ฉํ ์ ์๋ค. ํนํ JWT ํ ํฐ์ ๋ชจ๋ฐ์ผ ์ฑ๊ณผ ๋ ธ๋ ์๋ฒ ๊ฐ์ ์ฌ์ฉ์ ์ธ์ฆ์ ๊ตฌํํ ๋ ์์ฃผ ์ฌ์ฉ๋๋ค. ์น API๋ ๋ค๋ฅธ ์น ์๋น์ค์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฑฐ๋ ์์์ ๊ฐ์ ธ์ฌ ์ ์๋ ์ฐฝ๊ตฌ. ์์ ๊ฐ์ ์๋ฒ์ API๋ฅผ ์ฌ๋ ค์ URL์ ํตํด ์ ๊ทผํ ์ ์๊ฒ ๋ง๋ ๊ฒ์ ์น API ์๋ฒ๋ผ๊ณ ํ๋ค. ํ์ ๋ชจ๋ UUID ๋ชจ๋ # npm npm install uuid # v4 ๋ง ์ค์น npm install uuid4 [NODE] ๐ UUID ๋ชจ๋ ..
[NODE] ๐ crypto ๋ชจ๋ (๋จ๋ฐฉํฅ / ์๋ฐฉํฅ) ์ํธํ ์๋ฆฌ & ์ฌ์ฉ๋ฒ
์ํธํ ์ข ๋ฅ ์ํธํ๋ฅผ ํ๋ ์ด์ ๋ ํด๋น ์ ๋ณด๊ฐ ์ค์ํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ํธํ์๋ ์ฌ๋ฌ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ ์ ์๋ค. ๋ํ์ ์ผ๋ก ๋จ๋ฐํฅ๊ณผ ์๋ฐฉํฅ ์ํธ ๋ฐฉ์์ด ์๋๋ฐ, ๋จ๋ฐฉํฅ์ ์ํธํํ ์๋ ์์ด๋ ๋ณตํธํํด์ ์๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ ์๊ณ , ์๋ฐฉํฅ์ ๋ณตํธํํด์ ์๋์ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ์ ์๋ค. ๋ํ, ์๋ฐฉํฅ ์ํธํ๋ ๋์นญํ ์ํธํ์ ๋น๋์นญํ ์ํธํ๊ฐ ์กด์ฌํ๋ค. ๋์นญํ ์ํธํ์ ๋น๋์นญํ ์ํธํ๋ ์ํธํํ ๋ ์ฌ์ฉํ๋ ํค์ ๋ณตํธํํ ๋ ์ฌ์ฉํ๋ ํค์ ๋์ผ์ฑ์ ๋ํ ๊ธฐ์ค์ผ๋ก ๊ตฌ๋ถํ๊ฒ ๋๋ค. ๋จ๋ฐฉํฅ ์ํธํ ๋ฐฉ๋ฒ ๊ทธ ์ค ๊ฐ๋จํ ํด์ฌ ํจ์๋ฅผ ์ด์ฉํ๋ ๋ฐฉ๋ฒ์ ๋ณด์. ํด์ฌ ํจ์๋ ๊ฐ๋จํ ์ด์ผ๊ธฐํ์ฌ ๊ฐ์ ์ ๋ ฅ ๊ฐ์ ๊ฐ์ ์ถ๋ ฅ๊ฐ์ด ๋์ค๋ ๊ฒ ๋ณด์ฅ๋์ง๋ง, ์ถ๋ ฅ ๊ฐ์ผ๋ก ์ ๋ ฅ ๊ฐ์ ์ ์ถํ ์ ์๋ ๊ฒ์ ์๋ฏธํ๋ค. ์๋๋ ๋จ์ํ ์์ ์ด๋ค...
[NODE] ๐ ๋ ธ๋ ํ๊ฒฝ๋ณ์(env) ๋ค๋ฃจ๊ธฐ
ํ๊ฒฝ ๋ณ์๋? ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์ฝ๋ ๋ฒ ์ด์ค๋ ํ๋๋ง ๊ด๋ฆฌํ๊ณ , ๊ฐ๋ฐ, ํ ์คํธ, ์ด์ ๋ฑ ์ฌ๋ฌ ํ๊ฒฝ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ฐฐํฌํ๋๋ฐ์. ์ด๋ ํ๊ฒฝ์ ๋ฐฐํฌํ๋๋์ ๋ฐ๋ผ์ ๋ค๋ฅด๊ฒ ์ค์ ํด์ผํ๋ ํญ๋ชฉ์ ๋ณดํต ์ด์ ์ฒด์ ๋ ๋ฒจ์์ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ๊ด๋ฆฌํ๊ฒ ๋ฉ๋๋ค. ๋ํ์ ์ธ ์๋ก, ๊ฐ๋ฐ ํ๊ฒฝ์์๋ ๋ก์ปฌ DB๋ฅผ ์ฌ์ฉํด์ผํ๋๋ฐ, ์ด์ ํ๊ฒฝ์์๋ ์๊ฒฉ DB๋ฅผ ์ฌ์ฉํด์ผํ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ์ ์์ต๋๋ค. ๋ฟ๋ง ์๋๋ผ DB password๋ API key์ ๊ฐ์ ์ธ์ฆ ์ ๋ณด๋ ๊ณต๊ฐ๋ ์ฝ๋ ์ ์ฅ์์ ์ฌ๋ฆฌ๋ฉด ์ ๋๊ธฐ ๋๋ฌธ์ ํ๊ฒฝ ๋ณ์๋ก ์ ์ฅํด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์ผ๋ฐ์ ์ ๋๋ค. ํ๊ฒฝ ๋ณ์ ์ ๊ทผ Node.js์์ ํ๊ฒฝ ๋ณ์์ ์ ๊ทผํ ๋๋ process.env๋ผ๋ ๋ด์ฅ ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํฉ๋๋ค. process๋ ์ ์ญ ๊ฐ์ฒด์ฌ์ ๋ณ๋๋ก ์ํฌํธํด์ผ..
[NODE] ๐ ์ด๋ฒคํธ ๋ฃจํ ๐ setTimeout / setImmediate / process.nextTick ์ฐจ์ด์
Event loop ์ด๋ฒคํธ ๋ฃจํ๋ Node.js์ Main thread๋ก, ๋ด๋ถ์ ๊ฐ Phase๋ฅผ ๋๋ฉด์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์คํ ํฉ๋๋ค. ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๊ฐ Phase๋ Queue๋ก ์ด๋ฃจ์ด์ ธ์์ต๋๋ค. Queue์ ์ฐ๋ฆฌ๊ฐ ๋ฑ๋กํ Callback๋ค์ด ์๋ง๊ฒ ๋ด๊ฒจ์ ์์ ์ ์คํ์ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋๋ฐ์. ๊ฐ Phase๋ ์์ Queue์ ๋ชจ๋ Job์ ์ํํ๊ฑฐ๋, ์ ํ ๊ฐฏ์๊น์ง ์คํํ ํ์ ๋ค์ Phase๋ก ์ด๋ํฉ๋๋ค. ์ด ์ค์์ ์ฐ๋ฆฌ๋ timers, poll, check ๋จ๊ณ๋ง ํ์ํฉ๋๋ค. Phase ๋์ ์ฒ๋ฆฌ ์์ timer setTimeout(func, delay) setInterval(func, delay) delay๊ฐ ์ง๋ฌ์ผ๋ฉด, ๋ฑ๋ก๋ Callback ์คํ poll I/O ๋๋ถ๋ถ์ Callback ์คํ ch..
[NODE] ๐ ํด๋ฌ์คํฐ(cluster) ๋ชจ๋ - ๋ฉํฐ ํ๋ก์ธ์
Cluster ๊ธฐ๋ณธ์ ์ผ๋ก ์ฑ๊ธ ์ค๋ ๋์ธ ๋ ธ๋๊ฐ CPU ์ฝ์ด๋ฅผ ๋ชจ๋ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ชจ๋ ํฌํธ๋ฅผ ๊ณต์ ํ๋ ๋ ธ๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ ๊ฐ ๋ ์ ์์ ์์ฒญ์ด ๋ง์ด ๋ค์ด์์ ๋ ๋ณ๋ ฌ๋ก ์คํ๋ ์๋ฒ์ ๊ฐ์๋งํผ ์์ฒญ์ด ๋ถ์ฐ๋จ ์๋ฒ์ ๋ฌด๋ฆฌ๊ฐ ๋ ๊ฐ ์ฝ์ด๊ฐ 8๊ฐ์ธ ์๋ฒ๊ฐ ์์ ๋: ๋ณดํต์ ์ฝ์ด ํ๋๋ง ํ์ฉ cluster๋ก ์ฝ์ด ํ๋๋น ๋ ธ๋ ํ๋ก์ธ์ค ํ๋๋ฅผ ๋ฐฐ์ ๊ฐ๋ฅ ์ฑ๋ฅ์ด 8๋ฐฐ๊ฐ ๋๋ ๊ฒ์ ์๋์ง๋ง ๊ฐ์ ๋จ ๋จ์ : ์ปดํจํฐ ์์(๋ฉ๋ชจ๋ฆฌ, ์ธ์ ๋ฑ) ๊ณต์ ๋ชป ํจ. ๊ฐ๊ฐ ๋ ๋ฆฝ์ ์ธ ํ๋ก์ธ์ค๋ฅผ ๋์ฐ๋๊ฑฐ๋ผ, ์๋ก ๊ณต์ ๊ฐ ์๋จ. -> Redis ๋ฑ ๋ณ๋ ์๋ฒ๋ก ํด๊ฒฐ - ์์ปค ์ฐ๋ ๋๋ ์ฐ๋ ๋๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋๋ ๊ฑฐ๋ผ๋ฉด, (cpu์์ ์ ๋ถ๋ด) - ํด๋ฌ์คํฐ๋ ํ๋ก์ธ์ค๋ฅผ ์ฌ๋ฌ๊ฐ ๋ง๋๋ ๊ฒ. (์๋ฒ๋ฅผ ์ฃผ๋ก ์ฌ๋ฌ๊ฐ ์คํ) ๋ง์คํฐ ํ๋ก์ธ์ค๋ C..
[NODE] ๐ child_process ๋ชจ๋ (๋ค๋ฅธ ์ธ์ดํ๊ฒฝ ์ด์ฉ)
child_process ์์ ๋ฐฐ์ด ์์ปค ์ค๋ ๋๋ ๊ตฌํ์ด ํ๋ญ๋๋ค. ํ์ง๋ง, ๋ ธ๋์์ ๋ค๋ฅธ ์ธ์ด๋ก ๋ง๋ ์๋ฒ๋ฅผ ํธ์ถ ํ ์๋ ์์ต๋๋ค. ์ฑ๊ธ์ค๋ ๋์ ํ๊ณ์ ๋ด์ฐฉํ์ฌ, ๋ ธ๋ ์ฌ์ฉ์ ์ฃผ์ ํ ๋ ๋จ๋น ๊ฐ์ ๊ธฐ๋ฅ์ ๋๋ค. ์ฆ, ํ๋ํ ์์ ์ ๋ค๋ฅธ ์ธ์ด์์ ์คํํ๋๋กํ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ ธ๋ ์๋ฒ๊ฐ ๋ฐ์์ ๋ค์ ๋ธ๋ผ์ฐ์ ๋ก ์ ๋ฌํ๋ฉด ์๋ฒฝํฉ๋๋ค. const { exec } = require('child_process'); var process = exec('dir'); // ๋ง์น ์ฐ๋ฆฌ๊ฐ ํฐ๋ฏธ๋์์ dir๋ฅผ ์น๋ ๊ฑฐ์ ๊ฐ์ ์ญํ ์ ํ๋ค. // ๊ฒฐ๊ณผ๋ฌผ ์ถ๋ ฅ์ ๋ฐ๋์ ์ฐ๋ฆฌ๊ฐ ์ง์ ๊ตฌํํด์ค์ผ ํ๋ค. process.stdout.on('data', function (data) { console.log(data.toString()); }..
[NODE] ๐ Worker_Threads ๋ชจ๋ (๋ฉํฐ ์ฐ๋ ๋ ๊ตฌํ)
Worker Thread ์ดํดํ๊ธฐ Node.js๊ฐ ์์๋๋ฉด, ๋ค์์ด ์คํ๋ฉ๋๋ค. ํ๋์ ํ๋ก์ธ์ค : ์ด๋์๋ ์ ๊ทผ ๊ฐ๋ฅํ ์ ์ญ ๊ฐ์ฒด์ด์ ๊ทธ ์๊ฐ ์คํ๋๊ณ ์๋ ๊ฒ๋ค์ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋ ํ๋ก์ธ์ค ํ๋์ ์ค๋ ๋ : ๋จ์ผ ์ค๋ ๋๋ ์ฃผ์ด์ง ํ๋ก์ธ์ค์์ ์ค์ง ํ ๋ฒ์ ํ๋์ ๋ช ๋ น๋ง์ด ์คํ๋๋ค๋ ๋ป. ํ๋์ ์ด๋ฒคํธ ๋ฃจํ : ๋ ธ๋๋ฅผ ์ดํดํ๊ธฐ ์ํด ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ ์ค ํ๋์ ๋๋ค. ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ๊ฐ ๋จ์ผ ์ค๋ ๋๋ผ๋ ์ฌ์ค์๋ ๋ถ๊ตฌํ๊ณ , ์ธ์ ๋ ๊ฐ๋ฅํ callback, promise, async/await ๋ฅผ ํตํด ์์คํ ์ปค๋์ ์์ ์ offload ํ๊ฒ ํฉ๋๋ค. ์ด๋ก์ ๋ ธ๋๊ฐ ๋น๋๊ธฐ์, ๋น์ฐจ๋จ I/O ์ ํน์ฑ์ ๊ฐ์ง๋๋ค. ํ๋์ js ์์ง ์ธ์คํด์ค : js ์ฝ๋๋ฅผ ์คํํ๋ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ ๋๋ค. ํ๋์ ๋ ธ๋js ์ธ์ค..
[NODE] ๐ ์์ธก ๋ถ๊ฐ๋ฅํ ์๋ฌ ์ฒ๋ฆฌํ๊ธฐ (uncaughtException)
๋ ธ๋ uncaughtException ๋ชจ๋ ์ฝ๋๋ฅผ try{} catch {} ๋ก ๊ฐ์ธ๋ ๊ฒ์ ๊ท์ฐฎ์ ์ผ์ด๋ค. ํ์ง๋ง ์ ๋ง ์ด์ฉ๋ค๊ฐ ์๊ธฐ์น ๋ชปํ ์๋ฌ๊ฐ ๋์ ์ฑ๊ธ ์ค๋ ๋์ธ ๋ ธ๋๊ฐ ์ฃฝ์ด๋ฒ๋ ค ์๋ฒ๊ฐ ์์ ๋ค์ด ๋๋ ํ์์ด ์๊ธธ ์ ์๋ค. ์ด๋ฌํ ์์ธกํ์ง ๋ชปํ ์๋ฌ๋ฅผ ๋ชจ์ catch๋ก ํ๋ฐฉ์ ์ฒ๋ฆฌํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์๋ค. ๋จ, ์ตํ์ ์๋จ์ผ๋ก ์ฌ์ฉํด์ผ ํ๋ค. ์ฝ๋ฐฑ ํจ์์ ๋์์ด ๋ณด์ฅ๋์ง ์์ ๋ฐ๋ผ์ ๋ณต๊ตฌ ์์ ์ฉ์ผ๋ก ์ฐ๋ ๊ฒ์ ๋ถ์ ํฉ ์๋ฌ ๋ด์ฉ ๊ธฐ๋ก ์ฉ์ผ๋ก๋ง ์ฐ๋ ๊ฒ ์ข์ // uncaughtException ์ด ๋ชจ๋ ์๋ฌ๋ฅผ ์ก์์ฃผ์ง๋ ์์. // ๋ฐ๋ผ์ ์ฌ๊ธฐ์ ๋ณต๊ตฌ ์ฝ๋๋ฅผ ๋ฃ๋๊ฑด ๋น์ถ์ฒํจ. // ๋จ์ํ ์๋ฌ ๋ฐ์ ํ์ธ์ฉ์ผ๋ก๋ง ์ฌ์ฉ process.on('uncaughtException', err => { conso..
[NODE] ๐ https / http2 ๋ชจ๋ (๋ณด์ ๊ฐํ ์๋ฒ)
๊ธฐ์กด http ์๋ฒ const http = require('http'); http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8' }); res.write('Hello Node!'); res.end('Hello Server!'); }) .listen(8080, () => { // ์๋ฒ ์ฐ๊ฒฐ console.log('8080๋ฒ ํฌํธ์์ ์๋ฒ ๋๊ธฐ ์ค์ ๋๋ค!'); }); http ssl ์๋ฒ const https = require('https'); const fs = require('fs'); https.createServer({ // ์ธ์ฆ๊ธฐ๊ด์ผ๋ก๋ถํฐ ๋ฐ๊ธ๋ฐ์ ์ธ์ฆ์ cert,key,caํ์ผ๋ค..