hirax.net::Keywords::「C++」のブログ



1998-11-17[n年前へ]

スクリーンセーバーを作ろう。 

FilmStrip

(1998.11.17)

 今回はスクリーンセーバーを作りたい。 指定ディレクトリに画像ファイルを入れておけば、それらの画像ファイルを自動再生するスクリーンセーバーである。ただ再生するだけではつまらないので、35mmのポジフィルム風に再生するものにした。フィルムはコダック コダクロームである。独特の濁った色会いが、好きなのだ。

 プログラムの土台にはC++BuilderのCDに付属のスクリーンセーバーのサンプルを使用している。

 今回のテスト版は192x128のランドスケープのKodak PhotoCDの小サイズを基本としている。つまり、35mmフィルムのランドスケープの縦横比である。その他のサイズの画像でも自動的にフィッティングするようにはしてあるが、縦横比が合っていないと、変な風になってしまうから注意が必要である。また、今回はwindowsBitmapファイルにしか対応していないが、いずれ、任意の画像ファイルに対応させる予定である。

 まずは、以下をダウンロードし、filmstrip.lzhを解凍したFilmStrip.scrをシステムディレクトリ(通常、Windows95,98であればWindowsディレクトリの下)に入れ、「サンプル画像ファイル(Image.lzh)」を解凍したものを、C:\のすぐ下に置く。あとは、これでスクリーンセーバーが使えるようになる。とはいっても、WindowsNT4.0でしか動作確認はしていない。

左が実行中の画面、右がその拡大図。実行時にはフィルムが次々と進んでいく。

 設定画面はこのようになる。現在は「撮影間隔」のスピード調整しかできないが、いずれ「モノクロ変換」、「セピア変換」、「ソフトフォーカス」などの画像処理もかけてみたい。モノクロにする時にはフィルムはもちろんネオパンプレストだ。

左が画面のプロパティでFilStripを選択したところ、右がFilmStripの設定画面

 フィルムストリップ形式にすると、映画を連想する人も多いかもしれない。今日は、淀川長治の映画解説の最後の日である。

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-07-22[n年前へ]

失楽園殺人事件の犯人を探せ 

文章構造可視化ソフトのバグを取れ

 今回は
夏目漱石は温泉がお好き? - 文章構造を可視化するソフトをつくる - (1999.07.14)
の続きである。やりたいことは以下の3つ

  1. WordFreqのバグを取る。
  2. 定量化に必要な数値を出す。
  3. とにかく遊んでみる。
である。まずは、プログラムのバグを取ろう。前回、プログラム中にバグがあると書いたが、問題は私がbmonkey氏の正規表現を使った文字列探索/操作コンポーネント集ver0.16の仕様を勘違いしていたことによるものだった。ファイルにGrepを書けた際に、テキストファイル中の一行中に複数の適合する単語が存在した場合に、本来、一番最初に適合した単語の文だけが「適合する単語があったよ」と知らせてくれるのであるが、それを単語全部について教えてくれるものと勘違いしていたのだ。従って、一行中に探す単語が複数登場する場合には結局1回分しかカウントされなかったのである。まずはそれを直してみたい。「GrepでMatchした行中に改めて目的の単語が何回登場するかを調べる」という2段階にすることで今回の問題は解決する。

WordFreq.exe 1999.07.21Make版 wordfreq.lzh 338kB

 本WEBサイトのモットーは「質より量」である。...これはちょっと何だな...「下手な鉄砲も数撃ちゃ当たる」...これもちょと...「転がる石に...(もちろん日本版でなくて西洋版のだ)」といった方がニュアンスが良いかな?... 転がる石は精度を求めないのである。数をこなせば精度が悪くてもいい方角に転がっていくと思っているのだ。モンテカルロ理論である。「遊び」だし。というわけで、これはバグがあった言い訳である。

 さて次は、「定量化に必要な数値を出す」である。前回の題目で使った「ホトトギス」版「坊っちやん」のダウンロード元のWEBの作成者である木村功氏より、前回の話以後にいくつかアドバイスを頂いた。それが「定量化するにはどのようにしたら良いか」ということであった。それについては、最低限の機能をつけてみた。やったのはただひとつ。出現頻度の分散を計算するようにしただけである。この数値と出現平均値を用いて、色々な文章を解析すれば、このプログラムの返す値の出現分布の分散・平均値・有意水準などを導くことができるだろう。色々な時代の、色々な作家の、色々なジャンルの文章を解析し、それらから得られた値を調べてみればもしかしたら面白いことがわかるかもしれない。

 それでは、今回のプログラムを使って遊んでみよう。

 今回用いるテキストは小栗虫太郎の「失楽園殺人事件」だ。
青空文庫 ( http://www.aozora.gr.jp/)
から手に入れたものだ。今回のタイトルどおり、「失楽園殺人事件」において「犯人」を探してみよう。

「失楽園殺人事件」において「犯人」を探したもの

 ラストのほうに向かうに従い犯人の登場が増えて、山場を迎えているのがわかるだろう。「犯人」で検索したら次は探偵の番だ。「法水」で検索し、探偵がきちんと働いているか見てみよう。

「失楽園殺人事件」において「法水」を探したもの

 なかなか出ずっぱりで活躍している。もちろん、探偵役もラストでは活躍しているようだ。

 ここまで見ていただくとわかるだろうが、画面は前回のバージョンとほとんど同じである。前回は、1物理行あたり検索単語は1個までしか見つからなかったが、今回はきちんと複数見つかっているのがわかると思う。1物理行中でもきちんと結果が出るようになったおかげで、文章中から「。」を検索すると、物理行(段落と近いもの)中に含まれる「文」の数を調べることが出来る。妙に長い文節の出現頻度などを調べることが出来るのだ。こういったものは定量化にふさわしいのではないだろうか?

「失楽園殺人事件」において「。」を探したもの

 また、C++プログラマーのあなたは自分のプログラム中から「//」などを検索すると面白いのではないだろうか。コメントの出現頻度が手に取るようにわかるだろう。

 というわけで、今回はバグ修正のご報告である。

2000-06-18[n年前へ]

KH IconRewrite98 1.20  

from Vector。for C++Builderのアイコントラブル用。

2000-09-18[n年前へ]

BCC5.5 

フリーになったBorland C++ Compiler 5.5を統合環境で使うというのも便利そう。といっても、私はTextPadのユーザーでないので関係ないが。ただし、下のリンクではBorland C++ Compiler 5.5とBorland C++Builderがごっちゃにされているのが誤解を招きそう。(リンク)(リンク)(リンク



■Powered by yagm.net