ポスログ

ぽすとぐれすの日常

【Android】Google Map v2を動かした

はじめに

Google Maps api を使用して、Android端末上でGoogle Map を起動させる事に成功したので、その備忘録として残します。。。 記事の内容は、ほとんど参考URLのコピーとなっていますが、 ご了承ください。 では、本題へ。

全てのAndroidアプリは、開発者が秘密鍵を保持する デジタル証明書を使用して署名される。 Android APIキーの取得方法については、下記の通り。

アプリの証明書情報の表示

APIキーは、SHA-1 フィンガープリントとも呼ばれる、 アプリのデジタル証明書の簡略形をベースにしています。 証明書のSHA-1フィンガープリントを表示するには、 まず正しい証明書を使用している事を確認する。 手順は下記の通り。

  1. ターミナルを起動する。
  2. ターミナル上で次を実行する。
keytool -v -list -keystore ~/.android/debug.keystore

パスワード入力を求められるが、何も入力せずEnterキーを押せばOK。

上記コマンドを実行すると、下記のような出力がされる。

証明書のフィンガプリント:
     MD5:  BF:8B:1E:80:55:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX:9C
     SHA1: 90:47:8E:1D:4B:85:06:XX:XX:XX:XX:XX:XX:XX:B9:C6:82:41:5A
     SHA256: 47:ED:04:59:E0:0C:D0:D4:XX:XX:XX:XX:XX:XX:XX:XX:XX:XX::63:5F:8D:CC:93:66:EA:EE:E7:4E:6F:89:32:37

SHA-1で始まる行に証明書のフィンガープリントが記述されている。

APIキーの取得

  1. Google Developer Consoleのページ移動する。
  2. Create projectをクリックし、プロジェクト名を記入する。 この名前は、Android Studio あるいは Eclipseで作成したプロジェクト名と一致する必要がある。
  3. Google Maps Android APIを有効にし、認証情報(2.で取得したSHA-1フィンガープリントとプロジェクト名(com.example.hoge))を記入する。(←文字列間違えないようにコピペ推奨)
  4. 意味の読み取れない半角英数字からなるキーを取得できたらOK。

キーの入力

下記に示すプロジェクト内のgoogle_maps_api.xmlファイルの "YOUR_KEY_HERE"を、取得したキーに書き換える。

<string name="google_maps_key" templateMergeStrategy="preserve" translatable="false">YOUR_KEY_HERE</string>

最後に、実行したらうまくいきました。

おわりに

書くの疲れた。。。

今年の目標を掲げるでござる

本を50冊読む!

理由:知識を増やす.主にソフトウェア設計論,ソフトウェアの仕組み,組織論あたりに焦点を当てた本を読む.

年間15回は,IT勉強会およびイベントに参加する.

理由:人脈を増やす.知識を増やす(2回目).最新の技術動向の把握

国際会議への論文投稿をやりきる

理由:英語で技術書の作成,およびプレゼンテーションの技能を身に付ける.

ペット監視システムを完成させ,アプリストアかIT展示イベントで公開する.

理由:サービスという観点からレビューを貰う.

ソフトウェア設計・実装において,ユーザーの用途に合致した設計および実装を出来るようになる.

謹賀新年

昨年を振り返って

あけましておめでとうございます.
今年もよろしくお願いします.

さて,年も明けて2016年となりました.
去年の大みそかに一年の振り返りが出来なかったため,
これから振り返ろうと思います.

1月から3月

この期間は,主に学会発表を見据え,
研究に打ち込んでいました.
しかし,発表日までに発表予定であった実験結果を出す事が出来ず,
何とも不完全燃焼な学会参加となりました.
また,発表についても,質疑応答を上手くこなす事が出来なかった.
今後に生かしていこう...

4月から8月

この時期は,就職活動を行いながら,
学会投稿用論文を執筆したため,非常に多忙を極めた期間であったように思う.
しかし,その分,一番得るものが多かった時期と感じる.
特に就職活動については,
普段話す事のない会社のお偉いさんと会話出来た事が自分にとっては非常に有益であった.
研究についての指摘,仕事の進め方についての指摘,其々の会社が何を考えて動いているのかを,
生の声で議論できたことは非常にありがたかった.

9月から12月

