Net::IPMessenger::Bot とかいうのを作ってみたり

こちらの記事を読んで「IRCいいなー。ウチIPMessengerだしなー」とボヤいていたところ、ボス@Niigata.pmが「IPMessengerBot需要あるかも」とつぶやいていたので、こんなの作ってみました。

Net::IPMessenger::Bot - IPMessenger-Bot building framework - metacpan.org

使い方はこんな感じ。

#!/usr/bin/env perl
use strict;
use warnings;
use utf8;
use Net::IPMessenger::Bot;
use Sys::Hostname ();

my $bot = Net::IPMessenger::Bot->new(
    configure => {
        NickName  => 'hayashi_bot',
        GroupName => 'bot',
        UserName  => 'hayashi_bot',
        HostName  => Sys::Hostname::hostname(),
    },  
    on_message => [
        qr/いつやるの?/ => sub { "いまでしょ" },  
    ],  
);

$bot->start;

その後ボスが「ないかも」とつぶやいていたとおり、あまり使い道がナイデスネ。
broadcastで送信してウザがられればいいですかね?

正直情報共有ツールとしてのIPMessengerはもうやめにしたいんですけどね...なんだかなぁ...

ひとまず社内に仕込んだイカちゃんbotは今日も元気です。はい。

Mojolicious::Plugin::Web::Auth 0.03 をリリースしました

Mojolicious::Plugin::Web::Auth - Authentication plugin for Mojolicious - metacpan.org

特に新しいことはないのですが...

OAuth 1.0(A) も自前で...と思いましたが挫折しました(;^ν^)

あとこちらも修正しておきました。

興味のある方はお試しください。

Mojolicious::Plugin::SessionStore を作ってみました

hayajo/Mojolicious-Plugin-SessionStore · GitHub

shipitしました。(2013-05-05)

これなに?

Mojoliciousのセッションストアはcookieです。普通に使うぶんにはcookieで十分なのですが、やんごとなき理由でセッションストアをファイルやデータベース、KVSなどに変更したい場合がありますよね。

そんなときにお手軽にセッションストアを変更できるプラグインです。

use Mojolicious::Lite;
use Plack::Session::Store::File;

plugin SessionStore => Plack::Session::Store::File->new;    
...

似たようなものに Mojolicious::Plugin::Session があります。こちらはセッションオブジェクトを Mojolicious::Controller#stash を経由して使います。既存の Mojolicious::Controller#session や Mojolicious::Controller#flash を利用できないので少々使い勝手が悪いかなぁと思って作った次第です。

利用できるストアオブジェクト

Plack::Session::Store と同様のインターフェースを実装したオブジェクトを利用できます。

お好きなものを使ってください。

TIPS

ドキュメントには書いてないのですが、このプラグインを使うと Mojolicious::Controller@session_options が生えます。

Plack::Request@session_options と同じような使い方ができるので、セッションキーの確認やSession Fixation対策を行いたい場合にご利用ください。

my $session_id = $c->session_options->{id}; # セッションキーの取得
…
$c->session_options->{change_id}++; # 古いセッションを破棄し、新しいセッションを発行

というわけで

しばらく使って問題なさそうだったらshipitしようかと。

不具合がございましたらIssueやPullreqください。

Mojolicious::Plugin::AccessControlをshipitしました

shipitしました。

Mojolicious::Plugin::AccessControl - Access control - metacpan.org

これなに?

Mojoliciousでルートごとにアクセス制御を定義できるモジュールです。Apacheのmod_accessみたいな感じ。

注意点

アクセス制御の対象はMojolicious::Routes::Routeオブジェクトで、Mojolicious::Routes::Route#overを使っているだけなので、denyされる場合は403ではなく404が返ります。

また、Mojolicious::Staticで提供されるような静的ファイルは対象外となります。

こちらも参考に。

レスポンスをうまく制御できる方法がありましたらpullreqください。

  • 4/8 22:29 加筆・修正

そういえば「shipitしました」ってはじめて書いたかも。アウトプットしてかなきゃ。

NDS#31 に参加してきました #nds31

長岡 IT開発者 勉強会(NDS) 第31回勉強会 に参加してきました。

開催一週間前の告知にもかかわらず参加者が10人(主催除く)も集まったのは、NDSのブランド力というか、主催の@civicさんの人徳というか。さすがです。

おかげで@civicさんのMacにperlの開発環境を構築するという目論見は達成出来ませんでした。残念。

発表

Perlの開発環境の構築についてお話させていただきました。なにげにNDSでの発表は初めて。

「バババっと環境を構築しよう」といった感じの内容です。

それぞれのツールの詳しい解説や注意点、他のツールの紹介は下記のページに詳しく解説されています。 (まだ書きかけとのことです)

1. Perl環境の設定 : Practical Modern Perl (仮)

Perlでの開発に興味を持たれた方は一読することをおすすめします。導入で小石につまずくのを避けることができるでしょう。

PerlのIDE

発表の最後に「IDEはありますか?」と質問があり、「ないと思ったほうが良いでしょう」と答えたのですが、ご紹介頂きました。

Padreはまったく知らなく、EPICは数年前の記憶しかなく、有料だと思っていたKomodoはIDEの方で、Editは無料でした。

このへんの動向はまったく追ってなくて「VimEmacsっしょ」と思考停止していたのですが、ちょっと調べてみようと思います。

@hide_o_55さん、@techno_nekoさん、ご指摘ありがとうございました。

Rubyのおすすめ書籍

@neko_gata_sさんと@kasacchifulさんの発表でRubyの書籍が数冊紹介されていたのですが、

「たのしいRuby」->「初めてのRuby」->「メタプログラミングRuby」が高速道路感ある

そうなので読んでみようようと思います。

あと

Railsでひと通りのお作法を学べる

だそうなので、積極的にRailsさわってこう。正直学習コストが高そうで避けてた。

WebMarker 1.5.0 のパッチ

なんか残念なぐらいに WebMarker が動かなかったのでちょっろっと改修して使っていたのですが、先人が改修していた記事をみつけました。

A patch for WebMarker 1.5.0_0

すばらしいです。(でもボクの改修もだいたい一緒だったんだょ。ホントだょ。)

併せてキーボードショートカット周りやオプション変更時の反映、flattrリンクの有効化あたりの細々としたところも改修したので、使っている方は試してみてください。

下記パッチ適用済みのパッケージはこちら(WebMarker-1.5.0_2.crx
Chrome拡張機能画面からドラッグ&ドロップでインストールしてください。

Enjoy!