2005年10月アーカイブ

 DBD-Pgの組み込みが終わってサーバーサイドの環境はこれで大丈夫だろう。
実際にPerlから利用できるのかソケットサーバーのプログラムを更新した。とりあえずOK。

 次にXML::Parserをどうやって使うのか検索したらCMAGAZINE2000/12に載っていると…。運よくその号のみ持っていた!(当時C言語でメールクライアント作ろうとしていたのでソケット通信プログラムの参考に買った)

 まさかPerlの記事があるなんてずっと気がつかなかった…。その記事を参考にパース部分の設計をまとめて今日は終了。この先はDBに実データいれないとテストできないためクライアント開発の方に移行する事にします。

 それと、アカウント登録用に別プログラムが必要になった。さすがにメインと共用は設計上好ましくないと思ったのでこれだけは分離。但し運用サーバーにApacheは使用しない為こちらもソケットサーバーにして新規アカウント登録専用にします。FLASHクライアントは共通で利用(シーン分けか分割のどちらかで利用)

 残り、マップデータとクライアントのキャラ移動関係を組み込めばチャットアバターの基礎は完了する。11月下旬にはキャラデザも終了する段階まで来ていればいいけどな…。12月はBGMと追加機能のみであまりプレッシャーが掛からないようにしたい予定。

 先週はDBIやXML Parserに関して組み込みを行ったので今日は実際にソケットサーバーから利用してみる予定でしたが、PostgreSQLを利用するにはDBIだけでは足りなかった模様。そこでPgライブラリを組み込んだ。

 Active Perlでppmを使用したときのコマンドは以下の通り。Perl5.8より古い場合はURLが異なります。

ppm> install http://crazyinsomniac.perlmonk.org/perl/ppm/5.8/DBD-Pg.ppd

コマンド結果は続きを読んでください。

 学術分野からの出展は珍しいなあ。と思い早速探索。
私も以前勤めていた会社で製品の出展があって説明員(技術)として3日間対応したことあるけど、出展するのって結構お金かかるのよね(学際でやれば場所代かからないから学外で展示を行う事自体凄いと思う)。それだけに、しかも休日が最終日となるWPCに出展するというのは凄いと思う。

 出展の内容ですが3Dの技術を応用した情報コンテンツの展示でVRの海を泳ぐ魚をクリックしたり、検索することでその魚の情報を表示するというものです。

 頂いた資料を拝見すると他にも空間や音響に関する研究。ユビキタスコミュニケーションを研究されています。これはどういった表現が的確か判りませんが、人と機械(ロボットやコンピュータ)のコミュケーションの研究(広い意味でのマンマシンインターフェースでいいかな?)つまり現状はキーボードやリモコン。まぁ良くて音声認識を使った命令などが人と機械の繋ぎ役になっているのですが、これが一定のルールに従った命令ではなく、人の感覚的な表現や言葉の意味などを理解し、そしてコンピューターが考えそして表現する。まだ現在ではマンガに出てくるロボットは夢のような世界ですが、こういった研究は何世代にもわたって積み重ねていかなければならないので企業では大変なことです。私も人工知能に関する研究がしたくて学生時代はニューロをテーマにした研究室にいた為この分野には凄い興味があります。(とても難しくてよく思考停止してました。)

東京工科大学 片柳研究所
http://www.teu.ac.jp/karl/

 これまた凄い企業を発見。技術立国日本をイメージさせる職人肌の企業です。
展示されていたのは三次元デジタル地図のPC用ビューアとWebビューア。他にITOKIと提携していろいろな製品がブース内にありました。最近Goole Earthが話題になっていますがこちらは航空写真ではなく全てが3Dモデルでしかもビックリなのがテクスチャに本物えを使っている点。つまりお店の看板とかまで再現されているの。ここまでやるのはマニアか職人じゃないと無理。3D地図という事で真っ先に3Dカーナビを思い出したが、やはり導入されているとの事。ココまでリアルならTVの特集番組の交通事故・凶悪事件シミュレートとか、TVゲームとか他に使い道が沢山ありますね。個人的には、地下鉄を含めた駅構内とかの3D地図(正直地下は3Dじゃないと判りにくいでしょ)があると便利。でも防犯上よくないかな?

最後にUrbanViewerの体験版をいただきました。神田地区の3Dマップが入っているとのことでアキバVRが楽しめちゃう。…てことはアニメ看板も再現しているのか、凄すぎる。

株式会社キャドセンター CAD CENTER
http://www.cadcenter.co.jp/

 以前、このブログを立ち上げたばかりの時にRSSリーダーとしてお勧めしたGLUCOSEの新版です。
実を言うと最初ブースの前通ったときに、パンフもらって説明を聞きながら、
『既にGLUCOSEという優秀なフリーソフトがあるのに何を今更…』と気がついてませんでした。
大変失礼いたしました!ごめんなさい!大変感謝してます!

さらに…。てっきり個人かサークルの趣味だと思ってました。会社組織だったんですね。
またまたごめんなさい! orz...

で自分が使っているバーションを確認したら1.0.1のようだ。Ver2の特徴はブログエディタにAmazon等のアフィリエイトIDを自動付加してくれるみたい。これは支援ツールとして大変ありがたいです。

2もフリーウェアだし、ネットでニュースを確認している人は是非ダウンロードして巡回の便利さを体感してもらいたい。

