Post about "python"

Python 들여쓰기를 탭에서 스페이스로 바꾸기

파이썬으로 엑셀 라이브러리를 만들었다. 기존 파일을 수정만 하는 기능만 제공해서 코드 수가 170여 줄 밖에 안된다.

그런데 여기에 새 시트를 추가하는 기능을 추가해야 한다.

문제는 코딩 스타일.

기존에 들여쓰기를 탭으로 설정해 두었는데, 두어 달 전부터 스페이스 4칸으로 바꾸었다. 그리고 Vim과 PyCharm의 설정이나 플러그인도 모두 스페이스*4로 바꾸었다.

그래서 들여쓰기 규칙이 일치하지 않아 문제가 발생한다.

기존에 탭으로 설정된 들여쓰기를 스페이스*4로 바꾸어야 한다.

stackoverflow에는 천재, 영재, 똑똑한 사람들, 현명한 사람들, 잉여력이 쩌는 사람들이 많다.

http://stackoverflow.com/questions/234564/tab-key-4-spaces-and-auto-indent-after-curly-braces-in-vim

저기 답변 중 다음과 같은 방법으로 쉽게 해결했다.

 

 

Debian Squeeze에 python 2.7 설치하기

참고문서:

 

  1. 저장소에 deb http://mirror.cse.iitk.ac.in/debian/ testing main contrib 추가
  2. sudo aptitude update
  3. sudo aptitude install python2.7
  4. sudo update-alternatives –install /usr/bin/python python /usr/bin/python2.7 10

 

python 관련 vim 플러그인

관련 플러그인

  1. AutoComplPop: Automatically opens popup menu for completions
  2. python.vim : A set of menus/shortcuts to work with Python files
  3. pyflakes.vim : PyFlakes on-the-fly Python code checking
  4. Pydiction : Tab-complete your Python code

이 중에 python.vim(실제 파일명은 python_fn.vim) 단축키만 여기에 올려둔다. 이 플러그인은 매뉴얼이 따로 없고, 플러그인 파일 내에만 간단하게 요약되어 있다.

Shortcuts:

]t — Jump to beginning of block
]e — Jump to end of block
]v — Select (Visual Line Mode) block
]< — Shift block to left
]> — Shift block to right
]# — Comment selection
]u — Uncomment selection
]c — Select current/previous class
]d — Select current/previous function
]<up> — Jump to previous line with the same/lower indentation
]<down> — Jump to next line with the same/lower indentation

 

Python 플러그인 끝판왕 python-mode

올해 공부계획

1. 영어:  11월 토익 700점을 목표로. 고등학생만도 못한 영어실력으로 겨우겨우 버텨왔는데 아주 답답하다.

영어공부는 매번 얼마 못가 질려버려서 걱정이 되긴 하는데…

2. LaTeX: 5월 중순부터 이걸로 밥벌이하게 됐다. 실제로는 문서제작 프로세스를 만드는 일이 될 것 같다.

지금 책만드는 일이 끝나면 KTS컨퍼런스 팜플릿 소스분석을 하려고 했는데 좀 더 서둘러야 겠다.

수많은 소스 중에 저걸 목표로 한 이유는

1) 믿을 만한 분이 만들었다. 게다가 온라인상으로는 자주 만난다.

2) 소스, PDF파일, 인쇄물을 모두 가지고 있다. 나에게는 실제 인쇄된 결과물을 갖고있다는 게 아주 중요하다.

3) 있을 건 다 있다. 이 소스 하나면 많은 걸 배울 수 있다.

3. ConTeXt: LaTeX보다 사용자도 훨씬 적지만 내가 바라던 방식을 제공한다. 이건 순전히 내 느낌을 믿고 하는 것이다.

4. Python: 필요할 때만 가끔 쓰니까 늘지를 않는다. Django, PyQt(or PySide) 등도 같이 공부해서 업무에 써먹도록 해야겠다.

5. Cocoa 프로그래밍: 맥과 아이폰용 앱을 만들기 위해. 택시 합승 앱은 벌써 나왔더군. 지금 구상중인 건 생활(특히 자취생)과 관련된 것 하나와 게임 하나. 5개 중에 우선순위가 가장 낮은 공부.

6. 철봉 턱걸이 100개. 오늘 두 손가락으로 10개 간신히. 왜 손 전체로 잡는 것보다 두 손가락으로 하는 게 더 쉬운지 모르겠다. 아무튼 안쉬고 100개!!! -> 이건 나중에 평행봉으로 바뀔 수 있음.

