'전체 글'에 해당되는 글 171건

  1. 2007.11.26 Google Desktop Data
  2. 2007.11.22 캘린더 서비스 다음(Daum) VS 구글(Google)
  3. 2007.11.20 [VisualStudio] VS를 사용하여 변수가 참조되는 곳 찾기 (참조로이동)
  4. 2007.11.20 CAxWindow 사용시 주의사항 & ATL Containment BUG
  5. 2007.11.12 소개 - VPL(Visual Programming Language)

Google Desktop Data

IT활용 2007. 11. 26. 12:20

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

날짜 : 2007-11-26

저자 : hanburn

 

구글의 Desktop을 몇 일 전에 설치하였습니다. 내 컴퓨터의 모든 것들을 빠르게 찾아주는 기능과 구글의 위젯도 살펴볼겸해서 설치를 하였습니다. 설치를 하고 나니 가끔 컴퓨터가 느려지는 느낌이 있었습니다. CPU점유율은 낮은데도( 참고로 제 PC는 듀얼코어로 나름대로 최신입니다.) 컴퓨터의 하드디스크가 계속 돌아가는 것이다. 헐 이거 윈도우가 이제 느려지는 것인가 라고 생각하고 컴퓨터를 한번 밀어줘야 되나 생각을 했지요.. 

 

오늘 윈도우탐색기를 보다보니 어느새 이런 폴더가 보입니다.

“Google Desktop Data”

아하, 구글데스크탑이 검색을 위해서 인덱스를 만든다는 이야기를 들었던 터라 이 폴더가 그 데이터를 저장하는 폴더인가 라고 생각을 하고, 용량이 얼마인가 폴더 정보를 살펴 보았습니다. 이럴수가~ 자그마치 1.27GB의 용량을 먹고 있다니..

사용자 삽입 이미지

 

빠른 검색을 위해서 인덱싱을 어지간히도 했나 봅니다. 구글 데스크탑을 계속 써야 되는지 살짝 고민이 되네요..

 

구글 데스크톱을 사용하다 보니 한가지 문제가 더 발견되었습니다. 사용 PC 환경이 듀얼모니터 인데 2번 모니터에 구글 데스크톱을 오른쪽에 사이드바 형식으로 표시하게 한뒤에 데스트톱을 종료를 시켰습니다. 그랬더니 2번 모니터에서 어떤 윈도우든지 최대화면으로 표시를 하면 기존에 데스크톱이 있던 영역을 빼고 최대화가 되는 것입니다. 아마도 구글 데스크톱이 시스템의 정보를 제대로 변경시켜 놓지 않아서 발생한 것 같습니다. ~ 구글에서 프로그램을 이렇게 만들어 놓았을 줄이야..

 

혹시나 해서 다시 구글 데스크톱을 실행시키고 종료해보았습니다. ~ 정상 동작하네.. 이런 스샷이라도 남겨 놓을걸.. 아쉽네요..

 

소비자 입장에서는 이미 구글의 명성을(저는 개발자로 구글의 name value를 높이 생각하고 있습니다.) 머리속에 있는 이런 선입견 때문에 작은 버그가 구글에 대한 커다란 실망으로 다가옵니다. 구글이 조그만 신생 기업이었다면 실망도 들지 않고 오히려 이런 프로그램을 만들다니 대단하다고 놀라워 했을 것입니다.

 

회사가 커지고 유용한 서비스를 제공하다 보면, 소비자의 마음속에는 그 회사에 대한 신뢰가 쌓여 갑니다. 그래서 사용자는 브랜드 제품을 찾게 되는 것이고 브랜드 제품에서 발생한 작은 결함에 대해서 비브랜드 제품보다 커다란 실망(?)을 하게 됩니다. 프로그램을 개발 하는 입장에서도 사소한 것에도 신경을 써야하는 이유가 바로 여기에 있습니다. 소소한 버그 및 불편한 기능들은 지금까지 고객의 마음속에 쌓아놓은 신뢰를 갈아먹는 것입니다.



:

캘린더 서비스 다음(Daum) VS 구글(Google)

IT활용 2007. 11. 22. 15:23

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

날짜 : 2007-11-22

제저 : hanburn

 

 

