2008年11月30日日曜日

Silverlight+LINQでトランプ

岩永さんの「C#で大富豪」からパクったインスパイヤされた。



このコンテンツの再生にはSilverlight2が必要です。下の画像をクリックしてください。
Microsoft Silverlight を取得



ソースコードはここ。

練習を兼ねて、ListBoxにバインドしてみた。
Page.xamlはこう。

<UserControl x:Class="Millionaire.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:my="clr-namespace:Millionaire"
Width="108" Height="412"
Loaded="UserControl_Loaded">
<UserControl.Resources>
<my:CardImageConverter x:Key="cardImageConverter" />
<Style x:Key="CardPreview" TargetType="Image">
<Setter Property="Margin" Value="1,1,1,1"/>
<Setter Property="Width" Value="43"/>
<Setter Property="Height" Value="60"/>
</Style>
</UserControl.Resources>
<Grid x:Name="LayoutRoot" Background="White">
<Grid.RowDefinitions>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="55"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<ListBox x:Name="CardList" Background="LightGray"
Grid.Row="0" Grid.Column="0">
<ListBox.ItemTemplate>
<DataTemplate>
<Image
Source
="{Binding Converter={StaticResource cardImageConverter}}"
Style
="{StaticResource CardPreview}" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Button x:Name="ShuffleButton" Grid.Row="0" Grid.Column="1"
Content="Shuffle" Click="ShuffleButton_Click" />
</Grid>
</UserControl>



型コンバーターはこう。

using System;
using System.Globalization;
using System.Windows.Data;
using System.Windows.Media;
using System.Windows.Media.Imaging;

namespace Millionaire
{
public class CardImageConverter : IValueConverter
{
public object Convert(object value, Type targetType,
object parameter, CultureInfo culture)
{
if (targetType != typeof(ImageSource))
return null;
Card c = value as Card;
if (c == null)
return null;
string name = (c.Suit == Suit.Joker)
? "joker"
: string.Format("{0}{1:00}", "cdhs"[(int)c.Suit], c.Number);
return new BitmapImage(
new Uri(string.Format("Images/{0}.png", name),
UriKind.Relative));
}

public object ConvertBack(object value, Type targetType,
object parameter, CultureInfo culture)
{
return null;
}
}
}



あとはバインドするだけ。

private void Shuffle()
{
Random random = new Random();
IEnumerable<Card> cards = Enumerable.Range(0, 53)
.OrderBy(x => random.Next())
.Select(x => new Card(x))
.Take(6)
.OrderBy(x => x.Rank)
.ThenBy(x => x.Suit);
CardList.ItemsSource = cards;
}

やってみて思ったけど、ListBoxそのままだと縦長だし複数選択はできないし、こりゃないわー。

2008年11月23日日曜日

Fleverlight勉強会 vol.2 行ってきた

はてなダイアリーへ移動しました

円高だし海外通販で靴買ったまとめ

新しい革靴が欲しいなと思い、円高なので海外通販を利用してみた。
試し履きせずに靴を買うのはリスキーだったが、いいや履いてみて合わなければヤフオクに出そう!と決めてポチっと。

Loakeの靴

使ったのはPediwear。イギリスの靴通販サイトで、日本でも有名だ。
値段は英ポンドで、税込価格と税抜き価格が両方表記されている。日本から買う場合はイギリスの税金はかからないが、その代わり関税がかかる(日本の税関から通知が来る)。1足4000~6000円ぐらいは見込んでおくこと。
また、配送料はPediwearの場合1足あたり18ポンドだ。
今回は2足買って、配送料込みで226.55ポンドだった。11月23日現在の為替レート(Yahoo! ファイナンス調べ)だと、226.55 [GBP] * 143.3 [JPY/GBP] = 32,465円。これに関税がかかる。

今回の購入から受け取りまでのタイムラインを書いておくと……

11/08
オンラインで注文確定。注文内容の確認メールが届く。

11/10
受注処理完了。10~12営業日で届くだろうと書かれたメールが届く。

11/18
発送開始。Parcel Forceの荷物追跡番号が記載されたメールが届く。

11/18
リーズで集荷。

11/19
国際ハブに到着。税関を通過し、国際発送。

11/20
日本に到着。

11/21
日本郵便が東京の自宅に配達。不在。

11/23
再配達。荷物受け取り。


