이 사이트의 구조
글은 정적 파일로, 시뮬레이터 판정만 작은 API로 처리합니다. API가 멈춰도 글은 그대로 읽히고, 시뮬레이터 칸에만 점검 중 표시가 뜹니다.
요청 흐름
시뮬레이터가 안전한 이유
- 명령을 실행하지 않습니다. 입력은 문자열로만 분석합니다. 서버에 셸을 여는 코드가 없습니다.
- 서버가 상태를 저장하지 않습니다. diff 기록 같은 세션 상태는 브라우저가 들고 다니며 요청마다 보냅니다. 서버에 쌓이는 것이 없어 저장소 남용이나 세션 관리 문제가 생기지 않습니다.
- 입력에 상한이 있습니다. 명령 2,000자, 상태 항목 수와 경로 길이를 검증하고, nginx가 요청 크기와 속도를 제한합니다.
- 판정 규칙은 실제 훅과 같습니다. 파일 시스템·시각·서버 접속 확인만 가상으로 바꿨고, 실제 훅을 검증했던 항목을 그대로 테스트로 옮겼습니다.
콘텐츠는 어디서 오나
- 업무 시스템 기록(업무·댓글·Jira·커밋)과 예전 이력 자료를 모아 비공개 저장소에 경력 정본을 만듭니다.
- 공개 원칙으로 거릅니다. 연락처는 이메일 하나, 고객사 보안 사항·내부 주소·사람 이름·고객사 데이터 규모는 싣지 않습니다.
- 프로젝트마다 근거 출처를 메모로 남기고, 쓴 사람과 다른 검토자가 근거와 대조합니다.
- Markdown 파일로 옮겨 Astro로 정적 페이지를 만듭니다.
사용한 것
- 페이지
- Astro, TypeScript, Pretendard · JetBrains Mono(자체 호스팅)
- 시뮬레이터
- Python 3.12, FastAPI, pydantic, pytest
- 실행
- Docker Compose, nginx — 집 서버(맥미니)에서 돌리고 Cloudflare Tunnel로 공개
- 방문 통계
- Cloudflare Web Analytics — 방문자 개인 정보를 수집하지 않는다고 밝힌 서비스입니다
- 다음 단계
- 가동 감시, 서버가 멈췄을 때 정적 사본으로 전환