연도 1월 2월 3월 4월 5월 6월 7월 8월 9월 10월 11월 12월
2010 2 1 3 1
2009 3 2 1 1
2008 2 8 3 10 6 3 4 6 6 2 7
2007 3 13 10 2 4 4 6 2 3 4 3
2006 15 12 24 7 11 9 11 5 14 6 7 5
2005 5 8 17 14 13 16 10 12 11 17 9 13
2004 26 23 20 22 26 24 20 24 12 19 18 10
2003 4 27 38 32 35 36 29

2005년 12월

분산형 빌드팜 - buildbot

파이썬 메일링 리스트에 팀이 Zope 쪽에 구축한 빌드팜을 보여주면서 자동으로 파이썬 빌드/퇴행검사도 자동으로 할 수 있지 않겠느냐는 글을 올렸습니다. 그래서 빌드봇을 살펴봤는데, Twisted기반으로 구현되어 있는 파이썬 프로그램이군요. :)

프로그램이 여러 플랫폼에서 돌아가야하는 경우에 특히 마이너 플랫폼이 많으면 하나 고쳤다고 막 엉뚱한 플랫폼에서 깨지고 그런 경우가 비일비재합니다. 그래서 구축하는 것이 FreeBSD의 PointyHat이나 도시락 같은 빌드팜이나 테스트팜들인데, 충분한 클러스터를 갖추고 있는 곳이라면야 이렇게 할 수 있겠지만, 개인적으로 별의 별 플랫폼을 다 지원하려면 돈이 이만 저만 드는 것이 아닙니다.

그래서, buildbot에서는 슬레이브가 정규화된 프로토콜로 분산될 수 있는 형태로 구축이 되었는데, 마스터만 하나 구축해 놓으면, 슬레이브는 자기 시스템에 계정을 따로 만들어줄 필요 없이 직접 보고해서 중앙에 로그나 성공 여부 같은 것을 알 수 있도록 하는 구조로 되어있습니다. 그래서, 희한한 플랫폼을 쓰는 사람들이 울분을 토로하고 싶을 때 빌드봇을 돌려주면 좋을 것 같군요.. :)

Zope buildbotTwisted buildbot같은 것들이 웹에서 확인할 수 있는 형태로 공개되어 있습니다.

댓글 1 개 | 트랙백 0 개 (보낼곳) | 태그 python computer


이야 방학이다~

어제 드디어 마지막 기말고사와 보고서를 끝으로 새벽 2시에 방학이 시작됐습니다. 으헤헤헤.. :-) 복학하고 처음 학기라서 적응하기도 힘들고 여러모로 복잡한 한 학기였습니다. 그래서 회고해 보는 의미로 각 과목별로 소감을.. (순서는 가나다)

데이터베이스 (컴퓨터과학 전공선택, Fundamentals of Database Systems 4th - Elmasri, Navathe)

1999, 2000년에 이어 삼수강을 하는 과목입니다. -O-; 회사에서도 계속 데이터베이스를 썼기 때문에, 처음에는 별 문제가 없었습니다. 그런데.. 아.. ER 디자인 문제는 내가 아무리 옳다고 생각해도 조교가 옳다고 생각하지 않는 그런게 워낙 많아서 중간고사를 참 슬프게 봤고.. 프로젝트가 회사에서 하듯 막판 뒤집기로 하다보니 결국 못 뒤집고 끝나는 바람에.. 결과가 어떻게 나올지는 모르게 되었습니다. 으흑흑. 그렇지만, 데이터베이스의 이론적인 부분이나 지난 번 들을 때에는 머리아파서 그냥 딴짓만 했던 functional dependencies 부분을 정량적으로 분석하는 것이나 OLAP 이론 부분은 사실 회사에서 데이터베이스를 써도 잘 몰랐던 부분인데 왠지 뿌듯합니다. ^_^

디지털논리회로 (컴퓨터과학 전공선택, Contemporary Logic Design 2nd - Katz, Borriello)

