まめーじぇんと@Tech

技術ネタに関して (Android, GAE, Angular). Twitter: @mame01122

Ajax (AngularJS)のSPAでSEO対策をする (その1: hashbangって何?)

GoogleにAjax(AngularJS)のサイトをクロールさせたーい! というところからいろいろと調べたところ、いろいろなサイトでHashbangという名前を見てそもそもHashbangって何ぞや?をしっかり理解できていなかったので、SEOの一歩目として、Hashbangを勉強するこ…

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

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

AngularJSのPromiseを使ってみた

promise、使ってみた。 今回は、これまで使い方が曖昧だったpromiseに関して多少踏み込んで勉強したのでそちらをシェア。日本語のpromiseの情報も少ないので、多少は参考になるのではないかと思います。ただ、promiseのすべてを網羅しているわけではなく、あ…

Sublime textでファイルを開こうとすると、すでに開いているタブを上書きしてしまう

Sublime textのタブ機能にイライラ・・・ Sublime text3にプロジェクトを読み込んで複数タブを開いて作業中のストレス軽減の話。すでにタブを開いている状態で新しいタブを使ってファイルを開こうとしたら、すでに開いているタブ(未編集のもの)が閉じられ…

CSSのP要素、div要素、span要素の違い

フロントエンドをHTML + CSSで書いていて何となく分かった気になっていたけど、でも詳しい違いを理解していなかった、p, div, spanの違いに関して勉強してみたのでメモ。簡単に書くと、これらの違いは下記の通り。 p:ブロック要素。段落を指定する時に使う…

Angular translateの使い方 (その2、利用編)

前回の、 Angular translateの使い方 (その1、準備編) - まめージェント に続いて、angular-translateに関して。 今回は、使い方からです。 ディレクティブで使う ディレクティブから使うのは簡単で、 <p translate="common.save"></p>こうすると、言語設定に応じて各言語の"保存"や""Save"…

Angular translateの使い方 (その1、準備編)

