Android アプリ作成(画面レイアウト編)

Android アプリ開発では
Activity を書き換えて拡張するそうです
この Activity ですが。
Android アプリの基本画面の制御につかわれるようです
例えば、ボタンの配置とか、ディスプレイタッチの検出など
そういった動作を処理しているようです
1つの Activity につき、Ⅰ画面なのですが
画面とはいっても、ボタンや検索欄などいろいろなパーツがあります
この入力欄などのパーツを view といいます
食べ物で言えば、Activity がトレイ
view が料理みたいなかんじです
トレイのどこに、配膳するか?みたいなかんじです
さて、この view 部品ですが、レイアウトするには
2つの方法があります
1、Activity の中で java でつくる
2、XMLで作って、resフォルダへ保存
  さらにjavaから読み込む
どちらが楽か?というと
2のほうが楽です
1では、java のソースコード(設計図)を改造します
今回は。XMLを改造します
Eclipse の左側にある
Package Explorer を最大化し
プロジェクト名 > res > layout >
main.xml というファイルをダブルクリックします
この .xmlがXMLファイルになります
このときに、Graphical Layout ならGUIで
main.xml なら XMLコードで記述して改造することになります
ちなみに、ここで、メイン処理を行っている java ソースコードについての
解説です
とはいっても、今回は改造しませんので
関数の解説です
onCreate() は Activity の初期化処理をかくところです
レイアウトを画面に適用する処理などは、ここに書くことになります
また、setContentView(R,layout.main);

この Activity に
res フォルダ内の
layout フォルダの中の
main.xml ファイルで定義した画面設定を適用
という内容になります
ということで
画面レイアウトの設定ファイルの指定は
setContentView() の中に
設定するという意味になるようです
それはさておき、main.xml の中を除いてみましょう
HTML や PHP のように タグが存在します
&lt/textview>
/>
という部分がありますが、これが画面に文字列を表示するための
View になっています
さすがに長くなってきたので、解説はまた明日以降になります

Android アプリ作成(プロジェクト作成)

日経Linux 2011-3 を参考に
Android アプリの開発の勉強です
開発環境に関しては ubuntu 10.10 を使用しています
Eclipse の設定(プラグイン追加など)は
スクリプトではできないので、Eclipse から操作しました
その他については
DropBox とスクリプトで開発環境
をベースにスクリプトで設定するようにしました
では、本題の Android 開発です
まずEclipse をたちあげ
File > New > Project

Android Project を選択して
next
を押します
次の画面で
ProjectName には プロジェクト名
Build target では アプリの動作対象のandroidバージョン
ApplicationName はアプリ名
Package name はパッケージ名
Android マーケットで管理するときに使用するようです
Create Activity は
アプリの起動直後に表示される画面を制御するための
基本プログラムの名前
Min SDK Version は
動作対象の Android API Level になります
どのバージョンでも動かすなら
空白にするようです
これらを入力した後に
Finish
を押すとプロジェクトができます

Webメールアプリ RoundCube その4

ようやく RoundCube の設定完了したので、ログインして
使用してみました
http://サーバーIPアドレス/roundcube
今回は
http://192.168.10.141/roundcube
でアクセス
すると
ログイン画面になるので
ユーザ名。パスワードを入れます
入れるパスワードは IMAP4 のユーザとパスワードです
今回の一連の例なら
ユーザ名 fedora
パスワード fedora のパスワード
となります
ほとんど、見たとおりでわかりやすいのですが
ちょっと分かりにくそうなものがあったのでメモ
新規フォルダを作成するには
個人設定 アイコンをクリック
次に、フォルダ一覧 のタグをクリック
左下の新規フォルダ作成を意味する + をクリック
これに、フォルダ名をつけ保存すれば完了
メールの作成をするには
電子メール アイコンをクリック
左から2番めの 新規メール作成 のアイコンをクリック
これでメール作成画面がでてきます
また、メール作成には、通常はプレーンテキストで行いますが
画面右下の エディタの種類 をHTML へ変更すれば
HTMLメールの作成ができるようになります
また、スキンファイルを変更することで、見た目を変更できます
ただ、今回使用しているver0.5 では完全対応したスキンが
まだないようです
スキンファイルは、Roundcube のコミュニティサイトから
ダウンロードできます
URLは
http://www.roundcubeforum.net/dlcat-thems-skins-1/
となります
もし、気に入ったスキンがあるなら
ダウンロードしてから unzip で解凍し
ディレクトリごと
/opt/lampp/htdocs/roundcube/skin
へコピー
という方法を行うようです
個人的にはスキンは特にデフォルトのままで問題ないので
そのままにしています
RoundCube のエラーログは
/opt/lampp/htdocs/roundcube/logs
に残ります
また、これは問題点となるのですが、
RoundCube 自体には
メールの自動振り分け、
迷惑メール対策
ウィルス対策
などに対する備えがないので、
あらかじめ メールサーバーでその設定をしておく必要性があります
今回の設定では
この設定を行っていないため
Fedoraで自宅サーバー構築などを参考に
設定することが必要になります

