perl

Net::Twitter->updateのresをMojo::JSONに通すとidがズレる

TweetのIDはMojo::JSONを通る過程で丸められてしまう事がある、という話。 use feature 'say'; use Net::Twitter; use Mojo::JSON 'j'; my $nt = Net::Twitter->new( ... ); my $res = $nt->update( scalar localtime ); say $res->{id}; => 362827222706438…

TwitterのOAuth認証なボットを書くのは簡単

Twitterボットを書くこと自体はとても簡単だけれど、OAuth認証?面倒そう!って人がいそうなので、全然そんなこともないよ、と言う話を書いておこうと思う。いろいろ探すといくらでも出てくる情報ではあるのだけれど、APIへのアクセスをライブラリに任せてい…

IM::EngineとStardustで3分クッキング

YAPC::Asia 2009で(少なくとも個人的に)話題だったセッションから、StardustとIM::Engineを使って3分クッキングしてみる。(実際どのくらいかかるかはよくわからん。) 概要 Stardust(CPAN, github)は簡単に使えるCOMETサーバ。COMETでStardust…ああ、ネ…

perlでUTF-16LE + BOM

稀に、ファイルをUTF-16LE + BOMで保存したいということがある。そもそもBOMが付いている訳だから、エンディアンがどうであるかを気にする必然は無いと思うし、特定のエンディアンしか読めないのならUTF-16LEと言い切ってしまえば良い訳で、その場合BOMは無…

Storable

どうでも良い話なのだけれど、Storableって、どう読むんだろう?『すとらぶる』?『すとれいぶる』?いろいろ調べたのだけれど、分からない。ネイティブに聞けばいいんだろうけれど、近場にいないしなぁ。つーわけで、人力で聞いてみようかな。→question:114…

use lib

use libで複数のパスを指定した時、どっちが優先されるか。うる覚えで先が優先だったと思っていたのだけれど、確信が無かったのでid:hideokiさんに聞いた。プラグマ系は割とコードを読めば分かるよと教えてもらった。実際、perldoc -m libとすると、 sub imp…

StorableとIntel Mac

Perlの構造体を永続化するモジュールで、Storableというのがある。Storableは諸般の事情(バージョンアップで以前のバイナリが読めなくなったりするとか)の為に長期間の永続化には向かないが、キャッシュとかそういうのはわりとStorableでいいやという判断…

rand

Perlで簡単に乱数を使うときはrand関数を使う。ただこれ、乱数の種がtimeだったりして、短い間に複数回使うと同じ値が返ってきた。のでsrandで工夫する。てか、前はsrandを呼ばないとrandが呼べなかったし。これはいつの事だっただろうか。最近気になる事が…

マジカルなPerl

