読者です 読者をやめる 読者になる 読者になる

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

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

$&のpodはきちんと読むべき

心に傷を負ったのでこれを記しておく。 The use of this variable anywhere in a program imposes a considerable performance penalty on all regular expression matches. perlvar perl5.18なら直ってるみたいな噂も小耳に挟んだけど変わらなそげ。手元のp…

Mouse-1.3でMooseと挙動が違うコード

コンフリクトした場合はスーパークラス側のメソッドが優先されるべきなんだけど、"Hage te nai"が出力される。 package Role1; use Moose::Role; sub hage { "Hage te ru" } package Role2; use Moose::Role; sub hage { "Hage te nai" } package Super; use…

今日は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で話すつもりの型の話について

今年のYAPC Asia 2013にはTypes and Perl Languageというタイトルで話をしようと申し込んだのだけど、リジェクトされそうな気しかしないので話そうとしていることの概要を書いておく。なお、トークのタイトルは名著TaPLのオマージュである*1。以下のGoのコー…

JITで爆速なgperlを試す

Linux Mint上でgperlをビルドした。原則、ないと言われたものをどんどんaptで入れてっただけだけど、jit/jit.hがないって言われてそいつだけaptで解決できなかったのでこのPostScriptのファイル読んでlibjitをビルドした。これで万事うまくgperlが作れたので…

QAハッカソンでTest::BangAwayってモジュール書いた

Perl QA Hackathon 2013 Satellite at Tokyo なるものに参加してきた。こういうイベントで貢献できるガラではないのだけど、開催場所が自分の職場だったのでお邪魔させてもらった。MillaとMinilla周りの話題が熱い中、前々から作ってみたかったQuickCheckも…

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

実家に帰るついでに、久々にHokkaido.pmへふらっと立ち寄ります。マイクスタンドを借りたのでライブコーディングでも安心です。 cpanfile / @aloelight さん cpanファイルとは? Ruby Gemfileの移植 依存モジュールのバージョン cpanmとcartonで利用可能 ア…

Class::Accessor::TrackDirty っての書いた

KVMにハッシュ的なデータ構造出し入れするのに、O/Rマッパーのエンティティみたいにプロパティが変わったかを追っかけて必要なときだけ保存したかったんだけど、良さげなのを見つけられなかったので自分で Class::Accessor::TrackDirty て名前のClass::Acces…

Stateモナドとオブジェクト

面白くもなんともないParsonオブジェクト。 package Parson; sub new { my ($class, $self) = @_; bless $self => $class; } sub change_name { my ($self, $name) = @_; $self->{name} = $name; } sub get_name { my ($self) = @_; $self->{name}; } my $p …

今日は『Webサービスのつくり方』出版記念イベントの日です

仕事をサボって『Webサービスのつくり方』出版記念イベントに来ていますので、適当にレポートします。結局ゆーすけべーさん不在のまま始まりました(笑)。 今日の進め方 → 参加者が紙に書いた質問に全て答える けんすうさんの案らしい ゆーすけべーさん登場 …

JSON::XSで作られる浮動小数点数でハマった話

JSON::XSを使うと、小数は浮動小数点数にパースしてくれる。 use JSON::XS qw(decode_json); my ($double) = @{decode_json("[0.6]")}; この値、printすると "0.6" なのだけど、0.6とイコールではない。 print $double, "\n"; # 0.6 print +($double - 0.6),…

今日はYokohama.pm #9の日です

残念ながら横浜市民ではなくなりましたが、Yokohama.pm #9に参加しています。USTはこちら。

PerlによるFreeモナドの実装

悟りを開けると話題のFreeモナドをPerlで実装した。実装はこちら。 Freeモナドとは? モナドの性質の1つとして、flatten : TTX → TX (または join、またはη)によって重複する関手Tを1つに押しつぶせるという点がある。そのお陰で、TTTTTTXのようにTが複数あ…

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

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

メモから振り返るYAPC

Perl 今昔物語を受けて当時のエントリへリンクを貼ってみる。懐かしいですね! 2006 初日 二日目 2007 初日 二日目 2008 前夜祭 初日 二日目 2009 前夜祭 初日 二日目 2010 前夜祭 初日 二日目 2011 前夜祭 初日 二日目 2012 前夜祭 初日 二日目

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

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

YAPC::Asia Tokyo 2012 で LT してきた

ほんとは Coq-perl 作りたかったのだけど間に合わなくて別のネタでLT。 Perlでおねえさんを救った話 元ネタの素材はこちらの動画のものなので、合わせて見ておきたい。

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

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