有限会社グルコース
http://glucose.jp/

 ここも穴場ツールだと思ってたら、午後になって人が増えたため撮影できませんでした。
というか超穴場ブースです。既にソフマップや九十九電器等で販売をしている商品のようですが、これはモバイル用の外部バッテリーで各キャリアの携帯電話とニンテンドーDS等の携帯ゲーム機そしてiPod、その他3V~9Vのアダプターを使用する製品とUSB給電に対応している機器に使えるミラクル商品です。
またバッテリー自身もUSBや専用アダプターで充電が可能です。

因みに容量が3200mAhと1700mAhのタイプがあり、今日私が持ち歩いていた機器のバッテリーを調べたところ。

Zaurus SL-C860 1700mAh
EOS KISS D 1100mAh
AU W22SA 830mAh

となっていました。携帯電話なら4回弱、EOSなら3回弱、Zaurusなら2回弱充電できるマルチバッテリーとなれば速攻買いに行きますよ。既に販売となればケータイWatchあたりは既に特集しているのではないかな?しかも5000~6000円位で買えるとなると純正の予備バッテリーよりも経済的だったりする。

因みに、近日発売予定なのはiPod nanoと同サイズのモデルという事でした。

株式会社バリューウェーブ
http://www.valuewave.co.jp/

 USBストレージと生体認証の融合。最近は殆どのPCにUSBが付いているのでファイルの持ち運びにはUSBストレージが便利になりました。でも人って万が一のことは想定していないもので、もし重要なデータを入れたストレージを紛失した場合どうなるのか?よく個人情報の入ったノートPCを盗まれたとかニュースになっていますがこの製品はUSBメモリーとUSB-HDDのタイプがあり両方とも指紋認証装置が付いていて万が一盗難にあってもデータを盗まれることが無いようになっています。

 通常のソフトウェアの暗号化だけだとパスワードを覚えていないとダメだし、中には忘れないようにどこかにメモする人もいてあまり効果が無かったりします。そういうケースを想定しても、また確実な本人認証を行うためにもこれから生体認証は重要な技術になっていくと思います。

NTTネオメイト岐阜
http://www.gifu.ntt-neo.com/

2005102903-1.jpg

 ここでネタを投下。
上の写真はネット放送局のコーナーで、いかにもバカそうだったので悪乗りでレポート。
既に放送開始しているみたいなので詳細は実際に番組見てくださいという事で。

第2日本テレビ
http://www.dai2ntv.jp/

2005102902-1.jpg

 今回は発売前新製品は無いのですが、注目なのはEOS 5D。まぁ実勢価格40万円以上(もちろん本体のみ)で店頭で実機に触れる機会があまりない為、早速試用しに行ってきました。

 特に、他社のデジタル一眼と一線を画しているは35mm一眼レフであること。canonの既存製品にはEOS 1Dsという最高クラスの35mm一眼レフがありますがこちらは80万円以上もするのでプロカメラマンでも手を出しにくい価格帯のようです。80万円もあれば予備レンズが数本買えますからね。

 35mmでメリットを受けるのは集合写真・風景・パノラマ・魚眼レンズの使用など広い視野が必要になるときフィルム一眼レフと同じ条件で撮影できる点です。逆に一般的なデジタル一眼はAPSカメラのフィルムサイズが基準になっているので望遠撮影する方には35mmよりも大きく撮れるというメリットがあります。但し35mmと同じレンズを使う以上光量の条件はどうなっているのか気になります。

 その他としては、写真の仕上がりがフィルム35mmと同じように出来るのでフォトCDにポジを焼いたときに写真の端っこが光量不足で暗くなってたりすると本当にフィルムカメラと区別がつかなくなります。あとは魚眼カメラで真円が描けるなど。

 上の写真はCFブースで撮ったもの、canonブースはIXYもEOSも大人気で試用もなかなか大変でした。
まずはレリーズの感触を確かめる。やはりココは価格差が大きくでています。EOS KISSがガシャ!といかにもな衝撃があるのに対し、5Dはとても軽くパシャ!って感じです。一眼はどうしてもメカニカルが部分の装置が大きいためブレをなくすためには重要な要素になります。

 次にファインダー自身の大きさについて、これはEOS KISSや20Dと大差ないと感じた。35mmになったからと言ってもファインダーが大きくなるわけではないことは分かりますが、ここは贅沢に大きく作って欲しいと思いました。ちなみにファインダーの中の空間は感光体が35mmになる分画角が広くなっています。

 NEW KISSではマクロレンズの撮影体験コーナーがありました。以下おまけレポート。

 会場に到着して最初行ったのはSHARPブース。お目当てはW-ZERO3。
イキナリですが写真がブース全体しかないのは、午前中一番に駆け込んだときは試用だけで、まだカメラを組み立ててなかった。午後にカメラを持っていったら既に混雑が酷くなりW-ZERO3の撮影を断念となりました。

 因みに混雑していたのは写真の正面にあるステージ部分で丁度W-ZERO3の展示と重なり長蛇の列になっていました。

 では、試用レポートへ

2005102900-1.jpg

 今日のスケジュールは、午前中の混雑しない時間帯に新製品の試用を中心にレポートして、午後はネタの発掘としました。去年SHARPブースでは人が多くて大変だったのですが、今年も新製品があるため十分予想されます。詳細は各レポートと実況にて報告。

WPC2005実況

| | コメント(0) | トラックバック(0)

 今年もWPCに行って参りました。と言いますか現在会場にいます。
