perl

TwiterとOAuthとperlでの実装

UmakatterにOAuthを利用した機能を組み込みました。 TwitterのOAuthなのですが、Net::Twitter を利用すると本当に簡単に実現できます。こんなコードです。 OAuthアカウント作成 http://twitter.com/oauth_clients にて、アカウントを作成してください。 Net:…

Catalyst::Controller::ActionRoleって...

action_rolesを指定して、コントローラ全体にmodifierかけると微妙だよね。 例えばこんな感じ。 package Umakatter::Web::Controller::Example; use strict; use warnings; use base qw/Catalyst::Controller::ActionRole/; __PACKAGE__->config( action_rol…

Planet Perl Iron Man(lang:ja)

つい勢いでhttp://ironman.perl-mongers.org/に参加した。http://svn.coderepos.org/share/websites/perl-mongers.org/Ironman/IronmanFeeds.txtにフィードを追記すれば表示されるらしい。

CPANがrepositoryリンク表示をサポート

Repository link now appearing on CPANCPANに上げたモジュールに、レポジトリのリンクが張れるようになったのか。Net-GitHub

Mouse new(undef);

versionあげたら、この変更でオワタ>_< 0.20 Thu Apr 9 20:22:33 2009 * To improve Moose compat, a single undef passed to new is now disallowed (Sartak)

Cache::Memcached::Fast 0.13 -> 0.14

ketama_pointsを利用してる場合で、最近サーバを追加して、それとなく新しバージョンのCache::Memcached::Fastをインストールしてしまった人は注意。バージョンをあわさないと残念なことになります。ええ、そうです、残念なことになりました。 0.14 2009-02-…

handerの戻り値は真面目にしようね

sub handler($$){ return 'NOT_FOUND'; } みたいにやると、タイムアウトするまでリトライがはじまるよ。modperl1系で生存を確認

そういえば聞かれたので

適当に書いてみた。warningでてるのは気のせい ソース nico-html.pl #!/usr/bin/perl use warnings; use strict; use Data::Dumper; use WebService::Simple; use utf8; #sm9 my $url = sprintf( 'http://www.nicovideo.jp/api/getthumbinfo/%s' , $ARGV[0] …

共有メモリ

http://d.hatena.ne.jp/hideden/20080409/1207740439のやつで、エラーログを眺めるだけのお仕事がめんどくさいから手を加えた。これを仕込んでおいて package INCDiff; use strict; use Apache::Constants qw(OK); use vars qw(%init_module); my $FILE = '/…

Data::Page

1.* 系と 2.*系はアクセッサ周りの実装が違うので注意です 1.*系だと、get onlyなので $page->total_entries($total_entries); $page->entries_per_page($entries_per_page); $page->current_page($current_page); こういうのできない。 疲れた。

Test::Base利用時に、__DATA__の中身の量が多い場合、ファイル分割してわかりやすくする

t/hoge.t use Test::Base qw/no_plan/; my $DIR = 't/data'; spec_string( &load_data() ); run { my $block = shift; # 貴方のテストをここへ。テスト名を入れるのを忘れずにね。 is( $block->before , $block->after , $block->name ); }; sub load_data {…

俺はお前を盗んで調教したいんだよって時の方法

Original.pm package Original; use warnings; use strict; sub password { 'hogehoge'; } sub name { 'angelos'; } 1; Stealer.pm package Stealer; use warnings; use strict; use Class::Inspector; use Data::Dumper; use Sub::Install; use UNIVERSAL::…

家探し2

ウーム。雰囲気。戻り値は Path::Classのobjのほうがお洒落か。 package App::Home; use warnings; use strict; use base qw/Class::Data::Inheritable/; use Cwd (); __PACKAGE__->mk_classdata('app_name'); __PACKAGE__->mk_classdata('order'); __PACKAG…

僕の家

package My::Sweet::Home; use warnings; use strict; use Cwd (); our $APP_NAME = 'HOGE'; our $Home = undef; sub location { my $self = shift; my @homes = ( sub {$My::Sweet::Home::Home}, sub { $ENV{ $APP_NAME . '_HOME' } }, sub { Cwd::getcwd }…

Perl_sv_2iv_flags ....

Date::Calc installしたけどアプリうごかしたら Perl_sv_2iv_flags これがない的なエラーになった...help me. 追記 perlに当ててたパッチが悪さしてたもよう。取り外したらいけた。

XML::Liberalのtestがこける

XML::Liberalのテストがほとんどこけるなぁ。ftp://xmlsoft.org/libxml2/libxml2-2.7.2.tar.gz の XML::XMLLibなんだけど。なんだろう。 追記1 http://rt.cpan.org/Public/Bug/Display.html?id=41802これか。 追記2 XML-LibXML-1.65 まで下げると、ほとんど…

32bit perl ON 64bit OS

XSを使用したモジュールのmakeが出来ない場合、ExtUtils::MakeMaker::Configに $Config{lddlflags} = '-m32 ' . $Config{lddlflags}; を追加すればとりあえずうまくいくかも。perlのconfigureのoptionで設定する方がベターだけど。

Mouse::Role

Mouse::Role系は便利だけど、モリモリ関数を増やしまくると、コードがおえなくなるので使い過ぎに気をつけた方が良いと思った。使う際には、ネームスペースや関数名からGuessできるように気を配るとかかなぁ。

goto &NAME

http://d.hatena.ne.jp/tomyhero/20081231/1230735039使うケースというのは、呼びもとクラスをコントロールしたい時でいいのかなa.pl #!/usr/bin/perl use Hage; package Hoge; sub import { use Data::Dumper; print Dumper caller ; print "---------\n"; …

モジュールに設定ファイルとか入れて読み込む

File::ShareDirを使えばいいのか。 もうちょっと詳しく

Mojo入門

とりあえずわかったのは、ソースに書いてるコメントがおもしろい。ここに記入されてる Comments should be funny if possible.だ。例 # Are you saying you're never going to eat any animal again? What about bacon? # No. # Ham? # No. # Pork chops? # …

DateTime ~ 'local' vs DateTime::TimeZone->new(name => 'local')

同じタイムゾーンの場合 'local' って指定するんじゃなくて、$timezoneのオブジェクトを使い回した方がはやい。 #!/usr/bin/perl use strict; use warnings; use Benchmark qw(:all); use DateTime; use DateTime::TimeZone; my $timezone = DateTime::TimeZ…

split

my $hoge = "hoge "; my @items = split("\n", $hoge ) # hogeだけ my @items = split("\n", $hoge , -1 ); # 改行も入る

秘書

http://d.hatena.ne.jp/xcezx/20080925/1222285415そういえば、こんなのも実装してた。サーバーの設定によって誤差でまくるんだけど、ping を利用して、スケジュールを登録しておいて、 その日時に連絡してくれるってやつです。多少誤差があるんだけど、それ…

へんてこへんすう

Parse::RecDescentを継承したパーサーで$::RD_AUTOACTIONとかつかうとgdgdになるので、 サランラップする必要がある。使いづらいので、ベストプラクティスな実装にしてほしい。 package OreOre::Parse; use base qw/Parse::RecDescent/; sub _nextnamespace(…

Parse::Yapp gdgd日記(1)

Foo.yp %{ use strict; use warnings; use Data::Dumper; %} %% body : section | body section { shift; return join( "\n" , @_ ); } ; section : h1 { my ($self, @patterns) = @_; return '<h1>' . $patterns[0] . '</h1>'; } | letters RETURN ; h1 : ASTARISK l…

FormValidator::LazyWay 最近問題かなぁと思った点

メッセージ周りが取り込まれすぎてる点 config自体に書くのではなくて、config でリソースファイルを指定して読み込んだりする方が良いのかと思った。後、Rule::Hoge::Ja 系もリソースファイル化したほうが、ぶっちゃけいいよなぁ。 tableのカラム名を id の…

Parse::Yapp gdgd日記(0)

Parse::Yapp入門した。正直さっぱりだ。 h1にする こんなやつを *hoge123あ こうするだけ <h1>hoge123あ</h1> Hoge.pm %{ use strict; use warnings; use Data::Dumper; %} %% body : | h1 { my ($self, @patterns) = @_; return '<h1>' . $patterns[0] . '</h1>'; } ; h1 : '*…

Mooooooose

Mooseを使って飽きたので、取り外す作業中のtomyheroです。皆様いかがお過ごしでしょうか。「正直、Mooooooose 溺愛のPerlコミュニティにはついていけない」を読んでを読んで 空気を読まずあるモジュールで使ってみたら、id:yoshidasterさんに取り除かれまし…

single()

primary keyじゃない一件だけのデータをとりたかったので、single() つけた。 sub single { my ( $self, $terms, $options ) = @_; my $res = $self->search( $terms, $options ); return $res->next; }