๐ŸŒš Back ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ

ํ•ด๋‹น ๊ธ€ 33๊ฑด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์—”์ง„? ๋Ÿฐํƒ€์ž„? ์ด ๋‘ ์šฉ์–ด์˜ ์ฐจ์ด์— ๋Œ€ํ•ด ํ–‡๊ฐˆ๋ฆฌ์‹œ๋Š” ๋ถ„์ด ๊ณ„์‹ค๊ฒ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—”์ง„๊ณผ ๋Ÿฐํƒ€์ž„์„ ๋น„๊ตํ•ด๋ณด๊ณ  ์ด๋ฒคํŠธ ๋ฃจํ”„์˜ ์—ญํ• , ์ถ”์ƒ์  ๊ตฌ์กฐ๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.   1. ์—”์ง„์—ญํ• ECMAScript(ECMA-262 ํ‘œ์ค€)์ฝ”๋“œ๋ฅผ ํŒŒ์‹ฑํ•˜๊ณ  ์‹คํ–‰ํ•œ๋‹ค.๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰์…˜์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.๊ตฌ์„ฑ์š”์†ŒํŒŒ์„œ: ์†Œ์Šค ์ฝ”๋“œ๋ฅผ AST(Abstract Syntax Tree)๋กœ ๋ณ€ํ™˜.์ปดํŒŒ์ผ๋Ÿฌ: AST๋ฅผ ์ตœ์ ํ™”๋œ ๋ฐ”์ดํŠธ์ฝ”๋“œ ๋˜๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์ฝ”๋“œ๋กœ ์ปดํŒŒ์ผ.๊ฐ€์ƒ ๋จธ์‹  (VM): ์ปดํŒŒ์ผ๋œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰. JIT(Just-In-Time) ์ปดํŒŒ์ผ๋ง์„ ํ†ตํ•ด ์„ฑ๋Šฅ ์ตœ์ ํ™”.์ฃผ์š” ์—”์ง„V8: Google Chrome, Node.js์— ์‚ฌ์šฉSpiderMonkey: Mozilla Firefox์— ์‚ฌ์šฉJavaScriptCore..

Node.js๋Š” ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์—์„œ ๋™์ž‘ํ•˜์ง€๋งŒ, ๋†€๋ž๊ฒŒ๋„ ๋™์‹œ์„ฑ๊ณผ ํšจ์œจ์ ์ด๊ณ  ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„์„ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋Š” ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ์˜ค์ผ€์ŠคํŠธ๋ผ์˜ ์ง€ํœ˜์ž์ฒ˜๋Ÿผ Node.js๋Š” ๋ฉ”์ธ ์Šค๋ ˆ๋“œ์—์„œ ๋น„๋™๊ธฐ ์ž‘์—…์„ ๊ด€๋ฆฌํ•˜๊ณ , ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋˜๋Š” I/O ์ž‘์—…(๋„คํŠธ์›Œํฌ ์š”์ฒญ, ํŒŒ์ผ ์‹œ์Šคํ…œ ์ž‘์—…)๋“ค์ด ์™„๋ฃŒ๋˜๋ฉด ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ž‘๋™ํ•˜์ฃ . ์ด ๊ธ€์—์„œ๋Š” Node.js์˜ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ ๋ชจ๋ธ๊ณผ ์ด๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” libuv ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ์—ญํ• ์„ ์„ค๋ช…ํ•˜๊ณ , ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ๋•Œ ์Šค๋ ˆ๋“œ ํ’€๊ณผ ์™ธ๋ถ€ API ํ˜ธ์ถœ์ด ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.   1. Node.js์˜ ์ด๋ฒคํŠธ ๋ฃจํ”„์™€ ๋น„๋™๊ธฐ ๋…ผ๋ธ”๋กœํ‚น I/O ๋ชจ๋ธNode.js๋Š” ๋‹จ์ผ ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋Ÿฐํƒ€์ž„์ด์ง€๋งŒ, ๋ชจ๋“  ์ž‘์—…์„ ์ง์ ‘ ์ฒ˜..