朝から行ってますが年々スケールが小さくなっているような気がするのは気のせいかな。
最終日にしてはすくないかな。特に大型ブースが今一つ盛り上がりに欠けている、でも今回は小型ブースで掘り出し物があったので、他のサイトとは一味違ったレポートができそうです。

 では、帰宅後に写真付でレポートします。

 今日も殆ど出来なかった、テーブルの作成とCGIにDBIを宣言しただけ。テーブルの作成にはpgAdminを使ってみたが主キーはどこで設定すればいいのか分からなかった。中途半端にツール使うより直接SQL文を書くほうが楽だな。MySQLと用語が違うところがあり戸惑い。

 仕事が遅くなってしまったので今日はプロジェクトお休み、PostgreSQLとDBIの組み込みは完了したのでDBの設計を行う予定。PCでの実作業ができなくてもZaurusにメモとかでやってみる。

現在必要と分かっているカラムは

ユーザーテーブル:
pid プライマリID(SQL文では不使用) Auto number
uid ユーザーID 文字列(英数)
name ユーザーハンドル名(ゲーム上に表示する名前) 文字列
type キャラクタータイプ 数値
x 現在地x座標 数値
y 現在地y座標 数値
online オンラインどうか 数値

マップテーブル:
pid プライマリID(SQL文では不使用) Auto number
x 座標x 数値
y 座標y 数値
stat 移動の可否 0…OK, 1…NG(他プレイヤー), 2…NG(障害物)

特にマップに関してはロールバックが発生しやすいと思うのでDB使用を前提で考えてみました。
selectで処理しているのでメモリ読み込みのみでも壊れたりしないと思いますが、何れfork版が必要になったときのために設計します。

 先程、モジュールが組み込まれているかどうかuseで宣言してプログラムを走らせたところ、XMLパーサは大丈夫でしたがDBIが入ってなかったためインストールすることになりました。さて、どうやって手に入れるのか検索したら、ActivePerlの場合はppmコマンドを使ってネットからライブラリをダウンロードして組み込むことが出来るらしい。

早速、コマンドプロンプトを立ち上げてppmと打ってみると以下のようにPPMが起動した。

PPM - Programmer's Package Manager version 3.2.
Copyright (c) 2001 ActiveState Corp. All Rights Reserved.
ActiveState is a division of Sophos.

Entering interactive shell. Using Term::ReadLine::Perl as readline library.

Type 'help' to get started.

ppm>


ここで表示されているppmプロンプトに「install DBI」と打てばDBIのインストールが始まる。

ppm> install DBI
====================
Install 'DBI' version 1.48 in ActivePerl 5.8.7.813.
====================
Downloaded 548475 bytes.
Extracting 73/73: blib/arch/auto/DBI/Driver_xst.h
Installing C:\Perl\site\lib\auto\DBI\dbd_xsh.h
Installing C:\Perl\site\lib\auto\DBI\DBI.bs
Installing C:\Perl\site\lib\auto\DBI\DBI.dll

(中略)

Installing C:\Perl\bin\dbiproxy
Installing C:\Perl\bin\dbiproxy.bat
Successfully installed DBI version 1.48 in ActivePerl 5.8.7.813.

インストールが完了したらppmから抜け出して早速Perlプログラミング開始

ppm> q

インストールログは続きに全文掲載。

 昨日の書き忘れで、ソケットサーバーのPerlに必要なライブラリを確認。
一つはDB用でDBI、もう一つはXMLパーサ(XML::Parser)。まずはWindowsで構築するのでActivePerlに入っているかどうかを確認しないといけない。さらにライブラリの使い方を覚えないと・・・。

 この件で思い出してしまったのだが、「Perlを256倍使うための本 DBI編」を売却処分していた。多分当時使ってたPerlにDBIがインストールされて無かったためかDB自体理解できなくてあきらめたかのどちらかではあるが・・・。

 気を取り直して頑張ろう!

 本当は目先にある問題(クライアントのバグ)を解決しないといけないのですが、プログラミングをする時間も無かったので電車の中とか、昼食中とかに無駄パケットのフィルタリングについてアルゴリズムを検討していました。

 もちろん、仕様書なしの仕様です。(自分1人だからいいけど)ココに書いておけば忘れても大丈夫だろう。

 サーバー側が1プロセスで動いているselect方式であるため、アルゴリズムとしては理解しやすかった。(私は再帰とかすごく苦手なのでforkだとパニックになってるかもです。)
 因みに処理効率はどちらが良いのかは分からないです。1CPUだと分散してもあまり意味がないようにも思います。

 方法は、パケット送信するクライアントを選択したとき(この時点ではハンドルしか分からない)、サーバー側に保存している位置情報を取り出して今度は送信パケットと解析し、座標が範囲外のものは送信しないようにする。実は単にこれだけ。

 その際にサーバー側でクライアントの状態を取得するためにDBもしくはファイル、保存しないのであればメモリ内だけのDBサーバーを制作する必要がある。あとクライアントをハンドルのみで処理していると、ログインするたびにクライアント数が増えてヤバイ事に気づく。やっぱりID発行しないとダメかな。

 そんなところで今日はDBのインストールで終わり。とりあえずMySQLとPostgreSQLに対応させますが、MSSQLは開発環境があるものの運用時にサーバーと予算が限定されるので移植に向かないと判断。あとすごく興味があるのは、このブログでも使用しているBerkeley DBはファイルベースで移植性も良くてLinux等には標準で搭載されているみたいなのでライブラリがあればこちらも検討。(多分パフォーマンスはあまり期待できないかも)

 MySQL5.0の正式版が発表されました。今週の発表なのでアプリ開発にはフライングなのにダウンロードしてインストールしてしまい、何の意味があるのか?と後で思っている始末です。(レンタルサーバーでMySQLを使用するのであまり新しいバージョン追いかけると開発機で動いたものが運用機で使えないとか問題起きそうだな…)

