2008年11月5日水曜日

SCVMM2008

SCVMM2008がリリースされていたので、インストールしてみました。

一番待ち望んだのが、セルフサービスポータル機能。
#むしろ、それさえあれば十分だったり。

VirtualServer2005からHyper-Vに移行するに当たって一番困ったのが、ユーザが簡単にVMのOnOffができない点でした。
#テスト環境としてVMを利用するので、テスターが必要に応じてVMを起動できないと困る。とか
#ホストのメモリがそれほど多くないので、全部をONにしておくことはできない。とか

実際のインストール作業は至って簡単。ほとんど次へ、次へでOK。
セルフサービスポータルは、IIS7を追加する必要がありましたが、特に問題なし。

ちょっと使ってみて驚いたのが、ブラウザの中でリモート接続ができる点。すげー。
#でも、何かと不便なので結局リモートデスクトップで接続するんですけどね。

2008年10月23日木曜日

Gavotte RAMDisk

メモリが大変安くなったので、4GにしてGavotte RAMDiskを利用してみました。
約700MBのRamDiskが作成されたので、さっそくVisualStudioのソリューションをRamDisk上に配置。

...

あまり速くなりませんね。
計測すると確かに速くなっているのですが、体感できるほどではありませんでした。
期待してただけにちょっとガッカリ。

2008年10月8日水曜日

Delegate

戻り値の型が違うDelegateに代入する方法。

  1. Func<stringint> func = Convert.ToInt32;  
  2.   
  3. Func<stringobject> func2 = Delegate.CreateDelegate(typeof(Func<stringobject>), func.Method) as Func<stringobject>;  



↑の例の場合、戻り値がintのdelegateを戻り値がobjectのdelegateとして使うことができます。

何が便利か?というと、delegateとgenericを使用して、汎用的なコンバーターが作成可能になります。




  1. class MyConverter<T>  
  2. {  
  3.     private static Func<string, T> _func;  
  4.   
  5.     public static T Conv(string input)  
  6.     {  
  7.         return _func(input);  
  8.     }  
  9.   
  10.     static MyConverter()  
  11.     {  
  12.         MethodInfo m = null;  
  13.         Type type = typeof(T);  
  14.         if (type == typeof(int))  
  15.         {  
  16.             Func<stringint> func = Convert.ToInt32;  
  17.             m = func.Method;  
  18.         }  
  19.         else if (type == typeof(DateTime))  
  20.         {  
  21.             Func<string, DateTime> func = Convert.ToDateTime;  
  22.             m = func.Method;  
  23.         }  
  24.         _func = Delegate.CreateDelegate(typeof(Func<string, T>), m) as Func<string, T>;  
  25.     }  
  26. }  



↑のようなクラスを用意して、↓な感じで使用



  1. MyConverter<int>.Conv("123");  


このようなクラスを、Reflectionと組み合わせると結構便利です。

2008年9月19日金曜日

MDBのパフォーマンスチューニング

MDBファイルってパフォーマンスチューニングできるんでしょうか?
ネットワークで使ってて遅いって…。

物理環境をなんとかしたほうがいいような気がします。

2008年9月14日日曜日

広告

