2021-04-02(Fri)
ํญ๋ชฉ | ๋ด์ฉ |
ํ์ต ๋ ์ง | 2021-04-02(๊ธ) |
ํ์ต ์๊ฐ | 11:00~23:00 |
ํ์ต ๋ฒ์ ๋ฐ ์ฃผ์ | node.js, express.js |
ํ์ต ๋ชฉํ | qr-checkin ์ฝ๋๋ฅผ ๋ถ์ํ ์ ์๋๋ก ํ์ตํ๋ค. |
๋๋ฃ ํ์ต ๋ฐฉ๋ฒ | - |
์์ธ ํ์ต ๋ด์ฉ
์ค๋๋ถํฐ ๋ฉํ-์คํฐ๋ ์๋ฃ๋ ๋จ๊ฒจ๋ณด๊ฒ ๋ค.
ํด๋ก์ ์๋ฃ ์ค ๋ํ์
https://poiemaweb.com/js-closure
C๋ก ์น๋ฉด ์ผ์ข
์ ๋ฉ๋ชจ๋ฆฌ๋ฆญ์ ํด๋นํ๋ ํ์์ด var
ํค์๋๋ฅผ ํตํด์๋ ์์ฐ์ค๋ฝ๊ฒ ์ผ์ด๋๋ค. ๋ฉ๋ชจ๋ฆฌ์ ๋จ์์๋ค๋. ๊ฑฑ์ ๋ง๋ผ ์ฐ๊ณ ๋์ null ์ฒ๋ฆฌํด์ฃผ๋ฉด GC๊ฐ ์ฒ๋ฆฌํด์ฃผ๋๊น!
Node.js ํ์ต ๋ฉ๋ชจ
์ฐ๋ ๋ ๊ธฐ๋ฐ vs ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ
๋๋ถ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ Blocking I/O๋ฅผ ์ฌ์ฉํ์ฌ ๋ฉํฐ ์ฐ๋ ๋๋ฅผ ์ฌ์ฉํ ์ ๋ฐ์ ์์๋ค.
Blocking I/O๋ ํ๋์ ํ๋ก์ธ์ค๊ฐ ์ด๋ค ์์์ ์ฌ์ฉํ๊ณ ์ ํ ๋ ๊ทธ ์์์ ๋ค๋ฅธ ํ๋ก์ธ์ค๊ฐ ์ ์ ํ๊ณ ์๋ค๋ฉด, ๊ทธ ํ๋ก์ธ์ค๊ฐ ๊ทธ ์์์ ์ฌ์ฉ์ ๋๋ง์น ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํ๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค.
๋ฌธ์ ๋ Blocking I/O ์์ฒด๊ฐ ์ฐ๋ ๋ ์ง์ฐ์ ๋ฐ์์ํจ๋ค๋ ๊ฒ์ด๋ค. I/O ์์ฒญ์ ํ๊ณ ์๋ต์ด ์ฌ ๋๊น์ง ์๋ฌด๊ฒ๋ ํ์ง ์๊ณ ์๊ฐ์ ๋ญ๋นํ๊ฒ ๋๋ค!
๋ํ ์ค์ผ์ฅด๋ง ์์ฒด์ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ ์ฐ๋ ๋๊ฐ ๋ง์์ง ์๋ก ๋์ด๋๋ Context switch ๋น์ฉ๋ ๋ฌด์ํ ์ ์๋ค.
๋์์ผ๋ก๋ ์ฐ๋ ๋๋ค์ ๋ณ๋๋ก ๊ด๋ฆฌํ๊ฑฐ๋, ๋ ์์ ๋จ์๋ก ์ชผ๊ฐ์ด VM ๋ฑ์ผ๋ก ์ค์ ์ฐ๋ ๋๋ก ๋ถ๋ฐฐํ๋ ๋ฐฉ์ ๊ฐ์ ๋์์ด ๋ฑ์ฅํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ธ๋์ ๋ฐฉ์๋ ๋์์ด๋ค. ์ด๋ค ์์ด๋๋ฉด..
์ฑ๊ธ ์ฐ๋ ๋์ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋น๋๊ธฐ I/O ์ฒ๋ฆฌ
๋ ธ๋๋ ์ด๋ฌํ ๋ฌธ์ ๋ค์ ์ฑ๊ธ ์ฐ๋ ๋์ ์ด๋ฒคํธ ๊ธฐ๋ฐ์ ๋น๋๊ธฐ I/O ์ฒ๋ฆฌ๋ก ํด๊ฒฐํ๊ณ ์๋ค. ๋ ธ๋๋ I/O ์์ ์ด ์์๋๋ฉด I/O ์์ ์ฒ๋ฆฌ์ ๋ํ ์๋ต์ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ , ๋ฐ๋ก ๋ค์ ์์ ์ ์คํํด๋ฒ๋ฆฐ๋ค. ๋์ I/O ์์ ์ด ์ข ๋ฃ๋๋ฉด ์ด๋ฒคํธ๋ฅผ ๋ฐ์์ํค๊ณ , ์ด ์ด๋ฒคํธ๋ ํด๋น ํ๋ก์ธ์ค์ ์ด๋ฒคํธ ํ์ ๋ฑ๋ก๋๊ฒ ๋๋ค. ๋ ธ๋๋ก ๊ฐ๋ฐ๋ ํ๋ก์ธ์ค๋ ์ด ์ด๋ฒคํธ ํ์ ๋ฑ๋ก๋ ์๋ก์ด ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ์ฌ, ํด๋น ์ด๋ฒคํธ ์ ์ํํ์ฌ์ผ ํ ์์ ์ ์คํํ๊ฒ ๋๋ค.
์ด๋ฒคํธ ๋ฃจํ
์ด๋ฒคํธ ๋ฃจํ(Event Loop)๋ผ๋ ๊ฒ์ ์์ ์ ์์ฒญํ๋ฉด์ ๊ทธ ์์ ์ด ์๋ฃ๋์์ ๋ ์ด๋ค ์์ ์ ์งํํ ์ง์ ๋ํ ์ฝ๋ฐฑ ํจ์๋ฅผ ์ง์ ํ์ฌ ๋์์ด ์๋ฃ๋์์ ๋ ํด๋น ์ฝ๋ฐฑ ํจ์๋ฅผ ์คํ๋๋ ๋ฐฉ์์ ๋์ ๋ฐฉ์์ ๋งํ๋ค.
์ด๋ฐ ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ ์ด๋ฒคํธ ๋ฃจํ๋ ์ด๋ค ์์ฒญ์ด ๋ฐ์ํ๋ฉด ๊ทธ ์์ ์ ๋ํด ์ฐ๋ ๋ ์คํ๋ง์ ์ผ์ผํฌ ๋ฟ์ด๋ค.
jekim๋๊ณผ ๊ด๋ จํด์ ํ ๋ก ํ๋ค๊ฐ ์ด ๋งํฌ๋ฅผ ๊ณต์ ๋ฐ์๋ค.
Node.js์ ์ํคํ
์ณ
์ด์ฐฝ๊ธฐ์ Node.js ์ํคํ ์ณ.
์ง๊ธ์ ๊ธฐ์ ์ด ๋ฐ์ ํ์ฌ ์์ฒ๋ผ libev์ ์ข ์์ฑ์ ์ ๊ฑฐํ๊ณ libeio์ libev๋ฅผ ์ฐ๋ ๋ฒ์ ์ผ๋ก ๋ณ๊ฒฝ๋์๋ค.
๊ฐ ๋ชจ๋๋ณ ์ญํ ์ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ .
npx
๋ผ์ด๋ธ ์ฝ๋ฉ์ ๋ณด์ํ๋, ๋ชจ๋์ ๋ฐ์ ๋ npm
, npx
, yarn
๋ฑ์ ํผ์ฉํ๋ ๊ฒ์ฒ๋ผ ๋๊ปด์ง๋ค. ํนํ Sequelize
๋ฅผ ๋ค๋ฃฐ ๋ npx
๋ฅผ ๋ง์ด ์ฐ๊ธฐ์ ์ด ๋
์์ด ๋ฌด์์ธ์ง ๊ถ๊ธํด์ ธ ๋ฒ๋ ธ๋ค.
๊ทธ๋์ npx๋ ๋ญ๊น?
npx๋ ์๋ก์ด ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ด ์๋๋ผ, ์๋ฐ์คํฌ๋ฆฝํธ ํจํค์ง ๊ด๋ฆฌ ๋ชจ๋์ธ npm(Node Package Module)์ 5.2.0 ๋ฒ์ ๋ถํฐ ์๋ก ์ถ๊ฐ๋ ๋๊ตฌ์ด๋ค!
npx
๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ ์ ์๋ค๋ฉด, npm ๋ ์ง์คํธ๋ฆฌ์ ์ฌ๋ผ๊ฐ์๋ ํจํค์ง๋ฅผ ์ฝ๊ฒ ์ค์นํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ CLI ๋๊ตฌ์ด๋ค.
npm: Package Manager(๊ด๋ฆฌ)
npx: Package Runner(์คํ)
์ npx๊ฐ ๋์
๋ ํ์๊ฐ ์์์๊น?
๊ณผ๊ฑฐ npm์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ ๋ ๋ ๊ฐ์ง ์ผ์ด์ค๊ฐ ์์๋ค.
์ ์ญ์ผ๋ก ํจํค์ง๋ฅผ ์ค์นํ์ฌ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ ์ ์ฒด์ ์ ๊ด๋ฆฌํ๋ ๋ฐฉ๋ฒ
ํน์ ํ๋ก์ ํธ์๋ง ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์นํ๋ ๋ฐฉ๋ฒ
์ด๋ฌํ ์์กด์ฑ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด ์ ์ญ์ด๋ ๋ก์ปฌ์ ์ค์น๋ ์ฑ ๊ด๋ฆฌ๊ฐ ๋๋ฉด ์ค์น๋ ์์น์ ๋ฐ๋ผ ๋ฐ๋ก ๊ด๋ฆฌํด์ค์ผํ๋ค๋ ๋ฒ๊ฑฐ๋ก์์ด ๋ฐ์ํ๋ค.
npx๋ ๊ธฐ์กด npm ์ค์น ๋ฐฉ๋ฒ๊ณผ๋ ๋ค๋ฅด๊ฒ ์ผ์ผ์ด ์ค์น, ์ ๊ฑฐ๋ฅผ ํ ํ์ ์์ด ์ผํ์ฑ์ผ๋ก ์ํ๋ ํจํค์ง๋ฅผ npm ๋ ์ง์คํธ๋ฆฌ์ ์ ๊ทผํด์ ์คํ์ํค๊ณ ์ค์นํ๋ ์คํ๋๊ตฌ์ด๋ค. ๋ฐ๋ก ํจํค์ง๋ฅผ ์ค์นํ๊ณ ์ ๋ฐ์ดํธํ์ง ์๋๋ผ๋ npm ๋ ์ง์คํธ๋ฆฌ์ ์ฌ๋ผ๊ฐ ์๋ ์ต์ ๋ฒ์ ์ ์คํ์ํค๊ณ ์ค์น๋ง ์ํค๋ฉด ๋์ธ ์ ์ด๋ค.
ํ์ต ๋ด์ฉ์ ๋ํ ๊ฐ์ธ์ ์ธ ์ดํ
์ฉ๋ฑ๋ง๊ฒ node & express ํ์ต์ ์์ํ๋ค. spring๋ ๋ ์ฌ๋ฐ๊ฒ ํ๊ณ ์์๊ธดํ๋ฐ, QRcheckin์ ์ด๋ฒคํธ ํ ์ด๋ธ์ ๋ถ์ฌ๋ณด๊ณ ์ถ์ด์ ธ์..ใ ใ ;
๋ค๋ฅธ ๊ฒ๋ณด๋ค ์ค์ ๋ก ์ฌ์ฉ๋๋ ์๋น์ค๋ฅผ ๋ง๋ค๊ณ ์ถ๋ค๋ ๊ฐ์ฆ์ด ๋๋ฌด ์ปค์ง ์ํ์ด๋ค. ๋ฌด์๋ณด๋ค ์ฌ๋๋ค์ด ๋ง์ด ์ฐ๋ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ์ถ๋ค. cub3d tester๋ ์ฌ๋๋ค์ด ๋ง์ด ์จ์ฃผ๋๊น ์ฆ๊ฒ๋๋ผ. ๋ง์นจ ๊ด์ฌ์์๋ ๊ฒ๋ค์ด ๋ชจ์ฌ์๋ค.
node
QR์ฝ๋
์์ฉ ์๋น์ค์ ํ ์ด๋ธ ๋ถ์ด๊ธฐ
์ฌ์ค ๋๋ฅผ ์ ํํ๋๊ฑด ๋ ๋ฐ์ ์๋ค. ๋ ์๊ฐ์ node & express ๊ณต๋ถํด๋ณด์, ๊ทธ๋ฅ ์ ์ ๋ ์๋ฉด ๋์ง ๋ญใ ใ :)
flow๋ ์๋์ ๊ฐ์ด ํ ๊ฒ์ด๋ค.
node ๊ธฐ์ด ํ์ต (์๋ฃ)
QR ์ฝ๋ ๋ฆฌ๋๊ธฐ ๋ฏ์ด๋ณด๊ธฐ (์งํ ์ค)
ํ ์ด๋ธ ๋ถ์ด๊ธฐ
๋ถ์ธ ํ ์ด๋ธ์ ์ด๋ฒคํธ ์ ๋ ฅํ๋ ์ด๋๋ฏผ ํ์ด์ง ๊ฐ๋ฐ
๋ค์ ํ์ต ๊ณํ
QR ์ฝ๋ ๋ฆฌ๋๊ธฐ์ ํ ์ด๋ธ ๋ถ์ด๊ธฐ
Last updated