🌈 프로그래밍

    [ 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 | +-------------..

    [ Django ] postgresql을 사용할 때 migration 관련 오류

    이번 포스팅에서는 Django 프로젝트를 진행하면서 발생한 오류에 대한 기록을 하려고 한다. 우선 Django는 python 언어를 기반으로 한 프레임워크이고, 각 모듈을 app이라고 부른다. 그러니까 Nestjs 프로젝트에서 nest g mo "모듈 이름" 명령을 사용해서 모듈을 생성하는 것처럼 Django에서는 app을 생성할 때 프로젝트 폴더 내에서 아래와 같은 명령을 사용한다. $cd 프로젝트 $python manage.py startapp 앱이름 위와 같이 만들어 준다. 프로젝트 생성부터 이미 진행했다고 가정한 뒤, 오류 사항을 기록하려고 한다. migration? 그전에! migration이라는 것을 미리 좀 알아두면 좋을 것 같아 기록하려고 한다. Django에서 migration(마이그레이..

    [ Python ] 유용한 라이브러리 정리

    itertools 반복되는 형태의 데이터 처리에 유용 특히 순열과 조합 라이브러리가 유용함. 순열 서로 다른 n개에서 서로 다른 r개를 뽑아 순서대로 나열 from itertools import permutations data = ['A', 'B', 'C'] result = list(permutations(data, 3)) print(result) #[('A', 'B', 'C'), ('A', 'C', 'B'), ('B', 'A', 'C'), # ('B', 'C', 'A'), ('C', 'A', 'B'), ('C', 'B', 'A')] 중복 순열 from itertools import product data = ['A', 'B', 'C'] result = list(product(data, repeat=2)..

    [ NestJS ] CSR, SSR MVC 패턴에 대해서 알아보자

    들어가면서 .. 프로그래밍을 하다보면 한 번 쯤은 MVC 패턴에 대하여 들어보거나 접해보았을 것이다. 더 나아가 MVVM, MVP 등등 다양한 것이 존재한다고 하는데 가장 기본이되는 MVC에 대해서 알아보려고 한다. 그리고 CSR과 SSR에 대해 정리를 해보려고 한다. 많은 회사들이 다양한 디자인 패턴에 대한 이해를 필요로 하여 나도 나름대로 정리하면 좋겠다 해서 정리를 해보려고 한다. CSR과 SSR? 우선 MVC에 알아보기 전에 간략하게 Client Side Rendering과 Server Side Rendering에 대해서 알아보자. SSR : Server측에서 html 파일을 렌더링하여 브라우저에게 전송 CSR : Client측에서 html 파일을 렌더링하여 브라우저에게 전송 즉, 쉽게 말해서 브..

    [ NestJS ] Interceptor와 AOP 패턴에 대해서 알아보자

    이번 포스팅에서는 Nest에서 Interceptor에 대해서 알아보려고 한다. 그전에 AOP와도 연관이 있으니 먼저 AOP 패턴에 대해서 알아보려고 한다. 왜냐하면 Nest에서 Intercepto가 AOP(Aspect-oriented programming)에서 영감을 받았기 때문이다. AOP(Aspect-oriented programming) 란? 우리말로 관점(측면) 지향 프로그래밍이라고 한다. 목적으로는 모듈성을 높이는 것을 목표로 하는 프로그래밍 패러다임이다. 여기서 말하는 관점은 교차 관심사 혹은 수평적 관심사라고 하는데 말이 너무 어렵다. 아래의 그림을 보면서 추가적인 설명을 해보려고 한다. 위의 그림을 보면 핵심기능 3가지가 있고 이 핵심 기능이 애플리케이션의 각각의 컨트롤러라고 생각해보자. ..

    [ NestJS ] 파이프 디자인 패턴에 대해서 알아보자

    이번 포스팅에서는 지난번에 간략하게 파이프 패턴에 대해서 알아보았었는데 좀 더 자세하게 알아보려고 한다. 우선 NestJS에서 정의하고 있는 파이프에 대해한 내용은 다음과 같다. 파이프의 정의? NestJS에서의 파이프는 클라이언트 요청에서 들어오는 데이터를 유효성 검사 및 변환을 수행하여 서버가 원하는 데이터를 얻을 수 있도록 도와주는 역할을 합니다. 그렇다면 여기서 드는 의문점이 있다. 바로 파이프라는 이름에 대한 의문점이다. 아니, 클라이언트의 요청에 대한 데이터를 유효성 검사와 변환을 하기 위한 것인데.. Data Transform 또는 Data Validation이라고 이름을 짓지 않은 이유가 뭘까?? 우선, 왜 이름이 파이프인지 생각하기 이전에 상상을 해보자. 클라이언트의 요청이 데이터와 함께..

    [ NestJS ] Repository Pattern에 대하여 알아보자

    안녕하세요? 수구리입니다. 이번 포스팅에서는 Nest의 Repository pattern에 대해서 알아보려고 합니다. 디자인 패턴에 대해서 공부하는 것은 굉장히 중요하다고 생각합니다. 어떤 패턴을 쓰냐에 따라서 코드의 유지보수와 관리의 난이도가 결정되기 때문입니다. Repository Design Pattern ? 한 줄로 요약하자면 비즈니스 로직이 있는 Service Layer와 Data Source Layer 사이에서 중재자 역할을 하는 또 다른 하나의 Layer을 말합니다. Service Layer에는 비즈니스 로직 즉, 서비스의 핵심이 되는 로직이 존재합니다. 만약 Repository 패턴을 적용하지 않는다면, 비즈니스 로직에서 데이터베이스에 직접 접근을 하게 됩니다. 이런 경우 문제점이 발생합니..