人気記事

広告

記事検索

MOVION.netについて

WEB技術に関することや、気になるWEBサイトなどについて個人的なメモを残すためのブログです。

その他運営サイト

2008年06月6日(金)

Yahoo!地図で岩手大学付近に隕石が落下・・・のように見える

Yahoo!地図を何気なく眺めていたら・・・・


詳しい地図で見る

ネタ | 2008年06月6日(金) | コメント(1) | トラックバック(0)
2008年05月20日(火)

PHP5でデザインパターン・Singleton(シングルトン)編

結構よく使うSingleton。インスタンスが1個であることを保証出来る。
php4で、Singleton中途半端に実装して、newもgetInstanceも誤って使うと訳がわからなくなります。

以下ソースコード。

  1. < ?php
  2. class Singleton {
  3.     private static $singleton;
  4.     private $_name;
  5.     private function __construct() {
  6.         print "create instance<br />";
  7.     }
  8.     public static function getInstance() {
  9.         if (!is_object(Singleton::$singleton)) {
  10.             Singleton::$singleton = new Singleton();
  11.         }
  12.         return Singleton::$singleton;
  13.     }
  14.     public function setName($name) {
  15.         $this->_name = $name;
  16.     }
  17.     public function getName() {
  18.         return $this->_name;
  19.     }
  20. }
  21.  
  22. print ‘Singleton.php test start.<br />’;
  23.  
  24. $object1 = Singleton::getInstance();
  25. $object2 = Singleton::getInstance();
  26.  
  27. $object1->setName(‘akira’);
  28. print $object1->getName() . ‘<br />’;
  29. print $object2->getName() . ‘<br />’;
  30. $object2->setName(‘yoshiko’);
  31. print $object1->getName() . ‘<br />’;
  32. print $object2->getName() . ‘<br />’;
  33.  
  34. $object3 = new Singleton();
  35. print $object3->getName() . ‘<br />’;
  36.  
  37. echo ‘Singleton.php test end.<br />’;
  38. ?>

これで、$objcet1も$object2も同じインスタンスです。
$object3は生成出来ません。

で、以下結果。
———–
Singleton.php test start
create instance
akira
akira
yoshiko
yoshiko

Fatal error: Call to private Singleton::__construct() from context ” in /var/www/public_html/exsample/Singleton.php on line 34
———–

34行目でprivateになってるコンストラクタを呼び出そうとしているので、エラー(Fatal error)が発生しています。
そのため、「Singleton.php test end.」までは進みません。

今さらなネタですが、とりあえず。

2008年05月8日(木)

Smoke Effect Tutorialを実際にやってみた

元ネタはこちら http://www.tutorialguide.net/smoke_effect_tutorial.html

フォトショップで、煙効果。おもしろそうだったのでやってみたが、なかなかうまくいかず。 手を抜こうと思ったのが駄目だったみたい。 というわけで、適当に日本語にしてみた。

STEP 1

適当なサイズで背景を黒にして新規画像作成をする(この効果は背景黒がベストだと思う)。で、”多角形選択ツール”を選択し、新規レイヤーに以下のような適当な形を描く。(色は何でもいいけど暗すぎるとだめかも) smoke-eff01.jpg

STEP 2

レイヤースタイルの「光彩(内側)」で、描画モードを「ビビットライト」とかを選択し、エレメントのサイズも適当に調整して、以下のような感じにする。

smoke-eff02.jpg

smoke-eff03.jpg

STEP 3

さあ、霧っぽくしていくよ。”フィルタ>変形>波形”パラメータはデフォルトのままで「OK」を押す。

smoke-eff04.jpg

smoke-eff05.jpg

STEP 4

変な形になったら、すかさず”編集>「波形」をフェード”を選択。で不透明度は50%くらいに。
あとは、STEP3、4を良いと思える感じになるまで繰り返す。ここで注意なのはSTEP3を手抜きして、Ctrl+Fをしちゃうと霧にはならないみたい。変形の時は、「開始位置を乱数的に変化させる」を押したほうがよさげ。

smoke-eff06.jpg

※なんか結局うまくいかなかった・・・。
smoke-eff07.jpg

STEP 5

あとは適当にリサイズして合成したり、色を部分的に変えたりとかしてお好みの感じに調整してください。
(これまたセンスがなく微妙なのが出来てしまいました。)

smoke-eff08.jpg

以上。

2008年04月22日(火)

続・Ajax(Comet)対戦オセロゲーム 遊び方編

追記: 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 )

Comet, Ajax | 2008年04月22日(火) | コメント(0) | トラックバック(0)
2008年04月18日(金)

Postfixでキューが詰まったとき

キューのカウントは、

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してないと駄目ですが)

参考:
大量にメールがキューにたまってしまったら
※参考というより、上記リンクを読んでいただいたほうがわかりやすいですが。

Postfix, Linux | 2008年04月18日(金) | コメント(1) | トラックバック(1)