구글형님이 캘린더 서비스(일정관리 및 공유기능)를 시작하자, 다음(daum)에서도 빠른 행보로 비슷한 서비스를 하고 있습니다 그래서 오늘은 이 두 서비스를 비교해보고, 일정관리의 원조(?)격인 Outlook과도 같이 살펴보도록 하겠습니다.

 

먼저 구글의 캘리더 모습입니다.
사용자 삽입 이미지

구글답게 캘린더 검색기능을 상단에 배치하고 있는 모습이 눈이 띄고, 날짜에 마우스를 클릭하면 새로운 일정을 입력하는 풍선도움말 모양의 UI가 보입니다. 여기서 일정만들기를 하면 간단하게 일정을 추가할수 있구요, ‘일정 세부정보수정을 누르면 아래처럼 화면이 변경이 되어서 일정, 장소, 설명, 그리고 옵션으로 알리미, 참석자의 정보를 입력할 수 있습니다.


사용자 삽입 이미지

그리고 IE창의 크기를 resize하면 달력의 모양이 화면 크기에 맞게 조정이 됩니다. 역시 Ajax를 먼저 도입한 만큼 이런 처리가 잘되어 있습니다.

 

다음으로 daum의 캘린더를 살펴보겠습니다.

 

사용자 삽입 이미지


 

Google의 캘린더를 벤치마킹 해서 그런지 몇 가지 더 편리한 기능들이 들어 있습니다. 일단 UI가 한국의 네티즌에 더 어필 할 만한 디자인이구요 오른쪽 위에는 오늘의 날씨가 우리나라의 지역별로 제공되고 있습니다. 캘린더에 잘 어울리는 기능입니다. 일정을 입력하는 방식은 웹이라서 그런지 해당날짜를 클릭하면 일정입력 창이 하나 뜨는데, 마우스 오른쪽을 클릭해도 IE의 팝업메뉴와 함께 뜨더라구요.. (버그아닌지 ^^)

 

일정입력창에서 일정자세히 입력을 클릭하면 아래처럼 세부내용을 입력 할 수가 있습니다.


사용자 삽입 이미지


구글보다 더 좋아 보이는 것은, 알림을 메일, daum 메신저등 더 많은 방법으로 내용을 통지 받을수 있다는 것입니다.

 

그리고 미니 캘린더를 설치하게 되면 Outlook과 데이터도 연동이 되니 좀더 편리 할 수 있습니다.  (iCal 형식이나 Outlook의 데이터는 구글도 가지고 올 수 있습니다.) 그런데 다음은 Sync형식으로 편하게 OutLook의 데이터를 가지고 오더군요.. ^^ 미니 캘린더는 OutLook에서 일정기능만 떼어서 가볍고 작게 만든 작은 프로그램입니다. 클라이언트에서 독립 실행되면서 daum의 웹과도 연동이 되니 IE없이도 편하게 사용 할 수 있을 것 같은 생각이 듭니다.

사용자 삽입 이미지


정리를 하면, 시작은 구글이 먼저 했지만, 아무래도 나중에 만든 것이 새로운 기능을 추가하고 그래서 그런지 다음의 캘린더에 한표를  하지만 웬지 둘 다 사용은 안 할 것 같은.. ㅋㅋ

(회사에서 OutLook을 사용하고 있어서.. )



:

[VisualStudio] VS를 사용하여 변수가 참조되는 곳 찾기 (참조로이동)

개발 2007. 11. 20. 12:00

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

날짜 : 2007-11-20

저자 : hanburn

 

Visual studio의 편리한 기능중에서 사용중인 변수에 마우스 오른쪽 클릭을 하면 해당 변수가 정의되어 있는 곳으로 이동하는 기능과 선언으로 이동하는 기능이 있어서 참 편리하게 사용하고 있습니다. 그런데 팝업메뉴에보면 참조로 이동이라는 메뉴에는 회색으로 disable 처리가 되어 있는 것을 볼 수 있습니다. 참조로 이동이라면 해당 변수가 사용되는 곳, 즉 참조하는 곳으로 이동한다는 것인데 상당히 유용한 기능이 될 수 있는 것 같은데, disable이라니..  실망하지 마세요.. 방법을 찾았습니다.

 

BSC파일이라는 브라우서 소스파일을 먼저 만들어야 됩니다. 아래에서 만드는 방법을 설명합니다.

 

