Hatena::ブログ(Diary)

当面C#と.NETな記録 このページをアンテナに追加 RSSフィード

2007/2/25 (日)

[][] DataGridView + SortableBindingList<T> = 楽  DataGridView + SortableBindingList<T> = 楽を含むブックマーク  DataGridView + SortableBindingList<T> = 楽のブックマークコメント

久しぶりにC#、WinFormの話題。ただいまC#。WPF時代到来ですがWinFormです。

DataGridView にオブジェクトを載せると、列のヘッダをクリックしての自動ソートができなくてがっかりします。これをカイゼン!

VisualStudio2005 は、データベースのフロントエンドのようなアプリをコードを書かずに作れてしまう(無料の Express であっても!)めちゃくちゃスゴイ機能があります。本格的なアプリの礎にも、ちょっとしたツールにも便利に使えます。なにこの IDE の進化っぷりは!

データベースだと列ヘッダをクリックすると▼▲みたいなのが表示されて、列の内容でソートできます。コーディングレスでここまでできます。でも、オブジェクト(というより型ですが)を入れるとコードを書かないとソートできません。データベースは自動なのに、差別です!数行書けばいいだけなんだけど、データベースは書かなくてもいいのにって思うとものっっすごく面倒に感じます(^^;


カスタム データ バインド (第 2 部)

http://www.microsoft.com/japan/msdn/columns/winforms/winforms02182005.aspx

このMSDNの古い記事に、どんな型でもソート可能にする SortableBindingList<T> が載っています!すばらしい!VisualStudio で自動生成される「DataGridView - BindingSource - オブジェクト」の形を「DataGridView - BindingSource - SortableBindingList<T> - オブジェクト」とするだけで、どんな型でも自動ソート対応にしてしまいます。のハズなんですが、実は動きません…。

この記事のサンプルでは、なぜか記事本文に書いてあるいくつかのメソッドの実装が欠けてます。さらに、β時代のコードなのでそのままではビルドできず、直してビルドしてもシリアライズの形式が変わったのか、添付データは読めないのでゲームは遊べませんので、あしからず。

欠けてる部分の実装は http://www.thescripts.com/forum/thread441915.html の #7 で Bart Mermuys さんが投稿しています。ApplySortCore() が改悪されてるのが気になりますが。MSDN記事の肝はここに載っている2クラスなので、これだけ見れば元記事のサンプルは見なくてもOKです。ただし、MSDN記事のサンプルコードについてるEULAは目を通すのを忘れずに。

実際に使うには PropertyComparer<T> がプロパティ値の null を考慮してなかったりするので、もうちょっと堅牢にしたほうがいいですね。SortableBindingList<T> クラスに、以下の2行を加えると便利です。

public SortableBindingList() { }
public SortableBindingList( IList<T> list ) : base( list ) { }

使い方は簡単。例えば File.cs というエンティティクラスを作って DataGridView 型アプリを生成したら、BindingSource fileBindingSource が Form にできます。コンストラクタや Load あたりで this.fileBindingSource.DataSource = sortableBindingList; と入れてやればOKです。ちなみに BindingSource 抜き、つまり「DataGridView - SortableBindingList<T> - オブジェクト」形式でも動きます。このへんはまだよくわかってなかったり(-_-; にわかは語る!


後で読む。ソートとフィルタの話。


コンピュータサイエンスは、間接層を設けることであらゆる問題が解決できるという信念に基づいた学問である。 -- Dennis DeBruler」Kent Beckがファウラーの「リファクタリング」で引用している言葉。この本で一番印象に残っている部分です(リファクタリングに関係ないしw)。この言葉、衝撃的でした。あらゆるというのは大げさだけど、ほぼその通りだし、それまでそういう視点に気づいていなかったし、気づいてなかった自分にも驚いたし。OSは偉大な間接層です。BindingSource や SortableBindingList<T> はカシコイ間接層ですね。

ちなみにこの言葉の言いだしっぺは違うっぽかったり、続きがあったり、むしろ続きを言うための前置きっぽい言葉だったのかもしれません。Wikipediaバトラー・ランプソンの項ではデビッド・ホイーラーの言葉とされています。



今日のびっくりは「生まれ変わりはあるhttp://www.kisc.meiji.ac.jp/~metapsi/psi/7-3.htm

マジっすか!?

トラックバック - http://d.hatena.ne.jp/siokoshou/20070225

2007/2/17 (土)

[] MSDN2検索OpenSearchファイル その2  MSDN2検索OpenSearchファイル その2を含むブックマーク  MSDN2検索OpenSearchファイル その2のブックマークコメント

id:siokoshou:20061122 で作った、IE7とFirefox2の検索ボックスからMSDN2検索する検索プロバイダ。あれの更新のお話。

なにやらOpenSearchでサジェスト機能が使えると聞いたので、さっそく追加。でもFirefoxでのやり方しかわからなかったので、今回はFirefox限定版。IE7に追加しても問題はないけど、サジェスト機能は働きません。

モノは http://siokoshou.googlepages.com/ の一番下のリンクを開いて、ホンワリ光っている右上の検索ボックスをクリックで追加です。

気になる使い心地は?

微妙です…。イマイチです…。候補の語句がMSDN2配下の語句に限定されたりすれば便利なんだろうけど、よく検索される語句が表示されるだけなので、むしろ邪魔かもw

サジェストの追加方法は、<Url type="application/x-suggestions+json" template="http://suggestqueries.google.com/complete/search?output=firefox&client=firefox&qu={searchTerms}" /> ってのを書き加えるだけ。簡単に応用がききます。Yahooもあるけど詳しくは「application/x-suggestions+json」でぐぐるか、http://developer.mozilla.org/ja/docs/Creating_OpenSearch_plugins_for_Firefox とか http://developer.mozilla.org/en/docs/Supporting_search_suggestions_in_search_plugins のあたり。

[] ワードが直った  ワードが直ったを含むブックマーク  ワードが直ったのブックマークコメント

Wordの不具合、直りました。IMEのユーザー辞書が壊れていたようです。

http://support.microsoft.com/kb/822646/JA/ にある、Custom.dicではなく、「C:\Documents and Settings\なんとか\Application Data\Microsoft\IMJP9_0」にある imjp9u.dic のほうが壊れてた。IMEのプロパティでユーザー辞書修復をすると応答が返ってこなくなってた。

で、辞書を新しく作ったらWordがきちんと動くようになりました。Word以外は日本語打ってても何も問題なかったから、ぜんぜん気づかなかった。

しかーし、登録した言葉の数々がああぁぁ (´;ω;`)

トラックバック - http://d.hatena.ne.jp/siokoshou/20070217

2007/2/13 (火)

[] 80コア  80コアを含むブックマーク  80コアのブックマークコメント

Intelが80コアプロセッサをデモ

http://japan.cnet.com/news/ent/story/0,2000056022,20342869,00.htm

まだメモリとの接続方法がないけど、5年以内にリリースするそうだ。そんな状態から5年で出るのかなぁ???

プログラミングはどう対応したらいいんでしょう。今のような、ちまちまと人間がスレッドを分けるのとはまた違う方法がそろそろ欲しいですよね。OSなり、言語なり、どこか間接層が賢く自動的に分割するような。自動で分割させるには、今の逐次処理だと無理だぁねぇ。

大量計算が必要で同じようなたくさんのタスクに分けるのが容易な分野とか、webサーバーで1コネクションをいくつかのcoreで対応するとか、分けやすい分野ではこれからどんどん many core が使われるんでしょうね。

個人が使うデスクトップやノートPCではcoreが多くてもしょうがないと思うんだけど、この先どうなるんでしょうか。80コアでワードしてメールしてって、どうかと思うし。関係ないけどワードが壊れて参ってたり(X_X)


今日も唐突にビックリしたこと。

http://www.microsoft.com/japan/technet/windowsvista/webcasts.mspx

ここの下のほうにある「次世代ネットワークプラットフォーム」っていうWeb Cast。最後のVistaではネットが早くなるっていうデモがすごい。XPでは2分弱かかったファイル転送がVistaでは、あっという間!Compound TCPってやつなのかな?2003にも搭載済み?

↓このへんにちらっと書いてあります。

http://research.microsoft.com/research/pubs/view.aspx?type=Technical%20Report&id=940

あー、でも今書いてて思い出したけど、このごろいろんなところのネット高速化の宣伝を見かけますね!X倍早くなるとか見るけど、あんまり信じてませんでした、きっと本当だったんですね…。おそらく、似たような手法ですよね。違ったらごめんなさい、というか信じてなかったり忘れてたり、いろんな意味でごめんなさい(^^;

トラックバック - http://d.hatena.ne.jp/siokoshou/20070213

2007/2/1 (木)

[] 今年もよろしく!  今年もよろしく!を含むブックマーク  今年もよろしく!のブックマークコメント

2月になってからようやく、今年もよろしく、なんて書いてみたり(^^;

長い間バタバタしてましたが、ようやく落ち着いてきた感じです。

この間、VisualStudio2005のSP1が出たり、Windows VistaとOffice2007が発売になったりいろいろありました。

Vistaは否定的なコメントが多いなって印象です。新しいWindowsが出るたびに否定的な意見が多いですけど、今回は特に多い感じ。要求するハードが厳しいって意見が多いですね。これはつまり、多くの人は現在のハードやOSでだいたい満足してるんだろうな〜と思ってみています。破壊的なイノベーションが登場してWindows支配が崩れる前兆かも?とか思ってますが、どうなんでしょう。今、Googleがコンシューマ向けOSを出したらあっさり世界が変わるかも?

Macが使いやすいUNIXを作れたんだから、使いやすいLinuxってのも夢ではないと思います。あと、豊富なドライバを用意するってのが大きな問題かな。仮にGoogleが新OSを出して大きな話題になって、いったんそっちへ移る大きな流れが世界的にできれば、ドライバの問題なんかあっというまに解決するでしょうね、きっと。そういうブームを引き起こせる可能性がある会社ってのは、やっぱり今はGoogleしかないだろうと。今までたくさんの会社がLinuxを出してるけど、コンシューマ向けではいまいち大きなブームにはなってないし、やっぱりこういうのは運というか、なにかと注目されてる会社じゃなければ引き起こせないムーブメントというか、ブランドというか、なにかありますよね、タイミングとかも含めて。

あと思うのは、90年代はPCもぐんぐん成長してたから、PCにお金を掛けるのが楽しい時期だったけど、今はそうでもないよねってこと。今はむしろ、TV/ビデオ/カメラあたりのデジタル家電が成長著しい感じで、お金掛けるならこっちだよねって感じがしています。Pen4からCore2Duoになるとどのくらい早くなるの?とかよくわからないけど、テレビがフルスペックハイビジョン対応ですって言われると、おおっとか思ってしまうw

PCの「こちら側」の成長はもう十分な感じで、「あちら側」の成長を見てるのが楽しい今日この頃って点もあるのかもしれないなぁ。

なんにしても、Vistaの普及はゆっくりだろうなぁ、きっと。.NETをXPで標準搭載しておいて欲しかったゾと、いまさら愚痴ってみたり。


唐突だけど、ハードディスクより早いテープドライブがあるなんて、ビックリした。

トラックバック - http://d.hatena.ne.jp/siokoshou/20070201
2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 06 | 09 | 11 | 12 |
2007 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 08 | 09 | 10 | 12 |
2009 | 01 | 03 | 04 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 07 |
2011 | 04 | 07 | 10 |
2012 | 04 | 12 |
2013 | 08 |
2014 | 03 | 08 |
2017 | 09 |