240423_ํšŒ๊ณ _R3F_๋ฉ”ํƒ€๋ฒ„์Šค ์บ ํผ์Šค ๊ต์œก
ยท
[WEB & AI]/[ํšŒ๊ณ ]
๐Ÿ”ต ์ข‹์•˜๋˜ ๊ฒƒ. ์œ ์ง€ ํ•˜๋ฉด ์ข‹์€ ๊ฒƒ (Keep) ์šฐ์„ , 3RF ํŠน๊ฐ•์— ์™€์„œ ์ข‹๋‹ค ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์— ์‹œ๊ฐ„์„ ์“ฐ๋Š”๊ฑฐ ๊ฐ™์•„์„œ ๋‚ด๊ฐ€ ํ•  ์ˆ˜ ์žˆ๋Š” ์žฅ์ ์ด๋ž‘, ์›น์—์„œ, ์‹œ๊ฐ์ ์ธ ์ž„ํŒฉํŠธ๋ฅผ ์ฃผ๋ฉด์„œ, ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ํ›„ํ‚นํ•œ ๊ฒƒ์„ ๋งŒ๋“ค์–ด์ค„ ์ˆ˜ ์žˆ์–ด์„œ ์ข‹๋‹ค. useCallback ์ดํ•ดํ•  ๋•Œ ์ฒ˜๋Ÿผ, ๋‚ด๊ฐ€ ์ดํ•ด ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์„ค๋ช…ํ•ด์•ผ ํ•œ๋‹ค. ์ ๋Š”๊ฒŒ ๋‹ค๊ฐ€ ์•„๋‹ˆ๋‹ค. ๋ฌธ์ œ ์ƒํ™ฉ์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. โญโญโญโญโญ 3D ๋กœ ์ „์‹œ -> ํด๋ฆญ๋ฅ , ์ฆ๊ฐ€์œจ ๋†’์•„์ง€์ง€ ์•Š์„๊นŒ? ์ค‘๊ตญ? 3D ์˜ท ๊ฐ€๊ฒŒ? โญโญโญโญโญ ๊ทธ๋Ÿฌ๋ฉด, ์ด 3D ๋ชจ๋ธ๋ง์„ ์–ด๋””์—์„œ ์–ป์ง€? ์ด๊ฑธ ์–ป์„ ์ˆ˜ ์žˆ์œผ๋ฉด ๋ฒ ์ŠคํŠธ ์•„๋‹Œ๊ฐ€? ๐Ÿ“› ๋ฌธ์ œ๊ฐ€ ๋œ ๊ฒƒ. ๊ณ ์น˜๊ณ  ์‹ถ์€ ๊ฒƒ(Problem) ๋ฌธ์ œํ•ด๊ฒฐ๋ ฅ ์ด๋ผ๋Š” ํ™”๋‘ ์–ด์ œ, ๋ถ€์ŠคํŠธ์บ ํ”„ ์„ค๋ช…ํšŒ๊ฐ€ ์žˆ์—ˆ๋‹ค. ๊ทธ๊ณณ์—์„œ์˜, ํ‚ค์›Œ๋“œ๋Š” '๋ฌธ์ œํ•ด..
4-3_Flask ์‹œ์ž‘ํ•˜๊ธฐ - HTMLํŒŒ์ผ ์ฃผ๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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..
4-2_Flask ์‹œ์ž‘ํ•˜๊ธฐ - ์„œ๋ฒ„๋งŒ๋“ค๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
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..
3-15_ 3์ฃผ์ฐจ ๋ & ์ˆ™์ œ ์„ค๋ช…
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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..
3-14_ Quiz_์›น์Šคํฌ๋ž˜ํ•‘ ๊ฒฐ๊ณผ ์ด์šฉํ•˜๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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..
3-13_์›น์Šคํฌ๋ž˜ํ•‘ ๊ฒฐ๊ณผ ์ €์žฅํ•˜๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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..
3-12_pymongo๋กœ DB์กฐ์ž‘ํ•˜๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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' : &..
3-11_mongoDB ์—ฐ๊ฒฐํ•˜๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (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..
3-10_mongoDB ์‹œ์ž‘ํ•˜๊ธฐ
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (goal) 1. ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๊ฒƒ ๋ชฝ๊ณ  DB ํšŒ์›๊ฐ€์ž… โ…ก. ํ•ด๋ณด๊ธฐ 1. ํ•ด๋ด ํšŒ์› ๊ฐ€์ž… https://account.mongodb.com/account/register ์ด๋ ‡๊ฒŒ ์„ ํƒ ์š”๊ธˆ์ œ ์„ ํƒ ์‹ฑ๊ฐ€ํฌ๋ฅด, CREATE new project ๊ณ„์† create connect ํด๋ฆญ #mongoDB_Cluster0_์ ‘์†id๋ฐ๋น„๋ฒˆ ์œ ์ € ์ด๋ฆ„์€ ํŠน์ˆ˜๋ฌธ์ž ์—†์ด ํ•จ! โญโญโญโญโญ ^ce832d ์ •ํ•ด๋†“์€๊ฑด ์ˆ˜์ • ์‚ญ์ œ ๊ฐ€๋Šฅํ•จ. ๊ทธ๊ฑด ์—ฌ๊ธฐ์—์„œ ํ•จ ์—ฌ๊ธฐ๋ถ€ํ„ฐ๋Š” '์—ฐ๊ฒฐ' ํ•˜๋Š” ๋ฌธ์ œ -> ๋‹ค์Œ ๊ฐ•์˜ํ•ด์„œ โญโญโญโญโญ -
3-9_DB๊ฐœ๊ด„
ยท
[WEB & AI]/์ŠคํŒŒ๋ฅดํƒ€์ฝ”๋”ฉํด๋Ÿฝ_์›น๊ฐœ๋ฐœ์ข…ํ•ฉ๋ฐ˜
โ… . ์ด๋ฒˆ ํšŒ์ฐจ ํ•™์Šต ๋ชฉํ‘œ (goal) 1. ๋ฐฐ์šฐ๊ณ ์ž ํ•˜๋Š” ๊ฒƒ DB ๋ž€ ๋ญ”์ง€! ์™œ ์“ฐ๋Š”๊ฑด๊ฐ€! โ…ก. ํ•ด๋ณด๊ธฐ 1. DB ํ•„์š”์„ฑ ๋ฐฉ ์ •๋ฆฌ ํ•˜๋Š” ์ด์œ ๋Š”? ๋‚˜์ค‘์— ์ž˜ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ ๊ต๋ณด๋ฌธ๊ณ ์— ๊ฐ€์„œ ๋ฏผ์Œ์‚ฌ ์ฑ… ๋‹ค ์ฃผ์„ธ์š” -> ์ฐพ๊ธฐ ์‰ฌ์›€ ์ฝ”๋”ฉ์ด๋ผ๋Š” ๋‹จ์–ด๊ฐ€ ๋“ค์–ด๊ฐ„๊ฑฐ ๋ชจ๋‘ ์ฃผ์„ธ์š” -> ์ •๋ ฌ์ด ์•ˆ ๋˜์–ด ์žˆ๋‹ค๋ฉด -> ๋‹ค ๋ด์•ผ ํ•จ. '์ •๋ ฌ์ด ๋˜์–ด ์žˆ๋Š” ๊ฒƒ' = ์ •๋ ฌ์ด ๋œ ์ˆœ์„œ๊ฐ€ ์žˆ๋‹ค = Index ๊ฐ€ ์žˆ๋‹ค. โญโญโญโญโญโญโญโญโญ ๊ทธ๋Ÿฌ๋ฉด, ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์™œ ์“ฐ๋Š”๊ฑฐ์•ผ? ์ˆœ์„œ๋Œ€๋กœ ==์ž˜ ์ •๋ ฌ==ํ•ด ๋‘์–ด์„œ โญโญโญ ๋‚˜์ค‘์— ์ฐพ์„ ๋•Œ, ==์ž˜ ์ฐพ๊ฒŒ== ํ•˜๊ธฐ ์œ„ํ•ด์„œ DB ์ข…๋ฅ˜ SQL(RDBMS) ์นธ์„ ๋งŒ๋“ค์–ด ๋†“๊ณ , ์ฑ„์šฐ๋Š” ๋А๋‚Œ EX) ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ์ฑ„์šฐ๋Š” ๋А๋‚Œ ==ํ–‰/์—ด์˜ ์ƒ๊น€์ƒˆ๊ฐ€ ์ •ํ•ด์ง„ ์—‘์…€==์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ..