読者です 読者をやめる 読者になる 読者になる

misc.log

日常茶飯事とお仕事と

Visual Studio 2012 Premiumで新しいプロジェクトを作成できない

Windows 7 32bit版にVisual Studio 2012 Premium Editionをインストール後、Windows Updateを実行。50個くらいのアップデートを適用しました。その後、Visual Studio 2012を起動し、プロジェクトを新規作成しようとすると下図のようなエラーが。 制約 Contra…

日本語フォント名から英語フォント名を取得する

昨年の話なんですが、記録し忘れていたので。米国製のコンポーネント(GUIを伴うもので、テキスト入力なども処理する)を利用していて、フォント名プロパティに日本語フォント名を指定すると、次にフォント設定を表示させたらフォント名が文字化け、おまけに…

VB.NETでのサロゲートペア文字の取り扱い

文字のチェック処理を扱う必要が出てきたのでテストデータを作っているのですが、サロゲートペアがどのように扱われるかについて勘違いしていました。たとえば、U+29E3D、「ほっけ(魚+花)」という文字ですが、これはプログラム中では以下のように取り扱わ…

コードカバレッジ分析ツール opencover

twitterで制作者ご本人から紹介いただいたので、とりあえずメモっておきます。これは8月9月で実際に使ってみよう。 opencover https://github.com/sawilde/opencover

64bitアプリと32bit DLLの混在

意外に実験したことが無く、結構即答で答えられない質問だったのでしらべてみました。64bit用に対象アーキテクチャをx64としてビルドされた.NETのアプリケーションから、32bit用、即ちx86用としてビルドされたアセンブリを参照して実際に動かせるのか?とい…

ODP.NETと.NET Framework 4.0

.NET Framework 4.0に対応したODP.NET(Oracle Data Provider for .NET)は、Oracle 11g対応のODP以降しか無いのですね。10g用として公開されているODP.NET(ODAC 10.2.0.2.21 に含まれるもの)は、.NET Framework 1.1と2.0用。では、以下の疑問はどう解決す…

.NET Framework 2.0から4.0への移行

内容はまだ読めてないので、とりあえず公式情報の所在だけメモしておきます。 .NET Framework移行センター/.NET Framework 2.0 ~ 3.5 から .NET Framework 4 への移行 http://www.microsoft.com/ja-jp/net/migration/document4.aspx .NET Framework 4移行ガ…

高いツールを使うか、安いツールを使うかの判断

どうやら周囲でVisual Studio 2010や2012のテスト支援機能をフルに使わず、外部ツールとの併用で自動テストとカバレッジの検証を行う方針を決めた様子……相談してくれればアドバイスするんだけど、きっと難しい話が嫌だから避けられたな(笑)。で、予想する…

Visual Studio 2012はWindows XPにインストールすらできないのな

いやまぁ、今更XPも無いので別にいいのですが……。Visual Studio 2012を使っての開発環境確認作業が入ったので、既存のXP環境VMを展開してインストール……できないよ!wwというわけでWindows 7のVMを引っ張り出して起動中。マイクロソフトの情報はこちらから。…

.NET、DLLの修正で参照元も全部ビルドし直すのか?

職場にて。質問を受けたのですが、即答できなかったので調べました。以前も同じような調べ物をした覚えがあるのですが、記録していなかったので自分用メモもかねて。ちなみに開発環境はVisual Studio 2005、.NET Framework 2.0です。 厳密名を持たないDLLを…

メモ: DataTableとSelect

DataSetに対する検索に関して。基本は「マイクロデータベース」なのでSQLと同じ書式で検索かけてやる必要があるんですね。ちょっと今は余裕ないので、詳細はいずれきちんと調べて把握しよう。 MSDN/DataColumn.Expression Property http://msdn.microsoft.co…

TextBoxのDisable(Enabled=False)とフォーカス移動

テキストボックスなどにフォーカスがある状態で、そのテキストボックスがDisabled(Enabledプロパティ = False)にされると、フォーカスって次のTabIndexを持つコントロールに移るのですね……。知ってたようで知らなかった仕様。

Windows Serviceのデバッグを簡単に行う方法

