投稿者ID [esepin] : 31~35件目/100件中

NHibernate

当鯖ではDBにMySQLを使っており、ORマッパーとして Fluent NHibernate を使ってます
だけど、残念なことにFluent NHibernateについて日本語の情報がほとんどありません

需要がないんだろうなぁ( °_°) と思いつつ自分が思うことをいろいろ書いてみます

Fluent NHibernateとは

大本に Hibernate というJavaのORマッパーがあって、これを.NETに移植したものが NHibernate になります
Hibernateはかなり枯れたプロダクト。ですが、歴史がある分動作は安定しています(たぶん)

NHibernateの設定は、ORマッピング定義を含めすべてXMLファイルで作成する必要があります。これがなんとも面倒でその難解さも相まって導入の障害になっていました

これをソースコード上でできるようにしたものがFluent NHibernateです

設定の例

// DB接続のファクトリクラス
private static readonly ISessionFactory _factory;

static DB() {
    // メソッドチェーンで設定
    var config = MySQLConfiguration.Standard
        .ConnectionString(x => x.FromConnectionStringWithKey("DB"))
        .IsolationLevel(IsolationLevel.ReadCommitted);
    _factory = Fluently.Configure().Database(config)
        .Mappings(x => x.FluentMappings.AddFromAssemblyOf<MvcApplication>())
        .BuildSessionFactory();
}


Entity Frameworkを使わない理由

.NETで作成するアプリケーションのORマッパーは公式に Entity Framework が推奨されています
これはWindows鯖(IIS)+SQL Server環境での親和性が非常に高く、機能をフルに使うことが可能です

ですが、当鯖の環境はLinux+Monoです
当初はEntity Frameworkを検討していましたが、どうしてもMono上で実行時にエラーが発生してまともに動きませんでした
ですが、Monoによると 動作します と書かれているので、今思うとやり方がまずかったのかもしれません…?

もう1つの問題としてEntity Frameworkでのトランザクションは TransactionScopeクラス 前提になっていて、TransactionScopeはMono(というかLinux)上では動作しません。正確には MS DTCサービス が稼働している必要があります

無理矢理コネクションを引っ張り出してトランザクションを制御することも可能ですが、スマートではないですね

追記

Entity Framework 6ではすでに TransactionScope は非推奨になってるようです…

実際に使ってみて

