スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[AWS]とりあえずスゲぇ

AWSとお付き合いすることになったので
ちょっと仕事とは関係ないところでネタが出せたら書いていこうかなと。

詳しいことは弄りながら書いていきたいけど
とりあえず感動したので久々にブログ更新~

で、導入として無料アカウントを取得してこれ読み進めてみた

Amazon Web Services基礎からのネットワーク&サーバー構築


感想としては「うん、とりあえずスゲぇ」

前から自宅サーバーには興味あったんですけど
遊ぶだけならこれで良いじゃんって。

AWSに興味あるけど何から始めたら~みたいな方は是非どうぞ。
スポンサーサイト

Windows8でMP600のスキャナを使う

Windows8の64ビット版に乗り換えたところ
愛用しているPIXUS MP600のドライバがありませんでした。
公式にもサポート対象外みたいです。

でもWindows7向けのがあるので、これで大丈夫だろうと入れてみたら、スキャナが使えない。
プリンタはいけるんですけど、スキャンしようとするとスキャナがないといわれる感じ。

アナログで下絵を描くのでこれは困ると、探したらMP610のWin8ドライバはありました。
ほとんど変わらないだろうということで入れてみたら、なんかうまくいったみたい。

ウチだけかもしれないけど、同じ状況になったひとのために
一応自分がやった手順を書いておきます。

※もちろん動作保証外

①MP600のドライバ(Win7用)を入れる
②プリンタが追加されたら、MP610の(Win8用)ドライバを入れる
③コントロール パネル>ハードウェアとサウンド>デバイスとプリンター
④MP600の「プリンターのプロパティ」を開いて、詳細設定のドライバでMP610を選択

これで無事スキャンできました。
よかた。

余談ですが、Windows8はそこそこ使いやすいと思います。
マルチモニタ環境では特に。
ま、少なくとも7より面白いOSです。

more...

theme : 自作パソコン
genre : コンピュータ

[Trac]Trac0.12のCommitTicketUpdaterでもコミットファイル列挙

今更ですがTrac0.12からマルチリポジトリに対応してるので
バージョンアップしようかな…とTracLightning3.1.3を入れてみたところ
post-commit-hookスクリプトが無くなってました。

でもrefsコマンドは動きます。
どうやらSVN連携はプラグインになったらしいです。(これも今更?)
trac 0.12.xの↓が有効なら動作します。

commit_updater

正確にはSVNのhookスクリプト(hooks/post-commit.bat)でチェンジセットを追加して
IRepositoryChangeListenerを実装したUpdaterがイベントを受け、コミットメッセージからコマンドを見つけて、チケットを更新する流れのようです。

また、マルチリポジトリでは複数のリポジトリを登録するので
当然リビジョン番号がかぶりますが

[リビジョン/リポジトリ名]

という形式で書くと、CommitTicketReferenceMacroによって
きちんとリポジトリ別にリンクが張られます。
CommitTicketUpdaterはこのあたりも勝手にやってくてれるので便利。
マルチリポジトリ環境でも、この情報の通りにhookスクリプトを用意すればOKです。
ちなみに、今まで通りの[リビジョン]では、デフォルトリポジトリ(廃止予定らしい)へのリンクになります。

で、以前[Trac]trac-post-commit-hookでコミットファイル列挙てなことを書いたので、
今回も一応、簡単ですが変更ファイルの列挙くらいはしてみようと思います。

今回変更するのは一カ所、上記プラグインのスクリプトだけ変更します。(バージョンは読み替えてください)

%TRAC_HOME%/python/Lib/site-packages/Trac-0.12.2.ja1-py2.6.egg/tracopt/ticket/commit_updater.py

チケットに書き込むコメントを変更します。(水色のところだけ変えてます)

def make_ticket_comment(self, repos, changeset):
"""Create the ticket comment from the changeset data."""
revstring = str(changeset.rev)
if repos.reponame:
revstring += '/' + repos.reponame