이 과목도 재수강 -ㅇ-; 지난 번과 다른 이번학기에 새로온 교수님이 강의를 하셨습니다. 이번 학기에 처음으로 Katz책 2판이 등장했는데, 1판에 비해서 거의 100페이지 이상 줄어서 딱 들고 다니기 좋은 부피가 되었지만, 가격은 그대로 -ㅇ-; 하여간 이번에 이미 역사의 뒤안길로 사라진 기술 중 배울 필요도 없을 만한 것들이 다 빠져버려서 지난 번 들을 때 우어어어 그러면서 에너지를 낭비하고 있다는 기분을 없앨 수 있었습니다. (특히 JK-FF =.=) 오히려 이제 과목이 너무 쉬워져서 1학년 1학기 과목으로 해도 되겠다는 생각이.. :) 진도에 끌려서 막 시험 공부하기 급급한 것보다, 좀 여유를 가지고 과목 전체에 대한 시야를 확보하면서 공부하는 것이 중요한 것 같습니다.

인간과컴퓨터의상호작용 (인지과학 전공선택, Interaction Design - Preece, Rogers, Sharp)

이 과목은 동아리 후배들이랑 떼로 가서 들은 과목인데, 수강생 13명 정도 중에서 6명을 차지하고 있었으니, 뭔가 1학년 때처럼 같은 강의실에 있는 사람 대부분을 알았던 때가 생각나서 기분이 좋았습니다. -ㅇ-; 이 과목은 초기에 시간표가 휴일에 유독 많이 겹쳐서 배운 것도 없이 중간고사가 지나가서 상당히 위험을 느끼고 있었지만, 실제로 기업을 대상으로 하는 HCI 프로젝트를 많이 하고 있는 강사분의 얘기로 현실감 있게 배울 수 있었습니다. 그런데, 책은 너무 프로젝트가 대부분을 차지하고 있어서 소프트웨어 공학 책이 아닐까 싶을 정도였던게 아쉬웠습니다. Wizard of Oz는 앞으로 참 유용할 것 같아서 참 유익한 수업이었습니다. -O-

인간과컴퓨터의어울림 (교양선택, Human Computer Interaction 개론 - 김진우)

모든 수강생들이 6학점짜리 교양이라고 혀를 내둘렀던 아주 무서운 교양 과목이었습니다. 교수님께서 새로운 방법들을 굉장히 좋아하셔서 최초로 SF영화에 대한 주제 토론으로만 한 학기 전체를 했는데, 주제 토론에 자료로 제출하는 것에 대한 조모임 부담과 1학기 1번 있는 조발표에서의 과열경쟁으로 모두가 비명을 질렀습니다. :) 조발표가 처음에는 연극 동영상, 꽁트 동영상으로 시작하더니 중반쯤의 조들부터는 본격적으로 퍼포먼스가 등장하여 성대모사와 완벽한 TV프로그램 형식 채용이 시작되었습니다. 그 뒤로도 계속 퍼포먼스 중심의 조발표가 계속되어서 저희 조에서는 동영상 40개를 밤새서 편집해서 넣었는데 그런대로 무마가 되었습니다.;;

독특했던 수업과 부담 만큼이나 수업은 재미있어서, 수업이 있는 매주 월요일이 되면 아주 토론할 생각에 가슴이 설레고 잠을 설치고 그랬습니다. 흐흐.. 게다가, 요즘 학생들이 이렇게 똑똑한지 놀랐습니다. HCI, 심리, 컴퓨터, 과학철학 등에 대해서 심도깊은 토론이 끊이지가 않았고, 발표 내용에 대해서도 날카로운 지적과 의견들이 계속 나와서, 세상을 정신차리고 살아야 하겠다는 생각이 들게한 신선한 과목이었습니다.;; 이 과목은 독특하게도 과목 종강파티를 하자고 수업도 끝난 인트라넷 사이트에 다들.. ^.^;;

생화학 (생명공학 전공선택, Lehninger Principles of Biochemistry 4th - Nelson, Cox)

