Category: 개발

OpenPrompt: LLM에 코드 매끄럽게 통합

2025-04-07
OpenPrompt: LLM에 코드 매끄럽게 통합

OpenPrompt는 Claude, GPT-4, Grok 등과 같은 대규모 언어 모델에 코드를 쉽게 제공하는 프로세스를 간소화합니다. 이 도구는 파일과 폴더를 XML 형식으로 빠르게 직렬화하여 코드베이스 업로드를 용이하게 합니다. Windows, macOS, Linux에서 사용 가능하며(실행 파일 제공), OpenPrompt를 사용하면 디렉토리 선택, 파일 필터링, 지침 추가, 선택한 LLM에 붙여넣을 준비가 된 XML 프롬프트 생성을 할 수 있습니다. 사용 사례에는 코드 검토, 문서 생성, 리팩토링 지원, 버그 헌팅, 새로운 코드베이스 학습, 아키텍처 분석 등이 있습니다.

개발

Web Audio API를 사용한 Game Boy 사운드 재현: 푸리에 급수 vs. 웨이브 쉐이퍼

2025-04-07

웹 기반 Game Boy 스타일 음악 트래커를 제작하는 동안, 저자는 Game Boy의 상징적인 사각파 사운드를 충실하게 재현하는 과제에 직면했습니다. Game Boy의 펄스 채널은 가변 듀티 사이클을 지원했지만, Web Audio API의 OscillatorNode는 50% 듀티 사이클의 사각파만 제공합니다. 이 글에서는 두 가지 해결책을 탐구합니다. 푸리에 급수를 사용하여 사용자 정의 파형을 생성하는 방법과 WaveShaperNode를 사용하여 톱니파를 성형하는 방법입니다. 푸리에 급수 접근 방식은 정확도가 높지만, 계산 비용이 많이 듭니다. WaveShaperNode 방법은 간단하지만, 노이즈가 발생할 수 있습니다. 저자는 최종적으로 단순성과 더욱 사실적인 Game Boy 사운드를 생성할 수 있다는 점에서 WaveShaperNode 방법을 선호했습니다.

GitMCP: AI로 GitHub 프로젝트 문서에 쉽게 접근

2025-04-07
GitMCP: AI로 GitHub 프로젝트 문서에 쉽게 접근

GitMCP는 무료 오픈소스 서비스로, 모든 GitHub 프로젝트를 원격 모델 컨텍스트 프로토콜(MCP) 엔드포인트로 원활하게 변환하여 AI 어시스턴트가 프로젝트 문서에 쉽게 접근하고 이해할 수 있도록 합니다. 설정이 필요 없으며, GitMCP는 즉시 사용 가능하고 완전히 무료이며 개인 정보를 보호하며, 개인 식별 정보나 쿼리는 수집하지 않습니다. 사용자는 간단한 URL 형식을 사용하여 GitHub 저장소 또는 GitHub Pages 사이트에 접근할 수 있습니다. AI 어시스턴트는 GitMCP를 통해 프로젝트 문서에 접근하고, 의미론적 검색을 사용하여 토큰 사용을 최적화할 수 있습니다. GitMCP는 MCP를 구현하여 GitHub 저장소 문서와 AI 어시스턴트 간의 다리를 놓아 효율적이고 정확한 정보 전달을 보장합니다.

개발

90년대 히브리어-영어 워드 프로세서 리버스 엔지니어링

2025-04-07
90년대 히브리어-영어 워드 프로세서 리버스 엔지니어링

