昔の最近の出来事(2011.01)

2011/01/31

早くも無く遅くも無く。

ちょっと調べごと。

2011/01/30

AM中に起床。

東京ガスのTVCM。見るたび、一体どこに向かうんだ?と思ったり。

ちょろりコーディング。

そういや、我が家は地デジ未対応なのですが、そもそもUHFアンテナが立ってません。 そんな訳で大家さんに家賃を払うついでにどうなってるのか聞いてみた所、うちのアパートだけ 忘れてた....って ぉい; 近々設置される事でしょう。まだTVを替える予定は無いけどね!

2011/01/29

AM中に起床。

ちょろりコーディング。OpenGLの作業ウインドに対して、キーボードの任意のキーを ショートカットとして扱っていたのですが、ボタンウインドを押すとキーボードのフォーカスが ボタンに移ってしまうのを、どうするのが良いのか悩んでみたり。 結局、作業ウインドにWM_MOUSEMOVEが送られてきたらSetFocus()で強制的に 作業ウインドにフォーカスを戻すって感じにしたのですが、こういうもんなんだっけ? と思ったり思わなかったり。

2011/01/28

早めに帰着。

あまりの眠さに急速停止。

2011/01/27

早くも無く遅くも無く。

もそもそとコーディング。

2011/01/26

早めに帰着。

ボンタン飴の原料がもち米だというのを初めて知ったり。

寒さと眠さで死亡。

2011/01/25

早くも無く遅くも無く。

もそもそとコーディング。

2011/01/24

早くも無く遅くも無く。

もそもそとコーディング。