0. ์™œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ์•ผ? ์Šค๋ ˆ๋“œ๋Š” ํ”„๋กœ์„ธ์Šค ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์‹คํ–‰ ๋‹จ์œ„๋ฅผ ๋งํ•œ๋‹ค. ๊ทธ๋Ÿผ ์Šค๋ ˆ๋“œ๊ฐ€ ๋งŽ์œผ๋ฉด ์ข‹์€ ๊ฒŒ ์•„๋‹๊นŒ? ๋ธŒ๋ผ์šฐ์ €๋„ ๊ทธ๋ ‡๊ณ , Node๋„ ๊ทธ๋ ‡๊ณ , ์™œ ์‹ฑ๊ธ€ ์Šค๋ ˆ๋“œ๋ฅผ ์‚ฌ์šฉํ• ๊นŒ? ์ด์œ ๋Š” ๋ฐ”๋กœ ์‰ฌ.์›Œ.์„œ.๋‹ค. ๋งŒ์•ฝ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋กœ ์‹คํ–‰๋˜๋Š” ์–ธ์–ด์˜€๋‹ค๋ฉด ์›นํŽ˜์ด์ง€์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋™์‹œ์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ํ•ด๊ฒฐํ•ด์•ผ ํ–ˆ๋‹ค. ์‹ค์ œ๋กœ ๋ฉ€ํ‹ฐ ์“ฐ๋ ˆ๋“œ๋กœ ๊ตฌํ˜„๋œ ์„œ๋น„์Šค์—์„œ๋Š” ์ด ๋™์‹œ์„ฑ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ •๋ง ๋งŽ์€ ์‹ ๊ฒฝ์„ ์“ด๋‹ค. ํ•˜์ง€๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋‹จ์ผ ์“ฐ๋ ˆ๋“œ๋กœ ์‹คํ–‰๋˜๋ฏ€๋กœ ์ธํ•ด ๊ต์ฐฉ ์ƒํƒœ์™€ ๊ฐ™์€ ๋‹ค์ค‘ ์“ฐ๋ ˆ๋“œ ํ™˜๊ฒฝ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๋ณต์žกํ•œ ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์‹ ๊ฒฝ ์“ธ ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์—ฌ๋Ÿฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์‹ค์ œ๋กœ ๊ตฌ๊ธ€์˜ Chrome ๋ธŒ๋ผ์šฐ์ € ๋งˆ์ €๋„ ๊ธฐ์กด ์›น ํŽ˜์ด์ง€์—์„œ ์—„์ฒญ๋‚œ ๋™์‹œ์„ฑ ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ..

npm ์ด๋ž€? NPM์€ Node.js๋ฅผ ์œ„ํ•œ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €์™€ ์„ค์น˜ ๊ด€๋ฆฌ์ž๋กœ, ์ˆ˜๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ๋„๊ตฌ๋“ค์ด ์—…๋กœ๋“œ๋˜๋Š” ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. NPM CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ๋„๊ตฌ๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•œ ๋‹ค์–‘ํ•œ ๋ช…๋ น์–ด๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Node.js๋ฅผ ์„ค์น˜ํ•˜๋ฉด ์ž๋™์œผ๋กœ NPM๋„ ์„ค์น˜๋˜๋ฉฐ, ์ด๋Š” ํŒจํ‚ค์ง€๋ฅผ ์„œ๋กœ ๊ณต์œ ํ•˜๊ธฐ ์œ„ํ•จ์ž…๋‹ˆ๋‹ค. NPM์€ ์„ธ๊ณ„์—์„œ ๊ฐ€์žฅ ํฐ ์†Œํ”„ํŠธ์›จ์–ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ, 800,000๊ฐœ ์ด์ƒ์˜ ์ฝ”๋“œ ํŒจํ‚ค์ง€๋ฅผ ๋ณด์œ ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜คํ”ˆ์†Œ์Šค ๊ฐœ๋ฐœ์ž๋“ค์€ NPM์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ, ๋งŽ์€ ๊ธฐ์—…๋“ค๋„ NPM์„ ์ด์šฉํ•˜์—ฌ ๊ฐœ์ธ์ ์ธ ๊ฐœ๋ฐœ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. NPM์€ ๋ฌด๋ฃŒ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. npm์„ ์ด์šฉํ•ด ํŒจํ‚ค์ง€ ์„ค์น˜ํ•˜๊ธฐ 1. package.json ํ”„๋กœ์ ํŠธ์˜ ์ •๋ณด์™€ ..

