initLoader()の構文のメモ

initLoader()の構文のメモ

initLoader(int id, Bundle bundle, LoaderCallback)

id
Loaderを識別するIDの値
これは、onCreateLoader()の第一引数に渡される

bundle
パラメーター格納に使う
これは、onCreateLoader()の第2引数に渡される

LoaderCallback
LoaderCallbackを実装したクラスを指定する

Ubuntu 13.10 にグループウェア導入

Ubuntu 13.10 にグループウェア導入

今回インストールするのは
リミットリンクのグループウェア

これは組織での情報共有
共同作業を促進するサービス

できることは
スケジューラ
掲示板
施設管理
ユーザ情報管理
アドレス帳
在庫管理
ファイル共有など

web アプリとして実装されているので
ブラウザからアクセスできる

まず
http://l-groupware.com/download.html
にアクセスし
規約に同意して download をクリック

group.zip が
ダウンロードできたら
これを FileZila でFTPSで転送

次にUbuntu サーバーにログインして
必要なパッケージのインストール

sudo apt-get install php5 php5-mysql mysql-server libapache2-mod-php5 unzip apache2

インストールできたら
cd /var/www/
でディレクトリ移動

sudo unzip ~/group.zip
で現在のディレクトリに中身を解凍

cd group/application/
で移動して