日本MySQLユーザー会
http://www.mysql.gr.jp/

 今回は、DreamweaverとPHPを使うわけでもないのでMySQLにこだわる必要が無くなったためPostgreSQLをインストール、今まではWindowsで一度もインストールに成功したこと無かったので嫌な予感はしていました。実は今回もインストーラーが致命的なエラーを出して何度入れてもダメ。エラーログをみながらユーザーをグループに追加したり、フォルダのアクセス権を緩めても失敗。こうなったら検索しかないので延々と調べてようやく分かった原因。

「WindowsではUNICODEでインストールできない。」

 何ですかこの結論は…。文字コード選択にShift-JISが無いためUNICODEにしたのに…。ロケールの選択もJapanにするとログ内でinvalid吐き出しているのでデフォルトに戻す。

 PostgreSQLに移行しようと思ったもう一つの原因は、以前MySQLを使ってて(ver4はあったが安定版はまだver3だった)連鎖削除が出来ない事に後で気づき使えねーとなったことがありました。

 でも、ホスティング会社ではMySQL派の方が多数ということもあって開発には両方使っていく必要がありますね。

日本PostgreSQL
http://www.postgresql.jp/

 チャット機能を搭載したFLASHクライアントにEnterキーによるメッセージの送信ができるようにイベントを追加。チャットのみのアプリではないのでフォーカスに関係なくメッセージ入力と送信を行おうと最初にEnterの処理を追加したところで想定外!

 IMEの漢字決定Enterでメッセージを送信してしまう。

いくらフォーカスに関係なくと言ってもそれはやり過ぎだろう…orz
キーボード入力が在ったらフォーカスをメッセージボックスに移すだけにして、Enterはメッセージボックス内のイベントに設定してみるかな。

 あったらいいなと思っていた色弱の場合の見え方をシミュレートするツールがありました。
色の問題って結構難しいですね。最近はディスプレイも液晶が普及してきたせいで発色の個体差が昔より大きくなり色の環境は悪くなっていると思います。特にノートPCだと輝度が低いので彩度も低くなりがちです。

ColorAccess
http://www.forest.impress.co.jp/article/2003/07/22/okiniiri.html

 昨日は単純だと言っておきながら、罠にハマった。XML Socketは簡単なのだが、FLASH XMLオブジェクトのメソッド・プロパティが生産性の低いものばかりだった。 orz

 送信用データの作成については、まだ目を瞑るとして、受信データの抽出の仕様には呆れてしまった。
何で上から順番に辿って取得しなきゃいけないんだ?しかも親→子で辿る分は気にしないが、記述順にずっと辿っていくのは情けない。(つまり親子関係の無いタグも辿っていく)折角タグに名前をつけることが出来るのに何故ダイレクトにデータを持って来れないのか。XMLの構造通りにデータ取得ルーチン書くなんてアホすぎ。まだ今日はチャット機能のみなのでまだ綺麗だが、全ての機能を実装した日にはとてつもなく費用対効果のないコードが出来る悪寒。こんな状態では仕様変更時のデバッグもやってられない事態に発展するので、書籍やネット調べました。

 …が、どこも苦労しているようです。裏技でダイレクトアクセスできる方法が載っていましたがMXでは使えなかった(バグ技は保証なしってことです)。ゲームの仕様上、キーボード入力のなデータはチャットメッセージのみでそのほかは全てイベントメッセージなのでデータ用のタグにメッセージを入れ、それ以外のデータはタグの属性に突っ込みました。摂りあえずこれで処理コードの量は1/100位になったと思う。おまけに構造を気にする必要もなくなったので、生産性の低いコードと無駄パケットの嵐の2つを天秤に掛ける必要もなくなった。

 これでMMOチャットは完成。ただキーボードイベントが変だったのでその処理を行って次はマウスイベントの方を実装します。キャラデザとBGMは11月後半かな。それまでにシステムだけは完成させよう。

 予算と時間に余裕があれば11月末にSTUDIO 8を準備してエフェクターの恩恵を受けたいなぁ。

 ソケット通信関係のプログラミングが一段落したので、本日よりプロジェクト開始とします。
今まで語る人も利用例も少ないFLASH XML Socketはかなり難解なものと思っていたら、関数も一桁の数しかないし、思いっきり単純でした。これで直ぐにチャット機能は完成しそうなんで実装して複数接続のテストを行います。

 因みに今回制作するコンテンツの詳細については、仕様を含め全ての詳細が決定しましたが、投稿作品として制作している理由上、作品そのものは発表時まで非公開になります。

 今日からFLASH側にテスト用クライアントを作成して動作の確認を行ってみた。
