<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>HooneyLog</title>
    <link>https://hooneylog.com</link>
    <description>HooneyLog Blog based on Notion API</description>
    <language>ko</language>
    <atom:link href="https://hooneylog.com/feed.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>AI는 정말 우리를 빠르게 만들었나 — 숙련 개발자가 19% 느려진 이유</title>
      <link>https://hooneylog.com/post/38659437-52af-81db-9afb-c50b65477260</link>
      <guid isPermaLink="true">https://hooneylog.com/post/38659437-52af-81db-9afb-c50b65477260</guid>
      <description>개발자의 84%가 AI 코딩 도구를 쓰지만 숙련 개발자는 오히려 19% 느려진 2025년 데이터로 AI 코딩의 역설을 짚어봅니다.</description>
      <category>Artificial Intelligence</category>
      <pubDate>Sun, 21 Jun 2026 05:50:00 GMT</pubDate>
    </item>
    <item>
      <title>GitHub Actions에서 Blacksmith까지: CI 러너를 두 번 갈아탄 이야기</title>
      <link>https://hooneylog.com/post/38259437-52af-811b-8fc2-e504b3968443</link>
      <guid isPermaLink="true">https://hooneylog.com/post/38259437-52af-811b-8fc2-e504b3968443</guid>
      <description>비싸고 느린 GitHub Actions를 개선하려 GCP self-hosted runner를 거쳐 Blacksmith로 CI 러너를 두 번 이관한 회고입니다.</description>
      <category>Backend</category>
      <pubDate>Wed, 17 Jun 2026 22:32:00 GMT</pubDate>
    </item>
    <item>
      <title>Git flow를 버리고 trunk 기반 개발로 전환한 이유</title>
      <link>https://hooneylog.com/post/38259437-52af-8143-97d3-e9bc20ba4f3d</link>
      <guid isPermaLink="true">https://hooneylog.com/post/38259437-52af-8143-97d3-e9bc20ba4f3d</guid>
      <description>배포가 느리고 브랜치 전략이 과해 Git flow를 trunk 기반 개발로 바꾸며 짧은 브랜치와 직접 만든 피처 플래그로 해결한 회고입니다.</description>
      <category>Backend</category>
      <pubDate>Wed, 17 Jun 2026 14:03:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS vs Spring Boot: 스레드 모델과 I/O로 보는 아키텍처 차이</title>
      <link>https://hooneylog.com/post/33359437-52af-8122-8f1f-f214dc3af79f</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33359437-52af-8122-8f1f-f214dc3af79f</guid>
      <description>NestJS와 Spring Boot의 차이를 스레드 모델과 블로킹/논블로킹 I/O 관점에서 비교하고 프레임워크 선택 기준을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Mon, 30 Mar 2026 01:19:00 GMT</pubDate>
    </item>
    <item>
      <title>[RxJS] 비동기 데이터의 &apos;수도관&apos; 설계하기: 기초부터 실무 패턴까지</title>
      <link>https://hooneylog.com/post/33259437-52af-81b7-851a-dfe9083a6eca</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33259437-52af-81b7-851a-dfe9083a6eca</guid>
      <description>RxJS의 Observable과 Operator를 정수기에 비유해 설명하고 디바운스, 재시도 등 실무 비동기 패턴을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 29 Mar 2026 11:12:00 GMT</pubDate>
    </item>
    <item>
      <title>[NestJS] 미들웨어부터 예외 필터까지: 요청 라이프사이클 심층 분석</title>
      <link>https://hooneylog.com/post/33259437-52af-8111-af61-d9fedd03ebdd</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33259437-52af-8111-af61-d9fedd03ebdd</guid>
      <description>NestJS 요청 라이프사이클을 미들웨어, 가드, 인터셉터, 파이프, 예외 필터 단계로 나누어 각 계층의 역할과 차이를 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 29 Mar 2026 10:46:00 GMT</pubDate>
    </item>
    <item>
      <title>[NestJS] 요청 라이프사이클 완전 정리: 미들웨어부터 인터셉터까지</title>
      <link>https://hooneylog.com/post/33259437-52af-81be-b8b0-d84a9aa13225</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33259437-52af-81be-b8b0-d84a9aa13225</guid>
      <description>NestJS 요청 라이프사이클을 오피스 빌딩 비유로 풀어 미들웨어, 가드, 인터셉터, 파이프의 역할과 실행 순서를 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 29 Mar 2026 10:44:00 GMT</pubDate>
    </item>
    <item>
      <title>[TS/JS] 직렬화와 역직렬화 깊게 파보기: NestJS와 Next.js 예시로 이해하기</title>
      <link>https://hooneylog.com/post/33259437-52af-818a-8e30-ef3b3238155f</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33259437-52af-818a-8e30-ef3b3238155f</guid>
      <description>메모리 객체가 네트워크나 디스크를 넘나들 때 일어나는 직렬화와 역직렬화 과정을 NestJS와 Next.js 예시로 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 29 Mar 2026 10:12:00 GMT</pubDate>
    </item>
    <item>
      <title>[NestJS] Pipe 완벽 가이드: 데이터 검증과 변환</title>
      <link>https://hooneylog.com/post/33259437-52af-8150-bc28-e5ef09b91e38</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33259437-52af-8150-bc28-e5ef09b91e38</guid>
      <description>NestJS Pipe로 입력 데이터를 변환하고 검증하는 방법을 내장 파이프, DTO 기반 ValidationPipe, 커스텀 파이프로 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 29 Mar 2026 10:10:00 GMT</pubDate>
    </item>
    <item>
      <title>하네스 엔지니어링(Harness Engineering): AI 에이전트 실행 환경 설계와 CAR 모델</title>
      <link>https://hooneylog.com/post/33159437-52af-81de-9fb0-e2a28289d706</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81de-9fb0-e2a28289d706</guid>
      <description>프롬프트를 넘어 AI 에이전트의 실행 환경을 설계하는 하네스 엔지니어링 개념과 CAR 모델, 그리고 실무용 AGENTS.md·CLAUDE.md 템플릿을 정리합니다.</description>
      <category>Artificial Intelligence</category>
      <pubDate>Sat, 28 Mar 2026 22:38:00 GMT</pubDate>
    </item>
    <item>
      <title>롱 컨텍스트 시대에도 RAG가 필요한 이유와 실무 아키텍처</title>
      <link>https://hooneylog.com/post/33159437-52af-81ec-80b8-c3bc92872d63</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81ec-80b8-c3bc92872d63</guid>
      <description>롱 컨텍스트 모델이 보편화된 이후에도 RAG가 필요한 이유와 벡터 검색, 인제스션 파이프라인, 하이브리드 검색 등 실무 아키텍처를 정리합니다.</description>
      <category>Artificial Intelligence</category>
      <pubDate>Sat, 28 Mar 2026 21:53:00 GMT</pubDate>
    </item>
    <item>
      <title>Supabase Client와 쿼리 빌더의 차이: 프로토콜과 보안 모델까지 다른 두 세계</title>
      <link>https://hooneylog.com/post/33159437-52af-8176-9b1b-dc2be13cf6fd</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8176-9b1b-dc2be13cf6fd</guid>
      <description>Supabase Client와 전통적 쿼리 빌더가 통신 프로토콜부터 보안 모델까지 어떻게 다른지 비교합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 10:59:00 GMT</pubDate>
    </item>
    <item>
      <title>트랜잭션과 격리 수준(Isolation Level): ACID부터 Prisma 구현까지</title>
      <link>https://hooneylog.com/post/33159437-52af-81d3-ace3-d45e8483dc8d</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81d3-ace3-d45e8483dc8d</guid>
      <description>트랜잭션의 ACID 원칙과 4가지 격리 수준을 이해하고 Prisma로 안전하게 트랜잭션을 처리하는 방법을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 10:53:00 GMT</pubDate>
    </item>
    <item>
      <title>DB 성능 최적화: N+1 문제부터 데드락까지 정리</title>
      <link>https://hooneylog.com/post/33159437-52af-81bb-8171-c25a0b477be1</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81bb-8171-c25a0b477be1</guid>
      <description>ORM 사용 시 자주 발생하는 N+1 문제, 카테시안 곱, 데드락의 원인을 진단하고 해결하는 방법을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 10:38:00 GMT</pubDate>
    </item>
    <item>
      <title>백엔드 개발자의 영원한 고민: Raw SQL, Query Builder, ORM 완벽 비교 및 레포지토리 패턴</title>
      <link>https://hooneylog.com/post/33159437-52af-81e7-9390-f34344defc43</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81e7-9390-f34344defc43</guid>
      <description>Raw SQL, Query Builder, ORM의 장단점을 비교하고 레포지토리 패턴으로 데이터 접근 코드를 유연하게 설계하는 방법을 소개합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 10:26:00 GMT</pubDate>
    </item>
    <item>
      <title>Prisma에는 임베디드 엔티티가 없다? 복합 객체를 다루는 최선의 방법</title>
      <link>https://hooneylog.com/post/33159437-52af-8101-af63-ccf9569ba52f</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8101-af63-ccf9569ba52f</guid>
      <description>Prisma에서 임베디드 엔티티 대신 1:1 관계와 JSONB 타입으로 복합 객체를 다루는 실무 방법을 비교합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 10:08:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS 아키텍처 가이드: 3-Layer부터 CQRS까지 실무 패턴 총정리</title>
      <link>https://hooneylog.com/post/33159437-52af-8114-b261-fd2e2d724e7c</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8114-b261-fd2e2d724e7c</guid>
      <description>NestJS에서 3-Layer, CQRS, 헥사고날 아키텍처의 특징과 트레이드오프를 비교하고 상황에 맞는 선택 전략을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 09:53:00 GMT</pubDate>
    </item>
    <item>
      <title>Supabase RLS 완벽 가이드: anon key가 털려도 내 DB가 안전한 이유</title>
      <link>https://hooneylog.com/post/33159437-52af-8114-a249-dcb5f88e33a6</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8114-a249-dcb5f88e33a6</guid>
      <description>Supabase의 anon key 노출 위험을 RLS(행 수준 보안) 정책으로 막는 원리와 실무 패턴을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 09:28:00 GMT</pubDate>
    </item>
    <item>
      <title>Prisma ORM 완벽 가이드: 스키마 설계부터 실무 쿼리까지 총정리</title>
      <link>https://hooneylog.com/post/33159437-52af-8182-a953-e6c88c0217a4</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8182-a953-e6c88c0217a4</guid>
      <description>Prisma의 스키마 설계, 관계 설정, 실무 쿼리 문법과 트랜잭션 활용법까지 한 번에 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 09:24:00 GMT</pubDate>
    </item>
    <item>
      <title>TypeORM vs Prisma: Supabase 환경에서의 최적의 ORM 선택과 운영 전략</title>
      <link>https://hooneylog.com/post/33159437-52af-8178-b03f-fc1efe224ae0</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8178-b03f-fc1efe224ae0</guid>
      <description>Supabase 환경에서 TypeORM과 Prisma를 비교하고 연결 풀링, RLS, 마이그레이션 운영 전략을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 09:17:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS 환경 변수 검증의 업계 표준: Joi vs class-validator</title>
      <link>https://hooneylog.com/post/33159437-52af-81b5-be2d-d2f51ab8bb62</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81b5-be2d-d2f51ab8bb62</guid>
      <description>NestJS에서 Joi와 class-validator로 환경 변수를 부트스트랩 단계에 검증해 Fail Fast를 구현하는 방법을 비교합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 09:00:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS에서 직렬화와 역직렬화 완벽 가이드: DTO와 class-transformer의 마법</title>
      <link>https://hooneylog.com/post/33159437-52af-8105-99d6-dc928c616883</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8105-99d6-dc928c616883</guid>
      <description>NestJS에서 ValidationPipe와 ClassSerializerInterceptor로 요청 역직렬화와 응답 직렬화를 처리하는 방법을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 08:38:00 GMT</pubDate>
    </item>
    <item>
      <title>검색 성능의 혁신: Elasticsearch 도입으로 검색 지연 시간 40배 개선하기</title>
      <link>https://hooneylog.com/post/33159437-52af-81de-ae73-c967fbd3f5b3</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81de-ae73-c967fbd3f5b3</guid>
      <description>관계형 DB의 텍스트 검색 한계를 Elasticsearch 역색인 구조로 해결해 검색 속도를 2초에서 50ms로 단축한 사례를 공유합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 08:01:00 GMT</pubDate>
    </item>
    <item>
      <title>Next.js 렌더링 전략 완벽 가이드: SSR, SSG, ISR부터 RSC까지</title>
      <link>https://hooneylog.com/post/33159437-52af-8125-afb4-f12da47ca2bb</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8125-afb4-f12da47ca2bb</guid>
      <description>Next.js의 SSR, SSG, ISR 렌더링 전략과 서버 컴포넌트(RSC)의 동작 원리를 비교하고 상황별 선택 기준을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 28 Mar 2026 07:54:00 GMT</pubDate>
    </item>
    <item>
      <title>Supabase와 PostgreSQL, 그리고 Prisma: 나에게 맞는 데이터베이스 전략 선택하기</title>
      <link>https://hooneylog.com/post/33159437-52af-81d5-b261-eb01fbd435cc</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-81d5-b261-eb01fbd435cc</guid>
      <description>Supabase(BaaS)와 PostgreSQL의 관계를 이해하고, SQL 직접 사용과 Prisma ORM 활용을 비교해 프로젝트에 맞는 데이터베이스 전략을 선택하는 방법을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 07:37:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS 요청 검증의 모든 것: DTO와 Class Validator, Transformer 활용기</title>
      <link>https://hooneylog.com/post/33159437-52af-8061-b0fa-c4da8a292c12</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-8061-b0fa-c4da8a292c12</guid>
      <description>NestJS 환경에서 DTO 패턴과 class-validator, class-transformer를 도입해 클라이언트 요청 페이로드를 안전하게 검증하고 변환하는 방법을 다룹니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 06:58:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS 시작하기: 컨트롤러, 서비스, 그리고 모듈을 활용한 탄탄한 설계</title>
      <link>https://hooneylog.com/post/33159437-52af-80fc-9698-c41d56343f39</link>
      <guid isPermaLink="true">https://hooneylog.com/post/33159437-52af-80fc-9698-c41d56343f39</guid>
      <description>구조화된 아키텍처를 제공하는 NestJS의 핵심 개념인 Controller, Service, Module과 의존성 주입(DI)을 활용해 확장 가능한 API를 구축하는 방법을 알아봅니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 Mar 2026 06:56:00 GMT</pubDate>
    </item>
    <item>
      <title>Nest.js에서 Shell Script로 모듈, 컨트롤러, 서비스 자동 생성하기</title>
      <link>https://hooneylog.com/post/17159437-52af-8064-ad65-c8a922eb9d75</link>
      <guid isPermaLink="true">https://hooneylog.com/post/17159437-52af-8064-ad65-c8a922eb9d75</guid>
      <description>Nest.js CLI 명령을 Shell Script로 묶어 모듈, 컨트롤러, 서비스 파일을 한 번에 자동 생성해 개발 생산성을 높이는 방법을 소개합니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 04 Jan 2025 16:08:00 GMT</pubDate>
    </item>
    <item>
      <title>Axios 인터셉터로 응답 및 요청 관리하기</title>
      <link>https://hooneylog.com/post/16559437-52af-8088-8366-c644dc3296d4</link>
      <guid isPermaLink="true">https://hooneylog.com/post/16559437-52af-8088-8366-c644dc3296d4</guid>
      <description>Axios 인터셉터로 네트워크 요청과 응답을 가로채 공통 헤더 추가, 응답 표준화, 에러 처리, 토큰 갱신을 일괄 관리하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Mon, 23 Dec 2024 09:28:00 GMT</pubDate>
    </item>
    <item>
      <title>의존성 주입과 IoC컨테이너</title>
      <link>https://hooneylog.com/post/16259437-52af-80cd-9a8a-c3274a0c652a</link>
      <guid isPermaLink="true">https://hooneylog.com/post/16259437-52af-80cd-9a8a-c3274a0c652a</guid>
      <description>Nest.js의 핵심 개념인 의존성 주입(DI)과 IoC 컨테이너의 정의, 역할, 동작 방식을 예제와 함께 알아봅니다.</description>
      <category>Backend</category>
      <pubDate>Fri, 20 Dec 2024 12:17:00 GMT</pubDate>
    </item>
    <item>
      <title>NestJS 구조 파헤치기: Module, Controller, Service의 역할과 흐름</title>
      <link>https://hooneylog.com/post/16259437-52af-803f-9524-c1ed35ae7b28</link>
      <guid isPermaLink="true">https://hooneylog.com/post/16259437-52af-803f-9524-c1ed35ae7b28</guid>
      <description>NestJS의 핵심 구성요소인 Module, Controller, Service의 역할과 요청 처리 흐름을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Fri, 20 Dec 2024 12:17:00 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 컴파일러 심층 분석: 소스 코드가 기계어가 되기까지의 여정</title>
      <link>https://hooneylog.com/post/14959437-52af-8004-98fa-da13e46b0faf</link>
      <guid isPermaLink="true">https://hooneylog.com/post/14959437-52af-8004-98fa-da13e46b0faf</guid>
      <description>V8 같은 현대 JavaScript 엔진이 소스 코드를 토큰화, AST 생성, 바이트코드 변환, JIT 컴파일을 거쳐 기계어로 실행하는 과정을 심층 분석합니다.</description>
      <category>Frontend</category>
      <pubDate>Mon, 25 Nov 2024 06:04:00 GMT</pubDate>
    </item>
    <item>
      <title>React 18 핵심 가이드: 동시성 렌더링으로 완성하는 사용자 경험</title>
      <link>https://hooneylog.com/post/14859437-52af-808c-aa12-d6e47c10893a</link>
      <guid isPermaLink="true">https://hooneylog.com/post/14859437-52af-808c-aa12-d6e47c10893a</guid>
      <description>React 18의 동시성 렌더링과 자동 배칭, useTransition, useId 등 핵심 기능으로 UI 응답성과 사용자 경험을 개선하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 24 Nov 2024 04:13:00 GMT</pubDate>
    </item>
    <item>
      <title>서버리스 아키텍처: 인프라 관리의 부담을 줄이는 현대적 웹 개발 패러다임</title>
      <link>https://hooneylog.com/post/14659437-52af-80f8-8e9f-d0780d3cb54f</link>
      <guid isPermaLink="true">https://hooneylog.com/post/14659437-52af-80f8-8e9f-d0780d3cb54f</guid>
      <description>서버 관리 부담을 줄이는 서버리스(FaaS/BaaS) 모델의 동작 원리와 AWS Lambda 구현, 콜드 스타트 대응, 장단점을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Fri, 22 Nov 2024 05:06:00 GMT</pubDate>
    </item>
    <item>
      <title>React Native 새 아키텍처 이해하기: 브릿지를 대체한 JSI</title>
      <link>https://hooneylog.com/post/81801d58-77ce-4997-850b-700798e06c0b</link>
      <guid isPermaLink="true">https://hooneylog.com/post/81801d58-77ce-4997-850b-700798e06c0b</guid>
      <description>React Native의 기존 브릿지 구조가 가진 성능 한계를, 새 아키텍처의 JSI와 Fabric, Turbo Modules가 어떻게 해결하는지 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 16 Nov 2022 13:48:00 GMT</pubDate>
    </item>
    <item>
      <title>Web Worker로 무거운 로직을 다른 스레드에서 처리하기</title>
      <link>https://hooneylog.com/post/84aa5bca-ae70-4cb8-b7d0-83d28da2dcfa</link>
      <guid isPermaLink="true">https://hooneylog.com/post/84aa5bca-ae70-4cb8-b7d0-83d28da2dcfa</guid>
      <description>Web Worker로 무거운 로직을 별도 스레드에서 처리해 브라우저 블로킹을 막는 방법을 소개합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 11 Sep 2022 00:12:00 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 이벤트 주도 프로그래밍: addEventListener의 심화 옵션과 효율적인 관리 전략</title>
      <link>https://hooneylog.com/post/088ecb63-57f8-4722-84ff-949031ab43b5</link>
      <guid isPermaLink="true">https://hooneylog.com/post/088ecb63-57f8-4722-84ff-949031ab43b5</guid>
      <description>addEventListener의 capture, once, passive 옵션과 AbortController로 이벤트를 효율적으로 관리하는 방법을 다룹니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 10 Sep 2022 22:17:00 GMT</pubDate>
    </item>
    <item>
      <title>CSS 선택자 명시도(Selector Specificity): 우선순위 전쟁에서 승리하는 방법</title>
      <link>https://hooneylog.com/post/13c3ade6-178c-4911-9658-ca5ed15aa1c1</link>
      <guid isPermaLink="true">https://hooneylog.com/post/13c3ade6-178c-4911-9658-ca5ed15aa1c1</guid>
      <description>CSS 명시도 점수 체계를 이해하고 !important 남용 없이 스타일 충돌을 해결하는 전략을 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 10 Sep 2022 08:25:00 GMT</pubDate>
    </item>
    <item>
      <title>속성 선택자</title>
      <link>https://hooneylog.com/post/df59a5ac-e960-493d-b885-b7af5ebcfadc</link>
      <guid isPermaLink="true">https://hooneylog.com/post/df59a5ac-e960-493d-b885-b7af5ebcfadc</guid>
      <description>속성 선택자에서 구문(=, *=, $=, ^=)을 사용해 더 유연하게 요소를 선택하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 10 Sep 2022 08:07:00 GMT</pubDate>
    </item>
    <item>
      <title>nth-of-type vs nth-child: 차이점 정리</title>
      <link>https://hooneylog.com/post/563274e0-3b98-41fd-896d-781a01c23628</link>
      <guid isPermaLink="true">https://hooneylog.com/post/563274e0-3b98-41fd-896d-781a01c23628</guid>
      <description>자식 요소를 선택하는 가상 클래스 nth-of-type과 nth-child의 차이를 예시로 비교합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 10 Sep 2022 07:06:00 GMT</pubDate>
    </item>
    <item>
      <title>CSS 결합자(Combinators) 완벽 정리</title>
      <link>https://hooneylog.com/post/5d98b120-e1d1-448c-b4e7-cd748044406e</link>
      <guid isPermaLink="true">https://hooneylog.com/post/5d98b120-e1d1-448c-b4e7-cd748044406e</guid>
      <description>CSS의 네 가지 결합자(공백, &gt;, +, ~)가 요소 간 관계를 어떻게 나타내는지 예시로 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 09 Sep 2022 21:33:00 GMT</pubDate>
    </item>
    <item>
      <title>웹접근성 향상시키 (feat : WAI-ARIA)</title>
      <link>https://hooneylog.com/post/70ef6440-2243-413e-9ff1-07383b8e86d3</link>
      <guid isPermaLink="true">https://hooneylog.com/post/70ef6440-2243-413e-9ff1-07383b8e86d3</guid>
      <description>Accessibility Tree와 WAI-ARIA 속성을 활용해 웹 접근성을 향상시키는 방법을 소개합니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 09 Sep 2022 12:17:00 GMT</pubDate>
    </item>
    <item>
      <title>시맨틱 HTML(Semantic HTML)이란 무엇인가?</title>
      <link>https://hooneylog.com/post/48bf4dc0-efab-42f9-9b18-add31677adc8</link>
      <guid isPermaLink="true">https://hooneylog.com/post/48bf4dc0-efab-42f9-9b18-add31677adc8</guid>
      <description>의미 있는 시맨틱 태그를 사용해 웹 접근성과 SEO를 높이는 방법과 주요 태그들을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 09 Sep 2022 10:31:00 GMT</pubDate>
    </item>
    <item>
      <title>Event Target Class 만들어보기</title>
      <link>https://hooneylog.com/post/dd038526-bcc5-43f9-aa3a-290923f8b884</link>
      <guid isPermaLink="true">https://hooneylog.com/post/dd038526-bcc5-43f9-aa3a-290923f8b884</guid>
      <description>DOM의 EventTarget과 유사한 클래스를 직접 구현해 이벤트 등록, 삭제, dispatch를 다뤄봅니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 31 Aug 2022 13:01:00 GMT</pubDate>
    </item>
    <item>
      <title>React 커스텀 훅: useStateWithHistory로 상태 이력 관리하기 (Undo/Redo 구현)</title>
      <link>https://hooneylog.com/post/14524e32-ab4c-4569-b074-3b8495144e82</link>
      <guid isPermaLink="true">https://hooneylog.com/post/14524e32-ab4c-4569-b074-3b8495144e82</guid>
      <description>useRef와 커스텀 훅으로 상태 이력을 관리해 Undo/Redo 기능을 구현하는 방법을 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Mon, 29 Aug 2022 11:41:00 GMT</pubDate>
    </item>
    <item>
      <title>useReducer로 만드는 useFetch 커스텀 훅</title>
      <link>https://hooneylog.com/post/5c4798ae-76aa-4cb6-8d11-43fab3ccd109</link>
      <guid isPermaLink="true">https://hooneylog.com/post/5c4798ae-76aa-4cb6-8d11-43fab3ccd109</guid>
      <description>서버 데이터를 fetch하면서 로딩과 에러 상태를 함께 관리하는 useFetch 커스텀 훅을, 기본 버전과 useReducer 버전 두 가지로 만들어 봅니다.</description>
      <category>Frontend</category>
      <pubDate>Mon, 29 Aug 2022 11:11:00 GMT</pubDate>
    </item>
    <item>
      <title>ol 요소의 counter 속성 사용법</title>
      <link>https://hooneylog.com/post/b3d3fc18-e1d7-46f7-93c5-503d4f326e5b</link>
      <guid isPermaLink="true">https://hooneylog.com/post/b3d3fc18-e1d7-46f7-93c5-503d4f326e5b</guid>
      <description>CSS counter-reset, counter-increment, counter 속성으로 ol 요소의 순서를 표현하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 27 Aug 2022 08:31:00 GMT</pubDate>
    </item>
    <item>
      <title>HTML의 DOCTYPE 선언이란 무엇인가?</title>
      <link>https://hooneylog.com/post/2a098a99-cbbe-4100-8b4d-88dcb1b428d5</link>
      <guid isPermaLink="true">https://hooneylog.com/post/2a098a99-cbbe-4100-8b4d-88dcb1b428d5</guid>
      <description>HTML 파일 첫 줄의 DOCTYPE 선언이 무엇이며 쿼크 모드와 어떤 관련이 있는지 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 27 Aug 2022 00:55:00 GMT</pubDate>
    </item>
    <item>
      <title>어댑터 패턴(Adapter Pattern)이란 무엇인가?</title>
      <link>https://hooneylog.com/post/1964ba2a-3e32-4028-8cf2-deff10196d18</link>
      <guid isPermaLink="true">https://hooneylog.com/post/1964ba2a-3e32-4028-8cf2-deff10196d18</guid>
      <description>TypeScript 예제로 어댑터 패턴의 개념과 개방-폐쇄 원칙과의 관계를 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 31 Jul 2022 02:10:00 GMT</pubDate>
    </item>
    <item>
      <title>퍼사드 패턴(Facade Pattern)이란?</title>
      <link>https://hooneylog.com/post/8b8511bc-b9b4-451e-9ae0-1d415f27c125</link>
      <guid isPermaLink="true">https://hooneylog.com/post/8b8511bc-b9b4-451e-9ae0-1d415f27c125</guid>
      <description>TypeScript 예제로 복잡한 코드를 감추는 퍼사드 패턴의 개념과 활용법을 설명합니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 30 Jul 2022 12:34:00 GMT</pubDate>
    </item>
    <item>
      <title>효율적인 데이터 관리를 위한 TypeScript Array Grouping 구현하기</title>
      <link>https://hooneylog.com/post/1462a46e-4870-4f97-8f66-6f2919c01bdd</link>
      <guid isPermaLink="true">https://hooneylog.com/post/1462a46e-4870-4f97-8f66-6f2919c01bdd</guid>
      <description>filter 반복 대신 groupBy로 배열을 한 번에 그룹화하여 데이터 조회 성능을 높이는 방법을 다룹니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 29 Jul 2022 12:47:00 GMT</pubDate>
    </item>
    <item>
      <title>기본적이면서 유용한 React 커스텀 Hook 모음</title>
      <link>https://hooneylog.com/post/f08e574c-f07e-44d6-8b7f-a67b4bd56528</link>
      <guid isPermaLink="true">https://hooneylog.com/post/f08e574c-f07e-44d6-8b7f-a67b4bd56528</guid>
      <description>useToggle, useTimeout, useDebounce, useUpdateEffect 등 실무에서 유용한 React 커스텀 훅을 소개합니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Jul 2022 12:46:00 GMT</pubDate>
    </item>
    <item>
      <title>React 18 useTransition: 긴 작업을 분리하여 사용자 경험(UX) 극대화하기</title>
      <link>https://hooneylog.com/post/13dd445e-cf39-46d1-8c8d-ab18922b8bb4</link>
      <guid isPermaLink="true">https://hooneylog.com/post/13dd445e-cf39-46d1-8c8d-ab18922b8bb4</guid>
      <description>React 18 useTransition으로 업데이트 우선순위를 나눠 무거운 작업 중에도 입력 응답성을 유지하는 방법을 다룹니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 24 Jul 2022 10:02:00 GMT</pubDate>
    </item>
    <item>
      <title>Authorization Guard 하는 방법</title>
      <link>https://hooneylog.com/post/4338cc79-8226-4187-9daf-76c3c54fc47e</link>
      <guid isPermaLink="true">https://hooneylog.com/post/4338cc79-8226-4187-9daf-76c3c54fc47e</guid>
      <description>NestJS에서 CanActivate와 커스텀 Roles 데코레이터로 권한 기반 인가 가드를 구현하는 방법을 다룹니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 29 May 2022 01:20:00 GMT</pubDate>
    </item>
    <item>
      <title>Custom decorator를 사용하여 header에 있는 jwt 받아오기</title>
      <link>https://hooneylog.com/post/75518a41-0785-41be-9b75-60e8b4a68a6a</link>
      <guid isPermaLink="true">https://hooneylog.com/post/75518a41-0785-41be-9b75-60e8b4a68a6a</guid>
      <description>NestJS 인터셉터와 커스텀 데코레이터로 요청 헤더의 JWT를 디코딩해 받아오는 방법을 다룹니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 May 2022 10:22:00 GMT</pubDate>
    </item>
    <item>
      <title>객체안에 객체가 있는 nested object validation 하는 방법</title>
      <link>https://hooneylog.com/post/25fc4a43-24e4-4fca-9458-dddb73098828</link>
      <guid isPermaLink="true">https://hooneylog.com/post/25fc4a43-24e4-4fca-9458-dddb73098828</guid>
      <description>NestJS DTO에서 ValidateNested와 Type 데코레이터로 중첩 객체를 검증하는 방법을 다룹니다.</description>
      <category>Backend</category>
      <pubDate>Sat, 28 May 2022 04:44:00 GMT</pubDate>
    </item>
    <item>
      <title>CSS Grid 환경에서 Text Ellipsis(white-space: nowrap)가 동작하지 않는 이유와 해결 방법</title>
      <link>https://hooneylog.com/post/12ab2608-d5f2-4100-b5cf-1cc43951aa22</link>
      <guid isPermaLink="true">https://hooneylog.com/post/12ab2608-d5f2-4100-b5cf-1cc43951aa22</guid>
      <description>CSS Grid에서 텍스트 말줄임이 동작하지 않는 원인을 살펴보고 minmax(0, 1fr)로 해결하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 22 May 2022 10:18:00 GMT</pubDate>
    </item>
    <item>
      <title>Nest.js에서 dto를 사용하여 validation과  데이터 변형 시켜보기</title>
      <link>https://hooneylog.com/post/cb15db75-bd78-4741-bbc4-01c575263d86</link>
      <guid isPermaLink="true">https://hooneylog.com/post/cb15db75-bd78-4741-bbc4-01c575263d86</guid>
      <description>Nest.js에서 DTO로 요청 데이터를 검증하고 인터셉터로 응답 데이터를 변형하는 방법을 정리합니다.</description>
      <category>Backend</category>
      <pubDate>Sun, 22 May 2022 01:57:00 GMT</pubDate>
    </item>
    <item>
      <title>TypeScript 객체 업데이트의 정석: Spread 연산자와 Utility Types(Pick, Partial) 활용하기</title>
      <link>https://hooneylog.com/post/0e3c8229-75fc-4e97-a61e-730ab5e41271</link>
      <guid isPermaLink="true">https://hooneylog.com/post/0e3c8229-75fc-4e97-a61e-730ab5e41271</guid>
      <description>Spread 연산자와 Pick, Partial 유틸리티 타입을 활용해 불변성을 지키며 객체를 안전하게 업데이트하는 방법을 다룹니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 20 May 2022 15:34:00 GMT</pubDate>
    </item>
    <item>
      <title>Interface에서 어떠한 key의 value를 타입으로 만드는 방법</title>
      <link>https://hooneylog.com/post/7c09fbb7-1631-4420-8d81-7df8cda02ec3</link>
      <guid isPermaLink="true">https://hooneylog.com/post/7c09fbb7-1631-4420-8d81-7df8cda02ec3</guid>
      <description>타입스크립트 인터페이스 내부 특정 key의 value를 인덱스드 액세스 타입으로 추출하는 방법을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 20 May 2022 15:13:00 GMT</pubDate>
    </item>
    <item>
      <title>Union Type Guard 하는 방법</title>
      <link>https://hooneylog.com/post/5eca9d99-4758-460b-b6b7-efcd4d7baea4</link>
      <guid isPermaLink="true">https://hooneylog.com/post/5eca9d99-4758-460b-b6b7-efcd4d7baea4</guid>
      <description>타입스크립트에서 유니온 타입을 안전하게 좁히는 타입 가드 함수를 작성하는 방법을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 20 May 2022 14:43:00 GMT</pubDate>
    </item>
    <item>
      <title>프로그래머스에서 베스트 앨범 풀어보기</title>
      <link>https://hooneylog.com/post/719e267d-e996-4722-8d42-dfc6e5283a23</link>
      <guid isPermaLink="true">https://hooneylog.com/post/719e267d-e996-4722-8d42-dfc6e5283a23</guid>
      <description>해시 테이블을 활용해 프로그래머스 베스트 앨범 문제를 타입스크립트로 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Mon, 16 May 2022 14:01:00 GMT</pubDate>
    </item>
    <item>
      <title>LeetCode에서 Symmentric Tree 풀어보기</title>
      <link>https://hooneylog.com/post/fe8d746d-9e55-458a-af9a-10b3437a01e8</link>
      <guid isPermaLink="true">https://hooneylog.com/post/fe8d746d-9e55-458a-af9a-10b3437a01e8</guid>
      <description>재귀 함수로 이진 트리의 대칭 여부를 판별하는 LeetCode Symmetric Tree 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 14 May 2022 13:54:00 GMT</pubDate>
    </item>
    <item>
      <title>LeetCode에서 Binary Tree Inorder Traversal 문제 풀어보기</title>
      <link>https://hooneylog.com/post/ef11cc86-cfd1-44d5-8c9f-3f8c4c8e15e8</link>
      <guid isPermaLink="true">https://hooneylog.com/post/ef11cc86-cfd1-44d5-8c9f-3f8c4c8e15e8</guid>
      <description>트리의 중위 순회 개념을 정리하고 스택을 이용해 이진 트리 중위 순회 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 13 May 2022 03:47:00 GMT</pubDate>
    </item>
    <item>
      <title>Leetcode에서 Climbing Stairs 문제 풀어보기</title>
      <link>https://hooneylog.com/post/a5f37c67-196c-4840-a1bd-b960676d43d7</link>
      <guid isPermaLink="true">https://hooneylog.com/post/a5f37c67-196c-4840-a1bd-b960676d43d7</guid>
      <description>동적 프로그래밍과 피보나치 점화식을 이용해 LeetCode의 Climbing Stairs 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 13 May 2022 02:22:00 GMT</pubDate>
    </item>
    <item>
      <title>Leetcode에서 Maximum Subarray 풀어보기</title>
      <link>https://hooneylog.com/post/9f6eadc2-a860-497a-b016-1c8678600775</link>
      <guid isPermaLink="true">https://hooneylog.com/post/9f6eadc2-a860-497a-b016-1c8678600775</guid>
      <description>카데인 알고리즘으로 최대 부분합을 O(n)에 구하는 Maximum Subarray 문제 풀이를 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Thu, 12 May 2022 23:53:00 GMT</pubDate>
    </item>
    <item>
      <title>Leetcode에서 Search Insert Position 풀어보기</title>
      <link>https://hooneylog.com/post/24019f23-504b-45c8-96a7-19c1b68f2c07</link>
      <guid isPermaLink="true">https://hooneylog.com/post/24019f23-504b-45c8-96a7-19c1b68f2c07</guid>
      <description>이진 탐색을 활용해 정렬된 배열에서 삽입 위치를 찾는 Search Insert Position 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Thu, 12 May 2022 23:28:00 GMT</pubDate>
    </item>
    <item>
      <title>LeetCode에서 Merge Two Sorted Lists 풀어보기</title>
      <link>https://hooneylog.com/post/5f66cf9a-cc55-456a-ad41-50d9dfcb152f</link>
      <guid isPermaLink="true">https://hooneylog.com/post/5f66cf9a-cc55-456a-ad41-50d9dfcb152f</guid>
      <description>연결 리스트 자료구조를 이용해 두 정렬 리스트를 병합하는 Merge Two Sorted Lists 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Thu, 12 May 2022 22:30:00 GMT</pubDate>
    </item>
    <item>
      <title>LeetCode의 올바른 괄호문제 풀어보기</title>
      <link>https://hooneylog.com/post/fd2867f6-0fd6-4b50-a622-53213168db7d</link>
      <guid isPermaLink="true">https://hooneylog.com/post/fd2867f6-0fd6-4b50-a622-53213168db7d</guid>
      <description>스택 자료구조를 사용해 LeetCode의 Valid Parentheses 올바른 괄호 문제를 풀어봅니다.</description>
      <category>Frontend</category>
      <pubDate>Thu, 12 May 2022 22:05:00 GMT</pubDate>
    </item>
    <item>
      <title>LeetCode Two Sum 풀이: 이중 반복문과 해시 테이블로 시간 복잡도 비교하기</title>
      <link>https://hooneylog.com/post/e167b74c-5a04-4d4e-8a52-97f1daa191a1</link>
      <guid isPermaLink="true">https://hooneylog.com/post/e167b74c-5a04-4d4e-8a52-97f1daa191a1</guid>
      <description>LeetCode의 Two Sum 문제를 이중 반복문과 해시 테이블 두 가지 방식으로 풀고 시간 복잡도를 비교합니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 11 May 2022 13:25:00 GMT</pubDate>
    </item>
    <item>
      <title>소수 구하기 공식</title>
      <link>https://hooneylog.com/post/35b119c7-a1f6-486d-9fe0-e31d5391eb17</link>
      <guid isPermaLink="true">https://hooneylog.com/post/35b119c7-a1f6-486d-9fe0-e31d5391eb17</guid>
      <description>단일 숫자 소수 판별과 에라토스테네스의 체로 특정 범위의 소수를 구하는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Tue, 10 May 2022 11:48:00 GMT</pubDate>
    </item>
    <item>
      <title>display:grid 사용시 text가 nowrap이 안되는 이슈 해결 방법</title>
      <link>https://hooneylog.com/post/d3acc56a-0e72-46c0-8ef1-90fc97c45e67</link>
      <guid isPermaLink="true">https://hooneylog.com/post/d3acc56a-0e72-46c0-8ef1-90fc97c45e67</guid>
      <description>grid-template-columns의 1fr 때문에 white-space:nowrap이 동작하지 않는 문제를 minmax(0,1fr)로 해결합니다.</description>
      <category>Frontend</category>
      <pubDate>Sun, 08 May 2022 12:33:00 GMT</pubDate>
    </item>
    <item>
      <title>마틴 파울러의 리팩터링: 단계 쪼개기와 다형성을 이용한 계산 로직 개선</title>
      <link>https://hooneylog.com/post/1371c502-63e9-4c76-898b-991a8383ce5c</link>
      <guid isPermaLink="true">https://hooneylog.com/post/1371c502-63e9-4c76-898b-991a8383ce5c</guid>
      <description>단계 쪼개기와 다형성으로 조건문을 대체해 계산 로직과 출력 로직을 분리하는 리팩터링을 다룹니다.</description>
      <category>Frontend</category>
      <pubDate>Sat, 07 May 2022 09:02:00 GMT</pubDate>
    </item>
    <item>
      <title>마틴파울러의 리팩터링 개정 2판과 함께 클린코드 잘짜는법 배워보자!!(1/2)</title>
      <link>https://hooneylog.com/post/f6e72478-e257-4f6e-8cc7-34f63ba69b29</link>
      <guid isPermaLink="true">https://hooneylog.com/post/f6e72478-e257-4f6e-8cc7-34f63ba69b29</guid>
      <description>마틴 파울러의 리팩터링 2판을 따라 함수 추출과 변수 인라인으로 클린 코드를 실습합니다(1/2).</description>
      <category>Frontend</category>
      <pubDate>Sat, 07 May 2022 05:50:00 GMT</pubDate>
    </item>
    <item>
      <title>꼭 Enum을 사용해야하는 경우가 아니라면 union 타입을 사용해야하는 이유!!</title>
      <link>https://hooneylog.com/post/30353f14-df44-475b-a641-1d9648d016f8</link>
      <guid isPermaLink="true">https://hooneylog.com/post/30353f14-df44-475b-a641-1d9648d016f8</guid>
      <description>Enum이 컴파일 후 번들 크기를 키우는 이유를 살펴보고 Union Type 사용을 권장하는 근거를 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 04 May 2022 11:18:00 GMT</pubDate>
    </item>
    <item>
      <title>Interface type guard 하는 방법</title>
      <link>https://hooneylog.com/post/7426c70d-eb0b-4328-933b-b0ea6ef78611</link>
      <guid isPermaLink="true">https://hooneylog.com/post/7426c70d-eb0b-4328-933b-b0ea6ef78611</guid>
      <description>in 연산자와 사용자 정의 타입 가드로 인터페이스 타입을 좁히는 두 가지 방법을 예시로 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Tue, 03 May 2022 12:02:00 GMT</pubDate>
    </item>
    <item>
      <title>JavaScript 정규표현식: 생성자 함수(RegExp)로 동적 패턴 완벽하게 다루기</title>
      <link>https://hooneylog.com/post/0310f24b-31ad-4d8b-aa79-4c2c6e757049</link>
      <guid isPermaLink="true">https://hooneylog.com/post/0310f24b-31ad-4d8b-aa79-4c2c6e757049</guid>
      <description>런타임에 결정되는 동적 패턴을 RegExp 생성자 함수로 안전하게 다루는 방법을 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 29 Apr 2022 23:24:00 GMT</pubDate>
    </item>
    <item>
      <title>타입스크립트에서 여러 객체를 상속받을 수 있는 Mixin 패턴을 알아보자!</title>
      <link>https://hooneylog.com/post/7043fab2-8ad6-45e0-aa22-adb12a1a1109</link>
      <guid isPermaLink="true">https://hooneylog.com/post/7043fab2-8ad6-45e0-aa22-adb12a1a1109</guid>
      <description>타입스크립트에서 여러 객체를 동시에 상속받을 수 있게 해주는 Mixin 패턴을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Fri, 29 Apr 2022 01:19:00 GMT</pubDate>
    </item>
    <item>
      <title>프론트엔드 성능 최적화를 시켜줄 8가지 방법!!</title>
      <link>https://hooneylog.com/post/3a37c4c5-0aec-4932-8ee9-624ac40c55cd</link>
      <guid isPermaLink="true">https://hooneylog.com/post/3a37c4c5-0aec-4932-8ee9-624ac40c55cd</guid>
      <description>리소스 압축, 폰트·이미지 최적화, 지연 로딩, CDN 등 프론트엔드 성능을 높이는 8가지 방법을 소개합니다.</description>
      <category>Frontend</category>
      <pubDate>Thu, 28 Apr 2022 12:50:00 GMT</pubDate>
    </item>
    <item>
      <title>esbuild로 react app 만들어보기!</title>
      <link>https://hooneylog.com/post/a1808013-908a-4712-93e1-377588ade29a</link>
      <guid isPermaLink="true">https://hooneylog.com/post/a1808013-908a-4712-93e1-377588ade29a</guid>
      <description>CRA 없이 esbuild로 처음부터 React 프로젝트를 구성하며 번들 속도를 직접 확인해봅니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Apr 2022 10:37:00 GMT</pubDate>
    </item>
    <item>
      <title>getStaticPaths와 fallback 프로퍼티를 알아보자!!</title>
      <link>https://hooneylog.com/post/9c28c071-4dac-41fe-a409-637d0a662085</link>
      <guid isPermaLink="true">https://hooneylog.com/post/9c28c071-4dac-41fe-a409-637d0a662085</guid>
      <description>Next.js 동적 라우팅 정적 페이지를 만드는 getStaticPaths와 fallback 프로퍼티의 동작 방식을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Apr 2022 04:48:00 GMT</pubDate>
    </item>
    <item>
      <title>타입스크립트 Function Overloading을 알아보자! </title>
      <link>https://hooneylog.com/post/1c16dd1f-e41b-48a8-b45f-7ab5373d0ecb</link>
      <guid isPermaLink="true">https://hooneylog.com/post/1c16dd1f-e41b-48a8-b45f-7ab5373d0ecb</guid>
      <description>여러 경우의 매개변수와 반환 타입을 하나의 함수로 처리하는 타입스크립트 함수 오버로딩을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Apr 2022 01:16:00 GMT</pubDate>
    </item>
    <item>
      <title>Next.js 에서 facebook comments plugin 적용해보기</title>
      <link>https://hooneylog.com/post/f4707538-bffc-4991-a205-d7882b6f0ba7</link>
      <guid isPermaLink="true">https://hooneylog.com/post/f4707538-bffc-4991-a205-d7882b6f0ba7</guid>
      <description>Next.js 블로그에 페이스북 댓글 플러그인을 연동하는 과정을 단계별로 정리합니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Apr 2022 00:58:00 GMT</pubDate>
    </item>
    <item>
      <title>react-testing-library를 사용하여 간단한 테스트 코드 작성해보기</title>
      <link>https://hooneylog.com/post/bf318bc1-bd92-4e2a-88d3-52377fc55c45</link>
      <guid isPermaLink="true">https://hooneylog.com/post/bf318bc1-bd92-4e2a-88d3-52377fc55c45</guid>
      <description>react-testing-library로 렌더링, 이벤트, API 모킹, 커스텀 훅 등을 검증하는 테스트 예제를 살펴봅니다.</description>
      <category>Frontend</category>
      <pubDate>Wed, 27 Apr 2022 00:53:00 GMT</pubDate>
    </item>
    <item>
      <title>Intersection Observer를 사용하여 lazy loading 해보기</title>
      <link>https://hooneylog.com/post/50c15206-3ab8-493a-ad08-ff423c534153</link>
      <guid isPermaLink="true">https://hooneylog.com/post/50c15206-3ab8-493a-ad08-ff423c534153</guid>
      <description>Intersection Observer API로 무한 스크롤과 이미지 지연 로딩을 구현하는 방법을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Tue, 26 Apr 2022 06:21:00 GMT</pubDate>
    </item>
    <item>
      <title>React에서 더 나은 UX를 제공하는 Skeleton 만들어보기!</title>
      <link>https://hooneylog.com/post/865db1bc-6659-4f92-acd8-d0238c1bd2e5</link>
      <guid isPermaLink="true">https://hooneylog.com/post/865db1bc-6659-4f92-acd8-d0238c1bd2e5</guid>
      <description>로딩 중 사용자 경험을 개선하는 스켈레톤 컴포넌트를 React에서 적용하는 방법을 알아봅니다.</description>
      <category>Frontend</category>
      <pubDate>Tue, 26 Apr 2022 05:55:00 GMT</pubDate>
    </item>
  </channel>
</rss>