Skip to content

Commit e7a438a

Browse files
committed
update post
1 parent 897b46a commit e7a438a

7 files changed

+117
-92
lines changed

content/posts/blog/개인 블로그를 제작하게 된 이유.md

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

content/posts/blog/어떻게 블로그를 구현하였나.md

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
---
2+
id: 1741421377-QPMW
3+
tags:
4+
- blog
5+
- dev
6+
- project
7+
createdAt: 2025-03-08 17:09:39
8+
modifiedAt: 2025-03-08 17:14:44
9+
publish: project/blog
10+
series: 나의 맞춤 블로그 만들기
11+
---
12+
13+
# 개인 블로그를 제작하게 된 이유
14+
15+
개발자로서 내가 한 일을 기록하고, 이를 공유할 수 있는 공간이 필요했다. 여러 블로그 플랫폼이 있지만, **작성한 글을 복사해서 붙여넣어야 한다는 점**이 번거로웠다. 이 과정에서 블로그 운영이 기록의 목적이 아니라 **포스트를 만들기 위한 기록**처럼 느껴지는 문제가 발생했다. 결국, 기존 플랫폼을 이용하는 방식은 내 스타일이 아니라는 결론을 내렸다.
16+
17+
## 블로그 운영 방식에 대한 고민
18+
19+
블로그를 운영하는 방식에는 크게 세 가지가 있다고 생각했다.
20+
21+
1. 기존 블로그 플랫폼을 이용하는 방법
22+
2. Notion이나 Obsidian의 Publish 기능을 활용하는 방법
23+
3. 직접 개인 블로그를 제작하여 운영하는 방법
24+
25+
각각의 방법을 고민하면서 어떤 방식이 나에게 가장 적합할지 검토했다.
26+
27+
## 블로그 플랫폼의 한계
28+
29+
기존 블로그 플랫폼을 이용하는 방법에는 두 가지 방식이 있다. API를 활용한 자동화와 수동으로 글을 업로드하는 방식이다. 하지만 이 두 가지 방법 모두 내게는 불편한 점이 많았다.
30+
31+
### 1. API를 활용한 자동화의 어려움
32+
33+
일부 블로그 플랫폼은 API를 제공하지만, 최근에는 이를 폐지하는 곳이 많아졌다. 대표적으로 **네이버 블로그****티스토리**가 API 지원을 중단했다. 이처럼 플랫폼 정책이 바뀔 위험성이 크기 때문에 특정 서비스에 의존하는 것은 장기적으로 안전한 방법이 아니라고 판단했다.
34+
35+
### 2. 수동 업로드의 번거로움
36+
37+
나는 **Neovim을 이용해 글을 작성하고, Obsidian을 뷰어(Viewer)로 사용**하고 있다. 따라서 글을 블로그에 올리려면 복사하여 붙여넣어야 하며, 플랫폼에서 지원하지 않는 **Callout 형식**이나 **Uncyclo 스타일 링크** 등을 직접 변환해야 하는 번거로움이 있다.
38+
39+
## 노트 앱의 Publish 기능 활용의 한계
40+
41+
Notion과 Obsidian 같은 노트 앱의 Publish 기능을 활용하는 방법도 고려했지만, 몇 가지 제약이 있었다.
42+
43+
### 1. 노트와 블로그 포스트의 분리 문제
44+
45+
나는 노트를 우선 **Inbox 폴더**에 저장한 후, 필요한 경우 다른 폴더로 이동시키는 방식으로 정리한다. 하지만 이 방식은 블로그에 올릴 글을 특정 카테고리로 묶는 데 제약이 생긴다. 이를 해결하려면 블로그 전용 워크스페이스를 만들어야 하는데, 이는 기존 블로그 플랫폼을 사용하는 것과 크게 다르지 않다.
46+
47+
### 2. 커스터마이징의 한계
48+
49+
Notion과 Obsidian은 강력한 노트 관리 기능을 제공하지만, 블로그 디자인과 기능을 원하는 대로 변경하는 데는 한계가 있다. 특히 Obsidian의 Publish 기능은 기본적으로 노트 공유에 초점이 맞춰져 있어, 블로그를 운영하는 데 적합하지 않았다.
50+
51+
## 나만의 블로그를 제작하기로 결정하다
52+
53+
위의 문제점들을 고려한 결과, 나만의 블로그를 직접 제작하는 것이 최선의 방법이라고 판단했다. 이렇게 하면 기존 방식의 모든 단점을 보완하면서도 나만의 이상적인 블로그 운영 방식을 구축할 수 있다.
54+
55+
## 내가 만들고 싶은 블로그의 조건
56+
57+
기존 방식의 문제를 반대로 생각하면, 내가 원하는 블로그의 조건은 다음과 같았다.
58+
59+
1. **블로그 포스팅과 노트 작성의 흐름이 자연스럽게 연결될 것**
60+
2. **노트와 블로그 포스트가 분리되어, 원하는 노트만 포스팅할 수 있을 것**
61+
3. **포스팅 시 블로그의 구조를 내가 직접 정의할 수 있을 것**
62+
4. **필요에 따라 기능을 추가하거나 제거할 수 있도록 커스터마이징이 가능할 것**
63+
64+
이러한 목표를 달성하기 위해 데이터베이스(DB) 사용도 고려했지만, 단순한 방법이 더 적합하다고 판단했다. 그래서 **쉘 스크립트를 활용하여** Obsidian Vault 폴더 내의 Markdown 파일을 자동으로 블로그로 가져오는 방식을 선택했다.
65+
66+
다음: [[어떻게 블로그를 구현하였나]]
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
id: 1741421537-VMWX
3+
tags:
4+
- blog
5+
- dev
6+
- project
7+
createdAt: 2025-03-08 17:12:17
8+
modifiedAt: 2025-03-08 17:17:25
9+
publish: project/blog
10+
series: 나의 맞춤 블로그 만들기
11+
---
12+
13+
# 어떻게 블로그를 구현하였나
14+
15+
[[개인 블로그를 제작하게 된 이유|앞선 포스트]]에서 살펴본 것처럼 내가 중요하게 생각한 블로그의 조건은 다음과 같았다.
16+
17+
1. **블로그 포스팅과 노트 작성의 흐름이 자연스럽게 연결될 것**
18+
2. **노트와 블로그 포스트가 분리되어, 원하는 노트만 포스팅할 수 있을 것**
19+
3. **포스팅 시 블로그의 구조를 내가 직접 정의할 수 있을 것**
20+
4. **필요에 따라 기능을 추가하거나 제거할 수 있도록 커스터마이징이 가능할 것**
21+
22+
## 블로그 포스팅과 노트 작성의 통합
23+
24+
나는 Neovim과 Obsidian을 활용하여 노트를 작성하고 있다. 내가 이러한 셋업을 사용하면서 원하는 워크플로우는 Neovim으로 노트를 작성한 이후 커맨드를 사용하여 바로 노트를 동기화시키고 블로그에 글을 포스팅하는 것이었다.
25+
26+
노트를 동기화하는 방법은 두 가지로 좁혀진다. DB를 사용하는 방식과 사용하지 않는 방식이다.
27+
28+
### DB를 사용하면 어려운 점
29+
30+
1. 만약 DB를 사용하게 된다면 백엔드를 만들어 API를 활용해서 블로그를 관리해야 한다. 즉, 관리의 복잡성이 증가한다.
31+
2. API를 통해 먼저 DB에서 노트를 불러오고 현재 노트와 비교해야 하는 번거로운 작업이 필요하다.
32+
3. 노트의 버전 관리를 위해 추가적인 작업이 필요하며, 이 과정에서 데이터 동기화 문제(예: 중복 저장, 최신 버전 식별 등)가 발생할 가능성이 높다.
33+
4. 백엔드 서버를 유지보수해야 하므로 추가적인 비용과 관리 부담이 생긴다.
34+
5. 단순한 마크다운 기반 블로그를 운영하는 데 있어, DB를 활용하는 것이 오히려 과도한 복잡성을 초래할 수 있다.
35+
36+
이러한 문제점 때문에 나는 DB 없이 간단한 방식으로 노트를 동기화하는 방법을 선택했다.

