퍼키의 파이썬 / FreeBSD 이야기들~
Last checked about 1 hour ago.
1 person has subscribed to this feed.
post frequency (last month)
PostRank™
From OpenLook :: 이야기, 2 days ago,
0 comments
저는 논문 관리를 Papers로 하고 있습니다. 순전히 이 프로그램 때문에 맥을 사는 사람이 있을 정도로 정확하게 타게팅을 해서 나온 놈이라 정말 편리합니다. 다만 DevonThink같이 정보를 자동으로 모아서 못 보는 패턴까지 파악하게 해 주는 기능이 많이 아쉬운데요. 그래서 갑자기 자주 보는 저자들의 PubMed 자동 알리미 설정을 한 번 해 볼까하고 저자를 생각해 봤는데, 아무래도 빼먹은 게 있을 것 같아서 Papers에 등록해 놓은 논문 전체에서 가장 많이 쓴 사람들을 찾아봤습니다.
소스코드 - 다행히도 CSV 출력을 지원해서 BibTex 파싱 같은 것은 안 해도 됐고요. 이름은 중간이름을 간혹 생략하는 경우도 있어서 그냥 성과 이름 첫 글자만 가지고 비교를 했습니다. 하는 김에 가장 많이 보는 잡지 이름도 출력했습니다. 결과를 보니까 오! 간단하게 알리미 설정할 사람들 목록이 나왔습니다. :)
제 상위 저자, 잡지는 이렇게 나오는군요.
===== Authors ===== 1 21 David P Bartel 2 18 Gregory J Hannon 3 11 Eric C Lai 4 11 Thomas Tuschl 5 10 Nikolaus Rajewsky 6 10 Alexander Stark 7 10 Alexei A Aravin ===== Journals ===== 1 96 Nature 2 89 Science 3 49 Proceedings of the National Academy of Sciences 4 48 Bioinformatics 5 40 Cell 6 39 Nucleic Acids Research 7 36 Genome Research 8 36 Nature biotechnology 9 31 PLoS Computational Biology 10 30 Nature Genetics
여러분의 Papers 책꽂이는 누가 많이 차지하고 있나요!
From OpenLook :: 이야기, 15 days ago,
0 comments
파이썬 역사상 가장 큰 개혁인 3.0이 발표된 지 이제 한 달이 되어 갑니다. 이번 업데이트는 워낙 변한 것이 많아서 파이썬 개발팀 내부에서도 실제 개발에 적용되려면 2년은 걸릴 것으로 보고 있는데요. 그래서 중간 징검다리로 파이썬 2.6이 3.0을 전후로 발표되었습니다. 2.6에는 3.0 대비에 대한 기능이 많이 들어갔는데, 이 부분만 간단하게 맛보기로 소개해 드립니다~
파이썬 2.6에서는 3.0에 대비하는 개발자의 편의를 위해서 -3 옵션을 지원합니다. 파이썬을 띄울 때 -3 옵션을 주면 3.0 호환성 경고가 뜹니다. 예를 들면 이렇게요~
cysteine(perky):~% python2.6 -3 Python 2.6.1 (r261:67515, Dec 6 2008, 18:40:24) [GCC 4.2.1 20070719 [FreeBSD]] on freebsd7 >>> `1` <stdin>:1: SyntaxWarning: backquote not supported in 3.x; use repr() '1' >>> reduce(lambda x, y: x + ',' + y, 'hehe') __main__:1: DeprecationWarning: reduce() not supported in 3.x; use functools.reduce() 'h,e,h,e' >>> {'egg': None}.has_key('spam') __main__:1: DeprecationWarning: dict.has_key() not supported in 3.x; use the in operator False
이렇게 파이썬 3.0에서 없어지면서 대체할 수 있는 것을 쓰면 경고가 뜹니다.
옵션으로 주지 않고 프로그램 안에서 옵션을 넣어준 것 처럼 하려면
sys.py3kwarning 을 True로 설정해 주면 됩니다. 프로그램 안에서는 sys.py3kwarning을 보면
-3이 설정되었는지 알 수 있지만, 파이썬이 뜨고 나서는 바꿀 수 없습니다.
파이썬 3.0에서 새로 생기거나 동작이 바뀌는 빌트인 함수를 2.6에서 미리 쓸 수 있습니다. 그냥 3.0을 바로 쓰는 것과 무슨 차이냐 하면, 기존 2.x용으로 개발된 프로그램 안에서도 모듈 하나 안에서만 선택적으로 빌트인 함수를 3.0 것으로 바꿔서 3.0인 것처럼 쓸 수 있는 것이죠. 하나씩 이렇게 3.0용으로 바꾸다보면 돌아가는 상태를 유지한 채로 2.x에서 3.0용으로 부드럽게 넘어갈 수도 있고요~
future_builtins 모듈이 파이썬 3.0 빌트인 함수를 제공합니다.
>>> from future_builtins import * >>> map(int, '12345') # 파이썬 3에서 이터레이터로 바뀌는 map <itertools.imap object at 0x833deec> >>> _.next() 1 >>> ascii('한') # 기존의 repr()을 대체하는 ascii() "'\\xed\\x95\\x9c'"
파이썬 3.0에서 바뀌는 print나 유니코드 문자열, 바이트 문자열 같은 것들을 모듈 단위로 미리 쓸 수도 있습니다. 마찬가지로 부분 부분 대처를 해서 3.0용으로 부드럽게 넘어갈 수 있겠죠.
>>> ('산타', len('산타')) ('\xec\x82\xb0\xed\x83\x80', 6) >>> from __future__ import unicode_literals >>> '산타', len('산타') (u'\uc0b0\ud0c0', 2)
>>> print('한글', 1) (u'\ud55c\uae00', 1) >>> from __future__ import print_function >>> print('한글', 1) 한글 1 None
어때요! 한 번 해보고 싶으시죠!
다음에는 파이썬 3.0 호환성과 직접적인 관련은 없는 2.6의 새로운 기능을 소개해 드리겠습니다~
From OpenLook :: 이야기, 28 days ago,
0 comments
종종 파이썬에 대한 평을 인터넷에서 한 번씩 검색해 보는데요. 많은 분들이 가장 많이 싫어하는 것은 뭐니뭐니 해도 "들여쓰기 강제"겠죠. 뭐 이거야 취향 문제라 어쩔 수 없는 것이고. 사실 파이썬 사용자들 중에서 "들여쓰기 강제"를 좋아하는 사람이 많기 때문에 파이썬의 원래 목적에도 더 맞다고 생각되고... ^.^;
그에 못지않게 자주 지적되는 것이, 객체 안에서 꼭 self.를 달아 줘야 된다는 것인데요. 저는 self.를 항상 명시적으로 붙이는 거야말로 파이썬의 참 매력이고, self가 없어지면 파이썬이 무너진다고 생각합니다! 특히 자바 프로그래머들이 파이썬의 self에 대해 많이 지적하는데, 자바와 파이썬 모두에서 영향력이 있는 브루스 엑켈도 self를 (메쏘드 선언에서만이라도) 없애보자 했는데, 그에 대한 응답으로 귀도가 불가능한 일이다라고 그 이유를 논리적으로 설명했었습니다.
브루스 엑켈의 제의가 선언에서만 없애자는 것이었기 때문에, 메쏘드 내부의 코드에서 없애면 안 되는 이유에 대해서는 귀도가 설명하지 않았는데요. 브루스 엑켈이 스스로 결론 내린 그 앞 부분의 문제 "self가 왜 있어야 하냐!" 그 이유에 대해서 좀 설명해서 자바 프로그래머 분들이 파이썬을 좀 더 이해할 수 있도록 도와볼까 합니다.
파이썬에서 self가 붙게 된 역사적인 이유는 파이썬의 클래스 내 메쏘드는 기본적으로 외부에 독립되어 있는 함수에 껍데기를 씌운 것이기 때문입니다. 자바는 아예 독립 함수가 없고, 다른 언어에서는 대체로 독립된 함수들과 메쏘드는 다른 취급을 받는데, 파이썬에서는 그냥 함수를 메쏘드로 편입시켜서 쓸 수도 있고, 둘을 비슷한 방법으로 바꿔서 다룰 수 있습니다. 예를 들면 이런 코드가 가능하겠죠.
def egg(self): print(self.a) class A(object): def __init__(self, a): self.a = a egg = egg A('wow').egg()
밖에서 선언된 함수를 클래스 정의할 때 메쏘드로 끌어들인 것이죠. 메타클래스를 쓴다면 더 동적으로 해 버릴 수도 있습니다. 도대체 이런 코드를 뭐에 쓰냐! 하는 의문을 가지실 수도 있는데요. 의외로 이런 기술이 많이 쓰입니다. egg함수를 C로 구현된 확장모듈에서 끌여들일 수도 있고요. egg만 사용자가 구현할 수 있도록 노출시켜서 외부 모듈에서 불러올 수도 있고요. 심지어 R이나 .NET같은 브릿지에서 다른 언어로 구현된 것을 쓸 수도 있습니다. 메쏘드가 결국 함수기반이라는 것은 생각보다 강력한 개념으로, __로 시작하는 내부 속성을 쓰면 더욱 희한한 것도 제어할 수 있게 되고, 클래스를 안 쓴 코드와 클래스를 쓰는 코드 사이를 넘나들거나 점진적으로 변경할 때 아주 쓸모가 있습니다.
파이썬에서 instance.method(A, B) 는 class.method(instance, A, B) 와 같은 역할을 합니다. 이것은 함수가 메쏘드가 된 얘기 외에도, 다중상속을 받았거나 이름이 중복되는 메쏘드를 부를 때 쓰이기도 하고, 다양하게 상속받은 하위 인스턴스들을 명시적으로 한 메쏘드에게 콕 찝어 줄 때도 쓰이고, 이 규칙 하나가 수많은 모호함을 해결해 줍니다. 그래서 이 일관성이 문법 전반에 계속 흐르고 있습니다.
그렇다면 그냥 함수는 함수로 쓰고 메쏘드는 메쏘드로 쓰고 같은 데서 상속받으면 비슷한 인터페이스가 나올 수 있지 않겠느냐 하는 의문이 있을 수도 있습니다. self의 또 다른 존재 이유로 파이썬을 파이썬으로 만드는 가장 중요한 특징인 "네임스페이스"가 등장합니다.
"네임스페이스"는 파이썬에서 변수를 담아두는 공간으로, 원래는 로컬, 모듈 전체, 빌트인 세 가지 네임스페이스를 찾도록 되어 있다가, 파이썬 2.1부터 상위에 싸여있는 것들도 찾도록 돼 있습니다. 이해를 돕기 위해 예를 들어드리면
A = 1 def X(): B = 1 def Y(): C = 1 print(A) D = 1
이런 파일이 있다면 A는 모듈 전체, 나머지는 로컬에 들어갑니다. 그런데 Y()의 입장에서 C는 로컬인데, B와 D는 자기 로컬은 아니면서 상위 네임스페이스에 속한 변수들이 됩니다. 따라서, 파이썬 2.1부터는 모듈 전체로 가기 전에 B, D가 있는 X영역부터 찾습니다. 파이썬은 변수 선언을 하지 않기 때문에, 변수의 네임스페이스는 대입이 한 번이라도 일어난 최소의 네임스페이스에 영역을 잡는데요. 위에서 C는 Y()안에서 대입이 있었기 때문에 Y()안의 네임스페이스에 잡히고, B, D는 X()에서 대입이 있기 때문에 X()의 네임스페이스에 잡힙니다. 그런데, A는 대입이 모듈에서만 있고, X()에는 없어서 X() 로컬이 아니라 글로벌로 잡힙니다. 이런 네임스페이스를 바꿔주는 키워드가 원래부터 지원되는 global과 파이썬 3.0부터 지원되는 nonlocal이 있습니다. 이건 따로 관심이 있으시면 매뉴얼을 보시면 되겠습니다. +_+
여기서 갑자기 웬 네임스페이스 설명을 self하는 데 하느냐! 하면..
self.을 생략하게되면 로컬 네임스페이스와 인스턴스 네임스페이스가 섞이게 된다는 것입니다. 즉 클래스에서 x = 1하면 이게 로컬로 갈 지, 인스턴스로 갈지 모호해 지는거죠. 자바나 C++은 명시적으로 선언을 하기 때문에 헷갈리지 않지만, 파이썬은 선언을 않기에 명시적으로 쓸 필요가 있죠. 그래서 펄이나 루비에서는 따로 @나 !같은 기호를 도입해서 쓰는데.. 파이썬의 원칙 중 매우 중요한 것으로 "연산자 너무 늘리지 말자"가 있어서 고려 대상은 아닙니다. self.라고 쓰면 파이썬 문법을 모르는 사람도 아 이게 뭐구나! 하고 추측을 할 수 있지만 @같은 걸 붙여놓으면, 문법책을 참조하거나 고난도의 눈치를 보지 않고서는 인스턴스 네임스페이스인지, 클래스 네임스페이스인지, 글로벌 네임스페이스인지 알기가 힘들겠죠.
그럼 또 제기될 수 있는 의문! 대입은 그럼 명시적으로 하고, 쓸 때만 인스턴스와 클래스도 한 번 타 주면 되지 않겠니? 하고 소극적인 부탁을 해 볼 수도 있겠는데요. 읽는 방법, 쓰는 방법이 다른 건 아무래도 파이썬 원칙에는 맞지 않고, 속도도 많이 느려집니다.
모호한 것을 보면, 추측할 수 있을 거라는 유혹은 단호하게 거절한다. (In the face of ambiguity, refuse the temptation to guess.) -- 팀 피터스, 파이썬의 선(Zen)
From OpenLook :: 이야기, 1 month ago,
0 comments
제가 좋아하는 다큐멘터리 3일 (KBS)에 보면 끝날 때 주제에 대한 사실을 전달하면서도 신선한 반전을 주는 간단한 숫자 몇 가지가 나옵니다. 예를 들면 "추석택배전쟁 72시간"에서는 택배 배송에 관련된 여러 사람들의 고생을 간접체험하는 구성을 하고, 끝에는 "2007년 택배업 종사자는 전년 대비 50% 급증했다."라고 보여줬습니다. 그래서 오픈룩도 그냥 갑자기 몇 가지 간단한 숫자로 정리해 봅니다. 크크; -o-
From OpenLook :: 이야기, 1 month ago,
0 comments
작년에 구글이 투자한 것으로 주목 받았던 23andMe가 올해 타임즈가 2008년 최고의 발명품으로까지 선정할 정도로 대박을 치면서 단일염기다형성(SNP)이라는 말이 더 이상 유전학 전문 용어가 아니라 "돌연변이"처럼 일반 상식에 들어가게 될 무렵... 유럽인들의 유전자 조사를 해 봤더니 지리적 관계와 신기할 정도로 일치하더라!하는 논문이 블로그계에서 한동안 인기를 끌었습니다. 이 논문에서 재미있었던 것은, 단지 유전자 변이 관의 관계만 가지고도 거의 지도를 재현할 수 있을 정도로 지리적 관계가 나왔다는 것도 있었고요. 핀란드가 유전적으로 유럽에서 뚝 떨어져 있다는 사실도 역사를 그대로 재현하듯 나왔다는 것입니다.
세계적으로 유럽 뿐만 아니라 인간 유전적 다형성 연구(HGDP), 세계 주요 인구의 유전적 다형성(HapMap) 등의 대형 프로젝트가 꾸준히 SNP 데이터를 수집해서 가공하고 연구하고 있습니다. 한국인은 앞의 두 프로젝트에서 여러가지 이유로 빠졌는데, 한국에서도 국립보건원과 생명공학연구원/대학 컨소시움에서 독립적으로 한국인의 단일염기다형성 데이터베이스를 구축해서 올해부터 뭔가를 발표하기 시작했습니다. 한편으로는, 며칠 전에 최초로 한국인 유전체 서열이 공개되어서 떠들썩 했는데요. 이제 한국에서도 외국 논문에서만 봤던 쌔끈한 그래프들을 직접 만들어 볼 수 있는 날이 점점 다가오고 있습니다!
그러던 참에, 어제 온라인 오픈액세스 저널인 PLoS ONE에 동아시아인의 유전적 구조에 관한 논문이 발표됐는데요. 앞에서 소개했던 유럽에서의 조사를 동아시아에서 재현한 것입니다. 한국, 일본, 중국 뿐만 아니라 태국, 필리핀, 베트남, 캄보디아 등등 많은 국가를 상대로 했는데, 실제로 이 연구에서 직접 만든 SNP 데이터는 한국인과 미국에 사는 아시아인 밖에 없고, 나머지는 다 앞에서 언급했던 HGDP와 HapMap에서 가져왔네요. 한국인은 아직 KHapMap이 발표되기 전에 시작했는지 직접 21명 피를 한국에서 뽑아갔다고 하는군요~ (요새 환율로 60만원 정도 하는 걸 공짜로... 아.. 부럽다.. ㅡㅠㅡ)
왼쪽은 그냥 동아시아 지도가 가물가물하는 사람을 위해 그려놓은 (;;) 것이고, 오른쪽은 유전정보의 관계만을 사용해서 PCA로 두 가지 기준 수치로 2차원으로 표현한 것입니다. 잘 비교해 보면 기가 막히게도 지리적 관계와 유전적 관계가 맞아떨어집니다! 이 조사에서 나타난 결과로는 한국인은 중국 한족과 일본인의 중간 쯤 되는데, 일본과 훨씬 더 가깝게 나타났다고 합니다. 그리고 시베리아 북쪽의 사하공화국에 사는 야쿠트족은 원래 역사에서 중앙 아시아에서 온 민족답게, 대부분 나라에서 동중국이 기원이라고 추측되는 가운데 야쿠트족만 따로 떨어져 나타났습니다.
이런 연구에서 실용적으로(?) 쓰려고 만드는 몇 가지 도출 정보로는 "유전변이 몇 개를 봐야 어느 나라 출신인지 알 수 있나?" 같은 게 있는데요. 사실 진짜 실용적이라기보다는, 23andMe같이 개인 유전체학으로 사업하는 데서 고객들의 흥미를 끌기 위한 서비스로 이것보다 재미있는 게 없죠. 그래서 이 논문에서도 그런 연구를 했는데, 한국인과 일본인을 구분하려면 5000개 정도 SNP를 보면 비교적 정확하게 구분할 수 있었다고 하고요. 논문에서는 미국에 사는 중국인들이 조상알아보기마커 1500개를 활용하면 싸게 자기 유전적 조상을 알아볼 수 있지 않겠냐 하긴 하는데.. 사실 유럽인들하고 달리 아시아 출신들은 자기 조상이 어디서 왔는지는 워낙 잘 알아서 새삼 신기할 것도 없지 않을까요? ;;
그나저나 어서 중국 김가장에 사는 사람들과 경주 김씨 종가 남자들 침을 받아다가 23andMe에 보내서 진짜 경주 김씨가 흉노족 후예인지 알아봐서 미스터리를 풀어주세요!
From OpenLook :: 이야기, 1 month ago,
0 comments
며칠 전에 올린 파이썬 3.0 발표 소식에 까리용님께서 만화 속의 호환성 버그를 발견하셔서 3.0 지원 버전으로 만화를 고쳐봤습니다.
원본은 xkcd에서 온 것이고, 원라이선스는 CC 원저자표시-비상업적사용 2.5입니다.
혹시 손글씨 잘 쓰시는 분 있으시면 한국어판 번역도 하나 만들면 좋겠네요~ xkcd는 손글씨모양 글꼴을 쓰지 않고 모두 일일이 쓰는 게 매력이라, 역시 이것도 손글씨를 써서 입혀야 할 것 같아서.. :)
From OpenLook :: 이야기, 1 month ago,
0 comments
드디어 예정대로 파이썬 3.0 정식 버전이 나왔습니다.
파이썬 3.0은 그동안 이 블로그에서 꾸준히 소개해 와서 특별히 또 소개하지는 않고요. (2007년 3월 1일, 2007년 8월 31일, 2008년 8월 1일) 자세한 내용은 파이썬 3.0에는 뭐가 새로 나왔나!를 참조하시면 되겠습니다~
릴리스 안내문에서 언급한 간단한 바뀐점 목록을 번역해서 옮겨적어 봅니다.
파이썬 3.0 새 소식이 나오면 가장 많이 궁금해 하실 부분이, "지금 파이썬을 배우려면 3.0을 배워야 하냐 2.x를 배워야 하냐"하고, "프로그램이 다 2.x용으로 돼 있는데 3.0으로 어떻게 넘어가냐" 일텐데요.
우선 1번) 파이썬 3.0은 하위호환성을 상당 부분 포기했기 때문에, 당장은 업계에서 2.x를 계속 쓰게 될 것입니다. 파이썬 2.x와 3.0이 겉보기에는 문법 차이가 좀 있는 것처럼 보이지만, 파이썬의 기본 이념은 그대로 가지고 있기 때문에 우선 파이썬 2.x를 배운 다음에 3.0 문법을 나중에 배우는 것은 별 일이 아닙니다. 지금 배운다면 2.x를 배우고 쓰시다가, 좀 익숙해진 다음에 3.0에서 다른 게 뭔지 한 번 봐 두시면 됩니다.
2번) 파이썬 2에서 3으로 넘어가는 것은 거의 모든 파이썬 프로그램이 다 2~3년 안에는 겪어야 할 일이기 때문에, 미리 파이썬 3.0을 디자인하면서 자동으로 문법을 변환할 수 있을 것인가! 같은 것까지도 고려 대상이 됐습니다. 그래서 파이썬 3.0에는 2to3이라는 프로그램이 들어있는데, 이걸 사용하면 웬만한 것들은 대부분 자동으로 파이썬 3.0용 프로그램으로 변신할 수 있습니다. 그리고, 파이썬 2.6이 파이썬 3.0을 대비하기 위한 중간 계단으로 같이 나왔습니다. 파이썬 2.6을 쓰시면 파이썬 3.0에 아주 잘 대비된 프로그램을 만들 수 있습니다. 2.6에도 2to3이 같이 들어 있습니다.
참, 그리고 파이썬 3.0 최종판에는 아쉽게도 텔레파시 지원은 예정과 다르게 빠졌지만, 반중력 비행 기능이 생겼습니다. x로 시작하는 모 사이트에 따르면(!) 파이썬에서 import antigravity를 했더니 날 수 있었다고 합니다! (한 번 해 보세요!)
From OpenLook :: 이야기, 1 month ago,
0 comments
저희 학교는 등록금이 상당 부분 세금에서 지원되는 대신, 모든 학기에 뭐든 조교를 하도록 돼 있습니다. 학과 사무실 조교 같은 자잘한 일 도와주는 조교부터 시작해서, 슈퍼컴 관리 조교, BK21 서류 관리 조교도 있지만 대부분은 수업을 돕는 학과목 조교를 합니다. 저도 지금까지 쭉 운도 없이 계속 학과목 조교를 해왔습니다. 지난 학기까지는 쭉 과학 기초과목을 해서 별로 특별한 것은 없었는데, 이번 학기에는 전산, 전자과에서 누구나 듣는 기초과목에다가 바이오를 짬뽕한 "바이오데이터구조"라는 과목을 맡았는데요. 과에서 2학년 필수과목이다보니 보통 저희 과 과목은 수강생이 많아도 10명 정도인데, 이 과목은 처음엔 수강생이 60명이 넘었습니다. (물론 이 안에는 학점을 쉽게 따려고 오는 전산과, 전자과 고학년들도 있긴 하죠. :)
처음 맡는 프로그래밍 관련 과목이라, 제가 학부 때 느꼈던 "조교가 이런 걸 하면 무척 좋지 않을까!"를 한 번 실행에 옮겨 보기로 했습니다. 사실 중간고사증후군보다 졸업논문증후군이 훨씬 심하죠 --;;
제가 맡은 부분은 학기 프로젝트 관리/채점 부분이라서, 이런 것들을 한 번 생각해 봤는데요.
그래서 프로젝트를 시작할 무렵에는 우선 가이드라인을 제시했습니다. 원래 내용은 꽤 길지만 요약하면
이렇게 시작하고 나중에 오는 질문에는 가급적이면 질문 자체에 대한 직접적인 답보다는, 왜 그렇게 되는지, 실제 프로젝트의 상황에서 어떤 경우가 있어서 그런 결정을 해야하는지 같은 것들을 가급적이면 같이 썼는데, 사실 처음 배우는 프로그래밍 과목에서 하기로는 좀 어려운 프로젝트다보니 제대로 전달이 잘 안 된 것 같아서 좀 아쉽기는 했습니다.
드디어 제출이 다가왔을 때는, 직접 내면 좀 번거로우니까 전자메일로 받기로 했는데요. 아무래도 전자메일에 큰 첨부파일을 보내다보면 사고도 많이 생기고 해서, 별도의 2가지 경로로 보낼 수 있게 메일 주소를 따로 2개를 마련해서 둘 다 보내도록 했습니다. 그리고, 그래도 혹시 또 메일은 알 수 없으니, 과목 홈페이지 게시판에 MD5 체크섬을 올리면 MD5 체크섬이 맞으면 나중에 제출해도 게시판에 올린 시간으로 인정하기로 했습니다. 그런데 정말로 한 학생이 5일 뒤에 메일이 안 갔냐고 자기 성적이 안 올라왔다고 그러는데, 메일이 유실됐는지 전혀 로그에서도 찾을 수 없는 일이 발생했습니다. 마침 게시판에 MD5 체크섬이 올라와 있어서 구원해 줄 수 있었죠.
결국 약간 늦은 학생도 있었지만 대부분 제출이 끝나고 채점을 했는데요. 역시 채점은 하다보면, 점수로만 표현하기는 좀 아쉬운 뭔가 그런 것이 있습니다. 그래서, 아예 성적표 사이트를 하나 만들어서, 각각의 개인의 제출물에 대한 피드백과 학생들의 부분별 상대적 위치를 알 수 있는 도표를 볼 수 있도록 했습니다. (실제 인물이 아니라 이 글에서 인용하려고 가상의 학번을 만들었습니다.)
피드백은 직접 일일이 쓰기는 좀 많아서, 세부항목별로 따로 Z-score를 계산해서 낮은 순서로 몇 개, 높은 순서로 몇 개를 추려서 "좀 더 열심히", "참 잘했어요" 아래에 코멘트를 자동으로 쓰게 했습니다. 뭐 그런대로 괜찮게 나오더군요. :) 하나 재미있는 것은, 웹서버 로그를 보니까, 자기 성적만 보고 가는 학생은 30% 정도 밖에 안 되고, 나머지는 친구 학번을 다 넣어보고 가더군요.;; (친구 관계 네트워크라도 그릴 수 있을 정도!)
이제 프로젝트가 끝나긴 했는데, 제가 맡은 부분이 기말고사가 또 남아있어서.. ㅡㅡ; 또 하려니 막막하네요 -ㅇ-; 그래도, 학생들이 그냥 조교라서 하는 아부도 많이 섞여있겠지만 제출하는 메일이나 게시판 댓글에서 도움이 많이 됐다, 좋은 경험을 할 수 있었다, 많은 것을 배울 수 있었다. 라고 해 줘서 무척 힘이 났습니다. 이제 졸업 준비를 해야하는데.. -ㅇ-;;
From OpenLook :: 이야기, 1 month ago,
0 comments
요즘 졸업논문 준비 한다고 괜히 하는 일 없이 마음만 바쁜데요. 오래 전 부터 그랬지만, 특히 미투를 쓴 이후로 짧은 글이 다 미투로 가서 오픈룩에는 글이 엄청 띄엄띄엄 올라오게 돼 버렸습니다. 을씨년스러운 정적이 흐를 정도였는데, 그래서 옆에 미투 글 목록을 갖다가 뿌려보기도 했지만, 역시 가운데 글이 없으니 영 썰렁하고, 종종 오시는 분들이 왜 글을 안 쓰냐! 가면 좀 볼 게 있어야 하지 않냐! 하기도 하셔서.. 결국은 미투를 오픈룩에 완전히 섞어버렸습니다.
섞는 방법은 보통 미투 -> 블로그 글 배달도 있긴 하지만, 이런 식으로 할 때는 RSS에도 미투를 반복하는 문제도 있고요. 미투하고 오픈룩에 쓰는 글은 종류가 달라서 대상이 다를 수 밖에 없기에, 블로그 글 배달 보다는 그냥 첫 페이지 표시에만 미투 글을 섞어서 보여주는 지금의 모양으로 만들었습니다. (오픈룩 RSS에는 앞으로도 제 미투 글은 섞여 들어가지 않습니다~)
이제 RSS 리더 안 쓰는 오픈룩 독자분들은 종종 놀러오시면 좀 덜 썰렁하게 보일 것 같아서 다행입니다. -ㅇ-;;
그런데, 미투가 아무나 댓글은 쓸 수 없으니, 미투 글에 댓글을 쓰시려면 가입하셔야 합니다. =3=3
From OpenLook :: 이야기, 1 month ago,
0 comments
스크립트에서 같은 작업을 많은 데이터에 반복할 때, 한 번 도는데 엄청나게 오래 걸리거나 다른 사이트 리소스를 쓰기 때문에 괜히 민폐를 안 끼치려고 앞 부분만 테스트하는 게 좋을 때가 많습니다. 한 번만 돌릴 때는 이렇게 보통..
for url in 엄청많은URL: f = urllib.urlopen(url) # 한 번에 확! 하기는 좀 귀찮은 작업을 한다 raise SystemExit # 여기서 그냥 1번만 돌고 종료
종종 첫 데이터는 엄청 단순해서 한 5개나 앞쪽 10개만 돌려보고 싶을 때, [:5]나 [:10]하면 좋겠죠. 그런데, 어떤 건 이터레이션은 되지만 이터레이션 자체가 자원을 많이 먹거나 민폐를 끼치거나 하는 경우가 있습니다. 그 때 뭐 제한하려면 enumerate같은 걸 써서 i >5 면 중단 이러면 되겠지만 역시 너무 순수해 보여서 지루하고 타이핑도 많아서 귀찮습니다. 그래서 제가 보통 쓰는 방법
cd = list('12345') for url in 엄청많은URL: # 다른 작업 cd.pop()
왠지 12345 일일이 써 주면 아! 다섯번 하는구나! 하는 필이 확 오고, 에러로 끝내주니까 아주 신납니다. :)
혹시 직접 쓰시는 재미있는 방법이 있으면 소개해 주세요~
From OpenLook :: 이야기, 2 months ago,
0 comments
서울에 있을 때는 이런 저런 행사를 많이 했는데 요즘 대전에 있다보니 영 근질근질해서, 가끔 이런 행사 하면 정말 재미있겠다 상상하며 졸곤(;;) 합니다. 어디 적어두는 습관이 없다보니 생각을 아무리 해 봐야 늘 남는 게 없는데요. 흐흐;; 그래서 최근에 생각났던 걸 함께 생각해 보기도 하고 스스로 안 까먹으려고 적어 놓아 봅니다.
제가 가장 좋아하는 TV 프로그램은 단연 KBS1 다큐멘터리 3일 입니다. 이 프로그램에선 어떤 장소나 사건을 주제로 3일 동안 같은 곳을 지키며 오가는 사람을 취재합니다. 강남역, 구로역 같은 사람 많이 다니는 지하철 역이 되기도 하고, 강남고속터미널이나 통도사, 동해의 어촌, 추석 특송 기간 동안의 택배 직원들 등등 생활을 밀접하게 다루다보니, 역에서 지나가는 사람들을 보며 저 사람들이 어디서 어디로 가고 어떤 일을 하고 어떤 생각을 하고 가족들과는 어떻게 지내고 어떤 게 행복한지 등이 늘 궁금해 했던 것을 조금이나마 엿볼 수 있게 해 줍니다. 특히 같은 자리에 3일을 쭉 있다보니, 면접보러 서울에 왔다가 다시 며칠 있다가 내려가는 사람, 자전거 여행하러 갔다가 2박 3일 여행하고 돌아오는 사람들의 전과 후를 모두 볼 수 있다보니 정말 재미있습니다. 한 편을 보면 마치 100명하고 술 마시면서 인생 사는 얘기를 하고 온 것 같은 기분이죠.
그래서 개발자도 이런 것들을 할 수 있지 않을까 생각해 봤는데요. 개발자라고 묶으면 왠지 뻔히 하루 종일 컴퓨터 보고 키보드만 칠 것 같지만, 알고보면 회의도 하고, 아이디어 만들기도 하고, 제안서도 쓰고, 싸우기도 하고, 몰래 만화도 보고, 여자친구와 메신저도 하고... 하는 일이나 회사 환경, 개인적인 환경에 따라 적지 않은 차이가 있습니다. 그냥 보면 다 똑같은 개발자의 실제 일하는 환경을 엿보면 고년차 개발자들끼리, 또는 갓 IT업계에 들어온 신입, 대학생, 고등학생 등등.. 추상적인 "이 쪽 전망이 어떻더라..." 보다 도움이 될 것 같아서요.
72시간 VJ들이 쫓아다니는 건 현실적으로 어려우니, 대충 타협해서 72시간 중에 종종 자기 모습이나 하는 일, 주변 환경을 사진으로 찍어서, 그 중 24장을 꼽아서 자기 생활에 대해 페차쿠차 형식으로 발표하는 것입니다! +_+ 자기 자리 자랑도 있을 것이고.. 몰래 회의 장면 같은 데서 이상한 동료 욕도 할 수 있고.. 어려웠던 문제 해결하는 과정을 무용담처럼 얘기할 수도 있고... 단편적인 생활 스케줄을 쫙 훑기보다는, 살아있는 진짜 3일처럼 당시의 생생한 연결된 이야기를 들으면 더욱 좋겠죠!
한국 IT게에서 비전통적 컨퍼런스를 상당히 일찍 시도했던 "KLDP CodeFest"에서는 초기에 계속 꾸준히 서울 인근에 사는 외국인 개발자들이 몇 명씩 참여했습니다. 지난 번 파이썬 페차쿠차는 진행 언어가 한국어였지만 한국어를 잘 하는 프랑스인 개발자가 한 분 참여해서 자리를 빛내주었습니다. 그 때 생각이 떠올랐는데요. 서울에 사는 외국인 개발자들과 또한 그들과 교류하고 싶은 한국인 개발자들이 소통하는 계기가 있으면 좋겠네요.
그래서 역시 지난 번 파이썬 페차쿠차와 마찬가지로 자기가 하는 일이나 한국에서 일하는 개발자로의 경험, 어려움, 팁 같은 것을 페차쿠차로 발표하는 자리가 있으면 촉진할 수 있는 좋은 기회가 되지 않을까 합니다. 아무래도 한국어에 서투른 개발자들도 많이 참가할 수 있도록 공식 언어도 영어로 지정해서 행사장에 누가 있어도 서로 말을 거는 데 주저하지 않을 수 있도록 하면 더욱 좋을 것 같습니다. (한국어를 너무 사랑하는 분들은 이 부분에서 거부감이 있을 수도 있겠지만, 현실적으로 취지를 살려서 한국어를 못하는 개발자를 배제하지 않으려면 이 방법이 최선인 듯 하네요.)
예전에 언젠가 한 번 제 블로그에 올린 적 있는 생각이기도 한데요. 앞의 "구보씨"와 마찬가지로 다양한 분야에서 일하는 개발자들이 모여서 경험을 나누고 이해를 넓히는 방법으로 장난감 문제를 쓰는 방법을 생각해 봤습니다. 우선 자기 개발 분야에서 아주 간단해서 잘 모르는 사람도 10분 안에 풀 수 있는 장난감 문제를 1개 준비해 옵니다. 예를 들어 게임 프로그래머라면 2D 좌표계에서 충돌 검사를 하는 문제를 가져온다거나, 자판기에 들어가는 펌웨어를 만드는 프로그래머라면 자판기에서 돈 넣으면 잔돈 계산하는 문제, 이미지 처리를 주로 하는 프로그래머라면 간단한 껍데기를 채워넣어서 간단한 알고리즘으로 그림파일 외곽선을 보여주는 문제를 가져오는 등 최대한 자기 분야 특성은 살리지만 장난감 문제인 것을 가져 오면 되겠죠.
그래서 이 문제를 이제 잘 모르는 사람들끼리 무작위로 2명 씩 짝을 만들어서 공략합니다! 이제 그 뒤 부터는 예전에 코드레이스같은 곳에서 했던 형식이나 재미있게 할 수 있는 형식을 여러 가지 만들 수 있을 것 같네요. 채점은 아마도 각 문제를 출제한 사람이 뽑게? ^^;
그냥 최근 떠올랐던 생각 세 가지를 적어 봤는데요. 좀 다듬어서 해 볼 만한 것도 있을 것 같네요. 언제 기회가 되면 한 번 추진을!
From OpenLook :: 이야기, 2 months ago,
0 comments
10월 18일-19일 올림픽공원에서 한 거대 박하 축제 2008에 다녀 왔습니다. +_+_+_+_+
사실 GMF나 주최측인 mint paper도 전혀 모르고 있다가 Mocca가 한국에서 공연한다는 얘기를 듣고 GMF에 관심을 가지게 되었는데요. 그 뒤로 GMF에 출연하는 밴드들 노래를 듣다가 홀라당 빠져버려서 한 동안 전의를 불사르며 지내다 드디어 다녀왔습니다!!!! 아고 다리야!! 크크크;
전체 공연 팀은 50팀이 넘었지만, 병렬로 진행되고 이틀만 가다 보니, 몇몇 곳만 가게 됐는데, 저는 위 사진에 있는 11개 팀을 열심히 봤습니다. (윗 줄은 토요일, 아랫 줄은 일요일) 대부분 예습하면서 처음 들은 팀들이었지만, 거의 1달을 쥬크온 플레이리스트에 올려놓고 반복학습하고, 민트라디오를 듣다보니 마치 다들 고등학교 때 부터 좋아했던 것 같이 느껴지네요. ^^;;
전반적으로 일상에서는 팬을 찾기도 쉽지 않은 밴드들이, 축제장 안에서는 마치 아이돌처럼 사람들이 좋아하니 무척 흐뭇(;;)했고요. 대전에서 오랫동안 무료한 생활을 하다가 큰 축제를 가니 사람보는 재미에 푹 빠져서~ 거의 대전에서 한 200년 봐야 볼 수 있는 다양한 사람을 다 본 것 같네요. (GMF의 여성관객 비율은 국내 음악축제 중 거의 최고수준!)
▲ "라이너스의 담요" 공연 준비 중 (공연 중은 촬영이 금지;;)
특히 일요일 "라이너스의 담요", "Mocca" 공연은 장소도 호수를 배경으로 해서 대형 분수도 종종 뿜어주고 해서, 푹 빠져서 헤벌레 해서 정신을 놓고 보았습니다. 세상에나 세상에나!
다른 기대공연이었던 "페퍼톤스", "뎁"은 짧게들 끝나 아쉬워서 다음에 꼭 다른 데서 또 만나겠어요! 뎁♡♡
제가 원래 후기같은 것 쓰는데 많이 서투르니, 이만 줄이고 기억나는 말 소개.. (정확히 받아적은 것은 아님)
From OpenLook :: 이야기, 2 months ago,
0 comments
며칠 전에 올린 글에서 파이썬을 "지는 해"라고 표현했던 것이 많은 분들의 반향을 일으켰는데요~ 파이썬이 망해간다는 걸로 이해하시는 분들이 많아서, 의도를 명확하게 하려고 좀 부연 설명을 달아 봅니다.
"뜨는 해"인 언어들의 특징은 이런 게 있습니다.
반면에 "지는 해"인 언어들은 이런 게 있겠죠.
저는 이미 한국에서 파이썬이 적합한 분야에는 적절한 빈도로 사용되고 있다고 봅니다. SI나 시스템관리, 게임, 그래픽, 운영체제 같은 전통적인 컴퓨터 분야 뿐만 아니라, 과학계산, 기계공학, 생산관리, 음악, 아파트, 전화기 등등 수많은 분야에서 도입돼서 쓸만한 분야에서는 웬만한 개발자들은 "파이썬"을 한 번 쯤은 들어봤습니다. 이제 여기서 더 파이썬을 쓰는 곳이 늘어난다면, 그건 파이썬이 잘 해서라기 보다는 그냥 그 분야가 확장됐다거나 변화했다고 볼 수도 있을 정도입니다.
"지는 해"라고 "망해가는 언어"가 아니라, 이제 뜨는 과정이 어느 정도 됐으니 큰 고생 없이 쓸 수 있다는 것을 의도했습니다. 해는 대략 12시에 중천에 뜨지만, 사람들은 대부분 오후와 밤에 생활하지 않습니까? C는 벌써 20년째 지는 해인데도 여전히 많은 분야에서 건재하죠.
From OpenLook :: 이야기, 2 months ago,
0 comments
suapapa님께서 재미있는 걸 하셨기에 저도 import 해서 꽃별천지를!
>>> import LoveIn as l >>> def gbcj(name): ... return u"지꽃별천"[sum(l._getStrokeCnt(ch) for ch in name) % 4] ... >>> print gbcj(u'장혜식') 지
흑흑.. 지옥으로.. T_T
그렇다면.. "그 분"은..
>>> print gbcj(u'임수정') 별
아 이름을 개명해야겠어요
From OpenLook :: 이야기, 2 months ago,
0 comments
얼마 전에 파이썬 3.0으로 가는 길목으로 파이썬 2.6이 공개되었고, 파이썬 3.0 정식 발표가 임박해 있습니다. (현재 예정은 12월 3일)
오늘 드디어 FreeBSD 포트에도 파이썬 2.6과 3.0rc1을 넣었습니다. 아직 디폴트 버전으로 지정하지는 않았고, GNOME이나 KDE같은 주요 의존 포트들에서 대규모 빌드 테스트가 끝나면 올릴 예정입니다. 2.5 때는 사소한 문제가 엄청나게 발생해서 디폴트 되는데만 거의 3달 가까이 걸렸는데 2.6은 바뀐게 별로 없으니 금방 지나가리라 믿습니다;
그런데, 한국에서 파이썬을 "파이썬"이라고 부르게 된 계기를 말로 알려드린 적은 있었지만, 특별히 글로 쓴 적은 없는 것 같아서 3.0 백일기도 하는 마음으로 적어 봅니다. ㅎㅎ;
파이썬은 국립국어원의 외래어 표기법에 맞게 표기하면 "파이선"이라고 표기해야 맞습니다. 외래어 표기법에서는 영어를 한글로 적을 때는 된소리를 안 쓰기 때문인데요.
파이썬이 처음 한국에서 막 뜨려고 하던 2000년 초기에 한국에서 파이썬을 다루는 홈페이지는 광운대 이강성교수님과 당시 서울대에 계시던 이관수님의 홈페이지 밖에 없었습니다. 그 때 이 두 홈페이지에 다니는 사람들이 파이썬을 다양한 방법으로 불렀는데, "파이선", "파이던", "파이똔", "파이톤", "파이싼", "파이딴", "퓌톤", "피톤", "피쏜" 등등 부를 수 있는 조합은 거의 다 나오지 않을까 싶을 정도로 다양하게 불렀죠. 그러다가, 이강성교수님께서 운영하시는 파이썬정보광장 첫 모임이 드디어 2000년 4월 28일 저녁에 역삼동에서 강남대로 따라 양재동으로 가는 길에 있는 백두산이라는 고깃집에서 있었고, 그 자리에 참석했던 대략 20명 정도 되는 최초의 한국 뱀신족들이 파이썬을 "파이썬"으로 부르기로 합의합니다. (당시에 Guido van Rossum을 한글로 어떻게 표기할까에 대해서도 얘기를 했었는데, 이건 결론이 안 났습니다.)
우선, Python의 어원은 그리스어에서 나왔으니 "퓌톤"류의 표기를 좋아하는 의견들도 있었지만, 파이썬 언어 자체는 Monty Python에서 온 것이라 영국식 발음이 원천이고, 귀도도 미국에 살고 있으니 영어로 해야겠다하고 "퓌톤"을 버리게 되었고요. "파이선"이라는 표준 표기 대신 "썬"을 쓴 것은 "파이선"하면 너무 발음이 새고 좀 약해보여서 강하고 새로운 인상을 주자(?)하는 의미에서 "썬"으로 의견이 모아졌습니다.
결국 그렇게 한글 표기법을 정한 이후로, 이름 덕인지 2000~2001년 그 모임에 참석한 분들이 주요 프로그래밍 잡지 기자분들의 도움으로 파이썬 관련 연재를 쏟아내면서, C/C++과 자바 말고는 별 게 없던 지루한 프로그래밍 동네의 수요와 맞아 떨어져 급속도로 "해 본 적은 없지만 언젠가는 해 보고 싶은 언어"로 상당기간 수위권을 달렸고, 지금은 대안언어라고 부르기 민망한 "지는 해" 쪽에 속하는 언어가 됐습니다. :-)