전체 글 514

Angular 를 통해 바라본 의존성 주입 이해

서비스란, 애플리케이션 전역의 관심사를 구현. 의존성 주입 (Dependency Injection) 의존성의 인스턴스를 생성하는 코드와 사용하는 코드가 컴포넌트 내 같이 존재한다면 컴포넌트와 의존성이 긴밀한 결합(Tight Coupling)을 하고 있다고 할 수 있다. 긴밀한 결합을 느슨한 결합(Loose Coupling)으로 의존 관계를 갖게하려면 의존성 인스턴스를 사용하는 코드는 인스턴스 생성에 관여하지 않고 단지 필요한 인스턴스를 요구하기만 하고 외부 환경에서 요구된 인스턴스를 생성하여 전달하면 된다. 그렇게 한다면 의존성 인스턴스를 사용하는 코드는 인스턴스를 생성하는 방법을 알 필요가 없어지고, 의존성이 변경된다 하더라도 인스턴스를 전달하는 외부 환경이 변경된 의존성의 인스턴스를 전달하기만 한다면..

TypeScript TypeORM Migration 정리

TypeORM 사용중 migration 기능을 대충 본것 같아 관련한 기능을 정리해봤다. 모델 변경사항을 데이터 베이스에 동기화해야한다. 일반적으로 데이터베이스에서 데이터를 가져오면 프로덕션에서 스키마를 동기화할 때 사용하는 synchronize: true 는 안전하지 않다. 마이그레이션은 데이터베이스 스키마를 업데이트하고 기존 데이터베이스에 새로운 변경사항을 적용하기 위해 SQL 쿼리가 포함된 단일 파일이다. import { Entity, Column, PrimaryGeneratedColum } from "typeorm" @Entity() export class Post { @PrimaryGeneratedColum() id: number; @Column() title: string; @Column() ..

TypeScript로 DI 구현해보기

TypeScript 공부 중 DI에 대한 좋은 자료가 있어 번역하며 정리해본다. 참고: Dependency Injection in TypeScript 성숙한 프레임워크는 일종의 의존성 주입(DI)를 구현할 수 있다. DI는 한 개체가 다른 개체의 종족성을 제공하는 기술이다. class Foo {} class Bar { foo: Foo; constructor() { this.foo = new Foo(); } } class Foobar { foo: Foo; bar: Bar; constructor() { this.foo = new Foo(); this.bar = new Bar(); } }이것은 클래스 간에 직접적이고 교환 불가능한 종속성을 갖게 된다. 코드가 복잡해지고 구성 요소의 재사용성이 어려워져 테스트도..

의존성 주입이란 무엇인가?

의존성 주입에 대해 리서칭하는 중 답변이 이해하기 좋아 댓글로 오고 간 내용을 정리해보았다. 참고: 의존성 주입이 뭔가요? 의존성 주입이란, '필요한게 있을 때 무엇이 필요하다고 선언하면 알아서 제공해줘' 즉, 관심의 분리(seperation of concern)을 의미한다. 일반적으로 class의 instance를 다음과 같이 생성하여 사용한다. MyClass myClass = new MyClass(); instance 생성 비용이 크다거나, 여러 군데서 사용한다거나, 일일히 생성할 필요가 있는지 등에 대한 이유로 instance의 생성을 컨테이너에 맡겨서 일괄적으로 진행하고, life-cycle 관리 역시 컨테이너에 맡겨버리게 된다. instance의 생성 및 관리 주체가 내가 아니라 컨테이너가 되기..

@Decorator에 대하여 알아보자

데콜레이터에 대해 알아보다가, TypeScript KR 깃허브 페이지에 번역 본이 있어 정리해봤다. TypeScript와 ES6의 클래스가 도입됨에 따라 클래스 및 클래스 멤버에 어노테이션 또는 변경을 지원하기 위해 추가적인 기능이 필요한 일부 상황이 있다. 데코레이터는 클래스 선언과 멤버에 대한 어노테이션과 메타-프로그래밍 구문을 모두 추가할 수 있는 방법을 제공한다. 데코레이터에 대한 실험적인 지원을 사용하려면 커멘드 라인이나 tsconfig.json 에서 experimentalDecorators 컴파일러 옵션을 사용하도록 활성화해야 한다. 데코레이터는 클래스 선언, 메서드 접근제어자, 프로퍼티 또는 매개변수에 첨부될 수 있는 특별한 종류의 선언이다. 데코레이터는 @표현식의 형태로 사용하는데, 여기서..

6개월 글쓰기 회고

'글또' 라는 모임 2기가 곧 종료된다. (글또 시작 전 다짐 글 : 참고) 한동안 모른 채 하던 블로그를 다시 가동하는 데 도움이 되어줄 것이라 생각하여 시작했고, 돈을 뱉지 않기 위해(?) 월별로 글을 작성하는 데 성공했다. 덕분에 글을 쓸 수 있는 시동을 걸었다고 생각한다. 글또를 시작한 이후로 어떤 글을 써왔는지 생각해봤다. 2018.11월 시작 기준으로 월별 평균 4개씩 글을 썼다. 대부분 공부한 내용을 정리한 글이 대부분이었다. 처음에 목표로 잡은 글은 모두 접근하는 데 실패하여 아쉬운 마음이 든다. 처음 목표로 잡은 주제를 살펴보고 왜 실패했는지 핑계(?)를 대보자. Spring 기반 오픈소스 하나를 선정하여 분석한다. → 참여하는 Java 기반 오픈소스 분석 스터디가 시작한 뒤 얼마 되지 ..

프로그램을 작성하는 33가지 방법 - Chaptor 09 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 08 정리 Chaptor 09 유일 값이 변환될 대상인 추상화가 존재한다. 이 추상화는 (1) 값을 감싸 그 값을 해당하는 추상화로 만들고 ..

프로그램을 작성하는 33가지 방법 - Chaptor 08 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 07 정리 Chaptor 08. 앞으로 차기 각 함수에서 추가 매개변수를 취하는데, 맨 마지막 매개변수는 일반적으로 다른 함수를 사용한다. ..

프로그램을 작성하는 33가지 방법 - Chaptor 07 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 06 정리 Chaptor 07. 무한 거울 문제에서 모든 또는 중요한 부분을 귀납법을 통해 모델링한다. 즉, 기초 사례(n0) 다음에 n+1..

프로그램을 작성하는 33가지 방법 - Chaptor 06 정리

최근 '프로그래밍 패턴 (프로그램을 작성하는 33가지 방법)' 을 읽기 시작했다. 한 가지의 기능을 Chaptor 마다 각각 다른 패턴으로 구현하여 설명한 책이다. 모두 비슷하게 동작하지만 환경과 상황이라는 제약 조건 안에서 탄생된 패턴을 직접 코드로 보여주고 있어직접 코딩을 하며 이해하고 있는 중이다. 책에서 소개하는 한 가지 기능은 '텍스트 파일을 읽어 단어 빈도 출력' 하는 프로그램이다. 가장 빈도가 높은 단어 순으로 그에 해당하는 빈도를 내림차순으로 출력하는 기능을 구현하고 있다. 이전 Chaptor 보기 :프로그램을 작성하는 33가지 방법 - Chaptor 05 정리 Chaptor 06. 코드 골프 코드 줄 수를 가능한 적게 한다. 가능한 한 가장 짧은 프로그램을 다양한 프로그래밍 언어로 만드는..