2007년 3월 22일 목요일

tango

tango
icon을 전문적으로 만드는 오픈 프로젝트. 이런 프로젝트도 있었네. 재밌군.

2007년 3월 20일 화요일

ethereal -> Wireshark

최고의 네트워크 패킷 분석 도구이다.
네트워크 패킷을 분석하여 type 별로 분류해 주며, 동시에 이미 알려전 packet의 경우 분석도 해준다.

아직까지 이보다 더 뛰어난 분석 도구는 본적이 없다. 일전에 mms 프로토콜 분석을 위해 사용한 적이 있는데, 이름을 자꾸 잊어서 기록 차원에서 적는다.

이름이 바뀌었다는군요. 새로운 이름은 Wireshark 입니다.

2007년 3월 16일 금요일

크게 다치다.

자전거를 타고 퇴근길이었다. 지하철 공사중인 사거리를 신호 확인후 진행하다가 갑자기 앞바퀴가 공사장의 틈새로 빠져들면서 안면부를 심하게 다쳤다.
일단 사거리에서 사고가 난 것이라, 위치를 급히 이탈하였으며, 집사람에게 전화하여 데리러 오라고 하여 영동 세브란드 병원의 응급실로 급히 이동하였다.
일단 입안쪽으로 심하게 찢어져서 여러바늘 꿰맸고, 안면부도 심하게 긁혀서 여러날 통원치료를 받아야 한다고 한다.
이걸 지하철 공사에 소송을 할 수 있을지 없을지 고민이다.
현재도 안면부가 심하게 부워서 밥을 제대로 먹지 못하고 있는 상황이다.
변호사에게 알아 봐야겠다.

2007년 3월 14일 수요일

AspeCt-oriented C

개발에 도움을 줄 수 있는 도구이다. 개발하는 코드의 수정없이 실시간으로 각 함수의 호출을 감시 할 수 있다.
단, 컴파일은 다시 해야 한다.

기본 개념은 별도의 설정 파일을 통해 함수 호출 규칙을 감시하는 코드를 추가한다.
이 설정파일을 c 함수로 컴파일하고, 컴파일 결과를 원 바이너리와 link하여 함수 호출을 감시한다.

이것을 쓰면 함수 호출 과정을 자세히 추적할 수 있을 것 같다. 하지만, 아직 테스트 전이다.

URL은 http://research.msrg.utoronto.ca/ACC/WebHome이다.

다음은 간단한 예제이다.

C 코드

int main() {
printf("world");

}

ACC 코드

before(): execution(int main()) {
printf("Hello ");
}

after(): execution(int main()) {
printf(" from ACC ! \n");
}

Aspect Compile 과정

acc hello.acc world.m

최종 바이너리 생성

$ gcc hello.c world.c
$ ./a.out
Hello world from ACC !

2007년 3월 12일 월요일

Cairo 1.4.0 Release

3.6일, 2D graphic library인 cairo의 새버전이 1.4.0이 release 되었다.

이번 릴리즈는 주로 속도 최적화에 집중되어 개발 되었는데, 100 배 이상 속도 향상이 된 operation도 있다.
물론, 더 느려진 operation도 있는데, floating 연산이 fixed point 연산으로 대체되어 embedded 단말에서는 더 많은 속도 향상이 있을 것이라고 한다.

한번 받아서 테스트 해봐야 겠다.

PyCon 2007의 요약

영어가 짧아서 상세한 번역이 힘들다. 원문은 PyCon 2007 Wrapup을 참조한다.

다음과 같은 프로젝트가 관심 사항으로 떠 올랐다고 한다.
  • CPython
  • IronPython
  • Jython
  • Django
  • TurboGears
  • SQLAlchemy
  • IPython
  • Python Cheeseshop
개인적으로 관심 가는 것은 CPython, SQLAlchemy, IPython이다.
이중에 IPython의 경우 emacs의 python interpreter로 사용하고 있다.

2007년 3월 11일 일요일

Gentoo Linux에 대한 생각

Gentoo Linux를 2년째 사용하고 있다.
처음에는 이렇게 설치하기 힘든 배포판이 존재한다는 사실에 놀랐다.
하지만, gentoo를 사용하는 기간이 늘어나면서, 패키지 관리의 우수성에 감탄을 금치 못한다.
gentoo의 패키지 관리 시스템은 OpenBSD의 port 패키지 시스템을 모델로 작성된 것이라 들었다.

뭐 어쨌든 패키기 관리 시스템의 우수성은 타의 추종을 불허한다. 이 패키지 관리 시스템의 유일한 단점은 패키지 설치시 시간이 많이 걸린다는 것 말고는 없는 것 같다.

