You Can Become A
๋ฆ๊ฒ ์์ํด๋ ๋๊ตฌ๋ ์ง ๋ ธ๋ ฅํ๋ฉด ๊ฐ๋ฐ์๊ฐ ๋ ์ ์์ด์ !
Node
[NODE] ๐ ์ฟ ํค & ์ธ์ ๋ค๋ฃจ๊ธฐ
์๋ฐ์คํฌ๋ฆฝํธ ์ฟ ํค ๋ค๋ฃจ๊ธฐ ๋ ธ๋ ์ฟ ํค ๋ค๋ฃจ๊ธฐ์ ์์, ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ฟ ํค ๋ค๋ฃจ๋ ๋ฒ์ ๋จผ์ ๊ณต๋ถํ๊ณ ์ค๋ ๊ฒ์ ์ถ์ฒํ๋ค. [JS] ๐ ์ฟ ํค(Cookie) ๐ช ๋ค๋ฃจ๊ธฐ ์ ํ ํ์ต [WEB] ๐ ์ฟ ํค / ์ธ์ ์ ๋ฆฌ ๋น์ฐ๊ฒฐ์ฑ(Connectionless)๊ณผ ๋น์ํ์ฑ(Stateless) HTTP ํ๋กํ ์ฝ์๋ ๋น์ฐ๊ฒฐ์ฑ(Connectionless)๊ณผ ๋น์ํ์ฑ(Stateless)์ด๋ผ๋ ํน์ง์ด ์์ต๋๋ค. ์ด๋ ์๋ฒ์ ์์์ ์ ์ฝํ.. inpa.tistory.com ์ฟ ํค ์ ์ก ์๋ฒ ๋ง๋ค๊ธฐ const http = require('http'); http .createServer((req, res) => { // ๋ง์ผ ์ฟ ํค๊ฐ ์์ผ๋ฉด, ์ฝ๋๋ค. console.log(req.url, req.headers.cookie); // Set-..
[NODE] ๐ http ๋ชจ๋ (์๋ฒ ์คํ)
HTTP ๋ชจ๋ http ๋ชจ๋์ ๋ ธ๋์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ชจ๋์ด๋ฉฐ, http ์๋ฒ์ ํด๋ผ์ด์ธํธ๋ฅผ ์์ฑํ๋ ๊ฒ๊ณผ ๊ด๋ จ๋ ๋ชจ๋ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ค. ์น ์๋ฒ์ ์์ฑ๊ณผ ์คํ //์๋ฒ๋ฅผ ์์ฑ var http = require('http'); var server = http.createServer(); //์๋ฒ๋ฅผ ์คํ server.listen(52273, function() { // ํฌํธ ์ค์ console.log('Server Running at http://127.0.0.1:52273'); // ์๋ฒ์คํ ํ๋ฉด ์ฝ์ ์ถ๋ ฅ }); //10์ด ํ ์๋ฒ ์ข ๋ฃ setTimeout(function() { console.log('์๋ฒ ์ข ๋ฃ'); server.close(); },10000); http ๋ชจ๋์ ์ฌ์ฉํ๊ธฐ ์ํด requi..
[NODE] ๐ url ๋ชจ๋ - ๋งํฌ ์ ๋ณด ์ ์ด (URL / WHATWG)
URL ๋ชจ๋ ๋ ธ๋์์๋ url ๋ชจ๋์ ์ฌ์ฉํ์ฌ ์ฌ์ดํธ ์ฃผ์ ์ ๋ณด๋ฅผ url ๊ฐ์ฒด๋ก ๋ง๋ค ์ ์๋ค. url ๋ชจ๋์ ์ด์ฉํด ์ฃผ์ ๋ฌธ์์ด์ ๊ฐ์ฒด๋ก ๋ง๋ค๋ฉด ๋ฌธ์์ด ์์ ์๋ ๊ฐ๊ฐ์ ์ ๋ณด๋ฅผ ๋๋์ด ๊ทธ ๊ฐ์ฒด์ ์์ฑ์ผ๋ก ๋ณด๊ดํ๋ค. (ex. protocol / host / query) ๋ฐ๋ผ์ ์์ฒญ ํ๋กํ ์ฝ์ด http์ธ์ง https์ธ์ง๋ฅผ ๊ตฌ๋ณํ๊ฑฐ๋ ์์ฒญ ํ๋ผ๋ฏธํฐ๋ฅผ ํ์ธํ๊ณ ์ถ๋ค๋ฉด url ๊ฐ์ฒด๊ฐ ๊ฐ๊ณ ์๋ ์์ฑ ๊ฐ์ ํ์ธํ๋ฉด ๋๋ค. URL๋ฐฉ์ ๊ณผ WHATWG ๋ฐฉ์ URL โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ href โ โโโโโโโโโโโโฌโโโฌโโโโโโโโโโโโโโโโโโโโ..
[NODE] ๐ ๋ฒํผ / ์คํธ๋ฆผ / ํ์ดํ ๋ฌธ๋ฒ ๐ฏ ์ ๋ฆฌ
๋ฒํผ (Buffer) ๊ธฐ๋ณธ์ ์ผ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด์ง ๋ฐ์ดํฐ(binary data)๋ฅผ ๋ค๋ฃฐ ์ ์๋ค. ๊ทธ๋ฐ๋ฐ ์๋ฒ๋ก ํ์ฉํ๋ ๋ ธ๋์์๋ TCP streams ์ด๋ ํ์ผ์ ์ฝ๊ณ ์ธ ์ ์์ด์ผ ํ๋ค. ๊ทธ๋์ ๋ฑ์ฅํ ๊ฒ์ด buffer์ด๋ค. ์ฝ๊ฒ ๋งํด ํ์ผ์ ์ฝ๊ณ ์ฐ๋๋ฐ ์ ์ก๋๋ ์ด์ง ๋ฐ์ดํฐ๋ฅผ buffer๋ก ๋ณํํด์ ํ์ฉํ๋ ๊ฒ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค. ์๋ ์ฝ๋๋ node ๋ด์ฅ ๋ชจ๋์ธ fs์ readFile์ ํตํด ํ์ผ์ ์ฝ๊ณ , ์ฝ๋ฐฑ์ผ๋ก ๋ฐํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํด ๋ณด๋ฉด ํ์ผ ๋ด์ฉ์ด buffer๋ก ๋ณํํ ๊ฒ์ ๋ณผ์ ์๋ค. const fs = require("fs"); // ํ์ผ ์ฝ๊ธฐ fs.readFile("./memo.txt", (err, data) => { if (err) { console.warn(err); } con..
[NODE] ๐ fs ๋ชจ๋ - ํ์ผ ์ ์ด ๋ช ๋ น์ด ๐ฏ ์ ๋ฆฌ
Node File System ๋ชจ๋ ํ์ผ์์คํ ๋ชจ๋์ด๋, ํ์ผ ์ฒ๋ฆฌ์ ๊ด๋ จ๋ ์์ ์ ํ๋ ๋ชจ๋๋ก ๋ณดํต FileSystem์ ์ค์ฌ์ fs ๋ชจ๋์ด๋ผ๊ณ ์ค์ฌ ๋ถ๋ฆ ๋๋ค. ๋ ธ๋์์ ๊ฐ์ฅ ๋ง์ด ์ฐ์ด๊ณ ์ค์ํ ๋ชจ๋ ์ค ํ๋์ ๋๋ค. fs ๋ชจ๋์๋ ๋๋ถ๋ถ์ ๋ฉ์๋๋ค์ด ๋๊ธฐ/๋น๋๊ธฐ๋ก ๋๋๋๋ฐ, Sync๋ผ๋ ์ด๋ฆ์ด ๋ถ์ด์๋ ๋ฉ์๋๊ฐ ๋๊ธฐ๋ฐฉ์์ ์ฌ์ฉํ๋ค๊ณ ๋ณด๋ฉด ๋ฉ๋๋ค. ๋๊ธฐ์ ์ฝ๊ธฐ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด ํ์ผ์ ์ฝ์ผ๋ฉด์ ๋ค๋ฅธ ์์ ์ ๋์์ ํ ์ ์์ต๋๋ค. ํ์ง๋ง ๋น๋๊ธฐ์ ์ผ๋ก ์ฝ์ผ๋ฉด ํ์ผ์ ์ฝ์ผ๋ฉด์ ๋ค๋ฅธ ์์ ๋ ๋์์ ์ํํ ์ ์๊ณ , ํ์ผ์ ๋ค ์ฝ์ผ๋ฉด ๋งค๊ฐ๋ณ์ callback์ผ๋ก ์ ๋ฌํ ํจ์๊ฐ ํธ์ถ๋ฉ๋๋ค. ์ฃผ๋ก ๋น๋๊ธฐ์ ํ์์ ๋ง์ด ์ฌ์ฉํ์ง๋ง, ์๋ฒ ์์ ์ ์ธํ ํ์ผ์ ์ฝ๋ ์์ ๊ณผ ๊ฐ์ด ๋๊ธฐ์ ํ์์ด ๋ ์ ์ ํ ๊ฒฝ์ฐ๋ ์์ต๋๋ค...
[NODE] ๐ Utility ๋ชจ๋ (๋ณด์กฐ ๊ธฐ๋ฅ ๋ชจ์)
Utility ๋ชจ๋ Utility ๋ชจ๋์ node.js์ ๋ณด์กฐ์ ์ธ ๊ธฐ๋ฅ ์ค ์ ์ฉํ ๊ธฐ๋ฅ๋ง์ ๋ชจ์๋์ ๋ชจ๋์ ๋๋ค. ๋ชจ๋ ๋ฉ์๋๋ API ๋ฌธ์์์ ๋ณผ ์ ์์ต๋๋ค. util.format(format, [...]) : console.log() ๋ฉ์๋์ ๋น์ทํ ๊ธฐ๋ฅ์ด์ง๋ง console.log()๋ ํ๋ฉด์ ์ถ๋ ฅํ๊ณ util.format์ ๋ฌธ์์ด๋ก ๋ฐํํฉ๋๋ค. printf์ ๊ฐ์ ํ์์ผ๋ก ์ฒซ ์๊ท๋จผํธ๋ฅผ ์ฌ์ฉํด์ ํฌ๋งทํ ๋ ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. ํ๋ ์ด์ค ํ๋๋ ๋ค์๊ณผ ๊ฐ์ ์๊ท๋จผํธ์ ๊ฐ์ผ๋ก ๋์ฒด๋ฉ๋๋ค. util.debug(string) : ํ๋ก๊ทธ๋จ์ ์คํ์ ๋ฉ์ถ๊ณ ์ฆ๊ฐ์ ์ผ๋ก string์ ์ถ๋ ฅํฉ๋๋ค. util.log(string) : ํ์์คํฌํ ์๊ฐ๊ณผ ํจ๊ป string์ ์ถ๋ ฅํฉ๋๋ค. util.isArray(object..
[NODE] ๐ __dirname / __filename / process.cwd() ์ฐจ์ด ์ ๋ฆฌ
__dirname ์ __filename ๋ ธ๋์์๋ ๋ชจ๋ ๊ด๊ณ๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ ํ์ฌ ํ์ผ์ ๊ฒฝ๋ก๋ ํ์ผ๋ช ์ ์์์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค. ๋ ธ๋๋ __filename, __dirname ์ด๋ผ๋ ํค์๋๋ก ๊ฒฝ๋ก์ ๋ํ ์ ๋ณด๋กค ์ ๊ณตํ๋ค. ํ์ผ์ __filename, __dirname ๋ณ์๋ฅผ ๋ฃ์ด๋๋ฉด ์คํ์ ํ์ฌ ํ์ผ๋ช ๊ณผ ํ์ผ ๊ฒฝ๋ก๋ก ๋ฐ๋๋ค. ์๋ ์์ ์ js ํ์ผ์ ์์น๋ /Users/ano/temp/directory.js ์ด๋ค. // file ๋ช ์ ํฌํจํ ์ ๋๊ฒฝ๋ก console.log(__filename); // C:/Users/ano/temp/directory.js // file ๋ช ์ ์ ์ธํ ์ ๋ ๊ฒฝ๋ก console.log(__dirname); // C:/Users/ano/temp __dirname ์ pr..
[NODE] ๐ Path ๋ชจ๋ (๊ฒฝ๋ก ์ ์ด)
Path ๋ชจ๋ path ๋ชจ๋์ ์ด์์ฒด์ ๋ณ๋ก ๊ฒฝ๋ก ๊ตฌ๋ถ์๊ฐ ๋ฌ๋ผ ์๊ธฐ๋ ๋ฌธ์ ๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ธฐ ์ํด ๋ฑ์ฅํ๋ค. ๋ฌธ์ ๋ ์ด์์ฒด์ ๋ณ๋ก ๋ฌ๋ผ์ง๋ ๊ตฌ๋ถ์์ ๋ํ ์ด์๋ ๋ค์๊ณผ ๊ฐ๋ค. ํฌ๊ฒ Windows, POSIX ๋ก ๊ฐ๋ฆฌ๋๋ฐ, POSIX๋ ์ ๋์ค ๊ธฐ๋ฐ์ ์ด์์ฒด์ ๋ฅผ ๋งํ๊ณ , macOS ์ Linux ๊ฐ ์ด์ ์ํด์๋ค. Windows: C:\Users\ano ์ฒ๋ผ \ ๋ฅผ ์ฌ์ฉํด ํด๋๋ฅผ ๊ตฌ๋ถํ๋ค. POSIX: /Users/ano ์ฒ๋ผ / ๋ฅผ ์ฌ์ฉํด ํด๋๋ฅผ ๊ตฌ๋ถํ๋ค. path ๋ชจ๋์ ์ฌ์ฉํ๋ฉด ํด๋์ ํ์ผ์ ๊ฒฝ๋ก๋ฅผ ์ฝ๊ฒ ์กฐ์ํ ์ ์์ด ์์ ๊ฐ์ ๊ฒฝ๋ก ๊ตฌ๋ถ์ ์ด์๋ฅผ ์ฝ๊ฒ ํด๊ฒฐํ๊ณ , ์ด์ธ์ ํ์ผ๋ช ์์ ํ์ผ๋ช , ํ์ฅ์๋ฅผ ๋ณ๋๋ก ๋์ด์ ํ์ฉํ ์ ์ ์ ์๋ค. path ๋ชจ๋ method path ๋ชจ๋์ ๋ด์ฅ ๋ชจ๋์ด๋ฏ๋ก ๋ณ๋ ..
[NODE] ๐ Event ๋ชจ๋ (์ด๋ฒคํธ ์ ์ด)
Event ๋ชจ๋ Node.js ์์ Event๋ฅผ ๋งค์ฐ ๋ง์ด ์ฌ์ฉํ๊ณ , ์ด ๋๋ฌธ์ ๋ค๋ฅธ ๋น์ทํ ๊ธฐ์ ๋ค๋ณด๋ค ํจ์ฌ ๋น ๋ฅธ ์๋๋ฅผ ์๋ํฉ๋๋ค. Node.js ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ์๋ฒ๊ฐ ๊ฐ๋๋๋ฉด, ๋ณ์๋ค์ initialize ํ๊ณ , ํจ์๋ฅผ ์ ์ธํ๊ณ ์ด๋ฒคํธ๊ฐ ์ผ์ด๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ด๋ฒคํธ ์์ฃผ (Event-Driven) ์ดํ๋ฆฌ์ผ์ด์ ์์๋, ์ด๋ฒคํธ๋ฅผ ๋๊ธฐํ๋ ๋ฉ์ธ ๋ฃจํ๊ฐ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฒคํธ๊ฐ ๊ฐ์ง๋์์์ Callbackํจ์๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๋ฒคํธ๊ฐ ์ฝ๋ฐฑ๊ณผ ๋น์ทํด ๋ณด์ผ ์ ๋ ์์ต๋๋ค. ์ฐจ์ด์ ์, ์ฝ๋ฐฑํจ์๋ ๋น๋๊ธฐ์ ํจ์์์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ํธ์ถ๋์ง๋ง, ์ด๋ฒคํธํธ๋ค๋ง์ ์ต์ ๋ฒ ํจํด์ ์ํด ์๋๋ฉ๋๋ค. ์ด๋ฒคํธ๋ฅผ ๋๊ธฐํ๋ (EventListeners) ํจ์๋ค์ด ์ต์ ๋ฒ ์ญํ ์ ํฉ๋๋ค. ์ต์ ๋ฒ๋ค์ด ์ด๋ฒคํธ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ค๊ฐ, ์ด๋ฒคํธ..
[NODE] ๐ OS / Process ๋ชจ๋ (์์คํ ํ์ธ)
OS ๋ชจ๋ OS ๋ชจ๋์ ์ค์ ๊ฐ๋ฐ์์ ๋ง์ด ์ฌ์ฉ๋๋ ๋ชจ๋์ ์๋์ง๋ง ์ด์์ฒด์ ์ ์์คํ ์ ์ ๋ณด๋ฅผ ๊ฐ์ ธ์ฌ ์ ์๋ ๋ชจ๋์ ๋๋ค. CPU๋ ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ ์ฉ๋์ด ์ผ๋ง๋ ๋จ์๋์ง ํ์ธ์ด ํ์ํ ๋ ์ฌ์ฉํฉ๋๋ค. ์ฆ ์ฌ์ฉ์๊ฐ ์คํํ๋ ํ๊ฒฝ์ ๋ฐ๋ผ์ ๊ฐ์ด ๋ค๋ฅด๊ฒ ๋์ต๋๋ค. ์ ์ฒด ๋ฉ์๋๋ API ๋ฌธ์๋ฅผ ์ฐธ์กฐ๋ฐ๋๋๋ค. os.tmpdir() : ์์ ์ ์ฅ ํด๋์ ์์น os.endianness() : CPU์ endianness(BE ๋๋ LE) os.hostname() : ํธ์คํธ(์ปดํจํฐ) ์ด๋ฆ os.type() : ์ด์์ฒด์ ์ด๋ฆ os.platform() : ์ด์์ฒด์ ํ๋ซํผ os.arch() : ์ด์์ฒด์ ์ํคํ ์ฒ os.release() : ์ด์์ฒด์ ๋ฒ์ os.uptime() : ์ด์์ฒด์ ๊ฐ ์คํ๋ ์๊ฐ os.loadavg()..
[NODE] ๐ require ๋ชจ๋ (๋ชจ๋ ๊ด๋ฆฌํ๊ธฐ) ์ ๋ฆฌ
require() CommonJS ๋ฐฉ์์ผ๋ก ๋ชจ๋์ ๋ด๋ณด๋ผ ๋๋ ES6์ฒ๋ผ ๋ช ์์ ์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์๋๋ผ ํน์ ๋ณ์๋ ๊ทธ ๋ณ์์ ์์ฑ์ผ๋ก ๋ด๋ณด๋ผ ๊ฐ์ฒด๋ฅผ ์ธํ ํด์ค์ผ ํฉ๋๋ค. ํนํ, ์ ์ผ ํ๊ฐ๋ฆฌ๋ ๋ถ๋ถ์ด exports ๋ณ์์ module.exports ๋ณ์๋ฅผ ์ํฉ์ ๋ง๊ฒ ์ ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ ๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ค์ 2๊ฐ์ง ๊ท์น๋ง ๊ธฐ์ตํ๋ฉด ๋ฉ๋๋ค ์ฌ๋ฌ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๋ด๋ณด๋ผ ๊ฒฝ์ฐ, exports๋ณ์์ ์์ฑ์ผ๋ก ํ ๋นํฉ๋๋ค. ๋ฑ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ด๋ณด๋ผ ๊ฒฝ์ฐ, module.exports ๋ณ์ ์์ฒด์ ํ ๋นํฉ๋๋ค. ๋จ, ๊ฐ์ฒด๋ฅผ ๋ฌถ์ด์ ์ฌ๋ฌ๊ฐ ๊ฐ์ exportํ ์ ์์ต๋๋ค. ๋ ธ๋ ๋ณต์ ๊ฐ์ฒด ๋ด๋ณด๋ด๊ธฐ/๋ถ๋ฌ์ค๊ธฐ ๋ด๋ณด๋ด๊ธฐ ์๋๋ ๋ฏธ๊ตญ๊ณผ ์บ๋๋ค ๋ฌ๋ฌ๋ฅผ ์ํธ ๋ณํํด์ฃผ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ ์ฝ๋์ ๋๋ค. ์ด ํ์ผ์๋ 3๊ฐ์ ํจ์๊ฐ ์๋๋ฐ..
[NODE] ๐ ๋ ธ๋ ์ฝ์์ฐฝ์์ ์ ์ถ๋ ฅ IO ํ๋๋ฒ
๋ ธ๋ ์ฝ์ ์ ๋ ฅ ๋ฐ๊ธฐ ๋ณดํต ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฐ๋ฉด์ ์ ์ถ๋ ฅ์ ์น์์ ์ฒ๋ฆฌํ๋ค. ์นํ์ด์ง์์ form์ผ๋ก ์ ๋ ฅ ๋ฐ๊ณ , console.log๋ document.write() ๋ฑ ์ ํตํด์ ์ถ๋ ฅ์ ํ๋ค. ํ์ง๋ง ์ด๋ ์ด๋๊น์ง๋ ๋ธ๋ผ์ฐ์ ์์ ๋ฌถ์ธ ์๋ฐ์คํฌ๋ฆฝํธ๋ก์์ ๋์์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ก๋ถํฐ ๋ ๋ฆฝ๋ node.js์ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ค๋ฅธ C๋ JAVA๊ฐ์ด ์ฝ์์ฐฝ์์ ์ ์ถ๋ ฅ์ ์ ์ดํ ์ ์์๊น? ์ ๋ต์ ํ ์๋ ์์ง๋ง, C๊ฐ์ด ๊ฒฐ์ฝ ๊ฐ๋จํ๊ฒ ์ฒ๋ฆฌ๋ ์๋ ์๋ค. ์ฐจ๊ทผ์ฐจ๊ทผ ํ๋์ฉ ์์๋ณด์. ๋ ธ๋ ์ฝ์ ์ ๋ ฅ readline ๋ชจ๋ readline ๋ชจ๋์ JS ๋ด์ฅ ๋ชจ๋๋ก, ํ ๋ฒ์ ํ ์ค์ฉ Readable ์คํธ๋ฆผ (์ : process.stdin)์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ์ํ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ค. ์ฒ์ ์์ฑ ์ createInterface๋ฅผ..