์–ธ์ œ์จ? 1. ์•„์ด๋””์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ํ…Œ์ŠคํŠธํ•ด์•ผํ•  ๋•Œ 2. ์„œ๋ฒ„, DB์— ์‹œ๊ฐ„๊ณผ ๋ˆ์„ ๋‚ญ๋น„ํ•˜๊ณ  ์‹ถ์ง€ ์•Š์„ ๋•Œ ๋ฐฑ์•ค๋“œ ๊ธฐ๋Šฅ ํฌ๊ด„ ๊ธฐ๋Šฅ ์ œ๊ณตํ•œ๋‹ค. = AWS amplify Firebase๋Š” ๋ชจ๋“  ํ”Œ๋ ›ํผ์„ ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ• ์‹œ ์ž๋™์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์ค€๋‹ค. ๋˜ํ•œ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๋ฅผ ์•Œ ํ•„์š”๋„ ์—†์œผ๋ฉฐ ๋„๋ฉ”์ธ์„ ๊ตฌ์ž…ํ•  ํ•„์š”๋„ ์—†๊ณ  ๊ฐœ๋ฐœํ•˜๋Š” ๋™์•ˆ์—๋Š” ์„œ๋ฒ„๋ฅผ ๊ตฌ์ž…ํ•  ํ•„์š” ์—†๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž์™€ ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์˜ ๊ฒฝ๊ณ„๊ฐ€ ๋ชจํ˜ธํ•ด ์งˆ ๊ฒƒ์ด๋ฉฐ ์ ์€ ๋น„์šฉ์œผ๋กœ ๋งค์šฐ ์ข‹์€ ์•ฑ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. FireBase์˜ ๋Œ€ํ‘œ์ ์ธ ๊ธฐ๋Šฅ ์ธ์ฆ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์Šคํ† ๋ฆฌ์ง€, ์›๊ฒฉ ๊ตฌ์„ฑ, ํ‘ธ์‹œ ์•Œ๋žŒ์ด ์žˆ๋‹ค FireBase์˜ ์žฅ์  1) ์ธ์ฆ ์‹œ์Šคํ…œ์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ์ธ์ฆ์€ Firebase ์—์„œ ๋กœ๊ทธ์ธ์„ ๋‹ด๋‹นํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ๋กœ๊ทธ์ธ์„ ๋‹ด๋‹น..

2000๋…„๋Œ€ ์ดˆ๋ฐ˜์˜ ์›นํŽ˜์ด์ง€๋Š” ๊ฐ ํŽ˜์ด์ง€๋งˆ๋‹ค ์ƒˆ๋กœ์šด html์„ ์š”์ฒญํ•ด์„œ ํ™”๋ฉด์„ ๋‹ค์‹œ ๊ทธ๋ฆฌ๋Š” ๋ฐฉ์‹์ด์—ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” DOM์„ ์กฐ์ž‘ํ•˜๋Š” ๊ฐ„๋‹จํ•œ ์—ญํ• ๋งŒ ํ–ˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— html์˜ scriptํƒœ๊ทธ์— ๋„ฃ๋Š” ๊ฒƒ์œผ๋กœ๋„ ์ถฉ๋ถ„ํ–ˆ๋‹ค. ajax๊ฐ€ ์œ ํ–‰ํ–ˆ์„ ๋•Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋น„์ค‘์ด ์กฐ๊ธˆ ๋” ์ปค์กŒ์ง€๋งŒ ๊ทธ๋ž˜ ๋ด์•ผ ํŽ˜์ด์ง€๋‹น ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ๋ช‡ ๊ฐœ๋ฉด ์ถฉ๋ถ„ํ–ˆ๋‹ค. SPA(single page app)๋Š” ํ•˜๋‚˜์˜ html์— ์ˆ˜์‹ญ, ์ˆ˜๋ฐฑ ๊ฐœ์˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ํฌํ•จํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋” ์ด์ƒ ๊ธฐ์กด ๋ฐฉ์‹์ด ํ†ตํ• ๋ฆฌ ์—†์—ˆ๋‹ค. ... ์œ„์˜ ๋ฐฉ์‹์œผ๋กœ๋Š” ๊ณ„์† ๋Š˜์–ด๋‚˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๊ด€๋ฆฌํ•˜๊ธฐ ํž˜๋“ค๋‹ค. ๋˜ํ•œ ์„ ์–ธ๋˜๋Š” ์ˆœ์„œ๋„ ์‹ ๊ฒฝ ์จ์•ผ ํ•˜๊ณ , ๊ธฐ์กด์— ์ƒ์„ฑ๋œ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ฎ์–ด์“ฐ๋Š” ์œ„ํ—˜๋„ ์กด์žฌํ•œ๋‹ค. ๋ชจ๋“ˆ ์‹œ์Šคํ…œ์ด ํ•„์š”ํ•˜๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํƒœ์ƒ์ด ๋ธŒ๋ผ์šฐ์ €์—..

