'Python'에 해당되는 글 4건

  1. 2008/12/19
    PyNateon (5)
  2. 2008/08/03
  3. 2008/05/04
  4. 2008/03/31

일단 이름을 이렇게 붙여봤어.

20대 이상의 일상 생활에 아주 밀접하게 붙어있는 SK Communications의 메신저 네이트온.

이 메신저는 Windows에서만 돌아가다가 Linux와 Mac용이 오픈 소스로 개발되고 있지.

나도 회사에선 리눅스만 쓰는지라 불편하기도 하여 설치하려고 컴파일을 하는데...

계속 라이브러리를 달라고 칭얼댄다. -ㅅ-

그 라이브러리는 다름 아닌 KDE...

GNOME이 기본으로 설치된 우분투를 쓰고 있는데 고작 네이트온 하나 때문에 KDE를 깔아야 한다니...

이거저거 딸려오는 패키지를 합치면 엄청난 양이란말이지. -ㅂ-

그래서, 한동안 뒤로 미뤄뒀어.

그런데 어느날 네이트온의 소스를 훑어보다가 뭔가 익숙한(?) 파일을 발견했지.

확장자가 ui인 파일.... 어디보자... 어라? Qt의 UI 디자인 파일과 동일한게 아니겠어?

설마하는 생각에 열어보니, Qt3로 만들어진 UI 디자인 파일이 자동으로 컨버트되어

QtDesigner에서 열리는 것이었던 것이었던 것이었지! -ㅂ-

여기서 한발 더 나아가 소스 파일을 잘 후벼봤더니 전부 QObject를 상속받은 C++ class였더란말이지!

나중에 검색해보고서야 알았지만 KDE는 Qt와 밀접한 관련이 있다더라구.

KDE에서 제공하는 GUI 위젯들이 대부분 Qt의 위젯을 상속받아 구현한 것들이고,

서로 이벤트 루프 호환까지!

여기까지 왔으면 이제 드디어 올 것이 온거지?



이걸 감히 Python + PyQt4로 다시 구현해보겠다는 엉뚱한 생각에 다다른거야. -ㅅ-;

한 2주 전부터 뚝딱거리면서 UI를 손봐서 Qt4에 맞게 고치고, 필요한 위젯도 만들어갔지.

한 1주일 전부터 본격적인 내부 코딩에 들어갔는데.... 후아... -ㅅ-;;

완전히 C++로 된 코드를 Python으로 고치는게 만만치는 않더라구.

오늘 일단 기본적인 프로토타입 프로토콜 처리기(NateConnection)를 어느정도 번역하고,

그걸 상속받은 NateDPLConnection, NateDPConnection을 구현하는 중이야.

다행히 Nateon은 텍스트 기반으로 정보를 주고 받더라구. =ㅅ=

일단 간단하게 Dispatch load balancer 서버에 접속해서,

어느 Dispatch 서버에 접속할지를 받아오는 것까진 구현해뒀는데...

아무래도 문제가 되는게 사용자 정보 암호화 부분인거 같아.

GCrypt라는 C++ 라이브러리를 사용하는거 같은데 Python으로 포팅된걸 찾을수가 없었어.

아마 Pidgin용으로 개발된 pidgin-nateon 모듈을 참고하면 될거 같기도 한데...

아무튼 재미있는걸 물었어.

이게 개발되면 리눅스에서도 Python+PyQt4 조합이면 네이트온을 돌릴 수 있을거야.

GNOME에게도 선택의 자유를!
Trackback 0 And Comment 5
사용자 삽입 이미지

일단, 절대 우주보안관 장고는 아니니 기대하지 마시라. -ㅅ-

내가 요즘 회사에서 하루종일 지지고 햄 볶는 파이썬 Web framework이다. =ㅅ=

보통 웹 개발 하면 흔히 PHP, JSP, Ruby on rails(ROR) 등을 떠올리게 마련인데,

엄청난 붐을 일으키며 성장하여 많이 쓰이는 ROR과 어깨를 나란히 하는 물건이다.

특징을 몇가지 꼽아보자면....

  • DB를 object로 다룰 수 있는 ORM(Object-relational mapper) 내장
  • 깔끔한 URL 디자인
  • 기본 관리자 인터페이스를 제공
좋아하는 기능 순서로 나열해보았다. -ㅅ-

첫번째인 ORM은 정말 DB 다루기가 이렇게 쉬울까 싶을 정도로 환상적이다.

Ruby의 ActiveRecord에 열광하는 것도 이해가 간다. =ㅅ=

