[BE] Passport.js๋ฅผ ํ์ฉํ ๊ฐ๋จํ ํ์์ธ์ฆ ๊ตฌํ
1. ํ์ํ ๋ชจ๋ ์ค์น npm install express passport passport-local express-session mongoose passport, passport-local : ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ ์ธ์ ๊ด๋ฆฌ๋ฅผ ๋์์ฃผ๋ ๋ชจ๋ express-session : ์ธ์ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ชจ๋ 2. app.js ๊ธฐ๋ณธ ์ธํ const express = require("express"); const app = express(); const passport = require("passport"); var Strategy = require("passport-local"); const session = require("express-session"); const mongoose = require("mongoose")..
[CS] AJAX
1. AJAX๋? Asynchronous Javascript And XML ๋น๋๊ธฐ์ ์ผ๋ก JS๋ฅผ ์ฌ์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์, ๋์ ์ผ๋ก DOM์ ๊ฐฑ์ ๋ฐ ์กฐ์ํ๋ ์น ๊ฐ๋ฐ ๊ธฐ๋ฒ 2. ์ด๋ป๊ฒ ๋์ํ๋๊ฐ? ์ฌ์ฉ์๊ฐ AJAX๊ฐ ์ ์ฉ๋ UI์ ์ํธ์์ฉํ๋ฉด, ์๋ฒ์ AJAX ์์ฒญ์ ๋ณด๋ด๊ฒ ๋๋ค. ์๋ฒ๋ DB์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ JS ํ์ผ์ ์ ์๋์ด ์๋ ๋๋ก HTML/CSS์ ๋ฐ์ดํฐ๋ฅผ ์ตํฉํ์ฌ ๋ง๋ DOM ๊ฐ์ฒด๋ฅผ UI์ ์ ๋ฐ์ดํธ ์ํจ๋ค. ๋น๋๊ธฐ๋ก ์ด๋ฃจ์ด์ง๋ฉฐ, ๊ธฐ์กด์ ํ์ด์ง๋ฅผ ์ ๋ถ ๋ก๋ฉํ๋ ๋ฐฉ์์ด ์๋ ์ผ๋ถ๋ง ์ ๋ฐ์ดํธ ํ๋ ๋ฐฉ์์ด๋ค. 3. ์ด๋ป๊ฒ ์ฌ์ฉํ๋๊ฐ? 3-1. XMLHttpRequest ์ผ๋ฐ์ ์ผ๋ก XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ์ธ์คํด์ค๋ฅผ ๋ง๋ค์ด ์ธ์คํด์ค์ open(), send() ๋ฑ์ ๋ฉ์๋๋ฅผ ..
[BE] REST API
1. REST (Representational State Transfer) ์ด๋ค ์์์ CRUD ์ฐ์ฐ์ ์ํํ๊ธฐ ์ํด URI๋ก ์์ฒญ์ ๋ณด๋ด๋ ๊ฒ HTTP URI๋ฅผ ํตํด ์์์ ๋ช ์ํ๊ณ , HTTP Method๋ฅผ ํตํด ํด๋น ์์์ ๋ํ CRUD Operation์ ์ ์ฉํ๋ ๊ฒ ๊ฐ ์์ฒญ์ด ์ด๋ค ๋์์ด๋ ์ ๋ณด๋ฅผ ์ํ ๊ฒ์ธ์ง๋ฅผ ๊ทธ ์์ฒญ์ ๋ชจ์ต ์์ฒด๋ก ์ถ๋ก ๊ฐ๋ฅ 1-1. ๊ตฌ์ฑ์์ 1) ์์(Resource) : HTTP URI 2) ์์์ ๋ํ ํ์(Verb) : HTTP Method (GET, POST, PUT(PATCH), DELETE) 3) ์์์ ๋ํ ํ์์ ๋ด์ฉ(Representations) : HTTP Message Payload (JSON, XML, RSS ๋ฑ) 1-2. REST๊ฐ ์ ํ์ํ๊ฐ? ๊ฐ ์..
[BE] ๋ผ์ฐํ (Routing)
1. ํจํท(Packet) ๋คํธ์ํฌ๋ฅผ ํตํด ์ ์ก๋๋ ๋ฐ์ดํฐ์ ์์ ์กฐ๊ฐ ์ค์ ํต์ ์์ ๋ฐ์ดํฐ๋ ํจํท ๋จ์๋ก ์ชผ๊ฐ์ ธ์ ์ ์ก๋๋ค. ํฐ ๋ฐ์ดํฐ๋ฅผ ํ๋์ ํ์ ์ผ๋ก ์ ์กํ๊ฒ ๋๋ฉด ์๊ฐ์ด ์ค๋๊ฑธ๋ฆฌ๊ณ , ์ค๊ฐ์ ์ ๋ณด๊ฐ ์์ค๋์์ ๋ ์ฌ์ ์กํ๊ธฐ์๋ ๋นํจ์จ์ ์ด๊ธฐ ๋๋ฌธ์ด๊ธฐ ๋๋ฌธ์ด๋ค. 2. ๋ผ์ฐํ (Routing) ๊ฒฝ๋ก ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ์ ๋คํธ์ํฌ์์ ๋ค๋ฅธ ๋คํธ์ํฌ๋ก ์ต์ ์ ๊ฒฝ๋ก๋ฅผ ํตํด ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ธฐ๋ฒ ํจํท์ ์ ์กํ๊ธฐ ์ํด ์ก์ ์์ธก์์ ๋ชฉ์ ์ง๊น์ง์ ๊ฒฝ๋ก๋ฅผ ์ ํ๊ณ , ์ ํด์ง ๊ฒฝ๋ก๋ฅผ ๋ฐ๋ผ ํจํท์ ์ ๋ฌํ๋ ๊ณผ์ IP๊ฐ ๋คํธ์ํฌ ์ฅ์น๊ฐ ๊ฐ๋ ๊ณ ์ ์ ์ฃผ์๋ผ๊ณ ํ๋ฉด, ๋ผ์ฐํ ์ ๊ทธ ์ฃผ์๋ฅผ ์ฐพ์๊ฐ๋ ๊ณผ์ ๋ผ์ฐํ ์๋ ๋ชฉ์ ์ง ์ฃผ์, ํ ํด๋ก์ง, ํธ๋ํฝ ๋ถํ, ๋งํฌ ๋น์ฉ(๋ผ์ฐํ ๋งคํธ๋ฆญ) ๋ฑ์ ์ ๋ณด๊ฐ ์ฌ์ฉ๋๋ค. 2-1. ๋ผ์ฐํฐ(Router) ..
[CS] ์๋งจํฑ ๋งํฌ์
1. ์๋งจํฑ ๋งํฌ์ ์๋งจํฑ(Semantic)์ด๋ '์๋ฏธ๋ก ์ ์ธ'์ ๋ป์ ๊ฐ์ง๋ฉฐ, ๋งํฌ์ (Markup)์ด๋ HTML ํ๊ทธ๋ก ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค. ๋ฐ๋ผ์, ์๋งจํฑ ๋งํฌ์ ์ด๋ ์๋ฏธ๋ฅผ ์ ์ ๋ฌํ๋๋ก ๋ฌธ์๋ฅผ ์์ฑํ๋ ๊ฒ์ ๋งํ๋ค. 2. ์์ฑ ๋ฐฉ๋ฒ ์๋งจํฑ ๋งํฌ์ ์ ํ๊ธฐ ์ํด์ ๊ฐ ํ๊ทธ๋ฅผ ์ฉ๋์ ๋ง๊ฒ ์ฌ์ฉํ์ฌ์ผ ํ๋ค. ์ฆ, ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ ๋งํ๋ค. ํค๋/ํธํฐ์ ์ ์ฌ์ฉ ๋ฉ์ธ ์ปจํ ์ธ ์ ๊ณผ ์ฌ์ฉ ๋ ๋ฆฝ์ ์ธ ์ปจํ ์ธ ์ ์ฌ์ฉ ์ต์์ ์ ๋ชฉ์ผ๋ก ์ฌ์ฉ ์์๊ฐ ์๋ ๋ชฉ๋ก์ผ๋ก ๊ณผ ์ฌ์ฉ ๋ด๋น๊ฒ์ด์ ์ ์ฌ์ฉ ์ด๋ฐ ์์ผ๋ก ํ๊ทธ๊ฐ ๊ฐ์ง๊ณ ์๋ ์๋ฏธ์ ๋ง๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์ด๋ฐ ์ ์ด์ธ์๋ CSS ์คํ์ผ์ ๋ช ์ํ๋ ํ๊ทธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ ๋ํ ์๋งจํฑ ๋งํฌ์ ์ ํ ์ข ๋ฅ์ด๋ค. ์ฆ, ํ๊ทธ๊ฐ ๊ฐ์ง๋ ์๋ฏธ ์์ฒด๊ฐ ์คํ์ผ์ด๋ผ๋ฉด ์ด๋ ๋งํฌ์ ์..
[CS] script, script async, script defer
HTML ํ์ฑ์ด ์ค๋จ๋๊ณ ์ฆ์ ์คํฌ๋ฆฝํธ๊ฐ ๋ก๋๋๋ฉฐ, ๋ก๋๋ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋๊ณ ํ์ฑ์ด ์ฌ๊ฐ๋๋ค. HTML ํ์ฑ๊ณผ ๋ณ๋ ฌ์ ์ผ๋ก ๋ก๋๊ฐ ๋๋๋ฐ, ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ๋๋ ํ์ฑ์ด ์ค๋จ๋๋ค. ๊ตฌ๊ธ ์ ๋๋ฆฌํฑ์ค์ ๊ฐ์ด ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๊ฐ ์์กดํ์ง ์๋ ๋ ์์ ์ธ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ ๋ ์ ํฉํ๋ค. HTML ํ์ฑ๊ณผ ๋ณ๋ ฌ์ ์ผ๋ก ๋ก๋๊ฐ ๋๋๋ฐ, ํ์ฑ์ด ๋๋๊ณ ์คํฌ๋ฆฝํธ๋ฅผ ๋ก๋ํ๋ค. ๋ณดํต ํ๊ทธ ์ง์ ์ ๋ฅผ ์ฝ์ ํ๋ ๊ฒ๊ณผ ๋์์ ๊ฐ์ง๋ง, ๋ธ๋ผ์ฐ์ ํธํ์ฑ์์ ๋ค๋ฅผ ์ ์์ผ๋ฏ๋ก ๊ทธ๋ฅ ํ๊ทธ ์ง์ ์ ์ฝ์ ํ๋ ๊ฒ์ด ์ข๋ค. โ ์ฃผ์ํ ์ ์, async์ defer์ ๊ฒฝ์ฐ src ์์ฑ์ด ์์ผ๋ฉด ์ ์ฉ๋์ง ์๋๋ค. ๋ณด๋ค ์์ธํ ๋ด์ฉ์ ์ฌ๊ธฐ์์๋ ํ์ธํ ์ ์๋ค. ์ฐธ๊ณ https://github.com/baeharam/Must-Know-About-Front..
[CS] local storage vs session storage vs cookie
local storage, session storage ๊ทธ๋ฆฌ๊ณ cookie๋ ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์์ key/value ์์ ์ ์ฅํ ์ ์๋ ๋ฉ์ปค๋์ฆ์ผ๋ก, value๋ ๋ฐ๋์ ๋ฌธ์์ด์ด์ด์ผ ํ๋ค. ๋ํ, ๋ชจ๋ ๋์ผ ์ถ์ฒ ์ ์ฑ (SOP)์ ๋ฐ๋ฅด๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ๋๋ฉ์ธ์์ ์ ๊ทผํ ์ ์๋ค. ๋์ผ ์ถ์ฒ ์ ์ฑ (Same-Origin Policy) ์ด๋ ํ ๋ฌธ์๋ ์คํฌ๋ฆฝํธ๊ฐ ๋ค๋ฅธ ํ๋กํ ์ฝ/ํฌํธ/ํธ์คํธ์ ์๋ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ์ ํํ๋ ์ ์ฑ ์๋ฅผ ๋ค์ด, ๋ค์๊ณผ ๊ฐ์ ์ฌ์ดํธ์์ ๋ฆฌ์์ค๋ฅผ ๋ค๋ฅธ ๊ณณ์ผ๋ก ์์ฒญํ๋ค๊ณ ํ์. http://website.com/ex/ex.html ๊ทธ๋ฌ๋ฉด ๋ฆฌ์์ค ์์ฒญ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ๋ค. 1๏ธโฃ http://website.com/ex/ ๐ ์ฑ๊ณต 2๏ธโฃ http://website.com/ex1/ ๐ ์ฑ..
[CS] data- ์์ฑ
DOM์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ ์์ฑ data- ๋ค์์ ์ค๋ ๊ฐ์ด ๋ฐ์ดํฐ๊ฐ ๋๋ค. ์ฌ์ฉํ๊ณ ์ ํ๋ ์ฉ๋์ ์ ํฉํ ์์ฑ์ด๋ ์์๊ฐ ์์ ๋ ์ฌ์ฉ ํด๋น ์นํ์ด์ง๊ฐ ๋ ์์ ์ผ๋ก ์ฌ์ฉํ๋ ๊ฐ ์ฆ, ์นํ์ด์ง์ ๋ ๋ฆฝ์ ์ธ ์ํํธ์จ์ด๊ฐ ์ด ์์ฑ์ ์ฌ์ฉํด์๋ ์๋๋ค. ์๋ฅผ ๋ค์ด, ์์ ์ฌ์ดํธ์์ ์จ๋ฒ ํธ๋์ ์์ ์ ๋ฆฌ์คํธ ํ์์ผ๋ก ๋ํ๋ด๋๋ฐ ๊ทธ๊ฑธ ์๊ฐ ์์ผ๋ก ์ ๋ ฌํ๊ธฐ ์ํด์ data- ์์ฑ์ผ๋ก ์์ ์๊ฐ์ ์ฝ์ ํ๋ค๊ณ ํ์. ๋นจ๊ฐ๋ง ... ๋ง์ฝ ์ด ์์ ์ฌ์ดํธ์ ์ ํ ์๊ด์ด ์๋ ์ธ๋ถ์์ ์์ ์๊ฐ์ ์์๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ค๋ฉด ๋ชฉ์ ์ ๋ถํฉํ์ง ์๋ ๊ฒ์ด๋ค. ๋ฐ๋ผ์, data- ์์ฑ์ ํด๋น ์ฌ์ดํธ๋ง์ ์์ฒด ์คํฌ๋ฆฝํธ๋ฅผ ์ํ ์์ฑ์ด๋ผ๊ณ ํ ์ ์๋ค. ์ข ๋ ์์ธํ ์ฌ์ฉ ๋ฐฉ๋ฒ์ ์ฌ๊ธฐ์ ์ ๋ฆฌํด๋์๋ค. ์ฐธ๊ณ http..