전체 글

전체 글

    [ Django ORM ] 문자열 숫자를 int로 캐스팅해서 정렬해보자.

    보통 문자열 숫자를 정렬한다고 하면 .. ["60", "20", "0", "120", "0", "80"] 위와 같이 문자열로 이루어져있는 숫자들이 있다고 가정해보자. 별 다를 것 없이 정렬한다면 어떤 결과가 나올까? 실제 결과는 아래와 같다. ['0', '0', '120', '20', '60', '80'] 0 다음에 120이 바로 나오게 된다. 왜냐하면 너무 당연하게도 앞문자열에 따라 120의 1이 20보다 빠르기 때문이다. 실제 나는 정렬하려고 하는 기준 데이터들은 다음과 같았다. 해당 필드는 문자열이고 문자 + 숫자가 함께 저장되어있는 필드였다. 우선, BAD_WEATHER_ 이라는 문자열은 모두 공통이므로 from django.db.models.functions import Substr Substr..

    [ node/express ] 외부 API post 요청 시 json Array 객체를 포함해서 전송하기

    외부 API를 사용하려면 외부 api 요청을 하기 위해서는 가장 먼저 제공해주는 API document를 이해하는 것이 첫 번째 단계이다. 어떻게 요청을 보내야 하고 필수 값은 어떤 것이 있는지, 필요한 헤더 정보는 무엇이 있는지 등등 파악해야 한다. 문서도 꼼꼼이 보지 않고 요청을 날리는 바보 같은 행동은 이제 그만~ (제 이야기에요) POST 요청 시 필요한 값 분석 내가 사용하려고 하는 외부 API를 분석해보니 다음과 같은 데이터가 필요했다. path : str method : str header : json object body : json Array path는 요청을 어디로 날릴지에 대한 endpoint이고, method는 요청을 어떻게 할 건지, get인지 post인지.. 그렇지만 나는 npm..

    [ 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", ..