구글이 투자한 생명공학 기업 23andMe

오늘 실험 돌려놓고 여기 저기 돌아다니다가, 22일에 나온 뉴스 구글이 생명공학으로 가다라는 기사를 발견했습니다. 오우~ MS가 합성생물학에 투자하더니
뭔가 붐인가 싶어서 약간 더 찾아봤더니, 생명공학에 투자했다는
것 보다, 투자받은 회사가 세르게이 브린의 부인이 창립한 회사라는 것으로 더 많이 제목이 뽑혀있네요.

투자받은 회사인 23andMe가 뭐하는 회사인지 무척 궁금해져서 홈페이지를 뒤져봤는데, 아직 신생기업이라 자세한 설명은 없고 구인과 간단한 소개가 나와있네요. 첫페이지의 소개를 보면, 국내에서도 뉴스 같은 데서 자주 소개됐었던 아이템인 유전자 정보를 이용해서 조상찾기, 가계도 찾기, 유전 형질 알기 같은 것들을 제공한다고 합니다. 이미 워낙 오랫동안 다른데서 하고 있는 거라서 이런 말만 써가지고 과연 투자를 받을 수 있었을까 궁금하긴 하지만, 구인 프로필이나 설립자들의 소개에 보면 좀 더 자세한 아이템들을 알 수 있을 것 같은 말들이 섞여 있네요~

Wojcicki의 소개에 보면 개인 유전 정보를 제약회사에서 약 개발을 위해서 사용할 수 있게 제공해 주고, 일반인들이 자신의 유전적 정보를 보고 배울 수 있게 하는 것이 목적이라고 합니다. 즉, 개인들에게 유전자와 관련된 재미있는 서비스들을 제공해 주면서 그걸 다른 데도 쓸 수 있게 동의를 받아서 제약회사에 그 정보를 팔겠다는 목적인 것 같죠. 좀 사업을 생각해 보면, 재작년에 BiDil의 FDA승인 이후에 뜨겁게 달아오르고 있는 유전특성이 있는 약을 위해 개인화 정보가 굉장히 중요해 지고 있는 상황에서, BiDil의 테스트킷을 대체하는 용도로 약이 타겟으로 할 만한 주요 SNP에 대해 지갑에 넣어다니는 RFID같은 걸 개발하면 쓸모가 있을 것 같기도 하고 그렇습니다. 으흐흐;

그리고 구인 페이지의 내용을 보면 “애자일 개발”, C++, Python의 유연함, AJAX, MySQL 등이 언급되는 걸 보면 역시 구글의 강한 영향력 밑에 있다는 것을 알 수 있고, Flash까지 얘기가 나오는 걸 봐서는, 유전자 검사에서 나온 정보를 최대한 사람들이 재미있게 쓸 수 있게 화면을 예쁘게 하거나, 아니면 아예 간단한 커뮤니티나 외부에 제공하는 위젯 같은 서비스도 할 수 있지 않을까 생각됩니다. (전체 여남은명 모집에서 UI 관련 인력이 무려 3명이나..)

대충 IT쪽 분야는 구글 스타일 그대로 따르면서, 생명공학 분야로 진출하는 회사가 생기는 것을 보니 무척 흥미롭습니다. MS가 투자하는 바람에 가뜩이나 저작권 문제가 불안한 합성생물학 분야에도 구글이 투자를 좀 했으면 하는 생각이 드는군요.

오랜만의 파이썬 모임 하나 생각

Maya, Google, Civilization IV, Battlefield 2,
BitTorrent,
EVE Online,

Corel PaintShop Pro
,
NASA,
YouTube,
MIT CS101

대충 보기엔 별 공통점이 없어 보이는 프로그램 이름들과 회사(기관)이름들이 있습니다. 이들은 무슨 공통점이 있을까요? — 뻔한 퀴즈지만 파이썬을 주된 도구로 채용한 프로그램이나 기관들입니다. 🙂 이미 익숙하게 알려진 것들이 많지만 얼마 전에 우리에게 친근한 새로운 용례가 또 추가되었습니다. 바로, 다음 웹검색 [1]에서 파이썬을 프론트엔드에 도입한 것입니다! (추측컨데 크롤러와 인덱스 빌더 등에서도 많이 사용했을 거라고 생각됩니다.)

