連載 / perl 活用のヒントー① ・ relaytcp. pl に relaytcp としてコヒーする。この場合は、以下のコマ コマンドを置くディレクトリ、たとえ ti/usr/local/bin たとえば、、 / usr / b ⅲ / perl " に書き換える。そのうえで、 という言当の perl" を Perl インターフリタの絶対ノ、ス、 # !perl そして、 relaytcp. pl の 1 行目の、 $ cp * . pm /usr/1ib/per15/site-per1/Net/Re1ay レクトリを作ってから、以下のコマンド行を実行する。 クトリを作成し、そのなかにさらに、、 ReIay " というディ ィレクトリだとすると、そこにます、、 Net" というディレ usr/lib/per15/site-perl が perl のモジュールを置くデ ュールを↑褓内するディレクトリにコピーする。たとえは、 これらのうち、 *. pm のファイルは Net::Relay::* モジ ンド行を実行する。 74 してコピーする。 クトリ、たとえは、 /home/perlmonk/bin に relaytcp と そのうえで、 relaytcp. pl を自分用のコマンドのディレ use lib ) /home/perImonk/1ib/per15 ) ; 2.1 行目と 2 行目のあいだに以下の行を挿入する。 1.1 行目を自分の環境に合わせて書き換える。 そして、 relaytcp. pl に対して以下の変更を加える。 $ cp *. pm /home/per1monk/1ib/per15/Net/Re1ay から、以下のコマンド行を実行する。 そのなかにさらに、、 Relay " というディレクトリを作って としよう。この下に、、 Net" というディレクトリを作成し、 る。たとえば、 /home/perlmonk/lib/per15" だった リの下に PerI のモジュールを置くディレクトリを用意す ザーについて考えてみよう。ます、ホーム・ディレクト ホーム・ディレクトリが、、 /home/perlmonk" のユー ルしたい場合は以下のようにする。 ことが多い。ー殳ューサーが自分のためだけにインストー 業は root 権限をもたない一ヨ殳ユーサーにはおこなえない は誰でも relaytcp を使えるようになる。しかし、この作 以上のインストールイ↑ミ業の結果、そのマシンのユーサー これで、 relaytcp のインストールは完了である。 $ cp relaytcp. pl /usr/local/bin/relaytcp 図 2 ActivePerI のインストーラの醯 心、年を一 i は印 0 Setup Wiza 「 d Welcome tO the ActivePerl 5.8.0 8 朝旧 806 STATE Cancelto exit the Setup Wizard. your ( ompu に e 「 . CliCk Next tO continue 0 「 「 emove ActivePerl 5.8.0 6 朝旧 306 f 「 0n1 日「 e installed 00 ycur 00E0 リ : e 「 0 「 even tO the way ActivePerl 5.8.0 3uild 806 featu 「 es The Setup Wizard will 引に w you to change ÄæPerl UNIX MAGAZINE 2003.10 Windows での操作とインストールについても説明しよ UNIX 上での操作の概要とインストール方法に続いて、 Windows での操作とインストール ールできるだろう。 以の竹業で、一殳ューサーでも relaytcp をインスト ある。 にとって不足のない perl 環境を簡単に実現できるからで ル、各種の文書がパッケージになっていて、多くの利用者 るのは、標準的なモジュールや Win32 API 用のモジュー それにもかかわらす、この連載で ActivePerl を使用す どないだろう。 実行に関しては、 cygw ⅲの Perl でも困ることはほとん ほうカイ更利だろう。また、 こでとりあげるプログラムの む perl のモジュールをインストールするなら、こちらの ることが考えられる。とくに、 C 言語で書かれた部分を含 のなら、 ActivePerl のほかに Cygwin の Perl を利用す Cygwin を使うことを前提にしている。 Cygwin を使う 次項で述べるように この記事では Windows 上で とができる。 ( 図 2 ) 。これは同社の Web サイトから無償で入手するこ 環上竟として ActiveState の ActivePerl 5.8 を使用する きほど述べたように、この連載では Windows 上の Perl ます、 PerI の実行環境がないことには始まらない。さ ActivePerl
連載 / UN Ⅸ便利帖ー 0 —enable—c 、 Vnn —enable—unsafe—path IPv6 を有効にする。 —enable—ipv6 ・標準では無効なもの kWnn ( 韓国語 ) を作成してインストールする。 —enable—kYVnn cWnn ( 中国調を作成してインストールする。 uum を作成してインストールする。 —enable—client ルを作成することを許可する。 Wnn のサーバーカ鰾準のディレクトリ以外にファイ UNIX MAGAZINE 2003.10 ングルューサー・モードのときに参照される " と書かれています。 4 /etc/master ・ passwd の冒豆に分に注釈として、、このファイルはシ % sudo niload passwd . く /tmp/passwd User : /dev/null : /dev/null ' > > /tmp/passwd % echo ' wnn : * : 69 : 69 : : 0 : 0 : Wnn % nidump passwd . > /tmp/passwd のようになります。 あります。こ作をコマンドラインで実行すると、以下 NetInfo のデータベースにそのユーサーを追加する必要が ていません 4 。そのため、新規にユーサーを作成するには、 /etc/passwd ファイルはありますが、ふだんは利用され UNIX ライクな OS と同様に、 /etc/master. passwd や というイ督目みを利用してユーサーを管理しています。他の Mac OS X では、 lookupd というデーモンが NetInfo 前にこのユーサーを作らなくてはなりません。 wnn というューザーが必要になります。インストールの 次にインストールですが、 Wnn では jserver を動かす % make コマンドを実行します。 ので、これを眺めたあと、これまたいつものように make すると、例によっていろいろなメッセージが出力される % . /configure ——disab1e—cWnn ——disab1e—kWnn ました。 不要です。 configure スクリプトは次のようにして実行し 今回は日本語しか利用しないので、 cWnn や kWnn は ます、 nidump コマンドを用いて NetInfo 上の pass- wd データベースをファイルにダンプします。このファイ ルは /etc/master. passwd と同しフォーマットです。 このファイルに echo コマンドを使って wnn という ューザーのためのエントリを追加します。 UID と GID は手近にあった FreeBSD のものを参考にしました。ま た、このユーサーがログインすることはないので、ログイ ンシェルとホーム・ディレクトリは / dev / nu Ⅱにしてお きます。 最後にⅲ load コマンドを用いて、このファイルを新し い passwd データベースとして NetInfo に登録すれは作 業終了です。あらためてインストールを続けます。 % sudo make install この結果、 /usr/local/lib/wnn に各種設定ファイル や辞書がインストールされ、 /usr/locaI/bin/Wnn4 に jserver や各コマンドがインストールされます。 jserver の起動 インストールが無事に終了したら jserver を起動してみ ます。 % sudo /usr/IocaI/bin/Wnn4/j server Starting 」 server jserver (FreeWnn 1 . 1 . 0 P120 ) Nihongo Mu1ti C1ie Reading /usr/10ca1/1ib/wnn/ja—JP/dic/pubdic/kih 0取 . diC Fid = 1 ( 中略 ) Reading /usr/local/lib/wnn/j a-JP/dic/pubdic/fu1 1 . fzk Fid = 12 Finished Reading Fi1es これで日本語変換がおこなえるはすですが、 jserver を いちいち手動て起動するのは面倒なので、 OS のプート時 に jserver も起重丿けるような f 廱トけを作ることにします。 Mac OS X では、 OS プート時に起動される各種デー モン用の起動スクリプトが /System/Library/Startup- ltems と /Library/StartupItems に収められています。 システム標準のものは前者に、それ以外は後者に入れてお くことになっているようです。 OS はこれらのディレクト リに置かれたサプディレクトリを探索して、実行属性の付 いたスクリプトを順に実行します。実行の順序は、同しサ プディレクトリに置かれた StartupParameters. plist と いうファイルによって制御されます。 141
がある。ついでに % cd % ls -aF . bash—logout 別できるように、一 F オフションも指定する。 普通のファイルかディレクトリかも区 プログラマーが 自宅で使う LJNIX 自重加勺に作成される。最初に作成されるファイルは、すべ て . ( ピリオド ) て始まっている。これを確認するには、 ls コマンドに一 a か -A オフションを付けて実行する必要 特集 PWD=/etc . bash—profile . bashrc . emacs . gtkrc . kde / Red Hat Linux 9 では、最初にこれらのファイルが各 ユーザーのホーム・ディレクトリに用意されるようだ。 最近の UNIX システムには、さまざまなシェルが用 意されている。これらの多くでは、ホーム・ディレクト リに置かれている、、 . * rc " というファイルにいろいろな設 定を記述しておくことができる。たとえは、、 bash なら ~/. bashrc 、 csh であれは、 ~/. cshrc といったぐあいだ ( 、、 ~ / " はホーム・ディレクトリを表す ) 。シェルは起動さ れたときにこれらのファイルの内容を参照するので、自分 のホーム・ディレクトリに置いておけは独自に設定を追加 することができる。 さて、さきはどの ls コマンドの実行結果からも分かる ように、ユーザー・アカウントを作成すると、 bash 用の 疋ファイル . bashrc はホーム・ディレクトリに作成さ れるが、 csh 用のファイルはみあたらない。こちらは、自 分で作らなくてはいけないようだ。 これらのシェルの設疋用ファイルには、何を言当主すれは いいのだろうか。もちろん、 . cshrc の書き方 ( 文法 ) に違 反しないかぎり何を書いてもかまわないが、自分の環境に 何が足りなくて、それを実現するにはどこを変更すれはい いのかが分からなけれはお手上げである。最初に、デフォ ルトでどのような設定がおこなわれているかを石忍するの か基本である。 なにげなく、、環境 " と書いたが、この場合の竟とは何 を指すのだろうか。シェルに関していえは、、、自分の環 境 " の大部分はシェル変数と環境変数にかかわるもので ある。 シェル変数というのは名前のとおり、シェルの重川徂こ影 響を与・える変数であり、シェルが自重加勺に設定しューサー は変更できないものや、ユーサーが自分の設定にあわせて UNIX MAGAZINE 2003.10 変更できるものもある 8 。 bash では、現在の作業ディレクトリを表す PWD や、 ホスト名を表す HOSTNAME などのシェル変数がシェ ルによって自重加勺に設疋される。 csh では現在のイ 1 三業ディレクトリは cwd シェル変数に 設疋されるが、ホスト名か、設定されるシェル変数はない。 一方、環境変数のほうは、いろいろなコマンドか起動す るときに参照する。コマンドは、環境変数に設疋されてい る値に従って、その動作を変えたりするわけである。 ますは、シェル変数をみてみよう。 bash でも csh で も、 set コマンドをオフションなしで実行すると、設定さ れているシェル変数が表示される。この set はシェルの 組込みコマンド ( 内部コマンド ) なので、 set という名則 のファイルがどこかにあるわけではない 9 。 ・ bash で実行した場合 $ set BASH=/bin/bash PS4— PS2= cwd /home/ziggy/ argv addsuffix COLORS /etc/DIR_COLORS . xterm % set ・ csh で実行した場合 dirstack dspmbyte /home/ziggy/ euc 次は環境変数である。現在の環境変数を表示させるに は、一ド記のように printenv コマンドを使う。 % printenv SUPPORTED=en_US. UTF—8 : en_US : en : j a_JP . eucJP=> 9 bash はシェル変数と環竟変数を区別しないので、 set コマンドてま鼬竟変 ある変数を竟変数としている。 する変数をシェル変シェル以タ P ) コマンドにも景をり・える可育旨生が に区別していることが多い。こク芋集では、シェル自身カ吶部で言名 系のシェルはシェル変数と工を変数を区別しないが、 csh 系のシェルは シェルによって、シェル変数という用記 ) 意叫訒なることもある。 sh 8 数まて表示される。 45
—retropt —noclean ( 応募者多数の場合は抽選といたします。なお、当選 に特製 QUO カード ( 2 , OOO 円ぶん ) をさしあげます こ回答をお寄せいただいた皆様のなかから、 5 名様 して活用させていただきます。 皆様からお寄せいただいたこ意見は、責重な資料と 月 ] 7 日です ) 。 うえ、必要事項をこ記入ください ( 締切は 2003 年 1 0 トを実施しています。下記の Web ページにアクセスの 今後の企画・編集の参考とするため、読者アンケー す。 いつも弊誌をこ愛読いただき、ありがとうこざいま すると、 req-O() 、 res-OO から req-99 、 res-99 まで作 —count オフションて寸旨定する。 —count 0()" と孑日正 1 つのサプディレクトリに置く記録ファイルの数は tcp/OI の下の req ー 000 、 res-0()0 になる。 で作成されると、次の言当求ファイルは /var/tmp/relay 下に作られる。言当求ファイルが req ー 999 、 res-999 ま した場合、言当求ファイルは /var/tmp/reIaytcp/00 の —dir /var/tmp/relaytcp —supercount 00 " と孑日疋 に作成される。 は言当求ディレクトリの在・ドではなく、サプディレクトリ プディレクトリ名の初期値を指定すると、言求ファイル ることになる。そのようなときに、このオプションでサ の言求ディレクトリに膨大な数の言当求ファイルか置かれ relaytcp を長時間運用して中継内容を言当求すると、 1 つ —supercount NUMBER る。 tcp. opt というファイルにオフションの内容を記録す 指定される場合に備えて、記録ディレクトリの relay- relaytcp は、次回の起重加に—retropt オフションが というオフションて起動したのと同じになる。 —target www.perl.org/80 —record て起動すると、 連載 / Pe 日活用のヒントー① うオフションで起動したあと、 読者アンケートのお知らせ 今回は、 relaytcp のインストール方法と使い方を説明 した。実際にインストールして使ってみていただけ川まさ いわいである。 次回は、 relaytcp のフログラムコードを解説し、拡張 方法を紹介する予定である。 ( いまづ・ひでよモルガン・スタンレー証券 ) 成したあとで次のサプディレクトリが使われる。 —target 月 0S7 。 : PO 月 7 ' 中継先のホスト名とポート番号を指定する。 ー no]verbose このオフションを指定すると、動 ( 大況を示すメッセー ジがより詳しく表示される。 ☆ 者の発表は発送をもって代えさせていただきます ) 。 今後ともこ愛読のほど、よろしくお願い申し上けま す。 処」 0 10 UNIX MAGAZINE 編集部 Linux PC アスキ - Shes. net a ( デザインは変更されることがあります ) こ注意 : 雑誌公正競争規約の定めにより、この懸賞に当選された方は、本号のほかの懸賞に入選できない場合があります。 ・ ( 株 ) アスキー IJNIX MAGAZINE 読者アンケート専用 IJ 日 L http://mkt.uz.ascii.co.jp/unixmag/ UNIX MAGAZINE 2003.10 85
特集 XCAST6 図 11 VIC のインストール $ tar zxvf vic ー 2 .8uc1 ー 1 . 1 . 3 . tar $ cd vic ー 2 . 8uc1 ー 1 . 1 . 3 $ patch -pl く /tmp/1inux-xcast6 1 . 1 . 3 . diff $ cd common. new ; sh . /configure make —vic-2.8uc1 ー・ —enab1e—ipv6 $ cd .. / tcl ー 8.0/unix/; sh . /configure; make $ cd .. / .. /tk—8. O/unix/; sh . /configure; make $ cd .. / .. /vic/; sh . /configure —enab1e—ipv6 make $ su # make install gcc : required : そのようなファイルやティレクトリはありませ gcc : one : そのようなファイルやディレクトリはありません VIC のコンノ、イル中に フションを指定する。 figure を実行するときは、かならす一 -enable-ipv6 オ C0mm011 (RAT) 、 vic および rat ディレクトリで con- る ( 図 11 ~ 12 ) 。ただし、 common. new (VIC) および ん にある Makefile の LIBS に指定されている以下の文字列 ・ common. new/examples/rtp ・ C0Ⅱ1Ⅱ10n. new/tests というエラーで終了してしまう場合は、 —L .. /src ・ comrnon. new/examples/rtp/Makefile LIBS LIBS -L.. /src $none required $ 0 Ⅱ e required ・ common. new/tests/Makefile を削除し、再度 make を実行す川まよい。 図 12 RAT のインストール $ tar zxvf rat—4.2.22. tar . gz $ cd rat ー 4 . 2 .22 $ patch —pl く /tmp/1inux—xcast6—rat—4.2.22. 疇 - diff $ cd common; sh . /configure make $ cd .. / tc1 ー 8.0 / u 取 ix / ; sh . /configure ; make $ cd .. /.. / tk ー 8. O/unix/; sh . /configure; make —enab1e—ipv6; \ $ cd .. / .. /rat/; sh . /configure make $ su # make install 以前の実装では、 VIC や RAT の引数に参加者のアド レスをすべて指定する必要があったが、 xcgroup を使え はこの手間が省けるようになった。 xcgroup のソースは、 libxcast と同様に XCAST6/ BSD 版のものを流用する。必要なファイルは、一ド記の 1 つだけである。 ・ xcast6-0.1.2-1-xcgroup. tar ・ gz なお、 xcgroup のインストールには Ruby 1.6. x が必 要なので、使っているマシンに入っていない場合はあらか しめインストールしておこう。 手順は VIC や RAT と同様で、ソースを展開し、作成 された各ディレクトリで configure と make を実行する だけである。 configure を実行するときは、以下のように かならす --enable-ipv6 オプションを付ける。 —enab1e—ipv6; \ tar zxvf xcast6—O . 1 .2—1—xcgroup . tar ・ gz LIBS LIBS $none $none -L$ (CSRC) -L$(CSRC) cd xcgroup sh . /configure —enabIe—ipv6; make $ su # make insta11 これで、 XCAST6 を使ってオンライン・ 使ってみよう 住 用するための手順をみていこう。 グをおこなう準備ができたことになる。次に ーアイン これらを利 xcgroup のインストーノレ UNIX MAGAZINE 2003.10 スを取得するために使われる。 ルーティング拡リを、ツダ内にオ褓内する送信ノードのアドレ を取得し、 VIC や RAT へ渡すことができる。これは、 れは、 XCAST6 に参加しているメンバーのアドレス情報 リティ xcgroup をインストールする。 xcgroup を利用す 最後に、グルーフ・マネージメントをおこなうユーティ 当然のことながら、映像と音声を用いたオンライン・ ーティングをおこなうには、カメラテンヾイスとサウンドデ バイスが必要になる。カメラデバイスて取り込んた映像は VIC で送信し、マイクから入力した音声は RAT で送信 131
似ている。 1 つのファイルハンドルを入力と出力の両方に 使うからである。 一方、クライアントでは以下の順でソケットに関する処 理か進む。 1. socket() でソケットを作成する。 2. connect() てサーバーに接続する。 connect() により TCP/IP 接続か不寉立したあとは、サ ー側と同様にソケットのファイルハンドルをファイ ル入出力の関数にケえ、サーバーにデータを送ったりサー ーからデータを受け取ったりする。 relaytcp は、 TCP/IP 接続を受け付けて中継するため に、中継先と TCP / IP 接続をおこなう。したがって、サ ーとクライアントの機能をあわせもっことになる。 telnet を HTTP などのクライアントにする 「 relaytcp の概要」の項で示した操作は、 HTTP 要求を 手作業で入力し、生のままの HTTP 応答を得るものだっ た。 HTTP は文字べースであり、このように手作業で要 求を送るのはさはど難しくない。 HTTP のもっとも単純 な形式である GET 要求は、以下のように 1 行目で URL のパスの部分を指定し、続いて空行を送オしは完了する。 GET ノヾス HTTP/I . 0 連載 / PerI 活用のヒントー① telnet コマンドは、通常は遠隔ログインに使われるが、 任意のホート番号に接続することもできる。 telnet を使っ ーに接続し、 HTTP 要求を手作業で入力 て从 b サー して、 Web サーバーの稼重川大況について最低限の確認を するという手法は慮えておいて損はない。 インターネットで使われるプロトコルは、 HTTP のほ かにも SMTP 、 POP3 、 IMAP など文字べースのもの が多く、それらのプロトコルを telnet を使って手作業で 、、喋る " ことができる。 relaytcp のコマンド行オプション こで、 relaytcp のコマンド行オフションを、これま でに登場したものも含めてすべて紹介しておこう。これは 参照マニュアル的なものなので、必要に応じて読んでいた だきたい。 UNIX MAGAZINE 2003.10 —class CLASS relaytcp は、デフォルトでは Net::Relay::TCP クラ スを使って通信の中継、言当求をおこなうが、 Net::Relay ::TCP の任意のサプクラスを使用した中継、記録も可 能である。このオフションでは、 Net::Relay::TCP の代わりに使用するクラスを指定する。詳しくは次回以 降で説明する。 no]clean -clean オフションを指定すると、起重加与に言当求ファイ ルをすべて削除する。このオフションは—record オフ ションか有効なときのみ意味があり、無効のときは無視 される。 以 - ドの説明は、 -record オフションか有効であることを 前提にしている。 —clean オフションカ甘旨定されていない場合、あるいは -noclean オフションカ甘旨定されている場合は、起重加芋 に記録ファイルは削除されす、既存のファイルに続け て記録ファイルを作成する。 たとえは記録ディレクトリ ( カレント・ディレクトリ または—dir オフションて指定したディレクトリ ) に req ー 000 、 req ー 001 、 res ー 000 、 res-()()l カゞある状態で、 relaytcp を—clean オフションなし、—record オフシ ョン付きて起動すると、最初の接続の内容は req ー 002 、 res-002 に記録される。 以則に relaytcp を—supercount オフション ( 彳あ ) 付 きで実行したことがあれば、記録ディレクトリにサプ ディレクトリが作られている。この場合、 relaytcp を -clean オフションなしで起けるとサプディレクトリ を認識し、最後に使われた ( と思われる ) サプディレク トリに、ファイル名か重複しないように言求ファイルを う言当求ファイルがあるとする。その場合、 relaytcp を 02 には req -000 ~ req ー 123 、 ディレクトリがあるとしよう。 たとえは、言当求ディレクトリに 00 、 01 、 02 というサプ 作成する。 res-000 ~ res-123 とい そして、ディレクトリ 83 000 の、、 000 " の部分を指定する。 -record オプション 記録ファイル名の末尾の数字、つまり req ー 000 、 res- —count : 4R た UA イ召月 [ : E 〃ー召 E 月 ] 02 / req ー 124 、 02 / res -124 を作成する。 -clean なして起測けると、最初の言当求ファイルとして
か有効なときのみ効果があるのは -clean オフションと 同様である。 ます、 "—count START-NUMBER " と指定した場 合について説明しよう。これで言当求ファイル名の末尾の 部分の匆月値を変更できる。たとえば "-count 01 " と すれは、 req-01 、 res-01 か最初の接続に対する言求フ ァイルの名前になる。そして、 "—supercount NUM- 召月 " オフションか有効な場合、 req_99 、 res_99 の次 の言当求ファイルは別のディレクトリの req-01 、 res-01 になる。なぜなら 99 の次は 100 なので、匆月値の 01 よりも桁数か増えるからである。ただし、 -supercount オフションか有効でなけれは、 —count 01 " と孑旨定し ても req-99 、 res-99 の次は req ー 100 、 res-100 になる。 次に、—supercount オフションが有効で、 "—count 00 : 49 " と指定した場合にどうなるかを説明しよう。ま す、記録ファイル名の末尾の部分の初期値が 00 とな り、 req-OO 、 res-O() か : 最初の言当求ファイルの名前にな る。そして req-49 、 res-49 が作成されると、次の記 録ファイルは別のディレクトリの req-00 、 res-00 に なる。 —[no]daemon このオフションは Windows 上では使えす、 UNIX 上 でのみ使用可能である。 relaytcp は、—daemon オプ ションを指定して起動するとデーモンになる。つまり 自動的にバックグラウンドで動作し、起動された端末 から切り離される。また、プロセス ID が記録ディレク トリの relaytcp. pid に、エラーメッセージなどが re- laytcp. err に言当求される。 —daemon は長時間にわたって relaytcp を動かし続 けるためのオフションである。 Web サーバーと Web プラウザの通信を一日勺に記録するような場合は、この オフションを使わすに起動したほうカ鮗了させやすい。 relaytcp がフォアグラウンドて動いているなら Ctrl-C などで終了できるし、バックグラウンドて動いていても 、、 kill % 1 " などのコマンドで終了できる。 —dir 〃 / 月 記録ディレクトリを指定する。記録ディレクトリとは relaytcp が記録ファイルなど書き込むディレクトリで ある。 -dir オプションを指定しなけれは、カレント・ ディレクトリが記録ディレクトリになる。 連載 / Pe 日活用のヒントー① 84 —hostname 〃 0S71 ル員財 E —httphosthack オフションで relaytcp に Web サー ノヾーへの通信を中継させる場合に、このオプションが必 要になることがある。 ます、 relaytcp を動かすホストが Web プラウサを 動かすホストとは異なる場合が挙げられる。このとき、 hostname コマンドの出力が FQDN ではないなら、 FQDN を—hostname オフションでオ旨定する。 次に、 relaytcp を動かすホストが Web プラウサを動 かすホストと同じ場合か挙げられる。 Web プラウサか ら、、 http://localhost: ポート番号 / " という URL で relaytcp にアクセスするなら、 —hostname local- host" と指定する必要がある。 ー [no] httphosthack relaytcp の接続中継先が Web サーバーの場合に指定 する。指定しないと Web プラウサからみて relaytcp が Web サーバーとして正しく動作しない。 なお、このオフションは "—class Net::Relay::TCP HTTPHostHack" と等価である。 —myport ル U スイ召 E 召 relaytcp が接続を受け付けるポート番号を指定する。 このオフションがない場合は、 -target オフションで 指定したポート番号が使われる。 IIO recor relaytcp は、—record オフションを指定すると中継し た通信内容をファイルに言当求する。 クライアントから relaytcp に送ら中継先に送っ たデータは req ーで始まる名前のファイル、たとえば req-()()() に言当求される。 中継先から relaytcp に送られ、クライアントに返した データは res- て始まる名前のファイルに言当求される。 —retropt 前回の起重加のオフションを引き継ぐことを指定する。 ただし、 -dir オフションは引き継がない。このオフショ ンで引き継いだオフションがコマンド行でも指定された 場合は、コマンド行の内容が優先される。そのため、引 数をもたない—record や—clean などのオフションは、 すべて—norecord や—noclean などの否定形をもって いる。 —target www.perl.org/80 —record —clean ' とい UNIX MAGAZINE 2003 ユ 0
連載 / Pe 日活用のヒントー① 図 3 Cygwin のインストーラの醯 Gygrun S u 既 - 第な、し UNIX MAGAZINE 2003.10 盟 p : 〃 so Ⅲ ces 北「 cy 朝 〔叩屮ゅ 2 度旧 . 2 1 R H まー 8. S 叩 . e ve 博 .34025 朝一 Cy en ⅶ 0 可「引ⅵ et ト 8 GNIJ packages T 厖 dw 盟 e 」“回 1 麟肥れ訓胡 d 叩 d 加 Cygwin Net ReIease Setup Program 3 http://www.cygwin ・ com り、 PATH には / usr / 旧 cal / b ⅲが含まれているとしよ に /usr/local/bin/test. pl という Perl フログラムがあ 実行しようとすると、以下の点が間題になる。 Cygwin 上 Cygwin から ActivePerl を使って Perl フログラムを Cygwin 上で Perl プロクラムを起動するための工夫 を j 尺し、 telnet をインストールする必要がある。 Cygwin のインストーラで Net カテゴリーの inetutils 使えるとはかぎらない。インストールされていなけれは、 ある。 Cygwin がインストールされていても telnet が いうわけではなく、 Cygwin の telnet をイ目する必要が 介した telnet の操作は、 Cygwin からおこなえばよいと dows フログラムも起動できる。「 relaytcp の概要」て紹 Cygwin からは、付属のコマンドのほかに一殳の Wi1 ト ない。 ような操作は Cygw ⅲ上でないと説明したとおりになら 作、たとえは telnet を使って relaytcp にアクセスする w ⅲがなくても動作する。しかし、フログラムに対する操 この連載でとりあげる Perl のフログラム自体は、 Cyg- ストールは専用のインストーラでおこなう ( 図 3 ) 。 操作を実現するソフトウェアで、無償て利用できる。イン Cygwin は、 Windows 上で UNIX ふうのコマンドや を指定することだけである。 いは、コマンド名として relaytcp ではなく relaytcp. pl cygw ⅲ 3 上でもほは、そのままおこなえる。 UNIX との違 これまでに述べた relaytcp の操作は、 Windows の Cygwin つ。この場合、 test. pl を起測けると以下のようになって しまう。 $ test. P1材 can't open perl script "/usr/local/bin/test . p NO such file or directory こうなる理山は、 ActivePerl は Cygwin を使ってい ないのに、 Cygwin のなかで動いているシェルが内部だ けで有効なパス /usr/local/bin/test. pl を渡しているか らである。 す。 し、 test. pl の絶対パス /usr/local/bin/test. pl を渡 4. そこで、シェルは /cygdrive/c/Perl/bin/perl を起動 /bin/perl にあると判断する。 ィレクトリを順番に探し、たとえ X/cygdrive/c/Perl 3. 次に、シェルは perl をみつけるために PATH 内のデ を使う必要があることを知る。 pl の 1 行目の、、 #!perl" を読み、 Perl インタープリタ かし、 Cygwin ー E ではシェルが /usr/local/bin/test. 単純に /usr/local/bin/test. pl を起動すれはよい。し トの 1 行目は OS のカーネルが解釈するので、シェルは 2. UNIX 上であ川ま、 Perl フログラムやシェル・スクリフ /usr/local/bin/test. pl カ色対・パスだと判断する。 PATH 内のディレクトリを順番に調べる。その結果、 1. シェルは、、、 test. pl " というコマンド行を受け取ると、 この様子を詳しく説明すると以下のようになる。 75 る。 Cygwin で栄作は以下のとおりである。 1. Windows 上にディレクトリ c:*usr*local を作成す 避できる。 完全ではないが、以下の操作をおこなえはこの間題を回 pl を渡さなけ川まならない。 るので、すくなくとも /cygwin/usr/local/bin/test. きである。 ActivePerl は、、 / " と、、¥ " を読み替えられ test. pl などになり、 ActivePerl にはこのパスを渡すべ pl は Windows では c:*cygwin*usr*local*bin* 了してしまう。 Cygwin 上での /usr/local/bin/test. その結果、さきほどのエラーメッセージを出力して終 bin*test. pl と解釈して読み込もうとするが失敗する。 /local/bin/test. pl を Windows 上の *usr*local* 5. ActivePerI は Cygwin のことを知らないので、 /usr
第島等既信に信第信 : に鬲等 1 信信工信等 : 等を第 3 勢を : 毟等工 : 信 ' に信信信 " 物第信第 3 に信信第信第 oldies に投稿された記事をもとに、寄せられた情報を付 加して整理したものです。 今月の fj. sources* Subject: MkphotohtmI Ver. 1.0 (DOC) Message-lD: くm21XW8d0b9.fsf@owlin.tksa.gr.jp 〉 Sub. 」 ect: MkphotohtmI Ver. 1.0 (BIN) Message-lD: (m2y8ygc9e」.fsf@owlin.tksa.gr.jp 〉 作者山田邦博さん デジタルカメラを使ってま彡した大量の写真を整理し て、 Web プラウザで見られるようにするツールです。 UNIX マシン一ヒで動作し、ディレクトリを利用してテー マごとにツリー構造で管理するそうです。 Windows 用 の GUI をもつデジタルカメラ画像管理ツールとは異な り、設疋ファイルとスクリプトによって、画像の整理や HTML ファイルの生成ができるのカ畤徴だそうです。 このツールは、 http://www.tksa.gr ・ jp/king/Soft ware/Mkphotohtml/index. html からも入手すること ができます。 Subject: prov ー 1.0 ーー Overlay printing utility for UNIX- like systems Message-lD: <bh6pv6$9uO$I@nsvn01.zaq.ne.jp 〉 作者 . Masahiko に 0 さん UNIX マシン一 E で利用できる、フォーム・オー イ機能をもつ印刷ツールの公開のお知らせです。印刷対象 はテキストファイルや CSV 形式のデータで、オーバー レイ定義データを重ねて PostScript 形式の印刷データを 生成します。オーバーレイ定義の内容は PostScript のマ クロを使って指定できます。なお、生成した PostScript データを印刷する機能はないので、別途用意する必要があ ります。 このツールは http://myh.no-ip.org/&prov/から入 手できます。 ・今月の *. sources. * タイジェスト Newsgroups: gnu. emacs. sources Subject: mkback. el v. 1.4 Message-lD: く 87znj3joha.fsf@gnufans.net 〉 作者 . Deepak Goel さん 各種のファイルをバックアッフする Emacs Lisp プ ログラムです。このツールは GNU Emacs 内から対話 UNIX MAGAZINE 2003.10 的に操作したり、 Emacs をバッチモードて呼び出して動 作させたりすることかできます。 バックアッフ対象のファイルやディレクトリは、同し ディレクトリや上位ディレクトリなどの、、 backup " とい う名前のディレクトリにコピーされます。その際に、日付 や時咳明青報を付けてバックアップされます。バックアッ フ。用のディレクトリ名や日付 / 日該情報のフォーマットな どは自由にカスタマイズできます。 このツールは、 http://www.gnufans.net/&deego/ emacspub/lisp-mine/fastron/ からも入手できます。 Newsgroups: gnu. emacs. sources Subject: XWEM ー X Emacs Window Manager Message-ID: く f4cb3f06.0307282238.ba1eObd@ posting.g00g尾.com 作者 Zajcev Evgeny さん Emacs Lisp で書かれた X11 用のウインドウ・マネー ジャーです。このウインドウ・マネージャーを使うと、 GNU Emacs のバッファ管理と同様のインターフェイ スで XI 1 のクライアントを管理できます。つまり、通常 の GNU Emacs では各バッフア内に編集対象の文書や Emacs Lisp アプリケーションがありますが、このウィ ンドウ・マネージャーの GNU Emacs ふうのフレーム のなかには X11 上て新川するアプリケーションがあるの です。アプリケーションの管理にはキーポードを使用し、 GNU Emacs のような感覚でフレームを切り替えたり、 分割、削除、移動したりすることができます。 これまで、 GNU Emacs 上で各種のツールやアプリ ケーションを動かすために、 Emacs Lisp て斤規にプロ グラムを作成したり、外部のプログラムを動かすフロント 工ンドを用意したりする試みはいろいろとありましたが、 発想を変えてウインドウ・マネージャーを GNUEmacs のようにしてしまうとはおもしろいですね。 このウインドウ・マネージャーは http://savannah. nongnu ・ org/projects/xwem/から入手できます。 159
連載 /JavaServer Pages—@ 図 1 Jakarta プロジェクトのパイナリ・パッケージのタウン すべて $TOMCAT-HOME/webapps ディレクトリの ロード・′く一 " 、ン 下にコピーしてください ($TOMCAT-HOME は Tom- ~ 方イル ( E ) 編裏 ( 印表示 ) ジャンプゆプマーり⑧ツール任 ) ウインヘルプ cat をインストールしたディレクトリ ) 。この操作により、 人 / - , ホーム検常翁約いコプカマーク ロ 次の 8 個の *. war ファイルがコヒーされます。 望ー、 . 第 J 歌 3 を - 日を y [ 前め 0 ・ struts-blank. war ・ strtlts-documentation. war ・ struts-example. 、 ・ struts-exercise-taglib. war ・ struts-template. war ・ struts-upload. war ・ struts-validator. war ・ tiles-documentation. war すでに Struts 1.0.2 がインストールされている場合は、 最初の 6 個のファイルが重複します。トラブルを避ける ために、旧いファイルとそれらを展開して作成されたディ レクトリを削除 ( または移動 ) してから、新しいファイル をコピーしてください。 あとは Tomcat を起動すれは、 *. war ファイルが自動 的に $TOMCAT-HOME/webapps ディレクトリの下 に展開され、プラウザから参照できるようになります。 取に ・ http://ホスト名 :8080/struts-documentation/ ・ http://ホスト名 :8080/struts-example/ などを表示して動イ御寉認をしておきましよう。 私が Struts 1.1 をインストールし、仕上げの動作確 訒にとりかかったのは、脳味噌か腫眠を要求し始めた丑 三つ時でした。眠気に負けそうな脳味噌をなだめつつ、 struts-example にアクセスしてみます。私の固定観芯で は、、、 Tomcat も Struts も英語が当り前 " なので、表示 されたページ ( 図 3 ) に意表を衝かれました。 「あれえ、なんで日本語なんだろ ? 」 真っ先に考えたのは、間違えて日本語化された ( おそら く旧い ) バージョンをインストールしてしまったのではな いカ、という ことです。 これは正しい動作です。さきほど紹介したよう しつは、 に、 Struts 1.1 の struts-bean タグライプラリは国際化 されました。 struts-example はこれを利用し、プラウサ 新をを」・止い朝 - 日をいに 00 ェ舅こ - 扣 , 0 ? 伺ロ ReEease Builds. PrOducts Using a m ⅳ「 0 「 We recommend YO リし se a mi 価 0 「い download 「 「引 easeb 朝に 5. butyoumustvenfy'the ⅱ貰 eg ⅱⅣ Ofthe downloaded files し 5 ⅲ g 引 gnatures downloaded f 「 om ou 「山」山要にこに」しⅡ」二 NOt ou 「 builds are available throuQh mi 「「 0 http://jakarta.apache.org/site/binindex ・ cgi 図 2 Struts 1.1 のアーカイフのページ . 方イルの場業表〒 ( ) ジわプ 0 ブゆマーク⑧ツールウインめ物へフ旧 ) 0 ふ冫噬ポーム、複第・しロブッゆ k 自は代代守 1 , 1 - い : 23 酊 :. 09 - 五れ一 2003 16 : 51 33 Jakarta p 「 oject 」阯 : 物第に可舅 . l.. , 」二匹ん -4 塰 四 - J に 2003 17 : 00 16M Jaka 「 ta p 「 oject 新 09- J に 20D3 17 : 圓 226 朝 k 第 - を 3 ー「は当 - 1 . ト「 0 ? ・ p ・ as こ Jakarta p 「 Oj 日員 朝 5 し 1 ー「仁 2 , 09- Ju-, -2003 17 : 圓 33 Jaka 「 ta p 「 Oj ect 29- J リ 1-2003 23 : 26 16M Jakarta project ー動壗 , ・リに - 匚匚な第 . 3 マ 1 29- J げ广 2003 23 : 26 226 Jaka rta proj を 朝 3 は 3- 毆 ! 1 = は 1 . 1 . をは z. 飛 29- J ド 2003 23 : 26 33 Jakarta 0 「 0j3 を 29- J しれ -2003 23 : 36 16M Jakarta project 29- J 団 1-2003 23 : 36 226 Jakarta 0 「 Oj : t jakarta-struts-l. 1. tar. gz または jakarta-struts-l. 1. zip をダウン ロードする Struts 1.1 のインストール Struts 1.1 のインストール手順は、 1.0.2 の場合と同様 です。 ます、ダウンロードしたファイルを展開してください。 以下に示す 3 つのファイルと 3 つのディレクトリが得ら れます。 ・ INSTALL ・ LICENSE ・ README ・ contrib/ ・ lib/ ・ webapps/ contrib は Struts 1.0.2 にはなかったディレクトリで、 表現言語 (expression language) に対応した Struts の タグライプラリ struts-el か含まれています。 次に、 Struts の webapps ディレクトリのファイルを、 ー新第 d 一第をれ計 / にド 1 み / ツ 3 ′し•n らト 3 ー ! トい匚物 p 同ロ 110 UNIX MAGAZINE 2003.10