baekoblin
Students
261
Reviews
17
Rating
4.1
:)
Courses
Reviews
- gRPC Made Easy with Python!
- gRPC Made Easy with Python!
- gRPC Made Easy with Python!
- ChatGPT Usage Guide: Core Prompt Engineering
Posts
Q&A
๊ฐ์ ๋ ธํธ์ ์์ค์ฝ๋ ์์ง ์ ๋ฐ์ดํธ ์๋์์ด์
์๋ ํ์ธ์ ๊ฐ์ฌ ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค! ๊นํ์ ์ ๋ก๋๋์ด์๋ ๋ ํฌ๊ฐ ๊ฐ์ ๋ฒ์ ๊ณผ ๋ง์ง ์์ ๊ฒ์ ํ์ธํ์ฌ ์์ ์ค์ ์์ต๋๋ค. (๊ฐ์์๋ฃ๋ ํจ๊ป ์ ๋ก๋ํด๋์๋ ๋ฐ ๊ฐ์ด ์ฌ๋ผ์ ธ๋ฒผ๋ ธ๊ตฐ์..) ๋น ๋ฅด๊ฒ ๋ค์ ์ ๋ก๋ ํ ๋ง์๋๋ฆฌ๊ฒ ์ต๋๋ค! ๊ฐ์ฌํฉ๋๋ค. +๋จผ์ ์ด์ ๋ฒ์ ์ ๋ํด์ ์ ๋ก๋๋ฅผ ์งํํด๋๋๋ก ํ๊ฒ ์ต๋๋ค! ์ ๋ก๋ ํ ๊ณต์ง๋ฅผ ํตํด github๋งํฌ๋ฅผ ๊ณต์ ํ๊ฒ ์ต๋๋ค. ๋ถํธ๋๋ ค ์ฃ์กํฉ๋๋ค ๐
- 0
- 2
- 176
Q&A
๊ฐ์ ์์ค ์ฝ๋
์๋ ํ์ธ์ ๊ฐ์ฌ ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค.๊ฐ์์ ํฌํจ๋์ด์๋ ์ฝ๋๋ ์ง์ ํ์ดํ ํด๋ณด์๊ธธ ๊ถ์ฅ๋๋ฆฝ๋๋ค ๐ ํน์ ํ์ํ์ ๋ถ๋ค์ ์ํด ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํ๋ ์ด์ด๋์์ต๋๋ค!๊ฐ์ฌํฉ๋๋ค.https://github.com/baekoblin/FastAPI
- 1
- 2
- 178
Q&A
๊ฐ์ฌ๋์ ๊ฐ์ ์์ค์ฝ๋
์๋ ํ์ธ์ ๊ฐ์ฌ ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค.์ค์ต ์ฝ๋ ์์ฒด๋ ๊ฐ์์ ๋ชจ๋ ํฌํจ๋์ด์์ด ์ง์ ํ์ดํ ํ์๊ธธ ๊ถ์ฅ๋๋ฆฝ๋๋ค!๊ทธ๋๋ ํน์ ํ์ํ์ ๋ถ๋ค์ ์ํด ๋ ํฌ์งํ ๋ฆฌ๋ฅผ ํ๋ ์ด์ด๋์์ต๋๋ค!๊ฐ์ฌํฉ๋๋ค.https://github.com/baekoblin/FastAPI
- 1
- 1
- 180
Q&A
๊นํ๋ธ ๋ ํฌ์งํ ๋ฆฌ๋ก ๋ฒ์ ๊ด๋ฆฌํ๊ธฐ
์๋ ํ์ธ์ ๐ ๊ฐ์ฌ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค!์๋ ํ์ธ์! ๐ FastAPI ํ๋ก์ ํธ๋ฅผ GitHub์ ์ฌ๋ฆฌ๋ ๋ฐฉ๋ฒ์ ์ฝ๊ณ ๊ฐ๋จํ๊ฒ ์๋ ค๋๋ฆด๊ฒ์!FastAPI ํ๋ก์ ํธ๋ฅผ GitHub์ ์ฌ๋ฆฌ๋ ์์ ๐1. ํ๋ก์ ํธ ํด๋๋ก ์ด๋ cd /path/to/your/fastapi-project 2. `.gitignore` ํ์ผ ์์ฑ ๋ฐ ์ค์ .gitignore ํ์ผ์ ์์ฑํด์ Git์ ํฌํจ์ํค์ง ์์ ํ์ผ ๋ฐ ํด๋๋ฅผ ์ง์ ํด ์ฃผ์ธ์. ๋ณดํต venv ํด๋, __pycache__ ๋๋ ํ ๋ฆฌ, ํ๊ฒฝ ์ค์ ํ์ผ ๋ฑ์ ๋ฌด์ํฉ๋๋ค. .gitignore ํ์ผ ๋ด์ฉ ์์ venv/ __pycache__/ *.pyc .env3. Git ์ด๊ธฐํ ํ๋ก์ ํธ ํด๋์์ Git ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์ด๊ธฐํํฉ๋๋ค. git init 4. ํ์ผ ์ถ๊ฐ ๋ฐ ์ปค๋ฐ ๐ ํ๋ก์ ํธ์ ํ์ผ๋ค์ Git์ ์ถ๊ฐํ๊ณ ์ฒซ ๋ฒ์งธ ์ปค๋ฐ์ ๋ง๋ญ๋๋ค. git add . git commit -m "Initial commit" 5. GitHub ๋ฆฌํฌ์งํ ๋ฆฌ ์์ฑ ๐ GitHub์์ ์๋ก์ด ๋ฆฌํฌ์งํ ๋ฆฌ๋ฅผ ์์ฑํ์ธ์. ๋ฆฌํฌ์งํ ๋ฆฌ ์ด๋ฆ๊ณผ ์ค๋ช ์ ์ ๋ ฅํ๊ณ ์์ฑ ๋ฒํผ์ ํด๋ฆญํฉ๋๋ค.6. ๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ ์ถ๊ฐ ๐ ์์ฑ๋ GitHub ๋ฆฌํฌ์งํ ๋ฆฌ์ URL์ ๋ณต์ฌํ ํ, ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ๋ฆฌ๋ชจํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค. git remote add origin https://github.com/username/repository.git 7. ๋ธ๋์น ์ค์ (์ ํ ์ฌํญ) ๐ฒ ๊ธฐ๋ณธ ๋ธ๋์น ์ด๋ฆ์ main์ผ๋ก ์ค์ ํฉ๋๋ค. git branch -M main8. ์ฝ๋ ํธ์ ๐ค ๋ก์ปฌ ๋ฆฌํฌ์งํ ๋ฆฌ์ ์ฝ๋๋ฅผ GitHub ๋ฆฌ๋ชจํธ ๋ฆฌํฌ์งํ ๋ฆฌ์ ํธ์ํฉ๋๋ค. git push -u origin main ์ด ๊ณผ์ ์ ํตํด FastAPI ํ๋ก์ ํธ๋ฅผ GitHub์ ์ ๋ก๋ํ ์ ์์ต๋๋ค. pip๋ก ์ค์นํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค์ด git status์ ๋ณด์ด๋ ๋ฌธ์ ๋ .gitignore ํ์ผ์ ํตํด ํด๊ฒฐํ ์ ์์ด์. ํ์์ ๋ฐ๋ผ .gitignore ํ์ผ์ ์ถ๊ฐ์ ์ผ๋ก ์ค์ ํด์ ๋ถํ์ํ ํ์ผ๋ค์ด Git์ ํฌํจ๋์ง ์๋๋ก ๊ด๋ฆฌํ์ธ์. ๐๋์์ด ๋์ จ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค! ์ถ๊ฐ๋ก ๊ถ๊ธํ ์ ์ด ์์ผ๋ฉด ์ธ์ ๋ ์ง ์ง๋ฌธํด ์ฃผ์ธ์. ๐
- 2
- 1
- 323
Q&A
๊ฐ์ ๋ ธํธ์ ์์ค์ฝ๋ ๋ค์ด๋ก๋ ๋ฌธ์ ๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์! ๊ฐ์ฌ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค! ์๊ฐ์ ๋ชจ๋ ์๋ฃํด์ฃผ์๊ณ ์๊ฐํ๊น์ง ๋ฌ์์ฃผ์ จ๋๋ผ๊ตฌ์! ์ ๋ง ๊ฐ์ฌ๋๋ฆฝ๋๋ค ๐ ๋ง์์ฃผ์ ๋ถ๋ถ์ ๋ํด ๋ต๋ณ๋๋ฆฌ๋ฉด, Python ๊ด๋ จ ์ฝ๋๋ ๊ธ์ผ ์ค ๊ฐ์๋ก์ 6์ 8์ผ ์ค github ๋งํฌ๊ฐ ์ ๊ณต๋ ์์ ์ ๋๋ค! ์ถ๊ฐ๋ก ๋ณด๋ด์ฃผ์ ํผ๋๋ฐฑ์ ๋ฐ์ํ์ฌ ์๋ฐ์ Go์ธ์ด์ ์์๋ ํฌํจํด๋๋ฆฌ๋ ค ํฉ๋๋ค ๐ ๋ค์ ํ๋ฒ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํ๋ค๋ ๋ง์ ๋๋ฆฝ๋๋ค!
- 1
- 2
- 359
Q&A
async, await ์ง๋ฌธ
์๋ ํ์ธ์! ๋ค์ ๋ต์ ๋ฐ๊ฐ์ต๋๋ค ๐ ๋น๋๊ธฐ ์ฒ๋ฆฌ์ async/await ํค์๋์ ๋ํ ์ง๋ฌธ ์ ์ฝ์ด๋ณด์์ต๋๋ค.๋น๋๊ธฐ ์ฒ๋ฆฌ์ async/await์ ๋ํ ์์ธ ์ค๋ช ํผ๋์ค๋ฌ์ด ๋ถ๋ถ์ ํด๊ฒฐํด ๋๋ฆฌ๊ณ , Python์ asyncio์ JavaScript์ ๋น๋๊ธฐ ์ฒ๋ฆฌ ๋ฐฉ์์ ์ฐจ์ด์ ๊น์ง ์ง์ด ๋๋ฆฌ๊ฒ ์ต๋๋ค.ํต์ฌ ๊ฐ๋ ์ ๋ฆฌ๋น๋๊ธฐ ์ฒ๋ฆฌ: ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฌ๋ ์์ (์: ๋คํธ์ํฌ ์์ฒญ, ํ์ผ ์ฝ๊ธฐ/์ฐ๊ธฐ)์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ์์ ์ ์ํํ์ฌ ์ ์ฒด ํ๋ก๊ทธ๋จ์ ์๋ต์ฑ์ ๋์ด๋ ๋ฐฉ์์ ๋๋ค.async ํค์๋: ํจ์๋ฅผ ์ฝ๋ฃจํด(coroutine)์ผ๋ก ๋ง๋ค์ด์ค๋๋ค. ์ฝ๋ฃจํด์ await ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋น๋๊ธฐ ์์ ์ ์ผ์ ์ค์งํ๊ณ ์ฌ๊ฐํ ์ ์๋ ํน๋ณํ ํจ์์ ๋๋ค.await ํค์๋: ์ฝ๋ฃจํด ๋ด์์ ์ฌ์ฉ๋๋ฉฐ, ๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋ ๋๊น์ง ์ฝ๋ฃจํด์ ์คํ์ ์ผ์ ์ค์งํฉ๋๋ค. ์์ ์ด ์๋ฃ๋๋ฉด ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ ์ฝ๋ฃจํด์ ์คํ์ ์ฌ๊ฐํฉ๋๋ค.๋ชจ๋ ๊ฑธ ๋์์ ํ๋ค ๋ณด๋ค๋ ํ์ฌ ํจ์๊ฐ ์ค๋ ๊ฑธ๋ฆฌ๋ ์ผ์ ํ ๋ ๋ค๋ฅธ ์์ ์ ๋จผ์ ํ๋ค๊ณ ์๊ฐํ์๋ ๊ฒ ๋ ํธํ์ค ๊ฑฐ์์!์ฉ์ด ๋ช ํํ"ํด๋น ํจ์": await ํค์๋ ๋ฐ๋ก ๋ค์ ์ค๋ ๋น๋๊ธฐ ์์ ์ ์ํํ๋ ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค. ์๋ฅผ ๋ค์ด await asyncio.sleep(1)์์ "ํด๋น ํจ์"๋ asyncio.sleep(1)์ ๋๋ค."ํ์ฌ ํจ์": await ํค์๋๋ฅผ ํฌํจํ๊ณ ์๋ ์ฝ๋ฃจํด ํจ์๋ฅผ ์๋ฏธํฉ๋๋ค.await ๋์ ๋ฐฉ์ ์์ธ ์ค๋ช ์ฝ๋ฃจํด ํจ์ ๋ด์์ await ํค์๋๋ฅผ ๋ง๋๋ฉด, await ๋ค์ ๋น๋๊ธฐ ์์ ์ด ์คํ๋ฉ๋๋ค.๋น๋๊ธฐ ์์ ์ด ์งํ๋๋ ๋์, ํ์ฌ ์ฝ๋ฃจํด ํจ์๋ ์ผ์ ์ค์ง๋๊ณ ์ ์ด๊ถ์ด ์ด๋ฒคํธ ๋ฃจํ(event loop)๋ก ๋์ด๊ฐ๋๋ค.์ด๋ฒคํธ ๋ฃจํ๋ ๋ค๋ฅธ ์ฝ๋ฃจํด์ด๋ ์์ ์ ์คํํ๋ฉด์ ๋น๋๊ธฐ ์์ ์ ์๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค.๋น๋๊ธฐ ์์ ์ด ์๋ฃ๋๋ฉด, ๊ฒฐ๊ณผ ๊ฐ์ ๊ฐ์ง๊ณ ์ผ์ ์ค์ง๋์๋ ์ฝ๋ฃจํด ํจ์๋ก ๋์์ ์คํ์ ์ฌ๊ฐํฉ๋๋ค.์์ ์ฝ๋Pythonimport asyncio async def my_coroutine(): print("์ฝ๋ฃจํด ์์") await asyncio.sleep(1) # 1์ด ๋์ ์ผ์ ์ค์ง print("์ฝ๋ฃจํด ์ฌ๊ฐ") async def main(): await asyncio.gather(my_coroutine(), my_coroutine()) # ๋ ์ฝ๋ฃจํด ๋์ ์คํ asyncio.run(main()) FastAPI์ ๋น๋๊ธฐ ์ฒ๋ฆฌFastAPI๋ ๋น๋๊ธฐ ํ๋ ์์ํฌ์ด๋ฏ๋ก, async/await๋ฅผ ์ฌ์ฉํ์ฌ I/O ์์ ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. await๋ฅผ ์ฌ์ฉํ๋๋ผ๋ I/O ์์ ์ค์๋ ๋ค๋ฅธ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์์ผ๋ฏ๋ก ์ ์ฒด์ ์ธ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.JavaScript์์ ์ฐจ์ด์ JavaScript์์๋ async/await๋ฅผ ์ฌ์ฉํ์ง๋ง, Python๊ณผ๋ ๋ฏธ๋ฌํ ์ฐจ์ด๊ฐ ์์ต๋๋ค. JavaScript์ await๋ Promise ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ ํจ์์ ์ฌ์ฉ๋๋ฉฐ, Promise๊ฐ ์ฒ๋ฆฌ๋ ๋๊น์ง ํด๋น async ํจ์์ ์คํ์ ์ผ์ ์ค์งํฉ๋๋ค.๊ฒฐ๋ก await ํค์๋๋ ๋น๋๊ธฐ ์์ ์ ๊ธฐ๋ค๋ฆฌ๋ ๋์ ๋ค๋ฅธ ์์ ์ ์ํํ ์ ์๋๋ก ํด์ฃผ๋ ํต์ฌ์ ์ธ ์ญํ ์ ํฉ๋๋ค. FastAPI์ ๊ฐ์ ๋น๋๊ธฐ ํ๋ ์์ํฌ์์๋ await๋ฅผ ์ ์ ํ ํ์ฉํ์ฌ I/O ๋ณ๋ชฉ ํ์์ ์ค์ด๊ณ ์ฑ๋ฅ์ ๊ทน๋ํํ ์ ์์ต๋๋ค.๊ถ๊ธํ ์ ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋ค์ ์ง๋ฌธํด์ฃผ์ธ์.
- 1
- 1
- 308
Q&A
ํ๋ผ๋ฏธํฐ ๋ฌธ์
์์ธ๋ฌ ๋ณด๋ด์ฃผ์ ํผ๋๋ฐฑ์ด ๋ง์ ๋์์ด ๋์์ต๋๋ค.ํธํ๊ฒ ๋ง์์ฃผ์๋ฉด ์ ๊ฒ ๋ ๋ง์ ๋์์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค ๐
- 1
- 4
- 414
Q&A
ํ๋ผ๋ฏธํฐ ๋ฌธ์
์ฌ์ง์ ๋ํด ์ค๋ช ํด๋๋ฆฌ๋ฉด, ์ฟผ๋ฆฌํ๋ผ๋ฏธํฐ + app.get๊ฒฝ๋ก ํ๋ผ๋ฏธํฐ + app.get๋ฐ๋ ํ๋ผ๋ฏธํฐ + app.post์ ๋ํ ๊ฐ๊ฐ์ ์ฝ๋์ ๋๋ค ๐
- 1
- 4
- 414
Q&A
ํ๋ผ๋ฏธํฐ ๋ฌธ์
์ง๋ฌธ์ ๋ํด ์กฐ๊ธ ์์ธํ ๋ต๋ณ๋๋ฆฌ๊ฒ ์ต๋๋ค! ํ์ฌ ์ฌ๋ ค์ฃผ์ ์ฝ๋๋ ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํน์ ๊ฒฝ๋ก ํ๋ผ๋ฏธํฐ๋ฅผ ํ ์คํธํด๋ณด์๊ณ ์ถ์ ๊ฒ์ผ๋ก ์๊ฐ๋๋ ๋ฐ ๋ง์๊น์?์ผ๋ฐ์ ์ผ๋ก ๊ฒฝ๋กํ๋ผ๋ฏธํฐ๋ ๋ฆฌ์คํธ๋ ๋ฐ์ง ์๋ ๊ฒ์ด ์ผ๋ฐ์ ์ฌ์ฉ์ ๋๋ค!ํผ๋์ด ๋ง์ด ์จ๋ค๊ณ ์๋ ค์ ธ์๊ธฐ ๋๋ฌธ์ ๋๋ค!๋ณดํต ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ๋ฅผ ํตํด ๋ฆฌ์คํธ ๋ฐ์ดํฐ๋ฅผ ๋ง์ด ์์ ํด์! ํ์ฌ HTTP GET method๋ฅผ ํตํด ํธ์ถํ๊ณ ๊ณ์ ๋ฐ, GET method์ ๊ฒฝ์ฐ์๋ body parameter๋ฅผ ํฌํจํ ์ ์๊ธฐ ๋๋ฌธ์ app.post๋ก ๋ฐ๊ฟ์ฃผ์๋ฉด swagger UI์์ ํธํ๊ฒ ํ ์คํธํ์ค ์ ์์ต๋๋ค!์คํ๊ฐ ํ๋ ์์ด์ ์์ ํด๋๋ ธ์ต๋๋ค ๐ ๊ฐ์๋ฅผ ์ฒ์ ์ฐ์ด๋ณด๋ค ๋ณด๋ ๋ค์๊ฐ ๋ถ์กฑํ ๋ถ๋ถ์ด ๋ง๋ค์! ๋ณด๋ด์ฃผ์ ์์คํ ํผ๋๋ฐฑ ๋ฐ์ํด์ ์ต๋ํ ๋น ๋ฅธ ์์ผ ๋ด์ ์กฐ๊ธ ๋ ๊ฐ์ ํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค! ํญ์ ๋ ธ๋ ฅํ๊ฒ ์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค! from typing import List from fastapi import FastAPI, Query app = FastAPI() @app.post("/read_items1/") async def read_items(q : List[str] = None): query_items = {"q" : q} return query_items @app.get("/read_items2/{item_id}") async def read_item2(item_id: int): return {"item_id": item_id} @app.get("/read_items3/") async def read_items(q: List[str] = Query(None)): return {"q": q}(์ฌ์ง)(์ฌ์ง)(์ฌ์ง)
- 1
- 4
- 414
Q&A
ํ๋ผ๋ฏธํฐ ๋ฌธ์
์๋ ํ์ธ์ ๐ ๊ฐ์ฌ ๋ฐฐ์ฝ๋ธ๋ฆฐ์ ๋๋ค! ๊ฐ์ฅ ๋จผ์ ์๊ฐํด์ฃผ์ ์ ๊ฐ์ฌํ๋ค๋ ๋ง์๊ณผ ํผ๋๋ฐฑ์ ๊ฐ์ฌ์ธ์ฌ๋๋ฆฝ๋๋ค! Python์ ๋ํ ๊ธฐ์ด์ง์์ ๋ฐฐ๊ฒฝ์ผ๋ก ํ๊ธฐ ๋๋ฌธ์ ํ์ ํํธ ๋ฑ์ ์ค๋ช ์ ๋ค์๊ฐ ๋ง์ด ์๋ตํ๋๋ฐ, ํผ๋๋ฐฑ ์ฃผ์ ๋ด์ฉ์ ๋ฐํ์ผ๋ก ์๊ฐํด๋ณด๋ ์ถ๊ฐํด๋๋ฆฌ๋ ๊ฒ ์ข์ ๋ฏ ํ๊ตฐ์ ๐ ์กฐ๊ธ ๋ ๊ธฐ์ด๊น์ง ๋ค๋ฃจ๋ ๋ด์ฉ์ ์ต๋ํ ๋นจ๋ฆฌ ๋ นํํด์ ์ถ๊ฐํด๋๋ฆฌ๋๋ก ํ๊ฒ ์ต๋๋ค.๋ค์ ํ๋ฒ ํผ๋๋ฐฑ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
- 1
- 4
- 414






