2006/01/27

TreeView의 CellRendererToggle에서 Toggle 기능 구현

PyGTK 2.0 에서는

CList와 TreeView를 TreeView 위젯으로 함께 제공하는데 이에
따라서 TreeView에서는 Toggle 위젯을 구현할때

gtk.CellRendererToggle 를 사용하는데
이때 그냥 표시만 하면 Toggle 표시가 안되는데 토글 표시를 하려면

toggled 메소드를 CellRendererToggle에 걸어주고 liststore(또는 treestore)를 추가 인자로 넘겨주고

콜백 메소드에서 self, cell, path, liststore를 인자로 받아서

liststore[path][컬럼번호] = not liststore[path][컬럼번호]

를 적고 return을 해주면 toggle 기능이 되면서 체크박스가 선택되게 된다.

컬럼 헤더에서는 조금 다른 방법으로 이를 해결해야 한다.

2006/01/26

윈도우 2000과 XP에서 재부팅 없이 IP 변경하기

인터넷이 보급되기 시작하면서 휴대용 노트북도 많은 장소에서 인터넷을
접속해야 하는 경우가 많이 늘어났다. 이에 IP를 변경하는 방법이 다양
해졌는데 다음과 같은 방법을 사용하면 IP를 쉽게 변경할 수 있다.

단) 윈도우 2000 이상에서만 동작한다.
--
우선 윈도우에서 인식되는 네트워크 장치명을 알아야 한다. 네트워크 장치명은

시작->설정->제어판->네트워크 연결

을 통해 들어가면 보이는 이름이 네트워크 장치명이다. 바꾸지 않고 기본값으로 두었다면

"로컬 영역 연결"
"무선 네트워크 연결"

로 보일 것이다. 내 컴퓨터는 무선 인터넷을 사용하기 때문에 무선 네트워크 연결이
포함되어 있다.

메인보드에 장착하는 네트워크 카드가 2개라면 "로컬 영역 연결 2"라는 이름이 추가되서
보일 것이다. 이름은 조절해도 상관없지만 그러지 않기를 바란다. 본인이 뭘로 바꿨는지
하루만 지나도 까먹기 때문이다.

이름을 어딘가 적어두었다던가 했다면 다음으로 넘어간다.

IP 변경 명령어 : netsh
netsh 의 명령줄의 예는 다음과 같다.

netsh -c int ip set address name="로컬 영역 연결" source=static addr=11.11.11.11 mask=255.255.255.0 gateway=11.11.11.1 gwmetric=0

명령어 분석 /:

name : 변경하고자 하는 interface (보통 "로컬 영역 연결" 이라고 되어있습니다.)
- 내 내트워크환경->오른쪽 클릭->속성 에서 확인할 수 있습니다.
addr : 변경하고자 하는 IP주소
mask : 변경하고자 하는 subnetmask
gateway : 변경하고자 하는 gateway

설정하고자 하는 IP가 DHCP 등일 경우 /:

netsh -c int ip set address name="로컬 영역 연결" source=dhcp

DNS 변경
앞서서는 ip address 만 변경했는데 DNS 변경은 다음과 같이 할 수 있다.

DNS 수동 설정
netsh -c int ip set dns name="로컬 영역 연결" source=static addr=111.111.111.11 register=PRIMARY

DNS 자동 설정
netsh -c int ip set dns name="로컬 영역 연결" source=dhcp

IP 세팅 Backup & Restoring
앞에서 설명한 내용이 이해되지 않으면 다음과 같은 방법을 사용해 설정을 저장해서 사용한다.

IP 세팅 백업 :
netsh -c interface dump > 사무실.txt

IP 세팅 복구 :
netsh exec 사무실.txt

txt 파일을 특정한 위치(자기가 좋아하는 위치나 관리상에 두는 위치)에 놓아두었을
경우 파일명 앞에 파일이 위치한 전체 경로를 기재하면 된다.

txt 파일은 수정하지 말아라

!!! 이 방법은 Windows 2000 이하에서 실행되지 않는다.

2006/01/20

PyGTK에서 TextView 에 다른 Widget 추가

PyGTK 2 에서 textview 위젯에 위젯 포함할때

TextView 위젯 안에는 다른 위젯을 포함할 수 있는데, 이때 위젯은 TextView에 간단히 추가되지 않는다.

추가할때 PyGTK의 객체 추가방법과는 조금 다른 방법으로 추가된다.

1. window 나 box 위젯에 객체 추가하기
add 메소드나 pack_start, pack_end 메소드 사용하기

add 메소드 사용
win.add(widget)

pack_start, pack_end 메소드 사용
hbox.pack_start(wiget, expand, fill, spacing)
vbox.pack_end(widget, expand, fill, spacing)

