본문 바로가기

분류 전체보기

(469)
[Java] http://mindprod.com/jgloss/jgloss.html 자바 레퍼런스 사이트 http://mindprod.com/jgloss/jgloss.html 아주 오랫만에 유즈넷을 구글그룹스로 들어가 봤다. 자바가 필요하니 만큼 자바 그룹들을 좀 구독하고 들쳐봤다. 역시 유즈넷은 가장 소중한 정보를 알려주는 사이트들을 잘 가르쳐준다. 비록 스팸은 횡횡하고 있었지만, 아직 죽지 않았다. 스팸은 그리즈멍키와 킬파일 스크립트로 무시할 수 있었다. 땡쓰.
[WINDOWS] 메모리상의 맵파일과 이미지 비교 김성우 해킹, 파괴의 광학 6장 예제 6-3을 조금 변형했다. 소스의 저작권이 좀 아리까리한데, 일반적인 예제코드라 생각하여 저자의 허락없이 변형하여 올렸다. (혹시 저작권자가 이 글을 보고, 문제를 제기한다면 요청대로 처리하겠다.) #include #include int CompareMappedAndAutoLoaded(char *szDllPath) { int i, result; //char szDllPath[] = BYTE *pMapFile, *pDll; DWORD dwSize; DWORD dwSameSize = 1; HANDLE hFile, hFileMap; char c; hFile = CreateFile(szDllPath, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_..
[WINDOWS] DLL 매핑 주소 알아보기 김성우 해킹, 파괴의 광학 6장 예제 살짝 변형해서 실행해 보고, sysinternals vmmap 툴로 비교해 봤다. 결과는 간단히 아래 캡쳐를 보라.
[WINDOWS] 비스타 이후버전 무결성 (integrity level) 보기, 바꾸기 툴. http://www.minasi.com/apps/ chml.exe 라는 툴을 다운받을 수 있어서, 명령행에서 특정 파일이나 폴더의 무결성(integrity)를 확인하거나 수정할 수 있다. 레지스트리에 대한 무결성을 수정하는 툴을 또 따로 있어서 이름이 regil.exe 이다. 윈도우에 기본 보안수정 툴인 icacls.exe 란 것도 있나보다.
생성함수 수열을 점화식으로 표현할 수도 있지만, 생성함수(generating function)라는 다항식을 이용해서 표현하는 방법도 있다고 한다. 뭔가 싶었다. 그런데, 좀 생각을 해 보니, 소수표현과 분수에 비유해서 설명할 수 있지 않을까 하는 생각이 들었다. 그러니까, 3/7 이라는 소수는 0부터 9까지의 수만 갖는 무한수열을 표현한다. 0.428571428571... 을 4, 2, 8, 5, 7, 1... 이렇게 이어지는 무한수열을 나타내는 것이라고 보자는 거다. 그럼, 좀 복잡한 점화식 대신에, 3/7 이라는 간단한 수로 무한한 수열을 표현할 수 있다. 그런데, 정수의 소수표현은 0부터 9까지의 수만 수열의 한 항으로 가질 수 있다는 한계가 있다. 이건 진법을 바꾸면 무한하게 늘어날 수 있겠지만, 아무리 ..
[Euler Project 078] 분할함수 (Partition Function) 76, 77번을 풀었던 방법으로 풀었는데, 끝까지 계산하지 못하고 오버플로우가 났다. 삼각형 형태로 메모리가 늘어나서 13000 까지 찍고 죽는 것이었다. 그래서 위키백과의 점화식을 이용하여 푸는 코드를 짜서 풀었다. 점화식은 2차원인 아닌 1차원으로 기억하고 있으면 되서 답을 내 줬다. 죽는 코드와 죽는 모습 #!/usr/bin/env python # euler 78 P = [] n = 0 P.append([]) P[n].append(0) # P[0][0] n = 1 P.append([]) P[n].append(0) # P[1][0] P[n].append(1) # P[1][1] n = 2 while 1: cnt = 0 P.append([]) for i in range(n+1): if i == 0: cn..
[Euler Project 077] 소수의 합으로 표현하는 가짓수 스프레드시트로 표현한 배열이랑, 코드에서 구하는 배열이랑 의미가 조금 다르다. 아래 코드에서는 누적값을 구한다. 그래서 계산의 summation 루프를 줄인다. 위 그림은 이해를 좋게 하기 위해 누적으로 표현하지 않았다. 가로축은 합이 되는 수, 세로축은 소수이다. 2, 2 는 2를 2를 최소한 한번 포함하여 2 이하의 소수들의 합으로 표현하는 갯수로 1이다. 10, 5 는 10을 5를 최소한 한번 포함하여 5 이하의 소수들의 합으로 표현하는 갯수이다. 5+5와 5+3+2가 있는데, 최대 소수인 5를 10에서 뺀 나머지인 5에 대해 경우의 수를 summation 하여 구할 수 있다. 아래는 파이썬 코드. 2차원 배열이 위 스프레드시트의 것과 다른 점 주의하라. #!/usr/bin/env python # ..
2의 거듭제곱 (10만승까지) 벤포드 법칙 무식쟁이 방법으로 확인. #!/usr/bin/env python # http://bomber0.byus.net/index.php/2009/07/30/1409 # brute force check twopow = 1 tenpow = 1 cnt = [ 0 for i in range(10) ] pro = [ 0 for i in range(10) ] for i in range(100000): twopow *= 2 if twopow/(tenpow*10) > 0: tenpow *= 10 #d1 = int(("%d"%twopow)[0]) d = twopow/tenpow #if d1 != d: # print twopow cnt[d] += 1 if (i+1)%1000 == 0: print (i+1) print "%d\t%d\t%d\t%d\t%d\..