모든 글
총 80개의 글이 있습니다. (3/4 페이지)
background-clip: content-box 는 border-radius 도 깎는다
background-clip을 content-box로 설정하면 padding 두께만큼 border-radius가 깎여 의도치 않게 각진 모양이 되는데, 이를 해결하려면 슬래시 문법을 사용해 가로와 세로 반경을 개별적으로 보정해야 합니다
2026-08-05 · 7 min read
#css#ui#border-radius#frontend
PostgreSQL 42P18 — 조건부 SQL 빌더에서 파라미터를 미리 넣으면 안 되는 이유
PostgreSQL에서 조건부 SQL 빌더 사용 시 참조되지 않는 파라미터가 포함되면 42P18 오류가 발생하므로 절과 파라미터를 함께 관리하고 실제 DB 파싱 테스트를 통해 검증해야 합니다
2026-08-04 · 8 min read
#postgresql#sql#backend#debugging
롱프레스 드래그가 안 되는 이유 — touch-action 은 제스처가 시작될 때 확정된다
touch-action 은 pointerdown 시점에 이미 확정돼 늦게 바꾸면 소용없고, 롱프레스 시작 순간 touchmove 를 passive: false 로 preventDefault 해야 스크롤이 드래그를 취소하지 않습니다.
2026-07-31 · 9 min read
#touch-action#pointer-events#mobile#frontend
인덱스를 만들었는데 플래너가 안 쓴다 — EXISTS 가 selectivity 추정을 무너뜨릴 때
EXISTS 서브쿼리는 semi join 행 수를 실제보다 극단적으로 적게 추정해 플래너가 인덱스의 조기 종료 이득을 0으로 보고 Sort 를 유지하는데, MATERIALIZED CTE 로 EXISTS 를 격리하면 130ms가 3ms로 줄어듭니다.
2026-07-31 · 11 min read
#postgresql#query-plan#index#performance
헤드리스 AI CLI의 샌드박스는 "없음"이라고 거짓말한다
AI CLI를 헤드리스로 쓰면 샌드박스가 파일 접근을 막아도 에러 없이 빈 결과만 돌아와 모델이 "파일이 없다"고 오판하며, 종료 코드는 0으로 찍힙니다.
2026-07-31 · 9 min read
#ai-agent#cli#automation#sandbox
disabled 버튼에 툴팁이 안 뜨는 이유와 해결
disabled 버튼은 포인터 이벤트를 차단해 툴팁 표시를 방해하므로 CSS의 pointer-events: none을 활용해 이벤트를 부모 요소로 전달하는 해결법과 함께 키보드 사용자를 위한 접근성 보완책을 제시합니다
2026-07-23 · 7 min read
#frontend#css#react#ux#accessibility
Claude Code 상태줄(statusLine)에 사용량 한도와 git 상태 띄우기
Claude Code statusLine 은 rate_limits 가 Pro/Max 첫 응답 이후에만 와 jq // empty 로 방어해야 하고, 브랜치는 JSON에 없어 git 으로, epoch 는 BSD·GNU date 를 둘 다 폴백해야 합니다.
2026-06-26 · 13 min read
#claude-code#statusline#bash#git
AI 에이전트가 grep으로 코드를 더듬는 비용, CodeGraph로 걷어내기
CodeGraph는 코드베이스를 로컬 SQLite 그래프로 미리 인덱싱해 호출 관계·블라스트 반경·소스를 explore 한 번으로 돌려주고, 데이터가 기계 밖으로 나가지 않아 grep 반복 탐색을 줄입니다.
2026-06-24 · 15 min read
#codegraph#ai-agent#claude-code#mcp#개발도구
컨텍스트 문제의 나머지 절반 — context-mode 써보기
AI 에이전트가 길어질수록 둔해지는 건 cat·grep 같은 툴 출력이 통째로 컨텍스트에 쌓이기 때문인데, context-mode 는 샌드박스에서 코드로 처리해 결과만 꺼내 hook 적용 시 약 98% 토큰을 절감합니다.
2026-06-24 · 11 min read
#context-mode#mcp#claude-code#ai-agent
Cloudflare Zero Trust Tunnel로 집 서버 안전하게 공개하기
Cloudflare Zero Trust Tunnel 은 인바운드 포트를 0개로 만들어 서버가 아웃바운드 연결만 맺고, TLS·WAF·DDoS 방어는 엣지가 맡으며 Access 로 /admin 같은 경로를 엣지에서 먼저 인증합니다.
2026-06-14 · 22 min read
#cloudflare#selfhosting#security#devops
SEO vs GEO — AI가 검색의 입구가 된 시대의 노출 전략
SEO는 검색 결과 클릭을, GEO는 AI 답변 인용을 겨냥하며, CDN 봇 방어로 AI 크롤러가 막혀 있으면 llms.txt·패시지 글쓰기를 갖춰도 무의미합니다. GEO는 SEO 위에 쌓이는 관계입니다.
2026-06-13 · 13 min read
#seo#geo#ai
PostgreSQL 인덱스 설계 총정리 — 부분·복합·커버링·표현식부터 GIN/BRIN까지
PostgreSQL 인덱스는 부분·복합·커버링(INCLUDE)·표현식 인덱스로 작고 정확하게 좁힐 수 있고, jsonb·배열은 GIN, 시계열 대용량은 BRIN이 적합하며, CONCURRENTLY·EXPLAIN으로 안전하게 운영합니다.
2026-06-11 · 15 min read
#postgresql#database#index#sql#performance
로컬에선 되는데 배포하면 안 된다 — CloudFront가 내 API GET을 캐싱하고 있었다
API 응답에 Cache-Control 이 없으면 CloudFront 가 GET 요청을 기본 TTL로 캐싱해, mutation 후 재조회해도 stale 데이터가 보입니다. no-store 헤더와 CachingDisabled 정책으로 해결합니다.
2026-06-11 · 12 min read
#cloudfront#http-cache#react-query#cdn#debugging
모바일 키보드가 모달을 가릴 때 — visualViewport + paddingBottom 한 방
iOS Safari 는 키보드가 떠도 레이아웃 뷰포트를 줄이지 않아 모달이 키보드 뒤에 가려지는데, visualViewport 로 가린 높이를 구해 padding-bottom 에 더하면 정렬을 안 바꾸고도 해결됩니다.
2026-06-11 · 7 min read
#frontend#css#react#mobile#visualviewport
PostgreSQL에서 varchar(n) 대신 text를 권장하는 이유
PostgreSQL 에서 varchar(n) 과 text 는 저장 구조(varlena)가 같아 성능 차이가 없고, varchar(n) 은 임의의 길이 제한으로 운영 장애만 유발하므로 기본값은 text + CHECK 를 권장합니다.
2026-06-11 · 8 min read
#postgresql#database#sql#데이터모델링
Fractional Indexing: 정렬된 리스트의 순서를 한 row만 바꿔 관리하기
리스트 순서 변경 시 전체 데이터를 수정해야 하는 정수 인덱스의 한계를 넘어 문자열 기반의 키를 활용해 단 하나의 행만 업데이트하여 효율적으로 순서를 관리하는 Fractional Indexing 기법을 소개합니다
2026-06-10 · 11 min read
#fractional-indexing#database#협업#crdt
Mac mini로 Next.js 앱 셀프호스팅하기: 전체 구성
Mac mini 로 Next.js 를 셀프호스팅하면 Cloudflare Tunnel 이 인바운드 포트 0개로 공인 IP 노출 없이 서비스하고, standalone 빌드·self-hosted runner 배포·오프사이트 백업으로 운영합니다.
2026-06-09 · 21 min read
#selfhosting#nextjs#docker#devops
GitHub Actions self-hosted runner로 집 서버에 자동 배포하기
GitHub Actions self-hosted runner로 인바운드 포트 없이 집 서버에 자동 배포하되, Docker 데몬 기동 대기·타임아웃 중첩·concurrency 직렬화로 러너가 멈추는 함정을 막습니다.
2026-06-08 · 20 min read
#cicd#github-actions#docker#devops
Next.js App Router 캐싱 4계층 완전정복
Next.js App Router 캐싱은 4계층으로 나뉘며, cookies()·headers()·no-store 하나만 써도 라우트가 동적이 되어 Full Route Cache 가 꺼집니다.
2026-06-07 · 21 min read
#nextjs#react#performance#frontend
Docker 멀티스테이지 빌드로 이미지 90% 줄이기
멀티스테이지 빌드로 빌드 도구와 런타임을 분리하면 1GB 넘던 이미지가 slim 기준 200~300MB대로 줄고, 레이어 캐시 순서와 베이스 이미지 선택도 함께 정리합니다.
2026-06-06 · 18 min read
#docker#devops#performance#infra