📖 개발 공부
-
CQRS 패턴📖 개발 공부 2023. 7. 25. 22:31
단일 모델의 단점 주문 내역 조회 기능을 구현하기 위해서는 여러 애그리거트에서 데이터를 가져와야 한다. 주문 내역 조회 페이지는 로딩이 빨라야하는데 여러 도메인 모델을 가져오기 때문에 Select를 여러번 날리게 되고 결과적으로 느려지게 된다. 이러한 구현의 복잡도를 낮추는 간단한 방법은 상태 변경을 위한 모델과 조회를 위한 모델을 분리하는 것이다. 상태를 변경하는 범위와 상태를 조회하는 범위가 정확하게 일치하지 않기 때문에 단일 모델로 두 종류의 기능을 구현하면 모델이 불필요하게 복잡해진다. 단일 모델을 사용할 때 발생하는 복잡도를 해결하기 위해 사용하는 방법이 있는데, 그것이 CQRS이다. CQRS는 Command Query Responsibility Segregation의 약자로 상태를 변경하는 명..
-
[Flutter] App Lifecycle (라이프사이클)📖 개발 공부/flutter 2023. 7. 23. 11:58
이전 포스팅에서 Flutter의 Stateless Widget과 Stateful Widget을 알아보았다. [Flutter] Stateless Widget / Stateful Widget 앱 생명 주기의 생성, 렌더링, 업데이트 및 종료 방식을 알아야지 앱 생명 주기를 기반으로 코드를 이해하는 데 도움이 된다. Flutter의 모든 것이 Widget으로 이루어져 있어 생명 주기에 앞서 Flutter ayoung0073.tistory.com 이번엔 상태가 변하는 Stateful Widget을 기준으로 LifeCycle을 살펴보도록 하자! 앱 생명주기(라이프사이클) 단계 앱은 다음과 같은 상태의 LifeCycle을 가진다. createState() initState() didChangeDependencies..
-
[Flutter] Stateless Widget / Stateful Widget📖 개발 공부/flutter 2023. 7. 22. 17:44
앱 생명 주기의 생성, 렌더링, 업데이트 및 종료 방식을 알아야지 앱 생명 주기를 기반으로 코드를 이해하는 데 도움이 된다. Flutter의 모든 것이 Widget으로 이루어져 있어 생명 주기에 앞서 Flutter의 Widget에 대해 알아보자. Widget Flutter에는 크게 2가지 유형의 위젯이 있다. Stateless Widget Stateless Widget은 런타임에 크게 변경되지 않는 위젯이다. 그렇기 때문에 상태(State)를 다룰 필요가 없으며, 영구적으로 변하지 않는 변수, 버튼, 심볼 등과 같은 표현 요소를 나타내거나 앱에서 데이터를 가져오는 데에 쓰인다. 이러한 위젯은 build 메서드를 오버라이드하여 위젯을 반환한다. Stateless 위젯은 UI가 데이터의 변경에 의존하지 않는..
-
[Git] Git 커밋 되돌리는 다양한 방법 (git reset / git revert)📖 개발 공부/git 2023. 7. 14. 22:47
Git으로 작업을 할 때 버그가 생기거나, 이미 작업했던 커밋 중 수정하고 싶은 경우 커밋 내용을 되돌리거나(git revert), 커밋을 아예 취소하는(git reset) 경우가 종종 발생한다. 이 글에서는 실습과 함께 되돌리거나/취소하는 명령어에 대해 알아보려고 한다. 명령어를 알아보기 전, 실습을 이해하기 위해 간단한 커밋 로그들을 보고가자! commit b366d6832cc4ef88196ad4ba8850b71ce8ba60a8 (HEAD -> main) Author: ayoung0073 Date: Fri Jul 14 22:14:54 2023 +0900 test3.txt 추가 commit aad06133842414db6a3e9bcab1ead015e0a168ab Author: ayoung0073 Dat..
-
[Kubernetes] sidecar pattern (사이드카 패턴)📖 개발 공부 2023. 7. 10. 00:49
사이드카 패턴은 기본 어플리케이션 컨테이너와 독립적으로 동작하는 별도의 컨테이너를 붙이는 패턴이다. 위의 사진에 나온 오토바이에 연결된 사이드카를 붙이든 떼어내든 상관없이 오토바이에 영향을 주지 않는다. 이와 같이 기본 애플리케이션 컨테이너의 변경이나 수정 없이 독립적으로 동작하는 컨테이너를 붙였다 뗐다 할 수 있다. 패턴에서 사이드카는 기본 애플리케이션에 연결되고 애플리케이션에 대한 지원 기능을 제공한다. 또한 기본 애플리케이션 생명 주기와 동일해서 기본 애플리케이션과 함께 만들어지고 종료된다. 사이드카 패턴을 이용하지 않았을 때통합되어 있는 경우 위에 보이는 사진 설명에서 logging, proxy 기능들을 하나의 애플리케이션에서 모두 들어있다해보자.이는 애플리케이션과 동일한 프로세스에서 실행되어 공..
-
비동기 asynchronous📖 개발 공부 2023. 7. 2. 16:52
쉬운코드님의 유튜브 영상 보면서 정리한 내용입니다. 3가지 관점으로 asynchronous의 개념을 알아보자. 1. programming 관점에서 Synchronous (동기) Synchronous programming: 여러 작업(task)들을 순차적으로 실행하도록 한다. Asynchronous (비동기) Asynchronous programming: 여러 작업(task)들을 독립적으로 실행하도록 한다. 이는 시간을 단축시킬 수 있다. Asynchronous programming과 Multi-threading은 다르다. Asynchronous programming: 여러 작업을 동시에 실행하는 프로그래밍 방법론 Multi-threading: asynchronous programming의 한 종류 mul..
-
intellij로 디버깅 하기📖 개발 공부 2023. 6. 6. 19:40
intellij IDE로 개발을 하고 있는데, 개발을 하면서 실행 결과를 봐야할 때 디버깅을 많이 이용한다. 하지만 디버깅에 여러 방법이 있어서 많이 헷갈렸다 (나만!?) 확실히 각 기능들을 이해하고, 디버깅하기 위해 정리해보려고 한다. 요기 있는 디버깅 버튼들을 알아볼 것이다! (+ resume 버튼) resume 다음 break point로 이동한다. step over 현재 break 된 시점에서 다음 라인으로 이동한다. 그렇기 때문에 다음 break point로 이동하지 않고, break된 시점의 명령어 실행 후 다음 라인으로 이동된다. (이 기능을 몰라서 모든 라인에 break point를 걸었다면, step over을 사용하자.) step into break된 라인에서, 실행되고 있는 라인으로 ..
-
[Git] Git의 다양한 merge 방법 이해하기 (Merge / Squash & Merge / Rebase & Merge)📖 개발 공부/git 2023. 5. 28. 16:13
Merge 커밋 이력을 모두 남길 때 사용한다. 일반적으로 많이 사용된다. 두 개 이상의 브랜치를 병합하여 새로운 커밋을 만든다. 병합 커밋은 두 브랜치의 변경 내용을 모두 포함하며, 두 브랜치의 변경 내용이 충돌할 경우 사용자가 충돌을 해결해야 한다. merge를 사용하면 병합된 커밋 히스토리가 남기 때문에 브랜치 간의 관계가 명확하게 나타난다. 여기엔 두가지 옵션이 있다. fast-forward 옵션 대상 브랜치의 최신 커밋이 현재 브랜치의 커밋을 포함하고 있는 상태로 브랜치 포인터(각 브랜치의 최신 커밋을 가리키는 참조)를 이동시킨다. fast-forward 병합은 병합 대상 브랜치의 커밋 히스토리가 현재 브랜치의 커밋 히스토리에 뒤쳐져 있을 때 사용된다. 이 경우, 단순히 현재 브랜치를 대상 브랜..