2008年11月14日金曜日

Open JPAを試す(2)

付属のサンプルをAntに依存しない Eclipse プロジェクトに移行する方法については、簡単ですが前に書いた通りです。

次はPersistentオブジェクト(正式には何というのか。要するにテーブルを表現したBeanです)を作成してみます。

手順は簡単でした。

(1) Message をコピーして MyMessage を作成(クラス名以外は何もせず)

(2) Main.javaに以下を追加
        q = em2.createQuery("select mm from MyMessage mm");
for (MyMessage mm : (List<MyMessage>) q.getResultList()) {
System.out.println(mm.getMessage()
+ " (created on: " + mm.getCreated() + ")");
}

(3)persistence.xmlに以下(太字部分)を追加
  <persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
<class>hellojpa.Message</class>
<class>hellojpa.MyMessage</class>
</persistence-unit>
<persistence-unit name="hellojpa" transaction-type="RESOURCE_LOCAL">
<class>hellojpa.Message</class>
<class>hellojpa.MyMessage</class>
<properties>
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost/pms" />
(中略)
</persistence-unit>

以上です。悪くないですね。

Annotation記法にさえ気をつければ、Hibernateよりは簡単な気がしますね。
でも、Hibernateから移行するか?しないと思うな。
これから初めてこの手のテクノロジーに手をつけるのなら、JPAで決定でしょうけどね。何たって標準技術だし。なんつって大したことやってないのにさかしらに語るのも下品ですな。

実はこの勉強に着手してすぐに、SQLについてちょっと腰を据えて勉強し始めてしまいました。と言っても初級レベルで恥ずかしいんですけど。実は今までちゃんと理解してなかったんです。できれば以降でSQLの勉強結果をブログに書込みたいと思っています。

以上
.

2008年11月13日木曜日

酒は一日2合まで!

diet関連投稿はもはや個人的な独白になってます。喉元過ぎれば熱さを忘れる。気をつけよう。

「酒 適性量」などでだらだらWebを眺めていると、2合以上飲むと脳が萎縮する可能性があるというような記述を見つけました。お~怖~。

科学的な根拠ならびに真偽はさておいて(それなりに確度は高そうですが)、知ってしまった以上は節酒に励むしかないですよね。

今まではいかに安く効率よく酔えるか、という観点で酒を買っていたのですが、今後はいかに安く2合以内で楽しめるか、という観点で酒を買うことになりそうです。

もちろんダイエットにも効果的なはず。

以上。頑張るぞ。
.

金と情報

『トヨタ奥田氏「厚労省たたきは異常。マスコミに報復も」』とのことです(http://www.asahi.com/national/update/1112/TKY200811120346.html)。

たまにこういう有力者がアケスケに言うのもいいかもしれませんね。

確かに最近のマスコミのバッシングは、その対象が何であれ、細かい、(モノによっては)くだらない、ショボイ、痛々しい、ということで見ていて情けないものはあります。その点では奥田氏に同意。

しかし、金を引き上げるぞ、という脅しもまた強烈だと思います。公表されている情報が既に直接的/間接的に金に影響されており、従って金を出した人間の都合のよいように選別されている、というのは暗黙の了解ではありますが、普段(特にasahi.comのトップページなどに)表立って出てくることはありません。

公表される情報は、絶対に金によってフィルタが掛かっている。それは間違いない。でもマスコミとしては絶対に認めたくない、認められないところだと思います(実際、是々非々でたくましく権力に立ち向かうマスコミ人もいるはず)。

まあしかし、こんな風にアケスケに公表されたことで、実は情報を握っているのはトヨタなど金を持ったスポンサーであり、そのスポンサーとくっついた広告代理店であることに、改めて気が付かされることは、たまには悪くないですね。冷静に情報を見るためには必須の前提知識でしょう。

以上
.

2008年11月12日水曜日

いかに腹を空かせないか

ダイエットの話です。

空腹は最高の調味料。空腹時に美味い飯を食べると、もはや止めること能わず。頭真っ白となってひたすら胃に詰め込むハメになってしまいます。

ということでいかに食事前に空腹にしないか、が重要。

じゃあおやつを食べればいいんじゃないか、ということになりますが、この手は上手く行かないことは経験済みです。(もちろん私の経験なので普遍的ではありません)

上手くいかなかった理由1)
しばらく続けてるともたれる。胃が疲れる。でイヤになる。

