대파양파애비
ilikezzi

Backend dev?

Nope, 말하는 감자입니다만.
Database/MongoDB

[MongoDB] Mac에서 MongoDB 완전히 삭제하는 법

오라일리의 "mongoDB 완벽가이드" 서적으로 저번주부터 MongoDB 스터디를 시작했다. 쉘에서 간단한 기능과 문법들을 실습하면서 스터디하기 좋다. 그래서 homebrew에서 mongoDB 설치해서 실습을 진행했다. 몽고 실행 brew services start mongodb-community@4.2 몽고 중지 brew services stop mongodb-community@4.2 몽고 실행 확인 brew services ( Mac os Background Process ) 몽고 쉘 실행 mongo / mongosh 간단하게 설치후 쉘까지 진입하는 명령어이다. 하지만..! 버전문제랑 이것저것 에러들이 꼬이면서 6시간 가량 구글링하면서 끙끙댔다. 일단 전부 제거 후 재설치하는 방향으로 진행하려는데 이..

Database/MySQL

[Mysql] Error - Invalid use of NULL value

Mysql에서 테이블 디자인을 변경하다가 생각 오류에 대해서 포스팅 해보려고 한다. 프로젝트를 하다가 컬럼에 NOT NULL 조건을 줘야되는 상황이여서 DB에서 테이블 디자인에서 NOT NULL 조건에 체크를 저장을 해주니 사진과 같은 에러가 발생했다. 해당 에러는 아주 단순한 문제이다. 조건을 변경하려는 컬럼을 이전에 NOT NULL 조건 없이 사용해서 해당 데이터에 NULL 값이 남아있어서 그렇다. NULL 인 값을 UPDATE문으로 전부 NULL이 아니게 바꿔주면 끝나는 문제다.

Web/NestJS

[Nest.JS] IoC , DI란? 그리고 NestJS의 꽃 Provider

미루고 미루다가 오늘 드디어 NestJS의 꽃인 Provider와 필수로 알고 가야되는 Ioc, DI에 대해 포스팅 해보려고한다. 처음 공식문서를 접했을 때엔 이게 무슨소린가 싶었지만 너무나 중요한개념이라서 관련문서를 끊임없이 찾아보았다. 솔직히 개념적으로 모르더라도 NestJS로 개발하는데 큰 어려움은 없지만 제대로 알고 개발을 하고 싶었다. Provider 우선 Provider를 사전적 의미로 보면 제공자이다. 뭘 제공하느냐? 의존성을 주입할 수 있다는 말이다. 의존성을 주입할 수 있다는 의미는 object가 다른 object와 다양한 관계를 만들 수 있고, 객체의 인스턴스를 연결해주는 기능은 Nest 런타임 시스템에 위임될 수 있다. 그리고 대부분 NestJS의 클래스는 service, repos..

Web/TypeOrm

[TypeOrm] timezone: 'z' charset UTC시간 설정

TypeOrm으로 개발을 하다보면 꼭 정해줘야하는 "timezone"에 대해서 알아보자. 우선 UTC시간과 KST에 대해 알고있어야한다. UTC시간은 협정세계시 , UTC +- 00:00 KST시간은 한국시간 , UTC +09:00 개발을 할때 같은 시간인데 DB에 UTC, KST 시간이 섞여서 나올때도 있다. ex) DB에 값은 2023-01-28 00:00:00 이지만 TypeOrm으로 가져왔을땐 2023-01-27 15:00:00로 변경이 되있다. ex) 서버에서 DB의 시간값을 읽는 과정에서 offset이 0인값을 읽어온 후 KST시간 +09:00인 값으로 변환을 해버리는 현상 왜 이런현상이 발생하는걸까? -> TypeOrm이 시스템의 타임존을 따라가기 떄문이다. TypeOrm은 디비와 연결하면서..

Web/TypeOrm

[TypeOrm] 차이를 알고쓰자 save() , insert() , update()

