Hatena::Groupperl

local $PERL_MEMO;

November 07, 2013

[][]minil release時にターゲット以外のバージョンを書き換えられないようにする方法

minil.tomlを修正しようという話です。

問題

上のリポジトリのbenchフォルダみたいに、以前のバージョンと性能比較するために古いバージョンのモジュールをリポジトリに含めてるみたいな場合があります。古いモジュールには$VERSIONが振ってあって、当然これは未来永劫変更するつもりのないものです。

ところで、MinillaのCLIであるminilにはminil releaseコマンドがあります。これは

  • Change のリリース時間の自動挿入
  • 修正のコミットとバージョンタグ付け
  • git push origin master

を勝手にやってくれる大変ありがたいコマンドなのですが、ソースファイル内のバージョンの書き換えを .pm ファイルや .t ファイルを探して勝手にやってくれるという機能もあって、それが今回のケースでは余計なお世話をしてくれます。つまり、古いバージョンのpmファイルも勝手に書き換えちゃうんですね。

対策

問題はリリース対象であるlibフォルダ以外のpmファイルを探しちゃうところにあります。Minillaは「設定より規約」ということで、gitリポジトリの内容が、

lib/以下にPure Perl でモジュールが書かれている

実行ファイルはなんであれ、script/ディレクトリ以下にある

モジュールは Git でメンテナンスされており、git ls-files は、リリースするものにマッチする

モジュールは、cpanfileに予め必要なものの静的なリストがある

モジュールには、Changes がある

Minilla - CPAN モジュールオーサリングツール - perldoc.jp

上記のようなルールに基づいて構成されていることを期待しています。今回のような規約外のことをやろうとするときはminil.tomlという設定ファイルをプロジェクトのルートフォルダに作ってやると良いらしいです。

name = "Uc-Model-Twitter"

[FileGatherer]
exclude_match = ['^bench/.*']

FileGatherer.exclude_match にMinillaのperlファイル収集から除外したいファイルの正規表現を書くと、Minilla::Filegathererに設定がわたっていい感じにしてくれます。

おまけのminil.tomlの話

name はプロジェクトの名前とモジュール名が一致しない時に使います。今回の場合だと p5-uc-model-twitterというフォルダ名でUc::Model::Twitterを開発してます。

思い出したので書いておきますが、TOMLファイルは設定の名前と設定値の間の = の両端に空白がないとシンタックスエラーになります。MinillaのPODに空白のないサンプルがあってちょっとハマった。

[][]Encode::Entity::NCR v0.0.2 release

3年半ぶりの更新。といっても機能的な追加はなく別のモジュールの更新のついでにドキュメントの修正とMinillizeしました。

$ cpanm https://github.com/UCormorant/p5-encode-entity-ncr/archive/0.0.2.tar.gz 

でインストールできます。cpanm についてはググしてください。

see also

July 12, 2013

[][]DATAを開くとデバッグがだるい

use autobox::dump;
use YAML;
print Load(do { local $/; <DATA>; })->perl;
sleep 100;
exit;
__DATA__
---
foo: hoge
bar: fuga
baz: piyo

みたいな処理を書くとsleepしてる間ソースファイルがreadonlyになって不便。

追記

開き直さないんだったら閉じたらいい。

print Load(do { local $/; $a = <DATA>; close DATA; $a; })->perl;

May 05, 2010

[][]YouTube Downloader アップデート

id:ishiducaさんの記事WWW::YouTube::Downloadがいいらしいと知ったので、以前作ったYouTube Downloaderをこのモジュール使って作りなおしてみました。

ダウンロード

Download Sourcってところか、yt.pl ってファイルをクリックしてクリップボードにコピーしたり raw ファイル落としたりしてください。

使い方

yt.pl <video_id> か、 yt.pl <url>で。プレイリストのURL指定すると一括で落とせます。

日記

1年ぶりのアップデート。たぶん動かなかった。

今回のアップデートできちんと動作するようになったけど、そのかわりフォーマットが指定できないとか保存フォルダの指定不可(カレントディレクトリのみ)とか断片化防止のアイデアが使えないとか、機能は減りました。ねむい。

MarMar2012/08/20 09:40That hits the tgaert dead center! Great answer!

lynpgonklynpgonk2012/08/22 15:16xxTSyn <a href="http://fzbpdhiuqbuv.com/">fzbpdhiuqbuv</a>

April 20, 2010

[]net-irc入れ直しメモ

かくとこないのでここにかくよ。

Rubyをインストールし直したのでこれのためだけにruby入れてると言っても過言ではないnet-ircもインストールし直すことになりました。その手順メモです。

Rubyのインストール

最近はよくできたインストーラがあります。ので、Ruby Installer for WindowsのRubyInstallerから都合のいいやつをダウンロードしてきてインストールします。だいたいは最新のバージョンのexeファイルで問題ないはず。

net-ircのインストール

$ gem install net-irc

ショートカットの作成

起動時にIRCゲートウェイ鯖が立ち上がってると便利なのでバックグラウンドで起動しスタートアップに簡単に登録できるようなVBスクリプトを書いておきます。

