2010年11月27日土曜日

星空写真

写真の話です。

この時期になると、茅ヶ崎でも新月の夜には星がよく見えます。
なので、家の前で写真を撮ってみました。
これは EF24-85mmの24mm F3.5 ISO1000 16秒 で撮ってます。
Photoshopでリサイズとアンシャープだけかけてます。

こっちは EF50mm F1.8 ISO400 10秒 で撮ってます。

条件が違うんで直接の比較にはならないですけど、やっぱ短焦点ですね。
星の色とか鮮明さが違います。
でも50mmだと画角が狭い感じです。

なんで、24mm F1.8を注文してみました。
また新月の夜で晴れた日があれば挑戦してみようかな。

最後に、色々補正した結果の写真です。
4枚の写真を合成してるんですが、成功はしてない感じです。

2010年4月18日日曜日

[C#] SharpSVNを使ってSubversionを操作してみる

SharpSVNはSubvertionの.Net用クライアントライブラリ。 それを使って、ローカルのファイルを更新する処理のメモです。 ざっくりコードを乗せてみます。
using (SvnClient client = new SvnClient())
{

    //サーバー上のリポジトリ位置の設定
    SvnUriTarget repos = new SvnUriTarget(new Uri("file:///C:/svn_repository/SvnTest/"));
    //クライアントのファイル位置を設定
    SvnPathTarget local = new SvnPathTarget(@"C:\source\subvertionTest");

    //両方の情報を取得
    SvnInfoEventArgs serverInfo;
    SvnInfoEventArgs clientInfo;
    client.GetInfo(repos, out serverInfo);
    client.GetInfo(local, out clientInfo);

    //リビジョンを比較
    if (serverInfo.Revision != clientInfo.Revision)
    {
        SvnUpdateResult ret;
        //クライアントのファイルを最新に更新
        client.Update(@"C:\source\subvertionTest", out ret);
    }

    //ファイルの一覧取得用引数の指定
    SvnListArgs args = new SvnListArgs();
    //リビジョンを指定
    args.Revision = 2;
    //処理結果格納変数を定義
    System.Collections.ObjectModel.Collection list;
    //一覧の取得を実行
    client.GetList(repos, out list);

    //処理結果の表示
    foreach (var i in list)
    {
        switch (i.Entry.NodeKind)
        {
            case SvnNodeKind.Directory:
                Console.WriteLine("Directory:{0}",i.EntryUri.LocalPath);
                break;
            case SvnNodeKind.File:
                Console.WriteLine("File:{0}",i.EntryUri.LocalPath);
                break;
        }
    }
}

2010年3月30日火曜日

[WCF](暫定)WCFでSoapとRestを共通で

はじめてのWCFです。

ホントはRestとNamedPipeをやりたかったけど、IIS7.0がいるって事らしいのであきらめました。
なんで、SoapとRestの共通化(?)する方法。

まず、適当なWcfサービスを作って、「System.ServiceMode.Web」を参照設定する。
InterfaceにUsing System.ServiceMode.Web; なんて書いてGetMessageなんてメソッドを作る。
この時、Attributeに「WebGet」をつける。

[WebGet(UriTemplate = "GetMessage/{key}/")]
[OperationContract]
string GetMessage(string key);
実処理も適当に実装。
public string GetMessage(string key)
{
    return "IService1.GetMessage + " + key;
}
以上で、Wcfサービスのコーディングは完了。 後はWeb.Configの設定。 system.serviceModelの中を色々と変更。 まず、behaviorsを書く。

  
    
      
    
  
  
    
    
    
      
    
  

次にservices.serviceにendPointを書く。

  
    
    
    
  


addressのあたりをユニークに設定するとうまくいくらしい。

で、これを使うWebサイトを作って、Web参照すると普通にSoapで使える。
ブラウザから「http://localhost:8080/Service1.svc/Rest/GetMessage/TestMessage/」なんて打てば、
IService1.GetMessage + TestMessage
こんなレスポンスがもらえると。

2010年1月31日日曜日

[C#] List.ConvertAll

C# 3.0以上で出来ます。(VBでも出来るはず)

Listの値をCSV文字列に変換出来ます。

//Listをカンマ区切りの文字列に変換する
List lst = new List { 1, 3, 5, 7 };

string csv =
string.Join(",", lst.ConvertAll(
delegate(int value) { return value.ToString(); }).ToArray());


//カンマ区切りの文字列をListに変換する
lst = csv.Split(',').ToList().ConvertAll(
delegate(string value) { return int.Parse(value); });



1行で書くことが良いかは別として出来るんですね。
# 勝手にHTMLタグが書き込まれて消せない。。。