전체 글 459

Git scalar 기준

Git scalar는 큰 Git 저장소를 더 다루기 쉽게 만들기 위한 저장소 관리 도구다. 새 VCS가 아니라 Git 명령 체계 안에서 동작하며, sparse checkout, partial clone 성격의 초기 clone, background maintenance, 대형 저장소용 권장 설정을 한 흐름으로 묶어 준다.2026년 10월 9일 확인 기준 Git 공식 문서는 Scalar를 대형 저장소에서 Git을 최적화하기 위한 도구로 설명한다. 핵심 판단은 단순하다. 저장소가 작고 일반적인 개발 흐름이면 보통 기존 git clone과 git maintenance만으로 충분하다. 반대로 파일 수가 많고 clone, fetch, status, history 조회 비용이 계속 문제가 된다면 scalar를 검토할..

PostgreSQL BRIN index 기준

본문 중간의 쿠팡 추천 상품 구매시 쿠팡 파트너스에서 일정액의 수수료를 제공받습니다.PostgreSQL에서 BRIN index는 큰 테이블을 작게 요약해 읽기 범위를 줄이는 index다. B-tree처럼 개별 row 위치를 촘촘하게 찾는 구조가 아니라, table의 연속된 heap block 범위마다 값의 요약 정보를 저장한다.기준은 단순하다. 값이 물리적 저장 순서와 잘 맞는 큰 테이블이라면 BRIN을 검토할 수 있다. 시간순으로 쌓이는 로그, 증가하는 식별자, 날짜별 이력처럼 최근에 입력된 row가 비슷한 값 범위에 모이는 경우가 대표적이다. 반대로 값이 table 전체에 무작위로 흩어져 있으면 BRIN은 많은 block range를 후보로 남기므로 효과가 작아질 수 있다.BRIN은 무엇을 저장할까?..

CSS field-sizing 기준

본문 중간의 쿠팡 추천 상품 구매시 쿠팡 파트너스에서 일정액의 수수료를 제공받습니다.field-sizing은 기본 크기를 가진 폼 컨트롤을 내용 기준으로 크기 조정할지 정하는 CSS 속성입니다. 기본값은 fixed이고, content를 쓰면 입력값, placeholder, 선택된 옵션처럼 컨트롤 안에 보이는 내용에 맞춰 크기가 달라질 수 있습니다.실무에서 핵심은 “입력칸을 자동으로 예쁘게 만든다”가 아니라 “브라우저가 정한 기본 preferred size를 계속 쓸 것인가, 현재 내용의 intrinsic size를 기준으로 삼을 것인가”입니다. 짧은 태그 입력, 검색어 입력, 선택된 옵션 폭에 맞는 select처럼 내용 길이가 UI 의미와 직접 연결될 때 검토할 만합니다.field-sizing은 무엇을 ..

HTTP Alt-Svc 기준

Alt-Svc는 서버가 같은 원본을 다른 네트워크 위치나 프로토콜로도 제공할 수 있다고 클라이언트에 알려 주는 HTTP 응답 헤더입니다. 주소창의 URL이나 HTTP 의미가 바뀌는 것은 아닙니다. 클라이언트가 이후 새 연결을 열 때, 같은 origin에 대해 HTTP/3, 다른 포트, 다른 호스트 같은 대체 서비스를 시도할 수 있게 하는 광고에 가깝습니다.실무 기준은 세 가지입니다. 첫째, Alt-Svc는 리다이렉트가 아니므로 사용자에게 보이는 URL을 바꾸지 않습니다. 둘째, ma 동안 캐시될 수 있으므로 잘못 광고하면 장애가 잠깐이 아니라 설정한 시간만큼 이어질 수 있습니다. 셋째, 크롤러나 HTTP 클라이언트는 이 헤더를 반드시 따라야 하는 규칙이 아니라 지원 가능한 경우 선택적으로 쓰는 경로로 봐..

리눅스 cgroup v2 cpu.max 기준

리눅스에서 특정 서비스의 CPU 사용량을 제한할 때 cpu.max를 단순한 우선순위 설정으로 보면 판단이 어긋납니다. cgroup v2의 CPU controller에는 상대적인 배분을 다루는 cpu.weight와, 일정 기간 안에서 쓸 수 있는 최대 CPU 시간을 제한하는 cpu.max가 함께 있습니다.결론부터 말하면 cpu.max는 “남는 CPU를 얼마나 받을지”가 아니라 “이 cgroup이 일정 기간마다 최대 얼마까지 CPU 시간을 쓸 수 있는지”를 정하는 절대 대역폭 제한입니다. systemd 환경에서는 보통 CPUQuota=, CPUQuotaPeriodSec=, CPUWeight=를 먼저 읽고, 실제 cgroup 파일에서는 cpu.max, cpu.weight, cpu.stat을 함께 확인하는 흐름..

