タグ

ブックマーク / fbis.hatenablog.com (9)

  • Text::ASCIITableによるアスキーテーブルレイアウト - Unknown::Programming

    MySQLの出力結果みたいなのが必要になったのでCPAN漁ってたらこんなの発見。 Text::ASCIITable - Create a nice formatted table using ASCII characters. - metacpan.org 地味に凄いめちゃ便利 use Text::ASCIITable; my @rows = ( [1,'foo','2011-03-16 11:22:33'], [2,'hogehogehoge','2011-03-17 11:22:33'], [3,'uwaaaaa','2011-03-18 11:22:33'], [4,'dio','2011-03-19 11:22:33'], [5,'jojo','2011-03-20 11:22:33'], ); my $t = Text::ASCIITable->new(); $t->setCol

    Text::ASCIITableによるアスキーテーブルレイアウト - Unknown::Programming
  • Class::Accessor::Fastが破壊的だったと初めて知ったあの日 - Unknown::Programming

    事の発端はぽけーっとはてブのお気に入りを見ていたらClass::Accessor::Liteの記事が目に付いた事でした。 お、新しいモジュールか?と思いさっそく実装を拝見させてもらったわけです。 なるほどなるほど、超が付くほどの超シンプル。超々シンプル。実際問題Class::Accessor::Fast使うよりも、Liteのように自分で超軽量のアクセサ定義することの方が多かったりします。 しかし一点気になったところがありました。 @_のリファレンスを保存している部分があったのです。 # Class::Accessor::Lite-0.02 sub __m { my $n = shift; sub { return $_[0]->{$n} if @_ == 1; return $_[0]->{$n} = $_[1] if @_ == 2; shift->{$n} = \@_; ### ← こ

    Class::Accessor::Fastが破壊的だったと初めて知ったあの日 - Unknown::Programming
    gfx
    gfx 2010/11/30
    そもそも「ひとつの値を渡すとスカラーで保存し、複数の値を渡すと配列リファレンスで保存する」という仕様が誰得なのかまったくわかりませんが…。
  • 結局どこまで勉強(or教育)すればいいんかね - Unknown::Programming

    先日書いた記事新人教育 - Unknown::Programmingのトラバやはてブとか読んでてあーやっぱりオールドファッションPerlも未だに廃れてはいないんだなぁと実感させられました。 あの一覧全てを仕事で使うか?と問われると、ま確かに頻繁には使わないけどいやでも場合によっては結構使うよと。 なのでPerl仕事するなら必須項目であると言えますね。 知らないとまずCPANモジュールのソースが読めないし。 問題にブチ当たった時に困ったりする。 どこバグってんのかとかわかんないってことになるわけです。 COREパッケージ知らないと組み込み関数と同じメソッド定義した時にうがーってなるし、 UNIVERSALパッケージ知らないとisaとかcanメソッドがどっからやってきたのかわかんないし、 AUTOLOADメソッド知らないと謎のメソッドに悩まされるし、 tie変数知らないともの凄い不思議なハ

    結局どこまで勉強(or教育)すればいいんかね - Unknown::Programming
  • List::MoreUtilsのuniq関数の実装が変わってた件 - Unknown::Programming

    大分昔に書いたHashを使って配列をユニークにしようという記事のブコメにてList::MoreUtilsのuniq関数の実装が変わったというコメントを頂きました。 List::MoreUtils 0.25_02 では少々変更されていた。 http://cpansearch.perl.org/src/VPARSEVAL/List-MoreUtils-0.25_02/lib/List/MoreUtils.pm はてなブックマーク - kitsのブックマーク / 2009年11月17日 さっそくどう変わったのか確認したところ、なんともアンビリーバボーな実装になってました。 # List::MoreUtils-0.22 sub uniq (@) { my %h; map { $h{$_}++ == 0 ? $_ : () } @_; } # List::MoreUtils-0.25_02 sub

    List::MoreUtilsのuniq関数の実装が変わってた件 - Unknown::Programming
    gfx
    gfx 2009/11/19
  • PHP「"0x0A" == "10"はTRUEですがよろしいですか」 - Unknown::Programming

    ぼく「えっ」 PHP「"0x0A" == "10"はTRUEになりますが」 ぼく「いえFALSEです」 PHP「えっ」 ぼく「えっ」 PHP「まだ比較したことがないということでしょうか」 ぼく「えっ」 PHP「えっ」 ぼく「変化するってことですか」 PHP「なにがですか」 ぼく「型が」 PHP「ああ文字列でも整数っぽい文字列なら自動で型変換されますよ」 ぼく「そうなんだすごい」 PHP「では比較いたしましょうかTRUEですよ」 ぼく「でも"0x0A"は明示的にキャストしたら0になりますよね」 PHP「えっ」 ぼく「えっ」 PHP「ああ16進数のことなら比較の場合のみ10進数に自動で変換してから比較するんですよ」 ぼく「なにそれこわい」 PHP「"0x0A" == "+000010.0000000000000001"の場合もTRUEになります」 ぼく「なにそれもこわい」 PHP「えっ」 ぼく

    PHP「"0x0A" == "10"はTRUEですがよろしいですか」 - Unknown::Programming
  • 複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming

    ハッシュと配列の参照が入り交じったような複雑なデータ構造の、全value を均等に加工したかったので次の様にしてみました。 (中略) すでに似たモジュールがある気が激しくしています! ご存知でしたらぜひ教えてくださいませ。 [perl] 複雑なデータ構造のvalue を一気に書き換える方法 - harupiyoの日記 ということでData::Visitor::Callbackがズバリそれにあたるものじゃないかなーと。 use strict; use warnings; use Data::Dumper; use Data::Visitor::Callback; my $rh_testdata = { 'a' => 1, 'b' => { 'aa' => 1, 'ab' => [ 1, 2, 3, \ 'test', 5 ], 'ac' => 3, }, 'c' => 3, 'd' => 4

    複雑なデータ構造はData::Visitor::Callbackで簡単一発変換 - Unknown::Programming
    gfx
    gfx 2009/06/10
  • さっきの記事のShikaのベンチのコード - Unknown::Programming

    モジュールがMoose依存してた。別れたい… - Unknown::Programming id:tokuhiromさんにベンチうp頼まれたんだけども超個人的なBenchmarkコードなのでそのままCodeReposにあげれるような代物でもないということもあり取り急ぎエントリとしてあげておきますので自由に変更しちゃってください。 #!/usr/local/bin/perl -w use strict; use warnings; package MooseBuild; use Moose; has userid => ( is => 'rw', ); has agent => ( is => 'rw', required => 1, ); sub BUILD { my $self = shift; $self->userid(90); $self->userid($self->agent-

    さっきの記事のShikaのベンチのコード - Unknown::Programming
  • モジュールがMoose依存してた。別れたい… - Unknown::Programming

    さて毎年年末が近づくとブログ更新頻度が下がるid:fbisですが、Mooseも馴染んできたところなのでそろそろMooseに対して一言いっておくかということでね、はい。 Mooseは素晴らしい。とてもベリー素晴らしい。何より人に優しい。人間に優しい。 がっ!しかし、Mooseはまだ使うには早すぎた。ナウシカの巨神兵ばりに早すぎたんだ。 実際に組み込んでみて感じた問題点。 大きく分けて二つ。 その壱:オブジェクト生成のコスト やはりなんといってもnewのコストが高い。遅い。 一つ一つを見ればそこそこなんだけどやはりnewのコストは高い。 Mooseを使うのであれば極力newを避けるような仕組みの中に取り入れないと微妙。Catalystで例えるならsetupの時点でnewして以後キャッシュされるような実装だ。 newさえ終わればあとは(複雑なMooseの使い方をしてない限り)それほど問題ではない

    モジュールがMoose依存してた。別れたい… - Unknown::Programming
  • Perl Quizで遊んでみる - Unknown::Programming

    Perl Quiz - package名について - Islands in the byte stream #!perl -w use strict; use Test::More 'no_plan'; sub f{ package main::Foo; } f(); is ref(bless({}, 'Foo')), 'Foo'; とか #!perl -w use strict; use Test::More 'no_plan'; sub f{ package Foo; our @ISA = ('Foo'); } f(); is ref(bless({}, 'Foo')), 'Foo'; 死ぬのは無し?でもf関数で死ぬわけじゃないから有り? #!perl -w use strict; use Test::More 'no_plan'; sub f{ }__END__ } f(); is

    Perl Quizで遊んでみる - Unknown::Programming
  • 1