最初は接続・切断はうまくいくもののデータの受け渡しが上手くいってないようで、半日経過。
デフォルトの仕様から調査してみると、別にXML形式でやり取りする必要性はなく(FLASH側にとってはデータ処理が楽になるが)、1行ずつ読み込むPerl側はFLASHから改行コードが来ないため次の処理に進めず、FLASH側に\nつけて送ったら今度はサーバーからのエコーを処理できない。FLASHのXMLソケットはNULL(\0)を区切りとして処理しているのでサーバーからデータ送信する際に\0を付与すると解決した。
 一応1対1の通信が完了したので、今度はサーバーで同期配信を組み込めば大体処理は完了かな。
但し、サーバーのCPU負荷と通信量は十分考えなければいけない。

 通信量の節約:
究極はバイナリでbitごとに定義したデータだけど、多分チャットメッセージの方がずっと重いはず。
テキストだとコマンド部とデータ部を分ける処理をFLASH側で自作。XMLで在ればサーバーに解析処理が必要な場合も有り。例えば最大接続が1000人だとして大体位置的に自分の周り30人くらいのチャットを受け付けるとすると位置情報から絞り込んで送信すべきなのだろうか…CPU負荷と相談。

 CPU負荷の軽減:
これは、サーバー側での処理を極限までに少なくする必要がある。最初はコンパクトに実装するが通信量が見積もれる段階になったら考えてみよう…。

上記2つはタイムラグの発生を最小限にする為何度もシミュレートしてみる。
クライアント側の処理もなるべく軽くする予定だがPenIII-850未満のCPUは想定外。サーバーの通信帯域は32Mbpsを上限とする予定なので1クライアント32Kbpsつまり1秒間に4Kバイトまで、リフレッシュレートは10fps辺りで設定かな。(こんな通信仕様でレンタルサーバだったらプロセス停止食らいますね)
 

 最近、Zaurusの後継?とか信憑性の薄いウワサを聞いていましたが、これのことだったのか。そのウワサの内容をまとめると次期ZaurusにはWindowsが載ってキーボードがスライド式。

 その情報で縦長のZaurusかと思っていましたので(SHARP業務用端末はWinCE機とかありますからね。)Cシリーズ使いとっては微妙だなーと思っていたら…。

 ウワサの端末が登場してビックリ。新端末W-ZERO3は無線LANとPHS内蔵ですか、別の方面からMSが日本で初めてWindows携帯を発売すると聞いていたがその話もこの端末のことですか!
 WindowsベースということはブラウザがIEであることが最大の利点なんだよなー。その次がビデオや音楽ファイルのサポート範囲が広いこと、デメリットは操作性の悪いインターフェース。今回はキーボード付きだし、写真を見た感じのスライドだとZaurusよりも切り替えが楽そうだ。でもHDDないのが気になるけど、マイクはいつになったら内蔵になるのでしょうか?

…そういえば、ウワサになっていた頃はWPCでお目見えと思っていたが一週間予想より早かった。去年、WPCでSL-C3000をレポートしたときもSHARPブースは凄い人だったけど今年はもっと多いかな。


関連情報
http://www.sharp.co.jp/ws/
http://k-tai.impress.co.jp/cda/article/news_toppage/26175.html

ZaurusにPerlを入れる。

| | コメント(0)

 流石にX-Windowとsted2、ソフトシンセまで入れたZaurus SL-C860にはもうC++コンパイラでセルフコンパイル環境なんて余力が残ってない。でも丁度Perlでソケットサーバー作るわけだし、面白いかなとPerlを入れてみました。そこで初めてemacsを削除したことを後悔。ZEditorで書いたらShift-JISだったためコンソール上では化けてしまう。それで他に軽いエディタないかなと調べて日本語入力対応でヒットしたのがVim…。vi系なんてガッコでも習ってないぞー。(学校ではmuleでした。)vi系エディタが使えればどんなサーバーでもスクリプト書きには困らないだろうけど、あの特殊な操作方法はムリです。

 Zaurusがサーバー管理ツールから作曲&プログラミングツールへと変貌している…。

 マルチプレイサーバーを作るにあたって、自宅サーバーで運用すると仮定してもBSD辺りで最小限の構築をしようと思っていました。そのときの構成が以下の通り。

サーバー機1台新調。
FreeBSDをSSH,emacs,bcc,makeのみでインストール
Apache2.0+SSL(モジュール最小)…アカウント管理ツール用
Perl5.8.0(ライブラリはDB関連のみ)…ゲームサーバー・管理ツール用
Qmail…アカウント発行用
BIND…メールサーバー用
Postgresql…ゲームデータ保管用
ipfw…ファイヤーウォール

結構、これで多人数の利用を考えるとスペックが必要になります。

 STUDIO 8 アップデート版が欲しいのにその倍額を掛けてサーバー構築も大変だーと思っていたら、「別にゲームサーバーのみで全て受け付けて、FLASHクライアントにアカウント登録から組み込めばコンパクトかつ、どのOSでもパワーの余ったPC使えばいいのでは?」と閃いた。

 そういえば自宅のデスクトップは全然使ってない。スペックが劣っていてもノートで制作したりしている。そういうことなら移植性を考慮しながらWin用で作ればと思い考えたのはこの構成。
Apache…ここのドメインを使用(告知・宣伝・クライアント配布用)
ActivePerl…ゲームサーバー・アカウント管理
Qmail…ここのドメインを使用(連絡用)
Postgresql…ゲームデータ保管用(使用しない場合も想定)
NAT…WindowsPCはルーターの下に接続しているのでここでポートフィルタリング
ウィルスバスター2006…パーソナルファイヤーウォール

