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機能をつかった入室・退室管理アプリ
AndroidのNFC機能を使った
入室・退室アプリを公開してみました。
簡易的な使い方ならタイムレコーダー替わりにも使えるので、
お金出してタイムレコーダー買うよりもコスト的にいいかと。
【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カード(Suica、NFC付携帯など)を
Androidにかざす。
3.そうすると、NFCカードのIDM情報をキーに名前・カナ・備考が表示される。
ただし、新規の場合は空欄にて表示される。
4.名前・カナ・備考に入力して、
「登録」ボタンを実行すると、NFCカード情報に名前・カナ・備考が紐づけされる。
【使い方(入室・退室)】
1.NFCカード(Suica、NFC付携帯など)を
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の方が好み