2008年10月10日
#
Lucian Wischik さんが Paul Vick さんの次の人ってことかな~。
Panopticon Central:Please welcome Lucian Wischik!
Lucian Wischik さんのブログはここ
Lucian's VBlog
VBlogってのがおもしろ~♪
Lucian's VBlog:Hello!
2008年10月9日
#
とりこびとDeath☆
ASP.NET 2.0ではデータ層とのやり取りがProvider経由でやれますよ(やったらいいじゃない?)~っていうお話を(今頃)お勉強中。
スタートページはここかな↓
C#の人は→MSDN:ASP.NET 2.0 Provider Model: Introduction to the Provider Model
Visual Basicの人は→MSDN:ASP.NET 2.0 Provider Model: Introduction to the Provider Model
各言語バージョンがあるのがステキ♪
あ、PDFもある~!・・・ってこれはC#だけなの~?
ASP.NET 2.0 Provider Model.pdf
2008年10月3日
#
とりこびとです。
MSDNの「LINQ to XML」のページをみていて記述が増えているのに今気づきましたw
MSDN : Visual Basic における XML IntelliSense
の、「スキーマ ファイルの生成 (スキーマの推論)」の部分。
SP1 より、XML to Schema ウィザードを使用して、1 つ以上の XML ドキュメントから推論される XML スキーマ セットを作成し、プロジェクトに追加できるようになりました。テキスト ファイル形式の XML ドキュメント、HTTP インターネット アドレスからの XML、および XML to Schema ウィザードに入力するか貼り付ける XML を任意に組み合わせて使用できます。XML to Schema ウィザードにアクセスするには、[プロジェクト] メニューの [新しい項目の追加] をクリックし、[データ] と [共通項目] のいずれかのテンプレート グループから XML to Schema テンプレートを追加します。XML スキーマ セットを推論する対象の XML ドキュメント ソースをすべて追加したら、[OK] をクリックして推論されるスキーマ セットを作成します。詳細については、「XML to Schema ウィザード」および「方法 : XML to Schema ウィザードを使用して XML スキーマ セットを作成する」を参照してください。
今まではその下の
Visual Studio XML エディタを使用して XML ファイルから XSD スキーマ セットを推論することもできます。XML エディタを使用して XML スキーマ セットを作成するには、Visual Studio の XML デザイナで XML ファイルを開き、[XML] メニューの [スキーマの作成] をクリックします。作成した XSD スキーマ セットは、1 つ以上の XSD ファイルに保存し、プロジェクトに追加できます。詳細については、「方法 : Visual Basic で XML IntelliSense を有効にする」を参照してください。
の方法を使ってたりした(勉強会のセッションでもお話させていただきました。)のですが、ウィザードベースでできるようになったんですね~。
ちょっと今、画面の絵が取れなくて申し訳ないのですが、「方法 : XML to Schema ウィザードを使用して XML スキーマ セットを作成する」に書かれている手順でできるようです。
XML スキーマ セットを推論するには
- プロジェクトで、[プロジェクト] メニューの [新しい項目の追加] をクリックします。
- [データ] と [共通項目] のいずれかのテンプレート カテゴリから Xml to Schema 項目テンプレートを選択します。
- 推論されるスキーマ セットを格納する 1 つまたは複数の拡張スキーマ定義 (XSD) ファイルの名前を指定し、[追加] をクリックします。
- [XML ドキュメントからの XML スキーマ セットの生成] ウィンドウで、XML スキーマ セットを推論する対象の 1 つ以上の XML ドキュメントを追加します。
- XML ドキュメントが含まれるテキスト ファイルを Windows エクスプローラで追加するには、[ファイルから追加] をクリックします。
- HTTP アドレスから XML ドキュメントを追加するには、[Web から追加] をクリックします。
- XML ドキュメントの内容をウィザードにコピーまたは入力するには、[XML の入力または貼り付け] をクリックします。
- XML スキーマ セットを推論する対象の XML ドキュメント ソースをすべて指定したら、[OK] をクリックして XML スキーマ セットを推論します。プロジェクト フォルダの 1 つ以上の XSD ファイルにスキーマ セットが保存されます (スキーマ内の XML 名前空間ごとに 1 つのファイルが作成されます)。
ネタ元→Leaning Into Windows : What a C# Coder Should Know Before They Write VB - Updated
77個もあるやん!w
どれも参考になりそうなのでメモをかねてリンクです♪
で、面白いのをピックアップ!
1) Get over the respect thing or quit before you start. VB is a great language.
職場で吹き出しそうにwwwwwww
Panopticon Central : All good things...
そっか・・・そうなんですね。
おぎわら@Blog(Hatena編) : [MS]Visual Basicの指導者がMicrosoftの「Oslo」チームに移籍
ううう・・・Paul Vick 氏がOslo言語のいっちゃうっ!
Visual Basic、Paul Vick 氏の隠れファン(隠れる必要はないのですがw)な私にとってはちょっぴり寂しいニュース。
でも、"Oslo" を追いかけようと決めるきっかけになったニュース。
2008年10月1日
#
とりこびとです。おはようございます。
タイトルの通り「ASP.NET Web サイトで、複数のプログラミング言語を使用する」ってことが書いてあるところを発見したのでメモです。
MSDN : ASP.NET Web サイト内の共有コード フォルダ
以下、引用。
App_Code フォルダのプログラミング言語の推定
App_Code フォルダは、格納されているファイルがどのプログラミング言語で記述されているかが明示的にマークされていません。代わりに、ASP.NET は、格納されているファイルに基づいて、App_Code フォルダのために起動するコンパイラを推定します。App_Code フォルダに .vb ファイルが存在する場合、ASP.NET は Visual Basic コンパイラを使用し、また .cs ファイルが存在する場合は C# コンパイラを使用します。
.wsdl ファイルなど、プログラミング言語が判然としないファイルだけが App_Code フォルダに格納されている場合、ASP.NET は、Web アプリケーションの compilation 要素やマシン構成ファイルで設定されている、Web アプリケーションの既定のコンパイラを使用します。
App_Code フォルダでの複数のプログラミング言語
App_Code フォルダのソース コードは単一のアセンブリにコンパイルされるため、App_Code フォルダ内のすべてのファイルは共通のプログラミング言語で記述する必要があります。たとえば、App_Code フォルダには、Visual Basic と C# の両方で記述されたソース コードを格納できません。
ただし、Web アプリケーションは、App_Code フォルダの各サブフォルダを個別にコンパイルが可能な単位として取り扱うように設定できます。そのように設定すると、各サブフォルダには、それぞれ別々のプログラミング言語で記述されたソース コードを格納できます。フォルダの構成を指定するには、Web.config ファイルの compilation 要素で codeSubDirectories 要素を作成し、サブフォルダへの参照を追加します。次の例は、VBCode と CSCode という名前のサブフォルダが、それぞれ別個のアセンブリにコンパイルされるように設定する方法を示しています。 <COMPILATION debug="false">
<CODESUBDIRECTORIES>
<ADD directoryName="VBCode" />
<ADD directoryName="CSCode" />
</CODESUBDIRECTORIES>
</COMPILATION>
VBCode サブフォルダと CSCode サブフォルダへの参照には、サブフォルダに格納されているプログラミング言語に関する情報を含める必要はありません。App_Code フォルダ自体と同様に、ASP.NET は、サブフォルダのファイルに基づいて使用するコンパイラを推定します。
2008年9月30日
#
とりこびとです。好きなものはプリンです。
今週末、まっちゃ139さんと、わんくま同盟の合同勉強会があります、っていうお話です。
http://wankuma.com/seminar/20081004osaka139/Default.aspx
聞いた話によると、お菓子(プリンが好きです)が出るそうです。
お菓子(プリンが好きです)です、お菓子(プリンが好きです)。
ちなみに私は行けるよう全力で調整中です。
目的は、お菓子(プリンが好きです)です。
お菓子(プリンが好きです)が出ると聞いて、行けるよう全力で調整することにしました。(うそはありません。)
お菓子(プリンが好きです)が出るなら行こうかなって方もいらっしゃいますよね、きっと。
懇親会も楽しいそうです。
どんな風に楽しいかは知りませんが、楽しいって書いてあったので書いてみます。
個人的に、パッションって入ってるのが怖かったりしますw
パッションはかなーーーーーーり苦手だと思っていますが、
サ行変格活用以外やっていないのに苦手だと思い込んで避けるのももったいないかなと。
とはいえ、何もしゃべれないアノ人しか思い浮かばないw

