티스토리 툴바


IT 생활의 지혜2011/12/09 16:23
마이크로 소프트 오피스 2007 제품군에 포함된 아웃룩을 이용하다가, 편지함 검색기능을 활용하기 위해
Window Search 4.0 을 내려받아서 사용하다가 결국 문제가 생겼다.

일단 업무에 지장을 줄 정도로 색인을 작성하는데 매우 느리다는게 가장 큰 문제였는데.. 결국 색인을 완료하지 않은 상태에서 프로그램을 제거해버리니 문제가 심각해졌다. 아웃룩에서 사용하는 "Outlook.pst" 파일이 손상되어 아웃룩이 실행조차 되지 않는다. 그리고 문제 해결을 위해 "scanpst.exe"를 활용하여 pst 파일을 복구하라고 하지만 파일조차 찾을수 없어서 난감한 상황에 빠져버렸다.

인터넷을 통해 scanpst.exe 파일을 구했고, 복구에 성공했다. 아래의 방법을 참고하자.
(출처 : http://kinlife.tistory.com/285)
  

1. 아래 파일을 다운로드 후 설치 합니다.




2. 프로그램을 실행한 뒤, 아웃룩 메일이 저장된 파일을 지정해 준 뒤, 'Start' 합니다.

 


아웃룩 파일 경로 : 
 
- 윈도우 XP 
 
C:\Documents and Settings\유저\Local Settings\Application Data\Microsoft\Outlook

 
- 윈도우 Vista or 7
 
C:\Users\유저\AppData\Local\Microsoft\Outlook\

 



*2011 12월 14일 포스팅 내용 추가 (지연된 쓰기 실패)

갑자기 사용하는 컴퓨터가 느려지면서, 작업표시줄에 말풍선으로 '지연된 쓰기 실패' 라는 문제가 계속 뜨게 되면서 컴퓨터가 엄청 버벅거리는 문제가 발생했다. 나는 이게  window search 4.0  과 관련이 있을것이라 생각되어 window search 4.0 을 삭제한 이후에도 문제가 해결되지 않자, 검색을 해보니 아래와 같은 내용들이 원인이 될수 있다고 한다.

1. 물리적인 문제 : 하드디스크,  S-ATA 케이블의 불량 등으로 인해 하드 디스크 입.출력에 문제가 발생할 때.
2. windows xp에서 큰 시스템 캐시 기능을 사용할 수 있도록 설정한 경우 데이터의 손상될 수 있음.

1번과 같은 문제는 하드웨어의 S-ATA 케이블을 점검해보고, 케이블의 접촉상태를 다시 점검 해보거나 교체 하면서 확인이 가능하다. 이와 같은 문제로 해결된다면 다행이지만, 2번과 같은 경우가 문제일 경우에는 레지스트리를 수정해야 한다. 자세한 방법은 마이크로 소프트에서 제공하는 내용을 참고하자. (http://support.microsoft.com/kb/330174/ko)
그리고 다른분의 블로그에 내용이 잘 나와 있어서 하나더 소개한다 여기도 참고하자. (http://www.ahngun.com/107)

난 참고로 2번의 문제점 때문에 지금은 해결되었다.
 
Posted by 개벽의별
IT 생활의 지혜2011/06/07 14:03

프로젝트의 규모가 커지고 파일의 개수가 많아지면 현재 작업중인 소스가 어떤파일에 있는지 쉽게 알 수없다.
그래서 비쥬얼 스튜디오에서는 현재 작업중인 소스가 어떤 파일에 있는지 추적하는 기능을 제공한다.

방법은 아래 순서로 하면 된다.
[도구] - [옵션] - [프로젝트 및 솔루션] - [일반] 에서 '솔루션 탐색기에서 활성화된 항목 추적(C)' 항목에 체크..

그러면 현재 작업중인 소스파일의 위치를 '솔루션 탐색기'에서 표기해준다. 만약 '솔루션 탐색기'가 아닌 '클레스 뷰'를 이용하는 유저라면 해당 기능은 쓸모가 없다. '솔루션 탐색기'를 이용하는 프로그래머에게는 신의 기능이 아닐까 +_+

Posted by 개벽의별
struct TEST
{
int iNum;
char ch;
};

구조체를 선언할적에 위와 같이 선언했다면 우리 생각엔 "4Byte(int) + 1Byte(char) = 5Byte" 라고 생각하기 쉽지만,
실질적으로 8Byte가 할당된다.

그 이유는 CPU 효율을 위해 4Byte씩 미리 잡아놓고 할당을 하기 때문이라고...

근데 주의할껀 char형 변수 3개를 선언하면 12byte가 되는게 아니라 4바이트가 할당된다.
미리 4바이트를 잡아두고 1바이트인 캐릭터형 3개는 4바이트를 넘지 않기때문에, 별도로 4바이트를 할당할 필요가 없기때문이다.

이러한 현상을 해결하기 위해서는, 2가지 방법이 있는데, 비쥬얼 스튜디오의 [프로젝트] - [속성] - [구성속성] - [C/C++] -[코드생성] 안에 구조체 멤버 맞춤 항목의 값을 바꿔주는 방법이 있고,

두번쨰로는 pragma 명령어를 이용한 방법이다. 자세한것은 아래 참고..

#pragma pack(1) //바이트 단위
struct TEST
{
int iNum;
char ch;
};
#pragma pack()


Posted by 개벽의별
inline 키워드를 사용하여 함수를 inline화 시키게 되면, 함수에 정의부에 있는 내용을 함수를 호출한 부분에 대체 함으로써 성능을 향상 시킬수 있다. 하지만 함수의 정의부에 내용이 많을경우에는 별로 좋지 않은 방법이다.

나는 잘 모르고 있었지만, 우리가 inline 키워드를 이용해 inline화 하는것은 단지 컴파일러에게 '요청'하는 것일 뿐이며, 판단은 컴파일러가 한다고 한다. 이 말은, 컴파일러에 의해 '요청'한 부분이 무시될수도 있고, 성능향상을 위해 컴파일러가 자동으로 inline화를 수행하기도 한다는 소리다.( 똑똑하군..)

inline함수를 만들때 주의해야 할 점은, 반드시 "inline 함수의 선언과 정의를 헤더파일과 구현파일로 분리해서는 안된다!" 이다.. 실제로 내가 경험한 내용이지만, 헤더파일(*.h)에 인라인 함수의 선언부를 써놓고, 구현파일(*.cpp)에 정의를 했을경우에는 'LNK2019' 라는 녀석을 만나게 될것이다.

컴파일 단계에서 검출되는 error나 warning과 달리 LNK(링크오류)는 진단하기가 상당히 까다롭기 때문에, 특별히 주의해야 한다.

이 문제를 해결하기위해서는 앞서 얘기했던것처럼 "inline 함수의 선언과 정의를 분리하지말고, 헤더파일에 선언과 정의를 하면된다"
Posted by 개벽의별


출처: http://blog.naver.com/ghostcbr954/110003750170

typedef struct_SYSTEMTIME
{
 WORD wYear;
 WORD wMonth;
 WORD wDayOfWeek;
 WORD wDay;
 WORD wHour;
 WORD wMinute;
 WORD wSecond;
 WORD wMillisecondes;
}SYSTEMTIME, *PSYSTEMTIME;


운영체제 차원에서 기본이 되는 시간 포멧의 구조체.

timeGetTime(VOID)

윈도우(운영체제)가 시작되어서 지금까지 흐른 시간을 1/1000 초단위로 나타내는 함수.
만일 윈도우가 뜨고 1분이 지났다면 이 함수는 60,000을 리턴.
부팅 시간은 제외.

void GetSystemTime(LPSYSTEMTIME lpSystemTime);

시스템의 시간을 알아내는 함수. 영국의 그리니치 천문대의 시간을 기준으로 한 시간이며,
국제적인 프로그램을 작성하는 경우가 아니라면 시스템 시간을 사용할 일은 별로 없을 것이다.

void GetLocalTime(LPSYSTEMTIME lpSystemTime);

UTC 시간에 현재 시스템에 설정된 시간대와 일광절약시간 설정을 참고하여
현지의 시간으로 바꾼 시간. 실제 프로그래밍에서는 로컬 시간이 더 자주 사용된다.

DWORD GetTickCount(VOID);

윈도우즈는 부팅된 후 1초에 1000씩 틱 카운트를 증가시키는데 이 함수를 사용하면 부팅된지 얼마나 경과
했는지를 알 수 있다. 카운트는 32비트값이므로 최대 49.7일간의 카운트를 유지할 수 있다. 주로 두사건
사이의 경과 시간을 측정하기 위한 용도로 사용하며 또는 간단한 애니메이션, 커스텀 커서의 깜박임 주기
조정 등의 용도로도 사용할 수 있다. 이 함수보다 더 정밀한 시간을 측정할 필요가 있을 때는 멀티미디어
타이머나 고해상도 타이머를 사용해야 한다.

Posted by 개벽의별