<?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>技術的なこと</title><link>http://blogs.wankuma.com/naoko/category/1236.aspx</link><description>技術的なこと</description><managingEditor>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</managingEditor><dc:language>ja-JP</dc:language><generator>.Text Version 0.95.2004.102</generator><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>2008年05月30日現在 Enterprise Library の場所</title><link>http://blogs.wankuma.com/naoko/archive/2008/05/30/140427.aspx</link><pubDate>Fri, 30 May 2008 22:44:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2008/05/30/140427.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/140427.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2008/05/30/140427.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/140427.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/140427.aspx</trackback:ping><description>&lt;P&gt;通勤途中に&lt;A title="Visual Studio (赤間さん) by YamaKen" href="http://www.amazon.co.jp/Visual-Studio-%E8%B5%A4%E9%96%93%E3%81%95%E3%82%93/lm/R3JKM4XXH71AEC" target=_blank&gt;赤間さんの本&lt;/A&gt; を読んでいるのですが、&lt;BR&gt;Enterprise Library に関する記述が時々出てきます。&lt;BR&gt;&lt;BR&gt;2008年05月30日現在 Enterprise Library の場所は以下の場所です。&lt;br&gt;&lt;A title="Enterprise Library" href="http://msdn.microsoft.com/en-us/library/cc467894.aspx" target=_blank&gt;http://msdn.microsoft.com/en-us/library/cc467894.aspx&lt;/A&gt; &lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/140427.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>リレーショナル・データベースの世界</title><link>http://blogs.wankuma.com/naoko/archive/2008/05/29/139861.aspx</link><pubDate>Thu, 29 May 2008 00:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2008/05/29/139861.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/139861.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2008/05/29/139861.aspx#Feedback</comments><slash:comments>234</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/139861.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/139861.aspx</trackback:ping><description>&lt;p&gt;
本当に知らない事が多いです。下記のサイトはとても勉強になります。ので自分用メモ。&lt;br /&gt;
&lt;a href="http://www.geocities.jp/mickindex/database/idx_database.html" target="_blank" title="リレーショナル・データベースの世界"&gt;リレーショナル・データベースの世界&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
今仕掛かり中案件にて Oracle10g を触っているのですが、
最近触ったデータベースが DB2 の V8 ばっかりなので Oracle 独自構文などは忘れてしまったりします。&lt;br&gt;
そんな時はいつも下記サイトにお世話になっています。これも自分用メモ。&lt;br /&gt;
&lt;a href="http://oracle.se-free.com/" target="_blank" title="忘れっぽいエンジニアのORACLE／オラクルSQLリファレンス"&gt;忘れっぽいエンジニアのORACLE／オラクルSQLリファレンス&lt;/a&gt;&lt;br /&gt;
Oracle で LEFT|RIGHT OUTER JOIN が使えるのか！と知らなかったので個人的に驚きでした。
&lt;br /&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/139861.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>showModalDialog のダイアログ内での画面遷移</title><link>http://blogs.wankuma.com/naoko/archive/2008/02/25/124882.aspx</link><pubDate>Mon, 25 Feb 2008 23:07:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2008/02/25/124882.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/124882.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2008/02/25/124882.aspx#Feedback</comments><slash:comments>316</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/124882.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/124882.aspx</trackback:ping><description>&lt;p&gt;
現在また JDK1.4 めいた、struts めいたお仕事をしています。&lt;br&gt;
&lt;br&gt;
お客様のご要望で、&lt;br&gt;
IE の showModalDialog でモーダルダイアログ表示した画面の中で&lt;br&gt;
post で submit して別画面へ画面遷移する、という事をしなくてはならなくなりました。&lt;br&gt;
&lt;br&gt;
ダイアログ内で画面遷移とな...。&lt;br&gt;
&lt;br&gt;
とにかくお仕事なのでやらないといけません。&lt;br&gt;
ところが、showModalDialog をまともに使った事がなかったので、下の方と同じ現象でつまづきました。&lt;br&gt;
&lt;a href="http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?forum=28&amp;topic=22195" target="_blank" title="showModalDialogの遷移時に新規ウィンドウが開いてしまう問題"&gt;showModalDialogの遷移時に新規ウィンドウが開いてしまう問題&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
上記スレッドの水戸黄門さんの方法『showModalDialog で呼び出される側（showModalDialog の引数で指定される側）の head タグの中に &amp;lt;base target="_self"&amp;gt; 』で回避しました。&lt;br&gt;
はずかしながら、&lt;a href="http://www.tohoho-web.com/html/base.htm" title="&lt;base&gt; - ベース URL の指定" target="_blank"&gt;base タグ&lt;/a&gt; という存在を初めて知りました。なるほどなるほど。&lt;br&gt;
&lt;br&gt;
しかし多分、今後使う事はないとは思いますがメモ。
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/124882.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>WebBrowser で取得した HtmlDocument を編集して submit する</title><link>http://blogs.wankuma.com/naoko/archive/2007/11/14/108361.aspx</link><pubDate>Wed, 14 Nov 2007 22:26:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/11/14/108361.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/108361.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/11/14/108361.aspx#Feedback</comments><slash:comments>49</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/108361.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/108361.aspx</trackback:ping><description>&lt;p&gt;
以下のような asp があった時に、通常のオペレーションでは Option1 ～ Option4 の値が選択されてサーバー側へ送信されますが、&lt;br&gt;
&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;
Dim message
If (Request.Form(&lt;span class="str"&gt;"requestTest_postback"&lt;/span&gt;) &amp;lt;&amp;gt; &lt;span class="str"&gt;""&lt;/span&gt;) Then
    message = &lt;span class="str"&gt;"選択された値:"&lt;/span&gt; &amp;amp; Request.Form(&lt;span class="str"&gt;"test"&lt;/span&gt;) &amp;amp; &lt;span class="str"&gt;"&amp;lt;br&amp;gt;"&lt;/span&gt;
