まめージェント

Android, GAE, AngularJSの技術ネタ中心。Twitter: @mame01112

Google Apps Engine

GAEのSearch APIでデータを検索してみた

対応しようと思ったきっかけ 今作っているサービスで、GAEでDB内のデータのまるごと検索をしたい!と思ったのがきっかけです。Datastoreのデータは、Keyを使ってのgetはかなり早いですが、文字列を使っての検索(しかも、特定カラムではなく全部)を検索する…

angular-file-uploadとGAE/Jでファイルとパラメータを一緒にアップロード

そもそものきっかけ 今作っているウェブサービスで、AngularJSを使っているフロントエンドから、ファイルと一緒に、ユーザの入力値も一緒にアップする必要があったので、その方法をメモ。angular-file-upload (https://github.com/danialfarid/ng-file-uploa…

リストプロパティ内のindex

GAEのリストプロパティにて、TextやBlobなどのIndexされないものと、 IndexされるStringなどのデータを一緒に入れたときの話。GAEのドキュメントには、下記の英語の引用通りですが、・Indexされるものが先 (Stringなど。どうやらnullも含むらしい) ・Indexさ…

Base64エンコード/デコードでNoSuchMethodError on Android

Base64のエンコード/デコードを使ったときの話。Android + GAEでBase64エンコード/デコードしたときに、 org.apache.commons.codec.binary.Base64をインポートして使っていたら、 GAEでは問題ない一方で、Androidだと、 Base64.encodeBase64String();と Base…

Low Level APIを使うことによるDatastore Read Operationsの変化

以前の記事 GAEのDatastore Read Operations - まめージェント 以降、GAEのDatastoreアクセス周りを大幅にリファクタリングしました。 今回は、JDOを使うこと前提の設計から、 Low Level APIで、極力Datastore Read OperationsやDatastore Write Operations…

RDSとKVS

belboさんにDatastore Opsを減らすには、 QueryではなくKeyを使ってget()した方がいいよ、 というご指摘を受けよくよく考えると自分、 Keyって何なんだか、よくワカッテネ・・・。 そして、そもそもKVSとRDSの違い、よくワカッテネ・・・。 ということに気づ…

GAE上でのStaging / Production serverの切り替え

実際にサービスを公開するにあたり、GAE上で Staging server / Production serverをどうハンドリングするかについて 調べてみたのでメモ。今のところ、(やはりというべきか何というべきか)下記2つの方法がありそう 1: 同じApp IDを使い、アプリ内でIf文でS…

HTMLのフォームからGAEメール送信で文字化け

仕事の方では普通、ドキュメントを英語で書いていることもあり、 今作っているサービスでも日本語であまり使ってなかったのですが、 HTMLのフォームをテストしていて、そこからメールを送信すると、 受信したメールの日本語部分が文字化けしていることに気づ…

GAEのDatastore Read Operations

GAEのDatastore Read Operationsの無料枠、 2014年6月末時点では0.05M (5万回)なんですが、 JMeterで負荷テストをしていて、この上限にあっという間に到達してビビったので その情報をシェア。DatastoreをQueryするときは、 だいたい下記のような感じでクエ…

GAEの*.appspot.com上でのSSL証明書

GAEに対してHTTPS通信したい・・・ そのために、SSL証明書を用意しないと・・・と思いいろいろと調べたのでメモ。ネット上には”独自ドメインだと、証明書を用意しないといけないですよ” 的な記述はあるんですが、じゃあ普通(?)のhttps://myappname.appspo…

GAEのrollback

GAEのデプロイ中にエラーが発生したり中断した際、 バージョンがどうのこうの、というエラーが発生し、デプロイができなくなることがある。そのときは、Eclipse上ではなく、ターミナルからRollbackをする必要がある。 コマンドは下記の通り。 ./appcfg.sh ro…

GAE上でString→Blob、Blob→Stringの変換

GAEでAndroidから渡されたStirngをBlobにしてDatastoreに格納したい、 というケースがあったのでメモ。■StringからBlob String origin = "test string"; if (origin != null) { try { byte[] bytes = origin.getBytes("UTF-8"); return new Blob(bytes); } c…