대장정의 첫걸음
파이썬 (Python)과 Tkinter로 IRC 클라이언트를 만드는 작업을 어제 시작했다. 어제오늘 시행착오 엄청나게 겪으면서 배운 게 정말 많아서 갈 길이 멀다는 실감이 새삼 들었다. 처음부터 생각하는 기능을 다 넣으려고 했다가는 시작도 제대로 못하고 포기할 것 같아서 일단 뼈대부터 시작해 하나하나 덧붙이면서 늘려가고 있다. Grid 레이아웃 관리자는 위젯을 하나씩 덧붙이기가 쉽기도 하고.
지금까지 갖춘 모습은 이 정도.

모습으로만 보면 아직 별 거 없지만, 처음부터 걸린 문제였던 서버 입력 처리를 해결한 후라 나름 뿌듯하다. 이전에 콘솔용 IRC 봇을 만들어 봤는데도 GUI로 넘어오니까 잘 안 돼서 결국 관련 예시를 참조해서 쓰레딩 (threading) 처리를 하니까 됐다. 쓰레딩 구문 부분을 주로 참고하고 큐는 목록으로 대체한 후 .pop(0)을 이용했고, GUI 생성을 단일 기능으로 처리하는 등 예시 코드하고는 좀 달라졌지만.
IRC에서 오는 메시지를 프로그램에 전부 표시하지는 않고 (개발하는 동안에는 디버깅용으로 IDLE 콘솔에는 표시하지만), 상태표시줄을 만들어서 메시지 종류에 따라 인증 중, 연결 실패, 연결 성공 등 상태만 요약해서 표시했다. 저 상태표시줄의 또 다른 주요 용도는 나중에 누구누구는 타자 중이라고 표시하는 것. 어느 세월에 거기까지 만드나...
여기서부터 할 일은 일단 서버와 채널 목록을 저장해 놓게 딕셔너리를 만들어서 피클 (pickle)로 쟁여놓고(..) 편집하는 인터페이스를 만드는 것. 설정 사항은 만들면서 잔뜩 늘어날 테니 지금부터 딕셔너리로 관리하는 게 좋겠지. 자동 조인 채널 목록은 딕셔너리에서 채널 창으로 옮겨놓고, 일단 채널에 모두 들어가지면 들어간 채널마다 탭 인터페이스를 만들어서 '들어갈 채널' 문구를 '현재 채널'로 바꾸고 '나가기' 버튼을 만들... 아아 복잡해진다..ㅠㅠ
어쨌든 일단은 설정 딕셔너리 만들고 저 텍스트 창에 뭔가 표시하는 게 급선무겠지. 그 다음에는 채널에 있는 사람 표시하는 목록, 그 다음은 정보 표시창. 입력창은 비교적 쉽게 만들 수 있을 듯. 여러 채널이나 탭 인터페이스는 그 다음에 생각하도록 하자. 메뉴바도 만들고... 그것까지 완성하면 이제 공포의 주사위 패널이 기다리고 있구나..(..) 프로그램 공부한 적 없는 인간에게는 산 넘어 산이라고밖에는...
재미로 하는 것인 만큼 조급하게 생각할 필요는 없겠지. 느긋하게 마음 먹고 틈틈이 작업하다 보면 프로그램도 모양새를 갖추고 파이썬 실력도 많이 늘을 것 같다.
지금까지 갖춘 모습은 이 정도.

