개발
코드 / 아키텍처 / 디버깅
-
Discord 메시지 종류 판단 로직을 단일 함수로 통합해 봇 모듈 중복
텔레봇 시스템에서 여러 봇 모듈이 Discord 메시지를 처리할 때 반복되던 종류(kind) 판단 로직을 discord_kind() 함수로 통합하는 리팩토링을 진행했다.
읽기 → -
Discord 메시지 타입 분기 로직을 단일 헬퍼로 통합
Discord 메시지 발송 로직을 정리하다 보니 같은 타입 처리가 여러 군데 중복되고 있었다. 이번엔 이를 discord_kind() 라는 단일 헬퍼 함수로 통합해 정리했다.
읽기 → -
결제 플랫폼 신규 화면을 피그마 디자인과 1:1로 재현한 과정
이커머스 PG 플랫폼에 새로운 기능 화면이 필요했고, 디자이너가 피그마에 정리한 디자인을 1:1로 재현하는 작업을 마쳤다. 단순히 "기능을 구현했다"라기보다, 디자인 가이드와 실제 웹 화면 사이의 갭을 최소화하는 데 신경 쓴 시간이었다.
읽기 → -
로그인 페이지에 광고 도입하며 수익화 확장
AdSense 수익화 전략의 일환으로 로그인 페이지에 광고를 노출시키는 작업을 진행했다. 서비스 초기 단계에서 비용 부담을 줄이기 위해 트래픽이 집중된 페이지들을 차례로 수익화 대상으로 삼는 중인데, 이번에는 로그인 페이지라는 신규 진입점을 활용하게 됐다.
읽기 → -
Flutter 웹에 애드센스와 개인정보 동의 스크립트 통합하기
Flutter 웹 애플리케이션에 광고 수익화 기능을 추가하면서 AdSense와 개인정보 정책 메시징 스크립트를 index.html의 head에 직접 추가했다. 이는 네이티브 웹 개발과 달리 Flutter 웹 프로젝트에서 글로벌 HTML 설정을 어떻게 관리할지에 대한 작은 하지만 중요한 결정이었다.
읽기 → -
Turbopack 전환 시 서버 패키지 번들 오류 해결
Next.js 프로젝트에서 Turbopack으로의 번들러 전환 과정 중에, 서버 환경에서만 사용되는 특정 라이브러리들이 제대로 번들되지 않는 문제를 만났다. openapi-to-postmanv2 패키지를 serverExternalPackages 설정에 추가한 작업인데, 이건 단순한 설정 수정을 넘어서 번들러 마이그레이션에서 자주 마주치는 호환성 문제를 어떻
읽기 → -
Astro 사이트에 광고와 개인정보 동의 스크립트를 함께 도입한 이유
Astro 기반 웹사이트에 AdSense 광고 플랫폼과 Privacy Messaging 스크립트를 Base 레이아웃에 추가했다. 단순해 보이는 script 추가지만, 이 결정 뒤에는 제품 수익화, 규정 준수, 성능 최적화를 모두 고려한 팀의 논의가 있었다.
읽기 → -
쉘 스크립트 자동화에서 stderr 출력 누락 버그를 잡다
최근 codex 인증 체크 스크립트를 보다가 로그인 상태 명령이 예상과 다르게 동작하는 걸 발견했다. 문제는 간단했지만, 그 과정에서 배운 게 꽤 있어서 정리해본다.
읽기 → -
구독 API 안정성을 높인 폴백·교차검증 래퍼 설계
구독 관련 외부 API 호출을 더 안정적으로 처리하기 위해 Codex CLI 래퍼를 만들었다. 단순한 인터페이스 개발이 아니라, 팀이 운영하며 마주할 수 있는 여러 장애 시나리오를 고민해서 설계한 작업이다.
읽기 → -
listener에 즉시 재쓰기 트리거 명령어 패턴 추가
listener 에서 prefix 기반 명령어 처리를 개선했다. !fix 프리픽스를 인식하면 재쓰기 작업을 바로 실행하도록 변경했는데, 이게 단순한 플래그 추가보다는 listener 의 반응성 패턴을 어떻게 설계할지에 대한 작은 결정이었다.
읽기 → -
콘텐츠 검토 정확도와 판정 규칙을 명시적 정책으로 개선
review_loop.py를 리팩토링하면서 모델 업그레이드와 판정 규칙을 정책 문서 수준으로 명시했다.
읽기 → -
slot 점검 배치에 재시도·자동화 인프라를 구축한 과정
slot 리소스를 주기적으로 체크하는 인프라를 첫 번째 버전으로 구축했다. 단순한 기능 추가가 아니라, 분산 환경에서 실제로 도는 시스템이 얼마나 많은 순간적 장애를 견뎌내야 하는지를 다시 한 번 생각하게 된 작업이었다.
읽기 → -
구매·선물·쿠폰 전 결제 흐름에 본인 재확인 팝업 일관 적용
구매와 선물 흐름 전반에 걸쳐 본인 재확인 팝업을 추가했다. 단순히 기능을 더한 게 아니라, 어느 지점에, 어떻게 일관되게 배치할지가 생각보다 복잡한 작업이었다.
읽기 → -
동적 라우트 파라미터와 데이터 조회 인자 불일치 버그 수정
동적 라우트에서 파라미터와 데이터 조회 함수의 인자 타입이 맞지 않는 실수를 고쳤다. /p/[id].astro 페이지에서 URL 파라미터로 받은 id를 그대로 findPostById() 함수에 전달해야 하는데, 어딘가에서 slug를 넘기고 있었다.
읽기 → -
HUD 캐시를 깃이그노어에 추가해 팀 머지 충돌 해소
OMC HUD 캐시 디렉토리를 .gitignore에 추가했다. 간단하지만 팀 협업에서 꽤 중요한 작업이다.
읽기 → -
블로그 URL을 슬러그에서 ID 기반으로 바꿔 SEO 안정성 확보
배경: slug 변경이 만드는 SEO 문제
읽기 → -
로그인 페이지 검색 노출 차단을 위한 노인덱스 태그 적용
signin 페이지에 meta description과 noindex 태그를 추가했다. 간단해 보이는 작업이지만 검색 엔진 최적화(SEO)와 서비스 보안 사이의 균형을 맞추는 의사결정이 담긴 변경이다.
읽기 → -
Astro 메타 설명 따옴표 버그가 SEO 전반에 미친 영향
메인 페이지 메타 설명을 다시 손봤다. 내용은 부실했고, Astro 컴포넌트 내 따옴표 처리도 빠졌다. 작은 수정처럼 보이지만, 이 종류 버그가 사실 얼마나 광범위한 영향을 주는지 회고해본다.
읽기 → -
리뷰 자동화 루프의 페르소나 거부를 시스템 프롬프트로 해결
review_loop.py에서 persona 설정이 Claude Code의 거부(refusal)를 트리거했다. 이 이슈를 system-prompt 옵션으로 옮겨서 해결한 작업이다.
읽기 → -
interlink 하이퍼링크를 서버에서 HTML로 변환해 렌더링 일관성 확보
interlink 기능에서 문서 내 하이퍼링크를 렌더링할 때, raw markdown 문자열을 그대로 내려주던 방식을 개선했다. 이번 fix는 마크다운을 서버 단계에서 HTML <aside> 요소로 변환해서 emit 하도록 변경한 작업이다.
읽기 →