본문 바로가기
반응형

전체 글161

Fastapi docs 무작정 따라하기 ORM 편 - 2 Create the Pydantic models 이전 포스팅에서 SQLAlchemy의 models를 구성하고 제작하는 방식을 알아보았다. 그리고 언급한 부분이 pydantic의 model과 sqlalchemy의 model이 다르므로 혼동해서는 안된다는 내용이었다. pydantic은 데이터 검증을 위해 사용하는 툴로 타입 힌트를 이용해 데이터의 타입을 명시하고 그에 맞지 않는 데이터가 발견되면 에러를 발생시켜 데이터의 형태를 강제하는 용도로 사용한다. api를 이용한 io 테스크가 많은 백엔드 작업시에 굉장히 유용한 툴이다. io 작업에서는 직렬화된 데이터를 주고 받는 작업이 대부분인데 pydantic은 이 직렬화된 데이터를 파싱해주는 툴이기 때문이다. 그래서 만약 파싱이 불가능한 데이터는 에러를 발생시키.. 2022. 6. 6.
Fastapi docs 무작정 따라하기 ORM 편 - 1 시작하기 Fastapi에서는 파이썬으로 제공되는 어떤 방식의 DB도 사용이 가능하다. DB는 서버에서 발생하는 io 작업이므로 서버 성능에 큰 영향을 주게 된다. 따라서 Fasapi의 공식 문서를 무작정 따라가면서 어떤 방식을 권장하는지 알아보자. 여기에 의존하여 작성된 문서임을 밝힌다. ORM 서버에서 DB를 사용하는 방법은 크게 두가지가 있다. 하나는 쿼리문을 직접 작성하여 DB로 날리는 방식이고 다른 하나는 DB의 Table에 mapping 할 수 있는 형태의 객체를 만들어서 관리하는 방식이다. 후자의 이름이 바로 ORM인데 지금까지 나는 쿼리를 직접 작성하는 방식에 익숙해 있어 ORM을 많이 활용하지 않았다. 하지만 비동기 처리나 컨테이너를 올리고 내리는 작업에서 쿼리를 직접 작성해 execute.. 2022. 6. 3.
[Fastapi] asyncio 제대로 써보기 with pytest - 1 시작 이번 포스팅은 이론적으로 공부했던 비동기 처리의 요약을 포스팅한다. 다음 포스팅 부터 이 포스팅의 지식에 근거하여 실질적인 성능향상을 끌어내고 얼마나 성능이 향상되는지도 알아보려고 한다. 최근 비동기를 활용하여 백엔드 프로젝트를 하나 진행한 적이 있다. 이전에 Go 관련 포스팅을 진행할 때 마지막엔 비동기 구현을 꼭 넣고자 했으나 이 프로젝트를 먼저 진행하게 되면서 파이썬의 async await을 먼저 포스팅 해보고자 한다. async는 파이썬의 네이티브 코루틴이 적용되는 함수를 생성하는 방법으로 비동기 함수 구현을 사용할 때 쉽고 간단하게 구현할 수 있도록 해준다. 동기? 비동기? 병렬? 우선은 비동기가 뭔지 정리하고 넘어가야겠다. 비슷한 것으로 병렬연산도 함께 정리하면 좋다. 내 언어로 정리해보.. 2022. 6. 3.
TDD와 cleancode로 만들면서 배우면서 Golang backend -6 가짜 데이터베이스 객체를 완성했다. 이런식으로 쿼리문을 보내면 이렇게 데이터를 볼 수 있다. TDD의 최고 장점중 하나는 Test 파일 자체가 하나의 명세가 된다는 것인데 이렇게 모든 테스트를 통과한 것에 한하여 테스트를 진행하기 위해 작성했던 일련의 코드들이 이 객체를 어떻게 사용해야 하는가를 직관적으로 보여준다는 말이다. 사용법이 이해되지 않을 경우 이런 테스트 코드를 참고하여 코딩을 이어갈 수 있다. 어느 정도 프로젝트의 형태가 잡혀가는 지금 CI/CD를 도와주는 github action을 적용해 보자. 특히 코드의 품질을 측정해서 뱃지로 알려주는 Code Climate을 연동해 보자. 내가 이전에 작성한 글을 참고하면 Code Climate의 기능을 알 수 있다. 2021.09.23 - [MLOp.. 2022. 5. 1.
[ 백준 ] 1867 돌멩이 제거 파이썬 풀이 // 문제 요약 n x n 격자의 운동장에 k 돌멩이가 있다. 격자 하나당 둘 이상의 돌멩이가 있을 수 없을 때 하나의 행이나 열을 따라 직선으로 달려가며 돌멩이를 주워 모두 줍는 최소 달리기 수를 구하여라 // 사고 처음에는 그때 그때 열과 행의 모든 돌멩이 수를 구하고 거기서 가장 많은 돌멩이가 있는 열 혹은 행을 따라 돌멩이를 지우며 제귀적으로 풀이하는 Greedy 방식을 사용했다. 아래의 방법은 결과적으로 실패했다. ### 백준 1867 돌멩이 제거 # https://www.acmicpc.net/problem/1867 n, k = map(int, input().strip().split(" ")) board = [[0 for _ in range(n)] for _ in range(n)] for _ i.. 2022. 4. 25.
TDD와 cleancode로 만들면서 배우면서 Golang backend -5 지난 글에서 굉장히 이상한 부분이 있었다. 2022.04.15 - [코딩 아카이브/Golang] - TDD와 cleancode로 만들면서 배우면서 Golang backend -3 TDD와 cleancode로 만들면서 배우면서 Golang backend -3 지난 글 더보기 2022.04.11 - [코딩 아카이브/Golang] - TDD와 cleancode로 만들면서 배우면서 Golang backend -2 TDD와 cleancode로 만들면서 배우면서 Golang backend -2 소스코드는 아래의 깃헙에서 볼 수 있다.. davi06000.tistory.com 위의 글을 보면 Player에 따른 Score를 저장하는 DB가 등장하는데 그냥 Go의 Map을 이용해서 만든 가짜 DB였다. 그런데 이 DB.. 2022. 4. 22.
반응형