개발
코드 / 아키텍처 / 디버깅
-
모바일 광고 오버플로우로 가로스크롤 나던 버그 수정
포트폴리오 사이트에 수익화 목적으로 AdSense 광고를 붙였는데, 모바일에서 가로스크롤이 자꾸만 생겼다. 광고 iframe이 고정 너비(1280px)로 설정되어 있었고, 모바일 뷰포트(375px 정도)에서 그대로 렌더링되면서 벌어진 문제였다.
읽기 → -
매거진 스타일 리디자인으로 포스트 가독성 한 단계 올리다
스타일시트 한 줄 고침이 아니라, 페이지 구조부터 푸터까지 전체적으로 블로그 읽기 경험을 다시 설계하는 작업을 했다. "light magazine/editorial redesign for readability" — 이 커밋 한 줄에 담긴 건 단순한 색깔 변경이 아니라, 사용자가 글을 읽을 때 어디에 집중해야 하고, 어떤 흐름으로 정보를 받아들이는지를 고민한
읽기 → -
광고 포화 줄이고 컨텐츠 중심 페이지 개편
광고 수익과 사용자 경험 사이의 불편한 타협을 좀 더 나은 설계로 해결해 본 경험이다. 이 커밋은 에디토리얼 보드를 재설계하면서 동시에 복잡해진 광고 시스템을 정리하고, 로딩 성능까지 챙긴 작업이었다.
읽기 → -
영문 카테고리 블로그 런칭을 위한 환경 셋업
한 기술 블로그 프로젝트에 영문 AI 도구 & 자동화 리뷰 섹션을 새로 추가했다. 단순히 콘텐츠만 늘리는 게 아니라 이를 뒷받침할 개발·운영 환경을 함께 정리하는 작업이었다.
읽기 → -
포스트별 검색 인덱싱을 CMS에서 선택 가능하게
블로그나 콘텐츠 플랫폼을 운영하다 보면 특정 포스트를 검색 결과에서 제외해야 할 순간이 생긴다. 임시 메모, 아카이브된 글, 중복 컨텐츠, 혹은 더 이상 유효하지 않은 정보들 말이다. 이번에 CMS에서 포스트별로 검색 인덱싱을 선택 가능하도록 cms_post.extra.noindex 필드를 추가했다.
읽기 → -
개인 사이트에 AdSense 광고 연동
개인 포트폴리오 사이트의 호스팅 비용과 유지보수 리소스를 조금이라도 상쇄하기 위해 이번엔 AdSense 광고를 추가했다. side 프로젝트라고 해서 완전히 자선 사업처럼 운영할 필요는 없다는 생각에서였다.
읽기 → -
가상계좌 발급현황 조회 기능 완성
가상계좌는 결제 플랫폼에서 매우 일반적인 결제 수단이다. 온라인 거래 특성상 여러 고객에게 여러 건의 계좌를 발급해야 하는데, 발급된 계좌들이 어떤 상태인지 실시간으로 파악하는 건 운영자 입장에서 필수적이다. 이번 커밋에서는 관리자가 발급된 가상계좌의 현황을 조회하고, 그 정보를 구조화해서 저장할 수 있는 기능을 추가했다. 말이 간단하지만, 웹 계층에서 데
읽기 → -
새로고침 후 사라지던 추출 진행 폴링 복구
PDF 추출 시스템에서 결제 후 진행 상황을 폴링으로 추적하는 중에 사용자가 페이지를 새로고침하면 폴링이 멈추는 버그를 고쳤다. 특히 추출에 오래 걸리는 Opus 모델을 사용할 때 문제가 심각했다.
읽기 → -
새로고침해도 추출 결과 유지되도록 개선
이번 커밋은 pdf2api 서비스의 핵심 경험을 세 가지 방향으로 개선한 결과다. 추출된 데이터를 새로고침해도 유지하도록 했고, 분석 중인 상태를 모달로 시각화했으며, 유료 사용자들에게 고급 모델을 제공하기 시작했다. 따로 보면 각각 작은 개선 같지만, 함께 묶으면 사용자 신뢰와 서비스 가치를 크게 높이는 변화다.
읽기 → -
분석 데이터 누락·중복 제거로 정확한 모니터링 복구
PV(페이지뷰) 분석 추적 시스템에서 누락되거나 중복 집계되던 사이트들을 정리했다. 전체 커버리지를 완성하면서 동시에 부정확한 로깅으로 인한 중복 제거까지 함께 처리한 작업이다.
읽기 → -
악용으로 터지던 PDF 무료 미리보기, 3페이지 제한으로 안정화
무제한 무료 PDF 미리보기 기능을 제공했는데, 악의적인 사용자들이 대용량 파일을 계속 요청하면서 서비스가 자주 장애를 겪기 시작했다. 이 문제를 간단하면서도 효과적인 3페이지 제한으로 해결한 작업을 정리해본다.
읽기 → -
PDF 변환 에이전트 턴 제한으로 응답 속도 개선
PDF 문서 추출 및 번역 기능에서 에이전트의 multi-turn 호출을 단일 턴으로 제한하는 최적화 작업을 했다. src/lib/anthropic.ts에서 maxTurns를 1로 캡핑해 에이전트 오버헤드를 크게 줄일 수 있었다.
읽기 → -
설정이 빌드마다 조용히 초기화되던 버그 수정
pdf2api의 converter 기본값이 명시적으로 설정되지 않아서, 빌드/배포 과정에서 설정이 자동으로 초기값으로 되돌아가는 문제를 만났다. 이 글에서는 이 종류의 버그가 왜 발생하는지, 그리고 어떻게 방지할 수 있는지 회고해본다.
읽기 → -
주석 오류와 드리프트 감시로 수수료 처리 안정성 확보
결제 플랫폼의 충전 수수료 처리 로직을 정리하면서 코드와 주석 사이의 불일치를 발견했고, 동시에 수수료 차감 과정에서 발생할 수 있는 데이터 드리프트를 감시하는 기능을 추가했다.
읽기 → -
휴대폰 인증 로직 중복을 컴포넌트로 통합
휴대폰 본인인증 처리를 공통 컴포넌트로 추상화하고, 회원가입의 중간 단계(step2)와 기존회원의 재인증 플로우에 적용했다.
읽기 → -
지갑 충전 화면 색상 통일로 브랜드 일관성 강화
지갑 충전 기능의 강조색을 브랜드 레드로 변경하고, 결제 흐름(/pay)의 히어로카드 톤과 맞춰서 통일했다. 단순한 색상 변경처럼 보이지만, 이것은 결제 플랫폼 전체의 UX 일관성을 높이는 작업이었다.
읽기 → -
관리자 쿠폰 설정에 신규 공급사 탭 추가
쿠폰 관리 시스템에 새로운 공급사 탭을 추가했다. 기존 관리자 화면에서 여러 공급사별 쿠폰 정책을 각각 관리할 수 있도록 탭 UI를 확장한 작업이다. 자바 백엔드 웹 컨트롤러 클래스와 JSP 뷰 레이어를 수정해서 구현했는데, 단순해 보이는 "탭 하나 추가"가 실제로는 꽤 신경 쓸 부분들이 많았다.
읽기 → -
새로운 상품권 공급사 연동 간편화
새로운 상품권 발송 공급사인 클라이프스를 시스템에 추가하는 작업을 완료했다. 단순해 보이는 "공급사 추가"지만, 팀이 이후 계속해서 공급사를 확장할 수 있도록 구조적 기반을 다지는 중요한 마일스톤이었다.
읽기 → -
예금주명 검증으로 계좌 인증 정확도 강화
계좌 인증은 결제 시스템의 핵심 신뢰 포인트다. 특히 B2B나 정산 플랫폼에서는 계좌 이체 시 송금처와 수취처가 일치하는지 확인하는 게 중요한데, 기존엔 계좌번호 자체만 검증하고 소유주(예금주명)는 별도 확인 없이 진행해왔다. 이번에 그 부분을 보강하고 동시에 구식 1원인증 방식의 UI 잔재도 정리했다.
읽기 → -
회원 본인인증을 웰컴 팝업에서 SMS로 전환
회원 본인인증 방식을 기존의 웰컴 팝업 기반에서 제주(kp-pay)의 휴대폰 SMS 인증으로 전환했다. 보안과 사용자 경험, 그리고 규정 준수 관점에서 실제로 필요했던 작업이었다.
읽기 →