2010. 4. 21. 09:45
...잠깐잠깐 써보면서 파악한거 걍 메모삼아 낙서..

추가된거
1. C++0x
2. Parallel Patterns Library(PPL)
3. MFC Class Wizard 부활.
4. 코드 창을 다른 모니터로 이동가능. (WPF 로 작성되면서 얻은 이득인듯)

향상된거
1. Intelisense
(1) 좀 빨라지고 똑똑해졌다고하는데... 많이 안써봐서 모르겠다. 좀 이쁘게 뜨긴하는듯.
(2) .ncb -> .sdf
(3) ipch 폴더 생성됨. 실시간으로 Error List에 에러 뜨는거때문에 생긴걸까?

변경된거
1. MSDN Library -> Help Library Agent
2. Tools>Options>VC++Directories -> Project user property sheet>VC++ Directories (즉, 전역 디렉토리 설정이 불가능. 충돌이 줄어드니 좋아진거 같기도하고 아닌거 같기도하고... 근데 프로젝트 별로 설정하면 프로젝트 파일에 기록이 남나? 그럼 협업시엔 어쩔? 확인해봐야지..)
3. 라이브러리 링크시 프로젝트 디펜던시를 걸어도 링크가 안된다고 한다. 이제는 Common Properties>Framework and References 에서 설정해야 링크가 된다고한다. (whiteberry.egloos.com/3233616)

불가능해진거
1. Emacs keyscheme (WPF로 다시 작성하면서 우선순위에서 빠졌다고함)
2. Editor 폰트로 Bitmap, Raster Font 선택불가. (WPF Renderer에서 Truetype font만 지원함.. 지못미 Fixedsys..)


결론: 원수같은 WPF.. orz
Posted by envi
2010. 4. 2. 10:24

지켜주지 못해 미안해 Emacs


Visual Studio 2010 에는 Emacs emulation 제공되지 않을수도 있다는 을 봤다.
이유인즉 WPF 로 재작성되면서 해당 기능에 대한 구현되지 않았다는건데...
평소 emacs key binding을 애용해오던 나에겐 거짓말이라고 믿고싶은 상황이다. (다른 곳엔 emacs key emulation을 살려달라는(?) 투표도 진행되고 있다. (투표가 맞긴하나?))

아무튼 사람들의 불평에 대한 MS의 답변을 보면 3rd party에게 구현을 맡길 수 있도록 할수도 있덴다. 왜 지들이 구현 안하고...
뭐.. 한편으론 이 상황이 좀 반갑기도한데 왜냐면 기존 emacs emulation은 매우 드럽기때문이다. -_-;;
기존 기능은 이건 emacs 같기도하고 visual studio 같기도한 애매한 emulation이라 상당수의 기능이 원래 동작과는 다르게 동작한다.
그래서 viemu(vi emulation) 처럼 3rd party 쪽에서 구현하면 좀더 완성도가 높게 나오지 않을까 싶기도하고..

어쨌거나 저 소식을 듣고 emacs key binding을 버리고 기본 키보드 세팅으로 돌아가려고 시도를 해봤는데.. 이미 늦은거 같다. emacs는 마약이다 orz (사실 vim은 viemu 같은 것도 있고 VS2010 도 지원해준다고하니 vim에 적응해서 넘어가보려고 시도중에 있긴한데 -_-; 아무래도 글렀다.) ※1

MS가 구현할 생각이 없다면 재빨리 다른 3rd party에서 add-on을 만들어줬으면 좋겠다... 아니.. 제발, 반드시, 빨리 만들어줘-_- 비싸도 사줄테니까말야. 화이팅.



※1. 기본 키보드 세팅을 사용하지 않는 이유로는 키보드에서 손을 많이 움직이는걸 싫어한다. emacs 키배치에 맛들리니 코딩할때 화살표키나 PageUp, PageDown 누르러 손을 이동하는 것도 귀찮..
Posted by envi
2010. 3. 14. 18:26
Windows 7 부터 도입된 Jumplist 는 정말 편합니다.  MRU 의 강화판인 이 기능은 어느새 윈도우 사용 패턴(?)중 하나로 들어왔는데 언제부터인가 Jumplist에 있는 특정 목록이 안지워지는 현상이 발생하는 경우가 종종 있습니다.

