Home > Archives > 2005年08月

2005年08月

八月ももう終わり

論文の英訳して寝ようと思います.

PHPのあっぷろーだ

とある事情でアップローダが必要になったので,ついでだからと PHP の勉強のためにゼロから組んでみた.とにかくファイルをあげるだけでいいので名前を「あげるだけ」にしつつ適当に組んだはいいが,PHPはデバッグがしにくいことに後で気づき,実際デバッグに時間をむちゃくちゃとられた.とにかくセミコロン忘れて何も表示されないとかいうのがやたらと... ああ,面倒だ.とりあえずアップと削除ができるようになったから一段落.どっかにやっちゃう可能性が高いのでソースを置いておこう.

DirectX + LayeredWindow

WS_EX_LAYERED を指定して透明色を指定した上でその指定職を背景にしてDirect3Dで描画するとうまく背景をすかしたDirect3Dができるだろう,と考えて実験してみた.面倒なのでテスト用のソースは人からもらっといていろいろやってみたら,なぜかウィンドウの一部を画面外にするとうまくいくことを発見.何かのバグなのかなぁとか思ったりするけど面白い現象ではある.何とかうまくできないかなぁ,面白いねたになりそうな.

研究室にて...

友人と一緒に紅魔郷のリプレイファイルのフォーマット解析とかしてみたり.何も操作せずに死んだリプレイを用意してバイナリエディタで開き,眺めること暫くで7ずつ増えている増加列が多数あることを発見.そして操作してなけりゃもとのデータは0だろうと思われる.それを元に,七ずつ増える数列で暗号化しているのだろうと友人がめぼしをつけて適当にプログラムを作り,パラメータ調整しつつフィールドの解読成功と.んで,私は16進の加減算が速いということになった.

ZZ

もののついでにZZも見てみましたとさ.ところどころニュータイプって生きたラムダドライバ?とか思ってみたり.にしても敵の強化人間およびニュータイプ全員殺しちゃうってのはどうなのかねぇ.別に全員殺さなくてもいいだろうに... プルプルプルプル

オブジェクトをデスクトップに飛ばす?

オブジェクトひとつにウィンドウ一個だと重そうだし,まとめて一個のウィンドウに描くとしてもクリッピングの演算も毎回やるには重そうだし,やっぱり一個のウィンドウで WS_EX_LAYERED オプション使うのが一番楽で軽いかなぁ? 実験してみないとどれくらいの速度が出るかわからんな.

Z

なにやら劇場版Zガンダムで声優変更が問題になっているらしいので,試験も終わっていい機会だからとZを全話見てみることにした.さすがにビデオもDVDもないのでバンダイチャネルのストリーミグだけど(50話パックで4200円ってのは安いのか高いのか... よくわからん).

感想としては全話見るのに少々疲れたけどうわさどおりよい作品だなと.二十年前の作品とは思えん.百式かっこいいし.んで,件のフォウに関しては変更先の声優であるゆかなの声で大丈夫なのかと少々疑問.どこかのドジ艦長のイメージしか知らんので.よい仕事ができるかも知れんけど.とりあえず,オリジナルの島津冴子が引退したとかではないようなので,DVDにするときには音声をオリジナルキャストに切り替えられるようにしてほしいものだ.音響監督がなにやらやらかしたとのうわさもあるが,結局のところ誰のための劇場版なのかってことだろうか? 監督の自己満足用ならそれでよし,ファンまで含めたZという作品のためならどうにかしろ,と.

ところで,この島津冴子って平成教育委員会の初期ナレーションだったのね.

台風の雨ぇ~

試験やってるときに台風来ると大変だなぁ.災害のせいで試験にこれなかった場合ってどういう措置がとられるんだろとか思ってみた.

レンタルDVD

ふと検索してみてオンラインのDVDレンタルがあることを知った.オンラインでDVD指定して郵送で送られてきて見終わったらポストへゴーと.世の中便利になったなぁと素直に関心.ただ,一度に大量に借りるには向かないシステムなので利用はしなさそうかな.

口述試験無事終了

試験が終わった~.どんな意味で終わったかはしらんけど~.明日試験のやつの前で酒飲んでやった~.どうでもいいけどOHPシート高すぎ.

明日は試験~

