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

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

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

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

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

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

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

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

오늘의 장난: 아미노산으로 문장 만들기

오늘도 뭔가를 만들다가, 아미노산을 문자열에 쭉 입력해 놓고, 숫자를 세 보고 20개 맞군! 하고 지나가면서 뭔가 “이걸 문장을 만들어서 외워 놓으면 맨날 하나 하나 생각하면서 20개 맞나 세 볼 필요가 없지 않을까!” 하는 생각에 아미노산을 모두 1번 씩 쓰는 문장을 만들면 정말 재미있겠다는 생각을 했습니다. 마치 폰트셋 볼 때 잽싼 여우가 게으른 개를 뛰어 넘는 것 같이 말이죠~ –; 그냥 ‘ACDEFG…VWY’를 메모 프로그램에 적어두거나 모듈로 만들어 저장해 둬도 되겠지만, 이미 재미있는 놀이가 생각난 판에, 다른 좋은 방법이 눈에 들어오지 않았지요;

결과만 올리면 너무 오래 뻘짓만 한 것 같아서 과정을 상세히 써 봅니다. -O-;;

우선 단어 후보를 한번 추려보기로 했습니다. FreeBSD에서 항상 뭔가 장난할 때 쓰이는 webster 단어 목록을 써서 추려봤습니다. 우선 다 읽어서, 아미노산 알파벳만 쓰고 있는 단어를~

한 단어에 같은 알파벳이 들어있다거나, 너무 짧거나 너무 긴단어를 뺐습니다.

지금까지 걸러낸 조건에 맞는 단어가 9863개가 있군요~ 뭔가 나올 것 같아서 벌써 기분이 좋습니다 ㅎㅎ;

자 이제 겹치지 않는 단어를 골라야하는데, 각각의 알파벳이 중복되지 않게 조합하는 문제이기 때문에, 정수계획법 (IP)으로 간단하게 풀릴 것 같아서, glpk로 안 겹치는 조건을 프로그래밍 했습니다.

이제 아까 골라낸 파일에서 데이터를 glpk에서 읽을 수 있게 변환~

자 그럼 이제 준비가 다 되었으니 돌려봅시다 -ㅇ-

으흐흐.. 결과가 나왔군요! (사실은 나오는 데 꽤 걸렸지만 제약조건 다 풀어서 처음 나온 것이 바로 feasible solution이 나온 척 해 봅니다; )

자.. 이제 결과를 해석해 보면.. 단어가 cwm fed glyph qintar skiv 라는군요.. (덜덜덜) 아미노산이 모두 들어있기는 하지만.. 과연 이게 철자 검사기를 통과하기나 할까 싶은 단어들이 막 나오는군요.. 으흐.. webster 단어들은 대단해~ 이걸 뭔가 좀 쉬운 단어들로 바꿔서 해 보고 싶지만, 쉬운 단어를 골라놓은 사전을 쉽게 찾을 수가 없어서 일단은 여기서 중단; 자.. 이제 저걸 외워볼까요 glyph fed cwm qintar skiv~ (곡도 붙여서..) 흑흑흑..

앞의 결과는 너무 쓸모없는 것 같아서 –; 다른 데 하나 응용해 봤습니다. 해리포터에 보면 Tom Marvolo Riddle이름이 볼드모트로 바뀌는 장면이 있길래, 볼드모트랑 철자 구성이 같은 놈을 하나 만들어 보니까.. dom revolt가 나오는군요.. 역시 짧으니까 그다지 문장으로 만들 수가 없는.. 크흐..

오늘의 결론: 여우가 게으른 개 위로 뛰어 넘는다는 문장은 정말 대단하다!

식당 메뉴 받아보기

매일 밥먹을 때 어느 식당을 갈까 엘리베이터에 서서 고민을 하게 되는데,
메뉴를 알게되면 좀 더 현명한 선택을 할 수 있지 않을까 해서, 학교 홈페이지에서 식단 제공되는 곳이 있나 찾아봤습니다. 오오. 생각보다 간단한 인터페이스로 2주 뒤의 메뉴까지 다 제공해 주고 있군요. +_+

그래서, 한번 파이썬 API로 만들어 봤습니다. 늘 쓰던 BeautifulSoup으로~

매일 파이썬 띄우고 누르고 있을 수도 없고, 학교 홈페이지 들어가기도 귀찮으니 매일 보는 RSS로 띄워놓으면 좋겠다 싶어서 RSS로도 만들어 봤습니다. 흐흐 (동측, 학부, 서측) 매일 새벽 3시에 업데이트될 예정이니 필요하신 분 등록해서 쓰세요~

소스는 svn 곳간에서 받으실 수 있습니다~

Google 개인화 홈페이지에 추가한 화면

리더에 추가하기 버튼 모음

  • 동측: Add to Google
    Add to Hanrss
  • 학부: Add to Google
    Add to Hanrss
  • 서측: Add to Google
    Add to Hanrss

리눅스 2.6을 위한 SEED 패치

한국정보보호진흥원(KISA)의 지원으로 리눅스 2.6을 위한 SEED 패치를 만들었습니다.

