반응형

전체 글 119

좋은 함수(루틴) 이름

Code Complete 한글판 p.259 1. 루틴이 하는 모든것을 표현 2. 의미가 없거나 모호하거나 뚜렷한 특징이 없는 동사는 피한다. 3. 함수의 이름을 지을때, 리턴값에 대한 설명을 사용 customerID.Next(), printer.IsReady(), pen.CurentColor() 등 4. 프로시저의 이름은, 확실한 의미를 갖는 동사 다음에 객체이름을 사용. 동사 + 객체 PrintDocument(), CheckOrderInfo() 객체지향 언어에서는 객체의 이름을 포함시킬 필요는 없다. Document.Print(), orderInfo.Check() 등등 5. 반의어를 정확히 사용한다. add / remove increment / decrement open / close begin / e..

Porgramming 공통 2009.03.10

Quick Sort

- 피봇 결정시 밸런스 맡게 피봇을 뽑아내는게 퍼포먼스에 중요. For example, partitioning around 10 in the set {15, 20, 18, 51, 36, 10, 77, 43} results in the unbalanced partitions of {10} and {20, 18, 51, 36, 15, 77, 43}. On the other hand, partitioning around 36 results in the more balanced partitions of {15, 20, 18, 10} and {36, 51, 77, 43}. - 밸런스 맡게 뽑아내려면, We can improve partitioning further by randomly choosing three ..

Algorithm 2008.03.15

[JAVA] Comparator 이용하여 Collection Sorting

ArrayList등의 Collection을 Sort할때 Comparator Class를 이용하여 원하는 데로 Sorting을 할 수 있다. sort 함수는 Collections Class에서 Static으로 정의되어 있다. API참고. Example) Comparator bundleComparator = new Comparator(){ public int compare(Object bundle1, Object bundle2) { return (int)(((BundleImpl)bundle1).getBundleId() - ((BundleImpl)bundle2).getBundleId()); } }; // 번들들을 sorting함. id순으로. List sortedBundles = BundleMgr.getBun..

JAVA Programming 2007.07.23

[WINDOWS] 사용자 계정의 패스워드를 Disable 시키는 함수(User Lock)

윈도우2000 에서 어떤 계정이 GINA에서 로그인할 때 그 사용자의 패스워드를 disable 시켜서 로그인 하지 못하게 할때 쓰기 위해 만들었던 함수이다. 파라미터로 유저이름을 넘겨주면, 해당 유저를 lock한다. int lock_user(char * user_name) { DWORD dwLevel = 2; USER_INFO_2 ui, *pui; NET_API_STATUS nStatus; WCHAR wszUserName[UNLEN+1]; // Unicode user name MultiByteToWideChar( CP_ACP , 0 , user_name , strlen(user_name)+1 , wszUserName , sizeof(wszUserName)/sizeof(wszUserName[0]) ); n..

Windows Programming 2007.03.19

[WINDOWS] 프로세스를 실행시키는 함수

윈도우프로그래밍에서 프로세스를 실행시키는 방법 중에 하나가 CreateProcess API를 이용하는 방법이다. 파라미터로 프로그램의 경로+실행파일명 을 넘겨주면 된다. 예) create_process("c:\\abc.exe"); // 프로세스를 실행시키는 함수 int create_process(char *cmd) { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); si.cb = sizeof(si); memset(&pi, 0, sizeof(pi)); if(!(CreateProcess(NULL, cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))) { return FALSE; } WaitForIn..

Windows Programming 2007.03.18

[WINDOWS] 파일(IPC포함) 의 권한 속성을 부여

윈도우2000에서 서비스로 등록하여 돌아가는 프로그램과 일반 유저들이 로그온시에 그 유저권한으로 돌아가는 프로세스와의 통신을 할 필요가 있어서 IPC를 사용하던중에 문제가 발생했었다. 서비스로 등록된 프로그램에서 IPC를 이용하기 위해 메모리에 파일을 생성하였고, 일반 유저들이 로그온하여 실행시킨 프로세스가 서비스로 등록된 프로세스와 통신을 시도할때, access deny가 일어났다. (시스템영역의 프로세스와 일반유저영역의 프로세스간의 파일 억세스 권한이 달라서) 즉 억세스 권한이 거부되었기 때문에 억세스할수 있는 권한으로 파일을 생성해 주는 코드가 바로 아래 코드이다. 예) 아래 함수의 리턴값을 가져와서 파라미터로 넘겨준다. SECURITY_ATTRIBUTES sa *psa; sa = set_acces..

Windows Programming 2007.03.17

[WINDOWS] 로그온시에 자동으로 프로세스를 실행시킬 수 있도록 레지스트리에 시작메뉴 등록

아래 코드는 시작메뉴의 레지스트리에 프로그램을 등록하여, 사용자가 로그온시에 자동으로 실행되는 프로그램을 만들때, 유용하게 쓸 수 있다. setting 값을 TRUE로 설정하면 레지스트리에 등록을 하고, FALSE 로 설정하면 레지스트리에서 삭제한다. 예) set_registy_start_program(TRUE, "hello", "c:\\hello.exe"); -> 등록 set_registy_start_program(FALSE, "hello", NULL); -> 삭제 static int set_registy_start_program(BOOL setting, LPCSTR valuename, LPCSTR exefilename) { HKEY key; LONG ret; if(setting) { if(valuen..

Windows Programming 2007.03.17
반응형