Hack the World!

プログラミングや,ネットワークに関する話題を取り扱っています.知識をつけて,優雅にお仕事するのを目指しています.

時間が立つのはとても早いですね。
前回のブログから2ヶ月立ってました。

もうちょい豆に更新したい所
11月から少しずつ時間はできているのですが、いかんせんPJ立ち上げと、溜めてきた業務系のお仕事、勉強の方に余力を咲いています。

もうちょいしたらまたまじめに書けると思います。

最近興味持ってるのは以下のとおり


上から順番に興味が有るんだけど、下から手をつけてますw

お楽しみに

書評:「独習Linux専科」サーバ構築/運用/管理――あなたに伝えたい技と知恵と鉄則

*1

最近メンバーの面倒を見ること?(と言うよりも横槍を入れること)も多くなってきたのだけども、
自分の稼働も非常に高く死にかけているので、本を買って投げつけてお茶を濁そうとしていたところ、
以下の様なツイートを見かけたので応募してみた。





雑感

                                        • -

確かにLinuxのプロフェッショナルとしてやっていく上で必要なコマンドが網羅されており、
以下の内容間違いなしな内容となっています。

「プロのためのLinuxシリーズ」へとステップアップすることを目指した内容

railsにも軽く触れていて、Webサーバを立てて簡易でセキュリティ対策のされたサービスを作る物の第一歩として使えるかな、と考えています。


続いて、この本の参考文献の書籍を読んだり、それぞれの詳細を追っていき、その上でプロのためのLinuxシリーズにようやくたどり着けると思います。
この本のいいところは、「必要なステップを網羅していること」ですね。

Hello,World!で構わないので、自分でWebサーバを立ててHTMLを公開し、
Webアプリケーション化していくステップが書かれている事がいいと思います。



惜しむらくは、タイトルには構築/運用/管理と書いてあるけど、
運用管理の所はちょっと弱いかな。
大規模サーバ群ならそれ用のツールがあるけど、小規模だとどうしてるんだろう?
どういう問題にみんな詰まるんだろう?

というところにエクスキューズした本も読んでみたいですね。


Linux関係の本は多いのだけども、この本なら投げつけても大丈夫かな?と感じました。



要望

                                        • -
  • ifconfig はもう古いので、iproute2を標準にしませんか?(中身は書き換わってますが)
  • もう少しスクリプティングに力を入れていただけるとメンバーの教育がはかどります。
  • WinSCPじゃなくて、Filezillaとかにすれば、Macとかでも行けますね。




感慨

                                        • -


そういえば、私もそろそろLinux歴が10年を迎えました。
大学の12回の講義と自分の家のマシンをルーター化する為に買ったRedhat本(CD2枚組付き、3000円)
Javascriptに躓いた高校生のあの頃に、HTMLをftp転送なんかをやっていたのは、今思えばいい経験でした。
あの頃にこういう書籍があれば、また違ったのかもしれない。





リンク

                                                                                        • -

著者の中居さんのブログ記事
http://d.hatena.ne.jp/enakai00/20130808/1375926997


技術評論社さんの書籍紹介ページ
http://gihyo.jp/book/2013/978-4-7741-5937-9


次回の日記には、最近私が取り組んでいた社内ネットワークやら、サーバやらを書こうかな。
プロジェクト側はお客様の情報が言わなきゃいけないのでダメだけどね!

他にも本でまとまった知識でも仕入れようかと、Software Designやらを買いあさってみたりとしてるので、
面白そうな記事やらあれば、紹介します。

*1:アイキャッチャーな画像は、CC BY-SAライセンスに基づいて利用しています。オリジナル画像

生還報告

twitter にはちょっと前から顔を出しておりましたが、
2年間のデスマがそろそろ終わりを迎えそうなこともあり、多少心の余裕が出来てきたこともあり、
ここに生還報告をさせていただきます。

本を書かせていただいたのがちょうど1年前なんですね。

ここ1年、ろくに外部の情報を仕入れることができていなかったのですが、
Androidも4.4Kitkatが発表されたり、docomoからiPhoneが発売されることになったりと、
色々と変化があったみたいですね。

最近のトレンドに疎いのですが、また細々とブログや勉強会、執筆等やらせていただこうと考えております。


