Skip to content

Blog

Mac アドレスをコピーしたらベンダー名を表示する

以前にクリップボードの内容が変更されたら通知するツールを作りました。

しかし、.NET Framework には Clipboard を表現するクラス はあるものの、クリップボードの変更を通知するイベントが無い為、上述のツールでは「一定間隔でクリップボードの内容を取得し、前回の取得時と差分が無いか確認することで変更を検知する」という些かイケていない方法で実装していました。しかし、@IT で Win32 API の SetClipboardViewer を使ったサンプル記事「.NET TIPS - クリップボードの内容をリアルタイムに取得するには?」が公開されていたので、Win32 API を使ってツールをつくり直してみました。ただ、これだけではアレなので、クリップボードにコピーされたテキストが Mac アドレスだった場合はベンダー名を表示するように実装してみました。動作には .NET Framework 4.0 が必要です。

「xx.xx.xx.xx.xx.xx」(ピリオド区切り)や「yy:yy:yy:yy:yy:yy」(コロン区切り)、「zz-zz-zz-zz-zz-zz」(ハイフン区切り)といった形式の Mac アドレスをクリップボードにコピーすると、以下のようにベンダー名を表示します。

file

VMWareUser.exe プロセスを終了して、Windows ゲストの高負荷状態を回避する

普段は Mac 上で VMware Fusion3 を使っているのですが、ゲスト OS が Windows の場合だけ、なぜか高負荷になる場合があります。VMware Fusion なのかは分かりませんが、他の方も同じような事象に遭遇しているようです。

VMware の Knowledge Base を検索しても、それらしい事象を見つけられないのですが、これはゲスト の Windows OS 上で "VMwareUser.exe" プロセスを終了することで回避出来るようです。ただし、VMwareUser.exe プロセスはホスト 〜 ゲスト間でのドラッグ&ドロップや、クリップボード共有の機能を提供しているので、このプロセスを終了することでこれらの機能は利用出来なくなります。

Wlinee で擬似的にネットワークへ遅延やロスを発生させる

2004 年の書籍ですが、いまどきのソケットプログラミング―遊んで学ぶ、TCP/IPネットワークの奥義 をお書きになっている 波多さん 作の Wlinee を使うと、ネットワーク上で遅延やロスを発生させたり、帯域を一定の状態にポリシング出来ます。Wlinee を使うと、遅延やロスの多い、品質の悪い回線を Windows で手軽にエミュレート出来ますので、悪条件化でのネットワークテストを実施することが出来ます。Wlinee は下図のように、遅延やロスを挿入したい位置へ Wlinee PC を物理的に割り入れる(挟む)構成にして利用しますので、必然的にふたつの NIC がインストールされた Windows PC が必要となります。

file

今回は Windows XP SP3(32bit)環境に Wlinee をインストールしてみました。尚、波多さんは Wlinee 以前に Linux で動作する Linee もお書きになっています。

事前準備

Wlinee を動作させるには、以下のふたつが事前に必要となりますので、予めインストールしておきます。.NET Framework 3.5 であれば 2.0 を含んでいます(最新の 4.0 は下位バージョンを含んでいません)。

Wlinee のインストール

Wlinee は Sourceforge のプロジェクトページ からインストーラをダウンロード出来ます。インストーラがあるので、インストール自体は簡単です。.NET Framework 2.0 と WinPcap がインストールされていれば、起動するはずです。起動画面は以下の通りです。

file

トラフィック・ジェネレーター「D-ITG」を使う

フリーのトラフィック・ジェネレータは幾つかありますが、Linux でも Windows でも、どちらのプラットフォームでも使えるものに D-ITG があります。D-ITG はコマンドラインのツールですが、Java で書かれた GUI のラッパーも公開されています。

List と LinkedList の性能差

数年前から Java やその他の言語を書く機会がめっきり減り、(自分で選択出来るのであれば)C# で書くようになりました。「Eclipse よりも、Visual Studio が好きだから」という理由が大きいのですが・・・川俣晶さんのプログラミング関連書籍は興味深いものが多く、しばしば拝見させて頂いていますが、C# を書く機会が増えたので以下の書籍は購入させて頂きました。ちょうど上から順に "C# 2.0", "3.0", "4.0" がテーマとして取り上げられています。

そもそも、System.Collections.Generic.List も System.Collections.Generic.LinkedList も一次元リストを扱うものですが、List はインデックスを指定することで任意の位置にアクセス出来るが、LinkedList はインデックス指定ではリストにアクセス出来ず、先頭か、もしくは末尾から順に目的のデータ位置まで辿っていかなければならない、という機能差があります。「究極のC#プログラミング」では System.Collections.Generic.List と System.Collections.Generic.LinkedList の性能差について言及してあり、面白そうだったので検証してみました。