Home > Archives > 2009-09

2009-09

Plack::Requestからのhostのとりかた

  • 2009-09-30 (水)
  • perl
  • hatena count

Plack::Requestにhost無いなぁ。と思って勢い余ってforkしてコミットまでしてしまったのですが、#perl-casual@freenodeで呟いたところyappoさんから

$req->uri->host

もしくはURIオブジェクトの作成コストが気になるなら($req->uriは遅延作成なので)

$req->env->{HTTP_HOST}

でいいじゃんと言われました。確かにその通りですね。

Wassrのyapcasia2009チャンネルの発言をIRCに投稿するボットをYAPC::Asiaの二日目向けに作った

  • 2009-09-10 (木)
  • perl
  • hatena count

twitterの#yapcasia2009ハッシュタグがスクリーンに晒されるのが個人的に非常にツボだったので、wassrのyapcasia2009チャンネルに発言するとirc.freenode.orgの#yapc.asia-jaに投稿するボットも作ってみました。
wassrにはstreaming APIはないようなので5秒ごとにpollingしちゃってます。いいんでしょうか。
参考文献(つうかほぼパクリ):
Twitterのハッシュタグ付き発言をIRCに投稿するボットをYAPC::Asia向けに作った

以下コード

#!/usr/bin/perl
use strict;
use warnings;

use AnyEvent::IRC::Client;
use Net::Wassr;
use Encode ();
use Storable;

my $channel = '#yapc.asia-ja';
my $interval = 5;
my $wassr_channel = 'yapcasia2009';

my $wassr = Net::Wassr->new(
    user   => 'nihen',
    passwd => '*****',
);

my $cv = AnyEvent->condvar;
my $pc = AnyEvent::IRC::Client->new;

my $send_message = -e 'send_message' ? retrieve('send_message') : {};
$SIG{INT} = $SIG{TERM} = sub {
    $pc->disconnect('bye');
    store $send_message, 'send_message';
    exit;
};

$pc->reg_cb(
    connect => sub {
        my ( $pc, $err ) = @_;
        if ( defined $err ) {
            warn $err;
            return;
        }
    },
    registered => sub {
        my ( $self ) = @_;
        print "registerd!\n";
        $pc->enable_ping(60);
    },
    disconnect => sub {
        print "disconnected: $_[1]!\n";
    }
);
$pc->send_srv('JOIN', $channel);
$pc->send_chan($channel, 'NOTICE', $channel, 'hi');
$pc->connect('irc.freenode.org', 6667, {
    nick => 'wassr_bot',
    user => 'wassr_bot',
    real => 'wassr_bot',
});

my $w = AnyEvent->timer(after => $interval, interval => $interval, cb => sub {
    my $time_line = $wassr->channel_timeline('name_en=' . $wassr_channel);
    if ( !$time_line || ref $time_line ne 'ARRAY' ) {
        return;
    }

    foreach my $message ( @{$time_line} ) {
        next if $send_message->{$message->{rid}};

        $send_message->{$message->{rid}} = 1;

        $pc->send_chan($channel, 'NOTICE', $channel, Encode::encode('utf-8', $message->{user}->{login_id} . ': ' . $message->{body}));
    }
});

$cv->wait;

YAPC::Asia2009の参加トークをわかりやすくするグリモン作ったよ

  • 2009-09-09 (水)
  • perl
  • hatena count

さて、明日からついにYAPC::Asiaが始まりますね。皆さんは参加されるトークをすでに決められたでしょうか?

参加するトークの詳細ページ(ex.Welcome)でadd to personal scheduleを行うと参加トークの管理ができるようになっているみたいです。ただこれがスケジュール上では確認できなくてちょっと不便だなーと思ったのでわかりやすくするぐりもんを作ってみました。

yapcasia2009myschedule.user.js

です。いれるとスケジュールの表示がこうなります。あ、ログインした状態じゃないと表示されないです。

らくだのマークがわかりやすくて印刷用にも最適ですね!

では、YAPC::Asia会場でお会いしましょうです。

Home > Archives > 2009-09

Search
Feeds
Meta

Return to page top