時間が無いので手短にメモ。Windows Serviceのデバッグはいろいろと面倒ですが、サービスの登録や動作環境さえ整えば、以下の方法で簡単に実施できます。 OnStartメソッドに「Debugger.Launch()」と書く サービスを開始する 「Visual Studioでデバッグします…

Local System AccountとWNetAddConnection2命令

Windowsサービスとして動くアプリを作成中。 WNetAddConnection2命令を使ってネットワークドライブ(共有フォルダ)に接続する処理で、何度やっても接続エラー「1312」が発生するという問題に遭遇。答えはどうやらサービスの稼働アカウントらしい。 CodeProj…

フォームが意外な方法で強制最大化されてしまった

最大化ボタンを殺して作成されている業務アプリケーションがあったのですが、とある方法で最大化されてしまいました(笑)。その手段とは 仮想環境(VMware Workstation)上のWindowsからその画面を開く(フルスクリーンで) VMware Workstationのフルスクリ…

フォーム内のテキストボックスに対するペースト処理を事前にキャッチする

共通ライブラリとして作成した部品類の単体テスト結果をログとして残すために、ペースト処理などの状況もログにだすべく、IMessageFilterを使ったメッセージの事前取得を試みました。ところが……テキストボックスを貼り付けたフォームに対してIMessageFilter…

文字コードと文字種チェック

とりあえず現時点ではまとめられないのでメモを残しておきます。文字種チェック処理を書く必要が出てきたのですが、厳密に実装しようとするといろいろ考えないといけないことが多く、正直参りました。 コード「A0/FD/FE/FF」に関する情報 スレ立てるまでもな…

Visual Studioのインストールでイラっとする瞬間

どうでもいいはなしですが。 Visual Studio 2005をインストールしていると、この人の挑発的な視線でイラッとします。

アセンブリ同士の比較で差異を洗い出すツール

仕事メモ。プロジェクトの納品前作業の精度を上げると言う話で、以前購入してもらったNDependを使った方法を考えていたのですが、ほかのツールは無いのか?と思って調べてみました……。あんまりないのな。 NDepend 商用ツール。依存関係の洗い出しなどに加え…

マイクロソフト製品のライセンスについて勘違いしてる

職場で、Visual Studioのライセンスが開発者についてくる(すなわち、その人だけが使うなら何台にインストールしてもかまわない)という話を聞いた人たちがびっくりしてる。 ……今頃何をいっとるのだ。 いつからだったか忘れましたが、Visual Studioのライセ…

Oracle 11gと10gと発行者ポリシー

Oracle 10g対応のODP.NET(Version 2.102.5.0)などを使っている環境のODP.NETその他を、いきなり11gのものに入れ替えて動くだろうか、という話が職場で起きている。実際に動いたという話も出ているので(試した人がいる)、発行者ポリシーによってバージョ…

FormでAcceptButtonを設定しているけれどMultiLineテキストボックスでEnterも使いたい

FormでEnterキーを押すと特定のボタンを押したことにする「AcceptButton」というプロパティが設定されていると、MultiLineの設定を行ったテキストボックスで、Enterキーによる改行入力ができなくなります(Shift+EnterやCtrl+Enterなら可能ですが)。これを…

IDisposableの実装に関する説明

DBアクセス処理を行うクラスの仕上げ作業を行っている中で、切断処理をおこなわせるためにIDisposableを実装しようと考えました。毎回、これのやりかたについては調べ、毎回「なるほど!」って思いながら作業するのですが、MDSNの記事で非常にわかりやすく説…

Releaseビルドするとエラーになるが、Debugビルドでは動く

あるライブラリを用いたソースで、Releaseビルドではエラーになってしまうというプログラムがあり調査していました。ライブラリ製造元から出してくれているサンプルでは同様の処理を問題なくこなしているのに、プロジェクトメンバーが作ったソースはだめ。何…

プリンタ出力で「アクセスする設定が有効ではありません。」

FAX出力する処理を持ったプログラムの改修作業を行っており、その過程でプリンタ出力処理を新しく書き直すことに。FAX出力ドライバはプリンタドライバの形式をとっており、プログラムからはプリンタに出力するかのようにプリンタ名を指定すればOK……だったの…

GetFileNameメソッドってスラッシュも区切りとして認識するんだ……

