2007-01-03 Wed

横浜駅西口 ダイヤモンド地下街 まん天餃子

考え事して実装して、とやっていたら辺りが暗くなったので、
ご飯を食べて八王子へ戻ることにしました。

まん天餃子というダイヤモンド地下街にある店に入りました。

画像画像

まん天餃子2人前とご飯とスープを店内でいただきました。
きゅうりのぬか漬けは売り切れていました。残念。

味は美味しかったです。食べようと思えば倍くらい食べれそうです。
でも、ちょっと足りないくらいがよろしかろー、ということでやめました。

すごく小さなカウンターしかなくて持ち帰り中心なんですけど、
店内では餃子とビールで1杯やってる人が3組もいてギューギュー。

また来ようかな。

投稿者:としのり  日時:23:59:59 | パーマリンク | コメント | トラックバック() |

DBICのリレーションが良くわからないのでメモ - 1対多

[Perl]

[2007-01-08]:追記
[2007-01-07-0]で、DBICのリレーションシップについてのエントリを
書きました。以下は非常にいい加減なので[2007-01-07-1]をどうぞ。




よく分からない1対多のhas_manyと、belongs_toの使い方を理解したい。
引き続き、以下の文献をグルグル読みながら理解してみる。。

101号室より愛をこめて: [DBIx::Class][DBIC][perl] DBIx::Classのリレーション
Perl/DBIC - Nekokak's core dump
DBIx::Class::Manual::Cookbook
DBIx::Class::Relationship
カエルチュウイホウ - DBICで多対多の設定を
カエルチュウイホウ - DBICで多対多

以下に出てくるコードとかは参照先を書いてませんが、
上の参考記事のどこかから持ってきました。ありがとうございます。

Userテーブルと本テーブルがあって、Userが本を各自多数持っている状態を考えると、いい感じかな。

基本的なことは、1対1と同じ。
CREATE TABLE User (
  user_id text primary key,
  password text,
  ....
);
CREATE TABLE Book (
  book_id integer primary key,
  user_id text,
  name text,
  author text,
  ....
);

こんなときに、
My::DBIC::Schema::User->has_many( books =>'My::DBIC::Schema::Book', "user_id" );


My::DBIC::Schema::Book->belongs_to( user_id =>'My::DBIC::Schema::User' );

のように記述できる。

前者は$user->booksで、ユーザが持っている本のリストを得られて、
後者は$book->user_idで、着目している本を持っているユーザのリストを得られるのだ。

うーん、なんか不十分な気がするので、もうちょっと例を探そうかな。
いや、ドキュメント中心にちゃんと読もう。

投稿者:としのり  日時:23:59:59 | パーマリンク | コメント | トラックバック() |

DBICのリレーションが良くわからないのでメモ - 1対1

[Perl]

[2007-01-08]:追記
[2007-01-07-1]で、DBICのリレーションシップについてのエントリを
書きました。以下は非常にいい加減なので[2007-01-07-1]をどうぞ。




よく分からないというか、has_oneとmight_haveとbelong_toの明確な違い
が分からなくて、どうすれば一生間違いなく理解できるかなと、

これらを見て、理解することから始めた。
101号室より愛をこめて: [DBIx::Class][DBIC][perl] DBIx::Classのリレーション
Perl/DBIC - Nekokak's core dump
DBIx::Class::Manual::Cookbook
DBIx::Class::Relationship
カエルチュウイホウ - DBICで多対多の設定を
カエルチュウイホウ - DBICで多対多

以下に出てくるコードとかは参照先を書いてませんが、
上の参考記事のどこかから持ってきました。ありがとうございます。

リレーションはテーブル間にリファレンスを張るようなもの。
JOINでテーブルをくっつけてくれる。

has_oneとmight_hasとbelongs_toはテーブルAの行とBの行の間に1:1対応の関係

