본문 바로가기

망각

Common Lisp 연습 우연히 http://okky.kr/article/278566 의 글을 보았다.개발자라면 '5개의 문제를 1시간안에 풀어야 되는거 아니냐' 라는 내용의 글인데 요즘 공부해보고 있는 Common Lisp 으로 도전! 5번을 해결하는데 4시간 정도 걸린 것 같은데, 문제해결보다는 CL의 함수를 찾고 사용법을 익히는데 많은 시간을 보냈다.하물며, 리턴값 자동 출력을 막는 방법을 몰라서 정답은 "SUM" 프리픽스를 붙여서 출력... 익숙한 언어로 했다 하더라도 1시간 안에는 5문제를 성공하진 못했을 것 같다.해결도 느려서 우울하고, CL 공부도 더딘 것 같아 우울하다. 우울@2x ;; ;; http://okky.kr/article/278566 ;; ;; http://frostlab.net/2015/05/09/fi.. 더보기
[EMACS] OSX 터미널에서 이맥스에 마우스 이벤트 먹게 하기 * 환경: Mac OS X 10.9 터미널에서 이맥스 사용시 마우스 이벤트가 전달되지 않는대, 아래 2가지를 설치해서 해결할 수 있다. (마우스 클릭은 잘 되는데, 드래그로 텍스트 선택이 안된다ㅜ) MouseTerm(https://bitheap.org/mouseterm/) SIMBL(http://www.culater.net/software/SIMBL/SIMBL.php) 설치 후, 환경설정을 해 줘야한다는 것. 아래 설정들은 MouseTerm 사이트에 나와 있는 것이다. * Emacs (unless window-system (xterm-mouse-mode 1) (global-set-key [mouse-4] '(lambda () (interactive) (scroll-down 1))) (global-set-.. 더보기
NSURLConnection/NS[Mutable]Request의 Timeout 값에 대해... Mac류 첫 포스팅:) NSURLConnection과 NS[Mutable]URLRequest 클래스들에 timeout값을 설정할 수 있다. 10, 20초로 timeout 값을 설정해도 적용이 안되서 테스트 삽질 후 검색을 해보니, timeout의 최소값이 240이며 이보다 작은 값일 경우 240으로 강제한다고 한다. 그러니, 더 작은 timeout을 원하는 경우 NSTimer를 사용해 cancel을 하라는 내용이다. 젠장, 자세한 내용은 다음 링크를 참고하자. http://stackoverflow.com/questions/1466389/nsmutableurlrequest-timeout-interval-not-taken-into-consideration-for-post-reques https://devfo.. 더보기
OLE Drag and Drop 문제 SodExplorer 테스트중 최근에 발견했다. 드래그앤드롭으로 파일 복사시에 SodExplorer가 드래그한 소스창으로 쓰이면 (즉, SodExplorer에서 파일을 끌어 다른 프로그램으로 복사할 경우) 복사 다이얼로그 창이 닫히기 전까지 SodExplorer창이 블럭되어, 입력을 받지 못했다. 드롭한 타겟창일 경우에는 문제가 발생하지 않았다. 헌데, 이런 상황은 SodExplorer band의 경우에 달랐다. 윈도우 탐색기와, 작업표시줄 툴바의 경우, 소스창으로 쓰일 경우에도 블럭되지 않았고 인터넷익스플로어의 경우에는 역시 블럭되었다. 차이점은 DLL이 explorer.exe에 로드되어 실행되느냐 아니냐에 따른 것으로 판단된다. IE의 경우 iexplorer.exe 프로세스가 따로 실행되고, 탐색기와.. 더보기
IDropTargetHelper 사용 문제 IDropTargetHelper를 사용하려 했는데 노드 하이라이트가 안된다. 밑에 그림처럼 드래그한 이미지는 뜨지만 트리노드위에 올라가도 노드 하이라이트가 되지 않는다. IDropTargetHelper 인터페이스의 메서드로 이런 저런 시도를 해봤는데, 아래처럼 트리뷰 영역이 지워지고 깜빡이는 현상이 나타난다. 미칠 노릇이다. 결국은 IDropTargetHelper 사용 중지...(아래 스샷은 마우스포인터가 빠져서 찍혔다). 적지 않은 시간동안 삽질을 하고 검색을 했는데도 해결도 못하고 관련 글을 찾지도 못했다. 아놔, 이유가 무엇인지 정말 궁금하다! 더보기
::LoadIcon과 ::LoadImage HICON LoadIcon( HINSTANCE hInstance, LPCTSTR lpIconName ); HANDLE LoadImage( HINSTANCE hinst, LPCTSTR lpszName, UINT uType, int cxDesired, int cyDesired, UINT fuLoad ); 일단 두 함수의 프로토타입은 이렇고, MSDN의 LoadIcon 항목에는LoadIcon이 LoadImage로 대체되었다고 한다. 대체라? deprecate된 것들과 차이가 뭔지 잘 모르겠다. Note This function hase been superseded by the LoadImage function. 일단 16x16, 32x32, 48x48 크기의 아이콘 리소스가 실행파일에 포함되어 있고 이를 읽어.. 더보기
SHChangeNotifyRegister 사용중 의문점 첫번째- PIDL 관련, simple PIDL? ::SHChangeNotifyRegister(hwnd, SHCNRF_ShellLevel, SHCNE_RENAMEFOLDER, MY_MESSAGE, 1, &entry); 위 처럼 폴더의 이름변경을 알기 위해 메시지를 등록했다. 전에 글에서 적은 것처럼 메시지의 WPARAM로 변경된 폴더 관련 PIDL이 넘어온다. 이 PIDL(absolute)을 이용해 ::SHBindToParent() 함수에서 부모폴더의 IShellFolder 인터페이스와 부모폴더에 상대적인 PIDL을 얻었다. ::SHBindToParent(fullyPidl, IID_IShellFolder, (void**)&iparent, (LPCITEMIDLIST*)&childPidl)) iparent->.. 더보기
폴더 이름 얻기에 관해 (::SHGetFileInfo, IShellFolder::GetDisplayNameOf) PIDL로 폴더의 이름을 얻기위해 ::SHGetFileInfo()를 사용중이었는데 "My Documents"나 "My Music" 같은 가상 폴더의 경우, "Administrator's Music" 같은 식으로 윈도우 계정의 이름이 붙어서 리턴됐다. IShellFolder::GetDisplayNameOf()를 사용하면 "My Music" 처럼 탐색기에 보여지는 이름대로 리턴된다. 한가지 더, ::SHGetFileInfo()의 경우 IDLIST_RELATIVE 같은 부모폴더의 상대적인 PIDL을 전달하면 "C:\"나 "CD Drive (E:)" 같은 "My Computer"에 바로 붙은 노드들은 이름이 빈 문자열로 리턴되는 경우가 있다. 이럴 때 IDLIST_ABSOUTE의 PIDL을 전달해주면 제대로 이.. 더보기
SHChangeNotifyRegister 사용에 대해 폴더의 이름 변경을 알기위해 ::SHChangeNotifyRegister() 함수를 사용하려 한다. 이 함수는 지정 이벤트가 일어날 경우 보내질 메시지와 메시지를 받을 핸들을 받는다. ULONG SHChangeNotifyRegister( HWND hwnd, int fSources, LONG fEvents, UINT wMsg, int cEntries, const SHChangeNotifyEntry *pshcne ); MSDN에는 이 함수와 관련 함수들에 대해 설명이 부족하다(내가 못 찾는 건가!). 일단 이벤트가 발생해서 윈도우로 메시지가 전달됐다고 하자. 관련 정보는 어떻게 얻을 수 있는건가? 메시지의 WPARAM, LPARAM 값은 어떻게 사용해야 하나? 관련 정보가 MSDN에 없다; 구글링으로 찾아본.. 더보기
IDeskBand 구현시 레지스트리 항목에 대해 IDeskBand 구현시, MSDN의 Creating Custom Explorer Bars, Tool Bands, and Desk Bands 항목에 나온 레지스트리 등록으로 등록된 밴드가 메뉴에 나오지 않았다. (내 시스템은 XP x64) SDK 예제를 보 OS 버젼검사를 해서 다른 레지스트리 값도 등록을 해주고 있었다. OSVERSIONINFO osvi; osvi.dwOSVersionInfoSize = sizeof(osvi); ::GetVersionEx(&osvi); if (VER_PLATFORM_WIN32_NT == osvi.dwPlatformId) { // HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/Shell Extensions/Ap.. 더보기