Junior Python Hackers’ List

FreeBSD JKH (Junior Kernel Hackers list)나 GNOME love day처럼 쥬니어 해커들이 입문하기 위한 도움이나 리스트 같은 것은 막 입문하려는 해커들에게 큰 도움을 주는 것 같습니다. GNOME love day 같은 것은 다른 데서도 앞으로 많이 했으면 좋겠네요. :)

그런 의미에서 한국어를 쓰는 쥬니어 파이썬 해커들이 해 볼만한 파이썬 해킹꺼리를 좀 정리해 봤습니다. 관심 있으신 분들은 한 번 도전을.. :) 서너개 정도만 말끔히 처리하면 파이썬 소스가 아주 익숙해지면서 금방 커밋 권한도 얻을 수 있을 것입니다~

  • 다국어 식별자(internationalized identifier): 1월에 [WWW]Martin v. Löwis의 메일에서 나온 아이디어인데, 아직 PEP나 구체적인 스펙이 나오지는 않았습니다. Martin의 의견으로는 tp_dict에 아스키로 인코딩 가능한 경우엔 string, 불가능한 경우에는 유니코드 객체를 집어넣어 버리고 그와 그와 관련된 함수들을 추가하자고 하고 있습니다. 그렇지만, 이렇게 되는 경우에는 u’abcd’와 ‘abcd’같이 같은 값이 서로 다른 키로 저장될 수도 있고, 일일이 구분해서 갖고와야 하는 수도 있고 해서 하위호환성 문제가 있는데, UTF-8로 저장하는 방법 등 몇가지 다른 처리 방법이 있을 수 있습니다. 파이썬 전체에 다국어 식별자 패치가 들어가면, 한글로 변수이름과 클래스 이름들을 쓸 수 있게 되기 때문에, 비영어권 사용자의 입문에 큰 도움이 될 것입니다. _ 그냥 단순하게 UTF-8만 되게 만들어 놓은 패치는 http://openlook.org/tmp/i18nidentifier.diff 에 있습니다. :)

  • 크로스 컴파일: [SFPython]848910 에 패치가 올라와 있기는 한데, 2.2.1기준으로 되어있고 무지 오래된 패치라 제대로 돌아가지 않습니다. 특히 ARM이나 PowerQUICC같은 기종에서 파이썬을 쓰시는 분들에서 유용한데, 크로스 컴파일 지원을 넣기 위해서는 일단 pgen 빌드 과정을 호스트와 타겟을 분리해야하고, setup.py에서 크로스 빌드를 약간 특별하게 취급해서 옵션을 넣어줘야합니다.

  • collections와 itertools, statistics: itertools는 2.3에 추가되었고, collections와 statistics는 2.4에 들어갈 모듈인데, 세 모듈은 늘상 쓰는 프로그래밍 패턴을 아주 단순화시켜준다는 면에서 매우 매력적입니다. 지금 들어가 있는 것들도 어느정도는 있지만, 자기가 쓰는 다른 패턴들이 더 있다면 추가해 보는 것도 재미있을 것입니다.

  • 순파이썬 로캘 지원: 현재 파이썬에서 지원하는 locale과 관련 모듈들은 모두 시스템 로캘에 의존하고 있어서 요즘 엄청난 이슈가 되고 있는 time.strftime 문제처럼 시스템 독립성에 많은 문제가 되고 있습니다. .NET이나 Java처럼 언어 자체 지원으로 로캘을 지원할 수 있다면 플랫폼 독립성에 큰 도움이 되겠죠. :) 이 문제에 관심이 있으시다면 IBM의 [WWW]ICU를 참고로 하시면 됩니다.

  • CNS-11643, HKSCS지원: 파이썬에 들어가 있는 CJKCodecs는 지금 널리 쓰이는 CJK 인코딩 중에 EUC-TW, ISO2022-CN같은 CNS-11643을 사용하는 인코딩들과 HKSCS의 지원이 빠져있습니다. 잠재적으로 대만과 홍콩 사용자들에게 문제가 될 수 있어서, 언젠가는 지원을 추가해야합니다. 이쪽 인코딩 정보에 대해서도 ICU 소스에 자세히 나와있습니다.

  • SCSU 코덱: 파이썬에서는 아직 [WWW]표준 유니코드 압축 (Standard Compression Scheme for Unicode)을 지원하지 않습니다. 아무래도 UTF-8나 16보다 용량이 훨씬 적게 나오기 때문에, 쓸모가 많습니다~ SCSU도 ICU에 X11라이선스로 된 C 소스가 있습니다.

  • UTF-8 코덱 StreamReader.readline 수정: 현재 파이썬 UTF-8, UTF-7코덱의 StreamReader.readline은 전혀 제대로 동작하지 않는 상태입니다. 그런데, 딱히 깨끗한 해결책이 없기때문에 어쩔 수 없이 그냥 놓인 상태인데, 파이썬 코드로 10줄 내외이기때문에, 한번 뛰어들어볼 만 합니다. :)

  • sre모듈 C로 번역: sre모듈 중 일부는 굉장히 속도가 요구되는 부분임에도 불구하고 현재 파이썬으로 구현되어있어서 C로 번역하자는 여론이 어느정도 조성되어있는 상태입니다. 파이썬 소스 코드가 311줄정도이기 때문에, 이것과 기존에 C로 구현된 _sre를 합쳐서 한개의 모듈로 만들면 속도 상 많은 이익을 얻을 수 있습니다.

  • repr, sys.displayhook 국제화: 한/중/일 사람이 파이썬에 입문할 때 가장 헤메는 부분 중의 하나인 “리스트 속에 들어간 한글 제대로 안 보이는 문제”를 해결하는 원초적인 방법입니다. displayhook은 repr에 어느정도 의존하기 때문에, repr만 인코딩을 지원하도록만 수정해주면 됩니다. 그런데, 파이썬 내부의 tp_repr은 인코딩 정보를 전혀 받지 않기 때문에, 하위 호환성을 위해서는 tp_richrepr등의 이름으로 객체에 인코딩을 받아서 인코딩에 맞는 정보를 리턴해 주는 가공이 필요합니다.

  • MinGW 지원: 파이썬 2.4부터는 VC 7.1을 기준으로 윈도우 빌드가 바뀝니다. 아직 MinGW에서 파이썬을 빌드하려면 아주 어려운 수동 작업을 몇몇 거쳐야하는데, 이를 깔끔하게 정리해서 메인으로 들여오면 아주 멋지겠죠~

13 thoughts on “Junior Python Hackers’ List

  1. 이런 것들을 할 수 있다면 이미 ‘주니어’라고 보기는 힘들지 않나요? 이정도는 해야 주니어 소리라도 듣는 거였나.. 전 아직 걸음마도 못 뗐어요.

  2. 으음.. Junior/Senior로 구분하면 Senior가 되려면 Guido나 Tim, Martin 정도는 돼야하지 않을까요.. 흐흐;; 물론 저도 junior.. (또는 journeyer) =3

Leave a Comment