ジェネリックな各種リストをスレッドセーフに扱う

C#

その1 System.Collections.ICollectionインターフェイスにキャストすることで、SyncRootにアクセス可能。これでlockを行うことができる。 //こんな感じ var list = new List<String>(); lock (((System.Collections.ICollection)list).SyncRoot) { list.Add("アイテ</string>…

ASP.NETアプリケーションでデバッグ時の値書き換えを有効にする

WindowsFormアプリでデフォルトでできていた、ブレークポイントで張る→止まる→ソースコード書き換え がASP.NETアプリではソースコード書き換えができない。次の設定を行うことで可能になる。

ExpresswebのSQLServerでメンバシップ機能を使用する

クエリのエクスポート この機能で、テーブル定義とレコード設定のクエリを生成することができる。 そのクエリをホスティング先のSQLServerで流す。 web.config設定について ビルド別に使用DBを分けたい場合(例えば、デバッグ時はローカルの*.MDFを使用。本番…

ExpresswebでSQLServerCe4を使用する

VisualStudio2010 Pro SP1 ASP.NET MVC 3 Webアプリケーション ターゲットフレームワークは.NET4 ADO.NET Entity Data Model で確認 はじめに SQLServerは3つまでしかDBを作成することができない。これは嬉しくないのでSQLServerCompact4を使うことにした。 …

TrueCryptでマウント時にフォルダ共有したい

マウント時に行う処理を指定するといったことが、TrueCryptではできなさそうなので、 バッチファイルを作成し、それを実行させることで対応した。 マウント&共有フォルダ作成 <...>は各自環境に置換してください。 cd <ボリュームファイルのフォルダ> "…

レガシーコード改善ガイド5

このメソッドをテストハーネスで動かすことができません 隠れたメソッド privateなメソッドをテストしたい場合の対処方法。 ・publicなメソッドにしてしまう。*1 ・そのメソッドの責務を別クラスに分離する。 ・テストクラスからそのメソッドを呼び出せるよ…

レガシ―コード改善ガイド4

このクラスをテストハーネスに入れることができません いらただしいパラメータ 本番コードでは、それ以外に手段がない場合を除き、パラメーターにnullを渡すのはやめる。 nullを渡せるような実装だと、処理の至る所でパラメーターチェック処理が行われている…

レガシーコード改善ガイド3

いつまで経っても変更作業が終わりません 遅延時間 外部ライブラリなどの依存性がひどいシステムのコードは、ビルドする度に未変更箇所すべてもビルドしなおす必要がある。 その間ぼーっと待つことになる。(遅延時間) 改善済コードだとビルド~テスト実行の…

レガシーコード改善ガイド2

レガシーコードを改善する前に 遠回りな対応方法としてレビュー時に文句を言われると思う。 そこだけ変えても、そこ以外の糞コードはそのままだぞ。意味ないのでは? 動くようになっている箇所の構成を帰るのはいかがなものか? しかし、「これを続けていけ…

レガシーコード改善ガイド1

レガシーコードの定義 "テストの無いコード"すべてをレガシーコードと呼ぶ。 フィードバックを得ながらの作業 システム変更の方法は大きく二種類に分けることができる。 1,編集して祈る → レガシーコード 2,保護して編集する → テストで保護されたコード 単…

Visual Studio 2010でアプリケーションのパフォーマンス・チューニング

DBアプリケーションのパフォーマンス・チューニング − @ITの内容メモ クエリのデータ転送量を減らす 不要な項目をSELECT区に含めない。安易に*を使用しない。 SQLServerからの転送量がかなり節約できる。 クエリの内容をデバッグ出力 Entity Frameworkでは…

こんまり式の片付け

テレビで見て感心したので頭に残っていることを書き出しておく。 種類別に片付け 場所ごとに片付けするのではなく、種類ごと(服,本,書類,,,)に片付ける。 整理対象種類のものを一箇所にまとめて片付けする。こうすることでものの量が把握できる。(その多さに…

レバレッジ・リーディング

読書は自身への投資となる。 本で得た知識を仕事や生活で活かすことで大きなリターンを得ることができる。 "読書"ではなく、自分を運用するための投資作業という意味合い(-> レバレッジ・リーディング)。 多読を行い、より重要な知識を仕入れる。 同じジャン…

IObservableインターフェイス

C#

IObservable(T) インターフェイス (System) IObserver(T) インターフェイス (System) .NET Framework 4から追加されたこれらのインターフェイスを使ったサンプルを作成していました。 オブザーバーパターンは一方通行の通知を行うパターンだというのに、チャ…

匿名メソッドの変数キャプチャ

C#

基本的な大事なことです。 Javascriptのクロージャと同じ考え方です。。。 ど忘れしてましたので再確認を兼ねて書き置きします。 //非同期でFriendGridにイメージを追加していく (ダメバージョン) Task.Factory.StartNew(() => { foreach (var friend in Vie…

開発系エンジニアのスキルロードマップ Part 2

開発系エンジニアのスキルロードマップ Part 2 - とあるコンサルタントのつぶやき - Site Home - MSDN Blogs テスターって単体や結合テストする人たちのことでしょ?別に分ける必要ないのでは?と思っていましたが、 「デベロッパーとテスターの違い」を読ん…

デシジョンテーブルを使ったテスト

直交表はテストの専門家ががんばって勉強することでやっと使いこなすことが可能になるイメージ。 デシジョンテーブルは、専門家でなくても、テストケースを比較的容易に作成できる。 メソッドに対するテストでの使用を想定しているが、機能に対する単体テス…

直交表について4

水準数が少ない場合 2水準系直交表の因子より少ない水準の因子を割りつける場合、 割り付け可能な最小サイズの因子へ割りつける。余った水準値はダミー扱いにして、使用しない・重要パターン用に使用する。 水準数が多い場合 2水準系直交表の因子より多い水…

直交表について3

実際に作ってみた 対象とするのは下画面イメージなアプリケーション 社員情報は社員マスターから取得。全て平社員に属する。 社員を選択しない場合、全社員が対象になる。 有効データは2011/01/20〜2011/06/20に存在する。 実行を行うと処理結果がデータベー…

直交表について2

使用する直交表の決定方法 決定する方法が幾つかある。 最大水準因子の組み合わせから求める 「最大種類の水準を持つ因子と、その次に多い水準をもつ因子の組み合わせパターン数」を持つ直交表を使用する。 自由度からの見積もり(同じような水準数ばかりの場…

直交表について1

すべての組み合わせテスト行うのは時間的に無理 例えば57個の組み合わせテストをすべてやろうとしたら46億パターンが以上必要!! ほとんどの不具合は、2機能間の組み合わせで発見されている。 多人数で作成されているソフトウェアは3,4機能の組み合わせでも…

コントローラークラスのテスト

チュートリアル: ASP.NET MVC での TDD の使用 上記リンク先からダウンロードできるサンプルソースはMVC2のときのものですが、十分参考になります。 コントローラークラスに対するテストを勘違いしていたところがあったので、自コメント付けてソースを丸々貼…

DotNetOpenAuthのOpenId認証アダプタ作成

※8/25 OpenId用語訂正(RP⇒OP) asp.net mvcアプリで、DotNetOpenAuthを使用したOpenId認証を行う際、 DotNetOpenAuthのサンプルコードのようにControllerで認証関係処理をゴリ書きするのが嫌だったので、その辺の処理をクラスに分離してみました。 Factoryク…

SQLServerの基本事項メモ

今までアプリケーションのデータソースとして何気なく使っていて、デバッグ時は問題ないが、 本番環境への配置やリモートからの接続が発生した途端にエラーが発生し困ったことが多々ある。 とりあえず動くようにという感じで場当たり的な対応で乗り切ってい…

jQueryMobileでの動的ページ追加に関するメモ

※jQuery Mobile 1.0a4.1 でのはなし。 静的なページが必ず1つ必要っぽい。(ひとつも無いとエラーが発生する) そのため、ダミーページを作成して対応。 <div data-role="page" id="dummypage"></div> <div id="templ-page"> <div data-role="header"><h3>ヘッダー</h3></div> </div>

ASP.NETページのトレース

ページ単位 チュートリアル : ASP.NET トレースと System.Diagnostics トレースの統合 WindowsFormアプリケーションの場合はConsole.Writeline()でデバッグメッセージをコンソール出力していたが、ASP.NETで同じことはできない。 System.Diagnostics.Traceク…

ASP.NET 認証まわりメモ

メンバシップフレームワーク メンバシップ プロバイダの実装 サンプル メンバシップ プロバイダの実装 方法 : サンプル メンバシップ プロバイダを実装する 方法 : カスタム メンバシップ ユーザーを実装する DataSourceごとにプロバイダクラスを生成する必…

ルーティング機能

ASP.NETのルーティング機能。ASP.NET MVCのそれがASP.NETへ統合されたらしい。 ルーティングの有効化 IIS7.0以前のバージョンで使用する場合、modulesノードへUrlRoutingModuleを追加する必要がある。 以降の場合はmodulesノードのrunAllManagedModulesForAl…

ASP.NETのちょっと内側

.section-detail{ margin : 10px; margin-bottom : 30px; font-size : small;} .ref-info{ display : block; font-style : italic; margin : 5px; margin-left : 0px;} ASP.NET MVC のソースコードを読むにあたっての事前調査メモ。 ISAPI(Internaet ServerA…

属性値の取得、変更フック

jQuery1.6の新機能を試してみました。こんな感じで変更を感知できます。 参照元:jQuery1.6の更新内容をまとめたよ。 | Ginpen.com <html lang="ja"> <head> <meta charset="UTF-8" /> <script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.6.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ $("a").hover( f…</meta></head></html>