달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2008. 6. 5. 09:15

구글 데스크탑을 더 가볍고 빠르게! He's Say2008. 6. 5. 09:15

CountS는 구글데스크 탑을 즐겨 사용하고 있다
하드디스크의 색인 기능과 Ctrl+Ctrl의 검색기능, 그리고 가젯들을 이용하여 많은 정보를 얻으며 잘 쓰고 있다
하지만 언제부터인가 상당히 느려진다라는 느낌이 들어 검색해보니......

좋긴 좋아도 무겁다

라는 의견이 지배적이었다
그래서 최적화방법을 찾다보니 최진호님의 블로그에서 아래와 같은 설정법을 찾게 되었다

아래는 최진호님이 작성하신 내용이다
http://calmglow.egloos.com/3719179
---------------------------------------------------------------------------------------------------

비공식적으로 인터넷 치매 환자에다가 게으름뱅이라고 생각하는 calmglow로서는 구글 데스크탑이 업무나 개인 용도로 얼마나 요긴하게 사용되는 지 모른다. 며칠 전에 작성한 자료조차도 그것을 어디에 보관하고 있었는지 까먹어버리는 덕에 구글 데스크탑 이전에는 그것을 찾아 다니는데 바빠 업무에 많은 어려움을 겪기도 한다. 그러나 그건 구글 데스크탑이 나오기 전 이야기. 구글 데스크탑 이후에는 작성한 문서나 보관할 자료 정리가 훨씬 편해졌다. 대충 큰 범주 어딘가에다가 넣어버리기만 하면 나중에 몇몇 생각나는 '키워드'로 찾으면 되니까.

그런데 구글 데스크탑의 단점은 성능이다. 비교적 사용자가 놀고 있을 때에만 인덱싱 작업을 한다고는 하지만 성능에 민감한 사용자들은 구글 데스크탑의 무거움을 용납하지 못한다. 그래서 좋다는 것은 인정해도 그 성능 때문에, 그리고 찜찜한 구석이 있는 보안 문제 때문에 설치를 꺼리기도 한다. 아래에 소개할 내용은 구글 데스크탑 최적화 관련된 외국 페이지를 정리한 것이다.



구글 데스크탑의 버전이 높아지면서 갈수록 기능이 많아지고 결국은 성능에 대한 문제가 조금씩 불거지고 있다. 이제 우리는 구글 데스크탑의 최적화에 대해 고민해야할 때다.

먼저 성능 최적화를 위해 구글 데스크탑의 환경설정 화면으로 가야한다.

1. 필요한 파일 유형만 색인에 포함시켜라.
특히 '웹 기록'같은 경우는 상당히 많은 양의 디스크 자원을 소모한다. 굳이 자신이 지난날에 본 웹페이지들을 검색하고 싶다면 불여우(FireFox)의 막강한 history기능이나 IE(인터넷 익스플로어)의 내장 검색기능을 사용하면 어떨까?
만약 아웃룩등의 이메일 클라이언트를 사용하고 있다면 구글 데스크탑은 아웃룩의 이메일 뿐만 아니라 캘린더나 주소까지도 색인작업을 한다. 하지만 아웃룩이 자체적으로 제공하는 검색기능으로도 왠만한 작업은 가능하다.

2. 색인에 필요없는 디렉토리는 제외시켜라
구글 데스크탑은 전체 디렉토리와 전체 드라이브를 검색한다. 하지만 우리가 검색하고자 하는 것은 보통 별도의 디렉토리에 있는 경우가 많다.
C:\Program Files\
C:\Windows\
등의 디렉토리나 혹은 별도로 시스템이 사용하는 temp디렉토리등을 제외시켜서 성능을 향상시킬 수 있다. 그런데 만약 google desktop의 ctrl+ctrl를 통한 편리한 검색기능을 통해 애플리케이션 실행 기능을 사용하고 있다면 위의 두 디렉토리는 제외시키면 안될 것이다.

