이 블로그에 글 쓰는 법

약 3분

글은 src/content/posts/ 폴더에 마크다운 파일을 만들면 됩니다. 주소는 글 번호로 정해집니다postId: 12 인 글은 /posts/12/ 가 됩니다. 파일 이름과 주소가 따로 놀기 때문에 파일 이름이나 제목을 나중에 바꿔도 링크가 깨지지 않습니다.

프론트매터

모든 글은 이 블록으로 시작합니다.

---
postId: 12
title: "글 제목"
description: "목록과 검색 결과에 보이는 한 줄 요약"
date: 2026-09-03
tags: ["Spring", "JPA"]
draft: false
---

postId 는 편집기와 npm run new 가 자동으로 매깁니다. 손으로 고치지 마세요 — 주소가 바뀌어 기존 링크가 죽습니다. draft: true 면 로컬에서는 보이지만 배포된 사이트에는 나가지 않습니다. 쓰다 만 글을 그냥 커밋해 둬도 안전합니다.

코드 블록

기본은 언어 이름만 적으면 됩니다.

public record Order(Long id, String status) {}

파일명 붙이기

title="..." 을 붙이면 위에 파일명 바가 생깁니다. 어느 파일 이야기인지 밝힐 때 씁니다.

```java title="OrderService.java"
```
@Service
@RequiredArgsConstructor
public class OrderService {

    private final OrderRepository orderRepository;

    @Transactional(readOnly = true)
    public List<OrderResponse> findAll() {
        return orderRepository.findAllWithMember().stream()
                .map(OrderResponse::from)
                .toList();
    }
}

특정 줄 강조하기

{3-5} 처럼 중괄호에 줄 번호를 적으면 그 줄만 강조됩니다. “여기가 핵심” 이라고 말할 때 화살표 대신 쓰면 깔끔합니다.

```sql {3-4}
```
SELECT o.id, o.status, m.name
FROM orders o
JOIN member m ON m.id = o.member_id
WHERE o.status = 'READY'
ORDER BY o.created_at DESC;

긴 코드 접기

전체 코드는 길지만 맥락상 필요할 때 <details> 로 접어둘 수 있습니다.

전체 설정 파일 보기
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/blog?serverTimezone=UTC
    username: root
    password: ${DB_PASSWORD}
  jpa:
    hibernate:
      ddl-auto: validate
    properties:
      hibernate:
        default_batch_fetch_size: 100
        format_sql: true

자료구조조회삽입비고
ArrayListO(1)O(n)인덱스 접근이 잦으면
LinkedListO(n)O(1)중간 삽입이 잦으면
HashMapO(1)O(1)순서 보장 안 됨

넓은 표는 자동으로 가로 스크롤됩니다. 모바일에서 화면이 밀리지 않습니다.

인용과 강조

성능 문제는 측정하기 전까지는 추측일 뿐이다.

굵게, 기울임, 인라인 코드, 링크 모두 됩니다.

카테고리

글이 놓인 폴더가 곧 카테고리입니다. 별도 설정이 없습니다.

src/content/posts/
  backend/spring/2026-08-24-jpa-n-plus-one.md   →  백엔드 › Spring
  algorithm/binary-search/2026-08-10-...md      →  알고리즘 › 이분 탐색

폴더 이름은 주소에 쓰이므로 영문으로 만들고, 화면에 한글로 보이게 하려면 src/config.tsCATEGORY_LABELS 에 한 줄 추가합니다.

export const CATEGORY_LABELS = {
  backend: '백엔드',
  'backend/spring': 'Spring',
};

카테고리를 바꾸고 싶으면 파일을 다른 폴더로 옮기기만 하면 됩니다. 주소는 파일 이름으로만 정해지므로 옮겨도 링크가 깨지지 않습니다.

새 글 만들기

파일을 직접 만들어도 되지만 명령어 하나면 폴더와 프론트매터까지 갖춰집니다.

브라우저 편집기가 더 편합니다. 개발 서버를 띄우면 헤더에 글쓰기 버튼이 생깁니다.

명령으로 만들려면:

npm run new "JPA N+1 문제 해결하기" --in backend/spring
옵션
--in글을 넣을 카테고리 폴더. 없으면 새로 만듭니다
--name파일 이름을 직접 정하고 싶을 때 (생략하면 제목에서 자동 생성)

제목만 있으면 됩니다. 주소는 번호로 자동으로 정해집니다.

발행하기

만들어진 파일은 draft: true 라서 아직 사이트에 나오지 않습니다. 개발 서버(npm run dev)에서는 보이니 미리 확인할 수 있습니다.

다 쓰면 draft: false 로 바꾸고 커밋하면 끝입니다.

git add . && git commit -m "새 글" && git push

push하면 1~2분 안에 사이트에 반영됩니다.