turin's blog
만들고, 터지고,
기록합니다
풀스택, Flutter, 서버 운영, SEO, 배포 삽질을 실제 프로젝트 기준으로 정리합니다. 검색해서 들어온 사람이 바로 쓸 수 있는 체크리스트와 명령을 남기는 게 목표입니다.
자주 다루는 주제
주제별로 빠르게 훑어보기
전체 글
운영 중 부딪힌 문제를 검색 의도에 맞춰 정리
GitHub Actions 배포가 성공해도 웹이 예전 버전일 때 확인한 캐시 비교
CI 초록불만으로 배포 완료를 판단하지 않고 빌드 캐시, CDN, 브라우저 캐시를 나눠 검증한 비교 글입니다.
Ubuntu 서버 디스크 사용량을 오해하지 않게 du와 df를 함께 본 설정 노트
df와 du의 숫자가 다를 때 삭제한 파일을 다시 지우기보다 열린 파일과 마운트를 확인한 순서입니다.
계속 읽기 →React 상태 업데이트가 늦게 보일 때 렌더링 경계를 나눈 기록
버튼을 눌렀는데 화면 일부만 늦게 바뀌던 문제를 재현하고, 상태 위치와 key를 분리해 확인한 기록입니다.
계속 읽기 →웹훅 재전송을 대비해 요청 ID와 멱등 키를 나눈 비교 글
결제 알림이 두 번 들어왔을 때 요청 ID와 멱등 키를 같은 것으로 보지 않고 처리 기준을 세운 기록이다.
계속 읽기 →Docker Compose 배포에서 orphan 컨테이너를 지우기 전 확인한 체크리스트
서비스 이름을 바꾼 뒤 남은 컨테이너 경고를 보고 무턱대고 삭제하지 않기 위해 만든 배포 점검표다.
계속 읽기 →Next.js loading.tsx가 바로 보이지 않을 때 확인한 짧은 튜토리얼
loading.tsx를 만들었는데 전환 중 화면이 그대로여서 Suspense 경계와 캐시를 확인한 방법을 적었다.
계속 읽기 →cron 시간이 KST와 어긋났을 때 NTP부터 확인한 서버 설정 노트
매일 새벽에 돌려 둔 백업 작업이 한 시간 늦게 기록됐을 때 timezone만 바꾸지 않고 확인한 순서다.
계속 읽기 →React ResizeObserver를 붙였다가 무한 렌더를 막은 실수 정리
컨테이너 폭을 읽어 카드 개수를 바꾸려다 ResizeObserver와 상태 업데이트가 서로를 다시 부른 문제를 정리했다.
계속 읽기 →Next.js 이미지 업로드 화면에서 EXIF 회전을 놓친 짧은 튜토리얼
휴대폰 세로 사진만 눕던 업로드 미리보기를 EXIF까지 처리해 고친 방법.
계속 읽기 →PostgreSQL 복구 연습에서 pg_dump 파일만 믿고 놓친 세 가지
백업 파일은 있었지만 실제 복원에서 권한과 확장을 확인하게 된 회고.
계속 읽기 →작은 API에 rate limit을 넣기 전 응답 기준부터 정한 설정 노트
로그인과 문의 API에 제한을 추가하면서 상태 코드와 프록시 신뢰 범위를 정한 메모.
계속 읽기 →React 탭 전환에서 useEffect가 예전 데이터를 덮어쓴 실수 정리
빠른 탭 전환 중 이전 요청이 늦게 도착해 화면을 덮어쓴 문제를 고친 기록.
계속 읽기 →Nginx 인증서 갱신 뒤 443이 열리지 않았을 때 먼저 확인한 경로
인증서 갱신 성공 뒤 HTTPS가 열리지 않아 실제 경로를 대조한 기록.
계속 읽기 →검색 결과의 제목이 매번 달라질 때 canonical과 메타데이터를 고친 튜토리얼
쿼리스트링이 붙은 같은 페이지가 검색에 섞였을 때 Next.js metadata로 canonical을 지정한 짧은 튜토리얼.
계속 읽기 →작은 VPS에서 디스크가 찼을 때 Docker 정리 순서를 정한 체크리스트
무작정 docker system prune을 실행하기 전, 실제 점유 위치와 복구 가능한 정리 순서를 적은 체크리스트.
계속 읽기 →배포용 환경 변수 이름을 바꾸기 전에 확인한 Next.js 공개 범위 비교
NEXT_PUBLIC_ 접두사와 서버 전용 환경 변수의 차이를 배포 환경에서 검증한 비교 메모.
계속 읽기 →React 모달을 포털로 옮기고 스크롤 잠금을 다시 설계한 회고
z-index만 올리던 모달 문제를 포털과 body 스크롤 잠금으로 정리한 프로젝트 회고.
계속 읽기 →Next.js API 라우트에서 413을 만났을 때 요청 크기부터 재본 기록
파일 업로드가 아니라 JSON 요청에서도 413이 날 수 있다. 프록시와 애플리케이션의 제한을 구분해 확인한 기록.
계속 읽기 →A 15 Minute Incident Checklist for a Small Side Project
A practical incident response checklist created after a silent outage.
계속 읽기 →Reverse Proxy Note: Keeping the Real Client IP
A server configuration note on client IPs, trusted proxies, and rate limits.
계속 읽기 →Fixing Stale Results in a React Debounced Search
A short React tutorial for preventing earlier search responses from replacing newer ones.
계속 읽기 →The Environment File Copy That Hid a Missing API Key
A deployment mistake and a small startup check that catches missing configuration.
계속 읽기 →Why Next Image Returned 400 Only After Deployment
A troubleshooting record for production-only next/image failures.
계속 읽기 →사이드 프로젝트 공개 전 문의 이메일을 먼저 만든 체크리스트
기능 배포 뒤에야 문의를 받을 통로가 없다는 사실을 알게 된 경험을 바탕으로, 공개 전 최소 운영 연락처를 준비하는 체크리스트입니다.
계속 읽기 →