perl
一ヶ月くらい前に GitHub - punytan/Plack-Middleware-AccessControlAllowOrigin: Add Access-Control-Allow-Origin header を書きました 使い方 至って簡単ですね。ただ、AccessControlAllowOriginって名前が長すぎる builder { enable 'Plack::Middleware:…
追記 perlbrew 最新版では修正済みです。 patchperl にパッチ投げておきました。 perlbrewも最新のpatchperl を使うようになったので、失敗する場合はもう一度perlbrew の最新版を再インストールしてください(perlbrew のバージョン番号は変わってないので…
みんながhello worldばかりやっているのでちょっとしたアプリつくってみようということで作ったもの。 Docker Cloud - Build, Ship and Run any App, AnywherePlack::Middleware::* なnamespaceを列挙して、モジュール名クリックでPODを読み込んでくれる超便…
これができると嬉しいこと サーバとクライアントがひとつのプロセスにまとまってクローラー的なプロセスが必要なくなり、監視せずに済むので地味に嬉しい 概要 言われてみれば何だ、という程度ではあるけれども、app.psgiで Twiggy::Server を使い、コネクシ…
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:…
最近ちょっとした興味から、 http://tvtwi.com/ というのを書いて、番組内容連動広告っぽいのをアイディアとして実装してみたときのメモ。Twitter ユーザにはゴールデンタイムとアニメが人気あるみたい。 Amazon のキーワード検索を非同期で使いたいと思い立…
Plack::Builder は Middleware をラップしてくれたり、 Plack::App::URLMap を使ったマッピングを担ってくれる。通常は次のように使う use Plack::Builder; use Plack::Session::Store::File; my $app = sub { ... }; my $app2 = sub { ... }; builder { ena…
前回の記事にいただいたコメントとどうも話がかみ合わないなぁと思っていたら勘違いしてました。すみませんすみません。#perl-casual で聞いてみたところ、 「mount は複数の PSGI アプリケーションを mount できるが、dispatcher の代替として使うことは意…
最近、個人的にいいなと思う if-elsif-else の書き方を見つけたのでメモしておく。nginx のソースと同じスタイルです。と言ってもパッとしないので例を見ていくと、 PBP / Programming Perl では if ((my $color = <STDIN>) =~ /red/i) { $value = 0xff0000; } elsi</stdin>…
twitter関連。 こんな風に処理すればいいのかな 中心となる部分は Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について から拝借 入ってきたテキストが中途半端にエスケープされている*1ため、入ってくる…
Emacs 使ってる人に dis られた挙句、涙目で散々調べまわって苦労したのでメモ。 まずは次のものをインストール cpanm Vi::QuickFix perl_synwrite.vim - checks Perl syntax before allowing file write : vim online .vim/ftplugin/perl_synwrite.vim この…
既出かもしれないけれどもメモ。 perlbrew で構築した環境で /usr/bin/perl と ~/perl5 のバージョンが違う場合 run スクリプトで環境変数を export してあげないと perlbrew の利点を活かしきれない。ちなみに bash を中心に扱っているので、自分の環境に合…
速いと噂の Xslate ですが、実際どう使うのかという点ではまだまだ明文化されたものが少ないと思ったので http://xslate.org/intro.html を書いておきました。 記事では、イテレーションをはじめ、知っておくと便利な dump フィルタ、 mark_raw() がテーマに…
最近ようやく CPAN Author になりました。ふとAnyEvent::Twitter::StreamをOAuthに対応させたいなぁ、と思ったので(ついでにChirpUserStreamsにも) - taiyoh独言が目にとまったので、モジュールの紹介もかねて書いておきます。AnyEvent::Twitter の _make_…
結論から書くと elmex 氏に AnyEvent::Twitter の maintainer に設定していただいたので、 GitHub - punytan/AnyEvent-Twitter: AnyEvent::Twitter - A thin wrapper for Twitter API using OAuth に変更になります。 モジュールのAPIが大幅に変更になります…
いくつか Twitter のボットを作っているので Twitter の Basic 認証が6月に廃止される(Developer — Twitter Developers)ことが気になりつつも、一応いまのところ id:sugyan の EnableOAuth があるのでその場しのぎにそれを使う分には問題ないのだけれども、p…
とりあえず動いているみたいなので報告。人柱 & bug fix 歓迎しております。 レポジトリ GitHub - punytan/App-AutoInstaller: App::AutoInstaller - Install the needed modules in the script. A convinient script for perlbrew + cpanminus + cpan-outda…
インストール # 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 正しくインストールされた…
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 % …
ただ作ってみたくなったので実装してみました。発言されたURLのタイトルとContent-Typeを返すボットです。 GitHub - punytan/mobijiro: IRC bot 名前はアレを真似てつけました。 レスポンスの文字コード AnyEvent::HTTP::http_get で取得すると、 UTF-8 だっ…
JSONモジュールの encode_json / decode_json と to_json / from_json について調べてみた。 間違いがあった場合は指摘お願いします。 encode_json / decode_json encode_json / decode_json は Encodeモジュールの encode_utf8 / decode_utf8 にJSONのシリ…
ここ数週間ずっと悩んでいたことがようやく解決した。ドキュメントも付けておいたのでgitsからとってきて適当にやってください。
AnyEventのエラー処理 下記のコードがメインのイベントループである時、 on_error と on_eof の場合にイベントループが終了する。Twitter Streaming API との接続が切れた場合のエラー処理として、再接続を試みるにはどんな方法があるか思いつかない my $cv …
Tatsumakiのeg/chatをほとんどそのまま流用しました。 それぞれの概要 Tatsumaki Tatsumaki - Non-blocking web framework based on Plack and AnyEvent Twiggy Twiggy - AnyEvent HTTP server for PSGI (like Thin) ニコ生アラートサーバ ニコニコ生放送と…
(注)まとまってない上に前置きが長くなります。 前回のエントリTatsumakiとTwiggy使ってみた - punitan (a.k.a. punytan) のメモに関して、LivePostHandlerで新しい項目をpostするときはPOSTを使ったほうが良い、と指摘されたものの、nicoalert.plの方でPOST…
LinodeというVPSを契約したついでにちょうど良いので巷で話題のcpanminusを使ってみた。 依存関係もなく、何の設定もいらないので非常に楽でよい。これはおすすめ。 VSP環境だったので、一部嵌ったところがありましたが、Perl hackerのmiyagawaさんとlestrra…
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…
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…
ことの経緯は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…
自分用メモです。 いろいろなサイトを参考にしましたが、完全なコードが見つからなかったのでとりあえずリンクは省略します。 TwitterのOAuthClientを下記URLから設定 http://twitter.com/oauth_clients consumer_keyとconsumer_secretを取得する。 おおまか…