最近はネットワークの開発なんかもやっており、ここに書いていたようなAndroid以外の話題なんかも扱っていこうかと考えています。
Openflowなんかでソフトウェア業界とネットワーク業界の境目の再定義なんかが起こりつつあって、またエンジニアリングが楽しくなりそうですね!


皆様の一助になれば幸いです。




2013年9月14日 みやび

Android UIAutomatorTestCase その3

2012/11/16 追加: ビルドまでは完了
2012/11/28 追記: 動きました!


4.2が出た所?で、ドキュメントもいつの間にか変わってました。

http://developer.android.com/intl/ja/tools/testing/testing_ui.html
http://developer.android.com/intl/ja/tools/help/uiautomator/index.html

改めて、紹介すると、HierarchyViewer と MonkeyRunner と似たような位置づけ、という理解でいいようです。
但し、前回も述べたように、MonkeyRunner とはそもそもの仕組みが違うので、
ケースバイケースで使い分けでしょうか?


で、API Level 16 / SDK r21 から使えるよ!とのことです。

                                                                                                  • -

上のドキュメントを要約しておくと、以下のとおりになります。

概要
 アプリケーションのテストとは、Activityだけでは充分ではなく、ダイアログやメニュー等もあり、
 機能テストだけでは充分ではありません。
 機能を操作するのではなく、UIから操作する必要があります。

 機能テストにしても、UIテストにしても、「ブラックボックステスト」を行う場合は
 プログラムの中身に精通している必要はありません。
 適切に役割を分割し、開発をすることで恩恵を受けられます。
 
 しかし、MonkeyRunnerの様な(とは書いてませんが)、形のテストツールでは
 実行のタイミングなどにより、エラーになってしまいます。
 本ツールでは、テストフレームワークを用いたシナリオをベースにしたテスト方法を提供します。

 本ツールを利用して、様々な解像度のテストや、着信や別アプリなどの遷移を行うようなテストを実行する事で
 最大限のメリットを得ることができます。

注意点
 Text Label または、Contents Description 等を元にアクセスをします。
 uiautomatorviewer (Eclipseデバッグからも起動可能)を元に、上記の値を確認・実装しましょう。


uiautomatorviewer に関しては、特に説明するまでも無さそうなので説明は割愛します。

                                                                                                  • -
  1. Eclipse の設定
  2. テストの記述
  3. テストのビルド
  4. テストの実行
                                                                                                  • -

1. Eclipse の設定

Java プロジェクト」を作成し、以下のような設定をします。

Junit3 は、Add Library から
android.jar と uiautomator.jar は、自分の対象とする端末のバージョンに依存します。

ANDROID_SDK のディレクトリから、platforms/android-[api level] 等のディレクトリから選択してください。


2.テストの記述

UIAutomatorTestCase : JUnit同様のテストケースクラス

                                        • -

UIDevice : MonkeyRunner に似た感じの、端末自身を操作する為のクラス
UISelector : UIを指定する際に使うクラス
UIObject : UI のパーツを表すクラス
UIScrollable: スクロール可能なUIパーツを表すクラス
UICollection: 子要素を持つようなUIのパーツを表すクラス

                                        • -

サンプルも乗ってますが、とりあえずは動かす所を目標に持って行ってみましょう。
以下のHOMEボタンを押したり、システムプロパティを持ってくるサンプルを動かしてみましょう。

import android.app.Activity;
import android.os.Bundle;

import com.android.uiautomator.core.UiDevice;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;


public class SampleUITest extends UiAutomatorTestCase {
void testSample(){
UiDevice d = getUiDevice();
d.pressHome();
Bundle status = new Bundle();
status.putString("msg", "This is a demo test and I just pressed HOME");
status.putString("product", getUiDevice().getProductName());
status.putInt("dp-width", d.getDisplayWidth());
status.putInt("dp-height", d.getDisplayHeight());
getAutomationSupport().sendStatus(Activity.RESULT_OK, status);
}
}


3.テストのビルド

android uitest-project コマンドを使うようですが、まだ機能していないようです?
また試して再度掲載します。

テストのビルドは、ant を利用して行います。

android uitest-project コマンドを利用すると、build.xml が生成されるので、
この build.xml を利用して、ビルドを実行します。

android uitest-project -n -p -t

Target ID は、android list コマンドで取得します。
api レベル16以上のターゲットを選んでください。

