Hatena::ブログ(Diary)

techman999の日記

2012-01-03

2012年読書メモ

22:52

購入リスト含む、本棚はこちら http://booklog.jp/users/techman99

  1. [読了]松岡圭祐: 万能鑑定士Qの事件簿XII (1/2)
  2. [読了]鎌池和馬: 新約 とある魔術の禁書目録(1) (1/7)
  3. [読了]ドナルド・C・ゴース,G.M.ワインバーグ: ライト、ついてますか―問題発見の人間学(1/9)
  4. [読了]結城浩: 数学ガール乱択アルゴリズム(1/10)
  5. [読了]杉原厚吉: どう書くか―理科系のための論文作法(1/11)
  6. [読了]鎌池和馬: 新約 とある魔術の禁書目録(2) (1/17)

2012-01-01

2012年の目標

20:53

2011年からの積み残し

  • 並列処理(並行処理)の勉強をする

2012年の目標

2011-12-31

2011年を振り返る

22:44

2011年各月ごとに振り返るまとめ日記

  • 2011年2月
    • 博士論文提出
    • 密室での最終審査
    • 就職先決定...
  • 2011年4月
    • つくばへ移住
    • 現在の勤務先へ就職
    • TBS血だまりスケッチ最終回実況中継がんばる
      • 1day での最大tweets数を達成(217tweets)
  • 2011年7月
    • 今年初の映画。
      • 鋼の錬金術師 嘆きの丘の聖なる星を見た
    • 久々のビアガーデン
    • HP ProLiant ML110 G6買った。
      • メモリ16GBにした。(あまり活用できてないなぁ(´・ω・`))

総論: 今年後半のくじ運はよかった。

2011年の目標を振り返る。

18:18

2011年1月1日分に書いていた2011年の目標を振り返って

昨年からの持ち越し分:

GPUとかOpenMPなんかの勉強をしたい(これは願望)

並列処理(並行処理)の勉強をする

-->できてなーい(´・ω・`)

今年の目標:

クラウド関連の研究やる(テーマ的に今年いっぱいだろう)

--> やってきたが、論文になるところまで進まず。まずーい。

GPUを使ったアクセラレーションの研究やってみたい

--> 未

FPGA使ってみたい

--> 未

Hadoopをまじめにつかってみる

--> 未

働く

--> 一応達成:p

2011-10-03

iCalのデータを読み込んで、メールで送信

| 01:53

iCalのicsファイルから今日の予定を読み込んで、メールで送信するPythonプログラムを書いてみた。

  1. icsファイルの取り扱い

Pythonで、icsファイルを取り扱うのに適したモジュールはないかと調べていたら、あった。

iCalendar package for Python, http://codespeak.net/icalendar/

安定版のリリースが、2006年?と思ったが、以下のようにSVNで開発版のソースを取得したらicalendar 2.2が取得できた。

You can also check out the development version of iCalendar from subversion, using a command like:

svn co http://codespeak.net/svn/iCalendar/trunk iCalendar

よく調べたら、pypiに登録されていた。http://pypi.python.org/pypi/icalendar/

こっちだと、githubソースコードがあった。http://github.com/collective/icalendar

Python2.7で、icalendar 3.0を使ってみたが、最終的に動作させる環境がFreeBSDなので、

portsにicalendarのパッケージがあったが、バージョンが2.1だったので

ひとまず、バージョン2.2でプログラムを組むことにした。

icsファイルに記述されたデータを表示する例。

from icalendar import Calendar
from date time import datetime

cal = Calendar.from_string(open('schedule.ics', rb').read())
body = ""
for ev in cal.walk():
    if ev.name == 'VEVENT':
        start_dt = ev.decoded("dtstart")
        end_dt = ev.decoded("dtend")
        summary = ev['summary'].encode('utf-8')
        print "{start} - {end} : {summary}".format(start=start_dt.strftime("%Y/%m/%d %H:%M"), end=end_dt.strftime("%Y/%m/%d %H:%M"), summary=summary)
        # body = "{start} - {end} : {summary}".format(start=start_dt.strftime("%Y/%m/%d %H:%M"), end=end_dt.strftime("%Y/%m/%d %H:%M"), summary=summary)
  1. メールで送信

icalendarモジュールで取り出した今日の予定をメールで送信する。

import smtplib
from email.MIMEText import MIMEText
from email.Utils import formatdate
from email.Header import Header

encoding = 'ISO-2022-JP'

msg = MIMEText(body.encode(encoding), 'plain', encoding) 
# bodyはicsファイルから取得したスケジュールの文字列
msg['Subject'] = Header(u'本日の予定', encoding)
msg['From'] = 'Hoge<hoge@example.com>'
msg['To'] = 'dummy@example.com'
msg['Date'] = formatdate()

from_addr = 'huge@example.com'
to_addr = ['dummy@example.com']
send(from_addr, to_addr, msg)

UTF-8文字列が格納されているbodyを、MIMETextの第一引数として渡すが、

このとき、UTF-8からISO-2022-JPへencodeしてやらないと、

SubjectはISO-2022-JP、本文はUTF-8ととなり、本文だけ文字化けして読めないという悲しい状況に陥る。

(ぐぐって、参考にしたサイトで変更していないものもあった...)

  1. HTTP+Basic認証

icsファイルを、WebDavサーバ上に置いている。

スケジュールなので、一応Basic認証をかけている。

urllib2モジュールで、icsファイルを取得する処理は以下の通り。

import urllib2

passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, 'webserver_no_FQDN', 'username', 'password')
auth_handler = urllib2.HTTPBasicAuthHandler(passman)
opener = urllib2.build_opener(auth_handler)
urllib2.install_opener(opener)
url = "http://example.com/dav/schedule.ics"
r = urllib2.urlopen(url)
tmp_file = open('/tmp/schedule.ics', 'w')
tmp_file.write(r.read())
tmp_file.close()
  1. UTF-8での文字列処理

スクリプト文字コードUTF-8にしたり、スクリプトの最初に #-*- coding: utf-8 -*-と記述しても、

実行すると、以下のようにUTF-8の処理で引っかかる。

techman999@minako:~/dev/git/pyical$ python today_schedule.py  File "today_schedule.py", line 40
SyntaxError: Non-ASCII character '\xe5' in file today_schedule.py on line 40, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

結論としては、/usr/lib/python2.6/sitecustomize.py を以下のように追記して対処した。

import sys
sys.setdefaultencoding("utf-8")

こんな感じで、トータル4時間で完成。

たまには、お遊びプログラム書いていかないとね:p

2011-10-01

第44回情報科学若手の会 に参加してきました。

23:33

9/17-19に熱海で開催された第44回情報科学若手の会に参加してきたので、感想をまとめます。

(完全に時系列で、まとまってない文章になっているのでもしかしたら後で書き直すかも)

(ブログ等に感想やまとめを書くまでが若手の会ですといわれたので、この記事をpublishした段階で私の若手の会はようやく終了となります:p)

全体の流れは、@earth2001yさんがハッシュタグ#wakate2011のツイートをまとめて下さっているのでそちらをご参照下さい。

事前に送られてきた参加者リストを見ても、知っているのは@mamorukさんだけであとは誰なんだろう、どんな人がくるのだろうと+(0゚・∀・) + ワクテカ +していた。

当日の朝から、#wakate2011のハッシュタグや、TLを眺めていると、followしている人がちらほら熱海へ移動している模様。

また、最初の自己紹介セッションで、twitterアカウントなどを聞くと、実は相互フォローしていた人もいて、びっくり。

@haroperiくんなんかは、同じ筑波に在住しているのに、こんなところで会うなんてとはw

特別講演では、PFIの特別研究員 岡野原さん(@hillbig)が「研究・企業・生き方について」というタイトルで講演された。

(講演内容は、こちらで公開していただいています。http://research.preferred.jp/2011/09/wakate2011/)

岡野原さんの講演のなかで、私が感じた重要な点は以下の点です。

これから研究を始める学生、研究者のたまごの方にとくに意識しておいてほしいと感じました。

  • 数学統計などの基礎力が大事。手法アルゴリズムはどんどん変わるので、ずっと追い続けるための基礎体力がなにより大事
  • 必要に迫られたときに勉強した方がよい
  • 他の人ができなくて、みんなに役立つ物がいい みんなが知っていて流行っているものをやっても意味がない
  • 技術者自身が、「技術が生活を変えられる」ということを信じていないことが多い

他の人ができなくて、みんなに役立つ物がいい

みんなが知っていて流行っているものをやっても意味がない

レッドオーシャンよりブルーオーシャン

本に書いてあることは多くの人が知っていると思え

勉強! 勉強! 勉強!

研究をするためには既存の研究を知らなければならない

新しいと思ったこと、いいなと思ったことはまずやられている

本や論文があるならまずは読もう

調べることができる能力は最重要

勉強は継続しなければならない。

自分ができるところは全問題の一部分だけであり

自分は研究コミュニティの一部と考える。

もっと妄想を!

妄想力は、イマジネーションの原動力

5年後、10年後に世界がどうなっているか。そのときに必要な技術を考えられるか

このぐらいのことを考えられないと、研究としても難しい。

すごい研究者とかすごいことをやってきた人は妄想力がある

夕食、休憩の後、

部屋で、@mamorukさんとNAISTの話などを話し込んでいました。

夜のセッションでは、@overlastさんの「死なないソフトウェア開発術」。

わりと、ショッキングな話もあり、いろいろ考えてしまいました。。。

9/17 夜の飛び込みセッションでは、@kumagiさんが未踏で開発した、匿名掲示板について発表していた。ネットワーク屋としては、オーバーレイネットワークでごちゃごちゃやるのはどうなの? レイヤバイオレーション(Layer Violation)じゃない? TCP/IPネットワークにおいて、下の層への影響は全く考えてないのじゃないか? などと考え、ルータに与える影響など質問した。

さらに発表後、いろいろ質問したなかで、@kumagiさんに、@did2memoさんのRouting手法を解説してもらい、いろいろ納得。というか、@did2memoさんの論文読んでいたにも関わらず、あまり内容を理解していなかったことが発覚orz

オーバーレイネットワークとか、そんなに詳しくはないですが、@kumagi さんとか、@did2memoさんとかヽ〔゚Д゚〕丿 スゴイスゴイ。

どうやったら、こんなにアイディアがでてくるのか。

その後は、29時まで語り合って、就寝するが、朝8時には、朝ご飯〜とたたき起こされたorzしかも、お酒が残っていて軽い頭痛orz

(本来なら、ここが一番重要なのですが、だいぶ記憶が飛んでいるので省略...)

18日の午前中には、ショートセッションで、以下のような多岐にわたる発表が行われた。

午後からは、特別講演として、@takesakoさんによる「学生時代に勉強しておけばよかったこと」(概要: 察してください。)が発表された。

講演の中で、個人的に重要だなと感じたのは以下の点。

応用研究か、基礎研究か? 悩む前に基礎勉強を

今後の人生で選択の幅を広げるため

早く専門を縛るメリットデメリット

半分遊びと遊び半分は、違う。

大事なのは、問題設定能力

どこまで解けばいいかを設定できて、達成できれば勝ち

研究者の端くれ、教育者の端くれとしては、いかに研究において問題設定をうまくするか、

いかに学生さんに問題設定能力をうまく身につけてもらうかを考えなければならないと

考えさせられた。

その後も、セッションは続き、以下のような発表が行われた。

夕食後は、交流イベントとして、4人1組で、情報科学に関連するクイズ大会が行われた。最終的に、私のいたグループが優勝してました... (若干、年齢が上の人に有利という話もありましたがw)

このあとは、飛び込みセッションで4名ほど発表してました。私も、福祉工学と題して、私が勤務する筑波技術大学での視覚障害者向けの情報処理教育の状況について、発表しました。

その後は、夜セッションで、皆と語り合う。夜セッションの間にも、飛び込みセッションが行われ、その中で、女帝さん(@yamashitam)による「なぜ私は女帝と呼ばれるようになったのか」という発表が行われたので正座して、聞いていました。

あと、@hoimeiさんによる人体制御ショーが始まり、みんなうわぁぁぁと言いながら制御されていました...

私は見ていただけですが(´・ω・`)

19日最終日は、朝からまとめセッションでみなさんの感想を発表して、

第44回情報科学若手の会は終わりました。

(ただし、若手の会は、帰ってからブログツイートするまでが若手の会ですといわれていたので、

冒頭でも書きましたが、私の第44回情報科学若手の会はこれでようやく終わり:p)


普段、研究会(最近は参加してないけど:p)などでは、どうしても同じ研究分野の人が

集まるので、情報科学若手の会のように、多用な研究分野の人が集まって議論することは

数少ないチャンスではないかと思います。

職場ではぼっちで研究開発しているので、こうやってわいわいやるのは非常に楽しいですし、

モチベーションアップの原動力になりました。

結論: これから研究を始めるようなB3/M1の人は、ぜひ参加するといいと思います。

よーし、今日も元気に活動するぞ、ふんす(`ω´)!

おまけ: @hoimeiさんのリア充ツイート5箇条

f:id:techman999:20111001233040j:image:w360

# 時々、私も写真や顔文字を混ぜてがんばってリア充っぽく見せかけるww

# 内容は、全然リア充っぽい内容ではないですが(藁