単純なRSA暗号の解き方

以下のような感じで"ABCD"を暗号化する。 use strict; use warnings; use Crypt::RSA; use Crypt::RSA::Primitives; my $rsa = Crypt::RSA->new; my ($public, $private) = $rsa->keygen(Size => 48) or die; print $public->serialize, "\n"; my $prim = Cr…

「フカシギの数え方」をPerlで解く

まずはこの動画を見るべし → 『フカシギの数え方』 おねえさんといっしょ! みんなで数えてみよう!。 きちんとした解答がすでに上がっている → 「フカシギの数え方」の問題を解いてみた。 まあでも、これだけ力作な動画を見せられたら自分でも解いてみたい…

Modification of a read-only value attempted

% perl -e 'for (1) { while(<>) {} }' Modification of a read-only value attempted at -e line 1.forの中の$_は1そのものを指してて、while(<>)は$_を書き換えるものだから。 for ($x) なら 大丈夫で、$x に<>で読んだモノが入る。

正しいのになぜかみんなが「変だ!」という問題にPerlで答えてみた

正しいのになぜかみんなが「変だ!」という問題: x,y,zを自然数とする。このとき、x=3ならばy=5になる。あるいは、y=5ならばz=8になる。 @noricoco これは良問!さすが @noricoco 先生 > RT @hyuki Perlで解答するとこうだろうなあ。 perl -e 'for my $x(0,…

逆FizzBuzz(Inverse FizzBuzz)の正規表現書いた(解けてないけど)

ええ、そうなの!? と思ったので深追いしてみた。 逆FizzBuzzって、オートマトンなので正規表現を使うと楽に出来るはず。Perl で 逆FizzBuzz 状態遷移図を書いてみるとこう。ほんとは1〜15まで全て状態を書いて、ε遷移を加えてεの長さも1とした最少の単語を…

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

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

あなたの圏は大丈夫? - 手続き型言語の裏に潜む罠

Monads in PerlやAllows in Perlの話では、合成compと恒等射idを以下のように定めた。 sub comp($$) { my ($g, $f) = @_; sub { $g->($f->(@_)) }; } sub id { @_ } しかし、これは厳密には圏とならない。 合成の結合則 h . (g . f) == (h . g) . f が満たさ…

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

実家に帰るついでにふらっと立ち寄りました(2)。次はHokkaido.pmです。

Hachioji.pm in Machida に行ってきました。

飲んで騒いで楽しかったです。以上!人数多かったので使わずに済ませましたが、スライドは用意してたんでリンク貼っときます。緩募は本当に募集してます(笑。普段あまり見かけないような方と会えて楽しかったです。幹事の @ytnobody さんと運営の @uzulla …

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_…

Hokkaido.pmでuWSGIについてLTした

Hokkaido.pm でuWSGIについて話してきました。uWSGIは Nginx や Cherokee でも標準対応がされ初めており、今後の発展が期待されるアプリケーションサーバです。スライドは以下です。 ウヰスキーとPSGI View more presentations from hiratara デモがメインだ…

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

旅行中にふらりと立ち寄ったので、内容をメモしておきます。ustreamはこちら。

今日は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さんがいらっしゃるので、色々とためになる話が聞けると思います。北海道の人はみんな出ればといいと思います。

今日はYokohama.pmの日です。

本日18:30から行われるYokohama.pm #7へ参加する予定です。

どんな環境でも動くPerlスクリプトを作る時の小道具

cpanmのように素のPerlだけで余裕で動くぜっていう配布物を作る時に便利な小道具×2です。 App::FatPacker App::FatPackerとは、依存モジュールを全て1つのファイルに押し込んでパックしてくれるライブラリです。1枚のスクリプトに全てをまとめてくれるApp…

2011年になってもPerlを使ってる理由

10年以上使ってて慣れてるからってのが一番ですが、後、TMTOWTDI に共感するからってのもあります。まず、たくさんの書き方があれば、それだけ読み手に色んなことを伝えられます。文章を書く時に、一人称を「僕」「俺」「私」のどれを使っても意味は一緒です…

StackTraceを少し便利に(2)

結論から言えば、ベストな解は見つかってませんので、あくまでアイデアのメモとして。以前、P::M::StackTrace について以下のような話を書きました。 plackup を -E development で起動するとついてくるPlack::Middleware::StackTraceは大変便利ですが、この…