<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>김솔비 블로그</title>
    <link>https://blog.solfany.com</link>
    <description>웹/앱 엔지니어 김솔비입니다. React, Next.js, Spring Boot로 서비스를 만들며 겪은 문제와 해결 과정을 기록합니다.</description>
    <language>ko</language>
    <copyright>© 2026 김솔비</copyright>
    <lastBuildDate>Fri, 02 Oct 2026 09:30:00 GMT</lastBuildDate>
    <atom:link href="https://blog.solfany.com/rss.xml" rel="self" type="application/rss+xml"/>
    <image>
      <url>https://blog.solfany.com/icon-512.png</url>
      <title>김솔비 블로그</title>
      <link>https://blog.solfany.com</link>
    </image>
    <item>
      <title>카톡 테마 하나 올리는 데 1시간 → 13분: 나만 쓰는 멀티플랫폼 게시 도구 만들기</title>
      <link>https://blog.solfany.com/blog/tech/postflow-devlog</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/postflow-devlog</guid>
      <description>카카오톡 테마 상품 하나를 등록하면 네이버 블로그·포스타입·인스타그램 글과 이미지를 만들고, 인스타는 API로 올리고 네이버·포스타입은 에디터를 발행 직전까지 채워 주는 개인 도구 postflow 개발기입니다. 상태 머신과 DB 트리거, 폴링하는 Mac 에이전트와 클립보드 붙여넣기, 두 겹 발행 감지, 일회용 공개 주소로 하는 인스타 게시, 이미지 처리 알고리즘을 다이어그램과 코드로 정리합니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>Spring Boot</category>
      <category>Playwright</category>
      <category>라즈베리파이</category>
      <category>Instagram API</category>
      <category>자동화</category>
      <category>개발기</category>
      <pubDate>Fri, 02 Oct 2026 09:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/postflow/cover.png" length="148967" type="image/png"/>
    </item>
    <item>
      <title>나의 첫 블로그, 첫 운영부터 운영 종료까지: 내가 기록을 멈추지 않는 이유</title>
      <link>https://blog.solfany.com/blog/retrospective/github-io-blog-retrospective</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/retrospective/github-io-blog-retrospective</guid>
      <description>기록하는 습관을 기르려고 만든 첫 블로그 solfany.github.io의 운영을 마칩니다. 그 블로그를 만들며 배운 것, 다시 읽은 옛 글, 그리고 잊힐 글이라도 계속 남기는 이유를 적었습니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>회고록</category>
      <category>회고</category>
      <category>블로그</category>
      <category>기록</category>
      <category>성장</category>
      <pubDate>Thu, 01 Oct 2026 05:00:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/github-io-blog-retrospective/cover.webp" length="17962" type="image/webp"/>
    </item>
    <item>
      <title>유출을 막을 수 없다면 추적이라도: 디지털 상품에 워터마크 심기</title>
      <link>https://blog.solfany.com/blog/tech/digital-dispatch-center-watermark</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/digital-dispatch-center-watermark</guid>
      <description>카카오톡 테마, PPT, 이미지, PDF 같은 디지털 상품에 다운로드 시점 워터마크를 심어 유출된 파일이 어느 주문에서 나갔는지 찾는 방법을 정리했습니다. 포맷별 주입 전략, ISO-8859-1 바이트 스캔, 한 번도 동작하지 않았던 버그, 그리고 개인정보를 빼고 주문번호만 남긴 이유까지 다룹니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>워터마크</category>
      <category>보안</category>
      <category>Java</category>
      <category>Spring Boot</category>
      <category>트러블 슈팅</category>
      <pubDate>Tue, 29 Sep 2026 05:10:00 GMT</pubDate>
    </item>
    <item>
      <title>스마트스토어가 안 해주는 디지털 상품 자동발송, 직접 만들었다</title>
      <link>https://blog.solfany.com/blog/tech/digital-dispatch-center</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/digital-dispatch-center</guid>
      <description>네이버 스마트스토어에서 카카오톡 테마 같은 디지털 상품이 팔리면 결제 즉시 구매자가 고른 채널로 다운로드 링크를 보내는 시스템을 만들고 운영한 기록입니다. 설계 판단과 트레이드오프, 실제로 터진 사고들, 라즈베리파이 운영, 회고를 정리합니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>Spring Boot</category>
      <category>JPA</category>
      <category>네이버 커머스 API</category>
      <category>라즈베리파이</category>
      <category>트러블 슈팅</category>
      <category>개발기</category>
      <pubDate>Tue, 29 Sep 2026 05:00:00 GMT</pubDate>
    </item>
    <item>
      <title>SNS에서 유행하는 AI 프롬프트, 빈칸만 채워 바로 쓰게 만들었다</title>
      <link>https://blog.solfany.com/blog/tech/promfeed-devlog</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/promfeed-devlog</guid>
      <description>인스타그램·틱톡·스레드·유튜브에서 화제가 된 AI 프롬프트를 모아 빈칸만 채우고 바로 쓰게 하는 사이트 프롬피드를 혼자 만든 기록입니다. 기획, 원칙, 기능, 그리고 연재 목차를 정리합니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>프롬피드</category>
      <category>개발기</category>
      <category>Next.js</category>
      <category>Supabase</category>
      <pubDate>Tue, 29 Sep 2026 01:00:00 GMT</pubDate>
    </item>
    <item>
      <title>기획 문서, 양식 고르고 채우면 한글·PDF로 나오게 만들었다</title>
      <link>https://blog.solfany.com/blog/tech/munseogo-devlog</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/munseogo-devlog</guid>
      <description>양식을 고르고 내용만 채우면 PDF·Word·한글·Markdown으로 바로 내보내는 웹앱 문서고를 혼자 만든 기록입니다. 쉬운 길이 있는데 가지 않은 결정들과 그 대가를 네 편에 나눠 정리합니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>문서고</category>
      <category>개발기</category>
      <category>React</category>
      <category>TypeScript</category>
      <category>Supabase</category>
      <pubDate>Tue, 29 Sep 2026 00:30:00 GMT</pubDate>
    </item>
    <item>
      <title>solfany.com 메인, Canvas 신경망으로 싹 엎었다</title>
      <link>https://blog.solfany.com/blog/tech/solfany-hub-neural-sphere</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/solfany-hub-neural-sphere</guid>
      <description>흩어진 사이트들을 한곳에 잇는 허브 solfany.com을 Canvas로 그린 구 모양 신경망으로 다시 만들었습니다. 3D 투영, 사이트 상태 확인, Lighthouse가 LCP를 못 잡던 문제, 글꼴 때문에 화면이 밀리던 문제까지 정리했습니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>Next.js</category>
      <category>Canvas</category>
      <category>인터랙션</category>
      <category>성능 최적화</category>
      <pubDate>Tue, 29 Sep 2026 00:20:00 GMT</pubDate>
    </item>
    <item>
      <title>블로그 324MB를 17MB로 줄였다 (CRA → Vite 갈아타기)</title>
      <link>https://blog.solfany.com/blog/tech/blog-renewal-vite-prerender</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/blog-renewal-vite-prerender</guid>
      <description>324MB였던 정적 파일과 517KB였던 첫 화면 JS를 덜어내고, Vite 이전, 빌드 때 미리 그리기, 머리말 기반 글 관리, 공유 미리보기까지 블로그를 통째로 손본 기록입니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>React</category>
      <category>Vite</category>
      <category>SEO</category>
      <category>성능 최적화</category>
      <category>블로그</category>
      <pubDate>Tue, 29 Sep 2026 00:10:00 GMT</pubDate>
    </item>
    <item>
      <title>React 하이드레이션 에러, 겪은 원인 5가지 정리했다</title>
      <link>https://blog.solfany.com/blog/troubleshooting/react-hydration-mismatch-prerender</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/troubleshooting/react-hydration-mismatch-prerender</guid>
      <description>빌드 때 미리 그린 블로그 페이지를 React가 이어받으면서 만난 하이드레이션 불일치 사례와 해결 방법을 정리했습니다. 쿼리 주소, 다크 모드, 공유 버튼, 날짜, 해시 링크까지.</description>
      <dc:creator>김솔비</dc:creator>
      <category>트러블 슈팅</category>
      <category>React</category>
      <category>SSR</category>
      <category>Hydration</category>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>GitHub Self-Hosted Runner를 활용한 실무 CI/CD 세팅하기</title>
      <link>https://blog.solfany.com/blog/tech/github-self-hosted-runner-cicd</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/github-self-hosted-runner-cicd</guid>
      <description>사내 프로젝트에 GitHub Actions와 Self-Hosted Runner를 도입하여 안전하고 효율적인 CI/CD 파이프라인을 구축한 경험을 공유합니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>CI/CD</category>
      <category>GitHub Actions</category>
      <category>DevOps</category>
      <pubDate>Wed, 10 Jun 2026 01:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/github-self-hosted-runner-cicd/github-self-hosted-runner-cicd2.webp" length="92590" type="image/webp"/>
    </item>
    <item>
      <title>이커머스 회원 탈퇴 데이터 보관 로직 설계</title>
      <link>https://blog.solfany.com/blog/tech/membership-withdrawal-policy</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/membership-withdrawal-policy</guid>
      <description>개인정보 보호법과 데이터 무결성 사이의 균형: Soft Delete와 비식별화 처리에 대한 기술적 고찰</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>이커머스</category>
      <category>개인정보보호</category>
      <category>아키텍처</category>
      <pubDate>Thu, 26 Mar 2026 07:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/membership-withdrawal/cover_v2.png" length="99954" type="image/png"/>
    </item>
    <item>
      <title>Swagger와 @RestControllerAdvice 간섭 이슈 해결</title>
      <link>https://blog.solfany.com/blog/troubleshooting/spring-swagger-advice-conflict</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/troubleshooting/spring-swagger-advice-conflict</guid>
      <description>Springdoc Swagger UI에 API 목록이 보이지 않는 문제의 원인과, @Hidden으로 전역 예외 처리기와의 충돌을 해결한 과정입니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>트러블 슈팅</category>
      <category>Spring Boot</category>
      <category>Swagger</category>
      <category>Troubleshooting</category>
      <pubDate>Tue, 24 Mar 2026 05:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/spring-swagger-advice-conflict/swagger.webp" length="11718" type="image/webp"/>
    </item>
    <item>
      <title>2025년 엔지니어링 회고: 점진적 성장에 대하여</title>
      <link>https://blog.solfany.com/blog/retrospective/developer-retrospective-2025</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/retrospective/developer-retrospective-2025</guid>
      <description>사내 서비스 운영, 커지는 팀, 인증 설계를 거치며 '어떻게 만들까'보다 '무엇을 책임질까'를 고민한 한 해의 기록입니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>회고록</category>
      <category>회고</category>
      <category>성장</category>
      <category>엔지니어링</category>
      <pubDate>Thu, 29 Jan 2026 04:21:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/developer-retrospective-2025/cover.webp" length="83282" type="image/webp"/>
    </item>
    <item>
      <title>MyBatis에서 JPA로: 현대적 영속성 레이어 전환기</title>
      <link>https://blog.solfany.com/blog/tech/jpa-query-methods-reflection</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/jpa-query-methods-reflection</guid>
      <description>Query Method, JPQL, Specification, QueryDSL을 거치며 정리한, 상황에 맞는 JPA 쿼리 방식 선택 기준입니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>JPA</category>
      <category>QueryDSL</category>
      <category>ORM</category>
      <pubDate>Mon, 26 Jan 2026 11:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/jpa-query-methods-reflection/cover.webp" length="65510" type="image/webp"/>
    </item>
    <item>
      <title>Spring Boot 전역 예외 처리와 에러 코드 설계</title>
      <link>https://blog.solfany.com/blog/tech/spring-global-exception-handling</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/spring-global-exception-handling</guid>
      <description>@RestControllerAdvice와 구조화된 ErrorCode를 통한 일관성 있는 API 인터페이스 유지 전략</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>Spring Boot</category>
      <category>API Design</category>
      <category>Refactoring</category>
      <pubDate>Sat, 06 Dec 2025 11:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/spring-global-exception-handling/spring-global-exception-handling.png" length="127615" type="image/png"/>
    </item>
    <item>
      <title>Transactional Outbox Pattern을 활용한 메시지 유실 방지</title>
      <link>https://blog.solfany.com/blog/tech/spring-transactional-outbox-mileage-design</link>
      <guid isPermaLink="true">https://blog.solfany.com/blog/tech/spring-transactional-outbox-mileage-design</guid>
      <description>회원가입과 마일리지 적립을 분리하고, Outbox 테이블로 트랜잭션 일관성과 재처리를 보장한 설계 기록입니다.</description>
      <dc:creator>김솔비</dc:creator>
      <category>기술 블로그</category>
      <category>아키텍처</category>
      <category>TransactionalOutbox</category>
      <category>Microservices</category>
      <pubDate>Sat, 06 Dec 2025 08:30:00 GMT</pubDate>
      <enclosure url="https://blog.solfany.com/images/blogPost/transactional-outbox-mileage-design/transactional-outbox-mileage-design.webp" length="58796" type="image/webp"/>
    </item>
  </channel>
</rss>
