Notice
Recent Posts
Recent Comments
ยซ   2024/12   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
In Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

A Joyful AI Research Journey๐ŸŒณ๐Ÿ˜Š

[49] 230309 Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด: 8. ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 49์ผ] ๋ณธ๋ฌธ

๐ŸŒณBootcamp Revision 2023โœจ/Python, Flask, SQL

[49] 230309 Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด: 8. ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 49์ผ]

yjyuwisely 2023. 3. 9. 09:17

230309 Thu 49th class

Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด
์ง„๋„: p. 212 ~ (๊ต์žฌ: IoT ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 4 ์ •์„, ์ €์ž: ์ตœ์ฃผํ˜ธ , ๊น€์žฌ๋ฒ” , ์ •๋™์ง„)
๊ต์žฌ ์ฝ”๋“œ ๊นƒํ—ˆ๋ธŒ: https://github.com/codingspecialist/RaspberryPi4-Book-Example
๊ต์žฌ ์†Œ์Šค ๋ฐ PPT: http://jspstudy.co.kr/main/main.jsp
์ €์ž ์นดํŽ˜: https://cafe.naver.com/metacoding

 

IoT ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 4 ์ •์„ | ์ตœ์ฃผํ˜ธ - ๊ต๋ณด๋ฌธ๊ณ 

IoT ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 4 ์ •์„ | ใ€ŽIoT ์‚ฌ๋ฌผ์ธํ„ฐ๋„ท์„ ์œ„ํ•œ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด 4 ์ •์„ใ€์€ ์™•์ดˆ๋ณด๋„ ๋ผ์ฆˆ๋ฒ ๋ฆฌํŒŒ์ด๋ฅผ ์ด์šฉํ•ด ๋‹ค์–‘ํ•œ IoT๋ฅผ ์ง์ ‘ ๊ฐœ๋ฐœํ•  ์ˆ˜ ์žˆ๋„๋ก ์ „๊ธฐ์ „์ž ๊ธฐ์ดˆ ์›๋ฆฌ๋ถ€ํ„ฐ ์„ผ

product.kyobobook.co.kr

์˜ค๋Š˜ ๋ฐฐ์šด ๊ฒƒ ์ค‘ ๊ธฐ์–ตํ•  ๊ฒƒ์„ ์ •๋ฆฌํ–ˆ๋‹ค.


๋ฐฐ์› ๋˜ ๊ฒƒ ์ค‘ ๋‹ค์‹œ ๊ธฐ์–ตํ•˜๊ธฐ

2023.02.23 - [๐ŸŒณK-Digital Revision 2023โœจ/Raspberry Pi, Linux, Python] - [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 40์ผ] 230223 Ch. 3 ๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด๋ฅผ ์œ„ํ•œ ํŒŒ์ด์ฌ ๊ธฐ์ดˆ ๋ฐฐ์šฐ๊ธฐ: 1. ํŒŒ์ด์ฌ ์‹œ์ž‘ํ•˜๊ธฐ, 2. ํŒŒ์ด์ฌ ์ž๋ฃŒํ˜•
ํŒŒ์ด์ฌ

1. ๋ฆฌ์ŠคํŠธ ์ž๋ฃŒํ˜•: [,] ๋Œ€๊ด„ํ˜ธ๋ฅผ ์—ด๊ณ  ๋‹ซ๋Š”๋‹ค. ๋ฐฐ์—ด๊ณผ ํก์‚ฌํ•œ ๊ฐœ๋…์ด๋‹ค.

