왜 저장된 그림은 세어지지 않는가
웹사이트 통계에 관한 흔한 혼란의 원인 하나는 흔히 브라우저 캐시라고 부르는 로컬 파일 저장입니다. 브라우저는 최대한의 효율과 속도를 위해 만들어져 있습니다. 페이지를 처음 방문하면 브라우저는 필요한 글, 배치, 그림을 모두 내려받습니다. 다음 방문에서 시간과 네트워크 자원을 낭비하지 않으려고, 그 고정된 파일의 사본을 로컬 디스크에…
휴대전화 화면 위의 카운터
현대 모바일 기기의 물리적 제약은 웹 배치가 어떻게 굴러가고 요소들이 어떻게 서로 작용하는지를 근본적으로 바꿉니다. 넓은 데스크톱 모니터에서 완벽히 균형 잡혀 보이는 배치 요소가, 스마트폰 화면의 좁은 테두리 안에 밀어 넣어지면 쉽게 심각한 구조 문제를 일으킬 수 있습니다. 크기가 고정된 외부 그림을 넣는 것은 본디 유연하고 흐르는…
레이아웃 이동 없이 카운터 설치
페이지에서 공간을 확보하지 않으면 텍스트보다 늦게 도착한 카운터가 주변 콘텐츠를 움직일 수 있습니다. 설치 시 생성된 크기를 유지하고 컨테이너에 맞추며 의도치 않게 측정을 지연시키지 않아야 합니다. 각각 별도로 확인해야 하며, 안정적인 레이아웃이 모든 페이지 조회의 집계를 입증하지는 않습니다. 생성된 크기 확보된 공간 안정적인 레이아웃…
tmpfs 안의 870MB 파일, 그리고 뒤이은 재시작
8월 28일 19시 35분에 접근 로그 하루치를 /tmp에 풀었습니다. 이틀치를 한 번에 읽으려고요. 19시 44분에 기계가 다시 시작했습니다. 확인하지 않은 성질 이 기계에서 /tmp는 tmpfs입니다. 메모리입니다. df는 1.9GB가 남았다고 보여 주고 그 자리가 어디서 오는지는 아무 말도 하지 않으며, 기계 전체는…
lib/ 전체를 불러오는 값은 실제로 얼마인가
이 서비스의 유일한 진입 파일 46번째 줄: foreach (glob(__DIR__ . '/lib/*.php') as $f) { require_once $f; } 파일 65개, 1.5메가바이트이고, 요청마다 불러옵니다. 카운터 그림이든, 통계 페이지든, 404이든 모두 같습니다. 어제 그 일이 20,734번 있었습니다. 중요한 숫자는…
캐시가 반대 방향으로 커질 때
이 서비스의 캐시 폴더에 작은 파일 넷이 있습니다. 가장 큰 것이 35바이트입니다. 합쳐서 카운터 번호 셋을 담고 있고, 모든 카운터 요청마다 읽힙니다. 계수 경로가 데이터베이스에 거의 언제나 "아니오"로 답하는 물음 넷을 던지지 않아도 되도록 존재합니다. 이 카운터는 주인 자신의 방문을 제외하는가? 나가는 클릭을 따라가는가? 사이트를…
인덱스를 더하면 오히려 느려질 때
일별 수치 표에는 열쇠가 하나 있습니다. 카운터와 날짜를 함께 묶은 것입니다. 코드의 다섯 자리가 그 표에 다른 물음을 던집니다 — "이 카운터를 시간에 따라"가 아니라 "이 날짜들의 모든 카운터"입니다. 첫 페이지 갤러리, 톱리스트, 사이트맵, 90일 그래프, 그리고 상태 수치입니다. 날짜 칸에 인덱스가 없으면 그 하나하나가…
왜 AI는 우리 서버에서 돌지 않는가
이 사이트를 떠받치는 기계에서는 어떤 언어 모델도 돌지 않습니다. 요약은 작업을 가져가고, 일을 하고, 문장을 되가져오는 두 번째 장치에서 계산됩니다. 까닭은 산수입니다. 3B 모델은 1기가바이트 넘는 메모리를 차지하고 답 하나에 몇 초가 필요합니다. 이 응용 전체에서 가장 무거운 데이터베이스 조회는 581밀리초입니다. 그 둘을 같은…
카운터 그림을 메모리에 담아 두기
이 서비스가 그리는 카운터 그림의 5분의 1 가까이가 이제 아무것도 바꾸지 않습니다. 이전 세대의 마우스 추적 스크립트가 움직일 때마다 그림을 다시 불러오는데, 그 요청이 아무것도 올리지 않게 된 뒤로 연달아 온 둘은 바이트 단위로 같은 그림을 내놓습니다. 캐시의 뻔한 후보입니다. 흥미로운 결정은 그것을 어디에 두고 무엇으로 열쇠를…
2015년의 스크립트가 아직도 카운터를 다시 불러옵니다
이 서비스의 이전 세대는 마우스 추적 스크립트를 함께 내보냈습니다. 카운터 그림을 한 번 평범하게 불러오고, 그다음 마우스가 움직일 때마다 다시 불러왔습니다 — 질의 문자열에 좌표를 담고 rerun=1이라는 표시와 함께 말입니다. 이름은 정직합니다. 이것은 새 방문이 아니라 같은 방문의 되풀이입니다. 그 데이터를 읽은 것은 없습니다.…
수수한 하드웨어에서 비밀번호가 치르는 값
여기 통계 페이지는 비밀번호로 보호할 수 있습니다. 그 비밀번호를 해시하는 것은 이 서비스에서 유일하게 느려야 마땅한 연산입니다 — 훔친 해시를 공격하는 값을 비싸게 만드는 것이 그것이니까요. 물음은 이 하드웨어에서 얼마나 느리냐는 것입니다. 이 사이트를 돌리는 기계에서, PHP 8로 잰 값입니다: PASSWORD_DEFAULT…
같은 파일을 매번 다시 압축하기
아파치는 응답을 그 자리에서 압축합니다. 매번 달라지는 페이지라면 그것 말고는 길이 없습니다. 한 달에 한 번 바뀌는 스타일시트라면, 서버가 방문자마다 같은 일을 몇 주 동안 되풀이하고 그 결과를 매번 버린다는 뜻입니다. 그것을 위한 캐시는 없습니다. 2026년 8월 19일, 이미 열린 연결에서 이 사이트 자신의…