ConoHaでVPSサービスを立ち上げてみる。

http://www.akiyan.com/blog/archives/2013/08/software-engineers-should-operate-a-web-server.html
上記ブログで影響を受けたので、
ちょっとやってみようかーと。
・ユーザー登録して
・クレジットカード登録して
VPSの選択してー
って、すぐにできたよ。
コンソールみるとすでにCentOS 6.4が入っているので、
ここから色々いじってみればいいんだな。
やってみよう。

で、早速Webサーバーは立てることができた。早い。

(追記)
FileZillaからSFTPでログインできた。

①/etc/ssh/sshd_config
で、ちゃんとsftpが実行されていることを知る。
http://linux.just4fun.biz/Linux%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A/SFTP%E3%81%AE%E6%9C%89%E5%8A%B9%E3%83%BB%E7%84%A1%E5%8A%B9%E5%8C%96.html

FileZillaの設定
[編集]⇒[設定]⇒[接続]⇒[FTP]⇒[SFTP]から秘密鍵を設定する必要がある。
PuttyGenにて生成した鍵ファイルを登録する。
http://www.conoha.jp/guide/guide.php?g=7
ここをみれば生成の仕方が載っている。

③FilleZillaの設定-2
ホスト:IP名
プロトコル:SFTP
ログオンの種類:通常
ユーザー:(ユーザー名)
パスワード:(パスワード)

めでたくSFTPからログインできた。
初期位置がおかしいとかは修正しないとなー。

GSonでDate型をパースする際にLocaleが関連してエラーがでる

Android 4.0.3
GSon 2.2.2


GSonを使ってJSON形式のデータをパースする際エラーになってしまった。
自分の端末では問題にはならないのに、
職場の韓国の方の携帯ではエラーが発生する。


よくよく調べて行ったら、
AndroidのLocaleの設定によって、
DateFormatが異なってしまうためにString⇒Date変換時にエラーになってしまうことが分かった。

つまり、

class myClass{
          private Date idate;
          private int id;
          /**
          * @return the idate
          */
          public Date getIdate() {
                    return idate;
          }
          /**
          * @param idate the idate to set
          */
          public void setIdate(Date idate) {
                    this.idate = idate;
          }
}


String input = "{"
          + "\"idate\":\"2013/04/04 11:11:11\","
          + "\"id\":\"1\""
          + "}";
myClass my = new Gson().fromJson(input, myClass.class);
Log.d("TAG", my.getIdate().toLocaleString());

                                                                                                          • -

myClass my = new Gson().fromJson(input, myClass.class);
ここでエラーが発生してしまう。
対処方法として、

Gson gson = new GsonBuilder().setDateFormat("yyyy/MM/dd HH:mm:ss").create();
myClass my = gson.fromJson(input, myClass.class);

として、DateFormatを定義しておけば、AndroidのLocaleが変更されても、
きちんとパースしてくれることを確認した。

GridViewのCellの中身を縦横比を画面に合わせて固定にする

GridViewを画面サイズにあわせつつ、
中身のCellを正方形にして隙間なく表示させたかった。
(マルチデバイスにも対応させたいので)

ただ、GridViewはViewGroupから継承しているので、
中身のView次第でGridViewの挙動が決まってしまう。
つまり、
numColumnsで列の数を決めて単純に行おうとすると、
横幅は画面にそって決めてくれるのだけれども、
縦幅はViewで取得した値そのままが表示されるので、思ったとおりの表示にはならない。

なので、
GetViewで正方形のViewを作ってあげれば、上記の問題にも対応できるなと
考えたのでやってみた。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
     if (convertView == null) {
          LayoutInflater inflater = LayoutInflater.from(context);
          convertView = inflater.inflate(R.layout.list_row, null);
          // ウィンドウマネージャのインスタンス取得
          WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE);
          // ディスプレイのインスタンス生成
          Display disp = wm.getDefaultDisplay();
          String width = "Width = " + disp.getWidth();
          String height = "Height = " + disp.getHeight();                   
          //widthの幅がわかったので、ここでは5列の例
          convertView.setWidth(width/5);
          convertView.setHeight(height/5);
     }

     //以下略

     return convertView;
}


こんな感じで実現できた。
StackOverFlowなんかを見ると、Custom View でonMeasure()をoverrideしてやればいいよー。
なんてことがあって、これもいいなあと。

http://stackoverflow.com/questions/6557516/making-grid-view-items-square

NFC機能をつかった入室・退室管理アプリ

AndroidNFC機能を使った
入室・退室アプリを公開してみました。
簡易的な使い方ならタイムレコーダー替わりにも使えるので、
お金出してタイムレコーダー買うよりもコスト的にいいかと。

NFC 入室・退室管理】
https://play.google.com/store/apps/details?id=jp.ne.interpia.checkin&feature=search_result#?t=W251bGwsMSwyLDEsImpwLm5lLmludGVycGlhLmNoZWNraW4iXQ..


【条件】
NFC機能のついているAndroid
NFCの読み取り機能をONにしておくこと



【使い方(設定編)】
1.メイン画面から「メニュー」⇒「設定」を押すとこんな画像が表示される。

Gmail管理にチェックを入れる

Gmailアドレスの設定から有効なGmailアドレスを入力する。
 (本アプリ以外に使用しません)

Gmailパスワードを入力する

送信先アドレスの入力する。データを送りたい送信先アドレスを入力して下さい。

・メール送信(入室・退室ログ)を実行すると、入室・退室ログが送信先アドレスに
 メールが送信されます。

・メール送信(登録情報)を実行すると、登録情報が送信先アドレスに
 メールが送信されます。

・DB情報送信を実行すると、DB(SQLite)のファイルが添付され送信先アドレスに
 メールが送信されます。

・入室・退室ログ初期化を実行すると、入室・退室ログが初期化されます。
 初期化する前にメールにて送信しておくことをお勧めします。

・登録情報初期化を実行すると、登録情報が初期化されます。
 初期化する前にメールにて送信しておくことをお勧めします。


【使い方(登録)】

1.メイン画面から「メニュー」⇒「登録」を押すとこんな画像が表示される。


2.手持ちのNFCカード(SuicaNFC付携帯など)を
 Androidにかざす。


3.そうすると、NFCカードのIDM情報をキーに名前・カナ・備考が表示される。
 ただし、新規の場合は空欄にて表示される。


4.名前・カナ・備考に入力して、
「登録」ボタンを実行すると、NFCカード情報に名前・カナ・備考が紐づけされる。



【使い方(入室・退室)】

1.NFCカード(SuicaNFC付携帯など)を
 Androidにかざす。こんな画像が表示される。


2.NFCカードが登録されている場合は、
 登録されている内容で、名前・カナ・備考が表示される。
 NFCカードが登録されていない場合は、
 「未登録のカードです」とエラー表記される。


3.NFCカードが登録されている場合は、「入室」・「退室」・「キャンセル」
 の各ボタンが有効になっています。
 入室処理をしたい場合は「入室」ボタンを押す。
 退室処理をしたい場合は「退室」ボタンを押す。
 キャンセルをしたい場合は「キャンセル」ボタンを押す。
 入室・退室を選択した場合は情報が保存されます。

                                                                                                                                • -


有料にしてみたのは、
有料の方がやる気がでそうだから。
(無料だと、「どうせ無料だしー。」みたいな感じがあるので)

NanoHTTPDを動かす

Android上でWebサーバーを立ち上げてみようと思ったので、
Web上で見つけたNanoHTTPDを早速試してみた。


NanoHTTPD-
http://elonen.iki.fi/code/nanohttpd/

JAVAのファイル一つでAndroidアプリとしてWebサーバーを立ち上げれる。
早速やってみたけど、下記のサイトを参考にさせてもらったら
アッサリと動いた。

komamitsu.log
[android] Android上でWeb serverを動かしてみた
http://d.hatena.ne.jp/komamitsu/20120223/1330013934

ただ、画像も表示させたいなーと思ったら
ちょっと修正が必要だったので、

Log.d(TAG, "method : " + method );
Log.d(TAG, "uri : " + uri );
if (uri.endsWith(".jpg") || uri.endsWith(".JPG")) {
Log.d(TAG, "urt.endsWith(\".jpg\")" + " = true" );
return serveFile( uri, header, homeDir, true );
}

途中で、上記コードをいれるとちゃんと動いた。
あとsuperの部分で
private File file = new File("/sdcard/DCIM/Camera").getAbsoluteFile();
super(PORT, file);
こんな感じでfileをしていしてあげるとそこがルートディレクトリになるんだね。
よかった。よかった。



けど、IEでF5連打するとアッというまにアプリが死ぬね。
使用用途がかなり限定される・・・。

NFC読み取り機能のテスト

去年末に買ったHTC J butterfly HTL21が
Android4.1なので、
NFCの読み取りを行ってみた


ここを参考に
http://9ensan.com/blog/smartphone/android/android-nfc-read-idm/

サンプルコードそのままいれても動いたんだけど、
それだけだとつまらないので、
・システムコード
・製造者コード
・TechList
も取得してみた。
うーん。
IDMも取得できたし、
サーバーと連携して入退店管理システムが作れそう。
試しにSuicaを読み込ませたのがこちら。



さらに
Android beamにも手をだそうかと思ったけど、今回はここまで。

http://beersmithrecipes.com/viewrecipe/3057/bayou-brown-ale-all-grain
Bayou Brown Aleを仕込んでいる。

アドバンスドブリューイングで手に入るもので代用しながらこんな感じで
Brown Ale
◎7 lbs 3.9 oz Pale Malt (2 Row) US (2.0 SRM) Grain 1
INMA-039-北米産ペールモルト_ホール4kg以上(100g単位)
⇒3.25kg

◎1 lbs English Dark Crystal Malt (75.0 SRM) Grain 2
INMA-111-クリスタルモルトC75(100g単位)_ホール-
⇒0.45kg

◎8.6 oz Special Roast (50.0 SRM) Grain 3
INMA-107-クリスタルモルトC60(100g単位)_ホール
⇒244g

◎6.9 oz Chocolate Malt (350.0 SRM) Grain 4
INMA-008-Muntonチョコレートモルト(100g単位)_ホール-−
⇒195g

◎3.7 oz Cara-Pils/Dextrine (2.0 SRM) Grain 5
INMA-063-WEYERMANN_ピルスナーモルト_ホール(100g単位)-
⇒105g

◎1.0 oz Goldings, B.C. [4.9%] - Boil 60 min Hops 6
INHO-061-ケントゴールディングホップ/ペレット(1g単位)-

◎0.5 oz Fuggles [4.2%] - Boil 15 min Hops 7
INHO-063-ファグルホップ/ペレット(1g単位)-

0 pkgs British Ale (White Labs #WLP005) Yeast 8
海外から購入

12月末に仕込んで、
1月6日に2次発酵用の容器に移し替えた
初期比重 1.052
2次発酵前 1.029

仕込んでからすぐに発酵して、
それから全然発酵している様子はなくなったけど、
無事発酵も完了しているみたい。
色はだいぶ濃いなあ・・・。酵母はWhite Labsの方が好み