2011年11月29日

ToNullable拡張メソッド

   このエントリーをはてなブックマークに追加 Clip to Evernote
var を使いたいための、拡張メソッド。


これを使えば、

int? n = 10;

ではなくて、

var n = 10.ToNullable();

と書けます。

まあ、あくまでもお遊びです。
  

Posted by gushwell at 22:30Comments(0)TrackBack(0)

2011年11月26日

NullableのオブジェクトのGetType()で得られる値は

   このエントリーをはてなブックマークに追加 Clip to Evernote

以下のコードの変数 t って、Nullable<Decimal> の型情報が入るのかと思ったら、
Decimalの型情報が入るんだ。

そういえば前にも同じようなことで悩んだ気がするけど...
まあ、実際はこんなコードが必要になる場面は無いだろうけどね。


  
Posted by gushwell at 11:30Comments(2)TrackBack(0)

2011年11月23日

文字列の配列を指定区切り文字で連結する

   このエントリーをはてなブックマークに追加 Clip to Evernote
以下のような拡張メソッドを定義しておきます。たんにJoinを呼び出しているだけのものです。


文字列の配列に格納されている文字列を、区切り記号を使い連結する拡張メソッドです。
単にJoinメソッドを呼び出しているだけのメソッドですが、インテリセンスの力が働き、
とても使いやすいメソッドに変身します。

このメソッドを使えば、以下のようなコードを書くことができます。


この実行結果は、以下のように表示されます。

123-456-789-abc-def

なお、メソッド名を Joinにしなかったのは、LINQのJoinメソッドと
混同しないようにするためです。

ところで、String.Joinって、.NET Framework4になって、オーバーロードされているメソッドの数が
増えたんですね。

Join(String, IEnumerable<String>)
とか
Join<T>(String, IEnumerable<T>)
とか。

なので、上の拡張メソッドは、以下のように書く事でさらに、汎用性が あがりますね。

このブログにC#のコードを載せたのは、実に、3ヶ月ぶりです。
  
Posted by gushwell at 16:47Comments(0)TrackBack(0)

2011年11月20日

F#:どう書く?org - データの整列(ソート)

   このエントリーをはてなブックマークに追加 Clip to Evernote
どう書くorg?の 「データの整列」をF#で書いてみました。

(x, y) の座標情報を以下の2種類の方法で整列する機能を実現してください。

(x, y) の辞書順(まず x で昇順に整列して、x が同じデータに対して y で昇順に整列する)
(0, 0) からの距離の昇順

データの表現方法はタプルなり構造体/オブジェクトなり各自で適当に選んで下さい。

適当に選んでください、とのことなので、タプルを選択して書いてみました。


sortByLexicalOrder 関数が、辞書順にソートする関数。
sortByDistance関数が、距離の昇順でソートする関数です。
sortByLexicalOrderは、LINQを使ってかいてみました。

C#では引数の型を指定するのは当たり前で、全然苦にならないですが、
F#だと、ものすごく面倒に感じるのはなぜなんでしょうか?
単に、F#に慣れていないせいだとは思いますが。。。

sortByLexicalOrder 関数は、以下のように書く事もできますね。

---------
追記 11/23

sortByLexicalOrdeは、以下のコードでOKでした。


ということは、わざわざ関数にするまでもないってことですね。
  
Posted by gushwell at 19:59Comments(6)TrackBack(0)

2011年11月19日

C#ブログインデックス 更新しました

   このエントリーをはてなブックマークに追加 Clip to Evernote
当ブログのC#に関する記事をインデックス化したページを更新しました。

これで現時点での主要記事はすべて網羅しました。

 Blogインデックス - Gushwell's C# Programming Page

役に立つと思われる(Gushwellがかってに思っている)記事へのリンク集です。
もともと自分の備忘録的な意味合いがあるブログの記事であるため、玉石混交かも
しれませんが、なにかのお役に立てればと思います。
数えていないけど、200くらいの記事にリンクを貼ってると思います。
興味のある方は、どうぞ。
  
