<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>설진영 블로그</title>
    <link>https://jinyeong.seol.pro/blogs</link>
    <description>백엔드와 인프라, 보안을 깊이 있게 다룹니다.</description>
    <language>ko</language>
    <lastBuildDate>Mon, 01 Jun 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://jinyeong.seol.pro/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>무한히 반복되는 일정을 어떻게 저장할까? — 요일 비트마스크와 최적화</title>
      <link>https://jinyeong.seol.pro/blogs/recurring-routine-bitmask</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/recurring-routine-bitmask</guid>
      <pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate>
      <category>Spring</category>
      <category>JPA</category>
      <category>MySQL</category>
      <category>QueryDSL</category>
      <category>Database</category>
      <description><![CDATA[무한히 반복되는 루틴을 유한한 비용으로 저장하는 방법. 규칙은 저장하고 인스턴스는 조회 시점에 계산하는 지연 합성을 7비트 요일 비트마스크와 JPA Converter로 풀어낸 과정, 그리고 그 과정에서 마주한 동시성과 확장성 트레이드오프 정리.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/recurring-routine-bitmask.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/recurring-routine-bitmask.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/recurring-routine-bitmask.png" type="image/png" length="71799" />
    </item>
    <item>
      <title>CVE-2026-40966: Spring AI VectorStoreChatMemoryAdvisor 대화 격리 우회로 인한 cross-tenant 메모리 노출</title>
      <link>https://jinyeong.seol.pro/blogs/cve-2026-40966</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/cve-2026-40966</guid>
      <pubDate>Mon, 27 Apr 2026 00:00:00 GMT</pubDate>
      <category>Spring AI</category>
      <category>CVE</category>
      <category>Security</category>
      <category>Injection</category>
      <category>RAG</category>
      <description><![CDATA[Spring AI VectorStoreChatMemoryAdvisor가 클라이언트에서 받은 conversationId를 이스케이프 없이 필터 표현식에 결합해 발생하는 Filter Expression Injection. 필터가 무력화되면 VectorStore에 저장된 다른 사용자의 대화 전체가 응답 컨텍스트로 들어올 수 있는 cross-tenant 메모리 노출 취약점 분석.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/cve-2026-40966.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/cve-2026-40966.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/cve-2026-40966.png" type="image/png" length="1111537" />
    </item>
    <item>
      <title>CVE-2026-22751: Spring Security JdbcOneTimeTokenService TOCTOU로 인한 일회용 토큰 재사용</title>
      <link>https://jinyeong.seol.pro/blogs/cve-2026-22751</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/cve-2026-22751</guid>
      <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
      <category>Spring Security</category>
      <category>CVE</category>
      <category>Security</category>
      <category>TOCTOU</category>
      <description><![CDATA[Spring Security의 JdbcOneTimeTokenService.consume()에서 SELECT와 DELETE를 분리 실행하고 rowcount를 버려 발생하는 TOCTOU 취약점. 일회용 토큰으로 세션 두 개가 발급되는 과정과 패치 분석.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/cve-2026-22751.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/cve-2026-22751.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/cve-2026-22751.png" type="image/png" length="1224425" />
    </item>
    <item>
      <title>Spring 프로젝트에 하네스 엔지니어링 적용하기</title>
      <link>https://jinyeong.seol.pro/blogs/harness-engineering</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/harness-engineering</guid>
      <pubDate>Mon, 16 Mar 2026 00:00:00 GMT</pubDate>
      <category>AI</category>
      <category>Harness Engineering</category>
      <category>Spring Boot</category>
      <category>Claude Code</category>
      <description><![CDATA[AI 에이전트가 잘못할 수 없는 환경을 만드는 하네스 엔지니어링. Constrain·Inform·Verify·Correct의 4원칙을 Spring Boot 프로젝트에 적용한 실전 기록.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/harness-engineering.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/harness-engineering.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/harness-engineering.png" type="image/png" length="309258" />
    </item>
    <item>
      <title>ArchUnit으로 아키텍처 규칙 검증하기</title>
      <link>https://jinyeong.seol.pro/blogs/archunit</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/archunit</guid>
      <pubDate>Mon, 28 Apr 2025 00:00:00 GMT</pubDate>
      <category>Java</category>
      <category>ArchUnit</category>
      <category>Testing</category>
      <category>Architecture</category>
      <description><![CDATA[문서로만 존재하는 아키텍처 규칙을 코드로 검증하기. ArchUnit으로 레이어·네이밍·애노테이션 컨벤션을 자동화한 실제 프로젝트 적용기.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/archunit.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/archunit.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/archunit.png" type="image/png" length="87574" />
    </item>
    <item>
      <title>MySQL의 데드락 탐지는 왜 느릴까?</title>
      <link>https://jinyeong.seol.pro/blogs/mysql-deadlock</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/mysql-deadlock</guid>
      <pubDate>Tue, 25 Mar 2025 00:00:00 GMT</pubDate>
      <category>MySQL</category>
      <category>InnoDB</category>
      <category>Database</category>
      <category>Performance</category>
      <description><![CDATA[구글이 MySQL의 데드락 탐지를 비활성화한 이유 — InnoDB 소스 코드를 따라가며 살펴본 탐지 알고리즘의 구조와 비용.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/mysql-deadlock.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/mysql-deadlock.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/mysql-deadlock.png" type="image/png" length="211493" />
    </item>
    <item>
      <title>Java 21: 새로운 LTS 버전의 주요 기능 톺아보기</title>
      <link>https://jinyeong.seol.pro/blogs/java-21</link>
      <guid isPermaLink="true">https://jinyeong.seol.pro/blogs/java-21</guid>
      <pubDate>Wed, 16 Oct 2024 00:00:00 GMT</pubDate>
      <category>Java</category>
      <category>JDK 21</category>
      <category>LTS</category>
      <category>Virtual Threads</category>
      <description><![CDATA[JDK 17 이후부터 JDK 21까지 통합된 JEP 중 개발자 코드 작성에 직접 영향을 주는 레코드 패턴, switch 패턴 매칭, 순차 컬렉션, 가상 스레드 정리.]]></description>
      <media:content url="https://jinyeong.seol.pro/feed/java-21.png" medium="image" type="image/png" />
      <media:thumbnail url="https://jinyeong.seol.pro/feed/java-21.png" />
      <enclosure url="https://jinyeong.seol.pro/feed/java-21.png" type="image/png" length="26354" />
    </item>
  </channel>
</rss>
