C#で文字列式を演算する

文字列の式を演算したいと思う場合が結構あります。

DataTable.Compute()メソッドで実現できることが分かったので、実装して見ました。

以下が作成したメソッドです。string型の拡張メソッドになっています。
public static T Calc<T>(this string s, params object[] args) {
 using (DataTable dt = new DataTable()) {
  s = string.Format(s, args);
  object result = dt.Compute(s, “”);
  var converter = TypeDescriptor.GetConverter(typeof(T));
  return (T)converter.ConvertFromString(result.ToString());
 }
}

以下のように使うと、(2+4)/2の数値演算を行い、3を返します。
var value = “({0} + {1}) / 2″.Calc<double>(2,4);

以下のように使うと、2>=4の論理演算を行い、falseを返します。
var value = “{0} >= {1}”.Calc<bool>(2,4);

簡単ですね。

ランダム・モーション

こんな言葉があるのかないのか分かりませんが・・・
生後6週間の赤ちゃんを観察しているとこの言葉を思いつきました。
元気な子なので常に手足を動かしているのですが
手足の関連性がまったくない動きをします。
プロのドラマーでもここまでランダムに手足を動かすことはできないでしょう。
はたして彼女は自分の意志で手足を動かしているのでしょうか?
装置の試運転をするときに「適当に動かしといてや」と言われることがありますが
あのランダム・モーションで多軸ロボットを動かすことが出来たらさぞかし面白いと思います。

プログラムを書く

こんにちはMTJです。

プログラムをする上で、何をどこまで知っていなければいけないのか
とは常々考える問題です。

例えば自分たちの仕事なら、プログラムの事より機械に詳しくないと仕事
自体が進みません。
只上記の事はプログラムミングの知識ではありません。
C#ではメモリの管理やポインタなども行う事が無いので
アドレスうんぬんなどはほとんど触ることが無い部分です
実際自分もプログラムをしてますが、ほとんどメモリ空間など
を意識したことはありません。

もちろんHTML5などのプログラマーもほとんど考えることは
ないでしょう。

しかし、C++やマイコンのプログラムなど機械に近いような
プログラムを行う人は意識しなければ完成もしないのではないのでしょうか。

結局、プログラムというと覚えることはかなり多岐にわたってしまい
近道をするためには先人達のしていることをとりあえず覚える、
覚えたうえでそちらについて詳しく調べるという行動が必要だと感じて
います。

只、その覚えるという行動が浅くなってしまうと、その先まで浅くなっていってしまう
泥沼感があるのが痛い点です。

34インチウルトラワイドモニタ

DELLが販売している34インチウルトラワイドモニタU3415Wがほしくてたまらない。

仕事ではデュアルモニタを使用しているが、つなぎ目が気になる、輝度や色相の差が気になる。 解像度も現状の2つのモニタを足したサイズよりも大きい。ウルトラワイドでも(多分)見やすい曲面スクリーン。

しかし、金額が10万円! 高すぎるよ。

外部記憶装置

ルドルフ・シェーンハイマー博士より
「生命とは動的平衡にある流れである」

すべての細胞は常に破壊され再生される。
お腹の不要な脂肪でさえ常に「新しい」脂肪なのだ。
厳密に言うと「一秒前の私と今の私は別人」となる。

脳細胞も例外ではない。

脳細胞も破壊と再生を繰り返すのであれば人はどうやって物事を記憶するのか?
呆けた人でも昔のことは覚えている。
何でや、おかしいやん。古い記憶ほど先に消えるはずやのに…。

いつの日か人の記憶のメカニズムが解明されたら「外部記憶装置」が登場するでしょう。
人はその外部記憶装置と自分の脳を接続して膨大なデータを検索する。
生きている間に使ってみたい…。