めざましテレビ

今日の早耳ムスメは太田在ちゃん&臼田あさ美ちゃーん,お題は「旬の味わい!! 季節の野菜料理」.
久しぶりに早耳ムスメ二人が登場.しかし...
ほとんど在ちゃんであさ美ちゃんはちょっとだけ.逆にしてよ...
っていうか,あさ美ちゃんの髪が!! 突然伸びてる!?
そんなわけないのでエクステですかそうですか.
ともあれ (JW),今日の早耳トレンド No.1 は実質30秒程度しかなかったと感じる今日この頃です.


Prolog 写経記 その 53 abs/2

(ほぼ) 毎日淡々と Prolog を写経します.元ネタはこちら.

Prologユーティリティライブラリ

Prologユーティリティライブラリ

今日は abs/2 を写経します.
実は昨日の fac/2 よりも abs/2 の方が前なのですが,見落としてました...
心より恥じる.

解説

abs(X, Abs)X の絶対値を返すか,あるいは AbsX の絶対値かどうかを調べる.

ふむ.

モード

abs(+, ?).

ふむ.

定義

では,こいつの定義を写経しませう.

abs(X, X) :-
	X >= 0, !.
abs(X, Abs) :-
	Abs is -X, !.

ふむ.

では使用例を写経しませう.

3 ?- abs(-27.5, X).

X = 27.5 

Yes
4 ?- abs(110, -110).

Yes

あれれ?
2 番目の例,写経本では冷たく No と言われることになっているんですけど?
110 の絶対値が -110 だなんてそんなはずは...


うーみゅ,この定義はちょっとイマイチですね.

abs(X, X) :-
	X >= 0, !.

2 番目の例では X は 0 以上で,わざわざカットも付いているので次の節は評価されないことを意図しているように見えなくもないのですが,実はそれ以前に第 1 引数と第 2 引数を同一化できないため,このケースではカットは働きませんね.
そして

abs(X, Abs) :-
	Abs is -X, !.

こちらにはガードがないので -X が絶対値として求められてしまう,と.
ダメじゃん...


そんなわけで (どんなわけで?),こんな感じかなぁ.

abs(X, Abs) :-
	X >= 0, !,
	Abs is X.
abs(X, Abs) :-
	Abs is -X, !.

その結果.

9 ?- abs(-27.5, X).

X = 27.5 

Yes
10 ?- abs(110, -110).

No

いい感じ♪


Re: hibernateを利用してはいけない5つのシチュエーション

ひがさんから頂いたコメント.

MagazineにModelが既に関連付けられている場合に、Magazine経由でModelを触ったときに触る(関連をたどる)だけで更新されるって意味なのかなぁと、おいらは、勝手に脳内補完してました。

そんなわけで (どんなわけで?),ひがさん脳内補完のケースがどうなるかを検証.
こういうコードでいいんですよね?

        Transaction tx = session.beginTransaction();
        Magazine magazine = (Magazine) session.createQuery("from hoge.Magazine").list().get(0);
        Model model = (Model) magazine.getModels().iterator().next();
        model.setFirstName("Eri");
        tx.commit();

Magazien から Model をたどって,その Model を更新しています.
実際に発行された SQL

Hibernate: select 
               magazine0_.id as id, 
               magazine0_.title as title1_ 
           from 
               Magazine magazine0_
Hibernate: select 
               models0_.contract as contract1_, 
               models0_.id as id1_, 
               models0_.id as id0_, 
               models0_.firstName as firstName0_0_, 
               models0_.lastName as lastName0_0_, 
               models0_.contract as contract0_0_ 
           from 
               Model models0_ 
           where 
               models0_.contract=?
Hibernate: update 
               Model 
           set 
               firstName=? 
           where 
               id=?

Magazine は更新されていませんね.
そんなわけで (どんなわけで?),やはり元記事の著者がどんな状況で

hibernateでTransactionを使用すると、同一Transaction内でセレクトした全てのオブジェクトをTransactionコミット時に勝手に更新します。

と言っているのか,わけが分からないままです〜.
一応,元記事の方に バックトラック トラックバック送ってるのですが (今日のこれも送ります),元記事の著者さん気づいてるかなぁ?
気づいていたら,詳しい説明サンプル付きでプリーズ!!


P.S.
なんか,遅延ロードの SQLHibernate 2.x と変わってますね...
なんで SELECT 句に contract を 2 回,id に至っては 3 回も並べているのだろう?
不思議です...


04:00 追記
なんか,トラックバックが失敗する...
昨日はちゃんと送れたんですけどねぇ.
あちらのページを見ると,昨日トラックバックした際には文字化けしていたのが今は直っているので,その辺の影響でしょうか?
それならそれで著者の方も気づいてくれてるだろうから別にいいのですが.


出演予定 TV 番組

この近辺 (どこ?) で話題のモデルが出演するテレビ番組を分かるだけ掲載します.
新規分は赤字で (レギュラー除く).直近分は太字で.

山田優
10/04 (火) 21:30〜23:24 CX 「世にも奇妙な物語・秋の特別編」
鈴木えみ
10/04 (火) 23:00〜00:00 MX 「ラブ・リルカ」

MX ってうちは映らないんだよなぁ... 無念だ.


CanCam 11 月号 エビちゃんベストセレクション 10

CanCam2005年11月号の蛯原友里ちゃん

CanCam から,お気に入りの蛯原友里ちゃんを紹介しようというこのコーナー.
今日も prideglide とのタイアップ「秋のめちゃモテ♥ライフがはじまります!」から P221 の友里ちゃん.
日記的にはまだ 10/03.友里ちゃんはステキな誕生日を過ごせたのでしょうか?
ともあれ (JW),Happy Birthday,友里ちゃん♪
そんなわけで (どんなわけで?),やっぱり CanCam 買うしか!!