Jenkins を利用すると、以下の様な設定になります。

export PATH=/var/lib/jenkins/tools/android-sdk/tools:$PATH
export PATH=/var/lib/jenkins/tools/Ant/ant-1.8.3/bin:$PATH
android create uitest-project -n SampleUITest -p . -t 28
ant build

4.テストの実行

前回の通り、adb push を利用して転送し
コマンドから実行します。
引数が若干増えてます。


$ adb shell uiautomator runtest test.jar -e class SampleUITest
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
INSTRUMENTATION_STATUS: class=SampleUITest
INSTRUMENTATION_STATUS: stream=
SampleUITest:
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=testSample
INSTRUMENTATION_STATUS_CODE: 1
INSTRUMENTATION_STATUS: dp-height=480
INSTRUMENTATION_STATUS: product=google_sdk
INSTRUMENTATION_STATUS: msg=This is a demo test and I just pressed HOME
INSTRUMENTATION_STATUS: dp-width=320
INSTRUMENTATION_STATUS_CODE: -1
INSTRUMENTATION_STATUS: current=1
INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
INSTRUMENTATION_STATUS: class=SampleUITest
INSTRUMENTATION_STATUS: stream=.
INSTRUMENTATION_STATUS: numtests=1
INSTRUMENTATION_STATUS: test=testSample
INSTRUMENTATION_STATUS_CODE: 0
INSTRUMENTATION_STATUS: stream=
Test results for UiAutomatorTestRunner=.
Time: 1.665

OK (1 test)


INSTRUMENTATION_STATUS_CODE: -1

画面の高さなどを取得して、コマンドライン側に受け渡すことに成功しました。


@nowsprinting さんにさき越されてました。

http://nowsprinting.hatenablog.com/entry/2012/11/22/235609
http://nowsprinting.hatenablog.com/entry/2012/11/23/163729



                                                                                                  • -


上記の手順で行うのが正式な手順のようです。
この手順なら、Jenkins との連携も可能ですね。



と、言うわけで、あんまり進んでないですが、ToDo更新
・テストの詳細な書き方。
 # 別に難しい所は無さそうですが
・MonkeyRunner(Easy)との速度比較
・Jenkins

android-4.2_r1 が出たところで

http://d.hatena.ne.jp/graceful_life/20121104/1352061639 の続き

                                                            • -

追っかけるかどうかは別にして、面白そうだなー。
というライブラリ郡をピックアップしてみた。

                                  • -

■ゲーム系

platform/gdk
platform/external/jmonkeyengine
platform/external/mesa3d

■セキュリティ系

platform/system/security
platform/external/libselinux
platform/external/libsepol
platform/external/sepolicy


■テスト系

platform/external/hamcrest
JUnit のサポートライブラリ
英語で書くような書き方をサポートしてたりするらしい。

platform/external/linux-tools-perf
linux 用の性能評価ツール


platform/external/littlemock
platform/external/mockwebserver
モック系?


platform/external/stressapptest
からっぽだった・・・

■その他

platform/external/jmdns
platform/external/mdnsresponder
AppleBonjour のライブラリ
ネットワーク上のサービス探せる!



platform/external/zxing
QR コードリーダー?


platform/external/markdown
テキストマークアップ


platform/packages/apps/LegacyCamera
Legacy があるなら、NewGenerationもあるのかしら?

                                  • -

gradle のビルドもサポートしそうだし、そこら辺は結構気になってる。
ブログにメモって置くと後々調べるとき便利だね。

しかしさて、UIAutomatorTestはどうなったのだろうか?
ログ見てみても大きな変更は無さそうなんだけども

Gerrit 2.5 Release

掲題、Gerrit 2.5がリリースされてました。

http://code.google.com/p/gerrit/

どこかで書いていたと思いますが、2.5からプラグインの機構が採用されています。
インストーラーにもプラグインのインストールの手順が追加されていました。
(とりあえず、レプリケーションですが。。。)

Plugins ***

Prompt to install core plugins [y/N]? y
Install plugin replication version 1.0 [y/N]?

                                                                                  • -

Submit のルールも決められるようになったようですね。
Prologで!)

http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/prolog-cookbook.html


                                                                                  • -


と、普通の人が着目するのはAPIのところでしょうか

