본문 바로가기

Server/Node.js, JavaScript, TypeScript22

eqauls와 hashCode는 함께 재정의해야 하는 이유 (feat. 동일성과 동등성) Preface동일성과 동등성은 객체를 비교할 때 중요한 개념입니다.Java에서는 equals() 메서드와 == 연산자를 통해 구분할 수 있습니다.Spring에서는 lombok의 @EqualsAndHashCode 어노테이션을 이용합니다.equals() 메서드와 == 연산자의 차이객체 비교 대상에서의 차이가 존재합니다.eqauls() 메소드는 객체의 내용을 비교하고, == 연산자는 객체의 참조를 비교합니다.따라서 두 객체의 내용이 같더라도, 서로 다른 객체라면 eqauls()는 true를,== 연산자는 fasle를 반환합니다.동등성평가의 대상인 객체의 내용이 같은지를 비교하는 개념입니다.자바에서는 equals()메서드를 사용하여 객체의 동등성을 비교합니다.class Team { private List .. 2024. 12. 16.
class-validator 사용법 Preface이전 포스팅을 작성하게된 본 목적을 이어서 작성합니다.동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다.해당 라이브러리에 대한 사용법과 옵션에 대해서 간단하게 정리합니다. class-transformer란 무엇이고 왜 사용할까?Preface동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다. 해당 옵션만 정리하려다가 TypeStack의 라이브러리를fullth.tistory.comTypeStackclass-validator도 class-transformer과 동일하게 TypeStack의 프로젝트입니다.스프링처럼 .. 2024. 8. 15.
class-transformer란 무엇이고 왜 사용할까? Preface동료분이 노드 관련해서 질문주셔서 문제점을 같이 찾아보다가 class-validator의 옵션이 원인이었고, 몰랐던 옵션에 대해 알게되었습니다. 해당 옵션만 정리하려다가 TypeStack의 라이브러리를 같이 정리하고자 하여 class-transformer 대한 기본적인 내용들을 우선 정리합니다. TypeStack노드와 브라우저를 위한 데코레이터 기반의 프레임워크와 라이브러리를 개발하는 Git Organization입니다.Decorator based frameworks and libraries for Node and browser. TypeStackDecorator based frameworks and libraries for Node and browser. - TypeStackgithub.c.. 2024. 8. 15.
JavaScript의 기본 Error 객체 Error() constructor - JavaScript | MDNThe Error() constructor creates Error objects.developer.mozilla.orgTL;DR자바스크립트에 내장된 기본 Error 객체는 name, message 파라미터를 받는다에러를 반환할 때 호출되는 toString 메소드는 name이 존재하지 않을 경우 "Error: "와 message를 붙여서 반환하게 된다.일반적인 에러 관리법보통 에러를 반환할 때는, 기본 에러 타입을 상속받아서 커스텀한 메시지를 반환하는 형태를 이용합니다.interface HttpError {      status?: number;      message?: string;    code?: number;  }  interf.. 2024. 8. 5.
JavaScript의 Number 표현범위 (Java의 int를 곁들인…) Number - JavaScript | MDNNumber values represent floating-point numbers like 37 or -9.25.developer.mozilla.org아래와 같이 일반적인 자료형의 범위를 넘어가는 요청을 방지하고자 하는 작업이 존재하였습니다.처리하는 과정에서 JS의 기초적인 부분에 대해 망각하고 있어 정리합니다.GET /items?page[offset]=0&page[limit]=200000000000000000000 쿼리스트링잠시 쿼리스트링에 대해서 얘기해보겠습니다.  쿼리스트링은 데이터를 전달하는 기본적인 방법 중 하나입니다. URL의 일부이고, 이름에서 알 수 있듯이 문자열입니다. HTTP 요청은 텍스트 기반이므로 쿼리스트링을 포함한 요청은 문자열로 데이.. 2024. 7. 18.
시퀄라이즈의 타입스크립트 호환성 (이 글은 작성중입니다.) 가벼움 등의 이점으로 노드를 이용하여 많은 기업들이 빠르게 서비스를 만들어 나갔지만 결국 동적언어의 한계로 타입스크립트가 등장했고, 이로 인해 더욱 더 노드가 트렌드가 되며 많은 인기를 끌었습니다. 기존 자바스크립트 라이브러리들도 오픈소스 개발자들로 인해 빠르게 타입지원을 이뤄나가 순식간에 TS를 도입하는 사례가 많았고 빠르게 국내 개발시장에 자리잡은 것 같습니다. 빠르게 나아지고 발전하고 있지만 항상 본인의 업무 환경이 최신 환경일 수는 없습니다. 어느 순간 현재 주어진 불편한 개발환경에 익숙해졌고, 어떤 환경에서도 방법은 존재하기 때문에 합리화했던 부분도 있었습니다. 더 합리적이고 좋은 방법이 있는데 여러 이유와 핑계들로 개선하려하지 않는 자세가 결국 공부의 필요성과 의욕도.. 2024. 7. 3.
인프런 강의 안봤는데 봤어요 스크립트 TL;DR아래 순서대로 실행하면 강의가 "봤어요" 처리됩니다.하단의 스크립트를 복사완료처리하고자 하는 인프런 강의 접속개발자도구 실행스크립트 붙여넣기해당 스크립트는 2024-06-28 18:10 기준입니다.인프런의 css 클래스명이 변경되면 동작하지 않을 수 있습니다. 듣기 싫어서 작성한거 아님사내에서 무료로 인프런 강의를 제공해주는 복지를 잘 활용하고 있습니다. 해당 복지는 악용 방지 차원에서 신청 후 3개월간 완강하지 않으면 사비로 강의비를 지불해야 하는 정책이 존재합니다. 최근 어플에 관심이 생겨 강의를 잘 듣고 있었으나, 앱개발 특성 상 빠른 환경의 변화 탓인지 약 500개의 강의 중 거의 절반의 강의가 현재와 달라져 [@Deprecated] 표시를 해주셨습니다. 인프런은 강의 영상에 대해서 1분.. 2024. 6. 28.
Node.js는 싱글 스레드인가? 개요 약 2시간이 소요되는 작업이 있었고, Chunk 방식로 Connection pool의 갯수만큼 나눠서 처리하는 작업이다.본문의 제목과 같이 Node.js 환경에서 동작하고 있고, 성능 개선을 시도하려고 한다. PM2와 같은 프로세스 매니저를 이용해서 프로세스 자체를 여러 개 띄워서 해결할 수도 있지만, 문득 원론적으로 Node.js가 싱글/멀티 스레드인지 헷갈려서 해당 개념을 정리하고자 WorkerThreads와 같이 조사한다. node/lib/worker_threads.js at v20.12.1 · nodejs/nodeNode.js JavaScript runtime ✨🐢🚀✨. Contribute to nodejs/node development by creating an account on Gi.. 2024. 5. 11.
타입스크립트 심볼 타입 (Symbols) 💻 개요 업무 중 심볼 타입이 객체 프로퍼티의 키로서 사용된 경우 해당 객체의 값을 추출해야 하는 부분이 있었습니다. 간단하게 Object.values로 추출하려 했으나, 의도대로 동작하지 않았고 잘몰랐던 부분이여서 해당 부분과 심볼타입에 대해 정리합니다. Documentation - Symbols Using the JavaScript Symbol primitive in TypeScript www.typescriptlang.org 💻 심볼 타입이란 number, string과 같은 기본 데이터 타입 중 하나 불변하고 유일함 문자열처럼 객체 속성의 키로서 사용될 수 있음 💻 생성하는 방법 Symbol 생성자를 호출하는 것으로 값을 생성 let sym2 = Symbol("key"); let sym3 = Sy.. 2024. 3. 14.