이 블로그 게시물에서는 90년대 중반에 Turbo Pascal로 작성된 DOS 시대 히브리어-영어 워드 프로세서인 QText의 리버스 엔지니어링 과정을 설명하고 잠긴 문서의 암호 해독 방법을 보여줍니다. 고객의 비밀번호가 분실된 문제에 직면한 저자들은 암호화 알고리즘의 단순성(키가 파일에 포함되어 있음)을 활용하여 무차별 대입 공격과 리버스 엔지니어링 방식을 모두 사용하여 키 유도 알고리즘을 재구성했습니다. 그들은 알고리즘을 성공적으로 재구성하고 자동 암호 해독을 위한 Python 스크립트를 개발했습니다. 이 사례 연구는 초기 소프트웨어 개발에서의 암호화 및 리버스 엔지니어링 기술에 대한 통찰력을 제공하고 정보 보안의 발전을 강조합니다.

개발

Excel의 날짜 분석: 400년 된 버그?

2025-04-07
Excel의 날짜 분석: 400년 된 버그?

AI 스프레드시트 Quadratic 개발 중에 팀은 Excel의 날짜 분석에서 이상한 버그를 발견했습니다. "1/2"에 1을 더하면 45660이 되고, "10:75"는 0.46875가 됩니다. 이는 Excel이 1900년 1월 1일부터의 일련 번호로 날짜를 저장하기 때문입니다. 하지만 역사적 부정확성(1900년을 윤년으로 간주하는 것, 그레고리력으로의 변경)으로 인해 불일치가 발생합니다. Quadratic은 Rust의 chrono 라이브러리를 사용하여 이러한 문제를 해결하고 Python, SQL 등 최신 도구와 원활하게 통합됩니다. 팀은 1900년 윤년 오류를 수정하여 우주의 균형을 회복했습니다.

개발 날짜 분석

안전한 Curl: 수십억 개의 설치를 위한 안정적인 C 코드 구축

2025-04-07
안전한 Curl: 수십억 개의 설치를 위한 안정적인 C 코드 구축

Curl 팀은 C 언어로 안전하고 안정적인 네트워크 전송 도구를 구축하기 위한 방식을 공유합니다. 정적 분석 및 퍼징을 포함한 광범위한 테스트의 중요성을 강조합니다. 보안 취약점의 약 40%는 C 언어의 메모리 안전성 문제에서 비롯되지만, 엄격한 코딩 표준, 스타일 적용, 위험한 함수 회피를 통해 이 수치를 낮게 유지합니다. Curl의 코딩 스타일은 줄 길이 제한, 짧은 변수 이름, 경고 없는 컴파일을 통해 가독성과 유지 관리에 중점을 둡니다. 강력한 오류 처리, API 안정성, 신중한 메모리 관리는 소프트웨어의 안정성과 보안에 필수적입니다.

무익한 일에 시간 낭비하지 마세요!

2025-04-07

많은 엔지니어는 성능 개선이나 접근성 향상과 같은 비영리적인 업무에 집중하다가, 제대로 평가받지 못하고 해고되는 경우가 있습니다. 이 글에서는 기술 회사는 이윤 추구에 기반하며, 엔지니어의 가치는 그들의 업무가 이윤에 얼마나 기여하는지에 따라 직접적으로 결정된다고 주장합니다. 저자는 엔지니어들이 회사의 비즈니스 모델을 이해하고 자신의 업무를 수익성과 연결시켜 직장을 안정적으로 유지해야 한다고 조언합니다. 겉으로 보기에는 비영리적인 업무라도 대기업에서는 규모의 경제에 따라 가치를 창출할 수 있습니다.

오픈소스의 숨겨진 비용: 유지보수 담당자의 소진과 사용자의 권리 의식

2025-04-07
오픈소스의 숨겨진 비용: 유지보수 담당자의 소진과 사용자의 권리 의식

이 글에서는 오픈소스 소프트웨어 사용자들 사이에서 점점 커지고 있는 권리 의식 문제를 다룹니다. 저자는 오픈소스가 자동적으로 무료 지원, 기능 요청 또는 개발자의 시간을 의미하는 것이 아님을 명확히 합니다. 많은 개발자들이 무료로 기여하지만, 학대와 불합리한 요구에 직면합니다. 이 글은 사용자들에게 개발자의 노고를 존중하고, 효과적으로 도움을 요청하는 방법을 배우고, 가치 있는 오픈소스 프로젝트에 재정적으로 기여할 것을 권장합니다.

