Hatena::ブログ(Diary)

メモ書き

2013-08-26

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からログインできた。

初期位置がおかしいとかは修正しないとなー。

2013-04-04

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が変更されても、

きちんとパースしてくれることを確認した。

2013-03-09

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

2013-01-25

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

AndroidNFC機能を使った

入室・退室アプリを公開してみました。

簡易的な使い方ならタイムレコーダー替わりにも使えるので、

お金出してタイムレコーダー買うよりもコスト的にいいかと。

NFC 入室・退室管理】

https://play.google.com/store/apps/details?id=jp.ne.interpia.checkin&feature=search_result#?t=W251bGwsMSwyLDEsImpwLm5lLmludGVycGlhLmNoZWNraW4iXQ..


【条件】

NFC機能のついているAndroid

NFCの読み取り機能をONにしておくこと

f:id:tetsu831:20130125103040p:image:w360



【使い方(設定編)】

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

f:id:tetsu831:20130125103043p:image:w360

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

Gmailアドレスの設定から有効なGmailアドレスを入力する。

 (本アプリ以外に使用しません)

Gmailパスワードを入力する

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

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

 メールが送信されます。

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

 メールが送信されます。

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

 メールが送信されます。

・入室・退室ログ初期化を実行すると、入室・退室ログが初期化されます。

 初期化する前にメールにて送信しておくことをお勧めします。

・登録情報初期化を実行すると、登録情報が初期化されます。

 初期化する前にメールにて送信しておくことをお勧めします。


【使い方(登録)】

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

f:id:tetsu831:20130125103038p:image:w360


2.手持ちのNFCカード(SuicaNFC付携帯など)を

 Androidにかざす。


3.そうすると、NFCカードのIDM情報をキーに名前・カナ・備考が表示される。

 ただし、新規の場合は空欄にて表示される。


4.名前・カナ・備考に入力して、

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



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

1.NFCカード(SuicaNFC付携帯など)を

 Androidにかざす。こんな画像が表示される。

f:id:tetsu831:20130125103042p:image:w360


2.NFCカードが登録されている場合は、

 登録されている内容で、名前・カナ・備考が表示される。

 NFCカードが登録されていない場合は、

 「未登録のカードです」とエラー表記される。


3.NFCカードが登録されている場合は、「入室」・「退室」・「キャンセル」

 の各ボタンが有効になっています。

 入室処理をしたい場合は「入室」ボタンを押す。

 退室処理をしたい場合は「退室」ボタンを押す。

 キャンセルをしたい場合は「キャンセル」ボタンを押す。

 入室・退室を選択した場合は情報が保存されます。


-----------------------------------------------------------------


有料にしてみたのは、

有料の方がやる気がでそうだから。

(無料だと、「どうせ無料だしー。」みたいな感じがあるので)

2013-01-21

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連打するとアッというまにアプリが死ぬね。

使用用途がかなり限定される・・・。

Connection: close