日記一覧

昨日の答え。

意外にも日を変えて再度悩んでみると思いつくものである。
とりあえず下記コードでやりたいことはできた。
しかし、T,Sなど1文字の型引数にしておくと、次みたときに相当わからないなぁ…

しかしこのコード、少なくとも今年一番イケてると自負してます

 


(no title)

メンバ変数で配列で…

メンバ変数のポインタを利用して、型情報取得できないか色々と思案中。メンバ変数のポインタ型をテンプレートの型として受け取るまではいけるものの、その型からさらに固定配列だった場合には長さを知りたい。

うーん、できるんだろうか…。

[code lang=”cpp”]
class A {
int a[100];
int b;
};
[/code]

このようなクラスがあって、 &A::a, &A::b という状態からその型と配列情報がテンプレートで展開できれば、目的のことが達成できるのに…。しばし悩んでみます。

 


OS再インストール中

いろいろとやることがあって大変な時期に、OSから再インストール中・・・。
もちろん、Vista x64版で。しかしながら色々とトラブルに見舞われ。

トラブルの点を列挙すると

  • MSDNのOSアクティベーションが上限超えた…。
  • DaemonToolsがインストールでこける

前者はもうしょうがないので、放置。そして、DaemonToolsの件はどうやらウィルスバスター2008のせい。
リアルタイムの検索を切ってみたら、それだけでインストールは成功しました。きっとほかの誰かも同じようにできなくなっているのじゃないかと思います。

MSDNのアクティベーションが上限超えたのはどうしようか。次の更新時期で更新せず、新規で契約しちゃおうかと考え中です。


XBOX360のゲームパッド

入力管理モジュール

Vista x64環境であっても XBOX360のゲームパッド非公式ドライバが存在していたので早速導入。 しかし、x64なので非公式ドライバは署名がない…。そのため起動時には、F8を押して、「ドライバ署名の強制を無効にする」を選択しなくてはならない。とりあえずそれで動作をチェックしてみたところ、やはりちゃんと動きました。

Vistaでの公式ドライバ名

XBOX 360 For Windows(Controller)

Vistaでの非公式ドライバ名

Microsoft Xbox360 Controller

だそうです。これの違いを見て自前で処理を振り分けとかしないとダメかも知れませんね。

 


スプライン実装してた

週末はずっと3次スプライン関数を実装してました。
とりあえず非周期版と周期版の2種類を用意。参考文献は、C言語によるアルゴリズム事典より。
実際に使う場面はまだ先になりそうだけど、出てきた値をグラフ化してみるといい感じの曲線を描いてくれてちょっと幸せ。

HDDレコーダ応答不能

番組表表示させようとしたらリモコンが聞かなくなった。
そして、電源オフだけは効いたのですが、PLEASE WAIT …. の状態のままずっと・・・。また何か毒電波出したのだろうか。

 


描画システムのMultiThread対応

スキニングメッシュもかろうじて表示できたので、諸々の部分をダブルバッファリングにして、描画とメインの実行ループの分離を行ってみました。文章にするとこれだけのことなのに苦戦しましたよ…。

  • DirectXのリソース作成・破棄はメインスレッドでやらなくてはいけない
  • アプリケーションの実行はサブスレッドになる。
  • DirectXは、WndProcが実行されるスレッドで初期化されなくてはならない。また基本的にこのスレッドで実行されるべきである。
  • 当然、描画要求を出してタイミングがきたら描画。このためバッファリング必要

色々と書き換えてようやく、ポイントライトなシェーダーを実行させるところまでは出来ました。しかしスキキングメッシュ関連で、マルチスレッド化に伴いフォルスシェアリングが起こりそうだったので、またスキニングメッシュは表示できない状態へ戻りました…


インテル スレッディングビルディングブロック

最近の自分のぐっと来るポイントに、templateとスレッドがあったわけですが、これらをミックスした書籍があるとのことで探し回ってました。

2月末に出ていたらしく、その本のタイトルは、”インテル スレッディングビルディングブロック” TBBと略されるらしいです。オープンソース版と商用版が提供されてます。

ざっと読んでみたところ、ループをスレッドを使うように展開したparalell_for関係の使い方と、作業をパイプライン化、もしくは単純にタスク化しての使い方の説明で終わったと思います。
他にも、単純にSTLコンテナをスレッドセーフにするためにロックさせるものよりも効率の良いコンテナ群の説明とか。