그런데 textview 위젯에서는 iter와 anchor 를 얻어서 생성해야 한다. 그리고 textview 에 위젯을 추가하는 메소드를 사용한다.

2. textview 위젯에 다른 위젯 추가하기

textview buffer 얻어오기
buffer = textview.get_buffer()

textview buffer의 iter 얻어오기
iter = buffer.get_start_iter()

textview buffer에 anchor 추가. # create_child_anchor 메소드는 iter 를 요구한다.
anchor = buffer.create_child_anchor(iter)

textview 에 추가할 위젯 생성
checkButton = gtk.CheckButton("생성된 파티션을 확인하시겠습니까?")
checkButton.show()

button을 textview 에 추가. # add_child_at_anchor 는 1번째 요소로 추가할 위젯을 받고, 2번째 요소로 anchor를 받는다.
textview.add_child_at_anchor(checkButton, anchor)

######### 참고 #########
이때 anchor가 미리 생성되어 있다면 anchor 추가 구문 대신 다음 구문을 써서 anchor를 받아올 수 있다. 물론 생성되어 있다는 가정하에서는 iter 를 얻어오는 구문 조차 필요하지 않다.
anchor = buffer.get_data("anchor")
########################

이제 실행된 textview에는 다른 위젯이 포함되어 있는걸 확인할 수 있다.

------------------------------------------ textview에 위젯을 더 추가해보기
textview에 위젯이 포함되어 있을때 위젯을 더 추가하려면 anchor를 한번더 생성해야 한다.
이때 anchor 생성은 anchor를 생성하는 구문만 한번 더 써주면 되며 iter를 생성할 생각이라면
get_start_iter() 메소드는 textview의 가장 첫번째 iter를 얻어오게 되므로 마지막에 위젯을
추가할 생각이라면 get_end_iter()를 이용해서 iter를 얻어와야 합니다.
-----------------------------------------------------------------------

2006/01/16

PyGTK 2.0에서의 리스트 구현

PyGTK 2.0에서는 원본 gtk에 들어있던 CList를 더 이상 구현하지 않을 생각에 있다.

따라서 PyGTK 2.0에서 CList와 같게 구현하려면 TreeView Widget에 ListStore를 쓰면 된다. 나머지는 컬럼 등에 관한
사항은 TreeView 에 관한 것을 쓰고 내부적인 것에 대해 트리 구현일 경우는

TreeStore 를 사용하고

CList 와 같은 일반 리스트를 구현할 경우

ListStore를 사용하면 된다.

잘 모를 경우 직접 실험해본다.

예제는 PyGTK 2.0 튜토리얼에 있는 BasicTreeView.py 파일을 참조하고 TreeStore와 관련된 것을 적절히 ListStore로 변경시킨다.

2006/01/05

SYSLINUX의 Display 파일인 MSG 확장자 파일 포맷코드

지금 하고 있는 일이 리눅스 인스톨러를 만드는 일인데, ISOLINUX에 있는 확장자가 *.msg 인 파일에는 일반인이 이해할 수 없는 코드가 몇가지 있는데 이 코드에 대해서 다음과 같은 내용을 갖다놓는다.

이 코드를 VIM에서만 입력을 해보았는데 입력을 할 경우 Ctrl+V 를 먼저 누르고 입력해야 한다. (숫자 ^0 처럼 보이는 것은 영어 대문자 O이다. 터미널에선 구분이 잘 되지 않는다)

전문 : http://syslinux.zytor.com/faq.php#format
-----
{ What is the DISPLAY File Format? }

DISPLAY and function-key help files are text files in either DOS or UNIX format (with or without <CR>). In addition, the following special codes are interpreted:

<FF> <FF> = <Ctrl-L> = ASCII 12
Clear the screen, home the cursor. Note that the screen is filled with the current display color.

<SI><bg><fg> <SI> = <Ctrl-O> = ASCII 15
Set the display colors to the specified background and foreground colors, where <bg> and <fg> are hex digits, corresponding to the standard PC display attributes

0 = black 8 = dark grey
1 = dark blue 9 = bright blue
2 = dark green a = bright green
3 = dark cyan b = bright cyan
4 = dark red c = bright red
5 = dark purple d = bright purple
6 = brown e = yellow
7 = light grey f = white


Picking a bright color (8-f) for the background results in the corresponding dark color (0-7), with the foreground flashing.

Colors are not visible over the serial console.

<CAN>filename<newline> <CAN> = <Ctrl-X> = ASCII 24
If a VGA display is present, enter graphics mode and display the graphic included in the specified file. The file format is an ad hoc format called LSS16; the included Perl program "ppmtolss16" can be used to produce these images. This Perl program also includes the file format specification.

