์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- ํ์ด์ฌ
- heapq
- react
- ํ ์ดํ๋ก์ ํธ
- Python
- ๋ ธ๋ง๋์ฝ๋
- ๊ทธ๋ฆฌ๋
- fe
- javascript
- KDT
- ํ๋ก๊ทธ๋๋จธ์ค
- ํฌ๋กค๋ง
- ๊ตญ๋น์ง์
- ์ฝ๋ฉ
- Til
- ํ๋ก ํธ์๋
- mongodb
- node.js
- ์ฝ๋ฉ์ ํ
- ๋ชจ๊ฐ์ฝ
- error
- ๋๋ฆผ์ฝ๋ฉ
- ๊ฐ๋ฐ
- JS
- ๋ฐฑ์ค
- CSS
- ํ๋ก์ ํธ
- HTML
- ์๊ณ ๋ฆฌ์ฆ
- ์ฝ๋ฉํ ์คํธ
- Today
- Total
๋ชฉ๋ก๋ถ๋ฅ ์ ์ฒด๋ณด๊ธฐ (141)
๐ฑ โ ๐ณ

๐ session : ์๋ฒ์ ์ฟ ํค ๐ HTTP Session ์ด๋? ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ ์๋ฒ์ ์ ์ฅ๋๋ ์ฟ ํค ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์ ์ํ ์์ ๋ถํฐ ์ฐ๊ฒฐ์ ๋๋ด๋ ์์ ์ ํ๋์ ์ํ๋ก ๋ณด๊ณ ์ ์งํ๋ ๊ธฐ๋ฅ์ ํจ -> ๋ก๊ทธ์ธ ์ ์ง ์๋ฒ๋ ๊ฐ ์ฌ์ฉ์์ ๋ํ ์ธ์ ์ ๋ฐํํ๊ณ ์๋ฒ๋ก ์ ๊ทผ(request)ํ ์ฌ์ฉ์๋ฅผ ์๋ณํ๋ ๋๊ตฌ๋ก ์ฌ์ฉ ์ฟ ํค์ ๋ฌ๋ฆฌ ์ ์ฅ ๋ฐ์ดํฐ์ ์ ํ ์์ ๋ง๋ฃ ๊ธฐ๊ฐ ์ค์ ์ด ๊ฐ๋ฅํ์ง๋ง, ๋ธ๋ผ์ฐ์ ๊ฐ ์ข ๋ฃ๋๋ฉด ๋ฐ๋ก ์ญ์ ๐HTTP Session์ ๋์ ๋ฐฉ์ ์ฌ์ฉ์๊ฐ ์ต์ด๋ก ์๋ฒ ์ฐ๊ฒฐ์ ํ๋ฉด ํ๋์ session-id(์์์ ๊ธด ๋ฌธ์์ด)๊ฐ ๋ฐํ ๋ฐํ ๋ session-id๋ ์๋ฒ์ ๋ธ๋ผ์ฐ์ ์ ๋ฉ๋ชจ๋ฆฌ์ ์ฟ ํค ํํ๋ก ์ ์ฅ๋จ ์๋ฒ๋ ์ฌ์ฉ์๊ฐ ์๋ฒ์ ์ ๊ทผ ์, ์ฟ ํค์ ์ ์ฅ๋ session-id๋ฅผ ํตํด ์ฌ์ฉ์๋ฅผ ๊ตฌ๋ถํ๊ณ ..

๐ Cookie : HTTP ์ฟ ํค๋ ์๋ฒ๊ฐ ์ฌ์ฉ์์ ์น ๋ธ๋ผ์ฐ์ ์ ์ ์กํ์ฌ ์ ์ฅํ๋ ์์ ๋ฐ์ดํฐ ์ ์ฅ์ JS์ ๊ฐ์ฒด์ฒ๋ผ key ๊ฐ๊ณผ, data๊ฐ ๋ค์ด ์์ ๋ธ๋ผ์ฐ์ ๋ ์ฟ ํค๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํด ๋์๋ค๊ฐ, ๋์ผํ ์๋ฒ์ ๋ค์ ์์ฒญ์ ๋ณด๋ด๊ฒ ๋ ๋ ์ฟ ํค์ ์ ์ฅ๋ ์ ๋ณด๋ฅผ ํจ๊ป ์ ์ก ์๋ฒ์์๋ ์ฟ ํค๋ฅผ ํตํด ์์ฒญ์ด ์ด๋ค ๋ธ๋ผ์ฐ์ ์ ๋ค์ด์๋์ง(ํน์ ์์ฒญ์ด ๋์ผํ ๋ธ๋ผ์ฐ์ ์์ ๋ค์ด์๋์ง) ๋ฑ์ ํ์ ํ ์ ์์ ์๋ฒ์ ์ ์ฅํด์ผ ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌ -> ๋ก๊ทธ์ธ ์ ๋ณด, ์ฅ๋ฐ๊ตฌ๋, ํ์ ํ๋ฃจ ๋์ ์ ๋ณด๊ธฐ ๋ฑ ์ค์ํ ์ ๋ณด(์ด๋ฆ, ๋ฐ์ดํฐ, ๋ง๋ฃ์ผ, ๊ฒฝ๋ก ๋ฑ)๋ ๋ก์ปฌ์ ๋จ๊ฒ ๋๋ฏ๋ก ์ ๋ ์ ์ฅํด์๋ ์๋จ โ Cookie์ ๋์ ๋ฐฉ์ โ ํ๋ก ํธ์์ ์ฟ ํค ์ฌ์ฉํ๊ธฐ (์ฌ์ฉ X, ํธ๋ฒ) document.cookie๋ก ์ฌ์ฉ expires๊ฐ๊ณผ ๋ธ..