そもそも 今回はAngular JSで多言語対応のお話。 あんまり日本語の情報がない?ということでシェアです。 ※あっても微妙に間違っている(ように見える)ものだったり・・・。 準備 今回僕が使ったのは、angular-translate(https://github.com/angular-transl…

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

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

AngularJSでUI-router(routeProvider)を使うとcontrollerが複数回呼ばれる

AngularJSでUI-routerとディレクティブを使って実装しているとき、 controllerが複数回呼ばれてしまう問題が発生し、 その原因が分かったのでメモ&シェア。 ※気づいてしまえば簡単な問題でしたが。。結論から言うと、 "UI-routerでのRouting部分とディレク…

自分のサービス(失敗)で行ったマーケティングの話

前回(http://mame0112.hatenablog.com/entry/2015/04/06/201847)に続き、自分のサービス(flappy[フラッピー]: http://flappy-communication.appspot.com)をリリースし、そのときにやったマーケティング?活動がどうだったかをシェアしてみようと思います。 …

自分のサービス(失敗)をビジネスモデルキャンバスに当てはめてみた話

前提 ・今、去年立ち上げたWebサービスに続いて次のサービスを作っていて、 その際に前回の反省を生かさねば(集客できなかった)、 ということで、その1つのやり方として、ビジネスモデルキャンバスに当てはめてみました。・その自戒の念を込めて&同じよう…

「ポーターの『競争の戦略』を使いこなすための23問」のまとめ

「ポーターの『競争の戦略』を使いこなすための23問」を読んだので、 その内容をまとめました。Amazon.co.jp: ポーターの『競争の戦略』を使いこなすための23問: 牧田 幸裕: 本 まとめとは言ってもめちゃ長いですが、要素は抽出できているかと。。。この本…

RESTful Web APIsのまとめ

RESTful Web APIsを読んでみました。 Amazon.com: RESTful Web APIs eBook: Leonard Richardson, Mike Amundsen, Sam Ruby: Kindle Store APIを定義するための必要なノウハウが書いてあって結構勉強になったので、 そのまとめを書いてみました。 僕の観点で…

カスタムディレクティブのrestrictの使い分け

ぼんやりしていたカスタムディレクティブのrestrictの違いがようやく分かったのでメモ。 普通の人にはあまりに自明なことなのかもしれませんが・・・。あーだこーだ書くよりサンプルを見た方が速いかと思うので、 まずはサンプルコード。 ■index.html <html lang="ja"> <head> <meta charset="utf-8"> <title>An</title></meta></head></html>…

angular.min.js.mapとは?

ローカルでWebサーバを立ち上げると( Python SimpleHTTPServerでローカルWebサーバをたてる - まめージェント)、 ブラウザのコンソールに下記のようなエラーが表示されることがあります。 GET http://localhost:8000/js/angular.min.js.map 404 (File not …

Python SimpleHTTPServerでローカルWebサーバをたてる

AngularJSでコードを書いていて、 テンプレートはどうやらWevサーバ経由でないと使えないらしい・・・とわかり、 そのときにPython SimpleHTTPServerを使ったら便利だったのでその情報。Step 1: Pythonをインストールする。 Macの場合は最初から入っていると…

Sublime textにPackage control / Bracket Highlighterをインストール

これまでJavaを書いていたのですが、 Webサービスを作るにあたり、JavaScriptを書かないとなかなか幅が広がらない・・・ ということで、今回、AngularJSを勉強することにしました。その一歩目として、環境構築。 Eclipseを使うのもアリだったんですが, Javas…

Macでのスクリーンショットのとりかた

Mac Book Proを買ってそろそろ1年くらいになるんですが、 このブログを書くときにスクリーンショットがとれないのがキツい・・・ということで、 今さらながら、スクリーンショットのとりかたを勉強、下記でOKでした。 ■画面全体 Command key + Shift key + …

Google Analyticsに表れたco.lumb.co

今運用しているサービスではGoogle Analyticsを設定しているんですが、 その中で、アクセス元がロシアのものがありました。 僕の場合は、行動 > スクリーンから確認すると、スクリーン名に、 自分が設定したスクリーンが並んでいる中に、1つだけ co.lumb.co/…

リストプロパティ内のindex

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

SQLCipher利用時のProguardについて

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のボタン二度押しを防ぐ

AndroidのButtonのonClickが二度呼ばれてしまう問題の対処について。 今作っているサービスのClient side (Android)で、 サーバ通信を伴う部分があり、その契機の1つがButtonがClickされたときになっています。 βテストをやっている中で、 「ボタンが二度押…

Privacy Policyの書き方 / 英語編(3)

前回、前々回に続き、Privacy Policyの書き方英語編3回目。 今回は、セキュリティや、情報の取り扱い方に関して。いくつかのPrivacy policyを見てみましたが、どうやら3つくらいの要素を記載する必要があるようです。・個人情報は漏洩しないようにしっかり守…

Privacy Policyの書き方 / 英語編(2)

前回に続き、Privacy Policyの書き方英語編2回目。 今回は、どのようなデータをどうやって集めるか?といったあたりを書いてみようと思います。前回紹介した概要に続き、いろいろなサービスでは、どのようなデータをどのように集めるか?というあたりの 説明…

Privacy Policyの書き方 / 英語編(1)

Privacy Policyを英語で書くのは、 普段英語を使わない日本路にとってはなかなか辛いもので、 そのあたりで僕が苦労した内容をシェアできれば、 これを読んでいる人の参考にもなるかな?と思いシェア。また、下記の内容は、あくまで「参考」レベルにとどめて…

Google Analytics利用時の注意

アプリやサービスをローンチする際、Google Analyticsを使って ユーザの行動を収集するケースは多いと思いますが、 今回はそのGoogle Analytics利用時の注意点について。一応、Google Analyticsのサイトにはこんな感じで記載があります。Google Analytics よ…

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

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

DialogFragmentでIllegalStateException "Fragment already added"が発生する

AndroidのFragmentを使っているとアルアルな話かもしれませんが、 FragmentDialogをつかっていて、二度目以降のタイミングで、 IllegalStateException "Fragment already added"が発生する、という不具合に困っていました。 ようやくそれを修正できたので、…

AndroidでSSLを使う際のSecureRandomの問題点

AndroidでSSLを使うときに、 SSLContextを使うことがあるかと思いますが、 このSSLContextのinitで使えるSecureRandomに脆弱性があるらしい、という話です。出元は下記。 Some SecureRandom Thoughts | Android Developers Blogここによれば、SecureRandomは…