これならハードウェアの追加はいらないどころか最大のパフォーマンスがだせるかも。

 久々笑わせてもらいました。このネーミングセンスは爆笑狙いか?絶対買って、ホリエモンのエキスどうぞーなんて出してみたいぞ!こち亀的発想で商品開発できるってある意味うらやましい。

 商品はマジメな健康ドリンクで1本380円。ちょっと前ならライブドア株買えるお値段です。割高なのかどうかは分かりませんが職場に持ち込むネタとしてはいいアイテムだとマジで買う予定。六本木ヒルズのam/pmで売っているんだな。

 誠に勝手ながらってそんなことないですよ!年末イベントはやっぱりクリスマス入れなきゃ!
やっぱり、クリスマスをテーマにしたいFLASH職人さん達の要望があったのかもですね。

・slashup01 X'mas:2005年12月24日(sat)
・slashup01~冬の陣~:2005年12月25日(sun)- 30(fri)

そうなるとテーマも問題ないしあとは作るだけ!

MUZO
http://muzo.jp/

 あまり残りの期間もないので早速サーバーサイドのプログラムから書き始めました。FLASHのテストクライアントは週末にでも。
 ただ、自宅サーバーを休止した上にサーバー機を処分してしまった為にWindows用にテストサーバーを作ることになりました。
 …で。数年もやってないことはすっかり忘れているのかPerlでforkを使ってしまい撃沈。やっぱりUNIX系クライアントは必要だなー。cygwinと言う手もあるけど、妙なところでWindows絡むので信頼できないし。

 結局、思い出すために昔の雑誌やら書籍や参考にしていたサイトを探していました。
よくよく思い出してみるとソケットとforkの両方を使ったプログラムは組んだ事なかったのです。だからMMOがどうやって実現しているのか設計内容が分からなかったのか…。ソケット通信はHTTP/FTP/メールクライアントで作成して、fork関係は途中で投げ出していた…。

 とりあえず、forkの代わりにselectを使用して対処。

以前から大変に参考にしています。

ネットワークプログラミングの基礎知識
http://x68000.q-e-d.net/~68user/net/

今年の紅白FLAはslashup?

| | コメント(0)

 そろそろ今年の紅白FLASH合戦のエントリー始まると思ってググッていましたが見当たらず、最終的に2ちゃんねるのFLASH板にたどり着いてどうなっているのかな?と探すとMUZO運営でslashupになっているみたいでした。MUZOサイトにアクセスすると今後MUZU運営のイベントは全てslashupになるという。
 slash01となっているので年末のイベントが初回みたいですね。

開催日:2005.12.26~2005.12.31

あ…クリスマス入ってねぇ…。(どうする?BGM!!)

今日サイトみたらflash★bomb'05がテレビで紹介されたようです。既に見逃し状態。

MUZO http://muzo.jp/

 ソケット通信って自分にとっては凄く懐かしい響きだ…。C言語やPerlでソケット通信プログラムを組んでいたのは5年も前だし。その頃はPerlでサーバー間のデータ受け渡しに凝っていました。CGIの使えないレンタルサーバーが多かった頃でサイト更新システムを外部に作成しPerl上でFTPクライアント組み込んだり、後はVC++で同じような物を作成していました。

 でも、これを応用してマルチプレイヤー型ゲームを作っているなんて目からウロコ。実はかなり特殊なことをやっていると思っていたけれど基本的なネットワークプログラミングでサーバー側は出来てしまうんだなーと納得しました。

 それが分かれば早速、仕様を確定してサーバー側のプログラミングを始めるのですが、実はC言語ではVC++が開発環境だったためかwinsockばかり使っていた記憶しかない。(でもVCでsocket.hも使えたような気がします。)今度はUNIX型サーバーに組み込むのでとりあえずはPerlで制作してみることにします。レンタルサーバーにはファイヤーウォールの関係で多分組み込めない気がするのでまた1台サーバー立てないとダメかな…。

年末のFLAどうしようかな。

| | コメント(0)

 最近、休日になると殆ど一日寝ている状態な管理人です。ちょっと地震にビビッタ。
そろそろFLASHの制作に取り掛からないと今年も作品作れずドロップアウトになるのでヤバいのですが、やっと作る内容を決めたので早速情報収集しなくてはの状態です。
 作曲の方がハードル高いので要するに著作権切れ楽曲を使用する事を前提。もちろんオリジナル作品でないと公開できないので音源等は自分で用意しレコーディングます。その関係でテーマはクリスマスにしましたが、次に具体的な内容を如何しようかと考えたところ、プロモだとストーリー大変だし、ゲーム感覚でオンラインミーティングでも作ろうかと。まぁチャットオンリーのMMOみたいなイメージですが、グリーティングカードの代わりにメールにメッセージを入れて指定した時間にお互いがログインすると、その場でチャットできるって物。ちなみに一人じゃ遊べないという微妙なデメリットもありますが、余裕があれば多人数接続までやってみようかな。

 Windowsのプログラムを制作していてスタートアップとかではなくてサービスに登録してサーバーとして運用したいなーと思うことがありますが、3年程前サービスプログラムを組んでいて結局失敗した事があります。当時は.NET用の情報が殆ど無く私が.NETしか持ってなかったためATLやら色々いじった挙句ダメだったわけです。(※仕様変更って恐ろしいですね)

