본문으로 건너뛰기
wooncloud

모든 글

35개의 글이 있습니다.

disabled 버튼에 툴팁이 안 뜨는 이유와 해결
disabled 버튼에 툴팁이 안 뜨는 이유와 해결
disabled 버튼은 포인터 이벤트를 차단해 툴팁 표시를 방해하므로 CSS의 pointer-events: none을 활용해 이벤트를 부모 요소로 전달하는 해결법과 함께 키보드 사용자를 위한 접근성 보완책을 제시합니다
2026-07-23 · 6 min read
#frontend#css#react#ux#accessibility
Claude Code 상태줄(statusLine)에 사용량 한도와 git 상태 띄우기
Claude Code 상태줄(statusLine)에 사용량 한도와 git 상태 띄우기
Claude Code의 상태줄을 활용해 모델 사용량과 git 상태를 한 줄로 표시하는 커스텀 스크립트 제작 과정을 정리했습니다. 데이터 유무에 따른 예외 처리와 OS별 시간 변환 차이, git 정보 추출 시 주의사항 등 안정적인 상태줄을 구현하기 위한 핵심 팁과 셸 스크립트 작성 노하우를 확인해 보세요
2026-06-26 · 12 min read
#claude-code#statusline#bash#git
AI 에이전트가 grep으로 코드를 더듬는 비용, CodeGraph로 걷어내기
AI 에이전트가 grep으로 코드를 더듬는 비용, CodeGraph로 걷어내기
AI 코딩 에이전트가 텍스트 검색에 의존하며 겪는 비효율을 해결하는 CodeGraph를 소개합니다. 코드베이스를 로컬 SQLite 기반 지식 그래프로 미리 인덱싱하여, 에이전트가 호출 관계와 영향 범위를 한 번의 호출로 파악하게 함으로써 탐색 시간을 획기적으로 줄이고 보안까지 챙기는 최적의 코딩 환경을 구축해 보세요
2026-06-24 · 14 min read
#codegraph#ai-agent#claude-code#mcp#개발도구
컨텍스트 문제의 나머지 절반 — context-mode 써보기
컨텍스트 문제의 나머지 절반 — context-mode 써보기
AI 코딩 에이전트가 긴 작업 중 둔해지는 이유는 방대한 툴 출력값이 컨텍스트를 점유하기 때문입니다. context-mode는 데이터를 직접 읽는 대신 샌드박스에서 코드로 처리해 결과값만 추출함으로써 토큰 사용량을 90% 이상 절감하고, 세션 메모리 관리와 자동 라우팅으로 긴 세션의 효율성을 극대화하는 방법을 제시합니다
2026-06-24 · 10 min read
#context-mode#mcp#claude-code#ai-agent
Cloudflare Zero Trust Tunnel로 집 서버 안전하게 공개하기
Cloudflare Zero Trust Tunnel로 집 서버 안전하게 공개하기
Cloudflare Zero Trust Tunnel을 활용하면 라우터 포트포워딩 없이도 집 서버를 안전하게 외부로 공개할 수 있습니다. 서버가 직접 아웃바운드 연결을 맺어 공인 IP 노출을 막고, Cloudflare 엣지 네트워크를 통해 TLS 인증과 DDoS 방어까지 한 번에 해결하는 효율적인 보안 구성 방법을 소개합니다
2026-06-14 · 21 min read
#cloudflare#selfhosting#security#devops
SEO vs GEO — AI가 검색의 입구가 된 시대의 노출 전략
SEO vs GEO — AI가 검색의 입구가 된 시대의 노출 전략
검색 엔진에서 답변 엔진으로 변화하는 시대, 링크 클릭을 유도하는 SEO를 넘어 AI의 답변에 인용되기 위한 GEO 전략을 알아보고 인프라 점검부터 llms.txt 활용 및 패시지 단위의 글쓰기까지 AI 검색 환경에 최적화하는 구체적인 방법을 제시한다
2026-06-13 · 12 min read
#seo#geo#ai#검색최적화
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL의 성능 최적화를 위해 부분·복합·커버링·표현식 인덱스 등 다양한 설계 기법을 정리하고, 데이터 특성에 맞는 GIN·BRIN 활용법과 운영 중 안전한 인덱스 관리 및 검증 전략을 상세히 설명한다
2026-06-11 · 14 min read
#postgresql#database#index#sql#성능
로컬에선 되는데 배포하면 안 된다 — CloudFront가 내 API GET을 캐싱하고 있었다
로컬에선 되는데 배포하면 안 된다 — CloudFront가 내 API GET을 캐싱하고 있었다
로컬에서는 정상인데 배포 환경에서만 데이터가 갱신되지 않는 현상의 원인을 분석합니다. API 응답 헤더에 캐시 제어 설정이 없어 CloudFront가 GET 요청을 임의로 캐싱하며 발생한 문제로, Cache-Control 헤더 설정과 CDN 캐시 정책 수정을 통해 이를 해결하는 과정을 상세히 정리했습니다
2026-06-11 · 10 min read
#cloudfront#http-cache#react-query#cdn#debugging
모바일 키보드가 모달을 가릴 때 — visualViewport + paddingBottom 한 방
모바일 키보드가 모달을 가릴 때 — visualViewport + paddingBottom 한 방
모바일 웹에서 키보드에 가려지는 모달 문제를 visualViewport API와 paddingBottom을 활용해 해결하는 방법을 소개합니다. 레이아웃 정렬 전략을 바꾸지 않고도 키보드 높이만큼 오버레이 영역을 조정하여 모달이 항상 키보드 위로 올라오게 만드는 실무적인 최적화 노하우를 확인해 보세요
2026-06-11 · 6 min read
#frontend#css#react#mobile#visualviewport
PostgreSQL에서 varchar(n) 대신 text를 권장하는 이유
PostgreSQL에서 varchar(n) 대신 text를 권장하는 이유
PostgreSQL에서 varchar(n)은 성능상 이점이 없으며 오히려 불필요한 길이 제한으로 운영 장애를 유발할 수 있습니다. 동일한 저장 구조를 가진 text 타입을 기본으로 사용하고, 데이터 검증이 필요한 경우에만 CHECK 제약을 활용하는 것이 데이터베이스 설계와 유지보수 측면에서 훨씬 효율적입니다
2026-06-11 · 7 min read
#postgresql#database#sql#데이터모델링
Fractional Indexing: 정렬된 리스트의 순서를 한 row만 바꿔 관리하기
Fractional Indexing: 정렬된 리스트의 순서를 한 row만 바꿔 관리하기
리스트 순서 변경 시 전체 데이터를 수정해야 하는 정수 인덱스의 한계를 넘어 문자열 기반의 키를 활용해 단 하나의 행만 업데이트하여 효율적으로 순서를 관리하는 Fractional Indexing 기법을 소개합니다
2026-06-10 · 9 min read
#fractional-indexing#database#협업#crdt
Mac mini로 Next.js 앱 셀프호스팅하기: 전체 구성
Mac mini로 Next.js 앱 셀프호스팅하기: 전체 구성
Mac mini와 같은 소형 서버를 활용해 클라우드 비용 없이 Next.js 앱을 운영하는 방법을 소개합니다. Cloudflare Tunnel로 인바운드 포트 없이 보안을 유지하고, Docker Compose와 GitHub Actions로 배포를 자동화하며, 오프사이트 백업으로 안정성을 확보하는 전체 아키텍처와 운영 노하우를 상세히 다룹니다
2026-06-09 · 19 min read
#selfhosting#nextjs#docker#devops
GitHub Actions self-hosted runner로 집 서버에 자동 배포하기
GitHub Actions self-hosted runner로 집 서버에 자동 배포하기
GitHub Actions self-hosted runner를 활용해 방화벽 설정 없이 집 서버에 안전한 자동 배포 파이프라인을 구축하는 방법을 소개합니다. 운영 디렉토리 직접 배포 패턴과 게이트 설계, 타임아웃 및 동시성 제어 등 실전에서 마주하는 함정을 해결하며 견고한 배포 환경을 만드는 핵심 노하우를 정리했습니다
2026-06-08 · 18 min read
#cicd#github-actions#docker#devops
Next.js App Router 캐싱 4계층 완전정복
Next.js App Router 캐싱 4계층 완전정복
Next.js App Router의 Request Memoization·Data Cache·Full Route Cache·Router Cache 4계층을 무엇을·수명·무효화 기준으로 분리해 설명하고, 동적 렌더 트리거와 함정을 정리한다.
2026-06-07 · 19 min read
#nextjs#react#performance#frontend
Docker 멀티스테이지 빌드로 이미지 90% 줄이기
Docker 멀티스테이지 빌드로 이미지 90% 줄이기
빌드 도구와 런타임을 분리하는 멀티스테이지 빌드로 도커 이미지를 줄이는 법을, 베이스 이미지(slim/alpine/distroless) 트레이드오프와 레이어 캐시 순서 최적화까지 정리한다.
2026-06-06 · 17 min read
#docker#devops#performance#infra
캐싱 전략 총정리: cache-aside부터 stampede 방어까지
캐싱 전략 총정리: cache-aside부터 stampede 방어까지
cache-aside·write-through·write-behind 등 캐싱 패턴과 무효화 전략, 그리고 캐시 스탬피드(thundering herd)를 막는 락·확률적 만료·single-flight 방어까지 정리한다.
2026-06-05 · 26 min read
#backend#redis#performance#architecture
Rate Limiting 알고리즘: 토큰 버킷부터 슬라이딩 윈도우까지
Rate Limiting 알고리즘: 토큰 버킷부터 슬라이딩 윈도우까지
fixed/sliding window, token bucket, leaky bucket 등 rate limiting 알고리즘의 동작과 장단점을 비교하고, Redis+Lua 분산 구현과 429·Retry-After 응답 규약까지 정리한다.
2026-06-04 · 24 min read
#backend#redis#architecture#api
Core Web Vitals 95점 만들기: LCP·CLS·INP
Core Web Vitals 95점 만들기: LCP·CLS·INP
Core Web Vitals의 LCP·CLS·INP 세 지표를 각각 원인과 개선법으로 공략하고, 랩/필드 데이터 측정과 이미지·폰트·JS 최적화 체크리스트까지 실전으로 정리한다.
2026-06-03 · 23 min read
#frontend#performance#seo#web
pgvector로 PostgreSQL에서 시맨틱 검색 구현하기
pgvector로 PostgreSQL에서 시맨틱 검색 구현하기
임베딩과 벡터 검색의 원리부터 pgvector의 거리 연산자, IVFFlat·HNSW 인덱스 트레이드오프, 하이브리드 검색까지 PostgreSQL로 시맨틱 검색을 구현하는 법을 정리한다.
2026-06-02 · 23 min read
#postgresql#ai#search#database
PostgreSQL 트랜잭션 격리 수준 실전 정리
PostgreSQL 트랜잭션 격리 수준 실전 정리
PostgreSQL의 트랜잭션 격리 수준은 SQL 표준과 다르며 MVCC 기반으로 동작합니다. 기본값인 Read Committed를 넘어 데이터 정합성을 위해 Repeatable Read나 Serializable을 선택할 때는 각 수준의 이상 현상 차단 범위와 재시도 로직 구현 등 실무적인 설계 원칙을 반드시 이해해야 합니다
2026-06-01 · 24 min read
#postgresql#database#transaction#backend
무중단 데이터베이스 스키마 마이그레이션
무중단 데이터베이스 스키마 마이그레이션
운영 중 스키마 변경의 위험(테이블 잠금·rewrite)을 피하는 expand→migrate→contract 패턴을, CREATE INDEX CONCURRENTLY·NOT VALID/VALIDATE·배치 backfill 등 단계별 SQL로 정리한다.
2026-05-31 · 26 min read
#postgresql#database#devops#backend
커넥션 풀링과 PgBouncer: 연결 고갈 막기
커넥션 풀링과 PgBouncer: 연결 고갈 막기
PostgreSQL이 연결마다 프로세스를 띄우는 구조와 연결 고갈 문제를 짚고, PgBouncer의 session·transaction·statement 풀 모드와 서버리스 환경의 함정, 풀 사이징을 정리한다.
2026-05-30 · 23 min read
#postgresql#database#performance#backend
N+1 쿼리 문제: 원인, 탐지, 해결
N+1 쿼리 문제: 원인, 탐지, 해결
ORM 지연 로딩에서 흔히 생기는 N+1 쿼리의 원인을 짚고, 쿼리 로깅·테스트 어서션으로 탐지하고 JOIN·배치(IN)·DataLoader로 해결하는 법과 트레이드오프를 정리한다.
2026-05-29 · 16 min read
#database#orm#performance#backend
페이지네이션 제대로: OFFSET vs 커서(keyset)
페이지네이션 제대로: OFFSET vs 커서(keyset)
OFFSET 방식은 데이터가 많아질수록 성능이 저하되고 데이터 변경 시 중복이나 누락이 발생하기 쉽습니다. 이를 해결하기 위해 마지막 데이터의 정렬 키를 기준으로 다음 페이지를 조회하는 커서(keyset) 페이지네이션을 활용하면 성능과 정확성을 모두 확보할 수 있습니다
2026-05-28 · 25 min read
#postgresql#database#performance#backend
유용한 PostgreSQL 기능 8가지
유용한 PostgreSQL 기능 8가지
애플리케이션의 복잡한 로직을 데이터베이스 레벨에서 해결해 성능과 정합성을 높이는 PostgreSQL의 핵심 기능 8가지를 소개합니다. DISTINCT ON부터 데이터 변경 CTE까지, 실무에서 코드 양을 줄이고 동시성 문제를 효율적으로 제어할 수 있는 강력한 활용법을 확인해 보세요
2026-05-27 · 9 min read
#postgresql#database#sql#backend
분산 시스템에서 쓰는 ID 형식 총정리 — UUID, ULID, Snowflake, NanoID 비교
분산 시스템에서 쓰는 ID 형식 총정리 — UUID, ULID, Snowflake, NanoID 비교
분산 시스템 환경에서 요구사항에 맞는 최적의 식별자를 선택할 수 있도록 UUID v7, ULID, Snowflake, NanoID 등 주요 ID 형식의 특징과 장단점을 비교하고 상황별 선택 가이드를 제시함
2026-05-18 · 9 min read
#분산시스템#데이터베이스#UUID#ULID#NanoID#식별자
cmux로 에이전트 오케스트레이션 - 에이전트 협업시키는 방법
cmux로 에이전트 오케스트레이션 - 에이전트 협업시키는 방법
cmux는 터미널 레이아웃을 제어해 여러 에이전트를 시각적으로 관리하기 좋은 도구지만 자동 협업 기능은 없으므로 목적에 따라 Claude Code subagent와 구분해 사용해야 함
2026-05-16 · 4 min read
#cmux
클로드코드를 위한 CMUX 스킬 설치
클로드코드를 위한 CMUX 스킬 설치
터미널 환경에서 클로드 코드를 활용할 때 cmux 제어 스킬을 설치하면 터미널 세션을 더욱 효율적으로 관리하고 자동화할 수 있는 방법을 소개합니다
2026-05-16 · 1 min read
#cmux#claude
케이스 스터디: ClaudeOps
케이스 스터디: ClaudeOps
한 줄 정의 여러 Claude 에이전트가 자율적으로 일하고, 서로의 작업을 같은 데이터베이스 위에서 추적·보고하는 개인 내부 협업 플랫폼이다. 왜 만들었나 이나 cron + 헤드리스로 자동화를 늘리다 보면 어딘가에서 막힌다. 자동화 하나하나는 잘…
2026-05-03 · 9 min read
#사이드 프로젝트#claude#클로드
클로드 코드 Hooks
클로드 코드 Hooks
정의 Claude Code의 라이프사이클 이벤트에 사용자 스크립트를 끼워넣는 메커니즘이다. 모델이 도구를 쓰기 직전, 직후, 세션 종료 시점 등에 자동으로 정해진 명령이 실행된다. 지금까지의 자동화(/loop, 루틴, 외부 스케줄러,…
2026-05-03 · 9 min read
#클로드#클로드코드#claude#claude code#hooks
클로드 코드 자동화 : Webhook + 헤드리스 모드
클로드 코드 자동화 : Webhook + 헤드리스 모드
정의 외부 시스템이 HTTP 요청 한 번으로 Claude Code를 깨우는 구조다. 시간이 아니라 이벤트가 트리거 다. 3번이 "정해진 시각에 깨우기"라면 6번은 "무슨 일이 일어났을 때 깨우기"다. 어떻게 동작하나 서버 한 대(혹은 함수 하나)가…
2026-05-03 · 8 min read
#클로드#클로드코드#claude#claude code#webhook
클로드코드 자동화 : 외부 스케줄러 + 헤드리스 모드
클로드코드 자동화 : 외부 스케줄러 + 헤드리스 모드
정의 한 줄을 외부 스케줄러가 주기적으로 호출하는 구조다. 운영체제 cron, Node의 node-schedule, GitHub Actions cron, Kubernetes CronJob 어디든 붙는다. 빌트인 루틴과 달리 인프라를 직접 들고 있어야…
2026-05-03 · 6 min read
#클로드#클로드코드#claude#claude code#스케줄러#scheduler
Claude Code 루틴 (Routines)
Claude Code 루틴 (Routines)
정의 루틴은 저장된 Claude Code 설정이다. 프롬프트, 저장소, 커넥터를 한 번 묶어두면 트리거에 따라 자동 실행된다. 2026년 4월 14일 research preview로 출시됐고, /loop과는 다른 실행 모델. /loop은 세션 내,…
2026-05-03 · 5 min read
#클로드#claude#claude code#루틴#routine
Claude Code /loop 명령어
Claude Code /loop 명령어
Claude Code에 내장된 세션 내 스케줄러 슬래시 커맨드. 기본 개념 는 Claude Code에 번들된 skill로, 반복 프롬프트를 백그라운드에서 자동 발사되도록 스케줄하는 명령. interval과 작업 설명을 넘기면 Claude가 그걸…
2026-05-03 · 5 min read
#claude#claude code#loop#클로드
클로드 코드 사용 팁
클로드 코드 사용 팁
클로드 코드를 효과적으로 활용하려면 처음부터 과도하게 설정하기보다 필요에 따라 보완하고, 명확한 목표 설정과 함께 컨텍스트를 간결하게 유지하며 스스로 검증할 수 있는 환경을 조성하는 것이 중요합니다
2026-05-02 · 6 min read
#claude#클로드