Parser๋Š” ๋ฌด์—‡์„ ์˜๋ฏธํ•˜๋Š”๊ฐ€? ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋กœ ‘๊ฐ€๊ณต'ํ•˜๋Š” ๊ณผ์ •์„ parsing ์ด๋ผ ํ•˜๋ฉฐ ๊ทธ ๊ณผ์ •์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ชจ๋“ˆ ํ˜น์€ ๋ฉ”์†Œ๋“œ๋ฅผ parser ๋ผ ์ผ์ปซ๋Š”๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ์–ธ์–ด๋ฅผ ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ์–ธ์–ด์˜ ๊ตฌ์กฐ๋กœ ๋ฐ”๊ฟ”์ฃผ๋Š” ์ผ์ข…์˜ ๊ตฌ๋ฌธ ํ•ด์„๊ธฐ๋ผ๊ณ  ๋งํ•  ์ˆ˜๋„ ์žˆ๋‹ค. parser๋Š” ๊ตฌ๋ฌธ ํ•ด์„์„ ํ•  ๋ฟ ๋ฒˆ์—ญ์„ ํ•˜์ง„ ์•Š๋Š”๋‹ค. ๋ฒˆ์—ญ์˜ ์—ญํ• ์€ compiler์—์„œ ๋‹ด๋‹นํ•œ๋‹ค. ๋‚ด๊ฐ€ ์›ํ•˜๋Š” ํ˜•์‹์— ๋งž์ถฐ ํ•ด์„ํ•˜๋Š” ์šฉ๋„์ด๋ฏ€๋กœ bodyParser ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ cookieParser, JSON.parse, JSON.stringify ..๋“ฑ ํŒŒ์„œ์˜ ์ข…๋ฅ˜๋Š” ์…€ ์ˆ˜ ์—†์ด ๋งŽ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด bodyParser๋Š” ๋ฌด์—‡์„ ํŒŒ์‹ฑํ•˜๋Š”๊ฐ€? Contains key-value pairs of data submitted i..

504 Gateway Timeout(504 ๊ฒŒ์ดํŠธ์›จ์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜) ์›น ์„œ๋ฒ„์—์„œ ํŽ˜์ด์ง€ ๋กœ๋“œ์‹œ ์ •๋ณด๋ฅผ ์š”์ฒญํ•œ ๋‹ค๋ฅธ ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ์‹œ๊ธฐ ์ ์ ˆํ•œ ์‘๋‹ต์„๋ฐ›์ง€ ๋ชปํ•œ ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ๋‘ ๊ฐ€์ง€ ์ด์œ ๋Š” ์„œ๋ฒ„์— ์š”์ฒญ์ด ๋„ˆ๋ฌด ๋งŽ๊ฑฐ๋‚˜ ์œ ์ง€ ๊ด€๋ฆฌ๊ฐ€ ์ˆ˜ํ–‰๋˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ธํ„ฐ๋„ท ์„œํ•‘ ์ค‘์— 504 ๊ฒŒ์ดํŠธ์›จ์ด ์‹œ๊ฐ„ ์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ํ•œ ๋ฒˆ ์ด์ƒ ๋ฐœ์ƒํ–ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด 90 %์ž…๋‹ˆ๋‹ค. ๋‚˜๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ํŽ˜์ด์ง€๋ฅผ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•ด์ค„ ๋•Œ, ์ŠคํŽ ๋ง ์‹ค์ˆ˜๋กœ ์—‰๋šฑํ•œ ๊ณณ์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•ด์ค˜ ๋ฐœ์ƒํ–ˆ๋‹ค. ์—‰๋šฑํ•œ ๊ณณ์œผ๋กœ ๋ฆฌ๋‹ค์ด๋ ‰ํŠธ ํ•ด์ฃผ๋Š”๋ฐ, ์˜ค๋ฅ˜๊ฐ€ ๋‚ฌ์„ ๋•Œ error๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ๊ฒƒ ์ด์™ธ์— ์–ด๋– ํ•œ ์ฝ”๋“œ๋„ ์ž‘์„ฑํ•˜์ง€ ์•Š์•„, ๊ณ„์† ์‘๋‹ต์„ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์ƒํƒœ๊ฐ€ ๋˜์—ˆ๊ณ , ๊ทธ๋Ÿฌ๋Š” ๋™์•ˆ timeout์ƒํƒœ๊ฐ€ ๊ธธ์–ด์ ธ 504์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผฐ๋‹ค. ์ผ๋ฐ˜์ ์ธ 504์—๋Ÿฌ๋Š” ngi..

