昔の最近の出来事(2008.04)

2008/04/30

早くも無く遅くも無く。

ちょろり鉄拳。初めてPICKUP MATCHという、ルームを介さずに1:1接続の相手を探して 対戦するモードを使ってみたり。ゴーストバトルのゴーストではない感じ(ややこしい) で、次々対戦相手が登場する訳ですが、意外と接続相手が居たりして。 最近は、OPTIMATCH(同ランクの人が開設したルーム)だと部屋が立ってなかったり するので、QUICKMATCHでANY部屋に参加する訳ですが、それだとやたらに強い人ばかり で歯が立たなかったりします。PICKUP MATCHならまぁまぁイケる気も。気のせい でしょうけど。そんな訳でどうにか七段に返り咲き。

プログレスバー表示ウインドの実装で悩んでみたり。子ウインドでそれっぽい感じのものを 起こせば良いと思ったのですが、例えば次のような使い方をすると、具合が悪いなぁと 思ったり。

  case :WM_COMMAND ;
    :
    progress = new Progress() ;
    progress.create() ;
    for( int i=0 ; i<100 ; i++ ){
      objlist[i]=readobj() ;
      progress.setValue(i+1) ;
    }
    break ;

みたいな感じにすると、forループを回っている間、メッセージループを 止めてしまいます。この為、progress.setValue()にウインドの再描画イベント などを発生するコードを書くと動かなくなってしまいます。 そこで、スレッドを生成して、その中でprogressウインドを動かす為 のメッセージループを形成すれば、progress.setValue()の値セットは いつでも受付られるようになるんじゃないかな?と思ったり。 ところが、メッセージループを形成するのに使用する GetMessage()は、 違う箇所にいくつ置いても機能していないようで、結局、プログレスウインド だけを完全独立動作の表示ウインドにする事ができなかったり。むーん。

2008/04/29

昼ごろ起床。

鉄拳などやりながらぐうたら過ごしたり。さっぱり勝てずですが。

ちょろりコーディング。

2008/04/28

早くも無く遅くも無く。

そういや、Foldingの進み具合が急に鈍くなったなぁ?と思ってよく見てみたら、 1シミュレーションに1日以上かかる問題が送られていたり。少し前まで、 3時間程度で終わるものばかりだったのですが、PS3用に新たな問題が用意 されたという感じなのかしら?

鉄拳。ムキになってやったら少し勝ち点を戻したり。でも、やたら強い人が 居て、全く歯が立たない感じでした。どう見ても、こちらの技の出しを見て ガードしているとしか思えないような感じだったのですが、あれって本当に モーションを見てガードしているのかしら?

gdcのsvnを見てみると、2.010までマージされていたり。ここ数日、頻繁に リビジョンが上がっている所を見ると、最新への追従を行っている 最中なのかしら? 期待。

2008/04/27

起きたら午後もいい時間。

鉄拳。びっくりするぐらい負け続けて五段まで降格orz。

コーディング。日本語ファイル名を食わせるとうまくいかなかったり。 結局変換のしかたが悪いという感じ。試行錯誤した結果、 次のようにすればなんとなくうまくいったり。

まず、GetOpenFileName()の結果として、 「C:\cygwin\home\tane\develop\dlang\opengl\objview2\てすと.obj」 というファイル名がchar[]型の変数に格納されます。16進ダンプした のが以下の通り。

43 00 3a 00 5c 00 63 00 79 00 67 00 77 00 69 00 
6e 00 5c 00 68 00 6f 00 6d 00 65 00 5c 00 74 00 
61 00 6e 00 65 00 5c 00 64 00 65 00 76 00 65 00 
6c 00 6f 00 70 00 5c 00 64 00 6c 00 61 00 6e 00 
67 00 5c 00 6f 00 70 00 65 00 6e 00 67 00 6c 00 
5c 00 6f 00 62 00 6a 00 76 00 69 00 65 00 77 00 
32 00 5c 00 66 30 59 30 68 30 2e 00 6f 00 62 00 
6a 00 00 00 ff ff ff ff ff ff ff ff ff ff ff ff 
これは、UTF16文字がメモリ配置イメージで置かれてます。 で、これをwchar[]型の変数に移します。上記ダンプはメモリ配置イメージなので、 エンディアンに気を付けて変換します。wchar[]型の16進ダンプが以下のような感じ。

0043 003a 005c 0063 0079 0067 0077 0069 
006e 005c 0068 006f 006d 0065 005c 0074 
0061 006e 0065 005c 0064 0065 0076 0065 
006c 006f 0070 005c 0064 006c 0061 006e 
0067 005c 006f 0070 0065 006e 0067 006c 
005c 006f 0062 006a 0076 0069 0065 0077 
0032 005c 3066 3059 3068 002e 006f 0062 
006a 0000 ffff ffff ffff ffff ffff ffff 

で、このままだと、最後の方に並んでいる0xffffが文字違反になるようなので、 0xffffの手前まで配列の長さを詰めます。で、得られたwchar[]配列 をstd.utf.toUTF8()で変換して、Dのコード内ではstring型として扱います。

てな感じ。そもそも、GetOpenFileName()に指定する OPENFILENAME.lpstrFileにwchar[]宣言した変数のポインタを指定すると 何故かダイアログが開かないというのが、話をややこしくしている根源です。 もし、OPENFILENAME.lpstrFileにwchar[]型を指定できるのであれば、 前述したchar[]→wchar[]移し換えは必要なくて、配列の長さを詰めてUTF8変換 するという操作だけで話は済む所だと思います。

てか、ファイル名を取得するだけなのに、こんなにハマるとは思いませんでした。

2008/04/26

起きたら午後もいい時間。

