ラベル cpan の投稿を表示しています。 すべての投稿を表示
ラベル cpan の投稿を表示しています。 すべての投稿を表示

2013/03/04

CPAN Testersになろう

先日、Kansai.pm ミーティングに参加して開発意欲をいただいた事もあり...
簡単なCPANモジュールを幾つかリリースしました(>ω<)/(笑)
(今まで自前のperlモジュールは作っていましたが...CPAN公開は初で...。これで私も、一応CPAN Author(><;))

さて、今回の記事は、お世話になっているCPANやCPAN Authorの皆さんに
何か僅かでも恩返し(?)を...ということで "CPAN Testersになろう!"です。

CPAN Testersというのは、CPANで公開されているモジュールのテストを行い、
レポートする活動 および CPAN上で公開されているテスト情報のことです。
新着モジュールを自ら or プログラムでチェックして積極的にレポートを送ってくださる方もいらっしゃるようです。
CPAN Testersや、perlのテストについては、Perlにおけるテストの概要/TAPとは?:Happy Testing Perlを参照させてもらいましょう。
search.cpan.prgなどで見かける、この表記。
PASS (24)は、テスト通過したレポートが24件投稿されているということ。
View Reportsをクリックすると詳細へアクセスできる。

今回は、自らのPCでCPANモジュールをインストールする際に
自動的にテスト結果をレポートするよう設定します。
・・・といっても、とても簡単です。

まずは、CPANシェル(or cpanm)で
Task::CPAN::Reporterをインストールします。

$ cpan Task::CPAN::Reporter
次に、CPANシェルでレポートのための設定を行います。
$ cpan
> o conf init test_report

Generate test reports if CPAN::Reporter is installed (yes/no)? [no] yes
Would you like me configure CPAN::Reporter now? [yes]


email_from? [] Taro Yamada

edit_report? [default:ask/no pass/na:no]

send_report? [default:ask/yes pass/na:yes]