JavaScriptで、渡ってくる引数を全部取り出したくて、ちょっと調べた。つまり、Perlで言えば、次のようなことがしたい。 sub func { my @args = @_; ... http://www.openspc2.org/dhtml/javascript/arguments/index.html どうやら、argumentsで取れるらしい…

文字列の中から、特定の文字列の出現回数を数える

例えば、 my $str = 'はてなアンテナ、はてなブックマーク、はてなカウンター、はてなダイアリー';とあったとき、その中の『はてな』の個数を数えたい。私だと、ぱっと思いつくのは次のコードである。 my $count = $str =~ s!はてな!はてな!g;ちなみに$strを…

きよへろリファクタリング

id:kiyoheroさんがPerlを勉強し始め、そのソースを公開し始めた。Perlを勉強し始めてます - kiyoblo(@kiyohero)そうしたらid:naoyaさんがリファクタリング(?)記事を書いた。 きよへろの Perl コードをリファクタしようのコーナー - naoyaのはてなダイア…

2ヶ月前の末日を取り出す

例えば今日(10/11)なら、8/31を取り出したい。これが思ったより厄介な問題だ。原因は1ヶ月の日数が一定ではないという点。例え10/11から8月という月を取り出すだけであっても、単純に60日分の秒数を引けばよいということにはならない。1ヶ月で考えればよ…

JSONで遊びたい

JSONをいじってみようと思っていたのだが、うまい具合にデータを出してくれているところが少ない。(del.icio.usくらい?)そんなわけで、RSSをJSONに加工して、それで遊んでみることにした。 #!/usr/bin/perl use strict; use CGI::Carp qw(fatalsToBrowser…

useとrequireの違い

よく『大ざっぱに言うと最初に読み込まれるか、実行時に読み込まれるかだ。』みたいなものを見かけるが、大ざっぱじゃないところが知りたい。で、これまで見かけたいろいろを合わせると、こういうことなのだろうか? use Foo;は BEGIN{ require Foo; Foo->im…

Perl/CGI

mod_perlはかなり凄いということが分かったが、だから諸手を上げて何でもmod_perlというわけにも行かないのが悩ましい。mod_perlの唯一にして最大の弱点は、サーバにmod_perlがインストールされていて、ある程度権限をもらっていないと使えないということだ…

FillInFormのインスタンスを使い回す

mod_perl環境では、いったんロードしコンパイルしたインスタンスは永続的に使用可能である。従って、これを利用すればもっと速いんじゃないかという話。前回はCGI環境を想定したのでさらにmod_perlも考えてみよう。 というわけで、ベンチコード。 #!/usr/bin…

HTML::Template only VS HTML::FillInForm

さて、こうなってくると、毎度おなじみベンチマーク。 今回は、HTML::Template(test1)とTemplate::Tool(test2)ということにしました。その結果は、以下のとおりです。 HTML::FillInForm便利!って話なんだが、確かに便利そう。ただ気になるのは、HTML::P…

UNIVERSALクラス

自分用メモ。Perlでblessされて作成されるオブジェクトは、すべてUNIVERSALクラスを継承するらしい。という話を聞きつつ、これまで特に用は無かったで放っておいたのだが、最近ちょっと気になって調べてみた。 perldoc UNIVERSALUNIVERSALクラスでいくつかの…

Perl 6

ところで、噂?ではPerl 6ではメソッド呼び出しに矢印演算子ではなくてドットを使うらしい。Synopsis 6 - Perl.com相変わらず頭に$があって、さらにドット+メソッドというのがなんとも違和感を覚えるが、気にしないことにしよう。(ただ、別に矢印でも良か…

呼び出し方の続き

昨日はJava的と書いたのだが、よく考えてみるとJavaでこういう書き方をするのはコンストラクタだけだなぁ。何となく思ったので書いておく。 Class instance = new Class(); instance.do();こう考えてみると、コンストラクタでnew Class、メソッド呼び出しで…

メソッド呼び出しの書き方

Perlの場合、メソッド呼び出しの書き方が選べる。一つは my $instance = Class->new; $instance->do;のように矢印演算子を使うパターンと、 my $instance = new Class; do $instance;のようなJava的な書き方だ。TMTOWTDIを標榜するPerlらしい。出来ることは…

あ。

d:id:naoya:20050615:1118815343feed mergeのアップデート時に、XML::RSS::LibXMLに変えてみようかなー。

XMLRPC::Liteの警告

PingBadge ver.3を作っているのだが、-wオプションのせいか、どうもApacheのエラーログにwarningが出る。 XMLRPC::Transport::HTTP::CGI->dispatch_to('weblogUpdates')->handle;Use of uninitialized value in pattern match (m//) at /Library/Perl/5.8.6/…

デバッガ

perl -dでデバッグモードで動く。結構そっけないデバッガなので、通常はいわゆるprintデバッグで何とかしてしまう場面が多いんだが、モジュールを作りすぎて?大変なことになっているので、デバッガで追っかけることに。どうもこれ、あんまり効率が良いとも…

changes.xmlを利用したウェブリングもどき

changes.xmlを使って得たリストを、順にめぐっていけるようなシステムを考えてみる。一言で言えばウェブリングだが、順番が動的(更新順)であること、登録も動的(changes.xmlに載れば登録、消えれば削除)であること、ウェブリング用のリンクを張ってもら…

XML::Simpleを使ってみる

『正規表現でもいいけど XML::Simple もいいぜよ。』なーんて書いてもらっていたので、XML::Simpleを使ってみる。XML::Simpleは、XMLをPerlの構造体にしてくれるモジュール。要するに、XMLを食わせればPerlで扱える形にしてくれるというわけだ。これを使って…

前回のミス

ランダムジャンプのほうで、ちょっとミスというかなんというか。 $array->[ int rand $#{$array} ]->{uri}こうすると、ひとまずだいたい動くんだが、よく考えてみるとちょっとだけおかしい。分解して考ると…intは引数の小数点以下を切り捨てる、randは0以上…

changes.xmlのおさらい

はてなダイアリーがchanges.xmlの出力を始めたらしいので、おさらい。まずは仕様。→ http://newhome.weblogs.com/changesXmlchanges.xmlはweblogs.comが出していた、とてもシンプルなXMLで、更新されたURLのリストを配信するためのもの。単にURLだけを並べた…

カレンダーを作る

お仕事でカレンダープログラムを作ることになって、『簡単CGI: カレンダーを作ろう』なんかを参考にとりあえずクラスを作る。(長いので)一部削除しているが、公開されているものを参考にさせていただいたので、感謝を込めて肝のところだけ私も公開。 packa…

ヒント

灯台下暗し。『Catalyst入門: Actionの定義とその処理の流れ(前編) - qootas.org/blog』の一番下にヒントが。さっそく(時間のあるときに)perldoc attributesしてみよう。