๋ชฉ๋ก[WEB & AI] (feat. ์ทจ์ค) (75)
Hello creators ๐
๐ต ์ข์๋ ๊ฒ. ์ ์ง ํ๋ฉด ์ข์ ๊ฒ (Keep) ์ฐ์ , 3RF ํน๊ฐ์ ์์ ์ข๋ค ๋ด๊ฐ ํ ์ ์๋ ์ฅ์ ์ ์๊ฐ์ ์ฐ๋๊ฑฐ ๊ฐ์์ ๋ด๊ฐ ํ ์ ์๋ ์ฅ์ ์ด๋, ์น์์, ์๊ฐ์ ์ธ ์ํฉํธ๋ฅผ ์ฃผ๋ฉด์, ์ฌ๋๋ค์๊ฒ ํํนํ ๊ฒ์ ๋ง๋ค์ด์ค ์ ์์ด์ ์ข๋ค. useCallback ์ดํดํ ๋ ์ฒ๋ผ, ๋ด๊ฐ ์ดํด ํด์ผ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๋ช ํด์ผ ํ๋ค. ์ ๋๊ฒ ๋ค๊ฐ ์๋๋ค. ๋ฌธ์ ์ํฉ์ ์ ์ํ ์ ์์ด์ผ ํ๋ค. โญโญโญโญโญ 3D ๋ก ์ ์ -> ํด๋ฆญ๋ฅ , ์ฆ๊ฐ์จ ๋์์ง์ง ์์๊น? ์ค๊ตญ? 3D ์ท ๊ฐ๊ฒ? โญโญโญโญโญ ๊ทธ๋ฌ๋ฉด, ์ด 3D ๋ชจ๋ธ๋ง์ ์ด๋์์ ์ป์ง? ์ด๊ฑธ ์ป์ ์ ์์ผ๋ฉด ๋ฒ ์คํธ ์๋๊ฐ? ๐ ๋ฌธ์ ๊ฐ ๋ ๊ฒ. ๊ณ ์น๊ณ ์ถ์ ๊ฒ(Problem) ๋ฌธ์ ํด๊ฒฐ๋ ฅ ์ด๋ผ๋ ํ๋ ์ด์ , ๋ถ์คํธ์บ ํ ์ค๋ช ํ๊ฐ ์์๋ค. ๊ทธ๊ณณ์์์, ํค์๋๋ '๋ฌธ์ ํด..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ flask ์์ ๋ง๋ ๋ฃฐ์ ๋ฐ๋ผ๊ฐ์ผ ํจ โญโญโญ โ ก. flask ํ๋ ์์ํฌ์ rule ์ ๋ฐ๋ผ๊ฐ๋ณด๊ธฐ 1. ํด๋ ๊ตฌ์กฐ ๋ฐ๋ผํ๊ธฐ templates : HTML ํ์ผ์ด ๋ด๊ธฐ๋ ๊ณณ static : CSS, ์ด๋ฏธ์ง ํ์ผ์ด ๋ด๊ธฐ๋ ๊ณณ html ์ด ๋ค์ด๊ฐ๋ ์๋ฆฌ! from flask import Flask app = Flask(__name__) @app.route('/') def home(): return ' ๋๋ ๋ฒํผ์ด๋ค. ' # โ ์ฌ๊ธฐ๊ฐ html ๋ค์ด๊ฐ๋ ์๋ฆฌ, templates ์ค index.html ํ์ผ ์์ฑํด์ ๊ฐ์ ธ์ฌ ๊ฒ. if __name__ == '__main__': app.run('0.0.0..
1. ํด๋ด ์ด ๊ฒฝ๋ก๋ก ๋ค์ด๊ฐ๊ธฐ ์๋ฒ ๋ง๋๋ ํ๋ ์์ํฌ flask ์ค์น ์ง๊ธ vscode์์ ๊ฐ์ํ๊ฒฝ์ด ์ ๋ง๋ค์ด์ ธ์ ๊ทธ๊ฑฐ ํด๋ณด๊ณ ์์ผ ํจ. [[vscode_๊ฐ์ํ๊ฒฝ๋ง๋ค๊ธฐ]] ๊ทธ ๋ค์ flask ์ค์นํ๊ธฐ [[202302031512_pip ๋ฑ ํ๋ ์์ ์ค์น ๊ด๋ จ ๋ช ๋ น์ด]] ์ด๊ฑฐ ์ฐธ๊ณ ํด์ ์ค์นํจ ๊ทธ๋ผ, flask ๋? flask ๋ ์๋ฒ๋ฅผ ํธํ๊ฒ ๋ง๋ค ์ ์๊ฒ ํด์ฃผ๋ ํ๋ ์์ํฌ. vs code ์์ ์ด์ ํด๋ณด๊ธฐ app.py ํต์์ ์ผ๋ก ์ด ์ด๋ฆ์ ๋ง์ด ์ ํ๋ผ์คํฌ ์์ ์ฝ๋ ์ค๋ํซ from flask import Flask app = Flask(__name__) @app.route('/') def home(): return 'This is Home!' if name == 'm..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ์ง๋ ๋ฎค์ง ์ฌ์ดํธ์ '์์, ๊ณก ์ ๋ชฉ, ๊ฐ์' ๋ฅผ ์คํฌ๋ํ ํ๊ธฐ โ ก. ํด๋ณด๊ธฐ 1. ํด์ฆ ํ ๋ ํํธ 2. ์ฐ์ ์๋ํ๋ ์ฝ๋ #jquery_๋ณ์ํ์ฉ๊ฝ์์ฃผ๊ธฐ_์์์ฝ๋ #jquery_append_์ถ๊ฐ๋ก๋ถ์ด๊ธฐ_์์์ฝ๋ strip() ์ฐธ์กฐํ ์ฌ์ดํธ https://codechacha.com/ko/python-string-strip/ ์ฐ์ ์๋ํ๋ ์ฝ๋ import requests from bs4 import BeautifulSoup ์ค์ ์ฌ๋์ธ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ (๋ง์น, ๋ธ๋ผ์ฐ์ ์์ call ์ ๋ ๋ฆฌ๋ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ , ์ฌ๋์ธ ๊ฒ ์ฒ๋ผ ํด์ฃผ๋ ค๊ณ ) headers = {'User-Agent' : 'Mozilla/5.0..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ๊ฐ๋ฒ๋์ ํ์ ๊ฐ์ ธ์ค๊ธฐ ๊ฐ๋ฒ๋์๊ณผ ํ์ ๋์ผํ ์ํ ์ฐพ๊ธฐ ๊ฐ๋ฒ๋์ ํ์ ์ '0' ์ผ๋ก ๋ง๋ค๊ธฐ โ ก. ํด์ฆ ํ์ด๋ณด๊ธฐ 1. ๊ฐ๋ฒ๋์ ํ์ ๊ฐ์ ธ์ค๊ธฐ ์ฐ์ ์๋ํ๋ ์ฝ๋ from pymongo import MongoClient # MongoDB ์์, 'ID:test PW:sparta, cluster0, ํด๋น ์ฃผ์'๋ก ๋ค์ด๊ฐ. # 'qsaohhz.mongodb.net/?retryWrites=true&w=majority' ์ด ์ฃผ์๋ ์ ํ ํ ๋ ๋์๋๋ฐ ๋ณต์ต์ ๋ค์ ํ์ธ client = MongoClient('mongodb+srv://test:sparta@cluster0.qsaohhz.mongodb.net..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ํฌ๋กค๋งํ ์ํ, ์์, ์ ๋ชฉ, ๋ณ์ , ์ DB ์ ๋ฃ๊ธฐ โ ก. ํด๋ณด๊ธฐ 1. ํฌ๋กค๋งํ ์ฝ๋ ๊ฐ์ ธ์ค๊ธฐ ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ๐ฅ ๊ทผ๋ฐ ์ด๊ฒ ์๋ ์ ํด โญโญโญโญโญโญโญโญโญโญโญ ๊ทผ๋ฐ ์ฃผ์์ ์ดํดํ๋๋ฐ ๋์์ด ๋ ์ ์์๊ฑฐ ๊ฐ์๋ฐ import requests from bs4 import BeautifulSoup # URL์ ์ฝ์ด์ HTML๋ฅผ ๋ฐ์์ค๊ณ , headers = {'User-Agent' : 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)AppleWebKit/537.36 (KHTML, like Gecko) Chrome/73.0.3683.86 Safari/537.36'} data = requests.get('https://m..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ๋ณธ๊ฒฉ์ ์ผ๋ก mongoDB ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ ์์๋ณด๊ธฐ database ์ ๋ฐ์ดํฐ๋ฅผ 1) ๋ฃ๊ฑฐ๋ 2) ๊ฐ์ ธ์ค๊ฑฐ๋ 3) ์์ ํ๊ฑฐ๋ 4) ์ญ์ ํ๋ ๋ฒ โ ก. ํด๋ณด๊ธฐ 1. ๋ฐ์ดํฐ ๋ฃ๋ ๊ฒ ๋์๊ฐ๊ธด ํจ. ๊ทผ๋ฐ ์ด๋ ๊ฒ๋ ์ ์ โญโญโญโญโญ from pymongo import MongoClient mongoDB ํํ์ด์ง์์ ๊ฐ์ ธ์์ผ ํ๋ ๋ถ๋ถ โ client = MongoClient('mongodb+srv://test:sparta@cluster0.qsaohhz.mongodb.net/?retryWrites=true&w=majority') db = client.dbsparta [1์ฐจ] ์ฐ์ ๋์๊ฐ๋ ์ฝ๋ doc = { 'name' : &..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ์ง๊ธ๊น์ง ํ๊ฑด, mongoDB ์์ ๋น๋ ค์ฃผ๋ Atlas ์ปดํจํฐ๋ฅผ ์ฐ๋ฆฌ์ชฝ์ผ๋ก ํ๋ ๋ฐฐ์ ๋ฐ์ ๊ฒ. ๊ทธ ์ปดํจํฐ์ ์ ์ํ ์ ์๋ id : test / pw : sparta ๋ฅผ ๋ง๋ฆ ๋๋ id : DJ_test / pw : ์ฉก๋๊ธฐ์ผ๊ณต์ค๋๋์ค ์ด๋ฒ์ ํ์ด์ฌ์ผ๋ก DB ์ ์ ์ํ๊ธฐ โ ก. ํด๋ณด๊ธฐ 1. ํด๋ด ์ ์ํ๋ ค๋ฉด ํ์ํ ํจํค์ง pymongo, dnspython vs code ์ ์ด๊ฑฐ ์ค์น ํจ pymongo ์ค์น pip3 install pymongo # for mac pip install pymongo # for window pymongo ๋ฒ์ ํ์ธ ๋๋ pip list ์ด๊ฑธ๋ก ํ์ธ ๋๋ pip install pymongo pymongo extension..
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ ๋ชฝ๊ณ DB ํ์๊ฐ์ โ ก. ํด๋ณด๊ธฐ 1. ํด๋ด ํ์ ๊ฐ์ https://account.mongodb.com/account/register ์ด๋ ๊ฒ ์ ํ ์๊ธ์ ์ ํ ์ฑ๊ฐํฌ๋ฅด, CREATE new project ๊ณ์ create connect ํด๋ฆญ #mongoDB_Cluster0_์ ์id๋ฐ๋น๋ฒ ์ ์ ์ด๋ฆ์ ํน์๋ฌธ์ ์์ด ํจ! โญโญโญโญโญ ^ce832d ์ ํด๋์๊ฑด ์์ ์ญ์ ๊ฐ๋ฅํจ. ๊ทธ๊ฑด ์ฌ๊ธฐ์์ ํจ ์ฌ๊ธฐ๋ถํฐ๋ '์ฐ๊ฒฐ' ํ๋ ๋ฌธ์ -> ๋ค์ ๊ฐ์ํด์ โญโญโญโญโญ -
โ . ์ด๋ฒ ํ์ฐจ ํ์ต ๋ชฉํ (goal) 1. ๋ฐฐ์ฐ๊ณ ์ ํ๋ ๊ฒ DB ๋ ๋ญ์ง! ์ ์ฐ๋๊ฑด๊ฐ! โ ก. ํด๋ณด๊ธฐ 1. DB ํ์์ฑ ๋ฐฉ ์ ๋ฆฌ ํ๋ ์ด์ ๋? ๋์ค์ ์ ์ฐพ๊ธฐ ์ํด์ ๊ต๋ณด๋ฌธ๊ณ ์ ๊ฐ์ ๋ฏผ์์ฌ ์ฑ ๋ค ์ฃผ์ธ์ -> ์ฐพ๊ธฐ ์ฌ์ ์ฝ๋ฉ์ด๋ผ๋ ๋จ์ด๊ฐ ๋ค์ด๊ฐ๊ฑฐ ๋ชจ๋ ์ฃผ์ธ์ -> ์ ๋ ฌ์ด ์ ๋์ด ์๋ค๋ฉด -> ๋ค ๋ด์ผ ํจ. '์ ๋ ฌ์ด ๋์ด ์๋ ๊ฒ' = ์ ๋ ฌ์ด ๋ ์์๊ฐ ์๋ค = Index ๊ฐ ์๋ค. โญโญโญโญโญโญโญโญโญ ๊ทธ๋ฌ๋ฉด, ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ์ ์ฐ๋๊ฑฐ์ผ? ์์๋๋ก ==์ ์ ๋ ฌ==ํด ๋์ด์ โญโญโญ ๋์ค์ ์ฐพ์ ๋, ==์ ์ฐพ๊ฒ== ํ๊ธฐ ์ํด์ DB ์ข ๋ฅ SQL(RDBMS) ์นธ์ ๋ง๋ค์ด ๋๊ณ , ์ฑ์ฐ๋ ๋๋ EX) ์คํ๋ ๋์ํธ๋ฅผ ๋ง๋ค๊ณ ์ฑ์ฐ๋ ๋๋ ==ํ/์ด์ ์๊น์๊ฐ ์ ํด์ง ์์ ==์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ฒ๊ณผ ์ ์ฌํฉ๋๋ค. ..