ジャーナル論文が条件付き採録になったとの報告を受け,
ほっと胸をなでおろした時期であった.
そして,年末までジャーナル論文の査読結果に対する修正を続け,
12月頭に再投稿出来た.
うかるといいな.

総括

わりと新しい事にはチャレンジできたかな!
総括はかなりさびしい文章となりましたが,
これもご愛嬌www

git push でSSLエラー

はじめに

gitでファイルおよびディレクトリをリモートリポジトリへのプッシュを試みたところ,SSLエラーが出た.
そこで,本記事ではその解決法について記述する.

エラー現象

ファイルおよびディレクトリをリモートリポジトリへプッシュしようとすると,
以下のエラーメッセージが表示された.

$ git push
fatal: unable to access 'https://github.com/matsuda1991528/kenkyuu.git/': error setting certificate verify locations:
  CAfile: bin/
  CApath: none

原因

なぜこのようなエラーが起こるのか?
それは,証明書が変わった事に起因するらしい.
すなわち,Githubhttpsで使用されるSSL証明書
発行している認証局(CA)が変わった為,
新しい証明書が入っていなかった事が原因らしい.

解決法

ひとまず,証明書のチェックをしないように設定を変更し,
この問題の解決を図った.
以下に,証明書のチェックをしないように設定する為のコマンドを示す.

git config --global http.sslverify "false"

このコマンドを実行後,リモートリポジトリへのプッシュを行う事に成功した.

【広島JUG】金魚本読書会に参加してみた

はじめに

広島JUGの金魚本読書会に参加してみた.
内容は,JavaEE6におけるJPA(JavaPersistence API)についてだった.
ここで,JPAとはJavaの世界(オブジェクト指向)とRDB(リレーショナルデータベース)を
直接的に結ぶための仕組みだそうだ.
勉強会に参加した感じだと,

  • RDBの情報をオブジェクト単位でひっくるめて管理できる!

というメリットがあるように感じた.

そこで,以下にJPAとはどのような場面において,メリットを発揮し,
一方,どのような時に注意を払わなければならないかを綴りたい思う.

しかし,僕はJPAに関する知識も経験も皆無状態である為,
勉強会において,分からない用語を調べるだけで終わってしまった...
その為,以下には調べたJPAに関する用語とその意味を淡々と綴っていきます...

用語録

【永続性】

  • サーバがクラッシュしたり,電源が落ちたりしたとしてもコミットされたトランザクションが記録されていることを保証する機能
  • データベースに多くのオーバーヘッドを与える.

【永続性コンテキスト】

  • エンティティ毎にDBの更新処理を行ってくれる.
  • DBのトラフィックを少なくしてくれる.
  • persist : 新しいオブジェクトを永続化コンテキストに追加する.
  • remove : 永続化コンテキストにあるエンティティを削除する.
  • merge : detached状態のエンティティをmanaged状態にする.
  • refresh : エンティティの内容をデータベースと同期する.更新内容はデータベースのっもので上書きされる.

【データベースとの同期】

  • トランザクションのコミットまたはflushメソッドの実行時に,エンティティの状態がDBに書きこまれる.
  • refreshを呼び出さない限り,メモリにロードされたエンティティの状態のリフレッシュは実行されない.
  • 以下にエンティティの状態遷移を示す.
    • new : flush操作は無視される.
    • managed : データベースと同期される.
    • removed : エンティティはDBから削除される.
    • detached : flush操作は無視される.

【DBの基本操作】

  • select 何を取り出すか
  • from どこから取り出すか
  • where→絞り込みの条件
  • select new カスタマーを取り出してDTOクラスとして取り出す.

DTO

  • デザインパターンの一種で,アプリケーションのサブシステム間でデータを転送するのに使う.
  • オブジェクト指向プログラミングでよく用いられる典型的なオブジェクトの設計パターン(デザインパターン)の一つ
  • 関連するデータを一つにまとめ、データの格納・読み出しのためのメソッドを定義したオブジェクトのこと。

【動的クエリ】

  • 動的にJPWLを組み立てる.
  • 静的なクエリ文字列でなく,Drupalによって動的に構築されるクエリ.
  • インサート,アップデート,デリート,manageを動的に生成する.
  • 処理が重くなるデメリットがある.
  • 結局は裏でやるだけで,開発者がSQLを意識しなくていいかの違い?

