Android アプリ作成(ボタン表示編)その2

引き続き、ボタン設定の続きです
今回は、作成したボタンの設定をかえてみます
ボタン作成については
Android アプリ作成(ボタン表示編)
に箇条書きでメモってますので
参考にしてください
ボタンのレイアウトを変更するため、
XMLを変更します
現在、初期の状態では
Layout height
つまり、ボタンの高さ
そして
Layout witdh
ボタンの幅
の設定が
wrap_content
になっています
このwrap_content
文字のサイズに合わせて、自動でサイズ調整する
という意味になります
これを画面の幅に合わせるようにするには
fill_parent
に変更します
変更の方法ですが
Graphical Layout を使う方法と、
main.xml を編集する方法があるのですが
Grahical layout を使って
表示されているボタンの上で 右クリック > Properties > fill_parent
となるはずですが
私の環境ではできなかったので
直接 main.xml
を編集しました
main.xml のなかに
%lt;Button android:id=”@+id/Button01″ android:text='”ぽちっとな (笑)”‘ android:layout_width=”wrap_content” android:layout_height=”wrap_content“>
という部分がありますので
この wrap_content を fill parent へ変更します
%lt;Button android:id=”@+id/Button01″ android:text='”ぽちっとな (笑)”‘ android:layout_width=”fill_parent” android:layout_height=”wrap_content”>
これで、ボタンの横幅が文字ではなく
画面の大きさに合わせたものに変わります
また、サイズ指定も可能です
%lt;Button android:id=”@+id/Button01″ android:text='”ぽちっとな (笑)”‘ android:layout_width=”100px” android:layout_height=”wrap_content”>
というようにすれば、サイズも指定できます

Android アプリ作成(ボタン表示編)

こんどは、ボタンの表示についての勉強です
前回は、文字の表示の変更でした
今回は、ボタンを配置します
前回、使用した main.xml ファイルにある
<TextView
android:layout_widh=”fill_parent”
android:layout_height=”wrap_content”
android:text=”@string/hello”
/>
の部分を削除します
ちなみに、この意味ですが
fill_parent は画面と同じ幅で文字を表示
wrap_content で高さを自動的に調整
@string/hello で string.xml のhello の値を画面に表示
となります
では、今回のボタンの配置になります
XMLを記述するという方法もありますが
残念ながら、面倒でもあり、そもそもXMLを理解できていないため
GUIで操作できる
Graphical Layout を使い、Buttonをドラッグ&ドロップし
右側にある画面に配置します
これはIDEなどでアプリを作るときによく使います
このパズルのような画面と、ソースコードがリンクしているので
このパズルのような画面に部品を
ドラッグ&ドロップで配置すると
main.xml の中にもXMLのソースが自動的に記述されます
この追加したボタンのうえで右クリックし
Show in > Properties を選択すると、プロパティを出せますので
この中の値から、Text を探し、
Value のところに好きな文字を記述します
英語でなら問題ないのですが
日本語の場合、value に記述するときには
“” で囲みましょう
<例>
“このボタンを押しましょう!!”
これで、文字を変更したときのように、
実行をすれば、ボタンを配置したアプリが起動します

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

ひきつづき Android プログラミングの勉強です
アプリの画面レイアウトには
XMLをいじる
もしくは
javaソースコードを改造する
のどちらかを使います
今回は、XMLをいじります
Eclipse の左側にある
Package Explorer を最大化し
プロジェクト名 > res > layout >
main.xml というファイルをダブルクリック
その main.xml の中に
android:text =”@string/hello”
という文があります
この意味は、res ディレクトリの中の
values の中にある string.xml を参照し
hello 属性の値を読み込む
ということになります
このことから
string.xml で表示する文字を管理
main.xml でどこに表示するか決定
Activity に反映
というのが文字表示の流れになっています
極端な話、
プロジェクトでできたアプリの文字列を変更したいなら
string.xml の中の
<string name=”hello”> Hello world testr Activity </string>
のタグの中の部分を
<string name=”hello”> アンドロイド実験です </string>
というよにタグの中を表示したい文字にするだけで変更可能です
あとはこれを保存し、実行すると変更が反映されます
また、アプリの名前を変更するには
<string name=”app_name”> test</string>
のタグの中のtest の部分を 好きなアプリ名に変更することで
アプリ名を変更できるようになります
たとえば、
<string name=”app_name”>実験アプリ</string>
とすると、アプリ名が実験アプリになります
このように、固く考えず
まずはソースの改造くらいから行うと
おもしろく開発できるようになっていくと思います

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を使っての編集
にいろいろなパターンが載っていましたので
これらを使ってスクリプトを作っていこうと思います