多少tig.rbの中身を変えて使ってるのでtig.rb等はC:\bin以下に置いてます。

Dim WShell
Set WShell = WSCript.CreateObject("WScript.Shell")
WShell.Run "ruby C:\bin\tig.rb -h 127.0.0.1", 0
WShell.Run "ruby C:\bin\hig.rb -h 127.0.0.1", 0
WShell.Run "ruby C:\bin\wig.rb -h 127.0.0.1", 0

-hオプションはお好みで。

上をirc_gateway.vbsという名前で保存して、これもC:\bin以下へ。C:\binにはパスを通しておきます。

スタートアップに登録

作成したirc_gateway.vbsのショートカットを作成して、スタートメニュー内のスタートアップに突っ込みます。これで起動と同時にtig.rbが動いている状態になりました。

おしまい

非常に簡単に導入できるようになったなー

RafaelRafael2012/11/02 04:43This site is like a classroom, exepct I don't hate it. lol

jzupnaqdjzupnaqd2012/11/02 15:31Kk07Cw , [url=http://ojjyusiveswf.com/]ojjyusiveswf[/url], [link=http://ghieazzqywhr.com/]ghieazzqywhr[/link], http://dohdzxhgaehs.com/

dixpfsfgzlodixpfsfgzlo2012/11/05 00:13CEpFEb <a href="http://fiklzxaaasim.com/">fiklzxaaasim</a>

chmdyalvochmdyalvo2012/11/06 00:24Zp2Elu , [url=http://jyxfjgfkglcg.com/]jyxfjgfkglcg[/url], [link=http://ngctsoujkpxw.com/]ngctsoujkpxw[/link], http://pqosmtlvvkld.com/

March 12, 2010

[][][]Win環境でモジュールの配布パッケージを作ってみる(草稿)

日を置くと情熱も記憶も失われるもので、もう何書こうとしてたか思い出せません。ですので、自分の環境で配布パッケージ作る時に引っかかった所を断片的に記録しておきます。

環境

モジュール作成からパッケージまでの10の手順

  1. このへん読む
  2. Module::Starter/Module::Starter::PBPインストール
  3. $ perl -MModule::Starter::PBP=setup
  4. 出来たテンプレートフォルダ(%HOME%/.module_starter/PBP)をC:\Perl\PBPに移動
  5. configのテンプレートページのとこC:\Perl\PBPに書き換え
  6. $ module-starter --module=Hoge
  7. Hoge/lib/Hoge.pm 書く
  8. $ PATH C:\Perl\bin;C:\Program Files\Microsoft Visual Studio 9.0\VC\bin
  9. $ perl Makefile.pl
  10. $ make dist

ツマルの詰まったとこ

  • Win 2000/XP特有?の問題として、%HOME%がだいたいDocuments and Settings/fugaとか、パスに空白が入ってるせいでmodule-starterがテンプレートページのパスが分からないとかのエラー吐く
    • スペースはいってないパスにPBPディレクトリを移動して解決
  • CygwinのせいなのかMakefileしてつくったmakeが"multiple target patterns. Stop"とかでエラー
    • コマンドPATHで一時的にperlvc(とあと%System%とか/binとかあったかもしれない)の最小構成にする。そのあいだにperl Makefile.pl etc
    • PATHはコマンドプロンプトが開いてる間、渡されたパスを覚えてるだけなので「環境変数書き変わるかも…」とか心配しなくていい。別のプロンプト起動すればいつもどおりである

おしまい

こんな感じで案外あっさり出来てしまいました。それでもそれなりに環境整えてやらないと出来るものもできないんだなぁというのが今回の感想です。あ、これ草稿のまま終わりそう。夜。

cf.

AddyAddy2011/06/05 09:30Hey, that post leaves me feeilng foolish. Kudos to you!

pzhmlhalpzhmlhal2011/06/05 17:55TpHTVq <a href="http://fjlidowwjrli.com/">fjlidowwjrli</a>

vmenumsdhqvmenumsdhq2011/06/06 22:29YduFNj , [url=http://atmticemgxor.com/]atmticemgxor[/url], [link=http://lgdhqdabbown.com/]lgdhqdabbown[/link], http://pfnsyxtchlrl.com/

ohljogoohljogo2011/06/07 17:55NtmO91 <a href="http://eubvdbyyziyx.com/">eubvdbyyziyx</a>

gldecnzogldecnzo2011/06/09 19:286zOWRa , [url=http://vajhjtqiwcpz.com/]vajhjtqiwcpz[/url], [link=http://adsgrcuxunqi.com/]adsgrcuxunqi[/link], http://cjtppvomotap.com/

IrisIris2013/02/04 18:28An ansewr from an expert! Thanks for contributing.

lzilwttcmlzilwttcm2013/02/06 14:494EMtR6 , [url=http://ioyjuyewplqv.com/]ioyjuyewplqv[/url], [link=http://gxzncnccoffm.com/]gxzncnccoffm[/link], http://wivzedayeeft.com/

pdptkeuawgwpdptkeuawgw2013/02/06 22:53dVk4bZ <a href="http://confqsyoolmp.com/">confqsyoolmp</a>