30 Sep 2012, 12:48

JenkinsにWarning Plugin/Task Scanner Pluginを入れる

Jenkinsのコード分析のためのプラグイン2つを入れてみたので、

こんなかんじだよというのを紹介。

  • Warning Plugin
  • Task Scanner Plugin

Warning Pluginで、コンパイルエラーを早期検出する

Warning Pluginは、コンパイラが吐き出すエラーをJenkinsで表示するプラグイン。

いろんなコンパイラに対応している。

設定画面

image

出力結果はこんな感じ。

image

Task Scanner Plugin でやり残しを見逃さない

よく自分はあとでやることはソースに、TODOと書くことが多い。

また、バグを作りこんでしまった場合は BUGBUGと書くことが多い。

Task Scanner Pluginを使うと、

そんなような、決まったキーワードを検索して、表にまとめてくれる。

このことによって、タスクをやり残すことを防ぐことができる。

設定画面

image

出力結果

image

まとめ

ここで紹介したものはEclipseを使っていれば、

特に必要ないかもしれない。

でも、Jenkinsを使って見えてくる視点、それは

時間軸での変化

これがワカルのである。

30 Sep 2012, 05:19

親指シフトでPC入力効率を爆速化!~ようやく効果を感じ始めた私の体験談~

自分は一年前からコツコツと親指シフトをマスターすべく続けてきたが、

最近親指シフト入力とローマ字入力の入力速度を計測したところ、

親指シフトの方が速かったので、体験談や効果を交え、記事にしてみた。

(会社の自席で使っているMy親指シフトキーボード)

はじめに

PC作業を効率的にこなすにはなにが必要か?

ショートカットを覚える?バッチやマクロを組む?まぁ、それも大事だ。

しかし、一番効率的な方法は、タイピング速度を上げることである。

それでは、タイピング速度を上げるためにはどうすればよいか?

あまり知られていないが、とても効果的な方法がある。

それは、

親指シフト

である。

親指シフトとはなにか

今ではPC入力の方法としては、ローマ字入力がほとんどだろう。一般的なキーボードには、かな入力のためのひらがなが振ってあるので、かな入力も知名度が高い。しかし、ローマ字入力やかな入力とは違う、第三の入力方法が存在する。それが、日本語入力のために開発された親指シフト入力である。

親指シフトは日本語を効率的に入力するために開発された、入力方法だ。

親指シフトをつかうと、理論上はローマ字入力の

1.7倍

の入力速度を身に付けることができるらしい。 その秘密は、キーボード配列にある。下の左右に配置された親指シフトと他のキーを組み合わせることによって、どのひらがなでも、1打鍵で入力できるのだ。ローマ字入力が2打鍵必要なことを考えると、納得のいく効果である。

親指シフトに必要なフリーソフト、『やまぶき』の紹介

親指シフトに専用のキーボードは必要ない。

フリーソフトのエミュレータ、やまぶきを利用すれば、

どんなWindowsPCでも親指シフト利用可能だ。

(ダウンロードはココから)やまぶき作ってます

インストールしたあとは、[設定]から[配列定義ファイル]を選択する必要がある。

image

配列定義ファイルは \layout\配下にある。

いろいろと種類があるのだが、

標準的そうな NICOLA.yab を選択する。

これで準備完了。あとは親指シフト入力表を印刷して壁に貼り付け、

ひたすら練習するのみだ。

親指シフト入力表は以下のリンクから参照できる。

親指シフト配列はココから

親指シフトの体験談をツラツラと

まずは半年間であいうえおをマスターする

親指シフトを知ったのは、勝間氏の書籍だった。

 

親指シフトの存在を調べていき、身に付けるのは大変そうだけれど、

将来もずっとパソコンと関わっていくことを考えると、

今の時点で親指シフトに乗り換えたほうがよいと判断した。

はじめは、1日5分、『あいうえお』からひらがなを覚えていった。

なんだか小学生のころに戻ったような懐かしい感じだ。

ときどきサボったり諦めたりしながらも3,4ヶ月かかって、

ひと通りの文章を打てるようになった。

続く2ヶ月はひたすらに『走れメロス』の冒頭を写経した。

半年くらいかけて、ようやくブラインドタッチマスターだ!(=^_^=)

仕事での導入・・・非生産性をコソコソと隠す日々

日常や仕事で親指シフトを導入するのは、

ある程度の速度を出せるようになってからを考えていた。

なので、6ヶ月経った当たりで、仕事に親指シフトを導入した。

すると、仕事の効率が半分になった。(T◯T)

