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

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

    [์›น์„œ๋น„์Šค ๋ฐฐํฌ] AWS EC2 + Filezila ์ด์šฉํ•˜๊ธฐ

    [์›น์„œ๋น„์Šค ๋ฐฐํฌ] AWS EC2 + Filezila ์ด์šฉํ•˜๊ธฐ

    ์ŠคํŒŒ๋ฅดํƒ€ ์ฝ”๋”ฉ ์›น๊ฐœ๋ฐœ 5์ฃผ์ฐจ ๋งˆ์ง€๋ง‰ ๊ฐ•์˜ ๋‚ด์šฉ์„ ๋“ฃ๊ณ  ์ž‘์„ฑํ•œ ๋‚ด์šฉ์ด๋ฉฐ, ์ฐธ๊ณ  ๋ฐ”๋ž๋‹ˆ๋‹ค. ์‚ฌ์šฉํ•œ ๊ฒƒ : AWS EC2(Linux Ubuntu 22.04 LTS Server), Git Bash, Filezila, HTML , CSS , JS, Bootstrap, Ajax 1. ์›น์„œ๋น„์Šค๋ž€? ์›น ์„œ๋น„์Šค ๋Ÿฐ์นญ์ด๋ž€ ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ์— ํ•ญ์ƒ ์‘๋‹ตํ•ด์ค„ ์ˆ˜ ์žˆ๋Š” ์„œ๋ฒ„์— ํ”„๋กœ์ ํŠธ๋ฅผ ์‹คํ–‰์‹œํ‚ค๋Š” ๊ฒƒ์„ ์˜๋ฏธ ์–ธ์ œ๋‚˜ ์š”์ฒญ์— ์‘ํ•˜๋ ค๋ฉด ๋‹ค์Œ 2๊ฐ€์ง€๊ฐ€ ์ถฉ์กฑ๋˜์–ด์•ผ ํ•จ ์ปดํ“จํ„ฐ๋Š” ํ•ญ์ƒ ์ผœ์ ธ์žˆ๊ณ , ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜์–ด ์žˆ์–ด์•ผ ํ•˜๊ณ  ๋ชจ๋‘๊ฐ€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ๊ณต๊ฐœ ์ฃผ์†Œ์ธ ๊ณต๊ฐœ IP ์ฃผ์†Œ ( Publick IP Address)๋กœ ๋‚˜์˜ ์›น ์„œ๋น„์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์•ผํ•จ ๊ฐ€๋น„์•„์—์„œ IP ์ฃผ์†Œ๋ฅผ ์‹ ์ฒญํ•˜์—ฌ ์ฃผ์†Œ๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ฌ gs-tom.shop ์ด๋ผ๋Š” ์ฃผ..

    [Ajax, Flask] ๋ฒ„ํ‚ท๋ฆฌ์ŠคํŠธ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

    [Ajax, Flask] ๋ฒ„ํ‚ท๋ฆฌ์ŠคํŠธ ์›น ํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ

    ์‚ฌ์šฉ ์Šคํƒ : HTML, CSS, Javascript, bootstrap, Ajax, Flask, MongoDB Post ๋ฐฉ์‹ ์—ฐ์Šต ( ๊ธฐ๋กํ•˜๋Š” ๋ฐฉ๋ฒ•) API ๋ฅผ ๋งŒ๋“ค๊ณ  ์‚ฌ์šฉํ•ด๋ณด์ž ๋ฒ„ํ‚ท๋ฆฌ์ŠคํŠธ ๊ธฐ๋ก API ( CREATE ์€ POST ๋ฐฉ์‹์œผ๋กœ) ์š”์ฒญ์ •๋ณด๋Š” URL = /bucket ์ด๋ฉฐ ์š”์ฒญ๋ฐฉ์‹์€ POST ๋ฐฉ์‹์œผ๋กœ ํด๋ผ์ด์–ธํŠธ (ajax) ์—์„œ ์„œ๋ฒ„(flask) ๋กœ ๋ณด๋‚ด๋ฉฐ bucket ์„ ๋ณด๋‚ด๋ ค๊ณ  ํ•œ๋‹ค templates ์•ˆ์— ์žˆ๋Š” index.html ์ด ํ”„๋ก ํŠธ์—”๋“œ ๋ถ€๋ถ„์ด๋ฏ€๋กœ ํ†ต์ƒ ํด๋ผ์ด์–ธํŠธ๋กœ ์นญํ•จ bucket์€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ธํ’‹ ํผ์—์„œ ๋ฐ›์€ ๋ฒ„ํ‚ท๋ฆฌ์ŠคํŠธ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ์ด๋ฉฐ ๊ธฐ๋กํ•˜๊ธฐ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ฒŒ ๋˜๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ์„œ๋ฒ„์— ๋ณด๋‚ด๊ฒŒ ๋จ ์ฐธ๊ณ ๋กœ ajax๋ž€ ๊ฐ„๋‹จํžˆ ๋งํ•˜๋ฉด ํŽ˜์ด์ง€ ์ „์ฒด๋ฅผ ๋ฆฌํ”„๋ ˆ์‹œ ํ•˜์ง€ ์•Š๊ณ ์„œ๋„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ..

    [ajax] post, get ๋ฐฉ์‹ ์ด์šฉํ•œ ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ

    [ajax] post, get ๋ฐฉ์‹ ์ด์šฉํ•œ ์›น์‚ฌ์ดํŠธ ๋งŒ๋“ค๊ธฐ

    ์‚ฌ์šฉ ์Šคํƒ : html, css, bootstrap, ajax, mongoDB ์ž๋ฃŒ ๊ตฌ์กฐ : templates์˜ index.html ์ฝ”๋“œ ๊น€์Šน๋ฏผ ํŒฌ๋ช…๋ก ํ˜„์žฌ๊ธฐ์˜จ: 36๋„ ๋‹‰๋„ค์ž„ ์‘์›๋Œ“๊ธ€ ์‘์› ๋‚จ๊ธฐ๊ธฐ app.py ์ฝ”๋“œ - mongoDB ๋Š” ๋ณธ์ธ์˜ DB ๊ณ„์ •์—์„œ์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค URL ์„ ์ด์šฉํ•˜๋ฉด ์ ‘์† ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค 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=majo..

    [python] ์Œ์› ์ •๋ณด ํฌ๋กค๋งํ•˜๊ธฐ(feat.์นœ๊ตฌ ์ถ”์ฒœ ์ด๋ฒคํŠธ)

    [python] ์Œ์› ์ •๋ณด ํฌ๋กค๋งํ•˜๊ธฐ(feat.์นœ๊ตฌ ์ถ”์ฒœ ์ด๋ฒคํŠธ)

    ์ŠคํŒŒ๋ฅดํƒ€ ์›น๊ฐœ๋ฐœ ์ฝ”์Šค 3์ฃผ์ฐจ ๊ณผ์ œ ๊ด€๋ จ ๋‚ด์šฉ - ์‚ฌ์šฉํ•ด๋ณด๊ณ  ์‹ถ์—ˆ๋˜ ๊ธฐ๋Šฅ์€ ์•„๋ž˜ ์ฐธ์กฐ ์˜€์œผ๋‹ˆ, ์‚ฌ์šฉํ•ด๋ณด์ง€๋Š” ๋ชปํ•ด์„œ ์•„์‰ฌ์›€ .next_siblings() - ์ดˆ๊ธฐ์— ssl ์ธ์ฆ ๊ด€๋ จ์—๋Ÿฌ๊ฐ€ ์žˆ์–ด์„œ, requests ์—์„œ verify = False ๋กœ ์„ค์ •ํ•จ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ # genie ํฌ๋กค๋ง # ๊ฐ€์ƒํ™˜๊ฒฝ conda env sparta_py38 ## ํฌ๋กค๋ง ๊ด€๋ จ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import requests from bs4 import BeautifulSoup # ์˜์กด์„ฑ ์—๋Ÿฌ import ssl ## DB # from pymongo import MongoClient headers = { 'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36..

    [html + css + js] ๊ณต๊ณต๊ธฐ์˜จ API ํ™œ์šฉ - ajax

    ์‚ฌ์šฉ ๊ธฐ๋Šฅ - ํ™”๋ฉด ์ ‘์† ์„ฑ๊ณต์‹œ alert ์ฐฝ ๋„์šธ ์ˆ˜ ์žˆ๋„๋ก ํ•จ - ๊ธฐ์˜จ API ํ™œ์šฉํ•˜์—ฌ ์˜จ๋„ ๋ฐ์ดํ„ฐ ๋ถˆ๋Ÿฌ์™€์„œ ํ™”๋ฉด์— ๋™์ ์œผ๋กœ ๋„์›€ - ์ •์ ์ธ ์˜จ๋„๊ฐ€ ๋Œ€์น˜๋จ - ๋‚˜๋จธ์ง€๋Š” ๊ธฐ์กด์— ๋งŒ๋“ค์–ด๋†“์€ ๊น€์Šน๋ฏผ ๋žฉํผ ํŒฌ๋ช…๋ก์—์„œ ๊ตฌํ˜„ํ•˜์˜€์Œ ์ŠคํŒŒ๋ฅดํƒ€ ์›น๊ฐœ๋ฐœ ๊ฐœ๋ฐœ ์ผ์ง€ ์ž‘์„ฑ์œผ๋กœ ์ธํ•˜์—ฌ ๊ธ€ ์ž‘์„ฑ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ ์‚ฌ์šฉํ•œ ์ฝ”๋“œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์Œ ๊น€์Šน๋ฏผ ํŒฌ๋ช…๋ก ํ˜„์žฌ ๊ธฐ์˜จ : 1๋„๋„ ๋‹‰๋„ค์ž„ ์‘์› ๋Œ“๊ธ€ ์‘์› ๋‚จ๊ธฐ๊ธฐ ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom ์ฝ”๋“œ์— ๊ด€ํ•œ ์งˆ๋ฌธ์€ ์–ธ์ œ๋“ ์ง€ ๋Œ“๊ธ€ ๋ฐ”๋ž๋‹ˆ๋‹ค.

    [html/css] ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ 1์ฃผ์ฐจ:์›น๊ฐœ๋ฐœ

    [html/css] ์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉ 1์ฃผ์ฐจ:์›น๊ฐœ๋ฐœ

    ์™„์„ฑ ํ™”๋ฉด - ํฐํŠธ๋Š” ๊ตฌ๊ธ€ ํฐํŠธ๋ฅผ ํ™œ์šฉ - ๋ฒ„ํŠผ, ์ด๋ฏธ์ง€, Quote ๋“ค์€ ๋ถ€ํŠธ์ŠคํŠธ๋žฉ ํ™œ์šฉ - ํ•„์š”์— ๋งž๊ฒŒ ์ปค์Šคํ† ๋งˆ์ด์ง•ํ•จ - ์ปค๋ฒ„ ์ด๋ฏธ์ง€๋ฅผ ์–ด๋‘ก๊ฒŒ ์ฒ˜๋ฆฌํ•˜์—ฌ, ํฐ์ƒ‰ ์ œ๋ชฉ์ด ๋‹๋ณด์ด๊ฒŒ ๊ตฌ์„ฑ - ๋งˆ์ง„ ์ฒ˜๋ฆฌ๋ฅผ ์—ฌ์œ ๋กญ๊ฒŒ ์„ค์ •ํ•˜์—ฌ ๊ณต๊ฐ„๊ฐ์„ ๊ฐ–๊ธฐ ์œ„ํ•ด ๋…ธ๋ ฅ ํŒฌํด๋Ÿฝ ํ™”๋ฉด ํŽ˜์ด์ง€ ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ตฌ์„ฑํ•ด๋ด„ (์‹œ๊ฐ„ : 20๋ถ„) ์ฝ”๋“œ ๊น€์Šน๋ฏผ ํŒฌ๋ช…๋ก ๋‹‰๋„ค์ž„ ์‘์› ๋Œ“๊ธ€ ์‘์› ๋‚จ๊ธฐ๊ธฐ ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom ์ƒˆ๋กœ์šด ์•จ๋ฒ” ๋„ˆ๋ฌด ๋ฉ‹์ ธ์š”!!!!!!!! Tom

    [Vue.js] ๋ฌธ๋ฒ• ๊ธฐ์ดˆ 2ํŽธ(props, v-bind, v-on, router, axios)

    [Vue.js] ๋ฌธ๋ฒ• ๊ธฐ์ดˆ 2ํŽธ(props, v-bind, v-on, router, axios)

    ๐Ÿ’ก watch ์†์„ฑ data์˜ ๋ณ€ํ™”์— ๋”ฐ๋ผ์„œ ํŠน์ • ๋กœ์ง์„ ์‹คํ–‰ ์šฐ์„  vue ์ธ์Šคํ„ด์Šค ๋‚ด๋ถ€์— ๋“ค์–ด๊ฐ€๋Š” ์†์„ฑ ์ˆœ์„œ el, data, watch, methods ๋“ฑ watch ์•ˆ์— data ๊ฐ’์ธ num์„ ๊ณ ์ •ํ•ด๋‘  watch๋ž‘ computed๋Š” ๋น„์Šทํ•œ ๋Š๋‚Œ์„ ๊ฐ–๊ณ  ์žˆ์Œ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์„œ๋น„์Šค ๊ตฌํ˜„์— ์žˆ์–ด์„œ์˜ ์ฐจ์ด์ ์€??? computed ๋Š” ๋‹จ์ˆœํ•œ ๊ณ„์‚ฐ, ํ…์ŠคํŠธ ์ž…๋ ฅ ๊ฐ’์„ ๋ฐ›์•„์„œ validation watch๋Š” ๋ฌด๊ฑฐ์›€, ๋งค๋ฒˆ ์‹คํ–‰๋˜๋Š” ๊ฒƒ์ด ๋ถ€๋‹ด์Šค๋Ÿฌ์šด ๊ฒƒ๋“ค!!!!!!!!( ์ค‘์š”) ๊ฐ’์˜ ๋ณ€ํ™”๋ฅผ ๊ณ„์† ์ถ”์ ํ•จ function(newValue, oldValue) ๋ผ๋Š” ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Œ this.fetchUserByNumber(newValue) ๐Ÿ’ก computed ์†์„ฑ์„ ์ด์šฉํ•œ ํด๋ž˜์Šค ์ฝ”๋“œ ์ž‘์„ฑ๋ฐ” boolean ํƒ€์ž…์— ๋Œ€ํ•œ..

    [Vue.js] ๋ฌธ๋ฒ• ๊ธฐ์ดˆ 1ํŽธ(props, v-bind, v-on, router, axios)

    [Vue.js] ๋ฌธ๋ฒ• ๊ธฐ์ดˆ 1ํŽธ(props, v-bind, v-on, router, axios)

    ์ด๋ฒคํŠธ ์†์„ฑ์— ๋Œ€ํ•ด์„œ ๋‹ค๋ค„๋ณด๊ณ ์ž ํ•œ๋‹ค. ๋ฌผ๋ก , ๊ทธ ์™ธ์—๋„ ์ „๋ฐ˜์ ์œผ๋กœ Vue.js ๋ฅผ ๊ณต๋ถ€ํ•˜๋ฉด์„œ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์„ ์ ๋Š” ๋ธ”๋กœ๊ทธ ๊ธ€์„ ์—ฐ์žฌํ•˜๋ ค๊ณ  ํ•œ๋‹ค. ๋‘์„œ์—†์ด ๋ฐฐ์šด ๋‚ด์šฉ์„ ์ •๋ฆฌํ•œ ๊ฑฐ๋ผ, ์ž˜๋ชป๋œ ๋‚ด์šฉ์ด ์žˆ๋‹ค๋ฉด ์–ธ์ œ๋“ ์ง€ ํ”ผ๋“œ๋ฐฑ ์ฃผ๊ธธ๋ฐ”๋ผ๋ฉฐ, ์ฝ์–ด์ฃผ์…”์„œ ๋ฏธ๋ฆฌ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. Thanks for you guys. ์›น๊ฐœ๋ฐœ์„ ์‰ฝ๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์„ ํƒํ•œ ํ”„๋ ˆ์ž„์›Œํฌ์ธ ๋งŒํผ, React๋‚˜ Angular ๋งŒํผ์€ ์•„๋‹ˆ์ง€๋งŒ, Vue.js ๋„ ์ถฉ๋ถ„ํžˆ ๋งค๋ ฅ์ ์ธ ๋„๊ตฌ์ธ ๊ฒƒ ๊ฐ™์•„์„œ ์žฌ๋ฐŒ๋‹ค. inputfiled + prop ๊ด€๋ จ ๊ฐœ๋… ์ž˜ ์ •๋ฆฌ๋˜์–ด ์žˆ์Œ https://whitepro.tistory.com/255 ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ - forEach ๋ฐฐ์—ด์„ ์ˆœํšŒํ•˜๋Š” ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜ ๊ธฐ์กด ์ฝ”๋“œ const numbers = [1,2,3,4,5] for (i =..

    pycharm ์—์„œ ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import ํ•˜๋Š” ๋ฐฉ๋ฒ•

    pycharm ์—์„œ ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import ํ•˜๋Š” ๋ฐฉ๋ฒ•

    pycharm ์—์„œ ์ž๋™์œผ๋กœ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ import ํ•˜๋Š” ๋ฐฉ๋ฒ• ctrl + alt + s ๋ฅผ ํด๋ฆญํ•˜๊ณ ์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜๋‹จ์— python ์„น์…˜ ๋ถ€๋ถ„์—์„œ show import popup ๋ถ€๋ถ„์„ ํด๋ฆญํ•ด์ค€๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ํด๋ž˜์Šค๋ฅผ ์ž…๋ ฅํ•˜๋ฉด, import ์— ํ•„์š”ํ•œ ์‚ฌํ•ญ๋“ค์ด ๋œฐ ๊ฒƒ์ด๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์‹ค์ œ๋กœ ์ฝ”๋”ฉ์„ ํ• ๋•Œ, class ๊ฐ€ import ๋˜์ง€ ์•Š์•˜๋‹ค๋ฉด alt + enter๋ฅผ ๋ˆŒ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค.