2008年9月14日
#
誠に勝手ながら(笑)、ブログを移転しました。
移転先は以下になります。
http://blogs.dandunite.com/sugishita
以前移行したフリーのサーバーより、社内のサーバーに移しました。
2008年4月8日
#
サンプルというか、メモ書きに近いです。
VB9のXMLリテラルを使用して書くとどうなるのかなと思って作ってみました。
(日付に関しては、RFC822形式になっていません。)
データの最新10件を出力しています。
Using db As New TestDataContext()
Dim topics As Table(Of Topics) = db.GetTable(Of Topics)()
Dim rss = <?xml version="1.0"?>
<rss version="2.0">
<channel>
<title>LINQでRSS</title>
<link>http://www.hoge.com/</link>
<description>LINQでテーブルのデータよりRSSを生成するサンプル</description>
<language>ja-JP</language>
<pubDate><%= topics.Max(Function(topic As Topics) topic.CreatedDate).ToUniversalTime() %></pubDate>
</channel>
<items>
<%= (From topic In topics _
Order By topic.CreatedDate Descending _
Select <item>
<title><%= topic.Title %></title>
<link>http://www.hoge.com/topic.aspx?id=<%= topic.Id %></link>
<description><%= topic.Summary %></description>
<pubDate><%= topic.CreatedDate.ToUniversalTime() %></pubDate>
<guid>http://www.hoge.com/topic.aspx?id=<%= topic.Id %></guid>
</item>).Take(10) %>
</items>
</rss>
End Using
一応中でラムダ式なんかも使ってます。
「これぞVB9!」というコードですね。^^
2008年3月28日
#
ひさしぶりの書き込みです。
巷では、ようやくVS2008の発売が開始されたようですが、
既に次期バージョンの情報がちらほらと出てきてるようです。
Paul Vick氏のブログによると、C#3.0で実装されたプロパティの自動インプリメント機能と同等の機能を
次期VBの言語機能として追加予定だとか。
たとえば、C#3.0だと、
public int Hoge() { get; set; }
なんて記述を行うと、自動的にコンパイラがプロパティとしてインプリメントしてくれるってものですが、
これをVB10で、
Public Property Hoge() As Integer
なんて記述できるようにしちゃうようです。
これで、ソースコードがかなりすっきりしそうですね。
また、C#3.0の機能とは違う点として、このプロパティの初期化を行うことも検討しているんだとか。
Public Property Hoge() As Integer = 0
だとか、プロパティの型がクラスだったりしたら、
Public Property Hoge As New HogeInfo()
なんて、書けるそうです。
これからもぼちぼちとVB10の情報が出てきそうで楽しみですね。
2007年8月27日
#
Visual Studio 2008 もベータ2が公開されたということで、次期 Visual Basic 9.0 の新機能をぼちぼちいじっていきたいと思います。
ただし、このエントリは Beta 2 時点のものですので、将来の製品版では仕様が変更される可能性が十分にありますので、あくまでもネタとして・・・。
ということで、初回は、型推測について。
VB9(VS2008)Beta2 では、型の推測機能が備わっています。
従来のコード
Dim testObject As New TestClass()
上記のコードは
Dim testObject As TestClass = New TestClass()
の省略形で、右辺の TestClass 型に定義されたオブジェクト変数に対して、
右辺に記述された TestClass の新規インスタンスが代入されています。
このコードをVB9では以下のように記述することが可能となっています。
Dim testObject = New TestClass()
上記コードでは、従来であれば、Object 型のオブジェクト変数に対して
右辺に記述された TestClass の新規インスタンスが代入されますが、
VB9では振る舞いが違い、コンパイラ(VB のコードパーサー?)が、
右辺の型を推測し、左辺の変数をしかるべき型に定義します。
この例の場合、左辺が返す TestClass 型のインスタンスより、
testObject を TestClass 型で定義します。
では、以下のコードではどうでしょう?
Dim testObject
testObject = New TestClass()
一見すると、初期化式が分割され、2行に渡るように記述し直したように
思えますが、このコードでは最初のステップで Object 型の変数 testObject を
定義し、TestClass の新規インスタンスを代入しており、最初のものとは
まったく振る舞いが違います。
この動作については、値型の変数にも同様に行われるようで、
Dim maybeInteger = 1I --- Integer 型
Dim maybeInteger = 1 \ 2 --- Integer 型
Dim maybeDouble = 1 / 2 --- Double 型
Dim integerValue As Integer = 1
Dim maybeInteger = integerValue --- Integer 型
Dim maybeInteger = ReturnInteger() --- Integer 型
Function ReturnInteger() As Integer
Return 1I
End Function
のように、計算式、メソッド等も戻り値のデータ型を判断し、型を決定づけています。
もちろん、コード記述時のバックエンドコンパイラも同様の型推測を行いますので、
型が推測された変数に対しては、プロパティ等の参照も可能となるため、インテリセンスも
正常に動作します。
タイプ数を減らす点ではこの記述は有効ではあるのだけど、可視性/視認性のあるコードを
書くという点では、コードが複雑化すると間違いなく自分を見失う要因ではあるので、
あまりお勧めはできません。
この型推測について、C# 3.0 では、var キーワードを用いていますが、
VB では通常の変数定義と型推測を行う変数定義に同じ Dim キーワードを用いている点が
混乱の要因となるのかなという気がします。
しかしながら、自分は根っからの VB ユーザーであるということで、個人的には Dim キーワードを
用いた方が VB の言語仕様としてはなぜだかしっくりきてしまうのは私だけ・・・?
VB Team Blog のリンクから辿った先よりダウンロードしたものでインストールしてみたけど、
なぜだか何度やってみてもエラーになる・・・。
以下URLよりダウンロードしたものなら正常にインストールできたので、とりあえずこちらから。
http://msdn2.microsoft.com/en-us/vbasic/bb735936.aspx
同じものだと思うんだけど・・・???。
で、今回はVB6のときにあった、Line, Shapeコントロールが追加になっているみたいです。
VS2008のBeta2では、PrintFormのみインストールされていたけど、RTMでは最新のPower Packsが
提供されるんでしょうかね。
2007年7月2日
#
再受賞しました。
昨年はDNN関連のアクティビティの方が高くて、傍から見るとどちらかというとASP/ASP.NETでは?
といった感じ(自分自身もそう思ってたり)でしたが、まー、DNNはVB製のCMSってことでひとつ・・・。
今後1年は、DLR等VB環境もいろいろ動きが出てきそうなので、言語系のアクティビティを大幅に復活させていきたいなと。
ということで、関係者の皆様、また1年よろしくお願いします。
2007年5月14日
#
本家DotNetNuke.com より、ようやくWikiモジュールが正式版としてリリースされたようです。
とはいえ、KtomicsWWWiki に ASP.NET2.0対応を行ったもののようですから、大半の日本語リソースは、
私のWebサイトで公開しているものでいけるはずです。
また、日本語ページ名の問題も解消していませんので、使用する場合は、ソース版を入手し、
DNN: Ktomics WWWikiモジュールの日本語対応 をご参考に、ソースコードを修正後、
再ビルドしたものをご使用ください。
2007年4月17日
#
久し振りの開催です。
日時:2007年4月25日(水) 19:00~(18:30会場)
場所:マイクロソフト新宿オフィス
http://www.microsoft.com/japan/presspass/MAP/shinjuku.aspx
参加費:無料
参加いただける方は以下URLより参加表明をください。
http://dotnetnuke.jp/tabid/263/forumid/24/threadid/1664/scope/posts/Default.aspx
今回は、Global SummitでShaun Walkerにお会いした話や、
最新版のDotNetNuke 4.5.1などのお話ができればと思っています。
覚え書きみたいなものですが、
DNNで使用できるオープンソースのWikiモジュール、Ktomics WWWikiですが、
日本語のページを使用する場合に、一部エンコードの問題点がありますので、
ソースコードを入手し、WWWikiDB.vb 内の以下の赤字部分を修正し、
ビルドしたアセンブリを再度インストールパッケージに含めてインストールをするとよいでしょう。
Public Shared Function EncodeTitle(ByVal val As String) As String
Dim encoding As New System.Text.ASCIIEncoding
Dim character As Char
Dim returnval As String
Dim encoded As Boolean
For Each character In val.ToCharArray()
Select Case character
Case "+", "=", "~", "#", "%", "&", "*", "\", ":", """", "<", ">", ".", "?", "/", "-"
returnval = returnval + "--" + Convert.ToByte(character).ToString() + "-"
Case Else
returnval = returnval + System.Web.HttpUtility.UrlEncode(character)
End Select
Next
Return returnval
End Function
上記コード、Regexを使用すればもう少しスマートに書けるのに・・・。
ついでに、履歴等の表示で、姓と名の順序が逆なのが気になる方は、
インストールパッケージ内の01.00.04.SqlDataProvider中の各ストアドプロシージャを
編集しましょう。
なお、既に作成済みのWikiコンテンツに関しては、URLエンコーディングされていない状態で
データが格納されてしまっているので、データを修正する必要があります。
2007年3月20日
#
Global Summitにて、Shaunさんにお会いし、書籍をプレゼントしたことは、
以前のブログで書きましたが、本家サイトでニュースとして取り上げていただきました。
http://www.dotnetnuke.com/About/NewsRoom/tabid/703/Default.aspx
その後、Shaunさんよりいただいたメール(内容についてはDNN Nite!あたりで報告します)や、
Leighさんのブログにも書かれているように、
今年12月には世界各国向けのコミュニティツアーを計画しているらしく、
今後コミュニティ向けのプログラムを強化していく模様。
http://www.dotnetnuke.com/Community/BlogsDotNetNuke/tabid/825/EntryID/1367/Default.aspx