이제 파이썬은 대안언어를 넘어서서 제 자리를 확실히 잡은 듯 합니다. 요즘 과학 논문에서 파이썬으로 된 도구를 보는 것은 아무렇지도 않은 일이 됐고, 이제 학교에서 어떤 과목 프로젝트를 하다가, 같은 조원이 파이썬이란 언어가 있는데 자기가 써보니 괜찮다더라 하면서 소개를 해 줄 정도로 잔뿌리를 널리 폈습니다.

그래서 2000년부터 최근까지의 파이썬 관련 행사들이 대부분 소개를 주목적으로 했다면, 이제는 파이썬을 활용하는 사람들이 새로운 만남을 통해 동기와 아이디어, 새로운 시각을 얻을 수 있는 모임이 필요할 때가 아닌가 생각됐습니다.

마침 서울에 가고 싶은데 핑계도 없고 해서 –; 뭔가 행사를 한 번 만들어 보고자 생각을 좀 해 봤는데, 그냥 옛날 스타일 컨퍼런스도 식상하고, 요새 많은 그냥 언컨퍼런스도 부담이 많고 해서 올해 초의 한국 루비 포럼 세미나의 형식을 약간 따 와서 이런 것을 생각해 봤어요.

먼저 간단한 파이썬 문제 — 프로그래밍 학습에 쓰이는 장난감
문제 뿐만 아니라, 각 활용 분야별 특성을 잘 나타내는 아주 작은 장난감 문제들 — 를 웹에서 모집합니다. 모집은 물론 공개된 방법으로 누구나 올릴 수 있고, 서로 평가해서 높은 순위에서 적당히 몇 개를 추립니다. 여기서 추려진 문제는 행사 시작 1주일 전 공시되어서 행사 참가자들은 자기가 참가할 세션의 문제를 혼자서 풀어봅니다.

그리고 행사 당일에는 OST 형식의 자유토론(과 미리 정해진 코너가 혼합되어)으로 해당 장난감 문제를 푸는 방법에 대해서 참가자들이 돌아가면서 설명해 보고, 거기서 파생되는 테크닉과 여러 습관, 기술, 관련 소식, 경험 등을 얘기합니다. 너무 주제가 산으로 가거나 제한 시간이 지나면 일단 중단하고, 누군가가 다음 세션으로 또 그것을 이어갈 세션을 만들기도 하고 여러 개로 나눠질 수도 있겠죠.
이런 방식의 세션을 제약 없이 연속적으로 3시간 정도 진행하고
잠시 쉬는 시간이나 적당한 공통 세션 후에 다시 또 3시간. -ㅇ-;

특히 게임, 과학계산, 시뮬레이션, 금융전산, 사회학정보처리 분야 같이 기존의
프로그래밍 언어 행사에서 포용하기 힘들었던 분야의 분들이 장난감 문제를 뿌리로 해서 얘기를 뻗어나갈 수도 있겠다는 점에서는 긍정적인 효과가 있지 않을까 생각됩니다.

음.. 물론 적당한 좋은 형태가 더 있다면 병행할 수도 있고~ 이런 행사 어때요? ^_^

아이디어, 제안, 행사지원, 진행자원봉사 지원 등 어떤 의견이든 환영합니다!

미투데이에서 한국어 올바로 쓰기

terra님의 글에서 갑자기 생각이 떠 올라서 한 번 만들어 봤습니다. 🙂
맞춤법 검사기를 직접 만든 건 아니고요, 그냥 부산대학교 정보컴퓨터공학부
인공지능연구실과 (주)나라인포테크가 만든 것
에 웹 요청을 해서 받아온 결과를 뿌려줍니다. ^_^;;

사용하시려면 GreaseMonkey를 깔고 다음 링크를 클릭하시면 됩니다~

==> “만박사님의 한국어 시간” 플러그인 설치

자바스크립트에서 인코딩을 변환할 방법을 도저히 못 찾아서, 결국엔 제 서버에 있는 cgi를 거쳐서 euc-kr로 변환해서 보내게 했습니다. 혹시 좋은 방법을 아시는 분은 알려주세요 +_+

