昔の最近の出来事(2007.11)

2007/11/30

早くも無く遅くも無く。

眠くて早めに死亡。

2007/11/29

早くも無く遅くも無く。

鉄拳。ゴースト相手に練習してたら、何故か急に勝てなくなったり。 時々妙に強いゴーストが出てくるような気がするのは何故かしら? とかやってたら、鉄拳だけやって終了。

2007/11/28

早くも無く遅くも無く。

今日の鉄拳。久々の連勝。でも直ぐに撃沈。

ちょろりコーディング。

2007/11/27

早くも無く遅くも無く。

ちょろりコーディング。なんとなく思い通りになった気も。

今日の鉄拳。ひたすら負け倒しorz。

2007/11/26

早くも無く遅くも無く。

ちょろりコーディング。ちょっと悩み中。

まいいつを起動したら、何故か部屋の飾りが一部無くなってたり (飾っていない状態になっていた)、前に見たニュースが見ていない事 になっていたり。なんだ?

2007/11/25

昼過ぎ起床。

そういやPS3とXbox360の両方で発売のソフトで、異機種間ネット対戦が可能 なものってあるのかなぁ?と思ったり。例えば、最近発売されたサッカーゲームの ウイイレ2008は、PS3/PS2/Xbox360三機種発売ですが、異機種間ネット対戦が できる訳では無いようです。この辺、Xbox360はネット対戦するのに有料手続き (ゴールドメンバーシップ)が必要(因みにPS3は対戦自体は無料。てか、PS3は今のところ ネット対応ゲームはサーバ接続自体無料。反面、いつサービス終了になっても あんま文句は言えないかも)とか、大人の事情も含まれるようなのですが、 それを抜きにしても機種間の壁は越えられていないという感じみたいです。 そんな訳で、異機種間ネット対戦できるソフトってありそうで無いと いう感じなので、出来れば面白いかもねと思ったりしたところです。

ちょろりコーディング。

あれ?Xbox360ってHD-DVDドライブが標準装備じゃ無いんだっけ?ってのに今頃気づいたり。

今日の鉄拳。負け率高し。

なんかこれ、スゲー。 ちなみに、これを立体にした感じの これは、 期待してるPS3ソフトの一つです(でもゲームの内容がイマイチはっきりしてない予感)。

2007/11/24

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

ちょろりお出かけ。ついでに久々にゲーセンへ。もう大分経ちますが「DEATHSMILES」。 見てるだけで満腹って感じ。オトメディウス。なにやら少し変わった筐体 だなぁと思っていたのですが、タッチパネルだったりオンラインでアップデートが 入るようになってたりと、色々仕掛けの入った筐体らしい。ちょっと画面が小さい気が しますがそれはそれとして。鉄拳6は26日頃から稼動開始らしい。

ちょろりコーディング。

今日の鉄拳。ちょっとだけ勝てたけどイーブンくらい。

そういや、PS3のXMB(システムメニューの事)の 壁紙などに現在時刻やカレンダーを表示する事ってできないのかしら?

