憂鬱な午後のひととき


7月31日_
0日目: Pythonでhello world.
    ↓
半日後: boost::pythonを試すが, VC2005では動かない.
    ↓
       Python自体をVC2005でコンパイル(大変).
       が, まだ動かない.
    ↓
1日目: msvccompiler.pyの適当な書き換えでひとまず動作. やったね.
       でもまだifの書き方知らんかった.
    ↓
2日目: 次にpy2exeを試すが, これも駄目. 結構粘ったけど
       ライブラリの互換性を解決できない.
    ↓
今: 諦めてVC2003を使う(おぅ…).
7月29日_
暑すぎるのもかなわんが, 湿度の高いのも辛い.
7月26日_
周りの人の発表を聴く. うー, 私も早く何か作りたいなあ. 何はともあれ, やってみようと思ってから出てくるまでのスパンの短さに驚く.
7月24日_
というわけでsha1.jsとmd5.jsを公開しました. Core2 Duoだと6倍ぐらいだが, PentiumDでは8~10倍ぐらい速い@SHA-1(vs. Paj's Home)ようだ.
7月23日_
結局ひたすらループアンロールが一番速いというしょうもない結論に. 配列が実は配列でないというのが痛いなあ.
7月19日_
と言いつつ, しつこくいじったら2倍速くなった(for Firefox). ただしめっちゃ汚いけど. ま, ライブラリだからええか.
7月18日_
最近メッセージダイジェスト関数ばかりいじってるな. 飽きてきたので他のをしよう.
7月16日_
San's Home PageにあるAESをCBCモードで使おうとしたら, どうもうまく復号できない. 調べたらブロックの境界でIVの更新がされていなかった. というわけでrijndael-api-fst.cの166行目あたりに追加して修正.
    case MODE_CBC:
        iv = cipher->IV;
        for (i = numBlocks; i > 0; i--) {
            ((u32*)block)[0] = ((u32*)input)[0] ^ ((u32*)iv)[0];
            ((u32*)block)[1] = ((u32*)input)[1] ^ ((u32*)iv)[1];
            ((u32*)block)[2] = ((u32*)input)[2] ^ ((u32*)iv)[2];
            ((u32*)block)[3] = ((u32*)input)[3] ^ ((u32*)iv)[3];
            rijndaelEncrypt(key->rk, key->Nr, block, outBuffer);
            iv = outBuffer;
            input += 16;
            outBuffer += 16;
        }
+       memcpy(cipher->IV, iv, 16);
        break;
7月15日_
『数学ガール』(結城浩)
正直なところあまり「萌え」なかった. 高校のときに読んだとしてもζ(2)の算出ぐらいかなあ. 中学のときに読んだ『微積分のはなし』(大村平)(これはお勧め)や Z会のやたら突っ走ってた微積分の問題集(名前失念 ε-δ, テイラー展開, オイラーの公式が出てたやつ)の方が萌えたなあ. 読みにくかったのはテトラちゃんとミルカさんとで読者に必要な数学の仮定が異なるのに, それが交互に出てくるところ. 細かいこと言えば複素平面での掛け算の図形的な意味, 微分のルールでは線型性を強調して欲しかった. そちらの方が本質だと思う. あと, 参考文献の「大学院生・専門家向け」はレベル設定がおかしい.
7月14日_
・知人が歌うのでブレーミアへ. 全身で歌うのを見てるとこっちも気持ちよくなる. 満喫しました.
・↓胃じゃなくて肋間神経痛らしい. 最初六感ってなんだろうと思った. 1カ月ぐらい前から朝起きたときだけ人指し指が痛くて曲がらないのもそれか?
7月13日_
・勉強初めて約1週間. MD5 JavaScriptで検索して出てくるいくつかのページの実装の3倍ぐらい速いのができた. そのうち公開しよう.
・めちゃくちゃ胃が痛い. 病院いった方がええかな.
7月12日_
Mac miniをサーバにしようと設定したが, 設定後モニタが繋がってないと起動しないことが判明. モニタセンスというらしいがwebで調べてもそれをoffにする方法が見当たらない. そんな余計な機能要らんのに困ったな.
7月11日_
『魔王』(伊坂幸太郎)
ファシズムや憲法などがでてくるけど「それらはテーマではない」, しかし「小道具でもない」とのこと.
賢明で有能な政治家であれば, 唐突に大胆なことをやるのではなく, まずは楔を打ち, そこを取っ掛かりに, 目的を達成する. そうする. 俺ならそうする
この国の人間はさ, 怒り続けたり, 反対し続けるのが苦手なんだ
『国歌は僕らをまもらない』を読み, 『玻璃の天』を読んで「考えろ考えろ.」
7月10日_
2 たとえば単純加算の
    var x = 0;
    for (var i = 0; i < 1000000; i++) {
        x += i;
//        x += i & 63; // (B)
    }
の実行速度はIEに比べてFirefox(FF)では8倍近く遅い. これは途中からxの値が231を超えるため(cf. STORE_INT)である. その証拠に(B)ならばIEとFFは殆ど同じ速度である. 他にもFFでは1 >>> 1に比べて(-1) >>> 1が10倍ぐらい遅かったりする. したがって上記加算は231を超えないように, たとえば
    var xL, xH,;
    xL = xH = 0;
    for (var i = 0; i < 1000000; i++) {
        var t = xL += i;
        if (t >= (1 << 30)) {
            xL -= 1 << 30;
            xH++;
        }
    }
    var x = (xH * (1 << 30)) + xL;
とすると7倍ぐらい速くなり, IEの単純加算に比べて20%ほどの速度劣化ですむ.
当然極めて環境依存な話なので数値はあくまで目安ということで
7月9日_
such that
数学の論文を読んだことがあればこういう突っ込みはしないだろうなあ. わたしゃ英語の細かいニュアンスは分からんがsuch thatとwhereは使い分けてたかな.
・少しゆっくりめの出勤時間(=普通の人の出勤時間)だったのでラッシュ初体験. 足ついてなくても倒れなさそう.
7月7日_
FirefoxのJavaScriptの整数の実装は231を超えなければint, そうでなければdoubleを使う. したがって同一の式でも数値の内容によって速度が変わるという実に奇妙な現象が発生する.
7月6日_
遅まきながらJavaScriptの勉強を始める. まずはMD5を作ってベンチを取ってみた. C++版の約2000分の1の速度だった. クロック換算で数MHzのCPUか. 8bit時代に逆戻りだなあ.
7月5日_
xbyakをちょろちょろいじる. その性質上万人受けはしないんやけど, 何かインパクトのある使い方ないかしら.
7月4日_
初めて整列乗車というのを見た. みんな綺麗に動くなあ.
7月3日_
大臣辞任とか, 「選挙前だから」という議員の多いこと, 多いこと. なんちゅう刹那的な. せめて10年先ぐらいの日本を考えて動けよな.
7月2日_
・いざ刺激に満ちた新天地へ. 自由度が高すぎるというのも大変ですが頑張らねば.
・本当はPairing 2007にも行ってみたかったんだが.
・『セヴィラの理髪師』(ボーマルシェ作 進藤誠一訳)
どこがと明確に言えないんやけど同作家の『フィガロの結婚』の方が面白く感じたな.

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