OpenSSL에 SEED가 들어갔습니다~

그동안 많은 분의 노력으로 드디어 OpenSSLSEED지원이 들어갔습니다!
와와~
이제 모질라, 애플웹킷 등 OpenSSL에 지원이 없어서 못 한다고
기다리고 있던 수많은 프로그램들이 SEED를 지원할 수 있겠군요~

이번 패치는 전에 제가 올렸던 OpenSSL 패치가 들어간 것은 아니고, KISA에서 따로 작업한 패치를 KISA의 지원으로 OpenSSL 개발자가 수정한 것이 적용되었습니다. 사실 소스를 보시게 되면 KISA의 작업 과정 중에서 보통의 오픈소스 프로젝트의 관례에서는 어긋나는 이른바 “이름 지우고 소스 베껴오기”가 많이 적용된 흔적은 자명히 존재하긴 하지만, 그래도 제가 원래 올린 패치가 public domain으로 올렸던 것이기에 이름 지우기가 저작권 위반은 아니라는 것을 미리 알려 둡니다. 🙂

그렇지만 한편으로는 정부기관에서 오픈소스에서의 호환성 지원을 위해 오픈소스 프로젝트에 직접 노력하여 커밋을 재촉하고 실제 적용까지 유도한 사례가 나왔다는 측면에서 굉장히 고무되는 사건임에는 틀림이 없습니다~ 🙂

자주 볼 수 있는 정겨운 깨진 한글들

오늘 IRC에서 얘기하다가 생각나서
예전부터 있었던 정겨운 깨진 한글들 패턴 몇개를 모아서 소개해 봅니다. 🙂

占쏙옙占쏙옙!

주로 맥이나 emacs, gnome-terminal등등 유니코드 처리를 하긴 하는데, 설정을 뭔가 잘못했거나 제대로 못 처리한 경우에 자주 발생하는 놈입니다. 구글에서 검색하면 무려 1450000건이나 나옵니다. -ㅇ-; 가히 깨진 한글 중 최고봉..

이 녀석의 의미는 U+FFFD U+FFFD를 utf-8로 인코딩한 것을 euc-kr로 푼 것입니다. 디코드하는 녀석은 euc-kr을 바라고 있고, 인코딩하는 녀석은 뭔가 안에서 단단히 꼬인 경우죠. U+FFFD는 REPLACEMENT CHARACTER이라고, 뭔가 잘못되면 이걸로 글자 수를 유지하기 위해서 바꾸는 경우가 있습니다. 이 경우 대부분 보내는 놈이 잘못했다고 눈치를 챌 수 있습니다.

홰聆究셀

옛날에 PC통신 하시던 분들은 자주 보셨을 것 같은데, 이것도 지금 구글에서 검색하면 29900건이 나오는 상당히 인기깨진한글 입니다. 홰영구셀은 점쏙옙과는 달리 좌우로 물음표나 좀 불길한 표시가 곁들여진다는 특징이 있죠. 🙂

이 놈의 정체는 바로 euc-kr에서 “안녕하세요”에서 첫 바이트를 떼낸 것입니다. 안녕하세요는 문자열이나 각 줄의 맨 앞에 자주 와서 앞 글자가 잘리는 경우가 유독 많죠~

컴컴컴컴컴컴넴

요새는 컴컴컴컴컴이 나오면 좀 어색하겠지만, 옛날에는 동네 꼬마아이들도 컴컴컴컴을 보면 이게 바로 그거구나! 하고 정겨워할 정도였었죠~ 컴컴컴컴컴에는 옆에 넴이나 백백백, 낡낡이 곁들여 줘야 좀 더 맛이 납니다. 이 놈의 정체는 미국 영어 코드페이지인 cp437에서 좌우로 긋는 선문자입니다. 아직도 와레즈 그룹들은 cp437을 자주 쓰는 관계로 .nfo 파일들에서 컴컴컴컴을 만날 수 있어서 나름대로(?) 반갑습니다;;

이 녀석은 구글에서 검색이 되긴 하는데, 길이에 따라 따로 따로 인덱스되어 있어서 전체적인 수는 정확히 모르겠지만 대략 5000은 될 것 같네요.

