OITA: Oika's Information Technological Activities

@oika 情報技術的活動日誌。

.NET

CentOSにASP.NET Core 2.2でWeb API構築

AWS Lightsail のやっすいやつで CentOS 7 のインスタンスを立てたので、ASP.NET Core 2.2でWebサービスを作ってみる。 環境等 CentOS 7.6 VisualStudio Community 2019 開発はローカルのWindowsマシンで行う 「ASP.NET と Web 開発」ワークロードがインスト…

.NET コマンドライン引数の解析とUsage作成を行う「CuiCommandParser」を作成

C#/.NET のコンソールアプリで、実行コマンドに渡された引数の解析と、helpオプションで表示するヘルプメッセージ(Usage)用の文字列生成を行う機能をあわせてライブラリ化しました。 CuiCommandParser(NuGet) ソースはこちら。

C# (WPF) で算出プロパティ

C# Advent Calendar ぽっかり今日だけ空きができたみたいなので、急きょ参加しておきます。 Webのバインディング系フレームワークでよくある算出(Computed / Calculated)プロパティをC# のMVVMでも使いたいという話。 ちらっと検索してみた感じ、当然のよ…

C# 外部プロセスとしてnpmコマンドを呼ぶと標準出力の終端で固まる

んー、わからん。 Windows環境で、自作プログラムからNodeのnpmコマンドを呼んで、標準出力内容をリダイレクトして読み取るようなことをやりたくて、C#のコンソールアプリとして作っていたのだけど。

WPF 複数のValueConverterを連結して順番に変換する

WPF等のXAMLファミリーのBindingで、バインド元とバインド先の値の型が異なる場合、 値コンバータクラスを利用して変換をかける。 例えば、IsVisible みたいな名前のboolプロパティによって、trueになったら表示、falseになったら非表示というようなバインド…

ASP.NET Core × Entity Framework × SQLite

ちょいメモ。 ASP.NET CoreでEntityFrameWorkでSQLiteを使えるようにするところまで。

C# HttpClientでJSONデータをPOSTする

HttpClientクラスを使って、Web APIなんかにJSONでデータをPOST送信する。 んなもん、なんでもないやろーと思ってテキトーにやろうとしたら、あれれあれれと、意外とはまってしまった。 ので一応備忘メモ。

.NET Core Process.Start(URL) でWEBブラウザを表示できない

.NET Frameworkでは、Process.Start("https://www.google.co.jp/")とかやると、既定のブラウザが勝手に開いてGoogleのページを開いてくれたもんなんですが、.NET Coreではそれはできなくなったっぽい。

C# プロパティで配列の代わりにIReadOnlyList<T>を公開する

FxCop、あるいはVisualStudio付属のコード分析で、厳しめの規則セットを使うと、以下のようなコードに対して警告が出る。 public class Person { public string[] Nicknames { get; private set; } ... } CA1819 コレクションを返すために、またはメソッドに…

WPF ListBox.SelectedIndexが勝手に変わると思ったら

ListBoxを配置して、適当に数値だけをメンバに持つオブジェクトをリストにして ItemsSourceに格納します。 検証環境のビルドターゲットは.NET 4.0。

C# イベントを一時変数に入れてスレッドセーフにnullチェックするあれ

C#で、自前でイベントを発火させる際、 ハンドラが1つも登録されていない状態でInvokeしようとすると NullReferenceExceptionになっちゃうんで、 Nullでないことを確認してから呼び出す必要があります。 public event PropertyChangedEventHandler PropertyC…

C# kizAPI(きざっぴ)でブログの流行ワードを取得する

いま現在話題のトレンドワードをある程度リアルタイムでとれるAPI的なやつで なんか手軽なのないかなと探してみたら、 kizasi.jpのサービスで「kizAPI(きざっぴ)」ってのがあった。

.NET 複数のTaskを一度に開始しようとすると遅延が発生する

10個のスレッドを同時に走らせて並列処理したいとする。 まさか new Thread(...).Start() なんてやらないですよね。 LINQでasync/awaitだーってのもアリかもしれませんが、 素直にTaskを10個作ろうとすると↓こんな感じ。

WPF DataGrid.RowHeight指定のいろいろ

WPF DataGridのレイアウト設定はとかく複雑でわやよ。 今回は行の高さ指定に関する話。 DataGridには行の高さを指定できるプロパティがいくつもあるので その適用の優先順位とか知っておかないと、 設定してるのに変わってくれないぞ??ってハマることにな…

VisualStudio XMLドキュメントコメントにIntelliSenseが効くようになってた

最近Visual Studio 2015 (Community)を使い始めて気づいた。 XMLドキュメントコメント内で型やメンバ名が補完されるようになってる。 これは地味に嬉しい。

WPF BindingのPathにEnum型のインデクサを指定する

WPFはBindingに始まりBindingに終わるといっても 過言ではない。気がする。 今回はコレクション要素のバインドについて。