Webメールアプリ RoundCube その3

ようやく、スクリプトを使って
ローカルメールサーバーが構築できましたので
これに RoundCube をインストールしていきます
/optlampp/lampp start
でXAMPP を起動します
スクリプトの設定どおりにいっているなら
メールサーバーも起動しているのですが
念のため Thunderbird から
自分あてのメールを送受信してみます
これで、自作のメールサーバーから
送受信が確認できたなら
いよいよソフトの導入開始です
まず、Firefox で
http://サーバーIPアドレス/roundcube/installer
へアクセスします
今回の場合なら
http://192.168.10.141/roundcube/installer
となります
一番下に
START INSTALLATION
というボタンがあるので、これをクリック
次の画面で
必要な条件を満たしているかがでますので
ここで条件が OK となっているなら
NEXT
をクリック
次の画面でインストール画面になります
product_name には
サイトのタイトルを記入します
私は実験なので、そこまで深く考えず
デフォルトのまま Roundcube Webmail にしました
次に、
Database setup
のところで、自分のデータベースの情報を入力します
この情報を確認するには
/optlampp/bin/mysqlshow -uroundcube -p roundcubeemail
で確認します
ちなみに、本来の構文は
/opt/lampp/bin/mysqlshow -uユーザ名 -p データベース名
です
パスワードは、Webメールアプリ RoundCube その2
で設定したもので、今回は
pass です
設定を順番に書くと
Database type には
MySQL
Database server(omit for sqlite)
には
localhost
Database name (use absolute path and filename for sqlite)
には
roundcubeemail
Database user name (needs write permissions)(omit for sqlite)
には
roundcube
Database password (omit for sqlite)
には
pass
を入力します
さらに、IMAP Setting があるのですが
DNSが構築できていないので、今回は
サーバーIPアドレスにしてみました
このため、
The IMAP host(s) chosen to perform the login
には
192.168.10.141
同様に、SMTP Setting にも
サーバーIPアドレスを使用します
smtp_server
には
192.168.10.141
としました
さらに、SMTP認証をつけてあるので
smtp_user/smtp_pass
の設定をします
smtp_user には fedora@linuxwiki.com
smtp_pass には hebereke
を入力します
SMTP 関連については
echo “hebereke” | saslpasswd2 -p -u linuxwiki.com -c fedora
のところです
構文は
echo “SMTPパスワード” | saslpasswd2 -p -u ドメイン名 -c ユーザ名
となります
次は言語設定になります
Display setting & user prefs

language のところで
ja_JP
を入力し、日本語をデフォルトにします
ここまで入力が完了したら
CREATE CONFIG をクリックし、次の画面を表示します
すると、
main.inc.php (download)
db.inc.php(download)
という項目がありますので、
青くなっている download の部分をクリックし
ダウンロードします
ただし、ページはそのままです
そして、このファイルを
/opt/lampp/htdocs/roundcube/config
へコピーします
大抵は、$HOME/ダウンロード
にダウンロードされますので、
一度ダウンロード先に cd で移動し
cp main.inc.php db.inc.php /opt/lampp/htdocs/roundcube/config/
で設定ファイルをコピーします
これで次に進めるようになりましたので
ダウンロードした項目の下に
CONTINUE というボタンをクリックし
次の画面で送受信テストを行います
Test SMTP config
では送信テストを行います
Sender には送信するメールアドレス
Recipient には受信するメールアドレスを入れます
今回は、ローカル内での送受信になるので、
両方とも
fedora@linuxwiki.com
にしました
成功すれば
Thunderbird にメールが届きます
続いて、受信するサーバーのテストになります
Test IMAP config