3. 색인작업을 하지 않아도 될 파일 확장자 제외시켜라.
색인작업을 하지 않아도 될 파일 확장자 목록은 환경설정 화면에서 설정할 수 없다. 이것은 레지스트리를 통해서만 확인하고 변경할 수 있는데 그 레지스트리 주소는 다음과 같다.
HKEY_CURRENT_USER\Software\Google\Google Desktop\file_extensions_to_skip
위의 키의 기본 제외 확장자는 tmp, temp, moztmp, log, pst, ost, oab, nk2, dat, 000, pf, xml, obj, pdb, tlb, pcc, pch, exp, res, map, sconsign, msf 이며 여기에 bak,chk,old,gid,prv,wbk,dll 등을 포함시킬 수 있고 마찬가지로 애플리케이션 실행 기능을 사용하고 싶지 않다면 exe나 com파일도 등록할 수 있겠다.

4. 구글 통합 검색 기능을 해제하라.
웹검색을 할 때에도 이 '구글 통합 검색'기능을 enable하게 되면 자동으로 데스크탑 검색까지 해준다. 이 기능은 사실 매우 편리한 기능이기는 하지만 만약 순수하게 웹검색 기능만을 사용하고자 하고 성능을 고려한다면 이 옵션을 해제함으로써 웹 검색 성능을 높일 수 있다.

이렇게 색인 관련 옵션을 변경하더라도 과거의 불필요한 정보는 그대로 구글 데스크탑이 간직하고 있다. 만약 완벽한 초기화를 원한다면 구글데스크탑을 종료한 후 C:\Documents and Settings\사용자id\Local Settings(숨어있는 디렉토리)\Application Data\Google\Google Desktop\ 내의 디렉토리를 삭제하고 다시 구글 데스크탑을 실행한 후 트레이 아이콘 오른쪽 마우스를 누르고 색인 재생성 명령을 실행하면 된다.
:
Posted by Lunaness
SHGetFileInfo는 매우 유용한 API다
어찌나 친절한 지 File의 정보를 몽땅 건내준다
(심지어 아이콘 정보까지 말이다)

여기서는 간단하게 파일 속성을 알기 위한 용도로 사용했다

CString strDrive;
SHFILEINFO shInfo;
....
SHGetFileInfo(strDrive,0,&shInfo,sizeof(SHFILEINFO),SHGFI_TYPENAME | SHGFI_ATTRIBUTES);
....

if ( !(shInfo.dwAttributes & SFGAO_HIDDEN) )
    // 숨김파일은 제외한다 코딩

여기서 붉은색 플래그는
#define SHGFI_ICON              0x000000100             // get icon
#define SHGFI_DISPLAYNAME       0x000000200      // get display name
#define SHGFI_TYPENAME          0x000000400        // get type name
#define SHGFI_ATTRIBUTES        0x000000800         // get attributes
#define SHGFI_ICONLOCATION      0x000001000       // get icon location
#define SHGFI_EXETYPE           0x000002000           // return exe type
#define SHGFI_SYSICONINDEX      0x000004000        // get system icon index
#define SHGFI_LINKOVERLAY       0x000008000         // put a link overlay on icon
#define SHGFI_SELECTED          0x000010000           // show icon in selected state
#define SHGFI_ATTR_SPECIFIED    0x000020000        // get only specified attributes
#define SHGFI_LARGEICON         0x000000000          // get large icon
#define SHGFI_SMALLICON         0x000000001         // get small icon
#define SHGFI_OPENICON          0x000000002          // get open icon
#define SHGFI_SHELLICONSIZE     0x000000004       // get shell size icon
#define SHGFI_PIDL              0x000000008               // pszPath is a pidl
#define SHGFI_USEFILEATTRIBUTES 0x000000010    // use passed dwFileAttribute

로 정의 되어 있다
이 플래그를 or로 추가해주면 필요한 정보를 얻어올 수 있다

