<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>devvoyage</title>
    <link>https://devvoyage.io/blog/</link>
    <description>개발하며 배운 것들을 기록합니다.</description>
    <language>ko</language>
    <lastBuildDate>Tue, 04 Aug 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://devvoyage.io/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>블로그를 이전하며</title>
      <link>https://devvoyage.io/blog/moving-the-blog/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/moving-the-blog/</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>정적 블로그에는 Astro가 더 맞는 도구입니다. 그럼에도 Next.js로 옮긴 이유와, 그 대가로 지불하고 있는 184KB에 대하여.</description>
    </item>
    <item>
      <title>Using SVG sprites with React</title>
      <link>https://devvoyage.io/blog/svg-sprites-with-react/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/svg-sprites-with-react/</guid>
      <pubDate>Sat, 18 Jan 2025 00:00:00 GMT</pubDate>
      <description>아이콘마다 컴포넌트를 만드는 대신 하나의 스프라이트 SVG로 합치고, use로 필요한 것만 꺼내 쓰는 Icon 컴포넌트를 만들었습니다.</description>
    </item>
    <item>
      <title>Electron with React</title>
      <link>https://devvoyage.io/blog/electron-with-react/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/electron-with-react/</guid>
      <pubDate>Tue, 19 Nov 2024 00:00:00 GMT</pubDate>
      <description>사내 윈도우 앱을 React + Electron으로 만들면서 정리한 것들. 두 프로세스가 어떻게 나뉘고, contextBridge로 무엇을 얼마나 열어줄지.</description>
    </item>
    <item>
      <title>Next.js에서의 목록 가상화</title>
      <link>https://devvoyage.io/blog/list-virtualization-in-nextjs/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/list-virtualization-in-nextjs/</guid>
      <pubDate>Fri, 18 Oct 2024 00:00:00 GMT</pubDate>
      <description>무한 스크롤로 DOM이 계속 불어나 iOS 웹뷰가 백화됐습니다. react-virtuoso로 화면에 보이는 만큼만 남기니 노드 72개가 9개로, 메모리는 144MB에서 101MB로 줄었습니다.</description>
    </item>
    <item>
      <title>(MY)SQL JOIN 가이드 for Beginner</title>
      <link>https://devvoyage.io/blog/mysql-join-guide/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/mysql-join-guide/</guid>
      <pubDate>Fri, 16 Aug 2024 00:00:00 GMT</pubDate>
      <description>레거시 서비스를 유지보수하며 SQL을 직접 쓰다 정리한 JOIN 노트. 네 가지 종류가 무엇을 남기고 무엇을 버리는지, 실행 가능한 예제와 함께.</description>
    </item>
    <item>
      <title>window.open returns null in safari</title>
      <link>https://devvoyage.io/blog/window-open-returns-null-in-safari/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/window-open-returns-null-in-safari/</guid>
      <pubDate>Wed, 31 Jul 2024 00:00:00 GMT</pubDate>
      <description>모바일 Safari에서 새 탭이 열리지 않았습니다. 범인은 팝업 차단 설정이 아니라, 클릭과 window.open 사이에 끼어 있던 비동기 호출이었습니다.</description>
    </item>
    <item>
      <title>Dockerfile in Next.js</title>
      <link>https://devvoyage.io/blog/dockerfile-in-nextjs/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/dockerfile-in-nextjs/</guid>
      <pubDate>Mon, 20 May 2024 00:00:00 GMT</pubDate>
      <description>Vercel이 제공하는 Next.js Dockerfile 샘플을 한 스테이지씩 뜯어 읽었습니다. 왜 네 단계로 나뉘어 있고, 각 단계가 무엇을 남기는지.</description>
    </item>
    <item>
      <title>React Hook Form &amp; Zod으로 유연하게 폼 관리하기</title>
      <link>https://devvoyage.io/blog/react-hook-form-with-zod/</link>
      <guid isPermaLink="true">https://devvoyage.io/blog/react-hook-form-with-zod/</guid>
      <pubDate>Wed, 03 Apr 2024 00:00:00 GMT</pubDate>
      <description>useState로 쌓아 올린 폼 상태와 검증 로직을 걷어내고, 비제어 입력은 RHF에, 규칙은 zod 스키마 한 곳에 몰아넣었습니다.</description>
    </item>
  </channel>
</rss>
