<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>기술 블로그 | OrangeLabs</title>
    <link>https://www.orangelabs.xyz/resources/tech-blog</link>
    <description>오렌지랩스 엔지니어링 팀의 문제 해결 기록, 제품 업데이트, 업계 관점을 공유합니다.</description>
    <language>ko</language>
    <atom:link href="https://www.orangelabs.xyz/rss.xml" rel="self" type="application/rss+xml" />
    <lastBuildDate>Mon, 14 Sep 2026 00:00:00 +0900</lastBuildDate>
    <item>
      <title>프로세스 부하 지수 재산정과 반복 명령 보관 정책 구현 — 주간 리뷰 (2026-09-14)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w38</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w38</guid>
      <description>sprocess rev.28, 자원 baseline, 반복 실행 스케줄, COM 통신 실패 탐지를 구현한 Orange Labs 주간 개발 기록</description>
      <category>Dev Log</category>
      <pubDate>Mon, 14 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>지각 전송은 90일, 미래 시각은 5분: 에이전트 시계 오차를 비대칭으로 처리한 이유</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/agent-clock-skew-asymmetric-timestamp-tolerance</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/agent-clock-skew-asymmetric-timestamp-tolerance</guid>
      <description>프로세스 수집 서버가 에이전트 시각의 과거·미래 오차를 모두 90일까지 허용해, 미래 자료가 집계를 오염시키고 최대 270일 남을 수 있었다. 지각 전송은 보존하면서 미래 시각만 5분으로 제한한 근거와 검증 결과를 정리한다.</description>
      <category>Guide</category>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>MongoDB 정규식 검색이 워커를 28초 묶고 결과까지 빠뜨린 이유</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/mongodb-regex-search-timeout-and-silent-mismatch</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/mongodb-regex-search-timeout-and-silent-mismatch</guid>
      <description>감사 로그 검색어를 이스케이프하지 않고 MongoDB $regex에 넣어, 파국적 역추적이 워커를 최대 28초 점유하고 일부 문서는 조용히 불일치로 처리됐다. 기본 검색을 부분 일치로 바꾸고 정규식은 선택 기능과 5초 상한으로 분리한 과정을 정리한다.</description>
      <category>Guide</category>
      <pubDate>Thu, 10 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>문서 한 건이 목록 전체를 막고 페이지마다 항목이 바뀌던 MongoDB 조회 수정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/mongodb-stable-pagination-and-tolerant-document-parsing</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/mongodb-stable-pagination-and-tolerant-document-parsing</guid>
      <description>명령 이력 문서 한 건의 필드 타입이 다르면 페이지 전체가 500 오류를 냈고, created가 같은 문서는 skip/limit 페이지에서 중복·누락됐다. 필드별 관용 파싱과 created·_id 복합 정렬 및 인덱스로 두 문제를 해결하고 50만 건에서 조회 계획을 검증했다.</description>
      <category>Guide</category>
      <pubDate>Wed, 09 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>월간 개발 리뷰 — 2026년 8월 (8/1~8/31)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/monthly-review-202608</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/monthly-review-202608</guid>
      <description>온프레미스 AI 진단의 응답 속도와 안정성, 자체 원격 화면 제어 완성, 프로세스 저장 구조 개편, 매니저 전 위젯 영어화 등 2026년 8월 Orange The Client 개발 성과를 정리합니다.</description>
      <category>Dev Log</category>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>그룹 명령이 엉뚱한 PC로 나가던 문제와 로컬 LLM 엔진 교체 — 주간 개발 리뷰 2026년 37주차 (8/31~9/7)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w37</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w37</guid>
      <description>명령 대상 해석을 집합 기반으로 재설계해 그룹 명령이 엉뚱한 노드로 나가던 문제를 잡고, 정팀장 로컬 LLM을 llama.cpp로 옮겼습니다. CPU 과점 탐지 2단계 판정, 노드 위젯 리스트형 뷰, 포트별 연결 기기 관측까지 이번 주 Orange The Client 개발 성과를 정리합니다.</description>
      <category>Dev Log</category>
      <pubDate>Mon, 07 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>서버가 꺼져 있어도 단말 수집은 계속돼야 한다 — 에이전트 시작을 13초 붙잡던 동기 서버 등록 대기 제거</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/agent-startup-blocked-synchronous-server-registration</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/agent-startup-blocked-synchronous-server-registration</guid>
      <description>Windows 엔드포인트 에이전트가 시작할 때 첫 SETTINGS 회차를 무한 대기하는데, 그 회차가 서버 등록을 품고 있어 커널 드라이버 로드와 이벤트 수집 시작이 서버 상태에 묶여 있었다. 서버가 꺼진 폐쇄망에서 매 시작마다 접속 실패 비용을 내던 CAgentHelper3::Start 13초 대기를, 대기가 지키던 전제가 이미 앞쪽으로 옮겨졌음을 코드로 확인하고 삭제한 과정.</description>
      <category>Guide</category>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>상주 프로세스 텔레메트리가 서버에서 간헐 누락되는 이유 — 에이전트 4건·서버 1건 복합 원인 전수 분석</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sprocess-telemetry-server-loss-five-root-causes</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sprocess-telemetry-server-loss-five-root-causes</guid>
      <description>상주 프로세스(Meter.exe)의 sprocess가 서버 raw·hourly·daily에 간헐적으로 누락되는 문제를 에이전트·서버 코드와 실측으로 전수 분석했다. 원인은 단일이 아니라 발행 throttle, 열린 버킷의 timestamp NULL, QoS 0 전송 유실, 정렬·처리량 상한에 따른 과거 band starvation, 서버의 지각 도착 hour 미재집계까지 다섯 가지의 복합이었다. &apos;변화 없으면 hourly 누락&apos;이라는 의심 경로는 아님으로 확인한 과정을 포함한다.</description>
      <category>Guide</category>
      <pubDate>Fri, 04 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>네트워크 없이 부팅하면 coturn이 살아나지 않는다 — systemd 재시도 한계와 도커 브리지 함정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/coturn-systemd-boot-without-network-recovery</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/coturn-systemd-boot-without-network-recovery</guid>
      <description>현장 설치에서 네트워크를 연결하지 않은 채 서버를 먼저 부팅하면 coturn이 기동에 실패한 뒤 네트워크를 꽂아도 스스로 올라오지 않았다. 원인은 세 가지 — 리슨 주소가 루프백뿐이면 종료, systemd 기본 시작 제한(10초 내 5회)에 걸려 영구 포기, 그리고 나중에 뜬 도커 브리지에만 바인딩해 active인데 닿지 않는 상태. 세 원인을 컨테이너로 재현하고 드롭인 하나로 전부 막은 과정.</description>
      <category>Guide</category>
      <pubDate>Thu, 03 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>부팅으로 가장 바쁜 순간에 얹히던 WAL 체크포인트 1.4초 — 주기 루프 첫 틱을 건너뛰다</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sqlite-wal-checkpoint-first-tick-startup-io</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sqlite-wal-checkpoint-first-tick-startup-io</guid>
      <description>SQLite WAL 체크포인트를 5분 주기로 도는 루프가 카운터 0에서 시작해 첫 틱에도 즉시 발동했다. 시작 폭풍이 WAL에 쓴 분량을 HDD에서 곧바로 회수하느라 부팅 직후에 디스크 I/O 1.4초를 얹던 문제를, 같은 파일의 다른 주기 잡이 이미 쓰던 &apos;실행 직후 최초 시점엔 실행 안 함&apos; 방어를 체크포인트 블록에도 넣어 해결한 과정.</description>
      <category>Guide</category>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>삭제 0건인데 6.4초 — SQLite &lt;&gt; 조건의 풀스캔과 재시작마다 반복되는 정리 배치</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sqlite-delete-full-scan-boot-cleanup-restart-gate</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sqlite-delete-full-scan-boot-cleanup-restart-gate</guid>
      <description>에이전트 시작 시 이전 부팅 데이터 정리 배치 다섯 쿼리가 모두 삭제 0건인데 6.4초를 썼다. WHERE BootUID &lt;&gt; ? 가 SQLite에서 인덱스를 타지 않아 44,210행 테이블을 콜드 캐시에서 전량 스캔한 것이 원인이었다. &lt;&gt; 를 &lt; OR &gt; 로 재작성해 커버링 인덱스로 바꾸고, 같은 부팅의 재시작에서는 정리를 건너뛰는 게이트를 신설한 과정.</description>
      <category>Guide</category>
      <pubDate>Mon, 31 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>인덱스를 타는데도 매 시작 1.2초 — 부분 인덱스로 죽은 백필 쿼리 잡기</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sqlite-partial-index-backfill-query-startup</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sqlite-partial-index-backfill-query-startup</guid>
      <description>SQLite에서 인덱스를 타는데도 시작마다 1,179ms를 쓰던 UID 백필 쿼리를 분석했다. 전체 행의 65%가 CompanyUID=0이고 전부 회사명이 빈 파일이라, 인덱스 탐색이 그 3,354행을 전부 짚고 행마다 테이블을 읽어 콜드 캐시에서 HDD 랜덤 읽기 3,354회가 됐다. 쿼리와 C++ 코드는 그대로 두고 인덱스 선언만 부분 인덱스로 바꿔 탐색이 즉시 끝나게 한 과정.</description>
      <category>Guide</category>
      <pubDate>Mon, 31 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>주간 개발 리뷰 — 2026년 36주차 (8/24~8/31)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w36</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w36</guid>
      <description>AI 백엔드 자동 복구와 첫 응답 지연 단축, 모니터링 그룹 기능, sprocess 저장 구조 개편 등 이번 주 Orange The Client 개발 성과를 정리합니다.</description>
      <category>Dev Log</category>
      <pubDate>Mon, 31 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>룰이 900을 1000보다 크다고 판정했다 — 문자열로 비교되던 숫자 룰</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/rule-engine-string-vs-number-comparison</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/rule-engine-string-vs-number-comparison</guid>
      <description>에이전트 룰 엔진의 크기 비교가 숫자가 아니라 글자순으로 이뤄지고 있었다. 자릿수가 다르면 판정이 뒤집혀, 크기 비교를 쓰는 룰 7건 중 5건이 틀린 판정을 냈다. ETW 값이 전부 문자열로 들어오는 지점부터 비교기·시간차 계산까지 원인 세 곳을 짚고, 룰 파일을 한 글자도 고치지 않고 엔진에서 흡수한 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>무한 누적되는 시계열에 TTL을 걸기 위해 — 최초 관측·신원을 차원 테이블로 분리</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sprocess-registry-dimension-table-raw-ttl</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sprocess-registry-dimension-table-raw-ttl</guid>
      <description>프로세스 텔레메트리 raw가 37일 만에 4.52GB로 무한 누적되는데 TTL을 걸 수 없었다. &apos;이 프로그램을 처음 본 게 언제냐&apos; 류의 평생 질문이 raw 전 기간 조회에 의존했기 때문이다. SUID당 1문서의 차원 테이블 sprocess_registry로 최초 관측·신원 메타를 이관해, 카드가 하나도 없어도 모든 응답이 정답이 되도록 만든 설계 판단 네 가지.</description>
      <category>Guide</category>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>정상 트래픽이 탐지를 지우고, 정상 RST가 탐지를 채운다 — ETW TCP 노이즈 처리 두 가지</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/tcp-detection-noise-filter-rst-rate-limit</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/tcp-detection-noise-filter-rst-rate-limit</guid>
      <description>에이전트의 ETW TCP 처리에서 벤더 노이즈 필터가 서킷 브레이커·TCB 정리보다 앞서 리턴해 카운터와 연결 맵을 망가뜨리고 있었다. 서브스트링 매칭은 무관 도메인의 증상을 조용히 숨겼고, 공유 IP는 마지막 DNS 결과에 따라 필터 여부가 뒤집혔다. 필터를 장부 처리 뒤로 옮기고 경계 매칭으로 바꾼 것, 그리고 정상 운영에서도 반복되는 TCP RST 탐지에 시간창 레이트 리밋을 건 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 28 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>자체 WebRTC 원격 제어·서버 데이터 파이프라인·68위젯 RBAC·증상→이슈 제품 축 — 분기 리뷰 (2026 Q3)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/quarterly-review-2026-q3</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/quarterly-review-2026-q3</guid>
      <description>매니저·에이전트 파트가 상용 라이브러리 없이 DXGI+Media Foundation+WebRTC 원격 화면 제어를 자체 구현해 폐쇄망 TCP 릴레이까지 실전 배포하고, 서버 백엔드 파트가 프로세스 영향도 서버 파이프라인과 process.py 배치 재설계로 대량 노드 메시지 유실을 없앴으며, 분석 서비스 파트가 68위젯 대시보드에 역할 기반 권한(RBAC) 프론트를 전면 구축하고, 룰·데이터 분석 파트가 증상을 &apos;이슈&apos;로 승격하는 제품 축(조건·근거·조치·검증)을 재정의했다. 커널 드라이버 파트는 orange.sys 언로드 데드락과 DNS ETW 의미를 재정합하고, 프론트엔드 파트는 프로세스 위젯 재설계와 AG-Grid 정렬 comparator 전역 도입으로 프론트 신뢰성을 끌어올렸다.</description>
      <category>Dev Log</category>
      <pubDate>Sun, 23 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>주간 개발 리뷰 — 2026 W34 (08-17 ~ 08-23)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w34</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w34</guid>
      <description>이번 주 Orange 플랫폼 팀이 진행한 작업을 규모가 아니라 질 기준으로 정리했다. 라이브 응답·타임라인 흐름 개선, 프로세스 영향도 서버 파이프라인 안정화, 에이전트 성능 계측 확장, 규칙/정책·프론트 위젯 대량 정리까지 한 주의 흐름을 요약한다.</description>
      <category>Dev Log</category>
      <pubDate>Sun, 23 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>삭제한 노드가 화면에서 부활한다 — 집계 컬렉션 cascade와 되살아나는 행</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/node-delete-aggregation-resurrection-race-cascade</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/node-delete-aggregation-resurrection-race-cascade</guid>
      <description>노드를 삭제해도 프로세스 집계가 남아 삭제된 노드가 위젯에 영구 잔존했다. 원인은 cascade 누락이었지만, 단순히 집계를 지우면 집계 데몬이 남은 raw로 행을 되살리는 부활 race가 있었다. 삭제 순서를 고정하고 고아 행을 정리하고 meta 조회에 fallback을 붙인 데이터 무결성 트러블슈팅.</description>
      <category>Guide</category>
      <pubDate>Fri, 21 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>덤프 분석에서 ntdll.dll이 원인으로 나온다면 — 예외 시점 컨텍스트로 콜스택 걷기</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/crash-dump-ntdll-not-the-cause-exception-context-stack</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/crash-dump-ntdll-not-the-cause-exception-context-stack</guid>
      <description>프로세스 크래시 덤프를 분석하면 원인이 자꾸 ntdll.dll로 나온다. ntdll은 검출 지점이지 원인이 아니다. 덤프 기록 시점이 아니라 .ecxr(예외 시점 컨텍스트)에서 콜스택을 걸어야 진짜 원인을 짚을 수 있다는, 7개 증적 덤프로 확인한 트러블슈팅.</description>
      <category>Guide</category>
      <pubDate>Wed, 19 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>DNS ETW 이벤트 ID의 의미를 잘못 읽으면 — 탐지 6.6배 폭증과 죽어 있던 실패 탐지</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/dns-etw-event-semantics-dead-detection-code</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/dns-etw-event-semantics-dead-detection-code</guid>
      <description>에이전트의 DNS-Client ETW 처리에서 이벤트 ID의 실제 의미가 어긋나 있었다. 로컬 캐시 조회를 서버 통신으로 착각해 정상 PC에서 탐지가 2,491건→13,509건으로 뛰었고, 정작 진짜 실패 탐지(3008)는 통째로 죽어 있었다. 매니페스트와 폐쇄망 재현으로 이벤트 하나하나의 의미를 확정한 기록.</description>
      <category>Guide</category>
      <pubDate>Wed, 19 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>윈도우 방화벽이 막았는데 탐지가 안 된다 — ETW TCP 이벤트의 Domain 필드 함정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/firewall-block-detection-etw-tcp-domain-field</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/firewall-block-detection-etw-tcp-domain-field</guid>
      <description>윈도우 방화벽으로 나가는 연결을 막아도 에이전트가 증상을 못 만들던 문제. 룰 매칭 직전의 Domain 필드 검사가 방화벽 차단(1020)·커널 자원 부족(1030)·포트 고갈(1050) 이벤트를 통째로 걸러내고 있었다. ETW 트레이스로 원인을 짚고 고친 기록.</description>
      <category>Guide</category>
      <pubDate>Wed, 19 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>0x9F 블루스크린에서 진짜 원인 드라이버 찾기 — 디바이스 스택 워킹으로 미니포트 특정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/kernel-dump-device-stack-walking-culprit-driver</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/kernel-dump-device-stack-walking-culprit-driver</guid>
      <description>0x9F(DRIVER_POWER_STATE_FAILURE)는 콜스택 폴백이 항상 ntoskrnl.exe로 나와 진짜 원인 드라이버를 못 짚는다. DEVICE_OBJECT/DRIVER_OBJECT를 직접 워킹해 PDB 없이도 원인 미니포트를 특정하고, 크래시를 10개 범주로 분류하며, WHEA 레코드를 파싱해 하드웨어 결함까지 짚어낸 덤프 분석기 개선기.</description>
      <category>Guide</category>
      <pubDate>Wed, 19 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>체크박스는 툴팁만 숨기고 있었다 — &apos;모바일 자동 로그아웃 미적용&apos;이 실제로는 로그아웃을 막지 않던 버그</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/mobile-auto-logout-option-only-hid-tooltip</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/mobile-auto-logout-option-only-hid-tooltip</guid>
      <description>매니저 설정의 &apos;모바일 기기에서 자동 로그아웃 미적용&apos; 옵션을 켜도 모바일에서 그대로 로그아웃됐다. 이 옵션이 실제로 바꾸는 건 남은 시간 툴팁을 숨기는 것뿐이었다. 옵션을 켠 사용자가 카운트다운도 못 본 채 예고 없이 튕기던, 설정값 때문에 오래 가려져 있던 버그의 진단 기록.</description>
      <category>Guide</category>
      <pubDate>Tue, 18 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>만료 없이 무한 누적되던 매니저 세션 정리 — 유휴 하한 + 절대 만료 두 축으로</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/manager-session-expiry-idle-floor-absolute-timeout-zombie-cleanup</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/manager-session-expiry-idle-floor-absolute-timeout-zombie-cleanup</guid>
      <description>유휴 만료를 끄면(maxIdleTime=0) 세션을 끝낼 수단이 완전히 사라지는 구조 탓에 Redis에 세션이 TTL 없이 수천 개 쌓였다. 비활성 super_admin 토큰이 그대로 유효하던 실측 현황과, 유휴 만료 하한(12시간) + 절대 만료(24시간)로 정비하고 좀비 세션을 1회 정리한 기록.</description>
      <category>Guide</category>
      <pubDate>Sat, 15 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>백신이 우리 워치도그를 드로퍼로 오탐하다 — PowerShell EncodedCommand를 네이티브 실행으로 걷어낸 이야기</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/endpoint-protection-false-positive-watchdog-powershell-to-native</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/endpoint-protection-false-positive-watchdog-powershell-to-native</guid>
      <description>Symantec Endpoint Protection이 에이전트 워치도그 예약 작업을 Scr.Malcode!gen77로 격리했다. EncodedCommand + ExecutionPolicy Bypass + TLS 검증 무력화 + 무인 다운로드 실행이 정확히 드로퍼 휴리스틱에 걸린 사건과, PowerShell 게이트를 네이티브 코드로 옮겨 스크립트 자체를 없앤 대응 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 14 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>지각 도착한 텔레메트리가 시간별 집계에서 사라지는 문제 — 도착 곡선에 맞춘 4단 재집계 사다리</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/late-arriving-telemetry-hourly-reaggregation-arrival-curve-ladder</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/late-arriving-telemetry-hourly-reaggregation-arrival-curve-ladder</guid>
      <description>QoS 0로 늦게 도착한 프로세스 데이터가 raw에는 있는데 hourly 집계에는 없는 구멍. 매시간 최근 24시간을 전부 재집계하는 창 방식 대신, 실측 누적 도착 곡선의 계단을 노려 이득이 몰린 지점만 재방문하는 설계로 8배 저렴하게 구멍을 메운 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 14 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>원격제어 화질이 흐려지고 CPU가 100%로 — MF_E_TRANSFORM_STREAM_CHANGE 재협상을 놓쳐 소프트웨어 인코딩에 갇힌 사건</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/remote-desktop-hardware-encoder-stream-renegotiation-mf-transform-stream-change</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/remote-desktop-hardware-encoder-stream-renegotiation-mf-transform-stream-change</guid>
      <description>Intel Iris Xe 노트북에서 원격제어 화질이 뭉개지고 대상 PC의 CPU가 100%로 찼다. 하드웨어 인코더가 보낸 스트림 재협상 신호(0xC00D6D61)를 로그만 찍고 넘긴 탓에 소프트웨어 폴백으로 고착된 원인 분석과, 재협상 처리·전송품질 사다리 승급 게이트 수정 기록.</description>
      <category>Guide</category>
      <pubDate>Wed, 12 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>현장 블루스크린 305건을 7개 범주로 나누다 — BSOD 카테고리화와 실측 분포</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/bsod-categorization-crash-corpus-distribution</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/bsod-categorization-crash-corpus-distribution</guid>
      <description>실제 고객 현장에서 수집한 블루스크린(BSOD) 305건을 Driver·Kernel·Memory·Hardware·Disk/Power·Security/Boot·Misc 7개 범주로 분류한 결과. 어떤 유형이 얼마나 자주 발생하는지, 각 범주가 무엇을 뜻하는지 정리한 리포트.</description>
      <category>Report</category>
      <pubDate>Tue, 11 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>자체 원격 화면 제어 완성과 coturn 표준화·연결 경로 다단화, Signal Command와 노드 자산 번들 API·MQTT 토픽 격리, 그룹 현황 랜딩과 에이전트 드라이브 독립화 — 주간 리뷰 (2026-08-03 ~ 2026-08-10)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w33</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w33</guid>
      <description>매니저·에이전트 파트가 원격 화면 제어를 DXGI+MF H.264+libdatachannel로 자체 구현하고 coturn 표준 편입·P2P→TCP 릴레이 다단 폴백까지 원격 지원 인프라를 실전 배포 단계로 끌어올렸으며, 서버 백엔드 파트가 Signal Command 원격 제어 인프라와 노드 자산 번들 API(2,100요청→1콜)·MQTT 토픽 격리를 배포하고 노드 목록 단일 장애점을 제거, 분석 서비스 파트가 증상 위젯 v3 단일 엔드포인트 통합과 다중 서버 원격 배포를 안정화, 룰·데이터 분석 파트가 에이전트 실행 스펙과 디스크 정리 결함을 분석, 커널 드라이버 파트가 에이전트 드라이브 독립화와 설치 드라이브 선택형 인스톨러를, 프론트엔드 파트가 그룹별 노드 현황 요약 랜딩과 명령 관리 v2·탐지 예외 위젯을 완성한 한 주.</description>
      <category>Dev Log</category>
      <pubDate>Mon, 10 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>경량 명령(Signal Command) 인프라화 — 결과 집계 없는 표준 명령 통로와 &apos;경량 ≠ 무책임&apos; 원칙</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/signal-command-lightweight-infrastructure</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/signal-command-lightweight-infrastructure</guid>
      <description>결과 집계가 필요 없는 경량 명령을 단일 채널(command:signal + dispatch_signal)로 통합하고 그 위에 노드 원격 제어(재시작/업데이트/재부팅/종료)를 단건·그룹으로 개통. 명령의 &apos;무게&apos;를 결과수집·배달보장·감사 3축으로 재정의한 인프라 구축 기록.</description>
      <category>Guide</category>
      <pubDate>Sat, 08 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>업데이트 설치 중 쓰기 유실로 인한 에이전트 집단 분실 사건 — 원인 분석과 자가복구 보강</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/agent-lost-write-corruption-incident</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/agent-lost-write-corruption-incident</guid>
      <description>업데이트 배포 직후 다수 노드에서 에이전트가 종료되고 복구되지 않은 사고를, 스토리지 급정지로 인한 바이너리 쓰기 유실(lost write)로 확정하고 재발 방지 설계를 정리한 사건 분석 리포트.</description>
      <category>Report</category>
      <pubDate>Fri, 07 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>코드 서명 판정에 신뢰 결과 반영하기 — 서명자 이름만 믿으면 변조 서명이 게이트를 통과한다</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/authenticode-signature-trust-verification</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/authenticode-signature-trust-verification</guid>
      <description>Authenticode 검증이 서명자 CN만 파싱하고 신뢰 판정(VERIFY_RESULT)을 버리면 만료·폐기·변조 서명도 통과한다. 폐쇄망 제약 하에서 다이제스트 불일치(변조)만 오프라인으로 판별해 신뢰 판정을 생산·보관한 보안 수정 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 07 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>SQLite WAL 무한 성장 잡기 — 체크포인트 비활성 결함과 zipvfs 제약 하의 크기 감시 설계</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/sqlite-wal-unbounded-growth-checkpoint</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/sqlite-wal-unbounded-growth-checkpoint</guid>
      <description>자동 체크포인트가 꺼진 WAL 모드 SQLite가 디스크를 고갈시킨 결함을, 실측·zipvfs 제약·주기 체크포인트·크기 감시 설계로 해결한 트러블슈팅 기록.</description>
      <category>Guide</category>
      <pubDate>Fri, 07 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>WebRTC 이중 NAT 검은 화면 디버깅 — P2P를 성공으로 오판할 때 미디어 기반 릴레이 강제 전환</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/webrtc-dual-nat-black-screen-relay</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/webrtc-dual-nat-black-screen-relay</guid>
      <description>연결 5단계는 다 통과하는데 영상만 검은 화면. 이중 NAT VM에서 ICE가 P2P를 성공으로 오판해 릴레이로 넘어가지 않던 문제를, &apos;연결 성공&apos;이 아니라 &apos;실제 미디어 도착&apos;을 기준으로 릴레이 전환하도록 고친 트러블슈팅.</description>
      <category>Guide</category>
      <pubDate>Thu, 06 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>WebRTC 기반 자체 원격 화면 제어 구축기 — DXGI 캡처·MF H.264·libdatachannel, 보안 데스크톱과 TCP 릴레이까지</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/webrtc-remote-desktop-control</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/webrtc-remote-desktop-control</guid>
      <description>MeshCentral·RustDesk를 그대로 쓰지 않고 DXGI+Media Foundation H.264+libdatachannel로 웹 뷰어 원격 제어를 자체 구현하고, 로그인 전 보안 데스크톱 제어·세션 전환 무이음·UDP 전면 차단망 TCP both-relay까지 완성한 기록.</description>
      <category>Guide</category>
      <pubDate>Thu, 06 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>AI 원격 진단·자체 원격 화면 제어 배선과 가상 Agent 부하 검증, MongoDB 3계층 계측·mosquitto FD 고갈 crash loop 해소, Node baseline 서비스와 그룹 요약 랜딩 — 주간 리뷰 (2026-07-27 ~ 2026-08-03)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w32</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/weekly-review-2026-w32</guid>
      <description>매니저·에이전트 파트가 AI 원격 진단 Phase 1과 자체 원격 화면 제어(WebRTC/coturn)를 배선하고 가상 Agent(vorange) 부하 테스트 도구로 브로커 FD 고갈을 재현했으며, 서버 백엔드 파트가 MongoDB 3계층 계측과 node.detect 책임 분리를 배포하고 mosquitto watchdog crash loop를 근본 원인까지 규명, 분석 서비스 파트가 AI 진단 감사 범주와 EWMA+CUSUM Node baseline 서비스·고객사 원격 배포 스크립트를 깔고, 룰·데이터 분석 파트가 패치노트 1.6.242.0724와 부하 위젯 프로세스 탭을, 커널 드라이버 파트가 고객사 콜센터 PC명 중복·Delivery Optimization을 분석, 프론트엔드 파트가 그룹별 노드 현황 요약 랜딩과 위젯 레이아웃 편집·시간대 규칙을 정비한 한 주.</description>
      <category>Dev Log</category>
      <pubDate>Mon, 03 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>AI 원격 진단 서버 자율화, Network Zone 위치 판정 엔진, orange.sys IRQL BSOD 근본 수정 — 월간 리뷰 (2026-07)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/monthly-review-202607</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/monthly-review-202607</guid>
      <description>매니저·에이전트 파트가 LLM이 자료를 읽고 필요한 명령만 노드에 발행하는 AI 원격 진단과 증상 확산 예측·부하지수를 고통지수로 재설계, 서버 백엔드 파트가 측정 신호로 PC 위치를 판정하는 Network Zone 엔진(사설대역 무음병합 0건)·MongoDB 운영 지표 계측·폐쇄망 오프라인 보안 업그레이드, 분석 서비스 파트가 파일함 도메인·노드 자원 baseline 서비스(EWMA+CUSUM), 커널 드라이버 파트가 Driver Verifier 0xC4 BSOD를 IRQL 규약 준수로 근본 수정하고 ASEP 시작 프로그램 태깅, 룰·데이터 분석 파트가 &apos;왜 올랐나&apos; 원인 추적 영향도 분석, 프론트엔드 파트가 1:N 명령 관리 ver.2와 그룹별 노드 현황 랜딩을 낸 한 달.</description>
      <category>Dev Log</category>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>PowerShell 프로세스 수집이 간헐적으로 부분 실패하는 이유 — 조회 후 종료 경합과 Split-Path null</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/powershell-process-collection-race-splitpath-null-groupobject</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/powershell-process-collection-race-splitpath-null-groupobject</guid>
      <description>1:N 프로세스 수집 템플릿이 25회 중 4회 부분 실패하던 원인을 추적한 기록. Get-Process를 Where-Object로 거른 뒤 그 프로세스가 종료되면 .Path가 null이 되고, Split-Path가 null을 받아 그 항목이 깨지던 경합을 규명한다. Group-Object가 그룹 이름($_.Name)에 이미 담고 있는 경로 문자열을 재사용해 프로세스 객체를 다시 읽지 않도록 고쳐 부분 실패를 0으로 만들었다.</description>
      <category>Guide</category>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>가상 GPU 노드 원격제어 CPU 부하 최소화 — BGRA→NV12 색변환 정수화 + dirty-rect 부분 갱신</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/remote-control-cpu-integer-color-convert-dirty-rect</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/remote-control-cpu-integer-color-convert-dirty-rect</guid>
      <description>하드웨어 인코더가 없는 가상 GPU(VMware SVGA 3D) 노드의 원격제어 시 CPU 부하를 줄인 2단계 최적화 기록. 소프트웨어 BGRA→NV12 색변환을 부동소수·픽셀당 나눗셈에서 정수 고정소수점으로 재작성해 MSVC /O2의 SSE2 자동 벡터화를 유도하고, DXGI dirty-rect로 바뀐 영역만 GPU→CPU 복사·변환하도록 바꿔 실측 CPU를 10 → 6 이하로 단계적으로 낮췄다.</description>
      <category>Guide</category>
      <pubDate>Sat, 01 Aug 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>자동 복구가 한 번도 동작하지 않았다 — 복구 인스톨러가 자기 부모를 종료시킨 결함</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/agent-auto-recovery-installer-kills-itself-killprocessinpath</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/agent-auto-recovery-installer-kills-itself-killprocessinpath</guid>
      <description>Windows 에이전트의 자동 복구(--recover)가 처음부터 동작하지 않던 원인을 추적한 기록. 복구 인스톨러가 기존 설치 정리(--remove) 단계에서 데이터 경로 하위 프로세스를 통째로 kill하는데, 자기 자신을 실행시킨 부모 인스톨러가 마침 그 경로(Packages\\)에 있어 스스로를 죽이고, 파일 복사도 --install도 못 한 채 10분마다 무한 반복하던 결함을 규명하고 수정 방안을 도출했다.</description>
      <category>Guide</category>
      <pubDate>Fri, 31 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>mosquitto 2.1 watchdog 오탐 crash loop — FD 1024 고갈로 sd_notify가 조용히 유실될 때</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/mosquitto-watchdog-fd-exhaustion-sd-notify-crash-loop</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/mosquitto-watchdog-fd-exhaustion-sd-notify-crash-loop</guid>
      <description>1,000대 동시 접속 부하 테스트 중 mosquitto broker가 8분 주기로 SIGABRT 강제 종료를 반복하던 crash loop를 추적한 기록. systemd 기본 FD soft 한도(1024) 고갈 → sd_notify()용 소켓 생성 실패 → watchdog ping 유실 → systemd가 멀쩡한 broker를 hang으로 오판해 사살하던 인과 체인을 규명하고, LimitNOFILE=65536 drop-in으로 해결했다.</description>
      <category>Guide</category>
      <pubDate>Thu, 30 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>마스터 이미지 복제 환경의 PC명 중복과 다운로드 최적화(Delivery Optimization) 분석</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/windows-machine-name-duplication-delivery-optimization-master-image</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/windows-machine-name-duplication-delivery-optimization-master-image</guid>
      <description>콜센터 고객사 환경에서 다수 PC의 Windows 컴퓨터 이름(hostname/NetBIOS)이 중복 설정된 현상과 Windows 다운로드 최적화(Delivery Optimization) 설정을 분석한 리포트. 두 사안 모두 마스터 이미지 복제로 동일 사양 단말을 다수 배포한 공통 원인에서 파생되며, DO 피어 식별은 PC명이 아닌 랜덤 GUID 기반임을 규명하고, 고유 식별자 수집 방법과 DODownloadMode 권장 설정을 정리했다.</description>
      <category>Report</category>
      <pubDate>Tue, 28 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>React 위젯 첫 진입 시 패널이 깜빡이는 이유 — ResizeObserver는 paint 이후에 실행된다</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/react-panel-flicker-uselayouteffect-resizeobserver</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/react-panel-flicker-uselayouteffect-resizeobserver</guid>
      <description>설정 위젯 최초 진입 시 좌측 탭 네비가 한 번 깜빡이는 문제를 프레임 단위로 추적한 기록. 패널 폭을 ResizeObserver로 실측했는데 그 콜백이 paint 이후에 호출돼, 잘못된 폭으로 그려진 프레임 + key 변경 강제 리마운트가 겹쳐 깜빡임이 발생하던 원인을 규명하고 useLayoutEffect 동기 실측으로 해결했다.</description>
      <category>Guide</category>
      <pubDate>Mon, 27 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>부하 지표 캔들(OHLC)의 봉이 이어지지 않는 이유 — 시가를 직전 종가로 잇도록 버킷 전환 수정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/ohlc-candle-continuity-open-init</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/ohlc-candle-continuity-open-init</guid>
      <description>노드 부하를 OHLC 캔들로 시각화하던 중, 봉과 봉의 시가가 이어지지 않고 튀는 결함을 발견한 기록. 5분 버킷 전환 시 open을 새 버킷의 첫 측정값으로 잡던 것을 직전 버킷의 종가로 잇도록 바꾸고, high/low 초기화 기준을 새 버킷 open으로 정정했다.</description>
      <category>Guide</category>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>무인 업데이트 스크립트가 DB 마이그레이션에서 무한 대기하는 이유 — 삼켜진 stdin 프롬프트 추적</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/unattended-update-hang-tty-stdin-migration-prompt</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/unattended-update-hang-tty-stdin-migration-prompt</guid>
      <description>unattended 업데이트 스크립트가 DB migration 단계에서 멈추던 문제를 추적한 기록. must_task가 stdout만 리다이렉트하고 stdin은 운영자 TTY에 붙여둔 탓에, migration의 input() 프롬프트가 화면에 안 보인 채 입력을 기다리며 무한 대기하던 원인을 규명하고, 무인 실행자가 stdin을 /dev/null로 차단하는 계층 분리로 해결했다.</description>
      <category>Guide</category>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>빌드가 GitHub API 불안정에 무한 대기하던 문제 — 배치 스크립트의 Python 번들 단계 견고화</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/windows-batch-github-api-python-bundle-robustness</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/windows-batch-github-api-python-bundle-robustness</guid>
      <description>makepackage.bat의 Python standalone 번들 단계가 GitHub API/네트워크 불안정 시 무한 대기하거나 빈 URL을 curl에 넘겨 빌드를 중단시키던 문제를 수정한 기록. cmd for /f 파싱을 걷어내고 PowerShell 단일 블록으로 통합해 타임아웃·재시도·폴백 URL·크기 검증을 갖췄다.</description>
      <category>Guide</category>
      <pubDate>Thu, 23 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>Driver Verifier가 드러낸 커널 BSOD — 락을 쥔 채 ZwClose를 부르면 안 되는 이유 (0xC4 IrqlZwPassive)</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/driver-verifier-zwclose-apc-level-bsod</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/driver-verifier-zwclose-apc-level-bsod</guid>
      <description>Driver Verifier(/standard /driver) 활성 상태에서 드라이버 언로드 시 0xC4 DRIVER_VERIFIER_DETECTED_VIOLATION BSOD가 발생한 사례. ZwClose가 PASSIVE_LEVEL 전용 API인데 fast mutex를 쥔 APC_LEVEL에서 호출되던 구조적 결함을 WinDbg로 규명하고, 락 밖에서 핸들을 닫도록 정리 루프를 재설계한 기록.</description>
      <category>Guide</category>
      <pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>워크그룹 PC의 도메인명이 빈 문자열로 나가는 이유 — DsRole의 DomainNameFlat을 버리고 서비스 의존 API로 재조회하던 결함</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/windows-domain-name-dsrole-domainnameflat-workgroup</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/windows-domain-name-dsrole-domainnameflat-workgroup</guid>
      <description>에이전트가 인증 시마다 도메인명을 재조회하는데, 워크그룹 PC에서 값이 빈 문자열로 수집될 수 있는 경로를 역추적한 기록. DsRoleGetPrimaryDomainInformation이 이미 반환한 DomainNameFlat을 버리고, LanmanWorkstation 서비스에 의존하는 NetWkstaGetInfo 폴백으로 같은 값을 재조회하던 구조적 문제를 Windows API 실측으로 규명했다.</description>
      <category>Guide</category>
      <pubDate>Wed, 22 Jul 2026 00:00:00 +0900</pubDate>
    </item>
    <item>
      <title>AG Grid에서 IP·버전이 뒤집혀 정렬되는 이유 — comparator 부재로 인한 사전식 정렬 전역 수정</title>
      <link>https://www.orangelabs.xyz/resources/tech-blog/ag-grid-comparator-version-ip-natural-sort</link>
      <guid isPermaLink="true">https://www.orangelabs.xyz/resources/tech-blog/ag-grid-comparator-version-ip-natural-sort</guid>
      <description>그리드의 버전 컬럼이 x.x.x.x 형식임에도 문자열로 정렬된다는 의심에서 출발해, 코드베이스에 AG Grid comparator가 하나도 없어 모든 정렬 컬럼이 기본 사전식 비교에 의존하던 구조적 문제를 밝혀낸 기록. 192.168.1.100이 192.168.1.20보다 앞서는 IP 오정렬과 버전 오정렬을 옥텟·세그먼트 숫자 비교자로 전역 교정했다.</description>
      <category>Guide</category>
      <pubDate>Tue, 21 Jul 2026 00:00:00 +0900</pubDate>
    </item>
  </channel>
</rss>