2010年9月27日月曜日

9/25 CLR/H #50 勉強会での LT 資料

正直言うとかなり失敗気味だった今回のLT。
次へつなげるためにもアップしておきます。

ダウンロードはここから(SkyDrive)

2010年9月13日月曜日

9/8 SQLDO ナイトセミナー


 9/8 に SQLDO のナイトセミナーを MS 札幌支店にて行いました。CLR/H に続き SQLDO も夜形式のセミナーということで事前調整などが色々難しかった感じですが、無事開催されて一安心という感じです。上記写真はオープニングロゴなのですが・・・ジニアス作成の SQLDO ロゴが右上に潜んでいるのですが、あまりに色々な意味で危険がいっぱいですのでモザイク処理をかけさせてもらっていますw


 ちなみに今回、ジニアスは何かを送付していました。中身はとりあえず謎ということになっています(?)


そして CLR/H のセミナー案内・・・ですが何かがおかしいw


 ジニアスの SQL Server 2008 のセッションからスタート。今回はおさらいとして SQL Server 2008、そして R2 を開発者向けに色々と話す内容・・・の予定でした。珍しいことにジニアスが時間配分を間違えてしまい、本題であったはずの R2 についてはナシw しかしそれでも Management Studio で地形データ抽出時の挙動や、ポリシー設定、データ圧縮など数多くの話題をデモ交えて行ってくれたあたり流石です。個人的にポリシーベースでの設定共通化や、ユーザー定義データ型、Date 型や Time 型などすぐにでも利用したい機能が多いのが嬉しいですねぇ。できるならすぐにでも SQL Server 2008 R2 に切り替えたいくらいで・・・。


 写真はジニアスと坂井さん。坂井さんは SQL Server のライセンスについて LT、よりは若干多めの内容を話してくれました。仮想化が関係してくると、途端に難解になってしまうライセンス周りをサンプル問題交えて話してくれました。実際に物理コアと仮想コア、そして利用するエディションによって色々と適したライセンスが変わったり、必要となる数が変わったりする難しさが潜んでいますので、このあたりはしっかりと押さえておきたいところ。


 そして最後に代表 tenkiさん のセッション、今回も前回から続いてインデックス周りです。プライマリキーとインデックスについて基本から実例をふまえた話で、「あらためて」という部分と「実は」という部分をうまいこと用意してのセッションでした。プライマリキーの設定については色々とためになったなぁ。

 今回は宣伝があまり行えずに参加者は十数名でしたが、内容は非常に面白い内容になっていたと思います。しかし次回開催予定が・・・10/2・・・早い、早すぎるw

2010年9月7日火曜日

WCF 名前付きパイプでの通信

非常に今さらながら感があるけれど、ようやく最近まっとうにさわり始めたのでメモ。
サービス部の定義としてインターフェースを作成。これはなんであろうと一緒。
Imports System.ServiceModel
<ServiceContract()> _
Public Interface ISampleService
    <OperationContract()> _
    Function GetStatus() As Boolean End Interface
サービスに対しての実体を実装。これもなんであろうと一緒。
Imports System.ServiceModel
Public Class SampleService
    Implements ISampleService
    Public Function GetStatus() As Boolean Implements ISampleService.GetStatus
        Console.WriteLine("Is Called Method [GetStatus]")
        Return True
    End Function
End Class
IISでホストしてもいいんだけど今回はセルフホストさせた。
Private Const PipeNamespace As String = "http://schemas.sample.jp/SampleServices"
Private Const NamedPipeAddress As String = "net.pipe://localhost/SampleService.svc"
Sub Main()
    Dim localServiceAddress As Uri() = {New Uri(NamedPipeAddress)}
    Dim svType As Type = GetType(TaskNotifyService)
    Using taskNotifySv As New ServiceHost(svType, localServiceAddress)
        Dim namedPipe As Binding = New NetNamedPipeBinding(NetNamedPipeSecurityMode.None)
        namedPipe.Namespace = PipeNamespace
        Dim taskNotifyMetadata As New ServiceMetadataBehavior
        taskNotifySv.AddServiceEndpoint(GetType(ITaskNotifyService), namedPipe, String.Empty)
        taskNotifySv.Description.Behaviors.Add(taskNotifyMetadata)
        taskNotifySv.Open()
        Console.ReadLine()
        taskNotifySv.Close()
    End Using End Sub
これで net.pipe://localhost/SampleService.svc というアドレスにて名前付きパイプで通信が可能になるので、あとはクライアント側の実装。
Sub Main()
    Dim namedPipe As Binding = New NetNamedPipeBinding(NetNamedPipeSecurityMode.None)
    Dim localAddress As New EndpointAddress("net.pipe://localhost/SampleService.svc")
    Using cf As New ChannelFactory(Of SampleLibrary.ISampleService)(namedPipe, localAddress)
        cf.Open()
        Dim cProxy As SampleLibrary.ISampleService = cf.CreateChannel
        Console.WriteLine("Called Method : " + cProxy.GetStatus.ToString)
        Console.ReadLine()
        cf.Close()
    End Using End Sub
サービスとインターフェースを実装しているライブラリを参照する必要があるけど、これぐらい手軽にできるのは WCF って便利だねぇ。

2010年9月6日月曜日

Live Sync ( Live Mesh ) でリモート接続

現在ベータ中の Windows Live Essentials 2011 で提供されている Live Sync を利用すると簡単にリモート接続環境が構築できるのでメモ。

Live Sync をインストールすると次の画面が起動できる。

LS1

ここでリモート(R)をクリックするとリモート接続設定の画面へ。

LS2

こんかいのキャプチャではもうリモートを許可した後だけど、実際に許可するのもこの画面から「許可」を選択すればOK程度の楽々もの。

これで設定終わり(w

実際にリモート接続する際は、Live Sync を同じようにインストールするか、または Windows Live Device にアクセスすることで接続対象が表示されるから、そこから接続が可能(要 Windows Live ID)。
ちなみに LiveID 間で関連付けを行っている設定は有効なので、A という LiveID で登録したリモート端末を B という LIveID でログインした状態からでもリモート接続は可能。

ファイアウォールとかその類の設定が不要で非常にお手軽。ただしLiveIDを使うので、基本は個人用途向けだろうな。やろうと思えば業務としてリモートメンテナンス用に使えなくもないだろうけど、ライセンス上どうなのかは未調査。