[0,0,0,0]
[1, 2, 3]
li = [10,"์žฅ๋™๊ฑด",23,"์„œ์šธ]
li 10 ์žฅ๋™๊ฑด 23 ์„œ์šธ
  li[0] li[1] li[2] li[3]


2. ํŠœํ”Œ ์ž๋ฃŒํ˜•: (,) ์†Œ๊ด„ํ˜ธ๋กœ ์—ด๊ณ  ๋‹ซ๋Š”๋‹ค. ๊ด„ํ˜ธ(,)๋Š” ์ƒ๋žต ๊ฐ€๋Šฅํ•˜๋‹ค. 
ํŠœํ”Œ์€ ํ•œ ๋ฒˆ ๊ฐ’์„ ์ •ํ•˜๋ฉด ๋‚ด๋ถ€์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜๊ฐ€ ์—†๋‹ค.
์ฝ๊ธฐ ์ „์šฉ
์ด๋‹ค.

 ('red', 4, 'python', True)
 (1, 2, 3)
 tu = (10, "์žฅ๋™๊ฑด", 23, "์„œ์šธ")
tu 10 ์žฅ๋™๊ฑด 23 ์„œ์šธ
  tu[0] tu[1] tu[2] tu[3]


3. ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•: {,} ์ค‘๊ด„ํ˜ธ๋กœ ์—ด๊ณ  ๋‹ซ๋Š”๋‹ค.

{dict = ["๋ฒˆํ˜ธ":10, "์„ฑ๋ช…": "์žฅ๋™๊ฑด", "๋‚˜์ด":23, "์‚ฌ๋Š”๊ณณ":"์„œ์šธ"}
dict["์‚ฌ๋Š”๊ณณ"] = "๊ฒฝ๊ธฐ๋„"
dic (value) 10 ์žฅ๋™๊ฑด 23 ์„œ์šธ
(key) dic[๋ฒˆํ˜ธ] dic[์„ฑ๋ช…] dic[๋‚˜์ด] dic[์‚ฌ๋Š”๊ณณ]

 


Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด

์ฑ…์˜ ๋ชฉ์ฐจ
01 _ Flask ์„ธํŒ…ํ•˜๊ธฐ

01-1 ๋ผ์ฆˆ๋ฒ ๋ฆฌ 4์—์„œ ์„ค์น˜ํ•˜๊ธฐ
01-2 Flask ์„ค์น˜ํ•˜๊ธฐ

02 _ Flask ์›น์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ

03 _ Flask ๋ผ์šฐํŒ…

04 _ Flask LED ์ œ์–ดํ•˜๊ธฐ
04-1 Flask LED ์ œ์–ด ์ •์  ๋ผ์šฐํŒ…
04-2 Flask LED ์ œ์–ด ๋™์  ๋ผ์šฐํŒ…ใ€ˆ์‚ฐํ˜•๊ด„ํ˜ธใ€‰
04-3 Flask LED ์ œ์–ด ๋™์  ๋ผ์šฐํŒ…ใ€ˆ์ฟผ๋ฆฌ์ŠคํŠธ๋งใ€‰

05 _ Flask ์›นํŽ˜์ด์ง€
05-1 Flask, HTML, CSS, Javascript๋ฅผ ์ด์šฉํ•œ ์›นํŽ˜์ด์ง€ ๋งŒ๋“ค๊ธฐ
05-2 fetch() ํ•จ์ˆ˜ ์ดํ•ดํ•˜๊ธฐ
05-3 ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์ดํ•ดํ•˜๊ธฐ

06 _ IP, Port, Process ๊ฐœ๋…์žก๊ธฐ
06-1 IP ๊ฐœ๋…์žก๊ธฐ
06-2 Port ๊ฐœ๋…์žก๊ธฐ
06-3 Process ๊ฐœ๋…์žก๊ธฐ

07 _ cron๊ณผ daemon ๊ฐœ๋…์žก๊ธฐ
07-1 cron(ํฌ๋ก ) ๊ฐœ๋…์žก๊ธฐ
07-2 daemon(๋ฐ๋ชฌ) ๊ฐœ๋…์žก๊ธฐ

08 _ ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ
08-1 ๊ณต๊ณต๋ฐ์ดํ„ฐ ์‹ ์ฒญํ•˜๊ธฐ
08-2 ๊ณต๊ณต๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ
08-3 ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•˜์—ฌ ์˜จ์Šต๋„ ํ™•์ธํ•˜๊ธฐ
ํ•™์Šต๋ชฉํ‘œ
- Flask๋ฅผ ์„ค์น˜ํ•˜๊ณ  ์›น ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ๋‹ค.
- Flask๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์„ผ์„œ๋ฅผ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค.
- IP, Port, Process, Cron, Daemon์— ๋Œ€ํ•ด์„œ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ•™์Šต๋‚ด์šฉ
- Flask ์„ธํŒ…ํ•˜๊ธฐ
- Flask ์›น ์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ
- Flask ๋ผ์šฐํŒ…
- Flask LED ์ œ์–ดํ•˜๊ธฐ
- Flask ์›น ํŽ˜์ด์ง€
- IP, Port, Process ๊ฐœ๋… ์žก๊ธฐ
- Cron, Daemon ๊ฐœ๋… ์žก๊ธฐ
- ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ

8 ๊ณต๊ณต๋ฐ์ดํ„ฐ ํ™œ์šฉํ•˜๊ธฐ

๊ณต๊ณต๋ฐ์ดํ„ฐ ํฌํ„ธ์€ ๊ณต๊ณต๊ธฐ๊ด€์ด ์ƒ์„ฑ ๋˜๋Š” ์ทจ๋“ํ•˜์—ฌ ๊ด€๋ฆฌํ•˜๊ณ  ์žˆ๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ๋ฅผ ํ•œ ๊ณณ์—์„œ ์ œ๊ณตํ•˜๋Š” ํ†ตํ•ฉ ์ฐฝ๊ตฌ์ž…๋‹ˆ๋‹คํฌํ„ธ์—์„œ๋Š” ๊ตญ๋ฏผ์ด ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•˜๊ฒŒ ๊ณต๊ณต๋ฐ์ดํ„ฐ๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํŒŒ์ผ๋ฐ์ดํ„ฐ์˜คํ”ˆAPI, ์‹œ๊ฐํ™” ๋“ฑ ๋‹ค์–‘ํ•œ ๋ฐฉ์‹์œผ๋กœ ์ œ๊ณตํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ๋ˆ„๊ตฌ๋ผ๋„ ์‰ฝ๊ณ  ํŽธ๋ฆฌํ•œ ๊ฒ€์ƒ‰์„ ํ†ตํ•ด ์›ํ•˜๋Š” ๊ณต๊ณต๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

8.1 ๊ณต๊ณต๋ฐ์ดํ„ฐ ์‹ ์ฒญํ•˜๊ธฐ

์ •์ ์ธ ๋ฐ์ดํ„ฐ: ๊ณ ์ •๋œ ๋ฐ์ดํ„ฐ, ํŒŒ์ผ๋ฐ์ดํ„ฐ ์ด์šฉํ•œ๋‹ค. ex) ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„
๋™์ ์ธ ๋ฐ์ดํ„ฐ: ์‹œ์‹œ๊ฐ๊ฐ ๋‹ฌ๋ผ์ง„๋‹ค. ์˜คํ”ˆ API ์‚ฌ์šฉํ•œ๋‹ค. ex) ๋‚ ์”จ 

