전체 글 53

1. 프로젝트 생성과 구성

1. 프로젝트 생성과 구성 1) 프로젝트 생성 $ yarn add @nestjs/cli $ nest new 프로젝트명 (yarn선택) 2) Nest 기본구성 모듈 $ nest g mo module-name 외부로 서비스를 공개하고 싶을경우 export 추가 @Module({ controllers: [CatsController], providers: [CatsService], exports: [CatsService], }) export class CatsModule {} 컨트롤러 $ nest g co controller-name 서비스 $ nest g service service-name 3) Nest 응용구성 미들웨어 $ nest g middleware middleware-name 적용시 모듈을 아래와같..

개발/NestJs 2023.10.09

함수형 프로그래밍은 왜 사용하는가?

불변성이나 높은수준의 추상화 같은 딱딱한 이야기는 접어두고 꽤나 오래동안 함수형 언어에대한 회의감이 있었습니다. 이론적으로 좋은 것들도 결국 유지보수가 어려워지는 것은 피할 수 없고 그런 의미에서 함수형 프로그래밍은 결함 투성이로 보였습니다. 그러나 최근에 함수형 프로그래밍에 대한 인식이 바뀌기 시작했습니다. 여전히 유지보수와 직관적이지 않은 방식에 대해서 회의적인 시각도 있지만 일단 생산성이 뛰어나다는건 부정하기 힘든 장점입니다. 이 생산성이라는 부분에대해 예전에는 이론적으로 알고있었는데 사용을 하면할수록 생각의 흐름이 끊기지 않는다는 차원의 생산성이 좋아지기에 절차지향적 혹은 객체지향적 관점에서는 비교불가한 장점입니다. 결국 프로그래밍이란건 함수를 중심으로 돌아가게 되어있고 함수에 대한 추상화가 얼마..

개발/Etc 2023.07.14

Querydsl 에서 datetime과 date 비교하기

일단 가장 좋은 방법은 일시와 일자를 비교할일이 없는게 베스트이다. 그러나 현실에서는 일자와 일시를 비교할 일이 많으며, 비교대상중 하나가 상수인경우는 쉽게 해결될것이다. 문제는 둘다 엔티티화 되어있는 경우인데 이런경우 가장 먼저 아래와 같은 해결책을 제시할 수 있다. .on(Expressions.dateTemplate(LocalDate.class, "DATE_FORMAT({0}, {1})", a.orderDatetime, "%Y-%m-%d") .between(b.startDate, b.endDate)) 그러나 이런 방법에는 문제가 있다. MySQL에서는 아무 문제없이 작동할 수 있지만 다른 데이터베이스로 마이그레이션할 일이 있다면 DATE_FORMAT 함수가 부메랑으로 날아온다. 의외로 그런 문제는 빠..

개발/Spring 2023.07.10

엔리얼 에어 (nreal air) 리뷰

AR/VR에 관심있는 분들은 모두 한번 들어봤을 법한 기기입니다. 사실 저는 관심있었지만 사는걸 주저했는데 왜냐하면 애플글라스가 나올 수 있을거라는 일말의 기대감 때문이였지요 하지만 비전프로라는 휴대성이 끔찍한 기기를 애플이 들고나온이상 바로 엔리얼에어를 주문했습니다. 결론부터 말하자면 엔리얼에어는 현존하는 최고의 가성비를 가진 AR 기기입니다. 단지 어떻게 쓰느냐에 따라 소비해야될 금액에 큰 차이가 있습니다. 저는 제가 소유한 모든기기(대략9종) 에 연결해보았고 기기에 대한 간단한 소개는 유투브에 설명해주시는 분 많으니 그분들을 참고해주시고 저는 겉 핧기 식 체험리뷰가 아닌 정말 도움이 될만한 리뷰를 준비해봤습니다. 일단 가격은 쿠팡에서 50만원근처에 팔고 있습니다. 아이폰, HDMI 연결을 위한 어뎁..

mynewgear 2023.06.25

Description 을 사용하자

전통적인 JavaDoc 은 아래와 같습니다./** * Javadoc 테스트용 클래스 * * @author aimyon * @version 1.0 */ @JobScope @Component public class DemoParameter { /** * 버전 */ @Value("#{jobParameters[version]}") private String version; /** * 버전 반환 * * @return 버전 */ public long getVersion() { return Long.parseLong(version); } }Description 를 활용하면 다음과 같이 작성할 수 있습니다.@Description("테스트용 클래스") @JobScope @Component public class Demo..

개발/Spring 2023.06.20

[BrainStorm] 새로운 Git 전략에대한 고찰

GitFlow 전략을 이해하고 사용하기 전부터 Git을 사용하고 있었는데요 그때를 생각하면 마치 SVN처럼 Git을 사용하며 Git은 commit과 push가 나눠져있어서 좋아라고 하던 과거가 떠오르네요 적지않은 시간동안 Git Flow를 사용하며 개인적으로 느꼈던 감정과 보완되면 좋을만한 점에대해 이야기해보려고 합니다. 1. GitFlow 전략은 무엇인가? Git은 브랜치기반의 버전관리 시스템이기에 브런치를 어떻게 생성하고 병합할지에 대한 전략이 필요합니다. 그런 전략들 중 GithubFlow와 함께 가장 많이 사용되는 전략이며 업계의 표준으로 자리잡고 있습니다. 2. 장점 티켓단위로 브런치를 생성할 때 충돌을 최소화하며 독립적인 환경을 구축할 수 있습니다. 또한 개발서버와 운영서버의 배포시에도 전략적..

개발/Etc 2023.06.19