上手くいかなかった理由2)
食欲抑止効果に疑問。
油脂と炭水化物が多くなるせいか、肉類/野菜類には手が出る。

上手くいかなかった理由3)
「おやつの時間にとりあえず食べる」習慣が出来てしまい、空腹でなくても食べてしまう。

という訳で、今有効ではないか、と思っているのは甘いコーヒーや紅茶をちまちま啜る、という手です。これだと胃はあまり疲れないし、カロリーを取りすぎることがない。肉類/野菜類の抑止には効果はありませんが、おやつを食べるよりおはマシだと思っています。

以上
.

頭皮のフケ、かゆみについて(2)

続報です。(誰かの役に立つ可能性が少しでもあれば・・・)

菜種油どうやら有効なようです。

他に妻から提供された化粧用のスキン・ヘア・オイルも試しました(こっちはシャンプーの後)が、菜種油(シャンプーの前)の方が調子がいい。やはりかゆみも軽減されています。

やってみるもんです。

以上
.

ダイエットは難しい

ダイエット=食事のコントロールっつーのは本当に難しいです。

ダイエットに王道なし。王道がないからこそ怪しげなダイエット方法が浮かんでは消えるのでしょう。

村上春樹がどこかのエッセーで言っていたような気がします(違うかも知れない)が、結論としては「ダイエットは人それぞれ」と言ったところでしょうか。体質、生活習慣、仕事(ストレス)によって、当然ダイエット方法は変わってくるでしょう。一般的な正解などないはずです。

酒の量で例を挙げれば、一般的に「1日に日本酒1、2合が体によい」などと言われます。私なら「なるほど、その程度なら気持ちよく酔えるし、体にもよいな」と思いますが、妻がこれやったら翌日は二日酔いで一日ダウンのはずです(飲めない体質)。あるいは稀でしょうが「1日にワイン一本がベスト」という人だっているはずです。

同様にある人が野菜を食べまくったから、ゆで卵を食べまくったから、断食したから、一日に2食(あるいは4食)にしたから痩せたといっても、それが自分に当てはまるわけではない。人それぞれに特性があるはずで、そこに着目する必要があるでしょう。

私の場合、ダイエットを実行するのに大きな障壁となる致命的な習慣が二つあります。一つは「酒好き」ということ。それから「料理好き」ということ。

まず食事中に酒を飲むと、どうしても食欲が増進されます。美味い料理であれば酒も料理も止まらなくなる。本当に理性が吹っ飛ぶのです。「分かっちゃいるけど」ではなく、分けが分からんうちに食べている。胃が食べ過ぎシグナル(もう一杯だよ。張ってるよ。痛いよ)を送っているにもかかわらずそれを無視。もうひたすら手が動く。(「浅ましい」とか「餓鬼」という言葉が浮かびます・・・)

それから料理が好き、ということ。自分の好みの味付け(これがまた酒と合う脂っこくてしょっぱい料理なんだ)で作れてしまう。料理が余るのは困るので「自分で責任を取る」という名目でやっぱりがっつり食べてしまう。

料理中につまみ食いしながら酒を飲むのがまた楽しい。結果、すでに腹5分くらいになり、さらに軽く酔っ払った状態で料理が完成するわけです。アルコールによって理性のタガが緩み、やはり頭真っ白でしっかり一人前以上を食べることになる。

いやはや。

こんな私に解決はあるのか。

あると思います。つーか何とかしないと死ぬ(とまで思い込まないとやらないので・・・)。

まず理性を信用しないこと。理性なんてちっぽけなものです。少なくとも私の理性は。