처음 듣는 생명공학 전공 과목이었습니다. 원래는 다른 두 과목을 같이 들을 계획이었는데, 둘 다 선수과목에 걸려서 첫 시간에 빼게 되었고, 지금 생각해보니 어찌나 다행인지.. 생화학은 컴과의 자료구조같이 생명계열의 기초가 되는 과목이다 보니까 모든 학생들이 어찌나 열심히 듣는지 강의실에서 전시간 끝나고 문을 딱 열고 들어가도 앞에서 5째줄 안에는 앉기가 힘들었습니다. (전 시간은 산업공학전공 과목이었는데, 생명공학과 애들은 이미 전 시간에 엉뚱한 수업을 들어가서 자리를 맡아놓고 있었던 것입니다. -.-) 하여간, 처음 듣는 타과 과목이라 아는 사람도 없고 유기화학이나 물리화학을 안 듣고 듣는 것이라 부담도 많이 되고 수업 따라가기도 무척 벅찼습니다. 그런데 생화학을 배우면서 세상에 정말 궁금해서 못참겠던 것들의 거의 반이 풀린 것 같은 기분이.. 한 번만 듣기에는 아깝구나! 하는 생각에.. 학점이 별로 안 나올 것 같네요 -ㅇ-;

강의하신 교수님은 인플루엔자가 전문이시라 그런지 바이러스 관련된 얘기만 나오면 조류독감에 맞춰서 아주 재미있는 설명을 곁들였는데, 좀 시간을 여유있게 한 3학기로 나눠서 딴얘기를 여유있게 들을 수 있는 수업이면 좋겠다는 생각도~ 그리고, 시험을 치면서 인상깊었던 것은, 다른 학생들이 다들 상상을 초월하게 열심히 외운다는 것이었습니다; 컴과 전공 하듯 해가지고는 어림도 없는.. 그래서 컴과 전공 과목들은 시험을 좀 못치더라도, 어떻게 공부하면 잘 치겠구나 감이 딱 왔었는데, 생화학은 과연 내가 아무리 공부해도 70점을 넘을 수 있을까하는 생각만 --;;;

현대인의생활영양 (교양선택)

아무래도 영양학 수업이면 영양소만 열심히 외우면 되지 않을까 하는 생각에 그냥 학기에 좀 여유를 주고자 신청을 했던 과목입니다. 그런데, 역시 전교적인 학업과열로 인해.. 교수님의 말씀이 "여러분들이 외우는 것은 정말 너무 잘 외워서, 제가 계속 너무 깊이 들어가는 경향이 있는데, 안 그러면 다 100점 맞아서 시험 문제를 낼 수가 없어요." 라고.. 뭐 그래도 그런대로 생화학의 도움으로 기초적인 것은 중복되다보니 쉽고나! 하고 시험을 쳤는데.. 알고보니 다른 애들도 다 생화학, 생리학을 배우는 과에서 왔더군요 -ㅇ-;;;

다음 학기를 위해!

다음학기에는 전공으로 가득 채워서 들어야하는데, 유기화학, 미생물학, 응용생화학, 물리화학, 세포생물학을 생각하고 있습니다. (겹치는 것 때문에 1~2개는 빼야하지만..) 다음 학기의 필승 전략으로는 열심히 공부하자 입니다. 선생님이 필기하시는 것 모두 적고 교과서 위주로.. 과외를 하지 않고.. (..)

그래서 저희 학교 생명공학과 05학번들한테 하고 싶은 말... "salsal plz. T_T"

댓글 11 개 | 트랙백 0 개 (보낼곳) | 태그 life


iPod에 파이썬 포팅되다

Linux on iPod 프로젝트에서 파이썬을 iPod에 포팅했다고 발표했네요.

단순히 파이썬 셸을 띄워주는 것 뿐만 아니라, 파이썬으로 된 프로그램을 메뉴에다가 등록해 놓고 들을 음악을 찾거나 게임을 넣어거나 등의 여러가지 프로그램을 교체하는 것으로도 쓸 수 있는 것 같네요. ^_^;;

댓글 5 개 | 트랙백 0 개 (보낼곳) | 태그 python


파이썬은 왜 빌트인 타입의 메쏘드를 못 바꾸는가

Io의 asString, asCharacter 같은 것 덕분에 앞뒤로 왔다갔다 하지 않고도 계속 쓸 수 있다는 점이 참 와닿아서, 파이썬에서는 그렇게 할 수 없을까 하다가, 전에 어떤 분이 파이썬에서 왜 베이스 타입에서는 메쏘드를 못 갈아치우냐 하시길래, "엇 안되나! (뻘쭘)" 했던 기억이 나서 좀 더 연구를 해 보았습니다. 으흐흐

