2008年04月22日(火)
追記: 2008/05/08 - 現在4人オセロになっているため、多少この説明とは違うかもしれません。
Ajax(Comet)対戦オセロゲーム
http://port.movion.jp/
Cometオセロゲーム作成中なわけですが、前の記事で説明不足すぎたので、遊び方を補足したいと思います。
とはいえ、バグがあるため必ずしも正常に動作するとは限りません。あしからず。
推奨環境・利用前提等
・IE6、IE7、Firefox2.xのブラウザを推奨(他では試してません)
・Cookieが有効であること
・Javascriptが有効であること
・対戦ゲームなので、1人では遊べません。ま、誰かがアクセスしている可能性が低いので、1人で遊ぶ場合は、IEとFirefoxの2つのブラウザを起動してそれぞれでアクセスしてみてください。
遊び方の手順(1人遊び編)
1.それぞれのブラウザでAjax対戦オセロのページにアクセスします。
2.画面の上部から「INPUT YOUR NAME」という入力フォームが現れるはずなので、名前を入力してください。
※リロードした場合など2回目以降(セッションが残っている間は)は表示されません。
3.左したのピンク色のテキストエリアに「入力した名前(NEW) come into a room.」と表示されるはずなので、そしたら、
右上の「take a black seat.」のリンクをクリックしてください。ピンク色のテキストエリアに「入力した名前 take a black seat.」と
表示されるはずです。
4.上記3を実行したブラウザとは別のブラウザで「take a white seat.」をクリックしてください。
5.黒が先行なので、ボード上の黒が置ける場所をクリックしてください。
6.あとは、順番に駒(石)を置いていくだけです。
その他使い方の説明
・右側の「rename」(名前の変更)をクリックすると、名前を変更出来ます。
・右側の「leave a seat」(席をたつ)をクリックすると、黒か白を選んでいた場合、見ているだけの状態になります。
・右側の「force reset」(強制リセット)をクリックすると、ボードの状態や参加者をすべて初期状態に戻します。
・右側の下の灰色の部分は参加しているユーザの名前を表示しています。かっこ書きで「black」や「white」とある場合は、
その人が、黒または白の席に座っていることを示しています。
※ただし、状態は必ずしも最新の正確な状態を示していません。
・左したのテキスト入力欄に、メッセージを入力して「post」ボタンを押すとメッセージを送ることが出来ます。(チャットが出来ます)
動作しているかの判断
・ページにアクセスしたとき、オセロの駒(石)が何も表示されなければ、明らかに動いてません。
・名前を入力しても、左下のピンク色のテキストエリアに何も表示されなければ、おかしくなってるかもしれません。
ちょっと変になったら、リロードや「force reset」をしてみてください。
—-
退室の処理を実装しようとしたが、どうもFirefoxでうまく動作しない。
onUnloadでAjax.Requestの処理を入れると、$A is not defined・・・になってしまう。
コネクション張ったまま画面を閉じて、そのタイミングで結果がかえってくるからだろうか。
困った。退出したひとがしばらくはそのまま残ってしまう。
関連記事:
Ajax(Comet)対戦オセロゲームをApache&PHP&Javascriptで作成中
前回の記事のページから、自鯖にリンクを張っていてたまにしか稼働させていなかったためか、
Googleさんに前回の記事のページだけ嫌われてしまったもよう( iдi )
2008年04月18日(金)
キューのカウントは、
・Postfixのどのキューにどれだけメールが溜まっているか?(ネットワークエンジニアのノート)
シンプルでわかりやすいので、上記ページのqueue_count.shを利用。
〇キューの数を確認
./queue_count.sh
〇大量にキューがつまってるなら、とりあえず停止したほうが賢明
postfix stop
※startするタイミングは状況によって違うので、難しいところ。
〇キューの確認
mailq
※確認しきれない量の場合の方が多そうだが
〇キューをファイルに書き出す
postqueue -p > /path/to/mailq.txt
※怪しげなキューを調べます
〇面倒なので(消しても問題ないので)キューを全て削除する場合
postsuper -d ALL
〇特定のキューを削除する場合
postsuper -d QUEUE_ID
※QUEUE_IDはmailq.txt内を参考に
〇キューの中身をキューIDから確認する
postcat -q QUEUE_ID
〇とりあえず、メッセージをholdキューに退避
postsuper -h ALL
〇特定のキューをholdから戻す
postsuper -H QUEUE_ID
〇接続先のSMTPから拒否・制限されていないか確認
telnet ******.ne.jp 25
※拒否・制限されてるようだと、しばらく待つしかないかも
〇詰まってる量が少しで、特に問題なさそうな場合
postqueue -f
※配信を後押し(postfix startしてないと駄目ですが)
参考:
大量にメールがキューにたまってしまったら
※参考というより、上記リンクを読んでいただいたほうがわかりやすいですが。
2008年04月18日(金)
〇データベース一覧を確認する
MySQL
PostgreSQL
※シェルで実行
〇 接続しているデータベースのテーブル一覧を確認する
MySQL
PostgreSQL
〇テーブル(items)のカラムを確認する
MySQL
PostgreSQL
〇実行されているプロセス一覧を確認する
MySQL
PostgreSQL
-
SELECT * FROM pg_stat_activity;
〇文字コードを確認する
MySQL
-
SHOW VARIABLES LIKE "char%";
PostgreSQL
※シェルで実行
で、確認してください。
2008年04月16日(水)
では、 status_flagカラムが追加される場合ですが、もともとあるカラムがなくなる場合はちょっと面倒なので、以下はその1つの方法です。
PostgreSQL
-
CREATE TABLE items (
-
item_id SERIAL PRIMARY KEY,
-
name VARCHAR(50),
-
price INTEGER,
-
color VARCHAR(20),
-
createtime timestamp NOT NULL DEFAULT current_timestamp,
-
delete_flag CHAR(1)
-
);
MySQL
status_flagカラムを追加し、colorカラムは削除したいものとします。
-
CREATE TABLE items (
-
item_id INTEGER NOT NULL AUTO_INCREMENT,
-
name VARCHAR(50),
-
price INTEGER,
-
status_flag INTEGER,
-
createtime DATEMTIME
-
delete_flag CHAR(1)
-
);
どのタイミングでカラムを削除するか、まあどこでも出来るわけですが、
個人的に手っ取り早いかなぁと思う手順です。
PostgreSQLで、テーブル定義を変更しちゃったほうがよさそうなので、加工用でデータベースを作成。
-
su postgres
-
createdb sampledb_tmp
-
pg_dump sampledb > sampledb.20080416.dump
-
cat sampledb.20080416.dump | psql sampledb_tmp
-
psql sampledb_tmp
で、テーブルのカラム構成を変更したテーブル(items_tmp)を作成。
-
SELECT item_id,name,price,NULL AS status_flag,createtime,delete_flag INTO TABLE items_tmp FROM items;
そして後はエクスポート
-
COPY items_tmp TO ‘/home/postgres/items.tsv’;
次に、MySQLでインポート。
-
su takahashi
-
mysql -u root -p sampledb
-
—-
-
mysql>LOAD DATA INFILE "/home/postgres/items.tsv" INTO TABLE items FIELDS TERMINATED BY ‘\t‘;
-
—-
2008年04月16日(水)
続・Ajax(Comet)対戦オセロゲーム 遊び方編 も参照してみてください。

