728x90
728x90
[NestJS] enum과 literal type 중 어떤걸 사용할까? (feat. Tree-shaking, Template Literal Ty
공부방2024. 3. 29. 15:16[NestJS] enum과 literal type 중 어떤걸 사용할까? (feat. Tree-shaking, Template Literal Ty

정확한 정보 전달이 아닌, 여러 좋은 포스팅들을 보며 적용해보고개인의 관점에서의 의견 서술입니다. 여러 피드백들을 적극 환영합니다.    요약트리 쉐이킹(Tree Shaking)은 번들링 시 사용하지 않는 불필요한 코드를 제거하는 최적화 작업을 말한다.프론트에서의 트리쉐이킹은 번들의 크기를 최소화해서 UX의 향상에 목적이 있다고 하지만 백엔드 관점에서의 최적화는 코드의 안정성, 유지보수 등에 초점이 맞춰지고, 프로젝트의 특성과 요구사항과 등을 고려하는 것이 좋다고 생각한다.TypeScript4.1에 추가된 Template Literal Type처럼, 명시된 타입들을 조합하는 복잡한 타입 조합이 필요하지 않을 경우, 이넘을 사용하는 것이 어떠한 이넘 값으로 강제되기 때문에 오히려 더 명확한 의도를 전달할 ..

FCM 푸시알림 구현과 알림 대상 데이터 세팅과 벨리데이션에 대한 고민 / FCM, Scheduling, Redis
프로젝트2024. 2. 2. 16:43FCM 푸시알림 구현과 알림 대상 데이터 세팅과 벨리데이션에 대한 고민 / FCM, Scheduling, Redis

단순 구현 Firebase 클라우드 메시징 Firebase 클라우드 메시징(FCM)은 무료로 메시지를 안정적으로 전송할 수 있는 크로스 플랫폼 메시징 솔루션입니다. firebase.google.com 워낙 공식문서가 잘되어있는 덕에, 공식문서를 통해 토큰을 클라이언트에서 받아오는 데 성공하고 서버에 FCM TOKEN을 관리할 수 있게 셋팅도 해두고, 프로젝트 기획에 맞게 FCM 발송을 할 수 있게 함수를 만들었다. /** * alert Type에 맞춰 푸시알림 전송 * @param alertType * @returns */ async fcm(alertType: string, tartgetId: string, testMessage?: string) { try { //FCM TOKEN이 있어야만 전송이 가능..

[NestJS] 코드 리팩토링하기 - 응집도를 높이고 의존성을 명확하게
트러블슈팅2024. 1. 21. 21:59[NestJS] 코드 리팩토링하기 - 응집도를 높이고 의존성을 명확하게

서론 요즘 좋은 코드 라는 키워드에 대해 특히 변경과 재사용이 용이한, 높은 응집도와 낮은 결합 관계 에 대해 많이 생각하고 있다. 특히 기존 레거시를 모두다 걷어내기에는 시간적으로 애로사항이 있어 틈틈이 관련된 프로젝트에 들어갈 때, 해당 로직에 대한 레거시들을 최대한 바꾸려고 노력하고 있다. [네이버클라우드 개발자 스토리] 좋은 코드란 무엇일까?🤔 #클린코드 이야기 📍 “좋은 코드를 짜야 한다”​ medium.com 특히, 상품의 리뷰를 불러오는 함수를 수정해야 하는 일이 최근에 있었는데, 상품군 7~8개의 하위 상품에 대한 리뷰를 모두 다른 함수에서 불러오는 것을 보고 경악을 금치 못했다. (급한 사항이라 판단되어 우선 프로덕션에 수정해서 반영한 뒤 구조를 수정하였다..) 나도 최근에 신규 프로젝트..

1년차 백엔드 개발자의 회고록 / 2023년을 되돌아보며..
회고,후기2024. 1. 1. 21:401년차 백엔드 개발자의 회고록 / 2023년을 되돌아보며..

두서없이 쓰는 본인의 개발 입문 1년( + 1개월) 기념 (실무 3개월차) 1년을 되돌아보며 작성하는 장황한 글이다. 왜 개발자를 선택했는가? 나는 작년 11월. 국비지원 백엔드 개발자 양성과정 교육을 통해 개발자로 입문했다. [K-Digital] 비전공자의 국비지원 백엔드 개발자 양성 과정 수강 후기 (구트 아카데미 자바학원 / 221 본 포스팅은 95년생 비전공인 학원 수강생의 개인적인 후기입니다. 학원 관련 정보 요약 1. 수업시간 09:30 ~ 18:20 / 점심시간 13:30 ~ 14:20 2. 근처 5분거리 내외 괜찮은 점심거리는 많지만 엄청난 맛집 mag1c.tistory.com 조금 더 거슬러 올라가 내가 개발자가 되어야겠다 라고 생각한 이유는 요약하면 다음과 같다. 1. 이전 업계에서의 ..

[TypeORM / QueryBuilder] Relation with property path confirms in entity was not found
트러블슈팅2023. 12. 8. 11:51[TypeORM / QueryBuilder] Relation with property path confirms in entity was not found

최근 레거시 코드 중 DB 관련 로직들을 거의 대부분 쿼리빌더로 변경하는 작업을 완료하고, 검수중에 있다. 그 과정에서 발생한 에러들을 하나하나 정리하여 남기려고 한다. 에러 메세지 원인 관계 매핑이 정확하지 않아서 발생했다. 나의 경우는 아래 이유 때문에 발생했는데, TypeORM의 쿼리빌더를 사용하는 과정에서, 커스텀 리파지토리를 생성하여, 해당 리파지토리에서 두 테이블을 조인해서 사용했는데, 처음 INNER JOIN을 시도한 테이블에서, enterprise라는 엔터티에 대한 정의를 내리지 않았기 때문에 발생했다. 해당 엔터티를 살펴보면, export class EasyBookWhichEntEntity { @PrimaryGeneratedColumn({ type: 'int', name: 'no' }) ..

[NestJS] NestJS 개발 환경 셋팅
Java Script2023. 9. 9. 00:20[NestJS] NestJS 개발 환경 셋팅

서론 9개월 정도를 스프링만 사용하던 신입 개발자인 나에게 갑작스레 실무에서 Node.js를 사용해야하는 상황이 닥쳤다. 기존 backend 코드를 보니 모듈을 import하는 것들이 대부분 @nestJS/어쩌고로 되어있는 typescript였다. 실무를 위해 빠른 적응이 필요했다. 나중에 node와 typescript, nest등에 대한 적당히 자세한(?) 공부 및 포스팅을 진행할 것이다. 간단하게 알아본 바로는 다음과 같았다. NestJS는 서버 측 노드 애플리케이션을 구축하기 위한 프레임워크로 Express와 같은 HTTP Server Framework를 내장하고 있고, 대부분 TypeScript로 구성되어 있다고한다. 이미 셋팅되어있는 개발환경을 다시 뜯어보기전에, 어떻게 개발환경을 셋팅하는지 부..

728x90
728x90
image