목록개발 (301)
Generic 제네릭을 사용하면 다양한 방식으로 자신만의 타입을 사용할 수 있다. 제네릭은 Type 을 함수의 파라미터처럼 사용할 수 있는 것을 의미하는데, 기본 타입과 Generic 을 적용한 타입을 비교해보고자 한다. 기본 타입 문자 / 숫자 / 불리언 || any || unknown // 1. 문자/숫자/불린 기본 타입 const getPrimitive = (arg1: string, arg2: number, arg3: boolean): [boolean, number, string] => { return [arg3, arg2, arg1]; // type 으로 정해놓은 값만 반환이 가능하다. }; const result = getPrimitive("철수", 123, true); // // // 2. a..
린터와 포멧터 적용 이유 혼자하는 개발이라면 상관 없지만, 대부분의 개발은 타 개발자와 협업을 통해 진행하게 된다. 허나 각기 코드를 작성하는 방식이나 습관들이 다르기 때문에, 통일성이 떨어질 뿐더러 읽는데도 시간이 오래걸릴 수밖에 없게 된다. 이를 해결하기 위해 등장한 것이 린터와 포멧터. 그리고 린터 중에서는 eslint , 포멧터 중에서는 prettier가 대표적이라 이 둘은 NestJS에도 포함되어 있다. 린터 eslint 는 수많은 린터 중에 하나로, 코드 작성 규칙을 설정할 수 있는 기능을 제공해준다. 예를 들어, import 순서 / 느슨한 동등 연산자 '==' 금지 등이 설정 가능하다. 간단히 얘기하면, 린터는 일관성 있는 코드의 퀄리티를 보장하는 것을 돕는다고 볼 수 있다. eslint ..
포스팅을 읽기 전 읽어보면 좋을 포스팅 2023.02.02 - [코딩/알쓸코잡] - Cookie / Local storage & Session storage JWT (JSON Web Token) JWT 는 유저를 인증 / 식별하기 위한 토큰 기반의 인증이라고 볼 수 있다. JWT 는 토큰 자체에 [사용자의 권한 정보 / 서비스를 사용하기 위한 정보] 가 포함되어 있는데, 이 JWT 는 서버가 아닌 '클라이언트'에게 저장되기 때문에 서버의 부담을 덜 수 있다는 장점을 가진다. JWT 을 쓰는 이유 JWT을 사용하는 이유는 두 이유가 있다. (서버 기반 인증의 문제점 & JWT의 장점) 서버 기반 인증 방식의 문제점 세션 : 세션이란, 유저가 인증을 할 때 해당 인증에 대한 정보들을 서버가 가지고 있는 것을..
문제 - 실패율 function solution(N, stages) { let obj = {} // 객체로 정리 for(let i = 1 ; i
미래의 나에게 typeORM @nestjs/typeorm typeorm mysql2 typeORM 에 대해 포스팅 전 다루어야 할 개념에 대해 먼저 소개한다. ORM ORM (Object relational Mapping) 은, 그 말마따나 객체와 관계를 맵핑해주는 것을 말한다. 여기서 Mapping 이란, OOP(객체 지향 프로그래밍) 로 이루어진 Class 와, SQL(관계형 데이터 베이스)의 Table 을 연결시켜주는 것을 의미한다. 이전 포스팅에서 ODM(mongoose)를 통해 noSQL문을 작성했던 것처럼 ORM 또한 객체 지향적으로 코드를 작성할 수 있게 도와주는 역할을 한다. Sequelize (JavaScript 에서 일반적으로 사용) Sequelize 는 ORM을 지원하는 라이브러리이며..
decorator 데코레이터는 구조를 수정하지 않고 기존 객체에 새로운 기능을 추가할 수 있도록 하는 디자인 패턴이다. 일반적으로 데코레이터는 함수의 정의 전에 호출되며, 함수를 인수로 얻고 새로운 함수를 돌려주는 구조다. (어찌보면 고차함수 | 콜백함수와 비슷한 느낌이다.) 정리하자면, 데코레이터는 코드를 꾸며주며, 타입스크립트에서는 그 기능을 함수로 나타내는 것. @(골뱅이)로 표현되며, 그 안에는 메소드 / 프로퍼티 / 파라미터 / 클래스가 들어갈 수 있다. 데코레이터 작성 예시 데코레이터 콘솔 결과 CatController 클래스 위에 데코레이터 Controller 가 작성된 모습. CatController 클래스가 함수의 매개변수로 받아져서 함수 Control 내부에서 사용됨으로, Control..
느슨한 결합 (loose-coupling) 느슨한 결합은 객체 간의 연결고리를 헐겁게 하는 것, 즉 다른 Class를 직접적으로 사용하는 의존성을 줄이는 것을 의미하며, 객체 간 매우 강한 연결고리를 갖는 강한 결합(tight coupling)과 반대되는 개념이다. 강한 결합(tight coupling)의 특징 하나의 객체를 변경하게 되면 다른 객체들을 변경을 요구되어 변경점들을 확인하고 쉽게 놓칠 수 있다. 결합이 강하게 되어있어 결합이 되어있지 않으면 사용을 할 수 없게 된다. new를 선언할 때마다 컴퓨터 메모리를 사용하게 되는데 비교적 강한 결합에서 new를 더 많이 사용해 메모리를 많이 잡아먹게 된다. 느슨한 결합의 특징 클래스/클래스를 느슨하게 결합되어 새로운 기능을 개발하거나 기존 기능을 수..
Schema schema 는 DB 의 활용을 편리하게 하기 위해 데이터 간의 연결고리 및 형식을 정의하는 것을 말한다. 특정 데이터 모델을 이용해 만들어지고, 데이터 구조적 특성을 의미한다고 볼 수 있다. Schema 의 3계층 Schema 는 외부 스키마 / 개념 스키마 / 내부 스키마 3가지로 분류된다. 외부 스키마 사용자가 보는 개인적인 DB이며, 일반사용자 또한 SQL을 이용하여 사용 가능 스키마의 일부를 볼 수 있기때문에 서브 스키마라고도 하며, 여러 개가 존재할 수 있음 개념 스키마 DB의 전체적 논리적 구조 시스템 전체를 관장하는 스키마로 하나만 존재 개체 간의 연결고리와 제약 조건을 나타내며, DB의 접근 권한, 보안, 조건 등 규칙에 관한 내용을 정의 내부 스키마 물리적인 저장 장치로써의..