Cloudflare D1 데이터베이스 쿼리 최적화 여정

2025-04-07
Cloudflare D1 데이터베이스 쿼리 최적화 여정

프런트엔드 개발자가 Cloudflare Workers와 D1 데이터베이스를 사용하는 동안 성능 병목 현상을 겪었습니다. D1 대시보드 모니터링, 쿼리 문 검사, 행 읽기/쓰기 수 분석을 통해 여러 가지 주요 문제점을 파악했습니다. 느린 단일 쿼리, 비효율적인 배치 쓰기, 업데이트 작업에 ID를 포함하여 발생하는 불필요한 행 읽기, 카운트 쿼리에서의 전체 테이블 스캔, 여러 테이블 조인으로 인한 데카르트 곱 폭발, 그리고 최적화되지 않은 대량 삽입입니다. 해결책으로는 D1 배치 작업 활용, 업데이트에서 ID 제외, 커서 기반 페이징 구현, 여러 테이블 조인 쿼리 분할, 대량 삽입 문 최적화가 포함되었습니다. 이러한 최적화를 통해 쿼리 성능이 크게 향상되어 일부 경우 실행 시간이 78ms에서 14ms로 단축되었습니다. 이 경험은 지속적인 모니터링, 반복적인 최적화, 그리고 서버 측과 클라이언트 측 성능 문제의 중요한 차이점의 중요성을 강조합니다.

개발

Lisp에서 적합성 기반 함수 테스트

2025-04-07

이 코드는 생성된 함수의 적합성을 평가하는 `fitness`라는 Lisp 함수를 정의합니다. 생성된 함수(`form`)의 출력과 목표 함수(`fitness-fn`)의 출력을 비교하여 0에서 1 사이의 적합성 값을 계산합니다. 값이 클수록 적합성이 높음을 나타냅니다. 이 함수는 에러 처리를 포함하고 있으며, 생성된 함수가 잘못된 코드를 실행하면 `NIL`을 반환합니다. `fitness` 함수는 테스트 입력 리스트(`test-input`)를 반복 처리하여 최종적으로 모든 적합성 값의 곱을 전체 적합성으로 반환합니다. 예시에서는 이 함수가 서로 다른 생성된 함수에 어떻게 적용되고 적합성 점수가 계산되는지 보여줍니다.

개발 적합성

가변적 개발: 컨텍스트 도구를 사용한 프로그래밍 혁신

2025-04-07
가변적 개발: 컨텍스트 도구를 사용한 프로그래밍 혁신

가변적 개발은 각 문제에 맞게 조정된 컨텍스트 도구를 사용하는 프로그래밍 패러다임입니다. 시스템에 대한 단일한 정답이 없다는 원칙에 기반하며, 서로 다른 부분은 서로 다른 표현이 필요합니다. 이러한 표현은 특정 관점에서 시스템을 요약하여 간결한 커뮤니케이션과 새로운 피드백 루프를 가능하게 합니다. Glamorous Toolkit은 컨텍스트 도구가 프로그래밍 능력을 향상시키는 방법을 보여주는 포괄적인 사례 연구입니다. 시스템 전체를 아우르는 수천 개의 확장 기능과 예제를 갖추고 있으며, 시스템 내부를 쉽게 이해할 수 있도록 하는 것을 목표로 합니다.

Rive의 혁신적인 벡터 페더링: 성능 도약

2025-04-06
Rive의 혁신적인 벡터 페더링: 성능 도약

Rive는 기존 가우시안 블러 기반 페더링 방식을 버리고 완전히 벡터 기반 시스템을 구축하여 벡터 그래픽 렌더링에 혁명을 일으켰습니다. 이 시스템은 벡터 곡선에서 직접 소프트 에지를 계산하여 비용이 많이 드는 래스터화와 컨벌루션 필터링을 제거합니다. 그 결과 무한한 확장성, 실시간 조정 및 크게 향상된 성능을 달성하면서 그래픽의 벡터 특성을 유지합니다. 이 획기적인 기술은 기존 벡터 그래픽 사양에 도전하여 벡터 렌더링의 새로운 장을 엽니다.

