์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
- ํ๋ก๊ทธ๋๋จธ์ค
- mongodb
- Python
- ๋๋ฆผ์ฝ๋ฉ
- ํ์ด์ฌ
- react
- HTML
- ์ฝ๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- ๊ตญ๋น์ง์
- ๋ฐฑ์ค
- heapq
- ํ ์ดํ๋ก์ ํธ
- node.js
- JS
- ์ฝ๋ฉํ ์คํธ
- error
- ํ๋ก์ ํธ
- ํฌ๋กค๋ง
- ๋ ธ๋ง๋์ฝ๋
- CSS
- ๋ชจ๊ฐ์ฝ
- ๊ฐ๋ฐ
- KDT
- fe
- ํ๋ก ํธ์๋
- ์ฝ๋ฉ์ ํ
- ๊ทธ๋ฆฌ๋
- javascript
- Til
- Today
- Total
๋ชฉ๋กServer (50)
๐ฑ → ๐ณ
Spring ํ๋ ์์ํฌ์ JPA(Java Persistense API)๋ฅผ ์ฌ์ฉํ ๋, ์ํฐํฐ๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ ๋ save()์ saveAndFlush() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค. ๐save() ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฅํ๋ ์์ ์ ์ง์ฐ์ํด ์ฆ, ํธ๋์ญ์ ์ด ์ปค๋ฐ๋๊ธฐ ์ ๊น์ง ์ํฐํฐ๋ ์์์ฑ ์ปจํ ์คํธ์๋ง ์กด์ฌํ๊ฒ ๋จ ์ด ๋๋ฌธ์ save() ๋ฉ์๋๋ฅผ ํธ์ถํด๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋์ง ์์ ์ ์๋ค. ๐saveAndFlush() ์ํฐํฐ๋ฅผ ์์์ฑ ์ปจํ ์คํธ์ ์ ์ฅํ๊ณ , ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ๋ก ์ ์ฅํ๋ ์์ ์ํ ์ฆ, saveAndFlush() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ํฐํฐ๊ฐ ๋ฐ์๋จ ์ด ๋๋ฌธ์ saveAndFlush() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ฐ์๋๋ ์์ ์ ๋..
IoC(Inversion of Control)๋? IoC๋ Inversion of Control์ ์ค์ ๋ง๋ก, ์ ์ด์ ์ญ์ ์ด๋ผ๋ ๋ป์ด๋ค. ํ๋ก๊ทธ๋จ์ ํ๋ฆ์ ๊ฐ๋ฐ์๊ฐ ์ ์ดํ์ง ์๊ณ , ํ๋ก๊ทธ๋จ์ด๋ ํ๋ ์์ค์ด ์ง์ ์ ์ด๋ฅผ ํ๋ค๋ ๋ง์ด๋ค. ์ปดํฌ๋ํธ์ ์์กด ๊ด๊ณ ๊ฒฐ์ (Component dependency resolution), ๊ฐ์ฒด์ ์๋ช ์ฃผ๊ธฐ(life cycle)์ ๊ฐ์ ์ผ์ ๋์ ์ํํด์ค๋ค. ํํ ์คํ๋ง ํ๋ ์์ค์ ์ด์ฉํด์ ๊ฐ๋ฐํ ๋ ์ฌ๋ฌ๊ฐ์ง Bean์ ์ฌ์ฉ ํ ๊ฒ์ด๋ค. ์ฌ์ฉ์์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ์์ฒญ์ ์๋ง์ Bean์ ์์ฑํด์ ํ์ํ ์ผ์ ํ๋๋ก ์ํจ๋ค. ํด๋น Bean์ด ํ ์ผ์ ๋ง์น๋ฉด Bean์ ์ญ์ ํด์ค๋ค. ํ์ง๋ง ์ด๋ฐ ๊ฐ์ฒด์ ์์ฑ๊ณผ ์๋ฉธ์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง ์ ํ์๊ฐ ์๋ค. ํ๋ก๊ทธ๋๋จธ๊ฐ ์ง์ ์ ์ด ํ ..
private final ProductService productservice ๋ฌธ๋ ์์กด์ฑ ์ฃผ์ ์ ํ๋ค๊ฐ final์ ์จ์ฃผ๋ ์ด์ ๊ฐ ๊ถ๊ธํด์ก๋ค . ์์กด์ฑ ์ฃผ์ (Dependency Injection)์์ final ํค์๋๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ค์๊ณผ ๊ฐ๋ค. ๋ถ๋ณ์ฑ(Immutability) final ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํด๋น ๋ณ์๊ฐ ํ ๋ฒ ์ด๊ธฐํ๋ ์ดํ์๋ ๊ฐ์ ๋ณ๊ฒฝํ ์ ์๊ฒ ๋๋ค. ์ด๋ ๊ฐ์ฒด์ ์ํ๋ฅผ ๋ถ๋ณํ๊ฒ ์ ์งํ๊ณ , ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ(Immutability)์ ๋ณด์ฅํ๋ ๋ฐ ๋์์ด ๋๋ค. ์์กด์ฑ ์ฃผ์ ์์๋ ์ฃผ์ ๋ ๊ฐ์ฒด์ ์ํ๊ฐ ๋ณ๊ฒฝ๋์ง ์๋๋ก ํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์ final ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ์ ๋ณด์ฅํ ์ ์๋ค. ์์ ์ฑ(Safety) final ํค์๋๋ฅผ ์ฌ์ฉํ๋ฉด ์ปดํ์ผ๋ฌ๊ฐ ๋ณ์์ ์ด๊ธฐํ ์ฌ๋ถ๋ฅผ..
์ด์ ๋ธ๋ฆฌ : ๊ธฐ๊ณ ๋ช ๋ น์ด์ ์ผ์ ์ฉ์ด๋ฅผ ์ผ๋์ผ๋ก ๋งค์นญํ๋ ๊ธฐ๊ณ์ด์ ๋๋ชจ๋์ ๋งค์นญ ์ฝ๋ํ CPU ๋ง๋ค ์คํํ ์ ์๋ ๊ธฐ๊ณ์ด๊ฐ ๋ฌ๋๊ธฐ ๋๋ฌธ์ ์ด์ ๋ธ๋ฆฌ์ด๋ ๋ค๋ฅด๊ฒ ๋ง๋ค์ด ์ฃผ์์ ์ด์ ๋ธ๋ฌ : ์ด์ ๋ธ๋ฆฌ์ด๋ฅผ ๊ธฐ๊ณ์ด๋ก ๋ฒ์ญํด ์ฃผ๋ ์ํํธ์จ์ด C์ธ์ด์ ๋ฑ์ฅ ์ด์ ๋ธ๋ฆฌ์ด๋ก ๊ฐ๋ฐ์ ํ ๋๋ ๊ฐ์ ์์ ์ ์ํํ๋ ์์ค ํ์ผ์ ๊ฐ ๊ธฐ๊ณ์ ์ข ๋ฅ๋งํผ ๋ง๋ค์ด์ผ ํ์ง๋ง C์ธ์ด์ ๋ฑ์ฅ์ผ๋ก ์์คํ์ผ์ ๋จ ํ๋๋ง ๋ง๋ค์ด๋ ๋๋ ์๋๊ฐ ๋์์ ํ์ง๋ง, ์ด์์ฒด์ ๋ค์ ๊ฐ ํน์ฑ๋ณ๋ก ์์ค์ฝ๋๋ฅผ ์์ ํด์ผํ๋ ์ํฉ ๋ฐ์ Java์ ๋ฑ์ฅ Java๋ ๊ฐ์ฒด์งํฅ ์ธ์ด (Class) ๋จ ํ๋์ ์์ค ํ์ผ๋ก ๋ชจ๋ ๊ธฐ์ข ์ ์ปดํจํฐ์์ ์คํ ๊ฐ๋ฅ ๐ก ์ปดํ์ผ์ด๋? ์ฌ๋์ด ์ดํดํ๋ ์ธ์ด๋ฅผ ์ปดํจํฐ๊ฐ ์ดํดํ ์ ์๋ ์ธ์ด๋ก ๋ฐ๊ฟ์ฃผ๋ ๊ณผ์ ์ฃผ์ด์ง ์ธ์ด๋ก ์์ฑ๋ ์ปดํจํฐ ํ๋ก๊ทธ..
๐ passport : ๋ก๊ทธ์ธ ๊ธฐ๋ฅ์ ๋ค๋ฐฉ๋ฉด์ผ๋ก ๋์์ฃผ๋ ๋ชจ๋ google, facebook, github ๋ฑ ์์ ๋ก๊ทธ์ธ ๊ตฌํ์ ์ํ ๊ธฐ๋ฅ ์ ๊ณต โ passport ์ค์น ์์ ๋ก๊ทธ์ธ์ด ์๋ local ๋ฐฉ์ ๊ตฌํ์ ์ํด passport-local๋ ๊ฐ์ด ์ค์น npm i passport npm i passport-local ์๋ฒ ์ฝ๋์ ๋ชจ๋ ์ถ๊ฐ(passport: ์ธ์ ์ ์ฌ์ฉ) const passport = require('passport'); const LocalStrategy = require('passport-local').Strategy; // Session app.use( session({ secret: 'bay', resave: false, saveUninitialized: true, cookie..
๐ 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 ์ ์์ฉ ํจ์ ์์ฑ ํด๋ผ์ฐ๋ ..