덈뀗섏꽭 쩗꿇뀘

요놈은 고정적인 내용을 가지는 것은 아니고 대충 “띠리띠리”가 새끼손가락 콧구멍에 넣고 외계와 통신할 때 내는 소리로 깨지는 형태입니다. 이것도 어설픈 유니코드 프로그램에서 상당히 자주 볼 수 있죠. 이 놈의 정체는 utf-8 인코딩된 것을 cp949로 푼 것입니다. 주로 겹자음과 희한한 받침들이 오는데, 그 이유는 utf-8에서 쓰는 영역이 주로 두 번째 바이트에 0x81~0x9f를 많이 써서, 그 영역이 cp949에서 euc-kr에 추가로 배치한 자주 안 쓰이는 한글 영역과 겹치기 때문입니다.

)C>H3gGO

이것도 고정적인 내용은 아니고 그냥 형태입니다. 주로 대문자, 소문자, 기호 몇가지가 나오고 중간 중간 음표도 곁들여 주며 나오는 이 모양은 8비트를 모두 지원하지 않는 환경에서 EUC-KR에서의 상위 비트가 모두 날아간 놈입니다. 최근에는 볼 일이 거의 없지만, 예전에는 한국IBM같이 도미노 솔루션을 쓰던 곳에서 보낸 메일이 이런식으로 안 보이게 보여서 난감한 경우가 있었죠. 그리고, ISO-2022-KR로 인코드하고 나서 제어문자 필터링에 걸려서 제어문자가 유실되는 경우도 이렇게 됩니다.

¾È³çÇϼ¼¿ä~

아마도 가장 흔하게 많이 볼 수 있는 형태가 아닌가 싶네요~ 요건 EUC-KR을 ISO-8859로 보고 디코딩했을 때 발생하는 형태입니다. 즉, 한글 1글자가 EUC-KR에서 높은 2 바이트가 되기 때문에, ISO-8859에서의 추가 문자에 해당하는 것들이 2개씩 나오게 됩니다. 요건 그래도 ISO-8859-1이 256개 모두 할당되어 있어서 정보의 손실은 없어서 복구는 가능하기 때문에, 다른 것들에 비해서 그래도 준수한 편이라고 할 수 있겠죠. 🙂

켓아~

요놈은 대부분의 글자가 보이지만 일부가 고정적으로 다른 글자로 대체되는 형태입니다. 대표적으로 “횽아” -> “켓아”와 “아햏햏” -> “아쥑쥑” 이 있죠. 둘다 구글에서 검색해 보면 용례가 그렇게 많지는 않지만, 의외로 유닉스 프로그램들에서는 상당히 자주 겪는 패턴입니다.
이 경우는 인코딩이 euc-kr이라고 가정하고, 두 번째 바이트 글자의 하위 7비트만 보고 디코딩해서 생기는 문제입니다. cp949의 경우에는 두 번째 바이트에 MSB가 없는 경우가 있기 때문에, 구분해 줘야 글자를 제대로 판단할 수 있겠죠.

우선 생각나는 것은 써 봤는데, 그 외에 자주 봤던 깨진 한글 있으시면 알려주시면 추가하겠습니다. ^_^

KLDP 사용자들이 필요할 만한 스크립트

KLDP BBS에 종종 가시는 분들이라면 필요할 것 같아서
만들어 봤습니다. Greasemonkey안에 플러그인으로 넣는 것이니, 먼저 Greasemonkey를 깔고 아래 URL을 누르시면 됩니다.

imyejinfree.user.js 설치 (greasemonkey)

뭐 하는 스크립트인지 설명하자면, 특정인을 언급할 수 밖에 없어서, 그 분께 폐가 될 것 같아서 설명은 생략합니다. (다른 분들만 쓰세요~)

오픈룩 서버 분산이전

제가 이제 대전에 살기 때문에 서울에 있는 오픈룩 서버가 죽어도 금방 대처할 수가 없게 되어서, 슬슬 관리를 잘 받을 수 있는 환경으로 기존에 서비스하던 것을 옮기고 있습니다. 오픈룩에서 돌던 네임서버와 메일서버는 지난 주에 대전으로 옮기고, 파이썬 마을은 오늘 옮겼습니다~

