mingkeJan 26, 2024pre-commit custom hook 만들기pre-commit은 Git 원격 저장소에 커밋하기 전, 실행되는 스크립트를 구성하는 데 사용되는 tool입니다. 오늘은 pre-commit에서 custom hook을 만드는 방법을 알아보려고 합니다.pre-commit
mingkeJan 25, 2024docker-compose mysql sql 파일 실행 방법 알아보기새로운 프로젝트를 시작할 땐, docker-compose로 로컬에 db를 띄우고 migration 파일을 만들어 migration을 해서 프로젝트를 진행해 나갔습니다. DB는 기존의 것을 사용하는 경우가 있습니다. 그럴때는 기존 DB구조를 로컬 DB에도 똑같이 migration하여 사용해야 하죠. 그 방법을 알아보겠습니다.Docker
mingkeJan 24, 2024Github Actions CI - 코드 품질 관리를 위한 Black, Flake8 설정하기Github Actions를 CI/CD 툴로 자주 이용하고 있습니다. 꽤 편리한데 아주 쓸만합니다. 많은 개발자들이 이미 만들어 놓은 actions들이 marketplace에 존재하고 있어 그 편리함을 더 증폭시켜줍니다. 이번 포스팅에서는 CI의 기본이되는 코드 품질 관리를 위한, Python에서 아주 널리널리 쓰이고 있는 코드 포맷터와 린트, black, flake8 조합을 Github Actions에서 사용하는 방법을 알아보겠습니다.Github Actions
mingkeJan 24, 2024Github Actions에서 TEST DB 사용하기테스트코드를 작성하면서 DB가 필요한 경우가 있습니다. 로컬에서 테스트를 실행할 때는 docker-compose로 테스트 DB 컨테이너를 하나 새로 띄워서 사용했습니다. 하지만 CI/CD 구축을 할 때는 굳이 docker compose를 사용하지는 않았습니다. DB를 쉽게 띄울 수 있기에 그렇게 했습니다. Gitbhub Actions에서 TEST DB 사용하는 방법을 알아보겠습니다.FastAPIGithub Actions
mingkeJan 22, 2024FastAPI - JWT 인증 구현하기오늘은 며칠전 JWT인증을 만들어 달라는 요청을 받아서 구현했던 내용을 한 번 정리해보려고 합니다. 간단하게 JWT (JSON Web Token)를 설명하면 웹서비스 인증 시스템에 널리 사용되는 컴팩트한 토큰입니다. 헤더, 페이로드, 시그니처 세부분으로 나뉘어져 구성되어 있습니다. FastAPI 공식 문서에 소개된 것을 조금 변형하여 구현해보도록 하겠습니다.FastAPI
mingkeJan 21, 2024python pathlib 파일 경로 다루기 - python 표준 내장 라이브러리오늘은 python에서 파일 경로를 다루는 방법을 알아보려고 합니다. 파이썬을 처음 배울 땐 os.path를 이용해서 다루곤 했는데요. 이젠 python 내장 라이브러리인 pathlib도 많이 사용합니다. pathlib은 파일 시스템 경로를 객체로 취급하며, 경로 관련 작업을 효율적이고 직관적으로 수행할 수 있게 해줍니다.Python
mingkeJan 20, 2024python secrets - python 표준 내장 라이브러리secrets 는 이름에서 알 수 있듯, 보안과 관련해서 난수를 생성하는데 도움을 주는 라이브러리입니다. 3.6 버젼부터 추가되었습니다. “난수 생성은 random 라이브러리 사용하면 되는거 아님?” 이라고 생각할 수 있는데 random은 PNRG(Pseudo-Random Number Generator)를 사용해서 SEED값에 따라 랜덤이지만 순서가 정해집니다. 따라서 SEED값을 알면 순서를 알 수 있기 때문에 안전하지 않습니다Python
mingkeJan 19, 2024SQLAlchemy - 기존 DB로 SQLAlchemy 모델 생성하기(feat.sqlacodegen)새 프로젝트에서 DB를 새로 만들고 migration할 땐 보통 alembic을 사용해서 테이블을 만들고 그것을 기반으로 SQLAlchemy model을 작성합니다. 하지만 DB가 기존에 만들어져 있는 경우는 그렇게 할 수 없죠. 오늘은 sqlacodegen 라이브러리로 기존 DB를 가져와서 SQLAlchemy Model을 생성하는 방법을 알아보려고 합니다.SQLAlchemy
mingkeJan 18, 2024FastAPI - Depends 의존성 주입 그리고 use_cacheFastAPI의 Depends 함수는 의존성 주입(Dependency Injection)을 구현하는 데 사용됩니다. 의존성 주입은 컴포넌트(함수, 클래스 등) 간의 의존성을 외부에서 제공하는 방법입니다.FastAPI
mingkeJan 17, 2024FastAPI - Pydantic 에러 응답 변경 (feat.Exception Handler)FastAPI로 개발하면 pydantic을 통해 입력받은 데이터의 Validation을 하는 경우가 많습니다. pydantic에서 에러가 발생하면 422에러와 함께 pydantic에서 미리 정해놓은 에러 응답이 전송됩니다. 오늘은 이 부분을 내가 원하는대로 응답을 변경하는 방법을 알아보겠습니다.FastAPI