오늘은 TypeOrm method인 save(), insert(), update() 에 대해서 알아보려고 한다. 얼핏보기에는 비슷해서 아무거나 써도 될 것 같은데 이게 별거 아닌 것 같아도 성능에도 영향을 끼친다. 우선 typeorm 공식 홈페이지에 나와있는 사진을 보면서 한개씩 알아보자. SAVE() save() 메서드는 값이 없으면 insert 기능을 하여 데이터를 저장하고 값이 존재하면 덮어쓴다. 그러고 저장된값을 select해서 리턴한다. 수정할때 save()는 기존의 데이터를 위에 덮어쓰는 방식이라서 기존데이터가 사라진다. 쉽게말해 document단위로 데이터를 변경한다. ex) 필드가 5개 존재하고 save로 2개의 필드를 수정하려면 5개의 필드는 전부 사라지고 2개의 필드만 저장된다. INS..

Web/NestJS

[Nest.JS] ParseIntPipe "Validation failed numeric string is expected" Error

NestJS ParseIntPipe 우선 파이프란 Injectable( ) 데코레이터이며 data transformation 과 data validation 을 주 목적으로 사용한다. - data transformation 이란? 입력데이터를 원하는 형식으로 변환하는 것을 말하며 예를 들어 문자열에서 정수로 바꾸는 것을 의미한다. - data Validation 이란? 단어 그대로 데이터 검증이다. 유효성 체크로 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달한다. 그렇지 않고 데이터가 올바르지 않을 떈 예외를 발생시킨다. Nest의 pipe는 크게 두 종류가 있는데 직접 만들어 사용하는 파이프를 커스텀 파이프 라고 하고 미리 만들어진 것을 빌트인 파이프 라고 한다. 오늘 볼 ParseIn..

Web/NestJS

[Nest.JS] class-transform의 plainToInstance를 활용한 Object Mapping

Class-transform을 다루기전에 Model Mapper에 대해서 먼저 대략적으로 알아보자. Model Mapper 이 Model Mapper란 쉽게 말해 object에 필드값을 원하는 모양의 object로 매핑시켜주는 라이브러리다. Typescript에서 Model Mapper는 class-transform이 있다. class-transform중에서 plainToInstance에 대해서 포스팅을 해보려고 한다. 해당 코드는 Nest.js에 service부 이다. plainToInstance 는 무엇이며 excludeExtraneuosValues 는 무엇이고 이걸 왜 쓰는것일까? 하나하나씩 알아보자. 사용이유? 코드를 보면 DB Layer와 View Layer 사이의 역할을 분리하기 위해 Enti..

Programming/협업

[Programming] Naming Rull

Why Naming Rull? 명명 규칙 준수를 통한 업무 생산성 효과 일종의 규약을 설정하여 협업의 원활한 업무적 의사소통 가능 업무 단계별 산출물 사이의 일관성 유지 명확한 의미 부여로 산출물 사이의 연관성 및 코드 가독성 증가 @ 대소문자 혼용 기법 1. 클래스나 메소드명은 파스칼 표기법을 따른다. 모든 단어에서 첫 번째 문자가 대문자이며 나머지는 소문자로 표기. public class HelloWorld{ // 클래스명 public void HelloCity(){ // 메소드명 } } 2. 변수, 파라미터 등은 카멜 표기법을 따른다. 최초에 사용된 단어를 제외한 모든 단어의 첫 문자가 대문자이며, 나머지는 소문자로 표기. int totalCost = 0; // 변수명 String fullName ..

Programming/Git

[Git] Git Pull Error (stash)

우선 git stash 란? 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다. git pull을 했을때 다음과 같은 에러가뜬다면 터미널에 순서대로 입력해보자. 1. git stash 2. git pull 사진처럼 제대로 pull이 되는걸 볼 수 있을것이다. 3. git stash 4. git stash list 5. git stash drop 6. git branch 사진처럼 정상적으로 완료된것을 볼 수 있을것이다.

Web/NestJS

[Nest.JS] Swagger Error : "TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body."

Nest.js 를 사용하면서 api문서화 도구인 "Swagger"를 사용하는데 여기서 스웨거란? Swagger 는 REST API를 설계, 빌드, 문서화 및 사용하는 데 도움이되는 OpenAPI 사양을 중심으로 구축 된 오픈 소스 도구 세트입니다. - About Swagger Specification 이 스웨거를 사용하다가 "TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body." 라는 오류가 발생해서 포스팅을 해보려고 한다. @Get 방식으로 유저 정보에 대해 불러오려고 했는데 스웨거 관련 코드를 보면 이렇다. @ApiBody({ type: ListUserDto, description:..