파이썬의 타입 오브젝트의 플래그 중에 Py_TPFLAGS_HEAPTYPE이라는 것이 있는데 이것은 힙에 할당된 타입에만 들어가는 플래그라서, 즉, 런타임에 상속된 타입들은 이 플래그가 설정이 되지만, 컴파일할 때 스택에 할당된 타입 객체들은 이 플래그가 설정되어 있지 않아서 결국 "can't set attributes of built-in/extension type"라는 에러를 뱉어냅니다. 그런데, 파이썬은 타입 오브젝트가 비록 스택에 있긴 하지만 const가 아니기 때문에 실제로 딕셔너리도 할당을 하는 등 변조를 하고 gc로 관리까지 하고 있어서 변경한다고 문제가 생길 것은 없었습니다. 그래서 그 부분을 패치해서 실험해 보면, (Object/typeobject.c의 type_setattro함수의 첫 if 블럭을 주석처리)

>>> object.asInt = lambda x: int(x)
>>> object.size = lambda x: len(x)
>>> [1,2,3].size()
3
>>> 'hehehee'.size()
7
>>> '123'.asInt()
123

요렇게 잘 돌아갑니다~

과연.. 잘 되는데 왜 파이썬에서는 막아놓은 것일까! 그 이유는 메일링리스트를 한참 뒤져본 결과 귀도의 적극적인 의도로 막아놓은 것인데, 귀도의 설명에 따르면 빌트인 타입 오브젝트들은 여러 쓰레드에 걸친 것 같은 공유되는 컨텍스트에서 같이 사용되는 경우가 많기 때문에 문제를 발생시킬 소지가 높은 핵이라서 이런 걸 공식적으로 허용해 줄 수가 없다고 하네요. 뭔가 수긍이 가는 것 같기도 하면서도.. 파이썬의 다른 면들은 과연 그렇게 깨끗했나 의심이.. 흐흐흐.. -O- 하여간 약간 아쉽군요~

댓글 0 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking python


try-except와 try-finally의 결합

그동안 파이썬의 예외처리를 처음 접할 때 한번 쯤은 실수해 볼만한 게 바로 try-except 밑에 finally를 쓰는 것이었습니다. 예를 들어,

try:
     pass
except:
     pass
finally:
     pass

이렇게 쓰면 야속하게도 에러가 나버리고 항상 이렇게 써야했습니다.

try:
    try:
        pass
    except:
        pass
finally:
    pass

아이고 귀찮아라~~ 흐흐. 하여간 그동안 귀도가 finally가 except 절의 바깥에 있어야 except절에 확실히 걸린다는 것을 보여줄 수 있다고 안 된다고 하다가 올중반 쯤에 드디어 PEP-341을 승인하여서, except뒤에 항상 finally가 들어가고 except절도 finally에 걸리는 것으로 결정되었고, 드디어 어제 트렁크에 패치가 커밋되었습니다. 이제 자연스럽게 try-except-finally! ㅋㅋ; 그렇지만 try-finally-except로 쓰면 에러납니다~~

댓글 1 개 | 트랙백 0 개 (보낼곳) | 태그 python


파이썬 2.5의 해시함수

파이썬 2.5에 새로 들어온 표준 모듈로 hashlib이 있습니다. 원래는 md5와 sha 모듈이 따로 있었는데, 작년과 올해에 연달아서 md5와 sha1이 깨지면서 상위 해시를 추가하자는 요청에 지난 9월에 sha 상위 버전에 기존 해시 펑션을 합쳐서 hashlib이 추가되었습니다. 원래 모듈은 하위호환성으로 그대로 제공되고용~

그런데 굉장히 흥미로운 사건으로 어제 Rivest씨가 파이썬 개발자 메일링 리스트에 상위 해시펑션은 파이썬에 언제 넣어주냐고 물어보는 메일을 보낸 것입니다. 오오오오오!! 지난 번에 버그 보고하는 것도 보긴 했지만, 파이썬에 이렇게 관심이 많으실 줄이야! 으흐흐흐~~~ 뭔가 모르게 뿌듯하군요 으헤헤

하여간, hashlib의 사용법은 기존 다른 모듈에 있을 때와 다른 것은 그냥 모듈명이 흩어져 있던 것이 합쳐진 것 밖에 없습니다.

>>> import hashlib
>>> hashlib.md5('hehehe').hexdigest()
'ffe553694f5096471590343432359e02'
>>> hashlib.sha256('hehehe').hexdigest()
'f58262c8005bb64b8f99ec6083faf050c502d099d9929ae37ffed2fe1bb954fb'

