perl

Access-Control-Allow-Origin を追加するmiddlewareを書いてた

一ヶ月くらい前に GitHub - punytan/Plack-Middleware-AccessControlAllowOrigin: Add Access-Control-Allow-Origin header を書きました 使い方 至って簡単ですね。ただ、AccessControlAllowOriginって名前が長すぎる builder { enable 'Plack::Middleware:…

Ubuntu 11.04 (Natty) で perl がインストール出来ない場合の理由と対策

追記 perlbrew 最新版では修正済みです。 patchperl にパッチ投げておきました。 perlbrewも最新のpatchperl を使うようになったので、失敗する場合はもう一度perlbrew の最新版を再インストールしてください(perlbrew のバージョン番号は変わってないので…

dotcloud雑感

みんながhello worldばかりやっているのでちょっとしたアプリつくってみようということで作ったもの。 Docker Cloud - Build, Ship and Run any App, AnywherePlack::Middleware::* なnamespaceを列挙して、モジュール名クリックでPODを読み込んでくれる超便…

Tatsumaki + AnyEvent::Twitter::Stream を一枚のスクリプトで完結させる方法

これができると嬉しいこと サーバとクライアントがひとつのプロセスにまとまってクローラー的なプロセスが必要なくなり、監視せずに済むので地味に嬉しい 概要 言われてみれば何だ、という程度ではあるけれども、app.psgiで Twiggy::Server を使い、コネクシ…

HTML::Entities::Recursive というモジュールを書いた

http://frepan.64p.org/~punytan/HTML-Entities-Recursive-0.01/ HTML::Entities::Recursive Encode / decode strings of complex data structure with HTML entities recursively SYNOPSIS use HTML::Entities::Recursive; my $recursive = HTML::Entities:…

Net::Amazon の謎

最近ちょっとした興味から、 http://tvtwi.com/ というのを書いて、番組内容連動広告っぽいのをアイディアとして実装してみたときのメモ。Twitter ユーザにはゴールデンタイムとアニメが人気あるみたい。 Amazon のキーワード検索を非同期で使いたいと思い立…

Plack::Builder についてちょっと調べてみた

Plack::Builder は Middleware をラップしてくれたり、 Plack::App::URLMap を使ったマッピングを担ってくれる。通常は次のように使う use Plack::Builder; use Plack::Session::Store::File; my $app = sub { ... }; my $app2 = sub { ... }; builder { ena…

Plack::Builder についてちょっと調べてみた(2)

前回の記事にいただいたコメントとどうも話がかみ合わないなぁと思っていたら勘違いしてました。すみませんすみません。#perl-casual で聞いてみたところ、 「mount は複数の PSGI アプリケーションを mount できるが、dispatcher の代替として使うことは意…

if-elsif-else の書き方

最近、個人的にいいなと思う if-elsif-else の書き方を見つけたのでメモしておく。nginx のソースと同じスタイルです。と言ってもパッとしないので例を見ていくと、 PBP / Programming Perl では if ((my $color = <STDIN>) =~ /red/i) { $value = 0xff0000; } elsi</stdin>…

構造化テキストのエスケープ

twitter関連。 こんな風に処理すればいいのかな 中心となる部分は Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について から拝借 入ってきたテキストが中途半端にエスケープされている*1ため、入ってくる…

vim で perl -c を通らない変更は保存しないようにする方法 + 小ネタ

Emacs 使ってる人に dis られた挙句、涙目で散々調べまわって苦労したのでメモ。 まずは次のものをインストール cpanm Vi::QuickFix perl_synwrite.vim - checks Perl syntax before allowing file write : vim online .vim/ftplugin/perl_synwrite.vim この…

perlbrew の環境で daemontools を使うためのメモ

既出かもしれないけれどもメモ。 perlbrew で構築した環境で /usr/bin/perl と ~/perl5 のバージョンが違う場合 run スクリプトで環境変数を export してあげないと perlbrew の利点を活かしきれない。ちなみに bash を中心に扱っているので、自分の環境に合…

テンプレートエンジン Text::Xslate について

速いと噂の Xslate ですが、実際どう使うのかという点ではまだまだ明文化されたものが少ないと思ったので http://xslate.org/intro.html を書いておきました。 記事では、イテレーションをはじめ、知っておくと便利な dump フィルタ、 mark_raw() がテーマに…

AnyEvent + OAuth で Twitter API を叩く

最近ようやく CPAN Author になりました。ふとAnyEvent::Twitter::StreamをOAuthに対応させたいなぁ、と思ったので(ついでにChirpUserStreamsにも) - taiyoh独言が目にとまったので、モジュールの紹介もかねて書いておきます。AnyEvent::Twitter の _make_…

AnyEvent::Twitterについての続き

結論から書くと elmex 氏に AnyEvent::Twitter の maintainer に設定していただいたので、 GitHub - punytan/AnyEvent-Twitter: AnyEvent::Twitter - A thin wrapper for Twitter API using OAuth に変更になります。 モジュールのAPIが大幅に変更になります…

AnyEvent::Twitterについて

いくつか Twitter のボットを作っているので Twitter の Basic 認証が6月に廃止される(Developer — Twitter Developers)ことが気になりつつも、一応いまのところ id:sugyan の EnableOAuth があるのでその場しのぎにそれを使う分には問題ないのだけれども、p…

App::AutoInstaller を書いた

とりあえず動いているみたいなので報告。人柱 & bug fix 歓迎しております。 レポジトリ GitHub - punytan/App-AutoInstaller: App::AutoInstaller - Install the needed modules in the script. A convinient script for perlbrew + cpanminus + cpan-outda…

PerlでMeCabを使うためのメモ on Debian Lenny

インストール # vim /etc/apt/sources.list -> non-freeを追記 # apt-get update # apt-get install mecab libmecab-dev mecab-ipadic-utf8 # vim /etc/apt/sources.list -> non-freeを削除 # apt-get update # cpanm Text::MeCab 正しくインストールされた…

AnyEvent::Twitter::Chirp を書いた

ChirpUserStreamsを簡単に使えるようにしてみました レポジトリ GitHub - punytan/AnyEvent-Twitter-Chirp: DEPRECATED INSTALLATION % git clone git://github.com/punytan/AnyEvent-Twitter-Chirp.git % cd AnyEvent-Twitter-Chirp/ % perl Makefile.PL % …

AnyEvent::IRC つかってみた

ただ作ってみたくなったので実装してみました。発言されたURLのタイトルとContent-Typeを返すボットです。 GitHub - punytan/mobijiro: IRC bot 名前はアレを真似てつけました。 レスポンスの文字コード AnyEvent::HTTP::http_get で取得すると、 UTF-8 だっ…

JSONモジュールの encode_json / decode_json と to_json / from_json について調べてみた

JSONモジュールの encode_json / decode_json と to_json / from_json について調べてみた。 間違いがあった場合は指摘お願いします。 encode_json / decode_json encode_json / decode_json は Encodeモジュールの encode_utf8 / decode_utf8 にJSONのシリ…

AnyEvent::HTTPでCookieを扱う

ここ数週間ずっと悩んでいたことがようやく解決した。ドキュメントも付けておいたのでgitsからとってきて適当にやってください。

AEの疑問点を二つメモ

AnyEventのエラー処理 下記のコードがメインのイベントループである時、 on_error と on_eof の場合にイベントループが終了する。Twitter Streaming API との接続が切れた場合のエラー処理として、再接続を試みるにはどんな方法があるか思いつかない my $cv …

TatsumakiとTwiggy使ってみた

Tatsumakiのeg/chatをほとんどそのまま流用しました。 それぞれの概要 Tatsumaki Tatsumaki - Non-blocking web framework based on Plack and AnyEvent Twiggy Twiggy - AnyEvent HTTP server for PSGI (like Thin) ニコ生アラートサーバ ニコニコ生放送と…

Tatsumaki::HTTPClientというモジュールの紹介

(注)まとまってない上に前置きが長くなります。 前回のエントリTatsumakiとTwiggy使ってみた - punitan (a.k.a. punytan) のメモに関して、LivePostHandlerで新しい項目をpostするときはPOSTを使ったほうが良い、と指摘されたものの、nicoalert.plの方でPOST…

VPSでcpanminusを使う

LinodeというVPSを契約したついでにちょうど良いので巷で話題のcpanminusを使ってみた。 依存関係もなく、何の設定もいらないので非常に楽でよい。これはおすすめ。 VSP環境だったので、一部嵌ったところがありましたが、Perl hackerのmiyagawaさんとlestrra…

PerlのTruth/Falsehoodメモ

Truth in Perl is always evaluated in a scalar context. Any string is true except for "" and "0". Any number is true except for 0. Any reference is true. Any undefined value is false. Programming Perl Chapter 1より一部抜粋 Truth and Falseho…

Perlのforeachについてメモ

The foreach statement Programming Perl Chapter 1(p.34)には Note that the loop variable refers to the element itself, rather than a copy of the element. Hence, modifying the loop variable also modifies the original array. とある。 "the loop…

Perlでメールを送信するときはEmail::Senderを使いましょうというお話

ことの経緯はEmail::MIME - Togetter まとめると、Email::MIME->create()のところうまく書けば良いよ、というお話。ところが今度はEmail::Send。Email::SendのPODには WAIT! ACHTUNG!Email::Send is going away... well, not really going away, but it's be…

PerlでTwitterのOAuthを使うサンプル

自分用メモです。 いろいろなサイトを参考にしましたが、完全なコードが見つからなかったのでとりあえずリンクは省略します。 TwitterのOAuthClientを下記URLから設定 http://twitter.com/oauth_clients consumer_keyとconsumer_secretを取得する。 おおまか…