新しいblogに移行しました

新ブログ "All Yout Bugs Are Belong To Ass" に移行しました!

2013-08-20

[Perl]Archive::Zip使う前に読んでほしいエントリ

Archive::Extractってのを使うとハッピーになれます。

Archive::Zipと比較した利点

  1. インターフェースが実直
  2. 依存モジュールもさほど多くない
  3. ZIPアーカイブ以外にも.tar.gzあたりにも対応してくれる
  4. 安定と実績の作者

2013-07-31

[Perl] 某WAFを書いていたらTravis神が激おこプンプン丸だったので原因と解決案を(若者が)探った

https://travis-ci.org/ytnobody/Voson/jobs/9679903

このTravis-jobsをみてやって欲しい。common::senseがインストールできてないらしく、全然テストどころでは無くなってしまった。

で、某仮想八王子でそんなことをのたまっていたら、若人2名が原因をさぐってくれたりした。

http://blog.papix.net/entry/2013/07/31/153544

http://moznion.hatenadiary.com/entry/2013/07/31/172410

結局のところ、Devel::Cover::Plugin::CoverallsがJSON::XSに依存しており、JSON::XSがcommon::senseに依存していたため、common::senseがぶっ壊れたタイミングでJSON::XSもD::C::P::Coverallsもぶっ壊れてしまった、という状況。

これについては先ほどD::C::P::Coverallsにpullreqを投げてみたので、きっとそのうち何かしらのアクションがあるのではないかと思っております。

[追記]

じきにcommon::senseのfix入る模様なので、すぐに元の平和が訪れるでしょう。

[翌日、追記]

早速common::sense 3.72がリリースされ、元の平和が訪れました。
これをうけ、D::C::P::Coverallsのpullreqはクローズしました。

[さらに追記]

今回の一連の流れをtokuhiromさんがまとめてくれています。

また、今回の件をきっかけに、JSON.pmのメンテナであるmakamakaさんが、JSON関連のモジュールを紹介してくれています。

2013-05-28

[ツール]plenvやrbenvを一発でインストールするスクリプト

タイトルどおりの物をつくったので、晒しておきます。

使い方


plenvの場合

$ curl -L http://is.gd/plenvsetup | sh


rbenvの場合

$ curl -L http://is.gd/rbenvsetup | sh


手元でしか動作確認してないですので、おかしなところあったらツッコミください。

2013-05-17

[Perl]せっかくだから俺はこのMinillaを選ぶぜ

タイトルの元ネタはこれ

本題。ここに書いてあるように、
https://twitter.com/ytnobody/status/335212752857616384
Minillaつかってみた記録&べた褒めするエントリです。(Minilla作者によるエントリはこちら

1週間くらいMinillaをつかってみましたが、これからPerlモジュールをつくるのなら、Minillaはおそらく最上のツールとして選択肢に上るべきだと思いますね。

CPANにはこれまでもいくつかのモジュール作成支援ツールが登録されてます。例をあげると、

ExtUtils::MakeMaker
Module::Build
Dist::Zilla
Module::Starter
Module::Setup (しばらくこれのデフォルトフレーバーを使ってた)

などなどあるわけですが・・・(にわかCPAN Authorな僕はこのくらいしかしらないんですけど、Dist::Zilla,Module::Starter,Module::SetupがMinillaと同じいわゆる「Authoring tool」なんでしょうね)

Minillaのいいとこ


サブコマンドの直感性の高さ


よく使いそうなminilサブコマンドをあげてみると、

・new
・build
・test
・release

と、一目でみて使い方がわかりそうなものが多いです。ざっくり言うと、

minil new New::Module

とかで新しいモジュールの雛形つくってくれて、

minil build

でcpanfileやらNew::Moduleあたりのファイルを元にBuild.PLやREADME.mdあたりをつくってくれで、(大まかなイメージ。あってるかな・・・)

minil test

でテストを走らせてくれる。で、

minil release

で、そのままCPANにモジュールをアップしてくれます。開発からリリースまでの一連の流れをminilコマンド一つで面倒見てくれます。すごい。

git(特にgithub)との親和性の高さ


例えばminil testするときに、git add されていないテストファイルは実行されません。これは一見不便なように思えますが、新しくテストを書く場合、proveあたりで新しいテストファイル単品を実行すればよく、git addしてからminil testすれば、テストのcommit漏れとかなくなるはず・・・だと思ってます。

あとminil release したときに、gitで新しいtag切ってくれるの、すごく楽できていいと思います。origin がgithubだったりしても、git push --tags してくれます。

そして前述してある通り、minil buildしたときにREADME.mdを自動で吐き出してくれるので、わざわざREADME.なんとかを自分で書く必要なく、二度手間を解消できます。(今までそんなことやってたの?って言われるとわりと辛いんですけどね)


過去の財産のMinilla対応がものすごく簡単


これがもっとも驚いた特長なのですが、既存のModule::Buildベースなモジュールの開発ディレクトリで

minil migrate

してあげると、そのままMinilla対応のモジュールに早変わり。もうあとはgit pushするだけでオッケーなところまでやってくれます。
また、ExtUtils::MakeMakerにも対応しているらしく、おそらく同じコマンドを実行するだけでMinilla対応できちゃうというわけです。

とまあ、ものすごくべた褒めしてきたわけですけど、実際そのくらいによくできてます。
若干ブラックボックスっぽいところも無いわけではないんですけど、minil helpで大体の動作とか説明されてたり(まだドキュメント未整備のものも有る様ですが、特にminil help migrateの内容は、minil migrate使用前に読んでおくと、納得してminil migrateを使うことができます。)して、そこまでブラックボックスというものでもないという印象を受けました。


間違いなく、「これ使っとくといいよ!」とおすすめできるツールでしたので、ブログにて紹介させていただいた次第です。