1. .BSC 파일 만들기

 

.BSC파일을 만들기 위해서는 커맨드 라인에서 BSCMake.exe 툴을 이용하여 만들어야 되는데, 아래의 방법으로 IDE 환경에서 간단하게 생성할 수 있습니다.

 

Visual Studio의 프로젝트 속성에서 아래와 같이 하면 각 소스파일(cpp파일)에 대해서 찾아보기 정보 파일을 생성할 수 있습니다.

 

먼저, C/C++탭의 찾아보기 정보에서 찾아보기 정보 사용에서 ‘FR’ 옵션으로 변경합니다.

사용자 삽입 이미지


이렇게 하면 각각의 소스파일에 대해서 sbr 파일이 release/debug 폴더에 생성이 됩니다.

 

각각의 sbr 파일을 합쳐서 .BSC 파일을 생성하려면, 속성의 일반탭에서 브라우저 정보 빌드를 로 변경합니다.

사용자 삽입 이미지

이렇게 하고 다시 빌드를 해주면 release/debug 폴더에 .BSC 파일이 생성이 됩니다.

위의 과정을 해주면 아래그림처럼 마우스 오른쪽 버튼의 참조로 이동메뉴가 활성화가 됩니다.


사용자 삽입 이미지

2. 참조 이용하기

 

* 마우스 오른쪽을 클릭하여 참조로 이동을 선택하면 해당 기호의 첫번째 참조로 이동을 합니다. 이때 애매모호한 경우에 모호성 해결대화상자가 나타입니다. (많이보던 거죠 ^^)

* 다음 참조로 이동하고 싶으면 ‘Ctrl+Shift+1’ 단축키를 이용하면 됩니다.

* 기호찾기 대화상자에서 검색을 수행한 후에 표시되는 기호 찾기 결과 창에서 기호의 노드를 확장하여 기호의 참조를 탐색합니다.

 

기호찾기는 Alt+F12를 누르거나 메뉴의 편집->찾기및바꾸기->기호찾기에 있습니다.


관련자로 : http://msdn2.microsoft.com/ko-kr/library/95ws11cy(VS.80).aspx



:

CAxWindow 사용시 주의사항 & ATL Containment BUG

개발 2007. 11. 20. 11:24

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

날짜 : 2007-11-20

저자 : hanburn

 

 

ATL 프로그램으로 WebBrowser 컨트롤을 hosting 하는 역할로 CAxWindow를 많이 사용합니다. CAxWindow를 사용할때 주의를 기울이지 않으면 메모리릭(memory leak)이 발생할 수 있다고 합니다. 그리고 CAxWindow의 자체적인 버그도 있다고 합니다.

 

 

먼저, 다음은 메모리릭이 발생할 수 있는 잘못된  2가지 사용예입니다.

 

1번사용예

//Intialize ATL control containment.

AtlAxWinInit();

 

//Create container window.

HWND hWndCont = m_ax.Create(m_hWnd, rect, 0, WS_CHILD | WS_VISIBLE);

 

//Create & activate ActiveX control

HRESULT hr = m_ax.CreateControl("MSCAL.Calendar");

 

2번사용예

//Intialize ATL control containment.

AtlAxWinInit();

 

//Create container window

HWND hWndCont = m_ax.Create(m_hWnd, rect, 0, WS_CHILD | WS_VISIBLE);

 

// Create ActiveX control.

CComPtr<IUnknown> spunk;

HRESULT hr = CLSIDFromProgID(OLESTR("MSCAL.Calendar"), &clsid);

hr = CoCreateInstance(clsid, NULL, CLSCTX_ALL, IID_IUnknown, (void**)&spunk);

 

// Activate ActiveX control.

HRESULT hr = m_ax.AttachControl(spunk);

 

위의 두 경우에 Create()함수는 CAxHostWindow 객체를 생성합니다. CreateControl()함수나 AttachControl()함수 또한 CAxHostWindow 객체를 생성합니다. 따라서 처음에 Create() 함수로 생성된 CAxHostWindow 객체는 소멸이 않되게 됩니다.

 

 

다음으로 ATL Containment의 메모리릭 버그입니다.

 

증상 : ActiveXATL에서 hosting 할때에 메모리가 줄줄이 샘.