http://gerrit-documentation.googlecode.com/svn/Documentation/2.5/rest-api.html

時間ができたらちょっと触ってみましょうか。

Android 4.2 のGPLソースが公開されてました。

前回の日記で、差分通知ジョブを実行させたおかげで変化に気づいたりしました。
ので、ちょっと新しく追加?されたプロジェクト達の一覧を整形して見てみました。

                                                            • -

device/generic/armv7-a
device/generic/armv7-a-neon
device/generic/goldfish
platform/abi/cpp
platform/external/aac
platform/external/android-clat
platform/external/android-mock
platform/external/ant-glob
platform/external/antlr
platform/external/apache-harmony
platform/external/apache-xml
platform/external/arduino
platform/external/checkpolicy
platform/external/chromium-trace
platform/external/cibu-fonts
platform/external/clang
platform/external/compiler-rt
platform/external/dexmaker
platform/external/doclava
platform/external/eclipse-basebuilder
platform/external/eclipse-windowbuilder
platform/external/eyes-free
platform/external/fat32lib
platform/external/flac
platform/external/ganymed-ssh2
platform/external/gcc-demangle
platform/external/google-diff-match-patch
platform/external/hamcrest
platform/external/jack
platform/external/javasqlite
platform/external/javassist
platform/external/jmdns
platform/external/jmonkeyengine
platform/external/liblzf
platform/external/libnl-headers
platform/external/libphonenumber
platform/external/libselinux
platform/external/libsepol
platform/external/libyuv
platform/external/linux-tools-perf
platform/external/littlemock
platform/external/llvm
platform/external/lohit-fonts
platform/external/markdown
platform/external/mdnsresponder
platform/external/mesa3d
platform/external/mksh
platform/external/mockwebserver
platform/external/naver-fonts
platform/external/okhttp
platform/external/opencv
platform/external/openfst
platform/external/openssh
platform/external/ping6
platform/external/regex-re2
platform/external/replicaisland
platform/external/sepolicy
platform/external/smali
platform/external/srtp
platform/external/stressapptest
platform/external/tinyalsa
platform/external/webrtc
platform/external/wpa_supplicant_8
platform/external/zxing
platform/frameworks/av
platform/frameworks/compile/libbcc
platform/frameworks/compile/linkloader
platform/frameworks/compile/mclinker
platform/frameworks/compile/slang
platform/frameworks/mff
platform/frameworks/ml
platform/frameworks/native
platform/frameworks/opt/calendar
platform/frameworks/opt/inputmethodcommon
platform/frameworks/opt/mailcommon
platform/frameworks/opt/mms
platform/frameworks/opt/telephony
platform/frameworks/opt/vcard
platform/frameworks/rs
platform/frameworks/support
platform/frameworks/testing
platform/frameworks/wilhelm
platform/gdk
platform/hardware/akm
platform/hardware/invensense
platform/hardware/ti/omap4xxx
platform/hardware/ti/wpan
platform/libnativehelper
platform/packages/apps/BasicSmsReceiver
platform/packages/apps/CellBroadcastReceiver
platform/packages/apps/Exchange
platform/packages/apps/Gallery2
platform/packages/apps/KeyChain
platform/packages/apps/LegacyCamera
platform/packages/apps/MusicFX
platform/packages/apps/SpareParts
platform/packages/apps/VideoEditor
platform/packages/providers/PartnerBookmarksProvider
platform/packages/wallpapers/Galaxy4
platform/packages/wallpapers/HoloSpiral
platform/packages/wallpapers/NoiseField
platform/packages/wallpapers/PhaseBeam
platform/pdk
platform/prebuilts/eclipse
platform/prebuilts/misc
platform/prebuilts/ndk
platform/prebuilts/qemu-kernel
platform/prebuilts/sdk
platform/prebuilts/tools
platform/system/security ---
platform/tools/motodev

                                                            • -

色々あって追い切れない、というのが正直なところなのですが、
後で簡単に見てみましょうか。

とりあえず、感じたのが
selinux やらのセキュリティのところとか
・ping6 とかのIPv6対応
・jMonkeyEngine で3D系
・ganymed-ssh2 は何に使うんだろう?

以下はテスト系かな?
・stressapptest とかも興味深い
・mockwebserver

gdkって前からあったかな?game development kit だったりして