์ธ์ฆํ‚ค๋ฅผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋„ฃ๋Š”๋‹ค. ์ธ์ฆ = ๊ตฌ๊ธ€์ด ํ—ˆ๋ฝํ•จ

์ฐธ๊ณ : https://www.educba.com/encoding-vs-decoding/

์ฐธ๊ณ ๋ฌธ์„œ์˜ ์ฒจ๋ถ€ํŒŒ์ผ์„ ๋‹ค์šด ๋ฐ›์œผ๋ฉด ์˜คํ”ˆ API ํ™œ์šฉ ๊ฐ€์ด๋“œ 2๊ฐœ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•  ์ˆ˜ ์žˆ๋‹ค.

XML
<๋ณ€์ˆ˜๋ช…>๊ฐ’</๋ณ€์ˆ˜๋ช…>
<baseDate>20230309</baseDate>

json (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ฃผ๋กœ ์“ด๋‹ค.)
{๋ณ€์ˆ˜๋ช…: ๊ฐ’}
{baseDate:20230309}

xml ๊ฒฐ๊ณผ

ํƒœ๊ทธ ํ˜•์‹์œผ๋กœ ๋ฌถ์€ ๊ฒƒ: xml ํƒ€์ž…

JSON ๊ฒฐ๊ณผ

