perl

Matt S Trout様へ

まちがっていらっしゃいますよ。 http://search.cpan.org/~mstrout/DBIx-Class-Cursor-Cached-1.000000/ 37c37 < return @{($self->{data} ||= $self->_fill_data)->[$self->{pos}++]||[]}; --- > return @{($self->{data} ||= $self->_fill_data)->{$self->…

DBICで想定していないdeleteを実行しないパッチ

http://d.hatena.ne.jp/tomyhero/20070717/1184682521普通に引数のチェックをするだけですが。 Index: ResultSet.pm =================================================================== --- ResultSet.pm (revision 20773) +++ ResultSet.pm (working co…

DBICデバッグ時にでるBindの値が変なのを直すパッチ

パッチに間違いがあったのでなおしました Index: DBI.pm =================================================================== --- DBI.pm (revision 19922) +++ DBI.pm (working copy) @@ -867,8 +867,14 @@ my ($sql, $bind) = $self->_prep_for_execute…

DBICでAtomicに値をupdateする術

トランザクション使ってください。 以上!!とかが当然一番な感じだったりするのですが、 MySQLのMyISAMを使ってたりしてトランザクションなんですかそれ状態の場合 まあ困るわけです。 my $user = $self->model('User')->search()->first; my $login_count …

Net::Wassr

