北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

perl+web

今日はYAPC::Asia Tokyo 2013の2日目です

2日目です。地元開催なので、地の利を生かして朝からタリーズでのんびり朝食などとっております。今日もgihyo.jpさんのスペシャルレポートにレポーターとして参加しています。

YAPC::Asia Tokyo 2013 を終えて

今年もYAPCが終わった。スタッフを始めとした関係者の皆様には、本当にありがたいと思っている。また、gihyo.jpの担当の@k_takaさんには、今年も大変お世話になった。さて、今年のYAPCに参加して感じたことが2つある。まず、世の中は自分が思った以上に進ん…

今日はYAPC::Asia Tokyo 2013の1日目です

一日目です。今日もgihyo.jpさんのスペシャルレポートにレポーターとして参加しています。

今日はYAPC::Asia Tokyo 2013の前夜祭です

今年もYAPC::Asia Tokyoの季節がやって参りました。今年の会場は慶應義塾日吉キャンパスです。夕方から始まる前夜祭から参加する予定ですので、いつものように適当にメモをとっていきます。今年もgihyo.jpさんのスペシャルレポートにレポーターとして参加し…

今日はYAPC::Asia Tokyo 2012の2日目です

YAPC::Asia Tokyo 2012の最終日です。電源ケーブルを忘れたので一度家に帰りますが、東大内の伊藤国際学術研究センターに向かいます><今日もgihyo.jpさんの特集にレポーターとして参加します。@amayanさん、@moznionさん、ya_k0さん、@takayuki_hさんのメ…

今日はYAPC::Asia Tokyo 2012の1日目です

今日は昨日に引き続きYAPC::Asia Tokyo 2012の1日目です。東大内の伊藤国際学術研究センターに入り開会を待っております。今日もgihyo.jpさんの特集にレポーターとして参加します。昨日と同様に@amayanさん、@moznionさん、ya_k0さん、@takayuki_hさんが中心…

今日はYAPC::Asia Tokyo 2012の前夜祭です

今日はYAPC::Asia Tokyo 2012の前夜祭です。去年までとは会場が代わり、今年は東大内の伊藤国際学術研究センターにて開催されます。今日から最終日まで参加する予定ですので、いつものように聞いた話をリアルタイムでメモっていくつもりです。なお、今年もgi…

Re: Perlでちえんひょうか

dankogai 2012/08/26 01:48 http://blog.livedoor.jp/dankogai/archives/51059559.htmlPerlでちえんひょうか ありがたい先人の知恵に従ってみるとだいぶシンプルになって素晴らしいのだけど、dump_listの戻り値のvoidを評価させるのが泥臭くなった。 use str…

Perlでちえんひょうか

Perlは正格評価なので、無限リストにheadをかけても停止してくれない。 use strict; use warnings; sub nil() { 'Nil' } sub concat($$) { my ($x, $xs) = @_; [$x, $xs]; } sub repeat($); sub repeat($) { my $x = shift; concat $x, (repeat $x); } sub h…

Test::LeakTrace についてメモ書き

ハマったので未来の自分のためにメモ書きを残しつつ、今年もよろしくお願い致しますm(_ _)m。 Test::LeakTraceの特性 Test::LeakTrace で、以下のテストは通る。 my %x; no_leaks_ok { $x{x} = undef }; しかし以下のテストは通らない。 my @x; no_leaks_ok …

AE::cv->cb のコールバック実行タイミングについての小噺

