hirax.net::Keywords::「Delphi」のブログ



1999-01-24[n年前へ]

「私と好みが同じ人」 

analog Windows版用のサブドメイン解析ソフトを作る

はじめに

 http://www.hirax.net/(このサイト)にどのような人がアクセスしているか知りたくなった。何しろ、作者の私でさえ辿り着くのにかなり苦労するようなサイトである。そこにわざわざ辿り着くような人はどんな人なのか、知りたいと思うのは自然の摂理である。その人達は私と好みが似ている人かもしれない。

analog windows版(日本語)

 このサイトではhttpサーバーとしてApacheが使われている。このログ解析をするために、ログ解析ソフトであるanalogを使ってみる。そこで、まずは

http://jolt.ime.yamagata-cit.ac.jp/

からanalogのwindows版(日本語)をダウンロードする。

 これを使うと例えば、

analogのwindows版(日本語)で曜日解析をしたもの

というような解析ができる。もちろん、上の画像は結果のごく一部である。

 ドメイン解析をするためには、analogの設定ファイルである"Analog.cfg"の中に、

DNSFILE dnsfile.txt
DNS LOOKUP
DNS WRITE

と記述をしてやる。これをしないとIPアドレスからドメイン名への検索をしてくれない。

 そうすると、こんな感じになる。

canon.co.jp
sony.co.jp
atr.co.jp
infocom.co.jp
saitama-u.ac.jp
kokushikan.ac.jp
ritsumei.ac.jp
keio.ac.jp
rr.com

 しかし、これでもまだよくわからない。日本人としては漢字で、しかも、もっとわかりやすい名前で知りたい。
 そこで、"Analog.cfg"の中でサブドメインの指定をしてやる。こういう記述である。

SUBDOMAIN aichi-gakuin.ac.jp '愛知学院大学'
SUBDOMAIN aitech.ac.jp '愛知工業大学'
SUBDOMAIN anabuki-c.ac.jp '穴吹情報専門学校'
SUBDOMAIN ashigei '芦屋芸術情報専門学校'
SUBDOMAIN aist-nara.ac.jp '奈良先端科学技術大学院大学'

 そうするとこうなる。

canon.co.jp
sony.co.jp
atr.co.jp
infocom.co.jp
saitama-u.ac.jp (埼玉大学)
kokushikan.ac.jp (国士舘大学)
ritsumei.ac.jp (立命館大学)
keio.ac.jp (慶應義塾大学)
rr.com

Whois解析プログラムをつくる

 acドメインなどはanalogのwindows版(日本語)に付属のもので間に合うのだが、co.jpドメインなどはほとんど記述されていない。そのため、coドメインに関しては何らかの方法で"Analog.cfg"の中の記述を補充してやる必要がある。

 そこで、ドメイン名から詳しい名称を調べて、"Analog.cfg"用に加工するソフトをつくることにした。
私の設定ではanalogはdnsfile.txtというファイルにアクセスしてきたdomainのリストを出力する。
DNSFILE dnsfile.txt
という指定のためである。そこで、このファイルを元に
whois プロトコル
でそれぞれドメインの詳細を調べてやれば良いだろう。

まずはwhoisプロトコルの情報を

