投稿

9月, 2015の投稿を表示しています

Windows FormアプリからWPFのWindowを表示する

イメージ
既存のFormアプリへ機能追加しようとしていますが、これがどうも仕様的にWPFで作るのが簡単そうです。FormとWPFのヘテロなアプリって作れるの?単にWPFを呼び出せば良さそうな気がします。プロジェクトにWPFのウィンドウを追加して。。。、と思ったら、そもそもFormアプリのプロジェクトだと、WPFのウィンドウって選択肢に出てきません。なにかやり方がありそうなモノです。ちょっとググってみたらstackoverflowに分かりやすいのがありました。Open a WPF Window from WinForms & link form app with WPF app 既存のFormアプリのソリューションへWPFカスタムコントールライブラリのプロジェクトとして追加、呼び出せば良いようです。 以下、備忘のため具体的な方法を書いておきます。 1. WPFカスタムコントールライブラリの追加 ソリューションエクスプローラーで、ソリューションを選んで、右ボタンから[追加]-[新しいプロジェクト]で「WPF カスタムコントロール ライブラリ」を追加。 WPFのウィンドウを追加する。 2. 参照設定の追加 Formアプリのプロジェクトへ、作成したWPFカスタムコントロールライブラリのプロジェクトを参照へ追加。 参照設定へ以下のアセンブリを追加して、 PresentationCore  PresentationFramework  WindowsFormsIntegration  System.Xaml WindowsBase ←参照先のサイトには書いていないけど、これも必要 usingディレクティブも忘れずに追加 using System.Windows.Forms.Integration; 3. Formアプリからの呼び出し var wpfwindow = new WpfControlLib.Window1(); ElementHost.EnableModelessKeyboardInterop(wpfwindow); wpfwindow.Show();  4. 動かしてみる無事表示された。

Bitbucketの課題をExcelへエクスポートする

なにかと便利なBitbucket。課題も含めて入れておいたのですが、工数見積のためリスト形式で欲しくなりました。

でもエクスポートできるのJSON形式なんですね、これ。。。
単純にCSVとかExcel形式でリストで欲しいんだけなぁ、とか思っていたら同じように感じる人は要るようです。

Webで変換ツールを公開している人がいたのでメモとして貼っておきます。
Bitbucket Issue Viewer

詳しい使い方はリンク先に書いてありますが、BitbucketからJSON形式でエクスポートしたファイルの中身を貼り付けると、Excel形式で変換、エクスポートしてくれます。





魅惑のハイエンドキーボード

イメージ
キーボード、楽器系のそれではなくて、PCのいわゆるキーボード、それもハイエンドキーボードを購入しました。モノは東プレ、REALFORCE 108UBK SJ08B。

使い始めて3日。ストロークは一般的なキーボードに比べて深め。慣れないうちは、指をぐっと押し込む感じに違和感を感じたけど、慣れるほどにしっかりした打鍵感が心地よくなってきます。
構造的なものか打鍵音も軽く、耳障りがよいです。キーボードで音が心地よいとか初めてですよ、ほんと。
いままで普通にPCの付属品を使ってたんだけど、やっぱり、ハイエンドって別物です。これって、写真撮るのはスマホのカメラで十分って思ってたのが、ある日、一眼レフ使ってみたら、ああ、やっぱり写りがぜんぜん違うねみたいな、それぐらいの違いがあります。

ちなみに価格も別物。キーボードって、安いのは千円以下で買えるのに、こいつは税込17,000円ほど。少々買うの躊躇したけど、いい買い物でした。





うっかり消しちゃったファイルをTortoiseGITで復元する

イメージ
GIT管理下のファイルを作業中にうっかり削除しちゃった事ないですか?例えば、ログファイルを消すつもりでShift+Deleteで、ソースコードやデータまで巻き添えにしてまうなんてケースです。(GITリポジトリから削除するって事じゃなくて、普通にファイルを消してしまったようなケース)SVNだと「更新」すれば、リポジトリから再取得してくれますが、GITではそうじゃないようです。プルしたら戻ってくるかと思ったら、まったく復元されないので少々慌てました。こんな感じで、ファイルを選んでがっさりまとめて削除したとします。全部消えちゃった。ここで、[TortoiseGIT]-[変更の取り消し…]を選ぶと、GIT管理下のファイルが取り消し対象として表示されます。「すべてを選択/解除」をチェックしてOKします。で、無事にソースコードが戻ってきた。どうもOSレベルの機能で削除した場合でもGITリポジトリから削除しようとしていると判断されるようです。うっかりコミットして、リポジトリからも消しちゃいそうです。SVNに慣れていると、ちょっとこの動きは怖いですよね。

DebuggerDisplay属性

DebuggerDisplay属性を使うと、デバッグで値を参照するのが格段に楽になりますね。
参考にしたのは、こちらの記事↓

デバッグ時にプロパティ値やフィールド値を簡単に確認できるようにするには?


早速、試してみる。
using System.Diagnostics;
using System.Drawing;

namespace 3Dapp
{
[DebuggerDisplay("{X}, {Y}, {Z}")]
    public struct PolygonPoint
    {
        public float X, Y, Z;
        public Color Color;
              :
              :     } }

こんな感じで、フィールドが沢山あっても、限定して表示できる。

面の法線ベクトルを求める

仕事の合間に、こっそりOpenTKでOpenGLしてます。
法線ベクトルを求める必要があって、ググってみたら、stackoverflow に分かりやすい記事があったのでメモ。

Given 3 pts, how do I calculate the normal vector?

class Triangle {
    Vector3 a, b, c;
    public Vector3 Normal {
        get {
            var dir = Vector3.Cross(b - a, c - a);
            var norm = Vector3.Normalize(dir);
            return norm;
        }
    }
}  OpenGLってググるとたくさん情報が引っかかってくるので楽ですね。

anker 2ポート充電器が壊れたかと思ったら

イメージ
出張中のiPhoneやルータの充電で愛用しているAnker 2ポート充電器が出先で故障。 って思ったらケーブルが断線していて安全装置が働いたらしい。 10分ほど放置して(リセットがかかる)、新しいケーブルをつないだら無事に充電開始。よくできた仕組みだけど、壊れたかと思った。

Chromeで広告をブロックしてみる

イメージ
iOS 9 では広告のブロック機能が入るとか何とか話題ですが、ブラウザにもそういったアプリケーションあったなと思って試してみた。使ってみたのはChromeの「Adblock Plus」、インストールして設定は図のような感じでフィルタリストは全部チェック、「控えめな広告を許可」はデフォルトでチェックされているの外す。で、実際に試しにYahoo!JAPANのトップページを表示してみると。。。ページ全体が表示されるまで12秒から5秒ほどに短縮!なんと2倍以上の速度。広告って重たいんだねぇ。注:リロード開始から完全にロード終了までの時間。(普通はロードされた所から表示されるので体感的にはもっと短い。)とはいえ、明らかに動作が軽快になるので、これは良いかも。