My Daily Programming Life...
暗号技術入門
「暗号技術入門」結城浩 ソフトバンク クリエイティブ株式会社
を読んだ。
対称暗号
公開鍵暗号
ハッシュ関数
メッセージ認証コード
デジタル署名
疑似乱数生成
これらを題材に順番に説明して、現在の暗号技術のなかでどのように使われているかを説明している。
どのように使われているか、どのような意味を持つか、なぜそれを使うのか、またこの技術で解決できない問題は何なのかということを順番にわかりやすく説明している。
暗号の作成者、実装者視点ではなく、利用者視点で書かれている。
という意味で、自分でプログラミングで直接暗号を使う必要はないけど、なんだかいまいち暗号通信がどうなっているのかよく分からない、HTTPSがどうして安全なのかよく分からない、そもそも安全なのか不安だという利用者向けの入門書だった。
個人的にはもう少し暗号技術その物の導入を期待したので、ちょっと物足りない感じだった。公開鍵暗号、デジタル書名の使われ方が分かっている人であれば、得るものは多くはないかもしれない。もう少し暗号そもののの説明が欲しい感じがした。ブロック暗号の話はかかれているが、ストリーム暗号は言葉が出てきているだけで具体的な説明はなかったりもする。
暗号技術全体の像を掴む上ではいいかもしれない。ただし、ちょっとページ数をかけすぎている気がする。それだけ丁寧だということはあるけれど。
もう少し簡単に、全体像を掴みたい人は「マスタリングTCP/IP SSL/TLS編」がよいと思う。プロトコルに関する本ではあるけど、最初に基本的な暗号全体に関する説明がある。これを読んで、もうちょっと詳しく、または丁寧な説明が欲しい人は「暗号技術入門」を読むのがいいと思う。
東大でもOCW
ここのところオンラインの授業について書いているが、東大でも数年前から授業を配信しているらしい。
今日のニュースにはiTunes Uに参加するという記事があった。
iTunes Uは大学の授業や教材を配信する目的で設けられたものらしい。
東大のコンテンツはStanfordとかUCBerkeleyに比べるとちょっと少ない感じがするけど、これからきっといいものが出てくるんだろう。
こんな素晴らしいコンテンツはみんな利用すべきだ。東大に行けなくたって東大の授業受けられるんだから、すばらしい。まあ実際にそこで入学して受けるのとは、環境などの点で異なるかも知れないけど、これだけの教育機会が得られるというのは本当に素晴らしいと思う。
今日のニュースにはiTunes Uに参加するという記事があった。
iTunes Uは大学の授業や教材を配信する目的で設けられたものらしい。
東大のコンテンツはStanfordとかUCBerkeleyに比べるとちょっと少ない感じがするけど、これからきっといいものが出てくるんだろう。
こんな素晴らしいコンテンツはみんな利用すべきだ。東大に行けなくたって東大の授業受けられるんだから、すばらしい。まあ実際にそこで入学して受けるのとは、環境などの点で異なるかも知れないけど、これだけの教育機会が得られるというのは本当に素晴らしいと思う。
ただで授業を!
前回のポストで、フリーで受けられる授業をまとめるといいかもしれないということを書いた。
やっぱり、すでにやっている人がいて
http://freescienceonline.blogspot.com/
にかなりたくさんまとまっている。僕が知っている奴は全部ここにあるし、ここにあってこれいい、っていうのも多々ある。
すごいのは、これを書いている人はこのほかにもブログを持っていて、それはプログラミングに関するブログだったりする。そして、その中で実際にこの授業を端から受けてそのノートや、内容を公開している。かなりシリアスにオンライン授業を受けていて、そのノートは普通の授業を受けるのとまったく変わらないような内容になっている。
アルゴリズムの授業を受けた内容は以下にまとめられている。(約1年かけてすべての授業を受けて、それぞれブログに書いている!すごい。)
http://www.catonmat.net/category/introduction-to-algorithms
ぜひ有効活用したいとともに、どうようのまとめページを作りたいと思っている。
やっぱり、すでにやっている人がいて
http://freescienceonline.blogspot.com/
にかなりたくさんまとまっている。僕が知っている奴は全部ここにあるし、ここにあってこれいい、っていうのも多々ある。
すごいのは、これを書いている人はこのほかにもブログを持っていて、それはプログラミングに関するブログだったりする。そして、その中で実際にこの授業を端から受けてそのノートや、内容を公開している。かなりシリアスにオンライン授業を受けていて、そのノートは普通の授業を受けるのとまったく変わらないような内容になっている。
アルゴリズムの授業を受けた内容は以下にまとめられている。(約1年かけてすべての授業を受けて、それぞれブログに書いている!すごい。)
http://www.catonmat.net/category/introduction-to-algorithms
ぜひ有効活用したいとともに、どうようのまとめページを作りたいと思っている。
パズル
ヘルニアで寝込んでしまった。早1か月。いまだに10分以上立ったり座ったりはできない。
つらい・・・。
まあ、そんなことを言っていてもどうもならないし、病院に行ってはいるので、そこで言われるようにするしかないということで、勉強をしようと思って、本なりビデオなりを見ている。
そんなとき、以前にFacebookの採用情報欄にパズルが載っていたのを思い出した。プログラミングの問題が載っていて、それを解いて送ると、まあ、採用に少しは考慮してくれるみたいな感じのやつ。
ただし、結構難しい。
というわけで、今回はこれをやってみることにした。
http://www.facebook.com/careers/puzzles.php#!/careers/puzzles.php?puzzle_id=8
Peak Trafficという問題。
いろいろアルゴリズムなどを調べながらやった。
今回はちょっと1日当たりパソコンを触っていられる時間も限られているので、2週間ぐらいかけてちょっとづつ調べたり、プログラム書いたりして完成させた。
Facebookにこのトピックに関しての掲示板があったのでそこも参考にした。すでに解いている人が、テスト用データやどのくらい処理に時間がかかったかなどを載せている。
http://www.facebook.com/careers/puzzles.php#!/topic.php?uid=15325934266&topic=6943
とりあえず、今日Facebookに送ったところ、正解とのこと。扱ったことのないデータ構造やアルゴリズムだったのでそれだけでもかなり勉強になった。
ただ、何日か前に一応答えを出せるプログラムは書いたのだけれど遅いのが気になって少し何とかならないかと挑戦したけど、だめだった。
さっきの掲示板に投稿している人は、あるテストデータ(60MB程度)を処理するのにPythonで書いて、10秒以内だそうだ。ちなみに僕のはRubyで書いて6分;;。お話になりません。
どうしたらいいんだろうと考えたけど、だめだった。まだまだ考えられる余地はあるので、まだがんばる。
PythonとRubyの差も多少はありそうだが、そんなレベルの違いじゃないな。
ちなみに、そんなときに出会ったのが以下のレクチャー
(これ自体はこのとはの直接の答えではないけど、何か得られるものがないかと思って見た。)
この前のMITの授業といい、こんなのが見られるなんて何て素晴らしいんだ。
ほかにもUCBerkleyのStructure and Interpretation of Computer Programを使った授業もYouTubeで見られる。
この辺は、どこかのページにテキストブックとともにまとめておく価値がありそうだ。
つらい・・・。
まあ、そんなことを言っていてもどうもならないし、病院に行ってはいるので、そこで言われるようにするしかないということで、勉強をしようと思って、本なりビデオなりを見ている。
そんなとき、以前にFacebookの採用情報欄にパズルが載っていたのを思い出した。プログラミングの問題が載っていて、それを解いて送ると、まあ、採用に少しは考慮してくれるみたいな感じのやつ。
ただし、結構難しい。
というわけで、今回はこれをやってみることにした。
http://www.facebook.com/careers/puzzles.php#!/careers/puzzles.php?puzzle_id=8
Peak Trafficという問題。
いろいろアルゴリズムなどを調べながらやった。
今回はちょっと1日当たりパソコンを触っていられる時間も限られているので、2週間ぐらいかけてちょっとづつ調べたり、プログラム書いたりして完成させた。
Facebookにこのトピックに関しての掲示板があったのでそこも参考にした。すでに解いている人が、テスト用データやどのくらい処理に時間がかかったかなどを載せている。
http://www.facebook.com/careers/puzzles.php#!/topic.php?uid=15325934266&topic=6943
とりあえず、今日Facebookに送ったところ、正解とのこと。扱ったことのないデータ構造やアルゴリズムだったのでそれだけでもかなり勉強になった。
ただ、何日か前に一応答えを出せるプログラムは書いたのだけれど遅いのが気になって少し何とかならないかと挑戦したけど、だめだった。
さっきの掲示板に投稿している人は、あるテストデータ(60MB程度)を処理するのにPythonで書いて、10秒以内だそうだ。ちなみに僕のはRubyで書いて6分;;。お話になりません。
どうしたらいいんだろうと考えたけど、だめだった。まだまだ考えられる余地はあるので、まだがんばる。
PythonとRubyの差も多少はありそうだが、そんなレベルの違いじゃないな。
ちなみに、そんなときに出会ったのが以下のレクチャー
(これ自体はこのとはの直接の答えではないけど、何か得られるものがないかと思って見た。)
この前のMITの授業といい、こんなのが見られるなんて何て素晴らしいんだ。
ほかにもUCBerkleyのStructure and Interpretation of Computer Programを使った授業もYouTubeで見られる。
この辺は、どこかのページにテキストブックとともにまとめておく価値がありそうだ。
Vimの不明な挙動
今日、とあるファイルをVimを使って編集しようとしたら、なぜかテキストフォーマットが効かない。
XMLだったのだけれど、色がついたりいつもなら自動的にするはずなのに。
いつもと使っているPCが違ったので、なんかVIMRCとかがおかしいんだろうとか、そんな風に思って、
いつもの設定にファイルを上書きしたりして、戻した。
んー、でも治らない。なんでだ。
Vimはここから落としてきたもの。
http://www.kaoriya.net/
んで、仕方なくいつも使っている環境と見比べながらいろいろ試した。
バージョンが違うのか、VIMRC,GVIMRCの場所や名前がおかしいのかなど調べたけどよくわからず。
新しい環境は、Windows 7で、僕はVimのファイルをProgram Files下に全部コピーしていた。
なんとなくそれがだめなのかなと思って、すべてC:\直下に移動。
するとうまくいった。
あら、どういうことだ。でもなんかおかしい。
で、今度は、Program Files下だけれど名前を変えてみた。そしたらうまくいった・・・。
結局行き着いた先はVimを入れているフォルダの名前を1文字変えるだけ。それだけでうまくいく。
C:\Program Files\Vim72
を
C:\Program Files\Vim7
にするだけでいい。というかこうじゃなくてもVim72じゃなければいいみたい。
ということで
C:\Program Files\Vim
とした。そういえば前の環境もこの名前にしていた。
でも、これだけで状況がこんなに違ってしまうってどういうことだ?
Vim本体がC:\Program Files\Vim72という名前に対してセンシティブなのはなんでだ。
ちなみに環境変数なんかも見てみたけど、とくにこれらの値はなかった。ほかに考えられるのはなんだろうか。
誰か知ってたら教えてください。
XMLだったのだけれど、色がついたりいつもなら自動的にするはずなのに。
いつもと使っているPCが違ったので、なんかVIMRCとかがおかしいんだろうとか、そんな風に思って、
いつもの設定にファイルを上書きしたりして、戻した。
んー、でも治らない。なんでだ。
Vimはここから落としてきたもの。
http://www.kaoriya.net/
んで、仕方なくいつも使っている環境と見比べながらいろいろ試した。
バージョンが違うのか、VIMRC,GVIMRCの場所や名前がおかしいのかなど調べたけどよくわからず。
新しい環境は、Windows 7で、僕はVimのファイルをProgram Files下に全部コピーしていた。
なんとなくそれがだめなのかなと思って、すべてC:\直下に移動。
するとうまくいった。
あら、どういうことだ。でもなんかおかしい。
で、今度は、Program Files下だけれど名前を変えてみた。そしたらうまくいった・・・。
結局行き着いた先はVimを入れているフォルダの名前を1文字変えるだけ。それだけでうまくいく。
C:\Program Files\Vim72
を
C:\Program Files\Vim7
にするだけでいい。というかこうじゃなくてもVim72じゃなければいいみたい。
ということで
C:\Program Files\Vim
とした。そういえば前の環境もこの名前にしていた。
でも、これだけで状況がこんなに違ってしまうってどういうことだ?
Vim本体がC:\Program Files\Vim72という名前に対してセンシティブなのはなんでだ。
ちなみに環境変数なんかも見てみたけど、とくにこれらの値はなかった。ほかに考えられるのはなんだろうか。
誰か知ってたら教えてください。
ViEmuでCtrl+CやCtrl+Vを有効にする
Visual StudioでViと同様のキー操作を可能にするためのツールにViEmuがある。これを使うとほとんどViと同様の操作でテキスト編集ができるため、Viを普段使っている人にはとっても便利。
ただし、デフォルトだとCtrl+CやCtrl+VはViのキーバインドではなく、標準のコピー、ペーストになっている。
Ctrl+Cやコマンドキャンセル、Ctrl+Vはブロック選択なので、使いたい人は使いたいだろう。
実は、これらを有効に(つまりViと同様のキーに)するのは簡単。
Visual Studioのメニュー
「ツール」→「オプション」と選択し、ダイアログで
「ViEmu - General」のタブを開く。「Keyboard...」を選択し以下の画面へ。