next.config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { NextConfig } from "next";
22

33
const nextConfig: NextConfig = {
4-
output: "export",
4+
// output: "export",
55
images: {
66
domains: ["user-images.githubusercontent.com"],
77
unoptimized: true,

public/link-map.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
{
2-
"0.inbox/개인 블로그를 제작하게 된 이유.md": "blog/개인 블로그를 제작하게 된 이유",
3-
"0.inbox/어떻게 블로그를 구현하였나.md": "blog/어떻게 블로그를 구현하였나"
2+
"0.inbox/개인 블로그를 제작하게 된 이유.md": "project/blog/개인 블로그를 제작하게 된 이유",
3+
"0.inbox/어떻게 블로그를 구현하였나.md": "project/blog/어떻게 블로그를 구현하였나"
44
}

public/meta-data.json

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,31 @@
11
[
22
{
3-
"urlPath": "blog/개인 블로그를 제작하게 된 이유",
3+
"urlPath": "project/blog/개인 블로그를 제작하게 된 이유",
44
"title": "개인 블로그를 제작하게 된 이유",
55
"summary": "",
66
"image": "",
77
"tags": [
8-
"blog"
8+
"blog",
9+
"dev",
10+
"project"
911
],
1012
"series": "나의 맞춤 블로그 만들기",
11-
"createdAt": "2025-03-02 10:01:22",
12-
"modifiedAt": "2025-03-07 13:06:58"
13+
"createdAt": "2025-03-08 17:09:39",
14+
"modifiedAt": "2025-03-08 17:14:44"
1315
}
1416
,
1517
{
16-
"urlPath": "blog/어떻게 블로그를 구현하였나",
18+
"urlPath": "project/blog/어떻게 블로그를 구현하였나",
1719
"title": "어떻게 블로그를 구현하였나",
1820
"summary": "",
1921
"image": "",
2022
"tags": [
21-
"blog"
23+
"blog",
24+
"dev",
25+
"project"
2226
],
2327
"series": "나의 맞춤 블로그 만들기",
24-
"createdAt": "2025-03-02 12:33:23",
25-
"modifiedAt": "2025-03-05 13:06:23"
28+
"createdAt": "2025-03-08 17:12:17",
29+
"modifiedAt": "2025-03-08 17:17:25"
2630
}
2731
]

0 commit comments

Comments
 (0)