タグ

2011年4月20日のブックマーク (7件)

  • エキスパートPerl - 変態モジュール総覧

    Perl の世界には、「変態モジュール」と呼ばれるモジュールがたくさん存在します。 これらは、モジュールの形態をとりながら、Perl の内部に踏み込み、蹂躙しているという恐ろしい存在です。 しかしながら、これらのモジュールは使いどころを間違えなければ非常に有用であり、あなたのプログラムに無限の可能性をもたらすことでしょう。 自分の足をどうやって撃ちぬくか、よく考えてからつかってください。 下記のモジュールたちは、それ自体が変態的なものもあれば、変態的なことをするときに使うモジュールもあります。 PadWalker PadWalker は変態モジュールの筆頭です。レキシカルスコープの変数を、レキシカルスコープの外から見たり書き換えたりできます。 peek_my peek_our peek_sub closed_over という4つの関数をサポートしています。 下記のようなありえない操作を可能

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

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

    masutaro
    masutaro 2011/04/20
  • mod_perlでサーバによるシャットダウン時に後始末用の関数を呼び出すようにする。 - 日々量産

    といっても、オブジェクト指向で書いて、DESTROYを呼び出すようにするだけなんですが。server_shutdown_cleanup_registerとかなんかいろいろありますが、 外部モジュールをあまり叩きたくないので、この方法は使わないで、 自分の作ったモジュールだけでどうにかしてみます。 考え方はSpeedyCGI等でも同じなので、流用はできるはず。 オブジェクト指向における、DESTROYは、オブジェクトが破壊されたときに呼び出されます。 破壊される主な条件は以下です。 別の値が代入されたり、破棄されたりして、オブジェクトが参照できなくなった。 つまりスコープから外れないかつ、オブジェクトに新しい値を代入させなければいいわけです。 今回はmod_perlで動かすことを考えます。 mod_perlでもspeedyCGIでも、ourで宣言することで、 スコープから外れても変数を破棄さ

    mod_perlでサーバによるシャットダウン時に後始末用の関数を呼び出すようにする。 - 日々量産
    masutaro
    masutaro 2011/04/20
  • perl - DESTROYって何? : 404 Blog Not Found

    2006年05月07日11:30 カテゴリLightweight Languages perl - DESTROYって何? Shiroさん、いい質問です。 404 Blog Not Found:perl - Yet Another Way to Add Singleton Methods ちょっと疑問。この実装で、$fooが不要になった時に$fooおよびシングルトンメソッドのsubの実体はGCされるのでしょうか。結論を先に言うと、きちんとされます。というのか、この場合それを手でやっているわけです。そして、それを手でやっている箇所がDESTROY。 sub DESTROY { my $self = shift; $DEBUG and carp "Destroing $self"; delete $Method{ $self + 0 }; } 実はこのmethodは、名前に反して「ゴミ捨て」そ

    perl - DESTROYって何? : 404 Blog Not Found
    masutaro
    masutaro 2011/04/20
  • Leopard で Sledge を動かしてみたが・・・ - @kyanny's blog

    なんかヤバいところでハマってしまったような [Thu Jul 3 21:32:38 2008] [error] Can't load '/System/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Time/HiRes/HiRes.bundle' for module Time::HiRes: dlopen(/System/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Time/HiRes/HiRes.bundle, 1): no suitable image found. Did find:\n\t/System/Library/Perl/5.8.8/darwin-thread-multi-2level/auto/Time/HiRes/HiRes.bundle: no matc

    Leopard で Sledge を動かしてみたが・・・ - @kyanny's blog
    masutaro
    masutaro 2011/04/20
  • Apache設定ファイルをチューニング

    Apache + mod_perl の場合、httpd.conf でいろいろと気をつけるべき点があるのですが、まとめてみました。ちなみにサーバの設定値は、 サーバスペックが Pentium 4 2.8GHz HT動作 / RAM 2GByte な環境で、Amazon Search が喰うメモリは mod_perl 動作で 1 httpd あたり 10〜40MByte 程度。サーバライブラリがある条件下でメモリーリークするので、最大で httpd は 100Mbyte 程度まで肥大。 という条件下で KeepAlive Off Timeout 60 MinSpareServers 10 MaxSpareServers 10 StartServers 10 MaxClients 50 MaxRequestsPerChild 50 という設定値になっています。各パラメータの値の意味を説明します

    masutaro
    masutaro 2011/04/20
  • MacOSX: apache2 + mod_perl2 on Mac OS X 10.5 - classiclog

    masutaro
    masutaro 2011/04/20