모든 글
총 80개의 글이 있습니다. (2/4 페이지)
sticky 가 조용히 죽는 자리, overflow:hidden 은 스크롤하지 않아도 scrollport 다
같은 컴포넌트인데 iframe 화면에서만 position:sticky 가 먹지 않았던 원인은 루트의 overflow:hidden 이었습니다. 스크롤 컨테이너 기준과 flex 높이 협상의 함정까지 다룹니다.
2026-10-08 · 5 min read
#css#sticky#overflow#iframe
reduced-motion 에서 CSS 애니메이션을 원하는 프레임에 멈추기
reduced-motion 설정 시 루프 애니메이션이 사라지는 문제를 해결하기 위해 음수 animation-delay와 paused 속성을 활용해 특정 프레임에 멈추게 하는 방법과 이를 활용한 스크린샷 검수 팁을 소개합니다
2026-10-06 · 4 min read
#css#animation#accessibility#prefers-reduced-motion
Jev 대안이라던 laya를 써보고 Jev로 돌아온 이야기
오픈소스 laya 는 실제 데이터에서 정확도가 30~46%에 그쳐 하루 만에 지우고, 확신도 0.8 이상이 거의 다 맞는 Jev 로 전환해 이슈 분류 파이프라인을 구축한 경험입니다.
2026-09-23 · 14 min read
#jev#laya#llm#classification
다른 레포를 건드리면 그 레포 CLAUDE.md를 안 따른다 — 레포별 세션과 SendMessage
다른 레포를 --add-dir 로 열면 hooks·권한이 따라오지 않고 /cd 로 옮기면 원래 레포 규칙을 잃는데, 레포마다 세션을 두고 SendMessage 로 요청하면 각자 자기 하네스대로 작업합니다.
2026-09-13 · 12 min read
#claude-code#ai-agent#architecture#backend
값이 하나뿐인 컬럼이 인덱스를 죽인다
복합 인덱스의 선두 컬럼을 조건절에서 빼면, 카디널리티가 1이라 무의미해 보여도 인덱스 전체가 Seq Scan으로 죽습니다. 상수로 채워 넣자 35초가 525ms로 줄었습니다.
2026-09-10 · 9 min read
#postgresql#인덱스#쿼리튜닝
삭제 필터를 걸었는데 아무것도 안 걸러지고 있었다
논리 삭제 처리를 위해 작성한 쿼리 조건이 실제 데이터와 맞지 않아 수년간 무용지물이었던 경험을 통해, 코드 리뷰만으로는 알 수 없는 데이터의 실체를 확인하는 과정과 죽은 로직을 방치하지 않기 위한 현실적인 대응 방안을 공유합니다
2026-09-10 · 7 min read
#sql#레거시#데이터품질
링크 테이블을 조인해 SUM 하면 파일 하나를 여러 번 센다
링크 테이블을 조인해 SUM하면 같은 파일이 여러 번 더해져, 중복 링크는 전체의 2%뿐인데도 400GB 넘게 과다 계상됩니다. 물리 파일로 되돌려 더해야 합니다.
2026-09-10 · 7 min read
#postgresql#sql#집계
자동완성이 다시 안 뜬다 — 닫힘 상태를 값으로 저장했을 때
자동완성 닫힘 상태를 검색어 값으로 기억하면 지웠다 같은 값을 다시 입력했을 때(IME 수정 동작) 패널이 영영 안 열립니다. 값 대신 편집 횟수 카운터로 바꿔야 합니다.
2026-09-07 · 12 min read
#react#ime#frontend#상태관리
코딩 에이전트의 할 일을 애플 미리알림에 (2) — 구조와 세팅
코딩 에이전트의 할 일을 애플 미리알림과 동기화하는 하네스입니다. 제목 대신 메모(body)에 세션별 고유 키를 심어 여러 세션이 리스트 하나를 공유해도 서로의 항목을 건드리지 않고, 세션 종료 시 자동 정리됩니다.
2026-09-01 · 19 min read
#applescript#macos#claude-code#automation#hooks
코딩 에이전트의 할 일을 애플 미리알림에 (1) — 되는 것, 안 되는 것, 5초의 함정
맥 미리알림을 AppleScript로 제어하면 섹션·태그는 다룰 수 없지만 깃발로 대신할 수 있고, 항목 참조를 변수에 담아 속성을 쓰면 속성당 5초가 붙어 참조 없이 한 번에 쓰면 9배 빨라집니다.
2026-09-01 · 17 min read
#applescript#macos#claude-code#automation
화이트라벨 앱에 소셜 로그인을 붙일 때 본앱 SDK를 그대로 못 쓰는 이유
화이트라벨 앱에 본앱 소셜 로그인 SDK를 그대로 붙이면 로그인은 되지만, 소셜 ID가 앱마다 다르게 발급돼 서버가 계정을 엉뚱하게 매핑합니다. 인증수단과 앱 출처를 별도 축으로 분리해야 합니다.
2026-08-27 · 10 min read
#mobile#oauth#social-login#whitelabel#android
macOS의 sort·uniq은 UTF-8 로케일에서 한글을 전부 같은 값으로 본다
macOS의 sort와 uniq 명령어가 UTF-8 환경에서 한글 등 비ASCII 문자를 동일하게 취급해 데이터를 유실하는 문제를 설명하고 LC_ALL=C를 통한 바이트 단위 비교 해결책과 검산의 중요성을 제안합니다
2026-08-27 · 9 min read
#shell#macos#locale#unix
복사했더니 빈 값 — innerText는 화면에 보이는 것만 읽는다
content-visibility:auto 로 접어 둔 긴 글을 innerText 로 읽으면 화면 밖 부분이 렌더되지 않아 빈 문자열이 복사됩니다. display:none 은 전문을 돌려주니, 데이터 그대로가 필요하면 textContent 를 씁니다.
2026-08-27 · 8 min read
#frontend#dom#javascript#debugging
거짓 성공을 만드는 방어 코드 — 동적 UPDATE에서 컬럼을 조용히 건너뛸 때
동적 UPDATE문에서 특정 컬럼을 조용히 제외하는 방어 코드는 실패를 숨겨 데이터 무결성을 해칠 수 있습니다. 예외를 삼키는 대신 입구에서 검증하거나 실패를 명확히 응답하여 시스템의 정직함을 유지하는 설계 방법을 제안합니다
2026-08-26 · 9 min read
#backend#sql#error-handling#api-design
툴팁으로 감쌌더니 옆 요소가 밀려났다 — 래퍼가 가져가는 flex 성질
툴팁 같은 래퍼 컴포넌트가 부모의 flex 계산에 개입해 레이아웃을 깨뜨리는 문제를 해결하기 위해 래퍼의 flex 속성을 옵션으로 분리하고 레이아웃 설계 시 호출부의 영향력을 고려하는 방법을 제안합니다
2026-08-21 · 8 min read
#css#flexbox#react#컴포넌트설계
vi.mock이 안 먹는 이유 — vitest isolate:false와 모듈 캐시
isolate: false 로 모듈 캐시가 파일 간에 공유되면, 다른 파일이 먼저 로드한 모듈에서는 vi.mock이 무력화됩니다. vi.spyOn으로 객체 메서드를 교체하면 해결됩니다.
2026-08-21 · 7 min read
#vitest#testing#javascript#mocking
렌더 실패가 앱 밖으로 새는 이유 — 라이브러리가 document.body에 그릴 때
렌더 라이브러리가 실패 시 document.body에 만든 임시 div를 정리 직전에 throw해, catch로 예외를 삼켜도 화면에 잔재가 누적됩니다. 컨테이너를 직접 만들어 finally에서 제거해야 합니다.
2026-08-20 · 11 min read
#frontend#dom#react#testing
드롭한 폴더는 0바이트 파일로 온다 — webkitGetAsEntry 로 가려내기
드래그로 드롭한 폴더는 size 0인 File로 섞여 들어와 파일과 구분되지 않는데, drop 핸들러 안에서 동기로 webkitGetAsEntry()를 호출해야 폴더를 가려낼 수 있습니다.
2026-08-14 · 10 min read
#frontend#drag-and-drop#browser-api#ux
사파리에서만 클립보드 복사가 실패하는 이유 — transient activation
사파리에서 클립보드 복사가 실패하는 이유는 비동기 네트워크 요청으로 인해 사용자 제스처가 만료되기 때문이며 이를 해결하려면 복사 로직을 요청보다 앞서 실행하거나 Promise를 활용해 쓰기를 예약해야 합니다
2026-08-11 · 7 min read
#frontend#safari#clipboard#browser-api
idx_scan=0 은 인덱스가 필요없다는 뜻이 아니다 — OR 한쪽이 인덱스를 잠근다
OR로 묶인 조건은 한쪽에 인덱스가 없으면 전체가 Seq Scan으로 떨어져, idx_scan=0인 인덱스도 불필요해서가 아니라 잠긴 것일 수 있습니다. 쿼리를 둘로 분리하자 응답이 3,866ms에서 137ms로 줄었습니다.
2026-08-07 · 9 min read
#postgresql#index#pg_trgm#performance