C 언어 문자열 리터럴의 const 한정자: 잠재적 영향 조사

2025-04-06
C 언어 문자열 리터럴의 const 한정자: 잠재적 영향 조사

Martin Uecker는 C 언어의 문자열 리터럴 형식을 C++과 마찬가지로 const로 한정된 기본 형식으로 변경하는 것을 제안했습니다. 컴파일러는 이미 오랫동안 이를 지원해왔지만(일부는 기본적으로), 이러한 규범적인 변경은 기존 코드에 영향을 미칠 수 있습니다. 영향을 평가하기 위해 Uecker는 const 한정자 관련 컴파일러 옵션(예: GCC의 -Wwrite-strings) 사용 경험에 대한 개발자들의 사실적인 보고서를 요청하고 있습니다. 제안을 진행하기 전에 구현의 용이성, 한정자 버그 노출, 전반적인 실현 가능성에 대한 데이터를 수집하는 것을 목표로 하며, 의견보다 사실을 우선시합니다.

OpenAI 라이브러리와 Gemini API를 사용한 장애 복구 기능이 있는 AI 호출

2025-04-06

이 글에서는 OpenAI TS/JS 라이브러리를 사용하여 Gemini API의 속도 제한에 도달할 경우 다른 OpenAI 모델로 대체하는 장애 복구 기능이 있는 AI 호출 방법을 보여줍니다. 사용자 정의 함수를 사용하면 개발자는 여러 AI 모델을 대안으로 지정하여 애플리케이션의 안정성과 신뢰성을 확보할 수 있습니다. 또한, 형식이 안전한 구조화된 출력 함수도 제공되어 AI 응답 처리가 간소화됩니다.

macOS Sequoia, rsync에서 openrsync로 전환

2025-04-06
macOS Sequoia, rsync에서 openrsync로 전환

macOS Sequoia에서는 거의 20년 동안 사용되어 온 rsync 2.6.9가 openrsync로 대체되었습니다. 이 변경은 rsync 3.x에서 사용하는 GPLv3 라이선스와의 준수 문제 때문입니다. openrsync는 더욱 관대한 ISC 라이선스를 사용하므로 Apple은 업데이트 및 유지 관리를 더욱 유연하게 수행할 수 있습니다. openrsync는 rsync와 호환되지만 rsync의 명령줄 인수의 하위 집합만 지원하므로 일부 이전 기능이 손실될 수 있습니다. 지원되는 기능에 대한 자세한 내용은 공식 문서를 참조하십시오.

개발

MonkeysPaw: LLM 기반 의도 중심 웹 프레임워크

2025-04-06
MonkeysPaw: LLM 기반 의도 중심 웹 프레임워크

MonkeysPaw는 기존 웹 개발 방식을 뒤엎는 혁신적인 Ruby 웹 프레임워크입니다. HTML, CSS, JavaScript를 작성하는 대신 개발자는 자연어로 페이지 콘텐츠를 설명하고, 프레임워크는 LLM의 의도 해석에 따라 완벽한 웹 페이지를 생성합니다. 이를 통해 개발 속도와 효율성이 높아지지만, 성능과 정확성과 같은 과제도 존재합니다. MonkeysPaw는 AI 중심의 새로운 개발 방식을 제시하며, 콘텐츠를 우선시하고 자연어를 코드로 사용하여 아이디어와 구현 간의 장벽을 낮춥니다.

Rust의 보안 함정: 안전한 Rust라도 완벽하지 않다

2025-04-06
Rust의 보안 함정: 안전한 Rust라도 완벽하지 않다