여기서 오랜지색 플래그는
#define SFGAO_CANCOPY           DROPEFFECT_COPY // Objects can be copied    (0x1)
#define SFGAO_CANMOVE           DROPEFFECT_MOVE // Objects can be moved     (0x2)
#define SFGAO_CANLINK           DROPEFFECT_LINK // Objects can be linked    (0x4)
#define SFGAO_STORAGE           0x00000008L     // supports BindToObject(IID_IStorage)
#define SFGAO_CANRENAME         0x00000010L     // Objects can be renamed
#define SFGAO_CANDELETE         0x00000020L     // Objects can be deleted
#define SFGAO_HASPROPSHEET      0x00000040L     // Objects have property sheets
#define SFGAO_DROPTARGET        0x00000100L     // Objects are drop target
#define SFGAO_CAPABILITYMASK    0x00000177L
#define SFGAO_ENCRYPTED         0x00002000L     // object is encrypted (use alt color)
#define SFGAO_ISSLOW            0x00004000L     // 'slow' object
#define SFGAO_GHOSTED           0x00008000L     // ghosted icon
#define SFGAO_LINK              0x00010000L     // Shortcut (link)
#define SFGAO_SHARE             0x00020000L     // shared
#define SFGAO_READONLY          0x00040000L     // read-only
#define SFGAO_HIDDEN            0x00080000L     // hidden object
#define SFGAO_DISPLAYATTRMASK   0x000FC000L
#define SFGAO_FILESYSANCESTOR   0x10000000L     // may contain children with SFGAO_FILESYSTEM
#define SFGAO_FOLDER            0x20000000L     // support BindToObject(IID_IShellFolder)
#define SFGAO_FILESYSTEM        0x40000000L     // is a win32 file system object (file/folder/root)
#define SFGAO_HASSUBFOLDER      0x80000000L     // may contain children with SFGAO_FOLDER
#define SFGAO_CONTENTSMASK      0x80000000L
#define SFGAO_VALIDATE          0x01000000L     // invalidate cached information
#define SFGAO_REMOVABLE         0x02000000L     // is this removeable media?
#define SFGAO_COMPRESSED        0x04000000L     // Object is compressed (use alt color)
#define SFGAO_BROWSABLE         0x08000000L     // supports IShellFolder, but only implements CreateViewObject() (non-folder view)
#define SFGAO_NONENUMERATED     0x00100000L     // is a non-enumerated object
#define SFGAO_NEWCONTENT        0x00200000L     // should show bold in explorer tree
#define SFGAO_CANMONIKER        0x00400000L     // defunct
#define SFGAO_HASSTORAGE        0x00400000L     // defunct
#define SFGAO_STREAM            0x00400000L     // supports BindToObject(IID_IStream)
#define SFGAO_STORAGEANCESTOR   0x00800000L     // may contain children with SFGAO_STORAGE or SFGAO_STREAM
#define SFGAO_STORAGECAPMASK    0x70C50008L     // for determining storage capabilities, ie for open/save semantics

....
겁나 길다, 하지만 대충 봐도 알아 챌거니 자세한 설명은 생략한다
보기에는 많아 보이지만 예를들어
파일 속성에는 (읽기전용, 숨김, 링크, 삭제 가능/불가 등등)이 들어간다
:
Posted by Lunaness
2008. 5. 22. 13:20

PDA 메인을 바꿨다 Smart Phone Story2008. 5. 22. 13:20

정말정말 몇개월만에 PDA에 신경을 쓰기 시작했다..
아무리 싸게 샀다지만....
그동안 PMP로만 써온 PDA에게 미안해서 요즘 신경을 쓰기 시작했는데
간만에 너무 오랬동안 사용한 메인좀 바꿔보자 해서 바꾼결과

사용자 삽입 이미지

쩝... VGA를 지원하면 뭐하나...
VGA로 화면전환하니 이상하게 베터리가 많이 달더라;
일단 그래서 기본사이즈로 사용중..

Spb Poket Plus 4.0.2 설치 후
Spb Weather와 Spb Diary를 추가로 설치하니

오오옷!
달력과 할일을 바로 볼 수 있군하~ >ㅂ<