GT5。24時間レースを連続投入中。そういえば、24時間レースをやってる間に、 PS3本体のファンの音が急に高くなるときがあります。契機はイマイチ判りませんが、 CPUかGPUもしくは両方がそれなりに動いているという気がしたりも。 だとすると、夏場にエアコンを付けずに24時間レースに投入するのはムリだな(笑

2011/01/23

AM中に起床。

いままで演算子オーバーロードを積極的に使おうと思わなかったのは、 かなり昔にクラスで頂点データを 実装テストをした時に、演算子オーバーロードを用いると性能に難点が あった為でした。その後に クラスで頂点データを実装するよりも構造体で実装した方がメモリ割り当て効率が 良い事が判って、これ以降、頂点の様なベクター型のデータは構造体で 実装してました。このとき、演算子のオーバーロードを構造体のメンバー関数にも 適用するという発想が沸かないまま現在に至るという感じでした。
そもそも、頂点データをクラスよりも構造体で実装する方が良かった理由は、 頂点データを配列で扱う場合のメモリ割り当て速度があまりにも違っている為でした。 例えば要素数が10000の頂点配列を割り当てる場合、クラスだとnewを10000回 実行する必要があるのですが、構造体だとfoo.length=10000 で割り当てれば良く、 しかも一瞬で割り当てられました。それに比べると、演算子オーバーロードの話は その時点で大した問題ではなかったので、なんとも思わなかったのでしょう(^^;;

そんな訳で、頂点データをクラスと構造体で実装した時の性能差を比べてみました。

$ cat -n ovload_test.d
     1  import std.stdio;
     2  import std.string;
     3  import std.date ;
     4  
     5  struct vec3D{
     6    double x,y,z ;
     7  
     8    void set(double x, double y, double z){
     9      this.x=x ;
    10      this.y=y ;
    11      this.z=z ;
    12    }
    13  
    14    vec3D opAdd(vec3D b){
    15      vec3D r ;
    16      r.x=this.x+b.x ;
    17      r.y=this.y+b.y ;
    18      r.z=this.z+b.z ;
    19      return(r) ;
    20    }
    21  
    22    void print(){
    23      writef("x=%f y=%f z=%f\n",x,y,z) ;
    24    }
    25  }
    26  
    27  class Vec3D{
    28    double x,y,z ;
    29  
    30    this(double x, double y, double z){
    31      this.x=x ;
    32      this.y=y ;
    33      this.z=z ;
    34    }
    35  
    36    Vec3D opAdd(Vec3D b){
    37      Vec3D r = new Vec3D(this.x+b.x,
    38                          this.y+b.y,
    39                          this.z+b.z) ;
    40      return(r) ;
    41    }
    42    
    43    void print(){
    44      writef("x=%f y=%f z=%f\n",x,y,z) ;
    45    }
    46  }
    47  
    48  int main(){
    49  
    50    vec3D sa,sb ;
    51  
    52    sa.set(1.0, 1.0, 1.0) ;
    53    sb.set(1.0, 2.0, 3.0) ;
    54  
    55    writef("struct start %s\n",toTimeString(getUTCtime())) ;
    56    for( int i=0 ; i<10000000 ; i++ ){
    57      sa=sa+sb ;
    58    }
    59    sa.print() ;
    60    writef("struct end   %s\n",toTimeString(getUTCtime())) ;
    61    
    62  
    63    Vec3D ca,cb ;
    64  
    65    ca = new Vec3D(1.0, 1.0, 1.0) ;
    66    cb = new Vec3D(1.0, 2.0, 3.0) ;
    67  
    68    writef("class  start %s\n",toTimeString(getUTCtime())) ;
    69    for( int i=0 ; i<10000000 ; i++ ){
    70      ca=ca+cb ;
    71    }
    72    ca.print() ;
    73    writef("class  end   %s\n",toTimeString(getUTCtime())) ;
    74  
    75    return(0) ;
    76  }
    77  

$ gdc -O2 ovload_test.d
$ ./a.exe 
struct start 12:37:56 GMT+0900
x=10000001.000000 y=20000001.000000 z=30000001.000000
struct end   12:37:58 GMT+0900
class  start 12:37:58 GMT+0900
x=10000001.000000 y=20000001.000000 z=30000001.000000
class  end   12:38:48 GMT+0900

a=a+bを 10000000回繰り返すというコードです。加算をオーバーロードしてるので、 57行目や70行目で普通の演算子の様に頂点データを扱っている感じになってます。 で、実行結果の方ですが、クラスで実装する方が20倍以上遅い感じでした。

週トロ。「とらドラ!」をBlu-ray化する話のその後。アップコンバージョンに手間が かかる為、出せないかもという話になったのですが、みんなの思いを伝えたところ「必ずBlu-ray化する」 と約束されたり。以前の週トロでも話があったように 画像ソースがSDだと、HD化する時に困るのだなぁという感じのようです。 ともあれ、約束はされたので今後どんな展開になるか楽しみです。

2011/01/22

昼頃起床。

GT5。先日のレースで11時間くらい過ぎた頃、ゲーム内時間は真夜中の雨と いうコンディションだったのですが、ドライバー全員の体力が0になってて、 1周毎にピットインしているという状況だったり(^^; これ、体力回復 できないのでこの状態でスタックしていると思われ。レベルが足りない のかなぁ? それにしても真夜中のサルトサーキットは真っ暗で前が 全く見えません(^^;

積みっぱなしになっていたファミ通WAVEを観たり。7BITchで紹介されていた コール・オブ・デューティー ブラックオプスの 海外限定版に付属されている 車ラジコンの話。ゲーム中に出てくるラジコン爆弾を模したものなのですが、 これが非常に良く出来ているのに感心したり。車のラジコンにカメラとマイクが 搭載されていて、その画像をプロポに付いているカラー液晶画面に表示できて 音声も聞く事ができたり。ラジコン本体が見えない所に行っても カメラ画像で操作できます。てか、これが限定版の特典というのがスゲー と思いました。

ちょろりコーディング。バグを直したり。
今更ながら3次元頂点を扱う構造体の演算に、演算子オーバーロードを使ってみたり。 というのも、構造体のメンバー関数を使って書いていたのですが、式が直感的に 読みにくいというのが我慢できなくなってきたからです。で、D言語仕様を読んでみた のですが、Ver2.0でなんだか方法が変わっててあれぇ?と思ったり。 gdcでPhobosのバージョンも2.014なので、Ver1.0表記のオーバーロードを 使ってみたところ、ひとまず思い通りになりそうだったのでそれでコーディング。 あちこちで使用している構造体なので、うまく移行できるか心配でしたが、 ひとまずOKな感じに。
でも、オーバーロードできる演算子は決まっているので、例えば外積とか正規化 とかは、これまで通りに扱う感じだったりも。

2011/01/21

早めに帰着。

先日1.4がリリースされたWings3Dのホームページが思いっきりリニューアル されてて驚いた。

GT5。配信イベントを少しやった後、サルトサーキットの24時間レースに投入してみたり。 それにしても、今までの耐久は4人選択だったのですが、何故このレースは3人なんだろう?

2011/01/20

早くも無く遅くも無く。

ちょろりコーディング。なんか思ってるのと違っているような。

2011/01/19

早めに帰着。

ちょろりコーディング。

あまりの眠さに死亡。

2011/01/18

早くも無く遅くも無く。

ちょろりコーディング。どうしようとしてたかスッカリ忘れてます(^^;

そういや、Wings3Dの1.4がリリースされてました。去年リリースされた1.3.1から 小さな改良を加えてStableリリースされた感じみたいです。

2011/01/17

早くも無く遅くも無く。

先日のgdcビルド。boxer.dのコンパイルをすっ飛ばして他のソースをコンパイルすると、 いくつか進んだり。でも、std/stdio.dでエラー。どうにもMinGWの場合が考慮されていない ようで、どのversion識別子を生かしてもコンパイルエラー。うーむ。

2011/01/16

昼頃起床。

MinGWネイティブでgdcをビルドしてみる事にしたり。MinGWはCygwinのクロスコンパイル のものしか使った事が無かった為、MINGWシェルから見たディレクトリ構造がWindowsファイル システム上でどの様に変換されているのかが良くわからなかったり、Cygwinのシンボリック リンクを受け付けられない点などにハマったり。gcc-4系をビルドするのに必要な 外付けライブラリをビルドしてはインストールして、なんとかgcc本体のconfigure実行 は通ってみたり。で、make実行してみる訳ですがどうなるか.....

GT5。オンライン配信イベントにドリフトトライアルが来ているのですが、どうにも ドリフトの要領が得られなくて、上位スコアプレイヤーのリプレイを見たり。 スピードはそれほど必要では無いとか掴む所はあったものの、そもそも真っ直ぐ走っていない 状態を維持するようにコントロールするのは、かなり難しい気がしたりも。 因みに、現時点でスコア1位の人のゲーム内プロフィールを見てみたら、A-SPECレベルが37って、 どんだけー?!って感じでした(^^;

gdcビルドの続き。何やら最近入った変更が悪くてコンパイルエラーしてたり、 CygwinでのMinGWクロスコンパイルと同様にcc1dのリンクでエラーしたり。 適当にリンクエラーにならない様にして先に進めたり。で、druntimeのコンパイルとリンクは エラー無く終了できたり! でも、phobos2のboxer.dのコンパイルでエラー。std/stdio.d内で 「unsupported C I/O system」なるアサートを踏んだり。仕方なく-fversion=GENERIC_IOを 指定した所、今度はboxer.dのコンパイルでICE落ち。ぐふっ。
もう少し見てみると、gcc/fold-const.c:2792 でエラーしているようで、これっていうのは switch文でどのcase文でも無い場合に踏んでいるっぽい。何やら知らない変数型宣言を踏んで しまっているという感じ。うーむ、これってLinuxとかでもエラーせずにコンパイルできる のだろうか? ともあれ、druntimeのコンパイルが通ったのは一つ前進。

2011/01/15

AM中に起床。

GT5。B-SPECレベルが33になり、筑波9時間耐久レースがオープンされたのですが、 9時間って夜ほっとくにはちょっと長くて、昼間ほっとくにはちょっと短くて 微妙な時間だなぁ。 B-SPECをやってると、レースを一時停止できるとか、続けて2回以上の 出場をスケジュールできればいいのにと思ったりも。

2011/01/14

早めに帰着。

寒さと眠さで急速停止。

2011/01/13

早くも無く遅くも無く。

ちょっと思い出し。

2011/01/12

早めに帰着。

何気にCygwinパッケージでテストリリースされているgcc-4.5.0を入れてみたり。 -mno-cygwinが外されているのは変わり無し。Cの簡単なソースはコンパイルできたり。 gcjを試したところ、cyggcj-11.dllが見当たらないとのエラー。Webを検索してみると、 CygwinのMailingListアーカイブに同様の質問があったのですが、 4.5.0はテストリリースだからという回答。んー、テストリリースなのは判るのですが、 だからと言って全く使えない物をパッケージにして置くなよと思わなくも無いところ。 てか、dllがあれば使えるんだろうから対処してくれれば良いのに。と、使いもしない 物に文句だけ言ってみた(^^;

2011/01/11

早くも無く遅くも無く。

ちょろりGT5。

2011/01/10

昼過ぎ起床。

キャッスルヴァニア。キビシー。L2がガード、R2が掴みというアクションに割当たって いて、L2+方向キーで回避になります。ベヨネッタはR2が単純に回避だったのですが、 その癖が抜けてません(^^;

何気に「OpenGL 4.0 グラフィックシステム」という本を買ってみたり。 OpenGL4.0仕様の日本語訳です。3.xはなんだかあんまり聞かないうちに4.xに なってしまった感じがしなくもありません。さておき、OpenGL4.0を使う機会は 当分無いのですが、ざっと見た感じ結構大きな仕様変更が加わっているようです。 関数が gl* ではなくglを取り払った感じになってたり、 glBegin()〜glEnd()でプリミティブ指定するのは無しになってたり。 OpenGLのサンプルコードなどを載せたWebページの情報の殆ど全てが 用事にならなくなるくらいに変わっています。レガシーなコードをOpenGL4.0対応するのは 相当に困難な気がしたりも。因みに、GLEWの 最新版はOpenGL4.1に対応されているようです。

2011/01/09

昼過ぎ起床。

GT5。やっとB-SPECでレベル30に到達。隠しスペシャルイベントの 「レッドブル X2010 チャレンジ」がオープンになったり。 ちょっとだけやってみたのですが ムリ(笑。

キャッスルヴァニアを開封。ここ数日PS3の電源を切ってなかったせいか、 何故かボタンが効かなくてスタートできなかったり。電源OFF→ONで復帰。 こういう事もあるらしい。で、ちょっとやってみたのですが、序盤から驚くほど死にます(^^;;;; あれだ、ベヨネッタのような感じに。まぁ、これはTANEのスキルの問題ですが(^^; でも、やり直しに再ロードが無いのは良い感じです。 絵は30fpsくらいですが 今世代HDゲームのレベルという感じでよく出来てます。 途中のイベントシーンもリアルタイムレンダリングっぽいですが、そうだとする とかなり良い絵が出ていると思います。 物理エンジンにPhysXを使用してるっぽいですが、物理エンジン に依存した映像演出は、まだ見当たらなかったりも。ひとまずノーマルレベル と思われる「戦士」で始めたのですが、イージーレベルと思われる「見習い戦士」 でやり直した方が良いかもと思い直したりも(^^;

2011/01/08

昼頃起床。

gdcのMinGWクロスビルドを行ってみたり。でも、コンパイラのビルドに失敗。うーむ。

GT5。あと少しでB-SPECのレベル30に到達できそう。そういえば、A-SPECはレベル25となり、 耐久レース系がオープンとなったのですが、これ本当に24時間とかやるの?(^^;

POV-Rayのベータテストページを見ていたら、3.7 beta41ってのが 3.7のリリース 候補になっていたり。3.7は随分長い期間ベータ公開だったのですが、間もなく正式リリース されるかも。因みにTANEが一番最初に3.7ベータを試したのが 2006/10/23だったので、4年以上前の話ですね(^^;

2011/01/07

早めに帰着。

GT5。B-SPECをほっぽらかしにしながら千と千尋の神隠しを観たり。

先日のgdcビルドはコンパイラがビルドできるところまで。gdc2.014のphobosを ビルドするとやっぱりICE落ち。最近、object.d関連のコンパイルでずっこける っぽいのが修正されているようなので、少し期待していたのですが残念。

あまりの眠さに急速停止。

2011/01/06

早くも無く遅くも無く。

gdcをビルドしたり。当然終わらず。

GT5。A-SPECを少しだけ進めて、B-SPECで長時間実行。

2011/01/05

早めに帰着。

GT5。インディの200周レースがさっぱり取れない。

Cygwinのホームページのデザインが思いっきり 変わってて驚いた。

2011/01/04

AM中に起床。今日で休みも終わり。

GT5。B-SPECの長時間レース1回じゃレベルは上がらないので、何度かやる必要があるみたい なのですが、まだ2.5時間とか微妙な時間のしか無いのでイマイチ。 8時間くらいあれば夜中にほっぽらかして丁度良い感じなのですが、まだそのレベル には達せず。

そういや深夜のTV番組に「テニスの王子様」の作者である 許斐剛(このみ たけし)氏 が出ていたり。 多くの人が連想するであろうマンガ家のイメージと程遠いビジュアルに驚いた。

2011/01/03

昼頃起床。

GT5。やっとこ4人ドライバーを確保できたので、レベル25以降の耐久レースに投入 してみたり。賞金取得効率はあまり良く無い気がします。経験値取得効率もかかる 時間を人数で割るとあまり良く無い気がしたりも。あれ?いいとこ無いなぁ?(汗;

そういや「二ノ国」ってDS版はTVCMやってるけど、PS3版っていつ出るんだっけ?と 思って調べたら2011年発売らしい。検索している過程でDS版の二ノ国について 色々知ったり。なんでも、DS版のパッケージには「マジックマスター」なる結構豪華な 装丁の本が付属されており、これに書かれたルーンと呼ばれる図形をタッチペンで描く 事でストーリを進められるという仕組みらしいです。面白いのはこの本がソフトの違法コピー 対策にもなっている"らしい"という点。B6版で350ページなのに加え、Webなどへ の転載を禁止されています(まぁ普通の本でもダメなのですが)。紛失時には引き換え券が 付いていて、有料(3500円)購入可能なようです。で、 このレベルの本を紛失するのは考えにくいのですが、実際、 質問サイトなどに 本を無くしたから内容を掲載しているサイトを教えてくれ といった書き込みもあるそうです(結果、違法コピーを疑われて叩かれるという流れ になるっぽい)。
20年以上前からいわゆる「マニュアルプロテクト」という手法として存在していた 訳ですが、まさかこの時代に通用する方法だったとは思いもよりませんでした。

2011/01/02

AM中に起床。

GT5のB-SPECをこなしながらTV観たり。寒さのせいか鼻水が止まらなかったり。

イッテQのスペシャルでやってたテーブルクロス引き。10mのクロスを 時速300kmで引くのにドラッグカーを使うってバカバカし過ぎる(褒め)の ですが、一度は意外とうまくいったのに おぉっ!? と思ったり(最後はマンガの ような失敗でしたが)。

深夜にやってた番組で「チリモン」なる物の存在を知ったり。 いわゆる「ちりめんじゃこ」の中にたまに入っている蟹やらタコなどの 生物を探すというものらしい。チリメンモンスターを略してチリモン。 で、通常商品となっているチリメンジャコは、手作業で選別が行われている 為、ほとんど鰯類以外の生物が含まれていないようなのですが、 本来捨てる方をチリモンの詰め合わせとして売っているらしい。 タツノオトシゴや巻貝なんかも居るらしくて、そういうのは レアチリモンとして人気があるらしい。へー。 リアルに探す物の他にも、 「チリモン図鑑カード」 なるものにもなってるらしい。マジで?!

2011/01/01

あけましておめでとうございます。今年もよろしくお願いします。m(_'_)m

homeのスクウェアで年越ししていたのですが、年越し前から旧年の挨拶があり、 カウントダウンがあって、花火が上がって新年挨拶がありと、なかなか手がこんで ました。

明けて1時間時点でPixivの年越しアップロードは約6000枚。約100枚/分という速度で、 毎年アップロード数が増えているのが伺えます。

AM中に起床。GT5のB-SPECをこなしながら、TV観たりWeb巡回したりぐうたら過ごしたり。


TOP PREV