Posted by gushwell at 21:27Comments(0)TrackBack(0)

2011年11月16日

MacでDVD-Videoを作成する (Windowsも利用)

   このエントリーをはてなブックマークに追加 Clip to Evernote
家内が、自分で撮影した動画をDVDに焼きたいと言ってきました。
DVD Playerで見られるようにしたいんだそうです。
気楽に「いいよ」なんて答えてしまったのが運の尽き。
やり方がわからずかなり苦労しました。

僕の MacBook Air で簡単にできるだろうなんて思ってたのだけど、
Googleで検索しても、思うようなサイトが見つかりません。

結論は、Macだけで、かつ無料でやるのは無理っぽいということです。

そこで、Windowsならば、付属の Windows DVD メーカー があったよな、
と思い、VirtualBoxで、 Windows7を起動し、 Windows DVD メーカー
を動かしたら、

「このコンピュータにインストールされたビデオカードが、Windows DVDメーカーの
 システム最小構成を満たしていません。」

と出てしまいます。

しかたないので、ThinkPadを使って、やろうかとも思ったのだけれど、
せっかくだから、なんとかメインで利用している MacBookAir を使って
DVDを作成したい。

いろいろと試してみた結果、以下の方法でDVDを作成することができました。
Mac と Windowsの合わせ技なので、あまり一般的なやり方ではないですが、
せっかくなので、ここに備忘として残しておきます。

1. MacのVirtualVoxからWindows7を起動する。

次の2ー5 は多分不要。僕は試行錯誤していたので、この手順を踏みましたが、
いきなり、6 の作業へ進んでも大丈夫だと思われます。
その方が、作業時間が圧倒的に短くなるはずです。
 
2.http://jp.any-video-converter.com/ から
  Any Video Converter をダウンロードし、インストールする。
 
3.Any Video Converterを起動し、撮影した動画を追加する。
 複数あってもOK。僕は、MOVファイルを追加しました。

4.ウインドウの右下のプロパティで、設定を変更。
 動画サイズ、動画ビットレートなどを変更して、できるだけ高画質に
 しました。

5.変換ボタンを押し、MOV ファイルを、mp4に変換。
 

6.http://www.koyotesoft.com/video-software/free-videos-to-dvd.html
  から、Free Videos to DVD をダウンロードし、インストール。

7. Free Videos to DVD を使い、複数の動画ファイルから
 iso Image ファイルを作成します。
 ウィザードに従っていけば、OKです。
 なお、もし、サイズが大きすぎる場合は、動画のクオリティを変更し
 DVDに入るサイズにします。

8. 出来上がった ISO Image ファイルを、Mac側に移動します。 
 Mac 上でWindowsを起動している方は、この方法はご存知だと思います。
 僕の場合は、Mac と VirtualBox上のWindowsの間は
 共有フォルダでファイルのやり取りをしています。

ここからがMac側の作業です。

9. http://burn-osx.sourceforge.net/Pages/English/home.html から
  Burnをダウンロードし、インストールします。

10. Finder で、先ほど作成した、ISOファイルを右クリックし、
 「このアプリケーションで開く」で、Burnを選択します。
  Burnが起動しますので、「ディスク作成」ボタンを押します。

これで、DVD-Video形式のDVDの出来上がりです。
  
Posted by gushwell at 22:30Comments(0)TrackBack(0)

2011年11月13日

パズル Magic Star をC#で解く

   このエントリーをはてなブックマークに追加 Clip to Evernote
WebSite に、
パズル Magic Star を解く
の記事を新たに追加しました。

MagicStar とは、下の図の12 個ある○に 1 から 12 までの数字をひとつずつ入れていき、
直線上の4個の数字の合計が、すべて 26 になるように、数字を配置するというパズルです。

MagicStar01


これを C# で解いています。
Silverlight で作成しているので、実際に動かして答えを見ることができます。
  
Posted by gushwell at 22:26Comments(0)TrackBack(0)