이 글에서는 컴파일러가 감지하지 못하는 안전한 Rust 코드의 일반적인 함정을 밝힙니다. 정수 오버플로우, 형변환 오류, 배열 범위 초과 문제, 잘못된 상태, 민감한 데이터 노출 등 다양한 문제를 다루고, 검증된 산술 연산, TryFrom, `get` 메서드, 사용자 정의 형식 등의 해결책을 제공합니다. Rust의 메모리 안전성 보장이 있더라도 개발자는 규율을 지키고 테스트, lint, fuzzing을 결합하여 강력한 애플리케이션을 구축해야 한다고 언급합니다.

개발

JavaScript에 의존적인 요소를 우아하게 숨기는 방법

2025-04-06
JavaScript에 의존적인 요소를 우아하게 숨기는 방법

이 글에서는 JavaScript에 의존적인 웹 요소를 숨기는 세 가지 우아한 방법을 설명합니다. 첫 번째 방법은 JavaScript를 사용하여 클래스 이름을 동적으로 추가하는 방법이지만 간결하지 않습니다. 두 번째 방법은 태그와 태그를 사용하여 CSS에서 요소를 직접 숨기는 방법이지만 유지보수 비용이 높습니다. 세 번째 방법이자 권장되는 방법은 <noscript> 태그와 <style> 태그와 함께 일반적인 클래스 이름인 `d-js-required`를 사용하는 방법입니다. 이렇게 하면 JavaScript에 의존적인 모든 요소를 숨기기 위해 CSS 규칙을 하나만 변경하면 되므로 깔끔하고 효율적인 해결책을 제공합니다.

호기심에서 코드까지: 30살 소프트웨어 엔지니어의 성찰

2025-04-06
호기심에서 코드까지: 30살 소프트웨어 엔지니어의 성찰

30번째 생일을 맞아 저자는 컴퓨터를 분해하는 것을 좋아했던 호기심 많은 어린 시절부터 소프트웨어 엔지니어가 되기까지 12년간의 여정을 되돌아봅니다. 여러 편으로 구성된 시리즈의 첫 번째 글에서는 명령줄 실험과 온라인 포럼을 통한 프로그래밍 학습, 리눅스 시스템 구축(그리고 반복적인 고장), 그리고 마지막으로 HTML과 CSS를 사용하여 Neopets 샵을 만드는 과정이 자세히 설명되어 있습니다. 저자는 호기심, 탐구, 온라인 커뮤니티의 학습에서의 역할, 그리고 게임화된 학습의 효과를 강조합니다.

개발

mem-isolate: 안전하게 unsafe 코드 실행하기

2025-04-06
mem-isolate: 안전하게 unsafe 코드 실행하기

mem-isolate는 fork()를 사용하여 함수를 격리된 프로세스에서 실행하고 결과를 부모 프로세스로 반환하여 unsafe 코드가 부모 프로세스의 메모리에 영향을 주는 것을 방지합니다. 메모리 누수 및 힙 단편화를 처리하며 불순수한 함수라도 메모리 순수성을 보장합니다. 현재 Unix 계열 시스템만 지원하며, 직접 함수 호출과 비교하여 약 1ms의 오버헤드가 발생하지만 메모리 안전이 중요한 경우에는 허용 가능한 수준입니다.

LocalScore: 로컬 LLM 간편하게 벤치마킹하기

2025-04-06
LocalScore: 로컬 LLM 간편하게 벤치마킹하기

LocalScore는 로컬 대규모 언어 모델의 성능을 벤치마킹하는 도구입니다. 공식 모델을 다운로드하거나 자신의 .gguf 모델을 사용하는 두 가지 실행 방법이 있습니다. OS(macOS/Linux 또는 Windows)와 사용 가능한 메모리를 기반으로 벤치마크 모델(Tiny, Small, Medium)을 선택할 수 있습니다. 간단한 명령줄 명령을 사용하며 문제 해결 가이드와 문서를 제공합니다.