Git interpret-trailers 기준

본문 중간의 쿠팡 추천 상품 구매시 쿠팡 파트너스에서 일정액의 수수료를 제공받습니다.Git interpret-trailers는 commit message 끝부분에 붙는 구조화된 metadata를 추가하거나 파싱하는 명령이다. 대표적인 예는 Signed-off-by, Reviewed-by, Co-authored-by처럼 본문 설명과 분리해서 남기는 key-value 줄이다.실무 기준은 단순하다. 사람이 읽는 commit message 본문에는 변경 이유를 쓰고, 자동화나 검색이 읽어야 하는 반복 metadata는 trailer로 분리한다. 다만 trailer는 commit 내용을 대신하는 본문이 아니라, 메시지 끝의 정해진 block으로 해석되는 부가 정보라는 점을 먼저 잡아야 한다.trailer는 어디에..

PostgreSQL visibility map 기준

PostgreSQL에서 Index Only Scan이 보이는데도 Heap Fetches가 함께 나온다면, 핵심은 index 자체보다 visibility map에 있다. PostgreSQL index에는 MVCC visibility 정보가 들어 있지 않기 때문에, 어떤 row version이 현재 쿼리에서 보여도 되는지는 원칙적으로 heap을 확인해야 한다.결론부터 말하면 visibility map은 heap page 단위로 “이 page의 tuple은 모두 현재와 미래 트랜잭션에 보인다”는 사실을 표시하는 보조 구조다. 이 표시가 충분히 세워져 있으면 일부 쿼리는 index만 읽고 결과를 반환할 수 있다. 반대로 최근에 자주 바뀐 테이블에서는 index가 잘 설계되어 있어도 heap 접근이 남을 수 있다..

systemd journald rate limit 기준

systemd-journald의 rate limit은 로그가 너무 빠르게 쏟아질 때 journal 저장소와 후속 로그 처리를 보호하기 위한 제한이다. journald.conf의 RateLimitIntervalSec=와 RateLimitBurst=가 기본값을 정하고, 특정 systemd service는 LogRateLimitIntervalSec=, LogRateLimitBurst=로 별도 값을 가질 수 있다.핵심은 “로그를 얼마나 오래 보관할까”가 아니라 “짧은 시간에 한 서비스가 얼마나 많이 기록할 수 있을까”다. 로그 저장 용량 문제는 SystemMaxUse=, RuntimeMaxUse=, journalctl --vacuum-* 같은 설정과 명령의 영역이고, rate limit은 폭주하는 로그 메시지를..

CSS light-dark() 기준

light-dark()는 현재 적용된 CSS color-scheme에 따라 밝은 모드용 값과 어두운 모드용 값 중 하나를 고르는 함수입니다. 다크 모드 대응을 모두 @media (prefers-color-scheme) 블록으로 나누지 않고, 색상 값이 필요한 자리에서 두 값을 직접 묶어 표현할 수 있습니다.결론부터 말하면, 배경색, 글자색, 테두리색처럼 같은 역할의 색상 토큰을 밝은 모드와 어두운 모드로 나눠야 할 때 light-dark()가 잘 맞습니다. 단, 이 함수가 사용자 설정을 직접 읽는 마법 같은 기능은 아닙니다. 실제 선택 기준은 요소에 적용된 color-scheme이므로, 보통 문서 루트에 color-scheme: light dark;를 함께 선언해야 의도가 분명해집니다.light-dark..

Java Stream Gatherers 기준

Java Stream Gatherers는 Stream 파이프라인에 사용자 정의 중간 연산을 넣기 위한 API다. 기존 Stream API는 map, filter, flatMap처럼 미리 정해진 중간 연산과 collect 같은 터미널 연산을 제공한다. Gatherer는 이 사이에 새 변환 단계를 재사용 가능한 형태로 끼워 넣는 기준을 제공한다.실무 기준은 단순하다. 결과를 마지막에 모으는 문제라면 Collector가 맞고, Stream 흐름 중간에서 요소를 여러 개로 묶거나, 앞선 상태를 기억하며 값을 내보내거나, 제한된 동시성으로 변환해야 한다면 Gatherer를 검토할 수 있다. Java 24 이후의 API를 전제로 해야 하며, 구버전 JDK 호환성이 필요하면 별도 대안을 남겨야 한다.Gatherer는..

페이스북으로 공유카카오톡으로 공유카카오스토리로 공유트위터로 공유URL 복사