๐Ÿ—๏ธ์†Œํ”„ํŠธ์›จ์–ด/๐Ÿ“—JavaScript

    [f/e] ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง

    1. ์บก์ณ๋ง๊ณผ ๋ฒ„๋ธ”๋ง ์บก์ณ๋ง(capturing)์€ ์ด๋ฒคํŠธ๊ฐ€ ๊ฐ€์žฅ ์ƒ์œ„์˜ ๋ถ€๋ชจ ์š”์†Œ์—์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ์‹ค์ œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ๊นŒ์ง€ ๋‚ด๋ ค์˜ค๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ–ˆ๋”๋ผ๋„, ์ƒ์œ„ ์š”์†Œ์— ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ฉด์— ๋ฒ„๋ธ”๋ง(bubbling)์€ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ์‹œ์ž‘ํ•˜์—ฌ ์ƒ์œ„ ์š”์†Œ๋กœ ์ „ํŒŒ๋˜๋Š” ๊ณผ์ •์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ์—๋Š” ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ์—์„œ ๋“ฑ๋กํ•œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ๋จผ์ € ํ˜ธ์ถœ๋˜๊ณ , ๊ทธ ํ›„์— ์ƒ์œ„ ์š”์†Œ์— ๋“ฑ๋ก๋œ ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๋ฅผ ๋“ฑ๋กํ•  ๋•Œ, ์„ธ ๋ฒˆ์งธ ์ธ์ž๋กœ ์ด๋ฒคํŠธ ์ „ํŒŒ ๋ฐฉ์‹์„ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜์™€ ๊ฐ™์€ ์ฝ”๋“œ์—์„œ ์บก์ณ๋ง์„ ์‚ฌ์šฉํ•˜๋„๋ก ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. document.getElement..

    ๋น„๋™๊ธฐ API ์ฒ˜๋ฆฌ

    ๋น„๋™๊ธฐ API ์ฒ˜๋ฆฌ

    ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด์„œ axios ๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๋Š” ๋ฌด์—‡์ธ๊ฐ€? - ํŠน์ • ์ฝ”๋“œ์˜ ์—ฐ์‚ฐ์ด ๋๋‚  ๋•Œ๊นŒ์ง€ ์ฝ”๋“œ์˜ ์‹คํ–‰์„ ๋ฉˆ์ถ”์ง€ ์•Š๊ณ , ๋‹ค์Œ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์‹คํ–‰ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ• ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ, ๋ฌผ๊ฑด์„ ์—ฌ๋Ÿฌ๊ฑด ๋ฐฐ์†ก๋ณด๋‚ด๋Š” ๊ฒƒ์„ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๋‹ค. ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ์—ฌ๋Ÿฌ ๋ชฉ์ ์ง€์— ๋ณด๋‚ด๋„ ์•Œ์•„์„œ ๋ฐฐ์†ก ํ”„๋กœ์„ธ์Šค ๋”ฐ๋ผ์„œ ๋ฌผํ’ˆ ๋ฐฐ์†ก์ด ๋ฉˆ์ถ”์ง€ ์•Š๊ณ  ์ง„ํ–‰๋œ๋‹ค. axios๋Š” ๋ฌด์—‡์ธ๊ฐ€? - axios ๋ผ์ด๋ธŒ๋Ÿฌ๋ฅด์—์„œ ์‚ฌ์šฉํ•˜๋Š” Promose ๊ฐ์ฒด์— ๋Œ€ํ•ด์„œ ๋จผ์ € ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. - ๋น„๋™๊ธฐ ์ž‘์—…์ด ํ•˜๊ฒŒ ๋˜๋ฉด ๊ฒฐ๊ณผ๊ฐ€ ์–ด์จ‹๋“  ์„ฑ๊ณต์ด๊ฑฐ๋‚˜ ์‹คํŒจ ์•„๋‹ˆ๋ฉด ๋‘˜๋„ ์•„๋‹Œ ์ง„ํ–‰์ค‘์ธ ์ƒํƒœ๊ฐ€ ์žˆ์„ ๊ฒƒ์ด๋‹ค. - ๊ทธ๋ž˜์„œ ๋‹ค์Œ 3๊ฐ€์ง€ ๊ฒฐ๊ณผ์— ๋Œ€ํ•ด์„œ, ์„ฑ๊ณต ํ–ˆ์„๋•Œ๋Š” ์–ด๋–ค ํ–‰๋™์„ ํ•˜๊ณ , - ์‹คํŒจ๋ฅผ ํ–ˆ์„๋•Œ์—๋Š” ์–ด๋–ค ํ–‰๋™์„ ํ•ด์•ผํ•˜๋Š”์ง€๋ฅผ ์ •ํ•ด๋†“์€๊ฒŒ ..

    [webpack-dev-server] ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ”๋กœ ๋ฐ˜์˜(js)

    [webpack-dev-server] ์ฝ”๋“œ ๋ณ€๊ฒฝ์‚ฌํ•ญ ๋ฐ”๋กœ ๋ฐ˜์˜(js)

    ๋“œ๋””์–ด webpack.config.js ํŒŒ์ผ์— ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์„œ, ๋งค๋ฒˆ ๋นŒ๋“œํ•˜์ง€ ์•Š๊ณ ๋„ ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ„ฐ๋“ํ–ˆ๋‹ค. ์ƒˆ๋กœ๊ณ ์นจํ•ด๋„ ๋ณ€๊ฒฝ์ด ์•ˆ๋˜์—ˆ๋Š”๋ฐ, ํ•˜๋ฃจ ๊ณ ๋ฏผํ•˜๊ณ  ๋ฐฉ๋ฒ• ํ„ฐ๋“ํ–ˆ๋‹ค!! [webpack-dev-server] Hot Module Replacement enabled. log.js:1 [webpack-dev-server] Live Reloading enabled. log.js:1 [webpack-dev-server] App hot update... ์ฐธ๊ณ ๋กœ ์ด๋ ‡๊ฒŒ ๋œจ๋ฉด ์„ฑ๊ณตํ•œ๊ฑด๋ฐ, ๋งจ์ฒ˜์Œ์— ์ฝ˜์†”์ฐฝ์—, ์ด๋ ‡๊ฒŒ๋งŒ ๋œจ๊ณ  ํ•ซ๋ฆฌ๋กœ๋”ฉ์ด ์•ˆ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์„ค์ • ๊ฐ’์„ ๋ณ€๊ฒฝํ•ด์ฃผ๋ฉด ๋œ๋‹ค. [webpack-dev-server] Hot Module Replacement enabled. log.js:1 [web..

    [Node.js] express ์™€ cors ์‚ฌ์šฉํ•ด์„œ API ๋งŒ๋“ค๊ธฐ

    [Node.js] express ์™€ cors ์‚ฌ์šฉํ•ด์„œ API ๋งŒ๋“ค๊ธฐ

    npm ์— cors ์™€ express ๋ฅผ ์„ค์น˜ํ•ด์„œ, ๊ฐ„๋‹จํ•œ API๋ฅผ ๋งŒ๋“ค์–ด๋ดค์Šต๋‹ˆ๋‹ค. cors ๋Š” ํ”„๋ก ํŠธ์—์„œ ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•œ API๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ๋•Œ, ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ์— ๋Œ€ํ•ด์„œ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. Cross Origin Resource Sharing ์ด์™€ ๊ด€๋ จ๋œ ์ž์„ธํ•œ ์„ค๋ช…์€, ์•„๋ž˜ ๋งํฌ์— ์ฒจ๋ถ€๋˜์–ด ์žˆ์œผ๋‹ˆ ํ•ด๋‹น ๋ธ”๋กœ๊ทธ์— ์ ‘์†ํ•ด์„œ ์ฝ์–ด๋ณด๋ฉด ํฐ ๋„์›€์ด ๋  ๊ฒƒ์ด๋‹ค. https://bohyeon-n.github.io/deploy/web/cors.html CORS๋ž€? CORS๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž | ๊ตฌ๋ณดํ˜„ ๋ธ”๋กœ๊ทธ CORS๋ž€? CORS๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์ž 20200522 ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ ํ”„๋ก ํŠธ์—์„œ ์„œ๋ฒ„์—์„œ ์ œ๊ณตํ•œ API๋กœ ์š”์ฒญํ•˜์ž, CORS ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ CORS์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ๋งŒ ํ•˜๊ณ  ์ •ํ™•ํžˆ CORS๊ฐ€ ๋ฌด์—‡์ด๊ณ  ์–ด๋–ป๊ฒŒ..

    ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ํ™”์‚ดํ‘œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ 

    ๋ฐ์ดํ„ฐ์˜ ์ˆ˜๊ฐ€ ๊ธธ์–ด์ง€๋Š” ๊ฒฝ์šฐ, find ๋ฅผ ํ†ตํ•ด์„œ ํŠน์ • key ๊ฐ’์—์„œ์˜ value ๋ฅผ ์ฐพ์•„๋ด์•ผํ•  ๋•Œ๊ฐ€ ์กด์žฌํ•œ๋‹ค. ๊ทธ๋•Œ, function ์„ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ์™€ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋งŒ ์‚ฌ์šฉํ•œ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค. ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž˜ ๋ณด๋ฉด, ์™œ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๊ฐ€ ํŽธํ•˜์ง€ ์•Œ ๊ฒƒ์ด๋‹ค. const settingState = [ { "engname": "template_name", "korname": "ํƒฌํ”Œ๋ฆฟ ์ด๋ฆ„", "value": "ํ…Œ์ŠคํŠธ ํ…œํ”Œ๋ฆฟ 1" }, { "engname": "toffice_id", "korname": "Toffice ์•„์ด๋””", "value": "22019" }, { "engname": "toffice_password", "korname": "Toffice ๋น„๋ฐ€๋ฒˆํ˜ธ", "value": "22019" }, { "en..

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] Math ํ•จ์ˆ˜ ์ด์šฉํ•˜์—ฌ ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑํ•˜๊ธฐ

    [์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ] Math ํ•จ์ˆ˜ ์ด์šฉํ•˜์—ฌ ๋กœ๋˜ ๋ฒˆํ˜ธ ์ƒ์„ฑํ•˜๊ธฐ

    ๋žœ๋ค ์ˆซ์ž๋ฅผ ์ด์šฉํ•˜์—ฌ, ๊ฐ€๋ณ๊ฒŒ ๋กœ๋˜ ๋ฒˆํ˜ธ๋ฅผ ๋งŒ๋“œ๋ ค๊ณ  ํ•œ๋‹ค. ์กฐ๊ฑด์€ 1. Math.random() ์ด์šฉํ•˜๊ธฐ 2. ๋ฐ˜์˜ฌ๋ฆผ, ์˜ฌ๋ฆผ, ๋‚ด๋ฆผ์„ ์ตœ์†Œ 1๋ฒˆ ์ด์ƒ ์‚ฌ์šฉํ•˜๊ธฐ 3. switch ๋ฌธ 1๋ฒˆ ์ด์ƒ ์‚ฌ์šฉํ•˜๊ธฐ 4. ์ตœ๋Œ€, ์ตœ์†Œ๊ฐ’์„ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›๋Š” ํ•จ์ˆ˜ ์‚ฌ์šฉํ•˜๊ธฐ 5. ํ•จ์ˆ˜๊ฐ’์€ ๊ฐ์ฒด ํƒ€์ž…์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ 6. ๊ฒฐ๊ณผ๊ฐ’์€ ๋ฐฐ์—ด๋กœ ๋ณด์ด๊ธฐ 7. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ console ๋กœ ๋ณด์ด๊ณ , html ์—์„œ h1 ํƒœ๊ทธ๋กœ ํ•ด๋‹น ๊ฐ’๋“ค์„ ๋ณด์ด๊ธฐ ๋“ฑ์ด๋‹ค. ์•Œ์•„์•ผํ•  ๊ฐœ๋…์œผ๋กœ๋Š” 1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด๋ฅผ ๋ฐฐ์—ด๋กœ ์ „ํ™˜ํ•˜๋Š” ๋ฐฉ๋ฒ• 2. html ์— js ๋ฐ์ดํ„ฐ ๊ฐ’ ๋ณด์ด๋Š” ๋ฐฉ๋ฒ• ๋กœ๋˜ ๋ฒˆํ˜ธ์˜ ๊ฒฝ์šฐ 1๋ถ€ํ„ฐ 45๊นŒ์ง€ ์žˆ์œผ๋ฉฐ, ์ค‘๋ณต์„ ํ—ˆ๋ฝํ•˜์ง€ ์•Š๋Š” ์กฐ๊ฑด์ด ์žˆ๋‹ค๋Š” ์ „์ œํ•˜์— ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋„๋ก ํ•œ๋‹ค. ์ฝ”๋“œ๊ฐ€ ๊ธด๋ฐ, ์ƒ๊ฐ๋‚˜๋Š”๋ฐ๋กœ ํ•˜๋‹ค๋ณด๋‹ˆ, ๋ฆฌํŒฉํ† ๋ง์ด ํ•„์š”ํ•œ ๋ถ€๋ถ„์ด ๋ณด์ด๊ธด..

    [Vuetify] ๋™๊ธฐ,๋น„๋™๊ธฐ,

    [Vuetify] ๋™๊ธฐ,๋น„๋™๊ธฐ,

    ๋™๊ธฐ ๋ฐฉ์‹๊ณผ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ๋™๊ธฐ ๋ฐฉ์‹ ์ˆœ์ฐจ์ ์œผ๋กœ ์ง„ํ–‰์ด ๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋‚ผ์‹œ ์‘๋‹ต์ด ๋Œ์•„์™€์•ผ ๋‹ค์Œ ์ž‘์—…์ด ์ˆ˜ํ–‰ ๊ฐ€๋Šฅํ•จ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ์š”์ฒญ์„ ๋ณด๋‚ผ๋•Œ ์‘๋‹ต ์ƒํƒœ์™€ ๋ฌด๊ด€ํ•˜๊ฒŒ ๋‹ค์Œ ๋™์ž‘์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฐ๊ณผ๊ฐ’์ด ๋‚˜์˜ค๋Š” ๊ฒƒ๊ณผ ๋ณ„๊ฐœ๋กœ ์•„๋ž˜์˜ ์ฝ”๋“œ๋“ค์ด ์‹คํ–‰๋œ๋‹ค ์˜ˆ๋ฅผ๋“ค์–ด, setTimeout() ๋ฉ”์†Œ๋“œ๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ๋น„๋™๊ธฐ APi ์ด๋ฉฐ, ์ฒซ๋ฒˆ์งธ ์ธ์ž๋Š” ์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, ๋‘๋ฒˆ์งธ ์ธ์ž๋Š” ์ง€์—ฐ์‹œ๊ฐ„์ด๋‹ค ๋‘๋ฒˆ์งธ ์ธ์ž๊ฐ€ 0 ์ด๊ธฐ์— 1 -> 2 -> 3 ์œผ๋กœ ์ถœ๋ ฅ๋ ๊ฑฐ๋ผ ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ๋‹ค console.log("1"); setTimeout( () => { console.log("2"); }, 0); console.log("3"); ํ•˜์ง€๋งŒ, ๋น„๋™๊ธฐ ๋ฉ”์†Œ๋“œ๋Š” ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋žจ์ด ๋‹ด๋‹นํ•˜๊ธฐ์—, 1 -> ..

    node ์ด์šฉํ•œ json ์ฝœ๋ฐฑ ํ•จ์ˆ˜

    node ์ด์šฉํ•œ json ์ฝœ๋ฐฑ ํ•จ์ˆ˜

    node.js ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ฝ”๋“œ๋ฅผ ์ฝ์–ด์„œ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ๋Ÿฐํƒ€์ž„ ๋Ÿฐํƒ€์ž„์„ ์‰ฝ๊ฒŒ ๋งํ•˜๋ฉด ์‹คํ–‰๊ธฐ์ด๋ฉฐ ๊ธฐ์กด HTML์— ์ข…์†๋˜์–ด HTML ์—†์ด๋Š” ์ฝ์„ ์ˆ˜ ์—†์—ˆ๋˜ javascript๊ฐ€ ๊ฐ•ํ•ด์งˆ ์ˆ˜ ์žˆ๋˜ ๊ณ„๊ธฐ๋„ javascript๋ฅผ ์‹คํ–‰ํ•ด์ฃผ๋Š” Node๊ฐ€ ์ƒ๊ธด ์ดํ›„๋กœ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์Œ(์ค‘์š”) express ์„ค์น˜๋Š” npm install express json ํ˜•ํƒœ์˜ api๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์ฝ”๋“œ node b.js ๋กœ ์„œ๋ฒ„ ์‹คํ–‰์‹œ์ผœ์ฃผ๊ธฐ /aaaa ๋กœ api๋ฅผ ๋งŒ๋“ค์–ด์ค€ ๊ฒƒ ์œ„์™€ ๊ฐ™์€ ๋‚ด์šฉ์œผ๋กœ, callback ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค 127.0.0.1์€ ๋ฃจํ”„๋ฐฑ ip ์ด๋‹ค ใ…‡

    json ๋ฐ์ดํ„ฐ vscode๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋ณด๋Š” ๋ฐฉ๋ฒ•(feat.์ •๋ ฌ)

    json ๋ฐ์ดํ„ฐ vscode๋กœ ๊น”๋”ํ•˜๊ฒŒ ๋ณด๋Š” ๋ฐฉ๋ฒ•(feat.์ •๋ ฌ)

    ํ™•์žฅ์ž : beautify ์„ค์น˜ ํ›„ json ํŒŒ์ผ์„ ์ƒ์„ฑํ•ด์„œ, f1 ํ‚ค + beautify file ํด๋ฆญํ•˜๋ฉด ์ •๋ ฌ๋˜์ง€ ์•Š์•˜๋˜ ํ…์ŠคํŠธ๊ฐ€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊น”๋”ํ•˜๊ฒŒ ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Œ before after

    [AWS + Filezila] ์›น์„œ๋น„์Šค ๋ฐฐํฌ ์‹œํ˜„ ์˜์ƒ

    [AWS + Filezila] ์›น์„œ๋น„์Šค ๋ฐฐํฌ ์‹œํ˜„ ์˜์ƒ

    ๋‹ค๋ฅธ ๊ฒƒ๋ณด๋‹ค ์‹œํ˜„ ์˜์ƒ(์‚ฌ์ง„)๊ณผ ์ฝ”๋“œ์ด๋‹ค ์ฝ”๋“œ 1. app.py 2. index.html app.py from flask import Flask, render_template, request, jsonify app = Flask(__name__) # DB from pymongo import MongoClient client = MongoClient('mongodb+srv://test:test@cluster0.wpvuwzi.mongodb.net/Cluster0?retryWrites=true&w=majority') db = client.dbsparta @app.route('/') def home(): return render_template('index.html') @app.route("/homework",..