블로그 / 분류

문제 해결.

돌리다가 막힌 곳과 그 원인, 고친 방법.

문제 해결

유튜브 영상 소리가 작게 들릴 때 ffmpeg로 -14 LUFS에 맞추는 법 — 재기, 1단계, 2단계

유튜브에 올린 영상만 소리가 작게 들린다면 파일의 소리 크기(LUFS)를 먼저 재 보면 됩니다. 무료 ffmpeg로 지금 크기를 재는 법, loudnorm으로 -14에 맞추는 1단계·2단계 방법, I=-14를 빠뜨리면 기본값 -24로 맞춰져 더 작아지는 함정을 실제로 돌려 본 결과와 함께 정리했습니다.

문제 해결

Cloudflare Pages에서 글 주소를 바꿀 때 옛 주소를 301로 넘기는 법 — _redirects 한 줄과 한글 주소 확인

블로그 글을 합치거나 주소를 바꿔도 여기저기 걸어 둔 옛 링크는 고치지 않아도 됩니다. Cloudflare Pages의 _redirects 파일에 옛 주소와 새 주소를 한 줄씩 적는 법, 끝 슬래시를 두 줄로 적는 이유, 한글 주소를 curl로 확인할 때 404가 나오는 이유를 정리했습니다.

문제 해결

SSH 원격 명령의 command not found, zsh .zshenv로 PATH 고치기

ssh 서버 "명령" 형태로 던질 때만 도구를 못 찾는 이유를 zsh 설정 파일 읽는 순서와 macOS path_helper로 설명합니다. 확인 명령 세 줄, .zshenv 설정 예시, bash 서버일 때와 스크립트에서 실패를 구분하는 방법까지 담았습니다.

문제 해결

노션 API 자동화를 속성 ID로 짜서 컬럼 이름 변경에 안 깨지게 하기

노션 데이터베이스에 자동으로 기록하는 코드가 컬럼 이름 하나 바꿨다고 멈출 때, 원인과 속성 ID 매핑으로 고치는 코드, 그래도 남는 한계와 API 버전 변경까지 다룹니다.

문제 해결

GitHub 토큰 만료로 멈춘 자동 발행 찾기: 결과물 헬스체크와 컨테이너 재생성

GitHub fine-grained PAT 기한이 지나 블로그 자동 발행이 세 번 실패했고, 알아챈 건 닷새 뒤였습니다. 401이 났을 때 확인하는 순서, 컨테이너에 새 토큰을 넣는 방법, 결과물 기준 헬스체크를 적었습니다.

문제 해결

카톡·스레드 링크 미리보기가 안 뜰 때 확인 순서: og:image 용량, 크롤러 UA, Cloudflare AI 봇 차단

og 태그가 멀쩡한데도 카카오톡과 스레드에서 링크 미리보기가 안 뜬 사이트를 curl로 크롤러 응답을 재현해 고친 과정입니다. 원인 세 가지와 각각 확인하는 명령, 고친 뒤에도 안 되는 것을 정리했습니다.

문제 해결

whisper.cpp -dtw 타임스탬프로 자막 싱크를 검증하면 안 되는 이유

whisper.cpp의 -dtw 옵션은 자막 분할 경계(t0/t1)를 바꾸지 않고, 원본 오디오와 대조하면 오히려 늦게 찍혔습니다. 자막 싱크를 잴 정답지를 원본 오디오에서 뽑는 방법과 -ml이 바이트 기준이라는 점까지 실측값으로 정리했습니다.

문제 해결

로컬 개발 서버 노출 확인: lsof로 0.0.0.0 바인드를 찾고 127.0.0.1로 닫는 법

localhost로 띄운 개발 서버도 바인드 주소에 따라 같은 와이파이의 다른 기기에서 열립니다. 바인드 주소를 확인하는 명령, 고치는 코드, 127.0.0.1로도 막히지 않는 경로를 함께 적었습니다.

문제 해결

Remotion 영상 렌더 속도 높이기 — 인코더 튜닝 대신 구간별 스틸과 ffmpeg concat

브라우저로 프레임을 그리는 Remotion 렌더에서 x264 프리셋·GPU·동시성을 바꿔 본 실측값과, 정지 화면이 많은 영상을 구간별 스틸 1장과 ffmpeg concat으로 이어 붙여 15분 걸리던 렌더를 90.2초로 줄인 방법을 적었습니다.

문제 해결

whisper.cpp 버전 설정이 안 먹을 때 — 옵셔널 체이닝 폴백과 Metal GPU 타임아웃

설정 파일에 적은 whisper.cpp 버전이 옵셔널 체이닝 폴백 때문에 무시되던 원인과, 그 덕분에 Metal GPU 타임아웃을 피하고 있던 구조를 다룹니다. 실제로 도는 바이너리를 확인하는 순서와 whisper-cli -ng 로 바꿀 때의 조건을 적었습니다.

문제 해결

Lighthouse 속도 점수가 재는 방식마다 다른 이유와 실측으로 다시 재는 법

Lighthouse 기본값인 시뮬레이션 스로틀링이 같은 페이지를 72점으로, 실제 스로틀링이 100점으로 잰 사례입니다. 측정을 의심해야 하는 신호와 낮은 점수를 한 번 더 확인하는 순서를 적었습니다.

문제 해결

도커 백엔드를 재생성한 뒤 nginx가 502를 낼 때 resolver와 변수 proxy_pass로 고치기

proxy_pass에 컨테이너 이름을 그대로 쓰면 nginx는 시작할 때 찾은 IP를 계속 씁니다. 원인을 확인하는 순서, 재시작으로 급하게 푸는 법, resolver 127.0.0.11과 변수 proxy_pass로 바꾸는 설정과 바꾼 뒤 404가 나는 경우를 적었습니다.

문제 해결

컨테이너 AccessDeniedException 해결: 읽기전용 파일시스템에서 임시 폴더를 /tmp로 옮기기

로컬에서는 되던 코드가 Docker 컨테이너에서 AccessDeniedException: /app/build 로 멈춘 원인과, 임시 경로·예외 처리·볼륨으로 나눠 고친 과정을 적었습니다. 로컬에서 읽기전용 환경을 미리 재현하는 docker run 옵션도 함께 정리했습니다.

문제 해결

셸 while read 루프가 한 건만 돌고 끝날 때 stdin을 막아 고치는 법

루프 안에서 부른 ssh나 CLI가 남은 입력을 읽어 버려서 생기는 버그입니다. 에러 없이 한 바퀴만 도는 증상으로 알아보는 방법과 </dev/null, ssh -n, 별도 파일 디스크립터 세 가지 해법을 정리했습니다.

문제 해결

오래된 인텔 맥에서 Claude Code가 Illegal instruction: 4로 죽을 때 AVX2 확인하는 법

Claude Code 같은 최신 CLI가 설치 중 Illegal instruction: 4로 죽는다면 CPU에 AVX2가 있는지부터 봅니다. 터미널 명령 두세 줄로 확인하는 순서와, 재설치로는 안 풀리는 이유를 적었습니다.