전체 글98 [network] TCP vs UDP - 신뢰성과 지연의 교환 TCP는 연결을 세우고 순서·재전송을 보장하는 대신 지연을 얹고, UDP는 보장을 포기해 지연을 줄인다. 늦게 도착한 데이터가 이미 의미를 잃는 전송이라면 UDP가 맞다.화상 통화에서 1초 전 목소리가 뒤늦게 재생되면 차라리 없는 게 낫습니다. 반대로 계좌 이체 요청이 순서가 뒤바뀌어 도착하면 사고입니다. 전송 계층에 TCP와 UDP가 둘 다 남아 있는 이유가 여기 있습니다.전송 계층이 하는 일IP는 패킷을 목적지까지 보내려 시도하지만, 도착 순서나 도착 자체를 보장하지 않습니다. 그 위에서 애플리케이션이 쓸 수 있는 형태로 다듬는 게 전송 계층입니다. TCP와 UDP는 같은 자리에서 정반대 선택을 합니다.TCP - 보장을 위해 왕복을 지불한다TCP는 데이터를 보내기 전에 3-way handshake로 .. 2026. 9. 12. [sql] DISTINCT - 중복을 지우기 전에 원인을 찾는다 DISTINCT는 SELECT 목록 전체를 기준으로 삼아 한 열만 지우지 않는다. 조인이 만든 중복은 DISTINCT로 덮어도 집계가 틀린 채 남는다.조회 결과에 같은 항목이 여러 번 나와서 DISTINCT를 붙였습니다. 그런데 여전히 중복이 보입니다. 열을 하나 더 넣으면 다시 늘어나고, 어떤 경우엔 DISTINCT를 붙이니 합계가 이상해집니다.한 열만 지울 수는 없다SELECT DISTINCT 는 행 전체가 같을 때만 하나로 합칩니다. SELECT DISTINCT city, name 이라고 쓰면 "도시만 중복 제거" 가 아니라 "(도시, 이름) 쌍이 같은 것만 제거" 입니다.실행해 보면 분명합니다. 고객과 주문을 조인한 뒤 SELECT DISTINCT c.city, o.id 는 5행이 나오고 서울이 .. 2026. 9. 11. [design] REST API 설계 - 자원·메서드·상태 코드 잘 설계된 REST API는 예측 가능하다. 자원은 명사 URL, 행위는 HTTP 메서드, 결과는 상태 코드 - 세 축이 일관되면 처음 보는 API도 짐작이 간다. REST API가 "잘 설계됐다"는 건 대개 예측 가능하다는 뜻입니다. POST /deleteUser를 처음 본 개발자는 문서를 다시 열어야 하지만, DELETE /users/1은 설명이 필요 없습니다.자원 중심 설계REST는 데이터를 자원(명사) 으로 보고 URL로 식별합니다. 동사를 URL에 넣지 않습니다.좋음: GET /users/1, GET /users/1/orders피함: GET /getUser/1, POST /createUser — URL에 동사가 들어간 형태계층은 경로로, 필터·정렬은 쿼리스트링으로 표현합니다(GET /orders.. 2026. 9. 6. [python] 가상환경과 pyproject - "내 컴퓨터에서는 되는데"를 없애는 자리 가상환경은 프로젝트마다 의존성을 격리하고, pyproject.toml은 무엇이 필요한지를 한 파일에 모은다. 편집 가능 설치를 쓰면 경로를 만지지 않고도 소스를 그대로 import할 수 있다. 동료 컴퓨터에서는 되는 스크립트가 제 자리에서는 임포트부터 실패합니다. 라이브러리를 깔았더니 이번에는 다른 프로젝트가 깨집니다. sys.path 를 손으로 조작하는 코드가 파일 맨 위에 붙어 있고, 아무도 그 줄을 지우지 못합니다. 가상환경을 쓰라는 말은 여러 번 들었는데, 그것이 이 증상들과 어떻게 연결되는지가 분명하지 않습니다.왜 격리부터 시작하나파이썬은 라이브러리를 인터프리터에 딸린 한 곳에 설치합니다. 프로젝트가 하나면 문제가 없지만, 둘이 같은 라이브러리의 다른 버전을 요구하는 순간 충돌합니다. 한쪽을 올.. 2026. 9. 6. [react] VirtualDOM - 보이는 것만 그리면 노드 수가 데이터에서 떨어진다 긴 목록이 느린 이유는 대개 React가 아니라 DOM 노드 수다. 화면에 보이는 구간만 그리면 노드 수가 화면 크기에 비례하게 되어 데이터가 늘어도 변하지 않는다. 만 건짜리 목록 화면이 열릴 때 몇 초씩 멈춥니다. memo 를 붙이고 렌더 최적화를 다 해 봤는데 그대로입니다. 성능 패널로 재 보면 React 가 쓰는 시간보다 그 뒤 브라우저의 레이아웃·페인트가 훨씬 깁니다. 가상화를 쓰라는 말은 들었는데, 그게 무엇을 줄여 주는지가 안 잡힙니다.느린 것은 React 가 아닐 수 있다목록이 느릴 때 먼저 의심하는 것은 React 렌더입니다. 그런데 만 건짜리 목록에서는 브라우저가 노드를 배치하고 그리는 비용이 더 큽니다. React DevTools 프로파일러는 렌더와 커밋까지만 재므로 여기서는 도움이 .. 2026. 9. 6. 이전 1 2 3 4 ··· 20 다음