댓글 4 개 | 트랙백 0 개 (보낼곳) | 태그 python


귀도가 구글로!

파이썬 프로젝트의 창시자이자 BDFL인 귀도 반 로섬이 오늘 구글에 입사했다는 발표를 했습니다. 앞으로 구글에서 일과시간의 50%를 파이썬 개발에 투자할 수 있고 그 대부분은 Python 3000을 위해서 쓸 것이라고 하네요. 무척 회사가 마음에 드는 모양입니다. :)

댓글 16 개 | 트랙백 3 개 (보낼곳) | 태그 python


파이썬에 ElementTree 통합~

세상에 이보다 쉬운 XML 파서/제너레이터가 있을까 하는 생각이 들 정도로 단순한 API를 제공해 주는 프레드릭 런드의 ElementTree가 드디어 파이썬에 통합되었습니다. 그동안 프레드릭의 고집 때문에 다른 사람들이 토론하기를 꺼리고 있었는데 마침 이번 토론에서는 프레드릭이 적극적으로 참여하게 돼서 이제 드디어 파이썬 안에도 쓰기 쉬운 XML 파서가 생겼습니다. 이히히. 귀도가 간단하게 "pythonic"이라고 해 줄 정도로 파이썬의 기본 이념에 충실한 것이 아닌가 싶군요~

>>> from xml.etree import ElementTree as et
>>> x = et.parse('snisni.blog.xml')
>>> items = (i for i in x.getroot()[0] if i.tag == 'item')
>>> for item in items:
...     print item.find('title').text
...     item.find('link').text = 'http://openlook.org/'
...
유자차
신축 기숙사!
첫 눈
쇼핑욕구
체지방률
>>> x.write('fixed.xml')
요렇게 하면 간단하게 xml 조작해서 쓰기까지! -- 파이썬 2.5부터 제공됩니다. :)

댓글 3 개 | 트랙백 0 개 (보낼곳) | 태그 python


*가 와일드카드로 쓰인 이유

*(U+002A)는 꽤 오래 전부터 와일드카드로 쓰이고 있었는데, 근래에 와서는 검색엔진이나 컴퓨터와 별 관계없는 수업에서도 *가 와일드 카드로 쓰는 것이 종종 목격이 되기 시작했습니다. (와!)

과연 그 유래는 무엇일까! 곰곰히 생각해 보고 이리 저리 생각해본 결과 *의 아스키 코드값에서 그 답을 찾을 수 있었습니다.

>>> ord('*')
42

*의 정체는 삶과 우주와 모든 것에 대한 답, 42였던 것!

