Skinnyの発表資料は http://nekokak.org/presen/yapcasia2009-dbix-skinny/ こちらになります。 ご意見などどしどしおまちしております。 nekokak _at_ gmail _dot_ com で本日の発表の補足をば。 Skinnyの発表の時にも言いましたが、 Skinnyの発表前のYappoさんのData::Modelの発表の中で、 「SkinnyはSQLをパーズして云々だからバグバグぽい部分がありそげ。」 とおっしゃってましたが、現在のSkinnyはSQLのパーズをしておりません。 昔はSQL::Parserでパーズするのを試している事があったのですが、 SQL::Parserが複雑なSQLをパーズできないので捨てました。 - Skinnyでは現在install_utf8_columnsというfunctionでutf8flagの処理
nekokakの読み方についてなんか本人の居ないところで色々言われているようです。 YAPCのLTの時にcharsbarさんが ねこかく -> ねこけーえーけー と、いいなおしていました。 混乱させてごめんなさい > charsbarさん 始めは nekokak(ねこけーえーけー)でした。 でもなんかお会いする方々に nekokak(ねこかく)とよばれており、 本人も特にこだわりが無いので「ねこかく」でいいとおもっております。 むしろめんどくさいので「ねこかく」でおねがいします。 いままで「ねこけーえーけー」と呼んでいただいていた方には申し訳ありませんが これからは「ねこかく」でよろしくお願いします。 charsbarさんほんとにごめんなさい。 ただし、決して「ねこかけ」ではありませんのでご注意ください。 あとnekokakuでもありません。 一番最後にuはつきません! そこんとこよろしく
Catalystを使ったアプリケーションを作ったとき、 コマンドライン経由でそのアプリケーションのDBを更新したい場合、 Modelはどういう風にあつかうべきなんざましょ? Catalyst内での処理の場合は Catalyst::Model::DBIC::Schema を継承したMyApp::Model::DBICってのを用意しておけば $c->model('DBIC::Hoge')->search とかかけますが、CLIのときってどうするのがBestなのかな? ためしにCLI側のモジュールでMyApp::Model::DBICをuse してみたら一応動くんだけど、そのモジュールはCLIだけで使うわけではなく Catalystのコントローラー側でも使いたい(処理を共通化してるので) でも共通モジュール側でuse MyApp::Model::DBICってしてると、 redefinedワーニン
やってみた。 Net::Server使えば結構簡単にいろいろできるます 今回は色々やってないですが。 http://search.cpan.org/~rhandom/Net-Server/ もっとエラー処理だとか なんだかんだでやってもいいとおもいますけど とりあえずとりあえずで。 package Cache::Swifty::Server; use strict; use warnings; use base qw/Net::Server::PreFork/; sub process_request { my $self = shift; my $cache = $self->{server}->{cache}; my $client = $self->{server}->{client}; my $line = <$client>; $line =~ s/\r?\n$//; if (
CDBIとかDBICのイテレータで [% WHILE (foo = foo.next) %] とか書くと、 undef error - WHILE loop terminated (> 1000 iterations) とか怒られた。 TT見ると $WHILE_MAX = 1000 unless defined $WHILE_MAX; ... sub while { my ($class, $expr, $block) = @_; $block = pad($block, 2) if $PRETTY; return < $WHILE_MAX iterations)\\n" unless \$failsafe; }; EOF } こんな感じで無限ループを抑止してる。 なので、 local $Template::Directive::WHILE_MAX = $it->count+1; こんな感
取り合えずcore dumpの鯖でも動きました。 で、ソースですが公開してもいいかなと思ってます。(あまりたいしたソースじゃござんせんが) ですが、ひとつ問題があります。。。 アプリのいい名前が思い浮かばないw はじめあまり考えずに作り出したのでNekoMemoってモジュール名で作り始めました。 DBIx::ClassはNekoDBでUtil系はNekoUtilでw なんて安直なw ってことで名前大募集。コメントなりこのエントリのブクマなりで 適当に応募してください。ってか多分あつまらないだろうけどw サンプルで動かしているURLは http://nekokak.jf.land.to/nekomemo/memo.cgi です。 (追記) ちなみにCGI::Sessionはそのままで動きました。 鯖にもともとCGI::Sessionあったのに、無理やり用意したCGI::Sessionを 使っ
もうすぐ2月も終わり、3月になります。 1年ってのは早いもので、もう1年のうちの2ヶ月も(ほぼ)終わりました。 おそらく3月もあっと言う間に終わるでしょう。 特に私の場合は早いと思います。 4月からモバイルファクトリーにJoinします。 Joinって書くとかっちょいいですが、要は転職です。 3月は新居への引越しや、退職に伴う手続きや入社に伴う手続きやら引継ぎやらで ばたばたしますが(実際ばたばたしてる) 4月からいいスタートを切れるように頑張ります。 今回の転職騒動で普通に働いていたら経験できないようなことも 経験できてますし、人の温かさや冷たさも味わいました。 これが私という人間を成長させる糧になればとも思います。 転職騒動のなかでうれしかった先輩の言葉。 MFがどんなとこかわからないけど、「こいつは俺の元後輩だ!」と自慢できるような すげー、SE or 技術屋になってくれよ!!! ジン
あんまり考えずに作った。 package Text::CSV_PP::Simple; use strict; use warnings; use base qw/Text::CSV_PP Class::Data::Inheritable/; use IO::File; use Scalar::Util qw/blessed/; __PACKAGE__->mk_classdata('io'); sub getline { my ($self,$io) = @_; unless ( blessed $io || $self->io ) { $self->io( IO::File->new( $io, "r") ) or die "Error : $io not found. $!"; } elsif ( ! $self->io ) { $self->io($io); } $self->pars
http://www.typemiss.net/blog/kounoike/20060120-55より (参考) http://d.hatena.ne.jp/charsbar/20060122/1137938577 http://d.hatena.ne.jp/tokuhirom/20060122/1137931207 まあ、私は英語が得意でなからいきなしドキュメントをつらつら読むのがつらいです。 でも、それは避けて通れない道なのでGoogle翻訳だろうがエキサイト翻訳だろうが辞書だろうが駆使して読む必要があります。 でも、ドキュメントは英語で読めなくてもSourceはなんとか読めないことはないのであまり問題ならないですけども。 よっぽどトリッキーだったり、XSガリガリの場合はお手上げのこともありますが。 で、私が楽しそう&仕事で使いたいモジュールを探す時の方法。 楽しそうなモジュールを探す
DBIx::ClassをインストールしてたらClass::Accessor::Chainedなるものを発見(*゚Д゚)ムホムホ http://search.cpan.org/~rclamp/Class-Accessor-Chained/ サンプルコード ./test.pl #! /usr/bin/perl use strict; use warnings; use NekoChained; my $n = NekoChained->new->foo(1)->bar(3)->baz(5); print $n->foo,"\n"; print $n->bar,"\n"; print $n->->baz,"\n"; $n->foo(2)->bar(4)->baz(6); print $n->foo,"\n"; print $n->bar,"\n"; print $n->baz,"\n"; ./N
と、言うほどではないのですが。。。 ViewエンジンでTTが使えるように HTMLを利用者が指定したHTMLに置き換えることができる 上記2点ですがどう思いますか? Debug用途のPluginだから1は必要ないかなと思ってるのですが、 2をやるとするとテンプレートをTTで書きたい。 となると1を実装する必要あるんですよね。 そこまでやる必要あると思いますか? 要望が多ければ実装してもいいなと思います。 Kenichi IshigakiさんのCGI-Carp-DebugScreenの場合は、 Viewが一定しないから複数Viewエンジンをサポートされてますが、 CGI::Appの場合はHTML::Templateだけでいいのかなと思ってしまいます。 CGI::Carp::DebugScreen::Dumperはちょっと面白いなと思いました。 ログ/画面(むしろ画面)に変数をダンプするのが楽
しょうもないタイトル&内容ですが。。^^; CatalystなりDBIx::Classなりは継承継承しまくりで多重継承なんのそので、 NEXTやらClass::C3やらでゴリゴリメソッド実行。 何がなんやらわけわかめになりやすいでつ。 できる人がみればなんの抵抗も無くソース嫁て問題ないのでしょうが、 オイラみたいななんちゃってだとソース読むのにも一苦労なのですわ。 NEXTとかClass::C3の考え方ってすごいと思います。 でもCGI::Appはより簡単に汎用的に扱えるフレームワークであってほしいと思うのですわ。 そう考えると、現在の各Pluginで利用されているimportメソッドで動的にメソッド追加ってのが 理解しやすいのですよね。 全部が全部Railsを目指す必要ないし、Catalyst目指す必要ないですわ。 いいものは取り入れればよいし、そうでないものは捨てればいいし。 なのでM
MacBook Air 11インチ欲しい! ください 自分のトークの宣伝 http://blog.nekokak.org/show?guid=YoQmCv3X3xGA7lhooKD0CA こっちをみてね。 最近はてながけっこう重いので http://blog.nekokak.org/ こっちをベースにしようかなと思ったり思わなかったり。 まぁここのサーバもVPSで重かったりするんですけど。 というのをつくりました。 http://github.com/nekokak/p5-dbix-skinny-cache package Mock::Basic; use DBIx::Skinny setup => +{ dsn => 'dbi:SQLite:', username => '', password => '', connect_options => { AutoCommit => 1 },
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く