"๋ณ€์ˆ˜":"๋„ฃ์„ ๊ฐ’" 
๋งˆ์ง€๋ง‰ ์ฝ”๋“œ: ํ•˜๋‚˜๋กœ ๋ฌถ์€ ๊ฒƒ {}

๊ฐœ๋ฐœ๊ณ„์ •

https://www.data.go.kr/iim/api/selectDevAcountList.do

15. ์ƒ์„ธ ์„ค๋ช… ๋ฒ„ํŠผ์„ ํด๋ฆญํ•œ ๋’ค ๊ธฐ์ˆ ๋ฌธ์„œ๋ฅผ ๋‹ค์šด๋กœ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค.

'๊ฐœ๋ฐœ๊ณ„์ • ์ƒ์„ธ๋ณด๊ธฐ'

https://www.data.go.kr/iim/api/selectAPIAcountView.do

'๊ฐœ๋ฐœ๊ณ„์ • ์ƒ์„ธ๋ณด๊ธฐ'์˜ [์ƒ์„ธ์„ค๋ช…] ํด๋ฆญ ํ›„ ๋œจ๋Š” '์˜คํ”ˆAPI ์ƒ์„ธ'

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084


์•„๋ž˜ ์ฝ”๋“œ๋„ ์ถ”๊ฐ€ํ•œ๋‹ค.

from urllib.parse import unquote
# Python3 ์ƒ˜ํ”Œ ์ฝ”๋“œ #
import requests
from urllib.parse import unquote

url = 'http://apis.data.go.kr/1360000/VilageFcstInfoService_2.0/getUltraSrtNcst'
#params ={'serviceKey' : '์„œ๋น„์Šคํ‚ค', 'pageNo' : '1', 'numOfRows' : '1000', 'dataType' : 'XML', 'base_date' : '20210628', 'base_time' : '0600', 'nx' : '55', 'ny' : '127' }
params ={'serviceKey' : 'EYhwxJp0FE8gd5Ov8DFbBlqYKBx3ApWbtwH82mV72t7zag3R1sChGhzfXH3ohLVrrbbnpHMq4iQ9g0ogvImPIw%3D%3D', 'pageNo' : '1', 'numOfRows' : '1000', 'dataType' : 'XML', 'base_date' : '20210628', 'base_time' : '0600', 'nx' : '55', 'ny' : '127' }

response = requests.get(url, params=params)
print(response.content)
#ํ„ฐ๋ฏธ๋„
pi@rasberrypi: webapps/ch06/weather $ cd /home/pi/webapps/ch06/weather
pi@rasberrypi: webapps/ch06/weather $ python weather_test.py
#๊ฒฐ๊ณผ ๋‚˜์˜ด

8.2 ๊ณต๊ณต๋ฐ์ดํ„ฐ ๋ถ„์„ํ•˜๊ธฐ

๊ณต๊ณต๋ฐ์ดํ„ฐ๋ฅผ ๋ถ„์„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ต์žฌ p. 212์— ์žˆ๋Š” ๊ฐœ๋ฐœ๊ฐ€์ด๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.


8.3 ํŒŒ์ด์ฌ์„ ํ™œ์šฉํ•˜์—ฌ ์˜จ์Šต๋„ ํ™•์ธํ•˜๊ธฐ

https://github.com/codingspecialist/RaspberryPi4-Book-Example/blob/master/ch06/weather/weather_test.py

๊ณต๊ณต๋ฐ์ดํ„ฐ์—์„œ ์ œ๊ณตํ•ด์ฃผ๋Š” Python์šฉ ์ƒ˜ํ”Œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•ฉ๋‹ˆ๋‹ค.

์„œ๋น„์Šคํ‚ค ๊ฐ’์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋ณต์‚ฌํ•˜์—ฌ ์ฒจ๋ถ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

https://www.data.go.kr/tcs/dss/selectApiDataDetailView.do?publicDataPk=15084084

'์„œ๋น„์Šคํ‚ค'์— ์ผ๋ฐ˜ ์ธ์ฆํ‚ค๋ฅผ ๋„ฃ๋Š”๋‹ค. 

