2017-11-01から1ヶ月間の記事一覧

複数のキーを利用できるConditionalWeakTableクラス

C#

下記記事にて、2つのキーを利用できるWeakTableを実装してみました。 2つのキーを利用できるConditionalWeakTableクラス - 何でもプログラミング今回は3,4個と拡張しやすいように、複数個のキーを利用できるWeakTableを実装してみたいと思います。 Keysク…

2つのキーを利用できるConditionalWeakTableクラス

C#

.NETのConditionalWeakTableは、キーを弱参照で保持し、キーがGCされたときに自動でキーと値がRemoveされるようになっています。しかし、キーとして複数の参照を持ち、参照のうちどれかがGCされたらRemoveを行うといった使い方はできません。今回は複数の参…

Garbage Collectionを検知する(C#)

C#

通常のプログラミングにおいて、いつGCされたか気にする必要はありませんが、極まれにGCのタイミングで処理をしたい時があります(設計で回避するべきではありますが…)今回はGCを検知する方法を調べてみました。 GC.WaitForFullGCComplete GCクラスの関数を…

F#でメモ化(ConditionalWeakTable)

F#

プログラムの高速化のため、一度計算した値を再利用することはしばしばあります。しかし結果を状態として保存する必要があるため、F#では少し扱いにくいです。そこで、ある関数を結果を再利用する関数に変換する、memoize関数を定義してみたいと思います。 m…

ネストしたレコードの更新(Functional lenses)

F#

下記記事にて、リフレクションを用いてネストしたレコードの更新を実装してみました。 ネストしたレコードの更新 (F#) - 何でもプログラミング今回はFunctional lensesを利用して同様の内容を実装してみたいと思います。 Lens型定義 Lens型は対象オブジェク…

Direct2D 独自Effectの作成(PixelShader利用)

下記記事にて、独自のEffectを作成しました。 Direct2D 独自Effectの作成 - 何でもプログラミングEffectの効果自体は、組み込みのID2D1OffsetTransformを利用していたので、今回は独自の効果(PixelShader)を定義してみたいと思います。下図のように、青と…