영어 빼고는 구체적인 목표가 없네…  좀 더 고민해야겠다.

파이썬 스크립트 – 디렉토리 내 파일정보 리스트만들기

회사일때문에 만든 파이썬 스크립트

파이썬 2.7버전으로 작성.

easygui가 필요하다.

특정 폴더에 있는 파일과 디렉토리를 서브디렉토리 레벨단위로 보여준다.

결과는 csv로 저장되므로 엑셀에서 열어보면 어떻게 나오는지 알 수 있다.

파일에 대해서는 파일이름, 수정날짜, 파일크기를 알려준다.

파일: filelist.py

소스:

복사해서 에디터에 붙여넣어 저장할 땐 UTF-8로 저장해야 한다.

Git vs Mercurial

데스크탑을 윈도7에서 우분투 9.10으로 밀고, 공부할 거리를 관리할 소스관리툴을 설치하려고 한다.

svn은 이미 써왔던 툴이라 익숙하긴 한데, 최근에 분산형 버전관리 시스템(DVCS: Distributed Version Control System)이 많이 거론되는지라 이쪽으로 알아보고 있다.
Git은 최근에 번역서도 출간되었고, 리누스가 개발하기도 해서 좀 더 많이 알려진 것 같긴 한데, Mercurial도 그에 못지 않게 유명하다. 구글코드에서 지원하기로 한 것으로 보면 그만한 가치를 인정받은 모양이다.
이런 저런 자료를 비교해보니.
둘 다 GUI툴은 아직 안정적으로 쓸만한 것은 없으나, MercurialTortoiseHgGitTortoiseGit가 많이 쓰이는 것 같다.
대표적인 차이점은

Mercurial은 서브버전과 비슷한 점이 많아 서브버전 사용자가 배우기가 쉽다고 한다. 다만 파이썬으로 만들어졌기 때문에(diff는 C로 개발했다고 한다) Python-2.4(2.6나온지도 꽤 됐는데…)를 설치해야 한다.
반면에 Git은 리누스가 리눅스 개발에 쓰기 위해 직접 만들었다고 할 정도로 큰 프로젝트에서 좋은 성능을 발휘하는 반면, 윈도우즈 지원은 다소 미흡하다고 한다.

Mercurial을 사용하는 대표적인 프로젝트로는 OpenJDK, Mozilla, NetBeans 등이 있고, Git을 사용하는 프로젝트로는 리눅스(커널), Debian, Perl, Qt, Gnome, Wine 등 굵직굵직한 프로젝트들이 있다.
여러 글을 읽다보니 마음이 Mercurial쪽으로 움직이고 있다. 그렇지만 벌써 Git, 분산 버전 관리 시스템책을 주문해 버렸다.
분산형 버전관리에 대한 페이지

Mercurial에 대한 페이지

Git에 대한 페이지
아무튼 책을 읽어보고 조만간 결정을 내려야겠다.
(Python 버전 문제가 걸리긴 하지만 자꾸 Mercurial에 끌리네…)

대전 버스이용 정보

서울버스라는 걸출한 아이폰 앱이 있다.

대전사는데다 아이폰도 없는 나는 멀리서 바라볼 뿐…
그러다가 최근에 네이버 맥쓰사 카페에서 다음의 주소를 알게 되었다.
m.djits.info/pda
대전시에서 제공한 정보를 가공해서 보여주는 것 같긴한데 정확히 누가 만든 건지 누가 운영하는지는모르겠다.
암튼 이걸 파이썬과 BeautifulSoup로 데이타만 가져와봤다. 웹사이트에 접속해서 하는 것보다 터미널에서 버스 번호만 입력하면 되기 때문에 퇴근할 때 컴퓨터 끄기 전에 쉽게 볼 수 있어서 좋다.
<code python>
#!/usr/bin/python
# -*- coding: utf-8 -*-
from BeautifulSoup import *
import chardet
import urllib2
import re
import os
 
bus = input(“버스번호: “)
 
