분류 전체보기
[ python + github Action ] PR 리스트 자동화 하기 (with. pygithub)
코드 리뷰 문화를 제대로 정착하기 위해서 팀 레포에 대한 PR 목록들을 자동화하여 리스트업 할 필요가 있었다. 그러기 위해서 좀 리서치를 해본 결과 아래의 좋은 레퍼런스가 있었다. 뱅크 셀러드 코드리뷰 우아한형제들 기술블로그 공통시스템개발팀 코드 리뷰 문화 개선 이야기 | 우아한형제들 기술블로그 {{item.name}} 안녕하세요. 공통시스템개발팀 배대준입니다. Merge Request(Pull Request)를 생성했는데 리뷰어는 묵묵부답이고 직접 요청하자니 업무를 방해하는 건 아닌가 걱정하신 적이 있으신가요? 작 techblog.woowahan.com 코드 리뷰 in 뱅크샐러드 개발 문화 | 뱅크샐러드 안녕하세요, 뱅크샐러드 BanksaladX iOS Engineer… blog.banksalad.co..
[ 컨퍼런스 후기 ] MongoDB Day Seoul 2022
요새 포스팅을 해야지.. 해야지.. 생각하기만 하다가 최근, 3년 만에 양재역에서 열린 MongoDB Day Seoul 2022에 오프라인으로 참석할 수 있게 되어서 후기를 작성할 겸 가볍게 타이핑을 시작하게 되었다! 정확히 어디서 보고 신청을 했는지는 모르겠지만, 캘린더에 등록되어 있어서 하루 전날 행사 측에서 참여 여부를 한번 더 나에게 물어보았고, 나는 참석 가능하다고 한 뒤 아침 일찍 일어나 출발했다. 다행히 집 앞에서 양재역 9번 출구까지 바로 가는 직행 빨간 버스가 있어서 비교적 쉽게 갔었다. 기억상 한 9시 20분쯤이었던 것 같은데 엘리베이터를 내린 순간 등록을 해야하는 줄이 어마어마했다.. 사진은 너무 정신이 없어서 찍지 못했다. 아무튼 무사히 등록을 마치고 자리를 잡기 위해 들어갔다! 거..
미니멀리즘 실천하기
미니멀리즘 실천을 위한 나만의 가치관 정립하기 내가 원하는 기분 내가 원하는 모습, 비전 내가 원하는 방향으로 가지 못하게 방해하는 요인? 집, 직장, 인간관계, 돈, 시간, 가족 등등.. 직장 내가 원하는 직장에서의 모습으로는 함께 일하고 있다는 느낌, 기분이 드는 게 좋다. 하나의 문제를 가지고 하루 종일 고민만 하거나, 풀리지 않더라도 점점 해결책에 가까워지는 느낌이 들고 팀원들이 하나가 된 것 같은 기분이 들었으면 좋겠다. 그 속에서 배우는 점이 있다는 확신을 갖는다는 것이 중요할 것 같다. 그렇지 않다면 다른 팀원은 정말 무의미한 시간이라고 생각할 수도 있기 때문이다. 끊임없이 서로의 생각을 공유하고 개인의 목표가 결국 팀의 목표로 이어질 수 있으면 좋겠다. 내가 원하는 직장에서의 내 기분으로는..
[ python ] celery 모듈에 대해서 알아보자.
Celery 들어가기 전에.. Celery 4.0 버전은 장고 1.8 이상의 최신 버전을 지원한다. 따라서 장고 1.8 미만이라면 Celery 3.1 버전을 사용! 또한 같이 사용하는 모듈인 celery-singleton과 django-celery-beat가 있다. 추가로 더 알아보자. 모듈 설명 Python으로 작성된 분산 메시지 전달을 기반으로 한 비동기 작업 큐(Asynchronous task queue/Job queue)이다. 셀러리를 사용해 분산처리 프로세스를 작성할 수 있다. 비동기로 작업을 처리할 수 있도록 도와주는 파이썬 프레임워크이다. 따라서 셀러리는 worker(워커)라고 불리는 프레임워크이다. 사용하는 이유? 웹 서버는 동기적으로 처리하기 때문에 오래 걸리는 연산이나 오래 걸리는 작업..
[ 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..