즐겁게!! 자신있게!! 살아보세!!

재밌는 인생을 위하여! 영촤!

전체 글 116

FastAPI 캐치올 라우트가 새 페이지를 삼킬 때 — 등록 순서가 곧 매칭 순서

FastAPI 에서 새로 붙인 경로가 404 를 내는데 그 코드에 문제가 없다면 먼저 등록된 캐치올 라우트가 요청을 가로챈 것일 가능성이 큽니다. FastAPI(Starlette)는 라우트를 등록한 순서대로 훑고 처음 맞는 하나에서 멈추므로, 고정 경로와 mount() 를 먼저, 캐치올을 맨 마지막에 붙여야 합니다. 개인 프로젝트의 작은 웹 서버에서 이 함정을 몇 번이나 밟고 pytest 로 순서를 못 박은 기록입니다.요약FastAPI(Starlette)는 라우트를 등록한 순서대로 훑고, 경로가 처음 맞는 하나에서 멈춥니다. 더 구체적인 경로를 골라 주지 않습니다./{section}/{slug} 같은 캐치올은 토막 수만 같으면 무엇이든 받고, 핸들러가 404 를 내도 다음 라우트로 넘어가지 않습니다.고정..

AI 2026.10.21

macOS launchd·ssh 에서 Desktop 파일을 못 읽을 때 — TCC 함정

macOS 에서 터미널로는 되던 스크립트가 launchd 작업이나 ssh 로 들어온 셸에서 ~/Desktop 파일을 못 읽고 멈추거나 Operation not permitted 를 낸다면 TCC(개인정보 보호) 때문입니다. 데스크톱·문서·다운로드 폴더는 허락받은 앱에만 열리고, 파일 권한(chmod)과는 별개의 층입니다. 맥을 서버처럼 켜 두고 launchd 로 작업을 띄우다 SSH 키를 읽지 못해 겪은 일과, 키를 ~/.ssh 로 옮겨 해결한 과정입니다.요약macOS 는 데스크톱·문서·다운로드 폴더를 허락받은 앱에만 엽니다(TCC). 파일 권한(chmod)과는 별개의 층입니다.터미널 앱에서 되던 명령도 launchd 작업이나 ssh 원격 로그인 셸에서는 막히거나, 오류 없이 멈출 수 있습니다.권한을 넓..

AI 2026.10.20

GitLab LFS 푸시 끊김 — http→https 301 과 hrefrewrite

셀프 호스팅 GitLab 에서 git LFS 푸시가 ContentLength=N with Body length M 으로 끊기면, GitLab 이 http 로 내려 준 LFS 업로드 주소가 https 로 301 리다이렉트되며 업로드 본문이 따라가지 못한 것일 수 있습니다. 당장은 클라이언트 설정 두 줄(lfs.transfer.enablehrefrewrite + insteadOf)로, 근본적으로는 external_url 을 https 로 맞춰 풉니다. 큰 파일을 LFS 로 관리하는 개인 프로젝트 저장소에서 재시도해도 같은 자리에서 멈추던 문제를 푼 기록입니다.요약셀프 호스팅 GitLab 에 LFS 푸시가 ContentLength=N with Body length M 으로 끊기고, 재시도해도 같은 자리에서 멈..

AI 2026.10.19

Seedance 2.5 API 를 보류한 이유와 「구독 크레딧 ≠ API」 결제 함정

Seedance 2.5 는 공식 문서상 실사 얼굴이 든 참조 이미지·영상을 직접 올릴 수 없어 보류했고, Kling 은 앱 구독 크레딧과 API 유닛이 별개라 구독만으로는 API 를 쓸 수 없습니다. 영상 생성 API 를 고르며 정리한 마지막 글입니다. 먼저 밝혀 둡니다. Seedance 2.5 는 직접 생성해 보지 않았고, 공식 문서와 가격표(2026년 10월 7일 확인)만 보고 판단했습니다.요약Seedance 2.5 는 공식 문서상 실사 얼굴이 든 참조 이미지·영상을 직접 올릴 수 없습니다. 다른 모델로 그린 인물을 넣는 방식이면 첫 단계에서 막힐 수 있어 보류했습니다.공식 가격 예시(16:9, 5초)는 720p 초당 약 $0.23, 1080p 약 $0.57 입니다.Kling 은 앱 구독 크레딧과 A..

AI 2026.10.18

Kling 3.0 API 요소(element)로 여러 컷에서 같은 인물·목소리 유지하기

Kling 3.0 API 로 여러 컷에서 같은 인물이 같은 목소리로 말하게 하려면 캐릭터 요소(element)를 만들고 목소리를 요소에 묶으면 됩니다. 2.6 의 목소리 목록(Voice Control) 방식은 3.0 image-to-video 에서 받지 않습니다. 지난 글에서 Veo 3.1 을 뺀 이유를 적었고, 이번에는 그 자리에 들어간 Kling 3.0 의 요소 만들기와 초 단위 과금입니다.요약Kling 3.0 image-to-video 는 2.6 의 Voice Control(목소리 목록)을 지원하지 않습니다. 목소리는 요소에 묶어서 고정합니다.요소는 정면 이미지 1장 + 다른 각도 1~3장, 목소리는 5~30초짜리 잡음 없는 한 사람 샘플로 만듭니다. 요소를 넣어도 초당 단가는 그대로였습니다.과금은..

AI 2026.10.17

Veo 3.1 API 실사용 후기 — 시키지 않은 대답과 8초 단위 과금, 뺀 이유

