Archive for 5月 2010
WebSharper、Windows SDK for win 7 & .NET 4
1週間ぶりに RSS 消化してたら、MSDN ブログが改修に伴って URL 変わっちゃったようでリンク切れまくりで困る・・・
- WebSharper 2010 Standard is available
- F# でウェブサイト構築!JavaScript も HTML も直接書く必要なし!ですって
- Microsoft Windows SDK for Windows 7 and .NET Framework 4
- 以前のバージョンからの更新は .NET 4 対応だけな感じかな
- Shake – C# Make
- Make も C# の構文で書いちまおうよ
- XML より C# の方が読みやすいんだから
- Software Factories 2010 Released
- Software Factories って今、vsix (Visual Studio 2010 の拡張)で提供されてたのね
- Data Access Practices Using Microsoft .Net: A Nerdly Comparison
- 長くてくじけそうだけど読んどくかなぁ・・・
- Book Folding effect using Pixel Shader
- HLSL 書かなくても、C# コード書いてシェーダーが使えるようになるといいんですけどねぇ
- Code Contracts: How they look after compiling?
- Enabling XML-documentation for code contracts
- Code Contracts、内部的に結構複雑なことしてるのね
- マイクロソフトにおけるアジャイル開発はこんな風に進められている
- Visual Studio と Team Foundation Server を使った開発風景
- 長沢さんへの TFS 関連セッションの内容をまとめたもの
- VS に関わる開発者の数は3500人以上という話を最初に聞いたのは長沢さんのセッションでだったりする(自分が最初に聞いたのはデブサミ2010かな)
- Code Contracts Survey
- Code Contracts のツールサポートとか、immutable コレクション欲しいとか、Rational や ComplexSingle のサポートとかの辺りに投票
個人情報保護ねぇ・・・
今日はこのようなやり取りを twitter にて。
- ufcpp: http://bit.ly/aCxTsN こういう業者って個人情報保護法的にどうなるんだろう。うちにもちょうどこの会社からの無差別営業来たんだけども。
- guicheng: まず個人情報保護法第17条で不正な手段を用いた個人情報の取得が禁じられています。第15条で利用目的を極力特定する必要があり、16条で利用目的を超えた取り扱いが禁じられています。
- yamatoya: @ufcpp 個人情報保護法に則り入手方法の開示、ならびに名簿からの削除依頼をすると良いかも。
- ufcpp: 個人情報保護法は民事になるのかな?刑事罰なら、警察に通報とかどうなんだろう?>http://bit.ly/aCxTsN
- ufcpp: @guicheng あー、削除に応じれば平気なんですねぇ・・・。道理で、「うちからは削除しますので」をやたらと強調すると思った・・・<クレーム入れた際の対応
最近、引っ越しに伴って色々と住所書いたりしてたら「駿馬レーシング」とかいう意味の分からない会社から営業電話がかかってきたんでどうしてくれようという話。営業電話とか、普段、そう気にも留めないんですけど、大のギャンブル嫌いなものでつい。
色々考えさせられるなぁ・・・
- 普通この手の営業って「どこから番号/住所を入手されたんですか?」ってあたりで攻め立てたらひるむもんなんだけど、この会社の堂々としたことと言ったら
- 「どちらから?」って聞いた瞬間、「少々お待ちください」 → 専門の担当者と思われる人に交代 → 「弊社は業者に依頼しただけなので関知していません」、「では、あなたの情報は削除するよう業者に依頼します」
- 最初から悪いことやってる自覚あるから防衛もきっちりやってるなぁ
- 普段気にも留めないのに「ギャンブルだから」気になったわけですけども、電車の広告やらコンビニの雑誌欄やらでさらされてるポルノも似たようなもんよなぁ。「中にはすごく不快な気持ちになる人がいる」
- ゾーニングはほんときっちりやらないと
- そんなに法規制的なことは好きじゃないんでまた悩ましいところ
- というか、法じゃなくて電子システムで何か解決できないもんかなぁ
- 誰にどういう情報が渡ったとか、全部履歴のこっちゃっていいんで、不正利用がマルバレするような
- 趣味嗜好ばらしてもいいから(Amazon おすすめ商品的な)、不快なものからの営業だけは絶対来ないような
- ちなみにギャンブル嫌いな理由:
SL4 Tools リリース、Bing ショッピング、等々
- Final Release of Silverlight 4 Tools for Visual Studio 2010 is now available!
- Silverlight 4 Tools for VS 2010 and WCF RIA Services Released
- 単に Silverlight 4 開発できるってだけじゃなくて、結構、開発環境的なアップデート多い
- プロパティの値がどこで設定されたものか(親からの包含継承、スタイル適用、自身の設定)がプロパティウィンドウで確認できるようになったのとか、地味にありがたいなぁ
- これを入れると、WPF/Silverlight 共通の UI デザイナーが更新されるんで、WPF プロジェクトでも新機能が増えるみたい
- Bing ショッピング
- Bing ショッピングの使い方
- 「Amazonも楽天もYahoo!もまとめて検索!」ってことらしい
- ちょっと触った感じ、いろんなサイトからの商品検索情報が統一的な見た目で出て来るってのは結構快適かも
- Azure Dynamic Scaling でクラウド環境の動的なスケールアウトを実現
- 「クラウド破産」なんて言葉(「パケ死」のクラウド版)が流行った瞬間、こういう記事を書いてくれる辺り、素敵
- More on Image Resizing in .NET 4 vs .NET 3.5sp1: Bilinear vs Fant
- .NET 4 になって、WPF の画像リサイズの方式のデフォルトが Fant 補間から Bilinear 補間に変わったって
- もちろんパフォーマンス上の判断(Fant = 高画質で低速、Bilinear = その逆)
- 確かに WPF の画像表示重たかったけども
- Who needs what?
- 誰がどのバージョンの開発ツール買えばいいの?という話なんですけども・・・
- Professional がどこにもないw
- Premium 以上(いいお値段)買えとw
C# → VB コンバーター、Silverlightでチャート印刷、等
- C# to VB.NET VB.NET To C# Code Convertor
- C# から VB への変換は 1.0 な頃から CodeDom っての使ってできたんですけども、これは Visual Studio に組み込んで使うタイプw
- Printing in Silverlight: Printing Charts and Auto Scaling
- チャートコントロールの印刷デモ。実際に印刷機能持ちの Silverlight がページ中で動いてる
- Html Agility Pack 1.4.0 Released
- 1.4 がリリース、というか、HTML Agility Pack ってものの存在自体初めて気づいた
- ひょっとすると HTML 解析する作業することになるかもしれない(たぶん、URL 直たたきだけで大丈夫だと思うけど)のでちょっと見てみる
- C++0x features in VC2010 – decltype
- How fast is Azure?
- 前にも紹介した気がするけども、Azure のベンチマーク
- こういう情報が公開されてるってのはいいですねぇ
- PowerPoint 2010 Viewer – Available for Download!
- Viewer だけって今までなかったんですよね
- まあ、SkyDrive なり SharePoint なりに置いておけばブラウザー上で表示はできたんですけども
あと、@IT にて、僕の書いた WPF 入門の連載が始まりました→ 第1回 いよいよWPFの時代。WPFの習得を始めよう
公式にはグランドトップ(@IT のトップページの一番上、表紙扱い記事)にしていだけ、twitter では皆様に RT 宣伝しまくっていただけ、本当にありがたい限りです。
内容に関しては、入門ということもあって初回は概要説明です。本当にこれから WPF を学ぶ人はもちろん、「自分は WPF を使いたくてしょうがないんだけど、どうやって上司やチームメンバーを説得しよう」とかお悩みの人は是非。あと、こういうプログラミングモデルのレベルの話でいうと、ほんとに WPF と Silverlight とで差が皆無なんで Silverlight を学び始めたいという方も使えるのではないかと。
戦闘力
作画: Paese
この意味がわかるな?
すみません。つい勢いで。
その他の VS チームのスペックはこちら参照→ "Dogfooding" VS 2010 and .NET 4
結構前の話なんですけども、Tech Days の後にみんなで行った飲み会でこんな感じの話がでたわけですよ、「戦闘力はんぱねぇ」みたいな。単純に大規模開発のチーム力って面を見るならほんとに○リーザ様。○ジータも○ッコロさんも絶望するレベル。
ちなみに、たぶん、3500人ってのは VS の GUI まわりだけじゃなくて、.NET 4/C#, VB 含めた全体かと。.NET Framework もランタイム、ライブラリともに大幅書き換えしたみたいですし。あと、聞き及んでる感じからの推測では、3500人の内わけはプロジェクト管理500人、開発1500人、テストエンジニア1500人ってところですかね。開発とテストがほぼ同数くらいって話なんで。それくらいやらないといまどきのソフトウェアって品質の担保できないんですよねぇ。
Visual Studio 2010 からソースコードを PowerPoint にコピーすると文字化けする
表題のとおり。VS の不具合とするにはちょっと微妙なんですけどもねぇ・・・
症状
例えば、以下のコードをコピって
var str = "サンプル";
PowerPoint に張り付けるとこうなる↓
var str = "サTン?プvル?";
これはひどい・・・。
原因?
一応、大方の原因の予想は付いていて、たぶん、
- VS 2010 では、ソースコードをコピーした時に RTF 形式の場合、他バイト文字をエスケープするようになった
- PowerPoint がエスケープされた文字を正しく解釈しない
1はどういうことかというと、上記のソースコードをコピーした後、クリップボードの中身を RTF で GetData すると、以下のような RTF になっていることが分かります。
"{\rtf\ansi{\fonttbl{\f0 MS Gothic;}}{\colortbl;\red0\green0\blue255;\red163\green21\blue21;}\f0 \fs19 \cf1 var\cf0 str = \cf2 "\uinput2\u12469 ?T\uinput2\u12531 ??\uinput2\u12503 ?v\uinput2\u12523 ??"\cf0 ;\par }"
この、\input2\uXXXX みたいになっている部分がもともと日本語だった部分。XXXX のところには Unicode が十進数化された物が入っています。確か、VS 2008 の時は日本語も日本語のまま入ってたはず。なんでこんな仕様変更しやがりますか・・・。(GetData("text") だと普通に日本語のまま入ってるんですけどね・・・)
で、クリップボードに RTF で入ってくれてるおかげで、例えば Word に張り付けると、var とか ”” の部分の構文ハイライトの色がそのまま貼り付けできるわけなんですが、問題は、PowerPoint がこのエスケープされた文字を正しく読めないという・・・。ひどい。
対策?
バグ報告?
一応、クリップボード触れる人なら対策は取れるんですけどねぇ・・・。以下のような正規表現 Replace でいじれば。
Regex regU = new Regex(@"\uinput2\u(?<code>-?d*)s..", RegexOptions.Compiled);
string DecodeU(Match m)
{
return new string((char)int.Parse(m.Groups["code"].Value), 1);
}var rtf = Clipboard.GetData(DataFormats.Rtf) as string;
rtf = regU.Replace(rtf, DecodeU);
Clipboard.SetDataObject(rtf);
ないわー。
自分がなんでこんなの知ってるかって言うと、C# によるプログラミング入門のサンプルコード載せるのに使ってるから。普通そんなの知らないですよねぇ・・・。
追記:
というか、この正規表現(だいぶ前に自分で書いたもの)、よく見たら、よく分からない謎の2文字を読み飛ばして無視するような黒魔術的コードになってますねぇ。ちょうど、PowerPoint に張り付けた時に出てきてる化け文字に一致してるし、この部分が VS のバグっぽいかも。
追記2:
中さんがちょうど昨日バグ報告入れてたw うーん、RC の頃から気づいてたわけで、「英語版だからよね?」とか言わずに Connect に報告入れておくべきだったのかな。
C# たん絵、もう1枚
VS 2010 リリース記念のと一緒にもう1枚描いてもらってたやつ。
作画: Paese
- 今回は C# たんの本性的な絵をということで
- 「神々しさとトリックスターっぽさを同時に出せない?」みたいな注文
- 最初はもっと神々しさと威厳持った感じ(ストリートファイターのボス的な)も考えてたけど、頭身的に無理ぽということでトリックスターな感じを足してごまかす
- 最終的に、表情は可愛いままで、姿勢で神々しさとトリックスターっぽさを出してもらうことに
- 姿勢的にイメージ材料として提示したのは FF VI のケフカだったり
- F# たんのとかはダントツで被お気に入りが多いようで
- 「本に埋もれた感じ」が好きな人は pixiv にかなり多いのかなぁと
- 特にこれ、女性受けよかったみたい
IE preview 2、WP開発トレーニングキット4月版、CLI on the Web、等
- HTML5 and Same Markup: Second IE9 Platform Preview Available for Developers
- IE9 preview のバージョンが上がったって
- Windows Phone Developer Training Kit April Refresh
- WP7 向け開発トレーニングキットがバージョンアップ
- Push Notification のハンズオンが付いたり
- サンプルがいくつか増えたり
- CLI on the Web – Miguel de Icaza
- Mono の中の人がプラグインなしの first class citizen としてのブラウザー内 CLI 実行に興味をお持ちのようです
- 開発者がWeb開発にいろんな言語を選べるようになるし
- strongly-typed な言語使えばパフォーマンス上がるはずだし
- ブラウザー API を拡張する安全なメカニズムも提供できて、技術革新進みそう
- それはほんとに可能ならやって欲しいですねぇ
- HTML+JavaScript が Silverlight 並の表現力手に入れるってシナリオよりは現実味ありそう
- でも、Google Native Client 辺りと泥沼の消耗戦しそう・・・
- CassandraのLINQProvider作ったよ( ̄∇  ̄ )
- LINQ で使えてなんぼですよね
immutable
変数の immutability に関する議論、今に始まった話でもないんでしょっちゅう見かけるには見かけるんですけど、まとめ的な話はあんまりきれいにまとまってるところ見かけないなぁとか思ったり。
というので、まだそんなにきれいに整理できてるわけでもないけど、ちょっと書いてみる。
値の不変性
値の不変性にもいくつか種類があって、
- constant: コンパイル時定数に名前を付けておきたい
- 扱いが完全にリテラルと一緒になるやつ
- C# の const
- C++ の場合、#define の代替としての const
- ようは、パフォーマンス的な話で、コンパイル時に解決できる値は全部コンパイル時にやっちゃいたいって話
- ぶっちゃけ、リテラルが定義できるようなものだけ const 付けれればいいのかなぁと
- C# の場合、整数型と string と enum だけが const になれる
- C++ は逆に、constexpr & ユーザー定義リテラル認める方向で進化してるっぽいですけど
- 扱いが完全にリテラルと一緒になるやつ
- immutable: 初期化時以外は値の変更不可
- 不用意なタイミングで値が変わって困るくらいなら、そもそも初期化時以外で値の書き換えできないようにしたい
- 特に、並列処理やってると、よそのスレッドで値書き換えられたりすると意味わからない結果を招く
- ローカル変数の場合はほとんどの変数が immutable で事足りる
- 実際、mutable であって欲しいのはループで集計用とかカウンターに使う変数だけ。それ以外で変数を書き換えることってめったにない
- 不用意なタイミングで値が変わって困るくらいなら、そもそも初期化時以外で値の書き換えできないようにしたい
- one-phase construction: データは一気に初期化したい
- 「x と y は同時には 0 になっちゃいけない」みたいな、複数のメンバーに渡ったデータ検証を考えた時、x と y を別個に set されると一時的とはいえ不整合が起きる
- コンストラクターでしか値の初期化しないならそういう心配しなくていいよねということ(その意味では 2. の immutable の派生)
- まあ、コンストラクターに限定する必要はないけど、とにかく、プロパティ値の set は全プロパティ一気にやりたい(なので実は別に immutable と関係ない)
不変なものの作り方
1. の constant の方は古くからある概念なんで割と素直に理解できる話。ただ、C++ の場合は 2. の意味でも const キーワードを使っちゃうんで話が複雑に・・・。その点、まあ、キーワード増えて気持ち悪いのは気持ち悪いけど、const と readonly を分けた C# は正しいと思う。
C# での 2. の immutable の保証、値型の場合には readonly つければ済むことですが、参照型の場合には参照の上書きができないだけで参照先のデータまでは readonly にならないんで、少し工夫が必要というか、クラス作成側で immutable になるようにクラスを作らないとダメ。例えば、
public class Data
{
public Data(int x, int y) { X = x; Y = y; }
public int X { get; private set; }
public int Y { get; private set; }
}
みたいなクラスを作れば、コンストラクター以外で値を変更できない immutable なクラスになる。
C++ みたいに「普段 mutable な型が const キーワード付けた時だけ immutable になる」っていうのは無理。最も、C# でそれが必要になる場面っていうとあんまり思いつかないですが。C++ の場合はパフォーマンスの問題から普段 mutable な型の const 参照を作る機能が必要だったけど、C# の場合にはそもそも class が全部参照なんで。
ちなみに、C# 3.0 で導入された匿名型はこういうタイプの immutable になってる。
2種類の immutable
immutable には2種類考え方があって、
- 内部的に immutable
- private メンバー含め、全部がほんとに初期化時以外書き換わらない
- 見かけ上 immutable
- public なメンバーが初期化時以外で書き換わっていないように見える
- 例えば内部的に計算結果のキャッシュを持つとか、private メンバーが書き換わってる可能性は否定しない
- いわゆる遅延評価ってのをやろうとするとこっちにならざるを得ない
前者の内部的な immutable はコンパイラーによるチェックで保証もできるけど、後者の見かけ上の immutable はプログラマーの裁量とテストに頼るしかなくて大変。
C++ の const は元来 1. の意味。ただ、メンバー変数に mutable キーワードを付けることで、無理やり 2. の意味の immutable を実現可能。その場合、結局のところほんとに immutable になってるかどうかはプログラマーの裁量に任せられる・・・のであんまり意味があるようにも思えないという欠点あり。
不変なものの使いどころ
C# とかでの class の使い方も種類があって、
- 普通に OOP 的な意味のクラス、操作の対象
- GUI の UI 要素とか、ファイルシステムのオブジェクトとか、WCF の Service とか
- 本質的に mutable なもの(immutable にしても役に立たないもの)も多くて、あんまり immutablity を考える意味なさげ
- データを表すもの
- O/R マッパー的に言うところの Entity、WCF 的に言うところの DataContract
- こっちは、データの不整合防止とか並列処理すること見こすと、極力 immutable の方がよさげ
- LINQ で使うような型は特に
なので結局、C# に immutable を保証する機能を入れるとするなら、
- Entity 相当のものの immutable を保証する機能を足す
- 無難なのは、「不変なものの作り方」のところで書いた getter だけが public なプロパティを持ったクラスを生成するような構文糖衣かなぁ
- メソッドも getter アクセスしかしない
- C++ の const みたいに普段 mutable な型を immutable に変える機能までは不要なんじゃないかと
- C# の言語上での保証はできても、IL 上での保証をどうやるか難しそう
- 無難なのは、「不変なものの作り方」のところで書いた getter だけが public なプロパティを持ったクラスを生成するような構文糖衣かなぁ
- 見かけ上の immutable は考えない方がよさげ
- そもそも並列化を見こすということなら、見かけ上の immutable はない方がいいし
- それにそこを考え出すと、コンパイラーによる静的なチェックだけでは限界があって CodeContract みたいな仕組みとの連携も必要で複雑になるし
- Parallel LINQ は 4.0 ですでに入っちゃったんで、これから言語的な保証を足すのはもう難しいかもしれないけども
- プラクティスとして「Parallel LINQ で使う場合には IEnumerable<T> の T は immutable にしましょうね」というくらいしか
- Axum みたいなアクター型のタスク並列機能を追加するなら、アクター間の通信には immutable な型しか認めないとか
ってところなのかなぁとか思ったりしています。
WP7 Tools更新、Spindex、MS Web N-gram Services、等
- やっと Windows Phone Developer Tools CTP が Visual Studio 2010 の RTM 版で動くようになったって
- ダウンロード: http://www.microsoft.com/downloads/details.aspx?FamilyID=cabcd5ed-7dfc-4731-9d7e-3220603cad14&displaylang=en
- ただ、当たり前のように英語版のみ
- ちょっと試した感じ、日本語 VS しか入れてないとインストールできない
- でも、Visual Web Developer の英語版(日本語 VS と共存可能)をインストールした後なら Tools も入った
- ↑で一度入れてしまえば日本語 VS でも WP7 開発可能
- なら最初から言語ではじかなくてもいいのに・・・
- Spindex Tech Preview
- FUSE Labs (こないだ Docs を公開してたとこ。MS 内のソーシャル関連の研究やってるとこ)が新たに公開したサービス
- twitter とか Facebook とかの情報を全部まとめて一元管理するとか
- とりあえず、invite request 出してみた
- Microsoft Web N-gram Services Now in Public Beta Worldwide
- MS が持ってる N-gram データに誰でもアクセスできるようになったみたい
- bing がウェブからクロールしてきたものっぽい
- 検索、翻訳、音声処理などに使いたい方は是非
- Use IntelliTrace without Visual Studio .NET
- VS 使わず IntelliTrace 単体で動かす方法
- でもやっぱ VS Ultimate 入れてないとこのツールも入らないのかな?