1. 매크로 기록 시작

C-x (


2. 매크로 기록 종료

C-x )


3. 매크로 실행

C-x e


4. 매크로 반복 실행

C-u 반복횟수 C-x e


C-u 반복횟수 + 명령 구문은 매크로 실행 명령이 아닌 다른 단일 명령(입력) 실행시에도 사용할 수 있다.



,

Python에서 한글로 된 주석 및 코드를 사용하기 위해서는 소스 앞부분에 다음과 같이 인코딩 방식을 지정하여야 한다.


1. 완성형

# -*- coding: euckr -*-


2. 확장 완성형 (윈도우)

# -*- coding: cp949 -*-


3. UTF-8

# -*- coding: utf-8 -*-


일단, 여기까지만 하면 위 세가지 인코딩 방식에 대해서 한글로 된 주석을 사용할 수 있다.


주석이 아닌 실제 문자열 변수에 한글 문자열 상수를 대입하는 것과 같이 소스 코드 내에서 사용하는 경우, ANSI 계열(완성형, 확장완성형)에서는 위와 같이 지정만해도 문제없이 사용이 가능하다.


하지만 UTF-8의 경우, 이와 같은 지정만으로는 제대로 되지 않는데, 파이썬이 기본적으로 문자열 상수를 ANSI로 받아들이려 하기 때문이다.

이런 문제를 해결하는 방법 중 한가지는 문자열 상수 사용시에 u를 따옴표 앞에 붙이는 것이다.

str = "한글 포함 상수"

대신에

str = u"한글 포함 상수"

를 사용한다


이 방법은 ANSI 계열에 사용했을 때도 역시 정상 동작한다.


<테스트 환경>
OS : Windows 7
Python 버전 : 2.7


,

버튼을 누르면 특정 프로그램이 실행되는 Launcher 어플의 Template입니다.


# -*- coding: utf-8 -*-
#!/usr/bin/python

import wx
import subprocess

BUTTON_ID_1 = 101
BUTTON_ID_2 = 102
BUTTON_ID_3 = 103
BUTTON_ID_4 = 104

COMMAND_PATH_1 = "" # 첫번째 버튼으로 실행할 실행파일 경로 예) "C:\\Windows\\explorer.exe"
COMMAND_PATH_2 = "" # 두번째 버튼으로 실행할 실행파일 경로
COMMAND_PATH_3 = "" # 세번째 버튼으로 실행할 실행파일 경로
COMMAND_PATH_4 = "" # 네번째 버튼으로 실행할 실행파일 경로

COMMAND_PARAM_1 = "" # 첫번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_2 = "" # 두번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_3 = "" # 세번째 버튼으로 실행할 실행파일 파라미터
COMMAND_PARAM_4 = "" # 네번째 버튼으로 실행할 실행파일 파라미터

def ShellExecute(path, param="", cwd=None, nonExecutable = False):
    # path  : 실행 파일 경로
    # param : 파라미터
    # cwd   : 현재 디렉토리
    # nonExecutable : True일 경우, 실행 파일이 아니어도 연결 프로그램으로 실행 가능
    try:
        if param == "":
            subprocess.Popen([path], cwd = cwd, shell=nonExecutable)
        else:
            subprocess.Popen([path, param], cwd = cwd, shell=nonExecutable)
    except OSError:
        wx.MessageBox(u"Launch Failed!", u"Info")

class MainWindow(wx.Frame):
    def __init__(self, parent, id, title):
        wx.Frame.__init__(self, parent, id, title, size = (320, 240),
            style = wx.DEFAULT_FRAME_STYLE|wx.NO_FULL_REPAINT_ON_RESIZE)
            
        vbox = wx.BoxSizer(wx.VERTICAL)

        button = wx.Button(self, id = BUTTON_ID_1, label = u"Button 1", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)
        
        button = wx.Button(self, id = BUTTON_ID_2, label = u"Button 2", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        button = wx.Button(self, id = BUTTON_ID_3, label = u"Button 3", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        button = wx.Button(self, id = BUTTON_ID_4, label = u"Button 4", size = (-1, 50))
        vbox.Add(button, 0, wx.EXPAND | wx.ALL)
        self.Bind(wx.EVT_BUTTON, self.OnButton, button)

        self.SetSizer(vbox, True)
        self.Layout()
        
    def OnButton(self, event):
        buttonId = event.GetId()
        
        if buttonId == BUTTON_ID_1:
            ShellExecute(COMMAND_PATH_1, COMMAND_PARAM_1)
        if buttonId == BUTTON_ID_2:
            ShellExecute(COMMAND_PATH_2, COMMAND_PARAM_2)
        if buttonId == BUTTON_ID_3:
            ShellExecute(COMMAND_PATH_3, COMMAND_PARAM_3)
        if buttonId == BUTTON_ID_4:
            ShellExecute(COMMAND_PATH_4, COMMAND_PARAM_4)

            
app = wx.App(False)
frame = MainWindow(None, -1, u"Title")
frame.Show(1)
app.MainLoop()




<테스트 환경>
OS : Windows 7
Python 버전 : 2.7
wxPython 버전 : 2.8.12.1


,


SyntaxHighlighter 적용하기 위한 태그입니다.


<pre class="brush:언어명">

소스 코드

</pre>


언어명에 들어갈 수 있는 언어의 종류는 다음과 같습니다.


applescript
actionscript3 as3
bash shell
coldfusion cf
cpp c c# c-sharp csharp
css
delphi pascal pas
diff patch
erl erlang
groovy
java
jfx javafx
js jscript javascript
perl Perl pl
php
text plain
powershell ps
py python
ruby rails ror rb
sass scss
scala
sql
vb vbnet
xml xhtml xslt html


테스트 버전 : SyntaxHighlighter 3.0.83


,


PyOpenGL

Python용 OpenGL 라이브러리.


http://pyopengl.sourceforge.net/



PGU

pyGame과 함께 쓰일 수 있는 확장 라이브러리. 타일 에디터/엔진(tile/isometric/hexagonal), 레벨 에디터, 확장된 GUI/HTML 렌더링/텍스트 렌더링, 상태 엔진 등을 제공


https://code.google.com/p/pgu/



Soya3D

Python용 high-level 3D 엔진.


http://home.gna.org/oomadness/en/soya3d/



,