タグ

c3に関するhirafooのブックマーク (9)

  • (Ab)?using Class::C3 - YAPC::Asia 2007 Tokyo Sessions

    C3アルゴリズムはDBIx::Class、PythonPerl6でも使われているMRO (Method Resolution Order)を決定するための仕組みです。 Class::C3はどんな挙動をするのか、SUPERやNEXT.pmとの違いはなんなのかから、簡単にClass::C3を使ってコンポーネント化されたフレームワークを作る事に関して。

  • Mixing Class::C3 and NEXT

    Summary? You can do it! I wrote a test script to try this: package A; sub a { print "A->a\n" } package B; use Class::C3; @B::ISA = ('A'); sub a { print "B->a\n"; $_[0]->next::method(); } At this point, everything is fine. B->a prints B->a, A->a. Now, let's add NEXT to the mix: package C; use NEXT; @C::ISA = ('A'); sub a { print "C->a\n"; $_[0]->NEXT::a; } package D; use NEXT; @D::ISA = ('B', 'C');

    hirafoo
    hirafoo 2009/02/28
    何か例悪くないかこれ
  • Class::Data::Accessor と Class::Data::Inheritable は個人的には継承しなくてもいいと思う(継承せずに使う) - IT戦記

    Class::C3 を使うと継承順がかなりセンシティブになる。 たとえば、普段から Class::Accessor::Fast と Class::Data::Inheritable を同時に継承する場合にどちらが先かというのは、そんなに意識しないと思います。(僕はしません) でも、Class::C3 を使う場合は、同じツリー内に継承順の矛盾があると実行できなくなってしまいます。(d:id:amachang:20061007:1160232763) たとえば、以下のクラス郡とクラス群は同時に Class::C3 で呼べないことになる。 Class::Data::Inheritable が先 http://google.com/codesearch?q=Class%3A%3AData%3A%3AInheritable%5Cs%2BClass%3A%3AAccessor%3A%3AFast Cl

    Class::Data::Accessor と Class::Data::Inheritable は個人的には継承しなくてもいいと思う(継承せずに使う) - IT戦記
    hirafoo
    hirafoo 2009/02/28
  • Catalystの変更予定(?) - ヒルズで働く@robarioの技ログ

    しばらくぶりにCatalystを触っていたら、なにやらちょこちょこ変更されつつあるようなので、自作プラグインもちょこちょこ書き換えました。 configに使うキーにモジュール名を使う Catalyst::Plugin::ConfigLoader - Load config files of various types - metacpan.org "file" config parameter has been deprecated in favor of "$c->config->{ 'Plugin::ConfigLoader' }->{ file }" とか言われるようになったので、設定ファイルを書き換えた。 Catalyst::Plugin::ConfigLoaderで環境毎に設定ファイルを用意する - ヒルズで働く@robarioの技ログもちょっと修正した。 自作プラグインの設定も

    Catalystの変更予定(?) - ヒルズで働く@robarioの技ログ
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Class::C3がXSに対応したようなのでベンチとってみた - Unknown::Programming

    最近Develop版が頻繁にアップされていたClass::C3ですが、とうとう正規版がアップされましたね。 Class-C3-0.16 Class-C3-XS-0.02 ちなみにhttp://d.hatena.ne.jp/fbis/20070319/1174296128もFIXされてます。 ってことで速度的にどれくらいパワーアップしたのか気になったのでベンチとってみました。 ソースはこんな感じ。とりあえず比較のために普通にSUPER使った場合とのベンチ。 use Benchmark qw(cmpthese timethese :hireswallclock); package MyBase; sub new { bless {} , shift } sub hoge { } package MyChildNext; use base qw/MyBase/; use Class::C3; s

    Class::C3がXSに対応したようなのでベンチとってみた - Unknown::Programming
    hirafoo
    hirafoo 2008/11/09
    c3のベンチ
  • 動画で知るClass::C3とNEXTの違い - Lism.in * blog - nekoya (id:studio-m)

    CatalystとかDBICを理解しようとすると頻繁に出てくるClass::C3。継承ツリーをどうにかするものらしいけど、挙動を把握するのは難しそうだなーという印象でした。 「CatalystもそのうちNEXTからClass::C3ベースに変わるし」なんて話題が出ても、そもそもどっちも分かってないのでちんぷんかんぷんです。 したら、牧さんが去年のYAPCでClass::C3について語ってるじゃありませんか。これすげー、めちゃめちゃ分かりやすい。 (Ab)?using Class::C3 - YAPC::Asia 2007 Tokyo Sessions PHPは多重継承サポートしてないし、それ以前にPerl使ってたころはそもそもOOP自体ちゃんと理解できてなかったので、多重継承なんて考えたのは初めて。そんな自分の印象としては、むしろNEXTの挙動の方が不自然なように思えます。 具体的にはこん

    動画で知るClass::C3とNEXTの違い - Lism.in * blog - nekoya (id:studio-m)
  • Class::C3, Algorithm::C3 を勉強したよ! - IT戦記

    DBIx::Class を少し使ったことがあったので Class::C3 をなんとなくで理解していたんです。(ふーん幅優先版の NEXT モジュールでしょ?みたいな感じで。) でも、これは絶対にちゃんと細かい挙動まで勉強しといたほうがいいと思いました。 多重継承とか mixin とかに強くなりたいなと C3 C3 というのは Python 2.3 のドキュメントに書いてある MRO(Method Resolution Order 多重継承したときにどんな感じでメソッドを探索するかという順番) を決めるアルゴリズムで。Algorithm::C3 っていうのがそのアルゴリズムの Perl 実装なんです。 それに! Parrot でも使えるみたいだし! ちなみに MRO ってこんな感じね A には add というメソッドがある B にも add というメソッドがある C は A と B を多重継

    Class::C3, Algorithm::C3 を勉強したよ! - IT戦記
  • Class::C3::Componentised Source Code Reading - 日向夏特殊応援部隊

    DBIC関連の基底クラスとも言えるモジュールがClass::C3::Componentisedです。 C3ベースのコンポーネント化されたクラスモジュールを作る際のベースですね。 1.0003をテキストとします。 load_components() sub load_components { my $class = shift; my $base = $class->component_base_class; my @comp = map { /^\+(.*)$/ ? $1 : "${base}::$_" } grep { $_ !~ /^#/ } @_; $class->_load_components(@comp); } component_base_classってのはSynopsisにもありますが、基的には決めうちの何か。例えばDBIx::Classとかって言う文字列を返す。 loa

    Class::C3::Componentised Source Code Reading - 日向夏特殊応援部隊
  • 1