[week_08] React ๊ธฐ์ดˆ โ… (2) JSX์™€ ์ปดํฌ๋„ŒํŠธ

    1. JSX ํ•จ์ˆ˜ ํ˜ธ์ถœ๊ณผ ๊ฐ์ฒด ์ƒ์„ฑ์„ ์œ„ํ•œ ๋ฌธ๋ฒ•์  ํŽธ์˜๋ฅผ ์ œ๊ณตํ•˜๋Š” JavaScript์˜ ํ™•์žฅ HTML๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ƒ๊ฒผ์œผ๋‚˜ JavaScript์ด๊ณ , HTML๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด ์žˆ๋‹ค. JSX๋Š” Babel์— ์˜ํ•ด์„œ Transcompile ๋œ๋‹ค. 1-1. JSX์˜ ์žฅ์  1) ๊ฐœ๋ฐœ์ž ํŽธ์˜์„ฑ ํ–ฅ์ƒ 2) ํ˜‘์—…์— ์šฉ์ด / ์ƒ์‚ฐ์„ฑ ํ–ฅ์ƒ 3) ๋ฌธ๋ฒ• ์˜ค๋ฅ˜์™€ ์ฝ”๋“œ๋Ÿ‰ ๊ฐ์†Œ 1-2. JSX์˜ ํŠน์ง• (HTML๊ณผ ์ฐจ์ด์ ) 1) HTML ํƒœ๊ทธ ๋‚ด์— JavaScript ์—ฐ์‚ฐ const App = () => { const a = 3; const b = 6; return {a} + {b} = {a+b} } 2) class โžก className ( {name}๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”. ) 3) ์Šคํƒ€์ผ์€ object๋กœ ์ž‘์„ฑ ( {name}๋‹˜ ์•ˆ๋…•ํ•˜์„ธ์š”. )..

    [week_08] React ๊ธฐ์ดˆ โ… (1) OT

    1. SPA (Single Page Application) ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋ฒ„๋กœ ์ตœ์ดˆ ์ ‘์† ์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ HTML์„ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค. ๊ทธ ํ›„ ํŽ˜์ด์ง€์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•  ๋•Œ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์„ JSON์œผ๋กœ ์ „๋‹ฌ ๋ฐ›๋Š”๋‹ค. ์ด ๋•Œ, ํŽ˜์ด์ง€์—์„œ ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„๋งŒ ๊ณ„์‚ฐํ•˜์—ฌ ๋‹ค์‹œ ๊ทธ๋ฆฌ๊ฒŒ ๋œ๋‹ค. (์ „ํ†ต์ ์ธ ํŽ˜์ด์ง€์˜ ๊ฒฝ์šฐ, ๋ณ€๊ฒฝ์ด ์žˆ์„ ๋•Œ๋งˆ๋‹ค HTML์„ ์ƒˆ๋กœ ๋ฐ›์•„์„œ ํŽ˜์ด์ง€๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‹ค์‹œ ๊ทธ๋ฆผ) ๐Ÿ‘‰ React๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜๋ฉด ์ด๋Ÿฌํ•œ ํ–‰์œ„๋ฅผ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค! 2. React ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ JavaScript ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ Component : React์˜ ๋…๋ฆฝ์ ์ธ ๋‹จ์œ„ Virtual DOM : ๊ฐ€์ƒ์ ์ธ ํ‘œํ˜„์„ ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ReactDOM๊ณผ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ์˜ํ•ด ์‹ค์ œ DOM๊ณผ ๋™๊ธฐํ™”ํ•˜๋Š” ํ”„๋กœ..

    [week_07] 3๊ณ„์ธต ์„ค๊ณ„ (3-Layer architecture)

    1. 3๊ณ„์ธต ๊ตฌ์กฐ๋ž€ ๋ฐฑ์—”๋“œ ์ฝ”๋“œ๋ฅผ ์•„๋ž˜์™€ ๊ฐ™์€ 3๊ฐœ ๊ตฌ์กฐ๋กœ ๋‚˜๋ˆ„์–ด ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ 1-1. Controler layer (์ปจํŠธ๋กค๋Ÿฌ) ์‚ฌ์šฉ์ž์˜ ์š”์ฒญ(request)์„ ๋ถ„์„ํ•œ ํ›„, ์•Œ๋งž์€ ์„œ๋น„์Šค๋กœ ํ•ด๋‹น ์š”์ฒญ์„ ์ „๋‹ฌํ•ด ์ค€ ๋‹ค์Œ, ์„œ๋น„์Šค์˜ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์‘๋‹ต (response)ํ•˜๋Š” ์ธต ๋ผ์šฐํŒ… (Routing)์ด ์ด๋ฃจ์–ด์ง€๋Š” ์ธต express์˜ ๊ฒฝ์šฐ, req.params(), req.body(), res.status(), res.send() ์™€ ๊ฐ™์€ ์ฝ”๋“œ ์ž‘์„ฑ 1-2. Service layer (์„œ๋น„์Šค) ์ปจํŠธ๋กค๋Ÿฌ๋กœ๋ถ€ํ„ฐ ์ „๋‹ฌ๋œ ์š”์ฒญ์— ๋กœ์ง์„ ์ ์šฉํ•˜๋Š” ์ธต ์˜ˆ) ๋กœ๊ทธ์ธ ์š”์ฒญ์ด ๋“ค์–ด์˜ค๋ฉด ํ•ด๋‹น ID์˜ ์‚ฌ์šฉ์ž๊ฐ€ DB์— ์กด์žฌํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•˜๊ณ , ๊ทธ ํ›„ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ผ์น˜์—ฌ๋ถ€๋ฅผ ํŒ๋‹จํ•ด์„œ ๋กœ๊ทธ์ธ ์„ฑ๊ณต/์‹คํŒจ ์—ฌ๋ถ€๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๋“ฑ์˜ ๋กœ์ง ..

    [week_07] Express.js์™€ MongoDB๋กœ ์›น์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ (3) | JWT, OAuth, Nginx

    1. JWT JSON Web Token ์ธ์ฆ์„ ์œ„ํ•œ ์ •๋ณด๋ฅผ ์ „์ž ์„œ๋ช…์„ ์ด์šฉํ•ด์„œ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ• Web Token โžก ๋ฐ์ดํ„ฐ๋ฅผ ์›น์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•œ ์ŠคํŽ™ โžก base64 ์ธ์ฝ”๋”ฉ ์‚ฌ์šฉ 1. header - ํ† ํฐ์˜ ํƒ€์ž…(jwt), ๋ฐ์ดํ„ฐ ์„œ๋ช… ๋ฐฉ์‹ 2. payload - ์ „๋‹ฌ๋˜๋Š” ๋ฐ์ดํ„ฐ 3. signature - ํ—ค๋”์™€ ํŽ˜์ด๋กœ๋“œ์˜ ์ „์ž์„œ๋ช… payload๋Š” decode ์‹œ ์ •๋ณด๊ฐ€ ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋ฅผ ์ œ์™ธํ•˜๊ณ  ํ† ํฐ์„ ์ƒ์„ฑํ•ด์•ผ ํ•œ๋‹ค. ์„œ๋ฒ„๊ฐ€ JWT๋ฅผ ์ƒ์„ฑํ•  ๋•Œ, ๋น„๊ณต๊ฐœํ‚ค๋ฅผ ์ด์šฉํ•ด์„œ ์„œ๋ช… โžก payload ์กฐ์ž‘ํ•˜๋ฉด ์„œ๋ช…์ด ๋ถˆ์ผ์น˜ โžก ์ธ์ฆ ์‹คํŒจ โœจ JWT ์ž‘๋™ ๋ฐฉ์‹ 1. ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธ 2. ์„œ๋ฒ„๊ฐ€ ๋กœ๊ทธ์ธ๋œ ์œ ์ € ์ •๋ณด๋ฅผ JWT๋กœ ์ƒ์„ฑํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ „๋‹ฌ 3. ํด๋ผ์ด์–ธํŠธ๋Š” ์ „๋‹ฌ๋ฐ›์€ JWT๋ฅผ ์ด์šฉํ•˜์—ฌ ์ธ์ฆ์ด..

    [week_07] Express.js์™€ MongoDB๋กœ ์›น์„œ๋น„์Šค ๋งŒ๋“ค๊ธฐ (2) | Hash, Session, ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…

    1. Hash ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ €์žฅํ•  ๋•Œ ์‚ฌ์šฉ ๋ฌธ์ž์—ด์„ ๋˜๋Œ๋ฆด ์ˆ˜ ์—†๋Š” ๋ฐฉ์‹์œผ๋กœ ์•”ํ˜ธํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ• hash ์ถœ๋ ฅ๊ฐ’์„ ์ด์šฉํ•ด์„œ ์‚ฌ์šฉ์ž์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ Hash ๊ฐ’์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๊ณ , ๋กœ๊ทธ์ธ ์‹œ ์ „๋‹ฌ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ Hashํ•˜์—ฌ ์ €์žฅ๋œ ๊ฐ’๊ณผ ๋น„๊ตํ•ด์„œ ๋กœ๊ทธ์ธ ์ฒ˜๋ฆฌ 1-1. Node.js์—์„œ์˜ Hash ์‚ฌ์šฉ๋ฒ• crypto ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•ด์„œ hash ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. const hash = crypto.createHash('sha1'); // ํŠน์ • ํ•ด์‰ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค์ • hash.update(password); // ์ž…๋ ฅ๋ฐ›์€ ํ‰๋ฌธ put hash.digest('hex'); // 16์ง„์ˆ˜ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅ ๊ฐ„๋‹จํ•˜๊ฒŒ sha1 ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜, ๋ณด๋‹ค ๊ฐ•๋ ฅํ•œ sha224, sha256 ๋“ฑ์„ ์•Œ๊ณ ๋ฆฌ์ฆ˜..

    [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๊ฐ€ ์™œ ํ•„์š”ํ•œ๊ฐ€? ๊ฐ ์š”..

    [week_06] asyncHandler, Pagination, PM2 Process Manager

    1. asyncHandler request handler๋ฅผ async function์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด์„œ try ~ catch, next๋ฅผ ์ž๋™์œผ๋กœ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ์•„์ด๋””์–ด requestHandler๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ–๋Š” ํ•จ์ˆ˜ํ˜• ๋ฏธ๋“ค์›จ์–ด ์ „๋‹ฌ๋œ requestHandler๋Š” try ~ catch๋กœ ๊ฐ์‹ธ์ ธ asyncHandler ๋‚ด์—์„œ ์‹คํ–‰ throw๋˜๋Š” ์—๋Ÿฌ๋Š” ์ž๋™์œผ๋กœ ์˜ค๋ฅ˜์ฒ˜๋ฆฌ ๋ฏธ๋“ค์›จ์–ด๋กœ ์ „๋‹ฌ๋˜๋„๋ก ๊ตฌ์„ฑ๋จ const asyncHandler = (requestHandler) => { return async(req, res, next) => { try { await requestHandler(req, res); } catch(err) { next(err); } } } // ----------------------..

    [week_06] Template Engine

    1. ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์„œ๋ฒ„์—์„œ ํด๋ผ์ด์–ธํŠธ๋กœ ๋ณด๋‚ผ HTML์˜ ํ˜•ํƒœ๋ฅผ ๋ฏธ๋ฆฌ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ์ €์žฅ ๋™์ž‘ ์‹œ์— ๋ฏธ๋ฆฌ ์ž‘์„ฑ๋œ ํ…œํ”Œ๋ฆฟ์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์–ด์„œ ์™„์„ฑ๋œ HTML ์ƒ์„ฑ ํ…œํ”Œ๋ฆฟ ์ž‘์„ฑ ๋ฌธ๋ฒ•๊ณผ ์ž‘์„ฑ๋œ ํ…œํ”Œ๋ฆฟ์„ HTML๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๊ธฐ๋Šฅ ์ œ๊ณต 1-1. Express.js์˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„ EJS: html๊ณผ ์œ ์‚ฌํ•œ ๋ฌธ๋ฒ•์˜ ํ…œํ”Œ๋ฆฟ ์—”์ง„ Mustache: ๊ฐ„๋‹จํ•œ ๋ฐ์ดํ„ฐ ์น˜ํ™˜ ์ •๋„๋งŒ ์ œ๊ณตํ•˜๋Š” ๊ฒฝ๋Ÿ‰ํ™”๋œ ํ…œํ”Œ๋ฆฟ ์—”์ง„ Pug: ๋“ค์—ฌ์“ฐ๊ธฐ ํ‘œํ˜„์‹์„ ์ด์šฉํ•œ ๊ฐ„๋žตํ•œ ํ‘œ๊ธฐ์™€ ๋ ˆ์ด์•„์›ƒ ๋“ฑ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต 2. Pug ๋“ค์—ฌ์“ฐ๊ธฐ ํ‘œํ˜„์‹์„ ์ด์šฉํ•ด ๊ฐ€๋…์„ฑ์ด ์ข‹๊ณ  ๊ฐœ๋ฐœ ์ƒ์‚ฐ์„ฑ์ด ๋†’์Œ, HTML์„ ์ž˜ ๋ชจ๋ฅด๋”๋ผ๋„ ๋ฌธ๋ฒ•์  ์‹ค์ˆ˜๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์Œ layout, include, mixin ๋“ฑ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ ์ œ๊ณต html head title= title body h1#gr..