My Daily Programming Life...

続・3年で読む本

以前に3年で読む本をリストアップした。もうそれから半年・・・全然進んでない気がする。
というわけで、何頁進んでいるのか確認
  • アルゴリズムイントロダクション  (18 / 1292 )
  • 計算理論の基礎 1~3  (139 / 507)
  • 暗号の数学的基礎 (29 / 243)
  • 離散数学 コンピュータサイエンスの基礎数学 ( 0 / 275 )
  • Windows Internals 5th Edition ( 0 / 1152 )
  • モダンオペレーティングシステム ( 144 / 986 ) 
  • 詳解 TCP/IP Vol1 ( 0 / 631 )
  • コンピュータの構成と設計 上下 ( 254 / 576 )
  • 分散システム ( 0 / 822 )
  • Database Management System ( 0 / 1065 )
  • 構造化コンピュータ構成 ( 121 / 746 )
  • セキュアソフトウェア ( 533 / 533 )
全体では 1238 / 8828 = 14 %  ... 本来は16%ぐらい終わっていないといけないんだけど。
しかも、一部はこの3年で読むと決める前に読んだ部分も含まれていたりするので、ペースは遅い。Windows Internals二関しては、4th editionの日本語版を半分ぐらいは読んでいるので読み始めれば結構早く理解していけるとはいえ、もうちょっと読む時間を増やさないと。

UCBerkeley CS61A Structure and Interpretation of Computer Programming Week2

だいぶ間が開いてしまったがSICPのWeek2。
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewiTunesUCollection?id=354818464#ls=1


教科書はオンラインで読むこともできる。
Structure and Interpretation of Computer Programs(SICP)http://www-mitpress.mit.edu/sicp/full-text/book/book.html

宿題や試験の内容はこちら。(宿題はCourse Reading Vol1にある。)
http://www-inst.eecs.berkeley.edu/~cs61a/fa10/

Lecture 3

主な内容
  • Function as Arguments( Higher-order function )
  • 関数の表記について( |-> という表記 )
  • lamda関数

関数の表記 |-> "maps to"についての説明はなんとなく聞くことになるけど、SICP 69ページのFixed-Pointの計算でsquare rootを計算するところでその理解が必要になる。(詳しくは後述)

lamda関数については、その歴史から話が始まる。アロンゾチャーチという人が、数学を関数を元に説明しようとしたところから始まっている、というような話だった。その後、AI研究者のジョンJohn McCarthyが、その考え方をLispに取り入れたとのこと。

Lecture 4

主な内容
  • First Class Data
  • Functionを返すFunction
  • letについて
基本的には高階関数の話

宿題

宿題はSICPのSection1.3を読むこと。Section1.2は飛ばしてあとでやるとのこと。読むに当たって知っておいた方が良さそうな英単語は
converge 収束する
differentiable 微分可能
derivative 導関数

いくつか注意が必要なところがあったので、メモ。
まず、SICP67-68は飛ばしてもよい。これは宿題の指示にも書いてある。

それから、その次の「Finding fixed points of function」というところ。まずFixed pointが何なのか分からないといまいちピンとこない。日本語では不動点 http://ja.wikipedia.org/wiki/%E4%B8%8D%E5%8B%95%E7%82%B9 となるらしい。これを一通り見ればどういうことなのか分かる。
それから、69ページのこのFixed pointの計算を使ってルートを解くところで、y |-> x/y とかなっていて、x,yの二つの変数が出てきてそれでどうして計算ができるのかと一瞬戸惑うのだが、よく見ればこれはyの関数であって、xは定数であることが分かる(このことに気づかないと理解するのに時間がかかる。)。
これは、まさに授業中に言っていたことだ。ax+bとかあったら、勝手にxを変数だと思い込むくせが悪いのだろう。正確な関数の記述はx |-> ax+b ということだ。

読み終わったら、指示にしたがってSICPの練習問題を解く。
教科書の練習問題は、基本的なことが主なので問題ない。
難しかったのはCourse ReaderのWeek2のExtra for expertsの問題。
これはできなかった。なんとなく考え方としては関数を返す関数を書いて・・・2重にすれば・・・などと考えたけどうまくいかなかった。決して方向性は間違っていなかったようなきがするけど。

これはY Combinatorというものらしい。詳しくは以下を参照
http://www.ece.uc.edu/~franco/C511/html/Scheme/ycomb.html

Ubuntu 10.04 LTSでgDeskletsが起動しないとき