뼈만 앙상~
모습으로만 보면 아직 별 거 없지만, 처음부터 걸린 문제였던 서버 입력 처리를 해결한 후라 나름 뿌듯하다. 이전에 콘솔용 IRC 봇을 만들어 봤는데도 GUI로 넘어오니까 잘 안 돼서 결국 관련 예시를 참조해서 쓰레딩 (threading) 처리를 하니까 됐다. 쓰레딩 구문 부분을 주로 참고하고 큐는 목록으로 대체한 후 .pop(0)을 이용했고, GUI 생성을 단일 기능으로 처리하는 등 예시 코드하고는 좀 달라졌지만.
IRC에서 오는 메시지를 프로그램에 전부 표시하지는 않고 (개발하는 동안에는 디버깅용으로 IDLE 콘솔에는 표시하지만), 상태표시줄을 만들어서 메시지 종류에 따라 인증 중, 연결 실패, 연결 성공 등 상태만 요약해서 표시했다. 저 상태표시줄의 또 다른 주요 용도는 나중에 누구누구는 타자 중이라고 표시하는 것. 어느 세월에 거기까지 만드나...
여기서부터 할 일은 일단 서버와 채널 목록을 저장해 놓게 딕셔너리를 만들어서 피클 (pickle)로 쟁여놓고(..) 편집하는 인터페이스를 만드는 것. 설정 사항은 만들면서 잔뜩 늘어날 테니 지금부터 딕셔너리로 관리하는 게 좋겠지. 자동 조인 채널 목록은 딕셔너리에서 채널 창으로 옮겨놓고, 일단 채널에 모두 들어가지면 들어간 채널마다 탭 인터페이스를 만들어서 '들어갈 채널' 문구를 '현재 채널'로 바꾸고 '나가기' 버튼을 만들... 아아 복잡해진다..ㅠㅠ
어쨌든 일단은 설정 딕셔너리 만들고 저 텍스트 창에 뭔가 표시하는 게 급선무겠지. 그 다음에는 채널에 있는 사람 표시하는 목록, 그 다음은 정보 표시창. 입력창은 비교적 쉽게 만들 수 있을 듯. 여러 채널이나 탭 인터페이스는 그 다음에 생각하도록 하자. 메뉴바도 만들고... 그것까지 완성하면 이제 공포의 주사위 패널이 기다리고 있구나..(..) 프로그램 공부한 적 없는 인간에게는 산 넘어 산이라고밖에는...
재미로 하는 것인 만큼 조급하게 생각할 필요는 없겠지. 느긋하게 마음 먹고 틈틈이 작업하다 보면 프로그램도 모양새를 갖추고 파이썬 실력도 많이 늘을 것 같다.
tags : 스크립팅
분류없음
2008/05/30 02:45

댓글을 달아 주세요
무슨 말인지 이해는 못 하겠으나 아주 즐거운 일을 하시는 건 분명한 거 같네요.
저는 한때 중학교시절 나모웹에디터를 이용해 네띠앙계정으로 홈페이지를 만들면서
컴퓨터 프로그래머가 되야지 라고 했으나...
제가 그러기에는 너무나 부족한 사람이라는 걸 일찍히 깨닫고 선회하여 다른 공부를 하고 있지만 텍스트 큐브를 매만지며 이루지 못한? 꿈을 해갈하고 있어서
참 즐거운 면이 있더라구요 ㅋㅋㅋ
확실히 웹페이지 돌리는 건 재밌죠..ㅋㅋ 옛날 초등학교 때 간단한 프로그래밍을 배운 일이 있었는데, 그때는 하나도 이해 못하고 있다가 ('x = x + 1이라니, 말이 안 되잖아!') 늦게 배운 도둑질에 시간 가는 줄 모르고 있네요..^^
오, 모래지옥에 빠지신겁.. [퍽]
도와드릴 수 있는 부분은 도와드리겠습..
[파이썬 안써본 프로그래머 모군 [..]
모래지옥인가요 엉엉. 그렇잖아도 신경쓰이는 문제가 하나 있어서 (서버 입력 가져오는 무한 루프가 끝나지 않고 있는 것 같은) 기회 되면 상담 청하겠습니다~
빨리 완성해! (언제나 그렇듯이 감나무 밑에서 입을 떡 벌리고 있는 승한이)
에에잇 이런! 적어도 '차를 타다 줄게, 누나'라든지 '어깨를 주물러 줄게' 정도는 돼야지! (..)