transport? [Metabase uri https://metabase.cpantesters.org/api/v1/ id_file metabase_id.json]

Would you like to run 'metabase-profile' now to create '/home/xxxx/.cpanreporter/metabase_id.json'? [y]

Enter full name: Taro Yamada

> o conf commit
> exit
(基本的に表示のとおり進めるだけで終わります。最後に、o conf commitして、exit。)

これで完了です。
(以前はEメールの設定をして...というのが必要だったのですが、執筆現在試したところによると、不要になっているようです。)

試しに・・・CPANシェルでモジュールを何かインストールしてみてください。
※ 尚、cpanmはレポートには使えませんので、通常のCPANシェルを使います。

例えば、拙作の WebService::Zussar あたりは軽くて試すのにもってk(←←
$ cpan WebService::Zussar
~~~~
CPAN: CPAN::Reporter loaded ok (v1.2009)
Created MYMETA.yml and MYMETA.json
Creating new 'Build' script for 'WebService-Zussar' version 'v0.0.3'
(/usr/bin/perl Build.PL  exited with 0)
CPAN::Reporter: Build.PL result is 'pass', No errors.
Building WebService-Zussar
(./Build exited with 0)
CPAN::Reporter: Build result is 'pass', No errors.
  MUGIFLY/WebService-Zussar-v0.0.3.tar.gz
  ./Build -- OK
Running Build test
# Testing WebService::Zussar 0.0.3
t/00.load.t ................. ok
t/01.fetch_event.t .......... ok
t/010.online_fetch_event.t .. ok
t/02.fetch_event_user.t ..... ok
All tests successful.
Files=4, Tests=37,  2 wallclock secs ( 0.05 usr  0.01 sys +  0.83 cusr  0.11 csys =  1.00 CPU)
Result: PASS
(./Build test exited with 0)
CPAN::Reporter: Test result is 'pass', All tests successful.
CPAN::Reporter: preparing a CPAN Testers report for WebService-Zussar-v0.0.3
CPAN::Reporter: sending test report with 'pass' via Metabase
MUGIFLY/WebService-Zussar-v0.0.3.tar.gz
./Build test -- OK
Running Build install
Building WebService-Zussar
Installing /home/xxxxxx/perl5/lib/perl5/WebService/Zussar.pm
Installing /home/xxxxxx/perl5/man/man3/WebService::Zussar.3pm
  MUGIFLY/WebService-Zussar-v0.0.3.tar.gz
  ./Build install  -- OK
こんな感じで、テスト結果のログがCPANに自動送信されます。
CPAN上に反映されるには数時間〜数日かかりますが、
これだけで、自分の環境でテストを行なってレポートできます。

レポートされたテスト結果は
search.cpan.orgや、metacpan.orgの各モジュールのページからアクセスできます。
モジュールのために徹底したテストを書くということ、また、CPANを中心として、テスト環境が広く、レポートするコミュニティが確立しているということは、perlの一つの文化とも言われています。

大抵、幅ひろい環境でのテスト結果が集まることは、良いことだと思いますし、
私たちも何かしらの形で、少しでも協力できるといいですね♪

2013/01/26

Kyoto Tycoonの導入とperlからのアクセス (on Fedora 17 and Ubuntu)

Kyoto CabinetとKyoto Tycoonを試してみました。

以前から気になりつつも、ちょっと今更になってしまったのですが・・・
開発中のWebアプリケーションで使いたい!という動機です(笑)
Fedora 17 および Ubuntu 12.04で以下の手順による動作を確認できました。

まず、必要なパッケージをインストールします。
$ sudo yum install libcurl gcc make zlib-devel
尚...Ubuntuなど(Debian系)では次のような感じです:
$ sudo apt-get install curl gcc make zlib1g-dev libbz2-dev build-essential

次に、Kyoto Cabinetをインストールします。
$ wget http://fallabs.com/kyotocabinet/pkg/kyotocabinet-1.2.76.tar.gz
$ tar zxf kyotocabinet-1.2.76.tar.gz
$ cd kyotocabinet-1.2.76/
$ ./configure
$ make 
$ sudo make install
$ ../
その次に、Kyoto Tycoonをインストールします。
(Kyoto Tycoonは、Kyoto Cabinetをネットワークで扱うためのインターフェイスです。)
$ wget http://fallabs.com/kyototycoon/pkg/kyototycoon-0.9.56.tar.gz
$ tar zxf kyototycoon-0.9.56.tar.gz
$ cd kyototycoon-0.9.56/
$ ./configure
$ make 
$ sudo make install
さらに、管理用のコマンドを使えるようにスクリプトをコピーしておきます。
$ sudo cp lab/ktservctl /usr/local/sbin/
$ sudo cp lab/ktservctl /etc/rc.d/init.d/ktserver
(【Ubuntuの場合】 /etc/rc.d/init.d/ → /etc/init.d/ ですので、注意。以下も同様に読み替えてください。)

またこのスクリプトを一部編集しておきます。
$ sudo vi /etc/rc.d/init.d/ktserver
#! /bin/sh

#----------------------------------------------------------------
# Startup script for the server of Kyoto Tycoon
# chkconfig: - 80 20
#----------------------------------------------------------------

〜〜〜
PATH="$PATH:/sbin:/usr/sbin:/usr/local/sbin:/usr/local/bin"
〜〜〜
(2行目付近に、このように、chkcondigのための行を追加。 また31行目付近のPATHに、/usr/local/bin を追加しておきます。) [2013/02/10:追記]

共有ライブラリパスに/usr/local/libを含めていなければ、追加しておきます。
$ vi /etc/ld.so.conf
〜〜〜
/usr/local/lib
$ sudo ldconfig
これで完了です。

では...早速、Kyoto Tycoonを起動してみます。
$ sudo service ktserver start
または
$ sudo ktserver 

これで...コンソール上にログが表示されたら、稼働中です。

とりあえず試しに、perlでスクリプトを書いて読み書きしてみることに。
ありがたいことに、Cache::KyotoTycoonというモジュールがあるので、とても簡単に扱うことができます。

まずは、cpan/cpanmで、Cache::KyotoTycoonをインストールします。
$ cpanm Cache::KyotoTycoon
あとは、スクリプトを書いて...実行。
use Cache::KyotoTycoon;

# KyotoTycoonに接続
my $kt = Cache::KyotoTycoon->new(
    host => '127.0.0.1',
    port => 1978,
);

# キー'foo'で 文字列'bar'を保存
$kt->set('foo', 'bar');
# 読み出してみる
print $kt->get('foo') ."\n";

# 時限削除機能もあるので試してみる
$kt->set('foo2', 'bar', 2); # 2sec
# 読みだしてみる
print $kt->get('foo2') . "\n"; # OK
# 2秒〜ほど待つ
sleep(2500);
# もう一度、読みだしてみる
print $kt->get('foo2') . "\n"; # 時限削除されているので空になる。

うーん!とってもシンプルですし、時限削除は便利ですね。
まさに...キャッシュのためにももってこいなKVSだといえます。
ベンチマークの類はまだしてないですが。メモリにも優しいそうです。

また、memcached互換なので既存のモジュールも応用できるそうです。

[2013/03/19 追記]
Cache::KyotoTycoon v0.14で行われた修正にともない、
コンストラクタ(Cache::KyotoTycoon->new)内でdbパラメータを与えると
リクエストがエラーとなってしまうようです。

[2013/05/29 追記]
パッケージ類のインストール手順を追加しました。
また、Ubuntu 12.04でもこの手順で動作を確認しているため、追記 および タイトルを変更しました。


参考にさせていただいたページ (感謝 m(_ _)m♪):