다이어그램 여덟 개에 이스케이프가 하나 더 있었습니다
한동안 이 블로그의 글 여덟 편이 문장 한가운데, 다이어그램 안에서 일곱 글자 —를 보여 주었습니다. 대시가 아니라 글자 그대로였습니다. 그 뒤로 모든 언어에서 고쳤습니다. 81줄, 91번. 같은 여덟 편의 본문에서는 한 번도 없었습니다. 이스케이프가 하나 더 다이어그램은 글 본문 안에 쓰인 인라인 SVG입니다. 대시를 쓰려는…
백업을 처음부터 끝까지 되돌려 보았습니다
이 서버는 8월 11일부터 밤마다 스스로를 백업해 왔습니다. 로그에는 163줄이 있습니다. "되돌리기"라는 낱말은 그 가운데 어디에도 없습니다. 모든 줄이 쓰기에 관한 것이기 때문입니다. 오늘 읽기 쪽 절반도 걸어 보았습니다. 이 백업은 대부분보다 낫습니다 새벽 세 시에 돌고, 모든 데이터베이스를 덤프하고, 웹 디렉터리를 묶고, 저장소…
데이터베이스 스키마는 실제로 어디에 사는가
이 서비스가 하는 모든 것은 버전 관리 안에 있습니다. 적어도 코드는 그렇습니다. 그것이 도는 데이터베이스는 표 32개이고, 그 가운데 15개는 저장소 어디에도 정의가 없습니다 — CREATE TABLE도, 스키마 파일도, 아무것도 없습니다. 덤프는 32개를 구조까지 온전히 되돌립니다. 저장소가 담고 있지 않은 것은 그 구조의 두 번째…
왜 우리 설정 파일은 대부분 주석인가
이 서버의 .htaccess은 478줄입니다. 그 가운데 98줄이 규칙입니다. 309줄이 주석입니다. 무언가를 하는 줄 하나마다 설명 세 줄입니다. 계획한 비율이 아닙니다. 규칙을 쓰는 규칙이 "까닭을 그 옆에 두어야 한다"일 때 생기는 결과입니다. 왜 재작성 규칙에 한 문단이 필요한가 서버 설정의 규칙은 나중에 읽히기에 유난히…
모든 번역을 어떻게 확인하는가
이 블로그에는 열한 개 언어로 된 글 64편이 있습니다. 704줄이고 약 220만 자입니다. 어느 언어에서도 빠진 글이 없으며, 그것은 무언가가 강제할 때에만 뜻을 갖는 주장입니다. 강제하는 것이 있습니다. 번역된 줄이 쓰이기 전에 영어 원문과 맞대어 확인되고, 떨어진 줄은 아예 쓰이지 않습니다 — 보고되고 사람이 볼 수 있게…
망가진 카운터를 어떻게 알아내는가
카운터는 조용히 망가질 수 있습니다. 사이트를 다시 꾸미고, 삽입이 그 이사를 넘기지 못하고, 아무것도 그것을 알리지 않습니다 — 통계는 그냥 멈추고, 주인은 몇 달 뒤에, 그나마 알게 된다면 알게 됩니다. 뻔한 기능이 떠오릅니다. 침묵을 알아채고 알림을 보내는 것입니다. 그것을 만드는 뻔한 방법은 이미 있는 숫자에서 고장을 추론하는…
접근 로그를 잘못 세는 두 가지 방법
여기서 한 주 동안의 변경은 접근 로그 하루치에서 뽑은 셈에 기대고 있었습니다. 백만 줄, 그 가운데 십만 줄이 우리 것입니다. 그 가운데 무엇이 통했는지 알아보려면 같은 셈을 나중에 다시 해야 하고 — 손으로 두 번째로 짜 맞춘 셈은 결코 첫 번째의 그 셈이 아닙니다. 다른 봇 목록, 다른 날짜 범위, 다른 grep. 그래서 셈을…
웹 디렉터리 안의 백업은 소스 유출입니다
큰 파일을 고치기 전에 자연스러운 몸짓은 먼저 복사해 두는 것입니다. cp index.php index.php.vor-aenderung, 그리고 작업. 그 파일이 웹 서버가 공개하는 디렉터리에 놓이면, 소스 코드 전체가 방금 평문으로 내려받을 수 있게 된 것입니다 — 데이터베이스 접속 정보, 비밀값, 그 파일에 든 모든 것이 말입니다.…
펄처럼 보였던 언어 코드
2026년 8월 19일, 브라우저에 직접 내보내서는 안 되는 부류의 파일을 막는 규칙을 .htaccess에 더했습니다. 편집한 뒤 웹 디렉터리에 남은 소스 코드 사본 — index.php.bak, 떠도는 config.py, 방문자가 실행 대신 소스를 평문으로 가져갈 수 있는 스크립트 확장자를 가진 모든 것입니다. 규칙은 파일 확장자로…
같은 파일을 매번 다시 압축하기
아파치는 응답을 그 자리에서 압축합니다. 매번 달라지는 페이지라면 그것 말고는 길이 없습니다. 한 달에 한 번 바뀌는 스타일시트라면, 서버가 방문자마다 같은 일을 몇 주 동안 되풀이하고 그 결과를 매번 버린다는 뜻입니다. 그것을 위한 캐시는 없습니다. 2026년 8월 19일, 이미 열린 연결에서 이 사이트 자신의…
자기 칸보다 긴 페이지 주소
2026년 8월 9일, 카운터 그림 스무 개가 그려지지 않았습니다. 잘못 그려진 것도, 느리게 그려진 것도 아니고 — 카운터가 있어야 할 자리에 방문자는 아무것도 받지 못했습니다. 원인은 255자를 넘는 페이지 주소였습니다. 이제 기록하는 시점에 잘라 내며, 카운터 그림은 전달받은 주소의 길이에 더는 좌우되지 않습니다. 사슬 방문이 어느…