2026년 10월 30일 금요일
미단재

2026년 10월

← 전체 아카이브

총 114편

웅파 · 2026-10-30
블로그 개선 10개를 이슈로 쪼개 병렬로 만들며 배운 것
요약: 이미 있는 블로그 기능을 조사해 빠진 것만 이슈 10개로 쪼갰고, 워크트리를 나눠 9개를 이틀에 걸쳐 dev에 넣었다. 병렬로 작업하니 같은 파일이 충돌했고, 자동 보안 리뷰는 배열 파라미터 500 오류나 메…
웅파 · 2026-10-29
라이브러리 없이 마크다운 렌더러를 만들다 만난 XSS — 엔티티로 인코딩된 태그가 되살아났다
요약: 글을 Claude로 쓰다 보니 마크다운이 그대로 저장돼 화면에 **와 ##가 노출됐다. 마크다운 라이브러리 대신 정화된 HTML 위에서 굵게 → 제목 → 목록·인용 → 코드 블록·표 순으로 정규식 치환기를 쌓…
웅파 · 2026-10-29
테마 폴백으로 애드센스용 블로그 테마 4종과 자동광고 head 삽입 만들기
요약: CodeIgniter 4 기업 사이트 템플릿에 애드센스 게재를 전제로 한 블로그형 테마 4종(ilgan·cobalt·quiet·devnotes)을 추가하고, 모든 테마의 head에 자동광고 코드를 넣는 설정을…
웅파 · 2026-10-29
Groq로 글 태그·시리즈 자동 추천: 환각 필터와 호출 제한
요약: 블로그 글쓰기 화면에 Groq(OpenAI 호환 API)로 태그와 시리즈를 자동 추천하는 기능을 붙였다. 모델이 후보에 없는 시리즈 번호를 지어내도 서버에서 걸러내고, 비밀글·비회원 요청은 외부 호출 자체를…
웅파 · 2026-10-29
워드프레스 이관 후 깨진 이미지, 태그째 정리하기 (CodeIgniter 4)
요약: 워드프레스 글을 CodeIgniter 4로 옮겼는데, 이미지 파일을 못 옮긴 글에는 wp-content/uploads 를 가리키는 깨진 가 남았다. 가능한 경로는 치환으로 살리고, 끝내 못 살린 것은 DOM…
웅파 · 2026-10-29
스캐너 IP 자동 차단: 404 3회 일배치와 즉시 차단, 오차단 방어까지
요약: 공개 사이트에는 wp-login.php, .env 같은 경로를 훑는 스캐너가 계속 들어온다. 방문 로그의 404 기록으로 1시간 3회 이상 두드린 IP는 크론으로 30일 차단하고, 전형적인 스캐너 경로는 첫…
웅파 · 2026-10-29
글마다 다른 OG 썸네일을 GD로 자동 생성하기 (CodeIgniter 4)
요약: 블로그 글을 SNS에 공유하면 모든 글이 같은 사이트 로고로 보이는 문제가 있었다. 글 제목을 얹은 1200×630 PNG를 PHP GD로 요청 시점에 만들고, 제목·사이트명 해시를 캐시 키로 삼아 파일 캐시…
웅파 · 2026-10-29
블로그 기능을 하나씩 직접 만들기 3 — CodeIgniter 4로 RSS 피드 만들기
> 요약: 라이브러리 없이 CodeIgniter 4 컨트롤러 하나로 `/feed`, `/rss` RSS 2.0 피드를 만들었다. 공개 글만 최신 20건을 1시간 캐시로 내보내고, 본문 요약에 섞인 HTML 엔티티가…
웅파 · 2026-10-29
블로그 글 목차(TOC)를 JS 70줄로 직접 만들기
요약: 게시글 본문의 h2~h4 제목을 읽어 목차를 자동 생성하고, 읽는 위치를 강조하며, 화면 폭에 따라 접힘/우측 고정으로 보여주는 기능을 라이브러리 없이 만들었다. 서버 렌더링은 건드리지 않고 post-toc.…
웅파 · 2026-10-29
블로그 기능을 하나씩 직접 만들기 ① 시리즈 내비게이션
2026년 10월 29일 · @martin 들어가며 결론부터 말하면, 미단재에 시리즈 기능을 붙였습니다. 글 상단에 "이 글은 ○○ 연재의 3/5편"이라는 상자가 뜨고, 펼치면 연재 전체 목록과 연재 안에서의 이전·…
웅파 · 2026-10-29
AI가 실제로 반복한 실수 모음 — 진짜 사고 편
2026년 10월 29일 · @martin 가상 사례는 이제 그만 이 글에 나오는 사고는 전부 실제로 겪은 일입니다. 클로드 코드와 클로드로 제품을 만들고, 로고·명함·방 배치 같은 일상 일까지 맡기면서 진짜 사례가…
웅파 · 2026-10-29
어르신들께 AI 목소리 사기를 어떻게 설명할까
2026년 10월 29일 · @martin 강의안에서 가장 많이 고친 10분 행정복지센터 문화강좌에서 "행복한 일상을 위한 AI 활용법"이라는 제목으로 실용인문학 5강·6강을 맡았습니다. 여행 계획, 건강정보, 이미…
웅파 · 2026-10-29
AIPicto 소개: 아내의 그림책을 올리는 공간
요약: AIPicto는 글과 그림을 좋아하는 아내 도연님을 위해 만든 서비스다. 도연님의 그림책과 그림일기를 올려 온라인에서 읽게 한다. 지금은 무료로 열려 있고, 월·연 구독과 건당 구매는 구현해 두었으며 유료 구…
웅파 · 2026-10-28
남의 사이트를 원격 스캔하지 않는 이유: 자가진단 CLI 설계
> 요약: 웹사이트 취약점 자가진단 도구를 만들면서 "URL을 넣으면 외부에서 스캔해 주는 서비스" 대신 "서버 안에서 직접 실행하는 CLI"를 택했다. 소유자 확인이 어렵고, 권한 없는 접근으로 해석될 여지가 있어…
웅파 · 2026-10-28
혼자 하는 유지보수, 단가와 한도를 어떻게 정할까
2026년 10월 28일 · @martin 유지보수를 혼자 판다면 가격보다 먼저 정해야 할 것이 한도입니다. 저는 KOSA 노임단가로 일 단가를 잡고, 상품마다 공수를 곱해 가격을 만들고, 마지막으로 월 처리 건수에…
웅파 · 2026-10-28
게으름이 개발자를 움직이게 만든다
요약: main에 머지할 때마다 우분투 서버에 접속해 git pull을 치던 수동 배포가 귀찮아서 자동화를 고민했다. GitHub Actions + SSH도 가능했지만, 서버가 스스로 확인하는 cron 폴링 방식을…
웅파 · 2026-10-28
우분투에서 php -v만 보고 안심하면 안 되는 이유
얼마 전 CI Korea에 올릴 PHP 보안 대응 가이드를 정리하면서 표 하나를 만들었습니다. "내 서버의 PHP가 패치됐는지 무엇으로 판단하느냐"를 환경별로 정리한 표입니다. 만들고 나서 보니, 이 표에서 가장 많…
웅파 · 2026-10-28
썸네일에 마우스를 올리면 펜 선화가 뭉개지는 이유
요약: 메인 카드 썸네일에 transform: scale(1.04) 호버를 걸자, 1~2px 펜 선화가 호버할 때마다 지글거리고 뭉개졌다. 이미 축소된 텍스처를 compositor가 한 번 더 bilinear로 늘리…
웅파 · 2026-10-28
남의 사이트에 붙는 채팅 위젯 설계: 보안 경계는 iframe 하나뿐이다 (설계 편)
요약: 웹 채팅 상담 SaaS의 임베드 위젯을 설계하면서 정한 구조를 정리했다. 고객사 페이지에는 5KB 이하 loader.js와 Shadow DOM 런처만 두고, 토큰·대화·API는 전부 별도 오리진의 iframe…
웅파 · 2026-10-28
개발자가 Claude Design으로 디자인하기 — 미단재 로고를 다시 만들며
2026년 10월 28일 · @martin 26년 동안 PHP로 API와 백오피스를 만들었지만, 디자인은 늘 남의 일이었다. 포토샵은 중급 정도로 다룬다. 시안을 직접 처음부터 잡아본 적은 거의 없다. 회사에 다닐…