かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

C#

App.config / Web.config に秘密の情報を入れたいときはどうする? その 1

C#

入れないのがいいんですけどね。ローカルで実行するときに、開発用のキー情報を入れることもあるでしょう。 でもリポジトリには入れたくないという感じ。 App.config を分割する App.config を作って、こっちには当たり障りない情報を書きます。そして、appS…

LINQ を使う時に一般的に気を付けること via C#でLinqを使うよりPythonの方が2倍速かったのでベンチマークをしてみた

C#

追記 2018/04/25 GroupBy が遅延評価じゃないという旨の記載があってまちがえていたので修正しました。 本文 以下の記事を見ました。 qiita.com そして、それを受けての記事があります。 qiita.com 上記記事に ToList を複数回呼び出してることに関する言及…

C# で何か出来るのか?まとめてみた

追記 2020 年 3 月版を書きました。 qiita.com 本文 C# は好きな言語です。C# 1.0 が 2002 年 4 月に出てからもうすぐ16 年!?になろうとしています。 今でも結構イケてる部類にランキングしてると個人的に思ってる C# ですが何が出来るのか?というのをま…

2018 年はじめの INotifyPropertyChanged の実装方法

C#

前にこんな記事を書きました。 blog.okazuki.jp まぁ別にこの時と何かしら INotifyPropertyChanged を実装するために使える機能が増えたりしてないので状況が変わったわけではないのですが…。現実問題としてどういうものを選択するのかということをつらつら…

foreach でループの index を知る方法

C#

前に匿名型を使ってやりましたが Tuple 使った方が今風で値型なのでヒープ的にも優しいということでこうなりますね。 using System; using System.Linq; namespace ConsoleApp1 { class Program { static void Main(string[] args) { var items = new[] { "i…

最近のテンプレートメソッドパターンの実装方法

C#

テンプレートメソッドパターン好きでした。割と。 Template Method パターン - Wikipedia 処理の流れは親クラスで定義しておいて、それぞれの処理の流れのポイントポイントでは、継承先のクラスで好きにしてねっていうスタンスですね。 テンプレートメソッド…

CsvHelper でパースするときに NULL という文字列のセルを null として扱いたい

C#

こんな csv を扱う必要がありまして。 Tanaka,38 Kazuki,NULL Kazuakix,98 muu,NULL null が入ってるところには丁寧に文字列で NULL と記載されています。 こういう csv を見るたびにデータ部分に NULL っていう文字列データつっこんだらどうするんだろうと…

色々なプログラミング言語で 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リリースという形に…