Archive for 4月, 2010
めちゃくちゃ苦労したので記録を残しておくことにする。
右往左往したが、ようやくEclipse上でShindigのデバッグが出来るようになった。
最終的に参考にしたサイトはこちら。→http://my6solutions.com/post/2008/10/14/Getting-debugging-to-work-on-shindig-under-Windows.aspx
JDK、Maven2は前回で導入している前提で、話を進める。
Maven for Eclipseの導入
まずは、Maven for Eclipseを導入する。
Eclipse上でヘルプ→新規ソフトウェアのインストールで、追加ボタンをクリックし、新規サイトを追加する。
名前:Maven2 – Sonatype
ロケーション:http://m2eclipse.sonatype.org/sites/m2e
Eclipse用Maven統合を上のサイトからインストールする。
※このプラグインを使う場合はEclipseをJDK上で走らせている必要があるようだ。JREになってしまっている場合は、Eclipseへのショートカットか、eclipse.iniに -vm JDKのjavaw.exeへのパス を追加しておく。
shindigのMavenプロジェクトのEclipseへのインポート
Eclipse上でファイル→インポート
Maven→Existing Maven Projectsを選択、次へ
ルートディレクトリとしてshindigのルートディレクトリを開き、
features/pom.xml
java/common/pom.xml
java/gadgets/pom.xml
java/social-api/pom.xml
java/server/pom.xml
にチェックを入れ、完了。
5つのプロジェクトがパッケージ・エクスプローラーに追加されるので、ワークスペースがビルド完了するまでしばらく待つ。
jettyをEclipseから実行できるようにし、shindigをデバッグ実行できるようにする
Eclipse上で実行→外部ツール→外部ツールの構成を選択。
プログラムの項目に新規プログラムを追加する。
名前:maven_jetty
ロケーション:mvn.bat(mavenのバッチファイルかな?)へのフルパス
作業ディレクトリ:ワークスペースの参照から、shindig-serverを選択
引数:jetty:run
環境タブを選択し、
名前:MAVEN_OPTS
値:-Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=y
という項目を追加→適用。
Eclipse上から実行→デバッグの構成を選択。
リモートJavaアプリケーションに新規項目を追加し、
名前:shindig_debug
プロジェクト:shindig-serverをプロジェクトから選択
ホスト:localhsot
ポート:4000
を入力→適用。
Shindigをデバッグ実行する
これでShindigがデバッグ実行できるようになったので、外部ツールからmaven_jettyを実行、デバッグの構成からshindig_debugをデバッグで実行。
http://localhost:8080/gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml
で動作確認できる。以上。
かなり試行錯誤したので、何か抜けてる工程があるかもしれません。うまくいかなかった場合はご一報を。
Shindigをデバッグ実行したくなったが、PHP版のままではデバッグが面倒、ということでやむなくJava版のShindigを使うことに。
詳しくはここ→http://www.hakkaku.net/articles/20080624-222
を見ると早い。4/27現在ではこのやり方で問題なくビルドできる。一応手順を。
あらかじめJDKはインストールしておく、ここでは手順は割愛する。
Apache Mavenのインストール
http://maven.apache.org/download.htmlから最新版(2.2.1)のアーカイブを落としてきて、適当なフォルダに展開。
環境変数に
JAVA_HOME JDKのインストールフォルダ(例:C:\Program Files\Java\jdk1.6.0_18)
M2_HOME Mavenのインストールフォルダ(例:C:\Program Files\Apache Software Foundation\apache-maven-2.2.1)
を追加、
Pathの末尾に ;%M2_HOME%\bin;%JAVA_HOME%\bin
を追加。クオーテーションマークとかをつけないように注意。追加したらいったんログオフするか再起動しておく。
Subversionのインストール、Shindigのダウンロード
ここ→http://subversion.apache.org/からSubversionを落として、インストール。
適当なフォルダを作り、コマンドラインでフォルダに移動した後、
svn co http://svn.apache.org/repos/asf/shindig/trunk/
でShindigの最新trunkを落としてくる。
ビルド、実行
このままだとビルド時にエラーが出るので、
pom.xmlを開き、<compilerArgument>-Xlint:unchecked,deprecation,fallthrough,finally</compilerArgument>の部分をコメントアウト(<!– –>)する。
Shindigを落としてきたフォルダにコマンドラインで移動し、
mvn -Dmaven.test.skip=true
を実行。初回実行は時間がかかるが、2回目からはそれほどかからない。
これでビルドが成功するはずなので、
mvn -Prun
を実行。動作確認は
http://localhost:8080/gadgets/files/samplecontainer/samplecontainer.html
で行える。リンク先に感謝。
最近すっかりJSONにはまっている。["value1","value2"]で配列、{“key1″:”value1″,”key2″:”value2″}でハッシュ。構造を記述するならXMLよりJSONがやっぱり便利。でも当のJavaScriptに標準でObjectからJSON形式の文字列を吐き出す関数が無いのはいかがなものだろうか。(foreachまわして文字列に変換しちゃえばいいけど)unevalが標準機能として欲しいです。データベースでリストを管理する時もJSONで書いて格納しちゃえば楽ですね。
以下、JavaScriptでObjectをJSON形式でシリアライズする方法。
http://www.json.org/json2.jsをダウンロード。
json2.jsをインクルードして、var serializedString = JSON.stringify(object)
そのままだと警告のダイアログボックスが出てきてうっとうしいので、json2.jsの一行目は削除しておくこと。
おしまい。
ざっくりと。まだまだ理解も中途半端なので、逐次修正します。
Shindigとは、OpenSocialのアプリケーションを動かすためのアプリケーションサーバーのようなもの。MixiやiGoogleなどは、Shindigを通してOpenSocialのアプリケーションを走らせるプラットフォームを提供している。
OpenSocialとは?
XML、JavaScript、HTML等の既存技術を活用して作ったWebアプリケーションを、さまざまなSNSに埋め込むことができるようにするための共通規格。Googleが主導して策定されたもの。
Shindigは何をしてくれる?
ShindigはOpenSocialの規格に沿って作られたXMLを読み込み、ユーザーのWebブラウザ上で実行可能な形式(HTML)にして出力する。
MixiやiGoogleはShindigから出力されたHTMLをiFrame内に表示してOpenSocial環境を実現している。さまざまな場所にあるOpenSocialアプリケーションを一まとめにするのがクラウド(かな?)。
SNS側からは、単純にShindigサーバに対してHTTPのリクエストを投げてあげればOpenSocialアプリケーションが実行できる。ただしそれだけでは不完全。OpenSocialアプリケーションが真価を発揮するには、ユーザーのソーシャルデータ(年齢、性別、趣味、などなど)を知る必要がある。そのためには、ShindigサーバがSNSのデータベースにアクセスできる必要がある。データベースに接続するインターフェースを用意して、初めてShindigとSNSが密接に連携しているといえる。