앞서 노트를 올렸던, 《인터넷 기업에서의 파이썬》의 발표 슬라이드입니다.
발표 슬라이드에 들어있는 내용이 오히려 더 적긴 합니다만, 그림이 일부 들어가 있어서.. ^^;;
- 프리젠테이션 자료 (openoffice 2)
- 플래시 프리젠테이션
PDF로는 출력하면 글자도 이상하게 작아지고 해서 그냥 swf만 만들었습니다.
혜식이의 열고 보는 세상
앞서 노트를 올렸던, 《인터넷 기업에서의 파이썬》의 발표 슬라이드입니다.
발표 슬라이드에 들어있는 내용이 오히려 더 적긴 합니다만, 그림이 일부 들어가 있어서.. ^^;;
PDF로는 출력하면 글자도 이상하게 작아지고 해서 그냥 swf만 만들었습니다.
모 회사에서 파이썬을 기업에서 사용하는 것에 대해서 발표를 요청해서, 자료를 하나 준비했습니다. 프리젠테이션 자료는 아직 정리가 덜 돼서, 발표한 다음에 주말 쯤에 올릴 수 있을 것 같고용. 우선 강의 노트(?)를 올립니다. ^.^
[[다운로드]]
내용은
이번 내용은 직접 사이트를 운영하는 회사를 대상으로 한 것이라서, 다른 회사에 납품하거나 홍보를 해야 하는 영업적인 측면은 넣지 않고 의사 결정을 완전히 직접할 수 있는 상황에 적합하게 썼습니다. 방학 때나 언제 시간이 남으면, 의사 결정권이 없고 영업적인 고려까지 해야 할 때 파이썬을 어떻게 써야할 것인가에 대해서도 한번 써 봐야겠네요. ;;
파이썬 3000에서 모든 클래스의 new style class 화 이외에 가장 큰 대공사급인 bytes 타입이 엊그제 들어왔습니다.
1 2 3 4 |
>>> bytes('tokigun') bytes([0x74, 0x6f, 0x6b, 0x69, 0x67, 0x75, 0x6e]) >>> dir(_) ['__add__', '__class__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__str__', 'decode'] |
이제 bytes 타입이 완료가 되면, str이 unicode로 바뀌고, unicode는 없어집니다. (!) 물론 bytes 타입에서는 str에서 제공하던 islower, toupper 같은 문자열 메쏘드는 제공되지 않습니다.
^^; 자바나 .NET 기반으로 쓰시던 분들께는 익숙한 상황으로
가는 것이겠지만, C 프로그래머들은 이제 난감하게 되었네요.
으흐흐.. 입문자들에게 장벽이 되지 않도록 이해하기
쉬운 모양으로 발전하면 좋겠습니다.
작년에도 굉장한 인기를 끌었던 Google Summer of Code가 올해도 더욱 더 커진 규모로 시행될 계획이라고 합니다. 이미 FreeBSD 프로젝트나 파이썬 소프트웨어 재단같은 멘터 기관들은 내부적으로 멘터들을 모으고 프로젝트 아이디어들을 모으느라 부산하게 움직이고 있습니다.
올해도 작년과 같이 각 단위당 학생 4500달러, 멘터 500달러로 상금을 주고 둘에게 각각 구글 티셔츠를 1벌씩 준다고 합니다;; 작년에도 프로젝트들이 대다수가 성공해서 상금을 받아간 것을 보면, 올해도 결과들이 무척 기대가 됩니다. 올해는 한국에서도 많이 참가해서 커밋로그에서 많이 보게 되었으면 좋겠네요~ 5월 1일 부터 참가 접수가 시작되고, 5월 8일에 참가 접수 완료해서 5월 22일에 멘터-학생 매치가 완료된 뒤에 발표가 나서 시작한다고 합니다.
약간 좀 거시기한 것은, 6월 말까지 중간까지 진행해서 중간 보고를 하기 때문에 한국의 학사일정하고는 안 맞아서 정작 설렁설렁 다니는 학생이 아니면 일정 맞추기가 쉽지가 않긴 한데.. 흐흐.. 아쉽네요~ (저도 7월까지 빡시게 여름학기를;;;)
1 2 3 4 5 |
lucy(perky):~/cvs/python/branches/p3yk% ./python Python 3.0x (p3yk:43459, Mar 31 2006, 02:33:47) [GCC 3.4.4 [FreeBSD] 20050518] on freebsd6 Type "help", "copyright", "credits" or "license" for more information. >>> |
으흐흐.. 어제 귀도가 p3yk 브랜치 버전을 3.0으로 올렸습니다.
그래서 이제 3.0이 확~ 다가온 느낌이군요.. ^_^;
(뭔가 꼭 학부 OS 첫 숙제들 같이 버전 고쳐서 컴파일해오기 한 것 같은 기분도 약간 -O-)
아직 텔레파시는 지원 안 합니다. 🙂
어제 릴리스된 파이썬 2.4.3으로 lang/python 포트를 업데이트 했습니다. 이번에는 얼마 전에 lang/python-devel 포트에서 시험적으로 적용했던 pkg-plist 줄여쓰기를 메인 포트에서도 한 번 적용해 봤습니다. 원래 py, pyc, pyo를 모두 pkg-plist에 적어 두고 있었는데, 용량이 너무 커져서 파이썬 포트들만 모두 합쳐도 이제 1MiB가 넘어가는 판국이 되어서 pyc와 pyo를 빼고 awk로 중간에 처리를 하도록 해버렸더니 60KiB정도가 줄었습니다. 🙂 그리고, NO_NIS는 있으면서도 PORTMAP은 안 끈 시스템에서 설치하다가 파일이 없다고 에러나는 것도 rpcgen 대신 ypcat을 체크하도록 해서 고쳤습니다.
파이썬 2.4.3은 아주 마이너한 버그 패치들만 들어가 있기 때문에, 기능적으로는 특별히 볼 만한 것은 없지만, Coverity와 refleak check, buildbot 등 파이썬 개발팀에서 최근에 사용하기 시작한 완성도 높이기 덕택에, 자잘한 버그들이 정말 많이 수정되었습니다. (예를 들어 PyObject_Unicode(NULL) 하면 세그폴트 나버리는 문제라던지..) 완성도 관련이나 릴리스 자동화, 막판의 버그 픽스와 하위 호환성의 충돌과 관련해서 좀 더 깊숙히 할 얘기가 있는데 2.4.3 릴리스와 관련된 뒷얘기들은 다음 기회에 다시 자세히~
그나저나, 지금 확인해 보니 아직 넷비, 우분투, 젠투, 데비안, 페도라에는 2.4.3이 안 들어간 걸 봐서는 이번엔 프비가 대략 1등? ^_^;; =3=33 (시험 전날 공부는 안 하고 이런거나 –;;)
파이썬을 파이썬으로 주로 구현하는 야심찬 프로젝트인 PyPy 프로젝트는 뭔가 계기가 되는 굵직한 작업들이 주로 개발자들이 오프라인에서 모여서 스프린트를 하면 뭉터기로 해결이 되는 특징이 있습니다. 무협 영화에 보면 자주 나오는, 숨어있던 고수들이 어느날 갑자기 여기 저기서 흘러들어와서는 중원의 잡배들을 물리치고, 휙하고 사라지는.. 마치 그런 장면! (.. 괜히 흥분;;) 요즘은 우리나라의 서상현씨와 서지원씨도 참여하고 있어서 무척 흥미로운 프로젝트이지요.
그런데, PyPy 스프린트는 지금까지 거의 유럽에서 하고 가끔 미국에서도 했었는데, 이번에 처음으로 엉뚱하게 도쿄의 “아키하바라”에서 하기로 했다고 한다뇨~ 역시나 일본에서 하는 것이라 지난번 아시아 코드페스트에서 굉장한 지원을 해 주었던 FSIJ (Free Software Initiatives in Japan)에서 지원 해준다뇨~ 일본에 사는 파이썬 해커들 뿐만 아니라 많은 수의 유럽 해커들까지도 지원을 받아서 참가하는 것 같다뇽~ (;;)
게다가 이번 스프린트 주제 1번이 Squeak VM 백엔드에다가 PyPy를 올린다고 하니.. 특히 스퀵이 강세인 일본에서 많은 해커들이 활발히 참여할 것 같아서 무척 재미있을 것 같습니다. 🙂 아 역시 옆에 있는 나라 사람으로써 우리나라에서도 한 번 했으면 싶지만, FSIJ처럼 돈 많이 쓰는 곳이 없어서 약간 아쉽네요. ^_^;
이번에는 podcast 맛보기용으로 녹음을 한 번 해봤습니다. -O-; iTunes에 등록하실 때는 RSS URL로 http://openlook.org/blog/rss_itunes_xml 를 등록해 주세용.
아하하. 완전 어색하지만 예쁘게 봐 주세요.
==>> 파이썬 2.5 미리보기 6편: C API 청소 (아마도 처음이자 마지막회 -O-)
파이썬 2.5 미리보기 6편: C API 청소 (녹음 내용의 요약)
파이썬 2.5에서는 C API 청소가 약간 있었습니다. 그동안 문제로 지적되어 왔었던 const가 지정되지 않은 API 인터페이스의 문제들과, 크기를 지정하는 타입으로 int에서 Py_ssize_t로 바뀐 것이 대표적입니다.
const 문제는 PyString_FromString 같은 함수들이 문자열을 char *타입으로 받는데, const char*이 아니기 때문에, 일반적인 문자열 상수를 막 던지려면 경고를 피하려고 캐스팅을 해야하는 문제가 있었습니다. 물론 아예 그냥 상수로 선언을 안 하면 data 영역으로 떠서 메모리에 올라올 때 낭비도 있고요.. 그래서 이번에 const가 쫙 달려서 이제 깔끔하게 쓸 수 있게 되었습니다.
그리고, 그동안 크기를 지정하는 타입으로 int를 사용해 왔었는데, 그 때문에 문자열이나 리스트의 길이가 2^31자/개 까지로 제한되어 왔습니다. 이게 64비트 플랫폼에 가면서 문제가 됐는데, 따라서 플랫폼에 맞는 크기 지정 타입으로 내부적으로 Py_ssize_t를 선언해서 쓰기 시작하였습니다. 덕분에 대부분의 타입들이 64비트의 주소 영역을 충분히 활용하게 되었구요~
그런데, 하나 문제가 생겼습니다. API에서 주소 크기가 문제가 되는 경우, 즉 PyArg_ParseTuple 같이 가변인자를 동적으로 읽어오는 경우에 64비트가 올 자리에 32비트가 오고 그러면 포인터가 막 쭉쭉 밀려서 세그폴트가 나게 됩니다. 이 문제를 해결하기 위해서 그냥 디폴트로는 옛날처럼 int 타입하고 최대한 호환되게 남겨두고, PY_SSIZE_T_CLEAN 이라는 매크로를 Python.h가 포함되기 전에 정의가 되어 있으면 z# 같은 포맷까지도 모두 Py_ssize_t를 사용하도록 하였습니다.
파이썬 C API에서 가장 노가다성이 짙어서 과연 얼마나 심심해야 이런 것 할 시간이 날까 하고 생각하고 있었던 청소가 모두 끝난 것이라 무척 상쾌한 릴리스가 될 것 같습니다. 🙂
오프라인 파이썬 서적 중 좋은 것을 추천하자면, 프로그래밍 입문자용으로는 당연히
《Python Programming for the Absolute Beginner》를 추천하겠지만, David Beazley의 책이 막강하게 지키고 있던 기존에 다른 언어를 쓰던 프로그래머들을 위한 것으로는 David Beazley책이 한물간 이후로는 적당한 것이 딱히 없었습니다.
1판에는 귀도가 추천사를 쓰기도 했던 Beazley의 《Python Essential Reference》는 굉장히 간결한 설명으로 이미 다른 언어에서 뿌리를 내리고 있는 사람들이 옆으로 곁가지 치는 식으로 파이썬을 배우기에는 정말 좋은 놈이었습니다. 그런데 파이썬 책들이 갖게되는 공통적인 문제점.. 파이썬 버전이 올라갈 때마다 문법이 계속 새로 나와서 옛날 버전 책을 사기가 굉장히 난감하다는 것 때문에, 2판이 2.1에 맞춰서 나오자 마자 2.2가 나와버린 이후로 역사의 뒤안길로 미뤄져 있었던 것이었습니다. 이번에 드디어 2.4용으로 업데이트가!
Types and Objects in Python이라는 챕터가 샘플로 올라와 있습니다. 보니까 드디어 isinstance도 다루고 있고, 부담없이 추천할 수 있게 되었네요. 🙂 그렇지만.. 이번에도 이 책의 운명은 참 불쌍합니다… 2.5가 곧 나올텐데.. ㅠ.ㅠ
이전 연재 보기
오늘은 파이썬 2.5에서 가장 논란이 될 만한 부분인 PEP-308 Conditional Expressions에 대해 알아보겠습니다.
C의 ? : 이른바 삼항연산자라고 부르는 그 놈은 C에서 파이썬으로 넘어오는 개발자들이 항상 목말라하는 그런 것이었습니다. 그래서, 궁한대로
1 2 3 4 |
1) a == b and 1 or 0 2) [0, 1][a == b] 3) (a == b and [1] or [0])[0] 4) {True: 1, False: 0}[a == b] |
등 별 희한한 방법을 다 쓰고 있었지만, 1번은 제약사항이 있고, 2,3,4번은 눈에 확 들어오지 않는다는 치명적인 문제가 있어서, 결국은 if: else: 해서 4줄로 나눠써야 했었습니다.
이 문제 해결을 위한 여러 사용자들의 꾸준한 요청으로 귀도가 드디어 투표를 하기로 결심해서, 2003년에 투표를 해서 결정이 되긴 했지만, 여러 분파로 나뉘어서 그 후에도 좁혀지지 않는 의견차로 인해서 실행이 될 기미가 보이지 않았습니다. 그래서 결국 1000000표를 행사하는 귀도가 모든 사람이 상상도 못했던 희한한 문법을 들고 나와서 그걸로 결정해 버렸습니다. (이런 일은 print >> None 때도 다들 황당했었지요.. ;;)
결정 문법: X if COND else Y
X가 맨 앞에 나오지만 X가 먼저 해석되지도 않을 뿐더러, COND가 중간에 숨겨지고, X와 Y가 떨어져있는 등 귀도 외에는 좋아하는 사람이 거의 없는 듯 했지만, 어쨌거나 이 문법으로 결정이 되었습니다. 그 문제는 구현까지 완료돼서 들어오고 나서 더욱 더 강조가 되게 되었는데,
1 |
text = data if logging else '' |
이렇게 쓰면 다른 언어들의 if, else 문법들의 영향으로 다음 중 어느 것으로 해석되는지가 굉장히 헷갈립니다.
1 2 |
1) (text = data) if logging else '' 2) text = (data if logging else '') |
물론, 파이썬에서는 1번이 기본 구조로 불가능하기 때문에 2번이 정답이기는 하지만, 다음과 같이 꼭 띄어써야 하는 부분이 아니면 안 띄어쓰는 (약간은 ㅂㅌ스러운 ㅎㅎ;) 코딩 컨벤션을 쓰는 사람이라면 훨씬 더 난감해집니다.
1 |
text=data if logging else '' |
으흐흐.. 하여간, 이 문법이 과연 파이썬 3.0까지 살아남을 수 있을지 두고 봐야겠습니다. “print >> file” 처럼 처음에는 다들 굉장히 싫어했지만, 결국에는 다들 익숙해져버리는 쪽으로 될 지도 모르겠고요..