๐ MongoDB(Humongous DB) ์ฅ์ data๋ฅผ ์ต์ํ JSON ํํ๋ก ์ฒ๋ฆฌ -> ๋น ๋ฅด๊ฒ JSON ์ ํ ๊ฐ๋ฅ DB ๊ตฌ์กฐ์ ๋ณ๊ฒฝ ์ฉ์ด ์ ์ฝ์ด ์์ -> ๋์ ์ํ ํ์ฅ์ฑ, ์คํค๋ง ์ค๊ณ์ ์ ์ฐ์ฑ ๋จ์ ํ์ค์ด ์์(= ์ ์ฝ์ด ์์) ๋ฐ์ดํฐ๊ฐ ๊ตฌ์กฐํ ๋์ด์์ง ์์ ๋จ์ํ ๊ตฌ์กฐ์ ์ฟผ๋ฆฌ๋ง ์ฌ์ฉ ๊ฐ๋ฅ ๋ฐ์ดํฐ์ ์ผ๊ด์ฑ ๋ฐ ์์ ์ฑ์ DB๊ฐ ์๋ APP ๋ ๋ฒจ์์ ๊ด๋ฆฌํด์ค์ผ ํจ -> ๋ฒ๊ทธ ๋ฐ์ ํ๋ฅ ๋์ โ MongoDB์ ๊ตฌ์กฐ โ MongoDB ํจํค์ง ์ค์น mongoDB์ฉ js ํ์ผ ์์ฑ routes/mongo.js ํ์ผ ์์ฑ npm i mongodb ๐ mongo.js ํ์ผ ์คํ node routes/mongo.js ์๋ฌด๋ฐ ๋ฉ์์ง๊ฐ ์๋จ๋ฉด ์ ์์ ์ผ๋ก ์ ์์ด ๋ ๊ฒ ๐ MongoDB ์ ์์ฉ ํจ์ ์์ฑ ํด๋ผ์ฐ๋ ..

๐ DBMS : ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ด๋ฆฌํ๊ณ ์ด์ํ๋ SW ๋ค์ํ ํํ, ์๋น์ค๊ฐ ์กด์ฌ โ SQL (Structured Query Language) ๊ตฌ์กฐ๊ฐ ์๋ ์ง๋ฌธ์ฉ ์ธ์ด SELECT, INSERT, UPDATE, DELETE ๊ฐ์ ์ธ์ด๋ฅผ ํตํด ๋ฐ์ดํฐ ๋ฒ ์ด์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃจ๋ ์ธ์ด ๋ค์์ DBMS๊ฐ SQL ๋ฐฉ์์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ SQL ์ ๋ฐฐ์ฐ๋ฉด, ๋ง์ DBMS๋ฅผ ๋น๊ต์ ๋น ๋ฅด๊ฒ ์ต๋์ด ๊ฐ๋ฅ MySQL, SQLite, ORACLE ๋ฑ์ด SQL ๊ตฌ๋ฌธ์ ์ฌ์ฉ ๐ DB์ ์ข ๋ฅ ๊ด๊ณํ(SQL) vs ๋น๊ด๊ณํ(NoSQL) โ ๊ด๊ณํ, Relational DBMS(RDBMS) : SQL์ ์ฌ์ฉํ๋ DB ํค์ ๊ฐ์ ๊ด๊ณ๋ฅผ ํ ์ด๋ธํ ์ํจ ์์น์ ํ ๋๋ก DB๋ฅผ ๊ตฌ์ฑ ์ฆ, ํ ์ด๋ธ๋ก ๊ตฌ์ฑ๋จ ๋จผ์ ํ ์ด๋ธ์ด ๊ตฌ์ฑ๋๊ณ ํ ์ด๋ธ์ ๊ตฌ์กฐ์ ..