오픈룩에서 서비스하던 다른 분들이 쓰실 만한 서비스들의 분산 계획은 이렇습니다.

혹시 뭔가 문제가 있으신 분은 알려주세요 ^_^

ActiveX없이 보안메일청구서 읽어보기

전화요금이나 인터넷요금, 카드요금 등등 요즘은 많은 청구서들이 이메일로 청구서를 발송하면서 이른바 “보안메일”이라는 것으로 보냅니다. 그런데, 하필이면 보안까지는 좋은데, 보안 솔루션이란게 윈도우 전용이라 다른 곳에서는 읽을 방법이 없죠. 카드 얼마 썼는지도 모르고.. 전화요금이 나와도 뭐가 얼마 나왔는지 모르고.. 무지 답답합니다. 으이구~

그래서 간단하게 읽어볼 방법이 없을까 해서 보안 메일을 열어봤더니, base64로 인코딩되어 있어서 아.. 이때부터 삽질이 시작되었습니다. “어떻게든 프비에서 보안메일 한번 읽어보자!”

우선은 보안메일의 base64부분만 풀어도 상당한 힌트가 들어있는데, SEED/CBC/PKCS5Padding이라는 헤더가 있기 때문에, 중간 어딘가부터 분명 SEED/CBC가 시작될 것이라는 걸 강하게 암시하고 있습니다. 대략적으로 00이 많이 나오는 지역을 제외하면 첫 100~200바이트 내에서 CBC코딩이 시작된다는 것을 알 수 있는데, CBC는 그 특성상 시작부분을 정확하게 안 맞추면 뒷부분도 모두 어긋나기때문에 100~200사이에서 모두 시도해 보는 것으로 시험해 봤습니다.

주민등록번호 뒷자리를 입력하기 때문에, 주민등록번호 뒷자리에 0을 채운것, 진짜 PKCS5 패딩을 한 것, MD5한 것 세 가지를 해 봤는데, 혹시나 했는데 역시나 전혀 안 보이는군요. 크흐.. 그래서, 그 이후로 주민등록번호를 숫자로 코딩한 것, sha1로 해시해서 자른 것, sha1 해시한 것을 또 md5한 것 등등 상상할 수 있는 온갖 것들을 다 시도해 봤는데, 맞는게 없더군요..

하도 안 되니까, 속임수로 SEED/CBC라고 해놓고 실제론
SEED/CTR이나 AES/CBC같은 것 쓰는게 아닌가 해서 이놈들도
다 시도해 봤는데, 전혀 안 되네요.. 결국에는 디버거의 도움을
받아 장시간의 트레이스 끝에 키를 생성해 내는 방법을 알아내서
풀어 내긴 했습니다;;;; (함수 하나가 뭐 이리 긴지;;)

아.. 저 노이즈 속에 진주처럼 반짝반짝 빛나는 HTML이여.. -ㅇ-;;; 이제 본문을 풀어보면!! (이번 달에 만든 카드라 얼마 안 썼습니다 =3)

그런데, 하나 재미없고 곤란하게 된 것은 컴퓨터프로그램보호법 제 12조의 2항 “프로그램코드의역분석”에서의 제약사항 때문에, 지금까지 해서 메일 보는 것까지는 합법적이지만, 공개하는 것은 불법이기 때문에, 코드를 공개하거나 바이너리로라도 배포하는 것이 불가능하다는 점입니다. 아이고.. 공개를 안 하면 무슨 재미로 개발을 하나…. 그런데, 보안메일에서 쓰고 있는 방법은 엄청나게 기이한 과정을 거치기 때문에 역공학없이 메일 내용만 보고 풀어보는 것은 매우 힘들 것 같아서.. 해당 프로그램을 배포하는 쪽에서 직접 만들지 않는 한은 다른 호환 솔루션이 나오는 것은 매우 어려울 것 같군요.

파이썬 소스로 SEED부분을 제외하고 2줄이면 풀리는 간단한 방법인데, 앞으로 이니텍에서 Firefox용 플러그인도 좀 배포를 해 주던지, 아니면 자바스크립트나 플래시로라도 좀 해 줬으면 좋겠네요. 그거 만드는데 얼마나 걸린다고..~

