본문 바로가기

[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..
리소스 모니터 메모리 탭 탐구 윈도우 7의 리소스 모니터가 아주 좋다. 메모리 탭의 예쁜 그래프가 과연 무엇을 나타내는지 탐구해 봤다.준비물은 시스인터널즈의 RamMap 유틸리티.성능모니터를 직접 실행하거나, 작업관리자에서 성능모니터를 실행시키고 메모리 탭을 본다.실제 물리 메모리의 사용량을 그래프로 나타내 준다. 사용 중은 rammap 툴에서는 active 로 표현하는 실제 프로세스나 시스템이 현재 사용하고 있는 메모리를 뜻한다. 수정한 날짜라는 부분은 분명한 오역인데, modified 로 표현되는 (윈도우즈 인터널즈 5판 한국어판에서는 "변경"으로 번역하고 있다.) 메모리 페이지를 뜻하는 듯 하다. 대기 모드 또한 오역으로 보인다. rammap에서는 standby, 윈도우즈 인터널즈 5판 한국어판에서는 "스탠바이"로 번역한 것이다..
윈도우즈에서 넌페이지드풀과 페이지드 풀 에러 트러블슈팅 Troubleshooting Nonpaged and Paged Pool Errors in Windows윈도우즈에서 넌페이지드풀과 페이지드 풀 에러 트러블슈팅 12 March 2010by Ben Lye Ben Lye uncovered a memory leak in the nonpaged pool which was crashing his servers with disquieting regularity. Luckily it was relatively easy to troubleshoot, and he's sharing the tools and techniques he used to get his servers back on track in double-quick time. Ben Lye가 정기적으로 서버를 죽..
[WinDbg] 0y 는 몇진수? windbg로 실습하다보면 0y 라는 표현이 나온다. 0x는 16진수 hexa 표현인데, 0y는 과연 몇 진수 표현일까? 답은 2진수. 주로 비트플래그값에 대해 0y라는 표현이 등장한다는 걸 알 수 있다. windbg 창에서 .formats 명령으로 쉽게 알 수 있다. (thnx to http://mat-f.blogspot.com/2011/05/hex-binary-decimal-octal-number.html )
[VS2008] AddVariable 시 DoDataExchange에 컨트롤과 변수 연결코드가 자동으로 생성되지 않는다. 6.0까지는 클래스 위자드를 이용해서 간단하게 컨트롤과 변수를 연결할 수 있었다. 변수를 생성하면 컨트롤과 변수 사이에 값을 세팅해 주거나, 값을 가져오는 코드가 DoDataExchange 안에 자동으로 생성된다. 2008까지는 클래스 위자드가 없어지고, 리소스 에디트 화면에서 컨트롤 - 오른쪽클릭 - AddVariable 메뉴를 통해 변수를 추가한다. 변수를 추가할 때 컨트롤이 아닌 CString, int 등의 Value 형 변수를 추가하려고 했는데, UpdateData가 동작하지 않는 것 같았다. DoDataExchange함수 안에 해당 컨트롤-변수간의 통신과 관련된 코드가 추가되지 않았었다. 문제를 해결하기 위해 검색을 해 보았더니, 내가 Value 변수를 만들 때 Variable Wizard를 잘..