소개
:)
강의
수강평
- 개념부터 철저한 gRPC! (with Python)
- 개념부터 철저한 gRPC! (with Python)
- ChatGPT 사용 가이드 : 핵심 프롬프트 엔지니어링
게시글
질문&답변
강의 노트와 소스코드 아직 업데이트 안되었어요
안녕하세요 강사 배코블린입니다! 깃헙에 업로드되어있던 레포가 강의 버전과 맞지 않은 것을 확인하여 수정 중에 있습니다. (강의자료도 함께 업로드해두었는 데 같이 사라져벼렸군요..) 빠르게 다시 업로드 후 말씀드리겠습니다! 감사합니다. +먼저 이전 버전에 대해서 업로드를 진행해놓도록 하겠습니다! 업로드 후 공지를 통해 github링크를 공유하겠습니다. 불편드려 죄송합니다 😓
- 0
- 2
- 59
질문&답변
강의 소스 코드
안녕하세요 강사 배코블린입니다.강의에 포함되어있는 코드는 직접 타이핑 해보시길 권장드립니다 🙂 혹시 필요하신 분들을 위해 레포지토리를 하나 열어두었습니다!감사합니다.https://github.com/baekoblin/FastAPI
- 1
- 2
- 83
질문&답변
강사님의 강의 소스코드
안녕하세요 강사 배코블린입니다.실습 코드 자체는 강의에 모두 포함되어있어 직접 타이핑 하시길 권장드립니다!그래도 혹시 필요하신 분들을 위해 레포지토리를 하나 열어두었습니다!감사합니다.https://github.com/baekoblin/FastAPI
- 1
- 1
- 88
질문&답변
깃허브 레포지토리로 버전관리하기
안녕하세요 🙂 강사배코블린입니다!안녕하세요! 😄 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
- 180
질문&답변
강의 노트와 소스코드 다운로드 문의 드립니다.
안녕하세요! 강사배코블린입니다! 수강을 모두 완료해주시고 수강평까지 달아주셨더라구요! 정말 감사드립니다 🙂 말씀주신 부분에 대해 답변드리면, Python 관련 코드는 금일 중 강의록은 6월 8일 중 github 링크가 제공될 예정입니다! 추가로 보내주신 피드백을 반영하여 자바와 Go언어의 예시도 포함해드리려 합니다 🙂 다시 한번 수강해주셔서 감사하다는 말씀 드립니다!
- 1
- 2
- 215
질문&답변
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
- 224
질문&답변
파라미터 문의
아울러 보내주신 피드백이 많은 도움이 되었습니다.편하게 말씀주시면 제게 더 많은 도움이 될 것 같습니다 🙂
- 1
- 4
- 293
질문&답변
파라미터 문의
사진에 대해 설명해드리면, 쿼리파라미터 + app.get경로 파라미터 + app.get바디 파라미터 + app.post에 대한 각각의 코드입니다 🙂
- 1
- 4
- 293
질문&답변
파라미터 문의
질문에 대해 조금 상세히 답변드리겠습니다! 현재 올려주신 코드는 쿼리 파라미터 혹은 경로 파라미터를 테스트해보시고 싶은 것으로 생각되는 데 맞을까요?일반적으로 경로파라미터는 리스트는 받지 않는 것이 일반적 사용입니다!혼동이 많이 온다고 알려져있기 떄문입니다!보통 쿼리 파라미터를 통해 리스트 데이터를 많이 수신해요! 현재 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
- 293
질문&답변
파라미터 문의
안녕하세요 🙂 강사 배코블린입니다! 가장 먼저 수강해주셔서 감사하다는 말씀과 피드백에 감사인사드립니다! Python에 대한 기초지식을 배경으로 하기 때문에 타입 힌트 등에 설명을 다소간 많이 생략했는데, 피드백 주신 내용을 바탕으로 생각해보니 추가해드리는 게 좋을 듯 하군요 🙂 조금 더 기초까지 다루는 내용을 최대한 빨리 녹화해서 추가해드리도록 하겠습니다.다시 한번 피드백 감사드립니다.
- 1
- 4
- 293