# チェンジセットから変更ファイルを取得して列挙
files = ''
for npath, kind, change, opath, orev in changeset.get_changes():
files += change + ':' + npath + '[[BR]]'


return """\
In [%s]:
{{{
#!CommitTicketReference repository="%s" revision="%s"
%s
}}}
%s
""" % (revstring, repos.reponame, changeset.rev,
changeset.message.strip(), files)


おおざっぱですがこれだけです。
SVN連携の動きを変えたければ、このスクリプトを弄る感じですね。

theme : ソフトウェア
genre : コンピュータ

[Java][Eclipse]EclEmmaのJaCoCoが気になる(C1カバレッジの巻)

前のエントリーの続きです。
JaCoCoについて、もう少し掘り下げ。

■C0に加えてC1の計測が可能

EMMAはC1が計測できませんので、これは非常にありがたい。
カバレッジは通れば良いって物ではないので、ラインカバレッジだけでは、テストの妥当性を検証するには不十分ですよね。

具体例です。例えば下記のような酷く単純なコード

boolean conditionA = true;
if(conditionA)
{
  System.out.println("done!");
}


JaCoCo(EclEmma2.1.2)で実行すると以下のような結果になります。JaCoCoレポートで出しても同じ。

c1_new.png

ちなみにEMMA(EclEmma1.5.3)だとこうなります。JaCoCoとEMMAの黄色ラインは意味合いが異なってますね。
emma.png

で、黄色のラインにカーソルを合わせると、「1 of 2 branches missed.」と言われます。
条件がfalseのelse分岐(コード上にないけど)が実行されていないからですね。

と、ここで注意。
ドキュメントでも言及されていますが、JaCoCoはバイトコードに対して計測するため、コンパイラによって生成されたバイトコードが、ソースと大きく異なっている場合に、ぱっと見で分かりづらい結果になる可能性があります。
たとえば

boolean conditionA = true;
boolean conditionB = false;
conditionA = !conditionB;


を実行すると、このようになります。
JaCoCoカバレッジ②
「1 of 2 branches missed.」!!

あれ?っと思い、JaCoCoのOpen Discussionで質問してみたところ、「バイトコードに対して計測するのでそうなります」との回答。お手数おかけいたしました(^^;)
てことで自分でも調べてみたところ、Jadで逆コンパイルしてみるとバイトコードでは


0:iconst_1    true(1)をスタックに入れる
1:istore_1     true取り出してローカル変数1に入れる
2:iconst_0     false(0)をスタックに入れる
3:istore_2     false取り出してローカル変数2に入れる
4:iload_1      ローカル変数1をスタックに入れる
5:ifeq   18   ローカル変数1がfalse(0)なら、18へ→return
8:iload_2      ローカル変数2をスタックに入れる
9:ifeq   16    ローカル変数2がfalse(0)なら、16へ
12:iconst_0      falseをスタックに入れる
13:goto    17   17へ
16:iconst_1     true(1)をスタックに入れる
17:istore_1     スタックから結果(trueかfalse)を取り出してローカル変数1に入れる
18:return      終了


となっていました。(言葉はつたない自分翻訳)
条件文が二つに分かれている…、コンパイルするとこうなるなんて知りませんでした。。

大まかにコードにするとこんな感じみたい。

boolean conditionA = true;
boolean conditionB = false;

if(conditionB) // 2branches
{
   conditionA = false
}

てなわけで、こういったこともあるので気をつけましょう。
て、みんな知ってるのかな…
よくよく見たらEMMAもそうみたいですね。C1ではないけど。

more...

theme : ソフトウェア
genre : コンピュータ

[Java][Eclipse]EclEmmaのJaCoCoが気になる

EclEmmaに関連して書いたJaCoCoについて、少し分かってきたのでメモ的なまとめ。
使い方などは公式ドキュメントが詳しいのでいいとして、このエントリはどちらかというと自分なりの解釈込みの周辺情報です。
# 間違ってたらコメントいただけると助かります。

