이 글은 Python Tutor 메일링 리스트에 있던 글을 번역한 글입니다.
(영어는 약해서 말이죠..;; 틀린 부분 있으면 지적 해 주세요..)
메일이 오고 갔던 때가 2002년 8월 경이군요...

(원본글을 보려면 아래를 클릭)


--------------------------------------------------------------

> 님들 (--;)
> Tkinter 와 wxPython 의 가장 다른점이 뭔가요?

Thinter 는 표준 파이썬 모듈이고, wxPython 은 아닙니다. 그래서 (wxPython은) 써드파티 라이브러리가 필요합니다.

wxPython 은 grid controls 등과 같은 기능이 더 많습니다. Tkinter 를 사용하여 많은 것을 하려 한다면 Python Mega Widgets (pmw) 와 같은 확장기능을 필요로 할 것입니다. 그래서 어쨌든 써드파티 라이브러리를 필요로 하게 될 것십니다.

만약 단순한 GUI 가 필요하다면, Tkinter 는 어플리케이션 작성을 쉽게 만드는 확실한 장점을 가지고 있습니다. 추가로 다른것을 설치할 필요없이, 파이썬과 당신이 작성한 코드만 있으면 됩니다.

Tkinter 는 Tcl 이라 불리는 인터프리트 언어를 위해 만들어진 Tk 라 불리는 GUI 툴킷을 기반으로 하고 있습니다. 그래서 별로 빠르진 않습니다. wxPthon 은 wxWindows 라 불리는 C++ GUI 툴킷을 기반으로 하고 있습니다. 좀 더 빠르죠. 나는 advanced controls 에 대해서 좀 더 많은 다른 점이 있을 꺼라 생각합니다. 왜냐하면 Tkinter 는 Python 으로 작성된 반면 wxPython 은 C++ 로 작성되었기 때문이죠.

또한, "Python and Tkinter Programming" 이라는 책을 시작으로 Tkinter 에 대한 여러 책들이 있습니다. 그리고 Thinter 프로그래머에게 도움이 될만한 Tcl/Tk 에 대한 책들도 많습니다.

wxPython 문서는 적습니다. 이 문서는 wxWindows C++ 문서에 파이썬 버젼의 다른 점을 설명해 놓은 것입니다. 또한 wxWindows 문서는 전체적으로 최신의 상태로 유지되지 않습니다. 그리고 wxWindows / wxPython 은 조금씩 발전하고 변하는 중입니다. 하지만 대부분의 특징을 예로 만든 좋은 데모 프로그램들을 제공합니다.

두 툴킷 모두 많은 유저가 있습니다. Tkinter 는 표준 모듈이기 때문에 "Thinter community" 라는 것이 (따로) 있는 지는 모르겠습니다. 두 툴킷 모두 관련 책자들이 있으며, 인터넷 상에는 자료들과 도움을 줄 수 있는 사람들이 있습니다.

wxPython 과 wxWindows 는 Tcl/Tk 와 Tkinter 보다 훨씬 더 활동적으로 개발되고 있습니다. 그것이 좋은지 나쁜지는 당신의 판단에 달려 있습니다. Tcl/Tk 는 좀 더 성숙된 툴킷입니다.(앞에도 썼듯이, advanced controls 가 좀 부족하지만 말이죠)

wxPython 은 wxWindows 개발자들이 중요하게 여기고 있습니다.([역자] 원문의 concidered 는 오타인듯 합니다.) 반면에 Tcl/Tk 개발자들은 (아직 개발자가 있긴 한가요?) 파이썬 유저들이 행복할 수 있도록 신경을 쓰는지는 잘 모르겠습니다.

나는 Thinter 가 wxPython 보다 조금 더 많은 플랫폼에서 동작한다고 생각합니다. 하지만 wxPthon 은 Windows, Linux 그리고 많은 Unix 상에서 잘 동작합니다. Mac 포트의 현재 상태는 어떤지 잘 모르겠습니다.

마크 햄몬드와 앤디 로빈슨이 쓴 Python Programming on Win32  라는 책에는 두가지 모두를 다루고 있는 GUI 프로그래밍에 대한 챕터가 있습니다. 온라인에서 볼 수 있습니다.
http://www.oreilly.com/catalog/pythonwin32/chapter/ch20.html
여기에서는 두가지 모두에 대한 예제 코드도 볼수 있습니다.

--------------------------------------------------------------

