Windows XP를 사용중인데, 테마를 xp에서 고전으로 변경하면 tray에 나오는 시계에 날자정보가 나오지 않고 마우스를 가져다 놔야 툴팁으로 날자가 표시되어 꽤 귀찮다.

사용자 삽입 이미지

Windows XP 기본 시계


이 시계를 입맛에 맞게 변경시키는 아주 작은 툴이 있어서 소개한다.
바로 TClock Light 라는 툴이다.




배포판에 소스까지 포함되어 있어 간단하게 오늘이 몇주차인지 표시하도록 수정해봤다.


사용자 삽입 이미지

몇주차인지 표시하려면 TClock 설정> 서식에 표시 형식 직접 입력을 선택하고, w 문자를 사용하면 몇 주차인지 표시하도록 했다. 아래 수정된 dll파일을 이용해야한다.


마지막으로 내가 설정한 세팅은 다음과 같다

사용자 삽입 이미지

AND

현재 로컬 PC에 모니위키를 사용중에있다. 위키에서 code syntax highlight를 하기 위해서는 VimProcessor 를 이용하면 쉽게 가능하다.

Vim 으로 Highlighting 을 위해서 아래 2가지를 추가해주면 가능하다.

1. Vim 설치
2. config.php 파일에 vim 경로 등록

$path="C:\Program Files\Vim\Vim70";


 

두가지를 확인하면 아래와 같은 문법을 사용하면 wiki에서 문법에 맞춰 색이 나온다.
{{{#!Vim c
void main(void)
{
   printf("Hello world");
}
}}}

위의 예제의 결과물
사용자 삽입 이미지


만약 화면 layout이 이상해 진다면 vim.php 파일의 아래부분을 다음과 같이 변경해주면 정상동작한다. (136 라인 )
$out=substr($out,$fpos+6,$tpos - $fpos - 6);

substr의 3번째 인자가 length 인데 end position으로 잘못 코딩되어 있었다.
AND

화면캡쳐용 프리웨어를 찾다가 아주 입맛에 딱 맛는 유틸리티를 찾았다.

일명 픽픽 (PicPick)

특징으로는 (사이트에 있는 내용)

각종 화면 캡쳐 기능(전체화면 캡쳐, 듀얼 모니터 캡쳐, 웹페이지 스크롤 캡쳐, 영역 지정 캡쳐, 컨트롤 인식 캡쳐, 내 마음대로 캡쳐 등)과 이미지 편집 및 효과, 레이어, 색상 추출, 팔레트, 눈금자, 각도기, 십자선, 화면 그리기 등 그래픽 작업에 필요한 모든 기능을 이 작은 프로그램 하나가 전부 제공합니다.
 
내 맘에 드는 기능은

1. 스크린 캡쳐 모드에서 마우스 동작이 가능하다는 점.
스크린 캡쳐버튼을 누른다음에 마우스 오른쪽 왼쪽 버튼이 해당프로그램에서 동작되며, 스크린 챕쳐키 (프린트 스크린) 를 통해서 화면 캡쳐가 이루어 진다.
특정 프로그램에서 팝업 메뉴나 서브메뉴등의 화면을 캡쳐할때 유용하다.

2. 캡쳐후에 간단한 이미지 편집이 된다는 점.
화면 캡쳐후 블로그등에 올릴때 개인정보는 살짝 가려서 올릴 수 있다.

3. 설치형 프로그램이 아닌 단일 실행파일이라는 점.
레지스트리 사용 없이 가볍게 사용 할수 있어서 좋다.

더 자세한 소개는 개발자 사이트를 참고 ^^

개발자 사이트 바로가기
AND


GOTAPI 사이트 바로가기

자바스크립트 레퍼런스를 찾다가 찾은 사이트이다.

자바스크립트 뿐아니라, HTML, CSS 에 대한 reference 도 충실하다.

웹 관련 개발자들에게 꼭 필요한 사이트 ^^
AND

Source Insight 를 사용하다보면, 나도 모르게 파일이 너무 많이 열려 있는 경우가 있다. 심지어는 50~60개 이상의 파일을 Open 한채로 소스 분석을 하는 경우게 허다하다.

