2000-11-07[n年前へ]
■ふと、思い出したこと。
夜、職場で動作チェック用の回路を組み立てていた。そんな作業をしていると、もう20年位前にapplee(ロビン電子仕様、eだったかなぁ?)の基盤をせっせと半田付けしていたことを思い出した。これまで何度も「これはスゴイぞっ」と思ったことが何度もあるが、それを少しだけ振り返ってみたい。まずは、appleでchoplifter(こんな綴りだっけ?)を見たときはビックリしたなぁ、もう。あの逃げる人の動きは絶品だった。思わずapplee(あくまでロビン電子仕様)のメイン基盤(だけ。部品は後で揃えた。)を買ってしまった位だもの。あと、X11R4ベースのプログラムを始めたときもやっぱり、ビックリしたなぁ。あのネットワーク透過性はやはりカルチャーショックだった。あと、MacintoshのCodewarriorも驚いたが、それはC++Builderも同じか。あれ、何かいまひとつになってきたぞ、と。そういえばI/Oの常連だった七味十唐子さん(こんな綴りで良かったかな?)とかどうされているんだろう?IOが小さくなっているのを見た時は、哀しかったなぁ。あれを創刊した(ASCIIの前はI/Oに携わっていたんだよな、確か。)西和彦はどう思ってるんだろう?う〜む。
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を検索・表示してみたのが次の画像である。
もちろん、「ドメインが位置している場所」と言っても、ドメインの登録者の住所を表示するわけで、必ずしもそのドメインのサーバーが位置する場所を表示するわけではない。だけど、そもそも「ドメインが位置する場所」というのは「実際のドメインのサーバーが位置する場所」ではなくて、「ドメインの登録者の住所」だと私は思うのでこれはこれで良いのである。そしてまた、「ネットワーク上であまり意識することのない地理的な位置情報を表示する」というのがかなり面白いと私は思う。
日頃、ちょこちょことブラブラと色々なサイトを巡回して楽しんでいる(といっても実は多くはない)のだが、そのサイト達は世界中のどこにいるのだろう?なんて時折と思うことがある。以前、
でネットワーク上を自分の家からロンドンまでヒッチハイクしてみたけど、そんなヒッチハイクも地理的な位置情報が判れば、それはもっと楽しいかもしれない。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ファイルとして保存することができる。
検索履歴が下の画像に表示される。 |
ちなみに、上の画像の検索履歴は私のよく見に行くところである。結構世界の各地に広がっているような気もするし、広がっていないような気もする。こんなプロットをもっともっと重ねてみて、あとリンクの様子も線でプロットしてみたりすればかなり面白いグラフができることだろう。
さて、ドメイン名から位置座票への変換("cello.cs.uiuc.edu")はあまり色々な場所が登録されているわけではないので、少なくとも日本などでは東京くらいしか変換することができない。だから、当然のごとくtomoya.comやhirax.netは表示されない。だから、実際のところ私が良く見に行く個人サイトは本当はあまり検索することができない。もちろん、プロバイダー内にWEBページを持っているようなところは検索・表示することができるのだけれど、そんなところはみんな東京になってしまうのである。しかも「WEBページの持ち主= ドメインの持ち主」でもないので、そもそも「そのドメインの位置情報 = WEBページの位置情報」では全然無い。だけど、そもそもそんな日本国内の「ご近所さんを探せ!」コーナーではないのだから、もうそれはそれで良いのである。遙か遠くの国のサーバーを地図で眺めることができる、というところが良いのである。
このGeoWhoisを応用していけば色んな遊び方があると思うのだが、今回はこのアプリケーションを作ってみたところで終わりにしたいと思う。次回以降(といってもいつになるか判らないけど)で、「インターネット上の距離」と「地理的な距離」でも調べてみたいと思う。
それにしても、こんな地図を眺めていると、本当に旅行したい気分になってきたぞ〜
2001-10-11[n年前へ]
■MathCode C++
MathematicaからC++コード生成。Windows NT US$ 2990。(リンク)
2001-12-01[n年前へ]
■ある日せっせとプラグイン
先週末はPhotoshopのExport用プラグインを作成してた。半分趣味で、半分は仕事用だ。
でもって、今週はFilterプラグイン。Macでいじってたときはそれほどにも感じなかったけれど、Windowsで久々に作ろうとすると、このリソースがらみの処理は本当にグチりたくなるくらいメンドくさい。いや、ホントめんどくさい。ただでさえ、C++Builderのお気楽プログラミングが身についてるのに。あぁ、メンドくさ〜。思わず、外部アプリを呼び出す形式に変えようか、と思ってしまったくらいだ。
ふと思い出したが、Wild Riverさんて私は面識が無かった(Wさんにもっとつきまとえば良かったか?)ので、熊のようなイメージを勝手に思い浮かべていたのだが、「細身の中国人風」と聞いてちょっとビックリだ。
名前の与えるイメージは恐ろしいものがあるなぁ。それにしても、こういう人と会う機会があるという点で下丸子勤務もちょっとうらやましい。別な意味で有名な、l*****(あぁ、やっぱり自己規制してしまうぞ)さんもいるし。かつて、下丸子にいた頃、その居室へl*****さんを見に行くツアーがあったのは、秘密の事実だ。
2002-09-22[n年前へ]
■PluginDLLから外部DLLを呼ぶ
photoshopプラグインはcdeclでないと動かない?で、作ってるDLLはstdcall呼び出し限定。そのせいなのかなんなのか上手く動かない。関数毎の指定も上手く動かない…。きっとホントは簡単なのだろうけど…。
というわけで、値の受け渡しはメモリマップドファイルを使うことにした。どう考えても、とても間抜けな作り方なんだろうな。
何はともあれ、PluginDLLから外部DLLを呼ぶようにしておけばずいぶん楽になることも多いかな、と。いや、簡単に言えばC++BuilderでPhotoshopのプラグインが作れる、だけなんだけど。(リンク)(リンク)