新しいblogに移行しました

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

2012-12-27

[Perl]Email::SendつかったらReturn::Valueにdeprecatedだと怒られた

Email::Send自体がdeprecatedなのですが、Email::SenderはMoose依存だそうなので(Mouseに切り替えるという話は無理だったらしい?)、Email::Send使ってメールを送ることにしました。
ですが、こいつはReturn::Valueというモジュールを内部的に使用していて、これを普通に使おうとすると

Return::Value is deprecated

と言われました。でもEmail::Senderは使いたくないので、

BEGIN {
    $Return::Value::NO_CLUCK = 1;
}
use Email::Send;

としたのでした。だいぶアレ。

[2012/12/28 追記]
なあんてことを某所でぼやぼや言ってたんだけど、寝て起きてたらMail::Krohnというものがつくられていた。激速。本当にすごい。

 http://blog.64p.org/entry/2012/12/28/002634

[2013/07/31 追記]
サンプルに間違いがあったので直しました。

誤: BEGIN { Return::Value::NO_CLUCK = 1; ...
正: BEGIN { $Return::Value::NO_CLUCK = 1; ...

nekoyaさん、ご指摘感謝致します。

それからEmail::SenderはMoose依存ではなくなり、Moo依存になりました。
それに伴い、Email::Krohnは必要なくなったとされ、deleteされました。

[Perl]Amon2なアプリケーションのbatchでconfigとかを見たいとき

http://blog.64p.org/entry/2012/12/27/195117 参照のこと。

知ってる人には当たり前なのかもしれないけど、Amon2ビギナーな自分は引っかかってしまったのでメモ。


たとえば、以下のようなバッチがあって、

[./bin/my_batch.pl]
#!/usr/bin/env perl
use strict;
use warnings;
use MyApp::Model::AnyWhere;

printf "%s\n", MyApp::Model::AnyWhere->work;

そのバッチが叩いているクラスが、

[./lib/MyApp/Model/AnyWhere.pm]
package MyApp::Model::AnyWhere;
use strict;
use warnings;

use MyApp;

MyApp->bootstrap; ### これがだめ

sub c {
    return MyApp->context;
}

sub work {
    my ($class) = @_;
    return c->config->{Foobar};
}
1;

みたいなのは、よろしくないとの事です。

正しくは、

[./bin/my_batch.pl]
#!/usr/bin/env perl
use strict;
use warnings;
use MyApp;
use MyApp::Model::AnyWhere;

MyApp->bootstrap; ### ここでbootstrapする

printf "%s\n", MyApp::Model::AnyWhere->work;


[./lib/MyApp/Model/AnyWhere.pm]
package MyApp::Model::AnyWhere;
use strict;
use warnings;

use MyApp;

sub c {
    return MyApp->context;
}

sub work {
    my ($class) = @_;
    return c->config->{Foobar};
}
1;


とするべきらしく、そうしないと色々と意図しない問題が出てきてしまうらしいので、注意が必要です。

2012-12-19

コマンドラインからTwitterにPOST(もしくは自分にD)するだけのツールをつくってみた

VPSで定期的にcronとかでバッチぶん回したりして、その結果をある程度すぐにみれる状況にしたいなーとおもったので、App-Shirohというツールをつくりました。ようするに、ものすごい単純なTwitterクライアントなんですけど。

https://github.com/ytnobody/App-Shiroh

前準備
手始めに、通知を送信するためのTwitterアカウントが必要なので、どうにかこうにか取得しましょう。
次に、通知を受け取る側のアカウントと、今しがた作ったアカウントを相互フォローさせましょう(D送るのに必要)。
そして、さっき作ったTwitterアカウントをつかって、このあたりを参考に、認証に必要な各種情報を揃えます。
ここまでで準備はオッケー。

インストール&設定
まず、App::Shirohをインストールします。cpanmをつかいますので、あらかじめ用意しておきましょう。

git clone git://github.com/ytnobody/App-Shiroh.git
cd App-Shiroh
cpanm ./

インストールできたら、今度は以下のような内容で~/.shirohというファイルを新規作成します。(適宜置き換える)

  {
     consumar_key        => 'YOUR CONSUMER KEY',
     consumer_secret     => 'YOUR CONSUMER SECRET',
     access_token        => 'YOUR ACCESS TOKEN',
     access_token_secret => 'YOUR ACCESS TOKEN SECRET',
     message_to          => 'some_nickname', ### 無くてもOK。このアカウントにDを送る。
  };

ここまでできたら、あとは

shiroh '通知です'

とか

cat /path/to/file | shiroh

とかすれば、新しく作ったアカウントが(つぶやいて|Dして)くれます。 パイプ経由で複数行のデータを食わせた場合、その行数分だけつぶやきます。
あと今のところ、文字数が140文字越えたときにどうするかとか全然考慮せずにNet::Twitter::Liteに丸投げしてます。
大事なこととしては、ばれるorもれるとやばいものとかには向きません。

2012-10-27

Chiba.pm #1に行ってきた

10/20(土)に船橋駅前のPCスクール「WAVE」さんで開催されたChiba.pm #1に行ってきました。

到着が30分ほど遅れてしまったので、LTの途中あたりからしか聞けてないのですが、その中で記憶に残っているものを掻い摘んでレポートします。

@studio3104さん
fluentdを使ってMySQLのslowlogを監視し、その元になったクエリをEXPLAINして、webに統計を表示するというアプリについての発表でした。このアプリは以前、PerlBeginnersでビギナーズセッションの題材にもなっていました。YAPCのLTでもこの発表をしていたらしく、そのときはデモを動かせないまま銅鑼が鳴ってしまったので、そのリベンジだと意気込んでいたのですが、船橋でもデモを動かすことができなかった模様でした。仕組みも機能も非常に興味深いものですので、ぜひ動いてる様子を見てみたいとおもいました。
また、monitoring casual talks #2というイベントの宣伝もされていました。

@karupaneruraさん
TengについてのTipsを紹介。複数レコードを一気にinsertするbulk_insert、rowオブジェクトを作らないようにするsuppress_row_objectなど、わりと浅くTengを利用している人間としては知らないことが結構あったので、勉強になりました。

@sho_toyodaさん
情報セキュリティスペシャリストについてのお話。ECMAScriptが追加され、Perlが削除されたということらしいのですが、その過去問題がなかなかはげしいらしく、CGIでHTMLタグをprint構文で吐き出していたりしてて(ほかにも大分アレらしい)、問題を作った方にはぜひともPerlBeginnersにお越しいただきたいと思った次第でした。

ちなみに自分の発表は「チャリで来た」(本当は「バイクで来た」なんだけど)という出オチと、carton+perlbrewなアプリでcronを使う際のtips、JSON出力に特化した拙作のWAF「Nephia」およびPerlBeginnersの紹介をさせていただきました。
スライド自体は1枚に収めたので、大分わかりにくいかもしれません。




スライド中のenvスクリプトはこんな感じ。



実際にcronで使う場合、こうなります。



また、懇親会では@karupaneruraさんと、「OOPだろうが関数型だろうが、ちゃんと扱えるようになるには、まず手続き型をしっかりと扱える必要があるよねー」みたいなことを話しました。

船橋まではさすがに結構距離があるなあと感じたのですが、自分の場合バイクツーリングも兼ねているのと、やはりその地域のperl使い(もしくは興味のある人)が集まるので、他のpmとは異なる話題が出てきたりして、非常に興味深いと感じました。

主宰の@kaztrさん、参加された皆さん、お疲れ様でした。
次回はいつやるんでしょうね。気になります!