Q. src\images์— ๋„ฃ์œผ๋ฉด html์—์„œ ๋กœ๋”ฉ์ด ์•ˆ๋˜๋Š”๋ฐ static์— ๋„ฃ์œผ๋ฉด ๋กœ๋”ฉ์ด ๋œ๋‹ค. ์™œ์ง€? ๋˜‘๊ฐ™์€ ํด๋˜๋ฐ? A. ์›นํŒฉ ๋นŒ๋”๋ฅผ ์ด์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„์›ƒํ’‹ํŒŒ์ผ์—์„œ ๋‚˜์˜จ ๊ฒƒ๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. staticํŒŒ์ผ์„ ์•„์›ƒํ’‹์œผ๋กœ ์„ค์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— src/images์— ์žˆ๋Š” ํŒŒ์ผ(์ด๋ฏธ์ง€ํŒŒ์ผ), ๊ธฐํƒ€ ๋‹ค๋ฅธ ๋กœ์ปฌํŒŒ์ผ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์—†๋Š” ๊ฒƒ์ด๋‹ค. ํ•ด๊ฒฐ๋ฐฉ๋ฒ• 1) ์ด๋ฏธ์ง€ ํŒŒ์ผ์„ ๊ทธ๋ƒฅ ์•„์›ƒํ’‹ ๋””๋ ‰ํ† ๋ฆฌ์— ๋„ฃ๋Š”๋‹ค. 2) webpack.config.jsํŒŒ์ผ์— 'file-loader' ์ถ”๊ฐ€ ์›นํŒฉ์ด ์ด๋ฏธ์ง€ ํ™•์žฅ์ž ํŒŒ์ผ์„ ๋ฐœ๊ฒฌํ•˜๋ฉด ํŒŒ์ผ ๋กœ๋”๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ๋กœ๋”๊ฐ€ ์ž‘๋™ํ•˜๋ฉด ์•„์›ƒํ’‹์— ์„ค์ •ํ•œ ๊ฒฝ๋กœ๋กœ ์ด๋ฏธ์ง€๊ฐ€ ๋ณต์‚ฌ๋œ๋‹ค. file-loader์ฝ”๋“œ flamingotiger.github.io/frontend/DevEnv/webpack-image/..

1. ์“ฐ๋Š” ์ด์œ  node.js์—์„œ html์„ ๋žœ๋”๋งํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€๋‚œ๋‹ค. ESJ์—”์ง„์„ ํ†ตํ•ด ๋žœ๋”๋ง ํ•ด์ค€๋‹ค. 2. EJS(Embedded Javascript) ํ…œํ”Œ๋ฆฟ ์—”์ง„ ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ํ…œํ”Œ๋ฆฟ์— ๋ณด์—ฌ์ฃผ๊ณ  ์‹ถ์€ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์„ ๋•Œ ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด ์ด ๋‘˜์„ ํ•ฉ์ณ ๊ฒฐ๊ณผ ํŽ˜์ด์ง€๋ฅผ ์ƒ์„ฑํ•ด๋‚ธ๋‹ค. ์ฆ‰, ์š”์ฒญ์— ๋”ฐ๋ผ ์ „์ฒด์ ์ธ ํ…œํ”Œ๋ฆฟ์€ ๋™์ผํ•˜์ง€๋งŒ ์„ธ๋ถ€์ ์ธ ๊ฐ’๋“ค์„ ๋™์ ์œผ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. JSP ๋ฐฉ์‹๊ณผ ๋น„์Šทํ•˜๋‹ค๊ณ  ํ•œ๋‹ค. EJS๋Š” Node์—์„œ ๊ฐ€์žฅ ์ธ๊ธฐ์žˆ๋Š” ํ…œํ”Œ๋ฆฟ ์—”์ง„์ด๋‹ค. 3. ์ฝ”๋“œ npm install ejs app.set('views', __dirname + '/views'); // ๊ฒฝ๋กœ์„ค์ •, views๋ณ€์ˆ˜๋Š” ์ •ํ•ด์ ธ ์žˆ๋Š” ๋“ฏ app.set('view engine', 'ejs'); // ์„œ๋ฒ„๊ฐ€ HTML ๋ Œ๋”๋ง์— EJS์—”์ง„์„ ์‚ฌ์šฉํ•˜..

