같은 한글인데 한쪽은 즉사하고 한쪽은 조용히 잘못 읽힙니다 — 어느 쪽이 더 위험할까요

같은 한글인데 한쪽은 즉사하고 한쪽은 조용히 잘못 읽힙니다 — 어느 쪽이 더 위험할까요

지난번에 자동화가 일주일간 죽어 있던 이야기를 썼어요. 범인은 제가 넣은 한글 주석이었고, 파일을 읽는 프로그램이 다른 문자 규칙으로 해석하면서 벌어진 일이었습니다. 그 일을 겪고 나서 “같은 실수가 다른 스크립트에도 있으면 어떡하지?” 싶었어요. 그래서 자동화에 쓰는 다른 스크립트들도 점검했습니다. 결과가 뜻밖이었어요. 같은 원인인데 증상이 정반대로 나타나더라고요. 두 얼굴 — 같은 원인, 정반대 증상 배치 파일 (.cmd) … 더 읽기

권한 정책이 다른 표를 참조하면 조용히 막힙니다 — 읽기는 0건, 쓰기는 오류로 갈리는 이유

권한 정책이 다른 표를 참조하면 조용히 막힙니다 — 읽기는 0건, 쓰기는 오류로 갈리는 이유

한 줄 요약: RLS 정책의 조건식 안에서 다른 테이블을 SELECT하고 있다면, 그 조회는 호출자 권한으로 평가됩니다. 그 사용자에게 그 테이블이 0행이면 조건식은 항상 거짓이 되고, 읽기는 에러 없이 0건, 쓰기는 42501로 갈립니다. 코드를 grep해도 안 나오는 이유는 문제가 정책식 안에 있기 때문이에요. 수학 과외를 하면서 만든 학습 도구에서 코멘트 기능이 조용히 죽어 있는 걸 검수 … 더 읽기

매일 밤 돌던 자동화가 7일간 죽어 있었다 — 범인은 내가 넣은 주석 한 줄

매일 밤 돌던 자동화가 7일간 죽어 있었다 — 범인은 내가 넣은 주석 한 줄

수학 과외를 하면서 AI로 자잘한 자동화를 만들어 쓰고 있어요. 그중 하나가 윈도우 작업 스케줄러에 걸어둔 야간 배치입니다. 매일 밤 정해진 시각에 .cmd 파일을 실행해서, 그 안에서 Node 스크립트가 자료를 모아 정리해주는 구조예요. 잘 돌고 있으려니 하고 신경을 안 썼죠. 이 글의 본론은 08-10 밤부터 7일 연속 실패한 이야기인데, 그 전에 같은 작업에 사고가 두 번 … 더 읽기

구글 플레이가 앱 출시를 막았는데, 무엇이 막는지도 몰랐다 — 3칸 중 1칸으로 풀린 이야기

구글 플레이가 앱 출시를 막았는데, 무엇이 막는지도 몰랐다 — 3칸 중 1칸으로 풀린 이야기

수학 과외를 하면서 AI로 앱을 하나 만들고 있어요. 테스터들에게 나눠줄 차례라 구글 플레이 콘솔에서 비공개 테스트 버전을 전송하려는데, 빨간 배너가 뜨면서 막혔습니다. 문제는 그다음이었어요. 무엇이 막고 있는지조차 몰랐거든요. 이 오답노트는 그 관문의 정체를 찾아내고, 예상과 전혀 다른 방식으로 풀린 하루의 기록입니다. 막혔는데, 어디서 막혔는지를 모른다 이게 제일 답답한 상태예요. 에러 메시지가 명확하면 검색이라도 하는데, 이때는 … 더 읽기

자동화의 핵심 데이터 소스가 죽었을 때 — 통째로 실패하지 않고 ‘정직한 폴백’으로 완결하기

자동화의 핵심 데이터 소스가 죽었을 때 — 통째로 실패하지 않고 ‘정직한 폴백’으로 완결하기

매일 아침 한국 주식 시장 브리핑(환율·지수·공시·뉴스)을 만들어 카카오톡으로 보내주는 예약 작업을 AI에게 맡겨 뒀어요. 제가 지침을 짜서 세팅해두면 정해진 시각에 알아서 도는 구조죠. 그런데 어느 날, 그 요약에 꼭 필요한 핵심 데이터 도구가 아예 안 불려왔습니다. 보통 이러면 작업이 통째로 실패하죠. 그런데 이날은 달랐어요 — 제가 맡겨둔 AI 루틴이 스스로 다른 길로 우회해서 결과물을 끝까지 … 더 읽기

