sqzass
English

피드

front matter에 적은 날짜로 만들어지는 언어별 Atom 피드

페이지에 date를 주면 그 언어의 피드에 들어갑니다.

+++
title = "0.2.0 릴리스"
description = "무엇이 바뀌었나"
date = 2026-07-26
+++
public/
├── feed-en.xml
└── feed-ko.xml

날짜가 없으면 피드도 없습니다

날짜 있는 페이지가 하나도 없는 언어에는 파일을 만들지 않고, 템플릿에도 링크할 site.feed가 오지 않습니다. 빈 피드는 없는 것보다 나쁩니다. 구독자는 아무것도 오지 않는 것을 "비어 있구나"가 아니라 "고장났구나"로 읽습니다.

이 문서에는 날짜 있는 페이지가 없어서 이 사이트는 피드를 발행하지 않습니다. 그게 기능이 제대로 도는 모습입니다.

자동 발견

{% if site.feed %}
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ site.feed }}">
{% endif %}

site.feed는 현재 언어의 피드이거나 없습니다. 이 if는 방어가 아니라 규칙 그 자체입니다.

RSS 2.0이 아니라 Atom

RSS의 날짜는 RFC 2822입니다: Tue, 26 Jul 2026 00:00:00 +0000. 이 형식은 우리가 직접 계산해야 하는 요일과 직접 박아 넣어야 하는 영어 월 이름을 요구합니다. 한국어 피드에도 그대로 들어가는데, 거기서 Jul은 그냥 틀린 표기입니다.

Atom은 RFC 3339를 쓰고, 그건 TOML 날짜가 이미 갖고 있는 모양입니다. 코드가 줄고, 미묘하게 틀릴 자리가 하나 줄고, 이번 세기에 만들어진 리더는 전부 Atom을 읽습니다.

무엇이 들어가나

날짜가 있는 최근 20개, 최신순. 각 항목에 제목·퍼머링크·updated 시각, 그리고 description이 요약으로 들어갑니다. 20은 우연이 아니라 상한입니다 — 끝없이 자라는 피드는 언젠가 읽는 것이 아니라 내려받는 것이 됩니다.

같은 시각에 놓인 페이지는 제목순입니다. 그래야 빌드할 때마다 같은 순서로 나옵니다. 날짜만 적으면 자정 UTC가 되므로, 실제로는 같은 날 쓴 글끼리가 모두 여기 해당합니다.

시각이 없는 날짜는 자정 UTC가 됩니다. Atom은 날짜만으로는 받지 않고, 시각을 파싱 못 한 리더는 그 항목을 아무 말 없이 버립니다.

오프셋은 쓴 그대로 실립니다. 2026-07-26T09:00:00+09:00은 그대로 나갑니다. RFC 3339가 어떤 오프셋도 받고, 이걸 Z로 고쳐 적으면 서울의 아침을 서울의 저녁이라고 발행하는 셈이기 때문입니다. 정렬은 표기가 아니라 순간을 비교하므로, 같은 날의 +09:00 아침이 Z 오후보다 앞섭니다.

TOML이 시각으로만 읽는 date(10:30:00)는 조용히 버리지 않고 에러입니다. 날짜를 적었는데 빌드가 말없이 다르게 생각해서는 안 됩니다.

날짜순 정렬

# content/posts/_index.md
+++
title = ""
sort_by = "date"
+++

최신이 먼저입니다. 오름차순인 weight·title과 다릅니다. 날짜가 붙은 목록을 보는 사람이 기대하는 순서니까요. 날짜가 없는 페이지는 앞이 아니라 뒤로 갑니다. 없는 날짜를 0으로 두고 정렬하면 앞으로 올라오는데, 그건 아무도 원하지 않습니다.

날짜 보여주기

날짜 필터도, 형식 문자열도 없습니다. page.date는 조각입니다.

page.date.year 2026
page.date.month 7
page.date.day 26
page.date.date 2026-07-26, <time datetime>에 그대로
page.date.iso 2026-07-26T00:00:00Z
{% if page.date %}
<time datetime="{{ page.date.date }}">{{ page.date.year }}년 {{ page.date.month }}월 {{ page.date.day }}일</time>
{% endif %}

형식 문자열 필터를 만들면 날짜 서식 미니 언어를 하나 더 배포하게 되고, 그다음엔 사람들이 쓰는 모든 언어의 로케일 규칙을 우리가 떠안게 됩니다. 조각은 데이터이고, 템플릿은 데이터를 배열할 줄 이미 압니다.