git rm -r --cached .
git add .
git commit - m 'messege'
git push {remote} {branch} (git push origin main)
๊ฐ์ํ๊ฒฝ ๋ง๋ค ํด๋์
python -m venv ๊ฐ์ํ๊ฒฝ์ด๋ฆ
flask run --port=5002
#flask ํฌํธ ๋ฐ๊พธ๊ธฐ
#localhost:5002 ๋ก๋ ํฌ๋กฌ์์ ์ ์๊ฐ๋ฅ (์ ํ๋ณด์๋ฌธ์ )
์๋ฒ ์คํ๋ถํฐ ๊ณ์์คํ๊น์ง
ssh -i ํค์ฒด์ธ๊ฒฝ๋ก/ํค์ด๋ฆ.pem ubuntu@์ค์ ip์ฃผ์
cd app.pyํ์ผ ์๋ ๊ณณ
nohup python app.py &
์๋ฒ ๋๊ธฐ
ps -ef | grep 'app.py'
kill -9 ํฌํธ
์๋ฒ์ ์ผ์ ธ์๋ ๋ด ์น์ฌ์ดํธ ์ ๋ฐ์ดํธ ํ ๊ฒฝ์ฐ ์์ ์งํค๊ธฐ
1. ์๋ฒ๋ฅผ ๋๋ค.
2. ์๋์๋ (app.py๋ค์ด๊ฐ ํด๋)ํด๋ ์น ์ง์ด๋ค.
3. Filezila๋ฅผ ์ด์ฉํ์ฌ ์๋ก์ด ํ์ผ์ ํด๋์งธ ์ฎ๊ฒจ์ค๋ค.
4. ์๋ฒ๋ฅผ ํจ๋ค.
/basic.naver?code=161967#
์ํ์ฐฝ๊ตฌ์ ๊ฐ์ ? ์ฃผ๋ฏผ๋ฑ๋ก์ฆ์ = ์ฃผ๋ฏผ๋ฒํธ ๋ฅผ ๋ค๊ณ ์จ๊ฒฉ
bad(ํ ์คํธ ๋นจ๊ฐ์ ์ ์ฉ)๋ผ๋ ์คํ์ผ์ ์๋ก ์๊ธฐ๋ ๊ณณ์ (class)์ ์ฉ์์ผ์ผ ํ๋ค.
๋ณ์ ์ ์ธ์ ํ๋ฒ๋ง .. (let temp_html ๊ณ์ ์ ์ธํด์ฃผ๋ฉด ์์ ์๋ฌด๊ฒ๋ ์๋ฌ๋ค..!)
๊ฒฐ๊ตญ Get์ผ๋ก response๋ฅผ url ์์ ๊ฐ์ ธ์ค๋๋ฐ realtimecityair์ row์์ row์์ ๋ฐ์ดํฐ ๊ฐ์๋งํผ ๋๋ฉด์ ๊ตฌ์ด๋ฆ์ด๋ ๊ตฌ๋ฏธ์ธ๋จผ์ง๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ถ๋ ฅํด์ฃผ๋ ๊ฑฐ์ (90์ ๋์ผ๋ฉด ๋นจ๊ฐ๊ธ์จ๋ก)
i๊ฐ ์ซ์์ธ๋ฐ ๋ฌธ์์ด๋ก ๋ฃ์์ด์ โiโ ์ค๋ฅ๋ฌ์์
response ์คํ ์ค๋ฅ
response ๊ผญ ์ฐ์ด๋ณด๊ธฐ (console.log)
msg์ url ๋ฐ๊พธ๋๊ฒ ํต์ฌ์ธ ๊ฒ์ด ์์์ - ์ด๊ฑธ ์ด์ฉํด๋ณด๋ฉด ์ํฝ์ฟ ํค ๋ฝ์ ํ๋ฅ ๊ฐ์๊ฑฐ (๊ฒ์์์ดํ ) ๊ณ์ฐํ ์๋ ์๊ฒ ๋ค.. ๋ฉ์ดํ ์์ดํ ์ด๋ผ๋์ง ์๋๋ฉด ๋์ ์ด์ธ๋ฆฌ๋ ์บ๋ฆญํฐ๋? ํด์ ์ด๋ฆ ๋ฃ์ผ๋ฉด ๋๋ค์ผ๋ก ๋์ฒ ์บ๋ฆญํฐ ์ถ๋ ฅ..! ์ค์ฐ
๋ค๋ฅธ API๋ ๋ฃ์ด๋ณด๊ณ ์ถ๋ค! ์๋ฅผ๋ค๋ฉด ๋ ์จ API์ ๋์์๋ ๊ตฌ๋ฆ์ ๋๋ ๋ ์จ์ ๋ฐ๋ผ ๋ฐ๋๋ icon , city ์ ๊ด๋ จ๋ ๋ค๋ฅธ API ๋ค์ ๋ง์ด ์ด์ฉํด์ ์น์ฌ์ดํธ์ ๋ฃ์ด๋ณด๊ณ ์ถ๋ค! (๋ค์ด๋ฒ ๋ธ๋ก๊ทธ ์ด์ฐฝ๊ธฐ์ ๋ง์ API๋ฅผ ๋ด ๋ธ๋ก๊ทธ์์ ๋ณผ ์ ์์๋๋ฐ ๋ค ์ด๋ฐ์์ผ๋ก ์ด์ฉํ๊ฑธ๊น?)
ํ์ด์ฌ ์คํฌ๋ํ ์ฐ์ตํ ๋ ์ด๋ถ๋ถ์ด ๋งํ์๋๋ฐ ์ด๋ ๊ฒ ๋ถ๋ฌ์ค๋ฉด ๋๋๊ฑฐ์๋ค๋!
td:~(1) ์ด๋ถ๋ถ์ ๋จผ์ ์ถ๋ ฅํด๋ณด๊ณ (print(rank)) ๊ฐ์ ธ์์ผ ํ๋ ๊ฐ์ ์์๋ด์ ๋์
๋๋ฆฌํํ๋ก ๊ฐ์ ธ์์ค๋ค.
๋ณ์ ๊ณผ ์ํ์ ๋ชฉ์ ๊ฐ์ ธ์ฌ๋ .text
rank ๊ฐ์ ๊ฐ์ ธ์ฌ๋ [โaltโ]
DB์ ๋ ๊ฐ์ง ์ข
๋ฅ
์นธ์ ๋ง๋ค๊ณ ๊ทธ ์์ ์ฑ์ฐ๋ ๊ฒ (์์
) : SQL - ์ด์ํ ๋ฐ์ดํฐ ๋ค์ด์ฌ์ผ์๊ณ ๋ฐ์ดํฐ ๋นจ๋ฆฌ ์ฐพ์ ์ ์์, ์๋ก์ด ํ์์ ๋ฐ์ดํฐ ๋ค์ด์ฌ๋๋ง๋ค ๋๊ฐ!
์ ํด์ง ์นธ ์์ด ๋ค์ด์ค๋๋๋ก ์๋ ๊ฒ : Not only SQL (NoSQL) - ์ด๊ธฐ์๋น์ค์์ ๋ง์ด ์ฑํ, ๋ชจ๋ ๋ฐ์ดํฐ ํ์ ๋ฐ์ ์ ์์ผ๋
DB ?
DB = ํ๋ก๊ทธ๋จ (๋ฐ์ดํฐ๋ฅผ ์ '์ฐพ๊ธฐ' ์ํ ํ๋ก๊ทธ๋จ)
ํด๋ผ์ฐ๋ ํ๊ฒฝ์์ ์ ๊ณตํ๋ DB ์ด์ฉ - ์ ์ ๋ชฐ๋ฆฌ๊ฑฐ๋ DB๋ฐฑ์
, ๋ชจ๋ํฐ๋ง ์ฉ์ดํจ (์์ฆ ํธ๋ ๋์)
์ฌ์ฉ: mongoDB / ํด๋ผ์ฐ๋ ์ปดํจํฐ ๋ฐ์ , id pw๋ acess ๊ถํ ์ค์ ํด์ค
์ฌ์ฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ : pymongo, dnspython, BeautifulSoup,requests ๋ผ์ด๋ธ๋ฌ๋ฆฌ
#ํ์๊ฐ์ , ํํดํ ๋ ์ฐ์ผ๋ฏ. ๋ฐ์ดํฐ์ ๊ฐ์ ์ด๋ฆ์ 2๊ฐ ๋ง๋ค๊ณ delete๋ฅผ ์คํํด๋ณด๋ฉด ํ๋๋ง ์ง์์ง๋ ๊ฒ์ผ๋ก ๋ณด์, ์ id ์ค๋ณต์ด ์๋๋์ง ์ ์ ์์.
#์ค๋ฅ ํด๊ฒฐ : vscode๋ก DB์ ์ ๋ ฅ๊ถํ์ด ์์๋๋ฐ ์ด๋ pymongo ๊ฐ์ธ์ค์ ์ admin์ค์ ํ๋ฉด admin๊ถํ์ผ๋ก ๊ฒ์ ๊ฐ๋ฅ (ํน์ฝฉํ์ํ ํ์์๊ฐ์ ์๊ธฐํด๋ดค๋ค ๋ค๊ฐ์ด ๊ณ ๋ฏผํด์ฃผ์ ์ ๋ ์ฌ๋ฐ์๋..)
#์๋ก์ด ์๋ :
๊ฐ์ฌ๋ ์ฝ๋
target_movie = db.movies.find_one({'title':'๊ฐ๋ฒ๋์'})
target_star = target_movie['star']
movies = list(db.movies.find({'star':target_star}))
for movie in movies:
print(movie['title'])
๋์์ฝ๋ (ํ์ค์ ๋ฃ๊ณ ์ถ์๋ค..)_ ๋ค๋ฅธ ๋ก์ง์ผ๋ก ์ง๋ ๊ณผ์ ์ด ์์ ์ฌ๋ฐ๊ณ ์ฑ๊ณตํ๋ฉด ๋์ฌ๋ฐ์ (์ฃผ์ํ ์ ์ 0์ด ๋ฌธ์์ด์ด๋ผ๋๊ฑฐ.)
์น์๋น์ค : ๋์ ๋ณด์ด๋๊ฑฐ(HTML, CSS, Javascript): 1~2์ฃผ์ฐจ+๋์๋ณด์ด๋๊ฑธ ์ฃผ๋ ์๋ฒ(python:์๋ฒ ๋ง๋ค์์๋ ํ๋ก๊ทธ๋๋ฐ์ธ์ด)
4์ฃผ์ฐจ-5์ฃผ์ฐจ : ๋ ์ฌ์ด ์ฐ๊ฒฐ
flask ์ค์น ํ์
๋ฐฑ-ํ๋ก ํธ ์ฃผ๊ณ ๋ฐ์๋ Get, Post ์์ฒญ๋ฐฉ์ ์
ํ!
ํ๋ก์ ํธ ๊ตฌํ ์ ์ ํ๋ก์ ํธ์ ๊ตฌํํ ๊ธฐ๋ฅ(์กฐ๊ฐ๊ธฐ๋ฅ) ๋จผ์ ๋ฐ๋ก ๊ตฌํ ํด๋ณด๋๊ฒ ๋์๋จ
ex-๋ฉํํ๊ทธ๋ก ์กฐ๊ฐ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
: ์ด ์ฌ์ดํธ๋ ๋ํ
๋ ๊ฒ์์ธ '๋๋ฌผ์ ์ฒ' ์ ์ ๋ค์ด ์ด์ฉํ๋ฉด ์ข๊ฒ ๋ค ์ถ์ ์ปจํ
์ธ ๋ฅผ ๋ฐํ์ผ๋ก ๋ง๋ค์ด๋ณด์๋ค. ๋๋ฌผ์ ์ฒ์ ์์ ์ด ๋ง์ ์ด์ฅ๋(?)์ด ๋์ด์ ๊ทธ ๋ง์์ ๊ฐ๊พธ๋ ์์ ๋๊ฐ ๋์ ๊ฒ์์ธ๋ฐ ์ ์ ๋ค์ ์์ ์ ๋ง์์ ์์ฃผ ์์๊ฒ (์ ๋ง ํ์ค๊ณผ ๊ตฌ๋ถ ์๋ ์ ๋์ ๋ฅ๋ ฅ์๋ค๋ ๋ง๋ค..!) ๊พธ๋ฏผ๋ค. ๊ทธ๋ ์ง๋ง ์ด ๋ง์์ ์ฐพ์๊ฐ๊ธฐ ์ด๋ ต๋ค.. (์ผ์ผ์ด ๊ฒ์ํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๊ธฐ ๋๋ฌธ) ๊ทธ๋ ๊ธฐ์ ๋๋ฌผ์์ฒ ์ ์ ๋ก์ ํ์ํ๋ค๊ณ ์๊ฐ๋์ด์(?) ๋ง๋ค์ด๋ณด์๋ค!
์ถ๊ฐํ๋ฉด ์ข์ ๊ธฐ๋ฅ : ํฌ๋กค๋ง์ ์ด์ฉํ ์ฒ ์ด๋ฏธ์ง ํ์ผ ๊ฐ์ ธ์ค๊ธฐ, ๊ฒ์๊ธฐ๋ฅ, ์ด๋ฏธ์ง ์นด๋ ๊ธฐ๋ฅ, ์กฐ๊ธ๋ ์ง๊ด์ ์ธ ๋ฉ์ธํ๋ฉด ๋ฑ
์ด์ ๊ด๋ จํ ์์ธํ ์ฝ๋๋ ๋์_๊นํ๋ธ์ ๊ฒ์ํด ๋์๋ค ๐ฉ