Ubuntuをメインマシンにインストールして約3週間。いろいろ改造しながら使っているが、ガジェットを置いてみたいと思って調べたらgDeskletなるものに行き着いた。
さっそくインストール
sudo apt-get install gdesklets
なんとも簡単だ。何が起きているかは知らないが、とりあえずインストールされる。

さっそく起動してみたが、なんとなくバックグラウンドで動き始めているようだけれど、すぐに死んでしまっているようだ。
コマンドラインから立ち上げると、tiling module not foundみたいなのが出ていたり、よく分からない。

Googleというものの威力をこういうときに思い知る。
http://www.rabblerouser.info/blog/?p=834
まったく同じだ。そして、この通りPythonプログラムを修正したら動いた。

Googleって空気みたいな存在になりつつある。あって当然過ぎて、なくなった瞬間にきっとみんな死にたくなるはずだ。
・・・でも考えてみたら僕はインターネットを1996年から使っている。まあ、当時の検索でも、それなりに使えていた気がするが、どうだろう。実際にはそのころトップ10に表示される検索結果で満足できることっていうのは少なかったのかもしれない。

話がずれた。とにかくgDeskletが動かないときは、言われた通り、プログラムを修正すればよい。たとえその意味がまったく不明でも。

工大祭へ

昨日から東工大の文化祭をやっている。ほぼ毎年ジャグリングサークルの様子を見に行っている。
だれか一人ぐらい知っている人がいるだろうと思って行ってみたが、一人もいず・・・。完全なaway感。
途中で知り合いを見つけて、話すと、やっぱり誰も分からない・・・と言っていた。

さて、最近はジャグリングだけじゃなく、研究発表なんかも見にいくようになっている。
今回は主に機械学習の研究室の説明を聞きに行った。

聞きに行って何か得られるということはほとんどないけど、どんなことをやっているのか聞くのは楽しい。そして、うらやましかったりもする。やっぱり僕もあそこに行くべきだった、と思う。
でも、もしかすると直接行っていたらそうは思っていなかったかもしれないし、難しい。

研究室発表で少し残念なのは、やっぱりあんまり詳しくは説明してもらえない所だ。誰を対象にするかによってしまうので、難しいとは思うけど、もう少し一つ一つ順を追って、どういうことが目的で、どうしてこういうことができるのか、というところを説明してもらえると嬉しい。

どうも、研究そのものの意味とかを、きちんと理解せずに説明しているところがあるようにも思う。何が大切なのか、何が新しいのか、他の同様の研究と何が違うのか、そんなところがもう少し分かりやすく説明されていると嬉しい。
何が新しいとか、他とどう違うか、というのは、説明し始めると難しくなりすぎてしまうのかもしれない。

Twitterの情報をまとめて、つぶやきのランキングをつけるなんていうシステムを作ったりしたらしい。もうすぐ公開されるらしい。

簡単には理解できる話ではなかったけど、彼らに負けないように勉強しようと思えたので、よかった。

VirtualBoxからVmwareへ

最近メインマシンをUbuntuに変更して使っている。
たまにどうしてもWindowsが必要になることがあるため、Virtualマシンが欲しいと思って、いままでVirtualBoxを使っていた。

ただ、なんとなくいまいちな感じがして、お試し版でVmware Workstationも入れてみた。

やっぱりVmwareの方が良い感じがする。

で、問題はもともとVirtualBoxで作ったハードディスクをVmwareにどうやって移行すればよいのかということ。

以下の方法で出きるらしい。

まず、qemuをインストール


sudo apt-get install qemu

その後で以下のコマンド


qemu-img convert -O vmdk SRC.vdi DEST.vmdk


それなりに時間はかかるけど、これでいけた。あとはVmwareでマシンを作って、このHDDをつなぐだけ。しかし、VirtualMachineてよくできてるよあぁ、と感心する。

だいたいあってた

昨日の試験。どっかの学校が出してる模範解答みたいのがあったので採点してみた。
http://www.itec.co.jp/siken/sokuho/2010a/pdf/2010aAPpm.pdf

午前はIPAが出してるのでそれを使った。

結果は
午前は73/80なので、問題無し
午後は、はっきりとした間違いが4問。あとは、記述式がどう採点されるかだけど、趣旨はほとんど同じことをかいているので、まあ問題なさそう。

あとは、マークシートとか変な間違いさえしていなければ大丈夫だろう。

さて、次は・・・CCNAあたりを考えている。

応用情報技術者試験

応用情報技術者試験を受けてきた。
今回は比較的楽だった。たぶん受かってるだろう。
feedSubscribe to my feed