오히려 좋아..

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

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

분류 전체보기 209

주니어 개발자에게 필요한 경험

이제 어느덧 지금회사 다닌지도 9개월 정도 되었다. 일년전으로 돌아간다면 아래 것들을 준비했을 것 같다. * git 형상관리 * OOP 관련 개념 * 클린 아키텍쳐(layered architecture로 구성된 프레임워크, nestjs, spring) * 문서화(문서 자동화) * 테스트 코드 작성, 코드 리뷰 구현 방법은 일단 코드 리뷰는 혼자 할 수 있는 부분이 아니기 때문에 제외하고 적어보면 nestJS와 reactJS로 블로그 프로젝트를 만든다. 가장 간단한 형태의 리스팅기능과 글 작성 기능만 있는 형태이다. 기능별로 브랜치를 만들어 작업한다. 블로그에 글을 작성하면서 기능을 하나씩 추가한다. 사용하면서 불편했던 점을 개선할 기능들을 직접 추가한다. 이때도 역시 브랜치를 따로 파서 작업한다. 이걸 ..

글/🐕🐾 일기 2022.05.25

NestJS를 사용 후기

NestJS는 마치 설계도 없는 레고블럭을 산 느낌이다. NestJS를 보다가 잠깐 우리 Django를 보면 이렇게 완제품으로 잘나오다니... 이런생각이 종종 든다. 음.. Nest가 직접 재료를 사다 음식을 만든다고 하면 Django는 밀키트 느낌이다. 어쨌든 Nest는 뭔가 모듈화 로직 + typescript의 type을 이용해 동적 타입언어에서 마치 스프링을 쓰는 느낌을 제공해준다. 상대적으로 러닝커브도 낮고. 난 장고가 짱인 줄 알았지만 NestJS를 계층화 시켜서 사용해보면 아 이게 의존성 주입이구나 아 이게 OOP구나 아 이게 clean architecture구나 라고 생각하게 된다. 만약 내가 개발 학원을 차린다면 무적권 장고로 개발 맛만 보여준뒤 NestJS를 배우게 하고 싶을 정도로 편하..

글/🐕🐾 일기 2022.05.21

[NestJS] Mongoose Cache 적용

nestjs는 기본적으로 모듈화를 지향한다. 클라이언트(프론트 엔드 아님) 에서 사용할 부분만 보여주고 나머지 로직은 보여주지 않는 캡슐화를 지향하는 것이다. 그래서 기존에 작성되어 있는 NodeJS 패키지들을 NestJS에서 사용하기 위해 패키지를 다시 작성하거나 캡슐화를 하지않고 사용해야한다. 하지만 캡슐화를 하지 않고 사용하자니 도메인 로직 코드에 패키지에 대한 의존성이 끊임없이 전파되는 것을 보면 참을 수가 없는분노가 치밀어 오른다. 그렇다고 패키지를 모듈화 해서 다시 작성하자니 부담스러운게 사실이다. 오늘은 모듈화 하지않고 적당한 캡슐화를 할 수 있는 방법을 cachegoose 패키지를 통해 설명하려고 한다. 1. Mongoose Cache cachegoose는 mongodb로 날라가는 쿼리를 ..

[typescript] class-transformer, Object를 클래스로 클래스를 Object로! [1]

종종 개발을 하다보면 외부에서 들어온 JSON 응답을 내부 로직에 사용하거나 내부에 있는 데이터를 외부로 보내줘야할 때가 있다. 그럴때마다 들어온 JSON을 그대로 사용하거나 plain Object를 만들어 반환해줄 때가 있다. 하지만 이런 방식은 돌아가지만 좋은 방식은 아니다. 왜냐하면 외부의 세부 사항이 그대로 들어나 내부로직을 더럽히는 경우가 발생하기 때문이다. 즉 캡슐화가 제대로 되지 않는다는 의미이다. 예를 들어 클라이언트에서 서버응답을 받아 그대로 Object로 만들어 사용하는 경우를 생각해보자. 이 경우에는 서버의 필드 값이 변경되었을 때 해당 API를 사용하는 모든 컴포넌트에 변경이 필요하다. 그 뿐만 아니라 클래스로 변환하면서 해당 클래스에 관련된 로직을 구현할 수 있어서 오히려 코드에 ..

[HTML] 유튜브 iframe 전체화면으로 만들기

유튜브링크를 긁어 iframe에 넣으면 아래처럼 종종 전체화면이 되지 않는 문제가 있다. 온갖 방법을 다 시도해봤는데 안되서 문제 해결한 과정을 정리해둔다. 전체화면을 구현할 수 있는 방법은 먼저 iframe 자체에서 구현해주는 기능을 사용해도 되고 만약 구현되어 있지 않다면 JS(Javascript)를 이용해 구현하면된다. 오늘은 긁어온 링크가 유튜브 처럼 자체 전체화면을 지원한다는 가정하에 작업을 진행하도록 하겠다. 먼저 iframe이 아마 아래처럼 생겼을 것이다. HTML 삽입 미리보기할 수 없는 소스 이제 iframe에 하나만 추가해주면된다. allowfullscreen 이다! 자 이제 추가하고 한번 확인해보자! HTML 삽입 미리보기할 수 없는 소스 다들 나처럼 고생하지 않았으면 한다! 도움이 ..

[typescript] 날짜 String 타입으로 만들기

타입스크립트에서는 많은 것들을 타입으로 만들어서 사용한다. 개인적인 생각으로는 일반 정적 타입 언어들이 컴파일 에러로 잡아주는 부분을 동적 타입언어에서 타입으로 만들었다는 생각이든다. 어쨌든 타입스크립트는 타입 에러를 통해 동적타입 언어의 단점을 어느정도 극복했다고 생각한다. 편하고 빠르고 재밌다. 오늘은 별걸 다 타입으로 만드는 타입 스크립트에서 아래와 같은 date string을 타입으로 만드는 방법에 대해 알아보겠다. '19990201' '20210226' 전체 과정은 마치 레고를 만드는 것처럼 만들면 된다. 먼저 숫자 타입을 만들어준다. const type digit = 1|2|3|4|5|6|7|8|9|0; 1. Year 타입 연도는 아래와 같이 표기 가능하다. 개인용 컴퓨터가 처음 등장했을 때가..

[MongoDB] 스키마 디자인 패턴 1: 버킷 패턴(Bucket Pattern)

https://www.mongodb.com/blog/post/building-with-patterns-the-bucket-pattern Building with Patterns: The Bucket Pattern | MongoDB Blog Streamlining your Travel Needs with Lambus and MongoDB Traveling can be a hassle. Ok, that’s putting it mildly (to say the least). But what if traveling didn’t have to be so difficult? Lambus is the all-in-one travel platform that is designed to put yo www.mongodb..

Technology/DB 2022.02.24