2010-01-01から1年間の記事一覧

異なるクラスでもコピーするXMLSerializerを使用した汎用のディープコピー処理(ICloneable, MemberWiseClone, Serializable, XmlSerializer, MemoryStream)

前回、どんなオブジェクトでもコピーできる処理を作ってみました。今回は、クラスが異なる場合でもプロパティの名前さえ一致すればディープコピーできる処理について整理してみました。どんなオブジェクトでもコピーできる汎用のディープコピー処理(IClonea…

VPSの制限を越えた場合のトラブルシューティング

webarenaのVPSサーバが停止してしまったので、その際のトラブルシューティングのメモ。 現象 ・すべてのウェブサイトが 403 Forbidden を返す。 ・SSHDが接続できない。 ・工事障害情報に特に自サーバに対するメンテナンスは無い。(http://web.arena.ne.jp/…

文字幅を取得するAPI

文字幅を取得するWindows32 API のメモ ・GetCharWidthFloat ・GetCharABCWidthFloat ・GetCharWidth(文字セル幅にOverHangが足された値になる) ・GetCharABCWidths(TrueType以外に使用不可) ・GetCharacterPlacement ・GetCharWidth32 文字本体の幅をB幅、…

アセンブリ・DLLの差し替え(アセンブリリダイレクト)

参照設定しているアセンブリ(DLL,Exe)がバージョンアップした場合にファイルを差し替えますが、バージョンが異なる場合、ファイルを差し替えてもバージョン違いとなりエラーが発生して起動する事ができません。対応方法としては、新しいバージョンに参照設…

ターミナルサーバへのアプリケーションのインストール

ターミナルサーバへアプリをインストールする場合は、インストールモードを切り替えます。この操作を行わないと各ユーザにアプリを展開できない場合があります。 ■コマンドによる切替 change user /install インストールモードに切り替え change user /execu…

Hyper-V の自動バックアップ(エクスポート) スクリプト

次の機能を実装しています。Hyper-vのエクスポート(export)機能を利用した簡易Backupツールです。 指定した任意のバーチャルマシンをエクスポートできます。(複数指定可能) 実行中のバーチャルマシンは状態を保存に遷移させてからエクスポートします。エク…

vbScriptでinclude文を使う

VBスクリプトで複数のファイルにわたって記載するためのテクニックです。基本的にVBスクリプトは1ファイルでしか作成できませんが、ExecuteGlobalを使用すると引数で渡した文字列をプログラムとして認識してくれます。 このテクニックをを利用してInclude文…

VisualStudio 2008 のコンパイルを高速化する

[オプション]-[プロジェクトおよびソリューション]-[ビルド/実行] 並行にビルドするプロジェクトの最大数。(CPUやコアの数に合わせて数字を調整する。複数のプロジェクトを並行でビルドすることが出来ます。)MSBuildで利用する場合は、/maxcpucount:3 (3…

どんなオブジェクトでもコピーできる汎用のディープコピー処理(ICloneable, MemberWiseClone, Serializable, BinaryFormatter, MemoryStream)

シリアライズを利用した汎用のオブジェクトのディープコピー処理について整理しました。BinaryFormatterを使用してMemoryStreamに対してシリアライズ/デシリアライズを行いオブジェクトのメモリイメージのコピーを作成するテクニックです。理論上、Serializ…

メールマガジンを創刊しました!「きちんと学ぶ .Net Framework[C#] 」

.Net Frameworkに関する基本事項を取り扱うメールマガジンを発行することにしました。以下、内容の引用ですが興味のある方は、是非、登録ください。 きちんと学ぶ .Net Framework[C#]は、マイクロソフトの開発基盤である .Net Framewo rkの基本事項を体系的…

大文字小文字を無視するキーコレクション。(HashTable,SortedList,Dictionary,SortedList)

C#

キーと値を持つコレクション。非ジェネリックでは、HashTable,SortedList、ジェネリックではDictionary,SortedListと4種類のコレクションがありますが大文字・小文字を無視する際の記述方法が異なります。非ジェネリックは、使う場面も少なくなって来ていま…

ジョナサン・ジットレイン 「親切に支えられたWeb」

TEDでユーモアと希望にあふれたインターネットに関する講演があったので紹介したいと思います。 ジョナサン・ジットレイン 「親切に支えられたWeb」 http://www.ted.com/talks/lang/jpn/jonathan_zittrain_the_web_is_a_random_act_of_kindness.html インタ…

実行時に読み込んだアセンブリをアンロードする。

実行時の任意のアセンブリを動的に読み込むことは出来ますが、アンロードする場合はアプリケーションドメインごとアンロードする必要があります。Win32Apiでは、LoadLibraryとFreeLibraryによって該当DLLだけをロード・アンロードできましたが.Net ではアプ…

Windowsサービスを作成する。(System.Configuration.Install.Installer,System.ServiceProcess.ServiceBase)

C#

Windowsサービスを作成するためには最低限2つのクラスを作成する必要があります。■Serviceの登録:System.Configuration.Install.Installer まずは、.NetアプリをWindowsサービスとして登録するインストールプログラムを実装します。.Netではカスタムインス…

特殊コレクションを利用して軽量のブール配列を作成する。(BitVector32,BitArray)

C#

C#,VB.NETのブール値(bool,Boolean)はTrueとFalseの2値しか保持しませんが、1変数あたり4バイト(32Bit)のメモリ量を必要とします。 簡単に言うと残りの31ビットは無駄な状態となります。大量のブール値を保持する場合、この非効率さが問題となる…

スレッドセーフな配列(List,Dictionary,Queue,Stack)を作成する。(SyncRoot,Synchronized)ジェネリック版。

C#

基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。非…

配列のジェネリック型と非ジェネリック型の対応(ArrayList,HashTable,Queue,Stack)

C#

非ジェネリック → ジェネリックの対応一覧。ジェネリック型は、Objectを操作する非ジェネリック型と違い、配列に格納する型(String,Integer・・etc)に合わせたタイプセーフな配列として定義できます。ArrayListとHashTableは名前が変わっているので要注意…

スレッドセーフな配列(ArrayList,HashTable,Queue,Stack)を作成する。(SyncRoot,Synchronized)非ジェネリック版。

C#

基本的に配列の操作はスレッドセーフではないので(あるスレッドが配列に追加・削除している途中で、別スレッドでFor Eachしたら正しく列挙できない)マルチスレッドで配列のデータを操作する場合は、同時に実行されないようにロックする必要があります。■lo…