원인 : ATL내부에서 CreateAcceleratorTable 함수를 호출하는데 소멸시(release)시에 ATL에서 이것을 해제하지 않아서 발생함.

 

대책 :

1.     Atlhost.h파일의 복사본을 만들어서 Fixatlhost.h 파일을 만든다.

2.     FixAtlhost.h파일에 CAxHostWindow 클래스에 HACCEL타입의 멤버 변수를 하나 추가한다.

3.     IOleInPlaceSite::GetWindowContext 메소드에서 CreateAcceleratorTabel함수의 반환값을 저장해 둔다.

4.     IOleInPlaceSite::OnInPlaceDeactivate 메소드에서(Release되는 시점) DestroyAcceleratorTable함수를 호출해준다.

5.     FixAtlhost.h 파일을 저장하고 atlhost.h 파일대신 include를 한다.

 

메모리릭이 발생하는 것은 ATL 3.0 이라네요.. ㅎㅎ
 

 

참고자료 :

http://support.microsoft.com/kb/229904 : CAxWindow Members Can Cause a Memory Leak

http://support.microsoft.com/kb/258235 : Memory Leak with ATL Containment

 

 

 



:

소개 - VPL(Visual Programming Language)

개발 2007. 11. 12. 11:35

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

저자 : hanburn

날짜 : 2007-11-12

마이크로소프트에서 VPL(Visual Programming Language : 이하 VPL)이라는 것도 만들었내요(july 2007). 말 그대로 코딩을 할 줄 모르는 사람들도 쉽게 그림을 통해서 프로그램을 할 수 있도록 만든 것인데요, 개념적으로 보면 재미가 있습니다.

 

프로그래밍에 필요한 기본적인 요소가 무었일까요? 또는 최소한으로 필요한 것은 무엇일까요?  현재의 튜링머신 구조상에서는 상수, 변수, 제어구조(비교, 반복구조)등이 아닐까 생각됩니다. 보통 우리가 사용하는 C/C++ 같은 언어는 너무나 잘 되어 있는 프로그래밍 언어입니다. 어셈블리어로 시야를 변경해 보면, 변수에 해당하는 register 나 메모리가 존재하구요, 값이 이동시키는 move 명령어, 그리고 제어구조에 해당하는 jmp 값은 명령어 들이 있습니다.

 

프로그래밍의 본질은(?) 변수에 값을 대입하고, 연산과 흐름을 제어 하는 것입니다.

 

그럼 이런 기본적인 것을 Visual 적으로 어떻게 표현을 할 수 있을까요? 궁금하지 않습니까? 아래를 보기전에 잠시 생각을 해보시기 바랍니다. 여러분이라면 어떤 방식을 사용해서 이런 것을 표현 할지를요  때때로 발명은 재미로 시작하는 것들이 많습니다~

 

 

아래는 VPL의 모습입니다.

사용자 삽입 이미지


왼쪽상단에 Basic Activities에 기본적인 프로그래밍 요소들이 들어 있습니다. 변수에 해당하는 Variable, 상수에 해당하는 Data, 연산에 해당하는 Calculate, 제어구조에 해당하는 if, switch 등이죠.. ~ 반복문은 없나요? 네 없습니다. 연산과 if 블락을 이용해서 만들어야 합니다. 화면 가운에 Diagram 이라는 곳이 코딩(?)을 하는 공간입니다. 마우스로 해당 Activities를 드래그 하여 코딩을 하게 됩니다. 재미있죠~ ^^  위의 코딩은 2개의 값을 입력 받아서 같으면 같다아니면 다르다를 출력하는 간단한 프로그램 입니다. 개발자라면 직관적으로 알 수 있을 것입니다. 그럼 하나 더 보도록 할 까요?  어떤 동작을 하는 것인지 추측해 보세요~


사용자 삽입 이미지

.

.

.

.

 

이것은 0이라는 상수를 loopInd라는 변수에 대입을 하고(set) if 비교를 통해서 5가 될때까지 +1을 해주는 코딩(?)입니다. 즉 반복구문 이죠. 이게 직관적으로 알기는 쉬운데, 조금만 복잡해져도 그림이 난장판이 될 것 같은 예감이 들지 않나요?  아니라구요? 그럼 아래를 보시구 어떤 동작을 하는지 맞추어 보세요 ㅋㅋ


사용자 삽입 이미지



: