Hatena::ブログ(Diary)

kaishitaeiichiの日記

2011-11-24 スケーラブルWebサイト

スケーラブルWebサイト

スケーラブルWebサイト

スケーラブルWebサイト

Webアプリアーキテクチャを解説した本。アーキテクチャというぐらいだから、細々した実装のはなしはそんなにない。システム構成などが、はなしの中心となっている。

2011-01-06 開発中の日時のあつかい

開発中の日時のあつかい

経験の浅い頃は、

Calendar now = Calendar.getInstance();
Date date = now.getTime();

とか

date '+%Y%m%d%H%M%S'

するのさえめずらしくて、ソースコードのところかまわず、日時を取得しまくっていた。

だけど、少し経験を積むと、これが厄介のたねになることに気づく。

自分のPCでのテストだけならともかく、共通のテスト環境で結合試験する時には、Linuxのシステム日時をかんたんに変えることなんてできなくて、自由に日時を変えることができなくて、泣きを見ることになる。それでもテストでは、日時は自由に設定したくてしょうがない。

いくつかの現場で経験してきた日時のあつかいは、

  • 日時は、自分たちで準備した共通のAPIから取得する。
  • 日時の取得は、システム日時だけでなく、日時ファイルからも取得できるようにして、必要に応じて、どちらから取得するかを切り替えられるように共通のAPIをつくっておく。
  • 日時の取得は、システム日時だけでなく、データベースの日時テーブルからも取得できるようにして、必要に応じて、どちらから取得するかを切り替えられるように共通のAPIをつくっておく。
  • シェルスクリプトJavaで共通の日時をあつかえるようにする。
  • 特に、データベーストランザクションの処理では、はじめに1回だけ日時を取得して、トランザクションの処理では、それをつかいまわす。
  • JUnitを書きながらの開発だと、日時のあつかいは自然と注意したくなる気がする。注意しないと、実行するたびに、assertを変えなきゃいけなくなる。
    • また、べつの話だけど、データベースの自動採番とかもそうだよなー。
  • 日単位の処理は、http://commons.apache.org/lang/api-2.4/org/apache/commons/lang/time/DateUtils.html#truncate(java.util.Date, int):title]などで、切捨てをうまくおこなう。
  • 日単位の処理は、等号でなくて、1日分足して、不等号で処理する

とかだろうか。

2010-12-28 Android 開発

Android 開発


Androidのエミュレータ

日本語入力

エミュレータの画面のSettingsで、Language & keyboardから日本語とIMEを選択する。


トラブルシューティング

EclipseのAndroidのプラグインをいれて最初につくったAndroidプロジェクトでコンパイルエラー
Eclipseを再起動?
com.google.xxxx.yyyyのようなパッケージをimportできてない。コンパイルエラー
プロジェクトのプロパティのAndroidで、Google APIsをチェックする。ただのAndroid x.yではコンパイルエラーとなる。
java.io.IOException : Service not Available
エミュレータがサポートしていない機能を実行するとこういう例外が発生することもあるようだ。エミュレータに限らないのか?
Geocoderでjava.io.IOException : Service not Available
エミュレータのバージョンがGoogle APIs対応のLevel 8だとだめだった。エミュレータのバージョンがGoogle APIs対応のLevel 7だとうまく動作してくれるようだ。そのうちLevel 8でも作動するようになるのだろうか?

画面

  • いまどきのやり方らしく、XML、main.xmlによって画面部品のオブジェクトを組み立てる。
    • Javaソースコードで画面部品のオブジェクトを参照したい場合は、findViewByIdで取得する。
    • mail.xmlの作成は、Eclipseのプラグインだと、ドラッグアンドドロップで画面を作れるので、そいつが楽だ。
    • mail.xmlの作成は、Eclipseのプラグインだと、エディタの補完機能が効きまくる!
  • SwingのようにJavaソースコードで画面部品のオブジェクトを組み立ててもよい。

その他

R.layout | Android Developers

GUI部品の概観を制御するパラメータを定義したクラス。こんなものがあるのか。


参考

Androiderが押さえておきたいブログ・サイトまとめ