End If
&lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;test&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;head&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="requestInput"&lt;/span&gt; &lt;span class="attr"&gt;method&lt;/span&gt;&lt;span class="kwrd"&gt;="post"&lt;/span&gt; &lt;span class="attr"&gt;action&lt;/span&gt;&lt;span class="kwrd"&gt;="requestTest.asp"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="asp"&gt;&amp;lt;%&lt;/span&gt;=message &lt;span class="asp"&gt;%&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="test"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="opt1"&lt;/span&gt; &lt;span class="attr"&gt;selected&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Option1
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="opt2"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Option2
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="opt3"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Option3
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="opt4"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Option4
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="submit"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;="hidden"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="requestTest_postback"&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;="true"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;form&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;body&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;html&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
Select タグの中の Option タグ達にない値をサーバー側に送信したい場合、HTML を改ざんすれば OK なわけですが&lt;br&gt;
WebBrowser の Navigate を呼んだ後に WebBrowserオブジェクト.Document を改ざんする事でも同様の事ができます。&lt;br&gt;
&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; Form1
    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; btnNavigate_Click(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; System.&lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; System.EventArgs) &lt;span class="kwrd"&gt;Handles&lt;/span&gt; btnNavigate.Click
        &lt;span class="kwrd"&gt;Me&lt;/span&gt;.WebBrowser1.Navigate(&lt;span class="kwrd"&gt;Me&lt;/span&gt;.TextBox1.Text)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
&lt;br&gt;
    &lt;span class="kwrd"&gt;Private&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; btnSubmit_Click(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; sender &lt;span class="kwrd"&gt;As&lt;/span&gt; System.&lt;span class="kwrd"&gt;Object&lt;/span&gt;, &lt;span class="kwrd"&gt;ByVal&lt;/span&gt; e &lt;span class="kwrd"&gt;As&lt;/span&gt; System.EventArgs) &lt;span class="kwrd"&gt;Handles&lt;/span&gt; btnSubmit.Click
        &lt;span class="kwrd"&gt;If&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.WebBrowser1.Document &lt;span class="kwrd"&gt;Is&lt;/span&gt; &lt;span class="kwrd"&gt;Nothing&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt; &lt;span class="kwrd"&gt;Return&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; selects &lt;span class="kwrd"&gt;As&lt;/span&gt; HtmlElementCollection = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.WebBrowser1.Document.GetElementsByTagName(&lt;span class="str"&gt;"select"&lt;/span&gt;)
        &lt;span class="kwrd"&gt;For&lt;/span&gt; &lt;span class="kwrd"&gt;Each&lt;/span&gt; selectTag &lt;span class="kwrd"&gt;As&lt;/span&gt; HtmlElement &lt;span class="kwrd"&gt;In&lt;/span&gt; selects
            &lt;span class="kwrd"&gt;If&lt;/span&gt; selectTag.GetAttribute(&lt;span class="str"&gt;"name"&lt;/span&gt;) = &lt;span class="str"&gt;"test"&lt;/span&gt; &lt;span class="kwrd"&gt;Then&lt;/span&gt;
                &lt;span class="rem"&gt;' select タグ かつ name 属性が test の時に option を無理やり追加してそれを選択させる&lt;/span&gt;
                &lt;span class="kwrd"&gt;Dim&lt;/span&gt; fuji &lt;span class="kwrd"&gt;As&lt;/span&gt; HtmlElement = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.WebBrowser1.Document.CreateElement(&lt;span class="str"&gt;"option"&lt;/span&gt;)
                fuji.SetAttribute(&lt;span class="str"&gt;"value"&lt;/span&gt;, &lt;span class="str"&gt;"ふじこ"&lt;/span&gt;)
                selectTag.AppendChild(fuji)
                &lt;span class="kwrd"&gt;Dim&lt;/span&gt; len &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="kwrd"&gt;CInt&lt;/span&gt;(selectTag.GetAttribute(&lt;span class="str"&gt;"length"&lt;/span&gt;))
                selectTag.SetAttribute(&lt;span class="str"&gt;"selectedIndex"&lt;/span&gt;, (len - 1).ToString())
                &lt;span class="kwrd"&gt;Exit&lt;/span&gt; &lt;span class="kwrd"&gt;For&lt;/span&gt;
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;If&lt;/span&gt;
        &lt;span class="kwrd"&gt;Next&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; formElement &lt;span class="kwrd"&gt;As&lt;/span&gt; HtmlElement = &lt;span class="kwrd"&gt;Me&lt;/span&gt;.WebBrowser1.Document.Forms(0)
        formElement.InvokeMember(&lt;span class="str"&gt;"submit"&lt;/span&gt;)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;
