본문 바로가기

프로그래밍

(357)
Shell_NotifyIcon 실패에 대한 대응 http://msdn.microsoft.com/en-us/library/windows/desktop/bb762159(v=vs.85).aspx Shell_NotifyIcon 실패에 대한 대응 Handling Shell_NotifyIcon failure Shell_NotifyIcon 가 윈도우가 시작하며 불리면 종종 실패한다. (예를 들어 응용 프로그램이 HKLM\Software\Microsoft\Windows\CurrentVersion\Run 에 등록되어 있다던가. ) 이유는 시스템이 응용 프로그램들을 시작시키는 데 바쁘기 때문인 것으로 보인다. 이 실패는 낮은 사양의 컴퓨터 또는 시작할 때 부하가 큰 특정 백신 소프트웨어가 설치되어 있는 경우에 더 잘 발생하는 것 같다. Shell_NotifyIcon w..
윈도우 환경에서 플랫폼 SDK 사용하기 c프로그래밍을 처음 시작하는 사람들에게 넘기 어려운 커다란 산이 내 컴퓨터에 어떻게 개발환경을 만드느냐는 것이다. 주변에 친구가 있거나 학교에서 배우는 사람들이라면 별 어려움 없이 물어봐서, 또는 컴파일러나 IDE를 받아서 깔아서 개발환경을 갖추겠지만, c를 혼자서 한번 배워봐야지 하는 마음으로 책을 한권 사서 보려는 사람에게 책에 나온 재밌어 보이는 것들을 실습해 보는데에 무엇이 필요한지를 알아내는 건 커다란 고민이다. 많이 추천하는 방식은 어디에선가 받은 비주얼 스튜디오 6.0을 깔아서 해 보는 방식일 것이다. 그러나 이건 엄밀하게 합법적인 방법이 아니다. 그 다음 방식은 비주얼 스튜디오 익스프레스 버전을 무료로 다운받아 깔아 환경을 갖추는 것이다. 아주 좋은 실습환경이 갖춰지지만, mfc 등 많은 ..
[Euler Project 090] itertools 의 combinations 를 가져다 씀. 좀 반칙성으로 브루트포스 풀이. 그냥 문제의 요구를 그대로 코딩했음. 문제가 좀 애매한 부분이 있었는데, 두 주사위를 다른 것으로 볼 것이냐 아니면 같은 것으로 볼 것이냐... 그래서 계속 답이 틀렸음. 검색해서 다른 사람의 풀이를 보고 문제의 의도를 알아낼 수 있었음.
[Euler Project 091] 직각삼각형 갯수 구하기 (2) 주어진 레인지 안의 두 점을 잡아서 원점과 연결한 삼각형이 직각삼각형인 갯수를 구하는 문제임. 벡터의 내적과 외적의 성질을 이용해서 간단한 식으로 푼다. 내 컴퓨터에서 10초정도 걸린다. 아무래도 모든 가능한 점을 다 돌면서 검사를 하다보니.과거에 풀었던 것은 조건을 나눠서 복잡했었는데, 이 쪽이 코드는 더 간단하다. 비슷하게 풀었던 다른 문제도 있었던 듯.
stack frame 그림. Microsoft Tech Ed 03 : Microsoft Windows Crash Dump Analysis (Mark Russinovich, David Solomon) 이라는 인터넷에서 다운받은 문서에 있는 그림.스택쓰레드 마다 한 개의 유저모드 스택과 커널모드 스택이 있다.유저모드 스택은 x86에서 보통 1MB이다.커널모드 스택은 x86에서 보통 12KB이다.스택은 중첩된 함수 호출을 가능하게 한다.패러미터가 스택을 통해 전달된다.복귀주소를 저장한다.지역변수의 저장소로 기능한다.특이한 호출규약(calling convention)을 사용하면 스택을 분석하기 어려워진다.프레임 포인터 사용 안함.레지스터를 통한 패러미터 전달 (fast calls)이 경우 디버거는 파싱을 위해 심볼정보가 필요하다.
크래시덤프분석 ObInsertObject PspCreateProcess 는 프로세스 객체를 생성하고 초기화하고, 프로세스 핸들을 리턴해 준다. 객체 생성은 ObCreateObject 를 호출하여 이루어진다. ObCreateObject(KeGetPreviousMode(),PsProcessType,ObjectAttributes,KeGetPreviousMode(),0,0x258,0,0,&ProcessObject); 위의 예에서는 PsProcessType 객체 타입의 객체가 만들어지고, 0x258 이라는 사이즈는 윈도우 버전마다 틀리다. ProcessObject 는 다른 객체처럼 OBJECT_HEADER 헤더가 붙는다. OBJECT_HEADER는 다음과 같다. OBJECT_HEADER: +0x000 PointerCount : Int4B +0x004 H..
[VS2008] AddVariable 시 DoDataExchange에 컨트롤과 변수 연결코드가 자동으로 생성되지 않는다. 6.0까지는 클래스 위자드를 이용해서 간단하게 컨트롤과 변수를 연결할 수 있었다. 변수를 생성하면 컨트롤과 변수 사이에 값을 세팅해 주거나, 값을 가져오는 코드가 DoDataExchange 안에 자동으로 생성된다. 2008까지는 클래스 위자드가 없어지고, 리소스 에디트 화면에서 컨트롤 - 오른쪽클릭 - AddVariable 메뉴를 통해 변수를 추가한다. 변수를 추가할 때 컨트롤이 아닌 CString, int 등의 Value 형 변수를 추가하려고 했는데, UpdateData가 동작하지 않는 것 같았다. DoDataExchange함수 안에 해당 컨트롤-변수간의 통신과 관련된 코드가 추가되지 않았었다. 문제를 해결하기 위해 검색을 해 보았더니, 내가 Value 변수를 만들 때 Variable Wizard를 잘..
[번역|StackOverflow] 파이썬 람다 - 왜써? / Python Lambda - why? Are you talking about lambda functions? Like 람다 함수를 말하는 건가요? 이런 것? f = lambda x: x**2 + 2*x - 5 Those things are actually quite useful. Python supports a style of programming called functional programming where you can pass functions to other functions to do stuff. Example: 이거 진짜 좋아요. 파이썬은 다른 함수에 함수를 넘길 수 있는 함수형 프로그래밍 스타일을 지원해요. 예를 들면 : mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, ..