WPF DataContextを設定した直後にBinding先で値を参照する

突然ですが、以下の出力結果はどうなるでしょう? //適当なボタン var button = new Button() { Width = 120, Height = 30 }; //IsEnabledに"Used"というパスをバインド button.SetBinding(Button.IsEnabledProperty, new Binding("Used")); //Usedプロパテ…

C# Bitly APIで短縮URLを取得する

ひとむかし前はURL短縮サービスといえばbit.lyだったと思うんだけど、 今はいろいろあるし、以前ほど利用機会はなくなったかな。 けどAmazonのURLをamzn.toにしてくれたりするのはbit.lyが良いですね。 というか何気にびっくりしたんだけど、bit.lyじゃなく…

VisualStudio ビルド時のファイルコピー先をプロジェクト階層と違う場所にする

VisualStudio(というかMSBuildなんだけど)では、 ソースファイルでない任意のプロジェクトファイルについて ソリューション エクスプローラーからビルドアクションを指定するときに 出力ディレクトリへのコピー有無を指定できる。 ただし、設定できるのは…

WPF 自作ValidationRuleのプロパティにバインディング

どうも、僕です。 ザムルってもうワクワクしますよね。 ということで、Qiita XAML Advent Calendar 2014 21日目のエントリーになります。

NUnit 列挙子でテストケースを量産する

Qiita C# Advent Calendar 2014 16日目のエントリーになります。 どうも、僕です。ワクワクするコード書いてますか? NUnitのテストがオールグリーンになる瞬間ってワクワクしますよね。 ということで、NUnitのTestCaseの作り方について。

C# 書式指定可能なログ出力クラスライブラリ「MeLogg」NuGet公開

おれおれロガーをNuGetで公開しましたよ。 ほぼ自分用だけどまあまあ使い勝手は良いのでなかろうか。 NuGet Gallery | MeLogg 1.0.0 どこにも宣伝してないのにすでに77もダウンロードされてる…。 全部日本語で書いてるのに、どういう層がダウンロードしてい…

WPF DataGridへのBindingに関する基本設計

なんか「wpf datagrid binding」で検索して以下の記事に流れてくる人が 異様に多いようだ。 [WPF]DataGridColumnへのバインディング しかし↑の記事ではあんまり一般的でないケースの話しか書いていなくて 申し訳ない気持ちになるので、たまにはちょっと入門…

WPF 枠なしでリサイズ&ドラッグ移動可能なウィンドウを作る

実は知らなかったんすけど、.NET 4.5から標準搭載された WindowChromeクラスってのを使うと VisualStudio2012,2013みたいなボーダーなしのウィンドウアプリとか 全然楽ちんにできるのね。

Componentを継承した.csクラスファイルをVisualStudioで開くとデザイナで開こうとしてエラーになる

DBアクセス関係のクラスをテスト時にモックに差し替えたくて ADO.NET周りのクラスのモックを作っていたんですが、 ただの.csファイルなのに、ソリューションエクスプローラーから開こうとしたら デザイナで開こうとしてエラーになる現象に悩まされた。

リフレクションラッパー「Merror」NuGet公開

以前にも紹介したReflectionの自作ラッパーライブラリを NuGetギャラリーで公開しました。 NuGet Gallery Merror 1.0.1 ライブラリの詳細はこちら 非公開メンバへアクセスするためのReflectionラッパーライブラリ「Merror」公開 これ自体は別段たいしたもの…

C# 三項演算子をswitch文の代わりとして使用する

小ネタ。 三項演算子(条件演算子?)は可視性がいまいちだとかで嫌われてる気がするけど うまく使えば簡単なswitch文の代わりにだってなるし、むしろ見やすいと思うよ! という話。 まず、一般的によく使われるのは、↓こんなif文の代替にするケースか。 //i…

C# Clipboardクラスでクリップボードを監視するとSEHExceptionも発生する

前に「[C#]Clipboardクラスでクリップボードを監視するとComExceptionが発生する」って書いたんだけど、 ComExceptionを無視するようにして安心したのもつかの間、 今度はSEHExceptionってのが発生してきやがった@Windows 8.1(32bit)。

「汝は人狼なりや? for Windows desktop」v1.1の機能追加

自分で遊びたくて作ったデスクトップ用人狼アプリですが 思いのほか息長く遊んでいただけているようでうれしい限りです。 たまに思い出したように機能追加したりしてたんで、 まとめてちょこっとお知らせ。

WPF Windows8で実行された際にポップアップが左右逆に出るのを防ぐ

前回書いてた問題、解決策が見つかったぜはっはー。 さすがはstackoverflowやー。 [WPF]文字列が表示領域に入りきらないときにポップアップで全文を表示する ↑の記事の最後に書いたとおり、 WPFのPopUpとかToolTipのPlacementの設定と、 Windows8のタブレッ…