The image is displayed in 640x480 16-color mode. Once in graphics mode, the display attributes (set by <SI> code sequences) work slightly differently: the background color is ignored, and the foreground colors are the 16 colors specified in the image file. For that reason, ppmtolss16 allows you to specify that certain colors should be assigned to specific color indicies.

Color indicies 0 and 7, in particular, should be chosen with care: 0 is the background color, and 7 is the color used for the text printed by SYSLINUX itself.

<EM> <EM> = <Ctrl-Y> = ASCII 25
If we are currently in graphics mode, return to text mode.

<DLE>..<ETB> <Ctrl-P>..<Ctrl-W> = ASCII 16-23
These codes can be used to select which modes to print a certain part of the message file in. Each of these control characters select a specific set of modes (text screen, graphics screen, serial port) for which the output is actually displayed:

Character Text Graph Serial
------------------------------------------------------
<DLE> = <Ctrl-P> = ASCII 16 No No No
<DC1> = <Ctrl-Q> = ASCII 17 Yes No No
<DC2> = <Ctrl-R> = ASCII 18 No Yes No
<DC3> = <Ctrl-S> = ASCII 19 Yes Yes No
<DC4> = <Ctrl-T> = ASCII 20 No No Yes
<NAK> = <Ctrl-U> = ASCII 21 Yes No Yes
<SYN> = <Ctrl-V> = ASCII 22 No Yes Yes
<ETB> = <Ctrl-W> = ASCII 23 Yes Yes Yes

For example:

<DC1>Text mode<DC2>Graphics mode<DC4>Serial port<ETB>

... will actually print out which mode the console is in!

<SUB> <SUB> = <Ctrl-Z> = ASCII 26
End of file (DOS convention).

<BEL> <BEL> = <Ctrl-G> = ASCII 7
Beep the speaker.

2006/01/04

어머님이 입원하셨다는 메시지를 받아보곤...

지난 1월 2일 오전에 일어나자마자 휴대폰으로 날아든 비보.

어머니가 병원에 입원하셨다는 동생의 메시지였다. 어렸을 적 너무 많이 고생시키고 속 썩여드리던 나였기에 앞뒤 잴 요량없이 바로 회사 상사와 파견지에 연락을 하고 청주로 향했다.

부모님이 아프시고 병원에 입원하신 상황에 놀라지 않은 자식이 어디있고 걱정하지 않을 자식이 어디있단 말인가? 청주에 어머니가 입원해 계신 병원에 찾아가 병실을 묻고 병실에 가니 창백한 몸으로 누워계신 어머니 모습이 보였다.

아버지는 그전날부터 주무시지 못한 모양이신지 많이 피곤해보이셨고, 2분다 회사는 어떻게 하고 왔냐고 물어보시길래, 얘기하고 왔다고.. 그렇게 말했다.

또 지나서 하는 얘긴데, 어머니 모습을 볼때 순간 울컥했다. 전생이 어머니에게 죄가 없으실 분에게
왜 장마비 같은 병이 생기는 것인지... 부처님이 순간 너무 싫었다.

오전에 찍은 X-ray 사진 검토 결과를 받고 별다른 이상이 없다고 해서 그날 서울에 올라왔다.

"엄마 아프지 마세요.. 지금 많이 못해드리지만 더 잘해드리도록 노력할께요"

최진실의 동생은 가수 박진영인가?

얼마전인 지난해 12월 31일 KBS에서 연기대상 시상식이 있었다. 그동안 연예가에서 MBC와의 계약 문제등 떠들석했던 최진실씨가 최우수상 및 네티즌상등을 받았다.

물론 그녀의 연기만으로 봤을때 그건 충분히 상을 받을 가치가 존재했다.



그렇다고 해서 내가 이야기하고 싶은 최진실씨의 연기는 아니고 그걸 보도한 신문기자의 무례한 행태를 이야기하고 싶어서다.

사진에 보면 분명 최진실씨의 동생은 최진영임에도 불구하고 박진영으로 적어두었다. 내가 그 기사를 보고 해당 기자에게 메일로 잘못 적었다고 알려주었음에도 불구하고 수정하지 않는 태도는 뭔가?

기자가 문젠가? 아니면 이미 지난 기사라서 그런것인가? 아니면 기자가 속한 회사 사장이 바보멍청이인가?

독자의 겸허한 비판은 수용하되, 잘못된게 있으면 받아들여야 하는데 이놈들은 그렇지 않으니 솔직히 열이 받는다. 이 일을 이런식으로 공론화 시켜야만 자기들의 잘못을 이해하겠나?

기사는 최소한 공정성과 진실을 이야기 하는 매체다. 최진실씨의 동생이 박진영이면 박진영의 동생은 정지훈씨라고 말하는 것과 어찌 다른가?

정신차려라. 이 머니투데이 놈들아!!