2008年10月12日(日) 05:13 JST

MyMiniCity表示用PHPブロック関数

GeekLog

最近、テクノラティで「MyMiniCity」というWebサービスを知り、試しに始めてみた。

MyMiniCityのホームページにいって、街の名前と国を選択するだけであっという間に自分の街が作れてしまった。

自分も含めて誰かにその街のサイトにアクセスしてもらうと、街がだんだん発展していく仕組みになっている。
私の街は、なかなか成長しないとだろうと思うけど、ちょくちょく見に行くたびにすこしづつ成長しているのがやはりうれしい。

となると、MyMiniCityを自分のサイトに貼り付けて、眺めてみたりしたくなるのは人情というもの。
誰かが作ってくれていないかググってみたら、やっぱりあった!(MyMiniCityはじめました - The blog of H.Fujimoto

ありがたく、このCGIを利用させていただいたのだけど、うちのヘボサーバには少し重たい気が・・・。
もしかすると、同じ事をGeeklogにあわせてPHPでやらせると少しは軽くなるかもしれないと思い、CGIのPHPへの移植を試みた。



CGIを調べてみると、HTTPリクエストでMyMiniCityのサイトを取得し、その内部のパラメータを得て、Flashアプリを起動するためのembed要素を出力するJavaScriptコードを出力するという、文章にするとかなり複雑な仕組みになっていた。

この処理をPHPコードに書き改めれば、Geeklogの場合これをPHPブロック関数にして、JavaScriptを使わずにembed要素をサイトに埋め込める。 私はHTTPリクエストを利用したことはなかったので、勉強がてらやってみたところ、結果的にうまくサイト内にMyMiniCityを表示できるようになった。 PerlとJavaScriptの起動にかかるオーバーヘッドがあるはずなので、PHPに統一できた分すこしだけ速くなったはずだ。(体感的にはあまり変わらないけど)

うまく、PHPブロック関数にまとめることができたので公開してしまおう。この成果はこのサイトのダウンロードセクションにアップしたのでGeeklogユーザ&MyMiniCityユーザの方にお試しいただきたい。

記事のオプション
関連情報
Comments
MyMiniCity表示用PHPブロック関数 | 2 件のコメント | アカウント登録
コメントは投稿者の責任においてなされるものであり,サイト管理者は責任を負いません。
MyMiniCity表示用PHPブロック関数
投稿者: mystral-kk on 2008年1月 5日(土) 20:28 JST
こんばんは,mystral-kkです。元日より,dengenさんのスクリプトを使わせていただいています。毎晩見るのが楽しみです。<embed>タグを使うとW3Cのバリデータに嫌われるので,スクリプトの最後の部分を次のように書き換えて使っています。ご参考までに...

$display = '<object id="client" name="client" type="application/x-shockwave-flash" '
. 'style="background-color: #deecfe;" '
. 'width="' . $myminicity_width . '" height="' . $height . '" '
. 'data="http://data.myminicity.com/swf/client.swf?v=0">;'
. '<param name="movie" value="http://data.myminicity.com/swf/client.swf?v=0";' . XHTML . '>'
. '<param name="flashvars" value=' . $param . XHTML . '>'
. '<param name="allowscriptaccess" value="always"' . XHTML . '>'
. '<param name="menu" value="false"' . XHTML . '>'
. '<param name="quality" value="high"' . XHTML . '>'
. '</object>'
. '<p><a href="' . $url . '">'
. htmlspecialchars($myminicity_message, ENT_QUOTES, $LANG_CHARSET)
. '</a></p>' . LB;
MyMiniCity表示用PHPブロック関数
投稿者: dengen on 2008年1月 5日(土) 21:10 JST
mystral-kkさん、こんばんは。mystral-kkさんに使ってもらえるなんて感激です。(マジです)

embed要素は、ブラウザの独自拡張だということは知ってたんですが、object要素をまだ使ったことがなくて、ぼちぼちやろうと考えてたんです^^;
mystral-kkさんのコードを丸ごと使って、バージョンアップさせていただきます。(ラッキー!)

今の版は、まだ改善の余地がありまして、1つはxmlフィードがせっかく提供されているので、これを有効に活用しようと考えています。

xmlフィードでパラメータが取得できるので、パラメータの変更があったときだけ、MyMiniCityのサイトを取得し、それ以外は、あらかじめキャッシュしたデータを見に行って済まそうというもので、ここまでは出来上がってます。

もう1つは、MyMiniCityはある程度人口が増えると、ほかのURLにアクセス必要があるらしくて、その辺の対応を考えています。

ここまでできたら、Geeklog.jpで公開しょうかな。

前もって、mystral-kkさんにチェックしてもらえると助かります^^

コメントの投稿

[ アカウントを作る ]


使用できるHTMLタグ: <a>, <b>, <blockquote>, <br>, <code>, <div>, <font>, <em>, <hr>, <i>, <li>, <ol>, <p>, <pre>, <strong>, <tt>, <ul>, [code], [story:], [staticpage:], [link:], [forum:], [file:], [poll:], [youtube:], [wiki:], [tag:]


注意事項:

  • 内容にそった話題で投稿してください
  • できるだけ新しいスレッドを立てず,コメントを追加してください
  • 他の人のコメントをよく読んで同じようなコメントを投稿しないようにしてください
  • 内容がよくわかるタイトルをつけてください
  • あなたのメールアドレスは表示されません!(保護されています)


トラックバック

このエントリのトラックバックURL: http://www.trybase.com/~dengen/log/trackback.php/MyminicityViewerFunction

DENGEN City

Theme Tester