어쩌라구..?? ㅡㅡa..

Posted
Filed under 잡다구리구리
TV를 보다가 우연히 sbs로 채널을 돌렸는데 웬 다큐멘터리가 나오고 있었다.
'인간동력'에 대한 내용이었는데 흥미로웠다.

이전부터 압전소자에 대한 이야기를 들은적이 있었고,
자전거의 열효율에 대한 얘기도 들은적이 있었다.

지금껏 알고는 있었지만 그냥 그런가 하고 넘어갔었는데,
오늘 TV를 보니까 인간 에너지가 상당히 크다는걸 생각하게 되었다.

손이나 발전기로 믹서기를 돌리고
자전거 발전기로 세탁기를 돌릴수 있었다.
30분 발전기를 돌리면 컴퓨터와 모니터도 켤 수 있다는것이
무척 놀라웠다. 심지어는 세탁기도 돌리더라.

자전거 타고 다니면 노트북 충전이 되는 장치 만들면 재밌겠다.
아니면 핸드폰이라도.. ㅡㅡ;
2008/03/24 00:20 2008/03/24 00:20
Posted
Filed under Life
답답하고
짜증난다!

요새 계속 Negative 모드에서 살고 있었는데,
시바 교육왔더니 강사가 왠지 조낸 주는거 없이 밉다.

화장실이나 갈까부다. 제길.
2008/03/07 16:33 2008/03/07 16:33
Posted
Filed under Life
아이를 잃어버린 날자를 보니 2007년 12월 25일이다.
많은 사람들이 크리스마스라고 신나서 들떠 있었을 그날에
그 아이들 부모는 얼마나 혼비백산했을까..

어제 우연히 TV에서 장기 미아들에 대한 방송을 봤다.
아이가 없어진 집은 완전히 가정이 파탄나더군.
몸값을 목적으로 하는 유괴도 아니고,
그냥 어느날 없어지더니 연락도 없더라 라는 황당한 상황.
정녕 죽어 마땅한 사람들이 아이 납치해다 뭐 하려고 하는 인간들이겠다.
몇년만에 찾아낸 아이는 어떤 고생을 했던지 여기저기 상처 투성이고..

진정 내 주위에 그 없어졌다는 아이가 없는지
돌아봐야 하겠다.
그 부모들이 뭘 딱히 잘못한것도 아니고..
다른집 아이가 될 수도 있었겠지만
그게 우리집 아이였다는 이유로 저 고생을 하고 있다.

새삼 세상 무서워진다.
2008/01/24 18:20 2008/01/24 18:20
Posted
Filed under Linux/tip
관련 자료 링크 : Feisty Phoenix cardreader /dev/ttyUSB0 problem

리눅스에서 웬만한 하드웨어들은 그냥 갖다 꽂기만 하면 동작한다.
윈도에서 뭔 드라이버네 어쩌네 저쩌네 하는거 다 필요없다.
진짜 웬만한것들은 꽂았을때 인식 못하거나 동작 안하면 못 쓴다고 생각해도 큰 무리 없을정도다.

그런데 드라이버는 아무 문제 없는데 동작 안 하는 경우가 있다.
이것도 그 중의 하나인데, usb serial converter가 동작 안하는 경우를 발견했다.
문제가 생기는 배포판은 ubuntu 계열인데 문제는 이 배포판이 너무(?) 친절해서 그렇다.

usb를 꽂았을때 커널 메세지에 이런 로그가 남았다.
[ 1997.017531] usb 1-2: new full speed USB device using uhci_hcd and address 2
[ 1997.213556] usb 1-2: configuration #1 chosen from 1 choice
[ 1997.264851] /build/buildd/linux-source-2.6.22-2.6.22/drivers/usb/serial/usb-serial.c: USB Serial support registered for FTDI USB Serial Device
[ 1997.265210] ftdi_sio 1-2:1.0: FTDI USB Serial Device converter detected
[ 1997.265409] /build/buildd/linux-source-2.6.22-2.6.22/drivers/usb/serial/ftdi_sio.c: Detected FT232BM
[ 1997.266422] usb 1-2: FTDI USB Serial Device converter now attached to ttyUSB1
[ 1997.266610] usbcore: registered new interface driver ftdi_sio
[ 1997.266613] /build/buildd/linux-source-2.6.22-2.6.22/drivers/usb/serial/ftdi_sio.c: v1.4.3:USB FTDI Serial Converters Driver
[ 1997.493547] usb 1-2: usbfs: interface 0 claimed by ftdi_sio while 'brltty' sets config #1
[ 1997.497538] ftdi_sio ttyUSB1: FTDI USB Serial Device converter now disconnected from ttyUSB1
[ 1997.497771] ftdi_sio 1-2:1.0: device disconnected
문제가 발생한 부분이 위에서 굵게 표시된 부분인데
brltty 라는 시스템의 설정과 충돌한다는 의미이다.

