분류 전체보기
-
[Nest.js 공식문서 읽기] ProviderServer/Nest.js 2023. 1. 27. 15:02
Provider provider는 nest의 기본개념이다. nest의 services, repositories, factories, helpers등 기본 클래스들은 대부분 provider로 취급될 수 있다. 그리고 provider는 종속성으로 주입될 수 있다. 이것의 의미는 객체들이 다양한 관계를 만들 수 있다는 것을 의미하고, 그 관계 설정에 맞게 인스턴스를 생성하는 일은 nest 런타임에게 위임된다. 물론 provider도 controller처럼 module에 메타데이터를 전달해주어야 nest가 해당 클래스를 provider로 인식할 수 있다. 📌 SOLID(객체 지향 설계) nest로 객체 지향 방식의 종속성을 설계하고 구상할 수 있기 때문에 SOLID 원칙을 따르는 것을 강력히 권고한다. The ..
-
[Nest.js 공식문서 읽기] ModuleServer/Nest.js 2023. 1. 27. 14:58
Module module은 만들어진 controller, sevice, repository 등을 하나로 합치는 역할을 한다. 캡슐화 nest의 모듈은 기본적으로 provider를 캡슐화한다. 즉, 현재 모듈에서 export된 프로바이더나 주입된 모듈에서 export된 프로바이더가 아니라면 프로바이더를 주입(inject)하는 것은 불가능하다. 만약 하나의 모듈에서 직접 exports를 통해 내보낸 것들이 아니면 외부에서 접근 또는 삽입이 불가능하다. 예를들어 a, b, c 모듈이 있다고 가정하면 a 모듈에서 b 모듈의 프로바이더를 사용하고 싶다면, b 모듈에서 해당 프로바이더를 직접 exports에 등록해주어야 한다. export에 등록하는 방법은 @Module 데코레이터 내부에 등록하면 된다. 위 예시처..
-
[Nest.js 공식문서 읽기] ControllerServer/Nest.js 2023. 1. 27. 14:57
컨트롤러 컨트롤러는 애플리케이션에 대한 특정 요청을 받고 응답을 리턴하는 곳이다. 라우팅 express에서는 라우터와 컨트롤러를 분리했었는데, nest는 express의 라우터와 컨트롤러를 합쳐놓은 모습이었다. nest에서는 express에서 사용하지 않던 데코레이터라는 것을 사용한다. 📌 데코레이터 데코레이터는 클래스의 필수 메타데이터를 등록하고 nest가 라우팅 맵을 생성할 수 있도록 한다. Nest에서 제공하는 데코레이터를 사용할 경우 자체적으로 인스턴스를 생성해준다. - Nest에서는 불필요한 메모리 사용을 방지하기 위하여 싱글톤 패턴을 적용시킬 수 있는 데코레이터를 제공한다. - @Resolver(for GraphQL), @Controller(), @injectable() 등, 해당하는 것을 모..
-
[자료구조] 자료구조를 배우는 이유Algorithm | Data structure/Theory 2023. 1. 19. 15:03
1. 자료구조를 배우는 이유 데이터를 체계적으로 저장하고 효율적으로 활용하기 위해 자료구조를 사용 대부분의 자료구조는 특정 상황에 놓인 문제를 해결하는 데 특화 많은 자료구조를 알아두면 특정 문제 상황에 적합한 자료구조로 데이터를 정리, 문제를 빠르고 정확하게 해결할 수 있음 따라서, 문제 해결 능력을 필요로하는 알고리즘과 연관성이 있음 2. 자료구조란? 자료구조란 데이터의 묶음을 저장하고 사용하는 방법을 정의한 것이다. 그렇다면, 데이터란 무엇일까? 데이터는 문자, 숫자, 소리, 그림, 영상 등 실생활을 구성하고 있는 모든 값이다. 데이터는 그 자체만으로 어떤 의미를 갖는 정보인지 알 수 없다. 예를 들어 20이라는 숫자는 사람의 나이일 수도 있고 단순히 기간을 의미하는 20년일 수도 있다. 데이터는 ..
-
[프로그래머스] 폰켓몬Algorithm | Data structure/문제풀이 2023. 1. 17. 18:26
문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫..
-
[자바스크립트] Map과 SetLanguage/JavaScript 2023. 1. 17. 17:57
Map map 객체는 키가 있는 데이터를 저장한다는 점에서 객체와 유사하지만, 맵은 key에 다양한 자료형을 허용한다는 점에서 차이가 있다. 1. 주요 메서드 new Map() – 맵을 만든다. 인수는 이터러블을 받고, 인수를 받지 않으면 빈 map 객체가 생성된다. map.set(key, value) – key를 이용해 value를 저장합니다. map.get(key) – key에 해당하는 값을 반환합니다. key가 존재하지 않으면 undefined를 반환합니다. map.has(key) – key가 존재하면 true, 존재하지 않으면 false를 반환합니다. map.delete(key) – key에 해당하는 값을 삭제합니다. map.clear() – 맵 안의 모든 요소를 제거합니다. map.size – ..
-
[자료구조] 해시(hash), 해시 함수, 해시 테이블Algorithm | Data structure/Theory 2023. 1. 17. 16:53
1. 개요 해시 : Key:Value의 구조를 갖는 자료구조를 의미한다. ex) 전화번호부 / 이름=key, 전화번호=value Key : 매핑 전 원래 데이터의 값 Hash value : 매핑 후 데이터의 값(해쉬 테이블의 index) Hash table : (Index, value)의 집합 Hashing : 매핑하는 과정 2. 해시함수 해시함수는 임의의 길이를 갖는 임의의 데이터에 대해 고정된 길이의 데이터로 매핑하는 함수를 말한다. 같은 입력 값(key)에 대해서는 같은 출력 값(index)가 출력 된다. 해시함수는 입력 값의 범위보다 출력 값의 범위가 좁은 경우가 많기 때문에 입력 값이 다르더라도 동일한 값이 출력될 수도 있다. 이러한 경우를 ‘충돌(collision)’이라고 하는데, 위 사진 예..
-
Kgeul - 기업협업 회고Project 2023. 1. 16. 22:50
다비수디지탈이라는 회사에서 했던 4주간의 기업 협업(인턴십)에 대한 회고이다. 다비수디지탈은 2018년에 설립된 회사이고 그 이전에는 다른 회사명으로 교육 사업을 진행해왔다. 주로 유아, 초등학생 대상의 교육 콘텐츠 사업을 주력으로 삼고있는데 그동안 축적된 교육 노하우를 활용, 에듀 테크 사업으로 확장을 도모하고 있는 상태였다. 에듀테크 전환의 일환으로 ‘외국인을 위한 한국어 학습 app 제작’ 프로젝트를 진행하고 있었고 제품 출시에 앞서 좋은 아이디어를 얻기 위해 우리에게 프로젝트의 일부를 맡겼다. 1. 프로젝트 소개 외국인을 위한 한국어 회화 학습 하이브리드 앱 제작 기간 : 2022.12.12 ~ 2023. 1. 5 (4주) 인원 : FE 1명, BE 4명 Stack 공통 : Node.js, npm..
-
[Typescript] GenericLanguage/Typescript 2023. 1. 11. 22:23
Generic 제네릭은 선언 시점이 아닌 생성 시점에 타입이 정해진다. 이를 활용해, 하나의 타입만이 아닌 다양한 타입을 사용할 수 있도록 하는 기법이다. 한번의 선언으로 다양한 타입에 재사용이 가능하다는 장점이 있다. // Conbine Polymorphism, Generic, Class, Interface together // Let's make a API class like Localstorage API in browser // 제네릭을 클래스로 보내고, 클래스가 제네릭을 인터페이스로 보내고 // 인터페이스는 제네릭을 사용할 수 있다. interface SStorage { [key:string]: T } class Localstorage { private storage:SStorage = {} se..
-
[Typescript] ClassLanguage/Typescript 2023. 1. 11. 21:51
📌 참고 : https://poiemaweb.com/typescript-class 기본문법 ES6 클래스는 클래스 내부에 메소드만 선언할 수 있다. 즉 멤버변수(프로퍼티) 선언은 불가하고, 멤버함수(메소드)만 선언 가능하다. 멤버변수의 선언은 반드시 생성자 내부에서 클래스 프로퍼티를 선언하고 초기화 한다. // person.js class Person { constructor(name) { this.name = name } walk() { console.log(`${this.name} is walking.`) } } 하지만 Typescript 클래스는 클래스 몸체(내부)에 클래스 프로퍼티의 타입을 사전 선언하여야 한다. //person.ts class Person { name : string; const..