ものすごい適当につくってみた。 package Net::Wassr; use strict; use warnings; use LWP::UserAgent; use JSON::Any; use Encode; our $VERSION = '0.01'; sub new { my $class = shift; my %args = @_; $args{apiurl} ||= 'http://api.wassr.jp'; $args{a…

DBIx::Class::Stash

ってのをつくってみました。 ちょっと微妙な実装だったり、ほかにいい方法あるんかもしれないですが これくらいしか思いつかなかったので。利用方法としてはたとえばuserテーブルにレコードを作成するときに リレーションのあるプロフィールテーブルにもレコ…

S::P::DebugMessageでDBICのクエリログをみる

このGW期間中空前のBradブームのなか皆様いかがお過ごしでしょうか?http://www.onemogin.com/blog/554-profile-your-catalystdbixclass-app-with-querylog.html このサイトをみててSledgeでもだせばいいやんかと。http://back-paper.labs.mfac.jp/show?pape…

FVS::DBIC::Schema::Unique

さっき見かけたらSchemaベースのがないぽいので、 ざっくりつくってみた。 いまいち>< package FormValidator::Simple::Plugin::DBIC::Schema::Unique; use strict; use warnings; use UNIVERSAL; use UNIVERSAL::require; use Scalar::Util qw/blessed/; …

DBIx::Class::StorageReadOnlyバージョンUp

しました。前のバージョンはかなり中途半端だったすが、このバージョンで 全てのinsert、update、deleteをチェックできるようになりました。use ttバージョンはYappoさん用です。 どうぞお使いくださいませ。http://code.mfac.jp/trac/browser/CPAN/nekokak/…

DBIx::Simpleでprepareキャッシュ

MySQLとかの場合はprepareキャッシュは効かないからあれだけど、 Oracleとかのばやいは有効なはず。 MySQLの場合でもある程度はよくなるはず。 --- Simple.pm (revision 17548) +++ Simple.pm (working copy) @@ -123,6 +123,42 @@ ### public methods +sub …

DBIx::Class::Simple

すげーーーーー適当。 package DBIx::Class::Simple; use strict; use warnings; use base qw/DBIx::Class/; use Carp::Clan qw/^DBIx::Class/; use DBIx::Simple; sub simple_dbh { my $self = shift; return DBIx::Simple->connect(@{$self->storage->conn…

DBICコネタ

find_or_createをよく使ってる人は find_or_newを使うようにしたほうがいいお。たとえば、 my $member = $self->model('Member')->find_or_create( { name => 'nekokak' } )->update( { moge => 'kekekek' } ); とかすると、 searchしてinsertしてupdateとク…

DBIx::Simple

DBIx::Simpleがいい感じです。 普段はDBIC使うとして、複雑なSQLを実行しなければいけない場合、 DBI直でやったりしますが、DBIx::Simpleつかえばいい感じでかけます。 DBI直でもいいのですがOO風味でかけるのがうれしげ。 こんなん。すげー適当ですけど。 #…

Perlbal

YAPCのLTで話したPerlbalですが、 ソフトウエアロードバランサーとしてはかなり秀逸ではないかと。 まあ、Poundでもよかったりもするのですが、 なんかPoundはリダイレクトに鬼時間かかる時があるとかないとか。トークの最後で無言で死ぬとかいいましたが、 …

YAPC::Asia2007発表資料

終わりました。 関係者の皆様お疲れ様でした。私の発表資料は以下URLよりどうぞ。http://code.mfac.jp/ppt/nekokak/2007/04/感想は後ほど。

NTPサーバの監視

とりあえずてけとうに。 NTPサーバからとってきた時間とローカルで持ってる時間も比較してみる なので監視で見るNTPは監視するNTPとは別のサーバを見たほうがいいでしょう。 んーあとでRFCちゃんとよまんと。 別のNTPでとった時間と比較してもいいかな。どう…

DNSの監視

さくっとかいてみた。 まあ、これで十分でしょ。 MadEyeはここからどうぞ http://code.mfac.jp/trac/browser/MadEye/ package MadEye::Plugin::Agent::DNS; use strict; use warnings; use base qw/MadEye::Plugin/; use Net::DNS; sub is_alive { my ( $sel…

IPC::Shareable

これが最適なモジュールかどうか、 もっとBestなモジュールがあれば教えてください。 ってのを前書きにおきますが、なんせIPC詳しくないので。 あと、まちがってたら突っ込みお願いします。http://d.hatena.ne.jp/ablabo/20070327/1175008475ここのBlogをみ…

File::DirWalk

http://back-paper.labs.mfac.jp/show?paper_rid=OEF9g0a6g8これをみて、globとか久々にみたのですが、 指定ディレクトリ以下のファイルを操作する場合はFile::DirWalkがお勧めです。 #! /usr/bin/perl use strict; use warnings; use File::DirWalk; use Pa…

Python::Serialise::Pickle

MailmanのML毎の設定ファイルをPerlからあれやこれやで覗き見したいなぁとか 思ってたのですが、MailmanのML設定ファイルはcPickleというものを使ってバイナリーデータに シリアライズされています。 cPickleはPickleの実装をCでしたもので1000倍高速だとか…

Cache::Memcached::Admin

Adminってもんでもないけど、 いちいちtelnetで話すのも面倒だしみたいな。 すげーてきとう。 package Cache::Memcached::Admin; use strict; use warnings; use base qw/Class::Accessor::Fast/; use Term::ReadLine; use File::HomeDir; use Path::Class; …

Perlbalのselector

Perlbalと色々戯れていたわけですが、 CREATE SERVICE example_server SET listen = 0.0.0.0:80 SET role = selector SET plugins = vhosts VHOST example.com = example ENABLE example_server CREATE SERVICE moge_server SET listen = XXX.XXX.XXX.XXX:80…

Perlbalでcamelize

Perlbalのプラグインかいててちょっと気になったのが、 Pluginロード時にcamelizeしてくれないこと。例えば設定ファイルに LOAD regex_vhostsと書いてプラグインをロードさせた場合、 Perlbalは、Perlbal::Plugin::Regex_vhostsというモジュールを探します。…

Perlbalでの複数プラグイン

複数プラグイン使うときの設定ファイルの書き方をミスりまくってた。 CREATE SERVICE http_server SET listen = 0.0.0.0:80 SET role = selector SET plugins = vhosts ,regex REGEX nekokak.jp \\.(jpg|gif|png|js|css|swf)\$ = nekokak_static VHOST nekok…

Perlbal::Plugin::Regex

昨日のPerlbal::Plugin::Regexcontrolを受けて、 いろいろPerlbalとかさわってみましたが、 結論として、selectorは多段で実行できません。はじめにやりたいと思ってたことが、 selector Vhostsプラグインでホストの振り分け ↓ selector 拡張子によりサーバ…

Perlbal::Plugin::Regexcontrol

ロードバランサーにPoundを使う場合、 画像はこっちのサーバつかってね、 アプリはこっちのサーバつかってねって結構簡単にかけます。 こんな感じ。 UrlGroup "[^=]\.(jpg|gif|png|js|css|swf)$" HeadRequire Host "example.jp.*" BackEnd 192.168.200.1,80,…

String::Diff

信頼のおけるブロガーのString::Diffを使ってみた。 すごい! 一部抜粋で use String::Diff; my($old, $new) = String::Diff::diff($old_entry->body, $self->stash->{entry}->body, remove_open => '<span class="remove_entry">', remove_close => '</span>', append_open => '<span class="append_entry">', append_clos</span>…

DBICの集約関数

http://www.ornithopter.jp/archives/2006/11/dbixclassdbic_d_1.htmlケースによってはもっとスマートに扱えます。こんな感じのデータがあったとします。 > select * from item; +----+------------+------+-------+---------------------+-----------------…

BackPaperのソース公開

しました。http://code.mfac.jp/trac/browser/BackPaper/実装としては MoFedgeベースのDBICです。 LoaderつかってるのでLoader使う参考になればとも思ったのですが、 LoaderもMoFedgeでラップしてるので微妙ですが。 公開することに意味があるのです。はい。

DBICS::Loader使った時にふがふがしたいの巻

Loaderを使うと各スキーマは定義しなくてもLoaderが自動にやってくれるのですが、 スキーマをちょーっと拡張したい時とかは軽く工夫します。例えば、 +------------+------------------+------+-----+---------------------+----------------+ | Field | Typ…