メガネ引き取り。遠くも良く見えるようになりながら、近くも良く見える という今風のレンズでバッチリ。でも、今までのメガネと度が違っている せいか、少しスケールが違っているような。そのせいか、帰りに寄った CD屋でDVDの棚を見てたら「DVDのパッケージが全体的に小さくなった」 気がしてみたり(^^; 少し慣れる必要があるかも。

久々に鉄拳。びっくりするぐらい負け続けたり。

ファイル名を取得できるようになったのですが、フルパス指定された 時にうまく動かないバグに気づくのに時間がかかってしまったり。

2008/04/25

早くも無く遅くも無く。

pixivに登録してみたり。操作の勝手がイマイチ要領を得なかったり。 でも、閲覧しているちょっとした時間の間にどんどん新しい絵が 登録されているようで、スゲーと思いました。

ちょろりコーディング。D言語では、char型は UTF-8文字として 扱われます。この時、例えば配列宣言すると、初期値は0xffで 埋められています。 で、Win32 APIであるところのGetOpenFileName()でもって、 ファイル名を得た(つもりの)後、writef()でコンソール表示 したところ何故か例外が飛んでRuntimeエラーに。 どうやら 0xff 文字を食うとUTF文字違反になってるようで、 ファイルパスの後ろに埋められた 0xffを踏んでエラーをこいてる もよう。自前で0xffをサーチして見つかったら配列の長さをそこまで 詰めるという事をやると大丈夫になったのですが、これってやり方 として正しいのか?
あと、W系APIを使ったのですが、OPENFILENAME.lpstrFileに wchar[] 宣言したファイル名格納域のポインタをセットしてGetOpenFileName()に食わせた のですが、それだと何故かファイル選択ダイアログが開かなかったり。 char[]宣言した領域だと大丈夫。なんで?

2008/04/24

早くも無く遅くも無く。

ちょろりコーディング。

pixivの話。どうやら閲覧専門の人でも別に問題は無いらしい。 世の中の殆どは閲覧専門だと思われるので、それを排除した 評価機能ってのも、冷静に考えればありえないか(^^;
そういや、評価機能の話。無作為に選んだ評価者が評価をするのであれば、 ある程度世の中の評価として受け取る事ができるように思います。 しかし、評価対象に特に興味の無い人がわざわざ評価を下げるような投稿を敢えて するとも思えないので、「星5つ(ただし内輪評価で)」みたいな事に ならないのかなぁ?と思いました。あぁ、でも、投票者人数を把握できるので あれば、例えば投票者人数が100万人居て星5つであれば、十分受け入れられて いるという目安にはなるかも。登録してみるか。

2008/04/23

少し早めに帰着。

そういや、 pixivという 登録制のイラスト投稿・閲覧サービスの存在を知りました。 絵を投稿すると言う点で画像掲示板的な物のような感じでしょうか。 投稿する人視点で見ると、評価システムとか自分の絵がどのように受け取られて いるかを知る事ができる機能が付いているようです。 で、pixivの説明書などを読んでみたのですが、どうにもよく判らなかった点が 一つ。閲覧専門の人には登録資格は無いのかしら?

An Ivy Generator というツタの自動生成プログラムの存在を知ったり。ちょろっと使ってみると 結構面白かったり。WaveFrontのOBJファイルに、葉のテクスチャを含めて エクスポートできるのですが、それをWings3Dでインポートするとテクスチャ は持って来れなかったり。POVでレンダリングしてみようと思ったのにガッカリ。

ちょろりコーディング。

2008/04/22

早くもなく遅くもなく。

ちょろりコーディング。ウインド間のメッセージのやりとりをどう整理したものか。

2008/04/21

早くもなく遅くもなく。

ちょろりコーディング。

2008/04/20

AM中に起床。

以前、メガネのフレームが折れて、 接着剤で直したのですが(今気づいたのですが、既に半年以上前の話だな...(^^;)、 その後、何度か同じ箇所がダメになって、流石に修理限界に達してきたので、 新しいのを買う事にしました。 適当なのを選んだつもりなのですが、意外な出費になってしまってアイタタタ みたいな。しかも、仕上がりに一週間弱かかるという感じ。むー、なんでだ? と言うのも、今のメガネは以前 韓国に行った時に、約7000円(レンズ込み)で買った物なので、それに 比べるとやっぱ高いなぁと感じます。

ちょろりコーディング。

2008/04/19

朝普通に目覚めるも、二度寝したら夕方。寝すぎ。

ROOKIES観たり、ごくせん観たり。そういや、「おせん」のドラマが 始まるようですが、詳細があんまなくてどんな感じになるかはよく判らず。 あのマンガを実写でやるのは、少々難しいんじゃないかなぁ?と 漠然と思ってたりもするのですが、どうなるかは見てのお楽しみ。 Webを検索してたら、全然関係無い流れで「お姉チャンバラ」が実写映画 になるのを知ったり。TANEが最初に やった時は、一発屋のB級色物ゲーと いう感じに思っていたのですが、気が付くと息の長いシリーズに なってるなぁ。

2008/04/18

早くも無く遅くも無く。

2.008用にcastを追加したソースは、逆に2.005ベースのgdcでは コンパイルエラーになるもよう。むしろ2.008用にcastした方が 意味的にイマイチな感じも。

2008/04/17

早くも無く遅くも無く。

調査。gdcのSVNから持ってきたr209ですが、手持ちソースをコンパイル したらコンパイラの内部エラーでずっこけたというのが 以前の状況。 で、直る気配が無いようだったのでちょっと調べる事にしました。 その前に、dmdのオリジナルコンパイラではどうなの?ってのを 確認したところ、どうやらdmdのオリジナルも同じようにずっこけたり。 しかも最新の2.012でもダメだったり。さて、どうしたものか。

そんな訳で、gdbを使って調査。

(gdb) run
Starting program: /usr/local/gdc_svn2/libexec/gcc/i686-pc-cygwin/4.0.3/cc1d.exe main.d -quiet -dumpbase main.d -mtune=pentiumpro -auxbase main -O -version -fversion=Unicode -fversion=WindowsXP -I. -o xxxx.s
:
GNU D version 4.0.3 (gdc 0.24, using dmd 2.008) (i686-pc-cygwin)
        compiled by GNU C version 4.0.3 (gdc 0.24, using dmd 2.005).
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
nooooooooooooooooooooooo!
assertion "t->deco" failed: file "../../gcc/d/dmd2/mtype.c", line 645

Program exited with code 01.
(gdb) b mtype.c:645
Breakpoint 1, _ZN4Type5mergeEv (this=0x10cad660) at ../../gcc/d/dmd2/mtype.c:645
645                 assert(t->deco);
(gdb) where
#0  _ZN4Type5mergeEv (this=0x10cad660) at ../../gcc/d/dmd2/mtype.c:645
#1  0x0045f389 in _ZN4Type7resolveE3LocP5ScopePP10ExpressionPPS_PP7Dsymbol (this=0x10cad660, loc=
      {filename = 0x10c92cc0 "win32/rpcndr.d", linnum = 382}, sc=0x10ccb880, pe=0x22c2dc, 
    pt=0x22c2e0, ps=0x22c2e4) at ../../gcc/d/dmd2/mtype.c:951
:

で、エラーが発生しているファイルは、「win32/rpcndr.d」という、いつも利用させて いただいているここの WindowsAPIのラッパーのとあるファイル。エラーする行を見てみたところ、どうやら alias宣言される前の文字列を使用しているのがマズいという感じ。 てかこれって、以前調べたコンパイラの Segfaultと同じ原因のような。 でも、dmd 2.005ベースのgdcではエラーしないソースなので、どうやら たまたま出なかったバグが2.008ベースgdcで(てか オリジナルのdmd 2.012 もダメなのですが)発症するようになっただけの模様。 Segfaultじゃなくてassert()停止するようになったのがちょっと変わったというだけかも。 そんな訳で、alias実行の位置を変更するとエラーしなかったり。

そこをクリアすると、phobosのwindows関係のソースを少しいじってコンパイルエラー しないようにする必要がありましたが、実行ファイルの生成には成功。概ねOKなのですが、 一部コンパイルエラーをどうしても回避する事ができなくて数字を直書きして対応 したりする必要がありました。これらについてはもう少しよく原因を調べる必要が ありそうです。

2008/04/16

早めに帰着。

DMDのオリジナルコンパイラを試したり。でも、binutilsのアセンブラの吐く objファイルと何も関係の無いフォーマットのようなので、D一色のソースで なくては、exeファイルを生成できない感じ。どうしようも無い所なのか?

2008/04/15

早くも無く遅くも無く。

ちょろりコーディング。しょーもない事でハマったり。

2008/04/14

早くも無く遅くも無く。

Web巡回して眠くて死亡。

2008/04/13

昼ごろ起床。

Web巡回してたら、Phunという ソフトの存在を知ったり。どんなソフトかはトップのYouTube映像を 見てもらうとして( 以前CrayonPhysicsという ソフトを知ったのですがそれと同じ感じ )、α版がダウンロードできるのでちょろっと試して みたり。触るとボヨーンと動く感じが気持ち良いです。 なんとなく機械の構造シミュレーション的なモノにも使えそうな気も。 あと、ホンダ アコードのCM(参考 YouTube映像。これ、CGではないです)みたいなカラクリドミノを作る のにも使えるかも。

ちょろりコーディング。

2008/04/12

起きたら夕方。寝すぎ。

ちょろりコーディング。コンパイルエラーになる原因が直ぐに判らなかったり。 原因は、Cの関数と同名のDのメソッドを使用していたため。TANEはCの関数のつもりで 書いていたのですが、コンパイラはDのメソッドだと思って引数チェックを行った為 にエラーになりました。

extern (C) Foo(int, int, int, int) ;
  
class Hoge
{
  :
  int Foo(int arg){
     :
     Foo(arg,x,y,z) ;  //TANEは extern(C)の Foo()のつもり。コンパイラは this.Foo()と解釈。
     :
  }
}

判ってみると、なーんだって感じなのですが、ラップ作業をしていると名前を 考えるのが面倒臭くなって、つい同じ名前にしてしまいます(^^;

2008/04/11

早くも無く遅くも無く。

ダウンロードしたまま放置していたInkscapeの0.46をインストールしてみたり。 そういや、オブジェクトにグラデーションで着色した後、オブジェクトを 移動させると、グラデーション位置がついて来ないのはそういう物だっけ?

080411.png

2008/04/10

早くも無く遅くも無く。

鉄拳。勝ったり負けたり。

WBSでやってたペルソナって考え方。というか手法。架空の人物を想定 して、その人物に向けて商品を開発するという方法。 人物設定があまりに突拍子も無いとうまくいかないような気がするのですが、 色んな要望を持った人が居る今の世の中では、ターゲット像が絞れて狙いが 定まるという効果があるらしい。 例えば、万人向けに色々機能を付けると、かえって使いにくくなったりします。 架空人物に合わせて必要な機能を厳選して付ける事で、使い勝手が洗練される 方に向かう感じになるのかなと思います。

2008/04/09

早めに帰着。

溜池の中野ブロードウェイの回。山田五郎の 1960後半〜70年代当時の 少年マガジンのウンチクにへぇへぇ言いまくり。 出版部数が出た金を使って、表紙デザインに 横尾忠則 を起用していた話とか、当時のマガジンの編集長が山田五郎の上司だったとか、 大伴昌司 という編集者が当時の巻頭カラーのページを担当していたとか。
山田五郎のウンチクとは関係無いですが、楳図かずお が14才で デビューしてたというのは初めて知ったり。でも、 Wikiペディア ではそこん所がイマイチ読み取れなかったり。

2008/04/08

早めに帰着。

具合が悪くてすぐに死亡。

2008/04/07

早くも無く遅くもなく。

鉄拳。今日は調子良かったり。

でも、風邪気味でどんどん体調が悪化してきたり。

2008/04/06

昼ごろ起床。

どっぷり鉄拳。勝ったり負けたり。時々、猛烈に強い人とか居るのですが、 今日見た人は、上下段に振った攻撃をことごとくガードしてました。 例えば、上上下段と上上中段とでは、最後にどちらが来るかイマイチ区別が付かない ものがあるのですが、大体そういうのは勘が当たればラッキーくらいの感じに 思っていました。でも、どうやらそれを見てガードしているようでした。 とてもじゃないけどかないません(^^;

ファミ通WaveDVD見たりしてぐうたら過ごしたり。

「シンボルず」。4月からも引き続き放送される事だけでも驚きなのですが、 全国区で再放送されるらしい。すげぇ。

2008/04/05

起きたら夕方。寝すぎ。

ちょろりコーディング。

鉄拳。少し勝ち点を取り戻したり。

2008/04/04

早くも無く遅くも無く。

鉄拳。びっくりするぐらい勝てず。六段に降格orz。

ちょろりコーディング。

2008/04/03

早くも無く遅くも無く。

ちょろりコーディング。ソースを整理。スッキリした気も。

2008/04/02

気持ち早めに帰着。

ちょろりコーディング。Rebarコントロールのサイズ変更に追従する コードを書いてみたり。 その中で、親ウインドを再描画するのに、MoveWindow()を使って、 ウインサイズは元と同じ、再描画フラグはTRUEという引数を入れて、 見かけ上、再描画だけが実行される事を期待をしてみました。 しかし、ウインドサイズ自体に変化が無ければ 再描画イベントも発生しないという事が判ったり。仕方なく、 SendMessage()でイベントを起こして処理してみたり。

2008/04/01

早くも無く遅くも無く。

鉄拳。勝てず。

ちょろりコーディング。意図した所を解決するところまで到達できず。

カイジ。まだ続くのか?と思ったら一応今回で最終回。


TOP PREV