(Don't panic! 너무 진지하게 생각하지 마세요 =3=33)

댓글 16 개 | 트랙백 1 개 (보낼곳) | 태그 computer thoughts


정적 링크한 darcs 패키지

그동안 버전 관리를 안 하고, 저자의 하드디스크를 rsync하는 방식으로 희한하게 배포를 해 왔던 Io가 엊그제부터 분산 버전 관리 시스템인 darcs를 쓰기 시작했습니다. (그동안 소스코드 버전관리를 안 한 이유는 여기에 적힌 까다로운 조건을 만족하는 것을 찾느라 그랬답니다.) darcs는 haskell로 작성되어 있고, 엄청나게 속도가 느린 것을 제외하면 기능상으로는 흠잡을 것 없이 아주 뛰어난 버전 관리 시스템인 것 같은데, 개인적으로 너무 불편한 것이 아직 ghc가 FreeBSD/amd64로 포팅이 안 되는 바람에, 제 컴퓨터에서는 쓸 수 없다는.. 그런 문제가 있었습니다. 흑흑 Y_Y 다들 커밋한거 받아보고서는 좋다~ 느리다~ 걱정된다~ 하고 있는데 amd64쓰는 죄로 소스도 못 받아보고 완전 왕따가 돼서..

그래서 amd64의 32비트 에뮬레이션 기능을 이용해 보려고 이렇게 저렇게 한참 노력해 봤지만, 동적 링킹에서는 도저히 어떻게 하는지 감이 잘 안 와서.. 결국은 포기하고 i386 머신에서 정적 링크를 해서 만든 패키지를 그냥 amd64에 까는 방법으로 했습니다. 그래서 결과로 나온 darcs-1.0.5.tbz 으흐흐.. 혹시 저처럼 또 왕따당하는 분이 있으실까봐 올려 봅니다. 그런데, ghc가 -static을 넣으면 정적 링크를 해 주는 것처럼 매뉴얼에는 써 있는데, 한참을 해 봐도 정적 링크를 안 해주더군요. 그래서 결국에는 ghc를 verbose mode로 돌려서 나오는 링크 커맨드를 그대로 쳐서 -static만 추가해서 하는 방법으로.. =.=

댓글 2 개 | 트랙백 0 개 (보낼곳) | 태그 freebsd


한글로 Io 프로그래밍

요즘 Io로 시간날 때 이것 저것 장난치며 놀고 있는데, 모든 것이 다 교체가 가능하다는 말에, 한글로 프로그래밍도 제법 가능할까 하는 생각이 들어서, 한번 쑥 바꿔봤습니다. 흐흐. 우선, 기본적으로 Io는 한글이 식별자로 쓰이지 못하기 때문에 패치를 해야하는데, IoLexer.c에서 글자 읽는 부분을 패치를 했습니다. (아직은 임시로 테스트해보기 위한 흉악한 패치입니다. =3)

그래서 이제 코드가 어떻게 보일지 무척 궁금해서 얼마 전에 코드 레이스 관객 문제를 Io로 풀었던 것을 고쳐 봤습니다. 우선, 원래의 Io코드는 이렇게 됐습니다. (창준형이 수정해 줌)

Sequence applyByGroup := method(msg,
    rechar := self at(0)
    repeats := 0
    self asMutable append(0) foreach(ch,
        if(rechar != ch,
            msg(rechar, repeats)
            repeats = 0; rechar = ch)
        repeats = repeats + 1
    )
)

current := "1"
(Lobby args at(0) asNumber - 1) repeatTimes(
    next := Sequence clone
    current applyByGroup(block(ch, repeats,
        next appendSeq(ch asCharacter, repeats asString)))
    current = next
)
current linePrint

이제 한글로 프로그래밍하려면, 기본 객체들이나 메쏘드들 이름을 일일이 바꾸는 초기화 루틴이 필요한데, 그 부분을 이렇게 넣어 봤습니다.

// 기본 오브젝트 메쏘드
슬롯 := getSlot("getSlot")
만약에 := 슬롯("if")
메쏘드 := 슬롯("method")
복사 := 슬롯("clone")
코드뭉치 := 슬롯("block")

// 오브젝트
연속열 := Sequence do(
    의 := 슬롯("at")
    추가 := 슬롯("append")
    하나씩 := 슬롯("foreach")
    숫자로 := 슬롯("asNumber")
    덧붙이기 := 슬롯("appendSeq")
    한줄로출력 := 슬롯("linePrint")
    변경가능하게 := 슬롯("asMutable")
)
입구 := Lobby do(
    인자 := 슬롯("args")
)
숫자 := Number do(
    번반복 := 슬롯("repeatTimes")
    글자로 := 슬롯("asCharacter")
    문자열로 := 슬롯("asString")
)
목록 := List do(
    의 := 슬롯("at")
)

// 지역객체
Locals 자신 := 메쏘드(self)

번역은 대충 일단 간단하게만.. 흐흐;; 그러면 위의 개미수열 소스가 이렇게 됩니다.

연속열 같은것끼리 := 메쏘드(추가명령,
    반복글자 := 자신 의(0)
    반복횟수 := 0
    자신 변경가능하게 추가(0) 하나씩(글자,
        만약에(반복글자 != 글자,
            추가명령(반복글자, 반복횟수)
            반복횟수 = 0; 반복글자 = 글자)
        반복횟수 = 반복횟수 + 1
    )
)

개미 := "1"
(입구 인자 의(0) 숫자로 - 1) 번반복(
    다음개미 := 연속열 복사
    개미 같은것끼리(코드뭉치(코드, 반복횟수,
        다음개미 덧붙이기(코드 글자로, 반복횟수 문자열로)))
    개미 = 다음개미
)
개미 한줄로출력

이히히. 아무래도 대/소문자 구분이 없다보니 약간 코드가독성이 떨어지는 것 같기도 하고.. 한데, 나름대로 교육용 언어로는 괜찮을 것 같기도 하고... 띄어써야 할 부분이 문법과 다른 게 좀 거시기하고... (애매하군요 -.-;;)

댓글 7 개 | 트랙백 0 개 (보낼곳) | 태그 happyhacking


오픈소스 커리큘럼이 있다면

오늘 SoftExpo 2005 부대행사로 열린 오픈소스 데스크탑 컨퍼런스의 부대행사로 (-.- 여러겹;;) OSS 커미터 원정대 모임이 있었습니다. 흐흐흐. 오랜만에 강남 가려니 어찌나 먼지;; 가급적이면 앞으로 강남 모임은 삼가해야하겠다는 생각이 흐흐;;

여러 얘기가 오가는 도중에, 오픈소스 프로젝트에 참가하는 방법을 대학 커리큘럼에서 가르치는 곳은 없냐는 얘기를 어느 분이 꺼내셔서 머디 먼 집에 돌아오는 길에 멍하니 생각해서 실라버스로 한번 만들어봤습니다. :) (시험 전날이라 별게 다 재미있다-.-)

