'연구실'에 해당되는 글 9건
-
2008/12/28PyNateon - 기록 1 (2)
-
2008/12/19PyNateon (5)
-
2008/08/03Django life (5)
-
2008/05/04
-
2008/03/31Python 놀이 (2)
-
2007/02/03신기한 비스타 세상... (7)
-
2007/01/16삽질... 그 두번째 이야기 (5)
-
2006/12/30
-
2006/12/26
대략 2~3주간 구현한 물건...
물론 대부분의 기능은 작동하지 않을 뿐더러 채팅 쪽은 아직도 구현중...
파고들수록 재미는 있다. =ㅂ=
멋지지 아니한가? Python과 PyQt4만 있으면 돌아간다!! (물론 의존성은... -ㅅ-;;)
요즘은 이 녀석 테스트 때문에 자꾸 로그인/로그아웃을 반복하여 질타도 좀 듣긴 하지만... -ㅅ-;
채팅 쪽을 구현하는 중인데... 정말 안드로메다.. oTL
파일 전송은 어떻게 하지? -ㅅ-
덧> 곧 네이트온 4.0이 나온다는데... 그럼 난 어떡하나... ㅜㅜ
Trackback 0 And
Comment 2
일단 이름을 이렇게 붙여봤어.
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!
프로그램 코드를 어엿브게 표시해준다. =ㄴ=
바로 예시 들어가줘야하지 않겠는가?
정말 눈물이 날 정도로 깔끔하게 출력해준다. TㅡT
참고로 예제 소스는 Python으로 Hello World 출력하기의 베베꼬인 버젼. -ㄴ-
살짝 구글링을 하다가 찾은 것이 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용 프로그램은 이 인터페이스를 가지고 있는 듯 하다.
사실 인터넷 쇼핑몰에서 아르바이트를 하면서 단순 엑셀 작업이 상당히 많은데,
어떻게 하면 편하게 할 수 있을까 잔머리를 굴리다가 오래전에 본 기억이 있어서 찾아봤다.
아래는 간단한 샘플 코드.
보이는대로 인터페이스가 매우 간단하다.
시트의 이름 바꾸기라던가, 특정 셀의 값을 변경한다던가 하는 작업도 매우 간단해진다.
특히 Dispatch해 온 excel의 Visible 속성 값을 1로 바꾸면, (excel.Visible = 1)
보이지 않게 구동된 Excel이 화면에 나타나서 값이 적용되는 과정을 직접 볼 수 있다.
사용된 모듈은 win32com이며 홈페이지는 여기로...
이 모듈은 내부적으로는 해당 오브젝트에 요청한 속성(property)가 있는지 쿼리하여
필요할 때만 바인딩(late-binding)을 수행한다고 한다.
여기에 wxPython을 붙여서 번듯한 프로그램으로 완성시켜 봐야겠다.
봄이라 그런가 글이 매우 딱딱하다.
뭔가 핑크빛 감정 충전이 필요한 시기.
바로 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()
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
제 친구 Ryuisaka군의 컴퓨터에서 Windows Vista가 돌아가는 모습을 구경했습니다.
무거운 Vista를 돌리기 위해선 듀얼 코어가 필요함을 느끼면서...
'XP에서는 뭔가 할 수 있는 게 없을까?'하는 마음에 삽질거리를 좀 찾아봤습니다.
역시 찾아보면 뭔가 나옵니다.
어디사는 누구인지는 모르겠지만 VAIO라는 것을 만들어놓았습니다!
Sony의 랩탑 브랜드인 VAIO가 아니고, Vista API Implementation on Windows XP and Windows Server 2003의 약자랍니다.
즉, Vista의 API를 에뮬레이션 해주는 일종의 인터페이스 레이어를 만들어서 XP상에서 Vista의 프로그램들이 구동 가능하도록 만들어진 프로그램입니다.
아... 정말이지 존경의 박수를 보냅니다. =ㅅ=
그래서 이걸 설치하고 Vista의 자랑거리인 Sidebar를 구동한 김에 이것저것 바꿔보았습니다.
오른쪽에 XP상에서 버젓이 돌아가는 Vista의 Sidebar를 볼 수 있습니다.
가운데에 떡하니 떠 있는 것은 Launchy라는 녀석인데...
디렉토리를 지정해 놓으면 그 안에 있는 특정 확장자(.lnk 같은 바로가기 링크 등)를 인덱싱해두었다가, Alt+Space를 눌러주면 떡하니 나타나서 파일명만 치면 바로 찾아주고 엔터를 치면 실행에 들어가는 아주 편리한 프로그램입니다.
전 마우스보단 주로 키보드로 모든 걸 처리하는지라 너무너무 편합니다. 위의 화면에선 '마비노기'를 실행하기 위해 '마비'까지만 입력했는데 바로 나타난 모습입니다.
요즘은 핑크색이 자꾸 끌리네요. 따뜻한 느낌이 좋아서...
이제 마소의 gadget gallery에 가서 이것저것 추가할 걸 찾아봐야겠네요.
그나저나 gadget의 발음이.... '개짓'이군요. -ㅅ-;
예쁩니다. TㅡT)=b
무거운 Vista를 돌리기 위해선 듀얼 코어가 필요함을 느끼면서...
'XP에서는 뭔가 할 수 있는 게 없을까?'하는 마음에 삽질거리를 좀 찾아봤습니다.
역시 찾아보면 뭔가 나옵니다.
어디사는 누구인지는 모르겠지만 VAIO라는 것을 만들어놓았습니다!
Sony의 랩탑 브랜드인 VAIO가 아니고, Vista API Implementation on Windows XP and Windows Server 2003의 약자랍니다.
즉, Vista의 API를 에뮬레이션 해주는 일종의 인터페이스 레이어를 만들어서 XP상에서 Vista의 프로그램들이 구동 가능하도록 만들어진 프로그램입니다.
아... 정말이지 존경의 박수를 보냅니다. =ㅅ=
그래서 이걸 설치하고 Vista의 자랑거리인 Sidebar를 구동한 김에 이것저것 바꿔보았습니다.
오른쪽에 XP상에서 버젓이 돌아가는 Vista의 Sidebar를 볼 수 있습니다.
가운데에 떡하니 떠 있는 것은 Launchy라는 녀석인데...
디렉토리를 지정해 놓으면 그 안에 있는 특정 확장자(.lnk 같은 바로가기 링크 등)를 인덱싱해두었다가, Alt+Space를 눌러주면 떡하니 나타나서 파일명만 치면 바로 찾아주고 엔터를 치면 실행에 들어가는 아주 편리한 프로그램입니다.
전 마우스보단 주로 키보드로 모든 걸 처리하는지라 너무너무 편합니다. 위의 화면에선 '마비노기'를 실행하기 위해 '마비'까지만 입력했는데 바로 나타난 모습입니다.
요즘은 핑크색이 자꾸 끌리네요. 따뜻한 느낌이 좋아서...
이제 마소의 gadget gallery에 가서 이것저것 추가할 걸 찾아봐야겠네요.
그나저나 gadget의 발음이.... '개짓'이군요. -ㅅ-;
Trackback 0 And
Comment 7
감격의 마음을 주체하지 못하는 관계로 말을 조금만 낮춰서 글을 적겠습니다. oTL
첫 삽 뜬지(?) 얼마 되지도 않았는데 두번째 삽질을 했다.
오른쪽 위의 태그를 클릭해보시면 태그들만 잔뜩있는 페이지로 가는데...
여기에 'TGIF'를 넣기위해 무려 사흘동안이나 삽질을 했다. oTL
"도대체 뭐길래 목매달고 사흘동안이나 삽질을 한단 말인가?"라는 질문을 하고 싶으신 분은...
일단 직접 보시라... 목매달만하다. -ㅅ-
여기저기 블로그 탐색을 하다가 태터에 달려있는 저 엄청난 물건을 보고 "나도나도~!"라고 생각하고 바로 작업에 착수했다.
더이상의 자세한 설명을 듣고 싶다면 클릭!
정말 파란만장한 사흘간이었지만...
Firefox에서의 테스트를 다 끝내고 쾌재를 부르고 난 다음, IE로 접속해보니... -┏
innerHTML로 바로 넣어주는 부분에서 뭔가 스크립트 오류가 발생한 모양이다.
내가 비표준인가, IE가 비표준인가. -┏
아무튼... 또 피곤하다. =ㅅ=
Trackback 1 And
Comment 5
우연히 예제를 찾을 일이 있어서 "재미있는 HelloWorld"라는 검색어로 엠파스에서 검색을 했습니다.
근데 너무 재미있는 글이 하나 나왔네요.
네크로맨서를 위한 프로그래밍 언어, ZOMBIE라는 언어입니다.
ZOMBIE가 약어라는데 풀네임이 더 골때립니다. Zombie-Oriented Machine-Being Interface Engine랍니다. -ㄴ-
일단 Hello World 예제부터 한 번 보시죠.
좀비를 소환해서 작업 시키는 걸로 마무리 짓습니다.
animate라는 syntax가 너무 끌리는군요. 낄낄낄...
근데 너무 재미있는 글이 하나 나왔네요.
네크로맨서를 위한 프로그래밍 언어, ZOMBIE라는 언어입니다.
ZOMBIE가 약어라는데 풀네임이 더 골때립니다. Zombie-Oriented Machine-Being Interface Engine랍니다. -ㄴ-
일단 Hello World 예제부터 한 번 보시죠.
HelloWorld is a zombie
summon
task SayHello
say "Hello World!"
animate
animate
좀비를 소환해서 작업 시키는 걸로 마무리 짓습니다.
animate라는 syntax가 너무 끌리는군요. 낄낄낄...
Trackback 0 And
Comment 0
Prev