front์ form์ผ๋ก back์๊ฒ ๋ฐ์ดํฐ ๋ณด๋ด๊ธฐ form XMLHttpRequest Jquery Fetch() ๐ users.ejs์ form ์ถ๊ฐ ๐form action : ๋ณด๋ด๊ณ ์ ํ๋ ์ฃผ์ ๊ฐ method: ๋ณด๋ด๋ method ์ค์ (get, post ๋ง ๊ฐ๋ฅ) input์ name ์์ฑ์ ์๋ฒ์์ ๋ฐ์ ๋ ํ๋ ๊ฐ์ด ๋จ ๋ฒํผ type์ผ๋ก submit์ ํ๋ฉด ํด๋น ํผ์ ๋ด์ฉ์ ์ง์ ํ ๋ฐฉ์ + ์ฃผ์๋ก ์ ๋ฌ ์์ด๋ ์ด๋ฆ ์ด๋ฉ์ผ Submit โ body-parser ๋ชจ๋ ์ฌ์ฉ : form์์ ์ ์ก ๋, ์ ๋ณด๋ฅผ req.body์ ๋ด์์ obj๋ก ์ ๋ฌํด์ฃผ๋ ์ญํ body-parser๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด ์๋์ ๊ฐ์ ์ฝ๋๋ก ๋ฐ์ดํฐ๋ฅผ body์ ๋ฃ์ ๋ค์, ์ธ์ฝ๋ฉ์ฒ๋ฆฌ๊น์ง ํด์ค์ผํจ (body-parser๋ ์๋์ผ..

์๋ฒ err๊ฐ ๋ฐ์ํ๋ฉด err๋ฅผ ๋ฐ์์ํจ ๋ค์ err ๋ฉ์์ง์ status ์ฝ๋๋ฅผ ์ ๋ฌํด ์ค์ผํจ ๐error ๋์ง๊ธฐ router.get('/:id', (req, res) => { const userData = USER.find((user) => user.id === req.params.id); if (userData) { res.send(userData); } else { const err = new Error('ID not found'); err.statusCode = 404; throw err; } }); ์ด๋ฐ ๋ฐฉ์์ผ๋ก err๊ฐ ๋ฐ์ํ ์ง์ ์์ new Error๋ฅผ ํตํด err ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ throw๋ก ์ ๋ฌ ์ด๋ฐ ์์ผ๋ก err๊ฐ ๋ฐ์ํ๋๋ฐ ์ด๋ฐ ํ์ด์ง๋ ๊ฐ๊ธ์ ํผํ๋ ํธ์ด ์ข์ผ๋ฏ๋ก app.js์์ ..

๐ view engine โ EJS ๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ view engine HTML ๋ฌธ๋ฒ ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ X โ pug HTML ๋ฌธ๋ฒ์ ๋จ์ํํ์ฌ ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ O โ nunjucks HTML ๋ฌธ๋ฒ์ ๊ทธ๋๋ก ์ฌ์ฉ ๋ ์ด์์ ๊ธฐ๋ฅ O โ๏ธ EJS ์ฌ์ฉํ๊ธฐ npm i -d ejs express์ ์ด๋ค view engine ์ฌ์ฉํ ์ง ์๋ฆฌ๊ธฐ (์๋ฒ์ฝ๋) app.set('view engine', 'ejs'); ํด๋ ๊ฐ์ฅ ์ธ๋ถ์ views ํด๋ ๋ง๋ค๊ณ ๋ด๋ถ์ index.ejx ํ์ผ ๋ง๋ค๊ธฐ localhost:port๋ฒํธ/users ๊ธฐ๋ณธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด index.js ํ์ผ ๋์ฐ๊ธฐ userRouter.get('/', (req, res) => { res.render('index'); }); ๐ ejs ๋์ ์น ์..

๐ file-system : node์ ๋ชจ๋์ด๋ผ commonJS ๋ฐฉ์์ผ๋ก ๋ถ๋ฌ ์ฌ ์ ์์ const fs = require('fs'); โ readFile : ํ์ผ์ ์ฝ์ ๋ ์ฌ์ฉํ๋ ๋ฉ์๋ ํ์ผ์ ์ฝ๋ ๊ฒ๋ ์๊ฐ์ด ํ์ํ ์์ ์ด๋ฏ๋ก -> callback ์ฌ์ฉ fs.readFile('ํ์ผ์์น','์ ๋์ฝ๋ํฌ๋งท',callback(err, data) {}) err : ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ์๋์์ ๋, error ์ฝ๋ ๋ฐํ data: ํ์ผ ์ฝ๊ธฐ๊ฐ ์ ๋์์ ๋, ์ฝ์ data ๋ฐํ const fs = require('fs'); fs.readFile('readme.txt', 'utf-8', (err, data) => { if (err) { console.log(err); } else { console.log(dat..