본문 바로가기

분류 전체보기

02. 시스템 특유의 값을 나타내기 위한 '값 객체' 값 객체란? 시스템 특유의 값을 표현하기 위해 정의하는 객체 객체이기도 하고 동시에 값이기도 하다. 시스템 특유의 값을 나타내는 객체다. 값의 성질과 값 객체 구현 값의 성질 변하지 않는다. 주고받을 수 있다. 등가성을 비교할 수 있다. 값 객체는 시스템 특유의 값에 대한 표현이며, 값의 한 종류다. 값의 성질은 값 객체에도 그대로 적용된다. 불변하는 값의 장점 상태가 변화하지 않게 하는 프로그램을 단순하게 만들 가능성이 있는 제약이다. 물론 상태가 변하지 않는 객체의 단점도 있다. 그중 대표적인 것은 객체의 일부 값만 바꾸고 싶을 때도 객체를 아예 새로 생성해야 한다는 점이다. 이 점은 상태가 변할 수 있는 객체에 비해 성능 면에서 불리하기 때문에 아주 심각한 상황이 아니고서는 값 객체라도 상태를 바꿀..
01. 도메인 주도 설계란? 도메인 주도 설계란 무엇인가? 개발자가 소프트웨어를 개발하면서 가치 있는 지식과 그렇지 않은 지식을 잘 구분하려면 어떤 능력이 필요한가? > 먼저 소프트웨어 이용자의 세계를 이해해야 한다. 소프트웨어 이용자에게 무엇이 중요한 지식인지는 바로 이 이용자의 세계에 따라 달라진다. > 유용한 소프트웨어를 만들려면 이용자의 문제가 무엇인지 파악하고, 이를 해결할 수 있는 최선의 수단을 생각해야 한다. 도메인 주도 설계는 이러한 고찰을 반복하는 설계를 통해 이용자의 세계와 소프트웨어 구현을 연결 짓는 것이 목적이다. 도메인 지식에 초점을 맞춘 설계 기법 도메인 주도 설계 : 도메인 지식에 초점을 맞춘 설계 기법이다. 도메인 == '영역' 도메인에 속하는 개념과 사건을 이해하고, 그중에서 문제 해결에 유용한 것을 ..
들어가며. 도메인 주도 설계는 개발자에게 있어 엔지니어링에 대한 관점을 완전히 바꾸에 되는 큰 깨달음이다. 도메인 주도 설계의 개념 : 비즈니스상의 문제를 해결하기 위해 비즈니스를 이해하고, 비즈니스를 표현하는 것이다.
02. 의존성 역전하기 단일 책임 원칙 컴포넌트를 변경하는 이유는 오직 하나뿐이여야 한다. '책임' 은 사실 '오로지 한 가지 일만 하는 것' 보다는 '변경할 이유' 로 해석해야 한다. 의존성 역전 원칙 계층형 아키텍처에서 계층 간 의존성은 항상 다음 계층인 아래 방향을 가리킨다. 단일 책임 원칙을 적용할 때 상위 계층들이 하위 계층들에 비해 변경할 이유가 더 많다. 그러므로 영속성 계층에 대한 도메인 계층의 의존성 때문에 영속성 계층을 변경할 때마다 잠재적으로 도메인 계층도 변경해야 한다. 그러나 도메인 코드는 애플리케이션에서 가장 중요한 코드다. 영속성 코드가 바뀐다고 해서 도메인 코드까지 바꾸고 싶지는 않다. 그러면 어떻게 의존성을 제거할 것인가? 의존성 역전 원칙 (Dependency Inversion Principle..
State and Lifecycle React 컴포넌트 안의 state와 생명주기에 대한 개념을 소개합니다. Clock 컴포넌트를 완전히 재사용하고 캡슐화하는 방법을 배웁니다. 이 컴포넌트는 스스로 타이머를 설정할 것이고 매초 스스로 업데이트 할 것입니다. class Clock extends React.Component { render() { return ( Hello, World It is {this.props.date.toLocaleTimeString()}. ); } } function tick() { ReactDOM.render( , document.getElementById('root') ); } setInterval(tick, 1000);render 메소드는 업데이트가 발생할 때마다 호출되지만, 같은 DOM 노드로 ..
Components와 Props 컴포넌트를 통해 UI 재사용 가능한 개별적인 여러 조각으로 나누고, 각 조각을 개별적으로 살펴볼 수 있습니다. 함수 컴포넌트와 클래스 컴포넌트 함수 컴포넌트 JavaScript 함수로 작성 데이터를 가진 하나의 props 객체 인자를 받은 후 React 엘리먼트를 반환하므로 유효한 React 컴포넌트입니다. 클래스 컴포넌트 ES6 class 사용 class Welcome extends React.Component { render() { return Hello, {this.props.name}; } } React 관점에서 볼 때 위 두 가지 유형의 컴포넌트는 동일합니다. 컴포넌트 렌더링 React 엘리먼트는 사용자 정의 컴포넌트로도 나타낼 수 있습니다. const element = ; React가 사용자 ..
[APM툴] Pinpoint 설치하기 Pinpoint 설치 1. 자바 환경변수 설정 JAVA_6_HOME : /Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home JAVA_7_HOME : /Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home JAVA_8_HOME : /Library/Java/JavaVirtualMachines/jdk1.8.0_152.jdk/Contents/Home JAVA_9_HOME : /Library/Java/JavaVirtualMachines/jdk-9.0.4.jdk/Contents/Home 환경 변수 수정 vi ~/.bash_profile 환경 변수 추가 # JAVA export JAVA_HOME=/Libra..
[LMAX-Exchange/disruptor] ringbuffer 사용하기 LMAX Disruptor A High Performance Inter-Thread Messaging Library Disruptor의 목적 동일 프로세스 내, 스레드 간의 데이터(메시지, 이벤트 등..)를 이동시키는 것 사용법 기본예제 수정하여 테스트 진행 메이븐 디펜던시 com.lmax disruptor 3.2.0 ValueEvent.class @Getter @Setter public class ValueEvent { private String value; public final static EventFactory EVENT_FACTORY = new EventFactory() { @Override public ValueEvent newInstance() { // TODO Auto-generated m..