タグ

ブックマーク / blog.yappo.jp (12)

  • YappoLogs: Data::Model っていう ORM みたいの CPAN にあげたよ

    Data::Model っていう ORM みたいの CPAN にあげたよ あざーす。循環参照しすぎるとバターになる。。なんでそんなに人の目を気にするのだろうと、マジレス。 早速ですが Data::Model っていう O/Rマッパー 的な物を CPAN にあげました。 Data::Model http://github.com/yappo/p5-Data-Model/tree/master 元来は MVC モデルで言う所の Model を一括でまかなえるつもりで実装していますが、ロジック処理は普通の Perl のクラスで書いちゃった方が潰しが聞くため、主にストレージを Perl のオブジェクトにマッピングする ORM 的な使い方が主流となっています。 そして、 Data::Model の多くの実装や設計などは Data::ObjectDriver を参考にして開発しました。 他にも後述して

  • YappoLogs: 悪のりで学ぶsvnadmin/trac入門実用編

    悪のりで学ぶsvnadmin/trac入門実用編 とある平和なある週末に事件は起こった xx:14 ([aopy]+) stfuawsc汚染なコードをciってまった xx:14 (A) ちょ xx:14 (B) ww xx:14 (C) www xx:14 (D) stfuawsc xx:14 {[ainOS]+} パネラーディスカッションという事で、直近のコミットした内容をこの世から抹消しなければならなくなった。 しかもtrac上のデータもあわせて..! 消したいリビジョンは100である。 svnのデータを消すコマンドだけで直前のコミットを取り消せないものかと調べたが、出来ないという事が分かった。 ちょっと冷静になって、svnadmin dumpとsvnadmin loadの組み合わせで何とか出来ないか?と考え$ svnadmin dump /svn/public > /tmp/publ

    foosin
    foosin 2009/04/02
  • YappoLogs: CPUの気持ちは大事だけど、VMの気持ちも考えようよ

    CPUの気持ちは大事だけど、VMの気持ちも考えようよ CPUの気持ちになってプログラムを書くということ Kansai.pm#11 参加記その1 - プログラマになりたい ちなみに、下記のコードはデータハザードを解消する為のコーディング例です。データハザードは、命令が利用するデータ間に依存関係がある場合に発生します。前の命令が終わらないと後ろの命令が実行できないとか。ですので、それを解きほぐしてやれば、並列で処理が出来るようになります。という感じでnaoyaさんもぶこめで loop unrolling は perl でもちゃんと効果があるって書いてるけど、それforブロック(スコープ)が一段増えてる事で差が出てるんじゃないかと思うわけです。はい。 以下検証コード use strict; use warnings; use Benchmark qw(:all); cmpthese(500000

    foosin
    foosin 2009/03/27
    >スコープが変わるという事はレキシカル変数の処理などをやらなきゃいけないわけで、{}があるだけでもPerlは処理をいっぱいするわけです。
  • YappoLogs: danさんのllevalをもっと便利にするラッパー作った

    danさんのllevalをもっと便利にするラッパー作った 404 Blog Not Found:Ajax - Lightweight Languages を実行するAPI 今度はPerlだけではありません。一時はcodepadの1/100くらいの利便性まで下がってしまって心配しましたが、80倍便利になってぼくたちのDan the APIが帰って来ました。 しかし、まだ物足りない所として貼付けたcodeのpermalinkが取れないので、実行結果を友達に教えてhackに役立てるのが不便でした。 そこでDan the APIを利用する形で、貼付けたcodeのpermalinkを作るCGIを作りました。 http://seiitaishougun.com/lleval.cgi ソースコードは公開されてるので、自己責任で遊んで下さい。実際に動いてる物はYacafiのpack機能をつかって1つのファ

    foosin
    foosin 2009/03/26
  • YappoLogs: Perlで数有る$selfを取る手法をベンチマーク取った

    Perlで数有る$selfを取る手法をベンチマーク取った PerlでOOなコード書く時のコンテキストを取る方法は色々あります、最近audreyがselfvarsをリリースしたので、gugodのself.pmとingyのSpiffyそして、既存のmy $self = shift;やshift->や$_[0]->で$selfを取る方法それぞれのベンチマークを取ってみました。 テストコードのモジュール名は、それぞれのモジュールの作者名から取り、既存の手法はYAPC::Asiaでプレゼンした事のある日を代表するPerlな企業のCTOからモジュール名を取らせていただきました。 コードは以下の通りです。 package Audrey; use strict; use warnings; use selfvars; sub new { bless { count => 0 }, shift } sub

  • YappoLogs: PerlのAttributeについてのお勉強 part2 ~Attribute::Handlersで作るプラグイン機構搭載ソフト~

    PerlのAttributeについてのお勉強 part2 ~Attribute::Handlersで作るプラグイン機構搭載ソフト~ さて、前回ではattributeの扱い方を軽く見てみました。 ただ、あんなコードを毎回書くのは面倒です。 そこでAttribute::Handlersモジュールの登場です。 概要としては、独自attributeの作成を簡単にしてくれます。 もちろん関数以外のattributeの作成が出来ますが、今回も関数のみに絞ります。 詳細はperldocしてください。 基的な使い方も簡単で use strict; use Attribute::Handlers; sub ah_test1 : ATTR(CODE) { my($package, $symbol, $referent, $attr, $data, $phase) = @_; print "ah_test1:

    foosin
    foosin 2009/01/26
    アトリビュート
  • YappoLogs: Yacafi という軽量CGIフレームワーク書いたよ

    Yacafi という軽量CGIフレームワーク書いたよ MENTA というウェブアプリケーションフレームワークをかいてみた - TokuLog 改めB日記やらNanoA というウェブアプリケーションフレームワークをかいてみた - id:kazuhookuのメモ置き場やらと軽量CGIフレームワーク作りが流行ってるようなので昼飯った後に20分くらいで書いたよ。 Yacafi(Yet another CGI application framework interface)と言います。 http://svn.coderepos.org/share/lang/perl/Yacafi/trunkからsvn coできるけど、Yacafiはモジュール一個だけあれば動くようにしてあるのでhttp://svn.coderepos.org/share/lang/perl/Yacafi/trunk/lib/Yac

    foosin
    foosin 2008/12/06
    Yacafi
  • YappoLogs: FedoraCoreやCentOS系の遅いPerlのパッチの件

    FedoraCoreやCentOS系の遅いPerlのパッチの件 3月くらいにkazeburoさんがメモしてた遅くなる話。 極端に遅くなる処理のベンチ例みたいなのがほしいかな何やったら遅くなるかわかりました。 すごく正確に検証してるわけでも無いのですが、use overloadしたパッケージをblessするとき。 例えばURIやDateTime等のnew時。 この時にかかるCPUコストが激しく高いため、全体的にアプリケーションがもっさりと動く事になってました。 しかもFC4系列のディストリビューション全体で注意した方が良いかもです。 家はCentOS 4.4の perl 5.8.8-4.el4e1 のRPMで該当のパッチが混入していました。 書いたアプリが見込みよりもパフォーマンスが悪くて、最後の最後にまさかと思ってoverloadしてるモジュールを疑っていたらkazeburoさんにナイス指

  • 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

    foosin
    foosin 2008/08/02
  • YappoLogs: 会社を辞めたら早急にハローワークへ行って貰えるお金を減らさないライフハック

    会社を辞めたら早急にハローワークへ行って貰えるお金を減らさないライフハック 色々訳ありで事実上、離職日から30日くらい経過して失業の受給申請しにいこうと思ったんだけど、失職日から月さえまたがなければ満額貰える物だと勘違いしたら、職業安定所に行って求職票をだした日から受給期間がカウントされるそうだ。 色んな意味で涙目。 失業手当を満期で貰うつもりとか長引きそうだったら涙目にもならないんだろうけど(支給開始日が後ろにずれ込むと、終了日もその分後ろにずれるみたい。)、失業期間が短期とかになると早めに動かないとロスト割合がでかくなるすね。 ちなみに、貰える金額はザックリと(過去6ヶ月もらった給料の金額/180)で日当の基準が算出されて、その日当から5割〜8割の金額が、支給日当として計算されるらしい。30代だと支給日当の上限が7070円 あとは、結果的に支給日数が少なくても自己都合退職(自己都合とか

  • YappoLogs: DBICのEncodeColumnsとかがResultSet::createで誤動作する件、ほか

    DBICのEncodeColumnsとかがResultSet::createで誤動作する件、ほか 実際はDBIC::EncodeColumnsを使っていて気づいたのですが package Schema::SjisTable; use strict; use warnings; use base 'DBIx::Class'; __PACKAGE__->load_components('EncodeColumns', 'PK::Auto', 'Core'); __PACKAGE__->decode_columns('cp932'); と定義してあるスキーマに$schema->resultset('SjisTable')->create({ ... })という感じでinsertするとcp932でDBに格納されるのではなくutf8でDBに格納されてします。 これはUTF8Columnsでも、utf

  • YappoLogs: DBIx::Class::Schemaの使い方

    DBIx::Class::Schemaの使い方 亀レスだけどSchema::Loaderネタが流行ってたみたいなので、最近の自分の使い方を。 まぁSoozyつかってるのでmake_schema_atで作られた静的なSchema使ってるんだけども。 自分的にはSchmeaクラスは一切手をつけたく無いので、大部変わった事をしているかも。 若干mfacインスパイアぎみではあるけど。 package Soozy::Plugin::DBIC::AutoSetup; (略) sub setup_components {#Catalyst::setup_componentsとほぼ同じ my $class = shift; my $schema_bases = Soozy::Component::Loader->find_components( '', search => [ $class->base_c

  • 1