ということで、EMSで速攻届いた。船便かなと思っていたけど違った。

2008年11月19日水曜日

深入り.NETプログラミング

NyaRuRuさんが@ITで連載を始めた。
第1回目は、インライン・メソッド・キャッシュによる動的ディスパッチ高速化
さまざまな文献を参照しながら動的型の実装例を解き明かしていく。

NyaRuRuさんは日本でも3本の指に入る.NET Hackerだと思う。来年もいろいろ書いてほしいものだ。

2008年11月16日日曜日

わんくま勉強会#26 LT大集合に行ってきた

わんくま同盟 東京勉強会 #26に行ってしゃべってきた。
最初はSilverlightの話をしようと思っていたのだが、仕込が間に合わず断念。なので、結局冗談半分で言っていた「解題:私がJavaからC#に乗り換えた10の理由」にした。



このトークでは、「C#はWindowsの現実を踏まえたごった煮言語なんだよ」というのを言いたかったので、それが伝わってれば幸い。ま、今時「C#?Micro$oftの劣化版Javaでしょ?」みたいな、うすらばか認識の人はいないと思うのだが。

ただただしPの感想を読んだ。そうだよなあと思う。
自分も今回わんくま勉強会に初めて参加した。.NET技術者なのでコミュニティ自体はしばらく前から知っていたのだけれど、仲が良すぎるというか、悪く言えば内輪感があると感じていた。そういう所に心理的障壁があって、これまでの勉強会に参加しようとは思わなかった。今回はライトニングトーク大会だったから気軽に参加できたのだ。(念のため。わんくま勉強会が排他的だとかなあなあだとか言ってるわけじゃないのに注意。わんくまは健全なコミュニティだと思っている。)そういう意味では、1000Speakersを意識した、という高萩さんの話(懇親会で聞いたと思った。でも酔ってたから記憶があいまいだ)は納得がいった。(追記:どうも違ったみたいなので取り消し)でも内輪感は一体感と表裏の関係なところもあるんで、悩ましいよなあ。java-jaなんかはその辺どう捉えてるんだろう。

で、それはそれとして、MS技術系のブログやコミュニティがスルーされている現実もある。これはわんくまに限らず。いろいろ要因はありそうだ。
例えば、MS技術の情報はMS自体が大量に発信しているし、しばらく待ってれば日本語に翻訳もされるし、エッジなところはお仕事開発では求められていないしで、やっぱりウケミンなところがある。いきおい、「××を使ってみた」系の情報があふれるので、関心がない人の興味を引かない。zioさんとも話したんだが、「○○を作ってみた」が少ないんだよね。Google CodeやCodeReposやCodePlexを活用しようぜ。(自戒をこめて)
あと、"Micro$oft sucks!"なFOSSの人が多いのかもしれない。でもねえ。みんながみんなSoftware Designばかり読んでるわけじゃないしねえ……ごめん、おもんない冗談。ナンダカンダ言ってもマイクロソフトは死んだみたいだし……
でもデブサミなんかを観てても、Javaピープルと.NETピープルとLLピープルは互いに全然関心がないようだし、MS技術側だけの問題じゃないのかもね。そういった意味でも、SilverlightコミュニティとFlexコミュニティの合同勉強会にはすごく興味がある。
MS系のコミュニティ活動というと、Microsoft MVPアウォードの受賞者を抜きに語れないのだけど、その中にはインターコミュニティな凄い人もいるわけだ。artonさん、Fujiwoさん、TAKESAKOさん、wakatonoさんあたりが思い浮かぶ。そもそも彼らレジェンズの主軸がMS系にとどまるものじゃないのだけど。


話がハッサンしているが、最後に各トークの一行感想をまとめておく。
しっかし、小休憩を挟みながらとはいえ5時間連続とかありえないなー。面白かったんだけど聴くだけでへとへとになったよ。

13:00 ~ 13:50 オレンジタイム



なか

D90で撮った野鳥の話。俺も今年D50を入手したのだが、デジイチって楽しいね。

たっく

Google Mapで紹介するアニメ聖地巡礼。会場「東北は少ないんだね」たっく「かんなぎがあるよ」。

鈴木 宏昌

Windowsフォームの配色の話。スライドの差し替えミスではらはらした。

Kei1

exeファイルのファイルバージョンを取得する手法について。

なか-chan@最愛のiMac

