KeyValue属性

C#のお話です。

KeyとValueのペアを定義できる属性があると汎用に使えて便利ではなかろうかと思い、KeyValueAttribute属性クラスと、列挙型の場合に簡単にKeyValue属性の値にアクセスするためのEnumInfoクラスを作成してみました。以下に使用例を記載します。


//KeyValue属性を使用した列挙型の定義
public enum Idol {
    [KeyValue("Age", 16), KeyValue("Height", 162), KeyValue("BloodType", "A")]
    Chihaya,
    [KeyValue("Age", 14), KeyValue("Height", 145), KeyValue("BloodType", "O")]
    Yayoi,
    [KeyValue("Age", 13), KeyValue("Height", 158), KeyValue("BloodType", "B")]
    Ami,
    [KeyValue("Age", 13), KeyValue("Height", 158), KeyValue("BloodType", "B")]
    Mami,
}

//列挙型の拡張メソッドクラス
public static class IdolExtension {
    private static EnumInfo<Idol> EnumInfo { get; } = new EnumInfo<Idol>();
    public static int Age(this Idol idol) => EnumInfo[idol].GetValue<int>("Age");
    public static int Height(this Idol idol) => EnumInfo[idol].GetValue<int>("Height");
    public static string BloodType(this Idol idol) => EnumInfo[idol].GetValue<string>("BloodType");
}

//拡張メソッドの使用例
public void Sample() {
    int age = Idol.Chihaya.Age();
    int height = Idol.Chihaya.Height();
    string bloodType = Idol.Chihaya.BloodType();
}

上記のように、簡単に列挙型の拡張メソッド(Age,Height,BloodType)が出来上がりました。
静的なデータの場合はこの方法で拡張メソッドが定義できます。

しかし、動的なデータの場合は、今まで通り拡張メソッドを自力でゴリゴリ書かないといけないですね。属性でラムダ式が使えれば改善できると思うのですが。残念です。

同期モードを使用した直線補間。

QD77MS16で5軸以上の直線補間動作を実現しました。
仮想軸は使用せず、同期モードを使用しましたので最大16軸
の直線補間動作が可能です。
同期モードを使用する一番の理由は「カムの手回し」ができることです。
「カムの手回し」とは、主軸を動力軸から手動軸に切り換えて主軸と従軸の動作を確認することです。
手動軸のハンドルを正方向に回すと従軸は正方向に同期し、ハンドルを逆方向に回すと従軸も逆方向に同期します。
同期モードの状態で手動パルサを使うと「カムの手回し」を電子的に行うことができます。

自動運転?

mgcです。

以前、ニュースを見ていた際にある記事が目に留まりました。
それは、高速道路などでゆっくりと追い越し車線を走る車をボタン一つで
強制的に走行車線に戻すという技術が開発されたというものでした。

これはレクサスが導入した新しいシステムで
自車と前方の車を通信し、自車から安全に走行車線に戻す指示を行うというものでした。

自動車の開発も進みとうとうここまで来たか。。

思っていたのですが。

実はエイプリルフールの企画だったようです。
このニュースが掲載された日付は4月1日
これはまんまと騙されてしまいました。

CPU

mtjです。

最近AMDのRyzenが出ました、不評のBulldozerからZENアーキテクチャに変化です。
そんな自分も新品好きなのでFXの最上位が現状なのですが、DDR3で古くなってきたので乗り換え用と考えているところです。

ZENは仮想コアに対応しており、Bulldozerと比べてシングルスレッド辺りの性能強化を狙っているそうです。
Bulldozerは論理コア8等にし、intelの4コア8スレッドの仮想技術に総合性能(8スレッドフル稼働)なら勝てるという
思想のでしょう。

Zenはそこらへんを気にしてか仮想コア技術に対応しました、最高で8コア16スレッドです。
また色々メモリ最適化、演算プロセスが、消費電力がうんぬんってありますが詳しい話は別のところに書いてあると思われます。

使用者側からいうと性能が良くなるのはもちろんですが、消費電力が低いのがいいなと感じました。
最高性能のRyzenでもTDP95Wです。

FX-9590がTDP220Wなので約半分です。
TDPが低くなれば発熱も低いだろうということで色々助かりそうです。

まだ出たばっかなので様子見ですが、なかなか期待できそうなCPUだと思われます。

波形発生器クラス

制御系ソフトでは外部からのAD入力値をロギングして演算や制御を行うことがよくあります。

社内での開発時はAD入力機器が無い場合が多いので、AD入力のデバッグ用に波形発生器クラスを社内ライブラリに実装しています。

このクラスを使用すると、指定した条件の経時変化波形を作成できます。今のところDC ・矩形波・サイン波・CSVファイルによる任意波形の4種類に対応しています。

あとは必要になったらパルス波・三角波・ノコギリ波・複数の波形発生器の合成波くらいを実装すればだいたいのことは試せるはず。

クリーンルーム

10年ぶりにクリーンルームで作業しました。
しかも、ヘルメット着用です。
天井が高いうえに黄色い照明では活動が鈍くなります。
ゴム手袋の影響で手の甲には湿疹ができました。
新ラインの設置ということで連日大勢の人が出入りしていましたが
やはり、若い人が少ないと感じました。
製造現場は人気がないようです。
なので、我々のような年寄りが作業しているわけですが…。
安全教育も大事ですがクリーンルームにもそろそろ年齢制限が必要です。

画面割れ

mgcです。

以前落とした時から、
私のスマホの画面がバキバキに割れています。
何度か修理しようとも思ったのですが
驚くほど値段が高く、なかなか一歩踏み出せず
未だに割れている状態です。

オロナイン軟膏を塗ると治るという噂を聞いたことがありますが
本当なのでしょうか?
気になるところですが、自分では試そうとは思わないですね。

アンドロイド初心者

こんにちはmtjです。

Shieldタブレットで時々フレーム落ちがあります。
友達に教えてもらったことですが開発者設定にハードウェアアクセラレーションのON,OFFがあるとのこと。
(ついでにAAx4の設定もありましたがさすがに厳しいので無し。)

上記をいじったところパフォーマンスがかなり上がりました
同時に発熱も上がり、ONにした直後はアプリがよく落ちました。

アプリが落ちやすくなったり等問題があるので通常では見えない設定にされているんだなと納得しました。
Shieldの設定と色々被ると落ちやすくなっていたようで、現在では調整も済んだので快適な状態です。

初心者にはアンドロイドはなかなか難しいと感じました。

アンドロイド

大阪大学の石黒教授がアンドロイドをつくることは
人間を研究することであると言っています。
つまり、生きている人間そっくりに造形するだでは
一目で「生きていない」と分かってしまう。
そんな造形物を見て「気持ち悪い」と感じるのはな
ぜか。どうしたら「気持ち悪い」と思わなくなるの
か。
一人椅子に座り、じっとしていても、呼吸や、瞬き
など何かしらの動作があり、また、何かを考え、感
じている。そんな人の体温を感じさせるようなこと
をプログラムで実現しよとすると「人間とは何か、
考えるということはどうゆうことか」という哲学の
問題に行き当たる。

アンドロイドを作り、それを見た人を観察するとい
う石黒教授の研究は、子供のころに「人の気持ちを
もっと考えなさい」と言われたことが発端であると
いうエピソードを聞いて「なるほど」と納得した。