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が密接に連携しているといえる。

最近気になるもの

・Sinatra Rubyの超軽量Webフレームワーク。なんかのプロトタイプを作るのにはぴったりかも。

・Scala Twitterで本格的に導入されたので有名。オブジェクト指向言語と関数型言語のいいとこどり、らしい。JavaScriptにはまってる俺からしたらちょい気になるもの。

・SproutCore JavaScriptのみでMVCフレームワークやリッチなUIを実現するものらしい。Railsのような生産性?まだよく分からない。開発にはRubyを使うらしい。近いうちに試してみたい。

・VoltDB 分散型オンメモリデータベース、超高速らしい。RDBMSを使うまでもないWebアプリ上での使用とかに適切なのかな。ただしストアドプロシージャしか使えないので、使いどころは限られてくるかも。一応SQLの構文に対応しているらしい?

カレンダー
2010年4月
    5月 »
 1234
567891011
12131415161718
19202122232425
2627282930