タグ

ブックマーク / mt.endeworks.jp (14)

  • オブジェクト指向とClass::Data::Inheritableは一緒に扱わないほうがいい。 - D-6 [相変わらず根無し]

    オブジェクト指向とClass::Data::Inheritableは一緒に扱わないほうがいい。 「オブジェクト指向なパラダイムでプログラムを書くとき」にClass::Data::Inheritableは排除すべきモジュールである。今回激しくそれを痛感しているので、だらだら書いてみたい。 まず、Perlはマルチパラダイムが可能な言語なので、Class::Data::Inheritable自体は否定されるべきものでもないし、あと必ず例外ケースはでてくるのでその際には躊躇なく使えばいいと思う。以下は最初の一文の通り、Perlでオブジェクト指向を使う場合はClass::Data::Inheritableは基的に使わず、あくまで例外ケースに留めるべきだ、という事を伝えたい。 まずその1: クラスアトリビュートはグローバル変数 クラスアトリビュートはグローバル変数です。異論は認めません。 Singl

    fbis
    fbis 2010/11/10
    Class::Data::Inheritableは代替策の4が全てじゃないのかなぁと。更にオブジェクト毎に値を変更したくなったらClass::Data::Accessorの方を使用する。
  • plackを使ってみたの巻 - D-6 [相変わらず根無し]

    plackを使ってみたの巻 PSGIだPlackだって某IRCチャンネルでお祭りをやっている最中金策に走っていたので、まださわっていなかったのですが、とりあえず練習でさわってみました。 http://github.com/lestrrat/GitPlack 結論からまず言います:WAFを作りたいんじゃなければとりあえずCatalystとか使っておけ。 私の見解は以下の通り: PSGI/Plackは統一された、しかも非同期エンジンを念頭に置いて考えられた仕様・実装なのでその点は素晴らしい。だけど、Plackはフレームワークではないし、とりあえずアプリを作る分には我々凡人は普通にフレームワークを使っておけばいい。・・・という感じ。 結果的には2時間くらいでWAFもどきとgitの情報を表示するアプリを作れたし、こういう仕様があるのは素晴らしい事です。 細かいところだけど難点はリスタートサーバーが

  • Moosification: Catalyst 5.8に移行した際にちょっと気づいた事。 - D-6 [相変わらず根無し]

    Moosification: Catalyst 5.8に移行した際にちょっと気づいた事。 最初からMooseベースでアプリケーションを作るというのは、実務ではなかなか難しいのはわかります。一般論は JPA #02で話すのでおいておきますが(参加申し込みは今日5/12までですよ!)、5.8 からMoose化したCatalystであった問題・注意点をちょっと書き出してみます。 1. use Catalyst Catalyst::Upgradingを読んでいると package MyApp; use Moose; extends 'Catalyst'; __PACKAGE__->setup(qw/ ConfigLoader /); という表記が見られるが、これは気をつけないと駄目。 自分が直面した問題は、path_to()等を使った時に起こった。path_to() は現アプリのルートディレクトリ

    fbis
    fbis 2009/05/12
    まだまだ様子見だな
  • JPAの活動内容 - D-6 [相変わらず根無し]

    JPAの活動内容 コメントリストを見ていたら未承認のコメントがあったので先ほど承認しておいた。 地方在住の方に関してはJapan Perl Associationは最初から地方での活動を視野に入れて団体を作った、というのは断言しておきます。ちゃんとこれから東京以外の地域でも活動はしていく予定です。 ちなみにまだ未確定ですが第一回セミナーと同時期に関西地区でのセミナーも視野に入れて調整中です。その後も、ニーズに合わせて少しずつ活動を広げていくつもりです。とりあえず考えているのは広島、仙台、北海道あたり。それ以外は行かない、というより、個人的になんの予備知識もないため、これから調査をする必要があります。情報及びヘルプは随時募集いたしますので是非ご連絡ください。ただ、もうしばらくは地盤固めのほうが先に来てしまいがちになるのはどうか理解いただきたい。 なお録画に関しては正直他のことにかまけていて忘

    fbis
    fbis 2009/03/16
  • FUDを広げるのは誰の特にもならないと思うんだ。 - D-6 [相変わらず根無し]

    FUDを広げるのは誰の特にもならないと思うんだ。 以下、まぁ書き散らかしです。あんまり推敲してません。すまそ。ちなみに、下記記事に対するブクマはDISも多いけど、素直な反応もちらほらあるようで興味深い。 僕にとってのJavaは2001年に終わってますが・・・。同じ事何回も書かなくちゃいけない言語なんて死んだも同然ですよ。ライブラリもちらばってて何がどこにあるのかわかんないし。 って、書くのは簡単です。多分元記事をテンプレ化してほぼ同じ事をどの言語に対しても僕は書けます。 ただ、エンジニアという職種の人がそんなことしてるのはどうかなぁ、と。エンジニアの使命を問題を解くことです。何でつまづいたかとか、なにがむずかしかったとか、何ができなかったとかそういう事をちゃんと書いて欲しいなと思う。CPANのアップロードとかも状況に対しての認識もなく、「回数」という一面だけで判断をばっさりしてていいのでし

    fbis
    fbis 2009/02/19
  • 「モダンPerl入門」書きました。 - D-6 [相変わらず根無し]

    「モダンPerl入門」書きました。 モダンPerl入門 今みたらAmazonでも表紙が入稿されたらしいので宣伝させていただきます。えー、モダンPerl入門というを翔泳社さんから出版させていただくことになりました。でも最初に断っておきます。誤字脱字はある気がします。ごめんなさいごめんなさい。日語不得手なんです(こういう時だけ帰国子女カードを使わせていただきます)。 ともあれ、内容的には自分が普段Perlを使っていて、同僚とかに知っておいてほしいな、って思っている実践的な内容ばかり書きました。このはたとえPerlがメインの言語ではなくともPerl仕事で使っていて、なおかつ初級〜中級のあたりでうろうろしてしまっている人たち向けに書いています。初級者向けの構文説明はほとんどありません。上級者向けのわけわかんないところはXS以外ありません(はい、XSの入門あります)。ほとんどは、Perlで業

    fbis
    fbis 2009/01/16
  • プログラミングにおける英語作文的要素 - D-6 [相変わらず根無し]

    プログラミングにおける英語作文的要素 プログラミングは作文に近いと思うのです。プログラムを書いている時に築いているロジックというのは、「まずこのデータをこっちにおいて、その後これに3.14をかけて、2倍にして、それを標準出力にプリント」みたいな感じで、情緒はないだけであとはまるっきり作文しているのと一緒なわけです。 でもって、作文と一緒で色んな書き方で同じ事に到達できる。さっきのは円の円周を求める式だけど、答えを出すだけなら、こういう説明の仕方もできる:「一時変数に3.14を格納後2倍にし、一変数にさらに引数としてもってきたデータを乗算し、しかるのちに標準出力に出力する」。まぁこの程度のロジックならほぼどんな書き方をしても理解できるよね。 面倒くさくなるのはオブジェクトとかがでてきたり、プログラムの流れそのものがあんまりストレートじゃなくなってきた時。これがプログラミング言語が基的に英語

    fbis
    fbis 2008/09/26
    程度問題かなぁ。オブジェクト的に何に変換するかが自明ならばtoとかは冗長かなという気はする。変にこだわりすぎて長いメソッド名付けられても逆に可読性悪くなるし
  • File::Tempの使い方 - D-6 [相変わらず根無し]

    File::Tempの使い方 元ネタはこちらから File::Tempオブジェクトはファイルハンドルであり、同時にoverloadを使用すると文字列に見える、という妙なオブジェクトなんですね。なので、以下のコードは無用 my $expect = 'hogehoge'; my $out = File::Temp->new; diag $out; open my $fh, '>', $out; # ここ print $fh $expect; close $fh; my $contents < io $out; is $contents, $expect; File::Temp->new()した段階ですでにFileHandleオブジェクトになっているはう。なのでこいつに直接書き込んじゃうのが吉 my $expect = 'hogehoge'; my $out = File::Temp->new;

    fbis
    fbis 2008/09/24
  • Mooseは「使いやすいオブジェクト定義ツール」じゃないよ - D-6 [相変わらず根無し]

    Mooseは「使いやすいオブジェクト定義ツール」じゃないよ Mooseは「使いやすいオブジェクト定義ツール」じゃないよ。MooseはPerlにおける「オブジェクト指向の革命」ですよ。 http://dann.g.hatena.ne.jp/dann/20080814/p2http://d.hatena.ne.jp/fbis/20080814/1218689670http://d.hatena.ne.jp/a666666/20080813/1218628821http://anond.hatelabo.jp/20080621124021 ぶっちゃけ"has"が使えるとか、勝手にnew()を作ってくれるとか、そういうことはどうでもいいのです。Mooseが革命児たる所以はオブジェクトの初期化・クリーンアップ・メソッドのコールチェインをPerlという言語において初めて(呼び出される順番とか、そういう

    fbis
    fbis 2008/08/15
    使えるか使えないかと、好きか好きじゃないかは別なんだよね。Mooseは情報は常に追っかけてるけど実務では使ってないので確かに使ってみないとなんとも言えないってのはそうね。
  • MooseX::Daemonizeがセクシーすぎる件について - D-6 [相変わらず根無し]

    MooseX::Daemonizeがセクシーすぎる件について さて、すっかりMoose厨となりつつある私ですが、この度デーモンスクリプトを書くことになりましたのでMooseでこれをするのは何がいいかなと考えていたわけです。したらなんでもありますな、CPANは。MooseX::Daemonizeですよ、奥さん。 考え方としては、スクリプトの書式をコントロールするオブジェクトをまず作ります。 package MyDaemon; use Moose; with 'MooseX::Daemonize'; コマンドラインから受け取るオプション等はこのオブジェクトの属性として指定します。 has 'option1' => ( is => 'rw', isa => 'Str', required => 1 ); has 'option2' => ( is => 'rw', isa => 'Bool',

  • Catalyst::Model::AdaptorがGJ - D-6 [相変わらず根無し]

    Catalyst::Model::AdaptorがGJ Catalyst::Model::Adaptorがリリースされていたので早速使ってみた。 それまでもなるたけ全てのロジックをモデルにいれようとしてたんだけど、モデル自体がCatalystにべったりで嫌な感じだったのでどうやって分けようかと考えてきた。例えばCatalystに載せたくない(メモリをう割に、別に非同期でバッチ処理すればいいものとか)もmodelにしか生き場所がないのにCatalystから分離できないという妙な状態だったりした。 そこでCatalyst::Model::Adaptorです。Minicoの現在の開発版ツリーはそんなところからAdaptorで実装をリファクタリングしてみた。 多分ケースバイケースなんだろうけど、俺の場合は以下の数点を考慮しながらやったらいい感じになってきましたよ: Minico::Busines

  • 最適化の心得 or HTTP::MobileAttribute最適化祭りに参加してみた - D-6 [相変わらず根無し]

    最適化の心得 or HTTP::MobileAttribute最適化祭りに参加してみた HTTP::MobileAttributeの最適化祭りに突発的に参加してみた。 正直言うと未だにHTTP::MobileAttributeの中身であるClass::Componentを分かってない。なのでできることも限られてるわけだが。 今回のミニ祭りを見ていてよくわかるのは結局のところスピードに最も影響があるのは端的なコードの書き方ではなく構造(ストラクチャ)を見直す事であるというだ。id:tokuhiromのところでパフォーマンスチューニングの結果を追ってる人はわかると思うけど、結局俺が参加したのはもう当にコードの書き方をチューニングするというレベルのところで、例えばループをアンロールしてif/elseで実装してみるとかね。でもそこはどんなにがんばっても数%のパフォーマンスゲインにしかならない。

    fbis
    fbis 2008/04/04
  • ハッシュに値を振り分ける時のコード - D-6 [相変わらず根無し]

    ハッシュに値を振り分ける時のコード 例えばCSVなファイルを読み込んで、それをハッシュの中に展開、格納と言った感じの動作をPerlで行いたかったとします。例えば 1,2,3 と言った行を my %hash = ( 'col1' => 1, 'col2' => 2, 'col3' => 3 ); のようなハッシュに展開する関数が欲しいわけです。皆さんはこれをどういう風に実装しますか?ぱっと思いつくのはforループですよね my @colums = ('a', 'b', 'c'); my @values = (1, 2, 3); # もちろん実際にはsplit(/,/, $line)とか、CSVパーサーを使う my %h; for (0..$#columns) { $h{ $columns[$_] } = $values[$_]; } 実はこのようなCっぽい書き方はPerlでは大概遅いです。D

    fbis
    fbis 2008/03/11
    いちおうList::MoreUtils::zipやmapでやる方法でベンチしてみたけど遅かったなり。
  • perl 5.10.0 人柱 - D-6 [相変わらず根無し]

    perl 5.10.0 人柱 Perl 5.10がPerl 20歳の誕生日にリリース。さっそくDL+インストール。 ./Configure -d make make test sudo make install コンパイルは速かったが、テストは意外とまだ時間かかるな。Test::Harnessで並列テストできるんじゃなかったのか。 daisuke@beefcake ~$ sudo perl -eshell -MCPAN CPAN: File::HomeDir loaded ok (v0.67) Can't locate Mac/Files.pm in @INC (@INC contains: /usr/local/lib/perl5/5.10.0/darwin-2level /usr/local/lib/perl5/5.10.0 /usr/local/lib/perl5/site_per

    fbis
    fbis 2007/12/22
  • 1