.NET Framework 2.0でのお話。知らなかったのですが、System.IO.Path.GetFileNameメソッドって、パス文字列のフォルダ区切りにスラッシュ("/")が使われていても、さらに、円記号と混在していても区切りとして認識してくれるんですね。以下の例だと「testfi…

値型とNothingの比較(VB.NET)

VB.NETでは、通常は参照型の空参照として扱われるNothingとの比較は「Is Nothing」や「IsNot Nothing」で行う。しかし、対象が値型変数の場合、通常のイコールやノットイコール(=や<>)で比較が出来る。これ、案外知らない人が多い。ではこのときに何が起き…

SafeFileNameプロパティと.NET Framework 2.0とサービスパックと

さっきしったこと…….NET Framework 2.0(無印、サービスパック無し)には、System.Windows.Forms.OpenFileDialogオブジェクトのSafeFileNameプロパティが無い。これ、豆知識な。SP1を適用すると登場するようです。Microsoft Visual Studio Professional 2012…

ODP.NETのバージョンでトラブル

以前、アセンブリバージョンリダイレクトについて書きました。これを使った環境で、なんかエラーが(笑)。 やりたかったことは ODP.NET 2.102.5.0で作成したプログラムを、ODP.NET 2.102.4.0だけが入った環境で動かしたい ということでした。通常、古いバー…

デバッグビルドとリリースビルドでエラー発生有無が変わる

スキャナを利用したアプリケーションで、Visual Studio 2005によるビルドの際にDebugモードでビルドするかReleaseモードでビルドするかによってエラー発生するかどうかが変わるパターンに遭遇してしまい、困っています。具体的には、デバッグビルドであれば…

ODP.NETとアセンブリバージョンリダイレクト

新バージョンのODP.NETを参照してビルドしたものを、旧バージョンのODP.NETが入った環境で稼働させる必要が出てきました。方法について調べていたところ、同僚からこのサイトを紹介されました。 バージョンリダイレクト/株式会社ミークス http://www.meeks.j…

Visual Studio 2005をWindows 7にインストールしようとしてみた

仕事で、Windows 7上でVisual Studio 2005を利用する必要があったのでインストールしてみたらこんなことに。ダイアログに表示されたボタンから「オンラインで解決策の有無を確認する」を選択すると表示されるWebサイトがこれ。どうやらWindow7でVisual Studi…

DataSourceにListを設定したコンボボックスでSelectedIndexを強制指定する

DataSourceにListを継承したオブジェクトを、DisplayMemberやValueMember指定と共に設定したComboBoxで、初期表示項目を設定しようとSelectedIndexを指定したのですが、エラーが発生しました。エラーはOutOfRange的なもの。この状況と同じでした。 ComboBox …

MustInherits宣言されたクラスのテストコード

Visual Studio 2010の自動テスト機能(いわゆるNUnit)では、クラスにPraivate宣言されたメソッドやプロパティもテストしてしまえる機能がついています。ですが、MustInherits宣言された、いわゆる「継承しないと使えない」クラスもできるのでしょうか?ってこ…

64bit環境へのODP.NETインストールとアプリの配布

お仕事で64bit環境と32bit環境が混在する環境への配布を行う必要があるのですが、その辺りについての「どうすべきか」がよく分からないので調べています。 64bit環境にODP.NET 64bit版をインストールしてみる 64bit環境であるWindows Server 2008 R2に、ODP.…

Windows Server 2008 R2でGACに登録されているアセンブリの一覧を見る

WindowsXPとかと雰囲気が全然違ってて場所が判りませんでした。ここを見て判明。 How to Locate Assembly in GAC http://artykul8.com/2009/08/locating-assembly-in-gac/ 場所は、C:\Windows\assembly フォルダです。

VisualBasic名前空間のIsNothing()と、.NETのIs Nothing速度比較

結果は明白。タダの条件式の演算子として使えるIs Nothingの圧勝。速度差は何度か試してもやはり2,000倍ほど速い。 まずは.NETのIs Nothing、こちら、0.2マイクロセカンド。 次にVisualBasic名前空間にある、VB6.0の頃からあったIsNothing関数、こちら、だい…

VisualBasic名前空間のLen()関数と、.NETのString.Length速度比較