has_one : INNER JOIN(一致する行のみを持ってくる)
might_have : LEFT JOIN(一致しない行には、片側にNULLを付けて持ってくる)
CREATE TABLE User (
  user_id text primary key,
  password text,
  ....
);
CREATE TABLE Profile (
  user_id text primary key,
  name text,
  mail text,
  ....
);

こういう風に互いに相手のprimary keyがどこかに入っているときには、
has oneでリレーションを記述できる。
My::DBIC::Schema::User->has_one(profile=>'My::DBIC::Schema::Profile' );




My::DBIC::Schema::Profile->has_one( user=>'My::DBIC::Schema::User' );


のようにできる。

こんな風にリレーションを記述しておくと、$user->profileみたいにアクセスできる。
この場合Primary Keyを使ってJoinしてる。

もちろん、相手のPrimary Keyが自分のPrimary Keyじゃなくても良い。

以下のように、Primary Keyが共有じゃないけど、普通のカラムには持っているときには、
CREATE TABLE User (
  user_id text primary key,
  profile_id text,
  password text,
  ....
);
CREATE TABLE Profile (
  profile_id text primary key,
  user_id text,
  name text,
  mail text,
  ....
);


My::DBIC::Schema::User->has_one(profile=>'My::DBIC::Schema::Profile', 'user_id' );


My::DBIC::Schema::Profile->has_one( user=>'My::DBIC::Schema::User', 'profile_id' );

のようにできる。

つまり、has_oneはINNE RJOINする相手のテーブルが、自分のPrimary Keyを
Primary Keyか普通のカラムのどれかに持っていることをあらわしている。
might_haveはLEFT JOINする以外はhas_oneと同じ。

でも、都合よく相手が自分のPrimary Keyを持っていないときもある。
CREATE TABLE User (
  user_id text primary key,
  password text,
  ....
);
CREATE TABLE Profile (
  profile_id text primary key,
  user_id text,
  name text,
  mail text,
  ....
);

このときUserから見ると、ProfileはUserのPrimary Keyをもっている。
けど、Profileから見ると、UserはProfileのPrimary Keyをもっていない。

なので、
My::DBIC::Schema::User->has_one( profile =>'My::DBIC::Schema::Profile', "user_id" );

これはできそうだけど、逆は???って感じ。

こういうときにbelongs_toを使う。

使い方はこんな感じ。
My::DBIC::Schema::Profile->belongs_to( user_id =>'My::DBIC::Schema::User' );

Profileは、Userのアクセサ名テーブルか、
UserのPrimary Keyに従ってJOINするよ、という解釈ができる。

投稿者:としのり  日時:23:59:59 | パーマリンク | コメント | トラックバック() |

横浜西口 スターバックス

[日記]

実装しようとして入ったら店内がとてつもなく混んでいてビックリ。

画像

3分くらい並んだら座れたので、セーフ。

投稿者:としのり  日時:23:59:59 | パーマリンク | コメント | トラックバック() |

QUOVADIS(クオバディス)のスケジュール帳

[日記]

小さいスケジュール帳を試したくて、横浜のハンズでメモ帳を購入した。

購入するときに、以下のポイントを意識した。

・何年後かにも、安定して供給されること。
・使っていて気持ちが良いこと。
・小ささと使いやすさのバランスが良さそう
・手帳型

いろいろ見たけど、QUOVADIS(クオバディス)が良さそうなので、
Trip PrestigeのJapanese Editionを購入した。

画像画像

カバーのバリエーションは少なかったけど、
今年は情熱的になろうということで、まずは形から入ろうと赤を選択。

かなりコンパクトで、見開き1週間なんですよね。
8時から22時までしか書いていないということは、
これくらいの範囲で働くのが効率よろしめであるということかなー。
22時以降も実装してウンウン言ってちゃいかんのかもしれない。

投稿者:としのり  日時:23:59:59 | パーマリンク | コメント | トラックバック() |