매우 간단한 API로 query를 할 뿐만 아니라 그 기능 또한 강력하다.

복잡한 쿼리문의 연계(chaining)이라던가 lazy query 등도 정말 마음에 든다.

지금 회사에서 하는 프로젝트에선 Django의 ORM 모듈만 따로 떼어다가 사용하고 있다.
(사실 DB API 다루기가 귀찮.....)

두번째인 깔끔한 URL 디자인은 처음 봤을 때 이렇게도 할 수 있구나 싶었다.

일단 들어오는 URL을 문자열이나 정규식으로 매칭한 후에,

필요한 값을 함수에 넘겨서 처리하도록 하는 방식이다.

즉, transaction == function의 관계가 성립되는 것이다. (깔끔하여라~ =ㅅ=)

이 기능의 이점은?

  • '?', '&', '=' 문자들이 난무하는 URL이 필요없다!
  • 공개하고 싶지 않은 리소스에 사용자가 접근하는 것을 막을 수 있다.
    (URL로 접근하는 것이 CGI 스크립트나 html 파일이 아니라, python 함수)
좋지아니한가? =ㅅ=

세번째 관리자 인터페이스는 9월에 나올 새로운 Django 1.0을 위해 남겨두고...

오늘의 찬양은 여기까지! =ㅅ=

개인적으로 시간이 나면 Django와 AJAX를 붙여서 간단한 웹게임을 만들어보고 싶다.

Google App Engine에서도 Django를 지원한다는데, 아쉽게도 내가 좋아하는 ORM 부분이 빠져있어서... ;;

Python에서 ROR 같은 프레임웍을 찾으시는가? 지금 당장 Django와 상담하시라~
Trackback 0 And Comment 5
Emulboy군과 네이트온 대화 중에 튀어나온 OpenCV 라이브러리 때문에...

살짝 구글링을 하다가 찾은 것이 Syntax Highlighter!

프로그램 코드를 어엿브게 표시해준다. =ㄴ=

바로 예시 들어가줘야하지 않겠는가?

def sayHello():
        sources = [(24, 0), (33, 2), (36, 0), (36, 0),
                (37, 0), (10, 2), (29, 0), (37, 0),
                (38, 0), (36, 0), (33, 1), (11, 0)]
        integers = [ q*3+d for q, d in sources]
        characters = map(chr, integers)
        print ''.join(characters)

if __name__ == '__main__':
	sayHello()


정말 눈물이 날 정도로 깔끔하게 출력해준다. TㅡT

참고로 예제 소스는 Python으로 Hello World 출력하기의 베베꼬인 버젼. -ㄴ-
Trackback 1 And Comment 4
요즘은 Python으로 Excel을 두들겨보는 중이다.

바로 COM(Componenet Object Model)이란 인터페이스를 통한 것인데,

왠만한 Microsoft의 WIndows용 프로그램은 이 인터페이스를 가지고 있는 듯 하다.

사실 인터넷 쇼핑몰에서 아르바이트를 하면서 단순 엑셀 작업이 상당히 많은데,

어떻게 하면 편하게 할 수 있을까 잔머리를 굴리다가 오래전에 본 기억이 있어서 찾아봤다.

아래는 간단한 샘플 코드.

from win32com.client import Dispatch
excel = Dispatch("Excel.Application")
myWorkkbook = excel.Workbooks.Open("dummy.xls")
mySheet = myWorkbook.ActiveSheet

mySheet.Name = "발송확인"
mySheet.Cells(5, 3).Value = "테스트"

myWorkbook.Save()
excel.Quit()

보이는대로 인터페이스가 매우 간단하다.
시트의 이름 바꾸기라던가, 특정 셀의 값을 변경한다던가 하는 작업도 매우 간단해진다.

특히 Dispatch해 온 excel의 Visible 속성 값을 1로 바꾸면, (excel.Visible = 1)
보이지 않게 구동된 Excel이 화면에 나타나서 값이 적용되는 과정을 직접 볼 수 있다.

사용된 모듈은 win32com이며 홈페이지는 여기로...

이 모듈은 내부적으로는 해당 오브젝트에 요청한 속성(property)가 있는지 쿼리하여
필요할 때만 바인딩(late-binding)을 수행한다고 한다.
여기에 wxPython을 붙여서 번듯한 프로그램으로 완성시켜 봐야겠다.

봄이라 그런가 글이 매우 딱딱하다.
뭔가 핑크빛 감정 충전이 필요한 시기.
Trackback 0 And Comment 2