나는 현재 멘토링을 진행하고 있다. 멘토링을 진행하면서, 어제 받은 멘티의 질문이 과거 나 또한 고민했던 내용이었기에 해당 내용을 정리해둔다면, 다른 사람들에게 도움이 될 수 있는 정보가 될 수 있지 않을까 하는 생각에서 내용을 정리해본다. 질문의 내용을 정리한다면 다음과 같다.주요 질문: AbstractBaseUser를 상속받는 AbstractUser는 따로 사용할 필요가 없는가?(AbstractBaseUser의 사용 시기는 언제인가?)추가 질문: 데이터 설계 시, 필요없는 필드를 포함해도 괜찮은가? 과거 django(이하 장고)를 사용할 때, 나 또한 이러한 고민을 했었다. 장고를 사용하면서 가장 좋았던 점은 필요한 것들은 이미 거의 대부분 모듈로 제공되고 있었고, User 또한 그러하였으며, 추후..
Pydantic을 사용한 직렬화와 역직렬화 직렬화는 객체 데이터를 통신하기 쉬운 포맷(Byte, CSV, JSON 등) 형태로 만들어주는 작업을 말하며, 역직렬화는 반대로 포맷(Byte, CSV, JSON 등)형태에서 객체로 변환하는 과정을 말한다. 직렬화: 객체들의 데이터를 전송할 수 있도록 특정 포맷 상태로 변환하는 것역직렬화: 직렬화된 데이터를 다시 객체 형태로 만드는 것 위키백과에서 말하는 직렬화직렬화(直列化) 또는 시리얼라이제이션(serialization)은 컴퓨터 과학의 데이터 스토리지 문맥에서 데이터 구조나 오브젝트 상태를 동일하거나 다른 컴퓨터 환경에 저장(이를테면 파일이나 메모리 버퍼에서, 또는 네트워크 연결 링크 간 전송)하고 나중에 재구성할 수 있는 포맷으로 변환하는 과정이다.[1..
들어가기 전 Pydantic은 Python 영역에서 사용하는 타입 힌트와 데이터 검증을 보다 쉽고 명확하게 해주는 라이브러리이다. 누군가는 이러한 "타입을 강제하는 Pydantic이 Python을 Python스럽지 못하게 사용하는 것"이라 이야기하기도한다. 하지만 타입을 강제하는 것은 Python의 철학와는 별개로 서비스 운영측면에서 중요한 요소이다.타입힌팅은 코드의 명확성을 높여주며, 개발자의 개발 생산성과 밀접한 연관이 있는 IDE의 자동완성 기능와 결합되어 높은 개발 생산성을 이끌어 낼 수 있다.데이터 구조가 명확해짐으로써 다른 서비스팀와의 협업과 유지보수가 더욱 더 편리해진다. Pydantic은 타입을 강제하는 것 뿐만아니라, 커스텀 유효성 검사와 데이터 직렬화(serialization) 및 역직..
이 포스팅은 개인 공부 기록을 위해 작성했습니다. 정확하지 않은 정보일 수 있음에 참고 부탁드립니다. 조언과 토론은 언제나 환경입니다! 구성1. 상황: 의존성 주입이 적용된 클래스의 테스트 진행 간 올바른 의존성 주입이 이뤄지지 않음 - 나의 의도2. 조치3. 풀리지 않은 의문점들요약 - 상황 - 원인 - 해결 - 한계상황: 의존성 주입이 적용된 클래스의 테스트 진행 간 올바른 의존성 주입이 이뤄지지 않음(추측) 전달 전에는 객체(정상)이지만, 전달 후에는 async_db가 function으로 되는 것인지 이해할 수 없었다. 나의 의도 내가 테스트 하고자 한 Servic 클래스는, 추상클래스(AsyncExampleRepository)를 사용하며, 실제 사용시에는 구현체(AsyncEx..
테스트 환경개발환경python==3.9async-asgi-testclient==1.4.11pytest==8.1.1pytest-asyncio==0.23.6 디렉토리 구조├── alembic├── frontend├── scripts├── src│ ├── domains│ ├── external_service│ ├── main.py├── tests│ ├── conftest.py│ └── src└── venv상황 FastAPI를 활용한 동기 API 단위 테스트를 작성하던 중 정의한 fixture를 찾을 수 없다는 문제에 직면했다. 나는 conftest.py에 sync_client를 정의한 상태였는데, 해당 fixture를 찾아오지 못했다. 이와 관련하여, 나는 conftest.py의 선언된 ..
문제 링크 1261번: 알고스팟 첫째 줄에 미로의 크기를 나타내는 가로 크기 M, 세로 크기 N (1 ≤ N, M ≤ 100)이 주어진다. 다음 N개의 줄에는 미로의 상태를 나타내는 숫자 0과 1이 주어진다. 0은 빈 방을 의미하고, 1은 벽을 의미 www.acmicpc.net 💡문제 분석 요약 탐색 알고리즘 문제로 최소 개수를 구해야 하는 문제였기 때문에, BFS를 활용하여 문제를 풀이했다. 문제에서 조건을 제한하고 있기 때문에 조건을 따라 문제를 풀이하면 된다. 이동할 수 있는 방 == 이동할 수 있는 방향 미로 밖으로 이동할 수 없음 1 = N: # 범위를 벗어나면 아래의 코드를 실행하지 않는다. continue if dist[nx][ny] == -1: # 아직 해당 방을 방문하지 않았다면 # 만약..