[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..