EYhwxJp0FE8gd5Ov8DFbBlqYKBx3ApWbtwH82mV72t7zag3R1sChGhzfXH3ohLVrrbbnpHMq4iQ9g0ogvImPIw%3D%3D

http://json.parser.online.fr/

 

Json Parser Online

 

json.parser.online.fr

์ตœ์ข… ์ฝ”๋“œ p. 223

from urllib.parse import urlencode, unquote
import requests
import json

url = "http://newsky2.kma.go.kr/service/SecndSrtpdFrcstInfoService2/ForecastGrib"
queryString = "?" + urlencode(
    {
        "ServiceKey" : unquote("wJmmW29e3AEUjwLioQR22CpmqS645ep4S8TSlqtSbEsxvnkZFoNe7YG1weEWQHYZ229eNLidnI2Yt5EZ3Stv7g%3D%3D"), 
        "base_date" : "20190407", 
        "base_time" : "1200", 
        "nx" : "59", #๊ธฐ์ƒ์ฒญ ๊ฒฉ์ž ์ •๋ณด
        "ny" : "127", #๊ธฐ์ƒ์ฒญ ๊ฒฉ์ž ์ •๋ณด
        "numOfRows" : "10", 
        "pageNo" : "1", 
        "_type" : "json" 
    }
)

response = requests.get(url + queryString)
print("===== response json data start =====")
print(response)
print("===== response json data end =====")
print()

r_dict = json.loads(response.text)
r_response = r_dict.get("response")
r_body = r_response.get("body")
r_items = r_body.get("items")
r_item = r_items.get("item")

result = {} #์ตœ์ข… ๊ฒฐ๊ณผ๋Š” ๋”•์…”๋„ˆ๋ฆฌ ํ˜•ํƒœ
for item in r_item:
    if(item.get("category") == "T1H"): #์ž๋ฃŒ ๊ตฌ๋ถ„ ์ฝ”๋“œ ๊ฐ’: ๊ธฐ์˜จ p.213 ์ฐธ๊ณ  
        result = item
        break

print("===== response dictionary(python object) data start =====")
print(result)
print("===== response dictionary(python object) end =====")
print()

728x90
๋ฐ˜์‘ํ˜•

'๐ŸŒณBootcamp Revision 2023โœจ > Python, Flask, SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[50] 230310 SQL Ch. 6 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL: 25๊ฐ• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ฐ์ฒด, 26๊ฐ• ํ…Œ์ด๋ธ” ์ž‘์„ฑ, ์‚ญ์ œ, ๋ณ€๊ฒฝ, 27๊ฐ• ์ œ์•ฝ, 28๊ฐ• ์ธ๋ฑ์Šค ๊ตฌ์กฐ, 29๊ฐ• ์ธ๋ฑ์Šค ์ž‘์„ฑ๊ณผ ์‚ญ์ œ, 30๊ฐ• ๋ทฐ ์ž‘์„ฑ๊ณผ ์‚ญ์ œ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 50์ผ]  (0) 2023.03.10
[49] 230309 SQL Ch. 1 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ SQL: 1๊ฐ• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, 2๊ฐ• ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 49์ผ]  (0) 2023.03.09
[48] 230308 Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด: 5. Flask ์›นํŽ˜์ด์ง€, 6. IP, Port, Process ๊ฐœ๋… ์žก๊ธฐ, 7. cron๊ณผ daemon ๊ฐœ๋… ์žก๊ธฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 48์ผ]  (1) 2023.03.08
[47] 230307 Ch. 6 Flask๋ฅผ ํ™œ์šฉํ•œ ์„ผ์„œ ์ œ์–ด: 1. Flask ์„ธํŒ…ํ•˜๊ธฐ, 2. Flask ์›น์„œ๋ฒ„ ๊ตฌ์ถ•ํ•˜๊ธฐ, 3. Flask ๋ผ์šฐํŒ…, 4. Flask LED ์ œ์–ดํ•˜๊ธฐ [K-๋””์ง€ํ„ธ ํŠธ๋ ˆ์ด๋‹ 47์ผ]  (0) 2023.03.07
Comments