KLab若手エンジニアの これなぁに?

KLab株式会社の若手エンジニアによる技術ブログです。phpやRubyなどの汎用LLやJavaScript/actionScript等のクライアントサイドの内容、MySQL等のデータベース、その他フレームワークまで幅広く面白い情報を発信します。

2011年02月

IE9を入れたらPandionが動かなくなったでござるの巻

新し物好きのみなさんなら、正式リリース今や遅しと待ちかねているIE9のRelease Candidate版をさっそくいじり倒されていることかと思います。もう、いつRCが取れるかと気になって夜も寝られず、睡眠不足の毎日だったりするのではないでしょうか。 私もその中の一人…なわけではないんですが、ちょっと噂になっていたので、気になって触ってみたんです。IE8が出てそんなにまだしてないように思っていたのに、もう9ですってよ奥さん。はやいもんですわねー。そういえば聞きました?飯田さんとこのお子さんなんですけど。 とにかく、このIE9を入れるとPandionの動作が止まる現象が発生したというお話です。 このPandion、内部は大部分をJavaScriptで記述されていて中を見ることができます。エラーメッセージもこのように出ますので、


どこで問題が起こってるのかを調べることが可能です。

 /* Create the roster tab button
  */
 external.globals( 'ClientPluginContainer' ).Plugins.Add( '/roster', new ClientPluginCore( external.globals( 'ClientPluginContainer' ) ) );
 with ( external.globals( 'ClientPluginContainer' ).Plugins( '/roster' ).ClientPluginTab = new ClientPluginTab( external.globals( 'ClientPluginContainer' ).Plugins( '/roster' ) ) )
 {
  Icon = external.globals( 'cwd' ) + '..\\images\\main\\logo.png';
  Tooltip = external.globals( 'Translator' ).Translate( 'main', 'cl_tooltip', [ external.globals('softwarename' ) ] );
  IsActive = true;
  HTMLArea = document.getElementById( 'content-area' );
  DrawButton();
 }
with (...)の行が該当行です。内容的に目立って怪しいところがあるわけでもないのが悩ましいですが、どこで問題が起こっているかを一か所ずつ区切って確認しました。'.'で何段にもなっているどこかでnullが返っているのではないかと見てみたものの問題は無し。new ClientPluginTab(...)の部分も正常にインスタンス生成している。 となると問題はメソッド呼び出し。直前の行でexternal.globals('ClientPluginContainer')の部分は問題がないので、その次の.Plugins('/roster')の部分が怪しいんじゃないかとにらみました。Pluginsはこれ、他の箇所で下記のようにして生成されるActiveXオブジェクト"Scripting.Dictionary"。

/* This loads and manages the tabs.
 */