感想としては、もうちょっと内部的な話を見たかったのですが。それはOSSで提供されているコードを見ろってことでしょうか。しかし、2コアのシステムでこれを有意義に使える状況って限られるんじゃないですかねぇ…

少なくともゲームにはこのままじゃ使えなさそうです。

 


MonsterXメモ

MonsterX on Vista

あまり記述を見かけませんが、MonsterXをVista上で動かしています。
ドライバ: 8月版
ソフト: hunuaa + huffyuv + lameMP3 + MxCapture

これで今のところ、キャプチャもうまくいっています。
C2D : E6300
Mem : 2GB

ただし、MxCaptureのAVI Muxの部分ではふぬああのものを使用しています。
標準のものでは、かなりのドロップフレームが発生してしまいちょっとまずいです。
また、hunuaaのmuxをインストールするところでも Vistaはやっかいでした。

ふつうに、regsvr32 huavimux.axでは失敗します。

いろいろと調査してみると、UACの関係らしいので、そこをクリアできれば正常に登録完了できました。

  1. コマンドプロンプトを”管理者として実行”
  2. 登録コマンドと実行

わかればたったこれだけなんですが、あまりにも検索で引っかからないのでここに書いておきます。

ちなみに、うちの環境では標準とhunuaaCap Muxでの違いはドロップフレームが一桁違うという結果が出ました。
hunuaa使用版で音声も無圧縮にしたらもう少し減る感じがしますが。

CPU使用率100%なので、不安定さが結構あるかも・・・。


一段落

引っ越し一段落

土曜日にベッドが着て、ようやく睡眠もまともになったと思います。
最もそのベッド組み立ては結構大変でしたが。重いしでかいし。
友人に手伝ってもらいに来て思うような位置にやっと置けました。感謝。

その後、近くの居酒屋いって飲んで、楽しかったです。

収納がついているベッドのため、今まで床上散乱していた本とか書類群を仮に納めてみました。
ゆくゆくは本棚かってそこへ入れる予定。ベッドの中へは衣類入れたいし。

とりあえず、自分的に人を呼んでも恥ずかしくはない散らかり具合なので、やっと引っ越し一段落です。

近日中にエレクター買って、HDDレコーダ&液晶TV買うところまでやりたいなーとか思っていたり。

ManagedDirectX + C#

初めて手を出しました。
JavaはそこそこなれているのでC#余裕だろー思っていましたが、

いろいろと、似たようなクラスや操作を探すのに手間取った感じです。
でも、メモリのリークとか考えなくていいし、温い環境だなぁと思ったり。

半分寝ぼけながらも作れそうです(笑


引っ越しました

引っ越ししました。

とりあえず引っ越し完了。旧住まいも後始末してきました。
で、サーバーも再び稼働させてます。地方からこちらに持ってきたときのようなトラブルもなく普通に動作中。
今回頼んだのは日通さんでしたが、丁寧に運んでくれたようです。thx

まだ電話番号からの線路長がでませんが、速度測定してみたところ、従来の倍以上は出ていました。ということは近くなったと言うことですね。
そのうち個人での光契約してOKかどうか聞いてみようと思います。

HDDレコーダ欲しい

引っ越しもしたので、そろそろ地デジ視聴環境を準備しようかと計画中。
Aquosとか考えていたけど、どうもそれに対応するレコーダーがピンとこない。
で、そんな中見つけたのが、東芝のVARDIA。W録出来るやつを対象としてます。

いいなと思った機能が、CM自動カットに使えそうな、マジックチャプター。
1つの番組録画でしか使えませんが。同時2番組録画状態では、片方がその機能を使えないようです。

それでもなんとなくよさげ。

あとは、Regzaの状態次第ですねぇ…。
そもそもTVとレコーダって別々なメーカーを使う人って多いのかな?
自分ではそろえようと思っているけど。

defineで可変数

プリプロ #defineって可変数引数無理と思っていましたが出来るようです。

使ってみたい局面あったりするので、実用になるかも。

こんな感じでした。

‘<pre><font color="#0000ff">#define</font> DEBUG(msg, …) printf(msg, __VA_ARGS__)’
‘<BR><BR>’
‘int main() {<BR>’
‘ DEBUG(&quot;hoge %s %d&quot;, &quot;hoge&quot;, 3);<BR>’
‘<BR>’
‘</pre><BR>’

gcc でうまくいくかどうかは不明ですが。