No more Death March

あるSEのチラシの裏 C# WPF

.Net Frameworkのソースコード

下記URLにて公開されており、ダウンロードすることが出来ます。http://referencesource.microsoft.com/中身を理解する必要はないけど.Net Frameworkで開発してる全ての人は一度でいいから目を通してみるべきだと思います。 カプセル化という概念の重要性…

c# enumをDictionaryのキーにした場合のパフォーマンス

3年以上の前の記事ですが、参考にさせていただき調べてみました。proprogrammer.hatenadiary.jp要約するとintへのキャストは高速だけどGetHashCodeの実装は低速とのこと。 あまり厳密なテストをしたわけではないですが、.Net Framework4.6の環境で試してみ…

アダプターパターン

Gofデザインパターンの復習でアダプターパターンについて書きます。 書籍等で見ると最初は混乱したのですが、覚えるとデコレーターパターン同様、シンプルなパターンだと思います。 アダプターパターンとは アダプターパターンの構成 適合させたい型 アダプ…

デコレーターパターン

Gofデザインパターンの一つ、デコレーターパターンについて復習します。 デコレーターパターンは比較的簡単で、デザインパターンの中で一番最初に覚えたパターンでした。 再利用しやすいコードを書く上で今でも欠かせないパターンだと思います。 デコレータ…

プロジェクトの分離について

色んな書籍をみても、c#のプロジェクトやjavaのパッケージの分け方について深く言及しているものがあまり無い。 最近思うのは、プロジェクトやパッケージの分離方法の勘所を抑えていれば、自ずとメンテナンスが容易なシステムになるのではないかということ。…

C# 自作ライブラリの検討メモ

デザインパターン、オブジェクト指向エクササイズの教材として自作ライブラリを作ろうと検討中。名前空間についてメモ Nmdm ⇒最上位の名前空間、ブログ名からNmdm.Pair ⇒ジェネリックインターフェースで二つのインスタンスのペアを表現Nmdm.Collection ⇒IEnu…

c# リフレクションの使いどころを考える

ソフト全体で使いたいインターフェースがある時、 インターフェースとその実装を同じプロジェクトに入れると実装部分をメンテナンスする度に大規模なビルドが必要になる。そもそも抽象(インターフェース)に依存して処理を標準化するのに実装を直す度にビル…

ステートソーシングな設計をイベントソーシングな設計に

ステートソーシングな設計の「商品テーブル」をイベントソーシングな設計に置き換える時のイメージをメモ「商品テーブル」 ・ID ・コード ・名称 ・登録担当者ID ・登録日時 ・更新担当者ID ・更新日時 ・削除担当者ID ・削除日時手順1)ドメインに…

C# プロパティとメソッドの違い

プロパティとメソッドとの違いについておさらいします。MSDNに掲載されている説明は以下の通り。プロパティとメソッドの選択 一般的に、メソッドは操作を表し、プロパティはデータを表します。 例えば「人」オブジェクトがあれば、 「名前」や「性別」は…

書籍「現場で役立つシステム設計の原則」を読んでみて。

7月5日に発売されたのでさっそく購入しました。現場で役立つシステム設計の原則 〜変更を楽で安全にするオブジェクト指向の実践技法作者: 増田亨出版社/メーカー: 技術評論社発売日: 2017/07/05メディア: Kindle版この商品を含むブログを見るこの本の著者…

文字列からプリンタを取得

