본문 바로가기

컴퓨터219

파일 끌어 놓기 구현 (drag & drop)DragAcceptFiles(); 파일을 프로그램 창으로 끌어 놓은 것을 인식하여 처리하는 방법을 알아 보자. 아주 간단하다. 우선, 끌린 파일을 인식할 창(실제로 보이는)을 주관하는 class 의 적당한 곳에서 DragAcceptFiles(); 함수를 호출해 주자. 한 번만 호출해 주면 된다. 그 후, WM_DROPFILES message handler 에 다음과 같이 코딩해 주면 된다. void CDiagnosisFeatureDiscoveryView::OnDropFiles(HDROP hDropInfo){TCHAR buf[MAX_PATH] = _T(""); UINT ret = DragQueryFile(hDropInfo, 0xffffffff, buf, MAX_PATH); if(ret != 1) return; DragQueryFile(hD.. 2014. 1. 3.
긴 오류 메세지 알아 보기 STL 을 사용하다 보면 특히나 오류 메세지가 매우 길어질 때가 자주 있다. 길어진 이유를 찬찬히 뜯어 보면 별 내용은 없고 대부분 STL 의 container 의 형 선언 때문인데, 보통 사용할 때는 기본값(default 값)으로 되어 있는 것을 사용하기 때문에 명시적으로 코드에 적어 주지 않는 것들이 오류 메세지에는 전부 나오기 때문에 길어지곤 한다. 이러한 것들을 무시하고 오류 메세지를 읽으면 좀 더 빨리 오류 메세지의 의미를 알 수 있다. 혹은, 오류 메세지의 제일 끝부터 읽으면 된다. 예를 들면 다음과 같다. [adnoctum@nomadism analysis_code]$ makeg++ -c check_data_set_consistency_with_gene_rank.cppcheck_data_set.. 2013. 5. 22.
유니코드 사용시 터미널로 출력되지 않는 문자에 의한 오류 파일에 무효한 ID를 텍스트로 저장한 후 읽어 들여서 set 에 넣고, 데이터 처리를 할 때 그 집합에 있으면 넘어가도록 코드를 작성했다. 그런데 최종적으로 보니 그 중 한 개의 무효한 ID가 처리가 되고 있었다. 제일 먼저 생각한 것은 그 ID 가 무효한 ID를 저장하는 파일에 없을 것이라는 것이었으나 확인을 해보니 분명 있었다. 그럼 어떤 이유에서든지 std::set 에 안 들어가나, 해서 set 의 모든 요소를 출력해 보았는데 역시나 있었다. 있는데 왜 처리를 하지? 현재 주어진 ID 가 set 에 있는지를 확인하기 위하여 std::set::count 함수를 사용했기 때문에 그대로 하면서 출력을 해 보았는데 없는 것으로 나온다. 그럼 아예 그 요소를 set 에 집어 넣기 전/후 집합 크기가 변하는지.. 2013. 5. 10.
삼바 접속이 안될 때 확인할 점들 삼바를 설치 후 윈도우즈에서 연결을 하면 짠! 하고 한 번에 되면 좋겠지만 잘 안 되는 경우가 많다, ㅋ. 그럴 땐 우선 다음과 같은 점들을 확인해 준다 (CentOS 기준). 1. SELinux2. 방화벽3. 데몬 실행 여부4. IP 1. SELinux : Security Enhanced Linux 인데, 이게 켜져 있으면 삼바를 돌리기 위해선 참 많은 다른 설정을 해야 한다. 보안이 향상된 것보다 차라리 편하게 삼바를 하고 싶다면 이것을 꺼준다. 이것 때문에 문제가 생길 경우 증상은 탐색기에서 연결된 상태로 뜨지만 권한 문제로 실제 접속은 되지 않는 것처럼 나오는 것이다. 2. 방화벽: 당연히 삼바가 쓰는 port 를 열어 놓아야 겠지. udp 138, 139 를 이용할테니 열어 놓도록 한다. 3. .. 2013. 5. 9.