server に IPアドレス(今回は 192.168.10.141)
Port には 143
Username には fedora
Password にはログインパスワード
となります
ちなみに、このfedora というユーザは
ssh接続ができない一般メールユーザとして作成したもので
このようなユーザを作成するには
useradd -s /sbin/nologin ユーザ名
で作成できます
これで、送受信がOKであることを確認できたら、
インストールウィザードは使わないので
アクセス不能にするためにパーミッションを変更します
cd /opt/lampp/htdocs/roundcube/
chmod 700 installer/
これで、設定が完了です
次回からは、実際に RoundCube へログインし、
使用してみます

ubuntu 10.04 へbacktrack4

Linux にはいろいろなディストリビューションがあります
そんななか、初心者向けではないけど
セキュリティテストに向いているものがあります
backtrack4 というものです
ただし、初心者の人には向きません
コマンドを使ってネットワーク接続したり、GUIを起動するので
普通に使うなら ubuntu を使いましょう
今回は、そんな backtrack 4 を
ubuntu へ入れしましたので、
メモです
ただし、完全な backtrack 4 の環境を使うことはできませんでした
本来。Ctrl + Alt + F3 でコマンドラインモードで startx
でGUIが立ち上がるのですが、残念ながらエラーになり、コマンドは使えるものの
GUI画面で行うものができませんでした
まず、今回の実験をするには
backtrack4 の Live DVD などが必要です
この用意に関しては、以前
BackTrack4
に書いたのを参考に用意しました
次に、backtrack4 のDVDをドライブへ入れ
次に
cd /media/BT4/casper
でファイルシステムのある場所へ移動
次にsudo -s
でroot シェルへ
mount -o loop -t squashfs filesystem.squashfs /mnt
でファイルシステムを /mnt へマウント
mkdir /bt4
でコピーするディレクトリを作成
cp -a /mnt/* /bt4/
で/bt4の下へコピー
以下は必要なファイルのコピー
cp /etc/resolve.conf /bt4/etc/
cp /etc/hosts /bt4/etc/
mkdir /bt4/dev/pts
続いて
gedit /etc/fstab

以下の3行を一番下へ追記
proc-chroot /bt4/proc proc defaults 0 0
/dev /bt4/dev/ none bind 0 0
devpts-chroot /bt4/dev/pts devpts defaults 0 0
これらを
mount -a
でマウントすることで
ubuntu 10.04 でも backtrack4 のコマンドを使用することができます
(ただし、全部できるとは限りませんが….)
コマンドを使用するには
sudo chroot /bt4
とし、それから使うことになります
他にも、GUI環境を利用する方法もあるのですが
こちらはまだ実現できていません
chrootで使用する作業については
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1049616225
にも詳しい説明が載っています

スクリプトを混ぜたサーバー構築実験

前回、Webメールアプリ RoundCube その2
にて、メールサーバー機能がないため、導入が頓挫していましたので
これを機会に、再度ローカルメールサーバーを構築してみました
とはいっても、今回は以前のように暗号化などは行っていません
前回のローカルメールサーバー構築については
POP形式で行いました
そのときのメモがわりに書いたのが
メールサーバー構築(Postfix+Dovecot)
から載っています
カテゴリ Postfix+Dovecot
にいろいろと書き込んでありますので
もしよければ参考にしてみてください
それにしても、ブログでメモしておくと
後々同じようなトラブルが起きたとき対処しやすくなりますので
これからも続けていこうと思います
さて、話がそれましたが
今回は、シェルスクリプトを使ってのセットアップとなります
とはいっても、まだ if や switch などを使った制御ではなく
ただ単にコマンドの羅列程度です
参考にさせていただいたのは、前回のときと同じサイトです
ただし、今回の設定したのは fedora13 32bit
メールサーバー構築(Postfix+Dovecot)
のほうになります
ある程度はスクリプトでできたのですが、
どうしてもコマンドを入力する場面はでてきます
まぁそれは今後の課題ということで、まずは今回の実験結果です
それでは、今回作成したスクリプト
setup_fedora_mail_server.sh
の内容です
途中に cp コマンドがあるように
あらかじめ同ディレクトリ内に
procmail設定ファイルの procmailrc
そして
procmailログローテーション設定ファイルの
procmail
を用意する必要があります
------------------------------—-
#!/bin/bash
#yum -y install yum-fastestmirror
#yum -y install nautilus-open-terminal
#/etc/rc.d/init.d/yum-updatesd stop
#yum -y remove yum-updatesd
#yum -y install yum-cron
#chkconfig yum-cron on
yum -y install postfix
#7行めに追記(自FQDN名を指定)
sed -i “77i myhostname = mail.linuxwiki.com” /etc/postfix/main.cf
#88行めに追記(自ドメイン名を指定)
sed -i “85i mydomain = linuxwiki.com” /etc/postfix/main.cf
#102行めに追記(ローカルからのメール送信時の送信元メルアド@以降にドメイン名>を付加)
sed -i ‘102i myorigin = $mydomain’ /etc/postfix/main.cf
#perl-TimeDate のインストール
yum -y install perl-TimeDate
#外部からの受信を許可
sed -i “s/inet_interfaces = localhost/inet_interfaces = all/g” /etc/postfix/main.cf
#167行目、行末へ , $mydomain を追記
#($は特殊記号なのでエスケープが必須になる)
sed -i “167s/\$/, \$mydomain/” /etc/postfix/main.cf
#423行目追記(メールボックスの形式をMaildir 形式へ)
sed -i “423i home_mailbox = Maildir/” /etc/postfix/main.cf
#575行めにメールサーバーソフトの隠蔽を追記
sed -i “575i smtpd_banner = \$myhostname ESMTP unknown” /etc/postfix/main.cf
#最下行へ追記
#SMTP-Auth 設定
echo -e ‘smtpd_sasl_auth_enable = yes’ >> /etc/postfix/main.cf
echo -e ‘smtpd_sasl_local_domain = $myhostname’ >> /etc/postfix/main.cf
echo -e ‘smtpd_recipient_restrictions =’ >> /etc/postfix/main.cf
#行頭に空白がはいっていないと、なぜかエラーになるので注意
echo -e ‘ permit_mynetworks’ >> /etc/postfix/main.cf
echo -e ‘ permit_sasl_authenticated’ >> /etc/postfix/main.cf
echo -e ‘ reject_unauth_destination’ >> /etc/postfix/main.cf
#受信メールサイズ設定
echo -e ‘message_size_limit = 20485760’ >> /etc/postfix/main.cf
#saslauthd 起動
/etc/rc.d/init.d/saslauthd start
chkconfig saslauthd on
sed -i “s/saslauthd/auxprop/g” /usr/lib/sasl2/smtpd.conf
mkdir -p /etc/skel/Maildir/{new,cur,tmp}
chmod -R 700 /etc/skel/Maildir/
sed -i “453i mailbox_command = /usr/bin/procmail” /etc/postfix/main.cf
## procmail procmailrc に関してはcp コマンドで作成済みファイルをコピー
cp -p procmailrc /etc/
cp -p procmail /etc/logrotate.d/
/etc/rc.d/init.d/sendmail stop
chkconfig sendmail off
#メールサーバー切り替え
#2を選択すること
alternatives –config mta
/etc/rc.d/init.d/postfix start
chkconfig postfix on
#Dovecot の導入
yum -y install dovecot
#設定ファイル変更
sed -i “21i protocols = imap imaps pop3 pop3s” /etc/dovecot.conf
sed -i “226i mail_location = maildir:~/Maildir” /etc/dovecot.conf
/etc/rc.d/init.d/dovecot start
chkconfig dovecot on
--------------------------------------------------—
ここまでで、大抵の設定はできるのですが
メールユーザの設定等は
自力で入力することになります
これはまだ、ログインなどの処理スクリプトをかけないのが原因です
このため、今回はメールユーザをそのまま fedora
パスワード関連に関しては
ローカル メールサーバー構築
を参考に
echo “hebereke” | saslpasswd2 -p -u linuxwiki.com -c fedora
としました
ユーザ登録のスクリプト化については
”簡単なユーザアカウント登録するシェルスクリプト’
とか
Linux処理の自動化 (GUI処理含む)
などを参考に、つくってみようと思います
今回の設定では、暗号化などは行っていません
このため、セキュリティには問題がありますので
実用はこのままではできません
次回は、前回中断してしまった RoundCube の導入を行おうと思います

sedコマンドの練習(追記偏)

引き続き、sed コマンドの練習です
前回は、sed コマンドを使って
行頭の文字の追記、削除を行いました
今回は、行番号を指定して追記してみます
今回も同様に、前回使ったファイルを使用します
今回は 4行目に credit test という文章を追記します
この行指定ができるようになると、後々設定ファイルをスクリプトで
設定するときに役立つと思います
【 sed 】 文字列の置換,行の削除を行う を参考に
行ってみました
vi エディタで行番号を調べるには
:set number で表示させることができます
このため、あらかじめ追記したいところを事前に調べておけば
次回からスクリプトで設定変更ができたりります
では、今回の実験です
sed -i “4i credit test” sedtest.txt
これで、4行めに追記されます
iの前に指定した文字の行数に書き込めます
また、今回追加した行がいらないと思ったとき
行ごと削除するなら
sed -i ‘5d’ sedtest.txt
で削除することができます
これも同じようなかんじです
d の前に記述した行が削除されます
また、複数の行指定も可能です
sed -i ‘1,9d’ sedtest.txt
で1~9行目が削除できますし
前回の先頭に挿入と組み合わせれば
# でコメントアウトする行を指定することも加納です
sed -i ‘1,4s/^/# /” sedtest.txt
とすれば、1行めから4行めまでコメントアウトできます
逆に、コメントアウトを解除したいのであるなら
sed -i “1,4s/^#[ ]*//” sedtest.txt
で変更できます
sedを使っての編集
にいろいろなパターンが載っていましたので
これらを使ってスクリプトを作っていこうと思います