파일 한개가 열릴때 마다 PC 리소스를 잡아 먹는다는 생각에 가끔 윈도우 리스트를 띄어서 모두 닫는 경우가 있다. 매크로를 사용하면 특정 Hot-Key 로 최근 몇개의 파일만 남겨두고 모두 Close 도 가능하다.

그것 외에도 파일을 새로운 창에 열때 10개 이상이 되면 가장 마지막에 봤던 소스파일 윈도우를 자동으로 close 하는 방법이 있다.

Source Insight 에서 제공하는 event handler 함수를 정의하면 된다. (event handler 를 사용하기 위해서는 Options > Preferences > General > Enable event handlers 를 check 해야 한다.)

10개 이상 열린 경우 마지막에 본 소스를 close 하는 event handler와 3개만 남겨놓고 모두 close 하는 macro를 소개한다.

event 로 시작하는 함수는 source Insight 에서 정의하는 event handler 이다. 특정 이벤트가 발생하면 수행되는 것이다.
DocumentOpen 이라는 이벤트 핸들러는 파일을 Open할때 불리는 핸들러다.

event DocumentOpen(sFile)
{
    nHoldWnd = 10
    winCnt = WndListCount()
    if (winCnt > nHoldWnd ) {
        hWnd = GetCurrentWnd()
        while(nHoldWnd--!=0) {
            hWnd = GetNextWnd(hWnd)
        }

        while (hWnd != 0) {
            hTmpWnd = GetNextWnd(hWnd)
            CloseWnd(hWnd)
            hWnd = hTmpWnd
        }
    }   
}



AND

토탈 커맨드를 사용하다가, 회사에 라이센스가 없는 이유로 프리웨어 파일 매니저를 찾기 시작했다. 그중 쓸만한 툴로 두가지가 눈에 띄었다.

1. FreeCommander
2. NexusFileV

두개중 넥서스파일V를 선택하게 되었다. 몇일 사용해본 바로는 예전 Mdir, WinM 등의 국산 파일 매니저의 수준으로 UI 완성도가 꽤 높은것으로 판단된다.

계속 애용할것 같은 유틸리티.

스크린샷
사용자 삽입 이미지

NexusFileV 스크린샷



사이트 주소 http://xiles.net/
AND

CodeProject를 구경하다가 CxImage 라는 이미지 라이브러리를 보았다.
http://www.codeproject.com/bitmap/cximage.asp

해당링크의 소개를 간단히 요약하자면...

CxImage는 C++ 클래스이고, load, save, display, transform images 가 가능하다.
image library로는 OpenIL, FreeImage, PaintLib같은 좋은 라이브러리가 많이 있지만, 이들 라이브러리는 주로 platform independent 를 지향 하거나, C 로 만들어지는 등 사용상의 약간 불편함들이 있다.

CxImage 자체로는
BMP,GIF,ICO,TGA,PCX,WBMP,WMF 가 지원되고, 그외 JPEG, PNG, MNG, TIFF 등의 포멧들은 추가 라이브러리가 필요하다.

CxImage 배포형식이 full과 lite가 있는데 lite는 CxImage 소스만을 포함하고 있으며, full에는 다른 포멧이 요구하는 라이브러리가 (
jpeg, png, zlib, 등등) 포함되어 있다.

CxImage 는 image resource, file, memory 로 생성이 가능하다.
 
간단한게 이미지 디코딩해서 화면에 그리는 sample code


CxImage image((BYTE*)(wi->imageData),  wi->imageSize, CXIMAGE_FORMAT_UNKNOWN);
   if (!image.IsValid() ) {
    AfxMessageBox(image.GetLastError());
    return;
   }

   CRect rc;
   int x1,y1,w,h;
   GetClientRect(&rc);
   w = image.GetWidth();
   h = image.GetHeight();
   x1 = rc.Width() - w;
   y1 = rc.Height() - h;
   x1 = x1 > 0 ? x1 / 2 : 0;
   y1 = y1 > 0 ? y1 / 2 : 0;

   image.Stretch(pDC->GetSafeHdc(), CRect(x1,y1,x1 + w,y1 + h));