‘파일을 다른 프로세스가 사용 중’이라 스크립트가 죽을 때 — 잠금 에러만 골라 재시도하기

‘파일을 다른 프로세스가 사용 중’이라 스크립트가 죽을 때 — 잠금 에러만 골라 재시도하기

저는 바이브코딩을 하면서 이걸 나중에 컨텐츠화 하고자, 작업 과정을 파일로 기록하는 로깅 스크립트를 하나 달아뒀어요. 그런데 이 스크립트가 매 턴마다 빨간 에러를 뱉기 시작했습니다. 메시지는 이랬어요. 스크립트 Write-DevLog.ps1의 183번째 줄, 파일에 덧붙여 쓰는 Add-Content에서 난 에러였어요. Stop hook error: Add-Content: Write-DevLog.ps1:183 The process cannot access the file '…2026-06-20.md' because it is being used by another … 더 읽기

로그에서 API 키를 가리려다 커밋 해시를 다 지울 뻔했다 — 어디까지 가릴지 정하는 문제

로그에서 API 키를 가리려다 커밋 해시를 다 지울 뻔했다 — 어디까지 가릴지 정하는 문제

저는 AI로 이것저것 자동화하면서, 작업 과정을 자동으로 기록하는 로그를 남기고 있어요. 그런데 AI(클로드코드)가 그 로그를 읽다가 외부 API 키가 평문으로 남은 걸 찾아냈어요. 그래서 제 작업을 조율하는 오케스트레이터 AI(LC)가 «마스킹 갭 수리» 발주서를 써서 클로드코드에게 맡겼죠. 그런데 이 일이 생각보다 간단하지 않았어요. 발주서대로 잡는 범위를 넓히면 엉뚱하게 커밋 해시가 전부 별표로 변할 판이었거든요. 이 글은 … 더 읽기

AI 토큰이 아침부터 98% 사라졌다 — 범인은 내가 의심한 게 아니었다

AI 토큰이 아침부터 98% 사라졌다 — 범인은 내가 의심한 게 아니었다

저는 수학 과외를 하면서 잡무를 AI로 자동화해보고 있어요. 그러다 보니 AI 사용량 한도(하루에 쓸 수 있는 토큰의 상한 — 토큰은 AI가 읽고 쓰는 글자 수의 단위예요)를 늘 신경 쓰게 됐죠. 그런데 어느 날 아침, 컴퓨터를 켜자마자 오늘치 토큰의 98%가 이미 사라져 있었어요. 저는 아직 아무 작업도 안 했는데 말이죠. 이 오답노트는 그 범인을 엉뚱한 데서 … 더 읽기

사이트 점검기가 멀쩡한 블로그를 ‘전체 다운’이라 외친 이유 (자기 글에 속은 오탐)

사이트 점검기가 멀쩡한 블로그를 ‘전체 다운’이라 외친 이유 (자기 글에 속은 오탐)

저는 수학 과외를 하다가, 학생들 오답을 정리하던 습관 그대로 제 코딩 오답을 모으는 블로그를 만들고 있어요. 그래서 이 블로그엔 “사이트가 다운됐다”, “치명적인 오류가 났다” 같은 실패담이 잔뜩 쌓입니다. 그런데 어느 날, 그 실패담을 지키려고 만든 자동 점검 코드가 정작 멀쩡한 블로그를 ‘전체 다운’이라고 외치는 황당한 일이 벌어졌어요. 범인은 놀랍게도 저 자신이었습니다. 새 글을 올리고 나면 … 더 읽기

같은 글을 세 곳에서 따로 렌더하고 있었다 — 렌더를 한 곳으로 모은 이야기

같은 글을 세 곳에서 따로 렌더하고 있었다 — 렌더를 한 곳으로 모은 이야기

저는 수학쌤이 코딩 배우는 이야기를 블로그에 올리는데, 글을 쓰는 것과 발행하는 것 사이에 자동화 파이프라인을 하나 두고 있어요. 제가 마크다운으로 초안(blog.md)을 쓰면, 그걸 발행용 HTML로 바꿔주는 과정이죠. 그런데 이 파이프라인을 정비하다, 마크다운을 HTML로 바꾸는 렌더 작업이 세 군데서 따로 돌고 있는 걸 발견했습니다. 오늘은 왜 그게(당장 멀쩡해 보여도) 문제인지, 그리고 그 세 경로를 어떻게 하나로 … 더 읽기