とりあえず
メモ代わり。てきとーに。 いや、ですからてきとーですって。
2009年7月10日
[その他] へぇ。
面白そう。というか便利そう。
わからんのでとりえあず触ってみようっと。
tmux。
http://d.hatena.ne.jp/tmatsuu/20090709/1247150771
後で読む。
.
2009年7月8日
[Apache Shindig][お勉強][OpenSocial] メモ46 @appって何さ
JavaScriptのコードを読んでいると、
JsonRpcContainer.prototype.newUpdatePersonAppDataRequest = function(key,
value) {
var rpc = { method : "appdata.update" };
rpc.params = {userId: ["@viewer"], groupId: "@self"};
rpc.params.appId = "@app";
rpc.params.data = {};
rpc.params.data[key] = value;
rpc.params.fields = key;
return new JsonRpcRequestItem(rpc);
};
にあるとおり、@appとか@viewerとか@selfとか出てくる。
@viewerと@selfはセレクタと呼ばれていて、集合を表す、というところまでは分かったけど、
@appって何さ。
と思って、Java側のソースを読んでみた。
すると、
./java/common/src/main/java/org/apache/shindig/protocol/BaseRequestItem.java
に、
public String getAppId() {
String appId = getParameter(APP_ID);
if (appId == null || appId.equals(APP_SUBSTITUTION_TOKEN)) {
return token.getAppId();
} else {
return appId;
}
}
な感じの記述がある。
APP_SUBSTITUTION_TOKENは"@app"という文字列。
tokenはSecurityTokenオブジェクト。
ということで、
値に@appがあるとSecurityTokenで指定されているappIdに置換されると。
なるほどー。
.
投稿者
konn
時刻:
20:01:00
0
コメント
この投稿へのリンク
ラベル: Apache Shindig, OpenSocial, お勉強
2009年7月7日
[Apache Shindig][お勉強][OpenSocial] メモ45 featureにjqueryを追加してみる
なんとなく、OpenSocial無視な感じだけど、
featureにjqueryを追加してみた。
ディレクトリfeaturesの下にjqueryというディレクトリを追加して、
そのjqueryディレクトリの下にjquery-1.3.2.jsを置く。
で、jqueryディレクトリの下にfeature.xmlを用意。
内容は、
<?xml version="1.0"?>
<feature>
<name>jquery</name>
<gadget>
<script src="jquery-1.3.2.js"></script>
</gadget>
</feature>
な感じ。
で、
features/features.txtに
features/jquery/feature.xml
という行を追加と。
これでtomcatを再起動すればOK。
ModulePrefsのRequreに指定しなくても読み込ませたいなら、
適当なところのfeature.xmlに
<dependency>jquery</dependency>
を追加しておけば読み込んでくれるようになる。
ところで、featuresディレクトリ以下にはopt.jsと.jsが用意されていて、
.opt.jsが無ければ.jsを読み込みにいくようにソースはなっているような気がするものの、
なぜだか.opt.jsが無ければ読み込んでくれない。。
だもんで、
jquery-1.3.2.jsをコピーして、jquery-1.3.2.opt.jsを作っておいておく。
本当ならCompressしておくんだけどとりあえず。
そんだけ。
.
投稿者
konn
時刻:
19:22:00
0
コメント
この投稿へのリンク
ラベル: Apache Shindig, OpenSocial, お勉強
[Apache Shindig][お勉強][OpenSocial] メモ44 opensocial.requestPermission()のいんちき実装
とりあえず、opensocial.requestPermission()のいんちきな実装をしてみた。
opensocial.Container.prototype.requestPermission = function(permissions, reason,
opt_callback) {
if (opt_callback) {
if (window.confirm("ガジェットがあなたのプロフィール情報の使用許可を求めています。\n【理由】" + reason + "\nここで許可するとあなたの全プロフィール情報が利用可能になります。許可しますか?")) {
opt_callback(new opensocial.ResponseItem(
null, null, false, null));
}
else {
opt_callback(new opensocial.ResponseItem(
null, null, opensocial.ResponseItem.Error.FORBIDDEN, null));
}
}
};
な感じ。
confirmで「はい」が押下されたら、サーバ側へ許可されたことを教えないとだめかも。
Personオブジェクトへのアクセスで拒絶されちゃうかもしれないので。
ま、その辺はコンテナ実装依存か。
で、ガジェットは
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="opensocial.requestPermission()">
<Require feature="opensocial-0.8" />
</ModulePrefs>
<Content type="html"><![CDATA[
<h1>opensocial.requestPermission()</h1>
<div id='env'></div>
<script type="text/javascript">
opensocial.requestPermission([opensocial.Permission.VIEWER],
"理由とか",
function(/*pensocial.ResponseItem*/res) {
if (res.hadError()) {
/* エラーだったよ */
switch(res.getErrorCode()) {
case opensocial.ResponseItem.Error.NOT_IMPLEMENTED:
alert("NOT IMPLEMENTEDだってさ");
break;
case opensocial.ResponseItem.Error.FORBIDDEN:
alert("FORBIDDENだってさ");
break;
default:
alert(res.getErrorMessage() + "だってさ");
break;
}
}
else {
alert("うまくいったっぽいよ");
}
});
</script>
]]>
</Content>
</Module>
な感じ。
.
投稿者
konn
時刻:
15:58:00
0
コメント
この投稿へのリンク
ラベル: Apache Shindig, OpenSocial, お勉強
2009年7月6日
[Apache Shindig][お勉強][OpenSocial] メモ43 features/features.txtの'+'
Shindigについている
features/features.txt
で、コンテナの提供するfeature(<Require feature="opensocial-0.8" />とかのfeature)を
定義できるんだけど、
このファイルの10行目に、
+gms_features/i18n/feature.xml
と、先頭に'+'が付いている!
これは何だ?と思ってソースみてたら、
./java/gadgets/src/main/java/org/apache/shindig/gadgets/JsFeatureLoader.java
の97行目に、
for(String resource : StringUtils.split(ResourceLoader.getContent(location), "[\r\n]+")) {
と書いてある。StringUtils.splitの第二引数だけど、
最初、commons-langのStringUtilsでは正規表現でも指定するのかと思ったので
見逃していたが、これって、
デリミタとして"[\r\n]+"の何れかの文字ってことになるので、
'['か']'か'\r'か'\n'か'+'の文字でsplitするって意味。
これ書いた人はきっと正規表現をイメージしていないかなぁ。。なんて思ってしまうんだけど
どうなんだろう。
結局のところ、features.txtの
+gms_features/i18n/feature.xml
の先頭の'+'は、ただ単にセパレータで、特に意味は無いっぽい・・。
見やすさ??何かを伝えている??
うーむ。。
.
投稿者
konn
時刻:
1:29:00
0
コメント
この投稿へのリンク
ラベル: Apache Shindig, OpenSocial, お勉強
2009年7月5日
[Apache Shindig][お勉強][OpenSocial] メモ42 opensocial.requestPermission()
opensocial.requestPermission()
hasPermissionを見たので、requestPermissionを見てみる。
requestPermissionは、
指定した許可へのアクセス権を付与するようにユーザーに要求します。
とのこと。shindigデフォルトではfalseが返ってくるようなので、
これを使って権限を付与すればよいらしい。
とりあえずコールしてみる。
<?xml version="1.0" encoding="UTF-8"?>
<Module>
<ModulePrefs title="opensocial.requestPermission()">
<Require feature="opensocial-0.8" />
</ModulePrefs>
<Content type="html"><![CDATA[
<h1>opensocial.requestPermission()</h1>
<div id='env'></div>
<script type="text/javascript">
opensocial.requestPermission([opensocial.Permission.VIEWER],
"理由とか",
function(/*pensocial.ResponseItem*/res) {
if (res.hadError()) {
/* エラーだったよ */
switch(res.getErrorCode()) {
case opensocial.ResponseItem.Error.NOT_IMPLEMENTED :
alert("NOT IMPLEMENTEDだってさ");
break;
default:
alert(res.getErrorMessage() + "だってさ");
break;
}
}
else {
alert("うまくいったっぽいよ");
}
});
alert(opensocial.hasPermission(opensocial.Permission.VIEWER));
</script>
]]>
</Content>
</Module>
ってなコードを書いた。
で実行すると、「"NOT IMPLEMENTEDだってさ"」が表示される。
さて、これをShindigで動かすにはどうするか。
hasPermissionと同様、デフォルトでは、
opensocial.Container.prototype.requestPermission = function(permissions, reason,
opt_callback) {
if (opt_callback) {
window.setTimeout(function () {
opt_callback(new opensocial.ResponseItem(
null, null, opensocial.ResponseItem.Error.NOT_IMPLEMENTED, null));
}, 0);
}
};
となっているんで、必ずNOT_IMPLEMENTEDが返る模様。
サンプル実装をちょっとだけ探してみたけど、うーむ、見つからない。。
samplecontainerでは、osapiのrequestPermissionは見つけたけど。
自由に実装していいのかしらん。
--
コンテナ依存ぽい。
誰が個人情報を取得していいのか、とか、面倒そうな部分。
--
そもそも、opensocial.hasPermission(opensocial.Permission.VIEWER)でtrueが返ってきた場合、
何を意味するのかいまいち理解できてない。。
「VIEWERのPersonオブジェクトへのアクセス権が、本Gadgetに付与されている」
ということでよいのかどうか。。
--
理解が間違ってた。。
requestPermissionがコールされると、ユーザ(VIEWER)に対して、
Personオブジェクトへのアクセス権を付与してください、
的な要求をする、
という感じっぽい。
だから、アクセス権限をつけてね、とダイアログとか表示するのかも。
ぜんぜん違う?
--
http://developer.home.goo.ne.jp/document/%E5%8F%8B%E9%81%94%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B
を見ると、上記の理解で合っているっぽい。
このページは分かりやすい。さすが。
.
投稿者
konn
時刻:
13:48:00
0
コメント
この投稿へのリンク
ラベル: Apache Shindig, OpenSocial, お勉強
