• 2006-09-09

    Log4cxx

    http://logging.apache.org/images/ls-logo.jpg

    서버 프로그래머라면 빠르고 간편한 로그와 트레이스에 대해서 한번쯤은 고민해봤을 것이다. 파일 로그 또는 윈도우의 이벤트 로그를 보통 쓰고 있겠지만, 생각보다 편하지 않은게 사실이다. 그런 의미에서 이번 기회에 Log4j을 C++로 포팅한 Log4cxx의 특징에 대해서 알아보는 시간을 가져봤다.

    다음 내용은 Log4cxx의 개요 문서를 축약한 것이므로, 가능하면 본문을 읽어보기를 권장한다.

    • 이름 기반으로 계층화(hierarchical)된 로그 지원 : 종류별 로그 객체를 만들어둘 필요가 없이, 필요할 때마다 이름을 키값으로 로그 객체에 접근하면 된다. 가령 system.net 은 system.net.packet 의 상위 계층이 된다.
    • 상속 지원 : 하위 계층에 속한 로그들은 상위 계층의 로그에게 종속된다. 윈도우의 이벤트 로그과 비슷하게 로그 레벨(DEBUG-INFO-WARN-ERROR-FATAL)을 지원하며, 이 역시 상속 기반으로 동작한다.
    • 복수의 Appender 지원 : 하나의 로그 객체에 콘솔, 파일, 이벤트로그, 소켓 등 여러 가지 종류의 출력 스트림(Appender)을 2개 이상 붙일 수 있다. 당연히 비동기적으로 동작한다.
    • XML 기반의 외부 환경 설정 파일 지원 : 각 로그 객체의 on/off 부터 레이아웃(==포맷팅)까지 모두 외부 환경 파일에서 설정 가능하다.
    • 고성능 : 굳이 #ifdef … #endif 로 지우지 않고 그냥 off 만 해둬도 함수 호출 하나 + 정수 연산 정도의 부하만 준다.

    잘 찾아보면 log4j/log4net 등의 출력을 GUI로 이쁘게 보여주는 유틸리티도 없지 않으므로, 굳이 까만 콘솔 화면을 뚫어지게 쳐다보기 보다는 저런 툴을 활용해보는 건 어떨까 싶다. 물론 라이브 로그도 지원해줘야 하고, 손쉬운 필터링과 검색 기능이 들어가야 하겠지만…

    가장 좋은 건, 데몬을 띄워두면 패널에 아이콘화되어 있다가, 에러가 발생하면 깜빡거리며 툴팁이 뜨고, 이를 클릭하면 어플리케이션 이름-시간-내용 메시지를 보여주는 모니터링 어플리케이션을 만들어 두는 것이다. 마찬가지로 필터링 기능이 들어가야 하겠지만.

  • 2006-09-09

    ActiveX

    [공지사항] 이 페이지는 더이상 업데이트되지 않으며, 최신 버전은 http://reiot.springnote.com/pages/87215 에서 읽으실 수 있습니다.

    어쩌다보니 ActiveX를 이용해서 브라우저에서 클라이언트를 실행하는 작업을 도와주게 되었다. 담당자나 나나 이 쪽으로는 거의 지식이 전무한 상태였는데, 삽질을 반복하면서 여러 가지 유용한 정보들을 알아내었다. 이미 귀국 날짜가 연기된 마당이므로 시간도 널널하고 해서 알아낸 점들을 정리해본다.

    혹시라도 이 분야에 처음 발을 들였다면 A Complete ActiveX Web Control Tutorial를 꼭 읽어보기 바란다. 물론 위키피디아의 설명도 괜찮다.

    설치 여부 알아내기

    파란닷컴처럼 active-x 컨트롤이 설치되지 않은 컴퓨터에 대해서 설치 안내 페이지로 redirect 시키려면, onerror 이벤트를 이용하면 된다.

    <script language="javascript" for="mycontrol" event="onerror">
    location.href = '/redirect/to/how-to-install.html';

    <OBJECT ID='mycontrol' CLASSID='....' codebase=....>
    Active-X control not installed. go to <a href="/redirect/to/how-to-install.html">HOW TO INSTALL Active-X page

    이때 OBJECT 태그 사이의 코드들은 해당 객체가 로드되지 않을 경우 렌더링된다는 점을 잘 활용하면 좋을 것이다.

    삭제하기

    XP 의 경우 $WINDOWS/Downloaded Program Files/ 아래에서 삭제하면 된다. Windows 2003 의 경우는 어디인지 확인할 수 없었다.

    컨트롤 활성화

    올해부터 IE에서는 컨트롤이나 애플릿들이 기본적으로 비활성화 상태로 변경되었다. 이를 수정하는 방법은 자바스크립트 코드를 이용해서 OBJECT 태그를 쓰면 된다. 보다 자세한 사항은 HOWTO 문서를 참고할 것.

    ActiveX Control Pad

    마이크로소프트에서 제공하는 유틸리티인데 실제로 마소에서는 받아지질 않는다. 따라서 여기서 받을 것.

    브라우저로 이벤트 전달하기

    만약 ActiveX 컨트롤에서 click 등의 마우스 이벤트 핸들러를 정의했다면 javascript 레벨에서 동일한 이벤트 핸들러를 정의할 수 없다. 이는 컨트롤이 이벤트를 먹어버리기 때문으로 보이는데, 이를 해결하려면 컨트롤에서 이벤트를 정의하고 브라우저로 보내준 다음 브라우저에서 핸들링을 하면 된다.

    Public Event CloseBrowser()
    Public Sub OnClick()
    ' handle click event
    RaiseEvent CloseBrowser() ' fire event
    End

    <script language="javascript" for="mycontrol" event="closebrowser">
    self.close();

  • 2006-09-07

    라스베가스 & 그랜드캐년 사진전

    http://static.flickr.com/89/236625957_2d160f7cba_s.jpg http://static.flickr.com/82/236621761_b241158e4d_s.jpg http://static.flickr.com/97/236616922_616cba2587_s.jpg http://static.flickr.com/88/236614900_938f823497_s.jpg http://static.flickr.com/89/236612458_b410c994f0_s.jpg http://static.flickr.com/84/236610619_5ffc59b02c_s.jpg http://static.flickr.com/80/235675320_614fb8ff75_s.jpg http://static.flickr.com/81/235660261_0940dec4f4_s.jpg http://static.flickr.com/88/235660260_b7d4c9a0b6_s.jpg

    레이옷의 Flicker에 가시면 좀더 최신의 사진들을 보실 수 있습니다. 자자. 저희 회사로 오십시요. 해외 출장 겸 영어 연수 겸 관광의 기회가 주어집니다. 매번 겨울-봄 워크샵은 스키장에서 보내고, 이번 가을 워크샵은 일본으로 갈 예정이라니까요~~

  • 2006-09-06

    미국이라는 나라는…

    BlackBerry

    • 우리 보스는 대규모 정전에도 무선 인터넷을 통해서 업무 메일을 받아 볼 수 있다는 블랙 베리폰을 사용한다. 며칠 전 점심때 회사에서 약 20분 정도 떨어진 말레이시아 레스토랑에서 점심을 먹고, 돌아오는 길에 이 폰으로 현재 LA 의 각 도로 사정을 검색하고 어느 도로를 타고 돌아갈 것인지를 검색했다. 그러면서 한달에 겨우 10달러로 무선인터넷을 무제한으로 사용할 수 있다고 자랑하면서, 구글에 접속해서 검색도 하고, 현재 서비스중인 게임의 각 서버 별 MRTG 트래픽 그래프도 확인하는 걸 보여주기도 했다. 저녁 때에도 함께 식사를 마치고 돌아오는 길에는 부하 직원으로부터 메일이 온 것도 보여줬다. (이쯤 되면 짐작하겠지만, 우리 보스 역시 지름신의 가호를 받은 사람 중의 하나다. 오죽했으면 BMW 745의 다음 차로 무엇을 골라야 할지 걱정이라고까지 말할 정도겠는가..)

    • 본사의 마케팅 담당인 션(27세)은 최근 소니군이 무척이나 갖고 싶어하는 350Z를 겨우 이만오천달러에 구입했다. 우리가 본사로 첫 출근하는 날, 그는 자신의 바탕 화면에 당당하게 새 차의 사진을 붙여 놓고, 우리 실장에게 자랑을 해대었다. 그리고는 며칠 후 생일 휴가를 받아서 한동안 얼굴도 보이지 않았다. -_-;;

    • 본사가 들어선 건물의 화장실은 항상 굳게 잠겨 있다. 잠을 설쳐 컨디션이 좋지 않은 날, 에어컨 바람을 계속 쐬다 보면 배가 아파지는 허약한 장을 소유한 레이옷에게는 참 죽을 맛이다. 물어보니 자꾸 화장실을 이상한 용도(-_-)로 사용하는 사람들이 있어서 그렇다나?

    • 본사도 그렇고 호텔도 그렇고 이 근처(다이아몬드 바)에는 아시아계 사람들이 꽤나 많다. 그래서, 일부를 제외하면 대체로 본토 발음이 아니라서 그럭 저럭 잘(?) 들리기는 한데, 뭔가 샤방샤방한 언니들 대신 거대하신 분들만 계셔서 좀 아쉽긴 하다. (참고로 밥먹으러 가거나 쇼핑을 가도 한국어가 통한다. -_-+)

    • 미국의 고속 도로도 때로는 막히곤 한다. 이번 주 월요일은 노동절이어서 다들 놀았는데, 덕분에 라스베가스에서 LA까지 오는데 8시간이나 걸렸다. 운전하느라 무리하신 최실장에게 묵념. 잇힝.

  • 2006-09-04

    여기는 라스베가스

    ![http://static.flickr.com/87/233227004_bf06a9f33c_m.jpg](http://static.flickr.com/87/233227004_bf06a9f33c_m.jpg) [Hotel Venetian](http://www.flickr.com/photos/78725883@N00/233227004/) Originally uploaded by [Reiot](http://www.flickr.com/people/78725883@N00/).

    LA에서 수많은 초원과 사막, 황무지를 네시간 넘게 달려서 도착했다. 일단 요 사진은 맛배기. 더 보려면 1달러를 내시오~~