ということでさっさと寝ましょう.明日はOHPの印刷もしないとならんし.あーめんどう.ところで,透明化したWindowにDirectXのサーフェス乗せたらどうなるのだろう?

ダンシング・クレイジーズ体験版

いつの間にやら出ていたのでやってみた.「真昼に~」のシステムが強化されたイメージで,戦闘画面がクォータービューになったり戦闘の陣形を選択できるようになったりしている.でもまあ,10週までしか遊べないので真に動作確認版といった感じでCGも「まだCGはありません」のCGが所々出たりする(そのCG自体は好きだけど).なにはともあれ,普通に遊べそうなので9月末まで待つとしよう.

ホテル予約

学会に行くための宿泊施設の予約に じゃらん を使ってみた.検索機能とかあって結構便利になったもんだなぁと思ったけど3部屋までしか一度に予約できないのは少々いただけない.次に 楽天トラベル を使ってみて,さすがは楽天だなぁと思ってみた.こっちの方がよい検索ができるし情報もよさげで10部屋まで一度に予約できる.とりあえずこちらで予約しよう.

本屋さん

書泉で漫画を買っていつもどおりカバーをかけてもらったのだが...  曲がってるし.その店員(バイト?)のお兄さんは以前にも下手なカバーかけをして下さった方で,勢いつけてビシッビシッとかけてくれるわりにはひん曲がってんだよね~.おまけに数ページ巻き込んで折り曲げてくれたし.お釣りも手に直接渡せばレジがスムーズに進むだろうにジャラッと置いてくれるもんだから... ここら辺の指導ってどうしてるのだろうとちょっと疑問に思った今日この頃.

完全復旧完了

MSOffice と VisualStudio を入れて完全に復旧できた.しかし,VisualStudio のインストールはもっと簡単にならんのかねぇ.ディスクの入れ替えが面倒だし時間がかかるし... はやく次のバージョンが安くならないかなぁ.

復旧ほぼ完了?

12時間以上かかってしまったが,ほぼ作業に問題ないくらいに復旧完了.余計なソフトの入っていないクリーンな環境はやっぱいいなぁ.グラフィックのアスペクト比固定表示設定が保存されない現象は相変わらずだけど.ドライバのせいかなやっぱり.

圧縮フォルダ邪魔

再インストールしたら圧縮フォルダが効いてて邪魔でしょうがない.とりあえず登録抹消.

regsvr32 /u zipfldr.dll

また地震.そしてまたクラッシュ…

前回の地震に引き続き地震直後の起動でHDDがびみょん.中身がすっからかんになってしまった… どうやらファイルシステムのルートがやられたらしいのだが,復旧が面倒… ついでなのでOSも入れ替えてしまえ!

雨…

外は雨が降っている… 寝やすいから寝よう.

ちょっと秋葉まで

秋葉に行く時間ができたので東方文花帖を買ってきた.なかなかの量で今日中には読みきれん…

Boostって

色々がんばってるなぁと思ってみたり.tokenizer, regex, format あたりは結構よさげ.スクリプトでは複雑すぎて書きにくいけど文字列の扱いが... な問題でありがたい.あと乱数にメルセンヌツイスター使えるのもセンスいいねぇ.ディレクトリ関係をまとめた部分ではパスの演算子に / が使えるのも面白い.さて,次は関数型言語C++の部分に踏み込むとするか.

読むのが疲れる...

終わりのクロニクルが良い感じのところまで進んだので1巻から読み返してみた.とは言え,分厚すぎて2巻の下までしか読んでないが... とりあえず,いろいろとばら撒かれていた謎な記述がああそうかと納得できた.やっぱ読み返さないと分からんもんだなぁと思いつつも,こんなに分厚いものはおいそれと読めないよなぁとも思ってみたり.そして,「禿男・ハゲフラッシュ」で再び吹いたことはいうまでもない.

本日の消化量は2000ページと.あと3000ページ強残ってるのか... 長いなぁ

Boost本をば

昨日の Boost MPL の発見により Boost に興味がわいたので,お勉強用に Boost C++ Libraryプログラミング を手に入れてみた.STL すらまともに使えないというのに Boost をいきなり使うのもどうかしているがどうにかなるだろう.

テンプレートでリストとか

