タグ

ブックマーク / gfx.hatenadiary.org (9)

  • Released rack-devfavicon - Islands in the byte stream (legacy)

    開発環境と番環境で favicon を変える というのに感動したのでRack middlewareでやってみました。というか、昨日のPlack::Middleware::DevFaviconをRackに移植しただけですけど。 Plack版とおなじく単に favicon.ico ないし favicon.png という名前にマッチしたらグレースケールにして返すというだけの代物ですが、Rack middlwareなので簡単に導入できるのが楽かなと。 使い方は以下のとおり。faviconを配信するミドルウェアよりも先にuseしてください。 if ENV['RACK_ENV'] != 'production' require 'rack-devfavicon' use Rack::DevFavicon end map "/favicon.ico" do run Rack::File.new("#{

    Released rack-devfavicon - Islands in the byte stream (legacy)
  • Perlの m// は中身が固定文字列だと爆速になる - Islands in the byte stream (legacy)

    [追記] 実際に検証してみると、パターンが短いと index() のほう速いこともあるようです。パターンが長いと正規表現のほうが高速になるのでそもそもアルゴリズムが違うようですね。 よってこのエントリの内容は必ずしも正確ではありません! cf. https://gist.github.com/kazuho/5410635 [/追記] Perlの話題を日語で – Lingr で出た話題です。 Perlの正規表現マッチはパターンが単純だと index() とおなじく Boyer-Moorアルゴリズムで検索するので非常に高速です。要は最適化のつもりでパターンマッチをindex()に書き換えるのは無意味なのです。 ソースは pp.c や regexec.c あたりを fbm_instr() で検索かな? ドキュメントもどこかで読んだ気がするのですが思い出せず>< perl -MDevel::Pe

    Perlの m// は中身が固定文字列だと爆速になる - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2013/04/18
    文字列長によってアルゴリズムを変えたり。面白い
  • Perl製ツールを非Perlerに配布するとき - Islands in the byte stream (legacy)

    lib::core::only とか使うわけですけど、これの中身は4行で書けるのでそれでもいいと思います。 # does the same as lib::core::only to prevent to use locally-installed modules BEGIN { require Config; @INC = @Config::Config{qw(privlibexp archlibexp)}; } 追記: いろいろ考えた挙句こうなりました CPANモジュールは使いたいのでextlibにpure Perlのモジュールを突っ込んでいる リリースした後うっかりextlibに含まれないモジュールを使っていることが発覚というのはクラッシュするコマンドをリリースするのと同義だから避けたい よって リリース前は lib::core::only を有効にした状態でテストしたい リリース前

    Perl製ツールを非Perlerに配布するとき - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2013/03/15
  • Data::Dumper が壊れているという惨事 - Islands in the byte stream (legacy)

    あるいは PERL_CPANM_OPT=-n は危険だという話。 それはこのtweetから始まった。 結局これは Data::Dumper 2.143 が壊れていたからなのだが、そこに至るまでがちょっと大変だったので記録しておく。 まず、再現スクリプトは以下のものだった。 # executed in perl 5.10.1 use strict; use warnings; use Data::Dumper; use Text::Xslate; my $tx = Text::Xslate->new({ syntax => 'TTerse' }); my $template = <<TMPL; [% value | dump %] TMPL my $value = +{ 'ab' => 'c', }; print Dumper($value); my $ret = $tx->render_s

    Data::Dumper が壊れているという惨事 - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2013/03/06
    モジュールインストール時のテスト大事。rubygemsもオプションでいいからそうならないかなぁ
  • lib::xi - installs missing libraries on demand - Islands in the byte stream (legacy)

    gistなどで公開されているPerlスクリプトを実行する際、モジュールが足りないことがよくあります。そういう場合はCan't locate Foo.pm ...というエラーメッセージを見ながらモジュールをインストールするわけですが、決まりきった作業にうんざりしたので自動的にそれをするモジュールを書きました*1。 https://github.com/gfx/p5-lib-xi `perl -Mlib::xi script.pl`とするだけで、足りないモジュールをcpanmで適当にインストールしてくれます。 -Mlib::xi=extlibとすれば既存の環境を壊すことなくlocal::lib的にextlib/にインストールして実行できますし、-Mlib::xi=-L,extlib,-qなどとしてcpanmにオプションを渡すこともできます。 これで退屈なインストール作業をしなくてすむはずです。

    lib::xi - installs missing libraries on demand - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2011/10/06
    実行時に不足しているcpanモジュールをインストールしてくれる
  • Don't use base.pm, use parent.pm instead! - Islands in the byte stream (legacy)

    「使っちゃいけない標準モジュール」*1の反響を見ていると、baseが非奨励ということに驚かれた方が少なくありませんでした。そこで、baseについて補足します。 まずbase.pmのドキュメントの最初の文は以下のようになっています。 Unless you are using the fields pragma, consider this module discouraged in favor of the lighter-weight parent. (拙訳: fieldsプラグマを使用しているのでないかぎり、このモジュールは勧められない。かわりに軽量なparent.pmを使う方がよい。) fieldsプラグマは、ハッシュリファレンスのキーを固定したオブジェクトを作成するための機能ですが、あまり一般的ではないためここでは解説しません。特に理由がない限り、ここは素直に忠告に従った方がいいでし

    Don't use base.pm, use parent.pm instead! - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2011/05/26
    base.pmは非推奨なのか
  • DeNAに入社しました - Islands in the byte stream (legacy)

    既に2週間ほど経過していますが、4/1付けでDeNAに入社しました。なかなか刺激的な毎日を送っています。 さて、これからは忙しさが増す一方でしょうから、今のうちに初心を振り返っておきます。 私はこの数年間、コードを書きながら、自分の人生の中でやりたいことはなんだろうかを考えてきました。私は主にソフトウェアのパフォーマンスに興味があります。プログラミング言語やツールに興味があります。また、テストや開発手法にも興味があります。エンジニアのコミュニティのあり方や、ハッカー文化にも興味があります。これらの興味を導きだすもの、それは以下のような考えだと思い至りました。 ソフトウェアエンジニアがもっと幸せになれるような技術を提供する この考えは、以下のid:TAKESAKOさんのインタビューを読んでから鮮明になりました。 Webエンジニア武勇伝 第29回 竹迫良範氏 (2008) 竹迫 日ITエン

    DeNAに入社しました - Islands in the byte stream (legacy)
  • 忙しい人のための「新卒準備カレンダー 2011春」 - Islands in the byte stream (legacy)

    新卒準備カレンダー 2011春のまとめです。 メッセージや哲学、熱い想いなどのまとめにくいものはのぞき、具体的な行動に絞ってまとめてみました*1。これは、未来を変えるための具体的な行動をとれるようにするためです。 いまのところ16日目(@kuenishiさん)までです。エントリを読み返して追加することもあるかもしれません。 失敗を恐れずやってみる "遊びは「失敗しても怒られない」活動です。また、遊びといっても、子供は時間を忘れるほど、真剣に遊びます。結果として多くのことをトライ&エラーして身につけます" (@shibukawa) "「あとで」「そのうち」「何かネタが出来たら」といって後回しにしていては何もできない。動けない。見当違いなブログ記事書いてDISられたり、LTでスベったりしてもいいから とにかく何かやってみる" (@sugyan) "会社の会議で発言しろ - とにかく発言をしない

    忙しい人のための「新卒準備カレンダー 2011春」 - Islands in the byte stream (legacy)
  • 「優れたPerlプログラマを見分ける27の質問」の日本語訳 - Islands in the byte stream (legacy)

    (追記あり) How to Identify a Good Perl Programmer (by chromatic) が面白かった*1ので、27の質問を訳してみました。chromatic氏によれば、いずれも単純明快な質問でPerlの哲学や特徴をよく現しており、優れたPerlプログラマであれば少なくとも80%は答えられるべきだそうです*2。あなたは全ての質問に答えられますか? Perl5において変数のシジル*3が示すものは何か 配列のアクセスする際の $items[$index] と @items[$index] の違いは何か == と eq の違いは何か ハッシュをリストコンテキストで評価すると得られるものは何か Perlドキュメントからキーワードを検索するにはどのようにするのか Perl5における関数とメソッドの違いは何か Perl5が変数のメモリを再利用するのはいつか 変数のスコー

    「優れたPerlプログラマを見分ける27の質問」の日本語訳 - Islands in the byte stream (legacy)
    a2ikm
    a2ikm 2011/03/02
    半分もわからなかった
  • 1