Entity Framework コードファースト開発

こんにちは、mtjです。

現在DBの開発を行っており、今回はEntityFrameworkを使用して開発しております。
これで便利なのが、コードファーストなので接続先のDBさえあれば勝手にテーブル、
リレーションなども作成してくれます。

テーブル定義もコード上に記載するので確認も容易です。
通常ではテーブル定義を書いて、データベースを開いてなどコード上では面倒の多い事がありません。

データベース検索もSQLを発行することなくLinqでアクセスできます。
TestCont.TestEntity.Single(x=>x.Id == id);
のような感じで容易にアクセスできます。
テーブル定義の変更もコード上のクラスの定義を変更するだけでMigrationが変更を検知し
自動でDB書き換えのコードを作成してくれます。

ソフト開発者としてはSQLサーバーを気にせずアクセスできるのは大変便利な事です。
通常だと変更があったらDBの定義を変更するコードを書いたり、それに伴ってコード上のテーブル定義
などの修正も行う必要がありますが、このフレームワークの場合はコードを気にしているだけでいいという感じです。

またテスト環境を容易に構築できる利点もあるので今後DBはこのフレームワークを使っていくと思います。

C# タブインデックス(タブオーダー)の自動設定

先週、C#ソフトのタブインデックスを久しぶりに自分で設定しました。
いつもは誰かにして貰っていたのですが、自分でするとものすごく面倒くさい。
これは人のする作業ではないと考え、自動化する方法を検討。
結果、ネットの情報を元に以下の拡張メソッドを作成しました。

public static void RefreshTabIndex(this Control ctl) {
 //子コントロールのタブインデックス更新
 foreach (Control child in ctl.Controls) {
  if (child.Controls.Count <= 0) continue;
  child.RefreshTabIndex();
 }
 //子コントロールの位置をもとにソートする
 var children = new List<Control>();
 foreach (Control child in ctl.Controls) {
  children.Add(child);
 }
 children.Sort((x, y) => {
  if (x.Top == y.Top) return x.Left.CompareTo(y.Left);
  return x.Top.CompareTo(y.Top);
 });
 //タブインデックスを設定する
 for (int i = 0; i < children.Count; i++) {
  if (children[i].TabIndex == i) continue;
  children[i].TabIndex = i;
 }
}

フォームのコンストラクタなどで、this.RefreshTabIndex()を実行すると、
コントロールの配置をもとに自動でタブインデックスが設定されます。

まだ使い始めた所なので、この方法ではうまくいかない場合があるかも知れませんが。
概ね思っている動作をしており、作業が楽になりました。

 

国会議事録

現在、通常国会では速記ではなく音声自動認識が使われているという話をラジオで聞き驚きました。また、その翻訳精度は98%ということでさらに驚きました。
国会のような専門用語が飛び交うところで高精度に音声を文字変換するシステムは京都大学とNTTが開発したらしいです。
そして、速記者の募集はとっくの昔に終了していたという事も知りました。
技術の進歩で人の職業がなくなってしまう。しかも、単純作業ではなく、速記という高等技術さえも不要にしてしましました。

kindle Voyage買いました。

mtjです。

自分は漫画でも文庫本でもよく読むのでkindleを買いました。
大体漫画でも全巻買えば段ボール1箱程度、文庫本2冊でも結構場所を取りますよね。
そのスペースを6インチタブレット1つにできるなら買おうと思って購入しました。

大抵文庫本というのは気が向いたらもう一回読みますが大抵文庫のスペースは
遅いので本棚を探すか、押し入れを探すかになってしまいますが
これはデータがAmazon上にあるので探す手間も保管しておく場所も必要ありません。

さらに、電池の持ちも良いので読んでいて充電がストレスになることはあまりありません。
自分の読む速度なら漫画6冊程度読んでも半分以上電池がある状態です。

欠点を言うならマイナー作家などの本がないこと、文庫のジャンル毎に分けられていないこと
できればホラーとか色々分かれていた方が本屋で歩いて探すような楽しさがあって良いのですが。
本屋で歩いて探して、kindleで買えばいいだけなんですけどね、あれば。

というわけで、概ね満足です。
タブレットで一番の欠点の電池の持ちを考えれば良い買い物したなと思います。

廃盤品

この世界にいると「廃盤品」に泣かされます。
お客さんが長年使っていただいた機器が故障しても中の部品が「廃盤」になっています。代替え品があれば良いですが8ピンで3種類の周波数が出るクロックモジュールなどはどうにもできません。
しかしながら、レコード針には驚きました。25年以上も前に廃盤になっているレコード針が現在も製造販売されています。(もちろん、オリジナルではありませんが)
やはり、今でも需要があるのでしょうね。
これで私も安心してレコードが聴けます。

雪。

こんにちはmtjです。

今回の年末は予想以上に雪がすごい年でした。
昼に雪かきを行い夜に出かけるということになり外を見ると、雪かきした量と同じような量の雪が積もっている
という状態でした。

京都に帰るときも電車が雪下ろしで停車する程度でした。
毎年、ある程度は白い景色ですが、今年のように長い間真っ白は久しぶりに見た気がします。

家のベランダが雪の落下で一緒に抜けた時ほど降ってはいませんが、最近では珍しいほど
降りました、これぞ雪国という雰囲気でした。

また、名物の土産の水羊羹は案外賞味期限が短かったので注意しましょう。
いつも、買ってすぐ食べるものだったので気にしていませんでした。

30cmLP

実家から140枚のレコードを引き上げてきました。
一枚ずつ眺めているとどうしても聴きたくなってきました。
プレーヤーはあるのですがアンプがありません。
ONKYOのGX-W100HV(パワードスピーカー)を使っていますがLINE端子ではMMカートリッジを再生できません。
何かないかと探しているとONKYOのSE-U33GXVⅡというUSBデジタルオーディオプロセッサーなるものを見つけました。
PDFの取説を読むとPHONO端子があり、尚且つ、なんと、24ビット/96KHzでレコードをデジタル録音できるというではありませんか。しかも、13,000円ですよ。
早速注文しました。
プレーヤーは28年ぶりに電源を入れましたがちゃんと回転してくれました。
TechnicsのLP-1600です。(カートリッジはTechnicsの205C-ⅡX)
やはり、レコードに針を落とす瞬間は緊張します。
見事に鳴ってくれました。やっぱり、レコードは凄いです。
SONYの333ESJというCDプレーヤーを使っていますが全然違います。
同じアルバムのレコードとCDを切り替えながら聴きましたが明らかにCDには無い音がレコードには存在しています。
この正月休みはレコード三昧で楽しみます。

PC換装

こんにちは MTJです。

デスクトップPCの中身を改造しました。

簡単な内訳は以下の通り

CPU 6コア3.5ghz = 8コア 4.0Ghz
GPU NV GTX460 = GTX970OC
メモリ 4GB = 12GB
ケースも変わったので、ファンが全面2、背面2、下部1の扇風機状態です。
近づくと風が抜けて結構寒い状態です。
と全体的にいい感じになりました、熱落ちも心配なくなりそうです。
使い勝手は前より色々ときびきび動きます。
これでまた4,5年は同じパーツでいけそうです。

さて、LINUXサーバーの方はいろいろいじっていたら起動しなくなりました。
いじっていたせいか侵入されて壊されたかはわかりませんが。
細かく言うと起動はするのですが、肝心のコマンドなどが使えない状態
YUMコマンドとか。

しかたがないのでセント君を7にして再インストールを行いました。
ネットワーク管理をさらに強化して再インストール、データも拾えなかったので
色々と最初からやり直しと悲しい状態です。