커널에 넣는 패치이기 때문에 주 목적은 파일시스템을 암호화하는 경우와 IPsec같이 커널에 스택이 있는 네트워크 프로토콜을 사용하는 경우입니다. 항상 이슈가 되어왔던 인터넷 클라이언트로써의 접근성 문제와는 거의 전혀 상관없다고 보셔도 무방합니다. ^^;

그런데, 사실 IPsec이나 cryptfs 양쪽 모두 SEED가 AES에 비해 성능이 좋은 편이 아니기 때문에, 개인이 SEED를 쓸 일은 거의 없을 것 같고, 금융결제원이나 국정원과 관련된 뭔가를 할 때 쓰일 것 같네요. (VPN업체들에서 SEED기반 IPsec을 주로 쓴다고 합니다.)

여하간, 리눅스에 익숙하신 분들은 한번쯤 컴파일하실 일이 있으시면 패치를 해서 해봐주세요~ 🙂 modprobe seed; modprobe tcrypt하고 나서 dmesg를 봐서 seed 관련된 부분에서 모두 pass 했다고 하면 정상동작하는 것입니다. 특히 빅엔디안 머신이나 64비트, 쿼드코어 등등 독특한 환경을 쓰시는 분들 꼭 한번 도와주세요 -ㅇ-; (패치 리뷰도 대환영!)

리눅스에 첫 패치 보내서 들여보내는 작업이 끝나면, 지금 갖고 있는 어셈블리 코드도 적용해서 다시 패치를 보내고 그 다음에는 FreeBSD에도 넣어 볼 생각입니다~

미투에 관한 몇 가지 재미있는 사실~

미투에서 요즘 유행하는 me2app 분위기에 휩쓸려서 뭔가 나와야 할 것 같은 걸 하나 만들어버렸습니다. -ㅇ-; 처음엔 뭔가 재미있을 것 같아서 우다다다 코딩을 했는데, 알고보니 wooil님께서 미리 예견하셨던 것! (제 미래를 다음에 한 번;)

미투에서 제공하는 friends.xml을 이용해서 전체 회원들의 친구 관계를 분석했습니다. 긁은 것은 어제 오후 5시쯤이었으니, 그 이후에 가입하셨거나 친구가 되셨으면 이 글의 통계에서는 무효입니다. 흐흐;

우선 친구 관계에 있어서는 전에 링크 같은 책에서 전세계를 기준으로 했듯이, 다들 알고보면 가까운 사이죠. 미투 친구들은 평균적으로 4.39명 건너 친구들로 묶여져 있고, 가장 먼 친구들까지 해도 6명 안에서 친구입니다. 그러니까, 나-친구1-친구2-친구3-친구4-친구5-그친구 이렇게 하면 다 아는 사람이라는 것인데.. (써놓고 보니 꽤 먼 친구군요;;)
작은 사이트이지만 아직 이 정도 거리로 있는 것을 보면, 아직 친구가 그렇게 많지 않은 분들이 꽤 있는 모양입니다. 🙂

역시 미투 회원은 누구든 예상할 수 있듯, charlz님은 2다리만 건너면 모든 회원과 친구인데, 이건 charlz님이 유일하고, 역시 평균 거리 1.479, 친구의 친구수 627명, 친구 수 346명으로 모두 1위입니다. -ㅇ-

친구 수도 흥미로운데, 미투 친구들은 친구가 평균 13.27명, 친구의 친구까지는 평균 255.63명이 있습니다. 역시나 가장 많은 것은 charlz님이시지만, 친구의 친구까지 포함해도 3명밖에 안 되는 분도 있었습니다. 🙂

친구 수의 분포로 보면, 100명 이상인 분이 charlz, cn_, sumanpark, s2day, ncsoft, djsol, codian 모두 7분이 있군요. 그리고, 그 밑은 분산된 분포로 고루 내려오다가 15~22명 사이인 분이 집중적으로 많고, 친구가 1명이거나 2명인 분도 전체 회원의 35%가 넘었습니다.

자, 그럼 마케팅이나 고객 분석에서 널리 쓰이는 “이 시스템의 평균적인 사용자”를 뽑을 수도 있겠는데요. 통계를 계산한 모든 값에서 가장 평균에 가까운 값을 보인 분은 widyou님입니다. 활동이 많아서 매일 답글에 보이는 회원 외에 다른 분들이 서비스에 대해 어떻게 생각하고 있을지 엿볼 수 있는 분이 아닐까 싶네요~

마지막으로 여기서 사용된 통계 자료를 바탕으로 보통 제공되는 친구 경로 검색 서비스를 하나 웹에서 접근할 수 있게 올려 놓았습니다. —> 미투 친구 찾아가기

알려두기: 혹시 통계 자료에서 본인의 자료가 원치않게 언급된 분들은 제게 알려주시면 삭제해 드리겠습니다.
알려두기2: 저는 미투 초대장이 없답니다~ -O-

알려두기3: CGI에서 css는 ikspres님의 것을 몰래 훔쳐다가 썼습니다. -ㅇ-;

