2014-01-01から1年間の記事一覧
GAEのリストプロパティにて、TextやBlobなどのIndexされないものと、 IndexされるStringなどのデータを一緒に入れたときの話。GAEのドキュメントには、下記の英語の引用通りですが、・Indexされるものが先 (Stringなど。どうやらnullも含むらしい) ・Indexさ…
AndroidでProguardを使うときは、基本的にproject.propertiesの proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt のコメントを外し、Eclipseであればプロジェクトを選択し、 Android Tools > Export Signed Applicati…
今回は、以前から気になっていたAndroidでのメモリリークに関して。 Bitmapを扱う部分など、ドキドキしていたので、今回しっかりとメモリダンプの取得方法を勉強してみました。今回は、DDMSを使って取得しています。 やり方は、下記の通りです。 まず、DDMS…
AndroidのButtonのonClickが二度呼ばれてしまう問題の対処について。 今作っているサービスのClient side (Android)で、 サーバ通信を伴う部分があり、その契機の1つがButtonがClickされたときになっています。 βテストをやっている中で、 「ボタンが二度押…
前回、前々回に続き、Privacy Policyの書き方英語編3回目。 今回は、セキュリティや、情報の取り扱い方に関して。いくつかのPrivacy policyを見てみましたが、どうやら3つくらいの要素を記載する必要があるようです。・個人情報は漏洩しないようにしっかり守…
前回に続き、Privacy Policyの書き方英語編2回目。 今回は、どのようなデータをどうやって集めるか?といったあたりを書いてみようと思います。前回紹介した概要に続き、いろいろなサービスでは、どのようなデータをどのように集めるか?というあたりの 説明…
Privacy Policyを英語で書くのは、 普段英語を使わない日本路にとってはなかなか辛いもので、 そのあたりで僕が苦労した内容をシェアできれば、 これを読んでいる人の参考にもなるかな?と思いシェア。また、下記の内容は、あくまで「参考」レベルにとどめて…
アプリやサービスをローンチする際、Google Analyticsを使って ユーザの行動を収集するケースは多いと思いますが、 今回はそのGoogle Analytics利用時の注意点について。一応、Google Analyticsのサイトにはこんな感じで記載があります。Google Analytics よ…
Base64のエンコード/デコードを使ったときの話。Android + GAEでBase64エンコード/デコードしたときに、 org.apache.commons.codec.binary.Base64をインポートして使っていたら、 GAEでは問題ない一方で、Androidだと、 Base64.encodeBase64String();と Base…
AndroidのFragmentを使っているとアルアルな話かもしれませんが、 FragmentDialogをつかっていて、二度目以降のタイミングで、 IllegalStateException "Fragment already added"が発生する、という不具合に困っていました。 ようやくそれを修正できたので、…
AndroidでSSLを使うときに、 SSLContextを使うことがあるかと思いますが、 このSSLContextのinitで使えるSecureRandomに脆弱性があるらしい、という話です。出元は下記。 Some SecureRandom Thoughts | Android Developers Blogここによれば、SecureRandomは…
以前の記事 GAEのDatastore Read Operations - まめージェント 以降、GAEのDatastoreアクセス周りを大幅にリファクタリングしました。 今回は、JDOを使うこと前提の設計から、 Low Level APIで、極力Datastore Read OperationsやDatastore Write Operations…
今日、小ハマりしたのでメモ。 Photoshopで画像を「別名で保存」でjpgとして書きだそうとしたら、 書き出し可能な形式にjpgがない・・・?あれ・・・? となった。 原因は、新規ファイル(ドキュメント? プロジェクト?)を作ったときのカラーモードで 16bi…
belboさんにDatastore Opsを減らすには、 QueryではなくKeyを使ってget()した方がいいよ、 というご指摘を受けよくよく考えると自分、 Keyって何なんだか、よくワカッテネ・・・。 そして、そもそもKVSとRDSの違い、よくワカッテネ・・・。 ということに気づ…
実際にサービスを公開するにあたり、GAE上で Staging server / Production serverをどうハンドリングするかについて 調べてみたのでメモ。今のところ、(やはりというべきか何というべきか)下記2つの方法がありそう 1: 同じApp IDを使い、アプリ内でIf文でS…
最近のウェブサービスは(みんなTwitter bootstrapを使っているせいか)、 トップページのいわゆる「ヒーローショット」の画像が大きいかと思います。 僕も、174Kbの画像だったので、これをどうにか削減できないか、 と見つけたのが下記ウェブサービスです。…
仕事の方では普通、ドキュメントを英語で書いていることもあり、 今作っているサービスでも日本語であまり使ってなかったのですが、 HTMLのフォームをテストしていて、そこからメールを送信すると、 受信したメールの日本語部分が文字化けしていることに気づ…
前から対応せねば・・・と思っていた多言語対応をしました。いろいろと調べたところ、jquery.localize.jsが一番やりやすそうだったので、 今回はこちらで。1: jquery.localize.jsをダウンロード。 コチラから。 https://github.com/coderifous/jquery-locali…
GAEのDatastore Read Operationsの無料枠、 2014年6月末時点では0.05M (5万回)なんですが、 JMeterで負荷テストをしていて、この上限にあっという間に到達してビビったので その情報をシェア。DatastoreをQueryするときは、 だいたい下記のような感じでクエ…
そろそろサーバーの負荷テストをしておかねば・・・ということで (あまりDatastore周りのクエリーをうまくできてない気がしているので)、 JMeterで負荷テスト。JMeter http://jmeter.apache.org/導入自体は非常に簡単。 1,2時間でメインとなるところは使え…
GAEに対してHTTPS通信したい・・・ そのために、SSL証明書を用意しないと・・・と思いいろいろと調べたのでメモ。ネット上には”独自ドメインだと、証明書を用意しないといけないですよ” 的な記述はあるんですが、じゃあ普通(?)のhttps://myappname.appspo…
ウェブ開発をする人にとっては知ってて当然の内容かもだけど、 ChromeのDev toolが便利。使い方は、Chromeを開いて(Macでは)[Command] + [Option] + [I]を押すだけ。今回、ウェブサイトのロード時間と、ロードするコンテンツの重さを調べたくて、 簡単にでき…
サーバ側から返ってきたJSONをAndroidでパースしているんですが、 ある日突然下記のExceptionが。 JSONException: Unterminated object at character x of x今まで何も問題なかったのに・・・と調べること15分、 どうやら文字列にスペースがあるとこのExcept…
GAEのデプロイ中にエラーが発生したり中断した際、 バージョンがどうのこうの、というエラーが発生し、デプロイができなくなることがある。そのときは、Eclipse上ではなく、ターミナルからRollbackをする必要がある。 コマンドは下記の通り。 ./appcfg.sh ro…
前回の記事の続きで、今回は、 ローカルに保存されているpng画像をBitmapとして取得する方法。 public static Bitmap readBitmapData(Context context, String fileName) { Bitmap data = null; if (fileName != null) { try { InputStream inputstream = co…
Bitmapをpng画像として保存する方法。 public static boolean storeBitmap(Context context, Bitmap bitmap, String fileName) { if (bitmap != null && fileName != null) { ByteArrayOutputStream output = new ByteArrayOutputStream(); bitmap.compress(…
Eclipseのキャッシュがおかしくなったときなど、 最終手段として使うEclipseのclean起動。 % cd /Applications/eclipse/Eclipse.app/Contents/MacOS/ % sudo ./eclipse -clean ただし、これをやるとEclipseで設定したパースペクティブ(Perspective)やビュー(…
ant debugで invalid resource directory nameというエラーが出たときの対処。単純だけど、binファイルを強制的に削除、その後 android update project --path .をすると解決。
Androidの自動テストを書いていて、 Reflectionを使ってprivateフィールドにアクセスする機会があったので、メモ。 public class ReflectionUtil { public static <T> Object getValue(Class<T> className, String fieldName, Object targetObject) { Object resul</t></t>…
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…