http://port.movion.jp/
2008/05/04追記。port.movion.jpは現在4人オセロになってます。
※自宅サーバのため、常時稼働はしてません。たぶん12時~24時くらいは稼働させてます。
※バグが多々多々あります。かつ、開発環境です。
※IEの場合ieerbugがでます。firefoxの場合FireBug入れてないといきなり変になるかも。
2008/04/20追記。ちょっとだけ安定版をここのサーバにも設置しました。
http://movion.net/sample/ajax-reversi/public_html/
今さら感は否めませんが、Cometなオセロゲームを勢いで作成中です。
railthelloとかあったけど。オセロゲームなのは、Pontiyを作っててまんまオセロゲームの仕組みを使えたから。
どうせなんで、4人オセロとかに拡張しようかなぁとも思ってます。
でもって現実的にはやっぱり、FMSなりJavaアプレットなり使った方がよいなぁと。
jetty6もちょっとさわってみたけど、クライアント数が増えることを想定してないので、とりあえずApacheとPHPで実装中。
C10KいやC1Kどころか、C100にも耐えられるか謎です。
実装は、PHPだけでリアルタイムAJAXチャットシステムを構築する方法。
を参考にさせていただきました。
アクセス数さえ少なければ、負荷もたいしたことがないので、
レンタルサーバに設置しようかと思いましたが(こことか)、無限ループぽっくなったり、デットロックぽくなったり、怪しげな挙動をする可能性が高いので、現状自鯖です。
幾分、問題をなおしたものをここのサーバにも置いてみましたが、万一アクセスが多くなったら撤去します。
でもって、自鯖にしてるパソコンはどうも共振してあまりにうるさいので夜はshutdown -h nowしてます。
リンクつながらなかったらごめんなさいorz
て、このサイトで宣伝して人が来るとも思えませんが・・・。
参考:
おとこのCometアプリケーション! 非モテのためのJetty 6 Continuation入門まとめ(前編)
Lingr and Comet - 技術解説編(CNET Japan)