저같은 경우는 IE의 점프리스트가 문제가 됬는데 네트워크 드라이브 상에 있는 특정 html 파일을 연후 이것을 '이 목록에 고정' 기능을 이용하여 고정 시킵니다. 그리고 해당 파일을 지워버리면 그 이후부터 핀 리스트에 있는 해당 항목은 삭제가 되지 않는 현상이 발생합니다.

어쨌거나 이리저리 삽질하다가 다음과 같은 해결책을 알아냈습니다.

시작 -> 실행 후 아래 커맨드를 입력후 확인을 누릅니다.
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations

그러면 탐색기에 1b4dd67f29cb1962.automaticDestinations-ms, 4975d6798a8bdf66.automaticDestinations-ms 같은 알수 없는 이름들의 파일이 보일겁니다.
이것들이 바로 Jumplist 정보를 담고 있는 파일들입니다.

하지만 괴상한 이름의 파일들만으로는 어떤 파일이 원하는 Jumplist 인지 알기가 힘든데요. 원하는 항목을 쉽게 알수있는 꽁수가 있습니다.
원하는 항목에 핀 리스트에 아무 항목이나 고정 시키면 저 파일중 하나가 수정된 날짜가 변경되므로 이후 최근 날짜 파일을 지우면 해당 항목이 초기화 된 것을 볼 수 있습니다.
Posted by envi
2010. 3. 6. 23:45
사실 C/C++ 을 공부하면서 포인터의 개념이 어렵다고 느끼지 않고 쉽게 이해하고 넘어간편인데...
문득 다른 사람들이 포인터를 왜 어렵게 느끼는지 알고싶어서 다시 한번 짚고 넘어가고 있는데 미처 몰랐던 내용들이 보였다. 그중 하나가 다음과 같은 사용법인데...
char* pstr = "abcdef";
cout << 2[pstr] << endl;

result:
c
[] 연산자는 두개의 매개변수 (기준 위치, 기준에서의 offset) 받아 얼마나 떨어져 있는지를 나타내는 것이므로 순서는 상관이 없다.
Posted by envi
2010. 3. 2. 11:26
VC6 으로 만들어진 소스를 영문화 시켜 해외에 내보낼 일이 생겼어요.
그래서 영문 리소스를 한짝씩 더 만들고 소스에 박혀있던 문자열을 죄다 String Table에 박는 노가다를 끝낸 후 SetThreadLocale로 언어를 바꾸고 실행했는데.... 안먹히잖아!
이게 뭐야! 하고 찾아봤더니 Vista 이상부터는 안먹는다네요..
그래서 XP나 Vista 이상에서도 돌수있도록 다음과 같이 적절하게 만들어쓰면되요.

// Vista 이상부터는 SetThreadLocale로 사용자가 직접 언어를 선택하는걸 허용하지 않는다.

// 이 함수는 XP 는 SetThreadLocale을 쓰고 Vista 이상은 SetThreadUILanguage를 부른다.

// 하지만 되도록 이걸 쓰지말고 dll로 리소스를 분리하는게 좋을듯...

bool SetThreadLocaleEx(LCID lcLocale)

{

OSVERSIONINFO osVersion;

osVersion.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

if (::GetVersionEx(&osVersion) == FALSE)

{

return false;

}


if (osVersion.dwMajorVersion == 6)

{   // >= Windows Vista

HINSTANCE hKernelDll = ::LoadLibrary(_T("kernel32.dll"));  

if (hKernelDll == NULL)

{

return false;

}

unsigned (WINAPI* SetThreadUILanguage)(LANGID) = (unsigned (WINAPI* )(LANGID))::GetProcAddress(hKernelDll, "SetThreadUILanguage");

if (SetThreadUILanguage == NULL)

{

return false;

}

LANGID resLangID = SetThreadUILanguage(static_cast<LANGID>(lcLocale));

return (resLangID == LOWORD(lcLocale));

}

else // <= Windows XP

{

return ::SetThreadLocale(lcLocale) ? true : false;

}

}

 
아 귀찮아요 [...]
Posted by envi
2010. 1. 15. 10:15
ODBC 관리자로 MS Access Driver 를 이용해서 mdb 파일을 연결하려고 했습니다.
윈도우 7 x64 에서 XP 에서 했던 기억을 더듬어서 추가하려고 했는데.. 드라이버 목록에 SQL Server 와 SQL Native Client 밖에 목록에 없네요..
아.. 뭐 되는게 없네.. 좌절하고 딴짓좀 하다가 문득 생각난게..