何気にここ1ヶ月間、PS3の電源入れっぱなしのままで、鉄拳とまいいつ見る時以外の 殆どをFoldingの実行に費やしてました。で、本日 200シミュレーションを完了して みたり。前回100シミュレーション完了 したのが10/19なので、大体36日くらい。一日大体2時間くらいを鉄拳に費やして いたと計算して、36[日]*22[h]/100[siml]=7.92[h/siml]って感じ。 因みに11/25の1:00頃時点で、Folding全体の計算速度は1.3[PFLOPS]。PS3が占める分だけで1[PFLOPS]を 越えているので、もはやFoldingはPS3でプロジェクトが進んでいると言っても 過言では無い状況かも(^^;

2007/11/23

起きたら夕方。寝すぎ。

しかたないので鉄拳(ぉぃ;。負け過ぎて三段まで降格orz。
そういや 以前はヨーロッパランキング のエントリが無かったのですが、いつの間にかランキングが開始されて ました。ランキングは4位までが鉄拳王(黒)、5〜10位は鉄拳王(黄)というように、 取得できる人数が決まっているようなのですが、ヨーロッパはまだ 10位までに武神や風神などが入っているようで、最近ランキングが 開始されたという感じのようです。それでも、18650人程度エントリーされて いるようなので、意外とプレイヤー人口が多いなぁと思いました。

2007/11/22

早くもなく遅くもなく。

今日の鉄拳。結局一回も勝てず。うーむ。

2007/11/21

早くもなく遅くもなく。

今日の鉄拳。勝ち星無し。練習すればするほど勝てなくなるような気がする。

2007/11/20

早くもなく遅くもなく。

PS3のファームアップデートをしたり。こころなしかメニューが シャキシャキ表示されるようになった気も。

今日の鉄拳。久々の勝ち星。

2007/11/19

早くもなく遅くもなく。

ちょろりコーディング。REBARのサイズ変更を少しラップして、 裏で勝手に実行されるようにしてみたり。んー、他の部品も同じ感じ になるように、もう少し構造を考えた方が良いかも。

「創聖のアクエリオン」のパチンコ台のCM。見る度に、「合体したいって 言わせたいだけだろっ!」 と思ったり。

2007/11/18

起きたら夕方前。寝すぎ。

WinAPIのツールバーをいじっていたり。REBARを使ってみたのですが、 クラスでラップするのにどうするのが奇麗になるか悩んでみたり。 例えば、親ウインドのサイズに合わせてREBARのサイズを変更する とき、WM_SIZEイベントは親ウインドにしか飛ばないので、 親ウインドでREBARウインドハンドラに対してウインドサイズを 指定しなおす感じになります。でも、自動的に親ウインドサイズに 合わせようと思うと、親ウインド側でREBARが登録されたことを認識した上で、 見えないところでREBARのサイズ変更を処理する必要がありそう。
でも、一番面倒臭いのは WM_CREATE メッセージよりも前に WM_SIZEメッセージが 飛ぶところかも。このせいで、子ウインドのリサイズのコードをWM_SIZE下に安直 に入れると、起動時一発目で死んでしまうので、ちょいと考えなくてはならない かも。

今日の鉄拳。勝てたり負けたり。

2007/11/17

起きたら夕方。寝すぎ。

昨日のswitch文にdefaultステートメントが無いときに実行時エラーになる 話。Cygwin使用の場合、次のような感じになります。

$ cat -n switch_test.d
     1  import std.stdio ;
     2  import std.string ;
     3  
     4  int main(char[][] args)
     5  {
     6  
     7    for( int i=0 ; i<args.length ; i++ ){
     8      switch( args[i] ){
     9      case "test" :
    10        writef("arg%d is test\n",i) ;
    11        break ;
    12      }
    13    }
    14    return(0) ;
    15  }

$ gdc switch_test.d 
$ ./a.exe test
Hangup

これが、mingw使用の-mwindowsの場合はウインドが開いてエラーが ダイアログ通知されます。実はこの話は、 以前に経験済みだったのですが、 この時はそれ以外に大きな問題があったのですっかり忘れていました(^^;

で、よくよく仕様と実際の振る舞いを確認してみますに、 defaultステートメントが無い事に問題があるというのではなく、 switch文内のどのケースにもマッチしなかった事が問題という事のようです。 例えば 前述のコードの場合、args[0]から引数文字列を評価している訳ですが、 args[0]はコマンドライン文字列なので、"./a.exe"が入って います。ここで7行目の i=0 をi=1 とすると、実行自体は正しく終了 します。
何故こうなっているのか、今一度よく考えてみました。例えば次の場合 はどうでしょう。「case文のどれかに必ずマッチしなくては ならない、defaultを通る場合は100% 内部コードのバグである。」 という場合。 default文にエラーを示すリターンコードを返すコードを 仕込む方法も考えられますが、もしかするとリターンコードを チェックしていないかも知れません。例外を使えば確実にエラーを捕らえる 事ができます。もちろん、C言語でもdefaultステートメントに signal()を使って例外を発生するコードを仕込むなんて事も考える 事はできるでしょうが、独自のコーディングルールにコーダー全員が従った 上で初めて成立する方法です。こう考えると、言語の仕様レベルで 例外を発生するようになってるというのは、利にかなっていると思われます (ただ「Hangup」じゃ、どこが悪いかすぐ判りませんが....)
ただし、D言語のこの仕様も、「defaultステートメントで何でもかんでも 受け流してはいけない部分」というのを意識した上で、意図的に defaultステートメントを外した時に初めてその効果が得られると考えられます。 ここを誤解して「実行時にエラーするからとりあえずdefaultを入れとけ」 では、意味が無くなってしまいます。以前、「defaultが無いとエラー するのならコンパイル時にチェックすれば良いのに」と書いていたのですが、 今こうして考えると、あの時は意図的にdefaultを抜く事の効果まで判って いなかったという感じだったのかも。

2007/11/16

早くもなく遅くもなく。

ちょろりコーディング。D言語では、switch文にdefaultステートメントが 無いと、実行時にエラーになります。それに気づかず時間を費やしてみたり。

寒さと眠さで早めに死亡。

2007/11/15

早くもなく遅くもなく。

ちょろりコーディング。A系winapiからW系winapi使用に変更してみたり、 クラスの構造を変えてみたり。で、ものの見事に動かなくなってみたり。 あっちこっち勘違いでボロボロ。修正してどうにか思い通りになったり。ふぅ。

トロステで初音ミクが出てきて驚いた。まいいつで、自由にサンプリング音を 出せるようになったのは、つい最近の話なのですが、それをフル活用している という感じ。それにしてもこういうネタを持って来るあたりがクロらしい(^^;

2007/11/14

早くもなく遅くもなく。

ちょろりコーディング。ツールバーとメニューバーが同時に表示できなくて 悩んでみたり。と思ってこねくり回していたら、何故か表示できたり。うーむ、 何か間違えているに違いない......

今日の鉄拳。相変わらずスランプのまま。

2007/11/13

早くもなく遅くもなく。

ちょろりコーディング。 WindowsAPIのウインド生成群を、クラスライブラリでラップする コードを作っていたのですが、途中でほっぽらかしのままになってました。 で、D2.0対応実験の為に、久しぶりにひっぱり出してみたり。 で、なんとなく動くのですが、どうにもウインドメッセージが思い通りの ウインドハンドラに飛んでいない感じだったので、少し調べてみたり。 で、色々見てみたところ、根本的な作りの問題だという事が判ってみたり。

まず、HWND(ウインドハンドラ)の割り当てを、基底クラスでstatic宣言 を使って割り当てていました。クラスでのstatic宣言は、インスタンス化した時に 全てのインスタンスから共通に見える領域になってしまいます。その為、 最後に生成したウインドハンドラで上書きされてしまったのが原因で、 それより前に生成されたウインドのハンドラに向けてメッセージを送っている つもりが、そうなっていないというものでした。
問題は何故static宣言したかという点なのですが、最初、static宣言は していなかったのですが、リンク時に何故かエラーが発生した為、色々 こねくり回しているうちに、static宣言するとリンクできるという事が 判りました。で、ずっとそのまま使っていて、ウインドメッセージを飛ばす ような事も無かった(というか、結局使っていなかったという事なのですが) ので、今まで問題が露呈しなかったという流れです(^^;

で、static宣言を外すと、やはりリンク時にエラーが発生した為、今度は static宣言を外した状態でリンクエラーが発生しない方法を探しました。 結局、おおよそ次のようなパターンのときに、リンクエラーになると いう感じでした。

     1	import std.stdio ;
     2	
     3	struct Foo {
     4	  int foo ;
     5	  int var ;
     6	}
     7	
     8	class TestBaseClass
     9	{
    10	  Foo foo ;
    11	
    12	  this(Foo foo){
    13	    this.foo=foo ;
    14	  }
    15	
    16	  void print(){
    17	    writef("Foo.foo=%d\n",foo.foo) ;
    18	    writef("Foo.var=%d\n",foo.var) ;
    19	  }
    20	}
    21	
    22	class TestExtClass : TestBaseClass
    23	{
    24	
    25	  this(int var){
    26	    Foo foo ;
    27	    foo.var=var ;
    28	    super(foo) ;
    29	  }
    30	
    31	}

基底クラス TestBaseClass で、foo という変数を宣言しています(10行目)。 で、継承したクラスTestExtClassのコンストラクタで 基底クラスTestBaseClassのfooと全く同じ名前を使用します(26行目)。 すると、何故か継承したクラスTestExtClass 内で宣言した fooがリンクエラーになるという感じでした。 結局どうしたかというと、継承したクラスでの同じ変数名の使用を 辞める事で、リンクエラーしなくなりました。staticを付けると大丈夫 になったのは領域が共通とみなされるからなのかどうかは不明。

悩ましいのは、リンクエラーになるケースを再現させようと、 前述のようなソースを書いてはみたものの、これは普通にコンパイル できてしまうという点。文法的にも間違えているようには思えない ので、これでリンクに失敗するのであれば、それはバグという事に なるとは思うのですが.......。まぁ、 無理矢理リンクできて原因不明のコアダンプ発生器が 生成されるよりも、エラーメッセージが出るだけマシとしたところでしょうか。

2007/11/12

早くもなく遅くもなく。

今日の鉄拳。ゴーストモードで練習していたところ、何故か勝てなくなってきたり。 オンラインは当然勝てず。うーむ。

そういやここ数日、Blu-rayのレコーダーのTVCMを、各社が盛大に流している ように感じるのは気のせいか?

2007/11/11

昼前起床。寒くてぐうたら過ごしていたら一日終了。って、昨日と同じじゃん!

今日のトロステ(日付的には明日ですが)。1年を振り返る回。2007年に 入ってからは、日曜日を休みにしようとしたらしいのですが、宝くじが当たって それを報告する回を休むと宣言した一発目の日曜にやってしまったところから、 なんとなく毎日更新する感じになったらしい(^^;。毎日更新するのは 大変だと思いますが、これからも細く長く続けて欲しいなぁと思います。

今日の鉄拳。びっくりするぐらい勝てず。

2007/11/10

昼過ぎ起床するも、寒くてぐうたら過ごして一日終了。

PS3のファームをV2.00にしてみたり。カスタムテーマってので、 アイコンや壁紙の表示を変更できるようになったっぽい。 アップデートのWebページにいくつかサンプルが置いてあったので インストールしてみたり。んー、でもなんだかどれも見づらい気が。

よく見てみると、自分でテーマを作る為のツールが提供されてるようです (参考)。 で、ちょろっと触ってみたり。XMLで画像とメニューを結びつける構造を書いて、それをコンパイルすることで テーマファイルにまとめられるという感じ。入力となるファイルは α付きのPNGで、それをgimと呼ばれる独自形式(多分128byteのヘッダ+RGBAのベタ画像ファイル) に変換しているようです。

今日の鉄拳。勝てず。

2007/11/09

早くもなく遅くもなく。

ちょろりコーディング。手持ちソースのD2.0対応を行ってみたり。 今まで、値を持った連想配列のキーか否かを判定するのに、

  if( foo[key]==null ){
    foo[key]=new hoge() ;
  }
  

てな感じで検査してました。ところがD2.0対応のgdcでは、コアダンプして しまうよう実行ファイルが生成されるようです。foo[key]としたところで 参照先の無いポインタでアクセスしてしまうのが原因っぽい。 しかし、こういうことをやっても大丈夫にするには、 毎回アクセスチェックのコードを実行しなくてはならないと思われる為、 keyが必ずあるのが自明の連想配列をアクセスするような場合に、無駄な コードを実行してしまう事になると考えられます。 なので、「in 演算子」でもって用事のあるときにのみチェックコードを 実行するという感じになってたようです。

  if( (key in foo)==null ){
    foo[key]=new hoge() ;
  }

気づくのに少し時間がかかってしまいましたが、こういうものだと判れば 問題は無いかも。

いつの間にか寝てたり。

2007/11/08

早くもなく遅くもなく。

今日の鉄拳。少し勝ち点が多くて1段昇格。

ちょろりコーディング。

2007/11/07

早くもなく遅くもなく。

今日の鉄拳。びっくりするぐらい勝てず。しかも負けが込みすぎて降格したりorz。

2007/11/06

早くもなく遅くもなく。

ちょろり調べ物。

今日の鉄拳。ちょっと掴んだ気もしたのですが、対人だとそれを 繰り出す暇さえ与えられず、やっぱり勝てず。

新型PS3はPS2互換は無いのですが、PS1互換はあるというのを トロステを見て初めて知りました。ん?どうやって互換を保って るんだ? Webで調べてみたのですが、どの記事もスペック表の 「PS2互換無し」という文字列をそのまま写しているだけなので、 情報は皆無。でも、先立って欧州で発売されたEE+GS無しPS3では、 エミュレーションでPS2/PS1のソフトを動作できるようで、 EE+GS有りに比べて動く割合はかなり低いようですが、 動くものはあるようです (参考) 。欧州で発売されているPS1/PS2のソフト本数は全部で 2451本で、そのうちの35.69% が問題無しという感じのようです。 日本では20000本以上ありますので、欧州レベルだと最低で約875本、 割合そのままだとすると、良くて約7140本は動作するという感じ だと思われます。流石に互換があると言うレベルではありませんが、 たまたま持ってるソフトが動けばラッキー、動かなくても そんときは既に持ってるPS2をひっぱり出すからまぁいいや、って感じかも。

2007/11/05

少し早めに帰着。

今日の鉄拳。びっくりするぐらい勝てず。プラクティスモードで 練習。ちょっとだけつかんだ気も。

2007/11/04

昼ごろ起床。

ちょろり本屋に。ファミ通WaveDVD購入。1ヶ月ちょい前 に開催されたTGS 2007のレポートがメイン。9末開催なので、 月初め発売の雑誌で紹介するには、この時期が限界なのはしかたの 無い所でしょう。トレイラーなどで既出の映像が多数という感じ なので、特に気になる所はありませんでしたが、 どの機種用も一様に絵が格段に良くなってるなぁというのが 第一印象。

今日の鉄拳。やたら強い人が居て、誰も勝てず。何度か挑戦してみた ものの、全く歯が立たず。うーむ。

2007/11/03

昼ごろ起床。

鉄拳やったりWebを巡回したりぐうたら過ごして終了。

PLAYSTATION®Storeでしかダウンロードできないようですが、 以前存在を知った、 「The Elder Scrolls IV:オブリビオン」のキャラクターメイキングの ビデオがアップロードされていたり。キャラクターメイキングと言うと、 いくつかあるパーツを組み合わせる程度だと思われるのですが、 オブリビオンのそれは、そんなヌルい感じではありません。 今回のメイキングは顔限定の話だったのですが、顔のパラメータだけでも、 目の幅/高さ/位置、鼻の高さ/幅、眉間の幅、 肌のつや.....ってどんだけパラメータがあるんじゃ〜!って感じ。 それこそ、3Dモデリングでキャラの顔が気にいるまでいじるという のと同レベルのパラメータが用意されているという感じでした。 オブリビオンはオンラインゲームではありませんが、 オンラインのRPGだと、むしろこれだけいじれる方が良いかもなどと 思いました。いじりこなせるかどうかは別にして。

今日の鉄拳。負け率高し。

2007/11/02

早くもなく遅くもなく。

三丁目の夕日の終わりの方だけ観たり。バラエティ番組などで 「続」の方で淳之介役の須賀健太が育ち過ぎてて困ったという話 を聞いたのですが、確かに大きくなりすぎている気が(^^;

今日の鉄拳。勝ち率が高かった気も。気のせいかも。 それにしても、アジアのランキングの上位の人で、1000勝以上 してて勝率98% ってどういう事?!

2007/11/01

早くもなく遅くもなく。

ちょろりコーディング。

今日の鉄拳。勝てたり負けたり。


TOP PREV