八王子からの帰り,C++のテンプレートでコンパイル時にリストを使った計算をさせようとテンプレートでリストを表現する方法を考えていた.結論としては,値を直接使わずに,全てを型の上で処理してしまえばいい.ためしにリストを作って表示,foldr, map を書いてみた.まあ,int 限定にしているけど.一般化は容易でしょう.

#include <iostream>
using namespace std;
 
#define cons(x, y)      Cons< Int< x >, y >
#define nil             Nil
 
// nil  or []
struct Nil {};
 
// cons h t  or h:t
template <typename H, typename T>
struct Cons {
    typedef H head;
    typedef T tail;
};
 
// element of lists
template<int n>
struct Int{
    enum {val = n};
    static void print() { cout << n; }
};
 
// printer
template <typename L>
struct ListPrinter {
    static void print(){
        cout << '[';
        L::head::print();
        ListPrinter<typename L::tail>::print2();
        cout << ']';
    }
    static void print2(){
        cout << ',';
        L::head::print();
        ListPrinter<typename L::tail>::print2();
    }
};
template <>
struct ListPrinter<Nil> {
    static void print(){
        cout << '[' << ']';
    }
    static void print2(){
    }
};
 
// foldr function
// foldr f e [] = e
// foldr f e (h:t) = f h (foldr f e t)
// cons case:
template<template<typename,typename> class F, typename E, typename L >
struct Foldr{
    typedef typename F<typename L::head, typename  Foldr<F,E,typename L::tail>::val >::val val;
};
// nil case:
template<template<typename,typename> class F, typename E>
struct Foldr<F,E,Nil>{
    typedef E val;
};
 
// map function
// map f [] = []
// map f (h:t) = f h:(map f t)
// cons case:
template<template<typename> class F, typename L >
struct Map{
    typedef Cons< typename F<typename L::head>::val , typename Map<F, typename L::tail>::val> val;
};
// nil case:
template<template<typename> class F>
struct Map<F,Nil>{
    typedef Nil val;
};
 
//addition operator
template <typename X, typename Y>
struct Add {
    typedef Int<X::val + Y::val> val;
};
 
// zero
typedef Int<0> Zero;
 
//douoblring operator
template <typename X>
struct Double{
    typedef Int<X::val + X::val> val;
};
 
int main(int argc, char *argv[])
{
    typedef cons(4, cons(3, cons(2, cons(1, nil)))) l;
    typedef cons(5, l) l2;
    ListPrinter< l >::print();  cout << endl;
    ListPrinter< l2 >::print(); cout << endl;
     typedef Foldr<Add, Zero, l2>::val sum;
    sum::print(); cout << endl;
     typedef Map<Double, l2>::val l3;
    ListPrinter< l3 >::print(); cout << endl;
}

とまあ,考えてみたわけだけど,あとに別の用件で google で検索かけたらThe Boost C++ Metaprogramming Libraryとかいうものを見つけてしまった.boost に含まれいてるらしいが,上で考えたのと同じで全てを型で扱ってコンパイル時計算をしているらしい.いやぁ,やっぱ同じことを考える人はいるもんだなぁ.でも,こいつにはサイズに制限があるらしい(上限を上げるようにすればいいんだけど).ということで,上の Cons/Nil は制限一切無いので捨てたもんじゃない(はず?).

エレガントプログラム賞

とある問題で書いたHaskellコードがエレガントであったとのことでエレガントプログラム賞を受賞.大変にありがたいことであります.でも,私としてはテンプレートでコンパイル時に答えを計算するようにしたものや,サンプル以外は確率的に正しいお遊びプログラムに関する賞がよかったかなぁ.今年は全体的にお遊びステートが少なかったので.ちょっと残念.

本日はHaskell講座(?)

今日のメニューはHaskell講座だったのだけど,いまさら聞く内容でもないので内職をば.昨日のHaskellで解いた問題の別解法をHaskellで実装してみたりと.やっぱ遅延評価はいいなぁ,といいたいところだけど,別解法は遅延でなくてもよかったり.まあ,無限リストの形で書いている部分では遅延評価がいるけど,これはループ変数で制御すれば有限で止まれるし.とりあえず次はモナドを使えるようになりたいなぁ.

インペリげっと

さんざ取れなかったインペリシャブルシューティングが酒に酔った勢いですんなり取れてしまった.今日中に取ってやるとか冗談で騒いどいて今日の残りも後10分という時刻からはじめ,わずか2回のトライで取れちゃいましいたとあまり面白くも無い結果に... とりあえず勝因は,酔っているせいで弾道予測が行われず,見えてる弾を予測抜きで避けたのがよかったのかと.つまりは頭を使うとだめってことだね.