sedコマンドの練習

再度、Linux のメールサーバー構築の必要性がでてきたので
次回からの作業効率化のために
sed コマンドを勉強し
セットアップスクリプトを作成しようと思います
sed コマンドは -i オプションを使うことで
ファイルに変更を反映することができます
この機能と、シェルスクリプトをまぜれば
毎回 vi エディタで設定をしていくという手間が省けるはずです
まずは、簡単な
sed コマンドの実験からいってみましょう
まず、練習用に
vi sedtest.txt
で練習ファイルを作成します
次に内容ですが
aaaaaaaaaaaaa
bbbbbbbbbbbb
cccccccccccccc
ddddddddddddd
eeeeeeeeeeee
fffffffffffff
ggggggggggggg
というように適当に書きます
では、このファイルの行頭にコメントアウトをする # 記号を追記します
sed -i “s/^/## /” sedtest.txt
これを実行すると、ファイル内の行頭に
##
が追記されます
結果をみてみましょう
## aaaaaaaaaaaaa
## bbbbbbbbbbbb
## cccccccccccccc
## ddddddddddddd
## eeeeeeeeeeee
## fffffffffffff
## ggggggggggggg
となります
^は、行頭という意味になります
このため、
“s/^/## /”
は、行頭に ## を書き込む
という意味になっています
空白を書き込みたいのなら
sed -i “s/^/ /” sedtest.txt
とすれば空白が挿入されます
また、行頭のスペースを削除したいときには
sed -i “s/^[ ]*//” sedtest.txt
で削除できます
今回は、参考サイトとして
sedを使っての編集