mechanize로 인트라넷 공지사항 RSS로 만들기

보통 학교나 회사에서 알려주지도 않고 뭘 진행해 놓고서 나중에 왜 인트라넷에 공지 올렸는데 안 봤냐고 그러는 경우가 종종 있습니다. 옛날에 있던 학교에서는 그래도 과사에서 여러 방법으로 알려주려고 시도를 많이 했었는데, 새로 온 학교는 이거 거의 알아서 찾아봐야 먹고 사는 분위기네요. 으흐흐. 게다가 인트라넷은 Firefox로는 로그인도 안 돼서 FreeBSD에서는 도대체 볼 수가 없어서, 애로사항이 여간 아닙니다. 으흐~

그래서, 요새 절정의 인기를 구가하고 있는 mechanize로 게시판 긁어오는 스크립트를 만들어서 전에 식당 메뉴 만들듯 RSS로 만들어 보기로 마음 먹었습니다. 요새는 웬만하면 정보가 사람을 찾아와야지 사람이 정보를 찾으러 다니는 시대는 지났응께~

우선, mechanize는 아시다시피 쿠키와 참조URL 처리, 폼 처리를 자동으로 해 주기 때문에, 간단한 홈페이지를 따라가는 데는 더없이 편합니다. 그래서 웬만한 웹 스크래핑에는 항상 따르는 괴로운 순간 (스트레스가 슬슬 머리 위로 올라오면서, 계속 발생하는 예외상황과 이상한 HTML에 내가 이 일을 해서 뭐가 좋다고.. 하는 번뇌 등등..)이 거의 없이 한 페이지 보고 토닥토닥 해서 한 페이지 지나가고 리듬감을 잃지 않고 정보 수집이 끝났습니다. 역시 개발에는 리듬을 깨는 요소가 최대의 적입니다.

그리고, RSS는 지난번에는 손으로 짜서 print했더니 아침놀군이 HanRSS에서 이상하게 나온다고 하여서, 이번엔 제대로 된 RSS제너레이터를 사용했습니다. 훨씬 쉽고 좋네요~

그리하여, 만들어진 것이 이렇게(svn) 되었습니다. 🙂 이제 윈도우 들어가서 ActiveX와 씨름하지 않고도 학교 공지사항을 보고 장학금 신청을 할 수 있게 되었군요. -ㅇ-; (그러나 학점 미달로 인해 장학금 신청 자격이;;;)

혹시 회사나 학교 인트라넷에 불만이 있으시면 직접 한번 RSS로 만들어 보세요~

필요하신 분들을 위한 링크 (1시간 간격 업데이트):
전체
학생
교수
직원
세미나/행사
컴퓨터/네트워크
연구프로젝트
외국인

파이썬 대화모드에서 자동으로 모듈 들여오기

오늘은 통계 숙제를 하다가, math.e math.log 이런 것 누르려다 보니, import math하기가 갑자기 무지 귀찮았습니다. 맥에서는
파이썬 대화모드는 거의 항상 WidgetTerm에 항상 띄워두고 쓰지만, math나 urllib같이 늘 쓰는 모듈을 쓸 때에도 import하고 쓰는게 그렇게 귀찮았구나~ 하고 옛날 생각도 나면서.. 흐흐

그래서 예전에 올라왔던 자동 들여오기 PEP가 생각나서 봤는데, 게으른 모듈(lazy module)을 일일이 다 만드는 방법으로 처리해서, 소스가 상당히 길고 설치하기가 귀찮더군요. 그래서, sys.excepthook을 써서 어떻게 NameError를 잘 지지고 볶으면 될 것 같아서. 한번 해 봤습니다~

실행해 보면~

적당히 디스크 어딘가에 풀어두고, PYTHONSTARTUP 환경변수로 파일이름(전체경로)를 써 주시면 되겠습니다. 셸 프로파일에 적어주시면 편합니다~ ^^

주의사항: 여러 줄 블럭이거나 한 줄에라도 부작용(side effect)이 있는 코드이면 원래 의도와 다르게 동작할 수 있습니다.