일단 gentoo 패키지 관리 시스템의 경우 다음과 같은 특성을 가진다.
  • 소스를 받아 컴파일하므로 시스템에 최적화된 바이너리를 생성할 수 있다.
  • 패키지 upgrade 개념은 존재하지만, 배포판 upgrade 개념이 존재하지 않는다. 단지 패키지 upgrade 만으로 항상 최신의 바이너리를 유지할 수 있다.
  • 이로 인해 의존성 문제가 거의 발생하지 않는다.
  • 패키지 update 속도가 굉장히 빠르다. 때문에, 원한다면 언제나 최신 소스 기반의 패키지를 유지할 수 있다. 단, 약간의 위험부담은 감수해야 한다.
이와 같은 장점으로 인해 적절한 관리만 된다면 배포판을 다시 설치할 이유가 거의 발생하지 않는다.
단, 리눅스에 대해 잘 알고 있는 사용자를 위한 배포판이다.

자신있다면 도전해 보라. 초기 역경을 극복하면 편안한 세상에 도달할 것이다.

2007년 3월 8일 목요일

모바일 단말 USB ethernet 자동 연결

USB ethernet을 지원하는 단말이 linux에 연결 되었을 때 이를 자동으로 연결하기 위해서 hotplug를 이용하는 방법에 대한 메모.

/etc/hotplug/net.agent 파일에서 "case $ACTION in" 이전에 다음의 내용을 추가한다.

if [ x"$INTERFACE" = xusb0 ]; then
ifconfig usb0 192.168.0.1 netmask 255.255.255.0
exit 1
fi

이 조건문은 INTERFACE가 usb0 인 경우에 동작하도록 작성한 것이다. INTERFACE는 환경에 따라 다를 수 있는데, 확인 방법은 USB 연결 후에 "ifconfig -a" 명령으로 확인할 수 있다.

2007년 3월 6일 화요일

pthread 사용법 [1]

pthread를 사용하는 방법에 대해 쉽게 설명하고자 한다.
이 글은 thread가 무엇인지 기본적인 사항을 알고 있는 사람을 대상으로 한다.

pthread는 다음의 두가지 함수를 그 시작과 끝으로 한다.

#include

int pthread_create(pthread_t *thread,
const pthread_attr_t *attr,
void *(*start_routine)(void*), void *arg);
int pthread_join(pthread_t thread, void **value_ptr);


pthread_create () 함수는 thread를 생성하기 위한 함수이다. 이 함수에서 가장 중요한 매개변수는 thread과 start_routine, arg 이다.
  • thread는 생성된 thread에 접근하기 위한 handle을 반환한다.
  • start_routine은 thread의 main 함수를 지정한다.
  • arg는 main 함수에 전달할 값이다.

pthread_join () 함수는 종료된 thread의 자원을 회수하는 역할을 한다. 함수가 호출되는 시점에서 thread가 종료될 때까지 대기한다.
  • thread는 thread에 대한 handle 값이다.
  • value_ptr은 thread가 종료할 때 pthread_exit () 함수를 호출하여 설정한 값을 가져온다.
간단한 사용방법은 다음과 같다.

2007년 3월 5일 월요일

C/C++ 을 위한 garbage callector

쓸만해 보이는 garbage callector (이하 GC)이다. Inkscape를 조사하다가 알게 되었다.
GC가 하는 일은 사용되지 않는 메모리를 자동으로 회수하여 재사용할 수 있도록 하는 메모리 관리 시스템을 말한다. 어떻게 C/C++에서 사용되지 않는 메모리를 자동으로 확인할 수 있는지 그 방법이 궁금하지만 다음에 시간이 나면 조사해 보도록 하자.

여기를 참조하고, 다음은 사용예제이다. 예제를 봐도 쓸만해 보이긴 하다.

#include "gc.h"
#include
#include