rfc-jp ML (http://www.imasy.or.jp/~masaka/rfc-jp/)

から辿って

Referral WhoisProtocol (RWhois) (http://www.imasy.or.jp/archives/rfc/rfc1714.txt)

を手に入れる。また、whoisのサーバーとしては
whois.nic.ad.jp
にポート43でアクセスする。あとはプログラムを組むだけである。

 今回はC++Builder Professional版を使うので、TCP/IP関連にはあまり気を遣う必要がない。日本語コード、改行コードの変換には、

EarthWave Soft(IKEDA Takahiro)氏作成の
Delphi 用 文字コード変換ライブラリユニット  jconvert.pas 1.4
http://www.os.rim.or.jp/~ikeda/

を使用してやる。今回はjpドメインの検索だけにした。それ以外のドメインについては検索をしない。

 以下の画像が今回作成したプログラムの動作中の画面である。ドメインの詳細について解析しているのがわかるだろう。

WhoisPro.exeの動作画面

 これが今回作成したプログラムである。

WhoisPro.exe (whoispro.lzh 165kB) プログラム本体
domain.txt (domain.lzh 2kB) ドメインの詳細のキャッシュファイル

 これらを解凍したものを"analog.exe"と同じディレクトリ(つまり、dnsfile.txtと同じディレクトリ)において実行すればよい。解析のスピードはトラックバーで変えることができる(はずだ.しかし、.あまり早くすると動作しなくなるだろう。)。
 解析が終わったら解析結果を手動でコピーして"Analog.cfg"に貼り付けてやれば良い。最後の所は手動の方が安心できて良い。何しろ自分のプログラムほど信用できない物はないからである。

 このプログラムは解析が終了するのに、かなりの時間がかかる。何しろ一つのドメインあたり数秒かかる。したがって、このようなプログラムを使えるのはアクセスがほとんど無いようなサイトだけだろう。アクセスが激しいサイトでは、とても使えないと思う。また、whois.nic.ad.jpに負担がかかってしまうだろう。

「私と好みが似てる人」

 さて、このプログラムを使い、"Analog.cfg"を補充した上でanalogで解析した結果の一部が以下である。これが「私と好みが似てる人」である。もっとも、この中の一つはそうとも言えないのだが...

: 16.61%: canon.co.jp (キヤノン)
: 15.64%: sony.co.jp (SONY)
: 5.60%: atr.co.jp (株式会社国際電気通信基礎技術研究所)
: 4.22%: infocom.co.jp (日商岩井)
: 2.80%: waco.co.jp (ワコービジネス)
: 5.44%: odn.ad.jp (オープンデータネットワーク)
: 4.22%: nttpc.ne.jp (ISP事業者向けネットワーク提供サービス)
: 1.26%: att.ne.jp (日本AT&T株式会社)
: 5.76%: saitama-u.ac.jp (埼玉大学)
: 1.08%: kokushikan.ac.jp(国士舘大学)
: 0.90%: ritsumei.ac.jp (立命館大学)
: 0.50%: keio.ac.jp (慶應義塾大学)

 関西系の大学が多いのは「鴨川カップル」のせいだろうか? また、慶應義塾大学といっても、全てがSFC(湘南キャンパス)であったのは面白かった。

1999-02-28[n年前へ]

分数階微分に基づく画像特性を考えてみたい 

同じ年齢でも大違い

前回、分数階微分の謎 - 線形代数、分数階微分、シュレディンガー方程式の三題話- で分数階微分について調べた。例えば、0.7階微分といった、整数階でない微分である。今回はそれを使った応用を考えてみたい。

人間の視覚というものは明るいものは強く感じることができる。これは当たり前である。そして、それだけでなく、強さが変化している所にも(興味を)強く感じ取るようになっている。岡本安春氏の「Delphiでエンジョイプログラミング」によれば、そのような考えはLaming(1986)がdifferential coupling(差動結合)として発表しているらしい。

ということは、人間が画像を感じる特性というものは、画像強度と画像強度変化(画像強度の一階微分)の中間的なものであると言うことができるかもしれない。とすれば、分数階微分を導入すれば面白い表現ができるかもしれない。
今回は、そういう考えのもとに分数階微分を用いて人間の画像特性について考えてみたい。

まずは、元画像を示す。元画像はガウス分布に基づいて作成されたものである。

元画像とその鳥瞰図

まずは、左の元画像を見て欲しい。どこに強い感じを受けるだろうか?白い部分はもちろんであるが、白と黒の境界部にも強い感じを受けるだろう。ギザギザになっているのはデータが少ないからなので、無視して欲しい。というわけで、人間の視覚画像特性は

  • 画像強度
  • 画像強度変化(画像強度の一階微分)
というものの中間的なものと結び付けることができる(としておく、今回は)。それでは、元画像から元画像の一階微分までの間で連続的に分数階微分をしてみる。先の元画像を見たときに受けた印象と近いものが、分数階微分画像の中にあるかどうか探してみてもらいたい。
元画像から元画像の一階微分までの分数階微分画像

元画像

1/2階微分画像

15/20階微分画像

1階微分画像

白地に黒画像バージョンも示しておく。紙の上の画像に慣れた人にはこちらの方が良いだろう。

元画像から元画像の一階微分までの分数階微分画像(白地背景)

元画像

1/2階微分画像

15/20階微分画像

1階微分画像

なお、今回の画像の作成は次のような手順で行っている。

  1. 1次元のガウス分布を作成する。
  2. 微分値が正であるような半分の領域を線対称に回転させ、2次元画像を作成する。
なぜ、このような方法をとっているかと言えば、微分値が負の値になる領域を除きたいからである。

今回は

  • 画像強度
  • 画像強度変化(画像強度の一階微分)
というものの中間的なものとして分数階微分を用いたが、これに限る話ではない。例えば、
  • 電位
  • 電界(電位の微分、といっても本来は電位が電界の積分か)
とか、あるいは、
  • 人口密度
  • 人口密度変化(人口密度の微分)
といったものでも良いだろう。今回のデータを電位とか人口密度に基づくものとして読み直せば良いだけである。色々と用途があるのかもしれないと思う。分数階微分の定義からすれば、位相遅れなどが存在する物理現象であれば、物理的な意味を厳密に持たせた上での解析ができるように思う。いずれ、音響インピーダンスなどの解析に用いてみたい。

さて、分数階微分を調べる中で、バナッハ空間についても調べた。調べ始めた時には、聞き覚えもなかったが、調べてみるとヒルベルト空間の導入で登場していた。きれいさっぱり忘れていたようである。
京大数学教室 徳永健一氏のWEB (http://www.kusm.kyoto-u.ac.jp/~kenichi/)
から辿れる「「年齢の本」数学者版」によれば
バナッハがバナッハ空間を提唱したのは30歳の時であるらしい。(http://www.kusm.kyoto-u.ac.jp/~kenichi/age/30.html)
うーん...

2000-12-28[n年前へ]

GeoWhois 

 知らなかったけど面白いアイデアだ。ここ自体は「Host name to Latitude/Longitude」と「Xerox PARC's Map Viewer」を組み合わせて、Delphi用のコンポーネントを作った人のサイトだけど。というわけで、自分用のメモ。(リンク

2001-01-04[n年前へ]

世界の国からこんにちは 

hirax.net版GeoWhoisを作る


 VisualC++ MFCを使ったWindowsプログラミングはどうもお気楽という感じにはいかない。もちろん、「子供の科学」にすらMFCを使ったプログラミング入門が連載(何故、VisualC++で!?)されるくらいであるから、別にそれが難しいわけではないのかもしれない。しかし、VisualC++MFCでWindowsプログラミングがキライになる人は絶対いるはずだ。現に突撃実験室のwebmasterはかつてVisualC++と闘った結果、「俺は永遠に組み込み屋じゃっ」と叫んでいたらしい(C.突撃実験室)。

 私も含めて、そんなWindowsプログラミング難民達を優しく女神のように迎えてくれるのがBorlandC++Builderである。いや、女神は必ずしも私たちを優しく迎えてくれるわけではない。むしろ、女神は私達を冷たくあしらうことの方が多いので、実は女神よりもC++Builderの方が優しいと言っても良いくらいである。しかも、C++Builderは自然にWindowsプログラミング(そして嫌でもDdelphi)を覚えさせてくれるところが実にありがたい。そして、そんなC++Builder(Delphi)ユーザー達にとって実に便利なのがTorry'sDelphi Pages.だ。

 というわけで、先日Torry's Delphi Pages.をチェックしていると、とても面白いコンポーネントがあった。それはYehudaSharvit.による

である。ドメインネームから地理的な位置座票への変換を、地理データベースを持っているイリノイ大学の"cello.cs.uiuc.edu"を使って行い、そしてゼロックスのパロアルト研究所(parc)の"mapweb.parc.xerox.com"から地図画像をダウンロードして表示するコンポーネントである。ドメインネーム->持ち主の住所(WHOIS)→位置座票("cello.cs.uiuc.edu")->地図表示("mapweb.parc.xerox.com")という流れでドメインが位置している場所を表示するわけだ。

 例えば、DelphiでGeographicWhois Componentを使ってapple.comを検索・表示してみたのが次の画像である。
 

GeographicWhois Componentを使ってapple.comを検索・表示してみたもの

 もちろん、「ドメインが位置している場所」と言っても、ドメインの登録者の住所を表示するわけで、必ずしもそのドメインのサーバーが位置する場所を表示するわけではない。だけど、そもそも「ドメインが位置する場所」というのは「実際のドメインのサーバーが位置する場所」ではなくて、「ドメインの登録者の住所」だと私は思うのでこれはこれで良いのである。そしてまた、「ネットワーク上であまり意識することのない地理的な位置情報を表示する」というのがかなり面白いと私は思う。

 日頃、ちょこちょことブラブラと色々なサイトを巡回して楽しんでいる(といっても実は多くはない)のだが、そのサイト達は世界中のどこにいるのだろう?なんて時折と思うことがある。以前、

でネットワーク上を自分の家からロンドンまでヒッチハイクしてみたけど、そんなヒッチハイクも地理的な位置情報が判れば、それはもっと楽しいかもしれない。WEBで辿る「世界一周の旅」なんてのも簡単にできることだろう。そしてまた、「インターネット上の距離」と「地理的な距離」を並べて見てみるのも面白いだろう。というわけで、今回は色々なサイトがどんな場所に位置しているかを表示するアプリケーションを作ってみることにした。
 

 ところで、先のGeographicWhois Component自体はDelphi用のコンポーネントでC++Builder用ではない。もちろん、C++BuilderはPascalで書かれたDelphi用のコンポーネントだって読み込めるわけだが、とりあえずこのコンポーネントはそのままではC++Builderには取り込めない。それだけではなく、地図の縮尺や位置などの指定をすることができないため、このままでは色々なサイトの位置を重ねて表示することはできない。

 そこで、「ドメインネーム->持ち主の住所(WHOIS)→位置座票("cello.cs.uiuc.edu")->地図表示("mapweb.parc.xerox.com")というルーチン」をC++Builderで自分用に作り、できあがったアプリケーションがこれである。

もちろん、いつものように数回だけの動作(不?)確認しかしてない完全無保証版である。

 GeoWhois.exeの動作画面が次の図である。ドメインの場所を検索しその結果が上の方の画像に表示される。また、検索履歴が下の画像に表示される。検索履歴画像の方はSaveボタンでbmpファイルとして保存することができる。
 

GeoWhois.exeの動作画面
ドメインの場所を検索し、その結果が上の方の画像に表示される。
検索履歴が下の画像に表示される。

 ちなみに、上の画像の検索履歴は私のよく見に行くところである。結構世界の各地に広がっているような気もするし、広がっていないような気もする。こんなプロットをもっともっと重ねてみて、あとリンクの様子も線でプロットしてみたりすればかなり面白いグラフができることだろう。

 さて、ドメイン名から位置座票への変換("cello.cs.uiuc.edu")はあまり色々な場所が登録されているわけではないので、少なくとも日本などでは東京くらいしか変換することができない。だから、当然のごとくtomoya.comやhirax.netは表示されない。だから、実際のところ私が良く見に行く個人サイトは本当はあまり検索することができない。もちろん、プロバイダー内にWEBページを持っているようなところは検索・表示することができるのだけれど、そんなところはみんな東京になってしまうのである。しかも「WEBページの持ち主= ドメインの持ち主」でもないので、そもそも「そのドメインの位置情報 = WEBページの位置情報」では全然無い。だけど、そもそもそんな日本国内の「ご近所さんを探せ!」コーナーではないのだから、もうそれはそれで良いのである。遙か遠くの国のサーバーを地図で眺めることができる、というところが良いのである。

 このGeoWhoisを応用していけば色んな遊び方があると思うのだが、今回はこのアプリケーションを作ってみたところで終わりにしたいと思う。次回以降(といってもいつになるか判らないけど)で、「インターネット上の距離」と「地理的な距離」でも調べてみたいと思う。

 それにしても、こんな地図を眺めていると、本当に旅行したい気分になってきたぞ〜
 

2004-03-10[n年前へ]

コードネーム 

 Mercury、Hydra、Orion、Thunderbird、Sphinx、Copland、Gershwin、Delphi、Chicago、Antimony …、これらはもちろん色々な製品の開発コードネーム。地名だったり、ギリシャ神話に出てくるものの名前だったり、色んな名前がある。
 Oracleと接続する(神託を受ける)からDelphi(地名)だったり、Terminal Serverだから,9つの頭を持つ蛇のHydraだったり、開発者達の狙いがコードネームに如実に顕れているものも結構あってその背景を考えると面白い。

 そんな背景が面白いネーミングは他にもたくさんあって、衛星の名前の由来なんかもそんなものの一つ。これを眺めていると、ギリシャ神話のショートショートを読んでいるような気分になる。



■Powered by yagm.net