sudo chmod 606 config.php
sudo chmod 707 upload/*
で権限を変更

mysqladmin -uroot -p create limitlink
でパスワード入力してDB作成

サーバー側の設定はとりあえずここまで

次に、クライアントマシンのブラウザで
http://192.168.10.205/group/setup.php
というように
サーバーIP/group/setup.php
へアクセス

セットアップの種類は
新規セットアップ

データベースの種類は
MySQL

ホスト名は
localhost

データベース名は
さきほど設定した
limitlink

データベースユーザ名は
root

データベースのパスワードは
mysqladmin でDBを作成したときのパスワード

テーブル接続辞は
groupware_
のままとして

管理者の設定を行う
ここは任意でOK

とりあえず
ユーザIDを limitlinkroot
パスワードは任意
名前は snowpool
グループ名は developer

これで実行

セットアップが無事に終われば

セットアップが完了しました。

「application/config.php」のパーミションを「604」または「644」に戻し、
「setup.php」をサーバーから削除してください

とメッセージがでるので

再びサーバー側で
sudo chmod 604 config.php
で権限変更

sudo rm -f ../setup.php
でセットアップファイルを削除

これで
http://192.168.10.205/group
へアクセスすれば
ログイン画面になる

Nexus7 へ野良アプリインストール

Nexus7 へ野良アプリインストール

まずUbuntu 13.10 へ Hello.apk を転送

次に
ssh でサーバーにログイン

このままだとファイルをコピーできないので
sudo mkdir /var/www/android

sudo chmod 755 /var/www/android/
sudo chown snowpool:snowpool /var/www/android/

として権限と所有権を変更

これで
cp Hello.apk /var/www/android/
でファイルをコピー

これで
http://192.168.10.205/android/
というように
サーバーIPアドレス/作成したディレクトリ
でファイルが表示されるので

ファイルをダウンロードしようとしたら
You don’t have permission to access
と表示された

原因をみるため
ls /var/www/android/
でみたら
Hello.apk の権限が
-rw——-
となっていて、読み書きしかできない状態

このため
chmod 755 /var/www/android/Hello.apk
で権限を付与して

再度挑戦したらダウンロード成功

警告がでるけど気にせずダウンロード

次に Nexus7 で
設定 > セキュリティ

提供元不明のアプリ
にチェックをいれ
サードパーティアプリのインストールを許可

これでダウンロードしたアプリをインストールできるので
そのままダウンロード

実験終了したらセキュリティのため
再度
サードパーティアプリのインストールの許可を解除しておく

ちなみに、Android 4.2 以降では

設定 > タブレット情報 で
ビルド番号を7連続タップすると
隠されていた
開発者向けオプションが表示されるようになります

お店探しに雑誌をつかってみた

食べログやぐるなびでもさがすことが多いのですが

いろいろと調べるのに手間がかかるため
今回雑誌をかってみました

私の場合、電車で駅から近いところを探しているため
この雑誌の中から選んでいくつかいってみました
 
お正月休みということもあり
残念ながら多くはまわれませんでしたが

それでも新しいお店の開拓ができました

BAR YLANG YLANG
ではチャージがかからなかったり
伏見駅の9番出口から近く、オリジナルカクテルがおいしかったです

また、おなじ名前で矢場町のほうにあった
ぶりこですが
こちらのカレーが私には激辛でした
私としては中で販売されていた 自家製グラノーラ がおすすめです

大須の
HEAVEN’S KECHEN
もピザがおいしかったです

食べログやぐるなびでもいろいろと探せるのですが
こうやって雑誌で調べると
また違ったところを探せるのがおもしろいと思います

こういったお店の情報を仲間内だけで共有できるようなサービスをつくってみたいと思います

食べログとかのような不特定多数ではなく
とはいってもfcebook のように自分の行動を晒すのは抵抗があり
できれば友人達と情報を共有できる

こういったコンセプトで考えれみると、お店だけでなく趣味などでも応用できそうです

ubuntu 13.10 にFTPSサーバー

ubuntu 13.10 にFTPSサーバー

FTPだと平文、つまりパスワードなどが丸見え

これは wireshark などで実験すると体験できる

このため暗号化されている FTPS を使う

sudo apt-get install vsftpd
でインストール

sudo vim /etc/vsftpd.conf
で設定ファイルを開き

#write_enable=YES

write_enable=YES
というように最初の#を削除
これで書き込み可能に

#ls_recurse_enable=YES

ls_recurse_enable=YES
にしてディレクトリごとの転送を可能に

ssl_enable=YES

ssl_ciphers=HIGH

require_ssl_reuse=NO

を最終行に追記

sudo service vsftpd restart
でサービス再起動

ssl_enable=YES
はSSL有効化

ssl_ciphers=HIGH
・ssl_ciphersオプションは
FileZillaClientへの対応

require_ssl_reuse=NO

サイズが0バイトのファイルが作成される対応

これで後は FileZilla を起動し
ホスト名にIPアドレス

Encryption には
Require explicit FTP on over TLS

ログオンの種類を 通常

ユーザ名
パスワードを設定し接続すれば
暗号化されたFTPでファイルのやりとりが可能になる

今回はエラー多発のため
ubuntuにFTPSサーバーを構築

Net::FTPSSL を使ってFTPSでvsftpdに接続する時のメモ。「522 SSL connection failed」

を参考にさせていただきました

apkファイル作成

apkファイル作成

プロジェクトを右クリック

Android Tools > Export Signed Application Packages
を選択

使用する keystore を求められるので

Use exisitng keystore を選び
作成した release.keystore
を選択する

作成したときに入力したパスワードを入力する

次の画面で
Alias を選択し
前回設定しているパスワードを入力

Destination APK file は
作成する apk ファイルを書く

デフォルトだとプロジェクトの略称で作成される
/home/snowpool/Hello.apk

拡張子が .apk であるなら名前変更可能

これで Hello.apk が作成される

ちなみに書名を確認するには

jarsignerコマンドを使う

今回使用したオプションは
-verify
JARファイルの検証

-verbose
冗長モードになり
JAR の署名または
検証の進行状況に関する追加情報を出力

-certs
JAR ファイルの各署名者の証明書情報を出力

詳しいオプション解説については
http://docs.oracle.com/javase/jp/6/technotes/tools/windows/jarsigner.html
を参照

今回は
jarsigner -verify -verbose -certs /home/snowpool/Hello.apk

として作成したファイルを検証

keystore ファイル作成

keystore ファイル作成

project を右クリック
Export

Android > Export Android Application

プロジェクト名はそのままで Next

keystore ファイルが必要なので
create new keystore にチェックをして
Location にはファイルの場所と、そのパス
とりあえず
/hone/snowpool/key_snowpool

Password
Confirm
にパスワード入力

次に
Alias に別名
Password
Confirm にパスワード
vaidityは有効期限(年単位)

First and Last Name には名前

他にもいろいろあるけど
これだけあればテストはできる

次に
ファイル作成
拡張子を .apk にすること
/home/snowpool/apptest.apk
としてみた

しかし、最後でエラーがでる

keytool エラー java.io.filenotfoundexception No such file
で調べたりしたけど
端末で簡単に作れるので
こちらで実行することに

keytool コマンドついては
http://apis.jpn.ph/fswiki/wiki.cgi?page=Java%2Fkeytool
を参考に

また、オプションについては
http://docs.oracle.com/javase/jp/6/technotes/tools/solaris/keytool.html
を参考に

以下は使用したオプションの解説

-genkey でキーペア作成

-v
これは冗長モードにする
これにより詳細設定が可能になる

-keystore
keystore のファイル名

-keyalg
鍵ペアのアルゴリズムの指定

-validity
有効期限の設定

今回は

keytool -genkey  -v -keystore /home/snowpool/release.keystore -alias releasekey -keyalg RSA -validity 10000

として実行

キーストアのパスワードを入力してください:
とでるのでパスワードを入力

姓名を入力してください。
[Unknown]:
となったら氏名入力

組織単位名を入力してください。
[Unknown]:
となるので、とりあえず Development

組織名を入力してください。
[Unknown]:
となるので My Company

都市名または地域名を入力してください。
[Unknown]:
で県名

州名または地方名を入力してください。
[Unknown]:
で市長村名

この単位に該当する 2 文字の国番号を入力してください。
[Unknown]:
は jp

最後に確認で聞かれるので、問題ないのなら
yes
を入力

の鍵パスワードを入力してください。
(キーストアのパスワードと同じ場合は RETURN を押してください):
とでるので
Enter

これで
release.keystore ファイルが作成される

確認するには、端末から
ls | grep keystore
で確認できる

これで後は署名つきファイルを出力する

犬山城へのお得切符

お正月ということで
まだ行ったことのないエリアに旅行してみました

いろいろと経験してみると新しい発見とかアイデア
が浮かぶこともあります

今回は名古屋からですので
犬山城下町きっぷ
という割引切符を使いました

犬山城下町きっぷについては
http://www.meitetsu.co.jp/osusume/shohin/1225953_1244.html
に掲載されています

往復の電車賃が通常よりお得になること
そして
セットで犬山城への料金が入っていること
また、城下町のお店の一部で
セットになっているクーポンが使えるなど
メリットがあったためこの切符を購入してみました

名鉄名古屋からだと、約30分くらいでした

名鉄名古屋だと1300円でかえますが
http://www.meitetsu.co.jp/pages/joukamachi_01.html
に他の地域から購入するときの金額
が掲載されています

ちなみに
クーポン対象の店舗は
http://www.meitetsu.co.jp/pages/joukamachi_02.html
に掲載されています

今回はお正月ということもあり
いくつかの店舗はお休みでしたが
また機会があればいってみようと思います

Android で地図を出すとき
GPSを有効化したり wifi を有効化することを
促されこれを起動するのが面倒でした

この前、サーバの起動をNFCにかざすだけで実行できたのでNFCを使うことで
これらを解決できるかもしれません

AndroidアプリからWebAPIへアクセス

AndroidアプリからWebAPIへアクセス

AndroidアプリからWebAPIを呼び出す場合
HTTP通信をするため
メインスレッドとは別のスレッドで
非同期処理する

Androidアプリで、スレッドを作成して
非同期処理させるには
いくつかのアプローチがある

Android 3.0までは
Android SDKで提供されるAsyncTaskクラスを直接利用するのが一般的だった

AsyncTaskクラスでは
メインUIスレッドとは別の非同期処理と
UIスレッドへの実行結果を通知する仕組みが用意されている

これにより、
別スレッドからのUI操作の問題も回避でき
非同期処理が実装できる

ただ、Android 3.0から非同期処理をより
汎用的に扱うためloaderという仕組みができた

loaderクラスは
非同期にデータを読み込むための抽象的クラスで
Activity
Fragmentどちらでも利用できる

Android 3.0未満でも
Support Library という互換ライブラリーを使えば
loaderを使うことができる

AsyncTask と似たもので
AsyncTaskLoader

これは、Loaderのサブクラスで
従来のAsyncTaskクラスの機能が使える

AsyncTaskでは
非同期処理と
UIスレッドへのアクセスができるため
便利だけど
UIへの処理が分散する

AsyncTaskLoaderでは
この問題をActivityに対してコールバックするメソッド、
つまりインターフェースの実装をすることで
解決している

Activityクラスで
LoaderCallbacksインターフェースを実装すれば
非同期処理の各イベントに応じて決められたメソッドが、呼び出される

このメソッドの中で
非同期処理の進捗状況の表示や
処理完了時のViewの更新処理を記述するようにする

このように、ActivityLoaderクラスを使うことで
ActivityのUI制御と非同期処理の処理を分けて実装することができる