【名前付きクエリ(静的クエリ)】

  • 動的クエリの対照となるもの.

【ネイティブSQL

  • データベースシステム依存のSQL
  • DBシステム固有のSQL言語を使う.

【オープンSQL

  • ABAP特有のSQL
  • システムに依存しないSQL

オブジェクト指向クエリ】

【静的メタモデルクラス】

  • 上記の属性が文字列のままの問題をメタメソッドを用意して,属性も文字列を書かずに済む.
  • 誤字ミスを減らせる.

【ロック】

  • ファイルやデータベースに書き込みを行う際に,データの整合性を保つために,
  • データの読み書きを一時的に制限する事.排他制御の一つ.

【楽観的ロック】

  • データを更新する前に,そのデータをロックするという意味.
  • 例)更新したいレコードを取得して,更新タイムスタンプを保持しておく.

更新する直前に再度レコードを取得して更新タイムスタンプが最初の時と
変わっていないかで排他処理を行うというもの.

  • テーブルにタイムスタンプを持つ必要がある.また,プログラムで制御する必要がある.

【悲観的ロック】

  • 自分が操作している情報は,他の人も操作する可能性がある.という視点に立った,排他的制御方式
  • 画面に表示した情報は自分が変更するまで保証されている方式.
  • メリット:

--プログラムで気にする必要がない.
--複数トランザクションを順番に処理できる.

  • デメリット

--デッドロックが発生する必要がある.
--ロックの間,トランザクションを維持しておく必要あり.

【コールバック関数】

  • 関数に引数として渡される関数.
  • 関数Aに引数として渡された関数Bは、関数Aの中で関数Bのお仕事をする.このときの関数Bのことを表す.

【リスナー】

  • ボタンをクリックしたり,メニューを実行した,ウィンドウをリサイズした,等のイベントを監視
  • イベント発生時に対応するアクションを実行するオブジェクト.

【Android Studio】Android AVDが起動できない

問題

Android studioエミュレータを起動しようとすると,以下のエラーメッセージが出る.


emulator: ERROR: x86 emulation currently requires hardware accelation!
Please ensure Intel HAXM is properly installed and usable.
CPU acceletation status: HAX kernel module is not installed!

原因

Intel HAXMがインストールされていないことが原因らしい.

解決法

【Tool】→【Android】→【SDK】を開き,
Intel x86 Emulator Accelerator(HAXM installer)をインストールする.
しかし,これだけではエミュレータは動作しない.
なぜなら,この操作はインストーラをダウンロードするだけの動作であって,
インストールにはインストーラを別途起動する必要がある.
そこで,Cドライブから
【intelhaxm-android.exe】を見つけ,インストーラを起動する.
これで再度,AVD起動すると正常動作した.

Gitでソース管理【Eclipse編】

ローカルリポジトリの作成

  1. Eclipseのプロジェクトを作成する.
  2. プロジェクトを右クリックし,Teamからshare projectを選択する.
  3. リポジトリ―・タイプを選択するダイアログが表示されるので,Gitを選択する.
  4. Use or create repository in parent the Eclipse workspace にチェックを入れ,Create Repositoryを選択する.
  5. Gitに挙げる前に,コミットが不要なファイルを.gitignoreに書きこむ(.gitignoreは.gitが作成された同一ファイルにある.)

↓こんな感じ

/bin/
/.classpath
/.project

リモートリポジトリの作成そして,コミット,プッシュ

  1. githubにsign in して,画面右上のCreate New repositoryから新しいリモートリポジトリの作成
  2. eclipseでTeam→Commitを選択すると,コミットダイアログが開く
  3. コミットするファイルにチェックを付け,コミットを押下する.
  4. EclipseでGitリポジトリ―・エクスプローラを開き,右クリックして,リモートの作成を選択する.
  5. リモート名を入力するダイアログが開き,リモート名はoriginのままで,プッシュ構成が選択された状態でOKする.
  6. プッシュ構成のURIを指定する画面になるので「変更」ボタンを押下する.
  7. プロトコルhttpsを選択する.リポジトリ―パスにリモートリポジトリのパスを入力する.すると,自動でURIも入力される.
  8. URIを指定すると元の画面に戻るので,保管及びプッシュを選択する.
  9. プッシュ画面にOKが表示される.

参考