憂鬱な午後のひととき


5月28日_

整骨院

足を強めにくじいたのでちょいちょい通っていた整骨院に行く. とぼとぼ歩いていくといつもの場所にビルが無い. あれ, また迷子になったかなあと思ったけど, 付近の景色は確かにそのあたり.

整骨院に電話したら「現在おかけになった番号は...」. うーむ, ビルごと消滅していたのか. どこかに移転したのかなあ.

5月26日_

送信者と受信者

受信者の情報によって, 送信者が何を送ったのか分かるというのは普通と逆な感じ.

光子を送信する人(A)が情報の送信者と思ったけど, そうじゃない. ランダムに光子を送り, 光子受信者(B)は光子が重ね合わせられた状態から都合のよいものをとりだして(A)に情報を送り返す. 情報は(B)から(A)に渡す感じのようだ.

5月25日_

量子暗号に30年ぶりの新原理

量子暗号通信って, 盗聴したらしたことはばれるんだけど情報は取られちゃうと思っていたけど(認識間違ってたらすいません), これはそもそも盗聴できない新しい方式らしい. この分野全然知らないけど, ざっとみる限り既存原理や手法の組み合わせたシンプルな手法で実現してるので筋がよさそうに見える.

送信者は, 5番と15番のパルスに自分が与えた位相変調の記録から, 受信者の決定したビット値がわかり、これで1ビットの情報が送れたことになります.

受信者の情報によって, 送信者が何を送ったのか分かるというのは普通と逆な感じ. これを使って送信者はどっちのビットを送ったか確認しながらデータを組み立てるのかなあ. 棒グラフを見ると完全に盗聴できないというわけでもないんだな. これはアルゴリズムに組み合わせ的な量も含んでるから?

5月24日_

『古都がはぐくむ現代数学』(内村直之)

数理解析研究所の話. KABAも含めてその誕生や経緯などへー, へー, へーと言いながら読む. 改めてもの凄い先生が沢山いらっしゃった(いらっしゃる)んだなあと感嘆する.

少なくとも修論発表までは自分なりに頑張ってたと思うのだけど, 博士後期課程に行く直前でなんかやらかしたんだよなあ. それがずっと尾を引いてしまった.

何かできたかというと何とも言えないけど, その環境をものにできなかったのが, 本当にもったいなかった.

5月22日_

SSD

会社のマシンのHDDがどうにも遅いと思うようになってSSDに交換した. ついでにメモリも増やしたので結構快適になった.

家のマシンをubuntu 14.04に更新.

何かトラブルが出るかと思ったら何事もなくすんなりできた.

5月18日_

accepted

属性ベース暗号の実装論文Software implementation of Attribute-Based Encryption(共著)が IEEE Transactions on Computersに通った. ありがたい.

5月16日_

解釈

内閣が好き勝手に解釈してたら何でもあり. おかしいだろう. 自衛権や9条がどうのこうのという以前の問題. そんなのを認めてたら別の内閣(同じかも)が生存権やその他の権利も勝手に制約しかねない.

>strstr

RaphaelJさんはasmとの比較は意味がないと返事してるけど, この文字列探索の敗因のポイントは, 凝ったアルゴリズムが, テーブル引きやスキップ数が変数になることによる分岐予測ミスやパイプラインの乱れのコストをリカバーできないことだと思うんだよな.

mdi

mdiという拡張子のファイルを受け取ったが開けない. webで探すとどうやら昔のOfficeは対応していたようだ. 私の持ってるOffice2010は非対応. viewerを探したが巨大なソフトしか見当たらない. もっと探したらMicrosoft自身によるTIFFへの変換ソフトが見つかったのでそれを使った(なんとコマンドラインツール!). 変換後の中身を見たらテキストで十分な内容だった….

5月15日_

strstr

試してみた(vs mie::strstr)けどSSE4.2に比べてとくに速いというわけではないようだ(むしろ遅い?).

昔最適化勉強会でしゃべったときに比べてgccの実装も速くなってるのでもう標準のstrstrでいいかなという. NULL終端でないfind()系や特殊な範囲指定系は意味があると思うけど.

自分のmie::stringはコード片を使いたいときのリファレンス実装として作ってる. あれを毎回一から書くのは無理だし.

5月14日_

並行/並列プログラミング参加

kumagiさん目当てで. とてもよかった. 発表時間が1時間で質問時間もあればもっとよかった. 駅に着いてから会場につくまで意外と手間取ってしまった. 変な出口から出てしまったのかな.

バグが逃げた