과목명: 오픈소스개발실습

  • 기본정보: 3학점, 주2시간 오프라인 강의
  • 수강대상: 컴퓨터과학전공 2학년(2학기)
  • 수업목표 및 개요: 오픈소스 개발은 비교적 쉽게 참여할 수 있으면서도 여러가지 형태의 진보된 개발 방법을 습득하고 연습할 수 있는 좋은 기회이자, 흥미를 느끼고 지속적으로 기여하는 경우 많은 경험을 할 수 있다. 일반적인 오픈소스 프로젝트들에 여러 형태로 기여하고 참여할 수 있는 방법과 그에 필요한 여러가지 기술들을 소개한다. 그리고, 실제로 관심 있는 오픈소스 프로젝트에 참여하여 실습해본다.
  • 선수과목: 필수/없음, 권장/C프로그래밍,자료구조,시스템프로그래밍
  • 성적평가방법: 중간(실기) 25%, 과제 50%, 퀴즈1회 15%, 수업외 참여 10% (수업기간 내에 있었던 버그보고 등의 관련 메일/URL을 제출)
  • 교재 및 참고문헌: 주교재 없음
  • 수업 일정:
    • 1주 - 오픈소스의 정의와 소개, 개요
      - 수강신청 확인 및 변경
    • 2주 - 개발 과정 개요
      - 일반휴학 접수 마감
    • 3주 - 버전 컨트롤 시스템: CVS와 Subversion 실습
    • 4주 - 버그 트래킹 시스템: Bugzilla, Trac, GNATS, 메일로 보고하기 실습
    • 5주 - 오픈 소스 라이선스
    • 6주 - 오픈 소스의 특징적 버그 추적 기술, 패치 제출, 스타일의 관례
      - 학기 1/3선, 퀴즈
    • 7주 - More 관례: 빌드, 배포, 버전, 문서화, 기여자 참여 과정, 번역 등
    • 8주 - 중간고사: (실습 시험) 버그 추적, 패치 제출, follow-up
      - 학기 1/2선
    • 9주 - 사례연구: 주요 오픈소스 프로젝트 2가지, 소규모 오픈소스 프로젝트 2가지
      - 수강철회기간, 졸업신청 및 연기신청
    • 10주 - 프로젝트 시작 안내 및 진행 방법 설명
    • 11주 - 진행 상황 발표: 대상 프로젝트 선정과 간단한 프로젝트 소개, 작업할 내용 소개
      - 학기 2/3선
    • 12주 - 진행 상황 발표 및 아이디어 교환: 작업할 내용의 1차 패치를 버그트래커에 제출한 후 그 내용을 소개 (11주 과제)
    • 13주 - 진행 상황 발표: 다른 사람의 패치들에 follow-up한 다음에 개선된 패치를 제출한 후 그 내용을 소개 (12주 과제)
    • 14주 - 진행 상황 발표: 11주에 제출한 자기의 패치에 대한 가급적이면 최종판의 개선된 버전을 제출한 뒤 소개 (13주 과제)
    • 15주 - 프로젝트 최종평가: 자신이 제출한 패치를 적용한 프로그램 스냅샷과 가상의 릴리스 어나운스를 만들어서 제출.
    • 16주 - (없음)
      - 기말고사 기간

