D-7 <altijd in beweging>

Day to day life of a Perl/Go/C/C++/whatever hacker. May include anything from tech, food, and family.

2006年11月


結局グーグルでは欲しい情報が見つからなかったので電話かけまくる予感。


・・・と、思ったらあった。おっけ。・・・と思ったら電話番号とかなかった。くっ。電話番号どうやって調べようかなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック



http://www.asahi.com/culture/update/1113/020.html



犯罪者じゃないんだから、この写真はひどいんじゃ(笑)



    このエントリーをはてなブックマークに追加 mixiチェック


DBIx::Classの腐ったページングを直してみた。ただ、subversion上でまだテストが落ちている。これがページングのせいかどうかまだ未検証なのでちょっとまだ要注意。試してみる気があったらどんぞー





daisuke@beefcake dbix-class$ svn diff
Index: t/67pager.t
===================================================================
--- t/67pager.t (revision 2877)
+++ t/67pager.t (working copy)
@@ -7,7 +7,7 @@

my $schema = DBICTest->init_schema();

-plan tests => 12;
+plan tests => 15;

# first page
my $it = $schema->resultset("CD")->search(
@@ -68,3 +68,15 @@

is( $it->next->title, "Generic Manufactured Singles", "software iterator->next ok" );

+
+$it = $schema->resultset("CD")->search(
+ { year => { '<', 2000 } },
+ { rows => 1, page => 2, order_by => 'title' },
+);
+is($it->count, 1, "standard resultset paged rs count ok");
+$it = $it->search(
+ { artist => 1 }
+);
+
+is($it->pager->current_page, 2, "standard resultset page ok");
+is($it->next->title, "Spoonful of bees", "software iterator->next ok");
Index: lib/DBIx/Class/Storage/DBI.pm
===================================================================
--- lib/DBIx/Class/Storage/DBI.pm (revision 2877)
+++ lib/DBIx/Class/Storage/DBI.pm (working copy)
@@ -823,7 +823,10 @@
} else {
$self->throw_exception("rows attribute must be positive if present")
if (defined($attrs->{rows}) && !($attrs->{rows} > 0));
- push @args, $attrs->{rows}, $attrs->{offset};
+ push @args, $attrs->{rows},
+ $attrs->{page} ?
+ ($attrs->{rows} * ($attrs->{page} - 1)) :
+ $attrs->{offset}
}
return $self->_execute(@args);
}
Index: lib/DBIx/Class/Storage/DBI/Cursor.pm
===================================================================
--- lib/DBIx/Class/Storage/DBI/Cursor.pm (revision 2877)
+++ lib/DBIx/Class/Storage/DBI/Cursor.pm (working copy)
@@ -78,7 +78,7 @@
unless ($self->{sth}) {
$self->{sth} = ($self->{storage}->_select(@{$self->{args}}))[1];
if ($self->{attrs}{software_limit}) {
- if (my $offset = $self->{attrs}{offset}) {
+ if (my $offset = $self->{attrs}{page} ? ($self->{attrs}{rows} * ($self->{attrs}{page} - 1)) : $self->{attrs}{offset}) {
$self->{sth}->fetch for 1 .. $offset;
}
}
Index: lib/DBIx/Class/ResultSet.pm
===================================================================
--- lib/DBIx/Class/ResultSet.pm (revision 2877)
+++ lib/DBIx/Class/ResultSet.pm (working copy)
@@ -80,6 +80,19 @@

=cut

+sub offset
+{
+ my $self = shift;
+
+ return
+ defined $self->{attrs}{offset} ?
+ $self->{attrs}{offset} :
+ defined $self->{attrs}{page} ?
+ ($self->{attrs}{rows} * ($self->{attrs}{page} - 1)) :
+ 0
+ ;
+}
+
sub new {
my $class = shift;
return $class->new_result(@_) if ref $class;
@@ -89,8 +102,6 @@

if ($attrs->{page}) {
$attrs->{rows} ||= 10;
- $attrs->{offset} ||= 0;
- $attrs->{offset} += ($attrs->{rows} * ($attrs->{page} - 1));
}

$attrs->{alias} ||= 'me';
@@ -678,8 +689,10 @@
sub slice {
my ($self, $min, $max) = @_;
my $attrs = {}; # = { %{ $self->{attrs} || {} } };
- $attrs->{offset} = $self->{attrs}{offset} || 0;
- $attrs->{offset} += $min;
+ if (! defined $self->{attrs}{page}) {
+ $attrs->{offset} = $self->{attrs}{offset};
+ $attrs->{offset} += $min;
+ }
$attrs->{rows} = ($max ? ($max - $min + 1) : 1);
return $self->search(undef(), $attrs);
#my $slice = (ref $self)->new($self->result_source, $attrs);
@@ -881,7 +894,7 @@
my $count = $self->_count;
return 0 unless $count;

- $count -= $self->{attrs}{offset} if $self->{attrs}{offset};
+ $count -= $self->offset();
$count = $self->{attrs}{rows} if
$self->{attrs}{rows} and $self->{attrs}{rows} < $count;
return $count;



    このエントリーをはてなブックマークに追加 mixiチェック


やられたような気がする。Plagger -> Plagger::Plugin::CustomFeed::Mixi -> WWW::Mixi経由で更新内容を取得しているのだが、HTMLが変わったんだか、なんらかの制限をかけられているのだか、マイミク日記の最初の一行目しか取得できない。うーん、User-Agentか?



    このエントリーをはてなブックマークに追加 mixiチェック


父方の祖母の13回忌に行ってきた。実はこういうのは初めてですよ。念仏唱えて、お焼香して、お説教を聞いて。その後もう何年ぶりだ?という従姉妹とかと会って、皆でお昼。解散。色々買い物して、家族で飯食って、帰宅。



    このエントリーをはてなブックマークに追加 mixiチェック


この間とある小さなバーのカウンター6席に5人、年の頃同じくらいの20代後半から30代前半の男女が座っていて、なんか時間が遅いという事もあって知らない人同士なのに和気あいあいと飲んでたのである。俺も含めて。なぜか話が「その場にいた一人の女性のくしゃみがおかしい」という話になり、その女性は猛反発。絶対おかしくない、と。


普通の状態だったら話はそこで終わりそうな物だが、そこはヨッパライ同士。皆で猛烈な勢いでこよりを作り始めて、めいめい鼻の穴に差し込み始める。あちこちからくしゃみの音がしだすわけだが、俺ともう一人がどうしてもくしゃみがでないのでバーテンさんが特製胡椒入りこよりを作り、俺もめでたくハックション。


そして一番最後に件の女性がトライ。皆固唾を飲んで見守る中、「はっ・・・くしゅんっ・・・あはん(はぁと」なるほど、これか。これでご飯3杯行けます。


ちなみにその後、胡椒で本当にくしゃみがでるのか、と実験するために、ティッシュの上に粗挽き胡椒をふりまいておいたら隣のお兄さんが(しつこいが、粗挽き)胡椒をコカインを吸うように鼻から吸ってしまい、しばらく悶絶してました。胡椒は直接吸引してはいけないようです。



    このエントリーをはてなブックマークに追加 mixiチェック


面接終了、仕事も結構進んだ。今日はいい日だった。



    このエントリーをはてなブックマークに追加 mixiチェック


携帯を変えた!ポータビリティを活用して、電話番号は変わらなかったけど、メアドのドメインだけdocomoがezwebになったです。後でお知らせメールを出すけど、とりあえず宣言しておきます。


ちなみに、もし聞かれたら全力でいらない!と言おうと思っていたのに勝手に袋に入れられていたもこみちストラップ→


欲しい人にあげます(笑)



    このエントリーをはてなブックマークに追加 mixiチェック


寝る時に「アメトーーク」を見てたら、ガンダム芸人やってたのでついつい見入ってしまう。俺もララァ・スンに「ノーマルスーツ着てくださいね」って言われたい・・・。



    このエントリーをはてなブックマークに追加 mixiチェック


寝過ぎ。寝過ぎだ。またシャツにこぼしたので一旦戻って着替え。



    このエントリーをはてなブックマークに追加 mixiチェック


2週間に一回データ内容が書き変わるテーブルがあるので、これを世代別にどんどん交代させていきたいのだが、その際古いデータは取っておきたい。本当はhoge_20061101とかいう実体に対してVIEWを作るのが一番手軽なような気がするのだが、DBIx::Classから使えないと困るのでVIEWはちょっとパス。


とすると、本物のテーブルを作ってそこにデータを入れ、2週間に一回中身を世代別テーブルに入れる。新しいデータが入る時にTRUNCATEしてから挿入かな、と思うのだが。これはアリなのかなぁ。



    このエントリーをはてなブックマークに追加 mixiチェック


やっと使う機会があった。RESTチックなインターフェースにいいね。ひとつだけ気をつけなくてはいけないというか、なんかなぁと思う部分が、チェーンの途中と最後を明示的に切り分けなくてはいけなくて、



http://hoge.com/hoge/123
http://hoge.com/hoge/123/edit

みたいな感じに、最初のケースならただ表示、次のケースなら編集、みたいな事をしたい場合に二つのChained Actionを書かないといけないこと。これ、/editがなくても動く可能性があるってことをマークアップできるといいのに。


あともう一つ嫌なのが、Chained ActionのPathPartがグローバルな事。俺は基本的にモジュール単位でnamespaceを分けたいので、あまりPathPartにルートからのパスを指定したくないんだよねぇ。まぁとりあえずいいけど。



    このエントリーをはてなブックマークに追加 mixiチェック


ここのところ寝れてなかった反動か、ここ数日それほどハードじゃない日はもう寝倒してた。今日も、昨日は夜中零時頃にはベッドで本を片手にうとうとしてたのに、起きてみたら10時・・・。なんだ、この寝かた。5時間睡眠でずっと普通にやってきたはずなのに、やっぱり体が疲れてるのかねぇ。



    このエントリーをはてなブックマークに追加 mixiチェック


よく考えると初めて自分(会社のだけど)のfavicon.icoを置いた気がする。



    このエントリーをはてなブックマークに追加 mixiチェック


事務所に顔出し、っていうか、ずっと事務所。ひと月ぶり。全員面子が揃って会議、ひと月ぶり。電話が鳴らない日、priceless・・・じゃなくて、ひと月ぶり。逆にこの静寂が怖いね。電話が鳴らないのをいい事に溜まっていた仕事を片付ける。がががのが、と。


Perl系のMLの読んでないログが溜まり過ぎ。1000件単位でメールボックスに残ってる。



    このエントリーをはてなブックマークに追加 mixiチェック


「しばわんこの和のこころ」を見ながら仕事。和む。



    このエントリーをはてなブックマークに追加 mixiチェック



http://www.nimaigai.com/howto.html



ってことで相棒ちゃんのところから



【性格】「ドライで柔軟なあやつり師」


インプットを左脳、アウトプットを右脳で行う「さう」は、状況を客観的かつ正確に把握して結論を出した上で、相手の感情に響くやり方で訴えかけます。ものごとを裏の裏の意味まで探って分析し、相手の状況を見切った上で言葉巧みに誘導するコミュニケーション能力の高い策士です。


冷静にバランスよく納得しやすい解決を導き出すことで、人に意見を求められることが多く、一目置かれる存在です。人当りはソフトですが、つねに適度な距離を見定めた大人のつきあいをします。その距離感をドライで冷たいと感じる人もいるでしょう。人間関係に角を立てることが嫌いで、イザコザが起こったりすると両方の顔をうまく立てて丸くことをおさめるのが上手。ある意味小心者でもあります。自分の趣味や目的の達成のためには努力を惜しまず研究熱心なので、物知りで頭がいい印象を与えます。オタクの素質も備えています。ムダな努力もしない効率主義者なので、無理と感じたらあきらめも早く、無難な線で決着をつけようとします。それを物足りないと感じる相手もいるでしょう。



うーーむ。丸く納めるのは俺のもっとも不得手とするところですが。



    このエントリーをはてなブックマークに追加 mixiチェック

このページのトップヘ