元ネタ→今週末の合同勉強会
次はVisual Studio 2010なのですね~。.NET Framework も 4.0 ですか。4.0ってなんだかすごく大きな数字になってきた気がします~。
Visual Studio 2010 and .NET Framework 4.0 Overview
2008年9月29日
#
ASP.NET ルーティング の学習。その1 - ASP.NET ルーティング ってなに?(前編) -
とりこびとです。
今回は、ASP.NET ルーティング ってなに?ってのをもう少し書こうかと思ったのですが・・・どうもそううまくはいかないようですw
ASP.NET ルーティングを使用して何が出来るかについては、前回のエントリでさらっと書きましたが、特定のURLに対して処理をマップできるということでした。
たとえば、"http://torikobito.wankuma.com/foo/"というURL 要求に対し、http://torikobito.wankuma.com/foo/default.aspx ではなく、http://torikobito.wankuma.com/foo.aspx とか、http://torikobito.wankuma.com/bar.aspx というエンドポイントを定義できる、という感じかな?
URLの書き換えと似たような感じですか?URLの書き換えとは違って実際URLを書き換えることはしないようですけども。
文字で書いてもなんだかよく分からなくなったので、とりあえずやってみる方向で!(次回に続くw)
2008年9月26日
#
2008年9月24日
#
2008年9月22日
#
とりこびとです。なんだかバタバタしちゃっててめっきりエントリできなくなっていたわけですが、ここに来て再開を決意しました!!
というわけで第一弾は ASP.NET ネタ。ASP.NET ってほとんどやったこと無いのですけど、ちょっとやる必要が出てきた(というか、やる気をだしたw)のでお勉強をします♪
あくまでお勉強なので間違っちゃってるかもしれません。でも、コメント欄に正しいことを書いて下さるかもしれません。よろしくお願いしますw
さて、ASP.NET 3.5(SP1) になってルーティングの機能が追加されたようですね。
画伯そう面白そうだったのでちょっとお勉強してみることにします♪
このお勉強の入り口はこちらです。
MSDN : ASP.NET インフラストラクチャの概要
で、その中のこれ↓のお勉強ですね。
MSDN : ASP.NET ルーティング
ASP.NET ルーティングを使用すると、Web サイトの特定のファイルにマップする必要のない URL を使用できます。URL
をファイルにマップする必要がないため、ユーザーの操作を表すわかりやすい URL を Web アプリケーションで使用できます。
なるほど~。つまりASP.NET ルーティングってのは・・・
- URLに対応したファイル構成っていう制約を緩和できる。
- URL側はユーザフレンドリなものに出来るかも。
- ファイル側はその配置位置(階層的な)なんか気にしなくてもいい感じ?
なんだか面白そうですね~。
というわけで次回は後編として、もう少し「なに?」ってのを書きます~。
2008年8月21日
#
とりこびとです。こんばんは。
昨日 Twitter 呟いたのをRさんに拾っていただきました。これ↓
拡張メソッドで ref してみる試み
ありがとうございます~♪
Visual Basic の言語仕様を読んでいて、拡張メソッドが拡張するデータ型を参照渡しできそうだったので、C#だとどうなの~?って感じでした。
C#だとコンパイラさんに怒られちゃうんですね、ふむふむ。
で、コメント欄でεπιστημηさんがこんなこと書いてました。
VBのばやい、実体を伴わないInterfaceやMustInherit Classに対してByRefしたらどーなるのでしょうか? > とりこ先生
せんせーちゃうわ!
ぢゃなくて。たぶんこうなるだろうな、と思いつつ、昼間は確認できなかったので、さっき書いてみました。この辺とも絡むっぽいです。
まずは Interface 。
Friend Interface IWankumaDirector
ReadOnly Property Name() As String
End Interface
こんな IWankumaDirector インターフェイスを用意。Name プロパティだけですがw
で、それを実装するクラスを2つ用意してみる。
Friend Class επιστημη : Implements IWankumaDirector
Public ReadOnly Property Name() As String Implements IWankumaDirector.Name
Get
Return "επιστημη"
End Get
End Property
End Class
Friend Class Torikobito : Implements IWankumaDirector
Public ReadOnly Property Name() As String Implements IWankumaDirector.Name
Get
Return "とりこびと"
End Get
End Property
End Class
これで準備はおしまいです。さて、肝心の拡張メソッドを用意。
Friend Module IWankumaDirectorExtentions
<System.Runtime.CompilerServices.Extension()> _
Friend Sub ChangeToTorikobito(ByRef d As IWankumaDirector)
d = New Torikobito
End Sub
End Module
拡張メソッドが拡張するIWankumaDirector型を参照渡し(ByRef)で受け取って、その中身を入れ替えてます。(Torikobito クラスを代入しなおす。)
ではお試し実行!
Friend Module Program
Friend Sub Main()
Dim YokohamaD As IWankumaDirector = New επιστημη
Console.WriteLine("横浜勉強会のディレクターは {0} さんです。", YokohamaD.Name)
YokohamaD.ChangeToTorikobito()
Console.WriteLine("横浜勉強会のディレクターは {0} です。", YokohamaD.Name)
End Sub
End Module
結果は…
横浜勉強会のディレクターはεπιστημηさんです。
横浜勉強会のディレクターはとりこびとです。
うん、入れ替わっちゃいますね。
つぎに MustInherit な Class 。…とにかくだだ~っとコードを。
Friend MustInherit Class WankumaDirector
Friend MustOverride ReadOnly Property Name() As String
End Class
Friend Class επιστημη : Inherits WankumaDirector
Friend Overrides ReadOnly Property Name() As String
Get
Return "επιστημη"
End Get
End Property
End Class
Friend Class Torikobito : Inherits WankumaDirector
Friend Overrides ReadOnly Property Name() As String
Get
Return "とりこびと"
End Get
End Property
End Class
Friend Module WankumaDirectorExtentions
<System.Runtime.CompilerServices.Extension()> _
Friend Sub ChangeToTorikobito(ByRef wankuma As WankumaDirector)
wankuma = New Torikobito
End Sub
End Module
Friend Module Program
Friend Sub Main()
Dim YokohamaD As WankumaDirector = New επιστημη
Console.WriteLine("横浜勉強会のディレクターは{0}さんです。", YokohamaD.Name)
YokohamaD.ChangeToTorikobito()
Console.WriteLine("横浜勉強会のディレクターは{0}です。", YokohamaD.Name)
End Sub
End Module
Interface の場合とほとんどやり方は変わりません。で、実行…。
横浜勉強会のディレクターはεπιστημηさんです。
横浜勉強会のディレクターはとりこびとです。
うん、入れ替わっちゃいますね。
拡張メソッドの機能としてこれはどうなのかなぁと思ったりもしますが、できるできないと、使う使わないとはまた別の話…かなぁと。
# επιστημηさ~ん、エントリの内容合ってますか?(汗
2008年8月14日
#
とりこびとです。
今日は中さんに誕生日会をひらいてもらいました。
9名もの方に集まっていただいてとても楽しい時間を過ごすことができました。
自分のことに人が集まってくれることほど幸せなことはありません。
私は本当に幸せな人間だと思います。
本当にありがとうございました。
言葉にならないほどの感激を抱えての帰路より。
2008年8月11日
#
※ ネタ元もこのエントリも'思索的な'内容です。ご注意ください。
ネタ元は→Panopticon Central : Iterators in Visual Basic
これまたPaulさんが面白いことを書いてますね。
C# のyieldに相当するIteratorの構文とかどう?
ってお話。で、上がっているコードがこれです↓。
Module Module1
Function FromTo(ByVal low As Integer, ByVal high As Integer) As IEnumerable(Of Integer)
Return Iterator
If low <= high Then
Return low
Return Each FromTo(low + 1, high)
End If
End Iterator
End Function
Sub Main()
For Each i In FromTo(1, 5)
Console.WriteLine(i)
Next
End Sub
End Module
えっと…キーワードが…
Each !!?
※ ネタ元もこのエントリも'思索的な'内容です。ご注意ください。
ネタ元は→Panopticon Central : Lambda expression improvements
Paulさんが面白いことを書いてますね。
一つ目は…
なんにも返さないラムダ式もあってもいいんぢゃない?
Sub プロシージャなラムダ式ですね。こんな感じのコードが上がってますね。
Dim x = Sub() Console.WriteLine(10)
二つ目は…
マルチラインでどうよ?
たしかにっ!こんな感じのコードが上がってますね。
Dim y = Function(x)
If x > 0 Then
Return x
Else
Return -x
End If
End Function
面白い…面白いんですけど…
ほんとにそのキーワード使ったりするの?
と思います。
2008年8月10日
#
とりこらぼ。:というわけで、My を拡張するならここを読むべし♪
の元ネタ↓
MSDN : Visual Basic における My 名前空間の拡張
夏休みの読書感想文のネタに読書していましたが、1点忘れないようにメモしときます。
何はともあれ、Myを拡張してみます。拡張はMy.Algorithmとかで、こないだのへっぼこソートをMy名前空間で使えるようにしましょう♪
まずは拡張内容を含むクラスをご用意。MyAlgorithm クラスとしましょう。
Public Class MyAlgorithm
Public Sub MogoMogoSort(ByVal list As IList(Of IComparable))
While Not IsSorted(list)
Shuffle(list)
End While
End Sub
Private Sub Shuffle(ByVal list As IList(Of IComparable))
Dim r = New Random()
For i = 0 To list.Count - 1
Dim value = r.Next(list.Count)
Dim temp = list.Item(i)
list.Item(i) = list.Item(value)
list.Item(value) = temp
Next i
End Sub
Private Function IsSorted(ByVal list As IList(Of IComparable)) As Boolean
If list.Count < 2 Then
Return True
End If
For i = 0 To list.Count - 2
If list.Item(i).CompareTo(list.Item(i + 1)) > 0 Then
Return False
End If
Next i
Return True
End Function
End Class
ま、これの中身はそれほど大切じゃなくってぇ、問題は次のMy名前空間への追加ですね。
この部分↓
メンバを My 名前空間に追加するには、必要に応じてモジュールにプロパティを追加します。My 名前空間に追加されるプロパティごとに、ThreadSafeObjectProvider(Of T) 型のプライベート フィールドを追加します。この型は、カスタム プロパティによって返される型です。このフィールドは、GetInstance メソッドの呼び出しによってプロパティから返されるスレッド セーフなオブジェクト インスタンスの作成に使用されます。その結果、拡張プロパティにアクセスする各スレッドは、返された型の独自のインスタンスを受け取ります。次の例では、SampleExtension 型の SampleExtension というプロパティを My 名前空間に追加します。
My 名前空間へのカスタム オブジェクトの追加
ふむふむ…こういうことかな?
Namespace My
<Global.Microsoft.VisualBasic.HideModuleName()> _
Module MyExtention
Private _myAlgorithmProvider As New ThreadSafeObjectProvider(Of MyAlgorithm)
Friend ReadOnly Property Algorithm() As MyAlgorithm
Get
Return _myAlgorithmProvider.GetInstance()
End Get
End Property
End Module
End Namespace
で、ThreadSafeObjectProvider(Of T) ってなんぞ?
オブジェクトブラウザでも見つからない…。というわけでつづく。