愛と勇気と缶ビール

ふしぎとぼくらはなにをしたらよいか

Perl

Net::OpenID::Connect::IDToken作った、だいぶ前に

Naosuke Yokoe / Net-OpenID-Connect-IDToken-0.02 - search.cpan.org OpenID Connectのid tokenをencode / decode+verifyするやつです。JSON::WebTokenの上にのっかっています。a_hashとかc_hashとかもよしなにやってくれる君です。 ちなみにこの道のCPAN m…

Perlでのmock(実はstub)とinline object

単体テストを単体テストたらしめんために(?)、stubとかmockを使ってテストの対象ならざるモジュールを脇によける、ということをよくやる。 僕は、PerlではTest::Mock::Guard、JSではSinon.JSのsinon.stubなどを使う。 mock対象の関数が本来オブジェクトを…

なんとなくDBD::mysqlにpull-req送ったらなんとなく取り込まれていた

ちゃんと自分で動作検証してからblogを書こう、書こうと思っていたのですが、めんどくさくなったのでやらずに書いてしまいました。すいません。よい子はマネをしてはいけません。 ちなみに、会社の同僚が検証してくれておりますので、使用自体に問題はないは…

最近のtest(まだまだ青い)

例えば、testしたいメソッドにif elsif elseという条件分岐があるとして、素直に書くとこうなりがちなので subtest "test for hogehoge" => sub { my $input1 = +{ ... }; my $output1 = $logic->do_hogehoge($input1); is($output1 ... ); my $input2 = +{ …

そういえばAmon2のpluginを二つ書いていた

仕事で必要だったので、Amon2のpluginを二つ書いていた。https://github.com/zentooo/Amon2-Plugin-Web-Stash https://github.com/zentooo/Amon2-Plugin-Web-Flashどのくらい一般的な需要があるのか分からないので今のところgithub止まり。内容としてはAmon2…

ソースコードリーディングとblogやプレゼンにおける問題意識とのんのんばあとオレ

ここ3日間ほど、家で山にこもって一人ソースコード読み大会みたいなことをしていた。Perlのコードについては、だいたい以下のような手順が最も読みやすいことがわかった。 1. Foo.pmのPODの上の方をよむ 2. Fooについてのblog記事などを検索して、そのモジュ…

ネストするDSLっぽいアレ

なんか foo { bar { baz { # barはfooのなかでしか、bazはbarのなかでしかよべない } } } みたいなDSLちっくなものを簡単にかけるモジュールがあってもいいかもしれない、と思って、Plack::Builderをみると、おおむねこのような感じだったのでhttps://gist.g…

新・循環参照によろしく

前回までのあらすじ Sinon.jsのspyをぱくったSub::Spyとかいうモジュールを作る ↓ blessせずに特定のcoderefにひもづいたデータを保存したい ↓ @__gfx__「それHash::FieldHashで出来るよ!」(参照: http://d.hatena.ne.jp/__gfx__/20111015/1318640600) ↓ …

続Sub::Spy

結局こんなインタフェースにした。 use Sub::Spy qw/spy inspect/; my $subref = { $_[0] + $_[1]; }; my $spy = spy($subref); $spy->(1, 2); my $i = inspect($spy); $i->called; # 1 (true) $i->called_once; # 1 (true) $i->called_twice; # 0 (false) $…

Sub::Spyとか作った、けどナントカの夜は明けない

TestのmockやらVerificationやらの話を聴いて、そういやサブルーチンリファレンスを一回くるんで引数/返り値/投げられた例外を記録してくれるサブルーチンリファレンスもどきを、Sinon.JS (http://sinonjs.org/) のspyみたいな感じで実装できないかなあ、と…

さよならを教えて

Term::ANSIColor::Relaxなんとかの、autoboxやめた版を作ってたのを思い出した。autoboxはオワコンだ、とid:xaicronに言われたので。ついでに元のは消した。https://github.com/zentooo/p5-term-ansicolor-simpleというか、初めからこのインタフェースで良か…

あいだの何か

適当な、本当にすごい適当なWebアプリケーションが必要なんだけど、既存のうぇぶあぷりけーしょんフレームワークの書き方を思い出すのがだるい、generator的なscriptを叩くのすらだるい、さらには「ここにルーティング設定書いて、ここにテンプレート置いて…

あれやらこれやら

(前略)Log::HandyからData::UtilとClass::Loadへの依存を消した。Data::Utilは自動dumpしたいもの(scalar値)と自動dumpしたくないものの区別にのみ使っていたんだけど、会社で審議した結果「全てdumperに食わせればよくね?」ってことに。また、Class::L…

Log::Handyとかそんなものをでっちあげた

Mandyではありません。Handyです。 http://github.com/zentooo/p5-log-handy 個人的にLoggerにあってほしいのは 色々な場所への出し分け/同時出力が出来る(STDOUT, file, syslogくらいがとりあえずあればいいけど) インタフェースが煩雑でない(例えば$sel…

gitのSmart HTTPをplackupでなんとかする(未完)

gitがHTTP overで使えるのは誰でも知ってると思うが、いわゆるフツーのgit + httpは、リポジトリがでっかくなるとおっそくなるのでそういう場合はSmart HTTPというのを使うのがベター、ということになっている。Smart HTTP http://progit.org/2010/03/04/sma…

Perlで抽象クラス的なものをテストしたい場合どうするか

例えば、以下のような抽象クラス?的なモジュールがあるとしねえ。 package AbstractClass; sub call { my ($self, @args) = @_; # なんか色々前処理とかする $self->do_something($params); } # ここから後にdo_somethingの実装はない (いわゆる抽象メソッ…

Hapyrusで気軽にHadoop MapReduceを試す

本日の社内勉強会で、id:a_bicky先生にHadoop + MapReduceの話をしてもらった。面白かった。その時に、気軽にMapReduce処理を試せるHapyrus (https://www.hapyrus.com/) というサービスを教えてもらったので、試しにHapyrusに登録して(現在Beta版らしい)アプ…

Term::ANSIColor::Relaxで愛されモテカワ端末に大変身!?

今更ながら、autobox面白いな、と思ったので。http://github.com/zentooo/p5-term-ansicolor-relax 下のコードを実行すると use Term::ANSIColor::Relax; use feature qw/say/; say "I"->green; # color say "love"->magenta->bold->underscore; # style say…

YAPC::Asia 2010に行ってきたかもしれない

けっこう長いかもしれない。あと、前の方の記憶が結構うすれてるかもしれない。 前夜祭(10/14 夕方〜) WAF祭り とりあえず、きのこ派(Catalyst派)とたけのこ派(Sledge派)がいることは分かった。あと、id:tokuhiromさんのWAF全般に関する考え(結局何のために…

Vimのplugin管理ツールつくった

いつかやろうやろう、と思いつつ、.vim以下の整理がなかなかできていなかった。なので、整理しようと思ったんだけど、どうせこういったパッケージ的なものを整理するなら何らかのパッケージマネージャで一元的にinstall/remove/upgradeしたいと思うのが人情…

Test::QUnit - mozrepl経由でコマンドラインからJavaScriptのテストを実行する

マクラ - JavaScriptのテストについて テストのないコードはコードではなく、テストを書かないプログラマはプログラマではなく、テスティングフレームワークのない言語は言語と呼ぶに値しない。と以上のような偉そうなことを言う資格は全くないし狂信的でも…

Plack::App::Proxy::Selectiveとか作ってみた

マクラ どうも、大してPerlも書けないのに会社のローカルでは常に3つほどplackupでサーバ立ち上げて作業しているzentoooです。すいませんすいません。 企業で働いていると、関与してはいるけれど自分には権限がないので本番サーバあるいはそれに準ずるサーバ…

今さらPerlでFizzBuzzを書いてみた

#!/usr/bin/perl use strict; use warnings; my $print_if_multiple_of = sub { my ($str, $base) = @_; return sub { my $num = shift; return ( $num % $base == 0 ) ? $str : ""; }; }; my $fizz = $print_if_multiple_of->("Fizz", 3); my $buzz = $prin…