重要なのは右下の「Key scanned, with Ctrl...」とあるテキストボックス。
ViEmuはここにある文字とCtrlの組み合わせが、VisualStudioとViとぶつかるかどうかをスキャンする。
たとえば、このテキストボックスに「C」とある場合、ViEmuは「Ctrl+C」がVisualStudioとViとで衝突が起きるかどうかを検出する。逆にこのテキストボックスに「C」がなければViEmuはそれについては何もしない。つまりVisual Studio標準のままにする。
デフォルトでは、このテキストボックス内にはVとCは含まれない。つまり、そのまま放置しているということだ。
というわけで、この中にCとVの文字を上の画像のように入れる。そして「Apply」キーを押す。
ただし、これだけではViEmuはまだこのキーバインドを入れ替えない。
このダイアログボックスの右上のリストには、衝突が検出されたもののリストがある。
これを置き換えたい(つまり、Viのキーバインドにしたい)場合には、その下にある「Save and Remove」を押す。
これで、完了。
このダイアログのなかのリストとボタンの関係は、若干直観的ではない。理解するまでにちょっと時間がかいかる。
とりあえず、Ctrl+VやCtrl+Cを有効に(Viと同じに)したければ上のことだけやればよい
ただし、デフォルトだとCtrl+CやCtrl+VはViのキーバインドではなく、標準のコピー、ペーストになっている。
Ctrl+Cやコマンドキャンセル、Ctrl+Vはブロック選択なので、使いたい人は使いたいだろう。
実は、これらを有効に(つまりViと同様のキーに)するのは簡単。
Visual Studioのメニュー
「ツール」→「オプション」と選択し、ダイアログで
「ViEmu - General」のタブを開く。「Keyboard...」を選択し以下の画面へ。