브라우저 WASM 성능: DuckDB, Apache Arrow 및 Web Workers 활용

2025-04-06
브라우저 WASM 성능: DuckDB, Apache Arrow 및 Web Workers 활용

Motif Analytics는 DuckDB WASM, Apache Arrow 및 Web Workers를 사용하여 고도로 상호 작용적인 브라우저 내 분석 도구를 구축했습니다. 이를 통해 사용자는 어떠한 약정 없이도 도구를 사용해 볼 수 있습니다. 이 글에서는 이러한 기술을 사용하는 데 따른 장점과 단점을 자세히 설명합니다. DuckDB WASM의 성능(네이티브 버전보다 느리지만 최적화를 통해 성능 차이를 줄일 수 있음), Web Workers를 사용한 병렬 처리 중 발생하는 스키마 불일치(예: 스키마 불일치로 인한 데이터 삽입 오류) 등이 포함됩니다. 버그 및 제한 사항도 공유하며, DuckDB WASM의 빠른 개발과 미래 개선에 대한 기대감을 강조합니다.

개발

React 서버 사이드 렌더링의 Hydration 에러: 원인과 해결책

2025-04-06
React 서버 사이드 렌더링의 Hydration 에러: 원인과 해결책

이 글에서는 React 서버 사이드 렌더링(SSR)에서 자주 발생하는 Hydration 에러에 대해 자세히 설명합니다. 간단한 React/Express 애플리케이션 예시를 통해 Hydration 에러가 발생하는 메커니즘을 보여줍니다. 서버가 처음 렌더링한 HTML과 클라이언트 사이드 Hydration 중에 React가 기대하는 컴포넌트 구조가 일치하지 않을 때 발생합니다. 이 글에서는 `hydrateRoot`와 `createRoot`의 차이점을 자세히 설명하고, 서버와 클라이언트 렌더링 결과의 일관성을 확인하는 것, 브라우저 고유 API를 처리하는 것, `useEffect`를 사용하여 Hydration이 완료되기 전에 렌더링되지 않도록 하는 것 등 여러 가지 해결책을 제시합니다. 또한 잘못된 HTML을 피하고 localStorage와 같은 브라우저 환경의 특징을 처리하는 것이 중요함을 강조합니다. 최종 목표는 서버와 클라이언트의 렌더링 결과를 일치시켜 Hydration 에러를 방지하고 사용자 경험을 향상시키는 것입니다.

개발

쉼표의 수수께끼: JSON 구문을 재고해야 하는 이유

2025-04-06

이 글에서는 JSON에서 쉼표의 필요성에 대해 의문을 제기합니다. 저자는 JSON에서 쉼표는 현명한 설계 선택이 아니며, 구문 오류 가능성을 높이고 가독성을 떨어뜨린다고 주장합니다. 저자는 쉼표를 제거하고 공백과 콜론을 사용하여 키-값 쌍을 구분할 것을 제안하며, JSON5를 개선 사례로 제시하지만, JSON5는 문제를 부분적으로만 해결합니다. 이 글에서는 AI 시스템을 사용한 텍스트 생성에서 발생하는 이상한 부작용에 대해서도 언급합니다.

개발 구문

벤치마크: 6개의 오픈소스 PostGIS 벡터 타일 서버 비교

2025-04-06
벤치마크: 6개의 오픈소스 PostGIS 벡터 타일 서버 비교

Fabian Rechsteiner의 석사 논문은 6개의 오픈소스 PostGIS 벡터 타일 서버(BBOX, ldproxy, Martin, pg_tileserv, Tegola, TiPg)의 속도를 벤치마킹합니다. 결과는 vectormap.ch의 대화형 지도 비교와 재현 가능한 코드가 포함된 GitHub 저장소를 통해 제공됩니다. 속도만이 유일한 요소는 아니지만, 이 벤치마크는 벡터 타일 서버 선택에 대한 귀중한 통찰력을 제공합니다.

개발 벡터 타일

