憂鬱な午後のひととき


8月31日_
VC2005で漢字を含むファイル名に対してfstreamを使う前にはsetlocale(LC_CTYPE, "");を設定しないといけない. だが, そうしてると今度は漢字を含む文字列をstd::coutに出力できない(printfだと大丈夫なので全然気がつかなかった).
最初, fstream()関数をsetlocale(LC_ALL, ""); setlocale(LC_ALL, "Japanese");で毎回挟むか?(んな馬鹿な)と思ったが VC8のfilebufとsetlocaleに対処方法が. でもこれだと私の環境では駄目っぽい(一見うまくいくが一行が大きいと駄目).
# cvt.max_length() == 5なんだけどy-hamigakiさんの環境では違うのかしら.
結局
    /* だいたい一行に出せるバイト数 */
    std::cout.rdbuf()->pubsetbuf(0, 4096);
    std::setlocale(LC_ALL, "");
としてファイル名もcoutも無事扱えることを確認(一行が極端に大きいとこれも駄目なんやけど).
/* サンプル */
int main()
{
    using namespace std;
    cout.rdbuf()->pubsetbuf(0, 4096);
    setlocale(LC_ALL, "");

    printf("漢字OK1\n");
    string a = "漢字OK2";
    cout << a << std::endl; // OK
    { ofstream ofs(a.c_str()); } // OK

    ostringstream os;
    os << a;
    cout << os.str() << std::endl; // OK
    return 0;
}
8月30日_
先月の電気料金4491円. いつもは三千円前後で済ませてるが, 流石に暑すぎた. 関西にいたときはそもそも部屋にエアコンが無かったから耐えるしかなかったけどあると使っちゃうなあ.
8月29日_
2カ月以上前から手の指が痛いのはどうやら腱鞘炎とかばね指なのかも. 最近ますます痛みが強くなって, キーボード打ちにくくて実に困る. 治すには「指を使わない」ことだそうだがそういうわけにもいかんし.
8月28日_
皆既月食…どころじゃない凄まじい雷雨. あまりに雷が落ちるので怖くて家中のコンセントを引っこ抜いてやり過ごす. 暴力的な天気だなあ.
8月27日_
なんで落ちるんやと1分ほど悩んだ.
struct A{
    static void func();
};

struct B : A {
    void func() {
        A:func();
    }
};
A:はラベルになっちゃうのか.
8月26日_
SetFilePointer
歴史的事情は分からんでも無いが, こういう風に引き数を入力と出力で兼用する上, 例外値を設けるのを止めてくれ. 戻り値も一度読んだだけじゃわけわかめ. トラップするのが大変じゃないか.
8月25日_
『Short Coding』(Ozy)
熱い, 熱すぎる. 残念ながら今, 一行ずつ吟味しながら読む余裕がないのやけど, Ozyさんの魂が全面的に現れて訴えかけてくる. blogを見てるとよく「凄いおっさん」になると出てたので勝手に40歳ぐらいかと思っていたら30歳になられたばかりではないか. ショック.
8月23日_
皆でタクシー乗り継いでぐるっと回って少し東京の地理感覚に慣れる. 品川とか田町とか四谷とか. 電車で通過したことはあるけど下りたこと無かったもんなー.
8月22日_
思っただけで駄目人間なら, 書いてしまった私は(略).
もちろんフルasmじゃないけど
8月20日_
class Error;

func()
{
    try {
        bool isFail = true;
        if (isFail) Error();
    } catch (Error& e) {
        std::cout << e.what() << std::endl;
    }
}
思い込みは恐ろしい. デバッガで見ながら何故例外が発生しないんだと30分悩んでしまった. throwを書き忘れても文法エラーじゃないのか….
8月19日_
メモリリークの検出, _CrtDumpMemoryLeaks
んー, main()の先頭で
    _CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
としておけば_CrtDumpMemoryLeaks()を明示的に呼ばなくても終了時出力ウィンドウにでる. コンソールに出したければ
    _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
    _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDOUT);
を追加すればOK. このあたりはVC6から変わってないと思う.
8月14日_
乗車前に230円の切符を買い, 乗車時に乗車駅の番号が書かれた紙を受け取るタイプのバスに乗る. 初めてだったので乗り過ごさないように注意していたのに, 料金盤の表示が190円からさくっと240円に上がってる. あれー, と思っていたらバスが山の上まで登ったあとUターンしてきた. 同時に料金表示も下がり出す! 高いとろこに行くには高い料金を払うというシステムだったわけだが, 走行距離に対して単調増加でないのは初めて.
8月13日_
今年は流星群がよく見えるいい位置にいると期待してたのに突然曇って雨まで降り出す. 何故ここだけ. 無念. しかし星が見えるところに来るとカシオペア座すら見えない東京の空に慣れていた自分に驚く.
8月9日_
大きなサイズのファイルをコピー/移動すると、残り時間の計算に長い時間がかかり、実際より長い時間が表示される(PC Watch)
一体, 何の計算を何のためにやってるんだか.
8月8日_
for each for VC2005
すげー怪っしい.
#include <vector>

int main()
{
    std::vector<int> v;
    for (int i = 0; i < 10; i++) v.push_back(i);
    int sum = 0;
    for each (int x in v) sum += x;
    printf("sum=%d\n", sum);
}
8月6日_
まさかvs. C++でXbyakが勝つとは自分でもベンチマークとって驚いてたりして. しかしこのblogってのは書きにくくてイライラするなあ. みんなどんな風にテキストを入力してるんやろか.
8月5日_
↓あー, 実は日本語だったりして.
8月4日_
xbyak ver. 1.05公開. Intel Macで動作確認した.
っで, LLSpirit行ってきました. 途中の1.5h x 2とか休憩0.5hあたりの時間配分, もうちょっと微調整したらよかったのかなあと思った. 今回はwebではいつも見てるけど会ったことの無かった人たちにお会いできてよかった.

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