Programming/Code

16

파일/폴더 존재 여부 파악하기

* 파일 / 폴더 존재 여부 파악하기 어떻게 확인하면 가장 빠르게 파일/폴더 여부를 확인할 수 있을까? 1) 가능한 파일을 안 열어보고 알 수 있어야 하고, 2) 경로는 전체 경로를 알고 있어서 곧바로 접근 가능하며, 3) 불필요한 index 파일 없이 빠르게 접근하는 방법을 고민 중이다. 일단 원하는 파일의 이름은 언제든 전체 경로를 만들어낼 수 있다는 가정하에 가장 빠르게 해당 파일이 존재하는지 여부를 알 수 있다면, FindFile 등을 이용한 불필요한 디렉토리 검색을 사용하지 않아도 되고, 불필요하게 폴더 구조를 저장할 정보 파일을 만들 필요 없을 터이니 이를 해결하고자 이래저래 방법을 찾아 테스트를 해 본다. // 1) CreateFile 사용 // 1) 폴더 검사 HANDLE hFolderFi..

Programming/Code 2010.12.09 1 Joshua95

[C#] Collection vs List

코딩을 하다보면, 매번 Collection 과 List 가 헷갈린다. 내용은 간단하다. Collection이 좀 더 원시적인 타입이고, List는 Search와 Sort 가 보강된 Collection 이라는 것. 둘을 혼용하여 코딩이 되어 있는데, 뭐 특별히 성능 이슈가 없는 경우라면 List 로 통일하는게 좋다고 생각됨. 단, ObservableCollection 은 얘기가 다름. ObservableCollection 은 UI와의 binding을 위해서 유용하게 사용되는 것이므로 Collection과는 별개로 생각할 것. 즉, 위의 Collection 이나 List 적용 이야기는 UI 무관할 경우에 한함. - 2010.09.28 by Joshua95

Programming/Code 2010.09.28 Joshua95

[C#] XML XPath 대소문자 구분없이 인식하기

XML XPath 대소문자 구분없이 인식하기 XML을 사용하다보면, 노드 이름이나 Attribute 이름을 대소구분 없이 사용하고 싶을 때가 있습니다. 초기 설계부터 한 사람이 설계했다면야 그럴리 없겠지만, 각 파트별도 다양한 사람이 설계를 했을 경우, 어떤 사람은 소문자만을, 어떤 사람은 대소문자 섞어서 사용할 수 있다는 것이지요. 기본적으로 XML에서는 대소구분 안 하니 별 문제 없이 사용할 수 있습니다만, C#에서의 XML XPath 사용 시에는 대소구분을 제대로 해 주는군요. 대소구분 안 하려고 이래저래 찾아봤더니, translate 를 사용해서 하면 된다는군요. 코드가 길어져서 그다지 내키지는 않지만 일단 급한 마음에 사용했더니 잘 되는군요. 성능 측면에서는 어떨지 모르겠네요. 아래와 같이 사용..

Programming/Code 2010.07.06 Joshua95

[MFC] VS 2008에서 OnInitDialog 이벤트 함수 추가하기

VS 2008에서 OnInitDialog 이벤트 함수 추가하기 2009/06/15 이런. 이거 찾느라 아까운 시간 낭비를 ㅠ.ㅜ 수동으로 해도 되지만, 수동으로 할거면 왜 MFC 쓰냐고 --a 자연스레 이벤트 추가 함수에서 WM_INITDIALOG 를 찾았으나 실패. 이건 머 보물 찾기도 아니고. ㅠ.ㅜ 결국 아래와 같은 순서를 보물을 찾다! 순서 1. 클래스 뷰를 본다. 2. 원하는 다이얼로그 클래스를 우클릭, 속성 선택 3. 속성 창의 윗부분을 잘보면, 까막 박스 아이콘 있음. 재정의 아이콘이랍시고 잘도 숨겨놨음 --a 4. 단, 리소스 뷰의 다이얼로그 속성 선택시에는 안 나옴. 헤매지 말고 클래스 뷰에서 클래스의 속성 선택 할것! 5. OnInitDialog 잘 선택해서 추가할것 * 이거 매번 까먹..

Programming/Code 2010.05.26 8 Joshua95

[C#] 모델리스(modeless) 다이얼로그 이벤트 처리하기

모델 다이얼로그를 사용하는 경우, 해당 다이얼로그를 생성/호출한 곳에서는 다이얼로그가 Close 되는 시점에 반환값을 받아서 처리하면 되므로 시점이 명확한 장점이 있습니다. 그러나, 모델리스(modeless) 다이얼로그를 사용하는 경우에는 해당 다이얼로그의 이벤트나 반환값을 받아서 될 시점이 명확하지 않아서 난감할 때가 있습니다. 이러한 경우에는 다음과 같은 이벤트 핸드러 함수를 등록하여, 다이얼로그를 호출한 곳에서 해당 다이얼로그의 이벤트를 받아 처리하도록 구현할 수 있습니다. // 1. 모델리스 다이얼로그(TestDialog)에 아래의 EventHanlder 선언 public event EventHandler TestCloseHandler; // 2. 모델리스 다이얼로그(TestDialog)의 Clo..

Programming/Code 2010.04.28 Joshua95

[C#] ObservableCollection을 List로 변환하여 정렬하기

ObservableCollection 자체로 그냥 Sorting 할 수 있으면 제일 좋겠는데, 아직은 방법을 못 찾겠음 --; 성능은 좀 떨어지더라도 아래와 같이 정렬할 수는 있겠음. // 1. 일단 ObservableCollection 으로 이렇게 얻어왔다고 치고. ObservableCollection pArray = GetSomeInfo(); // 2. SOME_INFO 라는 넘으로 구성된 ObservableCollection 을 List로 생성 List tmpNodeList = new List(pArray); // 3. List의 Sort를 사용하여 이름 순서대로 정렬 tmpNodeList.Sort(delegate(some_info n1, some_info n2) { return n1.GetName..

Programming/Code 2010.03.25 Joshua95

프로세스 비정상 종료시 처리방법

- 우리팀 prince께 도움을 받았음. ^^ 프로그램을 작성하다 보면, 예기치 않게 비정상 종료되는 문제가 발생하게 됩니다. 특히나 서버 프로그램을 작성하다 보면 이러한 비정상 종료는 이슈가 많이 됩니다. 이러한 비정상 종료로 서비스가 장시간 운영되지 못하는 문제를 해결하기 위하여 대체로 모든 서버 서비스는 감시 프로그램(watchdog)을 따로 두지요. 즉, 혹시 중요한 서비스 프로그램이 비정상 종료되면 얼른 다시 띄워주자는 것이지요. 특정 제품에 대한 사이트 지원을 하다보면 참으로 답답할 때가 많습니다. 아무런 정보 없이, 프로그램 죽었다고 들어오는 경우이지요. 프로그램에 대한 디버그 로그라도 상세히 심어놓은 경우는 그나마 다행입니다만, 모든 예외 처리에 열심..

Programming/Code 2010.03.23 Joshua95