파일 이름으로 다운받기

“아.. BeautifulSoup.py가 필요한 데 웹 브라우저 열기는 귀찮고.. 이걸 어쩌나..” 이런 비슷한 경험이 한 번쯤은 다들 있으실 겁니다. 저도 특히 BeautifulSoup.py랑 rename.pl 같은 것들이나, Python-2.5.tgz 이런 것 괜히 파일이름은 아는데 다운받으려면 검색하고 귀찮아서, 왠지 1줄이면 될 것 같아서 오늘은 작정을 하고 스크립트로 만들었습니다.

썰렁~ 흐흐.. 그런데, 바이너리 파일들은 구글이 운좋은 예감으로 안 튕겨주기 때문에, 결국 그 파일이 링크가 달려있는 페이지로 가는 덕분에 저런 간단한 방법으로는 안 돼서 결국은 또 BeautifulSoup의 도움을 받아서 이렇게 만들었습니다. –; (일이 점점 커지네~)

대충 써 보자면~

그러나, 이름에서도 눈치챌 수 있듯, 재수없으면 안 되는 수가 있으니 너무 기대하고 쓰지는 마세요~ :->

me2day RSS에서 제목에 본문 나오게 하기

예전 orkut 유행을 생각나게 하는 요즘 me2day 광풍에 저도 우일님께서 초대해 주셔서 가입했습니다. ^_^

마침 짧게 쓰는게 오픈룩 오른쪽에 예전에 붙어있던 “싹둑싹둑~” 자리에 대신 넣으면 좋겠다 생각이 들어서, 구글 리더에 등록하고 짠! 하고 봤는데, 글쎄 me2day의 RSS에는 제목에 날짜가 들어가 있어서, 제목만 봐서는 무슨 내용인지 전혀 모르겠더군요.. 흐흐.. 그래서 좀 고민을 하다가 RSS를 받아다가 제목만 넣어주는 CGI를 만들어서 구글리더에게 그 CGI를 바라보도록 했습니다.

혹시 필요하신 분들을 위해 소스를 올립니다~

TextMate 한글 반쪽으로~

요즘 웹 프로그래밍을 종종 할 일이 있어서 한꺼번에 파일을 많이 열어놓고 보려니
TextMate를 종종 쓰고 있습니다.
그런데, 역시 다 좋은데 한글이 대략 난감하게 나오는 문제
HTML 편집할 때 매우 난감한데, 그래도 한글이 별로 없는 파이썬 파일을 고칠 때는
쓸만 해서 그런대로 만족하고 있습니다. ^_^

어제 일본사람들은 그렇다면 어떻게 쓰고 있는지 궁금해서 검색을 해 봤더니, 역시 지난 11월 초에 글꼴을 가로로 반으로 줄이는 방법으로 우선 피해가는 방법을 올린 사람이 있었습니다. 오! 마침 fontforge용 스크립트도 제공되어 있길래 은글꼴의 한글과, Bitstream Vera Sans Mono를 가지고 똑같은 방법으로 줄여서 써 봤습니다.

TextMate + 반쪽짜리 한글 글꼴

으흐흐. 좀 거시기하긴 하지만, 나중에 정식으로 지원되기 전까지는 답답하게 나마 쓸 만 하겠네요. 사용한 글꼴 둘 다 오픈소스로 공개되었기 때문에, 얘네들로 만든 글꼴도 fontforge깔기 귀찮은 분들을 위해 올려둡니다.

은고딕 반쪽+VeraMono TTF 내려받기

(가짜) 한글 Lorem ipsum

Apple iWork를 포함한 많은 워드프로세서/조판 시스템들이 Lorem ipsum을 레이아웃을 보여주기 위한 가짜 텍스트로 사용하고 있습니다. 이거 한글로 뭔가 문장이 많이 필요한데, 무궁화 꽃이 피었습니다만 반복하기도 그렇고.. 그렇다고 제대로 한글 빈도, 문장 구조 만들기도 힘들고 해서 그냥 라틴어 읽기 방법을 대충 구현해서 lorem ipsum을 초등학교 영어 자습서처럼 한글로 읽게 했습니다. –;

혹시 한국어 정보처리에 조예가 깊으신 분들은 진짜 한국어 문장처럼 보이게
완벽한 한글판 Lorem ipsum을 만들어 주시면 감사 -O-;;

제 가짜 한글 lorem ipsum은 http://openlook.org/svnpublic/snippets/hipsum/에 올려 두었습니다.

오-게임 테크트리 그리기

IRC에서 얘기를 하다가, 샤샤님이 테크트리를 graphviz
그리기 위해서 고생하고 계시길래, 스크립트로 자동으로
만들게 해 봤습니다. (오게임 게시판 글)

저야 이제 삶에 충실하기 위해 오게임을 끊었지만, 게임 하시는
분들은 한 번.. 흐흐.. 테크트리 그리기해 보세용.. (Firefox로 보세요~)

관례적으로 소스는 svn에 공개 합니다. ^.^;;