728x90

IT 416

[DDD] 바운디드 컨텍스트(bounded context) - 개념편

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. 바운디드 컨텍스트란? 공식 DDD Reference의 정의는 다음과 같다. 바운디드 컨텍스트(Bounded Context) 특정 모델의 정의, 적용하는 경계를 명시적으로 나타내는 것. 대표적인 예는 서브 시스템이나 팀등이 있다. 바운디드 컨텍스트는 두 가지 시점에서 해설이 필요하다. 개념으로서의 바운디드 컨텍스트 바운디드 컨텍스트의 구현 방법 개념으로서의 바운디드 컨텍스트 모델의 공유 DDD에서는 모든 사람 (소프트웨어 개발자, 도메인 전문가)가 동일한 의미로 말을 사용하는 것을 목적으로 한다. 예를 들어, EC 사이트 상품을 판매하는 시스템을 생각해보자. 여기에서는 엔지니어와..

IT/기초 지식 2023.05.18

[DDD] CQRS 입문

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. DDD의 참조 처리에서 발생하는 과제 DDD에서 정의되어 있는 구현 패턴을 사용하고 있다면, 기본적으로는 영속화층마다의 입출력은 Repository를 사용할 것이다. 갱신계의 처리에서는 Entity나 ValuObject로 도메인의 지식을 표현하고, Repository를 사용하여 집약 단위로 영속화한다는 구성하게 되면 매우 유지/보수가 편리해진다. 한편, 참조 처리 특히 리스트 화면과 같은 처리에서는 여러 개의 집약 값을 엮거나 합쳐서 화면에 나타내는 경우가 많다. 예를 들어, 태스크, 유저, 라벨이라는 세 개의 집약이 있으며, 각각 Repository가 있다고 하자. 이 세 가..

IT/기초 지식 2023.05.17

[Java] 자주 사용되는 Lombok 어노테이션

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Lombok이란? 어노테이션을 부여하는 것으로 Java의 상용구 코드를 쓰지 않도록 해주는 라이브러리이다. 어노테이션을 부여하는 것만으로 모든 필드에 대해서 getter, setter을 구현해주거나, 생성자를 구현해주거나한다. 데이터 클래스의 작성이나 생성자 인젝션이 편해지므로, Spring-Boot와 매우 궁합이 좋다고 개인적으로 생각한다. 그리고 immutable 객체를 쓰고 싶을 때에도 도움이 되므로, 써보길 바란다. Getter, Setter 클래스 혹은 필드에 @Getter, @Setter을 부여하면 getter, setter이 자동적으로 구현된다. 예를 들면 다음과 ..

IT/언어 2023.05.15

[Java] 생성자(Constructor)의 기본과 사용법

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. 1. 생성자(Constructor)의 기본 Java의 생성자(Constructor)란 클래스로부터 인스턴스를 만들 때 에 실행되는 처리이다. 생성자(Constructor)이라는 단어는 영어의 “만들다”와 “사람”이므로, 건설업자, 제조업자 등과 같은 의미를 지닌다. 인스턴스를 만드는 사람과 같은 의미이다. 1-1. 생성자(Constructor)는 특별한 메소드와 같은 것 생성자(Constructor)는 인스턴스가 만들어질때에 실행되는 특별한 메소드라고 자주 설명된다. 그러나 메소드와 다르게 다음과 같은 특징이 있다. 클래스명과 동일한 이름을 가진다. 메소드로서 반환값을 가지지 ..

IT/언어 2023.05.13

[CSS] CSS로 긴 문자를 생략형(...)으로 바꾸는 방법

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 존재하며 틀린 내용은 지적해주시면 감사하겠습니다. CSS로 규정의 폭보다 문자 수가 많아지는 경우에 텍스트를 생략형으로 바꾸는 방법에 대해서 설명하고자한다. 그리고 한 줄의 텍스트뿐만 아니라 2줄 이상의 텍스트도 적용가능하다. 한 줄 텍스트의 경우 text-overflow를 사용한다. 사용할 때는 두 가지 규칙이 있다. overflow: hidden; 및 white-space: nowrap; 과 함께 사용해야한다. text-overflow는 Block요소에 대해 inline(옆 방향)으로 튀어 나온 텍스트에 효과가 있다. Block 요소 샘플 코드 // HTML CSS로 텍스트를 생략하는 테스트입니다. // CSS .text-over..

IT/기초 지식 2023.05.10

