無料ブログはココログ

« 2004年10月 | トップページ | 2005年1月 »

【download】 11. cs.exe

11. cs.exe

C#をスクリプトのように実行するコンソールアプリです。

cs.exe hello.cs とするとhello.csをメモリ上でコンパイルしてそのまま実行します。 実行ファイルは作りません。

バッチファイルを次のように作ると、そのまま実行できます。

@echo off
@cs.exe %0
@goto eof

using System;
using System.Windows.Forms;

class a {
    public static void Main() {
	Console.WriteLine("Hello");
	MessageBox.Show("Hello");
    }
}

:eof

なお、cs.exe -c hello.cs とするとC#のソースをバッチファイル(hello.bat)に変換します。

Cygwin環境では、PATHの通った場所(たとえば/usr/binあたり)にcs.exeを置いておくと便利です。 #!/usr/bin/csで始めれば通常のスクリプトのように実行できます。

#!/usr/bin/cs
using System;
using System.Windows.Forms;

class a {
    public static void Main() {
	Console.WriteLine("Hello");
	MessageBox.Show("Hello");
    }
}

ソースコード付きです。

ダウンロード

【OSPF】 11. 続・エリア分割時の注意

11. 続・エリア分割時の注意

エリアを分割する主な動機は経路数を減らすことでしょう。 500拠点とか、1000拠点といった規模のネットワークになると、 さすがにエリアで区切って経路を集約しないとルータがもちません。

このとき注意したいのは、エリア境界で集約する経路のコストは「そのエリアの中の経路の最大コスト」になることです。

たとえば、次のようにエリア分割したとします。

この場合、バックボーンエリアのルータはサブエリアの集約経路(10.20.0.0/16)を二つ学習します。 一つはABR1が作成した10.20.0.0/16で、もう一つはABR2が作成した10.20.0.0/16です。 ABR1から見て、サブエリアの中で最も遠い経路はコスト60ですので、集約経路もコスト60でバックボーンに広告されます。 同様にABR2が広告する集約経路もコスト60です。

バックボーンエリアの中にいるルータは、集約経路のコストに、ABRに到達するコストを加えて評価します。 なので、サブエリア宛てのトラフィックは最寄りのABRに転送され、 詳細なルーティングはサブエリアの中で行われる、ということになります。 バックボーンルータの位置によって、どのABRを使うか決まる、と言って良いでしょう。

ここで注意したいのは、サブエリアの中で障害が発生すると、 バックボーンに広告される集約経路もコストを新しくして作り直される、ということです。 たとえば次の図では、サブエリア内の障害によってABRが広告する集約経路のコスト値が変化しています。

このような状況になると、最寄りのABRよりも、遠いABRの方がコスト的に小さくなることもあり得ます。 重要なのは、「サブエリア内の1カ所の障害によって、サブエリア内の全拠点の通信パターンが変化する」 ということです。 上の図では、ABR2→ABR1向きのトラフィックが急増するわけです。

ABR間が広帯域なLANで繋がっているときは、大した問題にはならないかもしれませんが、 もしABR間が東京-大阪間のWANだったら・・・ABR間のリンクは輻輳してしまうかもしれません。

問題を解決するには

ABRにloopbackインタフェースを作成してサブエリアに収容します。 とてつもなく大きなコストを割り当てれば、ABRがバックボーンに広告するコスト値は常に固定ということになります。

ちょっとした工夫ですが、エリア分割して経路を集約するときには大切な事です。

【C#】 同じソースコードを複数のプロジェクトで参照するには

.csprojファイルを直接編集して、リンクとして登録すればよい。 <File RelPath = "sample.cs" Link = "..\sample\sample.cs" SubType = "Code" BuildAction = "Compile" />

« 2004年10月 | トップページ | 2005年1月 »