Skip to content

Commit 8feef4f

Browse files
committed
Update Blog
1 parent d7cc336 commit 8feef4f

File tree

11 files changed

+116
-123
lines changed

11 files changed

+116
-123
lines changed

.obsidian/app.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

.obsidian/appearance.json

Lines changed: 0 additions & 1 deletion
This file was deleted.

.obsidian/core-plugins.json

Lines changed: 0 additions & 33 deletions
This file was deleted.

content/.obsidian/appearance.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,8 @@
44
"theme": "moonstone",
55
"showViewHeader": true,
66
"showRibbon": false,
7-
"translucency": false
7+
"translucency": false,
8+
"enabledCssSnippets": [
9+
"nesoy"
10+
]
811
}

content/.obsidian/hotkeys.json

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,22 @@
3434
],
3535
"key": "N"
3636
}
37+
],
38+
"app:toggle-left-sidebar": [
39+
{
40+
"modifiers": [
41+
"Mod"
42+
],
43+
"key": "\\"
44+
}
45+
],
46+
"app:toggle-right-sidebar": [
47+
{
48+
"modifiers": [
49+
"Mod",
50+
"Shift"
51+
],
52+
"key": "\\"
53+
}
3754
]
3855
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
/* mermaid max-width */
2+
.mermaid svg {
3+
max-width: 100%;
4+
height: auto;
5+
}
6+
7+
/* 체크박스 */
8+
.markdown-preview-view ul > li.task-list-item.is-checked {
9+
text-decoration: line-through;
10+
color: var(--text-faint);
11+
}
12+
13+
strong, .cm-strong {
14+
background-color: rgba(67, 133, 190, 0.3);
15+
padding: 0.1em 0.2em;
16+
border-radius: 4px;
17+
}

content/.obsidian/workspace.json