JaCoCo -Java Code Coverage Library
http://www.eclemma.org/jacoco/trunk/index.html

■JaCoCoってどんなの?
JaCoCoはEclEmmaの開発チームが、EMMAを置き換えるためのカバレッジライブラリとして
開発を進めてきたものです。
今までも単体で利用できましたが、EclEmma2.0で晴れて組み込まれました。

ドキュメントをつらつら読んでみたのですが。
既存のカバレッジライブラリは拡張性が乏しく、すでにメンテされていないEMMAを使い続けるよりは
自分たちで拡張や統合が容易な物を作っちゃお、という事になったようです。
JaCoCoは、Antタスクでの実行、Mavenプラグインなどのフレキシブルな運用を可能にし、
バックエンド技術として、もちろんEclipseプラグインとしてEclEmmaで使うことも目的としています。

■個人的に抜粋した特徴
  • C0に加えてC1(ブランチカバレッジ)の計測が可能
  • Javaバイトコードに対して計測(別エントリでもう少し詳しく)
  • サイクロマチック数の計測
  • HTML,XML,CSVでのレポート出力
  • Antタスクとしての実行
  • EPL(…これはいいか)
C1の計測とAntタスクは利用価値高いですねぇ。
サイクロマチック数は実装者への戒めでしょうか…

■計測方法(JaCoCoだけで)
EMMA同様、クラスファイルに計測用のコードを埋め込んで実行という形をとるようですが、
javaagentを利用したon-the-fly方式を採用することで、バイナリに直接埋め込むのではなく、メモリ上にクラスをロードする際に前処理を挟んでいるようです。(Pleiadesと同じ感じ。)
EclEmma1.5以前まで存在していた、In-place計測もなくなっていました。

実行データの出力は、リモートへの出力などいろいろな形式があるようですが
よくわからないので、今回は単純にローカルファイルに書き出します。

・実行方法
引数に-javaagentを指定する形です。
こちらからjacocoagent.jarを入手して下さい、zipを解凍すると入っています。

・実行例

java -javaagent:jacocoagent.jar %あとは実行クラスやらクラスパスやら%

引数はとりあえずナシで…^^

するとJVM終了と同時に以下のファイルが出てきます。

jacoco.exec

これが結果みたいです(EMMAでいうecもしくはesファイルかな)
でも中身は理解できる形のものではありません。

■レポート出力(JaCoCoだけではむりっぽい)
そこでレポート出力ですが、JaCoCo単体では出力が難しいみたいです。
Antタスクで出すか、EclEmmaに上記結果をインポートして出力するのが無難っぽいです。

一応、JaCoCoのソースも見てみましたがJaCoCo単体でレポートを出す方法はみつからず。
でもAPI Usage Examplesに、サンプルとしてこんな物がありました。
http://www.eclemma.org/jacoco/trunk/doc/examples/java/ReportGenerator.java
検証してないけど使えそう。
execファイルをプロジェクト直下にもってくる必要はありそうですね。

以上、とりあえず今回は概要と計測、レポートの出力について書きましたが
別エントリーでもう少し書いていきます。


☆余談
全然関係ないけど、最近きゃりーぱみゅぱみゅが気になってしょうがないです。
ぽーんぽーんうぇいうぇいうぇい♪ぽんぽんうぇいぽんうぇいぽんぽんっ♪

theme : ソフトウェア
genre : コンピュータ

自己紹介

煩悩即菩提

Name:煩悩即菩提


三流SEです。
開発は基本Javaです。
Androidアプリ作り隊。。

お絵かきを少々しとります。
こちらもぱっととしないのが悩みです。

bonnosokubodaiをフォローしてください

Pixivアカウント

カレンダー   
Recomend


ビデオニュース・ドットコム
検索フォーム
最新記事
最新コメント
月別アーカイブ
カテゴリ
最新トラックバック
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。