3/22(日)に京都で行われた、ネタモノ系ものづくりの展示・交流会「NT京都2015」を見に行ってきました。
見に行ったのは今年で2回目です。
こういう技術の無駄遣いな集まりが大好きです。
内容を詳しく書きたいのですが、今週は仕事が忙しいため詳細はまた次回記載したいと思います。
3/22(日)に京都で行われた、ネタモノ系ものづくりの展示・交流会「NT京都2015」を見に行ってきました。
見に行ったのは今年で2回目です。
こういう技術の無駄遣いな集まりが大好きです。
内容を詳しく書きたいのですが、今週は仕事が忙しいため詳細はまた次回記載したいと思います。
道辻です。
現在EntityFrmeworkを使用していて問題にあたりました。
それは、旧バージョンから新バージョンDBにアクセスするとエラーが発生するのです
新バージョンで旧バージョンならmigrationで勝手にDBをアップデートしてくれますが
旧から新はDBのバージョンがうんぬんでまったくアクセスできなくなります。
普通に考えれば旧バージョンから新バージョンにアクセスするなんて変な話ではありますが
装置などで24/7動かすソフトではあり得る話でした。
はやりのWebアプリでは全く必要の無い機能だと思います。
Webアプリのアップデート時にはアクセス不可にしサーバー、クライアント両方のソフト
をアップデートし、クライアントアクセス時には必ず最新版にするので、この機能が無いのは
普通だと思いました。
逆にアクセスできないのでアップデートされていないので更新してくださいというエラーを出す
ようにもできると思います。
結局解決するために、LinqToSqlの方でDB操作を行う事にしました。
DBを更新する場合はDBとテーブルを合わせないといけないため保守は大変になりました。
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のころからこの機能が欲しいと思っていたので、とてもうれしいです。
ラダー改造の案件で変数名を使いました。
変数名を使わない場合はデバイスの実アドレスが主になります。
シフト命令を使ってステップシーケンスを作る場合、ステップを割り込ませるには
一括置換が必要になります。
変数名を使うと名前が主になるので実アドレスを変えても名前は変わりません。
ラダーは「回路」から「言語」へと変わっていくのでしょうか。
こんにちは、mtjです。
現在DBの開発を行っており、今回はEntityFrameworkを使用して開発しております。
これで便利なのが、コードファーストなので接続先のDBさえあれば勝手にテーブル、
リレーションなども作成してくれます。
テーブル定義もコード上に記載するので確認も容易です。
通常ではテーブル定義を書いて、データベースを開いてなどコード上では面倒の多い事がありません。
データベース検索もSQLを発行することなくLinqでアクセスできます。
TestCont.TestEntity.Single(x=>x.Id == id);
のような感じで容易にアクセスできます。
テーブル定義の変更もコード上のクラスの定義を変更するだけでMigrationが変更を検知し
自動でDB書き換えのコードを作成してくれます。
ソフト開発者としてはSQLサーバーを気にせずアクセスできるのは大変便利な事です。
通常だと変更があったらDBの定義を変更するコードを書いたり、それに伴ってコード上のテーブル定義
などの修正も行う必要がありますが、このフレームワークの場合はコードを気にしているだけでいいという感じです。
またテスト環境を容易に構築できる利点もあるので今後DBはこのフレームワークを使っていくと思います。
先週、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が開発したらしいです。
そして、速記者の募集はとっくの昔に終了していたという事も知りました。
技術の進歩で人の職業がなくなってしまう。しかも、単純作業ではなく、速記という高等技術さえも不要にしてしましました。
mtjです。
自分は漫画でも文庫本でもよく読むのでkindleを買いました。
大体漫画でも全巻買えば段ボール1箱程度、文庫本2冊でも結構場所を取りますよね。
そのスペースを6インチタブレット1つにできるなら買おうと思って購入しました。
大抵文庫本というのは気が向いたらもう一回読みますが大抵文庫のスペースは
遅いので本棚を探すか、押し入れを探すかになってしまいますが
これはデータがAmazon上にあるので探す手間も保管しておく場所も必要ありません。
さらに、電池の持ちも良いので読んでいて充電がストレスになることはあまりありません。
自分の読む速度なら漫画6冊程度読んでも半分以上電池がある状態です。
欠点を言うならマイナー作家などの本がないこと、文庫のジャンル毎に分けられていないこと
できればホラーとか色々分かれていた方が本屋で歩いて探すような楽しさがあって良いのですが。
本屋で歩いて探して、kindleで買えばいいだけなんですけどね、あれば。
というわけで、概ね満足です。
タブレットで一番の欠点の電池の持ちを考えれば良い買い物したなと思います。
社内ライブラリに追加したい機能が色々とあるが、忙しくてまったく追加出来ていない。
追加予定リストには10項目以上記載されているが、いつになったら対応できることか。
この世界にいると「廃盤品」に泣かされます。
お客さんが長年使っていただいた機器が故障しても中の部品が「廃盤」になっています。代替え品があれば良いですが8ピンで3種類の周波数が出るクロックモジュールなどはどうにもできません。
しかしながら、レコード針には驚きました。25年以上も前に廃盤になっているレコード針が現在も製造販売されています。(もちろん、オリジナルではありませんが)
やはり、今でも需要があるのでしょうね。
これで私も安心してレコードが聴けます。