npm์€ ๊ด€๋ฆฌ ํˆด, npx๋Š” npm์— ์žˆ๋Š” ์‹คํ–‰ ํˆด์ด๋‹ค. npm ํŒจํ‚ค์ง€๋ฅผ ์„ค์น˜ํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋„๊ตฌ๋กœ, ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ „์—ญ ํŒจํ‚ค์ง€๋กœ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ณ , npx๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ”๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. npx is CLI tool. npx๋Š” ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ด ์•„๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒจํ‚ค์ง€ ๊ด€๋ฆฌ ๋ชจ๋“ˆ์ธ npm(Node Package Module)์˜ 5.2.0 ๋ฒ„์ „๋ถ€ํ„ฐ ์ƒˆ๋กœ ์ถ”๊ฐ€๋œ CLI ๋„๊ตฌ๋‹ค. npm์„ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ npm์—์„œ ์ œ๊ณตํ•œ๋‹ค. ๋”ฐ๋ผ์„œ npm@5.2.0 ์ด์ƒ ๋ฒ„์ „๋งŒ ๊น”๋ ค ์žˆ๋‹ค๋ฉด npx ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. npx๋Š” npm ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ์˜ฌ๋ผ๊ฐ€์žˆ๋Š” ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ๋‹ค. npm์„ ์ข€ ๋” ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ํƒ„์ƒํ•œ npx๋Š” npm์„ ํ†ตํ•ด ์„ค์น˜..

Aws s3 ๋“œ๋ž๋ฐ•์Šค๊ฐ™์€ ์ €์žฅ์†Œ ๋ฒ„ํ‚ท ํด๋” ๊ฐ™์€ ๊ฒƒ multer์„ ์ด์šฉํ•ด์„œ aws์— ์ ‘๊ทผ programatic acess add userํ•˜๊ณ  ๋‚˜์„œ ์ฃผ์–ด์ง„ ํ‚ค๋ฅผ .envํŒŒ์ผ์— ์ €์žฅํ•ด๋‘๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•จ npm์„ค์น˜ amazone softared development kit 1) npm install aws-sdk 2) multer-s3 ์„ค์ • 1. ์„œ๋ฒ„์— ์ง์ ‘ ์ €์žฅํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์‹ธ๋‹ค 2. ์„œ๋ฒ„์— ์œ ์ €์˜ ํŒŒ์ผ์„ ์ €์žฅํ•˜์ง€ ๋ง์•„์•ผ ํ•˜๋Š” ์ด์œ  1) ๋ฐ”์ด๋Ÿฌ์Šค ์„œ๋ฒ„๋ฅผ ๋ง๊ฐ€๋œจ๋ฆผ 2) ํŠธ๋ž˜ํ”ฝ์ด ๋งŽ์•„์ง ๋งŽ์€ ์„œ๋ฒ„๋ฅผ ํ•„์š”๋กœ ํ•˜๊ฒŒ๋จ ๊ทธ๋Ÿผ ์—ฌ๋Ÿฌ ์„œ๋ฒ„์— ๋ณต์‚ฌํ•ด์•ผ ํ•จ 3) ์„œ๋ฒ„ํ•˜๋‚˜๋Š” ๋™๋ถ€, ์œ ๋Ÿฝ, ์•„์‹œ์•„์— ์žˆ๋‹ค๋ฉด ๊ฐ™์€ ํŒŒ์ผ์„ 3๊ตฐ๋ฐ์— ๋„ฃ๊ณ  ์‹ถ์ง€ ์•Šใ…‡๋ฏ€ ๋ชฝ๊ณ ๋žฉ = ๋ชฝ๊ณ  atlas ๋ชฝ๊ณ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘์† ํด๋Ÿฌ์Šคํ„ฐ