merさんのブログ

Visual Studio 2010 日本語版リリース!

Visual Studio 2010 日本語版がようやくリリースされました。

当初の予定では昨日だったのですが、今日に延期されたらしいです。それを全然知らなくて、まだか! まだか! とかやってたわけなんですが。

このブログへのリファラを見てみると「Visual Studio 2010 まだ?」みたいなので検索する人もちらほら見られ、私だけじゃないんだなあと一安心。

んで、さっそく入手したので使ってみます。

んーーーー。

すっかり ReSharper がないと生きていけない体になりましたとさ。(笑)

とりあえずもうちょっと使ってみます。

そうそう、ヘルプが完全に HTML 形式のヘルプなんですよねぇ。ちょっと不便じゃないかと思う。

[Effective C#] 項目33 型の可視性を制限すること

本日の Effective C# は「項目33 型の可視性を制限すること」です。

要するに、

公開する必要があるものだけを公開すべきです。

につきます。

可視性をどうやって制限するかは、アクセス修飾子 (C# プログラミング ガイド) を使います。

基本的に、public は公開されているので、どこから使用されているかわかりません。よって、挙動を変えるわけにはいかないことになります。(protected は制限があるように見えますが、public と同列に扱ってください)

これに対し、internal や private は使われる範囲が制限されていて、かつ、使用されている部分を変更可能な場合が多いため、挙動を変更ができる場合が多いです。

というわけで、なんでもかんでも public とすると、変更に対して非常に弱くなります。可視性を制限せよということになるわけです。

ServersMan@VPS で yum update を使う

DTI がサービス提供している、ServersMan@VPS を申し込んでみました。初期費用もないし、三か月無料だし。というか、Entry プランなら 490 円/月だから、そのまま使い続けてもあまり痛くないし。

ただ、Entry プランは 256MB しかメモリがありません。おかげで、yum update が失敗します。

yum-fastestmirror を使わなければいいらしいので、/etc/yum/pluginconf.d/fastestmirror.conf ファイルの、enabled を 0 にします。

これで、yum update が使えるようになります。

余談ですが、ソフトウェアアップデートは誰がやるのかと DTI に聞いてみたところ、ご自身で行ってくださいとお返事をいただきました。そのあたり注意してくれと。

いや、そういうの契約前に言わないと。(笑)

ついでなので、rpmforge リポジトリも追加。これでいろいろできます。

そういや、CentOS 5 なんですけど、やっぱ収録パッケージが古いですよね。しゃあないですけど。

[Effective C#] 項目32 より小さく凝集したアセンブリを作成すること

本日の Effective C# は「項目32 より小さく凝集したアセンブリを作成すること」です。

本当にタイトルのまんまなんですが、アセンブリの作成の単位で悩んでいただけに、こういった答えが得られるのはうれしいものです。

アセンブリは単一の機能を提供する小さいものがよいようです。ですので、大きいものもあれば小さいものもあるが、基本的にできるだけ小さく作れ、らしいです。

基準としては、私の場合は分割して使いたいかどうかを考え、そう思うなら分割するって感じです。

余談ですが .NET Framework はこれがうまくいっておらず、GUI 部分を切り離せないため、Windows Server 2008 の Server Core では PowerShell が使えないといったことがありました。(2008 R2 では .NET Framework のサブセットがインストールされている)

アセンブリに引き算は難しいので、こういったことがないよう、足し算で組めるようにすることが大事だと思います。

ReSharper 5.0 Release!

ReSharper 5.0 がリリースされました。なんと、Visual Studio 2010 と同時リリースです!

Visual Studio 2008 のときは待たされた気がするのですが。Visual Studio なんて、ReSharper なしでは役に立たないので、同時リリースはうれしいですね。

というか、Visual Studio には大枚はたいているんだから、ReSharper 程度の機能は欲しいところ。

今回の目玉は、ASP.NET/ASP.NET MVC の対応の強化もあると思うんですが、Structural Search and Replace も強力だと思います。うまく使いこなすかどうかが難しそうなんですが…。

Visual Studio 2010 Release! (ただし日本語版はまだ)

待ちに待った Visual Studio 2010 がリリースされました!

わーい! と思って喜んでたら、日本語版は 20 日からの提供、だそうです。MSDN Subscription を契約済みなので、20 日には入手できます。祝杯でもあげようかな?

しばらくは英語版で遊びますか。

今回の目玉は、参照設定がキャンセルできるようになったこと! ではなくて…。(いや、それも目玉なんですが)

目玉はたぶん DLR とか ASP.NET4 とか、ASP.NET MVC2 とかかな。

しばらくは英語版で遊びますか。

というか仕事せんと…。

[Effective C#] 項目31 機能を最小限かつシンプルにすること

本日の Effective C# は「項目31 機能を最小限かつシンプルにすること」です。

最小限かつシンプルにプログラムを書くのは非常に大事です。読みやすさの面からも。

でも、書籍での "最小限かつシンプル" は読みやすさではなく、パフォーマンスに言及して書かれています。

IL は JIT コンパイラでネイティブコードに変換されて実行されます。変換は実行時にすべて行うと時間がかかるので、呼び出されるメソッドのみ行われるそうです。

つまりは、だらだらと単一のメソッドに分岐をたくさん書いていると、実行されることのほとんどないところまで JIT コンパイラは変換を行うので、その分実行速度が落ちることがあるよということだそうです。

まあ、個人的には JIT コンパイラでの変換は、ただの一度だけで済むので、最初の処理がちょっと重いかな? 程度で大差ないと思うんですけどね。

次には、JIT コンパイラが変換時に、レジスタへローカル変数の割り当てを行いますが、これがローカル変数の数が少なければ少ないほど有利と書かれています。

[Effective C#] 項目30 CLS 互換性のあるアセンブリを作成すること

本日の Effective C# は「項目30 CLS 互換性のあるアセンブリを作成すること」です。

CLS ってなんぞや? と思ったんですが、「共通言語使用 (Common Language Specification」のことだそうです。

ようは、.NET Framework のあらゆる言語で相互運用できるよう、最低限の規則をまとめたもの、みたいです。

たとえば C# は同じスペル同じシグネチャで、大文字小文字だけが異なるメソッドを宣言できます。ですが、Visual Basic は大文字小文字を区別できないため、これらのメソッドをうまく呼び出せないことが想像できます。なので、大文字小文字だけが違う公開メソッドを作成してはいけないとか、そういったもののようです。

ありがたいことに、CLSCompliant 属性 をつけるだけで、CLS 準拠でない場合はコンパイルが失敗します。

Drupal AHAH で "HTTPエラー 0" とか表示される

tag: 

Drupal AHAH を最近使っています。AHAH って Drupal のものだと思ったら、別にあるんですね。

Ajax は難しい? AHAH ならどうだが参考になりました。

AHAH は AJAX などと違って、HTML をそのまま帰してやればいいんですね。おかげで非常に簡単に実装ができます。

Introduction to AHAH Forms in DrupalAdding dynamic form elements using AHAH にあるように、hook_form() で作成したフォームを元に、drupal_render() を呼び出して、html を取得し、クライアントに帰してやるだけです。

クライアントサイドのコードは一切書く必要がありません。

これはすごくないですけ? 非 JavaScript 環境との処理の整合性も取りやすいですし。

[Effective C#] 項目29 親クラスの変更による指示がない限り new 修飾子は使用しないこと

本日の Effective C# は「項目29 親クラスの変更による指示がない限り new 修飾子は使用しないこと」です。

new 演算子は他の言語ではあんまり見ない気がします。

C# は C++ から派生した言語で、比較的近い Java と違い、メソッドはデフォルトで仮想関数ではありません。これは、Java との最大の違いだと思います。

仮想関数にするには virtual キーワードをつける必要があります。

このため、C# では Java ではなかった、メソッドをオーバーライドしたくてもできないという事態が発生します。逆に、Java であった、勝手にオーバーライドされてしまうといった問題はありません。

ページ

RSS - merさんのブログ を購読