오히려 좋아..

상황이 나쁘게만 흘러가는 것 같을 때 외쳐보자.. .

궁금한 마음으로 포트폴리오 보기

Language/Python 12

[NestJS] 스웨거에서 여러 Type의 Object Array 정의

swagger를 사용하다 보면 여러 타입의 오브젝트가 들어간 Array를 정의해야할 때가 있다. 아래처럼하면 된다. $ref가 돌아가지 않는다면 아래 링크를 통해 방법을 확인하자. https://cocook.tistory.com/213 [NestJS] Swagger에서 refs 안될 때 Swagger에서 DTO를 이용해 서버 응답 값을 정의하는 기능이 있는데 직접 가져오는게 아닌 경로를 작성해주면 해당 경로에 있는 클래스를 가져와 붙여주는 기능이 있다. 경로는 분명히 맞는데 안되 cocook.tistory.com export const API_RESPONSE: ApiResponseOptions = { status: 200, isArray: true, description: "Successful respo..

Language/Python 2022.08.22

[Python] WSGI란?

오늘은 늘 보지만 어색한 WSGI에 대해 알아보겠습니다. WSGI란? 먼저 WSGI를 한마디로 정리해보면 웹서버(Web Server)와 서버 어플리케이션 사이를 연결해주는 부분입니다. 물론 후려친 정의이지만 일단 이렇게 알아둡시다. 아직 웹서버와 웹 어플리케이션 차이를 모르신다면 아래 페이지를 통해 알아보세요! https://cocook.tistory.com/87 [Web] WAS와 Web Server 차이 3줄 정리 1. 웹서버는 정적페이지, WAS는 동적페이지 응답 2. 둘다 함께 배포하는 이유는 각자 잘하는 걸 하기 위함 3. 장고는 꼭 Webserver와 배포하자 장고 배포와 관련된 글을 보면 WS(Web Server, 웹 cocook.tistory.com 이를 조금 어렵게 말해보자면 웹서버와 웹..

Language/Python 2022.08.16

[FactoryBoy] Trouble Shooting

테스트를 작성하면서 특정모델 A에 역참조인 모델을 A가 생성되면서 같이 생성해야하는 일이 있었는데 구현하면서 꽤 고생했다. 이 과정을 정리해둔다. 아래의 간단한 예시를 사용했다. class Company(models.Model): name = models.CharField('회사명', max_length=100) created_at = models.DateTimeField('생성 일자', auto_now_add=True) updated_at = models.DateTimeField('업데이트 일자', auto_now=True) class Product(models.Model): company = models.ForeignKey(Company, related_name='products', on_delete..

Language/Python 2021.11.06

[Python] 파이썬 노답 삼형제(1) - 데코레이터

바야흐로 대개발자시대다. 많은 사람들이 다양한 이유로 IT업계로 모이고 있고 나도 그들 중 하나이다. 입문하는 사람들 대부분은 파이썬을 통해 이 곳에 발을 들인다. 파이썬이 상당히 배우기 쉬운 언어 중에 하나이기 때문이다. 일단 동적 타입 언어고 특별히 빌드과정 없이 스크립트상에서 바로 실행되기 때문에 입문 언어로 많이 선택한다. 하지만 파이썬이 마냥 쉬운 언어인가? 그렇지만은 않다. 파이썬을 학습하면서 몇몇 고비가 있는데 바로 데코레이터, 제너레이터, 디스크립터 형제들이다. 사실 문법 특별히 어려운 건 아니지만 도대체 어디에 써먹어야 할지 감이 안잡히는 그런 형제들이다. 오늘의 포스팅은 파이썬 노답 삼형제 중에서도 첫째인 데코레이터에 대해 알아보도록 하겠다. 데코레이터 바로 쓰기 데코레이터는 일종의 s..

Language/Python 2021.07.17

[Python] Thread-safe 한 자료구조

멀티스레드 환경에서 스레드간 통신을 위해 자료구조를 사용한다고 한다. 하지만 동시에 여러 스레드에서 하나의 변수에 접근시 임계영역 문제가 발생하게 된다. 그렇기 때문에 자료구조 역시 Thread-safe 하게 만들 필요가 있다. 아래는 Thread-safe 구현한 set 클래스 이다.(파이썬 동시성 프로그래밍, 에이콘 출판사 에서 발췌) from threading import Lock class LockedSet(set): def __init__(self, *args, **kwargs): self._lock= Lock() super(LockedSet, self).__init__(*args, **kwargs) def add(self, elem): with self._lock: #with keyword는 자..

Language/Python 2021.04.29

[Python] @property 너 누구야? 후아유

이번 포스트에서는 파이썬 클래스에서 종종 보이는 @property에 대해 알아보겠다. 결론부터 이야기하자면 @property 데코레이터는 객체의 프로퍼티를 보호해주는 함수라고 할 수 있다. 먼저 본격적인 포스팅에 앞에서 꼭 집고가야할 것이 있다. 바로 접근제어자(Access Modifier)이다. 1. 접근 제어자(Access Modifier) 1.1 접근 제어자 정의와 필요성 접근제어자(Access Modifier)는 객체의 프로퍼티의 접근을 제한하는 명령어로 객체내에 선언되어 있는 프로퍼티를 접근할 수 있는 범위를 제한하는 것이다. 대표적인 객체 지향 언어인 자바에서는 public, private, protected 가 있다. 각 접근 제어자의 접근 가능 범위는 아래와 같다 1. public : 모든..

Language/Python 2021.03.28

[Python] 정적 메소드 staticmethod, classmethod

파이썬 클래스의 코드들을 보면 종종 메서드 위에 데코레이터로 다음과 같은 것들이 붙어있을 때가 있다. @staticmethod @classmethod 오늘은 파이썬의 정적 메서드를 만드는 방법인 staticmethod, classmethod에 대해서 알아보도록 하자 본격적인 글에 앞서서 정적메서드(static method)란 무엇일까? 정적 메서드는 클래스가 생성되지 않아도 즉 인스턴스 없이도 사용할 수 있는 함수로 인스턴스에서는 호출 할 수 없는 함수를 가리킨다. 1. staticmethod staticmethod는 메서드를 정적 메소드로 바꿔주는 것으로 데코레이터를 이용해 바꿔준다. 일반적으로 메서드에는 맨 앞의 argument로 self를 넣어주지만 staticmethod에는 넣어주지 않는다. cl..

Language/Python 2021.03.27

Mac Terminal 에서 conda 안될 때

Mac Terminal에서 conda 명령어가 안될 때 해야되는 일 1. 아래 명령어를 통해 conda를 환경 변수로 추가해준다. export PATH="/Users/username/anaconda3/bin:$PATH" # 이거 또는 아래 두개 source /etc/profile source ~/.bash_profile 이렇게 하고 나서 conda activate를 실행했는데 아래와 같은 에러가 뜬다면 CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'. To initialize your shell, run 다음의 명령어를 넣어준다. cd ~ #홈으로 이동하고 source ~/anaconda3/e..

Language/Python 2020.11.17