いつごろから存在するのか知りませんでしたがsexeというソフトがあり、これを使うとサービス用に制作されていないプログラム、良くある例としてはLinux用プログラムのソースをWindows用に移植してコンパイルしたものを登録するなど、非常にありがたいソフトだなと思います。ニッチな需要ですね。


sexe
普通のプログラムを WindowsNT/2000/XP のサービスとして動作させる
http://www.vector.co.jp/soft/winnt/util/se227419.html

落ちないTeraTerm

| | コメント(0)

 こんな書き方で大変失礼ですが、ついこの前まで使っていたTeraTermPro2.3がよくSSHで通信が切れていたので、SSHってすぐ切れますよねーってボヤいていたら、使ってるバージョンが古いんじゃない?と答えが返ってきました。いつも作者のページに行っていたので2.3で更新が止まったままだと思っていましたがVectorにはUTF-8対応の4.20があるのを初めて知りました。しかも作者が代わっている…。ずっと辿っていったらSOURCE FORGE.JPに着いた。元々人気の高いフリーソフトなので、どうやらソースを公開して開発を移管したみたいですね。

 それで使ってみての感想ですが、全然落ちない!業務中12時間連続でApacheのエラーログ監視ができた!すっげー感動。(注:Perlプログラムのデバッグ作業をやっております)

UTF-8対応TeraTerm Pro
http://www.vector.co.jp/soft/winnt/net/se320973.html

 やっと入りましたよSted2!。これでZaurusでもMIDI打ち込みができます。(でもレコンは使ったこと無いのでまずは操作方法覚えないといけない)。ソフト音源なので音質は良くありませんが、そんなのはレオk-ディング時に調整すれば済むので、ベースパート、リズムパートはこれでガシガシ入力できそうです。
流石にメロディーパートはキーボードorギターで確かめたほうが早い。(ギターはまだ弾けませんが)

以下のサイトが大変参考になりました。ありがとうございます。

sted2
http://ehe.s57.xrea.com/index.php?sted2

ソフトウェアMIDI音源 timidity に関してはこちらのパッケージを使用。
Linux ZaurusでMIDI
http://www.geocities.jp/uirozaurus/linux_zaurus_midi.html

TiMidity だだだだ!(音源ファイルのでかでかzipはこちらからいただきました。)
http://www.i.h.kyoto-u.ac.jp/~shom/timidity/

TiMidityと音源をインストールしただけでは音が出なかったので下記を参考にパスの設定をしました。
Zaurus memo
http://homepage2.nifty.com/cstation/zaumemo03.html

 夕方にmacrodedia社からのDMが来て、えっイキナリ発売!?な状態。
価格は予想通りだったので驚きませんが、事前に販売日とか告知しないんですね。
MX1.1買った時もまさか1ヶ月以内にMX2004が発売されるなんて知りませんでしたし、それがあってバージョンアップ代が勿体無い&一世代のバージョンアップはメリットが少ないということでずっと待ってました。早速注文したいところですが現金ナッシングなんで、年末かな…。
 とりあえず、今年はMXで出来る限界までやってみよう。

zaurus X端末化計画

| | コメント(0)

 ついにX端末入れることにしましたー。第一目的はsted2を動かすことなので、別にXアプリで使いたいものが沢山あるわけでもないしそもそもHDDなしタイプなので容量という大きな壁もあります。
 でも、実際に入れてみると夢が広がりますねー。やっぱりHDD搭載型に変えて本気でミニパソコンとして、この場合大きさ的にはどんな種別かな?
 昔から疑問な名称と大きさのずれですが、アメリカ人てそんなにデカイのか?

デスクトップ→実際に普通の机に置くとかなり邪魔です。
ラップトップ→ワープロ等(ひざの上なんて重くてムリです。)
ノートブック→B5以上のノートPC(これがひざの上限界サイズ)
パームトップ→B5未満のノートPC(手のひらの上で操作は辛い)
ハンドヘルドPC→PDA&Zaurus(これが手のひらぐらい。ホールドも出来なくはないからあってるかな)

3日連続で雨ってなによ

| | コメント(0)

 最近涼しくなって過ごし易くなったかと思えば、ここ一週間ずっと雨、洗濯物が乾かない~。

F1日本GP決勝で

| | コメント(0)

 初めての生中継という事で昼間っからF1を見れるのがうれしいのか何かいつもと違うので違和感があるのですが、鈴鹿スペシャルは行けるかなという期待で見ていました。またしても運の悪い結果。運も実力のうちとは言うけど…。

Dos攻撃対策

