윈도우 10 업그레이드 알림 막기

윈도우 10을 잠깐 썼다가 게임이 안 되는 치명적인 오류가 있어서 바로 윈도우 8.1로 다운그레이드해서 쓰고 있다. 그런데 윈도우 10으로 업그레이드하라고 지속적으로 알림이 나타나서 더는 안 나오게 막는 방법을 찾다 보니 아래와 같은 글이 있어서 공유.

간단히 말해서 윈도우 명령 프롬프트에서 아래 명령어를 실행한 후

wusa.exe /uninstall /kb:3035583
wusa.exe /uninstall /kb:2976978

윈도우 업데이트 창에서 두 업데이트 항목에 대해 ‘업데이트 숨기기’를 지정하면 된다.

성능 문제를 이해하는 법


실행 중인 시스템의 성능을 이해하는 법을 배우는 것은 디버깅을 배우는 이유와 것과 같은 이유로 피할 수 없는 일입니다. 여러분이 작성하는 코드의 비용을 완벽하고 정확하게 이해하고 있더라도 그 코드에서는 여러분이 통제하거나 속을 들여다보기가 힘든 다른 소프트웨어 시스템을 호출하게 될 것입니다. 하지만 실무에서 성능 문제는 일반적으로 디버깅과 조금 다르고 조금 더 쉽습니다.

시스템이나 하위 시스템이 너무 느리다고 고객이 느낀다고 가정해 봅시다. 그것들을 좀 더 빠르게 만들려고 하기에 앞서 왜 그것이 느린가에 대한 멘탈 모델을 만들어야 합니다. 이를 위해 프로파일링 도구나 로그를 이용해 어느 부분에서 시간이나 다른 리소스가 실제로 소비되는지 파악할 수 있습니다. 코드의 10%에서 90%의 시간이 소모된다는 격언이 있습니다. 저는 이와 더불어 성능 문제에 대한 입출력 비용(I/O)의 중요성을 더하고 싶습니다. 대부분의 시간이 대체로 I/O에서 소모되는 경우가 많습니다. 비용이 높은 I/O와 코드 중에서 높은 비용이 드는 10%를 찾는 것이 멘탈 모델을 만들기 위한 첫 번째 단계입니다.

컴퓨터 시스템의 성능에는 여러 차원이 있으며, 그리고 많은 자원들이 소비됩니다. 맨 먼저 측정해야 할 리소스는 벽시계 시간(wall-clock time), 즉 계산을 하는 동안 경과된 총 시간입니다. 벽시계 시간(wall-clock time)을 로깅하는 것은 특히 중요한데, 시뮬레이션에서 발생하는 예상 불가능한 상황에 관해 알려줄 수 있기 때문이며, 이는 다른 프로파일링에서는 불가능한 것입니다. 하지만 그렇다고 해서 이것이 항상 전체 그림을 보여주는 것은 아닙니다. 간혹 시간은 조금 더 걸리지만 너무나도 많은 프로세서 시간을 소모하지는 않는 뭔가가 실제로 여러분이 다뤄야 할 컴퓨팅 환경에서는 더 나을 것입니다. 이와 비슷하게, 메모리, 네트워크 대역폭, 데이터베이스나 기타 서버 접근은 결국 프로세서 시간보다 훨씬 더 비용이 높을 수 있습니다.

동기화된 공유 자원에 대한 경합은 교착상태(deadlock)와 기아상태(starvation)를 유발할 수 있습니다. 교착상태는 부적절한 동기화나 자원 요구 때문에 진행할 수 없는 것을 말합니다. 기아상태는 어떤 컴포넌트를 적절히 스케줄링하는 데 실패하는 것입니다. 어쨌거나 이를 예상할 수 있다면 프로젝트 초기부터 이러한 경합을 측정하는 수단을 마련하는 것이 가장 좋습니다. 이러한 경합이 일어나지 않더라도 자신 있게 이를 단정(assert)할 수 있는 것이 아주 도움될 것입니다.

오픈 소스 ANTLR4 입문

모든 컴퓨터 책이 그렇듯 어떤 언어나 프로젝트의 창시자가 쓴 책은 믿고 봐도 된다는 게 정설이다(물론 번역서는 번역의 품질이라는 변수가 있지만). 이번에 ANTLR 프로젝트의 창시자인 Terence Parr가 쓴 『The Definitive ANTLR 4 Reference』의 번역서가 나왔다. 자바 기반의 파서 제너레이터인 ANTLR 프로젝트는 그동안 자바 개발자들에게 많은 사랑을 받아온 프로젝트다. ANTLR은 나도 잠깐 3 버전을 SQL 비슷한 문법을 파싱하기 위해 쓴 적이 있고, 역시 Terence Parr가 만든 템플릿 엔진(ANTLR 내에서도 사용한다)은 그 이후로도 종종 쓴 적이 있다. 컴퓨터 공학 전공이 아니라서 컴파일러 및 프로그래밍 언어론 같은 수업을 들은 적이 없다 보니 처음엔 ANTLR을 사용하기가 어려웠는데, 이 분야에 관심이 있거나 기본적인 배경지식을 갖춘 분이라면 ANTLR을 활용하는 데 어려움이 없을 것 같다. 그리고 나 같은 사람에게 ANTLR의 장점은 ANTLRWorks라는 GUI 도구 및 인텔리J IDEA나 이클립스용 플러그인이 있어서 문법을 시각적으로 확인하고 편집할 수 있다는 것이었다. 아무튼 이처럼 결코 대중적이지 않은 주제의 책이 나와서 반갑다. 문자열 파싱이나 문법 처리에 관심이 있는 분들이 읽어볼 만한 책.