으흐흐... 뭐 프로그래밍 실습 같은 비슷한 과목을 대체하는 형태도 좋고.. 그런대로 해볼만 할 것 같기도 해요 =3=33

댓글 6 개 | 트랙백 0 개 (보낼곳) | 태그 computer


마지막 채플

저희 학교에서는 졸업하기 위해서 채플을 4학기 이수하도록 되어있습니다. 출석만 하면 이수가 되는 것이지만, 출석을 잘하기가 쉽지가 않아서.. 벌써 학교를 몇년 다니는데도 못 끝내고 있었지요 =.=;;

이번 학기가 마지막으로 4번째 학기였는데, 이번 학기에는 전출을 했기 때문에 오늘 종강 채플이 마지막 애플이었습니다. 학부 재입학을 안 하는 한은 인생의 마지막 채플이라고 생각하니 나름대로 감격스럽고 그렇습니다. -ㅇ-;; 1학년 때는 들어오기 그렇게 싫었던 채플도 나름대로 뭔가 정도 가고 아하하;;

채플이 복학하고 나니 바뀐 것도 제법 있었습니다. 1, 2학년 때에는 좌석도 딱딱하고 노래한다고 일어서라고 그러고 앞에서 연설하는 것도 무척 재미없어서 맨날 들어가서 숙제나 하고 그랬습니다. 그런데, 복학하고나니 대강당이 새단장을 쫙 해서 좌석도 상당히 편해졌고, 프로그램도 신경을 많이 써서 누구에게나 감동을 줄 수 있을 만한 연설들이 많았습니다.

지금 생각나는 것으로는 청소년 위원회의 최영희 위원장의 강의가 가장 인상 깊었는데, 30년 넘게 노동운동과 양성평등운동을 하시던 분이라 그런지, 경험에서 우러나오는 여러가지 이해하기 쉬운 사례들을 들려줘서 지금까지는 그냥 막연하게 알고 있었던 양성평등에 대해 보다 넓게 이해할 수 있었습니다. 옛날에 매일 전경들이랑 싸우던 학생운동 동료분이 지금은 아들이 전경이 되어서, 곧 있을 농민 상경 시위 때문에 잠을 못 이루고 걱정을 하더라는 얘기도 정말 와닿았구요.. 상대방을 이해하기가 그렇게 쉽기도 하구나 생각을 했습니다. :)

그 외에도 주로 방송/언론 관련 동아리 소속 학생들이 나와서 명사들과 대화하는 대화 채플이라는 것도 흥미로웠는데, 제가 들어갔던 시간에는 《하루가 소중했던 사람들》이라는 책을 지은 김혜원 권사님이 오셨었습니다. 사형수 교화는 정말 대부분의 사람이 이해하기가 쉽지 않은 굉장히 어려운 것인데, 대화에서 우러나오는 30년동안의 경험들을 들으면서 나름대로 여러가지 인간적인 감동들을 얻을 수 있었습니다. 집안에서 아드님과 가사에 대한 얘기를 하는 것도 재미있었구요.. :) 묵묵히 가사를 맡으시는 어머님들도 속으로 가사를 싫어하면서 가족들을 원망하는 마음도 있다는 것을 알게 되어서 지금이라도 알게돼서 다행이라는 생각이 들었습니다. 또 하나 대화 채플에서 흥미로웠던 것은, YBS에서 나온 학생이 2학년인데도 굉장히 말을 빠르게 하면서도 조리있고 귀에 잘 들어오게 한 것이었습니다. 흐흐 나도 말을 좀 잘 했으면 좋겠네 하는 생각이 깊게 들었습니다.;;

채플은 나름대로 강제로 종교행사에 참가시킨다는 비난을 받기도 하지만, 저야 뭐 병특 하는 동안에 다른 사람과 잘 어울리는 것에 대한 훈련을 많이 받아서 이제 별 불만에 없게 되었습니다. --;;;; 채플이 끝나서, 후련하기도 하고 섭섭하기도 하지만.. 결코 다시 듣는 일은 없기를;;; -O-

댓글 3 개 | 트랙백 0 개 (보낼곳) | 태그 life


누구?

장혜식 (Hyeshik Chang)
내일을 사랑하는 소년(!)