function ClientPluginContainer ()
{
	this.Plugins		= new ActiveXObject( 'Scripting.Dictionary' ); // filename->PluginCore
	this.HTMLTabBar		= document.getElementById( 'tab-bar' );
	this.HTMLTabArea	= document.getElementById( 'plugin-tab-area' );
"Scripting.Dictionary"オブジェクトは文字通り辞書オブジェクトを扱うわけなんですが、上記のPlugins( '/roster' )は辞書オブジェクトのkey='/roster'から紐づくvalueを取り出す呼び出しです。これはPlugins.Item('/roster')と書き換えても同じになるんですが。 書き換えたら通ったじゃないですか…。 というわけで、まだRCなので正式版になったら治るかもしれませんが、IE9ではこの"Scripting.Dictionary"オブジェクトの呼び出しに注意しないといけないようです。同様の問題のある箇所はここ以外にもたくさんあったので手元での修正はあきらめて、pandionの作者にこの件を報告しました。Pandionは業務でも大活躍なので、このままだとKLabではIE9が使えないことになってしまいますわん…。 http://getsatisfaction.com/pandion/topics/pandion_stops_working_with_ie9_rc Pandion stops working with IE9 RC

ユーザーのページ遷移をグラフで可視化してみた

takada-atです。 サイトを運営するとき、ユーザーがサイト上でどんな行動をとっているのか知りたくなることがあります。ページからページへリンクをたどって移動する動きは、テキストで表現してもいまいち理解しづらいので、グラフをつかって図にしてみます。 以下のリンクからデモを表示してみてください。 ユーザーがたくさん訪れたページほど、ノードのサイズが大きくなり、またページからページへ移動した人の数が増えるほど、線が太くなります。 HTML5のcanvasをつかって描画しているので、InternetExplorerでは見れません。InternetExplorer以外のブラウザで閲覧してください。 グーグルマップのようにドラッグで移動したり、カーソルキーで移動できます。


■アルゴリズムなど

ノード同士が適切に距離をとりあうようにEadesのバネモデルというアルゴリズムをつかって、ノードを動かしています。 ノード同士のリンクをバネに見たてて、物理シミュレーションしながらアニメーションさせています。 またデータはApache のアクセスログからjson形式のデータを作成しています。データ作成用のPythonスクリプトもgithubにアップロードしてあります。

頓智ドット様訪問レポート

こんにちは、makki_dです。 先日、ponpoko1968、takei-h、makki_dの三人で、セカイカメラで有名な頓智ドット様にお邪魔してきましたので、その訪問レポートをお送りします。 頓智ドット様ではFire Side Chatという、ピザとビールを片手にプレゼン、ディスカッションする場を隔週で設けているそうです。今回はこのFire Side Chatに参加させていただきました。 まずオフィスに入った最初の感想は、見渡す限りのMacでした。iPhoneアプリを中心に作っている会社だけあって、オフィスを見渡す限りMac,Mac,Mac…Windows機は片手で数えるほどしかないそうです。さすがです。
オフィス


頓智ドット様といえばセカイカメラ。さっそくオフィスをセカイカメラで覗いてみると、たくさんのエアタグにまぎれて、見たことのない派手なエアタグがちらほら。訊ねてみたところ、これらはリリース前の実験中のものだとか。 さて本題のFire Side Chatです。 そこで振舞われたピザとビールですが、肝心の写真を取り忘れてしまいました…ごめんなさい!写真のことを忘れてしまうくらい美味しかったです。ごちそうさまでした。 そうこうしているうちに、プレゼン大会の時間になりました。KLabからは携帯端末でのバーコード読み取りの技術紹介と、Cheerzのプレゼンを行ないました。
プレゼン中


まず、意外と知っているようで知らない、JANコードを初めとするバーコード規格の技術的特徴を説明し、携帯カメラで撮影した解像度の低い画像から、バーコードの細い線を正確に読み取るためのアイデアを、実際にバーコードを撮影した画像と、その画像を解析した結果を交えて説明しました。 プレゼン後も、より正確に読み取るためのアイディアや、iPhone、Androidで実現するにはどうしたらいいかといった議論で盛り上がりました。 続くCheerzの発表では、そのコンセプトよりもむしろ、バックエンドにあるサーバ環境や通信プロトコルについて説明しました。 CheerzではチャットプロトコルのXMPPを活用していますが、XMPPを国内で活用している事例は珍しいということで興味津々の方も。また技術的な観点だけでなく、欧米、中近東、アジア圏での流行の違いといったディスカッションにも発展しました。それもそのはず、頓智ドット様には外国の方も多く、談笑中もちらほらと英語が聞こえてくるほどです。ワールドワイドな環境ですね。
プレゼン中


頓智ドット様からはいくつかの新サービスのデモを見せていただきました。まもなくリリースのものもあるとのことで期待がふくらみます。 AR(拡張現実)といえば、カメラの映像にCGを重ねることを思い浮かべる人が多いと思います。しかし、ARは決してカメラにこだわる必要はなく、今後新たな形のARを示していきたいと語っておられました。 ほんの数時間という短い時間でしたが、とてもワクワクするひとときでした。お互いに刺激しあいながら、もっとセカイを面白くしていけたらと思います。 頓智ドット様、ありがとうございました。今後ともよろしくお願いします。
 KLab若手エンジニアブログのフッター