リストプロパティのINフィルタを別プロパティでソートするにはカスタムインデックスが必要

リストプロパティpersonKeysへのINフィルタを、プロパティlatestFavDateによるソートで並べ替えようとしたら頭がこんがらがったのでメモしておきます。 List<Boke> favBokes = Datastore.query(meta).filter(meta.personKeys.in(keys)).sort(meta.latestFavDate.de</boke>…

OSDE1.0.0でキャッシュを回避する一番いい方法は?

OpenSocial Develepment Environment(OSDE)での開発時、外部化したjsを修正した際にその修正を即座に反映してもらえると、開発が楽ちんです。 しかしキャッシュが効いてて変更が反映されない場合があります。外部ファイルをどう指定するかによって、修正の反…

App Engineのユニットテストにて任意の例外発生を試す

GAE

タスクチェインの実装をしていると、テスト環境でもDEE発生をシミュレーションしたくなるのが人情というものです。 shin1ogawaさんのエントリでは下記のように説明されています。 テストのためにAppEngine環境を起動するには、大きくわけるとApiProxy.setEnv…

Yokohama App Engine

GAE

試しに重ねてみたところ、完全に一致したのでご報告します。

タスクチェーンによる30秒制限を超えた処理を試す

タスクチェーンについてよくわかっていなかったので、実験してみました。 実装にあたっては下記を参考にさせていただきました。 Togetter - 「タスクキューのチェインについて」 Togetter - 「タスクキューのチェインについて2(Mapper APIで代替も検討?)…

schemaversionテクニックを利用したスキーマ変更を試す

App EngineのDatastoreにおけるスキーマ変更に対応するために、schemaVersionというテクニックが編み出されています。Slim3本ではChapter7-4-1(p.265)で紹介されています。 自分の場合には、以下のようなケースでスキーマ変更が必要になりました。 日付のプ…

JavaでJSONシリアライズされた日付情報をjsで取得する

JavaでJSONシリアライズされた日付情報をjsで取得するとき、どのようなことが必要か確認しました。 Javaのjava.util.DateクラスもJavaScriptのDateコンストラクタから生成されたオブジェクトも1、970年1月1日0時0分0秒からのミリ秒で日付を管理してます。 Da…

Slim3なProjectの依存関係を図に

Javaでの日付の扱いについておさらい

@Test public void utilDateの実験() throws Exception { Date date = new Date(); DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH"); assertThat(dateFormat.getTimeZone(), is(TimeZone.getTimeZone("Asia/Tokyo"))); assertThat(dateForma…

PC作業の心強い味方Chrome Nanny

PC作業中、気がつくとついGoogle ReaderやTwitterをながめてるときがあります。たいてい集中力が切れていて、半ば無意識だったりするときなので、なかなか意識的に抑制できません。 そしたら、TwitterのTLでChrome Nannyなるものを知りました。上記の悩みを…

opensocial-jqueryでのタブ

gadget.xml <div id="tabs"> <ul> <li><a href="#tab1">タブ1</a></li> <li><a href="#tab2" >タブ2</a></li> </ul> <div id="tab1">タブ1のコンテンツ</div> 2のコンテンツ</div> </div> <script type="text/javascript"> $("#tabs").tabs(); </script> opensocial-jquery.js /** * Tabs */ $.fn.tabs = function(fn) { return this.each(fun…

ソーシャルアプリの開発/本番環境の外部サーバ接続先を自動で切り替える

今作っているソーシャルアプリは、絶対パスで外部サーバのURLを指定している。 外部サーバはGoogle App Engineなので、開発環境と本番環境が用意されている。 絶対パスなので、普通にやるとアプリのデプロイ前に接続先のURLを書き換えないといけないので面倒…

OSDEでgadget.xmlに表示される警告の黄色い波線を消す

gadget.xmlを開くと、No grammar constraints (DTD or XML schema) detected for the document.と右に表示されたり、すべての行に黄色の波線が表示される。 右の警告はともかく、波線は編集するのに邪魔。 この波線はEclipseのValidatorが有効になっているた…

subversiveのSVNKitは更新サイトからじゃなくConnector Discoveryからインストールする

Subversive SVN Team Provider(Incubation) 0.7.8l20091023-1300 をEclipseに導入する場合、SVNKitを併せてインストールする必要がある。 SVNKitは、Polarionの更新サイト(http://community.polarion.com/projects/subversive/download/eclipse/2.0/update-s…

JavaScriptのプロトタイプチェインを図で理解する

javascriptにおけるプロトタイプチェインとその成り立ちを図にしたら自分の理解の助けになるのではと思い、cacooでトライしてみます。 プロトタイプチェインとは ECMA-262によると以下。 オブジェクトのプロパティへが参照される場合、その参照は、プロトタ…

Eclipse+Aptana pluginでFTPアップロード

App Engineのデプロイがとってもらくちんなので、FTPアップロードもEclipseから直接できないかな、と思ってぐぐったらAptana pluginにその機能があった。ちょうどAptana pluginも入れてたので、これを試した。 環境 Mac OS X Eclipse 3.5 Aptana Studio(plug…

jQuery.fn.extendで$()を拡張する

jQueryのセレクタで指定した要素をfadeOutで消して、消えた直後にfadeInで再度表示するようなアニメーションの実装を考えます。 これは、下記のようなコードで実現できます。 $("#hoge").fadeOut("slow", function(){ $("#hoge").fadeIn("slow"); }); このよ…

javascriptのコンストラクタは定義時に関数と区別されない?

new 演算子を付けて呼び出すことを前提とした関数は、コンストラクタと呼ばれる。コンストラクタは大文字で始まる名前の変数に格納されるのが慣例である。 JavaScript: The Good Parts ―「良いパーツ」によるベストプラクティス p.35 Javaのように、コンスト…

opensocial-jquery.jsとjsdeferred.jsを一緒に使ってみる

APIからJSON配列を取得して要素を展開する処理は、opensocial-jquery.jsでは下記のように記述できます。 $(document).ready(function(){ $.getJSON("/boke/randomArray?size=5") .next(function(data) { var bokes = data.randomArray; alert(bokes.length);…

jsdeferredのloop()とwait()

jsdeferred.jsを利用すると、待機処理を伴うループを簡潔に記述できる。 Deferred.loop(10, function(i){ return $.getJSON("./boke/random").next(function(data){ //... dom操作(1) return Deferred.wait(1); }) .next(function(){ // ...DOM操作(2) retur…

opensocial-jqueryのgetData()

getData()を使わずにマイミク情報表示 $(document).ready(function(){ var params = {}; params[opensocial.IdSpec.Field.USER_ID] = opensocial.IdSpec.PersonId.VIEWER; params[opensocial.IdSpec.Field.GROUP_ID] = "FRIENDS"; var idSpec = opensocial.n…

mixiアプリにおけるRestful API for PCのJavaサンプルコード

mixi Developer Center (ミクシィ デベロッパーセンター) » 2-legged OAuthによるAPIアクセス mixi developer Centerにはphp, python, perlのサンプルコードが記載されているが、Javaのサンプルコードがない。 そこでJavaでRestful API for PCによって、アカ…

ソーシャルアプリセミナーに行ってきた

人気ソーシャルアプリの作り方〜超人気ソーシャルアプリの企画開発者によるパネルディスカッション : ATNDにいってきました。(Twitterタグは #sac2010) スタッフ、登壇者のみなさまおつかれさまでした。 ソーシャルアプリコンテスト 最初に、株式会社オプト…

JavaによるTwitter APIのOAuth認証

下記のページを参考にさせていただき、JavaでのTwitter API のOAuth認証動作を確認した。以下手順のメモ。 Twitter APIでOAuth認証を利用する方法(Javaの場合) by Inquisitor 準備1 TwitterにConsumerを登録してキーを発行する 1)下記URLにアクセス、Tw…

Eclipseでのjavascript開発環境構築メモ

EclipseでjQueryによるコーディングをするにあたっての、各種インストールメモ。 javascriptライブラリの補完ができるAptana AptanaのCode Assist機能は各種有名ライブラリ(jQuery, prototype.jsなど)に対応している。 Plugging Aptana into an existing E…

iPhoneの母艦をWindowsからmacに移行するためのメモ(調査中)

Mac

macbook Proを購入したけど、未だにiPhone 3GSの母艦はWindowsのまま。 いい加減macへ移動させなきゃと思い、方法を調べた。(まだ調査中です。随時追記予定) ファイルの整理方法を「iTunes Media」形式に統一 iTunesの ファイル > ライブラリ > ライブラリ…

同一トランザクション内でエンキューできるタスクの上限

GAE

App EngineのTask Queueにおいて、エンキューはトランザクション内でも行える。 Queue#add(Transaction, TaskOptions)を使う。 複数タスクの追加をtx内で試してみたところ、TransactionalTaskException(以下、TTE)が発生してエラーとなった。 Caused by:com.…

formタグのenctype属性についてのメモ

formタグではenctypeに以下の値を指定することによってフォームデータの送信方法を指定する。 application/x-www-form-urlencoded multipart/form-data application/x-www-form-urlencoded formの値がurlパラメータとして送信される。 enctypeを省略した場合…

Chromeのはてなブックマーク拡張が「ログインしていません」になる現象の対処

今朝いつものようにGoogle Chromeのはてブ拡張を使おうとしたら、はてなにログインしたにもかかわらず「ログインしていません」となってしまう現象が起きて困った。リロードしたりChromeを再起動してもログインできない。 環境 Mac OS X 10.6.3 Google Chrom…

技術的なドキュメントで出てきた英語

単語・成句 意味 使用例 overview 概説 Task Queue Java API Overview dispatch 送り出す、発送する App Engine automatically dispatch tasks detect 検出する App Engine automatically detects new Tasks initiate 起動する initiated by a user request …