タグ

Class-Componentに関するishideoのブックマーク (6)

  • ishideoのブックマーク / 2009年1月14日 - はてなブックマーク

    Pythonでプログラムを書いていると、よく関数の中で関数を作ることがあります。 Python はクロージャに対応していて、関数の中で作られた関数は、外側の関数のローカル変数を参照することができます。 クロージャが一番役に立つ場面がデコレータです。次の例では、引数を取るデコレータを作るために関数内関数を2段階作成し、それぞれのローカル変数を一番内側から参照しています(このプログラムは、Python 2.6とPython 3.0の両方で動きます⁠)⁠。 リスト1 # coding: utf-8 from __future__ import print_function import sys def log(out=sys.stderr): def decorator(func): name = func.__name__ def decorated(*args, **kwargs): ###

  • 第3回 attributeを拡張してpluginに変化を加える | gihyo.jp

    今回のテーマ 前回は、Perlのattributeという仕組みを解説しました。今回は、さらにattributeの実戦的な利用方法として、(Perlとしては実験的な実装という扱いですが)パッケージ固有のattribute実装の方法と、Class::Component::Attributeを拡張してplugin作りを便利にする方法を取り上げます。 サンプルアプリケーション 連載では、プラガブルなモジュールを作製するという事を考えて、Gopperという実際に実行可能なサンプルアプリケーションを元に解説を行ないます。GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 659 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper パッケージ固有のattribu

    第3回 attributeを拡張してpluginに変化を加える | gihyo.jp
  • 第4回 Hook処理を極めて外部からモジュールを拡張する | gihyo.jp

    指定したhook pointを実行し、順番にhook pointのコードを処理し、最初に戻り値があった時点で以降に登録されたコードの実行は行ないません Hook関連のメソッドは少なく、シンプルですね。 register_hookは主にPluginから利用されるメソッドになっており、hook pointとhook poinに対するコードをPlaggerに対して登録します。 Class::Triggerで言う所のadd_triggerになります。 実際のプラグインのコードを引用すると下記のように利用されます。 # Plagger::Plugin::Publish::CHTML sub register { my($self, $context) = @_; $context->register_hook( $self, 'publish.feed' => \&feed, 'publish.fi

    第4回 Hook処理を極めて外部からモジュールを拡張する | gihyo.jp
  • Class::Component その2 - (ひ)メモ

    ※ 例文中の個人名などは架空のものです。 やりたいこと 人によって自転車の色は異なる。色の情報は外部のデータファイルとかDBとかにある。色の情報は最初に調べておいて、聞かれたらすぐに答えられるようにしておきたい。 やれることは全部やりたい。 やったこと 妥当かどうかわからないすけどやったこと。 Pluginが呼ばれる前に外部データを読むとかの初期化処理をしたい。でもってその初期化処理は、Pluginされたエッジクラスに応じて変化させたい。 エッジクラス (NaoyaとかKanjiManとか) で、config に { injected => __PACKAGE__ } を詰める。 __PACKAGE__->class_component_reinitialize(config => $config); でセットする。 __PACKAGE__->class_component_reiniti

    Class::Component その2 - (ひ)メモ
  • 第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp

    はじめに はじめまして。大沢と申します。 この連載では、筆者が実装したCPANモジュールのClass::Componentを題材にしつつ、近代的なPerlでのプラガブル(拡張可能)なソフトウェアの実装方法を紹介します。 今回は、Class::Componentの概要を説明します。 連載で使うサンプルアプリケーション 連載では、プラガブルなモジュールを作製するという事を考えて、Gopperというサンプルアプリケーションを元に解説を行ないます。 GopperはCodeRepos上のsvnリポジトリに置いてあるので各自checkoutしてください。 svn co -r 271 http://svn.coderepos.org/share/lang/perl/Gopper/trunk Gopper サンプルアプリケーションは連載中にも頻繁にupdateされる事が予想されますので、毎回リビジョン

    第1回 Class::Componentから始めるプラガブルモジュール | gihyo.jp
  • YappoLogs: Class::Component - プラガブルなモジュールを作る為のベースモジュールの解説

    Class::Component - プラガブルなモジュールを作る為のベースモジュールの解説 pluginやcomponentを取り扱うモジュールを書く時に、plugin/componentを取り扱いを全て引き受けてくれるモジュールを作りました。 だいぶ前からCPANには上げてたんですが、色々あって今日報告と。 既出のアイディアとしてはid:naoyaの Class::Pluggableやid:ya_kenの Class::Pluggable等があります。 これらのモジュールもシンプルでいい感じなのですが、シンプルな分、若干物足りなさがあった(例えばメソッドの生やし方に自由度持たせたいとか)のでこしらえました。 詳しくはCPANのClass::Componentにもありますが日語でも説明文書きたい。 出来る事component追加で基メソッド拡張が出来るplugin追加で、hook p

  • 1