techman999の日記

とある大学の教員の日々の備忘録

2012年読書メモ

購入リスト含む、本棚はこちら 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)
  7. [読了]鎌池和馬: 新約 とある魔術の禁書目録(3) (2/27)
  8. [読了]Tarek Ziade(著), 稲田 直哉 (翻訳), 渋川 よしき (翻訳), 清水川 貴之 (翻訳), 森本 哲也 (翻訳): エキスパートPythonプログラミング(3/7)
  9. [読了]夏海公司: なれる!SE〈6〉楽々実践?サイドビジネス(3/9)
  10. [読了]伊東寛: 「第5の戦場」サイバー戦の脅威(3/18)
  11. [読了]高木信尚: C/C++プログラミングの「迷信」と「誤解」(3/19) [積ん読状態から解放w]
  12. [読了]木村英紀: 制御工学の考え方(3/24)
  13. [読了]小柳義夫ほか: スーパーコンピュータ (岩波講座 計算科学 別巻) (3/26)
  14. [読了]森博嗣: 大学の話をしましょうか―最高学府のデバイスとポテンシャル(3/27)
  15. [読了]大竹智也: Emacs実践入門 〜思考を直感的にコード化し、開発を加速する(3/27)
  16. [読了]中村亨: ガロア群論 (ブルーバックス) (3/29)
  17. [読了]岡嶋裕史: 実験でわかるインターネット(4/2)
  18. [読了]森博嗣: 科学的とはどういう意味か (4/6)
  19. [読了]竹内健: 世界で勝負する仕事術 最先端ITに挑むエンジニアの激走記(4/13)
  20. [読了]松岡圭祐: 万能鑑定士Qの推理劇I (5/6)
  21. [読了]佐藤一郎: IDの秘密 (丸善ライブラリー―情報研シリーズ) (8/1)
  22. [読了]児島将康: 科研費獲得の方法とコツ 改訂第2版(8/1)
  23. [読了]橋本洋志ほか: プログラミングの力を生み出す本―インテルCPUのGNUユーザへ (8/1)
  24. [読了]片山善夫: Cプログラム高速化研究班 コードを高速化する20の実験と達人の技(8/1)
  25. [読了]大場寧子ほか: たのしい開発 スタートアップRuby (8/12)
  26. [読了]やねうらお: ひなた先生が教えるデバッグが256倍速くなるテクニック (Software Design Books) (8/14)
  27. [読了]金田康正: スパコンとは何か (ウェッジ選書46) (8/22)
  28. [読了]川中真耶ほか: アルゴリズムを学ぼう (8/22)
  29. [読了]松井博: 僕がアップルで学んだこと 環境を整えれば人が変わる、組織が変わる (アスキー新書) (8/24)
  30. [読了]漆原次郎: 日産 驚異の会議 改革の10年が生み落としたノウハウ (8/29)
  31. [読了]平澤章: オブジェクト指向でなぜつくるのか第2版(10/2)
  32. [読了]Dustin Boswell: リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) (10/12)
  33. [読了]川野辺正博: アリスとボブのGit入門レッスン(10/15)
  34. [読了]岡嶋裕史: ハッカーの手口 ソーシャルからサイバー攻撃まで(10/22)
  35. [読了]土屋大洋: サイバー・テロ 日米vs.中国 (10/30)
  36. [読了]押井守: コミュニケーションは、要らない(11/2)
  37. [読了]庄義和: 灘中の数学学習法(11/7)
  38. [読了]荒井秀和: できるリーダーの人心掌握術 (11/25)
  39. [読了]松浦智之: 覚えて便利 いますぐ使える!シェルスクリプトシンプルレシピ54(11/25)
  40. [読了]谷口長世: サイバー時代の戦争(11/28)
  41. [読了]三輪賢一: プロのための〔図解〕ネットワーク機器入門 スイッチ、ルータからファイアウォールまで徹底解説(12/3)
  42. [読了]岡嶋裕史: 迷惑メールは誰が出す? (12/4)
  43. [読了]山崎泰史ほか: 絵で見てわかるITインフラの仕組み(12/11)
  44. [読了]夏海公司: なれる! SE7 (12/12)
  45. [読了]夏海公司: なれる! SE8 (12/12)
  46. [読了]結城浩: 数学ガール ガロア理論 (12/26)
  47. [読了]長尾真:「わかる」とは何か (12/28)

2011年を振り返る

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

  • 2011年2月
    • 博士論文提出
    • 密室での最終審査
    • 就職先決定...
  • 2011年4月
    • つくばへ移住
    • 現在の勤務先へ就職
    • TBSで血だまりスケッチ最終回実況中継がんばる
      • 1day での最大tweets数を達成(217tweets)
  • 2011年6月
    • なんだっけわすれてもーた(´・ω・`)
  • 2011年7月
    • 今年初の映画。
    • 久々のビアガーデン
    • HP ProLiant ML110 G6買った。
      • メモリ16GBにした。(あまり活用できてないなぁ(´・ω・`))
  • 2011年8月
    • 出身研究室の研究室合宿で、温泉へ
  • 2011年10月
    • なんだっけわすれてもーた(´・ω・`)
  • 2011年12月
    • 映画けいおん舞台挨拶参戦!!
      • あいなまさん、団地妻、あやにゃんかわいかったー。
    • 奈々様東京ドームライブ参戦!!
    • 久々に某研究会へ参加
    • 大学院同期の結婚式参戦
      • 自分以外、同期が入籍等、幸せになった模様(´・ω・`)

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

2011年の目標を振り返る。

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

昨年からの持ち越し分:

GPUとかOpenMPなんかの勉強をしたい(これは願望)
並列処理(並行処理)の勉強をする

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

今年の目標:

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

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

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

    • > 未

FPGA使ってみたい

    • > 未

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

    • > 未

働く

    • > 一応達成:p

こっちのブログ

まだ、使い分けが明確でない状態ですが、こちらは書籍等を読んだまとめを書いていこうかなと思案中。

読むリスト

- TCP/IP Illustrated Vol.1 2nd Edition

- Atataining High Performance Communications - A Vertical Approach

Introduction to High Performance Computing for Scientists and Engineers 

はてなブログのテスト

1000人限定で、はてなブログ利用申し込み受付しているとのことなので、申し込んでみた。

http://staff.hatenablog.com/entry/2011/11/24/180013

 

とりあえず、テスト。

はてダとの使い分けどうしよう。こっちをメインにするか:p

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

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