ここ何日か会社でバグを追いかけていて見つけたと思ったのだけど, もう一度再現させようとしたら出なくなってしまった. うーむ, また再現させるところからやり直しじゃ. 残念.

5月11日_

カラス

公園に行って食べようかと食パンの残りを自転車の前かごに入れて置いてたらカラスに持って行かれた. 奈良の鹿に石焼き芋食べられたり, 鎌倉のとんびにおかし持って行かれたことはあるがカラスは初めてだな.

5月10日_

『リレキショ』(中村航)

冒頭, 「弟になったばかり」らしい僕が登場する. アルバイト先ではうまくだましてるのか, けったいな姉や山崎さん(最初男性と思ってた)って何者なのか. どういうミステリなのか引き込まれる. しかし話は淡々と進む. というか事件は何もおきないという意味では進まない. 突如話に割り込んできたウルシバラさんとどうなるの, というあたりで一気にもりあがったらそのまま話が終わってしまった.

疑問の答えは何も提示されてないのだが不思議に読後感は悪くない. 味噌汁の配分の手紙がツボにはまった.

5月9日_

『こころ』(夏目漱石)

新聞連載でやってて読み始めたら, 毎日少しずつ読むのが面倒になって読んでしまった. やっぱ「先生と遺書」は圧巻だなあ. とても引き込まれる. 改めて全体を読み直すと, どうでもいいところも含めて, あ, そうだったんだと思うところがいろいろ.

たとえば当時の大学は9月の入学式だったそうだ. 4月の桜で入学って100年も経ってない慣習なんだ. なんとなくもっとずっと前のものだと思い込んでいた. でも, そもそも大学ができてきたのが100数十年前か.

学生の「私」は大学を卒業してもすぐ職につくわけじゃない. なんとなくのんびりしてる. これは家が比較的裕福で当面お金に困らないというのもあるけど. それから父が危篤のときに「先生」が気になって東京に出かけてしまう. これも忘れてた. 解説では真面目さゆえというものだったが.

あと, 本当に当て字が多い. 中学, 高校のとき国語の試験前は教科書の該当範囲の文章を丸覚えしようとしてた. 『こころ』の一部が載ってたときも こんな当て字をするんだとか, 結構, 漢字も融通が利くもんなんだなとかふむふむと思いながら覚えていたような. 当て字をうっかり使ってしまわないように注意してたのを思い出す.

5月3日_

VCはデフォルトのmoveコンストラクタ/代入演算子を作らない

クラスAがmove対応してるのでそれをそれを単にメンバに持ってるクラスBをmoveしたら, Aのmoveが使われるだろうと思ったらそうならない.

#include <stdio.h>
#include <utility>

struct A {
    A() { puts("A cstr"); }
    A(const A&) { puts("A copy cstr"); }
    A(A&&) { puts("A move cstr"); }
};

struct B {
    A a;
};

int main()
{
    B b;
    B c = std::move(b);
}
// Visual Studio 2013
A cstr
A copy cstr // A move cstrを期待する

moveされてることを期待してるとパフォーマンスの点で困ることがあるかもしれない. 規格上はmoveされるのが正しいが, 今のところ面倒でも明示的に書く必要がある. Explicitly Defaulted and Deleted FunctionsのNote参照.

Visual Studio does not support defaulted move constructors or move-assignment operators as the C++11 standard mandates.
5月2日_

『砂の女』(安倍公房)

砂丘に昆虫採集に出かけた主人公が砂穴のところに拉致される. 常にまとわりつく砂の描写がリアルで読んでる方も始終むずむずする. 似たタイトルの『わらの女』(カトリーヌ・アルレー)を思い出す. あちらも救いの無い話だったが, こちらも似たようなもんか. まだ生きてる分, 救いはある?

5月1日_

伸長攻撃

ハッシュ関数を使って認証的なことをしたいときに秘密の鍵sを用意して, メッセージmに対してHash(s || m)をチェックする, ということをしたくなる.

が, SHA-1やSHA-2などを使ってこれをやってはいけない. たとえばSHA-1はmが64byteの倍数になるようにpaddingしたあと, 64byteごとのブロックに対して繰り返す. したがってHash(s||m)の値がわかれば, それに対して値をくっつけたHash(s||m||padding||...)の値は sを知らなくても計算できる. これを伸長攻撃という.

で, 勉強のために自分でも作ってみた(len-ext-attack.cpp). まあ, 実際に使いたい人はHashPumpというツールがあったりする.


御意見は光成滋生<herumi@nifty.com>までお願いします