$cv を実行が終わるまで取っておこうとして、 package CVPrinter; use strict; use warnings; use AnyEvent; sub new { bless {}, $_[0] } sub print_cv { my ($self, $cv) = @_; $cv->cb(sub { my ($v) = $_[0]->recv; print $v, "\n"; delete $self->{cv};…

Hokkaido.pm #6 は 12月10日 です

Hokkaido.pm #6 への参加申し込みはお早めにどうぞ。 今回は、懇親会の1次会までの参加です。今回は@sugyan さんの参加が確定してますし、@nekokak さんもスケジュールがあえばいらっしゃるようです。純粋にスキルアップを狙う人はもちろん、Perlを使ってい…

Directing AE with Arrows

@maki_daisukeさんに教えてもらったのを読んで実装してみた。 use strict; use warnings; { package AsyncArrow; use Scalar::Util qw/weaken/; use AnyEvent; use Exporter qw/import/; use Class::Accessor::Lite new => 1, rw => ['code']; our @EXPORT =…

「Hokkaido.pm のおかげで結婚できました」

めでたい RT @lestrrat: [YAPC::Asia のおかげで結婚できました」RT @hiratara: 無事に婚姻届が受理されたとこ。@Yappo 「YAPC::Asia のおかげで結婚できました」エントリありますか RT @hiratara: 無事に婚姻届が受理されたとこ。@lestrrat エアRTからの無…

今日はYAPC::Asia Tokyo 2011の2日目です

あいにくの雨ですが、今日も時間通り会場に到着しています。本日もgihyo.jpさんの特集のレポーターをやってます。参加されているみなさんと一緒に楽しみながらレポートしようと思っています。

YAPCで話さなかったこと

今回のトークでは「斜めの矢印」とか「合成」とかそういう言葉を説明に含める必要があったので圏論のことばや記法を前半で色々紹介しましたが、泥沼詳細には踏み込み過ぎないように気をつけました。その泥沼詳細にあえて踏み込んでみたい人のために、このト…

YAPCで話したこと

今回のYAPCでスピーカーデビューしてきました。スライドは以下にあります。 Monads in Perl (動画) 応募した当初は、十数名聞きにくればいいかなーと思っていたのですが、蓋を開けてみると結構な人数に聞いていただき、ほんとうにありがとうございました。今…

今日はYAPC::Asia Tokyo 2011の1日目です

YAPC::Asiaの季節がやってまいりました。昨日は寝込んでいましたが、今日は朝から出席します。場所は東京工業大学大岡山キャンパスです。なお、今年もgihyo.jpさんの特集のレポーターをやってます。会場の熱気を伝えられるよう、頑張ります。なお、機材トラ…

Data::Monad::CondVar をリリースしました

YAPC Asia 2011で話をする予定のモジュールをCPANへアップしました。Data::Monad::CondVarはJSDeferred みたいなもんです。 use AnyEvent; use AnyEvent::HTTP; sub random_choice { my ($data, $headers, $cb) = @_; my (@url) = $data =~ m{href="(http:[^…

Catamorphism の他の例

Catamorphismを使って二分木での畳み込みを定義すると比べると関連が見えてくるかも? リストの畳み込み 自己関手Fとして、型Xを1+A*Xへ移すものをとる。1+A*ArrayRef A→ArrayRef A なる以下のF代数が始対象となる。 sub array(;$$) { @_ == 0 ? [] # type 1…

Catamorphismを使って二分木での畳み込みを定義する

高階関数がなす圏上の自己関手Fとして、型Xを A+X*X へ移すものを考える。A+X*X は具体的には、$a∈A 、$x1, $x2∈X としたとき、$a または ($x1, $x2) の形を含むもの。F代数とは、FX→X のような射をいう。例えば、以下のような射A+Int*Int→Int。 sub choose_…

Tengのソースを読む(3)

Teng-0.11 IT'S IN ALPHA QUALITY. IT MAY CHANGE THE API WITHOUT NOTICE.」">*1の最後。プラグインを見てみる。 概要 第一回で見たようにPluginはTengクラスにメソッドを生やすものなので、どんなメソッドが生えるか見る。 Teng::Plugin::BulkInsert 複数…

Tengのソースを読む(2)

Teng-0.11 IT'S IN ALPHA QUALITY. IT MAY CHANGE THE API WITHOUT NOTICE.」">*1の続き。今日はSchemaクラスとRowクラス周り。 概要 Teng::Schemaと Teng::Schema::Table はスキーマ情報の保持、Teng::Schema::Declare とTeng::Schema::Loader, Teng::Schem…

Tengのソースを読む(1)

次はORMの最近の事情を知りたいのでTeng-0.11(ただし、「> IT'S IN ALPHA QUALITY. IT MAY CHANGE THE API WITHOUT NOTICE.」)。今日はTengクラス周り。 Tengでは Teng->new で得られるオブジェクトを起点に様々な操作を行う。DBやテーブルやカラムの情報を…

DBIx::TransactionManagerのソースを読む

今日はDBIx::TransactionManager-1.09。1ファイルしかないのでさっくりと。 中では2クラス定義がされていて、DBIx::TransactionManager と DBIx::TransactionManager::ScopeGuard。前者がメインで、後者はスコープガード用のクラス。 txn_begin の中では$dbh…

Amon2のソースを読む(5)

今日はAmon2-2.49のDSL周り。これで最後。 Amon2::Declare $c じゃなくて c() 使えたらいいよねって話。内容物の中では、t/ 内のExtended::V::MT::Context にて、テンプレからcを呼び出せるようにするために使っている。 Amon2::Lite Sinatra-ish な書き方が…

Amon2のソースを読む(4)

今日はAmon2-2.49のTriggerとPluggin。 Amon2::Trigger クラスに対してもインスタンスに対してもフックがかけられ、それぞれ@Class::_trigger と $obj->{_trigger} を使って保存される。get_trigger_code を呼ぶと関連するハンドラを全て取得できるが、イン…

Amon2のソースを読む(3)

今日はAmon2-2.49のscaffoldとDispatcher。--flavor=Basic が基本なんで、それを読む。 概要 scaffold 内のPerl関連のファイルはapp.psgiとYourProject.pmとYourProject::Webと YourProject::Web::Dispatcher だけ。実際のユーザ側の処理は YourProject::Web…

Amon2のソースを読む(2)

今日はAmon2-2.49のコンテキスト周りで、具体的には Amon2、Amon2::Web、Amon2::WebRequest、Amon2::WebResponse、ついでにAmon2::Config::Simple 。Dispatcher はこれらと粗結合なので、次回以降。他残っているのは、scaffoldのコードと、トリガーとプラグ…

YAPC::Asia Tokyo 2011 「チケット絶賛発売中です!」とのこと

YAPC::Asia Tokyo 2011 が10/13〜10/15 に開催されます。チケットの販売も始まってますので、買ってない方は締め切りが近いようなので早く買った方がいいです。今年は初スピーカーとして出られることになったので、Monads in Perlという題でこんな話とかこん…

Amon2のソースを読む(1)

今日は Amon2-2.49 のscaffoldの作成まで。具体的にはAmon2::Setup:: 名前空間の部分。 amon2-setup.pl script/amon2-setup.pl がscaffoldの作成スクリプトだが、これは各フレーバーをnew->runしてるだけ。フレーバはAmon2::Setup::Flavor:: という名前空間…

Router::Simpleのソースを読む

最近モダンなPerlのソースを読んでなかったので、ぼちぼちソースを読んでみようかと。ってことで、Router::Simpleの0.09です。まともに使ったこと無いのにソースだけ読んでるので、間違ってたらごめんなさい(これから使うつもりだけど)。 概要 Router::Simpl…

今日はShibuya.pm #16の日です

今日は夏の正規表現祭りに参加していますので、自分用にメモします。ustreamもあります!

fixed point operator による再帰的な記述の除去

論理と計算のしくみを読んでるメモ。fixed point operator があれば、再帰的な記述を再帰しない記述に直せる。再帰的な記述とは、例えば、以下のようなもの。 my $fact = sub { my $x = shift; $x <= 1 ? 1 : $x * $fact->($x - 1); }; 階乗を求める関数$fac…

7/16(土)はHokkaido.pm #5です

Hokkaido.pm #5やるみたいなんで、はりきって実家に帰らせていただきます参加してきます!Teng(とかDBIx::Skinnyとか)で有名な@nekokakさんがいらっしゃるので、色々とためになる話が聞けると思います。北海道の人はみんな出ればといいと思います。

スライド「YAPCレポートの舞台裏」

Hokkaido.pmで話してきたので、スライドを貼っておきます。あがり症なんで人前に出ることはほとんどないのですが、今回は地元だったので頑張りました! でもやっぱりあがりました!!YAPCレポートの舞台裏View more presentations from hiratara. 今回は参加…

今日はHokkaido.pm #3の日です

本日、札幌にてHokkaido.pm #3が開催予定です。なんか飛行機も快速エアポートも混んでて移動が大変ですが、着き次第いつものようにメモ取ります。

Haskellで書いたCGIをPerlでテストする

以下は、aとbに渡された数字を足し算するだけの簡単な(?)CGIです。 #!/usr/bin/env runghc {- sum.cgi -} import Network.CGI import Control.Monad cgiOutput (Just n) = do setHeader "Content-Type" "text/plain" output $ show n ++ "\n" cgiOutput Noth…

WWW::Mechanize-1.66と文字コード

最近、LWPやWWW::Mechanizeを2007年頃のバージョンから最新のバージョンにしたら、文字コードで色々ハマったのでメモっておきます。結論から言えば、最新のLWPやWWW::MechanizeはUnicode文字列を適切に扱えますので、以下を心得て使うとハマりどころが少ない…

use 時のエラーと %INC のメモ

自分用メモ。perl5.8.5 だと、use に失敗しても %INC に値が入ってしまうようです。perldeltaを追いましたが、どこで直ったのか見つかりませんでした。5.10.0 では %INC に値が入ることはなかったので、この間のどこかで直ったのだと思います。 $ perl -v Th…

モナドのdo記法をPerlのCoroで実装してみた

先に言っときますが、決して役に立つエントリではないので圏論やコルーチンみたいなものに興味がある人だけどうぞwPythonにおけるHaskellチックなdo記法をジェネレータで実装する方法に心惹かれたので、Perlで真似してみました。ジェネレータはコルーチン的…

定数とシンボルテーブルのメモ

調べたので自分用のメモ。perldeltaを見てみると、以下のように書いてます。perl5.10.xから、シンボルテーブルにリファレンスを入れるタイプの定数の実装もあるみたいです*1。 The interpreter internals now support a far more memory efficient form of i…

Re: 知ってそうで意外と知られていないperlの小技 10選

意外と知られていないperlテクってのが、意外とあるもんですね。最近身の回りでいくつか話題に上がったものがあったので、ちょっと書いてみます。知ってそうで意外と知られていないperlの小技 10選 こういうトリビア的なのはなかなか面白いなあと思ったので…

レガシーオレオレフレームワークをPSGI化した記録

5年ほど前に作ったレガシーな自作フレームワークを、この度PSGI化した際の記録です。単なる記録であって、必ずしも「PSGIへの対応はこうやるといいよ!」いう内容ではありません*1が、興味があればどうぞ。 レガシーオレオレフレームワークの概要 Oreore::Ap…

Server::Starter の --interval オプションは大切

最近、Server::Starterを使い始めたのですが、いつでも簡単にサーバを再起動でき、とても便利で安心です。詳しい解説は、kazuhoさんの去年のAdvent Calendarのエントリがわかりやすいと思います。さて、start_server コマンドには --interval ってオプション…

Apache2+mod_proxy+持続接続で時々レスポンスが悪くなる現象のメモ

今更な話題で恐縮ですがmiyagawaさんがものすごい勢いで教えてくれたのでメモっておきます。mod_proxyでバックエンドにリクエストを投げたとき、リクエストのうち何個かが極端に遅いという現象が起こりました。その時のabの結果は以下。 % ab -c 5 -n 500 ht…

"perl web server"でググってみた

miyagawaさんのスライドに出てたので。Perl Web Server とか HTTPi のようなものが出てくるよりは、perl web serverと言えばPlackが出てくる方が自然ですね。あ。今年もよろしくお願いします(遅。

Tatsumaki でブラウザベースの Twitter Streaming

それってHamakiなんですが、試しに作ってみたので一応。ただし、Tatsumakiは、 This is considered as alpha quality software. Most of the stuff are undocumented since it's considered unstable and will likely to change. You should sometimes look …

PSGIを勉強したメモ(2) (PSGI 1.03でのストリーミング)

PSGI Specificationが1.03に更新されています。新しく psgi.streaming が追加されました (Tatsumakiでも使ってる)。 最初にとても大事な注意 このエントリはPSGI 1.03の仕様について勉強したことを書いてます。PSGIの仕様はまだ流動的なので、かならず最新の…

PSGIを勉強したメモ(PlackとかMiddlewareとか)

Tatsumakiを触ってみたいなあと思ったらなんかPSGI/Plackの迷路に入ってしまい、つぶやいてたらid:miyagawaさんが色々教えて下さったので、せっかくなのでまとめておきます。教えてもらってない自分で調べたことも書いてるので、間違ってたらごめんなさい! …