using System; using System.Printing; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { var queueByFullName = new PrintQueue(new LocalPrintServer(), LocalPrintServer.GetDefaultPrintQueue().FullName); Console.…

インストールされているプリンターの一覧を取得する。

using System; using System.Printing; namespace LocalPrintersName { class Program { static void Main(string[] args) { foreach(var queue in new LocalPrintServer().GetPrintQueues()) { Console.WriteLine(queue.FullName); } Console.ReadLine(); }…

既定のプリンター名を取得する。

using System; using System.Printing; namespace DefaultPrinterName { class Program { static void Main(string[] args) { Console.WriteLine("既定のプリンタは{0}です。", LocalPrintServer.GetDefaultPrintQueue().FullName); Console.ReadKey(); } } …

WPFで帳票 参考リンク

ネットで色々検索してみるとWPFでも帳票印刷が出来るらしい。 後で参考に出来そうなリンクをメモ以下参考: WPFでの印刷の基本(1) 単一ページの印刷 - Qiita WPFでの印刷の基本(2) 複数ページの印刷 - Qiita WPFを帳票フレームワークとして使う - @kotyの…

C# App.Configでエラー

DbProviderFactoriesの仕組みを勉強してて、DbProviderFactories.GetFactoryClasses()でConfigurationErrorExceptionが発生。App.Configをよ~く見てみるとセクションの後のスペースが交っていた。 これを消してやると解消。1時間くらい悩みました・・・

C# 月初日

C#

public DateTime MonthFirstDate(DateTime value) { return new DateTime(value.Year, value.Month, 1); } DateTimeのコンストラクタの日にち部分に1を渡す。

C# 月末日

C#

public DateTime ToMonthLastDate(DateTime value) { return new DateTime(value.Year, value.Month, DateTime.DaysInMonth(value.Year, value.Month)); } 年と月はそのまま、日にちだけDateTimeクラスのDaysInMonthメソッドに年と月を渡してやる。 VB6の時…

インターフェースを考える(14)考えを整理(出来ていない)

C#実践開発手法のシングルメソッドインターフェースで色々書いてきたけども、 途中途中浮かんだ考えをだぁーっと箇条書きにしてみる。C#実践開発手法 デザインパターンとSOLID原則によるアジャイルなコーディング作者: ゲイリーマクリーンホール出版社/メ…

インターフェースを考える(13)コレクションとインターフェース

IActionやISpecificationなど、単一の要素に対するインターフェースでしたが、 実際にアプリケーションを組むとなると必ずコレクションに対する操作が必要になると思います。今回は拡張メソッドを使って、都度コーディングをしなくてもこれらインターフェー…

インターフェースを考える(12)ActionとActor

IActionインターフェースについて思いついたことがあるので書いてみます。まずIActionインターフェース namespace Nmdm.Actions { public interface IAction<TContext> { void Do(TContext context); } } 機能面だけで見ると一つの引数を受け取って戻り値の無いメソッ</tcontext>…

インターフェースを考える(11)IActionを手直し

ISpecification同様IActionを手直し+拡張メソッドを導入まずCompositeActionクラス namespace Nmdm.Actions { public sealed class CompositeAction<TContext> : IAction<TContext> { public CompositeAction(IAction<TContext> one, IAction<TContext> other) { this.One = one ?? new NullAction<TContext>()</tcontext></tcontext></tcontext></tcontext></tcontext>…

インターフェースを考える(10)ISpecificationのテスト

この記事では以下の記事で実装したクラスをテストしてみて、クライアントコードの具合を考えてみます。 記事の順序やらテストのタイミングがぐちゃぐちゃですが、チラシの裏ブログなのでご容赦を・・・nomoredeathmarch.hatenablog.comまず、最初のテストコ…

インターフェースを考える(9)インターフェースの組み合わせ

前回ISpecificationでAndやOrといった論理演算を拡張メソッドで簡単に記述出来るようにしましたが、 思うにこれって他の汎用的なインターフェースにすべて適用出来ますね。 以下前回の記事 nomoredeathmarch.hatenablog.comただ適用する際の注意点としては …

インターフェースを考える(8)判定処理と拡張メソッド

ISpecificationの組み合わせ方について これまで以下のような実装をしていました。 using System.Linq; using System.Collections.Generic; namespace Nmdm.Specifications { public sealed class AndSpecification<T> : ISpecification<T> { public AndSpecificat</t></t>…

インターフェースを考える(7)IPredicate

IPredicateの拡張について書きます。前回実装した記事は↓から nomoredeathmarch.hatenablog.comまずは前回のTestedTaskを少し手直し。 using System; using Nmdm.Tasks; namespace Nmdm.Predicates { public sealed class TestedTask : ITask { public Teste…

WPF パフォーマンス分析ツールを入れてみる。

WPFのチューニングが全然捗らないので分析ツールを導入してみる。 バインディングはほんと便利だと思うけど、こういうツールなしにチューニングするのはきついですね・・・とりあえずこの記事で目についたWPF Performance Suiteというのを入れてみよう。 WPF…

WPF 実行環境によっては画面がぼやける・・・

WPF

WPFではまったのでメモします。開発用マシンとは異なるOS、ハードで実行すると画面がぼやけてしまった。 アンチエイリアス処理の結果かなぁとは思ったけどぼやけかたが余りに酷い。なにかないかと試してみたのがこちら↓ FrameworkElement.UseLayoutRoundin…

C# Linq覚えなきゃなぁ

今更ですがIEnumerable.Countで痒いところに手が届いた感

インターフェースを考える(6)IEvent

以前書いたドメインイベントの実装について、 インターフェースの側から考える。nomoredeathmarch.hatenablog.com nomoredeathmarch.hatenablog.comまず作成したインターフェースについて復習まず、イベントを表すクラスのインターフェースIEvent namespace …

インターフェースを考える(5)IAction その2

前回に続きIActionについて考える。 IPredicateやITaskと同じように組み合わせ用にCompositeActionクラスを作る。 using System; using System.Collections.Generic; namespace Nmdm.Actions { public sealed class CompositeAction<TContext> : IAction<TContext> { public Comp</tcontext></tcontext>…