Silverlight2でボタンをカスタマイズ。ボタンのテンプレートがわんくまロゴに。ExpressionBlendでの実演まで盛り込むのは、さすがに5分では厳しい。

ZOETROPE

Silverlight2とRuby。サーバはRoRで、クライアントはXAMLとIronRubyで。

アキラ

FC++ (Functional Programming in C++) の紹介。「非常に直感的なコード」ww

猪股 健太郎

上に書いたとおり。

zio3

以前作ったと言うVSアドイン "Property Matrix"のデモ。ポトペタUI開発に便利な、気が利いているツール。

とっちゃん

インストーラの概説。誰でもわかりやすい説明。


14:00 ~ 14:50 レッドタイム



taka

シガーの概説。我が友達の由井くんとシガーバーに行ったことを思い出した。シガーの喫い方か、シガーの“味”について、もっとたくさん話してほしかったな。

高見知英

コミュニティイベント参加の奨め。そう、ITコミュニティに限らず、いろんなコミュニティがあるよね。

片桐継

観賞魚(アカヒレ)の飼育環境を整える話……から、わんくま温泉イベント?の紹介へ。わんくまの人たちはウケていた。

chY

人文諸科学。固定IDとDBの問題を人文科学の観点から。「パノプティコン」が言えずカミカミだったのはネタ?

やじゅ

OOとは?を北斗の拳で語る。が、語れていない(苦笑)。会場に「おまえはもう死んでいる」を言わせて終了……のはずが10秒以上余ってしまい、若干気まずい(苦笑)。

出水

RSAの話。分かりやすかったが、modのことを知ってる人でないと難しいかな。

takeshik

C# 4.0の動的型について。今日1人目のC# 4.0。

IIJIMAS

C# 4.0の新機能概説。動的型以外も説明。今日2人目のC# 4.0。

こくぶんまさひろ

C#で遊んでみた……というタイトルで音階のC#の説明。その後鍵盤アプリのデモ。ちゃんとMIDIメッセージを投げられる。初音ミクに歌わせていた。

ひよひよ

HDD監視ソフトウェア。Googleのレポートを参照しながら。USBHDDに対応するためにたくさんHDDを買い、合計6TBになったという。


15:00 ~ 15:50 グリーンタイム



あんどちん

キャッシュ(CPUキャッシュとディスクキャッシュ)の話。整合性を保つことの難しさ。だよねえ。

matsuzaki

MSKKの中の人。Tech Fieldersという新しいイベントの紹介。

okamura

結婚にまつわる諸手続き。内容はごくまじめなもの。次回は妊娠・出産にまつわる諸手続きだそうで。おめでとうございます。

yamasa

スマートフォン1台でストリーミング配信するには。qikやkyteといったサービスの紹介。デモあり。感心した!

昇日

リフレクションを使って、アセンブリ(dllやexe)の循環参照を無くした話。DIコンテナも検討したが、今回はリフレクションで実装したとのこと。次はDIの話も聞きたい。

mxb

ASP.NETと標準化。エンタープライズな開発では重要なテーマだ。Javaの人たちもこういうことを考えているはず。

割と普通

.NETとJavaでそれぞれマッシュアップWebアプリを実装してみた話。やっぱりLLの方が楽というオチは笑った。でもJavaではJBoss SeamとEJBとetcみたいな構成だったので、フレームワークを選べばまた違うだろうね。

fnya

派生開発プロセスXDDPの説明。興味深い。

ちゃっぴ

セキュリティ対策、インフラ設定編。たとえば権限を最小限にするなど。ちなみにWindowsのセキュリティモデルは馬鹿にしたもんじゃないよ。

R・田中一郎

WCF(Windows CommunicationFoundation)の概説。WCFはSOA実現のためのフレームワークだとあえて言い切り、直後に「SOAは、そこそこ大げさなアーキテクチャのことです」には笑った。


16:00 ~ 16:50 ブルータイム



初音玲

Oracle EnterpriseManagerでリカバリーする手順。コスプレ(参加者100人超えたらコスプレすると約束してたそうだ)とエンタープライズのミスマッチ感が半端ない。

YukiYukki

もやしもんに学ぶ風邪対策。本人が風邪でダウンしたとのこと。もやしもん読んだことない代役の方の発表。わんくまの人たちはウケていた。

匠 宏治