【 sed 】 文字列の置換,行の削除を行う
を参考にさせていただきました

Webメールアプリ RoundCube その2

ひきつづき、今回は MySQL での設定になります
まず、MySQL root になるために
/opt/lampp/bin/mysql -uroot -p

パスワードを入力し
mysql>
という画面になります
CREATE DATABASE roundcubeemail CHARACTER SET utf8;
でデータベース作成します
正確には、
CREATE DATABASE roundcubeemail
でデータベース作成し、
CHARACTER SET utf8
が文字コードを設定しています
さらに
GRANT ALL PRIVILEGES ON roundcubeemail.* TO roundcube@localhost IDENTIFIED BY ‘pass’;
でユーザ権限の設定をします
ちなみに、今回作成したのは
GRANT構文の実行権限をもたないユーザの作成をしているようです
基本的に、MYSQL の文字は大文字でかかれますが
小文字でも問題はありません
ただ、見やすさを考えると、大文字にしたほうがよいでしょう
そして
FLUSH PRIVILEGES;
で設定を反映します
これはファイルの変更をして、保存みたいなかんじです
ここまで実行したら
quit
でmysql の画面を抜けます
ここまでの設定で
データベース名
roundcubeemail
ユーザ名
roundcube
パスワード
pass
という設定になりました
次に、テーブルを作成するのですが
これはソースアーカイブを解凍したときにできた
mysqlinitial.sqlというファイルを使えば
楽に設定できるようです
SQlの設定には、SQLファイルを使うことで
SQLを実行する手間が省けるようです
Linux でコマンドで1つ1つ設定していくのを
シェルスクリプトに記述しておいて
スクリプト実行だけですませるのに近いのかもしれません
設定は
cd /opt/lampp/htdocs/roundcube/
で移動してから行います
/opt/lampp/bin/mysql -uroundcube -p roundcubeemail < SQL/mysql.initial.sql でパスワードに pass を入力します たぶん、絶対パスを指定すれば、一度ディレクトリ移動をしなくても 設定できそうですが.... ちょっと興味がでてきたので、.sqlファイルで検索してみました サーチマンさんのサイト
に解説が載っていました
今回の設定に使用した mysql.initial.sql
の中身をみるには
vi SQL/mysql.initial.sql
とします
中身をみるとわかるのですが
シェルスクリプトのように、コマンドの実行が記述されているファイルです
細かく調べたい方は、コマンドの内容をコピペし
google で検索してみるといろいろとでてきますので
興味のある方は行ってみてください
今回、作成した MySQL のテーブルを確認するには
/opt/lampp/bin/mysqlshow -uroundcube -p roundcubeemail
を実行し
パスワードに pass を実行することでみることができます
ここまでで、データベースの設定は終了です
次回から、ようやく設定ができると思ったのですが
残念ながら、今回の日経Linux では
Amazon EC2 での設定は載っているのですが
自宅でのXAMPPでのメールサーバー構築が載っていません
このため、アプリを導入できても
実験ができないという状況です
以前、POP3 のメールサーバーは構築したことがあるのですが
今回使用する IMAP4 では構築経験がありません
このため、まずは今回の実験環境である
fedora 13 32bit の仮想環境をもう一つ用意し
ローカルメールサーバを作ってみようと思います
OP25B対策に関しては
各プロバイダーにより設定がかわる上に
ルーターによっても変わるので
再現性の難しさから今回は省きます