다음글은 조기 마지막 부분의 링크에 대한 글을 써 볼까 합니다.
다는 말고.. 필요한 내용만...;;
반응형

설정

트랙백

댓글

홈페이지 : http://www.ollydbg.de/

잠깐 써 봤는데, 괜찮은것 같습니다.
(이 쪽 관련 툴은 거의 써본적이 없어서 다른 것과 비교하긴 힘들지만요...)

홈페이지에 있는 설명을 간략히 옮겨보면...

OllyDbg 는 마이크로 소프트 윈도우에서 동작하는 32-bit 어셈블러 레벨의 분석이 가능한 디버거이다. 바이너리 코드 분석에 중점을 두어 소스코드를 볼 수 없을경우 특히 유용하다. OllyDbg 는 쉐어웨어이지만, 무료로 다운로드하여 사용할 수 있다.  특별한 점은 다음과 같다.
(... 특징은 대충 알아서 해석을....)
  • Intuitive user interface, no crypticalcommands
  • Code analysis - traces registers,recognizes procedures,loops, API calls, switches, tables, constants and strings
  • Directly loads and debugs DLLs
  • Object file scanning - locatesroutinesfrom objectfiles and libraries
  • Allows for user-defined labels,commentsand functiondescriptions
  • Understands debugging information inBorland®format
  • Saves patches between sessions, writesthem back to executable file and updatesfixups
  • Open architecture - manythird-partyplugins are available
  • No installation - no trash in registryorsystemdirectories
  • Debugs multithread applications
  • Attaches to running programs
  • Configurable disassembler, supports both MASM and IDEAL formats
  • MMX, 3DNow! and SSE data types and instructions, including Athlonextensions
  • Full UNICODE support
  • Dynamically recognizes ASCII and UNICODE strings - also in Delphiformat!
  • Recognizes complex code constructs, like call to jump to procedure
  • Decodes calls to more than 1900 standard API and 400 C functions
  • Gives context-sensitive help on API functions from external helpfile
  • Sets conditional, logging, memory and hardware breakpoints
  • Traces program execution, logs arguments of known functions
  • Shows fixups
  • Dynamically traces stack frames
  • Searches for imprecise commands and masked binary sequences
  • Searches whole allocated memory
  • Finds references to constant or address range
  • Examines and modifies memory, sets breakpoints and pauses programon-the-fly
  • Assembles commands into the shortest binary form
  • Starts from the floppy disk
and much, much more!


반응형

설정

트랙백

댓글

파이썬 튜토리얼을 대충 훓어본 후, 맨 처음 해 본것은
기존에 쉘 스크립트와 루비를 이용해 만든 유틸리티였습니다.

이 유틸중에 URL 주소로 부터 파일을 다운로드 하는 부분이 있는데
이 부분에 대해서 이야기 해볼까 합니다.

먼저, URL 주소로 부터 파일을 다운로드 받는 방법 입니다.
import urllib

URL = URL주소
urllib.urlretrieve(URL, URL.split('/')[-1])

요렇게 쓰면 파일을 다운로드 할 수 있습니다.
하지만 여기에서 문제가 발생했습니다. 어떤 서버내의 존재하지 않는 파일에 대해서
다운로드를 시도 할 때 exception 이 발생하지 않습니다.
구글님께 물어본 결과 저 현상이 당연하다는 글을 볼 수가 있었습니다.
왜냐하면 존재하지 않는 파일에 대해서 다운로드를 하게 되면
해당 파일이 아닌 다른 내용을 수신하게 되며, 네트웍으로 부터 정상적인
응답을 받았으므로 exception 이 아니라는 것입니다.

예를들면 http://www.naver.com/sdfa.jpg 파일을 위 코드를 사용하여 다운로드를 하게 되면
sdfa.jpg 라는 파일이 생성되며, 아무런 exception 이 발생하지 않습니다.
하지만 sdfa.jpg 라는 파일을 텍스트 에디터로 살펴보면 다음과 같습니다.
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<HTML><HEAD>
<TITLE>404 Not Found</TITLE>
</HEAD><BODY>
<H1>Not Found</H1>
The requested URL /sdfa.jpg was not found on this server.<P>
</BODY></HTML>

자, 그렇다면 어떻게 하면 다운로드 하려는 파일이 없다는 것을 알 수 있을까요?
머.. 여러 방법이 있겠지만, 제가 찾아낸 방법은 다음과 같습니다.
file = urllib.urlopen(URL)
   try:
       if file.headers.get("content-length") == None:
           raise
       else:
           file.close()
           urllib.urlretrieve(URL, URL.split('/')[-1])           
   except:
      (예외처리...)

