シャドールームさんのところで出ていたKanji2na。実は昔ちょっと作ろうとしたことがある。これとWebのロボット(クローラ)とウェザタイを組み合わせると,勝手にWebサイトの文章をもってきてひらがなに変換してウェザタイで打てるというステキな感じに。ウェザタイのワードサーバ機能を使えば誰でも作れるので,誰かそんなサービス作ってくれないかな,みたいな。
‘プログラミング’のエントリ
今やっている仕事でCreateProcessを使ったので,以前日記に載せたのを見ていたのだが,第3引数のsaはいらない。これから作成するプロセスのハンドル属性なので,プロセスのハンドルを子に継承させるならいるけど,この目的では不要。ネットで検索するといくつか参照されているようなので直しておいた。
学生時代に書いたコードは動けばいいや,てな感じだったので,今読み直してみると怪しげなコードが多い。つまりさくら(略)なわけだ。仕事でやってると1つのAPIでも完全に調べてエラー処理も全てやるって感じなので,めんどくさいけど実はこのくらいやるべきだったよね,とか思う。
パジ氏がFlashで缶コーヒーの無重力アニメーションをやっていたので対抗してWorld Testerで缶コーヒーの無重力アニメーションをやってみた。ユーザが簡単にカスタマイズできるようになれば結構面白いソフトだと思うのだが,今のままだとやっぱり使いづらいですね。
4号がノートとデスクトップをLANで直結していたので,どこからクロスケーブル持ってきたの? って聞いたみたのだが,普通のケーブルだよ,と言われた。ハブで自動判定というのはよく聞くが,最近はNICでも自動判定なんですね。
デバッガの話。VC2005ではリモートデバッグをサービスで起動できるので,ログイン前に起動するプロセスもリモートデバッグできる。成功したことないけど。で,同じ事をVC2003でやりたくて悩やんでいたのだが,タスクで起動すれば? との助言に従ってみると,見事に成功した。便利。
ゴールデンウィークずっと仕事だったので何もできなかったが,とりあえずデナス第0サーバはぱじ氏の尽力により復活した。ロビーで下のサーバを選ぶと入れる。まあ必要になるのは上のサーバが止まったときだけだと思うが。
というわけで第0サーバ復活計画を始動。したのだが,今朝一応元のサーバにアクセスしてみたら何故か復活していた。見てみるとどうもIPアドレスが変わったけどDDNSへ登録されていなかった,ぽい? 真相不明。
まあ管理人が音信不通なので第0サーバ自体は復活の方向で。
ロビーサーバが停止して早2週間。第1サーバ管理人は失踪中,第2サーバの管理人もゴールデンウィークまでは何もできないということで,復旧の目処が立っていない。てことで第0サーバ復活計画を次の土曜日辺りに開始しようとしていたりする。といっても計画開始なので再開がいつになるか分からないけど。
今週の頭くらいからサーバが落ちている。管理人は最近家に帰れていないらしく,うっかり失踪騒ぎになるくらいなので,復帰は遠いかも。
で,こんなときのために第2サーバをこっそり間借りしているのだが,どうもロビーを動かすとJava VMがコアを吐いて落ちてしまう。で,そっちの管理人にJavaを再インストールしてもらったりしたのだが,今度はサーバにログインできなくなってしまった。こっちのサーバはちょっと遠くにあるので復帰は遠いかも。
ちなみに第1サーバの管理人にメールを出したのだが,第1サーバで動いているMLに出したので届くわけないじゃん,ってな面白イベントもあったりして。
というわけで対策を考え中。今の第1サーバの前に動いていた懐かしのサーバ(denasu.to)の復活というのも今ならできるかも,とかはっぱサーバにヘルプを頼むとかあるのだが,いずれにしてもしばらく復帰できない。
影響を受けるのは以下のサービス。
- ロビー
- ワードサーバ
「Microsoft Physics Illustrator for Tablet PC」を試す。これはタブレットPC上で描いたものが物体とか紐になって,そのまま物理シミュレーションされるソフトなのだが,ピタゴラ装置シミュレータとの評判らしい。ちなみにTabletPC SDKさえあればWindowsXP+マウスでも動く。2次元なのでちょっと地味だけど,私が「World Tester」でやりたいことにかなり近い感じ。
土日はずっとタスクトレイ用のアイコンを作っていた。アイコン作るたびに思うけど,16×16は表現の限界がある。特にタスクトレイの場合,Windows2000ではシステム16色しか使えないので大変。
最終的にタスクマネージャのようなアニメーションをしたいのだが,アイコンを何枚も用意するのはカッコ悪いので,動的に作る仕組みを考えてみる。アイコンのフォーマットはMSDNに公開されているので,その通りにリソース-GRPICONDIR-GRPICONDIRENTRY-ICONDIRENTRYの順番で探す。最終的にBMPと同じ形式になるのでどうにでも編集できて,CreateIconFromResourceExでアイコンを作成。
久しぶりにGDIプログラミングをしてみる。最後に本格的にやったのはWAP用エディタ作った時だから,5年以上前ってことに。それ以降はずっとWebアプリとDirectXとかだから,MFCとかデバイスコンテキストとかだいぶ忘れてる。
#とは書いたものの,ロビーは結構ガシガシとウィンドウプログラミングしてたか。
とりあえず作りたいのはVisual Studioにあるようなプロパティ編集用グリッドコントロール。.NETならPropertyGridViewというそのまんまのクラスがあるのだが,C++ネイティブコードからは簡単には使えない(多分)ので,完全自作しかないかなあ,てな感じで。
パジ氏に聞いてみたところ,World Testerの15パズルは62FPS出るとのこと。うちじゃ40~50くらいしか出ないから高速化に力を入れていたというのに。これ以上高速化しても,最近のPCだと全然意味ないんですかね。
物理シミュレータ World Tester1.01を公開。変更点は,高速化と円-円衝突ですり抜けるバグの修正。リビジョンはあまり好きではないので本来なら開発版にするのだが,円-円のすり抜けは明らかにバグなので正式版にした。
WeatherTypingは現状いろいろな仕様のしがらみがあっていじくるのが難しいのだが,こちらは新規なのでしがらみがなくて気が楽。てことで頻繁にバージョンアップしていく予定。
WorldTester。箱と箱の衝突判定に対して分離軸判定を用いるようにする。結果,かなり速くなって,うちの環境だとドミノ倒しで35FPS→62FPS,15パズルで9FPS→47FPSにまで上がった。というか元のコードが遅すぎという話もあるが。
WorldTester。衝突判定の高速化を目指し,とりあえずOBBの分離軸法を実装中。
WorldTester。4号から「音源がないと起動しない」という報告を受ける。確かに以前,音を鳴らそうと思って音関係の初期化を入れたのを忘れていた。といっても通常の環境なら問題はないと思うので,Ver1.0では制限事項。
恒例の年越しロビー。結構多くの人がいらっしゃっていてありがたいです。
てことで年も変わったので,物理シミュレータ World Testerを公開。略すとWTになるのは偶然ってことで。目指せピタゴラ装置! なんだけどまだまだ先は長い。
毎回一番悩むソフト名前を考えてみる。別に大したソフトでもないので適当でいいんだけど,適当なのが難しい。で,これは! と思った名前は,Googleで調べてみると大抵既にある。考えてみると「Weather Typing」というのは,簡単な単語の割には(日本に限れば)他に見つからないわけで,結構すごい。
物理シミュレーションの実装はほぼ完了。あとはタイトルとアイコンか,という感じでアイコンエディタを起動。したのだが,Visual Studio 2005の[色の設定]ダイアログがどうしようもなくバグっている。アイコンの表示されている領域をクリックするたびにプロパティウィンドウと交互に点滅したり消滅したり,フローティングにすると色項目がなくなって点滅し続けるし。アイコンエディタは何か別のソフトを使うしかないか。
Visual Studio2005インストール完了。少しは軽くなっているかと思ったけどやっぱり重かった。
円柱-箱とトーラス-箱の当たり判定をサポート。これで当たり判定は一通り実装できた。次は世界のシリアライズか。
Visual Studio2005が公開されたのでダウンロード開始。かなり時間かかりそうだけど。
円柱-レイとトーラス-レイの当たり判定をサポート。トーラス-レイは結局4次方程式を解く必要があるということで解の公式を勉強したり。
MSDNの更新完了。これで来週Visual Studio2005がダウンロードできるようになる,のか?
剛体シミュレーション。操作性を考えてみた。まずはマウスで物体を動かしたいので,2Dの座標値を3Dのレイに変換する方法を調べる。今までビューポート変換とか透視変換とか何となく扱ってきたのだが,このおかげでちゃんと理解できた。
で,それを調べていて,ビューポートを使えば画面分割が簡単にできるというのを知ったので,調子に乗ってステレオグラムにしてみた。下の画像を交差法で見ると立体に見える。これが動画で動いているのを見ると結構感動なわけだが,例によって静止画なのでいまいち。
ただ,ステレオグラムは動画を裸眼立体視できる人にはいい感じだけど,そんな人はあんまりいないと思うので公開時は泣く泣く外すか。オプションで残しとこうかなあ。
ともあれ,あとは当たり判定を残り4種類ほど実装すれば最初の構想はほぼ完成。一番やりたかったドミノをマウスで並べて倒すゲームもできるし。
MSDNの更新案内が来た。もうすぐVisual Studio2005発売ということでProfessionalにアップグレード。単純にパッケージで買うだけでも結構な値段になるはずで,それにサーバOSとかSQLサーバとかVirtualPCとかが使えるのを考えれば安い,はず。Vistaが1年以内に発売されるかどうかが気になるけど,まあ気にしても分かんないし。それにしても何でVisualSourceSafeはProfessionalじゃないんだろう。
ついでにNorton AntiVirusも2006にしてみる。フリーソフトを作ってる身としては必須アイテムってことで。
パジさん作のWeatherTypingフラッシュを置いてみた。
DoCoMoの料金変更。携帯電話は持ってても電話+パケット0なので1番安いコースに変更。これで結構安くなるようだが…。それにしても料金変更のサイトはイヤな設計だった。
パジさんがウェザタイフラッシュを送ってきた。今更ながらウェザタイページに載っけようかな。てことでパジさんに修正依頼中。
ようやくトーラスとトーラスの当たり判定ができた。ネット情報などいろいろ合わせ,結局点と円の最短距離計算を何回か繰り返し求めるという方法で現実的な計算量になった。
てところで床,球,箱,円柱,輪っかの相互当たり判定14種類のうち11種類が完成。そろそろ操作性を考える時期かも。
いきなりハードディスクが止まる。何度か起動を繰り返すとようやく正常起動した。とりあえずバックアップを取って様子見。
掲示板の話。DXGetErrorString8がUnknownを返してくるとは。元のコードも表示するようにしておかないとエラーコードが分からなくなってしまうという教訓ということで。
トーラスとトーラスの距離算出について考えているのだが,なかなか奥が深い。ネットでもなかなか見つからないし。結局連立2次方程式を解くしかないのか?


