해본 것은 해봤다고, 재본 것은 재봤다고 적습니다
birchholt는 자작나무(birch)와 작은 숲(holt)을 붙여 만든 이름입니다. 한 그루씩 심어 숲이 되기를 기다리는 마음으로 지었습니다.
여기는 블로그를 만들고 굴리면서 직접 재본 것을 적는 자리입니다. 도메인을 사고, 정적 사이트를 세우고, 스킨을 직접 만들고, 배포를 자동화하고, 검색엔진에 등록하는 동안 예상 못 한 것들에 계속 걸렸습니다. 공식 문서가 오래됐거나, 문서 문장을 제가 잘못 읽었거나, 로컬에서는 멀쩡한데 라이브에서만 깨지는 것들이었습니다.
읽고 정리한 글이 아닙니다. 안 되는 화면을 앞에 두고 원인을 찾을 때까지 재본 기록입니다. 그래서 한 편이 문제 하나를 다루고, 재현한 절차와 잰 숫자가 같이 들어갑니다. 중간에 틀렸던 판단도 지우지 않고 남깁니다. 대개 그 부분이 가장 쓸모 있었습니다.
지금까지 걸린 것들은 대체로 네 갈래였습니다. 없는 주소가 200을 돌려주던 일처럼 검색엔진이 무엇을 보는가, 스킨이 라이브에서만 깨지던 일처럼 플랫폼이 내 마크업을 어디까지 통제하는가, 공개일이 됐는데 글이 안 뜨던 일처럼 고친 것이 라이브까지 닿는가, 통계를 끝내 못 덮은 일처럼 쟀다고 믿은 것을 제대로 쟀는가입니다.
원칙은 하나입니다. 확인한 것만 적고, 확인하지 못한 것은 확인하지 못했다고 적습니다. 숫자를 쓸 때는 어떻게 쟀는지도 같이 씁니다. 추측으로 채우면 읽는 사람이 검증하는 데 드는 시간이 제가 아낀 시간보다 커집니다.
운영 기록
한 편이 문제 하나를 다룹니다. 재현한 절차와 잰 숫자를 같이 적었고, 중간에 틀렸던 판단도 지우지 않고 남겼습니다.
Hugo 블로그 링크를 카톡에 보내면 썸네일이 없을 때 — og:image와 카카오 캐시
카톡 미리보기에 그림이 붙으려면 og:image가 있어야 하는데, 제 블로그 글 head에는 그 태그가 아예 없었습니다. 대표 이미지를 og:image로 내보내고 WebP와 JPG 출력을 비교했고, 카카오 캐시를 지우는 곳까지 적었습니다.
읽기 →Hugo static/에 둔 이미지는 원본 그대로 나갑니다 — 빌드 때 줄이고 WebP로 바꾸기
static/ 의 이미지는 Hugo가 건드리지 않습니다. assets/ 로 옮겨 render-image 훅에서 Resize 하자 PNG 약 7.2MB가 1280px WebP 약 0.18MB가 됐습니다. 첫 빌드가 느린 이유와 resources/_gen 캐시도 봤습니다.
읽기 →커스텀 도메인을 붙여도 pages.dev 주소는 계속 열려 있습니다
커스텀 도메인을 붙인 뒤에도 프로젝트.pages.dev 주소가 같은 내용을 noindex 없이 내주고 있었습니다. _headers 규칙을 미리보기 배포로 먼저 시험하고, production에 넣은 뒤 두 주소의 헤더를 다시 찍었습니다.
읽기 →Hugo 0.146 이후 _default 와 partials 를 옮기다가 태그 페이지가 전부 비었습니다
옛 layouts 구조는 최신 Hugo 에서도 대부분 그대로 돕니다. 문제는 옮기는 도중입니다. 0.145.0 과 0.165.0 으로 한 단계씩 옮겨 빌드하며 무엇이 조용히 바뀌는지 쟀습니다.
읽기 →Hugo RSS에 lastBuildDate가 없고, 개인정보처리방침이 0001년 글로 섞여 있었습니다
Hugo 기본 RSS는 홈 페이지의 날짜가 비면 lastBuildDate를 빼는데, git 정보를 켜고 _index.md를 커밋하면 그 날짜가 빕니다. 날짜 없는 페이지가 0001년으로 피드에 들어가는 문제와 함께 내장 템플릿을 덮어써 고쳤습니다.
읽기 →Cloudflare Pages에 www를 붙였더니 522가 났습니다 — DNS만으로는 안 됩니다
www 레코드를 하나 추가했더니 522가 0.2초 만에 돌아왔습니다. Pages에 도메인을 따로 등록해야 열리고, 열린 www는 apex의 사본입니다. DNS, Pages, 리다이렉트 규칙을 한 단계씩 걸며 직접 쟀습니다.
읽기 →