이상 어제 삽질의 보고서였습니다. (--)(__)
반응형

설정

트랙백

댓글

2.2.3 Source Code Encoding
파이썬 소스 파일에서는 ASCII 와는 다른 인코딩을 사용할 수 있다. 가장 좋은 방법은 소스 파일의 인코딩을 방법을 정의하는 특별한 주석을 추가하는 것이다.

# -*- coding: encoding -*-

이 선언이 되어 있으면, 소스 파일내의 모든 문자는 encoding 타입으로 인코딩된 문자로 다루어질 것이다. 그리고 선택된 인코딩 타입으로 부터 직접적으로 유니코드를 쓸 수 있다. 사용가능한 인코딩 리스트는 이곳을 참고하라.

예를들어, 유로화 심벌을을 포함하는 유니코드 문자를 쓰기위해서, 유로화 심벌의 서수값(ordinal value) 164 인 ISO-8859-15 인코딩을 사용할 수 있다. 다음 스크립트는 8364 (유로화 심벌에 해당하는 유니코드 값) 를 출력한다.

# -*- coding: iso-8859-15 -*-

currency = u"€"
print ord(currency)


3.1.2 Strings
스트링을 표현하기 위해서 ` 나 " 를 사용할 수 있다.
` 내에서 ` 문자를 표시하기 위해서는 \` 사용하고 " 문자를 표시하기 위해서는 그냥 " 쓰면 된다.
반대로 마찬가지.


4.2 for Statements

>>> # Measure some strings:
... a = ['cat', 'window', 'defenestrate']
>>> for x in a:
... print x, len(x)
...
cat 3
window 6
defenestrate 12

반복문 내에서 리스트 a 의 내용을 바꿀 필요가 있을 때는,
위와 같이 쓰면 문제가 생길 수 있다. 이 경우에는 다음과 같은 표현으로
리스트 a 의 copy 를 사용한다.

>>> for x in a[:]: # make a slice copy of the entire list
... if len(x) > 6: a.insert(0, x)
...
>>> a
['defenestrate', 'cat', 'window', 'defenestrate']

4.1.7 Default Argument Values

i = 5

def f(arg=i):
print arg

i = 6
f()

default value 의 값은 defining scope 의 function definition 때 evaluate 된다.
즉 위의 코드의 결과는 5 가 출력된다.

주의! : default value 는 오직 한번 evaluate 된다. 이것이 list, dictionary 혹은 클래스의 객체와 같이 mutable(내용이 변할 수 있는) object 가 default 가 되는 경우 영향을 미친다.
예를들어, 아래의 코드는

def f(a, L=[]):
L.append(a)
return L

print f(1)
print f(2)
print f(3)

다음과 같은 결과를 출력한다.

[1]
[1, 2]
[1, 2, 3]

만약 연속적인 호출에서 default 를 공유하고 싶지 않다면, 함수 정의를 다음과 같이 해야 한다.

def f(a, L=None):
if L is None:
L = []
L.append(a)
return L


반응형

설정

트랙백

댓글

예전부터 스크립트 언어를 하나 배워야지 생각하고 있었습니다.
몇 가지 언어들이 후보로 나왔습니다.
자바스크립트, 비베스크립트, 펄, 파이썬, 루비 등...
이중에서 플랫폼에 종속적이지 않고 오픈소스이며 비교적 최근에 나온것을
고르다 보니 파이썬과 루비, 이 두가지 언어로 압축 되었습니다.

각각 이런저런 장단점이 있었던거 같습니다.
하지만 일반적으로 사용하기에 크게 문제되는게 아닐듯 하여
제가 선택한 기준은...

Win32 포트의 설치 프로그램의 용량...입니다.

python-2.5.msi  -  10.2 MB
ruby185-21.exe  -  26.3 MB

로.. 파이썬의 압승...
(사실은 파이썬이 좀 더 자료가 많다는 것도 영향을 미쳤죠)

이번에야 말로 좀 더 깊이 있게 공부해 볼까 합니다.



반응형

설정

트랙백

댓글

http://nsis.sourceforge.net/Main_Page

인스톨러를 제작할 수 있는 프로그램.
Winamp 로 유명한 Nullsoft 에서 오픈소스로 진행중입니다.
제가 사용하는 와우의 애드온을 자동으로 설치하는 설치파일을 만들기 위해
사용해 보았습니다. 상당히 멋진 물건이더군요.
반응형

설정

트랙백

댓글



이스2 이터널 오프닝
(오프닝곡 : To Make The End of Battle)

아래의 음악은 오프닝곡과 함께
제가 제일 좋아하는 곡인 Too Full With Love 입니다.


이스(YS)는 일본의 게임 제작사인 팔콤(Falcom)의 대표적인 게임입니다.
비록 제가 해본 것은 옛날 XT 에서 PC 버젼으로 나왔던 이스1 그리고 이스 이터널이
전부지만, 제가 해본 게임 중 최고의 배경음악을 가진 게임이었습니다.
(물론 게임 자체도 매우 재미있습니다.)

오래전 이스 이터널 정품을 구입했는데, 내용물이 무려 시디 4장 이었었죠
게임시디, 음악시디, 미디 파일 및 악보, 일러스터 이렇게 있었습니다.
군대 가기전 게임을 팔까 하다가, 이 시디들을 보니 도저히 팔수가 없어서
그냥 군대에 갔었는데, 제대 하고 보니 동생녀석이 친구 빌려줬다가 잃어버렸더군요. (ㅠㅠ)

그리고 대구의 교동을 돌아다니던 어느 날, 이스2 이터널 주얼판이 있는 것을 보고 냉큼 사와서
게임 시디는 놔두고 음악 시디만 빼서 ogg 파일로 추출하고 지금껏 그냥 보관중입니다.




반응형

설정

트랙백

댓글

MP3 파일로 인코딩 할 일이 생겨서 잠시 프로그램들을 찾아보다가,
맘에 드는 프리웨어가 무려 19메가나 되는걸 보고 포기했습니다.
그래서 다른 방법을 찾다가, 대부분의 유저들이 사용하는..(사용하리라 믿는)
Winamp 를 이용한 MP3 인코딩을 사용해 보았습니다.
Winamp 로 플레이가 가능한 파일이라면 모두 다 MP3 로 인코딩 할 수 있습니다.

좀 귀찮긴 하지만 가끔 한두곡의 파일을 컨버팅 하기 위해
따로 프로그램을 설치하느니 그냥 이걸로 때울랍니다.

설명 들어 갑니다.

1. Winamp 를 설치한다. (전 v5.2 를 사용했습니다.)

2. Chun-Yu's MP3 Writer plug-in 을 설치한다.
  Winamp 사이트에서 다운 받는 법을 모르겠다 하시는 분은 아래 파일을 다운 받아서 설치해 주세요.

3. Winamp 를 실행하고 Playlist 에 인코딩 하려는 파일을 추가해 주세요

4. 'Ctrl + P' 키를 눌러 'Winamp Preferences' 창이 뜨면 Plug-ins 의 Output 항목에서
   Chun-Yu's MP3 Writer plug-in v3.0 을 선택해 주세요

5. Configure 버튼을 눌러 인코딩 된 파일이 저장될 위치와 비트레이트를 선택해 주세요.
  그리고 OK - Close 를 한 뒤 Winamp 를 플레이 하면 인코딩이 시작됩니다.
  (64 부터 320 까지 선택할 수 있는 부분이 비트레이트 입니다. 나머지는 특별히 손댈것이 없어요)

6. (주의) 인코딩이 끝나면 Output 플러그인을 원래대로 돌려놔야 합니다!
   보통 Direct Sound 나 WaveOut 을 선택하면 됩니다.
 


반응형

설정

트랙백

댓글

말그대로 매크로 프로그램입니다.
(매크로란 간단히 미리 저장되어 있는 일련의 명령들을
하나의 명령으로 만들어 실행하는 것을 말합니다.)


http://www.autohotkey.com/

에서 다운로드 받을 수 있습니다.
반응형

설정

트랙백

댓글

윈도우 탐색기 - 도구 - 폴더 옵션 - 파일형식

'폴더'(파일 폴더X) - '고급' - '새로 만들기'

명령 : Dos Prompt
응용프로그램 : C:\Windows\System32\cmd.exe

이후로 폴더에서 오른쪽 버튼을 누르면 'Dos Prompt' 라는 메뉴가 생깁니다.
여기에 단축키를 넣고 싶다면 &Dos Prompt 라고 적습니다.

참고로 도스 프롬프트를 열면서 실행 파일을 바로 실행 시키기 위해서는
'/k 명령' 옵션을 사용하면 됩니다.
반응형

설정

트랙백

댓글