省 mail インターネット時代の情報基地 Z-mail は、 PC-LAN べース、 Mac ネットワーク、 IJNIX ネットワーク、またそれらの混在型のネットワーク環境で利 用できるクロスプラットフォーム・電子メール・ソフトウェア で魂全社規模でのコミュニケーションシステム構築のイン フラの道具としてこ利用ください。 ・オープ子メール・オープンて、マルチプラットフォーム環境 て、の利用が可能。遠隔地などのリモート活用も可能て、す。 ・世界標準による相互接続性・ SMTP 、 MIME 、 POP-3 、な どとの相互接続を保証。 TCP/IP 、 PPP 、 SLIP サポート。 ・効率の良いメッセージ管理・用途に応じたさまざまな使い方 が可能。ルールにもとづく自動的な処理の指定が可能て、す。 ・柔軟な構成管理・利用者のレベルに合わせたカスタマイズ が可能 ( システム管理が容易て、す。 ヘルブ ( 印 UniX U niX + ma TCP/IP SMTP MIME UNIX MAC WINDOWS Z-MA 儿 Time Windows ね「 uccfa2 ェ c lr 、 fo ・ la OX SERVER 町「住ゆ : ー来週の予定 Windows 山 : 平週の予定 「 n : 、 iaki き」 g 、いくい ) レ 0 Fri. 23 Feb 愴 1 圧 17049 、 : 0 : 、 To: い -uject: 来週の予定 長野 , 、出疆ま。、 0 ・←ー、 0 件 = ろ 0 願 0 、ます . Mac Mac Z-MaiI for Windows *Z-maiI は NCD S0ftware CO 「 poration の登録商標てす。 その他、商品名・会社名は各社の商標または登録商標てす。 印Ⅱ S ' CHOICE 日本 NCD 谷 03 ー 5276 ー 2411 〒 102 東京都千代田区平河町 1 ー 1 ー 1 〒 550 大阪市西区阿波座 2 ー 1 ー 1 谷 06-536 ー 3088 EmaiI : sales@ ncd. co.jp( 技術サポー ト : support @ ncd. CO. jp) MAGAZINE NCD 資料請求 No. 80
連載 /lnside DVI → PS—@ 6. SystemV 系 UNIX には ranlib コマンドがないので、 RANLIB 窈旨定を touch などのコマンドに変更します。 RANLIB=touch これらの修正が終ったら make を実行し、 VFlib. a 、 IibVFIib. a 、 ttindex を生成してからインストールしま dvi2ps 2.0j のインストール % make install % make す。 # name 0f default fontdesc file in your site ル名を FONTDESC に指定します。 3. dvi2ps-j かイ吏用するデフォルトの fontdesc のファイ DV12LIB=/usr/10ca1/1ib/texmf/dvi2ps auxiliary files are installed # directory for dvi2ps : vhere the ディレクトリを DV12LIB に設定します。 2. dvi2ps-j が使用する各種ファイルをインストールする 変のことも考えてぜひ作成しておきましよう。 されています。万一、このディレクトリがない場合は、 フォルトの実行ファイルタディレクトリとして指定 /usr/local/bin は、 UNIX 上の多くのプログラムでデ BINAREA=/usr/10ca1/bin # where dvi2ps is installed を設定します。 1. dvi2ps-j がインストールされるディレクトリ BINAREA ます、自分の竟に合わせて MakefiIe を修正します。 Makefile の修正 ポートを送りましよう。 ィレクトリの report. doc のフォーマットに従ってノヾグレ そのような場合は、正式版で修正されるように、 doc デ 加える必要があるかもしれません。 ラーが発生し、ヘッダファイルやソースコードに多少手を 版ですから、使用環境によってはコンパイル時にェ します。 それでは、 dvi2ps 2.0j のインストールについて説明 126 FONTDESC=fontdesc 通常は、とくに変更する必要はないはすです。ただし、 このデフォルトの fontdesc ファイルは DV12LIB てオ旨 定したディレクトリの下になければいけません。 ライプラリをインストールするまで、配布パッケージ には fontdesc というファイル名のファイルはありま せん。 通常は、パッケージを展開したディレクトリの下で make newlib " を実行します。すると、 lib ディレク トリが作成さ lib-dist ディレクトリからファイルが コピーされるので、そのなかからデフォルトにしたい設 定ファイルを fontdesc という名則でコピーしておきま す ( 詳しくは後します ) 。 その後、、、 make install-lib" を実行すると、 lib ディレ クトリにあるファイルがさきほど DV12LIB に指定した ディレクトリにコピーされます。 4. fontdesc ファイルの検索ノヾス DV12PATH を指定しま UNIX MAGAZINE 1996.7 ためにあるオプションです。当時はメモリか高価で、プ これは、かっての AppIe LaserWriter などの機種の LARGEAREA=TRUE # (e . g. LaserWriter P1us) memory , change this variable t0 FALSE. # If your printer does not have enough # default print area. で設定します。 6. 印字可能領域を広くするか、狭くするかを LARGEAREA ルトとして設定することもできます。 コメントとして書かれているほかの用紙サイズをデフォ PAPERTYPE=A4 A4, A3) # (Letter, Lega1, Tab10id, B4, B5, A5, # default paper type ・ ることが多いでしよう。 フォルトの設定です ) か Letter のどちらかを設定す 5. デフォルトの用紙サイズを指定します。 A4 にれがデ す。 2LIB て指定したディレクトリを探す設定になっていま カレントディレクトリを探し、見つからなければ DVI- この記述からも分かるように、デフォルトでは、ます DV12PATH= . : ${DV12LIB} とかできます。 ( コロン ) で区切って複数指定するこ す。パスは、
2 モーレッ UNIX title window al 1 タイトノレヾー ウインドウ内 すべての場所 複数の場所を、、にで区切って並べると、、、指定した場所 のいすれか " を意味します。最後の、、関数名 " には、 twm の関数を指定します。 いくつか実際の例を挙げましよう。 f . menu Button1 root window ー title f . move Button2 = c But t 0 Ⅱ 3 icon : f . delete これらはそれぞれ、以下のような未を表します。 ・ルートウインドウ上てマウスの左ボタンをクリックする と、 top menu という名則のメニューを表示する。 ・ウインドウあるいはタイトノレヾーで、 ControI キーを押 しながらマウスの真ん中ボタンをクリックすると、ウィ ンドウを移動できる。 アイコンにマウスカーソルがあるとき、 Control キーと Shift キーを押しながらマウスの右ボタンをクリックす ると、 f . delete を実行する。 ボタンと場所、さらにキーも加えると、かなり細かく動 作の設定かできます。たくさん設定しすぎると、割り当て た設定を忘れてしまい、偶然その組合せになったとき慌て ることになりかねません。設定しない場合は何も起こらな いだけなので、よく使うマウスポタンやキーの組合をだけ そ也の設定 に重川を設定するのがいいでしよう。 UNIX MAGAZINE 1996.7 ます。 をたくさん並べている場合はかえって煩わしかったりし 移るとすぐに Aut 。 Raise か機能するため、ウインドウ しなくてもよいので便利そうですが、マウスカーソルが ウインドウが一番上に表示されます。マウスをクリック たウインドウにマウスカーソルが移ると、自重加勺にその 値として、ウインドウのリストを指定します。指定され ・ AutoRaise きます。 最後に、これまで紹介しきれなかった変数をまとめてお 図 19 xclock のアイコン xclock fvwm では、あるウインドウにフォーカスか移ってか ら AutoRaise するまでの時間を指定できますが、残念 ながら twm にはそのような機能がありません。 ・ DontMoveOff この変数を指定すると、ウインドウを動かす際、ウィ ンドウか画面からはみ出さなくなります。値はありませ ん。 ・ lcons 、 ForceIcons あるツールについてはあらかじめビットマッフ。の本期兼が 割り当てられており、そのウインドウをアイコン化する と、アイコンに模様か表小されます。たとえは。 cl 。 ck や xcl 。 ck をアイコン化すると、とくに設定しなくても 図 19 のように日付きのアイコンになります。 xterm などはピットマップか割り当てられていないた め、アイコン化しても、、 xterm - というラベルが表小さ れるだけです。ちょっと寂しいです これに対し、 lcons 変数を使うとピットマップをアイ コンに表示できるようになります。 lcons 変数の値に は、ウインドウ名とピットマップ名のペアをリストと して与えます。たとえは、以下のように設定したとしま しよう。 "xfd' 'txfd_icon この例では xterm のアイコンに terminal という名則 のピットマップを、 xfd のアイコンには xfd-icon を割 り当てています。いすれも / us て / X11 / i Ⅱ cl Ⅱ de / X11 / bitmaps ディレクトリに置かれているピットマッフ・ ファイルですが、 twm にビルトインされていないピッ トマップ・ファイルを参照する場合は IconDirectory 変数を設定しておく必要があります。 33
リスト 1 fill 命令の定義 def fi11 expr c = addto—currentpicture contour c . t— enddef ; def addto—currentpicture = addtO currentpicture enddef ; METAFONT の遊び方 15 2 番目の、、 addto V contour 〃 " は、ピクチャーレに 対して、て指定されたパスで囲まれた範囲を塗り潰す命 令です。〃は巡回パスでなければなりません。つまり、パ スの最後に cycle 命令か書かれている必要があります。 なんだか、どこかていたような・・ 「 fill 命令と、どうちゃうんや ? 」 ほおーっ、鋭いですね。じつは同しです。 plain. mf を 見ると、リスト 1 のようなマクロ定義があります。なんと、 6 Ⅱ命令はマクロだったのですね。 addto ... contour ... では、 withweight 社 ) " と、 withpen いの 2 つのオプションカ甘旨定できます。 withweight から説明します。これは、丿物 & に加える 直を指定するためのオプションで、引数として 1 つの整 直をとります。引数の値は、一 3 、 ー 1 、 1 、 2 、 3 のいすれかでなければなりません。これだけではよく分か らないので、例を挙げましよう。たとえば、次のようなパ スをが定義されていたとします。 path 竊 ー ( 3 , 5 ) --cycle; こで、真っ白な方眼紙 N に対して次の命令を実行し という命令を実行すると、ルは次のようになります。 addto contour withweight 2 ・ 一方、同しく真っ白な加 . 物 ( に対して、 000000000 000000000 ル = 888 } Ⅱ 888 000111000 000000000 000000000 このとき、の内容は次のようになっています。 addto ル contour 竊 ます。 000000000 000000000 000222000 000222000 000222000 000000000 000000000 このオプションを省略すると、、、 withweight かれているものとして処理されます。 UNIX MAGÄZINE 1996.7 1 " か書 もう 1 つのオプション withpen では、パスを描くとき のペンを指定します。省略されたときは nullpen を使用 します。 「パスを描いて内部を塗り潰す ? filldraw と同しとちゃ うんか」 そのとおり。 fill 、 unfill 、 filldraw 、 unfilldraw は、 addto... contour... " を用いたマクロです。 plain. mf の定義には難しげな文字列がいつばい書かれていて分かり にくいのですが、基本的には表 1 のようになっています ( 実際は、もっと複雑な処理をしています ) 。 最後の、、 addto レ doublepath を " は、ピクチャーレ にパスをで指定されたパスを描く命令です。 2 番目のタ イプと同オ羸、、 withweight 社 , " と、、 withpen 9 " の 2 つ のオプションか指定できます。表 1 からも分かるように、 draw と undraw は、この命令を使って定義されたマク ロです。 間引き命令 (cull) cull は、次の形式で使用します。 cull くピクチャー変数〉 keeping ( の cull くピクチャー変数〉 dropping ( の ただし、。はわ以下の値でなければなりません。どちら の場合も、オプション、、 withweight " カ甘旨定できます。 省略すると、、、 withweight 1 " か書かれているものとして 処理されます。 これらの命令は、方目氏のマス目刎直がある牛を満た している場合にのみ、その値を withweight で指定された 数字に置き換え、それ以外のマス目の値は 0 になります。 このときの条件は、 keeping と dropping を使って指 定します。 keeping(), のマス目刎直が佖 LIE わ以下 dropping(a,b) マス目の値が。よりも小さいか 6 より も大きい さきはどの、、 addto レ also X " を実行したあとの V の 値に対して、次の命令を実行すると、 119
連載転ばぬ先のセキュリティーの 図 9 プリプロセス機能を活用した言聢ファイル @@ifhost hikari / . rhosts @@else /root/ . rhosts @@endif @@define /etc DIR @@D IR @@def ine む a 震 s わ : @@むの、を st ロれに展開するよう に定義 @@undef む礰二 r の : 定義を石皮棄 @@ifdef 二 7 ・が定義されている場合に有効 @@ifndef 、 : var カ症義されていない場合に有効 @@ifhost hostname : 言算機名カゞ hostname の上昜召、に 有効 @@ifnhost hostname : 言算機名が hostname とは異な る場合に有効 @@else : 上記の IF 文に対応する ELSE 文 @@endif : IF 文の終り @@include file : file を読み込む 図 9 にこれらの命令を用いた例を示します。 各自の言 t 算機に合うように作成するには、サンプルを参 考に、根気強く変更を繰り返す必要があるでしよう。 Tripwire の運用 Tripwire は有名なツールですから、計算機に侵入した クラッカーは、ます Tripwire で見張られていないかを 調べることでしよう。したがって、単純に cron などで Tripwire を起動してはいけません。できるだけ別のガ去 て起動し、また、、 tripwire" という名前も変史すべきです。 侵入者が Tripwire の存在に気づいたら、尉見をかいく ぐるため次のような手段を用いるかもしれません。 1. インストールされている Tripwire を置き換える。 2. 既存のデータベースをする。 3. Tripwire の定期的な起動を妨げる。 1 と 2 の問題を避けるため、 Tripwire と既存のデータ べースは、言もムみ専用のメディアにすることになって います。 PD や MO などがあれば、何度でもデータベー UNIX MAGAZINE 1996.7 スを更新でき、しかもハード的に書込みか引描矍できるの てイ甦リです。しかし、これらのメディアは m 。 unt する必 要があるので、侵入者が df コマンドなど使うとすぐに分 かってしまうおそれがあることに注意してください。 3 を防止するには、やはり Tripwire の存在に気づかれ ないよう工夫する必要があります。すくなくとも、侵入者 よりも管理者のほうがシステムをよく理解しているという 点で有利です。管理者ならば、侵入者に Tripwire を発見 されないように知恵を絞ってください。 Tripwire が、指定されたファイルの整合生を検査する にはかなりの時間を要します。数多くのファイルやハッシ ュ関数を指定すると、数時間かかることもあるでしよう。 もちろん、間隔を短くして実行す川まそのぶん侵入を早く 発見できますが、前回の Tripwire カ鮗了していないのに 次か起動してしまうかもしれません。 Tripwire を実行す る間隔については慎重に考える必要があります。 -i オフションを指定すれば、成疋ファイルで指定され ているハッシュ関数の検査を強制的に省略できるので、時 間の節約になります。この場合、ファイルのパーご、、 、ノン / ヨ ンや大きさだけを上交することになり、かなりの日判りを短 縮できます。ですから、 1 日に 1 回ノ、ツシュ関数も含め た検査をおこない、ハッシュ関数を幇餘した検査を寺間 に 1 回おこなうとよいかもしれません。また、 Tripwire てオ知できるのはファイルの改竄のみですから、パスワー ド・ファイルの去の誤りなどは発見できません。そこで、 前述の /etc/security などと併用するとよいでしよう。 管理者か検査の対象となっているファイルを変更した場 合は、既存のデータベースを更新する必要があります。 れには、更新モードまたは対話更新モードを利用します。 更新モードは、設定ファイルに指定された一部のフ ァイルを更新します。したがって、更新する部分を指定 する必要があります。このモードはあくまでも存在する ファイルの変更時に使用でき、新規ファイルなどは認 識されません。新規ファイルを作成した場合は対話更 新モードを利用します。たとえば、既存のデータベー ス databases/tw. db-hikari にヌ寸し、設定ファイノレ tw ・ config に記述された / etc のみを更新するには、図 10 のように設定します。 -d で指定されたファイルに新し いデータベースカイ乍成さオ蹊旧いデータベースは、 . 01d という文字列が追加されたファイルに保存されます。 99
2 特集モーレッ UNIX 図 16 標勺なタイトノレ、一 図 14 自作したメニュー ( その 2 ) Top Of the Menu 、 , 囹 enn 物物もこ 図 15 メニューのなかからまたメニュー e:Top 可せ第 M 印山第ミ Vindow Operations ロ on Manager Twm Ope 哲 0 れ s ロ の深さが大きくなるとそのぶん操作しづらくなるので、メ ーとサプメニュー程度にしておくのか隹です。 タイトルバーに関する設定 タイトノレヾーについては、色やフォントのはか、タイト ルボタンと割り当てる関数を変更できます。図 16 のよう に、オ剽勺なタイトノレヾーは左右の端に 1 っすっタイトル ボタンがあり、左のタイトルボタンには f . iconify 、右 には f . て esize か割り当てられています。 これを変更するには、 NoDefau1ts 、 LeftTit1e Button および RightTitIeButton という 3 つの変数を 適宜組み合わせます。 NoDefau1ts 変数は値をとらす、 れを指定するとオ剽勺なタイトルボタンか削除されます。 LeftTit1eButton と RightTit1eButton 変数はタ イトノレヾーのそれぞれ左側と右側にタイトルボタンを追加 します。複数指定すると、指定した順番にタイトルバーの 内側から外側に向かってタイトルボタンが並びます。これ らの変数の書き方は、以下のとおりです。 変数名 " ピットマッフ名 " = 関数名 、変数名 " の部分には、 LeftTitIeButton あるいは RightTit1eButton のいすれかを指定します。最後 の、、関数名 " には、タイトルボタンがクリックされたとき に実行する twm の関数を指定します。 タイトルボタンとして使う模様 ( ビットマップ ) は、 twm のプログラムに組み込まれているパターンのはかに 前回ルートウインドウの模様を変える際に使ったような ファイルを利用できます。 twm に組み込まれているビッ トマップ・パターンには、以下のようなものがあります。 0 f . lower f . nop f . destroy f . delete " Ki11 ” "De1ete" Menu " iconmgr" "Show" f . showiconmgr f . hideiconmgr Menu "twm ops" "Re10ad" "Restart" "Exit f . twmrc f . restart f . quit 定義したメニューのうち、、、 top menu という名則の ーを表示させると図 14 のようになります。項目の メニュ 右にメニューの形をしたピットマップ・イメージカ鎖占ら メニューが入れ子になっていることを示しています。 ・ X10g0 この状態で、 Window Operations" というラベノレの X のロゴマークです。 付いた項目にマウスカーソルを合わせてみましよう。項目 ・ dot 標勺な左タイトルボタンに使われている日の丸のよう の左側だと反転表示するだけですが、右側にマウスカーソ ルを移動すると、別のメニューがポップアップします ( 図 な本期兼です。 15 ) 。 ・ reslze オ剽勺な右タイトルボタンに使われている四角を重ねた メニューの項目が多すぎる場合、適当にメニューを入れ ような模様です。 子にしてやると見た目がすっきりします。ただし、入れ子 31 UNIX MAGAZINE 1996.7
連載 /lnside DVI → PS—@ ことを前提としています。自分のサイトの環竟と異なる 場合は、その設定か書かれている fontdesc ファイルを 探して書き換えてください。 f : 英字フォントのためのディレクトリ指定 ()M 、 nsf : NTT jIbX のためのディレクトリ指定 英字フォントの PK ファイル ・ $f/pk$mode : 英子フォントの TFM ファイル ・ $f/tfm AMS など ) ・ $nsf/vf-n2a NTT j1bX 用の PK ファイル ・ $nsf/pk%R NTT jIbX 用の TFM ファイル (dm* 、 dg*) ・ $nsf/tfm 用のノヾーチャノレ・フォント アスキー日本語 ' I し→プリンタ内蔵漢字変換 ・ $af/vf—a2$bk ノヾーチャノレ・フォント アスキー日本語 TVfX → NTT jIbX 変換用の ・ $af/vf-a2n アスキー日本語 ' IbX 用の JXL ファイル ・ $af/jx1%R ([t]min* 、 [t]goth*) アスキー日本語 TbX 用の JFM ファイル ・ $af/jfm af : アスキー日本語 ' I のためのディレクトリ指定 ノヾーチャノレ・フォント NTT jl kX →アスキー日本語 rIbX 変換用の UNIX MAGAZINE 1996.7 vfontcap : VFlib 2 てイ吏用する vfontcap ファイル wlf : 和田研フォントのディレクトリ指定 プリンタ内蔵漢字フォントの JFM フォント ・ $psf/jfm プリンタ体」蔵英字フォント用のバーチャル・フォ ・ $psf/vf プリンタ内蔵英字フォントの TFM ファイル ・ $psf/tfm psf : PS フォントのためのディレクトリ指定 のフノレノヾス扣正 5. 英文フォントの設定を石忍します。 これは、 fonts ディレクトリの efontdef という font- desc ファイルで定義されています。 6. 和文フォントの設定を石薩忍します。 これは、 fonts ディレクトリの ntt-bikanji または asc-bikanji で定義されています (ntt-bikanj i は NTT jIbX 用、 asc-bikanj i はアスキー日本語 rIbX 用の設定ファイルです ) 。ふだん使わないほうの設定は、 とりあえずそのままでもかまいません。 ファイルのインストール プログラムのインストールは、次のように実行します。 % make install これで、 dvi2ps とそれが使用するヘッダファイルがイ ンストールされます。次に、 lib ディレクトリのファイル % make insta11-MakePK ます。 燧変に、フォント自庄成プログラムをインストールし % make install—lib をコピーします。 変更した fontdesc ファイルの設定が正しく重川するか の手順を説明します。 こでは、インストール後に新たな設定を追加する場合 設定の確認と修正 BSD 用を使うように定します。 プションが異なるためにエラーになるので、その場合は System V 用の install コマンドか呼び出されると、オ ・ /usr/sbin/install (System V のコマンド ) ・ /usr/ucb/install (BSD のコマンド ) マンドカ嗹ってきます。 グラムをもつ場合は、パスの設定によって呼び出されるコ ています。 Solaris 2 のように次の 2 不鶤頁の install プロ は、 BSD 系 UNIX の install コマンドの使用を前提にし なお、 dvi2ps の配布パッケージに含まれる Makefile は、次の手順でオ E します。 129
連載 /lnside DVI → PS—@ 130 ないなどのエラーカ咄ないかどうかを石忍します。 ます、 PS ファイルを作成する際、フォントがみつから PS 出力認 dvi2ps-2. Oj -beta/lib % setenv DV12PSLIB /usr/local/src/jtex/ 最初に、次のように環竟変数を設定します。 ることかできます。 すれは、はかのユーザーに景を与えすに設定の石忍をす 定したディレクトリとは別のディレクトリを一日勺に指定 クトリを指定できます。したがって、インストール時に指 PS ファイルや fontdesc ファイルが置かれているディレ 環竟変数 DV12PSLIB を使うと、 dvi2ps-j か利用する 変数の言聢 でこのようなパッチ窈青報に注意するとよいでしよう。 ニュースなど これから PS プリンタを購入する予定の人は、 これらは、 PS プログラムの変史で回避できる問題なので、 名に大きな変更か加えられたのカ源因です。 ション ) ことと、フォントの内部橢及や使用できるフォント た (Laser Wind 1040PS では、モリサワのフォントはオプ タが高価なモリサワのフォントの代わりに平成書体を採用し 以前も解説したように、これはも匠の低価格の PS プリン する。 リンタについては、平成明朝体と平成ゴシック体で代用 2. Ryumin-Light 、 GothicBBB-Medium をもたないプ 1. FMapType 6 の和文フォントに対応した。 次の 2 つの修正を施したそうです。 この問題を解決したのは富士ゼロックスの倉繁宏輔さんで、 Organization : BEKKOAME INTERNET INC. Date : Sun, 12 May 1996 23 : 25 : 49 + 0900 Newsgroups : fj ・ comp. printers ・ jp> From : Toshio Okuyama く tosh—o@lib. bekkoame. or Laser Wind 1040PS Subject : Re: Q:HOW t0 print tgif pictures on or ・ jp> Message—ID : く 3195F4ED.42BB7A7491ib. bekkoame. されています。 文巧 . comp ・ printers に、この問題への対処の去カ寸殳稿 で出力できません。 症状 X 上の描画ソフト tgif の絵が、 Laser Wind 1040PS ワンポイント・トラブルシューティング % dvi2ps f00. dvi > f00. ps 工ラーが発生しないのを確認したら PS プレビューア ☆ % make install-lib % unsetenv DV12PSLIB 数を未定義にしてからインストールします。 上の手順で正しく重川することカ蔀忍できたら、環境変 インストール % lpr f00 ・ ps 刷さオレ L ば設定の石忍は終了です。 最後に、ふだん使っているプリンタに出力し、正しく印 % gs f00 ・ ps (gs) て表刀訒ゞ正常かどうかを石忍します。 マニュアル」 (VFlib 2.22 付属ドキュメント ) 、 1996 年 [ 6 ] 角川裕次「べクトルフォントライプラリ VFlib 第 2 版利用者 伺属ドキュメント lib. doc) 、 1996 年 [ 5 ] 桜井貴文 rlib-dist にある fontdesc の説明」 (dvi2ps 2.0j キュメント kanji. doc) 、 1996 年 [ 4 ] 桜井貴文「漢字フォントについて」 (dvi2ps 2. Oj 付属ド メント fontdesc. doc) 、 1996 年 [ 3 ] 桜井貴文「 fontdesc について」 (dvi2ps 2.0j 付属ドキュ メント dvi2ps. doc) 、 1996 年 [ 2 ] 桜井貴文「 fontdesc について」 (dvi2ps 2.0j 伺属ドキュ (dvi2ps 2.0j 滝伺属ドキュメント install. doc) 、 1996 年 [ 1 ] 桜井貴文、風間一洋「 "install. doc" for dvi2ps ( 2.0j ) 」 [ 赭文献 ] ( たかやま・けんぞう ) めの fontdesc の言当を中心に説明する予定です。 した。次回は、新たに追加された機能やそれを利用するた 今回は、 dvi2ps 2.0j 滝のインストール方法を紹介しま UNIX MAGAZINE 1996.7
UN Ⅸへの招待⑩ 位置パラメータのシフト 位置パラメータ刎可番目刎直を参照するかを指定するれ では、 0 ~ 9 の数しか使用できません。このうち、 は、シェル・プログラムの名前を参照するときに使われる ので、プログラム中の $ れて参照できる引数は最大でも 9 個です。ただし、引数を 9 個しカ寸旨定できないわけでは ありません。 10 個以の引数も指定できますが、何番目 かを指定する数字は 9 までしカイ吏えないので、 9 個目まで しか参照できないだけです。 では、 10 番目以降の引数はどのようにして参照すれば いいのでしようか。それには、 shift コマンドを使って位 置パラメータをシフトします。 shift では、位置パラメー タの値が 1 つシフトされます。たとえは、 1 番目の値が なくなり、 2 番目の値が 1 番目の値になります。また、 shift れ のように使うと、位置パラメータがれ個ぶんシフトされ ます。 shift コマンドを利用すれは、 10 番目以降の引数をプ ログラム中で使えるようになります。ただし、いったん シフトした値をもう一度利用することはできません。 for コマンドと $ * $ れや shift を使わなくても、すべての引数を順に利用 していく方法があります。同じ処理を繰り返しおこなう for コマンドと、すべての引数が参照できる $ * を使えば よいのです。 for は、 for 変数名 in 値 1 値 2 ・ do コマンド done という形式で使います。、、変数名 " には、、、値 1 値 2 " て指定した値か順次代入されてゆき、 do から done のあいだにある、、コマンド " カ髞り返し実行されます。し 162 do for 変数名 in $ * たがって、 コマンド done とすれば、シェル・プログラムのすべての引数に対し て、、コマンド " か実行できます。 次のシェル・プログラム echo-all-arg は、実彳丁時の引 数をすべて 1 行すっ工コーバックします。 $ cat echo—all—arg # ! /bin/ksh for i in $ * do echo $i done $ echo—all—arg 1 2 3 4 5 6 7 8 9 10 11 11 10 9 8 7 6 5 4 3 2 1 Korn シェルの配列 UNIX MAGAZINE 1996.7 ( やや使いにくいものの ) 1 つの変数に複数の値が代入で いう新しい機能が追加されています。配列を利用すると、 便だと思っていたのですが、 Korn シェルでは、配列 " と この点で、 Bourne シェルは C シェルとくらべて不 ど、なんらかの処理が必要です。 必要なら、これ以前にいったん別の変数に代入しておくな プログラム実行時の引数か参照できなくなります。引数が 時点で位置パラメータの値か再設定されるため、以降では とプログラムを書けはいいのですが、この行か実行された set ( command す。このためには、 置パラメータに代入し、それらを個々に利用したいとしま をとるプログラムのなかで、あるコマンドの実行結果を位 る変数をいくつか使えたほうカ硬利です。たとえは、引数 シェル・プログラムのなかでは、複数の値を設定でき
CGI• リスト 2 入力情報の斤 ( 続き、 CGIGet( ) ) = 0 ) Adapted from R0b McC001 ' s post-query routine return the form value for a variable CGIGet char *CGIGet (char *var) て e turn if for (i int i ; NULL ; / * Not Found * / return entries [i] . val; / * Found it * / (strcmp(entries [i] . name, var) = 0 ; i く = NumEntries; i + + ) をしていく。 UNIX MAGAZINE 1996.7 という書式て沖云送される。 NAMEI と NAME2 はフォー 情報は NAME1=VALUEI&NAME2=VALUE2 ドを利用している。 Stock Market ChaIIenge では、おもに POST メソッ に留意し、受け渡すデータ量をチェックする必要がある。 ステムか環境変数に各内できる文字数を制限していること すれば情報を読み込める。 GET を使う場合は、多くのシ の情報は標準入力に送られるので、たんに read( ) を実行 み取ることができる。 POST を指定するとフォームから を作成する。この変数の内容は getenv(3C) を使って読 すると、 HTTP デーモンは工竟変数 QUERY-STRING がページからの情報を受け取るガ去を示す。 GET を指定 く FORM > 定義の METHOD 部分は、 CGI プログラム く INPUT> タグの情報しか送らない。 とができるが、プラウザは転送か起こったフォーム内の 1 つのページ内にいくつでも必要なだけフォームを置くこ ーがリターンキーを押したときにフォームか転送される。 ルドが 1 つしかない場合は、そのフィールド内でユーサ クしたときに転送される。フォーム内にテキスト・フィー フォームは、ユーザーがボタンかビットマップをクリッ ネストすることはできない。 とく / FORM > タグのあいだに置く。フォームはページ内で する。通常の HTML タグとくエ NPUT > タグはく FORM > タグ {CGI PROGRAM}> タグで識別され、く /FORM> タグて終了 フォームは、く FORM METHOD={POSTI GET} ACTION= ム内のくエ NPUT > タグで与・えられた名前である。 VALUEI と VALUE2 はフィールドの値である。テキスト・フィー ルドまたはパスワード・フィールドの場合、値は入力され たテキストになり、チェックポックスの場合は、、 ON " ま たは、、 OFF " となる。スクロールリストでは VALUE の 内容は〕尺された OPTION の値、ラジオボタンであれ ば、〕尺されたボタンの VALUE の値が入る。すべての 値は文字列として渡されるので、戻された値をプログラム 中で直として処理したい場合には、さらに適切な変換を おこなう必要がある。 ロ CGI のための c プログラミンク ページからの情報を角斤するのは少々面倒な手順がい る。幸運にも、 NCSA が CGI の実例として手頃な入門 を孑当共している。、 http://hoohoo.ncsa.uiuc.edu/cgi' にアクセスし、ページ上に用意された CGI プログラムを 処理するフォームへのリンクをたどってみるとよい。 クの 1 つは、 RobMcCooI か書いた ( と思われる ) いくつ かの有用な C コードを指している。そこで post-query ・ c と get-query. c という 2 つのプログラムを見るとよい。 の 2 つのルーチンは C プログラムて情報を読み、解釈す るガ去を示している。 Stock Market ChaIIenge では post-query. c ルー チンを 2 つに分割して使っている。最初の部分は CGI- lnitialize(int argc, char *argv[]) ( リスト 1 ) で、標 89