それから目先の快楽の前に人は無力である、と自覚すること。極端を言えば、薬物中毒やアルコール中毒ですね。もうヤバいと分かっていても止められない。すなわち「死」や「苦痛」は快楽を押しとどめる役には立たないのです。苦しくても、死ぬまでやってしまう。それが人間の愚かさです。(「苦痛と快楽の違いは程度の差であって、本質的には同じものだ」というような解釈すらありますね(サドとかニーチェとか。うろおぼえだけど)。「死」と「究極の快楽」も近しいのかもしれません(バタイユとか。そうとううろ覚えだけど)。何か怖いな)

それから過食や飲酒に追い込むストレス。これをいかにコントロールするか。いやあ、難しい。ムリかもしれない。でも週に1日はハメを外すとか、ガス抜きをしながら何とかするしかない。

一つのキーが「飲み会的食事」だと私は考えています。飲み会ではさほど食べ過ぎない(飲みすぎはありますが)という経験が多いからです。

いろんな料理が少しずつ、時間をあけて出てくる。それを少しずつつまみながらゆっくりと飲む。そうするとなんとなく満腹感が出てくるものです。上手くペースを配分すれば飲みすぎることもない。

少しずつ、ゆっくり。なるべく多くの種類を食べる。これがキーではないか、と。

ちょっと頑張ってみようと思います。

以上
.

2008年11月11日火曜日

Open JPAを試す(1)

久しぶりにお勉強ネタです。

まずJPAとは。

EJB3.0には以下の仕様がある。
# EJB Core Contracts and Requirements
# EJB 3.0 Simplified API
# Java Persistence API
三番目がJPA。EJB3.0の一部で、これを使えばPOJOでDBにアクセスできる。以上。

Apache OpenJPA User's Guideを見るともっと詳しく書いていますが、まあいいでしょう。面倒臭いので。Hibernateみたいなもんだろ?という認識で取り組んで見ます

一通り付属のexampleを動かした後、MYSQLで動かしてみました。AntなしでEclipseに移し変えてみましたが問題なし。ドキュメントにも情報がありました。

■メモ
example付属のbuild.xmlの"run"タスクで指定されている以下の記載は
<jvmarg value="-javaagent:${javaagent}"/>
java -javaagent:C:\path\to\openjpa-1.2.0.jar

に対応するわけですが、ビルドパスにopenjpa-1.2.0.jarが入っていれば不要のようです。
<sysproperty key="openjpa.ConnectionDriverName" value="${dbdriver}"/>
などなど

はpersistent.xmlで指定することが出来ます。
※ eclipse の Run → Run configuration → Environment に環境変数を通してみたが期待通りには動きませんでした。

■以下の手順で動きました。
1.MySQLのJDBCドライバをビルドパスに通す
2.OPENJPAのJDBCドライバをビルドパスに通す
3.persistent.xmlを以下のように変える
<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="1.0">
<!--
複数のpersistence-unitが存在する場合は最初にリストアップする必要あり。
openjpaのバグ。
-->
<!--
<persistence-unit name="none" transaction-type="RESOURCE_LOCAL">
<class>hellojpa.message</class> </persistence-unit>
-->
<persistence-unit name="hellojpa" transaction-type="RESOURCE_LOCAL">
<class>hellojpa.message</class>
<properties>
<!-- hellojpaは実在するDB -->
<property name="openjpa.ConnectionURL" value="jdbc:mysql://localhost/hellojpa" />
<property name="openjpa.ConnectionDriverName" value="com.mysql.jdbc.Driver" />
<property name="openjpa.ConnectionUserName" value="root" />
<property name="openjpa.ConnectionPassword" value="root" />
<!-- テーブルを作成する -->
<property name="openjpa.jdbc.Synchronizemappings" value="buildSchema" />
<!-- SQLトレースログ -->
<property name="openjpa.Log" value="DefaultLevel=WARN,SQL=TRACE"/>
</properties>
</persistence-unit>
</persistence>

以上
.