かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

C#

色々なプログラミング言語で JSON をパースするためのイカしたサービス quicktype

今日、マイクロソフト本社から来た David さんとお昼ご飯をしたときに教えてもらえた彼のプロダクトが凄かったので紹介したいと思います。 quicktype.io quicktype JSON をペーストするとシリアライズ・デシリアライズするためのコードを出力してくれるサー…

Json.NET で enum を文字列で保存したり数字で保存したりするものを混在させたい

C#

Json.NET は便利ですよね。ということで、こういう感じのクラスを… public enum Size { Small = 100, Large = 1000, } public enum TargetType { None, TypeA, TypeB, TypeC, } public class Target { public string Name { get; set; } public Size Size { …

DI コンテナの Unity の v5.0.0 がリリースされています!

C#

ゲームエンジンじゃないほうの Unity がバージョンアップしてました!! Added support for .NET 4.0, 4.5, 4.7, .NET Core 1.0+ and .NET Standard 1.0+ where available. ということなので .NET Standard 1.0+ というとても幅広い環境で使えるように仕上が…

Emotion API でビデオ分析機能を呼ぶ方法

C#

画像を投げ込むパターンはよくあったのですがビデオの情報がなかなか見つからなかったのでメモ。 var emotionClient = new EmotionServiceClient("key"); var result = await emotionClient.RecognizeInVideoAsync(<ここにstreamを渡す>); // 分析をポーリン…

VIsual Studio 2017 Previewで一押しの機能 だと思ったら VS2017で既に出来た話

C#

追記 VS2017 Previewで凄くいいなと思った機能を紹介したのですが id:neuecc さんに、それVS2017でできるよ?って言われた話です。 コンストラクタに指定したいプロパティやフィールドを選択してCtrl + .でコンストラクタ生成される機能があるらしい。やって…

LINQで書くとデバッグしづらいよね?そんなことないよ

C#

小ネタです。 LINQで処理をぱぱっと1ステートメントで書けると気持ちいいですよね。 でも、デバッグ難しくない?ということがあるのですが大丈夫です安心してください。 ブレークポイントのはり方のコツさえつかめば大丈夫です。例えば以下のようなコードが…

DIコンテナのUnityのLifetimeManagerを拡張して任意のタイミングでインスタンスの破棄をする

C#

UnityのLifetimeManagerはシングルトンで管理するContainerControlledLifetimeManagerか、デフォルトの毎回newする‘PerResolveLifetimeManager‘か、スレッド単位のPerThreadLifetimeManagerが用意されています。あとマニアックなところだと、ExternallyContr…

ASP.NET CoreがVisual Studio Codeで動いたよ on Windows 10

簡単にメモっておきます。まずはdotnetコマンドがないと話しになりません。私の場合はいつの間にか(たぶんVS2015のASP.NET Coreの入れたときだと思う)入ってたのでこの手順は踏んでませんが、以下のページからSDKあたりを入れておく必要があると思います。…

PCLでHttpUtlitityのUrlEncodeとUrlDecodeを使いたい

C#

UriクラスのEscapeDataStringとUnescapeDataStringメソッドを使いましょう。 Console.WriteLine(HttpUtility.UrlEncode(s)); Console.WriteLine(Uri.EscapeDataString(s)); var encodedString = HttpUtility.UrlEncode(s); Console.WriteLine(HttpUtility.Ur…

DIコンテナのUnityで使用されるコンストラクタを指定する

C#

InjectionConstructorAttributeを使用します。指定しない場合はコンストラクタ引数の一番多いものが使われます。 例えば以下のようなケース。 public class Hoge { public Hoge(Foo foo, Bar bar) { } public Hoge(Foo foo) { } } だと、Foo foo, Bar barの…

Entity Framework Core RC2がリリースされたみたいです

blogs.msdn.microsoft.com 待ちに待ったリリースに向けてあと一歩といったところですね! UWPで使うときに必要だったおまじないも消えてるっぽい(未確認だけどドキュメントに記載されてない)ので気軽にUWPで使えるようになったっぽいです。UWPでSQLiteを使…

LINQのメソッド構文、クエリ式の構文

C#

LINQってメソッド構文とクエリ式の構文の2つがあります。どっち使います?という話ですが個人的な見解として、メソッド構文がLINQの全機能にフルアクセスできるという点でメソッド構文を使用しています。 LINQのメソッド構文とクエリ式の構文の対応は以下の…

C#で好きな機能

C#

Blogネタが尽きたので小ネタを。 C#でプログラムする時によく使う便利機能を3つ挙げたいと思います。 async/await やはりC#といったらこれですよね。 非同期処理を簡単に書ける。 blog.okazuki.jp これがない言語でのプログラミングは、結構ストレスです。コ…

JSON.NET使ってみる

C#

JObjectの使い方を勉強してみた。 var j = new JObject(); j.Add("Item1", new JObject()); j.Add("Item2", new JObject()); j.Add("Item3", new JObject()); こういう感じで Console.WriteLine(JsonConvert.SerializeObject(j)); とすることで { "Item1": {…

XamarinのAndroidアプリでReactivePropertyを使う 2016年版

随分昔に書いてますね。 blog.okazuki.jp 最近は事情も変わったので改めて書いてみようと思います。 ReactivePropertyは? Reactive ExtensionsをベースにしたMVVMの支援ライブラリです。 blog.okazuki.jp Xamarinでも使えるの? Xamarin.AndroidとXamarin.i…

Taskを返すメソッドをそのままreturnして失敗した

C#

Task HogehogeAsync()みたいなメソッドがあるとします。 そのメソッドをTask FugafugaAsync()で呼ぶときに、単発で呼ぶだけならそのままreturnしてしまいますよね。 async FugafugaAsync() { return HogehogeAsync(); } こんなノリで以下のようなメソッドで…

Reactive ExtensionsでRateLimitを実装してみる

こんな感じ??Queueにいったん詰め込んで、Scheduler上でどんどん処理していく感じ。 1つ処理をするとカウントアップして、指定時間後にカウントダウンする。 static class RateLimitExtensions { public static IObservable<T> RateLimit<T>(this IObservable<T> se</t></t></t>…

C#でユニコードの文字コードで文字を指定する

C#

2.4.1 Unicode 文字エスケープ シーケンス (C#) に書いてある通り、\uXXXXを使います。例えば幅が0のスペースのノーブレークスペースの場合は、以下のように記述します。 "\u00A0"

C言語の教科書に登場するひろ子さんをC#で書いてみよう

togetter.com ひろ子さんは、他人の身長を180㎝にしてしまう能力があるみたいです。 例えば、ひろ子さんの能力をC#のメソッドにしてしまうと以下のようになるでしょう。 using System; namespace Kowai { class Program { static void Main(string[] args) {…

FriendlyでFrameを使ったアプリをテストする その2

blog.okazuki.jp 1つ前の記事でWPFContentControlなるものをこさえてまでやった方法ですが、Friendly作者の石川さんに聞いたらさくっともっといい方法を教えてもらえました。 AppVar型にもLogicalTreeメソッドはあるのじゃよ 個人的にWPFContentControlを作…

FriendlyでFrameを使ったアプリをテストする

追記 blog.okazuki.jp この記事の内容より良い方法がありましたので上の記事に書いてます。 あと、この記事に書いたWPFContentControl足してもらえたみたいです。 元記事 という要望がありました。 WindowControlのLogicalTreeで辿ればいいや!って思ってた…

Friendlyを入門してみた

デスクトップアプリのテストを行うためのFriendlyというライブラリのハンズオンの補助講師してきた(受講者に非常に近い立ち位置で)のでちょっと試してみました。WPFの足し算アプリを用意してみた。XAMLがわかればテストできる感じなので、XAMLだけさくっと…

ReactiveProperty 2.3-preをリリースしました

www.nuget.org 今回は、Xamarin.Macへ対応するためのNuGetパッケージの定義ファイルの更新と、ReactivePropertyクラスのコンストラクタを変更して初期化時の性能を改善してみました。 そのため、結構がっつりとソースをいじってるのでPreリリースという形に…

ReactivePropertyでModelに紐づくViewModelの作り方のパターン

データの入れ物のModelに対するViewModelは大体こんな感じになるよねっていう感じのものを作ってみました。 とりあえず以下のようなイメージです。 ModelはINotifyPropertyChangedを実装した値の入れ物のクラス ViewModelはそれをラップしてVからの入力値を…

ReactiveProperty + Prism.Wpfでリストに表示されてる項目を編集するサンプルを書いてみた

github.com ListBoxに表示されてる項目を選択してボタンを押すとポップアップが出てきて編集するっていう簡単なサンプルです。

ReactivePropertyで、ViewModelのプロパティに変更があったかどうか判別できるようにしたい

プロパティの値が1つでも書き換わってたら判別したい。そういうことはありますよね? ReactivePropertyを使うと、こんな感じで実現できます。(変更があったかというフラグをリセットする機能つき) まず、ReactivePropertyに変更があったときにtrueを発行す…

Windows 10のUWPでInkCanvasを使って手書き文字認識をする

思ったより簡単だったのでメモメモ。因みにWindows 8のころはInkManager使ったりしてちょっとめんどかったです。 InkCanvasを置く 描画や消したりとかはInkCanvasにお任せです。 <InkCanvas x:Name="myInkCanvas" /> 認識処理を書く 認識にはInkRecognizerContainerを使います。RecognizeAsync</inkcanvas>…

RxとReactivePropertyを使って、WPFでUnidirection Data Flowを実現するを真似してみた

ありがたいことに最近ReactivePropertyを勧めたら使い始めて頂けました。 qiita.com このコードを大げさに書いたらどうなるかなぁというのでやってみました。 ということでModel部分。 なんかきっかけがあるタイミングで、インクリメントし続けるだけの奴。 …

競技プログラミングの問題をしてみた

C#

chomado.com @chomadoさんの参加したという競技プログラミングの問題を解いてみました。 たまには頭の体操。 B問題 英小文字からなる 12 個の文字列 S1, S2, …, S12 が入力されます。 これらの文字列のうち、文字 r が含まれるものの個数を数えてください。 …

WPF 4.5入門をKindleに公開しました

SlideShareで無料で公開してるPDFをKindleで1205円で公開を始めました。 www.amazon.co.jp Kindleでどうしても読みたいという方や、これくらいなら払ってやってもいいかという人はぽちってくれると純粋に私が喜びます。 SlideShareのほうは、引き続き公開し…