正直、安定動作まで持って行くのにかなり大変でした(汗
やはり、日本語のドキュメントがほとんど無いことが致命的です。英語のドキュメントを読む労力が必要です

CakePHPとかFuelPHPのお手軽MVCに慣れているとヒントが少なくてキツいかもしれません
そう考えると選択肢の多いPHPがなんとも魅力的に見えます。ですが、当鯖はLinux+Monoです(意地)

大変なのは設定だけなのでそれさえできればOKですかね。なお、パフォーマンスは あまり良くない 模様…

やる気があれば、Fluent NHibernateの中核であるマッピング機能について書きたいと思います

コメント投稿

YouTube

日清 カップヌードル / SURVIVE リア獣との闘い


2013年のCM
完全にFaceb○○kですが、最近の日清のCMは時勢に合ったネタになっていて面白いものが多いです

自分はSNSを全くしませんが、こういうやりとりは本当に面倒くさそうな気がしますね

コメント投稿

先週金曜頃から当鯖にアクセスできない状況になっておりましたが、
3/24(火)零時ごろに復旧しますた

Whois情報の更新時に管理者のメールアドレス認証が昨年から実施されていて、こちらの確認を怠っていたことが原因です ('A`)

以上、よろしくお願いいたします

ぼやき

当鯖は固定IPではないのでダイナミックDNSを使っています

一般的にIPアドレスはルータ再起動(DHCPリリース)で振り直されます。ウチはフレッツのマンションタイプを使っているのですが、コイツがやっかいなことに1日に何度も切断されます

当然切断のたびにIPアドレスが変わってしまい、以降数分はアクセス不可に
自宅鯖だとこういうインフラ面がどうしてもネックになりますね。VPSだと\1,000以下/月で借りれるので、VPSでやる方が確実にスマートですね

電気代もバカになりませんし

4件のコメント

お疲れ様です。
先週、しばらくアクセスできへんなぁ~と思ってましたww

先週は、プライベートな都合により有給とりまくりで
​実家に寄せていたので、なにかネタあるかな~って思って。

有給いっぱい取れるんだったらまだ会社としては良さそうですね
以前に勤めていたある会社では有給+休出の代休で40日以上ありましたが、退職時の買い取りもなくうやむやにされてしまいました

トラが開幕3連勝。奇跡ですね

休みを取らせてくれるのは本当に今の職場の人たちはありがたいです。
正直、有給を全部消化しろ的な労組が強いわけではないけど、
自分の周りは専門職だから、そこんところはドライですよね。

阪神、どないしたんですかねぇ…
でも、開幕戦は負けるかと思いました。

エンジニアのための時間管理術 という本にこう書いてありました

休暇を先延ばしにしていると、あなたはオフィスの厄介者となり、皆があなたと仕事をするのがいやになります。あなたは怒りっぽく、気難しく、不機嫌になります。
だから休暇を取りなさい。いいですね!

システム管理者は休暇を取れないことをよく自慢しています。「この会社は自分がいないとやっていけないのさ。だからもう何年も休暇を取っていないんだ」筆者はこれを聞くとうんざりします。
(中略)
このような人と一緒に働くのは不可能です。このような人は最終的に打ちのめされ、追い詰められ、逃げ場を失うでしょう。


自分も同意見です。megane氏の会社は健全そうですが、会社に休暇を取ることがはばかられる雰囲気が漂っているのであれば本当に残念なことです

コメント投稿

将棋電王戦FINAL

今月から第4回電王戦が始まりました
第1回から欠かさず見ており、毎年楽しみにしているイベントです

ここまでプロ棋士の2連勝。ちなみに自分の予想はプロ棋士0-5ソフトの予想でしたw

第3局 稲葉陽七段 vs やねうら王

稲葉陽七段は関西棋界を代表する棋士で、井上門下3番手としての出場
一方、やねうら王はIT業界では有名のプログラマ、やねうらお氏が作成したソフトです

試合の結果としては116手までやねうら王の勝ちとなりました
稲葉七段は2七歩以降、それまで優位だった形勢を一気に悪くしてしまいそのままジリ貧になっていまいました

スマホにも勝てなくなる

以前にやねうらおこと磯崎氏が「数年後には羽生さんでもスマホにも勝てなくなる」と言っていましたが、自分も同様に考えます

第2回電王戦第5局で三浦九段がGPS将棋と対戦しましたが、惨敗と言っていいほどの敗戦でした

このときのGPS将棋は667台のクラスタリングというモンスターマシン、というかチートレベルのスペックです。…ですが、A級棋士だった三浦九段が手も足も出ずに負かされたことは、将棋ファンにも自分にもかなりの衝撃でした
実際、三浦九段より確実に強い棋士というのは本当に片手で数えられる程度です

自分が考えるに、このときのGPS将棋には羽生さんでも太刀打ちできないんじゃないかと思いました


PVのBGMがチボマット
懐かしくて10年ぶりくらいに引っ張り出して(実際にはiTunes)聴いています

YouTube

Cibo Matto / Sci Fi Wasabi

なぜかマリオw

コメント投稿

YouTube

GAP / That's Holiday "Trees"


1999年に放送されていたGAPのクリスマスのCM
自分は美的センスほぼ皆無ですが、当時の自分でもおしゃれなCMだなぁと思ったものです

後になって調べてみると ミシェル・ゴンドリー という有名映像作家の作品とのこと。さすがですねぇ

メインで使用されている曲は Leroy Anderson / Sleigh Ride
途中部分で使用されている曲は Vanilla Ice / Ice Ice Baby

コメント投稿