重要なのは右下の「Key scanned, with Ctrl...」とあるテキストボックス。
ViEmuはここにある文字とCtrlの組み合わせが、VisualStudioとViとぶつかるかどうかをスキャンする。
たとえば、このテキストボックスに「C」とある場合、ViEmuは「Ctrl+C」がVisualStudioとViとで衝突が起きるかどうかを検出する。逆にこのテキストボックスに「C」がなければViEmuはそれについては何もしない。つまりVisual Studio標準のままにする。
デフォルトでは、このテキストボックス内にはVとCは含まれない。つまり、そのまま放置しているということだ。
というわけで、この中にCとVの文字を上の画像のように入れる。そして「Apply」キーを押す。
ただし、これだけではViEmuはまだこのキーバインドを入れ替えない。
このダイアログボックスの右上のリストには、衝突が検出されたもののリストがある。
これを置き換えたい(つまり、Viのキーバインドにしたい)場合には、その下にある「Save and Remove」を押す。
これで、完了。
このダイアログのなかのリストとボタンの関係は、若干直観的ではない。理解するまでにちょっと時間がかいかる。
とりあえず、Ctrl+VやCtrl+Cを有効に(Viと同じに)したければ上のことだけやればよい
Windows 7でSMBサーバにつながらないとき
Windows 7から、Linuxで動作しているSMBサーバにつなげようとしたらつながらないという問題に遭遇した。
Windows XPとかならちゃんと見える。
いろいろ調べた結果よくわからないけど、以下のような解決方法
http://www.tomshardware.com/forum/75-63-windows-samba-issue
とりあえず、これでつながるようにはなった。セキュリティ上問題があるかどうかは知らないけど。
Windows XPとかならちゃんと見える。
いろいろ調べた結果よくわからないけど、以下のような解決方法
http://www.tomshardware.com/forum/75-63-windows-samba-issue
Control Panel - Administrative Tools - Local Security Policy
Local Policies - Security Options
Network security: LAN Manager authentication level
Send LM & NTLM responses
Minimum session security for NTLM SSP
Disable Require 128-bit encryption
とりあえず、これでつながるようにはなった。セキュリティ上問題があるかどうかは知らないけど。
