[はじめに]
・.NETのアプリケーションからデータベースに接続する場合、
接続文字列という情報が必要になります。(.NETに限った話ではありませんが…)
.NETのアプリケーション開発で、接続文字列の書式が分からない場合、
書籍やインターネット、他のアプリケーションを参考にすることがありますが、
「Visual Studio 2008」の機能を使って、接続文字列を簡単に取得する方法があります。
(※「Visual Studio 2008」とありますが、
「Visual Studio.NET 2002」、「Visual Studio.NET 2003」、
「Visual Studio 2005」でも可能です。
試していないので若干方法が異なると思いますがご了承下さい。)
[前提条件]
・「Visual Studio 2008」がインストールされていること。
・データベースにアクセスできること。
[手順]
(1)「Visual Studio 2008」を起動し、「サーバーエクスプローラ」を選択します。
(※「サーバーエクスプローラ」が表示されない場合は、「ツール」から表示可能にできます。)
(2)「データ接続」を右クリックし、「接続の追加」を選択します。
(3)「データソースの変更」画面で、「データソース」や「データプロバイダ」を選択します。
選択する内容は、接続するデータベースの種類によって変わります。
ここでは、「SQL Server 2005 Express Edition」に接続する例として、
「データソース」に「Microsoft SQL Server」、
「データプロバイダ」に「.NETFrameworkSQLServer用データプロバイダ」を選択します。
(4)「接続の追加」画面で、接続情報を入力します。
ここでは、
・接続先のサーバを「(local)」、
・認証方式を「Windows認証」、
・接続先データベースを「master」
とします。
接続情報を入力したら、「テスト接続」ボタンを押して、
データベースの接続がうまく行えることを確認します。
(5)データベースの接続が成功したら、確認画面が表示されます。
確認メッセージを「OK」ボタンで閉じ、
「詳細設定」ボタンを押し「詳細プロパティ」画面を表示します。
(6)「詳細プロパティ」画面の一番下の欄に、接続文字列が表示されます。
通常のテキストなので、コピーして流用することもできます。
この場合の書式文字列は、
「Data Source=(local);Initial Catalog=master;Integrated Security=True」
です。
[関連サイト]
(1)接続文字列の使用
http://msdn.microsoft.com/ja-jp/library/ms254978(VS.80).aspx
2009年5月24日日曜日
2009年5月17日日曜日
[Toy's Review]電子ブロック
(1)レビュー
学研より発売された電気実験キットです。
抵抗、トランジスタ、ダイオード、豆電球等のパーツが、
ブロックになっており、組み立てるだけで、
簡単に電気回路を組み立てることができます。
私は小学校3年の頃にクリスマスプレゼントで買ってもらいましたが、
予め回路の組立て例が用意されているので、
小学生でも充分楽しめる内容でした。
部品の意味を知らなくても、
電子ブザーや簡易ラジオを簡単に組み立てられる。
これが電子ブロックの醍醐味だと思います。
1981年に生産が中止になりましたが、
「大人の科学」シリーズとして復刻版が発売されたようです。
「大人の科学」とありますが、子供でも充分楽しめると思います。
子供の理系離れが進んでいる昨今、薦めてみてはどうでしょうか?
(2)リンク
学研より発売された電気実験キットです。
抵抗、トランジスタ、ダイオード、豆電球等のパーツが、
ブロックになっており、組み立てるだけで、
簡単に電気回路を組み立てることができます。
私は小学校3年の頃にクリスマスプレゼントで買ってもらいましたが、
予め回路の組立て例が用意されているので、
小学生でも充分楽しめる内容でした。
部品の意味を知らなくても、
電子ブザーや簡易ラジオを簡単に組み立てられる。
これが電子ブロックの醍醐味だと思います。
1981年に生産が中止になりましたが、
「大人の科学」シリーズとして復刻版が発売されたようです。
「大人の科学」とありますが、子供でも充分楽しめると思います。
子供の理系離れが進んでいる昨今、薦めてみてはどうでしょうか?
(2)リンク
2009年5月2日土曜日
[Game's Review]クイズマジックアカデミーDS(通常版)
[Game's Review]ドラゴンクエストV 天空の花嫁(DS版)
(1)レビュー
[DS版オリジナルの要素]
・花嫁候補が3人になった。
ビアンカ、フローラに加えて、デボラが追加!
・すれちがい通信でオリジナル名産品集めが楽しめる。
DSを閉じてかばんの中とかに入れておくだけで、
ドラクエ5を持っている人とすれ違うと勝手に通信します。
他の人と通信するとお互いが作った『名産品』を交換するというもの。
交換して受け取った名産品は専用の展示室に飾られます。
モンスターを仲間にするシステムは従来通りです。
以下は、はぐれメタルを仲間にした時の写真です。
228匹目でグランバニアの洞窟で仲間にしました。
(2)リンク
[DS版オリジナルの要素]
・花嫁候補が3人になった。
ビアンカ、フローラに加えて、デボラが追加!
・すれちがい通信でオリジナル名産品集めが楽しめる。
DSを閉じてかばんの中とかに入れておくだけで、
ドラクエ5を持っている人とすれ違うと勝手に通信します。
他の人と通信するとお互いが作った『名産品』を交換するというもの。
交換して受け取った名産品は専用の展示室に飾られます。
モンスターを仲間にするシステムは従来通りです。
以下は、はぐれメタルを仲間にした時の写真です。
228匹目でグランバニアの洞窟で仲間にしました。
(2)リンク
[Game's Review]ドラゴンクエストIV 導かれし者たち(DS版)
[Game's Review]ドラゴンクエストVIII 空と海と大地と呪われし姫君
(1)レビュー
本シリーズ初の3D対応のゲームです。
従来シリーズは「上から見下ろす視点」でしたが、
今作は「主人公視点」となることで、
あたかも自分がフィールドを歩いたり洞窟を探検しているかのような
感覚で楽しめました。
「あたかも自分が~」ってところが、
RPGの本来あるべき姿なのかなと思いました。
(堀井雄二のこだわり!?)
3Dのぐりぐりな動きには、2時間くらいのプレイで慣れると思います。
また洞窟で方向が分からなくなって迷うのも楽しみ方の一つかなと…(笑)
[今後のドラクエについて]
次回作もそうですが、今回の3Dエンジンを使ったリニューアルも期待します!!
(2)リンク
本シリーズ初の3D対応のゲームです。
従来シリーズは「上から見下ろす視点」でしたが、
今作は「主人公視点」となることで、
あたかも自分がフィールドを歩いたり洞窟を探検しているかのような
感覚で楽しめました。
「あたかも自分が~」ってところが、
RPGの本来あるべき姿なのかなと思いました。
(堀井雄二のこだわり!?)
3Dのぐりぐりな動きには、2時間くらいのプレイで慣れると思います。
また洞窟で方向が分からなくなって迷うのも楽しみ方の一つかなと…(笑)
[今後のドラクエについて]
次回作もそうですが、今回の3Dエンジンを使ったリニューアルも期待します!!
(2)リンク
[Game's Review]ファミコンミニ スーパーマリオブラザーズ
(1)レビュー
旧ファミコン時代が懐かしく思い、つい買ってしまいました。
当時のゲームは、シンプルが故に奥の深いゲームが多く、
「スーパーマリオ」もその一つだと思います。
【良い点】
・FC版と同様の操作性です。
・裏技もほぼ移植。
以下、再現させた裏技。
・コンティニュー(タイトルからAボタン+スタート)
・スケートマリオ
(ファイヤマリオで、土管から出た直前にAとBを同時押しっぱなし)
・マイナス1面(ステージ1-2)
・無限増殖
・透明パックンフラワー(8-4の水中面)
【イマイチな点】
・9-1以降のステージがプレイできない。
(FC版は「テニス」との併せ技が必要な為、GB、DSでは無理だと思いますが…)
・カメをハンマーブロスに当てようとすると、なぜかすり抜ける。(ステージ8-3)
FC版では必ずヒットしていたはず。。。
(2)リンク
旧ファミコン時代が懐かしく思い、つい買ってしまいました。
当時のゲームは、シンプルが故に奥の深いゲームが多く、
「スーパーマリオ」もその一つだと思います。
【良い点】
・FC版と同様の操作性です。
・裏技もほぼ移植。
以下、再現させた裏技。
・コンティニュー(タイトルからAボタン+スタート)
・スケートマリオ
(ファイヤマリオで、土管から出た直前にAとBを同時押しっぱなし)
・マイナス1面(ステージ1-2)
・無限増殖
・透明パックンフラワー(8-4の水中面)
【イマイチな点】
・9-1以降のステージがプレイできない。
(FC版は「テニス」との併せ技が必要な為、GB、DSでは無理だと思いますが…)
・カメをハンマーブロスに当てようとすると、なぜかすり抜ける。(ステージ8-3)
FC版では必ずヒットしていたはず。。。
(2)リンク
2009年4月26日日曜日
[雑記]黄色い新幹線
出張の帰り広島駅にて偶然見かけました。
この黄色い新幹線は『ドクターイエロー』とも呼ばれ、
偶然見かけるとその日は、いいことがあるそうです。
偶然見かけたのはこれで2回目です。
前回は通り過ぎるのを遠めでしか見れませんでしたが、
今回は回送電車だったので写真を撮る余裕がありました。
その分、いいことあるといいなぁ。。。
ドクターイエロー(その1)
ドクターイエロー(その2)
この黄色い新幹線は『ドクターイエロー』とも呼ばれ、
偶然見かけるとその日は、いいことがあるそうです。
偶然見かけたのはこれで2回目です。
前回は通り過ぎるのを遠めでしか見れませんでしたが、
今回は回送電車だったので写真を撮る余裕がありました。
その分、いいことあるといいなぁ。。。
ドクターイエロー(その1)
ドクターイエロー(その2)
2009年4月20日月曜日
[雑記]Excelで『履歴』は予約語?
Microsoftの表計算ソフト『Excel』のトリビア的ネタです(笑)
『履歴』という名前でシートを作成しようとすると、
こんなエラーが出ます。
『履歴』が予約語!?Σ(゚□゚;)
予約語は半角英数字が一般的だと思っていたので、
全角が予約語になるのは珍しいですね。
ひょっとして、Excelを英語から日本語に翻訳する際に、
予約語も一緒に翻訳しちゃったのかな?
試しに『history』でシートを作ろうとすると、
特にエラーも無く普通に作れちゃいました。。。
『履歴』ってどんな予約語なんだろう。。。
2009年4月12日日曜日
[.NET]例外の再スロー(Throwの引数の有無)
[はじめに]
・.NET系言語(C#、VB.NET)のプログラムコードで、
以下のような構文を見かけることがあります。
Tryステートメント内で発生した例外をCatchして、
再度スローする処理で、「Throw ex」と書く人が結構多いようですが、
実はこのような書き方をすると、
ここでCatchする以前のトレース情報が失われてしまうのです。
トレース情報を保持しつつ再スローするには、
以下の様に、「Throw ex」ではなく「Throw 」と記述します。
なぜか書籍やMSDNにも、前者の書き方でサンプルを紹介している為、
知らない人が多いようです。
(Throwステートメントとは直接関係ないサンプルだから、
あまり重要視していないのだと思いますが…)
[参考文献]
[検証]
Throwステートメントの仕様について、
2つのパターンの検証プログラムを実行して、結果を比較してみた。
・パターン1(Throwステートメントに引数がある場合)
・パターン1の実行結果(Throwステートメント[引数あり])
Throwの引数を指定した場合は、
保持されているトレース情報は、Method1、Button1_Clickのみで、
Method2、Method3、Method4は保持されていないことがわかります。
引数指定での再スローでは、それより前のトレース情報を保持しない為です。
この例では、
Method3で再スローする時に、Method4以降のトレース情報を保持しない、
Method2で再スローする時に、Method3以降のトレース情報を保持しない、
Method1で再スローする時に、Method2以降のトレース情報を保持しない為、
図のような結果になります。
・パターン2(Throwステートメント[引数なし])
・パターン2の実行結果(Throwステートメント[引数なし])
Throwの引数を指定しない場合は、
関連するトレース情報(Method1、Method2、Method3、Method4、Button1_Click)を
全て保持していることがわかります。
・.NET系言語(C#、VB.NET)のプログラムコードで、
以下のような構文を見かけることがあります。
| |
[VB.NET]例外の再スロー[Throwの引数がある場合] |
再度スローする処理で、「Throw ex」と書く人が結構多いようですが、
実はこのような書き方をすると、
ここでCatchする以前のトレース情報が失われてしまうのです。
トレース情報を保持しつつ再スローするには、
以下の様に、「Throw ex」ではなく「Throw 」と記述します。
| |
[VB.NET]例外の再スロー[Throwの引数がない場合] |
なぜか書籍やMSDNにも、前者の書き方でサンプルを紹介している為、
知らない人が多いようです。
(Throwステートメントとは直接関係ないサンプルだから、
あまり重要視していないのだと思いますが…)
[参考文献]
・「C#クックブック 第3版」 |
「レシピ4.1 キャッチした例外を再スローするタイミングを把握する」で、 Throwステートメントの引数の有無の違いを明確に説明しています。 「Throw」(引数なし)の記述を推奨しています。 |
・「プログラミングC#―C#2.0/.NET2.0/Visual Studio2005対応」 |
「11.4 例外の再スロー」で、 理由の説明はないが、「Throw」(引数なし)の記述を推奨しています。 |
パターン1 |
Throwステートメントに引数がある場合、 Button1_Click()→Method1()→Method2()→Method3()→Method4()と メソッドを呼び、最下層のMethod4()で ゼロ除算の例外(System.DevideByZeroException)を意図的に発生させる。 各々のメソッドのCatch句では、「Throw ex」(引数あり)で例外を再Throwする。 最上位メソッドにて、例外の内容(ToString()した結果)を表示する。 |
パターン2 |
Throwステートメントに引数がない場合、 Button1_Click()→Method1()→Method2()→Method3()→Method4()と メソッドを呼び、最下層のMethod4()で ゼロ除算の例外(System.DevideByZeroException)を意図的に発生させる。 各々のメソッドのCatch句では、「Throw 」(引数なし)で例外を再Throwする。 最上位メソッドにて、例外の内容(ToString()した結果)を表示する。 |
| |
[VB.NET]例外[Throwの引数がある場合] |
| |
[VB.NET]例外[Throwの引数がない場合] |
[VBA]ExcelVBAでオブジェクト指向の継承
[はじめに]
・ExcelのVBA(Visual Basic for Application)は、
完全オブジェクト指向言語(JavaやC#等)ほどではないですが、
オブジェクト指向によるプログラミングをサポートしています。
『オブジェクト指向』と言えば、
代表的な性質として以下の3つのキーワードがあります。
代表的な性質
[VBAのオブジェクト指向]
VBAのオブジェクト指向は、完全オブジェクト指向言語(JavaやC#等)のそれと比べると、
『子クラスのメソッドを経由して親クラスの変数やメソッドにアクセスできない』、
『子クラス内から親クラスの変数やメソッドにアクセスできない』等の制限事項がある。
[多態性(ポリモフィズム)]
『多態性(ポリモフィズム)』の説明で、
『動物』に『鳴く』メッセージを通知する例がよく挙げられる。
以下に、『多態性(ポリモフィズム)』を利用したサンプルコードを示す。
[クラス図]
[クラスの説明]
・Mammalクラス
哺乳類を表すクラス。
メソッドとして、Cry()を実装。
・Dogクラス、Catクラス、Crowクラス
イヌ、ネコ、カラスを表すクラス。各々のクラスはMammal(哺乳類)クラスを継承。
メソッドとして、Mammal_Cry()を実装。
([親クラス名]_[親クラスのメソッド名]で、親クラスのメソッドをオーバーライドできます。)
[多態性(ポリモフィズム)]
・Dogオブジェクト、Catオブジェクト、Crowオブジェクトを
Mammalオブジェクトの配列に格納する。
MammalオブジェクトのCrowメソッドを経由して、
Dogオブジェクト、Catオブジェクト、CrowオブジェクトのCrowメソッドを呼ぶ。
以下のサンプルでは、3つのMammalオブジェクトのCryメソッドを呼んでいるが、
実際に実行されるのは、Dog、Cat、CrowのMammal_Cryメソッドであることを示している。
同一のCryというメッセージをMammalオブジェクトに通知しているが、
受け取った各々のオブジェクト毎に異なった動作をしていることになる。(多態性(ポリモフィズム))
[サンプルコード]
[実行結果]
・ExcelのVBA(Visual Basic for Application)は、
完全オブジェクト指向言語(JavaやC#等)ほどではないですが、
オブジェクト指向によるプログラミングをサポートしています。
『オブジェクト指向』と言えば、
代表的な性質として以下の3つのキーワードがあります。
代表的な性質
継承 |
2つのクラス間で親子関係を持ち、子クラスが親クラスの性質を受け継ぐこと。 |
カプセル化 |
オブジェクト内部のデータを隠蔽したり(データ隠蔽)、オブジェクトの振る舞いを隠蔽したり、 オブジェクトの実際の型を隠蔽したりすることをいう。 |
多態性(ポリモフィズム) |
実行される処理の実体が、コールされたメッセージではなく、メッセージを受けたオブジェクトに よって決定される性質。 また、この性質を使って、 「同一のメッセージを使って、オブジェクトごとに異なった処理を行わせること」 |
VBAのオブジェクト指向は、完全オブジェクト指向言語(JavaやC#等)のそれと比べると、
『子クラスのメソッドを経由して親クラスの変数やメソッドにアクセスできない』、
『子クラス内から親クラスの変数やメソッドにアクセスできない』等の制限事項がある。
[多態性(ポリモフィズム)]
『多態性(ポリモフィズム)』の説明で、
『動物』に『鳴く』メッセージを通知する例がよく挙げられる。
以下に、『多態性(ポリモフィズム)』を利用したサンプルコードを示す。
[クラス図]
[クラスの説明]
・Mammalクラス
哺乳類を表すクラス。
メソッドとして、Cry()を実装。
・Dogクラス、Catクラス、Crowクラス
イヌ、ネコ、カラスを表すクラス。各々のクラスはMammal(哺乳類)クラスを継承。
メソッドとして、Mammal_Cry()を実装。
([親クラス名]_[親クラスのメソッド名]で、親クラスのメソッドをオーバーライドできます。)
[多態性(ポリモフィズム)]
・Dogオブジェクト、Catオブジェクト、Crowオブジェクトを
Mammalオブジェクトの配列に格納する。
MammalオブジェクトのCrowメソッドを経由して、
Dogオブジェクト、Catオブジェクト、CrowオブジェクトのCrowメソッドを呼ぶ。
以下のサンプルでは、3つのMammalオブジェクトのCryメソッドを呼んでいるが、
実際に実行されるのは、Dog、Cat、CrowのMammal_Cryメソッドであることを示している。
同一のCryというメッセージをMammalオブジェクトに通知しているが、
受け取った各々のオブジェクト毎に異なった動作をしていることになる。(多態性(ポリモフィズム))
[サンプルコード]
| |
[ExcelVBA]Mammalクラス |
| |
[ExcelVBA]Dogクラス |
| |
[ExcelVBA]Catクラス |
| |
[ExcelVBA]Crowクラス |
| |
[ExcelVBA]呼び出し元 |
[実行結果]
2009年1月11日日曜日
[.NET]カスタマイズした構成情報の利用(.NET1.1以前が対象)
[はじめに]
(1)カスタム構成セクションとは?
通常、アプリケーションの構成情報は、appSettingsノード配下の
addノード(key属性とvalue属性)に記述するルールですが、
独自のルール(独自のXMLタグ)で定義することもできます。
この独自のXMLタグで定義された構成情報を、「カスタム構成セクション」と呼びます。
「カスタム構成セクション」にアクセスする為には、
プログラム上で「カスタム構成セクションハンドラ」クラスを実装し、
構成ファイルに「カスタム構成セクションハンドラ」を追加する必要があります。
(2)カスタム構成セクションハンドラとは?
カスタム構成セクションにアクセスする為には、
その独自のXMLタグを解析する必要があります。
その独自のXMLタグを解析するクラスを、「カスタム構成セクションハンドラ」と呼びます。
カスタム構成セクションハンドラは、以下の(a)(b)の条件に従って実装する必要があります。
(a)System.Configuration.IConfigurationSectionHandlerインタフェースを実装する。
(b)IConfigurationSectionHandlerインタフェースのCreateメソッドに、
カスタム構成セクションを解析する処理を実装する。
(3)カスタム構成セクションハンドラが、カスタム構成セクションにアクセスするには?
カスタム構成セクションハンドラがカスタムセクションにアクセスする為には、
構成ファイルに、構成セクションハンドラを追加する必要があります。
追加することにより、カスタム構成セクションハンドラとカスタムセクションの対応付けを
定義したことになります。
(4)利用可能な.NET Frameworkのバージョンは?
本記事のサンプルは、.NET1.1以前で主流だった方法です。
.NET2.0以降では、「ConfigurationSection」クラスを使用する方法が
推奨されています。(.NET2.0以降でも使用可能)
(5))参考文献
・『MSDN Library for VisualStudio2008日本語版』
・『MCTSスキルチェック問題集70-536 .NET Framework2.0アプリケーション構築基礎』
カスタム構成セクションにアクセスする例を、以下の(1)~(4)に分けて示します。
(1)カスタム構成セクションの定義
例として、日本の地域と県、県と県庁所在地の対応を定義しています。
[ソース]
(2)カスタム構成セクションハンドラの実装 System.Configuration.IConfigurationSectionHandlerインタフェースを 実装したクラスを定義します。 System.Configuration.IConfigurationSectionHandlerインタフェースの Createメソッドに、カスタム構成セクションのアクセス処理を実装します。 この例では、カスタム構成セクションから、県と県庁所在地の一覧を取得し、 HashTableに格納しています。 [ソース]
(3)構成ファイルにカスタム構成セクションハンドラの追加 「myCustomGroup」、「Country」の対応付けを定義し、 更に「Country」のセクションハンドラを定義しています。 type属性には、カスタム構成セクションハンドラのアセンブリ修飾名を指定します。 アセンブリ修飾名については、 MessageBox.Show( _ New MyCustomConfigHandler1_1().GetType().AssemblyQualifiedName) で確認できます。 [ソース]
(4)構成情報の取得 以下に、カスタム構成セクションハンドラを使用して構成情報を取得する例を示します。 取得には、System.Configuration.ConfigurationSettingsクラスの GetConfigメソッドを使用します。(※.NET2.0以降では警告がでます。) GetConfigの引数には、起点となるカスタム構成セクションのノード名を指定します。 [ソース]
(1)カスタム構成セクションとは?
通常、アプリケーションの構成情報は、appSettingsノード配下の
addノード(key属性とvalue属性)に記述するルールですが、
独自のルール(独自のXMLタグ)で定義することもできます。
この独自のXMLタグで定義された構成情報を、「カスタム構成セクション」と呼びます。
「カスタム構成セクション」にアクセスする為には、
プログラム上で「カスタム構成セクションハンドラ」クラスを実装し、
構成ファイルに「カスタム構成セクションハンドラ」を追加する必要があります。
(2)カスタム構成セクションハンドラとは?
カスタム構成セクションにアクセスする為には、
その独自のXMLタグを解析する必要があります。
その独自のXMLタグを解析するクラスを、「カスタム構成セクションハンドラ」と呼びます。
カスタム構成セクションハンドラは、以下の(a)(b)の条件に従って実装する必要があります。
(a)System.Configuration.IConfigurationSectionHandlerインタフェースを実装する。
(b)IConfigurationSectionHandlerインタフェースのCreateメソッドに、
カスタム構成セクションを解析する処理を実装する。
(3)カスタム構成セクションハンドラが、カスタム構成セクションにアクセスするには?
カスタム構成セクションハンドラがカスタムセクションにアクセスする為には、
構成ファイルに、構成セクションハンドラを追加する必要があります。
追加することにより、カスタム構成セクションハンドラとカスタムセクションの対応付けを
定義したことになります。
(4)利用可能な.NET Frameworkのバージョンは?
本記事のサンプルは、.NET1.1以前で主流だった方法です。
.NET2.0以降では、「ConfigurationSection」クラスを使用する方法が
推奨されています。(.NET2.0以降でも使用可能)
(5))参考文献
・『MSDN Library for VisualStudio2008日本語版』
・『MCTSスキルチェック問題集70-536 .NET Framework2.0アプリケーション構築基礎』
カスタム構成セクションにアクセスする例を、以下の(1)~(4)に分けて示します。
(1)カスタム構成セクションの定義
例として、日本の地域と県、県と県庁所在地の対応を定義しています。
[ソース]
| |
例:カスタム構成セクションの定義 |
(2)カスタム構成セクションハンドラの実装 System.Configuration.IConfigurationSectionHandlerインタフェースを 実装したクラスを定義します。 System.Configuration.IConfigurationSectionHandlerインタフェースの Createメソッドに、カスタム構成セクションのアクセス処理を実装します。 この例では、カスタム構成セクションから、県と県庁所在地の一覧を取得し、 HashTableに格納しています。 [ソース]
| |
[VB.NET]例:カスタム構成セクションハンドラの実装 |
(3)構成ファイルにカスタム構成セクションハンドラの追加 「myCustomGroup」、「Country」の対応付けを定義し、 更に「Country」のセクションハンドラを定義しています。 type属性には、カスタム構成セクションハンドラのアセンブリ修飾名を指定します。 アセンブリ修飾名については、 MessageBox.Show( _ New MyCustomConfigHandler1_1().GetType().AssemblyQualifiedName) で確認できます。 [ソース]
| |
例:カスタム構成セクションハンドラの追加 |
(4)構成情報の取得 以下に、カスタム構成セクションハンドラを使用して構成情報を取得する例を示します。 取得には、System.Configuration.ConfigurationSettingsクラスの GetConfigメソッドを使用します。(※.NET2.0以降では警告がでます。) GetConfigの引数には、起点となるカスタム構成セクションのノード名を指定します。 [ソース]
| |
[VB.NET]例:カスタム構成セクションハンドラを使用して構成情報を取得する |
2009年1月1日木曜日
[Algo]組合せの数(nCm)の算出
[はじめに]
・n個の中からm個を選ぶ組合せの数(nCm)を算出するプログラムです。
例:a、b、cの3個の中から2個を選ぶ組合せは、
ab、ac、bcの3通りであり、その数を数学的表記で『3C2』と表現します。
.NETのクラスライブラリには算出するメソッドがないようなので作ってみました。
・nCmを算出する公式はいくつかありますが、
代表的な公式と各々の特徴について、以下にまとめます。
・参考文献
『Javaによるはじめてのアルゴリズム入門』
以下に、算出方法に対するプログラム例を示します。
(1)階乗による算出
公式:nCm=n!/{m!×(n-m)!}
(2)漸化式による算出
一般的に、漸化式の計算は再帰処理で実装できます。
公式:
(i)m=0の場合
nCm=1
(ii)m>0の場合
nCm=nCm-1×(n-m+1)/m
(3)Π(パイ)による算出
「(2)漸化式による算出」の公式は、
総乗(掛け算を集約したもの)と解釈できるので、
以下の公式でも表現できます。
公式:nCm=Π{(n-k+1)/k} (※1≦k≦M)
・n個の中からm個を選ぶ組合せの数(nCm)を算出するプログラムです。
例:a、b、cの3個の中から2個を選ぶ組合せは、
ab、ac、bcの3通りであり、その数を数学的表記で『3C2』と表現します。
.NETのクラスライブラリには算出するメソッドがないようなので作ってみました。
・nCmを算出する公式はいくつかありますが、
代表的な公式と各々の特徴について、以下にまとめます。
・参考文献
『Javaによるはじめてのアルゴリズム入門』
以下に、算出方法に対するプログラム例を示します。
(1)階乗による算出
公式:nCm=n!/{m!×(n-m)!}
| |
[C#][階乗による算出] 異なるn個のものからm個を選ぶ組み合わせの総数nCmを取得する。 |
(2)漸化式による算出
一般的に、漸化式の計算は再帰処理で実装できます。
公式:
(i)m=0の場合
nCm=1
(ii)m>0の場合
nCm=nCm-1×(n-m+1)/m
| |
[C#][漸化式による算出] 異なるn個のものからm個を選ぶ組み合わせの総数nCmを取得する。 |
(3)Π(パイ)による算出
「(2)漸化式による算出」の公式は、
総乗(掛け算を集約したもの)と解釈できるので、
以下の公式でも表現できます。
公式:nCm=Π{(n-k+1)/k} (※1≦k≦M)
| |
[C#][Π(パイ)による算出] 異なるn個のものからm個を選ぶ組み合わせの総数nCmを取得する。 |
2008年12月29日月曜日
[.NET]メールの送信(.NET2.0以降)
[はじめに]
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
・補足
・メールを送信するサンプルプログラムです。(最も簡単な例)
・クラスライブラリ
.NETFramework2.0から新たに追加されたクラスを使用しています。
(1.1以前では『System.Web.Mail』名前空間のクラスが使用されていましたが、
2.0以降は『System.Net.Mail』名前空間のクラスが推奨されています。)
クラス名/列挙体名 | 概要 |
System.Net.Mail.SmtpClientクラス | SMTPサーバを表すクラスです。 |
System.Net.Mail.MailMessageクラス | メールを表すクラスです。 |
System.Net.Mail.MailAddressクラス | メールアドレスを表すクラスです。 |
System.Net.Mail.Attachmentクラス | 添付ファイルを表すクラスです。 |
System.Net.NetworkCredential | 認証情報を表すクラスです。 |
System.Net.Mail.MailPriority列挙体 | メールの優先度を表す列挙体です。 |
・CDO(Microsoft Collaboration Data Objects)
Windowsでは、メールの送信機能として『CDO』を用意しています。
CDOは、VB6やEXCEL VBA等からも利用することができますが、
インタフェースがわかりにくいものでした。
.NETでは、CDOの呼び出しをカプセル化することで、
よりわかりやすいインタフェースを提供しています。
・参考文献
『MSDN Library for VisualStudio2008日本語版』
以下にサンプルソースを示します
| |
[VB.NET]メールを送信するサンプル |
| |
[C#]メールを送信するサンプル |
本サンプルは、送信元メールアドレスをYahooメールで確認しています。(2008.12.29現在) Yahooメールで確認するには、 『Yahooメールを他のメーラーで送受信できるようにする』必要があります。 Yahooメールの『POPアクセスとメール転送』で、『ブラウザアクセスとPOPアクセス』に設定して下さい。 あとは、 ユーザ名:YahooID パスワード:YahooIDのパスワード SMTPサーバ:『smtp.mail.yahoo.co.jp』 SMTPのポート番号:『587』 でメールを送信できます。 |
2008年12月21日日曜日
[.NET]関数(y=f(x))のグラフをImageに描画する
[はじめに]
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
(1)PictureBoxに、一次関数(y=2x)のグラフを描画する例
・上記で定義したメソッド(DrawFunction)の使用例を以下に示します。
まずは、一次関数(y=2x)を定義します。
・適当なイベント処理内で、DrawFunctionメソッドを呼ぶ処理を記述します。
DrawFunctionメソッドに渡す引数は、
・グラフを描画するImageインスタンス
・一次関数(y=2x)のデリゲート (※デリゲートとはメソッドの参照を格納する変数、型です。)
・X座標の範囲(From、To)
です。
[デリゲートについて]
.NETでは、メソッドの参照を変数に格納し、変数経由でメソッドに
アクセスすることができます。 (デリゲート変数)
この例では、一次関数の定義をデリゲート変数に格納し、DrawFunctionメソッドに渡します。
メソッドの参照はAddressOf演算子で取得します。
デリゲート変数はFuncHandler型で定義し、fnc1と関連付けします。
実行結果
(2)PictureBoxに、二次関数のグラフを描画する例
・デリゲート変数の内容を、二次関数のデリゲートに置き換えるだけで、描画内容を変更できます。
実行結果
(3)PictureBoxに、三角関数のグラフを描画する例
・同様に三角関数も描画可能です。
実行結果
(4)PictureBoxに、平方根の関数のグラフを描画する例
・平方根の関数も同様です。
実行結果
・関数(y=f(x))の呼び出しは、デリゲート経由で行います。
これにより、描画メソッド(DrawFunctionメソッド)を変更することなく、
関数(y=f(x))を切替えることができます。
・非関数(xとyが1対1に対応していない)には対応していません。
例えば、x2+y2=r2のような円を表すグラフは描画できません。
・Graphics.DrawLineメソッドで、一つ前の座標との直線を描画している為、
連続していない関数(離散型)では一部正しく描画されないことがあります。
例えば、y=tan(x)の場合、x=π/2で縦線が描画されます。
| |
[VB.NET]関数のグラフをImageに描画する例 |
| |
[VB.NET]例:一次関数の定義 |
| |
[VB.NET]DrawFunctionメソッドの呼び出し |
| |
[VB.NET]関数を二次関数で定義した場合 |
| |
[VB.NET]関数を三角関数で定義した場合 |
| |
[VB.NET]関数を平方根で定義した場合 |
登録:
投稿 (Atom)
[雑記]ドローン(DJI Mini 3)
(1)雑記 もともと多趣味の友人 masakazu Drone 氏が、 最近、 ドローン にハマり始めて、 更に、新たな趣味が増えたとのこと。 ドローン を始めてから、 まだ1年も経っていないとのことですが、 旅行先で山や川の景色を 空撮 して、 Youtube ...
-
(1)雑記 もともと多趣味の友人 masakazu Drone 氏が、 最近、 ドローン にハマり始めて、 更に、新たな趣味が増えたとのこと。 ドローン を始めてから、 まだ1年も経っていないとのことですが、 旅行先で山や川の景色を 空撮 して、 Youtube ...
-
(1)レビュー 10年以上前からある書籍ですが、昨今のJavaのバージョンに合わせて、 リニューアルされましたので、改めて紹介いたします。 GOFが提唱したデザインパターンについて、とてもわかりやすくまとめた1冊です。 各パターンを章毎にまとめてあり、クラス図・...
-
(1)はじめに sqlcmd コマンドで、 SELECTステートメントを実行した時、 行の折り返しで、結果が見づらくなることがあります。 Oracle の LINESIZE に相当する設定が、 SQLServer にもないか調べてみました。 普段...
-
(1)レビュー 目覚まし時計の調子が悪くなったので、新たに購入しました。 指定した時刻にアラームが鳴ってくれさえすればよいので、 特別な機能は求めていなかったのですが、 価格の割に便利な機能が搭載されていたので、購入に至りました。 最近は、スマホにもアラーム...
-
[はじめに] (1) ある2数の和と積から、元の2数を求めるアルゴリズム です。 例えば、『 足して5 』、『 掛けて6 』になる2つの数は、 2 と 3 になります。 これを解くアルゴリズムとして、 2次方程式の解の解法 を利用することがで...
-
(1)レビュー ASP.NET は、以下の2種類に大別されます。 (1)ASP.NET Web Form .NET Framework1.0リリース時の頃から導入 (2)ASP.NET MVC .NET Framework4以降に導入 ...
-
[はじめに] Excelでシートを昇順に並べ替える機会があったので、 備忘録としてサンプルソースを掲載します。 サンプルは昇順ソートですが、引数を変更すると降順にも対応できるようにしています。 [ソース] コードのコピー Optio...
-
(1)レビュー JavaScriptは古くからあり、時代と共に進化してきています。 JavaScriptの独習シリーズは過去にもありましたが、 最近(2021年)、独習シリーズでJavaScriptの新版が登場しました。 クラス 、 反復処理 、 非同期処理 ...
-
[はじめに] ・プログラムソース(C#、VB.NET)を ブログ公開用のHTMLに変換するツールです。 (コード量が膨大の為、変換処理のみ掲載しています。) [機能] プログラムソースの文字列を、HTMLに変換する。 変換後のHTMLは、<ta...
-
(1)レビュー 最近、引越しをしました。 ベランダの物干し竿を固定する位置が転居前よりも高く、 身長が低い妻にとって家事がしづらいので、 物干し台 を購入しました。 組み立て式の為、多少のぐらつきはありますが、 実際使ってみても全く不便さを感じませ...