NT京都2015

3/22(日)に京都で行われた、ネタモノ系ものづくりの展示・交流会「NT京都2015」を見に行ってきました。
見に行ったのは今年で2回目です。

こういう技術の無駄遣いな集まりが大好きです。
内容を詳しく書きたいのですが、今週は仕事が忙しいため詳細はまた次回記載したいと思います。

entity frameworkについて2

道辻です。

現在EntityFrmeworkを使用していて問題にあたりました。
それは、旧バージョンから新バージョンDBにアクセスするとエラーが発生するのです
新バージョンで旧バージョンならmigrationで勝手にDBをアップデートしてくれますが
旧から新はDBのバージョンがうんぬんでまったくアクセスできなくなります。
普通に考えれば旧バージョンから新バージョンにアクセスするなんて変な話ではありますが
装置などで24/7動かすソフトではあり得る話でした。
はやりのWebアプリでは全く必要の無い機能だと思います。
Webアプリのアップデート時にはアクセス不可にしサーバー、クライアント両方のソフト
をアップデートし、クライアントアクセス時には必ず最新版にするので、この機能が無いのは
普通だと思いました。
逆にアクセスできないのでアップデートされていないので更新してくださいというエラーを出す
ようにもできると思います。

結局解決するために、LinqToSqlの方でDB操作を行う事にしました。
DBを更新する場合はDBとテーブルを合わせないといけないため保守は大変になりました。

C# プロパティスコープの変数

C#7の機能追加のお話です。

C#7ではプロパティのスコープ内のみで使用できる変数が定義できるようです。
これにより以下のように実装できるようになります。

■今までの実装
private string _myField;
public string MyProperty {
 get { return _myField; }
 set {
  _myField = value;
  NotifyOfPropertyChange(nameof(MyProperty));
 }
}

■C#7での実装
public string MyProperty {
 string myField;
 get { return myField; }
 set {
  myField = value;
  NotifyOfPropertyChange(nameof(MyProperty));
 }
}

今まではクラス外からは_myFieldが隠蔽できていましたが、クラス内では自由にアクセスでき、隠蔽できてませんでした。
今回の機能追加により、プロパティのGetとSetからしかアクセスできない変数が定義できるようになり、完全な隠蔽ができるようになります。
VB6のころからこの機能が欲しいと思っていたので、とてもうれしいです。

ラダーで変数名を使う

ラダー改造の案件で変数名を使いました。
変数名を使わない場合はデバイスの実アドレスが主になります。
シフト命令を使ってステップシーケンスを作る場合、ステップを割り込ませるには
一括置換が必要になります。
変数名を使うと名前が主になるので実アドレスを変えても名前は変わりません。
ラダーは「回路」から「言語」へと変わっていくのでしょうか。