&lt;/pre&gt;
&lt;p&gt;
お仕事用です。&lt;br&gt;
&lt;a href="http://naoko.wankuma.com/tips/zip/EditRequest.zip" target="_blank" title="EditRequest.zip"&gt;EditRequest.zip&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/108361.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>html:checkbox を使う場合は ActionForm を継承したクラスで reset を実装しないとだめらしい</title><link>http://blogs.wankuma.com/naoko/archive/2007/11/09/107439.aspx</link><pubDate>Fri, 09 Nov 2007 23:57:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/11/09/107439.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/107439.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/11/09/107439.aspx#Feedback</comments><slash:comments>40</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/107439.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/107439.aspx</trackback:ping><description>&lt;p&gt;
某社の拡張タグライブラリの checkbox を JSP で使ったら、チェックボックスがまともに動いてくれない。&lt;br&gt;
チェックを外して画面遷移を繰り返すも、チェックが付きっぱなしになって外れない。&lt;br&gt;
気になったのでソースを見てみたら org.apache.struts.taglib.html.CheckboxTag を extends しているだけだった。&lt;br&gt;
なので、通常 html:checkbox と記述するのと同じ事だ。&lt;br&gt;
試しにそのような記述でやってみたけれど、やはり同様な動作をする。（当たり前だけど。。。）&lt;br&gt;
&lt;br&gt;
なんでー？と思って調べたら、ActionForm を継承したクラス内で reset メソッドをオーバーライドして&lt;br&gt;
該当のメンバ変数の値をいじってやらないといけないらしい。&lt;br&gt;
&lt;a href="http://634.ayumu-baby.com/struts/oss_struts_transfer05.html" target="_blank" title="Apache Struts - データの受け渡し(5) チェックボックス(html:checkbox)の利用"&gt;Apache Struts - データの受け渡し(5) チェックボックス(html:checkbox)の利用&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
多分しばらく触らなかったら忘れそうなのでメモ。&lt;br&gt;
実験してみたコードを含む &lt;a href="http://naoko.wankuma.com/tips/zip/struts.CheckBoxTest.zip" target="_blank" title="struts.CheckBoxTest.zip"&gt;eclipse のプロジェクト&lt;/a&gt;。&lt;br&gt;
JDK 1.4.2_15&lt;br&gt;
Struts 1.2.7&lt;br&gt;
Tomcat 5.0.28&lt;br&gt;
&lt;br&gt;
あー基本的な事がいろいろ解らなくて嫌になるなぁ。頑張らなきゃ。&lt;br&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/107439.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>XA Specification</title><link>http://blogs.wankuma.com/naoko/archive/2007/10/23/103722.aspx</link><pubDate>Tue, 23 Oct 2007 23:29:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/10/23/103722.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/103722.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/10/23/103722.aspx#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/103722.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/103722.aspx</trackback:ping><description>&lt;p&gt;
3 年前に組んだ java アプリのデータアクセス周りは ResourceBandle 使って ドライバ名やら接続文字列やら properties ファイルから引っ張り出して来て&lt;br&gt;
JDBC でゴリゴリと実装していた。&lt;br&gt;
けど、今やってるやつは JNDI を使って lookup して、UserTransaction やら DataSource やらを取得している。&lt;br&gt;
パフォーマンスに問題があるらしいけど、単体開発環境で短期間しか使わないしまぁいいかと思って JOTM を Tomcat にあてた。&lt;br&gt;
&lt;br&gt;
UserTransaction やら DataSource やらを Tomcat 上で使うにはどうしたらいいか調べていた時、JTA やら JTS という単語がちらほら出てくる。&lt;br&gt;
JTA やら JTS は @IT なんかに情報が載ってたんだけど、&lt;br&gt;
JTA やら JTS やら調べていると、今度はやたらと XA 準拠リソースだの、X/Open CAE 仕様だのという単語がでてくる。&lt;br&gt;
XA って一体何？&lt;br&gt;
&lt;br&gt;
検索しました。今の案件は MySQL を使う訳じゃないけど、MySQL のマニュアルがヒットし、&lt;br&gt;
そこから辿っていくと↓の PDF 発見。&lt;br&gt;
&lt;a href="http://www.opengroup.org/public/pubs/catalog/c193.htm" target="_blank" title="Distributed TP: The XA Specification"&gt;Distributed TP: The XA Specification&lt;/a&gt;&lt;br&gt;
にほんごの PDF があればいいのになぁ。。。&lt;br&gt;
&lt;p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/103722.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>JadClipse プラグインは結構いいかも。</title><link>http://blogs.wankuma.com/naoko/archive/2007/10/19/102934.aspx</link><pubDate>Fri, 19 Oct 2007 12:51:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/10/19/102934.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/102934.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/10/19/102934.aspx#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/102934.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/102934.aspx</trackback:ping><description>&lt;p&gt;
むかーし Java 開発をやった時に、jad なる逆コンパイラ、というかまぁ&lt;br&gt;
要は class ファイルから java のソースコードを生成してくれるツールがあったなぁ、、、（拡張子は jad）&lt;br&gt;
と記憶のどこかに残っていたので「今もあるかな」と探してみたら、&lt;br&gt;
健在だったし、eclipse プラグインもありました。&lt;br&gt;
&lt;br&gt;
早速プラグインを当ててデバッグしてみると、いい！&lt;br&gt;
他社が作った詳細不明な jar のなかの実装内容なんかも見れて、いい！&lt;br&gt;
いいんだけど、時々意図しない挙動をするのは仕方ないか。&lt;br&gt;
&lt;br&gt;
自分で jad に path 通してコマンド叩くよりははるかに楽。&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.eclipsewiki.net/eclipse/index.php?JadClipse%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3" target="_blank" title="JadClipse プラグイン"&gt;JadClipse プラグイン&lt;/a&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/102934.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>Java のお仕事色々メモ</title><link>http://blogs.wankuma.com/naoko/archive/2007/10/16/102162.aspx</link><pubDate>Tue, 16 Oct 2007 00:25:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/10/16/102162.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/102162.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/10/16/102162.aspx#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/102162.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/102162.aspx</trackback:ping><description>&lt;p&gt;
えーと。。。もう初心者同然の人間に疑似疑似 WAS っぽい環境を構築しろというミッションが&lt;br&gt;
かなり無理な気がしますが、、、（今回の案件に関係ない部分の環境構築はすっ飛ばした疑似疑似だったとしても、毎日朝から晩まで相当悩んでいるのであった。）&lt;br&gt;
&lt;br&gt;
今日詰まった事等のメモ。&lt;br&gt;
■8080 ポート&lt;br&gt;
Oracle クライアントは今回必要ないので削除して対応。(前の案件で使ってた。面倒なので放置していた。)&lt;br&gt;
&lt;a href="http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=34375&amp;forum=10&amp;start=8&amp;13" target="_blank" title="Tomcatが起動しません。"&gt;Tomcatが起動しません。&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
■JSP の文字化け&lt;br&gt;
最初にここを参照&lt;br&gt;
&lt;a href="http://liffey2.ld.infoseek.co.jp/java/japanese/" target="_blank" title="日本語の文字化け"&gt;日本語の文字化け&lt;/a&gt;&lt;br&gt;
うーむ。ActionServlet は継承して process メソッドでそれなりの処理はやっているし、&lt;br&gt;
各 JSP の先頭にも contentType やら charset やら pageEncoding を指定してる。。。&lt;br&gt;
ちゃんとブラウザ側も Shift-JIS で表示しようとしている。。。&lt;br&gt;
何故だ...&lt;br&gt;
XML の設定内容の問題か？プラグインの設定の問題か？&lt;br&gt;
&lt;a href="http://www.eclipsewiki.net/eclipse/index.php?Tomcat%A5%D7%A5%E9%A5%B0%A5%A4%A5%F3#ua328072" title="Tomcatプラグイン#UnsupportedEncodingException が発生"&gt;Tomcatプラグイン#UnsupportedEncodingException が発生&lt;/a&gt;&lt;br&gt;
という事で、エクリプスwiki にお世話になってみるものの、解決せず。&lt;br&gt;
ビルドパスに通ってるし。&lt;br&gt;
何なんだ今日は。呪われているのか？&lt;br&gt;
&lt;br&gt;
...charset.jar? ひょっとして、この前 JRE のバージョンアップを何も考えずにやって、何も考えずにそいつを慌ててアンインストールしたから&lt;br&gt;
おかしくなったのか？&lt;br&gt;
という事で、j2sdk-1_4_2_15-windows-i586-p.exe を修復インストール。&lt;br&gt;
&lt;br&gt;
依然としてばけばけの文字表示。&lt;br&gt;
ぐあー。今日は文字化けが解消するまでかえらねーぞこるぁ！と気合入れて検索したら、以下のページがヒット。&lt;br&gt;
&lt;a href="http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=25198&amp;forum=12&amp;start=0" target="_blank" title="TomcatでJSPが文字化け"&gt;TomcatでJSPが文字化け&lt;/a&gt;&lt;br&gt;
あ、、、&lt;br&gt;
JSP 全然触ってないからリコンパイルされてないよね？他は色々いじったけど。。。&lt;br&gt;
ファイルの作成日時が、悩み始めた時間なのであった。&lt;br&gt;
JSP の class ファイル消してリコンパイルさせたらあっさりと文字化け解消。&lt;br&gt;
&lt;br&gt;
# 帰宅してオットに一部始終を話したら「ダセー」の一言でした。あぁダサいともさ。&lt;br&gt;
# 大は小を兼ねるんだから、削除しなくてもいいじゃん。だって。あぁあぁそうともさ。&lt;br&gt;
# それに filter 使えばいいじゃんって言われたけど、もうできているもののちょっとした修正のお仕事だからダメなの！＞オット&lt;br&gt;
# filter に関する情報はここ &lt;a href="http://www.atmarkit.co.jp/fjava/javatips/019jspservlet010.html" target="_blank" title="文字コード宣言をフィルタで共有化する"&gt;文字コード宣言をフィルタで共有化する&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
■JDBC には 4 つのタイプがあるらしい。&lt;br&gt;
&lt;a href="http://www.atmarkit.co.jp/fjava/javafaq/jdbc/jdbc02.html" title="JDBCドライバの種類と使い分けを教えてください" target="_blank"&gt;JDBCドライバの種類と使い分けを教えてください&lt;/a&gt;&lt;br&gt;
DB2 の JDBC 周りについて調べていて初めて知った。&lt;br&gt;
ほっほう。と調べていたら、とてもよくまとまっているページがあったのでメモメモ。&lt;br&gt;
&lt;a href="http://wiki.paulownia.jp/java/jdbc" title="ドライバクラス &amp; 接続URL" target="_blank"&gt;ドライバクラス &amp;amp; 接続URL&lt;/a&gt;&lt;br&gt;
&lt;br&gt;
はー。今日も疲れました。&lt;br&gt;
&lt;br&gt;
ちなみに今の環境をぐちゃぐちゃやるのに使ったものたち。のメモ。&lt;br&gt;
OS：Windows XP SP2&lt;br&gt;
j2sdk-1_4_2_15-windows-i586-p.exe&lt;br&gt;
j2sdkee-1_3_1-win.exe&lt;br&gt;
jakarta-tomcat-5.0.28.exe&lt;br&gt;
struts-1.2.7.zip&lt;br&gt;
All-In-One-Eclipse-Setup-3.0.1.exe&lt;br&gt;
tomcatPluginV321.zip&lt;br&gt;
jotm-2.0.10.tgz&lt;br&gt;
carol-2.0.5.tgz&lt;br&gt;
# JOTM の設定方法は &lt;a href="http://homepage2.nifty.com/~inaba/TomcatAndJOTM.html" target="_blank" title="Tomcat5.0.30へのJOTM設定方法解説"&gt;Tomcat5.0.30へのJOTM設定方法解説&lt;/a&gt; を参照しました。&lt;br&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/102162.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>MD5 の実装について調べてみた</title><link>http://blogs.wankuma.com/naoko/archive/2007/09/28/98521.aspx</link><pubDate>Fri, 28 Sep 2007 16:24:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/09/28/98521.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/98521.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/09/28/98521.aspx#Feedback</comments><slash:comments>19</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/98521.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/98521.aspx</trackback:ping><description>&lt;P&gt;なんだかアプリケーションのセキュリティ強化絡みの仕事がまわってきそうなので、&lt;BR&gt;色々勉強しないとなぁと思っています。&lt;BR&gt;&lt;BR&gt;とはいっても &lt;A title=.NETエンタープライズWebアプリケーション開発技術大全〈Vol.4〉セキュアアプリケーション設計編 href="http://www.amazon.co.jp/NET%E3%82%A8%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%97%E3%83%A9%E3%82%A4%E3%82%BAWeb%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E9%96%8B%E7%99%BA%E6%8A%80%E8%A1%93%E5%A4%A7%E5%85%A8%E3%80%88Vol-4%E3%80%89%E3%82%BB%E3%82%AD%E3%83%A5%E3%82%A2%E3%82%A2%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E8%A8%AD%E8%A8%88%E7%B7%A8-%E3%83%9E%E3%82%A4%E3%82%AF%E3%83%AD%E3%82%BD%E3%83%95%E3%83%88%E3%82%B3%E3%83%B3%E3%82%B5%E3%83%AB%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%83%86%E3%82%AF%E3%83%8B%E3%82%AB%E3%83%AB%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA%E2%80%95Microsoft-net/dp/4891004304/ref=sr_1_4/503-6519303-6149551?ie=UTF8&amp;amp;s=books&amp;amp;qid=1190963872&amp;amp;sr=1-4" target=_blank&gt;赤間さんの本&lt;/A&gt; ばかり眺めているとだんだん眠くなってくるので、&lt;BR&gt;前の案件で特定のフィールドを MD5 で暗号化する要件があったのを思い出し、&lt;BR&gt;最初に MD5CryptoServiceProvider を使ってお手軽に暗号化したものの、&lt;BR&gt;&lt;DEL&gt;複合&lt;/DEL&gt;復号化をあーじゃこーじゃやってうまくいかない。うがー。&lt;BR&gt;へんてこな文字列が帰ってきたり、例外吐いたりして&lt;BR&gt;もう嫌じゃーとなってきたので、&lt;A title="MSDN Online = 10 行シリーズ～ 10 行でズバリ !! 暗号化 (VB.NET) ～" href="http://www.microsoft.com/japan/msdn/thisweek/10lines/encrypt_vb.aspx" target=_blank&gt;10 行でズバリ!!&lt;/A&gt; を眺めてました。&lt;BR&gt;そしたら、TripleDESCryptoServiceProvider を使っていたので&lt;BR&gt;マネてそれを使ってうにゃうにゃやって、一応実装できました。&lt;BR&gt;&lt;BR&gt;他言語での MD5 による暗号化/&lt;DEL&gt;複合&lt;/DEL&gt;復号化の実装はどんな感じなのかなぁと思って検索したら&lt;BR&gt;こんなのを見つけました。すごいぞ javascript。ワタシは好きじゃないけど。&lt;BR&gt;&lt;A title="JavaScript MD5" href="http://pajhome.org.uk/crypt/md5/" target=_blank&gt;JavaScript MD5&lt;/A&gt;&lt;BR&gt;&lt;BR&gt;たぶん使わないけど一応自分用メモとしてコード書いておきます。&lt;BR&gt;&lt;BR&gt;# 追記&lt;BR&gt;# なちゃさんと凪瀬さんその他大勢のご指摘により、以下のコードはインチキな事が判明しました。&lt;BR&gt;# もっと精進しないと...&lt;BR&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;PRE class=csharpcode&gt;&lt;SPAN class=kwrd&gt;Public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Class&lt;/SPAN&gt; MD5Test
    &lt;SPAN class=rem&gt;''' &lt;SUMMARY&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' MD5 によるハッシュ化(was 暗号化)←嘘&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;/SUMMARY&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;PARAM name="plainText"&gt;暗号化する文字列&lt;/PARAM&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;PARAM name="pass"&gt;パスワード&lt;/PARAM&gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;Public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Function&lt;/SPAN&gt; Encrypt(&lt;SPAN class=kwrd&gt;ByVal&lt;/SPAN&gt; plainText &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt;, &lt;SPAN class=kwrd&gt;Optional&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;ByVal&lt;/SPAN&gt; pass &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt; = &lt;SPAN class=str&gt;""&lt;/SPAN&gt;) &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; provider &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.TripleDESCryptoServiceProvider = _
        &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.TripleDESCryptoServiceProvider()
        &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; p &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.PasswordDeriveBytes = _
        &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.PasswordDeriveBytes(pass, &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(-1) {})
        &lt;SPAN class=kwrd&gt;With&lt;/SPAN&gt; provider
            .IV = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(7) {}
            .Key = p.CryptDeriveKey(&lt;SPAN class=str&gt;"RC2"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"MD5"&lt;/SPAN&gt;, 128, &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(7) {})
        &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;With&lt;/SPAN&gt;
        Using memStream &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.IO.MemoryStream = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.IO.MemoryStream(plainText.Length * 2)
            Using ctream &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.CryptoStream = _
                            &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.CryptoStream(memStream, _
                            provider.CreateEncryptor(), _
                            Security.Cryptography.CryptoStreamMode.Write)
                &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; plainBytes &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;() = System.Text.Encoding.&lt;SPAN class=kwrd&gt;Default&lt;/SPAN&gt;.GetBytes(plainText)
                ctream.Write(plainBytes, 0, plainBytes.Length)
                ctream.FlushFinalBlock()
&lt;BR&gt;
                &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; encryptedBytes &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;() = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(&lt;SPAN class=kwrd&gt;CInt&lt;/SPAN&gt;(memStream.Length) - 1) {}
                memStream.Position = 0
                memStream.Read(encryptedBytes, 0, &lt;SPAN class=kwrd&gt;CInt&lt;/SPAN&gt;(memStream.Length))
                &lt;SPAN class=kwrd&gt;Return&lt;/SPAN&gt; Convert.ToBase64String(encryptedBytes)
            &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; Using
        &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; Using
    &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Function&lt;/SPAN&gt;
&lt;BR&gt;
    &lt;SPAN class=rem&gt;''' &lt;SUMMARY&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' 解読(was 復号化)&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;/SUMMARY&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;PARAM name="base64Text"&gt;MD5によるハッシュ(was 暗号)化されたBase64エンコード文字列←嘘&lt;/PARAM&gt;&lt;/SPAN&gt;
    &lt;SPAN class=rem&gt;''' &lt;PARAM name="pass"&gt;パスワード&lt;/PARAM&gt;&lt;/SPAN&gt;
    &lt;SPAN class=kwrd&gt;Public&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Function&lt;/SPAN&gt; Decrypt(&lt;SPAN class=kwrd&gt;ByVal&lt;/SPAN&gt; base64Text &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt;, &lt;SPAN class=kwrd&gt;Optional&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;ByVal&lt;/SPAN&gt; pass &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt; = &lt;SPAN class=str&gt;""&lt;/SPAN&gt;) &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;String&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; provider &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.TripleDESCryptoServiceProvider = _
        &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.TripleDESCryptoServiceProvider()
        &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; p &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.PasswordDeriveBytes = _
        &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.PasswordDeriveBytes(pass, &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(-1) {})
        &lt;SPAN class=kwrd&gt;With&lt;/SPAN&gt; provider
            .IV = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(7) {}
            .Key = p.CryptDeriveKey(&lt;SPAN class=str&gt;"RC2"&lt;/SPAN&gt;, &lt;SPAN class=str&gt;"MD5"&lt;/SPAN&gt;, 128, &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(7) {})
        &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;With&lt;/SPAN&gt;
        &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; encryptedBytes &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;() = Convert.FromBase64String(base64Text)
&lt;BR&gt;
        Using memStream &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.IO.MemoryStream = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.IO.MemoryStream(base64Text.Length)
            Using ctream &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; System.Security.Cryptography.CryptoStream = _
                            &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; System.Security.Cryptography.CryptoStream(memStream, _
                            provider.CreateDecryptor(), _
                            Security.Cryptography.CryptoStreamMode.Write)
                ctream.Write(encryptedBytes, 0, encryptedBytes.Length)
                ctream.FlushFinalBlock()
&lt;BR&gt;
                &lt;SPAN class=kwrd&gt;Dim&lt;/SPAN&gt; decreptedBytes &lt;SPAN class=kwrd&gt;As&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;() = &lt;SPAN class=kwrd&gt;New&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Byte&lt;/SPAN&gt;(&lt;SPAN class=kwrd&gt;CInt&lt;/SPAN&gt;(memStream.Length) - 1) {}
                memStream.Position = 0
                memStream.Read(decreptedBytes, 0, &lt;SPAN class=kwrd&gt;CInt&lt;/SPAN&gt;(memStream.Length))
                &lt;SPAN class=kwrd&gt;Return&lt;/SPAN&gt; System.Text.Encoding.&lt;SPAN class=kwrd&gt;Default&lt;/SPAN&gt;.GetString(memStream.ToArray())
            &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; Using
        &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; Using
    &lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; &lt;SPAN class=kwrd&gt;Function&lt;/SPAN&gt;
&lt;SPAN class=kwrd&gt;End&lt;/SPAN&gt; Class&lt;/PRE&gt;
&lt;P&gt;&lt;/P&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/98521.aspx" width = "1" height = "1" /&gt;</description></item><item><dc:creator>なおこ(・∀・) &lt;naoko@wankuma.com&gt;</dc:creator><title>CodeDom で遊んでみた。</title><link>http://blogs.wankuma.com/naoko/archive/2007/09/27/98283.aspx</link><pubDate>Thu, 27 Sep 2007 16:33:00 GMT</pubDate><guid>http://blogs.wankuma.com/naoko/archive/2007/09/27/98283.aspx</guid><wfw:comment>http://blogs.wankuma.com/naoko/comments/98283.aspx</wfw:comment><comments>http://blogs.wankuma.com/naoko/archive/2007/09/27/98283.aspx#Feedback</comments><slash:comments>179</slash:comments><wfw:commentRss>http://blogs.wankuma.com/naoko/comments/commentRss/98283.aspx</wfw:commentRss><trackback:ping>http://blogs.wankuma.com/naoko/services/trackbacks/98283.aspx</trackback:ping><description>&lt;p&gt;
ひまひまシリーズその 3。&lt;br&gt;
今更ながら、System.CodeDom 名前空間の下のいくつかのクラスを使って&lt;br&gt;
プログラムを組んでみました。&lt;br&gt;
これ、慣れるまでには何回か組まないとコツがつかめないっぽい。&lt;br&gt;
脳内でジェネレートされるプログラムを組み立てながらやったので（こんなお粗末なプログラムだが...）そのせいかも。&lt;br&gt;
&lt;br&gt;
でも簡単な奴だったら Text ファイルなんかにテンプレート書いておいて&lt;br&gt;
String.Format でやった方が楽かもしれない。&lt;br&gt;
&lt;br&gt;
しかし、System.CodeDom.Compiler.CodeDomProvider に突っ込むオブジェクトの実態によって&lt;br&gt;
C# やら VB やら複数種類のコード出力が可能なのは結構魅力的だと思いました。&lt;br&gt;
&lt;br&gt;
ちょっと疑問な点が。&lt;br&gt;
・コードに出力される Option Strict とかの設定はいったいどのオブジェクトがもっているの？&lt;br&gt;
　Microsoft.VisualBasic.VBCodeProvider が持っててよさそうな感じはするんだけどなぁ。&lt;br&gt;
・Property の Set にパラメータが生成されない。CodeAssignStatement じゃだめなの？&lt;br&gt;
&lt;p&gt;CodeDomTest.vb&lt;/p&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; CodeDomTest
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Generate()
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; compileUnit &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeCompileUnit = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCompileUnit()
&lt;br&gt;
        &lt;span class="rem"&gt;' NameSpace&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; nmspace &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeNamespace = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeNamespace(&lt;span class="str"&gt;"CodeDomTry"&lt;/span&gt;)
        compileUnit.Namespaces.Add(nmspace)
&lt;br&gt;
        &lt;span class="rem"&gt;' Imports&lt;/span&gt;
        nmspace.&lt;span class="kwrd"&gt;Imports&lt;/span&gt;.Add( _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeNamespaceImport(&lt;span class="str"&gt;"System"&lt;/span&gt;))
&lt;br&gt;
        &lt;span class="rem"&gt;' Class&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; cls &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeTypeDeclaration = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeTypeDeclaration(&lt;span class="str"&gt;"CodeDomSample"&lt;/span&gt;)
        nmspace.Types.Add(cls)
        cls.Comments.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはクラスヘッダのコメント"&lt;/span&gt;))
        cls.IsClass = &lt;span class="kwrd"&gt;True&lt;/span&gt;
        &lt;span class="rem"&gt;' Inherits&lt;/span&gt;
        cls.BaseTypes.Add(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;Object&lt;/span&gt;))
        &lt;span class="rem"&gt;' Implements(VB の場合最後に付ける)&lt;/span&gt;
        cls.BaseTypes.Add(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(IDisposable))
&lt;br&gt;
        &lt;span class="rem"&gt;' Constructor&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; constructor &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeConstructor = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeConstructor()
        cls.Members.Add(constructor)
        constructor.Attributes = CodeDom.MemberAttributes.&lt;span class="kwrd"&gt;Public&lt;/span&gt;
        constructor.Comments.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはコンストラクタのコメント"&lt;/span&gt;))
        &lt;span class="rem"&gt;' CodeConstructor の場合、自動で MyBase.New() が付加される。New という名前も勝手に付けてくれる&lt;/span&gt;
        &lt;span class="rem"&gt;'constructor.Statements.Add( _&lt;/span&gt;
        &lt;span class="rem"&gt;'New System.CodeDom.CodeMethodInvokeExpression( _&lt;/span&gt;
        &lt;span class="rem"&gt;'    New System.CodeDom.CodeBaseReferenceExpression(), "New", New System.CodeDom.CodeExpression() {}))&lt;/span&gt;
&lt;br&gt;
        &lt;span class="rem"&gt;' Field&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; field &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMemberField = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMemberField(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;), &lt;span class="str"&gt;"m_propertyTest"&lt;/span&gt;)
        cls.Members.Add(field)
        field.Comments.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはメンバ変数のコメント"&lt;/span&gt;))
&lt;br&gt;
        &lt;span class="rem"&gt;' Property&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; prop &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMemberProperty = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMemberProperty()
        cls.Members.Add(prop)
        prop.Comments.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはプロパティのコメント"&lt;/span&gt;))
        prop.Name = &lt;span class="str"&gt;"PropertyTest"&lt;/span&gt;
        prop.Type = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeTypeReference(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;))
        prop.Attributes = CodeDom.MemberAttributes.&lt;span class="kwrd"&gt;Public&lt;/span&gt;
&lt;br&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; getter &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMethodReturnStatement = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMethodReturnStatement()
        getter.Expression = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeFieldReferenceExpression( _
                                &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeThisReferenceExpression(), field.Name)
        prop.GetStatements.Add(getter)
&lt;br&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; setter &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeAssignStatement = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeAssignStatement()
        setter.Left = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeFieldReferenceExpression( _
                        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeThisReferenceExpression(), field.Name)
        setter.Right = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodePropertySetValueReferenceExpression()
        prop.SetStatements.Add(setter)
&lt;br&gt;
        &lt;span class="rem"&gt;' Method&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; method &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMemberMethod = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMemberMethod()
        cls.Members.Add(method)
        method.Comments.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはメソッドヘッダのコメント"&lt;/span&gt;))
        method.Name = &lt;span class="str"&gt;"TestMethod"&lt;/span&gt;
        method.ReturnType = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeTypeReference(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;))
        method.Attributes = CodeDom.MemberAttributes.&lt;span class="kwrd"&gt;Public&lt;/span&gt;
&lt;br&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; methodParameter &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeParameterDeclarationExpression = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeParameterDeclarationExpression(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;Date&lt;/span&gt;), &lt;span class="str"&gt;"value"&lt;/span&gt;)
        method.Parameters.Add(methodParameter)
&lt;br&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; methodComment &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeCommentStatement = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"これはメソッド内のコメントです"&lt;/span&gt;)
        method.Statements.Add(methodComment)
&lt;br&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; methodResultStatement &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMethodReturnStatement = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMethodReturnStatement( _
            &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMethodInvokeExpression( _
                &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeTypeReferenceExpression(methodParameter.Name), _
                    &lt;span class="str"&gt;"ToString"&lt;/span&gt;, &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodePrimitiveExpression(&lt;span class="str"&gt;"yyyy/MM/dd HH:mm:ss"&lt;/span&gt;)))
        method.Statements.Add(methodResultStatement)
&lt;br&gt;
        &lt;span class="rem"&gt;' Implementation Method&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; methodImple &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMemberMethod = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMemberMethod()
        cls.Members.Add(methodImple)
        methodImple.Name = &lt;span class="str"&gt;"Dispose"&lt;/span&gt;
        methodImple.Attributes = CodeDom.MemberAttributes.&lt;span class="kwrd"&gt;Public&lt;/span&gt;
        methodImple.ImplementationTypes.Add(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(IDisposable))
        methodImple.Statements.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeCommentStatement(&lt;span class="str"&gt;"TODO:実装してください"&lt;/span&gt;))
&lt;br&gt;
        &lt;span class="rem"&gt;' Override Method&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; methodoverride &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.CodeMemberMethod = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMemberMethod()
        cls.Members.Add(methodoverride)
        methodoverride.Name = &lt;span class="str"&gt;"ToString"&lt;/span&gt;
        methodoverride.ReturnType = &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeTypeReference(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(&lt;span class="kwrd"&gt;String&lt;/span&gt;))
        methodoverride.Attributes = CodeDom.MemberAttributes.&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Or&lt;/span&gt; CodeDom.MemberAttributes.Override
        methodoverride.Statements.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeMethodReturnStatement( _
            &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeFieldReferenceExpression( _
                &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.CodeThisReferenceExpression(), field.Name)))
&lt;br&gt;
        &lt;span class="rem"&gt;' Generate&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; provider &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.Compiler.CodeDomProvider = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; Microsoft.VisualBasic.VBCodeProvider
        &lt;span class="rem"&gt;'New Microsoft.CSharp.CSharpCodeProvider()&lt;/span&gt;
        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; generateOptions &lt;span class="kwrd"&gt;As&lt;/span&gt; System.CodeDom.Compiler.CodeGeneratorOptions = _
        &lt;span class="kwrd"&gt;New&lt;/span&gt; System.CodeDom.Compiler.CodeGeneratorOptions()
        generateOptions.BlankLinesBetweenMembers = &lt;span class="kwrd"&gt;True&lt;/span&gt;
        generateOptions.IndentString = ControlChars.Tab
        generateOptions.VerbatimOrder = &lt;span class="kwrd"&gt;True&lt;/span&gt;
&lt;br&gt;
        provider.GenerateCodeFromCompileUnit(compileUnit, Console.Out, generateOptions)
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
&lt;span class="kwrd"&gt;End Class&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;生成されたコード&lt;/p&gt;
&lt;pre&gt;
&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;
&lt;pre class="csharpcode"&gt;
&lt;span class="rem"&gt;'------------------------------------------------------------------------------&lt;/span&gt;
&lt;span class="rem"&gt;' &amp;lt;auto-generated&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;'     このコードはツールによって生成されました。&lt;/span&gt;
&lt;span class="rem"&gt;'     ランタイム バージョン:2.0.50727.832&lt;/span&gt;
&lt;span class="rem"&gt;'&lt;/span&gt;
&lt;span class="rem"&gt;'     このファイルへの変更は、以下の状況下で不正な動作の原因になったり、&lt;/span&gt;
&lt;span class="rem"&gt;'     コードが再生成されるときに損失したりします。&lt;/span&gt;
&lt;span class="rem"&gt;' &amp;lt;/auto-generated&amp;gt;&lt;/span&gt;
&lt;span class="rem"&gt;'------------------------------------------------------------------------------&lt;/span&gt;
&lt;br&gt;
&lt;span class="kwrd"&gt;Option&lt;/span&gt; Strict Off
&lt;span class="kwrd"&gt;Option&lt;/span&gt; Explicit &lt;span class="kwrd"&gt;On&lt;/span&gt;
&lt;br&gt;
&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System
&lt;br&gt;
&lt;span class="kwrd"&gt;Namespace&lt;/span&gt; CodeDomTry
    &lt;br&gt;
    &lt;span class="rem"&gt;'これはクラスヘッダのコメント&lt;/span&gt;
    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; CodeDomSample
        &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; &lt;span class="kwrd"&gt;Object&lt;/span&gt;
        &lt;span class="kwrd"&gt;Implements&lt;/span&gt; System.IDisposable
        &lt;br&gt;
        &lt;span class="rem"&gt;'これはコンストラクタのコメント&lt;/span&gt;
        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt;()
            &lt;span class="kwrd"&gt;MyBase&lt;/span&gt;.&lt;span class="kwrd"&gt;New&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
        &lt;br&gt;
        &lt;span class="rem"&gt;'これはメンバ変数のコメント&lt;/span&gt;
        &lt;span class="kwrd"&gt;Private&lt;/span&gt; m_propertyTest &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
        &lt;br&gt;
        &lt;span class="rem"&gt;'これはプロパティのコメント&lt;/span&gt;
        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overridable&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; PropertyTest() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
            &lt;span class="kwrd"&gt;Get&lt;/span&gt;
                &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.m_propertyTest
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;
            &lt;span class="kwrd"&gt;Set&lt;/span&gt;
                &lt;span class="kwrd"&gt;Me&lt;/span&gt;.m_propertyTest = value
            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;
        &lt;br&gt;
        &lt;span class="rem"&gt;'これはメソッドヘッダのコメント&lt;/span&gt;
        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overridable&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; TestMethod(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;Date&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
            &lt;span class="rem"&gt;'これはメソッド内のコメントです&lt;/span&gt;
            &lt;span class="kwrd"&gt;Return&lt;/span&gt; value.ToString(&lt;span class="str"&gt;"yyyy/MM/dd HH:mm:ss"&lt;/span&gt;)
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;
        &lt;br&gt;
        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overridable&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt; Dispose() &lt;span class="kwrd"&gt;Implements&lt;/span&gt; System.IDisposable.Dispose
            &lt;span class="rem"&gt;'TODO:実装してください&lt;/span&gt;
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Sub&lt;/span&gt;
        &lt;br&gt;
        &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Overrides&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; ToString() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;
            &lt;span class="kwrd"&gt;Return&lt;/span&gt; &lt;span class="kwrd"&gt;Me&lt;/span&gt;.m_propertyTest
        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;
    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;
&lt;span class="kwrd"&gt;End&lt;/span&gt; Namespace&lt;/pre&gt;
&lt;/p&gt;&lt;img src ="http://blogs.wankuma.com/naoko/aggbug/98283.aspx" width = "1" height = "1" /&gt;</description></item></channel></rss>