« 2011年7月 | トップページ | 2011年10月 »

2011年8月の3件の記事

2011年8月26日 (金)

[.NET] WebClient クラスの Encoding 自動認識がバグってる、というフィードバックをしました

.NET 4 から、 WebClient クラスの DownloadString() メソッドは、 (明示的に Encoding が指定されていない時に) HTTP レスポンスヘッダーの Content-type に含まれる charset を見て、 文字 Encoding を自動識別してくれるようになりました。 ⇒  「[.NET] フィードバック その後 - WebClient オブジェクトは Encoding を自動認識してほしい」 (2009/12/29)

…が、 正式リリースされた .NET 4 では、 この部分がバグってたんですねぇ。 その頃、 MS Connect にレポートを上げてる余裕がなかったんで、 まぁ誰か気付いて出してくれるだろう、 と忘れていたら…。 どうやら、 誰もバグレポを上げなかったようで orz

ということで、 MS Connect に上げました。
ID: 685732 「System.Net.WebClient.DownloadString() が、Encoding の自動識別に失敗する

まぁ、 そんな仕様に .NET 4 で変わったと気付いていない人が多かったでしょう (MSDN ドキュメントには書かれていません) から、 たいして実害は出ていないはずです。 従来通りに DownloadString() は使わずに、 (Connect の「回避策」のところに書いたように) DownloadData() でバイナリーとして読み込んでから charset を調べて文字列に変換するか、 あるいは WebResponse クラスを使って 1行ずつ読む、 といったコードを書いているはずです。

なお、 ildasm でチラチラ覗いてみた感じでは、 Content-type に、 "text/html;charset=UTF-8" のように ';' の後ろに空白が無いと、 Split() するときに失敗しているようでした。 ( "text/html; charset=UTF-8" のように空白で区切られていると、 上手くいく。)

| | コメント (2) | トラックバック (1)

2011年8月24日 (水)

[VS2010] (続) オプション 「生成されたコードから結果を表示しない」 の挙動不審

Visual Studio 2008 では、 コード分析のオプション 「生成されたコードから結果を表示しない」 にチェックを入れても、 フォームやテンプレートでは、 コード分析のエラーや警告は抑制されません。 これは Visual Studio の不具合ではなく、 MSDN の翻訳ミスであることを以前に書きました。 → 「[VS2008] オプション 「生成されたコードから結果を表示しない」 の挙動不審

Visual Studio 2010 では、 どうなったでしょうか?
MSDN フォーラム で翻訳を修正しておきますよ~、 と回答していただいた通り、 MSDN のドキュメントは訂正されています。

方法: マネージ コード プロジェクトのコード分析を構成する
Visual Studio 2010

メモ
コード分析のエラーおよび警告がフォームやテンプレートで表示される場合、このオプションを使用しても、生成されたコードからこのエラーおよび警告の出力は抑制されません。 フォームまたはテンプレートのソース コードは表示することも保持することもできます。

※ あ、 「保持する」 は maintain の誤訳だけど、 分かるよね。そう思って、フォーラムで突っ込まなかった。まぁ、 「メンテする」 って日本語になってるし f(^^;

…これで終わりかというと。 WPF では Visual Studio の挙動が変わっていました。
Visual Studio 2010 で WPF のプロジェクトを作ると、 自動生成された MainWindow.g.cs には GeneratedCode 属性が付くようになりました。

[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class MainWindow : System.Windows.Window, System.Windows.Markup.IComponentConnector {

これにより、 WPF 4 のフォーム (System.Windows.Window を継承したクラス) では、  「生成されたコードから結果を表示しない」 オプションを使うと、 エラーと警告の出力が抑制されることになります。
※ Connect で 「WPF:コード分析で余計なソースファイルが分析対象となる」 (2009/09/02) というレポートが上がっており、 それに対応した結果のようです。

またしても、 ドキュメントと実際がズレてしまいました。
しかしそれよりも、 自動生成されたコードのメソッド単位に属性を付けてくれれば良かったのですが、 クラスに付けてくれたのがマズいです。 これでは WPF 4 のフォーム内にゴリゴリ書かれてしまったコードが、 分析の対象にならないと思われます。

なお、 Visual Studio 2010 でも、 WPF 3.5 を選ぶと、 従来通り GeneratedCode 属性は付かないようです。 WinForm も同様に、 付きません。

| | コメント (0) | トラックバック (0)

2011年8月 1日 (月)

[HTML5] HTML4との相違点 日本語訳

そろそろ HTML 5 の時代が始まりそうな気配。 さて勉強するか、 と思った時にまず知りたいのは旧バージョン (HTML 4.x / XHTML 1.x) との相違点ですね。 W3C からは "HTML5 differences from HTML4" ってドキュメントが 2008年からずっと出されてはいたんですが、 なにぶんにも英語オンリー。
…と嘆いていたところに、 個人的に翻訳文を公開してくださってるサイトを、タイミング良く紹介してもらえました(^^;

20110801_html5jp01
HTML5.JP: W3C - 『HTML 5 differences from HTML 4』日本語訳 -

※ で。 CSS2 と 3 の相違点をまとめた日本語文書って無いかしら f(^^;

| | コメント (0) | トラックバック (0)

« 2011年7月 | トップページ | 2011年10月 »