2004年09月30日

side by side?

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual Studio .NET 2003 のデバッグができなくなったのは、どうも Visual C# 2005 Express beta をインストールしたのが原因のようです。
でも、たしか、.NET って、side by side で、DLL地獄から開放されたはずだよね。他のソフトをインストールしても影響がでないのが、.NET の売りだったのだと思うのだけど、この矛盾した状況はいったい何?
それとも、この現象は、DLL地獄とはまた別の原因なのかな? でもやっぱり、おかしいよな〜。  

Posted by gushwell at 22:50Comments(0)TrackBack(0)

2004年09月27日

ASP.NETのデバッグができない

   このエントリーをはてなブックマークに追加 Clip to Evernote
VS.NETで、ASP.NETのデバッグが出来なくなってしまいました。ASPNETユーザの権限も問題ないようだし、いったい何が原因なのか、さっぱりわかりません。XP SP2を入れたから? それとも、Visual C# 2005を入れたから? なんなのでしょう。ネットで検索してみましたが、それらしい事例はありませんでした。リモートデバッグができないというのは見つかったけど、僕のはローカルPC上でのデバッグだから関係ないような気がします。  
Posted by gushwell at 21:49Comments(4)TrackBack(0)

2004年09月25日

C#プログラミングレッスンNo007を発行

   このエントリーをはてなブックマークに追加 Clip to Evernote
昨日、メルマガ「C#プログラミングレッスンNo007」を発行しました。1週間に一回の発行って結構大変ですね。なるべく解りやすい言葉で書こうと思い、何回も書き直しているうつに、どんどん時間が過ぎてしまいます。でも、時間を掛け何回も書き直したわりには、たいした文章になっていないので、「僕って、こんなに文章が下手だっけ」と、落ち込んでしまいます。もっと、気楽に書こうと思うのですが、文章を書くのって、なかなか難しいですね。
  
Posted by gushwell at 23:03Comments(0)TrackBack(0)

2004年09月21日

DataGrid の DataSourceプロパティ

   このエントリーをはてなブックマークに追加 Clip to Evernote
WebForms と WinForms の DataGrid コントロールの DataSource に指定できるものが違うのは困りものです。WebForms でできるのだから、 WinForm でも出来るだろうと、DataReader のインスタンスを渡してあげたのですが、コンパイルは通るのに、実行時にエラーになってしまいました。
DataSourceプロパティは object 型なのでコンパイルエラーが出ないのは、仕方ないとして、受け取るインターフェースが、Webでは、 System.Collections.IEnumerable インターフェイス なのに対し、WinFromsでは、IListSource インターフェイスあるいは、IList インターフェースとなっています。

なぜ、なんでしょうか。深い意味があるのでしょうか。それとも .NET Frameworkのインターフェース全体を統括する設計者が、そこまで目がまわらなかったのでしょうか。
まあ、あれだけ大きなフレームワークですから、目が回らなかったとしても仕方ないかもしれませんが、使う側としては、些細な違いで悩むことになるので、統一してほしいですね。
  
Posted by gushwell at 22:12Comments(2)TrackBack(0)

2004年09月17日

program.cs

   このエントリーをはてなブックマークに追加 Clip to Evernote
WindowsFormのプロジェクトを作成すると、VS.NET 2003 とは異なり、
Program.cs というファイルが作成されます。このプログラムコードを以下に示します。
#region Using directives

using System;
using System.Collections.Generic;
using System.Windows.Forms;

#endregion

namespace WindowsApplication1
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.EnableRTLMirroring();
Application.Run(new Form1());
}
}
}

プログラム構造としては、こちらの方がすっきりしていて良いですね。スタートアップのフォームを切り替えるのもこちらの方が簡単ですし、メインフォームが表示される前に実行したいコードを書く場合にも、フォームクラスから切り離されますので、見通しがよくなります。
でも、このコード Delphiの PRJ ファイルに似てきましたね。
  
Posted by gushwell at 22:03Comments(0)TrackBack(0)

2004年09月15日

Visual C# 2005 Express beta

   このエントリーをはてなブックマークに追加 Clip to Evernote
Visual C# 2005 Express beta をインストールしてみました。
ダウンロードにかなりの時間がかかりましたが、無事インストールが終了し、早速起動してみたところ、起動がめちゃくちゃ遅いではないですか。
全然 Express じゃないな。と思い、ちょっとがっかりしたのですが、起動が遅かったのは、最初の1回だけみたいです。2回目、3回目は、VS.NET 2003 の起動よりもはるかに早く起動します。やはり、機能を絞った分、軽快に動作するようになったみたいです。

それと、これ以上進化するところなんてあるのだろうか? と思っていた IDE 周りですが、僕の予想を超えて素晴らしいものになっていました。インテリセンスは、Ctrl+Spaceを押さなくても、候補一覧が出てきますし、{ と } の対応がすぐにわかるようになっています。また、フォーム上のコントロールの位置設定をやりやすくするためのガイド機能など、ちょっと触っただけでも、「おおっ、これはすごい」と思う機能がいくつもあります。
製品版、期待できそうです。
  
Posted by gushwell at 22:28Comments(0)TrackBack(0)

2004年09月14日

ロビタ

   このエントリーをはてなブックマークに追加 Clip to Evernote
富士通が、手塚治虫の「火の鳥」に出てくるロボット「ロビタ」そっくりのロボットを開発したそうです。
 「これってロビタ?――富士通が考えるサービスロボット

オフィスでの作業を前提としたロボットで、一人でエレベータにも乗れるということです。小さい頃読んだマンガの世界にまた一歩近づいたのですね。
でも、本当の意味での人工知能を持ったロボットって僕が生きているうちには出てこないんだろうな。  
Posted by gushwell at 09:20Comments(0)TrackBack(0)

2004年09月13日

StringBuilder

   このエントリーをはてなブックマークに追加 Clip to Evernote
<<メルマブログからの移動記事 2004.08.20>>

Cマガジン9月号の「επιστημηのオブジェクト工房」に、 「個の星(*)を返すようなstars(n);を定義する」というような話題が載っていました。 これをC#で書くと、
string stars(int n) {
    return new string('*',n);
}
となります。でも、プログラミングの勉強としては、これだと面白くありません。 では、次のコードはどうでしょうか。

    static string stars(int n) {
        string s = "";
        for ( int i = 0; i < n; i++ )
            s += '*';
        return s;
    }
C#の初心者としては、これで良いと思います。
ただ、 内部の動作を考えると、s+= '*'; のところで、インスタンスの生成と複写処理が頻発するため、見た目とは裏腹に効率の悪いプログラムとなっています。
.NETでは、このようなときのために、StringBuilderクラスが用意されています。このクラスを使えば、

    static string stars(int n) {
        StringBuilder sb = new StringBuilder(n);
        sb.Length = n;
        for ( int i = 0; i < n; i++ )
            sb[i] = '*';
        return sb.ToString();
    }
と書けます。 もちろん、実務では最初のコードで良いのですが、プログラミングの学習では、別の方法で書いて見るのも良い勉強になりますね。
ちなみに、 StringBuilderを使い、僕が最初に書いたコードを以下に示します、上のコードとの違いに注目してください。

    static string stars(int n) {
        StringBuilder sb = new StringBuilder();
        for ( int i = 0; i < n; i++ )
            sb.Append('*');
        return sb.ToString();
    }
  
Posted by gushwell at 22:15Comments(0)TrackBack(0)