본문 바로가기

Programming

VBScript 출력을 콘솔(cmd.exe)로 변경하기 cscript /h:cscript 참 쉽죠잉~ 더보기
인터넷에 연결된 사설 IP 주소 찾기 내 컴퓨터의 경우 Network Interface가 4개나 있다 VMware 용 2개, 블루투스 1개, 랜카드 1개 특정 서버에 현재 내부 사설 IP를 전송하고 싶을 때 gethostbyname()를 사용하면 엉뚱한 블루투스 주소가 리턴된다. 물론 임의 서버에 접속한 뒤 해당 socket에서 정보를 가져오는 방법도 있지만 특정 경우 이러한 방법이 불가능하다. 관련된 코드를 찾던 중 데브피아에서 동일한 고민을 하시고 이에 대한 해결책을 제시하신 분이 계셨다 Lan Adapter 정보를 이용한 방법인데 신뢰성이 있어보인다. 해당 코드를 제공해 주신 데브피아 이영한 (hotyoung) 님께 감사드린다. 더보기
컴퓨터의 모든 IP 주소 가져오기 char szHostName[128]; if( gethostname(szHostName, 128) == 0 ) { // Get host adresses struct hostent * pHost; int i; pHost = gethostbyname(szHostName); for( i = 0; pHost!= NULL && pHost->h_addr_list[i]!= NULL; i++ ) { CString str; int j; for( j = 0; j h_length; j++ ) { CString addr; if( j > 0 ) str += "."; addr.Format("%u", (unsigned int)((unsigned char*)pHost->h_addr_list[i])[j]); str +.. 더보기
Windows Console 에서 rm -rf 구현 DEL /F /Q /S 아쉽게도 Windows XP에서만 가능하다고 한다 그래도 이게 어디!!! ------------------------------------------------------------------------ DEL Delete one or more files. Syntax DEL [options] [/A:file_attributes] files_to_delete Key files_to_delete : This may be a filename, a list of files or a Wildcard options /P Give a Yes/No Prompt before deleting. /F Ignore read-only setting and delete anyway (FORCE) /S D.. 더보기
CDialog에서 엔터키로 인한 종료 막기 CDialog는 디폴트로 어느 컨트롤에서든지 엔터키 입력시 OnOK() Esc키 입력시 OnClose() 를 호출하도록 설정되어 있다. 이를 막기 위해서는 아래와 같이 Dialog에서 처리하기 전에 함수를 리턴하면 된다. BOOL CTestDlg::PreTranslateMessage(MSG* pMsg) { if(pMsg->message == WM_KEYDOWN || pMsg->wParam == VK_ESCAPE) { // Process something return TRUE; } return CDialog::PreTranslateMessage(pMsg); } 더보기
Tail 함수 구현 tail구현 함수 입니다. 파일에 추가 되는 내용이 있는지 검사해서 줄단위로 읽어들입니다. 로그파일처리를 위한 프로그램등에 유용하게 사용할 수 있을 겁니다. 현재 저는 Apache의 웹로그를 분석해서 PV, Hits를 통계내는 곳에 사용하고 있습니다. 시간단위로 누적 count 값을 RRD에 저장해 둔다면, 변화량을 측정할 수 있게됩니다. 파일의 끝에 도달하면 select의 의미가 없으므로 굳이 select를 사용할 필요는 없을 거라고 생각된다. 실제 select부분을 주석처리해도 제대로 작동한다. 사용방법 TAIL *opentail(char *fname); int readtail(TAIL *LTAIL, char *buf, size_t size, int sec); void closetail(TAIL *L.. 더보기
쓰레드 동기화 방법론 쓰레드 동기화 오브젝트 (Thread Synchronization Objects) 쓰레드가 2개 이상 실행될 때 여러가지 변수 가있습니다. 하나의 공유자원(예를들어 동시에 접근하는 변수) 에 접근할 때, 파일 입출력 이나 디바이스I/O작업을 할 때 동기화 오브젝트가 필요합니다. 동기화 오브젝트 없이 쓰레드가 공유 자원을 사용할 때 공유자원이 원치 않은 값이 될수 있고, I/O작업 시 쓰레드가 I/O작업이 끝날 때 까지 무한정 블로킹(blocking : 특정 함수가 리턴 될 때 까지 기다림)현상이 발생할 수 있습니다. 동기화 오브젝트를 사용하여 다중 쓰레드에서 어떻게 안전 하게 공유자원에 접근하고 다른 쓰레드간의 실행 순서등을 조작하는지에 대해 알아 보겠습니다. 동기화 오브젝트는 유저 모드와 커널 모드로 .. 더보기
현재 IP Address 값 구하기 hostent* thisHost; thisHost = gethostbyname(""); const char* szIP=inet_ntoa(*(struct in_addr *)*thisHost->h_addr_list) 더보기
Windows 폴더, 파일 수 제한 FAT32 : 단일파일 4GB, 최대 볼륨 32GB, 볼륨당 파일수 4,117,920개, 폴더당 파일수 65,534개 NTFS : 단일파일 16TB, 최대 볼륨 256TB, 볼륨당 파일수 4,294,967,295개, 폴더당 파일수 4,294,967,295개 더보기
TCP/IP Header 구조 더보기