programming
[rxjs] rxjs의 테스트 코드 작성(미완성)
옵저버블 객체를 subscribe하는 코드에 대해 테스트코드를 작성할 때, 옵저버블 객체의 비동기적인 동작 때문에 subscribe()의 동작이 끝나기 전에 return을 시키는것으로 보인다 그래서 아래의 코드에서는 catch블럭으로 넘어갈 일이 없을 것 같다 export class Service { ---생략--- async func(req){ try { const observable1$ = from(req.data).pipe( mergeMap(async (data) => ({ await repository1.create(e) }), ); observable1$.subscribe({ next: async (data) => { await repository2.create(data) }, error: (e..

CQRS 패턴
CQRS 패턴이란 command and query responsibility segregation의 약자이고 명령과 조회의 책임분리를 의미한다 도메인 모델을 command 연산과 query연산으로 분리시키는것이다 query는 단순 조회를 뜻하고 command는 단순조회를 제외한 나머지 연산들( crud에서 cud에 해당됨 ) 1단계 가장 일반적인 단계는 단일 DB에 command와 qeury모델을 분리시키는 방식이다 2단계 이렇게 command와 query에 책임이 분리되어 있으니 이제 각기 다른 데이터베이스를 적용시킬 수 도 있어 read는 NoSql write는 Sql 등 서비스에 더 잘 최적화된 디비를 선택해서 적용할수있다 그럼 위와 같이 Polygrat 한 구조가 가능하다 위의 구조에서는 동기화 ..

github access 토큰생성방법
Personal Access Token은 HTTPS 인증 시 Git의 암호 대신 사용하거나 API를 인증하는 데 사용할 수 있는 값 입니다이 이 토큰으로 인증이 되어 있어야 외부에서 깃허브에 접근 할 수 있다 발급 방식은 세팅 -> developer settings ->personal access tokens 에서 발급받을 수 있다 Select scopes란 선택란이 있는데 스코프란 범위란 의미이고 이 토큰을 보여주면 어느 행위까지 할 수 있는 것 인지 명시하는 것 같다 깃허브 토큰생성시 스코프선택 항목 1. reop (기본적으로 선택되어있다) 2. workflow 3. admin:org 4. admin:public_key 5. gist 6. user 내가 선택하는 것은 이렇게 6개인데 이제 생성한 토큰..
데이터베이스의 세션이란 무엇인가
데이터베이스에서 사용하는 세션이란 용어가 있고 보통 웹에서 인증얘기할때 세션방식 쿠키방식 할때 쓰는 세션이라는 용어가 있는데 세션이라는 용어 자체의 의미는 파파고에서 session번역하면 "개회중임","(거래소의)개정" 이런식으로 나온다 무언인가가 열려있는 상태로 받아들였다 그래서 웹에서도 유저가 계속 로그인중인지 아닌지 확인할때 쓰이는것 같고 데이터베이스에서도 클라이언트가 데이터베이스에 접속한 후 연결을 유지하면서 트랜잭션을 수행한다고 했을 때 그 연결이 유지되는 기간을 세션이라고 하는 것 같다 세션안에 하나이상의 트랜잭션이 있는것이다 클라이언트가 데이터베이스에 접속을 하면 커낵션이 이루어진다 물리적인 연결임(tcp) 이 커낵션안에서 여러개의 세션이 생성될 수 있고 (세션이 없을 수도 있고 커넥션없이 ..
docker 컨테이너에 몽고디비 설치하여 사용하기
도커docker 컨테이너에 몽고디비 설치하고 시작하기 docker pull mongo //허브에서 mongo이미지 받기 docker images //이미지 받아졌나 확인하고 docker run --name mongodb-container -v ~/data:/data/db -d -p 27017:27017 mongo //그 이미지로 mongodb-container라는 이름의 컨테이너 생성하고 run하기 // -v ~/data:/data/db 이 의미는 -v이거는 볼륨이라는 의미이고 로컬컴퓨터의 data디렉토리 와 컨테이너의 /data/db디렉토리를 연결시키는것. ( :(클론) 뒤에는 컨테이너의 디렉토리) 이렇게 안하면 컨테이너가 삭제될 때 디비의 데이터가 다 사라지게된다 그리고 리눅스에서 ~/이 의미는 현제..
type-safe란
type-safe하다는 것은 타입이 안정적이라는것 :타입이 안정적 이라는 것은 런타임시에 타입으로 인한 에러가 나지 않는다는것런타임시에 에러가 나지 않는 이유는컴파일 타임에서 에러를 띄워줘서 개발자가 수정하게 만든다 type-safety하지 않다는것 :런타입시에 타입으로 인한 에러가 날 수 있다는것컴파일 타임에서 타입이 맞지 않아도 에러를 안띄우고 그냥 넘어가서 런타임시에 에러가 나는것 그래서 자바스크립트는 type-safe하지 않다. 이유는 문자열 + 숫자 도 알아서 연산이 이루어짐console.log('hihi'+1234);//이런 연산도 알아서 형변환이 되면서 연산이 이루어진다이러한 것도 type-safety하지 않다고 하고 아래와 같이 어떠한 연산(함수)가 어떤 타입을 리턴해줄지 모르는 상황도t..
[typescript] 클래스 선언 방법
아래처럼 작성하면 타입스크립트에서는 에러가 난다 class Person { constructor(name) { // 클래스 프로퍼티의 선언과 초기화 this.name = name; } walk() { console.log(`${this.name} is walking.`); } } 타입스크립트에서는 아래처럼 클래스 몸체에 클래스 프로퍼티를 사전 선언하여야한다. class Person { // 클래스 프로퍼티를 사전 선언하여야 한다 name: string; constructor(name: string) { // 클래스 프로퍼티수에 값을 할당 this.name = name; } walk() { console.log(`${this.name} is walking.`); } } 클래스 몸체에는 메소드만 있어야한다.