2013-09-01から1ヶ月間の記事一覧

Perlでコールスタック上のサブルーチンの引数を得る

@DB::args でできます。 use strict; use warnings; use Data::Dumper; sub foo { bar(1, 2, 3) } sub bar { package DB { our @args; my $i = 0; while (() = caller $i) { print "$i: ", ::Dumper \@args; $i++; } } } foo('a', 'b', 'c'); outout: 0: $VA…

C以外のコードもemscriptenしてみる

emscriptenのwikiをみるかぎり、すでにかなり様々なアプリケーションがemscriptenで動いているようです。ちょっと試したところ、以下のようなC++11なコードも動きましたし、純粋にロジックだけのコードはかなり動くようですね。 #include <memory> #include <iostream> class g</iostream></memory>…

YAPC::Asia 2013に参加しました

YAPC::Asia 2013に参加してきました。今年も大盛況で、処理系の話、大規模サービスの話、ホビープログラミングの話など盛りだくさんで楽しいイベントでした。また今年でlestrrat & 941体制は終了ということです。長い間お疲れ様でした&ありがとうございまし…

PerlでWebAppの開発に必要なN個のこと

あるプログラミング言語で実際にWebAppを開発できるようになるまで、何が必要だろうか。言語仕様の習得は終えているとしよう。おそらく、最低限以下のような知識が必要だと思われる。とりあえずPerlについて知っていることを書いた。 パッケージマネージャ …

Released rack-devfavicon

開発環境と本番環境で favicon を変える というのに感動したのでRack middlewareでやってみました。というか、昨日のPlack::Middleware::DevFaviconをRackに移植しただけですけど。Plack版とおなじく単に favicon.ico ないし favicon.png という名前にマッチ…

Released Plack::Middleware::DevFavicon

開発環境と本番環境で favicon を変える というのに感動したのでPlack middlewareでやってみました。単に favicon.ico ないし favicon.png という名前にマッチしたらグレースケールにして返すというだけの代物ですが、enable_ifで簡単に導入できるのが楽かな…

[Ruby] オーバーライドとか無視してKernel#classを直接呼びたい

直接 `self.class` を呼ぶと、#class がオーバーライドされている可能性があるので任意のオブジェクトに対して呼ぶことはできません。よってKernel#classを直接呼ぶ必要があります。そこで、以下のように#classのUnboudMethodを得て、それにレシーバを与えて…

Rubyは標準ライブラリにRuby lexer/parserがあるのがいい

これは特筆すべき特徴だと思う。ヒアドキュメントもちゃんと処理できる。 require "ripper" require "pp" src = <<'END' def foo p [<<-"A", <<-"B"] Hello, %{"Ruby"} world! A one, two three B end END pp Ripper.lex(src) 結果: [[[1, 0], :on_kw, "def"…