出張の帰り広島駅にて偶然見かけました。
この黄色い新幹線は『ドクターイエロー』とも呼ばれ、
偶然見かけるとその日は、いいことがあるそうです。
偶然見かけたのはこれで2回目です。
前回は通り過ぎるのを遠めでしか見れませんでしたが、
今回は回送電車だったので写真を撮る余裕がありました。
その分、いいことあるといいなぁ。。。
ドクターイエロー(その1)
ドクターイエロー(その2)
2009年4月26日日曜日
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]呼び出し元 |
[実行結果]
登録:
投稿 (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)レビュー 最近、引越しをしました。 ベランダの物干し竿を固定する位置が転居前よりも高く、 身長が低い妻にとって家事がしづらいので、 物干し台 を購入しました。 組み立て式の為、多少のぐらつきはありますが、 実際使ってみても全く不便さを感じませ...