원래 생성자에 imagetype을 넣도록 되어 있는데 UNKNOWN으로 줬더니 자동으로 되는듯 보인다.

AND


Let's buy orange instead.

Let's go tomorrow instead.

I'm not gonna be able to make it. (아무래도 나는 못갈거 같어)

Are you ready to go shopping ?

Hope you don't mind but
 I can't go (양해해주기길 바래~)

you are ditching me for a guy

죄송하지만 제가 먼저 왔거든요.
Hope you don't mine but I got here first

내가 먼저 왔다
I got here first

내가 먼저 가야겠는데요.
I guess I have to go first

컴퓨터를 바로좀 써야겠는데요
I need to use computer right now
AND

네이트 톡을 PDA 로 클리핑하여 보려고, 파이선 스크립트를 만들었다.
대부분의 게시판은 로그인을 요구하지 않았는데, 일부 게시판은 로그인을 요구하길래, 로그인이
가능한 스크립트를 만들다 보니 쿠키 핸들링이 필요하여 사용한던 내용을 정리해본다.
                               (A)                                        (B)
[브라우저 Client] <---------> [클리핑 스크립트] <---------> [네이트 톡 서버]

클리핑을 위해서는 위와 같은 네트웍 구성도가 된다.
클리핑 스크립트에 아이디/비밀번호 를 넣어 놓기가 좀 그래서, 브라우저 Client에서 쿠키로 스크립트쪽으로
보내도록 했다. (폼 데이터로 보내도록 해도 상관은 없다)

일단 (A)에서 클라이언트에서 보내주는 쿠키를 꺼내 보려면, os.environ["HTTP_COOKIE"] 값을 참조하면된다.

try:
    cookies = os.environ["HTTP_COOKIE"]
except KeyError:
    print "cookie is not set"
else :
    info = cookies.split(';')
    for item in info:
        if 'id' in item:
            login_id = item.split('=')[1]
        if 'passwd' in item:
            login_pw = item.split('=')[1]
(A) 에서 브라우저가 쿠키를 id=userId;passwd=userpw 이렇게 보내게 되면 id/pw 에 userid/passwd 값이
들어온다.

(B)에서 네이트 톡에 로그인 하기 위해서는 POST 로 form data를 전송하고 응답으로 받은 쿠키값을 session으로 이용해야 한다. 이 쿠키세션값을 담아 놓는 놈이 CookieJar 이다.

http 요청을 위해서는 urllib2 를 사용하고 Cookie 핸들링은 cookielib 를 사용한다.

cj = cookielib.CookieJar()
opner = urllib2.build_opener (urllib2.HTTPCookieProcessor(cj))
r = opener.open("http://xso.nate.com/login.jsp")
login_postdata = {'redirect':'http:/www.nate.com', "ID":login_id,"domain":"nate.com","PASSWD":login_pw,"ssl":""} # 로그인 폼 값
params = urllib.urlencode (login_postdata)
r = opener.open("http://xso.nate.com/servlets/LoginServlet", params)           

여기까지하면 id/pw 가 정확하다면 네이트에 로그인 세션이 생성되어 cj에 담기게 된다.
이 이후로 opener 를 이용하면 로그인 세션이 살아 있게 된다.

AND

보안점검을 나온다고 메일이 왔다. "불법 소프트웨어 삭제 요청"

전에 MS 오피스를 아무거나 가져다 설치해서 Product 키만 살작 변경하는 법을 알아냈다.

1) 모든 오피스 프로그램 종료
2) 오피스 2007 인경우에는
HKEY_LOCAL_MACHINE \Software\Microsoft\Office\12.0\Registration
오피스 2003 인경우는
HKEY_LOCAL_MACHINE \Software\Microsoft\Office\11.0\Registration
오피스 XP 는
HKEY_LOCAL_MACHINE \Software\Microsoft\Office\10.0\Registration

아래에 GUID 를 선택한다음에 DigitalProductID ProductID 를 삭제한다.

3) 오피스를 다시 실행하면 Product 키를 넣으라고 나온다.
AND