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を使うので、基本は個人用途向けだろうな。やろうと思えば業務としてリモートメンテナンス用に使えなくもないだろうけど、ライセンス上どうなのかは未調査。

2010年8月24日火曜日

CLR/H ナイトセミナー #1 ツール自慢

8/18(水)に行われた CLR/H として初の試みとなるナイトセミナー。参加者は総勢9名。今回は全員が Twitter アカウントを所有しているなど、今までとは色々な意味で異なる集まりとなりました。まずは自己紹介、そしていきなりのおやつタイムですw

※ちなみに今回撮影用のコンデジを忘れていて、撮った写真はおやつとデジタルサイネージなTV画面だけなので割愛ですw

発表者ツール・書籍
@openlibsys さん痛IDE
@mucleus さんckw、nyacus
@kagetiyo さんA5:SQL Mk2、pupSQLite、FreeMind、WinMarge
@naoki0311 さんOffice Web Apps、PowerGUI、Deflaggler、LINQPad、Code Rush
@akai_inu さんTeamViewer、Evernote
@nobuhisa_k さんNotepad++、Editra、Intype、MDIE、Lispworks、SugerSync
@plusism さん標準C#入門、VC#2008逆引きクイックリファレンス、ASP.NET MVC 実践プログラミング、jQueryプログラミング入門、プロフェッショナルマスターVC#2010、エッセンシャルWCF、addgadget.com
@twit_ahfPencil、DB Desinger、MySQL Workbench、SoftEther、UT-VPN、Snarpcrab、Hawkeye
@jsakamoto さんPencil
※私の発表の際のスライド:ここ

全体を通して、皆さんのおすすめ度合がはっきりと感じ取れる面白い集まりになったと思います。こう見ると利用するツールというのは、利用者の性格を表しているのかも・・・。意外だったのが、それほど紹介しようとしたツール類がぶつからなかったこと。そしてエンジニアであればやはりお勧めしたくなるツールは何かかしらある、という事でしょうか。

今まで行ってきたセミナースタイルと異なり今回のようなライトなスタイルも十二分にあり、というか気楽でいいなぁなどと感じたナイトセミナーでした。

2010年8月13日金曜日

Report Viewer 2008 を BootStrapper として配布する際の注意

前回のエントリで Report Viewer コントロールのバージョンアップ自体は特に問題なく行えることが確認できたので、ユーザー先の配布用にインストーラを構築していてしばらく困っていたのでメモ。

色々な手段で(w)Report Viewer 2008 のパッケージを用意し、さて必須パッケージとしてチェックしてビルドすればOK、みたいに思っていたらVS上のダイアログに Report Viewer 2008 が表示されてこなかったのよね。

で、とっちゃんさんの助力のおかげで Report Viewer 2008 の product.xml にてProductCode の記述が誤っているのが発覚。何故かここが、

Microsoft.ReportViewer.8.o

となっているけど、これは Report Viewer 2005 の ProductCode と同一なのでVS上で重複として扱われ、結果必須コンポーネントのダイアログに表示されてこなかったという話で。なので対応としては、上記 ProductCode の値を

Microsoft.ReportViewer.9.o

と書き換えてあげればOK。

2010年8月12日木曜日

Report Viewer コントロールのバージョンアップ

今までは 2005 の Report Viewer コントロールで帳票プレビューとか行っていたんだけど、どうしても pdf で文字化けとか解決してくれない問題が放置されていたので、2008 と 2010 の Report Viewer コントロールを利用してみた。

自分の開発用ライブラリで Report Viewer コントロールをラップするような形にしてあるので、うまくいけば再頒布パッケージの導入のみで済むかな、と思って試してみるとこれが成功。

2008 も 2010 もどちらもロジックはそのままで、参照設定のみの変更でいけたw

ちなみに 2010 を利用する場合でも、旧フォーマット(2008 フォーマットでない)rdlc ファイルをそのまま扱えるので、移行する人は配布の事だけ考えればどうにかなりそうです。

2010年8月6日金曜日

Syetem.ServiceModel 3.0.0.0 が何故か呼び出されてしまう件

講習で教えているのもあり、WCF 4 で作成したサービスを IIS 7.5 にてホスティングしようとしていて四苦八苦したのでメモ。

開発用Webサーバではしっかり動作するのに、IIS に変えてみると

「System.ServiceModel.Activation.HttpHandler 3.0.0.0」

が読み込みに失敗している旨のエラーが出てしまう場合。エラー内容から、どこかの設定にて上記アセンブリを参照しようとしているのは何となくわかるんだけど、それがどこにあるかがわからなかったわけで。

IIS の設定としてハンドラーマッピングとモジュールがあり、そこを変更してもうまくいかないんだよねぇ(まぁ元々方法としてどうよ?だけど)

で検索して色々調べていると、ご飯党(@shusoku)さんという方がそのものズバリな事をつぶやいていました。

sc0000

これに従う形として、サービスプロジェクト側の web.config に手作業で <modules>セクションと <handlers> セクションを <system.webserver> セクションに追加。こんな感じ

<modules>
    <remove name="ServiceModel"/>
    <add name="ServiceModel" type="System.ServiceModel.Activation.ServiceHttpModule, System.ServiceModel.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
</modules>
<handlers>
    <remove name="svc-Integrated" />
    <add name="svc-Integrated" path="*.svc" verb="*" type="System.ServiceModel.Activation.ServiceHttpHandlerFactory, System.ServiceModell.Activation, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" resourceType="Unspecified" requireAccess="None" preCondition="integratedMode" />
</handlers>

どうやら IIS 7.5 をインストした際の初期設定では .NET 4 用の設定があるんだけどうまいこと利用されない、ということらしい。

とりあえずこれでサービスが無事動作するところはOKでした。

2010年7月23日金曜日

Hyper-V on Hyper-V

VonV

「できるかな?」とふと思ったのでチャレンジしてみた阿呆な事。

仮想化環境上に仮想化環境の構築。

全くもって意味はないのだけど、やってみました。今回は Windows Server 2008 R2 with Hyper-V 環境に、Hyper-V Server 2008 R2 を導入。結果はご覧の通り、特に問題なくインストールは行えています。ただ一つ問題があって、ゲスト OS のHyper-V Server 側からはネットワークを認識できていないんだよね。ひょっとしたらゲスト OS として Windows 2008 とか R2 で Hyper-V を構築すると話は変わるのかもしれないけど、そこまではさすがに試していません。

これを踏まえると
「完全に分離した Hyper-V 環境」
を構築したいのであれば・・・と思ったけど、内部ネットワークとして設定すれば普通に同じことができるので本当に意味がなかったw

2010年7月22日木曜日

Essentials 2010 なのに・・・

SCE2010

ちなみにインストールしているのは System Center Essentials 2010 。
アルエー?