Gemini API 의 Veo 3.1 은 화질 문제는 경로를 바꿔 풀었지만, 말하지 않아야 할 인물이 대답을 지어내는 문제와 1080p 이상은 8초 단위로만 사야 하는 과금 때문에 제 파이프라인에서 뺐습니다. 같은 인물이 여러 컷에 나오는 짧은 영상을 image-to-video 로 만들 모델을 고르며 2026년 9월 말 직접 돌려 본 결과입니다.요약말하지 않아야 할 인물이 있는 컷에서 Veo 3.1 은 세 번 모두 대답을 지어냈습니다. 오디오는 항상 생성되고 끄는 옵션이 없습니다.첫 프레임만 주면 5초 이후 한 사람이 다른 얼굴로 바뀌었고, 끝 프레임까지 줘야 같은 사람이 남았습니다.1080p·4K 는 8초 클립만 됩니다. 5초만 쓰는 컷이면 실제 1초당 값이 정가의 1.6배가 됩니다.1. 시험 조건이미..

AI 2026.10.16

TTS 결과 자동 검증 — 받아쓰기(STT) 대조와 difflib 유사도로 대본 확인하기

TTS 가 대본대로 읽었는지 자동으로 확인하려면 합성한 소리를 받아쓰기(STT)로 다시 적어 대본과 비교하면 됩니다. 받아쓰기 모델에는 대본을 주지 않고, 양쪽을 정규화한 뒤 파이썬 difflib 유사도가 문턱을 넘을 때만 채택하고 못 넘으면 다시 합성합니다. 생성형 TTS 가 지시문을 읽거나 대사를 건너뛴 소리를 오류 없이 돌려주는 문제를 막으려고 붙인 게이트입니다.요약생성형 TTS 는 지시문을 읽거나 대사를 건너뛴 소리를 오류 없이 돌려줄 수 있습니다. 그래서 결과를 받아 적어 확인합니다.받아쓰기 모델에는 대본을 주지 않고, 양쪽을 정규화한 뒤 difflib 유사도로 비교합니다. 우리 코드는 0.92 이상이면 채택, 아니면 최대 4번 다시 합성합니다.비율 비교라서 긴 대본에서는 짧은 군말이 묻혀 통과..

AI 2026.10.15

Gemini TTS 가 지시문까지 읽을 때 — 원인과 3.8 TTS 말투 지시 작성법

Gemini TTS 가 「밝게 말해 줘」 같은 말투 지시문까지 소리 내어 읽는다면, 지시를 대본 텍스트 안에 섞었기 때문입니다. 2026년 10월 기준 공식 문서에서 Gemini 3.8 TTS 는 텍스트를 그대로 읽을 대본으로 다루고, 말투는 speech_metadata.style 같은 대본 밖 자리에 넣습니다. 이전 세대 작성법을 새 모델에 그대로 써서 생긴 일과 바꾼 작성법을 정리합니다.요약Gemini 3.8 Flash TTS 에 말투 지시를 대사와 같은 텍스트에 섞으면 지시문까지 읽힐 수 있습니다(제 경우 6개 중 4개). 오류는 나지 않습니다.2026년 10월 기준 공식 문서: 3.8 TTS 는 텍스트를 「그대로 읽을 대본」으로 다룹니다. 말투는 speech_metadata.style, 순간의 숨..

AI 2026.10.14

AI 검수를 판정과 교정으로 나눈 이유 — claude -p LLM 검수 파이프라인

AI 에게 검수와 수정을 한 번에 시키지 않고 판정하는 호출과 고치는 호출을 나눈 이유는 셋입니다. 고치게 하면 사람이 볼 원본이 사라지고, 같은 호출 안에서는 자기 지적을 변호하게 되며, 교정을 여러 번 돌리면 판정이 뒤집히며 진동합니다. claude -p 로 짧은 텍스트를 만들고 검수하는 파이프라인에서 검수기는 판정만, 교정은 별도 호출로 2회까지 두고 앞뒤를 결정론 코드로 막은 구조를 정리합니다.요약검수기는 pass/revise/fail 판정만 합니다. 고치게 하면 사람이 볼 원본이 사라집니다.교정은 별도 호출로 지적 목록만 받아 2회까지 합니다. 더 돌렸더니 검수기가 자기 제안을 뒤집었습니다.검수기 실패는 보류이고, 판정에 텍스트 sha256 을 붙여 내용이 바뀌면 옛 판정을 버립니다.1. 생성 ..

AI 2026.10.13

Claude Code --allowedTools 와 --tools 차이 — 읽기 전용 호출

Claude Code 의 --allowedTools 는 묻지 않고 실행할 도구 목록이고, 쓸 수 있는 도구 자체를 줄이는 옵션은 --tools 입니다. 그래서 --allowedTools "Read" 만 넘기면 권한 모드에 따라 파일 편집 도구도 실행될 수 있습니다. 판정만 하는 읽기 전용 검수기를 만들다가 호출 코드를 공식 문서와 대조해 알게 된 차이와 올바른 조합을 정리합니다.요약--allowedTools "Read" 는 Read 를 묻지 않고 허용할 뿐, Edit·Write·Bash 를 없애지 않습니다.목록 밖 도구가 실행되는지는 권한 모드가 정합니다. 설정 파일이 acceptEdits 를 기본으로 두면 파일 편집은 묻지 않고 통과합니다.읽기 전용 호출은 --tools 로 도구를 줄이고 --permi..

AI 2026.10.12
728x90
반응형