개발/개발의 ㄱ 썸네일형 리스트형 [python] 버전 변경 Mac은 기본으로 python3@3.9가 설치되어 있습니다. 버전 업그레이드시 pyenv, brew를 이용해 새로운 버전 설치로 오버라이딩 하면 자연스레 됩니다. 이번 글에선 수동으로 진행해볼까 합니다. # which python3 /usr/bin/python3 # 왼쪽처럼 출력되면 기본 python설정이 되어 있습니다. #수동 설정을 위해 ~/.zshrc에 alias를 추가해줍니다. vi ~/.zshrc alias python3="python{버전}" # python3를 python{버전}으로 설정하겠다는 statement #갱신 적용 source ~/.zshrc 이상입니다 더보기 [NestJs] query, param type전환에 따른 DTO validation get 요청시 query, param은 무조건 string으로 값이 온다. NestJs에서 권장한 dto는 class-validator을 통해 유효성 검사가 가능한데, IsNumber이 먹히지 않는 이슈가 있다. 어떻게 할까? 1) enableImplicitConversion: true // main.ts ... app.useGlobalPipes( new ValidationPipe({ transform: true, transformOptions: { enableImplicitConversion: true }, }) ); ... transform true와 함께 enableImplicitConversion: true을 설정해, 암묵적 변환을 실행한다. 2) @Type(() => Number) import .. 더보기 [NestJs] DTO 유효성 vs constructor 초기화 (when strict mode) controller에서 파라미터(query, param, body) 유효성을 검사하기 위해 DTO를 사용한다. 그런데 코드 품질?을 위해 tsconfig.json에서 "strict: true" 설정을 하면, class 프로퍼티(state)들은 초기화하라고 아래 문구가 뜬다. has no initializer and is not definitely assigned in the constructor 재밌는건 초기화 하면, client 값이 아닌 계속해서 초기화 값을 출력한다는....... 고민한 끝에, 아래 두가지 방법을 제안한다. 1) "strictPropertyInitialization": false tsconfig.json에 "strictPropertyInitialization": false을 추가한다.. 더보기 [Redis] redis WRONGTYPE Operation against a key holding the wrong kind of value 캐시 목적으로 레디스를 사용한다. 종종 위와같은 에러가 발생하는데, 이전 값 타입과 현재 값 타입이 다르기 때문이다. 레디스 데이터 타입은 공식 문서에서 확인할수 있다. https://redis.io/docs/data-types/ Redis data types Overview of data types supported by Redis redis.io 예를 들어 set을 이용해 문자를 설정했는데, lpush를 이용해 동일한 키에 리스트를 만든다면 에러가 발생한다. 이전 값을 삭제하고 설정해도 되지만, 레디스 사용 목적이 약속된 알고리즘을 최적화하는 것이니...... 데이터 설계를 잘해야할듯 싶다. 더보기 [Js] 값, 리터럴, 표현식, 문, 토큰이란 리터럴 문자 또는 약속된 기호로 값을 생성하는 표기법 *런타임시 리터럴을 평가해 값을 생성(메모리에 타입별로 값 넣음) ex: ‘1’, true, null 표현식 값으로 평가될수 있는 (statement) 문 *리터럴도 런타임으로 평가받으니, 표현식으로 볼수 있다 *식별자 참조시에도 값을 평가하니 표현식이다(여기서 평가는 가져온다는 개념) *크롬 개발자 도구에 표현식은 값을 출력한다 값 (표현)식이 평가되어 생성된 결과 ex: 1+1, function(parameter) 값 = 표현식의 결과 값과 표현식의 결과는 동치(equivalent)이다 -동치이므로 표현식이 값 자리에 위치할수 있다. ex: 1+a 문(statement) 프로그램을 구성하는 기본 단위이자 최소 실행 단위 *문의 집합이 프로그램이고,.. 더보기 [NestJS] 사용할 메소드가 Promise인지? 객체 지향의 클래스, 함수형의 순수함수. 모두 사용할 함수/객체의 특징을 자세히 알기보단, 어림잡아 개발하는 뉘양스를 품고 있는거 같다. // ioc 없다 가정 class TestClass{ constructor(){ this.service = new TestClass2() } method1(){ this.service.method2() } } class TestClass2{ async method2(){ console.log(“hi") } } 위 예시에서 method1 작성시, TestClass2.method2의 특성을 다 알아야할까? 뭐 알면 좋지만, 대규모 프로젝트를 진행한다 가정했을때 사용할 메소드(함수)를 자세히 알고 개발하기 어렵다. 어렵다보단, 상위 단위로 사고한다는 관점으로 부적합하다. 그.. 더보기 [NestJs] Exception Error 처리 NestJs에서는 exception 에러 class를 제공한다. https://nestjs-doc.exceptionfound.com/globals.html @nestjs/common Const longPayload longPayload: object[] = [{_id: '584f17147fce7ca0a8bacfd2',index: 0,guid: '1d127572-0369-45fb-aa2f-e3bb083ac2b2',isActive: true,balance: '$2,926.06',picture: 'http://placehold.it/32x32',age: 26,eyeColor: 'green',name:'Wçêtson Aguilar [s nestjs-doc.exceptionfound.com // controlle.. 더보기 [NestJs] microservice RabbitMQ 적용 - (개념) NestJs에서 RabbitMQ를 적용한 레퍼런스가 많지 않습니다. 이전에 MSA(MicroService Architecture)를 구축했었기에, 금방할거라 생각했지만 꽤 걸렸네요. 두 글에 걸쳐서 적용하는 과정을 공유하려 합니다 NestJs는 microservice 기능을 제공한다. http단계를 넘어 transport단계까지 아우를수 있다고 한다. *transport 수단으로 RabbitMQ를 사용한다 이해하면 좋다 https://docs.nestjs.com/microservices/basics Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.j.. 더보기 이전 1 2 3 다음