인터넷을 뒤져본 결과 한글 문서도 있긴 한데,
brltty라는 서비스는 시각장애우를 위한 점자 터미널 지원 서비스이다.
이 서비스가 필요하다면 FTDI 칩을 사용하지 않는 시리얼 컨버터를 사용하던가
(있긴 있다. 파란색 반투명한 색으로 된거.. 제조사.모델명 미상...),
아니면 저 서비스가 필요하지 않다면 지우면 된다.
여기서 중요한점은 서비스를 중단시키는것만으로는 안되고,
저 패키지들을 지워버려야 한다.

시냅틱스 패키지 관리자에서 brltty 패키지를 찾아 지우던가
콘솔에서 지우던가... 하여간 지워라.

그리고 나서 컨버터 꽂으면 이상없이 잘 작동한다.
커널 로그도 당연히 정상이다.
2007/12/29 18:01 2007/12/29 18:01
Posted
Filed under Linux/programming
오늘도 또 겁나게 삽질했다. 아.. 힘들다..

glade-3를 이용해서 UI를 만들고 libglade를 이용해서 띄우려고 할때
메뉴얼의 Basic 항목대로 프로그램 만들어 놓으면
각 위젯의 realize 이벤트가 발생하지 않는다.
다른 이벤트들은 잘 뜨는데 realize 이벤트만 발생하지 않는다.

realize 이벤트 핸들러에 프로그램 초기화 코드가 들어있는 경우,
당연히 프로그램이 뜨지 않고 죽어버린다. 왜냐고? ㅡㅡ?
이벤트 핸들러 코드가 호출되지 않기 때문이다.

realize 이벤트 핸들러가 호출되지 않는 경우를 살펴보면,
toplevel 위젯의 visible(한글로 '보임') 속성이 yes로 되어있는 경우이다.
properties->common 탭에 보면 있다.

기본으로 glade-3에서 UI를 만들다보면
toplevel 위젯을 만들었을때 기본으로 visible 속성이 no이다.
다른 위젯들은 기본으로 모두 yes가 되어있는데 말이다.
그래서 정작 프로그램을 실행시켰을때
에러메세지가 없는데 아무런 화면이 나오지 않는다.
그래서 다시 glade-3에서 visible속성을 yes로 바꾸고 저장하면 UI가 나온다.

그것이 문제였던 것이다.
메뉴얼의 예제 코드를 보자.
int main(int argc, char *argv[]) {
GladeXML *xml;

gtk_init(&argc, &argv);

/* load the interface */
xml = glade_xml_new("filename.glade", NULL, NULL);

/* connect the signals in the interface */
glade_xml_signal_autoconnect(xml);

/* start the event loop */
gtk_main();

return 0;
}
코드를 보면,
너무도 명백하게 glade_xml_new 함수가 호출되고
glade_xml_signal_autoconnect 함수가 호출된다.

나는 인터넷에서 답을 찾을때까지 저걸 보고서도
왜 이벤트 핸들러가 호출되지 않았는지 몰랐다.
답은 간단하다. UI가 생성된 후에 이벤트 핸들러가 연결되기 때문이다.

glade-3에서 visible 속성이 yes인 위젯들은
glade_xml_new 함수가 리턴될때 이미 모두 디스플레이 되어 있다.
realize 이벤트는 최초 디스플레이될때 발생하는데
벌써 UI가 그려졌으므로 이미 이벤트는 발생했고
그 뒤에 이벤트 핸들러가 등록되므로 당연히 호출되지 않는것이다.
이런 내용을 메뉴얼에서는 찾지 못했다. 나는.

내가 만든 예제 코드를 다시 보자.
int main(int argc, char *argv[]) {
GladeXML *xml;

gtk_init(&argc, &argv);

/* load the interface */
xml = glade_xml_new("filename.glade", NULL, NULL);

/* connect the signals in the interface */
glade_xml_signal_autoconnect(xml);

/* show main window */
gtk_widget_show(glade_xml_get_widget(xml, "window1"));

/* start the event loop */
gtk_main();

return 0;
}
굵게 표시된 부분이 내가 추가한 코드이다.
함수 인자의 "window1"은 glade-3에서 정해준 윈도우 이름으로 바꾸면 된다.
그냥 아무것도 없는 상태에서 윈도우 위젯 만들면 저 이름으로 되길래 넣은것 뿐이다.

코드를 저렇게 수정하고 실행시키면 이벤트가 정상적으로 발생하는것을 볼 수 있다.

아.. 힘들다.
잠좀 자고 싶다.
그래도 할일이 너무나 밀려 있어서 잘 수가 없다. ㅜㅜ
2007/12/17 11:39 2007/12/17 11:39