개발
코드 / 아키텍처 / 디버깅
-
영어 포스트 제목 독립 관리로 국제화 기초 다지기
블로그 국제화를 위해 포스트의 영어 제목을 별도 필드로 관리하는 title_en 을 도입했다. 슬렉스 영어 피드(/en) 가 한국어 제목이 아닌 영어 제목으로 노출되어야 하는 상황이 생기면서 그냥 원문을 번역기에 돌리거나 영어 사용자들이 "음, 이게 뭐 하는 포스트지?" 하며 헤매지 않도록 하기 위한 변화다.
읽기 → -
영어 블로그 피드 라벨 깨지던 버그 수정
최근 다국어 블로그 시스템 개편 중에 /en/ 경로의 피드 라벨이 제대로 렌더링되지 않는 버그를 발견했다. 사용자가 영어 블로그 보드의 RSS 피드나 동적 피드를 열었을 때 제목, 카테고리, 설명 같은 메타데이터 텍스트가 빈 채로 나타나거나 언어가 섞여 나왔던 문제였다. scripts/gen_blog_feed.py 스크립트를 수정해서 경로별로 정확한 언어
읽기 → -
도메인 변경에 따른 SEO 설정 통합
블로그의 도메인을 werebridge.com에서 새로운 주소로 이전했다. 단순히 호스팅 주소를 바꾸는 것이 아니라, 검색 엔진 최적화(SEO)부터 메타정보까지 일괄으로 정리해야 하는 일이었다.
읽기 → -
글 보드의 무거운 시각 효과 제거
포트폴리오의 "오늘의 글" 섹션에 있던 파티클 캔버스 효과를 숨겼다. 작지만 의외로 중요한 결정이었는데, 이 글에서는 왜 이런 일이 생기는지, 어떤 것들을 고려해야 하는지 풀어보자.
읽기 → -
포트폴리오 카드 배경 정리로 시각 노이즈 제거
배경 파티클 애니메이션이 비쳐서 콘텐츠가 흐려지던 포트폴리오 페이지 문제를 불투명 배경 처리로 깔끔하게 정리했다.
읽기 → -
메인 상단 오늘의 글로 블로그 발견성 높이기
포트폴리오 방문자들이 내 글들을 쉽게 찾을 수 있도록 메인 페이지를 개편했다. 최신 포스트를 상단에 노출하고, 섹션별 보드 형태로 블로그를 정렬해서 카테고리별 관심 콘텐츠를 한눈에 볼 수 있게 만들었다.
읽기 → -
검증 안 된 수량 데이터 자동 수정에서 제외
SEO 자동 수정 봇이 검증되지 않은 수량 주장을 무작정 처리하려니, LLM이 계속 불확실한 상태로 빠지는 문제가 있었다. 이번 작업에서는 애초에 검증 실패한 수량 데이터는 자동 수정 대상 자체에서 제외하는 규칙을 추가해서 문제를 근본 차단했다.
읽기 → -
SEO 검증 정확도 높이려고 텍스트 범위 확대했다
사이트 본문을 추출할 때 1200자로 제한하던 걸 3000자까지 확대했다. scripts/bot-action-worker.py의 SEO 자동 수정 로직을 손봤다.
읽기 → -
SEO 자동 수정이 근거 없이 마구 고치던 버그 수정
**실제 사이트 내용을 근거로 삼지 않고 마구 수정을 시도하는 SEO 자동화 로직을 제어했다.**
읽기 → -
색인 생성 경로 오류 복구, API 호출 실패 방어
이번엔 빌드·크롤링 시스템에서 쌓인 두 가지 안정성 문제를 한 번에 처리했다. 웹사이트 색인 생성 빌드의 경로가 잘못 지정된 부분과, 소셜 브로드캐스트 의존성으로 인한 연쇄 장애를 방어하는 것이었다.
읽기 → -
유료 버전을 별도로 배포하기 위해 applicationId 분리
Play Store에서 같은 앱의 유료/무료 버전을 독립적으로 배포하려고 Android 앱의 applicationId를 변경했다. 한 줄짜리 설정 변경처럼 보이지만, 사실 아키텍처, 배포, 테스트 전체가 얽혀 있던 결정이었다.
읽기 → -
사용자 피드백으로 게시 목표값 빠르게 복구
6월 11일 게시 일일 목표를 4로 낮춘 지 불과 이틀 만에, 13일에 다시 80으로 올렸다. 짧은 기간에 목표값이 두 번이나 변경된 이 커밋은 단순한 설정값 복구를 넘어, 팀이 사용자 피드백을 얼마나 빠르게 수용하는지, 그리고 의사결정을 얼마나 유연하게 취할 수 있는지를 보여주는 사례가 되었다.
읽기 → -
거짓 경보만 계속 울리던 슬롯 발행 타임아웃
슬롯 확인 배경 작업에서 계속 울리던 타임아웃 경보를 결국 때려잡기로 했다. 발행 프로세스의 타임아웃 한계를 15분에서 45분으로 늘렸다.
읽기 → -
라이브 시계 시간 불일치 버그 수정
SSR 환경에서 서버와 클라이언트의 시간 표시가 달라지던 문제를 고쳤다. 라이브 시계 컴포넌트가 서버의 KST(한국 표준시)로 렌더링되면서 접속자의 로컬 타임존과 맞지 않던 것. 마운트 직후 클라이언트 로컬시간으로 즉시 보정하는 방식으로 해결했다.
읽기 → -
환경별로 다른 OG URL, 환경 변수로 통일
src/app/layout.tsx 에서 소셜 미디어 공유용 Open Graph 메타데이터를 환경 변수 기반으로 수정하고 metadataBase를 추가했다. 작은 수정처럼 보이지만, 개발/스테이징/프로덕션 환경을 분리해서 운영하는 팀이라면 꽤 자주 마주치는 함정이다.
읽기 → -
에포크 상수 오류로 깨진 시간 표시 수정
시간 계산의 기준점이 되는 epoch constants가 구 기준년도에 맞춰져 있었다. 2026년 환경으로 마이그레이션하면서 이 문제를 일괄 정리했다.
읽기 → -
버튼 UI에 게임스러운 감각을 더해 완성도를 높였다
버튼 비주얼을 아케이드 스타일로 리디자인하고 진행 상황 표시 모티프를 추가했다. package.json, ButtonClient.tsx, globals.css를 손본 이번 작업은 단순 스타일 개선을 넘어, 제품의 시각적 일관성과 사용자 상호작용감을 함께 다루는 작업이었다.
읽기 → -
대시보드에 버튼·응답시간 메트릭 독립 추적 추가
지난주 stats-dashboard 스크립트에 두 가지 새로운 메트릭을 등록했다. 버튼 상호작용과 초 단위 응답시간(seconds)을 추적하는 토이 메트릭인데, 각각 전용 로그를 갖춰서 독립적으로 수집할 수 있게 했다. 단순해 보이지만, 이 작은 변경이 팀의 관측성 기반을 다시 한 번 정리하는 좋은 타이밍이었다.
읽기 → -
결제 주문 데이터가 저장 안 되던 쿼리 분해 버그 수정
결제 처리 로직에서 데이터베이스 INSERT 쿼리 결과를 잘못 다루고 있었다. 쿼리 함수가 반환하는 형태와 코드에서 기대하는 형태가 맞지 않아, 결제 주문 정보가 제대로 저장되지 않는 상황이 발생했고, 이를 수정했다.
읽기 → -
프로젝트 초기화 커밋으로 개발 기초 다지기
The Button (grow-the-button) 프로젝트의 초기 구현이 시작됐다. 새 프로젝트의 첫 커밋이 들어왔는데, 흥미롭게도 실제 기능 구현이 아닌 **환경 설정과 보일러플레이트** 파일들만 들어갔다. 단순히 "프로젝트 만들고 시작했네" 정도로 볼 수도 있지만, 사실 이 커밋이 이후 몇 개월간 팀의 개발 경험과 코드 품질을 좌우하는 기초가 될 거라
읽기 →