Webメールアプリ RoundCube

昨日、発売された日経 Linux 2011-03 に
Webメールアプリ RoundCube の導入が載っていましたので
さっそく実験してみようと思います
今回も、以前導入した XAMPPで実験をしてみます
XAMPPの導入に関しては
XAMPP で実験
XAMPPのセキュリティ設定に関しては
XAMPP で実験 2
を参考にしてみてください
ちなみに
ただし、このRoundCube はPOP3ではなく
IMPA4 で動くので、メールサーバにメールが蓄積していきますので
サーバーのリソースをその分消費しますので、
サーバーの負荷は大きくなります
でも、この RoundCube はYahooメールや
G-Mail のようなかんじで使えるので
とても便利なのではないのでしょうか?
なにはともあれ、実験開始してみます
まず
管理者権限になり
/opt/lampp/lampp start

XAMPPを起動
次に、必要な RoundCube のアーカイブを用意します
ダウンロードするなら
http://roundcube.net/download
でダウンロードできます
ちなみに、今回は付録DVDに収録されているので
これを使います
cp -p /media/LIN201103/article/rensai_server/roundcubemail-0.5.tar.gz $HOME
これで用意ができました
次にファイルを展開し、XAMPP のルートディレクトリに移動します
面倒なので
tar zxvf roundcubemail-0.5.tar.gz -C /opt/lampp/htdocs/roundcube
としましたがエラーになるので
tar zxvf roundcubemail-0.5.tar.gz
mv roundcubemail-0.5 /opt/lampp/htdocs/roundcube
と1つずつ実行しました
さらに、設定ファイル、ログの書き込みのため
所有権を変更
cd /opt/lampp/htdocs/roundcube/
chown -R nobody temp
chown -R nobody logs
ここまで完了したら、次にデータベースを作成します
続きは明日以降になります