ちなみにだいぶ前に書いたインペリの「ペ」が「ペ」になってたことに気づいた...  何でひらがなになったんだか意味不明だ.

今日はコードを書きました

引き続き第2第3セッションが行われたわけだが,今日は昨日の分を取り戻すようにコードをガリガリと.とりあえず昨日は残り二人のうち一人しか書いてなかったので,もう一人に一問担当してもらっといた.難しい探索問題で正しいプログアムができてから仕掛けを入れようと思ってたけどコードがなかなか出来上がらず,結局動くけど遅すぎるもので終了.最低点で残念.あとは,自分の書いたコードが原因不明のエラーを含んでいたのを抜かせば今日の出来はかなりよかった.Haskell で瞬殺できる問題があったのが効いたかな.おまけとして,やたらと書くのが面倒でただそれだけの問題を書く羽目になったけど.とりあえず,コードジェネレーターなメンバーがいたおかげで2番手にはなれたのでよしとしよう.

あの建物は…

合宿は八王子の大学セミナーハウスでやってるわけだけど存在する建物が微妙… 特別な機能も何も無くてただ形がおかしいだけの建物って迷惑なだけだ.芸術だかなんだか知らんが,実用性の無いものを実用性が望まれる場所で作るなと言いたい.そんな下らんデザインに金をかけるなら歩道とかをもっと安全に設計しろ! こけたら谷底まで一直線だし…

今日はお遊びコードひとつ

合宿でプログラミングコンテスト第一セッションがあったわけだが今日はコードを書かないという縛りで望んだので時間内ではコード書かず.他の二人に任せてアルゴリズムをてきとうに考えるのみだった.でもまあ,3問中2問のコードを上げた時点であと5分しかなかったので最後の問題は遊びに走ることに.

幸いにして問題は0か1かを出力する問題なので,サンプルだけは正しい答えで他はランダムで0か1を答えるようなプログラムを書いた.採点では5点満点中2点というわけの分からない高得点を取得.採点者に感謝! いやぁ,笑いが取れてよかったなぁ.

準備

明日からの合宿に備えましょう.

ダウン

提出期限過ぎても直して提出してみたり.眠すぎてもう動けません…

いや,まあ,無理でしょう

論文出来が悪すぎ.第一著者の書いた部分はほとんど時間の無駄と化した.まあ,修論の焼き直し見たいにして書いてたから当然なのかも.実験データもかなり変な結果が出てるし… とりあえず提出してしまえ.大会で発表するのは問題なかろう.論文としては採録されなさげ~.

ジッケンが…

論文のために実験データを取ろうと必死こいて作業しているが… 大体,うまくいくわけねーんですよ.既存のプログラム間違ってるし,だれもちゃんと実行させてないし.ぽこぽこ出てくる問題は回避不能だったり,「運」で良し悪しが決まるとか言われたり… こーなったらもうスクリプトでデータ生成しまくって走らせてやる!

教訓:論文書くときは大分前から実験しとけ.実験してないのに締め切り前に蒸発するな.

DFAの最小化

とあるDFAを使うプログラムに「最小のオートマトンを求める」というコメントの付いた関数があった.んで,全ての入力に対して同じ状態へ遷移する状態集合だけをまとめて最小だと叫んでいる.これだけじゃ明らかに最小にはならないのに… このプログラムの作者は何も考えてないんだなぁと思わざるを得ない.最小化できない例としてもっとも単純に考えられるのは,あらゆる入力に対して自分自身に帰ってくるような状態が二つ以上ある場合で,このとき遷移先の状態は各々異なっているので状態がまとめられない.ということで,正しく最小化するには逆の考えをとらねばならない.すなわち,明らかに異なることをチェックしていき,異なると示せないものを等価とする.

フル稼働中

論文締め切りがぁ… 第一著者ではないけど論文の上がりが遅いからフル稼働せざるを得ない.あともう少し…

背中が…

むちゃくちゃ痛い… おかげで朝起き上がれんかったし昼間は特定の格好しかできなかった… なにがおきたのだらう?

Home > Archives > 2005年08月

Search
Feeds

Page Top