Rxを用いたアプリケーションの状態管理 Part 0

C#

前回の記事からかなり間が空いていますが…。最近、アプリケーションの状態管理をRxベースで扱おうとするとどのような感じになるのだろう…というようなことを考えていました。UIを持つMVVMなアプリケーション向けであれば ReactiveProperty という素晴らしい…

マルチスレッド処理の基礎(6) - フィールドの取り扱い Part 2

C#

前回の記事の続きです。 静的フィールドは宣言時または静的コンストラクタで初期化する シングルトンのインスタンスのように一度だけ初期化する必要のある静的フィールドは、宣言時または静的コンストラクタで初期化します。サンプルコードの「誤ったコード…

マルチスレッド処理の基礎(5) - フィールドの取り扱い Part 1

C#

これから数回に分けて、フィールドを更新・参照する処理をスレッドセーフにする方法を説明します。 単一のフィールドを固定値で更新する場合はvolatile修飾子をつける 処理終了要求フラグのように、単一のフィールドをあるスレッドが固定値で更新、他のスレ…

マルチスレッド処理の基礎(4) - クラス設計に関する留意事項 Part 2

C#

またまた間が空いてしまいましたが、前回の記事の続きです。 スレッドとインスタンスの所有関係を明確化する - スレッドセーフでないクラスの場合 スレッドセーフでないクラスのインスタンスを保護する方法は、基本的には以下の2つの方法しかありません。 …

マルチスレッド処理の基礎(3) - クラス設計に関する留意事項 Part 1

C#

少し間が空いてしまいましたが、これから数回に分けて、マルチスレッド処理の設計・実装における注意点を解説していきます。まずは、クラス設計に関する留意事項を説明します。 スレッドセーフなクラスとスレッドセーフでないクラスを分離し、明確化する ス…

Actorライブラリを公開しました

C#

Actorライブラリを作成したので、CodePlexで公開してみました。CodePlex Archiveどのようなライブラリなのかざっくり言うと、TPL Dataflowを使うと実現が楽になるような動作から並列性に関する要件を一部削る代わりにSynchronizationContextを実装し、async/…

Stateパターン用ライブラリを公開しました

C#

最近作っていたStateパターン用のライブラリをCodePlexで公開してみました。 CodePlex Archive現状ドキュメントやAPIリファレンスがほとんど整備できていないため、ソースコードのみのリリースです。自動単体テストは通してあるので、実用上はおそらく問題な…

マルチスレッド処理の基礎(2) - ソフトウェア評価基準

C#

マルチスレッド処理の主な評価基準を以下に示します。用語の詳細な定義は本記事では解説しきれないため、詳細を知りたい方は前記事の参考資料やWikipedia等を参照ください。 名称 意味 安全性(safety) オブジェクトが壊れないこと(フィールドの内容が予期し…

マルチスレッド処理の基礎(1) - 参考資料

C#

連載の期間がどのくらいになるかあまり見通しが立っていない部分もあるので、より深く学びたい方への参考資料を先に紹介しておきます。 書籍 増補改訂版 Java言語で学ぶデザインパターン入門 マルチスレッド編作者: 結城浩出版社/メーカー: ソフトバンククリ…

マルチスレッド処理の基礎(0) - はじめに

C#

しばらくぶりの記事ですが…本日から、C#のマルチスレッド処理の基礎について何度かに分けて書いていきます。 はじめに これから書いていく内容は、数年前に仕事上で教育のために作った資料をベースとしています。そのため、内容の多くは、.NET Framework 3.5…

数学を学ぶ - 高校数学編

近年のプログラミング言語の潮流や、自分の今後のキャリアの積み方を考えた結果、数学を学び直したいと考えるようになった。 この記事では、僕が高校数学を学ぶ上で有用だと感じた本を紹介したいと思う。 ただし、僕の現時点での目標は「理論の概要を理解す…

TwitterのタイムラインをHTML形式で出力する

TwitterのタイムラインをHTML形式で出力するサンプルコードを作成してみた。使用ライブラリはtweepy。tweepyの使用方法やアクセスキーの取得方法はtwitterAPI用pythonライブラリtweepyを使えるようになるまで。を参考にした。以下のコードをファイルに保存し…

Google App Engine / Pythonの開発環境を整備する

Google App Engine / Python 上で動作するアプリケーションを開発するにあたってインストールしたソフトウェア / ライブラリ等のメモ。 試行錯誤しながら設定したので、まっさらな状態から再度同じ環境を構築しようとしてもとうまく行かない気もするが、とり…