| | コメント(0) | トラックバック(0)

 最近、ニュースでよく聞く不正アクセスといえばDos攻撃だと思う、5年前にネットワークの勉強をしているときに新しいタイプの攻撃方法として紹介されて初めて知りましたが未だに有効な解決法がないようです。対策法として「ダイナミックファイヤーウォール」なんて言葉を考えて見ましたが、現在ダイナミックファイヤーウォールと呼ばれている製品はDos攻撃の根本的な対策を行う仕様には至ってないようです。

 実際のダイナミックファイヤーウォールは普段ポートを閉じていて、正当なパケットの応答に対して一時的にポート開くようなものでした。一応これでサーバー自身は守られるかもしれませんが、外部に公開しているサーバーである以上ユーザーの不便が解消されなければ殆ど意味が無いわけです。Dos攻撃の目的は脆弱性の突いた乗っ取りかサービス不能状態に陥らせる嫌がらせなのでサーバー単体や側近のルーターでどんな対策をしても防げないというわけです。

 そこで私の考えているものはDNSのような仕組みで禁止ルーティング情報を伝播させ、サーバーが不正アクセスと判断した端末側のルーターにルーティング禁止をしてもらうってことは出来ないだろうかということです。もちろん世界標準なデーモンになってくれなければ意味が無いのですが…。
 つまり発信元の側近ルーターで防いでしまえば他のネットワーク利用者に与える被害も最小限になるのではということです。可否を判別するのはサーバー側。

 よくメールマガジンや掲示板等ではドメインレベルで接続を禁止したりしてISPやホスティング同士で抗争していますが結局サーバーの負荷を下げる為だけに一般ユーザーが不便を強いられる事になります。
 プロバイダもホスティングからサービス拒否されると対象が有名サイトだった場合、顧客流出の危機にもなりますし、自衛の為にも必要なんじゃないかなと思う。

 もしかしたらそんな製品あるかもですが、あったら教えてくださいまし。

 本体メモリーの空きが30MBと中途半端だったので、思い切って翻訳辞書を消したら53MBも空きができた。どうも、本体メモリーは圧縮してるらしい(翻訳辞書自身は48MBなので単純に計算が合わない)
 そういえばSL-C860を買うときにスペック表を見てメモリーに関して大きな勘違いをしていた。FLASH128MB+RAM64MBと思っていたら…。どうもスペック表が訳分からない、正直メインメモリーをビデオメモリーに回すPCのスペック表より分かりづらい、それもシリーズ内でメモリー仕様に一貫性が無いので余計に混乱。A300がSDRAM+バッテリーでデータ保持、他の機種はSDRAMのデータをFLASH若しくはHDD(SL-C3000の場合)にバックアップとっていると考えてよいのかな。これで晴れてsted2インストールできる♪

対戦ゲーム探していたらここのFLAG DASHが面白くて、キャラもかわいくて楽しめました。でも6人のルームが4つなので最大24人まで。やっぱり人気があるのかなかなか入れないです。

FLAG DASH
http://www.mmcreative.co.jp/playground/snow/snow.html

ネットゲーの企画

| | コメント(0)

 最近カテゴリーがクロスすようなことばかりですが、またプログラミングをするようになったので今度はネットワーク関連でやってみようかなと思っています。(1からは無理です。)昔C言語のメルマガを発行(現在休刊中)していたときは、C言語→C++→MFC→DirectXと展開する予定でしたが、結局時間が無くて書けないままです。実際モデルとしてUnrealTournamentのようなゲームが制作できたらいいなぁの気持ちだったのですが、最近はネットゲームでも5000人同時接続規模のMMOが流行なのでいつの間にかはるか雲の上の技術です。冷静になって考えてみれば、サーバー側はデータの同期と判定関係が殆どぽくて、それ以外は全てクライアント側プログラムだと思います。そう切り分けるとイキナリ気合いれてDirectXする前にFLASH対戦ゲーから作ってみようなという気になりました。これはUNIX無関係かな。一応大規模MMOを目指して個人でも運用できるプログラムならWinXP Pro+Postgreがいいのかな?

ColdFusion高っ!

| | コメント(0)

 昨日に続き、価格コムで値段をを調べたらサーバーが100万円近くするのか…。個人では買えません。若しCF用プログラム作っても配布するだけで、運用は他の有志にやってもらうしかないです。

 こういうのって職業病なのかな、現在のプロジェクトでウェブサーバーの構築とかやってるのでまたサーバーを立てたくなってしまった。今度は殆どパッケージを使用しないつもりですが、ここに来てLunixの方が相性がいいのかもと思うようになりました。BSDの方が一元性があって良いと思うのですが、最近のデーモンがLinuxをターゲットに作られてきているし、Java環境に至ってはSolaris/Linux/Windowsのバイナリしか配布していないのでBSDではエミュレートして使うような状態になるのも気に食わない。気に食わないのはBSDに対してではなくBSDやMacOS用を制作せず放置しておきながらマルチプラットホームとか言っているあの会社についてですが。そう言えばColdFusionやってみるのもいいかな。これもまたシステム要件にBSDがない。開発用ならSTUDIOについていたのでWinXPに入れておきますか…。

Zaurusのメモリー内整理

| | コメント(0)

 やっぱり、sted2は必要になるかなーと思い。この際全く使わないソフトを削除してみました。例えばemacsとか結構容量使用していたし。(telnet/ssh時はサーバー側のemacs使えるのでローカルでは必要なかったりする。ローカルでわざわざコンソール用エディタ使わないし)
 あとはJava環境とかも最新のC3100には無いそうなので思い切って削除。辞書は無いと心配なので残した。古いスケジュールやメールは消したほうがいいかな。(メールはSDに移すという手もあるし)それであれこれやってたら30MB程空き容量ができました。やっぱり一部はSDにインストしないといけないのかな。Sted2入れるまでにはXサーバー/端末とフォント・ソフト音源・sted2で49MB位必要だそうで…。

携帯のビデオを配信

| | コメント(0)

 去年はSDビデオカメラを2台持っていましたが、現在は最近買い換えた携帯電話のみになってしまい、ビデオのフォーマット変換に苦労しています。PCで再生するだけならQuickTimeでOKですが、ザウルス用に変換できなくてなんとなく意味なし。それとやっぱり携帯電話