リプレイファイルに関して修正したものを開発版にアップ。リプレイビューアでファイルが開けないという話はちょっと前にロビーで聞いていたのだが,なかなか調査もできなかった。で,今日試してみたところ,ファイル名にスペースが入ってる場合に失敗するのが分かったので修正してみた。
不具合とか要望とかそろそろ分からなくなってきたので整理しないと。
リプレイファイルに関して修正したものを開発版にアップ。リプレイビューアでファイルが開けないという話はちょっと前にロビーで聞いていたのだが,なかなか調査もできなかった。で,今日試してみたところ,ファイル名にスペースが入ってる場合に失敗するのが分かったので修正してみた。
不具合とか要望とかそろそろ分からなくなってきたので整理しないと。
ある深いパスにファイルを置きたい場合。普通はエクスプローラで1つずつ階層を作っていってそこにファイルを置くと思うが,マトゥ氏が試してみたところ,mkdirで一気に作成できることが分かった。ちょっと便利。
年1のデナス会。6周年ですか。とりあえずサーバはそのまま残存らしい。
ウェザタイ開発版をアップ。プロキシサーバを指定できるようにした。今まで,ランキングアップロードやワードサーバにアクセスするためには,直接サーバへアクセスできる環境でなければならなかった。今回のバージョンでは,最初のダイアログの[プロキシサーバ]ボタンからプロキシサーバの設定を行えば,プロキシ接続でWebが閲覧できる環境ならサーバにアクセスできるようになった。LAN環境などで今まで不便だった方はどうぞ。
で,プロキシ認証をDeleGateで試していたので最低限の動作方法をメモ。
認証用のアカウント作成
delegated -Fauth -a mortarco:password denasu
プロキシサーバ起動
delegated -P8080 SERVER=http AUTH=proxy:pauth AUTHORIZER=denasu
HTTPクライアントを修正してみた。今までウェザタイで使っていたのは単にポート80でサーバにつなぐだけ,という実装だったのだが,今までの掲示板の書き込みなんかでもあったようにこれではさすがに機能不足。ということでプロキシサーバと認証に対応。これで例え学内・社内LANの中で新記録が出てもプロキシサーバ経由ですぐ記録が送れるはず。ただ開発版はもう少し調査してから。
これでHTTP1.1に対応できればいいんだけど,持続的接続とかチャンク形式とか一気に実装が難しくなる。
TOD2004ですか。「従来の常識では考えられない、滑らかな通信対戦」というのが気になるところ。ドリルモードの対戦てのは面白そう。とりあえず買っておくか。
1台のPCだけで対戦しよう,って需要はあるのだろうか。てのは置いておいて,DirectInputって複数キーボードの対応はしてなかったんだっけ。
久々に逆リンクをたどっていると,ワードファイルをURLで指定すると上から順に出題されるというようなことが書いてあった。なるほど。確かにそういう仕様になりますね。つまりストレンクスモード(って何だ)にしたい場合はワードをWeb上に置いてURLで指定すればよいと。但しワードの自動生成はできないよ,と。
掲示板のウェザタイ音楽再生の話。その後自分のマシンで試すとちゃんと再生されていた。Win98で試さないとダメかな。てところで止まっている。
ちょっと前からPocketPCのMSN Messengerにログインできないと思ったら,PC版も含めて古いバージョンのクライアントではログインできなくなったいたのか。独自のメッセンジャクライアントもダメになってしまうのだろうか。
サーバ問題についてはまた動きが出たのだが,前の時の例もあるのではっきりするまでは発表しない方針で。
ロビーとワードサーバに使っているサーバに再び危機が。時期的には11月中とのことだが,どうなっていくのか。
エクスプローラが落ちてタスクバーがなくなったときの対処として,Ctrl+Shift+Esc等でタスクマネージャを立ち上げ,新しいタスクからExplorerを立ち上げると元に戻るというのがある。で,これをやると「あ,そうやればいいんだ」と言われるのだが,実はあんまり知られてないのか。
入力形式プラグインだが,よく考えてみると対戦時にそのプラグインを持っていないと対戦できない。解決策として,まず相手のマシンから勝手にダウンロードというのは危険すぎるので論外。DCOMでリモート呼び出しという話もあるが,速度的に厳しそうだしそこまでやるのもどうかと思うし。なかなか難しい。
26日の収録のメール。よく読んでなかったが,今読んでみると掲載の報告とある。返事しなくていいのね。じゃあいいや。
久々にはっぱさんとチャット。タイピングのクセを学習させて仮想CPUを作るにはどうすればいいかを聞いてみるとHMMとの答えが。勉強しなければならないのか。いや,きっとはっぱさんが作ってくれるだろう。
しばらく前に松4氏にウェザタイ 1.8 をやってみてもらったところ,リプレイが見られないとの話を聞いた。松4氏のことなので特に気にしてなかったが,今日ロビーで同じような話を聞いたので,ちゃんと調査を行うことにする。
今週 1 週間,ウェザタイの入力方式・仮想CPUプラグインを考えていたが,COM でやるには問題が。COM でプラグインを実現する場合,プラグインの DLL を個々にレジストリ登録,解除する必要がある。また,特定のインターフェースをサポートするオブジェクトを検索する手段は(全オブジェクトにQueryInterfaceする以外に)ないのでプラグインの GUID(CLSID)一覧をどこかに登録しなければならない。もちろんプラグインごとにインストーラを用意すればいいのだが,それば非現実的なので他の方法を考える。1 つ目の問題はプラグイン登録ツールか何かをこちらで用意すれば解決できそうだが,2 つ目の問題は何か工夫が必要。GetGUIDs メソッドを用意させるか別途テキストかなんかで用意するか。どうするのが一番いいのかな。それとも私が COM を知らないだけなのか。教えてはっぱさん。
ベタ DLL で作ればいいというのは…。つらい。
前回ウェザタイの紹介でロビーの画像を貼り付けていた雑誌(2003/06/07日記参照)からまた収録のメールが来ていた。当然のごとくver1.7。まあ断る理由もないので適当に返事を出しておこう。
# 後でちゃんと読んだら同じ雑誌ではなかった。出版社は同じだけど。
ハリーポッター5をようやく読み終わる。1 日 30 分ペースとはいえ 3 ヶ月もかかるとは。感想としてはとにかく長いと。さて,次はダレンシャン10が楽しみ。
最近わけあって Microsoft Office を調べているのだが,PowerPoint で Ctrl+Alt+Shift+(PageUp|PageDown|Home|End|カーソルキー)を押すと記号が出ることが分かった。何に使うんだろう。余計打ちづらいし。
ウェザタイの入力方式と仮想 CPU をプラグインにしたいのだが,何で作ろうか迷っている。今 COM 勉強中なので COM にしたいけど,おおげさすぎだろうか。
松4氏が書いたC++コード。ちょっと変えてあるけど。
class A { public: void f(); }; void A::f() { std::cout << "hello." << std::endl; } int main() { A a = NULL; a->f(); return 0; }
一見 NULL Pointer Exception が発生しそうだが,VC でも GCC でも BCC でも通る。アセンブリレベルで見ると絶対アドレスで関数を呼んでいる。なので仮想関数だったりするとアウト。コンパイラ依存ぽいけど。
アイコンが上がったのでWeather Typing 1.8をアップしておいた。
VisualStudio.NET2003 になって,F4 キーで次のコンパイルエラーの場所にとぶのはどれなのか分からなかったのだが,F8 だというのが分かった。ビルドが F7 から CTRL+SHIFT+B になってたり,こういうのはあまり変えないで欲しいですね。VB がそうなのかなあ。
WeatherTyping,DLLを分離してロビーの方に試してもらったところ,重い現象はなくなったとのこと。というわけで正式に1.8として公開できそう。ぱじ氏からアイコンを提供してもらったら完成。
さて,1.8 で何が変わるのかというとあまり変わらないわけで。とりあえず
ということで一旦まとめようかという話。
そろそろ 2.0 問題が近づいてきた。すなわち,リビジョン番号は分かりにくいので致命的バグ以外では極力使わない作者としては,2.0 まであと 1.9 しかない。2.0 といえばメジャーバージョンアップだ。つまり,がらっと変えないと納得してもらえない。てことで 2.0 では結構変えるつもり。
2003/09/07のインストーラの話。よく見たらVS.NET2003が作成できるプロジェクトの中にインストーラプロジェクトがあった。これ使えばいいのか。でビルドしてみたら 2.5MB。うーむ。インストーラなし版も必要だからかなりプロバイダ領域を消費してしまう。やはり DLL だけパッケージを置いておくのが一番か。
ついでにいろいろ見ていると,C# 開発環境上で WindowsCE 用開発ができるようになっている。って VS2002 からあったのか知らないけど。さっそく試してみたがいい感じだ。iアプリは今更作る気しないので C# で PPC 開発をやろうかな。
WeatherTyping1.8 用にインストーラを調べた。昔 Microsoftさんが送ってきた VisualStudio Installer を使おうと思ってダウンロードしようとするが,VisualStudio6 のプロダクト ID を入れろと言われる。そんなのとっくにアンインストールしてるって。で,引き出しを調べると前送られた CD があったので入れようとしてみるが,ID を入れろと言われて断念。というわけで WindowsInstaller SDK をダウンロードしてみたが,何がなんだか。ネット上に(日本語の)情報もほとんどないし。一から調べないとだめか。
まっちーさんに触発されて COM の勉強を始める。『InsideCOM』を借りてきて読んでいるのだが,やっぱり Inside シリーズは詳しくていい感じ。といっても他は『InsideVisualC++ version5』しか読んでないけど。『InsideVisualC++ version5』の新しい版は出ない(出せない)のが残念。
本を読みながらロビーを覗く。どうも WeatherTyping1.7.2(相当)は対戦・動作が重いとの報告を受ける。.NET2002 から .NET2003 に変えたせいとは思えないので,やっぱりスタティックリンクが原因だろう。そうすると次バージョンは DLL 配布しかないか。DLL を付けたインストーラでの配布+DLL なしの圧縮ファイルという形式が一番か。
robots.txt について調べてみる。これは,Web サーバに robots.txt ファイルを置いておくと,そこに記述したページは(その仕様に従う)検索エンジンの検索結果に載らないようになるというもの。だが,サーバのトップページに置かなければならない & 検索エンジンのロボットが読めなくてはならないので,そのファイルをブラウザから見ると秘密のページ一覧が取得できる。これだと robots.txt を読めば秘密のページ一覧が得られるわけで,そんなページだけを集めた裏検索エンジンとか作れるよなあ,とか思った。まあ,いろいろ対策はあるらしい。
Solaris 上の Apache を使っていて,どうも MS Excel ファイルのダウンロードがおかしいと思ったら text/plain を返していた。mime.types を調べてみると,MS Word と MS PowerPoint はちゃんと application/msword とかになってるのに,MS Excel だけ記述がなかった。何故? ちなみに新しい Solaris では Execl も定義されていた。
松4氏が「Ctrl+Alt+下矢印を押してみれ」というので押したら画面が逆さまになってびっくり。日記に書いておこうと思ったが,調べてみると Intel 82845G でしか使用できないらしい。残念。まあ書くんだけど。
諸般の事情で昔買っておいた FlashMX を使うことに。久々に使ってみると結構面白い。作りかけの WeatherTyping 販促 Flash でも完成させようかな。
携帯を買った。何か,N505iとかいう機種。ことの始まりはおまけにルービックキューブがもらえるという話だったので即購入したのだが,結局他の割り引きがあったのでもらえなかった。しかも機種変更に行ったのに携帯忘れたのでメモリのデータを手動コピーした。適当すぎだ。
なんかカメラが付いてるな,と思ったら動画も撮れる? 何ができるのかさっぱり分かんない。まあいいや。
denasu.toの有効期限が切れた。
ワードサーバ。元々100ワードくらいはないと一般の人も登録しづらいと思って私とパジ氏で追加する予定だったが,ロビーの方達で100は超えたようで。この先とりあえずは私とパジ氏でワードを増やしていく予定なので,お気軽に追加して下さい。
昨日からの変化としては,ソート機能を付け加えた。検索機能も既に枠組みはあるので追加できるが,今のところ必要なさそうなので外してある。パラメータをごにょごにょっとやると検索できる,かも。
今後の展開としては,機能追加は置いておいて,一番重要なマニュアルを書かなければならない。特にウェザタイ用のワードの作り方は結構特殊なのでちゃんとした説明が必要だろう。
というところでそろそろ WeatherTyping1.8 にしたいところだが,目玉機能があまりない。半年かかってワードサーバ機能とDLL不要にしただけか。もっとこう,入力形式プラグインとか観戦機能とか付けたいところだが,結構大変。
ワードサーバを仮稼働させてみた。まだ機能的に不十分(検索とかソートとか)だが,一通りのことはできるはず。テストしてくれる方は,ワードサーバからワードを登録してみて下さい。ちなみに荒れるのを防止するためユーザ登録必須にしてあります。また,ふさわしくないワードが登録された場合もすぐ消します。
登録されたワードを使う側は,WeatherTyping開発版を落とし,ワードの選択欄から[公式ワードサーバ]を選択して下さい。
ロビーで「しぇ」を「SHE」で打てない,というのを聞いたので修正して開発版に置いておいた。のはいいんだけど,ついに Hi-HO の容量制限をオーバーしてしまったようなので,WeatherTyping1.6 は消しておいた。Internet Game Maker(IGM)などの関係で旧バージョンが欲しいという方は自分で用意するか,メールで連絡を。
ロビーでワードサーバを宣伝したところ,その場にいらした方がいくつか登録してくれた。こんな感じで一般の方も登録してみて下さい。ゆくゆくは他のタイピングソフト作者さんにワードサーバを使ってもらったり,他のプログラマさんがワードサーバ作ってくれたり,するといいなあ。
夏休み。てことで以前から動かないと言われ続けていた Windows + PHP + mySQL のシステム復帰を画策。メッセンジャでやりとりしつつ数時間。なんとか動くようになった。YN氏に感謝。結局動かなかった原因は,
の 2 点。
Weather Typing を VS.NET2003 でビルド。
warning C4346: '...' : 依存名は型ではありません。
というエラーが出たのでヘルプで調べると,「依存名を型として扱う場合は typename キーワードが必要です。ISO C++ 標準に準拠するために行われた、Visual C++ .NET 2003 コンパイラでの互換性に影響する変更点」とのこと。というわけで『プログラミング言語C++第3版』で調べると確かにそんな仕様が書いてある。要するにテンプレート引数 template<class T> を使ったとき, T::x を使用したときにコンパイラがそれが型なのか関数なのか瞬時に判断できないので,型であることを知らせるために typename C::x としてくれという話。
ついでにライブラリを static にリンクして,DLL を落とさなくていいようにしようかと思い,static リンクに。しかし,いろいろなライブラリをリンクしているせいか,うまくいかない。最終的には全てのライブラリでランタイムライブラリの設定をマルチスレッド(/MT)にし,スタティック ライブラリで MFC を使用するにすることでビルドすることができた。結果,ファイルサイズもそれ程増えなかったので次のバージョンからはこれで配布する予定。これで DLL がなくて動かないという問題はなくなるはず。
というわけでテストも兼ねて開発版に VS.NET2003 でビルドしたバージョンを置いておいた。なんか使えないよ,って場合はご報告下さると非常にありがたいです。
# 機能的には何も変わってませんので…。
はっぱさんの日記で MSN Messanger6.0 の話があったので入れてみた。ログが XML で取れるようになったりその他いろいろ変わってたが,それより AirH" で安定動作するようになった気がする。前までは 2~3 分ほっておいたらいつのまにかサインアウトしていたが,そんなこともなくなったような。まあしばらく様子見。