"아.. 64bit라 그런가?" 하고 찾아봤더니  32bit ODBC 관리자를 실행하면 되는거랩니다.

실행 -> "c:\windows\syswow64\odbcad32.exe" 로 실행하면 목록에 보일겁니다.


출처: https://msmvps.com/blogs/spywaresucks/archive/2007/05/11/897398.aspx
Posted by envi
2009. 8. 31. 18:33
GetFolderPath() 시 에러나는 현상이 발생했습니다.

제 컴에(Vista)선 에러가 안나는데 다른 컴(XP)에선 에러가 나길래 당황했으나..

GetFolderPath() 소스를 보니 Vista 일 경우와 XP 일 경우 분기가 나뉘는걸 보고 MSDN을 뒤져봤습니다.
그리고 MSDN 은 이렇게 말합니다.
You can call this method only while the dialog box is being displayed. After the dialog box has been closed, this function will no longer work, and the method will fail with an assertion.

GetFolderPath() .DoModal() 로 Dialog 가 띄어져있는 상태에서만 쓰는거였습니다!!! 으알마랒ㅁ루짛@$%@#$%

GetPathName 으로 fullpath 를 얻어와서 적절하게 나눕시다. [...]

P.S: MSDN에도 저렇게 명시되어 있는데 왜 Vista 는 닫은 Dialog 정보를 갖고있다가 GetFolderPath를 에러없이 반환해준다. 왜일까?..
Posted by envi
2009. 8. 20. 09:46
기존에 오프라인에서 돌아가는 무료 마인드맵 툴로 FreeMind를 쓰고있었는데.. XMind 라는 Eclipse Framework 기반으로 만들어진 툴을 알게 되었습니다.

몇시간 사용해본 결과 파악된 장단점은


장점:
1. FreeMind 보다 비교적 화려하다 (Mindmanager 같은 상용툴을 쓰는 기분..)
2. 웹상에 업로드 기능 제공
3. Theme 기능 (배경색을 파일 별로 바꿀 수 있어서 너무 좋다;;)
4. Boundary나 Summary 같은 기능으로 노드 묶음을 표현할 수있어 정돈되어 보인다. (FreeMind에는 Cloud 같은 기능이 있긴하나 적용시 더 산만해보인다;;)

단점:
1. 느리다. 노드가 많아지면 화면 이동시 버벅거린다. 노드 수에 비례해 저장 속도도 꽤 느리다.
2. 노드 배치 형태를 방사형 으로 할시 노드의 좌우측 위치를 사용자가 맘대로 못정한다. (좀 더 써보고 판단해야할듯..)

그 외:
1. 느리긴해도 메모리 사용량은 비슷한거 같습니다.
2. 저장 파일 형태는 FreeMind 가 XML 형식으로 저장되는 것에 반해 XMind는 binary로 저장되어 확장성(?)은 FreeMind 쪽이 더 나은거 같구요. (물론 XMind 에서 Export로 .mm 으로 변환하는 방법도 있긴합니다만..)
3. XMind의 아이콘들은 마인드맵으로 TODO 리스트를 관리하는 제게 최적화(?) 되있는듯. (아이콘으로 작업 진행 상황을 표현가능함..)

일단 러프하게 써놓고 계속 써보면서 갱신할 예정입니다. ;)
Posted by envi
2009. 7. 31. 09:56
마인드맵이 생각 정리하기엔 참 좋은 방법이라고 생각합니다. 그래서 머릿속에서 뭔가 생각이나면 간단하게 마인드맵 툴인 FreeMind로 아이디어를 스케치 하듯이 적어놓고는 방치(?)해 두곤하는데.. 회사에서 만드는 것과 집에서 만드는게 동기화가 안되다보니 기존에 쓰던 오프라인 기반 툴에서 온라인 기반 툴을 찾게 됬습니다. 아무튼 장단점 정리겸 간단하게 비교해서 방치를 해둡니다. [...]

Posted by envi
2009. 7. 28. 11:20
뭐 대략 이런 식의 코드...
... 이거때문에 "뭐..뭐지.. strPath 에 왜 아무 것도 없는걸까.." 하고 있었습니다만..

범인은 임시객체의 소멸이었다는거.. 요즘 피곤한가봅니다 [...]


Posted by envi