<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>ff1451 블로그</title><description>문서화, 생각, 그리고 기술적 모험. 웹 개발과 프론트엔드 엔지니어링에 집중합니다.</description><link>https://ff1451.github.io/</link><language>ko-kr</language><item><title>Jenkins + EC2 빌드 서버를 GitHub Actions로 교체한 이유 — 월 33,500원과 간헐적 빌드 실패</title><link>https://ff1451.github.io/posts/jenkins-ec2-to-github-actions/</link><guid isPermaLink="true">https://ff1451.github.io/posts/jenkins-ec2-to-github-actions/</guid><description>CPU 98% 유휴 상태인 t3a.small 서버가 Next.js 빌드에서 반복 실패한 원인을 분석하고, 이벤트 기반 GitHub Actions CI/CD로 전환한 과정을 정리한다.</description><pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate><category>ci-cd</category><category>github-actions</category><category>jenkins</category><category>aws</category></item><item><title>Biome `noUselessReturn` 기여기: AST 구현과 `.same()`에서 `.inspired()`로 정리한 이유</title><link>https://ff1451.github.io/posts/biome-no-useless-return/</link><guid isPermaLink="true">https://ff1451.github.io/posts/biome-no-useless-return/</guid><description>ESLint `no-useless-return`을 Biome nursery 룰로 포팅하면서 AST 기반 tail position 판별, `.inspired()` 매핑 선택, 26개 스냅샷 테스트로 검증한 과정을 정리했다.</description><pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate><category>biome</category><category>rust</category><category>lint</category><category>opensource</category></item><item><title>Barrel import 제거가 _app 공통 청크를 줄인 이유</title><link>https://ff1451.github.io/posts/barrel-import-app-chunk-reduction/</link><guid isPermaLink="true">https://ff1451.github.io/posts/barrel-import-app-chunk-reduction/</guid><description>`export * as` 구조가 공통 진입점에서 그래프 입구를 넓히는 원리와, 직접 import 전환으로 shared 청크를 줄인 경로를 Webpack 분석 단계 기준으로 정리합니다.</description><pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate><category>nextjs</category><category>webpack</category><category>tree-shaking</category><category>performance</category><category>typescript</category></item><item><title>CSS scroll-target-group으로 목차 하이라이트 구현하기</title><link>https://ff1451.github.io/posts/css-scroll-target-group/</link><guid isPermaLink="true">https://ff1451.github.io/posts/css-scroll-target-group/</guid><description>scroll-target-group로 TOC 하이라이트를 단순화하고, 폴백으로 호환성을 유지한 과정</description><pubDate>Sun, 15 Feb 2026 00:00:00 GMT</pubDate><category>css</category></item><item><title>Notion API로 로깅 함수 자동 생성하기</title><link>https://ff1451.github.io/posts/notion-logging-automation/</link><guid isPermaLink="true">https://ff1451.github.io/posts/notion-logging-automation/</guid><description>DA의 Notion 로깅 명세서를 읽어 TypeScript 로깅 훅을 자동 생성하는 CLI 파이프라인 구현 경험을 공유합니다.</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate><category>notion-api</category><category>typescript</category><category>automation</category></item><item><title>Yarn 6 Deep Dive: Rust로 다시 쓴 패키지 매니저</title><link>https://ff1451.github.io/posts/yarn-6-preview-deep-dive/</link><guid isPermaLink="true">https://ff1451.github.io/posts/yarn-6-preview-deep-dive/</guid><description>TypeScript Berry와 Rust Yarn 6의 실제 코드를 비교하며 성능 개선의 원리와 아키텍처 변화를 분석합니다.</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate><category>yarn</category><category>rust</category><category>javascript</category><category>package-manager</category></item><item><title>SharedWorker·IndexedDB로 멀티 탭 채팅 최적화하기</title><link>https://ff1451.github.io/posts/sharedworker-indexeddb-chat/</link><guid isPermaLink="true">https://ff1451.github.io/posts/sharedworker-indexeddb-chat/</guid><description>탭별 중복 WebSocket 연결 문제를 SharedWorker로 통합하고, IndexedDB 캐시로 새로고침·오프라인에서도 대화 내역을 유지한 구현 과정을 정리했습니다.</description><pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate><category>indexeddb</category><category>sharedworker</category><category>websocket</category></item><item><title>Prettier VS Code: Yarn PnP SDK 모듈 로딩 버그를 고치고 머지하기까지</title><link>https://ff1451.github.io/posts/opensource-prettier-vscode/</link><guid isPermaLink="true">https://ff1451.github.io/posts/opensource-prettier-vscode/</guid><description>파일 경로(.cjs)를 디렉토리로 잘못 해석해 발생한 Prettier 로딩 실패 원인을 분석하고, 경로 보정 로직과 통합 테스트 추가로 해결한 과정을 정리했습니다.</description><pubDate>Tue, 20 Jan 2026 00:00:00 GMT</pubDate><category>vscode</category><category>prettier</category><category>yarn</category><category>opensource</category></item></channel></rss>