int main()
{
int i;

GC_INIT(); /* Optional on Linux/X86; see below. */
for (i = 0; i < p =" (int" q =" (int" p ="="" p =" (int" 100000 ="="" size =" %d\n">

메모 차원에서 글을 남긴다.

Inkscape

Inkscape는 SVG 저작도구이다. 일단 screenshot으로만 봐도 대단해 보인다. adobe의 flash에 대항할 수있는 SVG를 기반으로하는 저작도구라는데 많은 점수를 주고 싶다.

동적인 SVG 저작 기능도 갖추고 있는지 모르겠다. 만약 그렇다면, 이제 효과적인 SVG player만 확보된다면 flash player와 대적할 수 있지 않을까?
open source 산물로만 flash player에 대항할 수 있는 솔루션이 확보 될 수 있기를 희망한다.

메모 차원에서 글을 남긴다.

URL은 Inkscape이다.


WordPress.org 해킹 당하다.

해당 사이트가 해킹 당해 wordpress 2.1.1의 압축 파일이 변경되었다는 군요. 해당 사이트에서 급히 서비스를 차단하고 조사한 결과 wordpress.org의 서버중 하나에서 사용자 권한을 해커가 얻어서 파일을 수정했답니다.
때문에, wordpress 2.1.2를 새롭게 올려서 제공하고 있으니 업그레이드를 하랍니다.

흠.. 재밌군요.

2007년 3월 4일 일요일

MAC OSX Tiger

몇달전 1999년에 조립한 컴퓨터가 그 년한이 다 된듯하여 새롭게 맥미니를 구입하였다.
예전부터 맥이라는 운영체제를 사용하고픈 마음이 있었는데, 인텔 CPU를 사용하여 windows XP를 설치할 수 있다는 소리에 구입하였다. 혹자들은 맥미니에 windows xp를 설치하여 사용하는 것이 무슨 짓이냐라고 하는데, 우리나라 실정에 windows XP가 없으면 인터넷 뱅킹을 할 수 없으니 어쩌랴.

그동안은 맥을 사용하지 않고, XP만을 사용하였는데, 최근에 맥을 자주 사용하고 있다. 물론, 집사람 때문에 기본 부팅은 XP로 되어 있지만 말이다.

뭐 솔직히 응용 프로그램의 안정성 등은 xp와 다를바가 없는 것 같지만, 구석 구석 숨어 있는 다양한 효과들은 절로 감탄을 자아낸다.

비스타를 사용해 보지 않아 뭐라 말할 수 없지만, 굉장히 편한 운영체제 임이 분명하다.
리눅스를 업으로 하고 있으니 터미널 환경 또한 익숙하다.

따로 설치하여 사용중인 프로그램은 다음과 같다.

Camino - Web browser
Cyberduck - FTP/SFTP Client
Aquamacs Emacs - Text Editor
X Windows - X11 Window system
OpenOffice - Office 프로그램
VLC - Movie Player
xcode - compiler
aMule - P2P client

사용한지 얼마 되지 않아 따로 설치하여 사용중인 프로그램이 얼마 되지는 않다. 그러나 이정도로 일반적인 사용에 있어서는 크게 불편함을 모르겠다.

2007년 3월 3일 토요일

OAK Vocabulary

Firefox의 사전 addon 프로그램이다. 이전에는 backword를 사용했었는데, 이놈이 가끔 firefox가 오동작하게끔 만들어 최근에는 사용하지 않았다.

backword는 마우스 커서가 특정 단어에서 일정시간 이상 머무르면 자동으로 단어를 인터넷에서 검색하여 사용자에게 출력하도록 되어 있는데, 이 방법이 문제를 발생시키는 것 같다.

때문에, 사용자가 정확히 지정하는 경우에 단어를 검색할 수 있는 단어사전 프로그램을 찾았는데, 그것이 바로 OAK Vocabulary 프로그램이다.

난 empas를 나름대로 좋아하니깐 이를 기반으로 설정 과정을 설명한다.



이 프로그램의 설정은 조금 특이한데, 먼저 Dictionaries tab에서 한글 사전을 위한 URL 및 parser를 추가해야 한다.


Dictionary: Empas
charset: euc-kr
Search URL: http://alldic.empas.com/search/endic.html?z=C&
x=0&y=0&q=$$$$
Parser:
ret = getPartHtml(html, '<div class="td_engr">',
'<div','</div>','');
ret = ret.replace(/<\/script>/g, '');
ret = ret.replace(/<\!--.*?-->/g, '');




이제 설정은 끝났다. 설정 후 특정 단어에서 double click을 하면 다음과 같은 단어사전에 화면에 나타난다.



어떤가 쓸만하지 않은가?

Xfce4 배경화면 바꾸기

뭐 구글에 검색하면 바로 나오긴 하지만. 여기서도 간단히 메모 형태로 정리한다.

xfdesktop 프로그램이 singla USR1을 받으면, 배경 화면을 바꾸도록 정의한 것 같다.

때문에, terminal에서 간단하게 "killall -USR1 xfdesktop" 명령을 주면 배경이 바뀐다.

crontab -e 명령으로 다음 라인을 추가하면 5분에 한번씩 배경 화면이 바뀐다.

0,5,10,15,20,25,30,35,40,45,50,55 * * * * killall -USR1 xfdesktop

2007년 3월 2일 금요일

강원랜드에 가다.

강원 랜드에 갔었다.

3월 1일 삼일절날 아침 6시에 서울에서 출발하여, 강원랜드에 9시 30분에 도착, 10시 20분 쯤 도착하였다.
이렇게 많은 사람들이 도박을 하는지 처음 알았다.
25만원을 가지고가 6만원을 잃었다.
Big Wheel이라는 게임을해서 15만원을 읽고, Black Jack을 하여 9만원을 만회하였다.

다시는 갈곳이 못된다. 하루종일 신경쓰면서 게임을 해야하는 상황을 이해하지도 적응하지도 못하겠다.

그런 상황을 즐기는 사람들이 이해되지 않는다.

다시는 가지 말아야지...

2007년 3월 1일 목요일

새로운 블로그를 만들다.

이전에는 업무에 사용하고 있는 컴에 블로그를 운영하다가, 시스템 업그레이드를 하면서 모든 데이터를 날려 먹었다.
이에 공개 블로그 사이트가 더 안전하게 데이터를 관리할 수 있다는 생각에 이곳에 블로그를 만들었다.
개인적으로 폐쇄적인 네이버가 싫다.