initLoader()の構文のメモ
initLoader(int id, Bundle bundle, LoaderCallback)
id
Loaderを識別するIDの値
これは、onCreateLoader()の第一引数に渡される
bundle
パラメーター格納に使う
これは、onCreateLoader()の第2引数に渡される
LoaderCallback
LoaderCallbackを実装したクラスを指定する
Just another WordPress site
initLoader()の構文のメモ
initLoader(int id, Bundle bundle, LoaderCallback)
id
Loaderを識別するIDの値
これは、onCreateLoader()の第一引数に渡される
bundle
パラメーター格納に使う
これは、onCreateLoader()の第2引数に渡される
LoaderCallback
LoaderCallbackを実装したクラスを指定する
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 へ野良アプリインストール
まず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サーバー
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」
を参考にさせていただきました
ubuntu 13.10 HTTPS 有効化
すでに apache2 はインストール済みなので
sudo a2enmod ssl
sudo a2ensite default-ssl
sudo service apache2 reload
これでHTTPSで接続できる
ただし、公的な証明書ではないので接続するときに警告がでる
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 ファイル作成
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を呼び出す場合
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制御と非同期処理の処理を分けて実装することができる