Ubuntu 24.04에서 SSH 비밀번호 비활성화 버그

2025-04-06

Ubuntu 24.04 서버에서 인터넷을 통한 SSH 비밀번호 접근을 비활성화하고 로컬 LAN 접근은 허용하는 설정은 sshd_config를 사용하면 간단해 보입니다. 하지만 /etc/ssh/sshd_config.d/에 사용자 지정 설정 파일을 추가해도 SSH 데몬을 다시 시작한 후 설정이 무효화되는 문제가 발생했습니다. 원인은 sshd_config의 "선착순" 구성 규칙과 시스템에서 자동 생성된 50-cloud-init.conf 파일 내의 PasswordAuthentication yes 설정입니다. 이 파일이 먼저 로드되므로 사용자 지정 설정이 덮어쓰여집니다. 사용자 지정 설정 파일의 이름을 10-no-passwords.conf로 변경하여 먼저 로드되도록 하면 문제가 해결됩니다.

개발

Owl: 기억력과 창의력 향상을 위한 분산 복습

2025-04-06

Owl은 분산 복습 과학을 활용하여 기억력과 창의력을 향상시키는 앱입니다. 자신만의 플래시 카드를 만들거나, 계속해서 확장되는 공개 카드 덱 라이브러리를 사용하세요. 언제 어디서든 무료로 원하는 것을 배울 수 있습니다! Owl은 다양한 산업 분야에서 기억력 향상, 학습 가속화, 아이디어 창출에 사용되고 있습니다. 우리의 필요에 맞춰 제작된 Owl을 여러분과 공유합니다. 즐거운 학습 되세요!

ADHD 바디 더블링: 놀랍도록 효과적인 생산성 해결책

2025-04-06
ADHD 바디 더블링: 놀랍도록 효과적인 생산성 해결책

이 글에서는 ADHD 바디 더블링이라는 생산성 향상 기법에 대해 설명합니다. ADHD를 가진 사람은 다른 사람과 함께 일함으로써 집중력을 높이고 작업 완료율을 높일 수 있습니다. 이 '바디 더블'의 존재는 산만함을 줄이고 동기를 부여하는 역할을 합니다. 은퇴한 부사장인 데이비드는 정돈 정리는 잘하지만 일상 업무 수행에 어려움을 겪다가, 아내가 옆에 있으면 작업 효율이 크게 향상되는 것을 발견했습니다. 과학적 근거는 불분명하지만, 사회적 압력, 거울 뉴런 효과, 에너지 균형 등의 가능성이 제시됩니다. 바디 더블링의 장점과 적절한 바디 더블을 찾는 팁도 소개합니다.

개발

Windows 자동 잠금 버그 추적: 숨겨진 대화 상자와 전원 요청의 미스터리

2025-04-06
Windows 자동 잠금 버그 추적: 숨겨진 대화 상자와 전원 요청의 미스터리

소프트웨어의 새로운 기능으로 인해 Windows 컴퓨터가 자동으로 잠기지 않고 심지어 절전 모드로 전환되지 않는 문제가 발생했습니다. 디버깅 결과, 문제의 원인은 `PowerCreateRequest` 및 `PowerSetRequest` 함수인 것으로 나타났습니다. "새로운 기능" 대화 상자가 디스플레이가 꺼지는 것을 방지하고 있었습니다. 대화 상자를 닫아도 문제가 해결되지 않았으며, Spy++를 사용하여 조사한 결과 대화 상자가 숨겨져 있을 뿐 실제로는 닫히지 않았다는 것을 알게 되었습니다. 따라서 전원 요청이 계속해서 이루어지고 있었습니다. 이 버그는 새로운 기능을 담당하는 팀에 의해 수정되었습니다. 이 기사에서는 `powercfg` 및 `pwrtest`와 같은 대체 진단 도구와 강력한 ETW 추적 방법에 대해서도 설명합니다.

1 2 119 120 121 123 125 126 127 214 215