Lines changed: 28 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -4,88 +4,38 @@
44
"type": "split",
55
"children": [
66
{
7-
"id": "0aca93569e88c99b",
7+
"id": "31fb19f9e03feb04",
88
"type": "tabs",
99
"children": [
1010
{
11-
"id": "48892466eb14f432",
11+
"id": "f8ce2f9cd30bb502",
1212
"type": "leaf",
1313
"state": {
1414
"type": "markdown",
1515
"state": {
16-
"file": "blog/Mockito.md",
16+
"file": "blog/도메인 순환 참조.md",
1717
"mode": "source",
1818
"source": false
1919
},
2020
"icon": "lucide-file",
21-
"title": "Mockito"
21+
"title": "도메인 순환 참조"
2222
}
2323
},
2424
{
25-
"id": "74f2bc0efd81b687",
25+
"id": "46fb32e58e709b61",
2626
"type": "leaf",
2727
"state": {
2828
"type": "markdown",
2929
"state": {
30-
"file": "index.md",
30+
"file": "blog/Dependency Mechanism.md",
3131
"mode": "source",
3232
"source": false
3333
},
3434
"icon": "lucide-file",
35-
"title": "index"
36-
}
37-
},
38-
{
39-
"id": "f994b9c5b5b9e4d4",
40-
"type": "leaf",
41-
"state": {
42-
"type": "markdown",
43-
"state": {
44-
"file": "blog/Javascript Closure.md",
45-
"mode": "source",
46-
"source": false
47-
},
48-
"icon": "lucide-file",
49-
"title": "Javascript Closure"
50-
}
51-
}
52-
],
53-
"currentTab": 2
54-
},
55-
{
56-
"id": "cdaa469fd84270d7",
57-
"type": "tabs",
58-
"children": [
59-
{
60-
"id": "59246547c52d76cb",
61-
"type": "leaf",
62-
"state": {
63-
"type": "markdown",
64-
"state": {
65-
"file": "templates/Blog Template.md",
66-
"mode": "source",
67-
"source": false
68-
},
69-
"icon": "lucide-file",
70-
"title": "Blog Template"
71-
}
72-
},
73-
{
74-
"id": "1c3e18a08ca9fe6e",
75-
"type": "leaf",
76-
"state": {
77-
"type": "markdown",
78-
"state": {
79-
"file": "blog/index.md",
80-
"mode": "source",
81-
"source": false
82-
},
83-
"icon": "lucide-file",
84-
"title": "index"
35+
"title": "Dependency Mechanism"
8536
}
8637
}
87-
],
88-
"currentTab": 1
38+
]
8939
}
9040
],
9141
"direction": "vertical"
@@ -159,13 +109,13 @@
159109
"state": {
160110
"type": "outline",
161111
"state": {
162-
"file": "blog/index.md",
112+
"file": "blog/도메인 순환 참조.md",
163113
"followCursor": false,
164114
"showSearch": false,
165115
"searchQuery": ""
166116
},
167117
"icon": "lucide-list",
168-
"title": "Outline of index"
118+
"title": "Outline of 도메인 순환 참조"
169119
}
170120
},
171121
{
@@ -255,7 +205,7 @@
255205
"state": {
256206
"type": "localgraph",
257207
"state": {
258-
"file": "blog/index.md",
208+
"file": "blog/도메인 순환 참조.md",
259209
"options": {
260210
"collapse-filter": true,
261211
"search": "",
@@ -283,7 +233,7 @@
283233
}
284234
},
285235
"icon": "lucide-git-fork",
286-
"title": "Graph of index"
236+
"title": "Graph of 도메인 순환 참조"
287237
}
288238
}
289239
]
@@ -306,34 +256,35 @@
306256
"darlal-switcher-plus:Open Symbols for the active editor": false
307257
}
308258
},
309-
"active": "1c3e18a08ca9fe6e",
259+
"active": "585ce278009be6c9",
310260
"lastOpenFiles": [
311-
"about.md",
312-
"index.md",
313-
"blog/index.md",
261+
"blog/도메인 순환 참조.md",
262+
"blog/Dependency Mechanism.md",
263+
"낙서장.canvas",
264+
"vault.md",
314265
"blog/Javascript Closure.md",
315-
"essay/index.md",
316-
"essay/2017 회고.md",
317-
"essay/2018 생각 정리.md",
318-
"templates/Blog Template.md",
266+
"blog/CleanCode UnitTest.md",
267+
"blog/index.md",
319268
"blog/Nodejs Express Routing.md",
269+
"blog/Reactive Stream.md",
270+
"blog/Mockito.md",
271+
"index.md",
272+
"about.md",
273+
"essay/2019 회고.md",
320274
"essay/2018 회고.md",
275+
"essay/2018 생각 정리.md",
276+
"essay/2017 회고.md",
277+
"templates/Blog Template.md",
278+
"essay/index.md",
321279
"blog/Linux nohup.md",
322-
"Untitled.md",
323280
"blog/Java volatile.md",
324281
"blog/Singleton Pattern.md",
325282
"blog/Open Closed Principle.md",
326283
"blog/Redis HA.md",
327-
"blog/Mockito.md",
328284
"blog/editorconfig.md",
329285
"blog/Intellij War.md",
330286
"blog/Code Coverage.md",
331287
"blog/Django Start.md",
332-
"blog/Database Partitioning.md",
333-
"blog/Couchbase Mock.md",
334-
"blog/Variance.md",
335-
"blog/2018 Opensource Meetup.md",
336-
"blog/Command df.md",
337288
"public/templates/index.html",
338289
"public/templates/Blog-Template.html",
339290
"public/templates",

content/blog/Dependency Mechanism.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,11 @@ comments: true
1212
- 하지만 여러개의 모듈을 가진 프로젝트에서 의존성을 관리하는 일은 어려운 일이다.
1313
- 이런 문제를 해결하기 위해 아래와 같은 전략들이 등장하게 된다.
1414

15-
# Transitive Dependency란?
15+
## Transitive Dependency란?
1616
- 의존성을 추가하면 해당 의존성이 가진 의존성도 함께 포함되어서 가져오게 된다.
1717
- 그렇게 같이 포함되어서 가져오게 된 의존성을 Transitive Dependecy라고 한다.
1818

19-
# Dependency Mediation이란?
19+
## Dependency Mediation이란?
2020
- 여러가지 의존성을 만나는 경우 어느 의존성을 선택하는지에 대한 전략이라고 볼 수 있다.
2121
- 아래와 같은 의존성 상황을 만났다고 가정해보자
2222

@@ -48,7 +48,7 @@ comments: true
4848
└── D 2.0
4949
```
5050

51-
# Dependency Management이란?
51+
## Dependency Management이란?
5252
- 다음과 같은 2개의 pom.xml이 있다고 가정해보자.
5353
- 부모의 XML
5454

@@ -117,15 +117,15 @@ comments: true
117117
- 부모가 선언한 Dependency D에 대해서 자식은 1.0으로 dependencyManagement를 통해 관리하고 있다.
118118
- 프로젝트에서 개발자가 직접적으로 버젼을 직접적으로 명시해주는 것이다.
119119

120-
## [그냥 dependencies에 추가하면 dependency mediation을 통해 해결할 수 있는것이 아닌가?](https://stackoverflow.com/questions/2619598/differences-between-dependencymanagement-and-dependencies-in-maven)
120+
### [그냥 dependencies에 추가하면 dependency mediation을 통해 해결할 수 있는것이 아닌가?](https://stackoverflow.com/questions/2619598/differences-between-dependencymanagement-and-dependencies-in-maven)
121121
- dependencyManagement와 dependencies 차이점이 존재한다.
122122
- dependencyManagement는 의존성이 추가되었을 때 수행된다.
123123
- 즉 자식이 의존성을 상속받아 작성하여도 의존성 영향은 없다.
124124
- dependencies는 자식의 의존성까지 영향을 미치기 때문에 주의해서 사용해야 한다.
125125
- 상속받는 모든 의존성이 dependencyManagement를 선언해야하는 상황이 오게 된다.
126126

127127

128-
# Reference
128+
## Reference
129129
- <https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html>
130130
- <https://docs.gradle.org/current/userguide/dependency_management.html>
131131
- <https://docs.gradle.org/current/userguide/dependency_management_for_java_projects.html#sec:configurations_java_tutorial>

content/blog/Reactive Stream.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
---
2+
title: Reactive Stream
3+
description:
24
aliases: [/articles/2021-09/Reactive-Stream]
3-
comments: false
45
date: 2021-09-17
5-
description:
66
tags: [Reactive]
7-
title: Reactive Stream
7+
comments: false
88
---
99
# Reactive Stream
1010
> Reactive Streams is a standard for asynchronous data processing in a streaming fashion with non-blocking back pressure.
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
---
2+
title: 도메인 순환 참조
3+
description:
4+
aliases: []
5+
date: 2025-08-10
6+
tags: []
7+
comments: true
8+
---
9+
# 도메인 순환 참조
10+
## 배경
11+
- 여러 도메인들을 정확히 둘로 나눌 수 없는 상황이 찾아온다.
12+
- 비즈니스 그대로 코드로 작성하다 보면 도메인 서비스들이 서로 순환참조하는 상황이 발생한다.
13+
14+
## 예시
15+
- 유저 조회 = 유저 + 즐겨찾기
16+
- 즐겨찾기 조회 = 즐겨찾기 + 유저
17+
18+
## 해결 과정
19+
### 중간 객체를 이용한 의존성 끊기
20+
- 중간 객체를 만들어서 순환 참조를 끊어낼 수 있다.
21+
22+
### 느슨한 도메인 결합
23+
- 생애주기가 다른 도메인들을 직접 의존하는 구조는 회피한다.
24+
- 직접 의존하기 보다는 객체의 ID에 의존하는 느슨한 방법을 사용한다.
25+
26+
### 의존하기 보다는 주입 받아서 해결하기
27+
- 직접 내부에서 호출하기 보다, 외부에서 주입받아서 실행하는 형태로 구성한다.
28+
29+
## 정리
30+
- 추상적인 내용이 많아서, 직접 예시를 구성하며 이해를 높이는게 좋을게 좋을거 같다.
31+
32+
## Reference
33+
- https://jangjjolkit.tistory.com/62
34+
- https://youtu.be/dJ5C4qRqAgA?si=FH2CWLc1pUMfrPAV&t=2937

0 commit comments

Comments
 (0)