[git] Git 충돌(conflict) 해결 방법

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. 개요 작업 브랜치로 편집한 후에 pull request를 냈을 때 충돌이 발생했을 때 어떻게 해결해야하는지에 대해서 설명하고자 한다. 이 포스트에서 등장하는 브랜치는 총 세 가지이다. develop (merge할 곳) a_branch (이미 develop에 merge되어 있는 브랜치) b_branch (작업 브랜치) 전제 조건은 작업 브랜치(b_branch)에서 develop로 pull request를 냈을 때이다. 그리고 이미 a_branch는 merge되어 있어, 그 브랜치에서 편집편집된 것과 충돌이 발생한 상황이라고 가정한다. 충돌이 발생한 상황에서 pull request..

IT/기초 지식 2023.05.08

[Vue3] 이제는 Vuex나 Pinia를 사용하지 않아도 되지 않을까? (Composition API)

※ 일본의 한 블로그 글을 번역할 포스트입니다. 오역 및 의역,. 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Vue의 상태 관리로 Vuex나 Pinia를 사용합시다라는 말이 많지만 외부의 라이브러리를 사용하지 않고 Vue3 자체의 기능으로 충분하지 않은가에 대한 이야기이다. 상태 관리 라이브러리를 사용하지 않고 어떻게 스토어(상태과 액션)을 정의하는가? Vue3에서 도입된 Composition API를 사용하면 된다. 예를 들어 다음과 같다. // ~/composables/todo.js import { reactive, computed, readonly } from 'vue'; export function useTodo() { const items = reactive([]); con..

IT/언어 2023.05.06

[Vue.js] VueRouter에서 생성한 루트에 이름을 붙이는 방법 (router-link 사용하는 방법)

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Vue.js의 공식 툴인 VueRouter에는 하고 싶은 이름으로 설정할 수 있는 방법이 있다. 이름을 지정하면 router-link로 링크처를 지정했을 때 루트명으로 지정하는 것이 가능해진다. 패스가 긴 경우 등, 루트명으로 한다면 가독성이 높아진다. 그러니, 보통의 패스를 지정하는 방법과 기재방법이 달라진다. 특히, URL 파라미터를 설정하고 있는 루트에 이름을 붙이는 경우는 주의가 필요하다. 이번 포스트에서는 VueRouter로 생선한 루트에 이름을 붙이는 방법에 대해서 예시를 통해서 설명하고 한자. 루트에 이름을 붙일 때의 포인트와 주의점 루트에 이름을 붙일 때의 포인트..

IT/언어 2023.05.04

[Vue.js] Vue.js 이벤트 수식자 .stop과 .prevent

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. Vue.js의 이벤트 수식자 이벤트 수식자로 아래의 여섯 종류가 있다. .stop .prevent .capture .self .once .passive 이 중에서도 사용빈도가 높은 .stop과 .prevent와 사용 방법에 대해서 간단하게 소개하려고 한다. 사용법 .stop .stop은 JavaScript의 stopPropagation을 호출한다. 용어 그대로 현재 이벤트의 추가 전파(propagation)을 중지한다는 의미이다. Vue.js의 공식 문서에는 부모 요소로의 전달을 멈춘다고 기재되어 있다. 즉, Vue.js의 이벤트 수식자 .stop은 자식 요소의 이벤트가 부모의..

IT/언어 2023.05.03

오브젝트 지향의 삼대요소(계승(상속), 캡슐화, 다형성)를 활용한 구현 예시

※ 일본의 한 블로그 글을 번역한 포스트입니다. 오역 및 의역, 직역이 있을 수 있으며 틀린 내용은 지적해주시면 감사하겠습니다. 이 포스트에서 설명할 것 이 포스트에서는 서적 관리 어플리케이션을 만드는 것을 예제로 오브젝트 지향의 계승(상속)/캡슐화/다형성에 대해서 설명하고자한다. 서적 관리 어플리케이션은 서적의 대출, 반환이 되며, 대출시에 Mail을 송신하는 기능으로 한정하고 있다. 오브젝트 지향에 관련된 설명을 목적으로 하고 있기 때문에, 서적 관리 어플리케이션의 상세한 코드는 작성하지 않았다. 백엔드와 관련된 내용이다. 그러므로, 혼자서 독학 등으로 Web 어플을 개발 경험이 있는 사람이 이 포스트의 대상이 된다. 코드는 PHP로 작성했지만, 다른 언어를 대입해서 봐도 무리 없이 이해할 수 있는 ..

IT/기초 지식 2023.04.30
728x90