[C#]ビルドした日時を表示する。

ビルドした日時を表示する簡単なやり方。バージョン情報代わりに使える。
実行ファイルの更新日時を読み取ることで表示可能。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

using System.Windows.Forms; // 追加

namespace AutoVersionChange
{
    class Program
    {
        static void Main(string[] args)
        {
            var info = new System.IO.FileInfo(Application.ExecutablePath);

            Console.WriteLine("{0}", info.CreationTime);
        }
    }
}

[PC]VMware Player 5が使いにくい件。

Linux環境を使用したい時、VMwarePlayerを愛用しているのですが、最新のバージョン5が何分使いにくい。

使いにくいところ。
・ゲストOSの起動が遅い。画面が真っ暗ですすむ気配なし。
・ubuntu12などの最新のディストリビューションで自動インストールしてくれるが、ハード構成のカスタマイズをうっかりわすれちゃったりする。
・LinuxにやたらにVMware Toolsを入れたがる。そしてVMware Toolsのインストールに失敗する。

特に、ゲストOSの起動が遅いのと、OSインストールの自動化はちょっとイラッときます。
Windows8をゲストOSにする場合はバージョン5でないとダメなようですが、普通にLinuxの環境をさくっと作成したい場合は前のバージョンのほうが使いやすかったりします。
そこで、VMwareのダウンロードページでは前のバージョンもダウンロードできたりしますので、そっちを使いましょう。

https://my.vmware.com/web/vmware/downloads

[PC]MSI 970A-G46と玄人志向 SATA2RI2-PCIEの組み合わせではまる。

MSI 970A-G46と玄人志向 SATA2RI2-PCIEの組み合わせにハマった時のメモ。

MSI 970A-G46に玄人志向 SATA2RI2-PCIEを挿して使用した時に、SATA Portの起動順番をM/B側の優先順位を高く設定しても拡張ボード側(SATA2RI2-PCIE)が優先されてしまう。これは不具合なのかなぁ。
SATA2RI2-PCIEをM/Bに挿している事自体は問題ないのだが、何かしらのデバイスがSATA Portに装着されているとおかしくなる。これではOSのインストールもできない。MSIは洒落たGUIのBIOS設定画面でこれがいけねんじゃね!?と思ってしまうわ。BIOSの設定ではM/B側の起動順番が上位なのに・・・。

しょうがないので玄人志向 SATA2RI2-PCIEは使用しないでいたところ、いじくり回しているうちに不注意でこのM/Bが壊れまして、GIGABYTE GA-990FXA-D3を新たに導入。ちなみに、このM/BとSATA2RI2-PCIEの組み合わせはOKだった。

[C#]デバッグログの表示にDebugViewを使う。

C#でログを出力したいときにDebugViewを使用すると便利。このアプリケーションを開いているときだけログが表示されるので、問題なければリリース用の実行バイナリでもそのまま使用することができる。

DebugView for Windows
http://technet.microsoft.com/ja-JP/sysinternals/bb896647.aspx

usingの追加
using System.Diagnostics;

使い方は簡単。Debug.WriteLine()かTrace.WriteLine()で表示する事ができる。

        private void button1_Click(object sender, EventArgs e)
        {
            Trace.WriteLine("Button1 Click");
        }

        private void button2_Click(object sender, EventArgs e)
        {
            Trace.WriteLine("Button2 Click");
        }

DebugViewの実行画面

以下、Trace文の便利な使い方。

VisualStudioでのデバッグ時にイミディエイトウィンドウを使用する
VisualStudioのオプションでイミディエイトウィンドウにデバッグ文を表示させることができる。
Img20121217173434

デバッグ実行時のイミディエイトウィンドウ画面

Trace文の出力先にファイルを追加する
Trace文の出力先のリスナーにファイルを追加することで、ログをファイルに出力させることができる。
尚、下記ソースのように1度リスナーの設定をしておけば同一インスタンスで生成されるソース内のTrace文はすべて出力されるようになる。

        public Form1()
        {
            InitializeComponent();
            /// Trace文の出力先にlog.txtを指定する
            RegistTraceLog("log.txt");
        }

        /// <summary>
        /// Trace出力ファイルをTraceListenerに登録します
        /// </summary>
        /// <param name="filePath"></param>
        public static void RegistTraceLog(string filePath)
        {
            //DefaultTraceListenerオブジェクトを取得
            DefaultTraceListener drl;
            drl = (DefaultTraceListener)Trace.Listeners["Default"];
            //LogFileNameを変更する
            drl.LogFileName = filePath;
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Trace.WriteLine("Button2 Click");

            /// Form2内のTrace文もファイルに出力される
            (new Form2()).Show();
        }

VisualStudioのバージョンによるDebugViewの動作
DebugViewへのログ出力がVisualStudioのバージョンにより少々異なるようで、VS2008以降であるとVisualStudio上でのデバッグ実行中(VS上でのF5)はDebugViewへ表示されなくなった。VS2008以降は実行バイナリを直接起動(VS上でのCtrl+F5)させることによって表示される。

[上原ひろみ]上原ひろみちゃんのうんちくを語ってみた。

大の上原ひろみ好きの僕がひろみちゃんのすごいところとかうんちくを語ってみた。

12歳から今の道を決めていた。
12歳からプロのピアニストになることを決めていました。

日本の大学は普通の大学へ進学した。
日本では法政大学へ進み、中退してアメリカのバークリー音楽大学へ入学しました。

大学(バークリー音楽大学)での専攻は作曲科。
大学ではピアノを弾くことに専念していませんでした。これはピアノの演奏についての技術は自分でカバーできるからとのこと。

ジャンルやカテゴリーにこだわらない。
JAZZピアニストと言われていますが、演奏を聞くと喫茶店で聞くようなJAZZではなかったり、プログレシップとか言われたりします。ひろみちゃんとしては、そういう枠組みへの意識はないそうです。

ライブで演奏するのは自分で書いた曲。
ライブで演奏する曲はほぼ自分で書いた曲です。譜面は自分で全て書いているようです。

オーケストラの曲も書ける。
ひろみちゃんはYAMAHAの音楽教室に通っていたので、幼少時代はクラシックから入っています。大学時代にはオーケストラで使用される楽器の譜面も書いたことがあるようなので、プロになってからも何回かオーケストラと共演しています。

キーボードも天才的。
ピアニストとして名を馳せていますが、キーボード(シンセサイザー)のテクニックもすごいです。相棒のノードリード君はグランドピアノの上に載せてありますね。一時期、ピアノ+シンセ3つって時もありました。ひろみちゃんいわく、ギターの変幻自在な音に憧れてやってみたくなったそうです。

ライブスケジュールの管理や現地での交渉も自分でやる。
これは知っている人も多いと思いますが、飛行機のチケットやホテルの手配も自分でやっているようです。これだけ有名になったにも関わらず、信じられないですね。海外では当然トラブルはつきもので、飛行機が遅れたり、現地に行ったら楽器がなかったり、などなど、数多くのトラブルを経験してきています。日本では信じられないようなことを経験しているので、とても強いハートの持ち主です。

ラーメン好き。
これはファンの間では周知の通りです。ブログを見ると、その90%がラーメン屋に行った時の写真が載っています(嘘)

食べることが好き。
ラーメンも好きですが、食べ物の写真はブログによく載っています。ライブ前の食事はパスタを食べることが多いのだそうです。ちなみに、そんなひろみちゃんが苦手なものはアボカドとウニだそうです。

ピアニストは花嫁。
2007年にデザイナーのミハラヤスヒロさんと結婚されました。これはミハラさんのファッションショーで共演したのがきっかけです。今でもミハラさんのファッションショーとかで弾くことがあります。そんな、ひろみちゃんの結婚式は、丸の内のコットンクラブで行われました。ひろみちゃんはウェイディングドレス姿でピアノを弾いたそうです。

ここからはちょっと考察的な。

趣味は結構多彩だと思う。
落語をiPodに入れて聞いたりしています。爆笑問題の漫才も知っていたり、日本にいるときは日本のテレビを見たりしているようです。また、20世紀少年の漫画も読んでいて、大阪でライブをしたときは万博公園の前でともだちのポーズをとっていたりしています。あと、古い音源にはバークリー音楽学校時代の友達とファイナルファンタジー7のサントラを弾いたりしています。

ひろみちゃんは天然か。
MCを聞いていると、あーこの人天然かも!?と思った人は少なくないと思います。ただ、自分のバンドではリーダーであることを自覚しているし、ライブのスケジュールも管理しているし、とてもしっかりした印象があるのも事実。でも、タップダンサーの熊谷和徳さんいわく本人に天然と言うと怒るのだそうです。

昔のひろみちゃんは何かが違う。
情熱大陸のビデオを見ると、今のひろみちゃんとはとても印象が違います。デビュー後の一生懸命な姿とちょっと尖っているところが、何か今のひろみちゃんへと繋がったんだなーって思いますね。

英語を喋っている時は何かが違う。
要は、天然に見えない。

アメリカのジョージア州とグルジアを間違える。
アメリカのジョージア(GEORGIA)州とグルジア(GEORGIA)は同じ綴り。最初、ジョージア州でのライブのオファーだと思ってOKしたら、実はグルジア(ロシアの下の国)だったっていう話。これは、ボケをかまさなくても間違えるかもしれませんが、でも、この時の経験は強く印象に残っているようです。

日本のJAZZクラブに神出鬼没。
ひろみウォッチャーの僕の元にはいろいろな情報が届けられるのですが、よく目にするのは日本のJAZZクラブ(というか、ピアノが弾けるお店)に神出鬼没したりしています。突然「ピアノが弾けますか?」と電話がかかってきて、旦那さんと現れて弾きにくるそうです。日本での住まいは東京都内なようですので、都内が多いと思いますが、実家のある静岡のお店でも行くそうな。幸運なお店の方がブログで紹介していたりするのを結構見かけます。

実は、すごい人。
よく17歳の時にチックコリアと共演した、っていう紹介があったりしますが、あまりよい紹介とは僕は思いません。それは、この人天才だーっていう印象を強くしたいだけな気がします。チックとはアルバムを出したし、武道館でも一緒に演っているし、そっちを紹介すべきだと思う。ひろみちゃんが天才なのは事実だと思いますが、でもそれは練習に練習を重ねた成果だと思うんです。ひろみちゃんはあまり賞などにこだわりません。演奏することにかけています。その成果が今伴っているんだと思います。
アメリカのJAZZ界は日本よりもスケールや注目度が違います。ひろみちゃんは若くしてそのアメリカ(強いては世界)のジャズメンたちと共演しているっていうことがどれだけすごいことかー。

よく変態って言われている。
雑誌でインタビュアーの方に「変態」って言われることがあります。これは、ピアノが好きすぎてという意味での変態です。本人いわくちょっと犯罪的な・・・と言って嫌がっていますが、最後は納得しています。

もう2014年のスケジュールが入っている。
今は2012年ですので、2年先くらいまでのオファーが来ているということだと思います。これはひょっとしたら珍しいことではないと思うのですが、、、結婚しているし、家庭に入るというかそういう守りには入らない(というか、ピアノ弾きたい)っていうところなのでしょう。ただ、ファンとしては、ひろみ2世を見たい!!ひろみちゃんとしても、先のことは分からないと言っているので、突然ママになっているかもしれないですね。

ライブでの好きなシーン。
ライブでのラストは拍手の中、メンバーと肩を組んでお辞儀をします。ソロの時も、最後にピアノに手をあてながらお辞儀するんです。この時ひろみちゃんはピアノをメンバーとして一緒に肩を組んでるんだと思います。僕はこのシーンがたまらなく好きです。

ひろみちゃんの音楽について。
これは、いろいろな意見があると思います。あれはJAZZではない、とか、弾き方が激しすぎる、とか、弾き方を子供が真似する、日本人はみんなああやって弾くのか?、とか。ひろみちゃんは、音楽には好き嫌いがある、とか、一緒に共感できる人を世界中飛び回って探している、と言っています。これは、自分の音楽に批判的な意見があるというのをわかっているからだと思います。でも、仮に聞きに来てくれる人が1人だったとしてもひろみちゃんは喜んで演奏すると思います。

血液型。
ひろみちゃんはO型なんですねー。

[C#]データの参照を切りたいとき。

あるデータから一時的なデータを作成したい、とか一時変数にコピーし一時変数だけをいじりたい・・・なんてことを考えたりすることがあります。また、あるデータを引数とする関数を作ったんだけど、その関数内では引数を加工したりするけど、もとのデータ自体には影響したくないぜ!とかあると思う。

ここで問題なのはあるデータというのが何かってこと。値、構造体、クラス・・・。
値渡しや参照渡しっていう言葉を知らなかったり、他の言語の振る舞いになれてしまうと、うっかり変えたくないデータの値が変わってしまうという場合がよくあります。

データクラス

class Person
{
    public string Name{get;set;}
    public string Address{get;set;}
    public string Tel{get;set;}
}

class Persons
{
    public int ManageNumber{get;set;}
    public Person[] List{get;set;}
}

一時的な変数用を用意してからマスターデータをコピーし、一時変数をいじるようにする。

Persons master = GetPersons();

Persons temp = master;

temp.ManageNumber = 4;

上記の方法ではC++では意図した動きになるけど、C#では参照として渡されるだけなので、temp == マスターデータになる。

マスターデータを一時的な引数にして使いたい。

void SetNewData(Persons temp)
{
    tmep.ManageNumber = 4;
}

SetNewData(master);

上記の場合も同じ。C#ではクラス渡しは参照を渡していることと同じなので、マスターデータはそのまま書き換わる。

データのコピーはCloneインタフェースを使用したり、値型で構成された構造体にしたりすることで実現可能だけど、ちょっと面倒くさい。
そこで、少し条件があるけど、マスターデータの値をまるごとコピーする方法を使用する。

どんなオブジェクトでもコピーできる汎用のディープコピー処理
http://d.hatena.ne.jp/tekk/20100131/1264913887

こちらの方のやり方を使用すればデータをまるごとコピーできるので、もとのデータへの参照をぶった切ることができる。
使い方は簡単。object型の拡張メソッドだと次のやり方でOK。

一時変数にコピーする。

Persons master = GetPersons();

Persons temp = (Persons)master.DeepCopy();

temp.ManageNumber = 4;

引数として渡す。


void SetNewData(Persons temp)
{
    tmep.ManageNumber = 4;
}

SetNewData((Persons)master.DeepCopy());

ただし、これには元のデータのクラス宣言に属性を加えないといけない。自分でいじれるクラスでないと使用できないので注意。
Serializable属性を加えたデータクラス

[Serializable()]
class Person
{
    public string Name{get;set;}
    public string Address{get;set;}
    public string Tel{get;set;}
}

[Serializable()]
class Persons
{
    public int ManageNumber{get;set;}
    public Person[] List{get;set;}
}

このデータいじりたくねぇなぁとか、ちょっととっておく、とかいろいろ使い道があるので便利。

[上原ひろみ]Move Japan Tour 2012 高崎公演。

行ってきました。上原ひろみ ザ・トリオ・プロジェクト Move Japana Tour 2012 高崎公演。ひろみちゃんの高崎音楽祭に出演は2回目。前回は2007年のHiromi’s Sonicbloomの時でした。そのときひろみちゃんのMCは高崎の印象が出身地の浜松みたいって言っていたのを覚えています。

とにかく最高でした。その一言につきます。お客さんののりもよかったなぁ、年々思うことだけど、聞くほうのテンションが確実に熱くなっている!!今回のMoveはけっこうきめきめのりのりの曲が多いからかもしれないけど。すばらしかった。
ひろみちゃんのMCは、「高崎駅についたとき、駅前にも音楽祭のステージがあって街全体で音楽祭をやるのはすばらしいと思う」「前回出演したときに青のだるまをもらったけど、顔色が悪いのかなぁって思った。まただるまを持ち帰りたい」など、高崎のことについてふれていたのがよかったです。今回はちょっとMC少なめだったけど、曲に集中できたって感じでした。

最新アルバムMoveと前回のVoiceの曲をミックスしたセットリストでした。席がひろみちゃんの手元がよく見える席だったので、もうガン見。ひたすらガン見。やっぱりすげーなぁ、とか、頭おかしい、とか、人間じゃないとか、あーFFのボス戦のBGMきたー、とか、頭の中を駆け巡りました。

個人的に楽しみだったのが、Suite Escapismの組曲。ひろみちゃんの曲では組曲があったりしますが、この曲も全部で約30分という長い曲。1曲目のRealityは激しく、2曲目はFantasyはスローな感じ、そして3曲のIn Between でまた超絶テンション高い曲。この緩急のジェットコースターに乗っている感ったらなかった。2曲目以外に、For文のbreakがないんです。だから、ソロパートが終わったときの拍手ができないんです。もうなんていうか曲中に拍手する感じ。最高に気持ちよかったし、客席全体がのめりこんでいる感じがとても良かった。やったぜー群馬県民。もうグンマーなんて言わせない。

ひろみちゃんのソロはPlace to be。久々に聞きました。最近のひろみちゃんの傾向ですが、特にソロ曲はイントロを聞いただけでは何の曲か分かりません。Place to beはインプロのパートが少ないメロディな曲。ひろみちゃんってダイナミックな感じだけど、実はとてもスタティックな演奏もひとつの特徴。

アンコールは11:49PM。この曲はフジロックのときにも聞きました。フジロックの最前列で聞いていたとき、ちょっと客席から高いステージを上からライトが光の筋で照らしていて、神々しく思えた曲。最後のちょっとスローテンポなところのメロディがほんとにぐっとくる曲。Moveと11:49PMはほんとに最初と最後って感じがするなぁ。

次は、東京国際フォーラム。わーい♪

[上原ひろみ]上原ひろみ ザ・トリオ・プロジェクト – 「MOVE」JAPAN TOUR 2012

赤坂BLITZからスタートしました。ひろみちゃんの日本ツアー。

11月16日に僕の地元、群馬でやってもらえることがとてもうれしいです。

しかし、赤坂BLITSはオールスタンディングかー。フェス以外だと、タワレコのミニライブ以来なかったんじゃないかなー。いつも、ライブに行っていて思うんだけど、コンサートホールだとお客さんはおとなしく聞いているイメージがあるので、立って踊って聞くのって最高だろうなぁ~