これまた大きな差が出ました。結論から言うとString.Lengthの方が8万倍ほど速いです。 まずは.NETのString.Lengthメソッドによる文字長取得。 次はVisualBasic名前空間のLen()関数。 ミリセカンドレベルの速度差なので、これだけを人間が体感して感じること…

空白を生成するのにSpaceを使うか直接指定するか。

結論から言いますと、数文字程度なら直接ダブルクォートで囲って定義したほうが30万倍速いです(笑) こちら、直接定義。文字列の代入は1μセカンド未満の速度。 一方で、VisualBasic名前空間の昔からあるSpace関数は…… はわわーww

空文字比較と文字長ゼロ比較の速度差

取得した文字列がカラッポであるかどうかの判定なんてのは業務処理でありがちな判断文ですが、これもちょっとしたコツで速度差が大きくでます。まず、最初に「トリムした文字列が空文字(String.Empty)でないことの判定」を見てみましょう。 約9,000μセカンド…

VisualBasic名前空間のLeft、Midと、String.Substringメソッドの速度差

やっぱり未だに平気でLeftとかMid使う人がいるので、速度差の実証を。http://d.hatena.ne.jp/frontline/20120427/p1 の続きです。 まずは.NETのStringクラスが持つSubstringメソッドの速度。こちらは88μセカンド。 次いで、VisualBasic.String.Left関数。こ…

文字列→Int64への変換最速は?

http://d.hatena.ne.jp/frontline/20120427/p1 の続き。文字列のトリムに関しては大敗したVisualBasic名前空間の処理ですが、では、Long変換はどうでしょうか?

文字列トリム処理の速度比較

お仕事で調べることがあったので記録を残しておきます。VB 2010でのトリム処理は、未だにVisualBasic名前空間のTrim関数も利用可能ですが、果たして.NETのString.Trimメソッドとどっちが速いのでしょうか?という問題。手元にある速度測定ツールがVisual Stu…

ドキュメントコメントの「code」タグを使うとタイトルが「C#」になる

Visual Studio 2010などにある、定型書式のコメントからヘルプを作る機能で、サンプルコードを埋め込むタグ「code」を使うと、なぜかサンプルコード部分のタイトルが「C#」になってしまうという問題がずっと出ていました(下図参照)。まぁサンプル自体は読…

DateTime型引数にNothingを渡すと…

単体テストコードを書いていて、引数にDateTime型の年月日時刻情報を指定する関数があったので、そこにNothingを指定すると何が起きるのかを見てみました……。関数の中では、受け取ったDateTime型データをToStringで「〜.ToString("yyyyMMdd")」のように書式…

64bit環境でのODP.NET 64bit版、32bit版の共存

Oracle 11gから導入されたInstant Clientを使えばいけそうだけど、でもやっぱ共存となると要確認かな……というオチでした。Instant Clientも「よくわからないものは使うな」でNG出されそうなので、残念ながら環境を別々に作って考え事を減らす路線でいきます…

.NETの自作ライブラリで出させる例外

.NETでライブラリを作っていて、例外を投げよう!と思っても一体何例外にすればいいかわかんなかったりしますよね。で、その辺をざざっとまとめられているページを見つけたのでメモっておきます。 スローする例外チートシート/主に技術日記 http://yfakariya…

開発するアプリのコンパイルターゲットCPUをどう設定すべきかねぇ…

お仕事で迷うことがあったので、しらべて通知したお話を可能な範囲で転記しておきましょう。 開発チーム向け回答抜粋 実装〜結合テスト工程では以下の設定とします 32bitクライアント用アプリケーション: x86 64bitサーバー用アプリケーション、共通DLL : An…

プログラムにおける制御構造やエラー処理の「まとめ方」

内部向け説明資料をここで推敲しますwww -------------- 論点を分けましょう。多分ごちゃごちゃになってます Try/Catchによる構造の構成方法について VB6.0以前のOn Error Gotoと異なり、.NETでのTry/Catchはあくまで「例外的状況を制御できる制御構造」です…

Visual StudioのターゲットCPU設定をどうすべきか

これまで正直なところ全然気にしたことがなかったのですが、今回の案件、サーバーが64ビットなので、ちょいと考えないといけない。 AnyCPU Exes are usually more trouble than they're worth http://blogs.msdn.com/b/rmbyers/archive/2009/06/8/anycpu-exe…