전체 글
[ TIL ] 데이터베이스 정합성, DB Concurrency
DB Concurrency 여러 사용자가 동시에 서버에 요청을 하고, 각각의 요청은 모두 다를 수 밖에 없다. 어떤 요청은 새롭게 데이터베이스에 데이터를 쓸 수 있고, 어떤 요청은 데이터를 조회하기 위해서 요청을 보낼 수 있다. 이번 포스팅에서는 데이터베이스 정합성과 관련된 내용을 간략하게 정리해보려고 한다. 데이터베이스의 동시성? DB에 다수의 사용자가 동시에 접근하는 일은 비일비재 하다. 동시성은 이러한 상황에서 Transaction이 순차적으로 실행되는 것이 아니라, 순서에 상관없이 동시에 실행되는 것을 의미한다. 따라서, 개발자는 동시성을 신경쓰고 관리해 줘야 한다. Transaction 격리 수준 RDBMS에서 처리하는 방식을 알아보자. 우선, Transaction 격리 수준이란 여러 Trans..
[ FastAPI ] pytest를 사용해서 테스트 코드를 작성해보자
Git Repository GitHub - tasddc1226/fastapi Contribute to tasddc1226/fastapi development by creating an account on GitHub. github.com pytest를 사용해서 간단하게 테스트를 해보자. 사전 준비사항으로 작성된 fast api가 있어야 한다. pip install pytest를 통해서 pytest module을 설치한다. 비동기에 대한 테스트를 위해서는 추가로 pytest-asyncio까지 설치해주자. For Test 아래와 같이 새로운 유저를 생성하는 api가 있다. 테스트를 해보자! @router.post("/", status_code=status.HTTP_201_CREATED, response_mo..
"소프트웨어 장인"을 읽고 느낀점
일을 어떻게 했느냐는 일을 해낸 것만큼이나 중요하다. 이 책의 저자 서문에 나와있는 내용이다. 이 말은 저자가 본인의 직장 상사에게 들었던 말이라고 한다. 결과보다는 과정이 중요하다는 말과 일맥상통하는 것 같다. 한때는 과정보다는 결과만을 중요시했던 적이 있었다. 눈앞에 보이는 당장의 것만 해결하려고 했고, 그 과정은 중요하지 않은 채 결과를 위해 수단과 방법을 가리지 않았던 것 같았다. 좀 더 편하고 쉽게 하려고만 했으며 어려운 문제는 피하기 급급했다. Chapter 1. 21세기 SW 개발 저자는 말하기를 아무리 본인이 어떤 한 가지의 프레임워크에 전문가라고 하더라도, 해당 분야에 대해서는 고참 개발자일지라도 다른 부분에서까지도 고참 개발자라고 말하기는 힘들다. 즉, 상대적임과 동시에 고참 개발자는..
[ TIL ] 모든 python 파일의 코드 스타일을 통일해보자 (with. Black)
1. 프로젝트에 black code formatter 적용하기 사용한 명령어 # .gitignore가 있는 경로에서 ❯ black myproject -l 88 --exclude migrations 한 line의 길이 수를 88로 설정하고, 마이그레이션 파일들은 제외한다. 위와 같이 실행하면, 실행 결과로 총 몇 개의 파일들이 수정되었는지 결과가 콘솔에 찍히게 된다! 2. black 적용 방법 1.1 프로젝트 루트 경로에. vscode 파일을 생성 후 settings.json 파일 생성 1.2 settings.json 파일에 아래의 내용을 복붙 { "python.formatting.provider": "black", "python.formatting.blackArgs": [ "--line-length", ..
[ TIL ] DB dump 스크립트를 활용해 로컬 DB 환경 구축하기
최근 새롭게 개발팀에 합류하게 되었고, 프로젝트를 로컬 환경에서 실행하기 위해서 지난주에 개발 환경을 세팅하였다! 로컬 환경을 세팅하려면, DB를 dump 뜨는 과정이 필요하였는데, 처음 해보는 과정인지라 낯설었다.. 사실 모든 과정이 나에게는 낯설고 어렵게만 느껴지지만, 어서 빨리 적응할 수 있도록 해야겠다! 팀 공유문서를 열심히 보면서, 최근 어떤 작업을 진행하였고 이슈는 무엇이 있는지 확인하는 것부터 익숙해지자 💪 아무튼 다시 로컬 환경 이야기로 돌아와서, 프로젝트를 우선 끌어오고, 필요 모듈들을 설치하는 과정부터 시작하였다. 그런데, mysqlclient 모듈이 설치가 진행되지 않았다. 그래서 따로 내 가상 환경에서 mysqlclient를 설치(2.1.1)해준 뒤, 나머지 모듈들을 설치해줌으로 해..
[ Django ] SerializerMethodField를 이용한 시리얼라이저 커스텀하기
이번 포스팅에서는 Django에서 Serializer에 대한 내용을 다뤄보려고 합니다. 한동안 포스팅을 올려야지만 생각하고 실제로는 못하고 있었네요 😂 아무리 바쁘더라도 기록은 필수..! 그러면 내용에 들어가기 앞서 왜 SerializerMethodField를 사용해야 하는지, 무엇을 하려고에 대한 내용을 정리해보려고 합니다! 우선, 현재 환자와 의사에 관련된 진료 예약 서비스를 구축하고 있습니다. 환자는 원하는 시간 특정 의사에게 진료를 받고 싶다고 요청을 보냅니다. 그러면 요청을 받은 의사는 목록을 확인하여 진료 시간을 확인하고, 해당 요청을 시간 내에 수락할 수 있도록 하는 서비스입니다. 간단한 설명을 마치고 바로 본론으로 들어가보도록 하겠습니다. def get(self, request, *args..
[ dbdiagram.io ] CLI 명령으로 DDL DB Diagram 쉽게 뽑기
Django에서 모델링을 하고 마이그레이션 수행하면 연결된 DB에 테이블이 생성된다. 즉, SQL 문장 없이 table들이 생성되어지는데 mysql CLI를 통해서 생성된 테이블이 어떤 DDL(Data Definition Language)로 만들어졌는지 확인해보도록 하자. 더 나아가 dbdiagram.io라는 사이트에서 제공하는 기능으로 쉽게 DB Diagram을 뽑아내 보도록 하자. 우선, DB에 table들이 모두 생성되어있다고 가정. mysql 서버 접속. $ mysql -uroot -p db로 이동 $ use 'DB이름' db내의 테이블 확인 $ show tables; mysql> show tables; +----------------+ | Tables_in_test | +-------------..
[ 원티드 프리온보딩 ] Human Scape - 공공 API 활용 임상정보 Batch Task Server
이번에는 휴먼 스케이프의 프로젝트를 진행하면서 배운 내용과 이슈들을 기록해 보려고 한다. 지난번 프로젝트와 조금은 달라진 점이 있다. 그것은 바로 Github의 Branch 전략을 좀 수정하였다. 이전 프로젝트들에서는 팀원들과 브랜치를 파서 작업을 하는데 브랜치의 이름을 아래와 같이 생성하고 진행하였다. 위처럼 작성을 하니, 팀원끼리 소통을 할 때 어느 브랜치인지 이름을 말해야 하고, 진행상황도 마찬가지로 알기 힘들었다. 그래서 이번 프로젝트부터는 아래와 같이 브랜치 이름 앞에 접두사로 #번호_상세 기능 이런 식으로 네이밍 방식 규칙을 변경해 주었다. 위처럼 작성하니 팀원과 의사소통할 때 보다 편해졌다. 몇 번 브랜치에 ~~ 부분 이런 식으로 빠르게 진행상황을 공유할 수 있었고, 막히는 부분이나 이슈 같..
[ 점핏 북콘서트 직관 후기 ] 주니어 개발자 커리어 방향성
화창한 날씨 6월 2일 목요일 오늘! 저는 코엑스에서 점핏과 교보문고가 주관하는 오프라인 북 콘서트에 우연히 참여할 기회가 생겨서 다녀오게 되었습니다. 이번 포스팅에서 직관 후기에 대해서 정리해보고 어떤 내용이었는지 간략하게 정리하며 현장에서 주고받았던 질의응답 순으로 기록을 해보려고 합니다. 우선, 점핏에서 북콘서트를 진행한다는 메일을 받게 되어서 신청을 하게 되었고, 운이 좋게도 오프라인으로 직관을 할 수 있었습니다. 제가 이번에 참여한 북 콘서트의 포스터였습니다. 이번에 진행하는 회차는 두 번째였으며 코엑스 2층에서 진행하였습니다. 동시에 유튜브 라이브도 진행하였습니다. 2시 시작인데 1시 35분쯤 가장 먼저 현장에 도착하여 안내를 받아 들어오니 간단하게 확인 절차를 거치고 난 뒤에 오프라인 참여자..
[ 원티드 프리온보딩 ] 베어 로보틱스 - 핵심 성과 지표 데이터 분석
이번 포스팅에서는 2번째 프리온 보딩 프로젝트였던 베어 로보틱스의 문제를 진행하면서 겪었던 이슈들과 배웠던 점에서 다시 한번 정리해보려고 한다! 첫 번째 프로젝트를 거의 3-4일 동안 마무리하고 난 뒤, 바로 다음 주부터 주제가 확확 바뀌어서 진행되었던 것만큼 굉장히 정신이 없었지만 팀원들과 함께여서 전혀 두려울 게 없었다. 또한 개인적인 공부를 하는 것보다 엄청난 양의 지식이 들어오는 것을 느낄 수 있었다. 많이 들어온 만큼 팀원들과 공유하려고 노력하였으며, 내 나름대로 나의 언어로 적지만, 다른 분들이 보았을 때에도 이해가 될 수 있게끔 적는 활동이 필수적인 것 같았다. 아무튼 서론이 너무 길었고 바로 두 번째 프로젝트에서는 내가 어떤 것을 배웠는지 정리를 해보자! 이번 프로젝트의 주제는 영수증 데이..