フリーランスの実際。いろいろ修羅場だった話。面白い。(笑い話として聞いていいんだよね?)

skylab13

天文学について。観測と理論と機器開発の3つがあるという話。

ぶらっく

クラスター(MSCSかな?)を組んでいるサーバーのリブートを制御するプログラムを作った話。こういうインフラ運用系の人たちももっと脚光を浴びてしかるべきなんだ。

SAN_Morishi

クリームについて。普通に生クリームの話。フリーダム!

カドルドエグ

Expression製品を全部使ってWebサイトを作ってみた話。やはりExpressionMediaは不要だったみたいで。

LuXiON

iPhoneアプリケーションを開発するための諸手続き。アメリカの法律的なことも関係するんだな。

凪瀬

JSPでウイルス的自己複製。そんなJSPを仕込めるってことはサーバーがクラックされているということなので、真面目なふりをしたネタだww

mihochannel

オフラインでセキュリティパッチを当てる方法。会場からMBSAの質問が出てたけど、「続きは懇親会で」。しまった懇親会でこの話の続きを聞きそびれた。


17:00 ~ 17:50 ブラックタイム



guicheng

日本の固体ロケット開発の歴史と日産自動車。知らなかったよ。勉強になった。

かずさのすけ

車載動画の奨め。どこかで聞いたことある話だ……と思ったらただのにっきだった。やっぱXactiかな。

まーる

RAIDの概説。RAID0, 1, 5, 1+0を5分で全部説明するのはチャレンジングだ。

++C++; 管理人

C# 4.0のコードをコンパイルして逆コンパイルしてみた。今日3人目のC#4.0。そう、C#はシンタックスシュガーの塊なので、こういうことを知っておく必要があるのだ。

goyoki

開発言語のマネジメント。Cをどう使って安全な開発をするか。MISRA-Cの紹介。勉強になった。

ymon

WPFにはメモリーリークがいろいろあるよという話。むむ……。

長月葵

パース(透視図法)の話……だがスライドに図が載っていなくて苦しい発表だった。

TAKESAKO

BinaryHacks。HTMLとしてもGIFとしてもJSとしても(ELFとしても)動くファイルを作ってみたという、スラドに載せてた話なんだが、聴衆がついていけていない感あり。さりげなく(?)にぽDAN画像が入っていたが聴衆は反応なし。ま、これは仕方ないよな。

花子

OCamlと友達になろう!ということで少し触ってみたよという話。VS2010にはF#が載ってくるので、こういうアクションは大事だと思う。

ぽぴ王子

タイマープログラムを作ってみた話……なんだが機材トラブルなどで無念の時間切れ。画面の横からにゅるっと「あと2分」といった通知が出るところとか、観るべきところは多かったのだけれど。どうも王子はネタ担当みたいな空気があった。わんくまの人たちは大ウケ。

2008年11月13日木曜日

出会えない2人のRelation

IdWhenWhereActionFeelingFriends
少女A部屋鏡に話しかけてる泣きながらNULL
少年B路上ポケットにナイフしのばせて唇かみ締めるいつものいらだちNULL
SELECT * FROM humansystem AS girl, humansystem AS boy
WHERE girl.When = boy.When AND girl.Where = boy.Where
=>0件 RelationshipとRelationは違うよ!ぜんぜん違うよ! えーと、仕事してないときはこういうことばっかり考えています。

2008年11月11日火曜日

抱っこ猫

猫は抱っこされると嫌がるのか、検証。

ネネは抵抗なかった。楽勝。
ネネ抱っこ

ウナも意外とあっさり陥落。
ウナ抱っこ

でも目つきが怪しくなったと思ったら……
ウナ抱っこ2

もがき始めた。
ウナ抱っこ3

2008年11月1日土曜日

LTのネタどうしようかなあ……

こんどわんくま勉強会のLT大会に出ることになっているのですが、まだネタが決まらなくて困っている。
「解題:私がJavaからC#に乗り換えた10の理由」でもやろうかな。尾島さんはベトナムに行ってていないし、勝手にやっても問題なかろう。
でも、いまさらかなあ。いまさらだよね。

猫カテゴリ追加

アクセスアップを狙って、猫カテゴリを作ることにしました。
猫グッズの紹介などもできれば……

Una & Nene

上にいるのがウナ(オス1歳)、下にいるのがネネ(メス6ヶ月)です。よろしくお願いします。