try:
f = urllib2.urlopen(“http://m.djits.info/pda/Bus_location.jsp?route_id=250%d0&route_name=%d&direction_tf=T” % (bus, bus))
soup = BeautifulSoup(f, fromEncoding=”cp949″)
except:
print u”서비스 이용 불가.”
os.sys.exit(1)
f.close()
 
try:
data = soup(‘table’)[5].contents[3].renderContents(‘utf-8’)
except IndexError:
print u”서비스 이용 불가.”
os.sys.exit(1)
 
datas = data.splitlines()
 
stops = []
 
for i in datas:
i = i.strip()
i = re.match(“\d\. .+$”, i)
if (type(i) != ‘NoneType’):
try:
print i.group()
stops.append(i.group())
except:
pass
</code>
BeautifulSoup라는 걸출한 파이썬 모듈이 있었기에 쉽게 할 수 있었다. 최종 목표는 특정 시간이 되면 구글 칼렌더에 자동으로 등록되게 하는 것. 구글 칼렌더의 일정 SMS받기를 이용하는 것인데, api를 공부해야 되서…
한달치 데이터 모아서 LaTeX으로 보고서 만들면 재밌을 것 같다.

Ubuntu + Apache2 + Django

우분투에서 django설정하다가 머리가 뽀사질 뻔 했다.

한참을 헤매다 9월쯤인가 결국 엄청난 구글링으로 해결했다.

나중을 대비해 정리해 둔다.

1. 기본적인 설명은 http://docs.djangoproject.com/en/1.0/ 을 따른다.

2. 아파치 설정: sites-available 디렉토리에 설정 파일을 만든다.
여기서 주의할 점!

AddHandler modpython.py
PythonPath “[‘/home/user_id/public_html/’] + sys.path”

과 같이 써준다.

django문서에는 PythonPath “[‘/home/forlin/public_html/django_project’] + sys.path”

와 같이 django 프로젝트 경로까지 써주라고 나와있으나 절대!!! 프로젝트 경로까지 쓰면 안된다.

django 프로젝트 상위 디렉토리까지만 지정해 준다!!!

3. 파이썬이 처리를 못하는 경우가 있을 수 있다.

.bashrc 파일에

export PYTHONPATH=.:$HOME/public_html/web

를 추가한다.

4. 아파치 설정파일에 AddHandler modpython.py 를 추가

괜찮은 웹용 feed reader, Gregarius

feed reader 종류가 몇가지 있습니다.
하나는 한RSS처럼 웹서비스에 가입해서 쓰는 방식도 있고, Feed Daemon과 같은 실행파일 형태로 된 것도 있습니다.

여기에 하나 더 추가하면 planet이라는 것이 있습니다.

텍스트큐브처럼 설치해서 쓰는 feed reader인데, planet파이썬(Python)으로 만들어져서, 운영하려면 서버에서 python이 설치되어 있어야 합니다. 그런데 planet의 또다른 단점은…설치나 설정이 조금 복잡합니다.

이번에 알게 된 프로그램은 Gregarius 라는 프로그램인데 PHP로 되어 있어서 대부분의 호스팅환경에서 쓸 수 있습니다. PHP4.x 이상이면 돌아갑니다(PHP4.3 이후버전을 권장). 데이터베이스는 MySQL나 SQLite를 사용합니다.

뭐 feed reader 지금도 여러가진데 뭘… 라고 생각하실 분이 혹 계실지도 모릅니다만,

한RSS 같은 웹서비스형태의 경우 자기가 등록한 feed를 자기 혼자서 볼 수 있지요.
Feed Daemon 같은 경우는 자기 PC에서만 볼 수 있지요.

planet과 마찮가지로 Gregarius 역시 운영자가 등록한 Feed를 함께 볼 수 있습니다. Gregarius 홈페이지에 보니 AJAX를 썼다고 하는데, 어딘지 눈치를 못채겠군요;;;

RDF, RSS, ATOM을 지원합니다.
OPML 가져오기/내보내기 기능이 있으니 opml파일로 쉽게 추가할 수 있습니다.

planet보다 설치도 쉽고, 설정도 쉽고,
테마는…테마는 뭐 별로 없습니다;;;
플러그인도 있는데 플러그인은 아직 자세히 살펴보지 않았습니다.

한글언어파일이 없는데, 이거나 만들어볼까 생각중입니다.

데모사이트: http://rss.gregarius.net/

시티헌터에서 파이썬(python)을 발견하다!

정말 열심히 배워서 잘 써먹고 싶은 프로그래밍 언어가 바로 python이다. 열혈강의 파이썬을 1판과 개정2판까지 갖고 있으면서도 제대로 공부해본 적이 없다. ;;;

오늘 큐파일에서 시티헌터라는 유명한 애니메이션 시리즈를 몽땅 다운받고 하나 골라서 잠깐 보고 있는데, 문득 python이라는 문구를 본 것 같았다.

그래서 뒤로 가서 느리게 재생했는데, 역시나!!!

그나저나…

어렸을 때 만화로 보던 걸 애니메이션으로 다시 보려니 기대도 되긴 하는데…

이걸로 며칠을 또 날밤을 샐런지…;;;