회사에 엑티브싱크 설치하고 ㄱㄱ싱~
(배경화면에 신경쓰면 지는거다)
:
Posted by Lunaness
가장자리를 깎아낼 때 쓴다

<선언>

void CXXXDialog::RoundEdge(CRect clientRect)
{
      // 모서리를 둥글게
      CRgn rgnTop;
      CRgn rgnBottom;
      // 상단 모서리를 자르고.
      rgnTop.CreateRoundRectRgn(0,0,clientRect.Width(),clientRect.Height(),9,9);
      rgnBottom.CreateRectRgn(0, clientRect.Height()-10, clientRect.Width()-1, clientRect.Height());
      // 해당 영역을 합치고.
      CombineRgn(rgnTop, rgnTop, rgnBottom, RGN_OR);
      // 잘려진 영역을 적용하고
      SetWindowRgn(static_cast<HRGN>(rgnTop.GetSafeHandle()), TRUE);
      // 영역을 해제.
      rgnTop.Detach();
      rgnBottom.Detach();
}

<사용>
CRect clientRectt;
GetClientRect(&clientRectt);
RoundEdge(clientRectt);

뭔소리인고 하니...
사용자 삽입 이미지
빨간색 태두리 처럼 만든다 이거다...


:
Posted by Lunaness
2008. 5. 21. 11:24

FMod 기본 사용법 Programing/Windows Programing2008. 5. 21. 11:24

FMod를 사용하면서 설정을 어떻게 해야 하나 하고 한참 뒤적였는데
삭은이~님 덕분에 쉽게 해결했다..
----------------------------------------------------------------------------------------------------
FMod를 몇일 다루면서 정리할 것들

대부분 사운드 라이브러리가 그렇듯이 FMod도 간단한 초기화 몇개 호출로 시작이 가능하다.

<초기화>
// DSound 사용은 옵션사항이다. 기타 옵션이 다양하지만 대부분 FMod가 내부적으로 가장 적절한 방법을 찾는다고 한다.
FSOUND_SetOutput(FSOUND_OUTPUT_DSOUND);
FSOUND_SetHWND(hWnd);

const OUTPUT_FREQ = 44100;
const NUMCHANNELS = 32;

if (!FSOUND_Init(OUTPUT_FREQ, NUMCHANNELS, 0))
{
    return FALSE;
}

저장된 사운드는 Sample 과 Stream 두가지 타잎으로 가능한데 Sample은 메모리를 잡고 전부 로딩하는 것이고 Stream은 일정 용량씩 나눠서 재생해주는 것이다. 효과음은 Sample, 배경음악은 Stream 으로 하는게 일반적이라 생각된다.

<Sample 로딩 및 재생>
FSOUND_SAMPLE* sample = FSOUND_Sample_Load(FSOUND_FREE, (const char*)data->GetPtr(), FSOUND_LOADMEMORY, 0, data->GetSize());

int channel = FSOUND_PlaySoundEx(FSOUND_FREE, sample, NULL, TRUE);

FSOUND_SetVolume(channel, g_nWavVolume);

FSOUND_SetLoopMode(channel, fRepeat ? FSOUND_LOOP_NORMAL : FSOUND_LOOP_OFF);

FSOUND_SetPaused(channel, FALSE);

<Stream 로딩 및 재생>
FSOUND_STREAM stream = FSOUND_Stream_Open((const char*)data->GetPtr(), FSOUND_LOADMEMORY | FSOUND_LOOP_NORMAL, 0, data->GetSize());

int channel = FSOUND_Stream_Play(FSOUND_FREE, stream);

FSOUND_SetVolume(channel, g_nMp3Volume);

종료는 모든 Sample/Stream 을 지워주는게 좋지만 FMod 내부적으로 관리가 되어서 아래 함수만 호출해도 된다고 한다.

<종료시>
FSOUND_Sample_Free(sample);
FSOUND_Stream_Close(stream);
FSOUND_Close();

출처 : 삭은이~의 개인 블로그
http://zupet.tistory.com/3

:
Posted by Lunaness