#action Blog 블로그 더하기 ##Blog {{{#!blog hyacinth 2011-10-27T01:25:42 Workrave, PC 활동 통계 || attachment:111027_01.png || Workrave는 PC를 사용하며 정해진 스케쥴에 따라 정기적으로 휴식을 취할 수 있게 도와주는 --천사같은-- 프로그램이다. [http://www.workrave.org/ 링크] 오픈 소스고 무료로 받을 수 있다. 주 기능은 10분(=30초 휴식), 1시간(=10분 휴식) 단위로 알림창이 뜨고 잠시 긴장을 풀 수 있도록 도와준다. 1시간마다 뜨는 휴식(정규휴식) 알림창에선 간단히 따라할 수 있는 운동 애니메이션도 나온다. || attachment:111027_03.png?width=430 || ''이런 거'' 휴식을 취하라는 문구가 너무 자주 떠서 반사적으로 스킵할 때가 많지만 어쨌든 휴식이 중요하다는 걸 계속 상기시켜 준다. + 부가기능 중 PC 활동 통계 기능이 있다. || attachment:111027_02.png?width=500 || Workrave는 PC가 켜지면 항상 같이 실행되니 꽤 정확한 사용 통계가 된다. 내 어제 하루 마우스 이동 거리는 1.5km를 넘는데 생각보다 많다. 평균 마우스 버튼 누름 수는 7,000 ~ 8,000 정도. --이러니 손목이 아프지-- }}} [[HTML(
)]] http://hyacinth.byus.net/img/flower.jpg [[HTML(
)]] {{{#!blog hyacinth 2011-10-18T16:57:52 유니코드 얼마전 문득 UNICODE와 _UNICODE 정의의 차이가 궁금해 찾아본 기억이 난다. 윈도우는 유니코드를 사용할 때 UNICODE 매크로를 정의한다. Visual Studio는 C++ 프로젝트를 생성하면 UNICODE와 함께 _UNICODE를 정의한다. || attachment:Unicode_.png?width=550 || '' 유니코드 문자 집합 사용 구성 속성의 차이는 UNICODE와 UNICODE_ 매크로를 정의하는 것 뿐이다. '' C 언어는 모든 아이덴티파이어에 항상 언더스코어(_)를 붙인다. '' 그런데'' 이것은 C++ 표준안은 아니기 때문에 윈도우 개발팀은 언더스코어를 UNICODE 구분자에 포함하지 않았다. 이런 이유로 두 매크로가 같이 사용되게 된 것이다. 그래서 항상 UNICODE와 _UNICODE를 같이 정의하거나 둘 다 정의하지 말아야 한다. + 텍스트를 읽고 처리해야하는 애플러케이션의 경우 파일을 읽고나서 텍스트가 ANSI 문자인지 유니코드 문자인지 판별할 수 있으면 매우 편리할 것이다. 윈도우는 AdvApi32.dll에 IsTextUnicode() API가 정의되어 있다. 텍스트 파일의 경우 그 내용이 ANSI 문자인지 유니코드 문자인지 판단할 수 있는 안정적이고 빠른 방법이 없다. 그렇기 때문에 어떤 문자를 담고 있는지 판별하는 것은 매우 어려운 일이다. IsTextUnicode()는 전달된 버퍼의 내용을 통해 확률적statistical이고 규정deterministic에 의거한 방법을 활용한다. 이는 당연히 비과학적인 방법이고 잘못된 결과를 반환할 수 있다. 윈도우 API로는 드문 알고리즘으로 동작하는 함수이기에 재미있다. 버퍼 크기가 충분히 주어지면 더 정확한 값을 기대할 수 있다. }}} [[HTML(
)]] http://hyacinth.byus.net/img/flower.jpg [[HTML(
)]]