周囲にはひた隠ししていたが、親指シフトで生産性が半分になっていたら、

会社としてはいやな社員だとおもう。

そんな周囲の目に耐えながらも、コソコソと親指シフトの修行を積んでいたある日、

後ろの席を振り返ったら、なんと後ろに座っていた人が親指シフトを使っていた。

(親指シフトキーボードを使う人を、親指シフターという)

今の自席に座っていて2年以上経ったが、いままで気付かなかった自分にびっくりした。

さっそく話しかけたところ、

『あー,君は若いのに親指シフトつかってんだー』

と、たいへん嬉しそうな顔をされた。

そして、親指シフトキーボードをあげるよーと言われた。

目の前のロッカーを開けると、

そこには親指シフトキーボードが3台転がっていた。(\(◎o◎)/ マジデフカ!)

 

さらには、ほらよといわれて、

親指シフト専用IMEの『Japanist』をくれた。(\(◎o◎)/ マジデフカ!)

 

なんというミラクルありえない展開!!

かくして、親指シフトキーボードを手に入れた自分は、 それから非生産的な仕事ぶりを発揮しつつ、 その後半年をかけて親指シフトをマスターしたのだった。

JapanistもNICOLA親指シフトキーボードもいらない

Japanistも親指シフトキーボードも必要ないというのが、自分の所感だ。

Japanistは試してみたが、GoogleIMEの方が単語予測が優れているので、結局、仕事でもプライベートでもGoogleIME + やまぶきの組み合わせに落ち着いている。

また、専用親指シフトキーボードもあってもなくても、関係ない。

個人的には、親指シフトキーボードはデザインがダサいので・・・hogehoge(放送禁止用語)だ。価格も普通のキーボードより高い。

参考リンク

 

23 Sep 2012, 12:53

C言語/C++でJenkins実践入門してみるよ

最近継続的インテグレーション(CI)に興味を持ったので、

Jenkinsの日本での初めての入門書である、Jenkins実践入門を読んでみた。