AmazonのアフェリエイトとGoogleのAdsenseを貼り付けてみました。
これでまた一歩ブログっぽくなったに違いない(違

2008年9月13日土曜日

やりたいこと

業務が忙しくて気づいたら10日ばかり抜けてました。

最近、以下のことができないかなぁと思っています。
漠然と考えていることから、実現性の高いものまで混ざってますが…

○SQL Server Reporting Serviceの活用。
現在のプロジェクトで使用しているデータストアはすべてSQLServeに保存されています。
うまく、関連付けてReportに出せたら面白そうだなぁと

○SharepointService連携強化
SharepointのWebPartsでRSSリーダーみたいなことや、Subversionのリポジトリブラウザ
みたいなことができたらいいなぁと

○RTFとHTMLの変換
これができると、リッチクライアントアプリが作りやすくなるなぁと

○テストケースの体系だった管理
テストケースの再利用がしたい。

○要件の体系だった管理
テストケースを体系だてて管理するためには必須でしょう。

他にもいろいろ。。。

2008年9月3日水曜日

SQLServerの同居

訳あって、一台のマシンにSQLServer2000と2005を同居させることになりました。

名前付きインスタンスを利用すれば特に問題は発生しないはずと思いながらも、ドキドキしながらインストールを実行。
#ちなみに、SQLServer2000の稼動するWindows2000ServerにSQLServer2005をインストール。

あっけないほど何事もなくインストールが終了しました。
ひと波乱はあると思ったのに…

調子に乗ってSQLServer2008もインストールしようと思ったのですが、OSがシステム要件を満たしてませんでした。

2008年9月1日月曜日

iSCSI

最近、プロジェクトで使用しているサーバがトラブルに見舞われました。
運よく交換用パーツがあったため、数時間で復旧しましたが、そうでなかった場合は、考えるだけでも恐ろしい。
サーバは、共有フォルダ、SharepointService、SQLServer、Subversion、VirtualServerとプロジェクトで使用するほとんどの機能をホストしていました。

というわけで、トラブルに強い開発環境を目指し、いろいろと調べ物をした結果、iSCSIというものに興味を持ちました。

iSCSIとは、TCP/IP接続のSCSIのようなもので、ネットワークの先にあるドライブがローカルドライブとして認識されるらしい。ローカルドライブとして認識されるメリットは次の通り。

  • 通常は他のドライブと同様にアクセスできる。(ダイナミックディスクを使用しソフトウェアレイドも可能)
  • とはいえ、ネットワーク接続なのでサーバが故障した際には、容易に他のマシンにマウントしなおすことが可能。(仮想OSでも可)
  • というわけで、ディスクの安全性を高めつつ、可用性も確保。

欲しい。
http://plusd.itmedia.co.jp/pcuser/articles/0803/03/news009.html

2008年8月26日火曜日

TechEdにいってきます

こちら。
http://www.microsoft.com/japan/teched/2008/default.mspx

2008年8月21日木曜日

VisualStudio2008SP1

Visual Studio 2008 SP1を会社のマシンにもインストールを試みる。
なんと、Cドライブに6.5GBの空容量が必要なのでインストールできません。と言われてしまった。
#ちなみに、Cドライブは30GBで空きは2GBしかありません。

Dドライブには空きが多かったので、片っぱしからDドライブに移動させる。
Cache・Temp・Logと名のつくフォルダはすべて削除。
使用頻度の低いアプリはアンインストール。

なんとか7GBの空きを確保し、インストール実行中。
なんでこんなに容量がいるのか…

2008年8月17日日曜日

C#言語仕様書

VisualStudio2008SP1をインストールしました。
日本語の言語仕様がインストールされていました。びっくり。

C:\Program Files\Microsoft Visual Studio 9.0\VC#\Specifications\1041

2008年8月13日水曜日

Genericに対する勘違い

いきなりですが、↓のようなクラスがあったとします。

  1. class Super  
  2. {  
  3.  public void Write()  
  4.  {  
  5.   Console.WriteLine("Super");  
  6.  }  
  7. }  
  8. class Sub : Super  
  9. {  
  10.  public new void Write()  
  11.  {  
  12.   Console.WriteLine("Sub");  
  13.  }  
  14. }  

で、これらクラスに対し


  1. static void Main(string[] args)  
  2. {  
  3.  new Super().Write();  
  4.  new Sub().Write();  
  5.  ((Super)new Sub()).Write();  
  6.  Hoge(new Sub());  
  7. }  
  8.   
  9. public static void Hoge(Sub t)  
  10. {  
  11.  t.Write();  
  12. }  
  13. public static void Hoge(Super t)  
  14. {  
  15.  t.Write();  
  16. }  

というコードを実行した場合、結果は


Super
Sub
Super
Sub


となります。メソッドのオーバーロードが働いた結果ですね。
ここは、期待通り。で、先ほどのコードの9~16行目を



  1. public static void Hoge<T>(T t) where T : Super  
  2. {  
  3.  t.Write();  
  4. }  


と書き換えた場合、結果は変わらないと思っていました。
しかし、現実は…


Super
Sub
Super
Super


となり



  1. public static void Hoge(Super t)  
  2. {  
  3.  t.Write();  
  4. }  


と書いた場合と同じでした。残念。
うまくないなぁ。

2008年8月11日月曜日

MCPキャンペーン情報

今年も、やってきました。不合格でももう一度受験できるキャンペーンが。
http://enterprise.watch.impress.co.jp/cda/topic/2008/08/11/13616.html

自分自身も、このキャンペーンに何度か救われました。キャンペーン期間中に、また新しい資格取りたいなぁ。

MCPの資格体系が変わってから、新しい資格体系がよくわかっていません。MCSEやMCSDからのアップグレードができればいいんですが。

2008年8月6日水曜日

Bug Shooting

BTS(Bug Tracking System)に直接投稿できる画面キャプチャツール
http://www.bugshooting.com/web/

開発環境では、BTSにGeminiを利用しており、付属のScreenCaptureツールで画面を投稿できたのですが、このソフトウェアはさらに強力です。
Gemini以外にも複数のBTSに対応し、キャプチャした画像の編集機能も便利にできています。個人的には、Delayed Captureが一番のお気に入り。

お勧めです。

2008年8月5日火曜日

CruiseControl.NET

CruiseControl.NETの1.4がリリースされていました。
http://confluence.public.thoughtworks.org/display/CCNET/Welcome+to+CruiseControl.NET

今回のアップデートでの一番のお気に入りは、RSSフィードへの対応です。
というわけで、開発環境をさっそくアップデートしておきました。

SQLServer2008リリース

SQLServer2008がリリースされていました。
http://www.microsoft.com/japan/sqlserver/2008/default.mspx

個人的には2005に比べて、あまり魅力的な新機能がないのです。
気になる点と言えば、↓ExpressEditionはないのでしょうか?
http://www.microsoft.com/japan/sqlserver/2008/prodinfo/features/compare.mspx

2008年7月31日木曜日

ESXi無償公開

http://enterprise.watch.impress.co.jp/cda/software/2008/07/29/13511.html

ということらしい。

で、ダウンロードしてみようと試みたのですが、ダウンロードするために必要な入力項目が多い…

面倒になったのでまたの機会にしよっと。

#追記
ダウンロードして試してみたものの、インストールエラーとなりました。
HW要件を満たしていないのかしら…

2008年7月29日火曜日

SharepointのWiki

Windows Live WriterはSharepoint上のブログに投稿できるのだが、Sharepoint上のWikiを編集できるようにはならないのだろうか…

Wikiを編集できるツールが欲しい今日この頃

2008年7月28日月曜日

Word再入門

「エンジニアのためのWord再入門講座」なる書籍を購入した。

最近は、コード以上にドキュメントを書いているような気がするので、本格的にWordの使い方を勉強しなおした方がいいな。と感じた次第。

役に立つといいな。

2008年7月25日金曜日

Null許可型のデータバインド

前々回のエントリーの続き
結果、データバインドできるようになりました。

  1. customControl11.DataBindings.Add("Number", list, "Id"true);  

第4引数にtrueを渡すだけ。

BindingクラスのFormattingEnabledプロパティーに当たるのですが、FormatStringプロパティーを設定せずとも、うまく行きました。


ちなみに、Binding.FormattingEnabledの説明に



このプロパティを true に設定すると、エラー処理動作も有効になり、BindingComplete イベントが発生します。このイベントのハンドラでは、BindingCompleteEventArgs パラメータの BindingCompleteState プロパティを調べることにより、バインディング処理が成功した場合、エラーが発生した場合、または例外がスローされた場合のそれぞれに応じた操作を実行できます。



とあるので、エラーを勝手にハンドリングしているのかとも思いましたが、BindingCompleteイベントにわたってくるBindingCompleteStateはすべてBindingCompleteState.Successでした。


なんだか不思議ですが、動けばOKかな?

2008年7月24日木曜日

Nullable型とReflection

前回のエントリー「Nullable型のデータバインド」に関連して、ちょっとテスト。
テーマは、Null許可型のプロパティーにリフレクションを使用して、値を操作できるか?

まずは、int?型のプロパティーを持ったクラスを用意。

  1. class Sample  
  2. {  
  3.     private int? id;  
  4.     public int? ID  
  5.     {  
  6.         get { return id; }  
  7.         set { id = value; }  
  8.     }  
  9. }  



リフレクションによるアクセス

  1. static void Main(string[] args)  
  2. {  
  3.     PropertyInfo info = typeof(Sample).GetProperty("ID");  
  4.   
  5.     Sample sample = new Sample();  
  6.     info.SetValue(sample, 1, null);  
  7.     //ID:1  
  8.     Console.WriteLine("ID:{0}", sample.ID);  
  9.   
  10.     info.SetValue(sample, nullnull);  
  11.     //False  
  12.     Console.WriteLine(sample.ID.HasValue);  
  13.   
  14.     //True  
  15.     Console.WriteLine(info.GetValue(sample,null) == null);  
  16.   
  17.     //ID:1  
  18.     sample.ID = 1;  
  19.     Console.WriteLine("ID:{0}", info.GetValue(sample, null));  
  20. }  



拍子抜けするぐらい、予想通りにうまく行きました。これができるのになぜバインディングができない…

2008年7月18日金曜日

Null許可型のDataBindに失敗する

カスタムコントロールに追加したint?型のプロパティと独自クラスに実装されたint?型のプロパティを、Bindしようと試みるのだがうまくいかない。。。

int?型はobjectに代入すると、int型になってしまうのが原因らしい。
InvalidCastExceptionが出てしまいます。

StackTraceを見る限り、Convertクラスが、intをint?にCastしようとして失敗しています。暗黙的に変換できるのに、わざわざConvertクラスを通さなくてもいいのにね。

さて、どうしたら回避できるのか…

2008年7月17日木曜日

Syntax Highlighterを試す(その2)

前々回ためしに使ってみた、C# code formatがいまいち使い勝手が良くなかった(※)ので、別の方法を物色してみました。
※Windows Live WriterからBloggerに投稿する上での話です。

で、Windows Live Writerから使用できる、Syntax Highlighterプラグインを使ってみました。
SyntaxHighlighter for Windows Live Writer
とりあえず見つけた↑の2.0を使用。あとから検索してみると、いろいろ種類があるんですね。

もう一つの問題は、SyntaxHighlighterで使用するJavascriptファイルをブログに配置する方法。これも先人がいて、参考にさせていただきました。
Yan Noteさん
ウィジェットを登録すると何がどうなって色がつくか分かりませんが、とりあえず色が付きました。

でも行番号が表示されない…
ほかのプラグインも試してみるか?

↓テスト
行番号表示

  1. using System;  
  2. using System.Collections;  




行番号を非表示



  1. using System;  
  2. using System.Collections;  




開始行番号に10を指定



  1. using System;  
  2. using System.Collections;  

2008年7月16日水曜日

SyntaxHighlighterを試す

適当ソース

  1. using System;  
  2.   
  3. namespace ConsoleApplication1  
  4. {  
  5.     /// <summary>  
  6.     /// Class1 の概要の説明です。  
  7.     /// </summary>  
  8.     class Class1  
  9.     {  
  10.         /// <summary>  
  11.         /// アプリケーションのメイン エントリ ポイントです。  
  12.         /// </summary>  
  13.         [STAThread]  
  14.         static void Main(string[] args)  
  15.         {  
  16.             Console.WriteLine(Environment.Version);  
  17.         }  
  18.     }  
  19. }  

2008年7月15日火曜日

StreamとStringの変換

いつも調べるのでメモ。でも本当に効率のいい方法かは不明

   1:  // stringをStreamに
   2:  String str = "hoge";
   3:  Stream stream = new MemoryStream(Encoding.Unicode.GetBytes(str));
   4:   
   5:  // Streamをstringに
   6:  string str2 = Encoding.Unicode.GetString(stream.ToArray());


C#コードの色づけに↓使ってみました。
http://manoli.net/csharpformat/

2008年7月14日月曜日

VSS2SVN

VSSからSubversionの移行作業を行いました。
かなり手間取りましたが、まぁなんとか…

(参考にしたサイト)
ひだまりのなか、想ふことさん
http://hidamarinonaka.jugem.cc/?eid=104
http://hidamarinonaka.jugem.cc/?eid=105
参考というかほとんどそのままです。感謝感謝。

ちなみに、Perlは全く知りません。Subversionは使い始めたばかりです。

手順:

vss2svn.plを入手

参考サイトにあるとおり、miau's blog?さんのこちらからvss2svn.plをありがたく拝借。

ActivePerlのインストール

とりあえずPerlをインストールしないことには、はじまらなさそうなので…
使用したのは、ActivePerl 5.10.0.1003のMSI。
デフォルトのまま、インストールして終了。

とりあえず、vss2svn.plを実行

不足モジュールを追加インストールするために、とりあえず実行してみました。
自分の環境で不足していたのは、
JCode.pm
JulianDay.pm
MMagic.pm
ParseDate.pm
Timezone.pm
でした。検索&ダウンロードで、vss2svn.plが動く環境をセットアップ

VSSの設定
参考サイトにあるとおり、
SSDIRの設定
SSJP.DLLのりネーム
を行う。
あと、SS.EXEにパスを通す作業も。

つまづき1
当初は、VSS2005がインストールされた環境で試行錯誤していたのですが、全くうまくいかず、何が原因かもわからずじまい。
お手上げ状態だったので、しかなくHyper-V上にVSS6SP6dの環境をセットアップしました。移行のためだけにVMを使うことになろうとは…。
そして、振り出し(ActivePerlのインストール)に戻る。

つまづき2
VSSからプロジェクト単位でインポートがうまくいきませんでした。
そのため移行対象のプロジェクトがあるVSSから、必要のないプロジェクトをすべて削除するという荒業を使いました。

Subversionのインストール

vss2svn.plを実行すると、svn.exeをパスに追加するように要求されたので、Subversionをインストール。
ローカルに、移行用のリポジトリを作成。
環境変数にAPR_ICONV_PATHを設定。
pre-revprop-change.batを修正。

つまづき3
普段使用しているSubversionは、HTTPS経由でApacheにアクセスし、認証を行っています。しかし、vss2svn.plにて認証をかいくぐる方法がわからず、ローカルに認証不要のリポジトリを作成しました。

vss2svnの実行

あとは、引数を指定して実行するだけです。

--vssproject:vssプロジェクトディレクトリへのフォルダパス。
$/ 以外はうまくいかず。
--svnrepo:SubversionリポジトリへのURL。
https://~へ認証アクセスができず。file:///c:/~になりました。

というわけで、現在実行中です。無事終わってください。
かなり時間がかかるようで、確認は明日になりそう。

7/15追記
残念ながら、日本語コメントが文字化け。てか、本番VSSで試す前にテストしろよ>自分
vss2svn.plの881行目
$comment = Encode::encode('utf8', $comment) if $gCfg{utf8};

$comment = Encode::encode('utf8', decode('sjis',$comment)) if $gCfg{utf8};
とすることで、うまく行きました。

2008年7月11日金曜日

自己紹介っぽいものをしてみる

こういうのは、いちばん最初にやるんだろうね。

身分とか
いわゆる(?)SE。
顧客折衝から、設計、実装、テスト、開発環境のインフラ整備(ハード・ソフトとも)まで、幅広く担当しております。

開発言語とか
C#2.0でWinForm開発がメインです。C#3.0に移りたいが、Windows 2000がMicrosoftのサポート切れになるまでは無理そう…
昔はJava&Linuxだったが、最近はどっぷりMicrosoft系です。

その他関心事
Hyper-Vとか、Subversionとか、BTSとか、いろいろ
開発をいかにスムーズに回すかを心がけ、少しでも楽に開発を進めるために、努力を惜しまない。そんなタイプだと自分では思っています。

2008年7月10日木曜日

Hyper-V

ここ数日、Windows Server 2008上で正式版がリリースされたばかりのHyper-Vをいじっています。

厳密にパフォーマンス比較を行ったわけではないのですが、Virtual Server 2005 SP1よりもサクサク動いている感じがします。ただ、管理用Web画面がないのでチームで使うにはやや不便です。
常にVMをいくつも立ち上げて置くほどサーバの性能は良くないし、VMを起動するためにメンバーがServerにログインするのは管理上よろしくないです。
Vista SP1からは、Hyper-Vを管理できるようですが、開発環境は基本XPだし…

Virtual Machine Manager 2008がリリースされれば解決しそうなので、首を長くして待つことにします。

2008年7月9日水曜日

Windows Live Writer を試す

MicrosoftのLive Space以外でもLive Writerが使えるみたいなので、ためしの投稿です。

LiveWriterは以下から、
http://get.live.com/writer/overview

なお、Google検索ではベータのダウンロードページの方が上位に来てしまいます。しかも、ベータページからは、正式版のページに飛べないし…

2008年7月8日火曜日

とりあえず

初めての投稿