内容はとても興味深いものの、残念、JAVA中心で述べられていた。...┌(´_`)┐

C言語つかいの自分としては、C/C++でのツールの情報が欲しいところだ。

Jenkins実践入門目次チラ見せしちゃいます

C言語でJenkinsをハック!継続的インテグレーションだぃ

というわけで、この本で紹介されていることを、

C言語/C++でしようとするとどうすればいいのかを調べてみた。

目次に対応させると、以下のような感じ。

CheckstyleとかSonerはもしかしたらC/C++でも使えるのかな?

調査不足でバタンキュ~ツꀀ σ/〇\

 

image

参考リンク

23 Sep 2012, 12:08

CPDでsaxon9-dom.jarがないよと怒られる

PMDの最新版、pmd-bin-5.0-alphaを落としてきて、

それに付随するCPDを使ったところ、エラーした。

フェーマット出力で XML出力ができない。HTMLやTEXTならばできる。

cpdツꀀ –minimum-tokens 10 –files “C:\hogehoge\src” –language c –format xml

Error DOMSource cannot be processed: check that saxon9-dom.jar is on the classpath java.lang.IllegalStateException: net.sf.saxon.trans.XPathException: DOMSource cannot be processed: check that saxon9-dom.jar is on the classpath at net.sourceforge.pmd.cpd.XMLRenderer.render(XMLRenderer.java:95) at net.sourceforge.pmd.cpd.CPD.main(CPD.java:223) Caused by: net.sf.saxon.trans.XPathException: DOMSource cannot be processed: check that saxon9-dom.jar is on the classpath at net.sf.saxon.event.Sender.send(Sender.java:251) at net.sf.saxon.IdentityTransformer.transform(IdentityTransformer.java:30) at net.sourceforge.pmd.cpd.XMLRenderer.render(XMLRenderer.java:92) … 1 more

JAVAすら知らないが、saxon9-dom.jarがないよといっているみたい。

よくわからないが、ネットから別の saxon9-dom.jarをダウンロードしてきて、

pmd-bin-5.0-alpha\lib\配下にsaxon9-dom.jarをおいたらXML出力できた。

http://www.java2s.com/Code/Jar/s/Downloadsaxon9domjar.htm

23 Sep 2012, 09:14

CCCCを利用してC言語のステップ数をJenkinsで表示する

CCCCとは、C言語/C++のステップカウンタだ。
ステップ数をカウントをカウントしてくれるだけでなく、
コードの様々なメトリックをレポートととして生成してくれる。

CCCCとは、ギャグでもなんでもなく、C and C++ Code Counterの略。
以下からダウンロードできる。

C and C++ Code Counter 窶錀 sourceforge

ccccを実行して、ステップ数を得る

ccccはコマンドラインから以下のように実行する。

cccc (対象ファイル)

すると、.ccccというディレクトリに cccc.htmlやらcccc.xmlやらが自動で生成される。

cccc.hemlはこんな感じで出力される。LOCというのが行数にあたる。

image

CCCCはWindows版では
C:\Program Files (x86)\CCCC\cccc.exe
にインストールされるので、Windowsのコマンドプロンプトから実行するには、
直接バスを指定するか、環境変数を設定するかの工夫が必要。

CCCC Pluginを導入してJenkinsで表示する

CCCC PluginをJenkinsにインストールする。
[Jenkinsの管理] > [プラグインの管理] からCCCC Pluginを選択して、インストール。

カバレッジ出力するための設定は、[設定] > [ビルド] で、ccccのコマンドを追加する。

[ビルド後の処理] に [Publish CCCC report]
という項目が追加されているので、選択。 xmlファイルパスを追加する

image

出力結果

出力結果は .htmlと同じだけれど、
ソースが参照できなかったり、関数ごとのステップ数がわからなかったりする。
あまり・・・・な感じだ。

image

こんな感じで、ステップ数の遷移もワカルようだ。(あまり例がよくないな・・・)

image

参考リンク

23 Sep 2012, 05:37

Cppcheckで静的解析して、Jenkinsで表示してみる。

C/C++用の静的解析ツール、cppcheckを使って、静的コード解析をして、

解析結果をJenkinsで表示する方法を調べてみた。

CppCheckのダウンロード・インストール

以下の公式サイトから入手する。

http://cppcheck.sourceforge.net/

Cygwiinからでも入手ができた。

Cygwin使いの自分は、cygwin の setup経由で入手。

image

CppCheckを実行してみる

公式マニュアルはココ( var 1.56)

コマンドラインから、以下のコマンドを実行する。

[text](フアイル単位)

cppcheck –enable=all hogehoge.c

[/text]

[text](フォルダ単位)

cppcheck –enable=all hogehoge

[/text]

[text]

ex.)

C:\mock_study>cppcheck –enable=all src

Checking src/numlib.c…

12 files checked 22% done

Checking src/sample.c…

22 files checked 100% done

Checking usage of global functions..[/text]

XML形式で結果を出力するには、窶肺ml オプションをつける。

( –xmlツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀツꀀ Write results in xml format to error stream (stderr).)

これで、標準エラーでXML形式の結果が出力されるので、

リダイレクトでファイルに記録すればよい。

[text]C:\mock_study>cppcheck –enable=all 窶度ml srcツꀀ 2>cppcheck_result.xml[/text]

( 2> で標準エラーをリダイレクトできるんですねー、知らなんだ ; ~_ ~ ; )

CppCheck Plugin を Jenkinsに入れて、静的コード解析結果をみる

Cppcheck PluginをJenkinsにインストールする。
[Jenkinsの管理] > [プラグインの管理] から Cppcheck Pluginを選択して、インストール。

プロジェクトの[設定] > [ビルド] で、cppcheckのコマンドを追加する。

[ビルド後の処理] に [Publish Cppcheck results]

という項目が追加されているので、選択。

Cppcheck report XMLsという項目に、xmlファイル名を追加する。image

実行結果

Web画面でエラーが確認できる。

クリックすれば、ソースの該当箇所まで飛んでくれる。便利。

image

動作環境

  • Windows 7
  • Cppcheck 1.56
  • Cppcheck Plugin 1.11

参考ページ

22 Sep 2012, 22:20

C言語でのgcovカバレッジ計測結果をJenkinsで表示させる

C言語でのカバレッジ計測結果をJenkinsで表示させる方法について調べてみた。

2つの方法があるみたい。

  1. lcov + HTML Publisher plugin で出力

    Hudsonの使い方21 Hudsonでユニットテスト網羅率測定(C言語)

  2. gcovr + Coberturaプラグイン で

    Jenkinsでテストとカバレッジの結果をグラフ表示できるようにする

    Jenkins を iOS アプリ開発に導入してみた (gcov編)

今回は2番目の方法で試してみた。 流れとしては以下のとおり。

C言語のプロダクトコード

↓(gcov)

カバレッジデータ

↓(gcovrでCobertura形式のXML出力)

XMLカバレッジ結果

↓(Jenkins Cobertura Plugin)

Jenkinsて結果出力

C言語の定番カバレッジツール gcov でカバレッジを計測する

まずはC言語の定番カバレッジツール gcov でカバレッジを計測してみる。

Cygwinではデフォルトでgcovコマンドがある。

gcovを使うためには、コンパイルをするときに、以下のコンパイルオプションをつける必要がある。

-fprofile-arcs -ftest-coverage

Makefileをいじるときは、以下を追加すればよい。

CFLAGS += -fprofile-arcs -ftest-coverage
LDFLAGS += -fprofile-arcs

すると、.gcno というファイルができる。 実行ファイルを実行すると、.gcdaというファイルができる。

これが、カバレッジ計測結果データ。次に、これをXML形式に変換する。

gcovrでXML形式のカバレッジ結果を出力する

gcovrとは、gcovでの出力結果を編集して出力してくれるツール。

Jenkinsで結果を見るにはCoberturaと呼ばれるXMLフォーマットに変換する必要がある。

まずは、以下からダウンロードする。 公式のページはココPythonで記述されたコードなので、適切なことろに保存する。(/usr/local/bin/とか)

gcovr

コマンドラインからだと、以下のコマンドで取得

wget https://software.sandia.gov/trac/fast/export/2799/gcovr/trunk/scripts/gcovr

保存したら、実行権限を与える。

chmod u+x gcovr

gcovrは以下の形式で実行する。

gcovr --xml --output=(出力ファイル名).xml (ディレクトリ名)

サンプル

gcovr --xml --output=gcovr_result.xml src/  

これで、XMLファイルができた。次はこれをJenkinsで出力する。

Cobertura PluginでJenkins上でカバレッジ結果を見る

まずは、Cobertura PluginをJenkinsにインストールする。

[Jenkinsの管理] > [プラグインの管理] から Cobertura Pluginを選択して、インストール。

カバレッジ出力するための設定は、[設定] > [ビルド] で、gcovrのコマンドを追加する。

ちなみに、Windowsバッチコマンドだと以下のようなコマンドを追加したら動いた。 gcovrの前にpython2.6.exeを入れると動くが、 gcovrだけだったり、python gcovrだと動作しなかったりするのがナゾ。

python2.6.exe gcovr --xml --output=gcovr_result.xml src/

[ビルド後の処理] に [Cobertura カバレッジレポートの集計] という項目が追加されているので、選択。

Cobertura XMLレポート パターンという項目に、xmlファイル名を追加する。

(カスタムワークスペースを設定していない場合はパスも込で)

image

これで、ビルドを実行すればカバレッジが表示される。

カバレッジ表示結果

プロジェクト画面に[カバレッジレポート]という画面が現れる。

カバレッジはここで見ることができる。

image

22 Sep 2012, 01:02

JenkinsでGoogleTestのテスト結果を表示する方法を調べてみた。

GoogleTest(gtest)のテスト結果をJenkinsで表示する方法を調べてみた。

GoogleTestで出力されるXML出力結果はJUnitのフォーマット(junitreport Ant タスク)

にもとづいているため、Jenkinsに取り込んで解析することができるらしい。

GoogleTestのテスト結果をXML形式で出力する

テスト実行時に、以下のオプションとともに実行するとxML形式でテスト結果が出力される。 –gtest_output=xml:(ファイル名)がオプションだ。

[text](プログラム).exe 窶堵test_output=xml:(出力ファイル名).xml[/text]

こんな感じでXML出力される。


<testsuites tests="3" failures="0" disabled="0" errors="0" time="0.012" name="AllTests">
  <testsuite name="MockNumTest" tests="3" failures="0" disabled="0" errors="0" time="0.006">
    <testcase name="return1" status="run" time="0" classname="MockNumTest" />
    <testcase name="return2" status="run" time="0" classname="MockNumTest" />
    <testcase name="return3" status="run" time="0" classname="MockNumTest" />
  </testsuite>
</testsuites>

XML形式のテスト結果をJenkinsで表示する

次はjenkinsの設定。ジョブの設定画面を開く。

[プロジェクトの高度なオプション] > [カスタムワークスペースの使用]

にチェックを入れて、テスト出力ファイルのディレクトリの指定。

[ビルド]を選択して、ビルドを実行するための方法を選択。

ここでは、Windowsバッチコマンドで実行する。

[text]

cd “C:\Users\hogehoge\Dropbox\src\mock_study”

make clean

make

target.exe –gtest_output=”xml:test_result.xml”

[/text]

Windowsバッチコマンドがでmakeができないときは、

WindowsサービスでJenkinsを立ち上げるのをやめるとよい。

参考:WindowsバッチファイルをJenkinsで起動したらネットにアクセスできないツꀀ

[ビルド後の処理] > [JUnitテスト結果の集計]を選択。テスト結果ファイル名を入力。

image

テスト出力結果

こんな感じで出力された。

image

参考リンク

GoogleTest – 上級ガイド – XMLレポート

19 Sep 2012, 23:32

速聴自動化!UWSCで速聴変換をオートメーションしてみる

前回の続き。

クラウド速聴!フリーソフト『Lilith』でNHKニュースを3倍速で聴いてみる。

NHKニュースの速聴変換はルーチンワークなので、速聴変換を自動化してみた。

以下のサイトを参考にしました。

マウス、キーボードの自動操作: 高速再生ニュースの薦め

 

 

 

 

使用したのは、UWSCというフリーソフト。PC操作を記録して、再生できるソフトだ。

UWSC 窶錀 Vector

前回のエントリで紹介した一連の操作を、記録機能で記録して、マクロとして保存。

あとは、それを実行すると、自動で速聴変換済みの音声ファイルが

クラウド上にアップロードされる。

17 Sep 2012, 11:54

はてブ新着記事をタグ指定サムネイルつきの抜粋で表示する

はてなブックマークの新着記事をタグ指定のRSSで取得する方法を調べてみた。

まずはURLで取得してみる

以下の形式で取得できる。

http://b.hatena.ne.jp/t/(タグ)?sort=hot&threshold=1&mode=rss

ボイント1: &threshold=(数字)で、収集するはてブの数を指定できる。

ボイント2: (タグ)の名前はパーセントエンコード(URLエンコード)でのUTF-8で書かないと認識されない。

変換したいパスをそのままChromeのURLに貼り付けたら変換された。

このサイトで変換できるみたい。

URLエンコード・デコードフォームツꀀ

具体例

例えば、睡眠のタグがついたはてブで、3フォロー以上はこんな感じだ。

http://b.hatena.ne.jp/t/%E7%9D%A1%E7%9C%A0?sort=hot&threshold=3&mode=rss

取得したRSSを記事に表示する

次は、取得したRSSをWEBページに表示する。

wordpressを使えば、カンタンに表示できた。参考にしたのは、以下のサイト。

複数外部RSSフィードをWordPressで表示 | 簡単ホームページ作成支援-Detaramehp


 

 

set_cache_duration(1800);
    $rss->init(); 
    $maxitems = $rss->get_item_quantity(3); 
    $rss_items = $rss->get_items(0, $maxitems); 
    date_default_timezone_set('Asia/Tokyo');
endif;
?>


No items.</dt>'; else foreach ( $rss_items as $item ) : ?>
get_feed()->get_title(); ?>
get_title(); ?>
(get_date("Y-n-j H:i:s"); ?>)

set_cache_duration(1800);

$rss->init();

$maxitems = $rss->get_item_quantity(3);

$rss_items = $rss->get_items(0, $maxitems);

date_default_timezone_set(‘Asia/Tokyo’);

endif;

?>

<archives/hp if ($maxitems == 0) echo ‘

No items.

‘;

else

foreach ( $rss_items as $item ) : ?>

get_feed()->get_title(); ?>

set_cache_duration(1800); $rss->init(); $maxitems = $rss->get_item_quantity(20); $rss_items = $rss->get_items(0, $maxitems); date_default_timezone_set('Asia/Tokyo'); endif; ?>

No items.</dt>'; else foreach ( $rss_items as $item ) : ?>
get_title(); ?>
get_description()), 0, 100); ?> ・・・ 続きを読む (get_date("Y-n-j H:i:s"); ?>)

<archives/hp include_once(ABSPATH . WPINC . ‘/feed.php’); $rss = fetch_feed(array( ‘http://b.hatena.ne.jp/t/%E7%9D%A1%E7%9C%A0?sort=hot&#038;threshold=3&#038;mode=rss'

)); if (!is_wp_error( $rss ) ) : $rss->set_cache_duration(1800);

$rss->init();

$maxitems = $rss->get_item_quantity(3);

$rss_items = $rss->get_items(0, $maxitems);

date_default_timezone_set(‘Asia/Tokyo’);

endif;

?>

<archives/hp if ($maxitems == 0) echo ‘

No items.

‘;

else

foreach ( $rss_items as $item ) : ?>

get_permalink(); ?>’ target=”_blank”>

get_title(); ?>


 

 

wordpressだとカンタンだぁ。