filter filter ・ GR3 filter—list 1 —tos 184 —branch_index 1 yes filter—list 2 —branch_index 0 連載 /Cyber Kansai Project— qos yes vc-group VCGROUP2 index 1 vc ATMlVC3 vc¯group VCGROUP2 index 0 vc ATMlVC2 ip GR2LIF2 192.218.130.173 / 30 group GR2LIF2 ATMIVC2 ATMIVC3 vc GR2ATM1 ATMIVC3 0 / 97 traffic UBRI vc GR2ATM1 ATMIVC2 0 / 96 traffic UBRO vp GR2ATM1 1 pcr 55000 vc—group VCGROUPI index 1 vc ATMIVCI vc—group VCGROUPI index 0 vc ATMIVCO ip GR2LIF1 192.218.130.162 / 30 group GR2LIF1 ATMIVCO ATMIVCI vc GR2ATM1 ATMIVCI 1 / 52 traffic UBRI vc GR2ATM1 ATMIVCO 1 / 51 traffic UBRO fi1ter—gr0UP FILGROUPI 1 —group FILGROUPI 2 filter—interface GR2LIF1 filter—interface GR2LIF2 ー out ー out traffic UBRO ubr —priority 3 traffic UBRI ubr —priority 4 line GR3ATM1 oc3atm 1 / 0 atm GR3ATM1 —vpi—vci_range 1 vp GR3ATM1 0 pcr 149760 —filter—group FILGROUPI —filter-group FILGROUPI —vp—shaping—number 1 vc GR3ATM1 ATMIVCO 0 / 96 traffic UBRO vc GR3ATM1 ATMIVCI 0 / 97 traffic UBRI group GR3LIF1 ATMIVCO ATMIVCI ip GR3LIF1 192 . 218.130.174 / 30 vc¯group VCGROUPI index 0 vc ATMIVCO vc—group VCGROUPI index 1 vc ATMIVCI line GR3LIF2 ethernet 0 / 0 ip GR3LIF2 192.218.130.241 / 28 filter filter filter filter—interface GR3LIF1 -out -filter-group FILGROUPI —group FILGROUPI 2 ¯group FILGROUPI 1 filter—list 2 —branch_index 0 filter—list 1 —tos 184 —branch—index 1 yes qo s qo s ¯ip—list 1 ー Pr00t0C01 6 ¯ip—pair—off -ip—source 192 . 218.130.246 ¯replace—tos 184 q0s—ip—1ist 2 ¯replace—tos 0 q0S-ip—1ist-group QOSGROUPI 1 C10S-ip-1ist-group QOSGROUPI 2 ↑ 会場に設置した制御用端末のトラフィック は優先度を高くする。 -ip GR3LIF2 —in —ip-list_group QOSGROUPI 注 : この設定例は実験当日 ) もので、現在阪売されている製品とは設定力法が異なる可能性があります。 設定時には、かならすマニュアルなどを参照してください。 170 UNIX MAGAZINE 2000.7
きかったと思います。東芝の永見健一さんや日立の新善 文さんなど、ルータの開発者と一緒に実験を進められた点 でも有意義でした。 次回は、個々の実験について紹介する予定です。 図 8 DiffServ 文寸応ルータ GR2000 の言例 連載 /Cyber Kansai Project— ( しらはせ・あきら NTT スマートコネクト、 やまぐち・よういち NTT 西日本、 しもしよう・しんし 大阪大学サイバーメディアセンター ) ・ GRI traffic UBRI line GRIATMI atm GRI ATM 1 vp GRIATMI 0 pcr 149760 traffic UBRO ubr —priority 3 ubr —priority 4 oc3atm 2 / 0 —vpl_vcl_range ATM トラフィックの種類を定義する。 こでは、優先度 3 と優先度 4 の 2 種類の設定 ( いすれも UBR ) を用意。 1 —vp-shaping— vc GRIATMI GRILIFI 0 / 100 traffic UBRO ip GRILIFI 192.218.130.77 / 30 line GRIATM2 oc3atm 1 / 0 atm GRIATM2 —vpi_vci_range 1 —vp_shaping_ vp GRIATM2 0 pcr 149760 vc—group VCGROUPI index 1 vc ATM2VC1 vc—group VCGROUPI index 0 vc ATM2VC0 ip GRILIF2 192.218.130.161 / 30 group GRILIF2 ATM2VCO ATM2VC1 vc GRIATM2 ATM2VC1 0 / 52 traffic UBRI vc GRIATM2 ATM2VC0 0 / 51 traffic UBRO number number 1 1 filter filter filter—group FILGROUPI 2 filter—group FILGROUPI 1 filter—list 2 —branch_index 0 filter—list 1 -tos 184 -branch_index yes 1 GR どうしを結ぶリンクでは、 2 本の VC に異なる 優先度を設定したうえでグルーピングする。 こでは、 VPI=0/VCI=51 のバスに優先度 3 を、 VPI = 0 / VCI = 52 のノヾスに優先度 4 を設定してい る。 VC は 2 本だが、 IP アドレスは 1 つだけである。 出力インターフェイスでは、 IP ヘッダの TOS フィ ールドの値によって、バケットのフィルタリング をおこなう。 TOS が 184 であれは優先する側の VC に、そうでなけれは非優先の VC にバケットを振り 分ける。 —interface GRILIF2 -out —filter—group FILGROUPI qos—ip—list 3 —protocol 6 -ip-pair—off —ip-destination 192.218.130.242 —ip—destination 192.218.130.245 —replace—tos 184 qos—ip—list 2 —protocol 17 —ip—pair-off -ip-source 192.218.130.78 —ip—destination 192.218.130.244 —replace—tos 0 qos-ip—list 1 ー p て 0t0C01 17 —ip—pair-off -ip-source 192.218.130.78 qos yes ー 192.218.130.246 —replace_tos 184 qos¯1P¯ qos¯1P ・ GR2 list 4 —replace—tos 0 q0S-1P¯1ist—group QOSGROUPI qos¯1P¯1ist—group QOSGROUPI qos¯1P¯1ist—group QOSGROUPI qos-lp¯list—group QOSGROUPI 4 GRILIFI —in —ip_list-group QOSGROUPI 1 2 3 入力インターフェイスでは、 IP アドレスやプロトコルの 種類を識別し、条件によってバケットの TOS フィールドの 書換えをおこなう。この部分では TOS フィールドの値の変 更ルールについて定義するだけで、優先度を直接指定する わけではない。 ubr —priority 3 traffic UBRI ubr —priority 4 —vpi-vcl-range 1 vp GR2ATM1 0 pcr 94760 atm GR2ATM1 line GR2ATM1 oc3atm 1 / 0 traffic UBRO UNIX MAGAZINE 2000.7 —vp—shaping—number 2 169
連載 . /Cyber Kansai Project 図 5 デモ用ネットワークの冓成 BB 受信側 : MPEG-2 # 1 送信側 : MPEG-2 # 1 送信側 : MPEG-2 # 2 送信側 : ノイズ 凵 F2 凵 FI 凵 F2 凵 FI 凵 F2 G R2 ( 大阪大学 ) GRI ( 大阪 NOC ) GR3 ICCC 99 受信側 : MPEG-2 # 2 受信側 : ノイズ 受信側 : DV 送信側 : DV 図 6 デモの / ヾターン P 「 emium 質質 質質 質質 質質 ロロ 高低高低高低高低高低高低高低高低高低高低高低高低 Demo # 1 ・ MPEG-2 # 1 : Premium ・ MPEG-2 # 2 : Best E 升 0 ・ DV # 1 : Best Effort ・ Noise # 1 : Best E 幵 0 Demo # 2 ・ MPEG-2 # 1 : Stop sending data (Premium Service) ・ MPEG-2 # 2 : Best E 升 0 ・ DV # 1 : Best E 幵 0 ・ Noise # 1 : Best E 幵 0 Demo # 3 ・ MPEG-2 # 1 : Switch from Premium 10 Best E 升 0 ・ MPEG-2 # 2 : Switch from Best E 升 0 to Premium ・ DV # 1 : Best E 幵 0 杙 ・ Noise # 1 : Best E 幵 0 MPEG-2 # 1 MPEG-2 # 2 DV # 1 MPEG-2 # 1 MPEG-2 # 2 DV # 1 MPEG-2 # 1 MPEG-2 # 2 DV # 1 Rejected Demo # 4 ・ MPEG-2 # 1 : Premium ・ MPEG-2 # 2 : Try to switch to Premium (rejected) ・ DV # 1 : Best E 幵 0 ・ Noise # 1 : Best E 幵 0 MPEG-2 # 1 MPEG-2 # 2 DV # 1 Try tO play 容易ではなく、 SmartBits のような装置があると重宝し の映像伝送にプレミアムサーピス・クラス ( 茴優先度 ) を ます。やや高価なのか難点ですが、広帯域ネットワークで 設定し、その他を Best Effort クラス ( 低優先度 ) にして の実証実験にはぜひとも揃えておきたい製品です。 います。その結 MPEG-2 # 2 の映像力話 u ・・し或を 図 6 に示した 4 パターンのデモをおこないましたが、 保証して伝送されるのは MPEG-2 # 1 のみとなっていま このうち Demo # 1 か基本バターンです。 MPEG-2 # 1 す ( 図 7 ) 。 167 UNIX MAG AZINE 2000.7
日本語環境、メールツール、無線 LAN 図 3 フォントの不頁 ( リソースファイル KTerm の 52 行目近辺 ) Defau1t *fontMenu*fontdefau1t*Labe1 : *VT100*fontList : *fontMenu*font1*Labe1 : *VTIOO*fontList1 : *fontMenu*font2*Labe1 : *VTIOO*fontList2: *fontMenu*font4*Labe1 : *VTIOO*fontList4: *fontMenu*font5*Labe1 : *VTIOO*fontList5 : *fontMenu*font6*Labe1 : *VTIOO*fontList6: *fontMenu*font3*Labe1 : *VTIOO*fontList3: 図 4 標準のフォントの変更 KTerm*fontMenu*fontdefau1t*Labe1 : Defau1t KTerm*VT100*fontList : —*—fixed—medium—r—normal— —*—gothic—medium—r—normaI——10—* , \ —*—mincho—medium—r—normal— % kterm —km euc 同様に、リソースて指定することもできます。文字コー ドを指定するリソースは、、 kanjiMode" です。、、 KTerm *kanjiMode:" に jist (JIS) 、 euc" ( 日本語 EUC) 、 sjis" ( シフト JIS) のいすれかを指定します。各ューサ ーがリソースを設定する場合は、 ~/. Xdefaults にそのリ ソースを記述します。 kterm の場合、ⅵなどを使って ~/. Xdefaults を編集し、、、 KTerm*kanjiMode: euc という行を追加します。下記は、 ( ちょっと強引ですが、 UNIX らしい ) cat を使って ~/. Xdefaults にリソースを 助日する例です。 % cat > > ~ / . Xdefau1ts KTerm*ka11J iMode : euc ← [Ctrl]+[D] これで、 X の起重加こ KTerm の kanjiMode リソー スは EUC に設定されます。変更したリソースをその場で UNIX MAGAZINE 2000.7 3 インストールさオけこフォントは xlsf 。 nts て市忍、できます。 —*—fixed—medium—r—normal— —*—gothic—medium—r—normaI——14—* , \ —*—mincho—medium—r—normal— Unreadab1e —*—fixed—medium—r—normal— —*—gothic—medium—r—normal— —*—mincho—medium—r—normal— Tiny —*—fixed—medium—r—normal— —*—gothic—medium—r—norma1——14—* , \ —*—mincho—medium—r—normal— Sma11 —*—fixed—medium—r—normal— —*—gothic—medium—r—normal— —*—mincho—medium—r—normal— Medium —*—fixed—medium—r—normal— —*—gothic—medium—r—normal— —*—mincho—medium—r—normal— L arge —*—fixed—medium—r—normal— —*—gothic—medium—r—normal— ー * —minchO —medium—r—normal ー Huge —*—fixed—medium—r—normal— —*—gothic—medium—r—normaI——26—* , \ —*—mincho—medium—r—normal— で表示されます。しかし、解像度が 800 x 600 の工竟で 初期設定に従えば、 kterm は 14 ポイントのフォント 0 ルされていない項目は無効になります 3 定されています。なお、設定されたフォントがインストー イントとなっており、最後の、、 Huge " は 26 ポイントに設 イント、 14 ポイント、 16 ポイント、 18 ポイント、 24 ポ では、 1 行目の、、 Defa ⅲ t " から順に、 14 ポイント、 2 ポ ファイルで定義されています ( 図 3 ) 。初期設定のリソース フォントは ( ラベル名なども含めて ) 、前述した KTerm フォントの大きさを選択します。各項目で指定されている タン 3 て表示される、、 VT Fonts" メニュー ( 図 2 の右 ) で kterm で使用するフォントを変更するには、 [CtrI] 十ポ % xrdb —load ~/ . Xdefau1ts 有効にするには、 xrdb コマンドを使います。 ー 10 ー * ー 26 ー * ー 24 ー * ー 18 ー * ー 16 ー * ー 14 ー * ー 14 ー * 25
特集•ThinkPad 570 で FreeBSD 0 switch(c) { 428 , 434 int C ; int while()c = getopt(argc,argv,"3C:DF:I:PRS:cdfhi:1:m:p:r:st:w:W:z:")) ー switch(c) { case ) 3 ) : * * * 507 , 518 * * * * break; atoi(optarg) ; 1 if ( (i く = 0 ) Ⅱ (i > MOUSE-MAXBUTTON) ) { optarg) ; warnx ( " invalid argument ' %s ' usage() ; rodent . wmode break; 1 くく (i case ) 2 ) 509 , 541 break; case if ( strlen(optarg) atoi (optarg) ; 1 if ( (i く = 0 ) Ⅱ (i > MOUSE-MAXBUTTON) ) { warnx ( " invalid argument ' %s ' , optarg) ; usage() ; 1 くく (i rodent . wmode }else{ if (strlen(optarg)= atoi(optarg + 1) ; 1 if ()i く = 0 ) Ⅱ (i > MOUSE-MAXBUTTON) ) { warnx ( " invalid argument ( %s ) optarg) ; usage() ; 1 くく (i rodent . wmode *(optarg + 1)=,\0,; atoi(optarg) ; 1 if ()i く = のⅡ (i > MOUSE-MAXBUTTON) ) { warnx ( " invalid argument ( %s ' opt arg ) ; usage() ; rodent . wmode ー = 1 くく (i break; case W ' : rodent . zlockmode break; atoi(optarg) く = 0 ? 0 atoi(optarg) ; 64 UNIX MAGAZINE 2000.7
特集•ThinkPad 570 で FreeBSD 0 図 2 kterm の言聢メニュー # make install ・ packages を利用する場合 図 1 kterm の 冒笨の矍示冒で / たかな ? 編集者ほど怖いものはない。・ 聞 0 : / t 叩竃 cat ~ ハ”増 Majn Op む 0 れ S Secure Kegboard ノ R110 材 SendEvents Re 山、 kindou Send STOP Signa1 Send CONT Signa1 S INT SignaI Send Signa1 Send TERH SignaI Send KILL SignaI quit EnabIe Sc 「 011b 、 ノ En 10 、 Junp Sc 011 Enab1e Re 0 「 se Video ノ EnabIe to 「叩 6 「 0 出 E 10 Re 0 「 & 0 graparound Enabie Ruto Linefeed ノ Enab1e Rpp1ication Cursor Kegs ノ EnabIe flpplication Kegpad Sc 「 011 to 80 い 0 ” on K09 Press / Sc 011 tO Botton on Ttg 面 t 円化 R110 “ 80 / 152 [ 0 川 n Suitching E れ 6b1 ・ Curses Enulation Enab1e Visua1 B011 新地、 gin B011 照 t 銧第 a レ : Se,r 川 00 Soft Reset Fu11 Rese し Reset れ d Cle ・「 Saved Lines Enab1e Status Line ノいド se 物 . d 供 ) ノ J 叩田“日に Hode Shift—JIS Hode ノ Open lnput hethod VT FOntS ノ Defau1t Unreadab1e 011 H 0 Es•eape Se 第 : 0 Se1ection # /stand/sysinstall configPackages として sysinstall からインストールするか、 パッケージ (ja-kterm-6.2.0. tgz) を入手し、 コマンドでインストールします。 ネットワーク経由でインストールするなら、 kterm の pkg-add % fetch —p ftp: //ftp ・ jp ・ freebsd.org/pub/FreeB SD/re1eases/i386/3.4—RELEASE/packages/A11/j a-k term—6.2.0. tgz % su # pkg—add j a—kterm-6.2.0. tgz インストール CD-ROM を利用する場合は、 # pkg—add /cdrom/packages/A11/j a—kterm t gz とすればよいでしよう。 メニューやリソースによる設定 それでは、 kterm を起動しましよう。 % kterm & [ 2 ] 5499 ー 6 . 2 . 0 . kterm では、 [Ctrl] を押しながらマウスポタンの 1 、 2 、 ール宀 3 を押すと図 2 のようなメニューか表示され、・箚重の設疋 がおこなえます。 X 上での論理的なマウスポタンであるボタン 1 ~ 3 と物 理的なマウスポタンの関係は一概に特定できませんが、 般に、マウスの左ボタンがボタン 1 、右ボタンがボタン 3 、 中ボタン ( ホイールボタンや、 ThinkPad 570 では青い線 が入ったボタン ) がボタン 2 となります。 2 ボタンマウス 24 佐から、 [Ctrl] 十ボタン 1 / 2 / 3 ) UNIX MAGAZINE 2000.7 す。 man kterm の RESOURCES ク ) 頁も役に立つでしよう。 2 KTerm ファイルには kterm の標準リソースの内容力当されていま 照してください。 1 イ應課マウスドライバ。 sysmouse(4) や moused(8) 、または前回を参 語 EUC を利用する場合は以下のようにします。 jis/sjis] を指定しても、文字コードを尺できます。日本 また、 kterm の起重加のオプションとして—km [euc 場合はメニューから尺します。 ければ JIS です。日本語 EUC やシフト JIS を利用する Mode" と、、 Shift-JIS M 。 de " のいすれし尺されていな ソールの漢字コードを指定できます。 Japanese EUC ニューで変更します。このメニューの下のはうで、コン には、 [ Ctrl ] 十ボタン 2 ・で表示される、、 VT Options" メ EUC ( 日本語 EUC) や SJIS ( シフト JIS) を利用する 定しましよう。 kterm のデフォルトの設定は JIS です。 まずは、コンソール上でやりとりする文字コードを設 を変更することで設定できます 2 。 義されています。これらは、起重加寺の引数や、 X リソース X11/app-defaults/KTerm ファイルの X リソースで定 図 2 の各メニューの設定内容は、 /usr/X11R6/lib/ # moused —p /dev/psmO —t auto ー 3 —m 1 = 2 —m 2 = 1 に起動します (PS/2 マウスの例 ) 。 タン 2 を左ボタンとする場合は、 moused を以下のよう ンをおこない、 X 上のボタン 1 をマウスの右ボタン、ポ 付けて起動します。たとえば、 3 ボタンのエミュレーショ 工ミュレートする場合は、 moused に ー 3 " オプションを 工ミュレートすることができます。これを sysmousel で の場合は、ボタン 1 とボタン 2 の同日喆甲しでボタン 3 を
表 3 演算子と同じ意味を表す言己去 演算子 代わりの言己去 員 { 0 , } 員 { 1 , } A 十 A { 0 , 1 } 員 ? 表 2 反しの意味 田い出してください。この正規表現が長くなってしまった 記法 最′」迴数 極し 最数 のは、アルファベットの文字全体を表現するのに、 a から れ回から m 回 Z までを 1 っすっ並べて選択の演算子で区切っていたか ちょうどれ回 れ回以 E らです。この部分を簡単に記できれは、大幅に短くする 0 回以 E れ回まで 0 ことかできます。たとえは、アルファベットすべてを表す のに alpha という文字列を、数字すべてを表すのに digit これで、ある正規表現を何回か連結する正規表現につい という文字列を使うと、さきほどの識別子を表す正規表現 て、もとからある 0 回以ーヒの区しに加え、 1 回以上の繰 は次のように簡潔に記述できます。 返しと、 0 回か 1 回のいすれかという言去カイ吏えるように (alpha に ) (alphal digit に ) なりました。見方を変えると、これらはすべて正規表現を 連結する回数を指定しているともみなせます俵 1 ) 。 このような効果を狙って作られたのか文字クラスという 念です。 正規表現の演算子、、 ? " か区しの回旨定だなどとい うと不思議に思うかもしれませんが、表にもあるように 0 回から 1 回の系区しだと考えれは、それはど不思議ではあ りません。このように、さまざまな演算か区して表現で grep における文字クラスは、正規表現を記述する際に きることに気づくと、汎用の縄区し演算子か欲しくなるの 複数の文字のうちのいずれか 1 っという条件を簡単に指定 が人情というものでしよう。もちろん先人たちも同様のこ するためのものです。正規表現で文字クラスを使う場合に とを考えたようで、これらの演算子よりも汎用的な糸お区し は、、、 [ ] " で括って文字の並びを指定します。このとき、 [ ] 演算子を用意しています。 内に書いたいすれか 1 文字にマッチする正規表現となりま 新しい演算子は、、 { } " で、対象とする正規表現をと す。文字クラスは、たとえは次のように使います。 すると、この演算子の一ヨ殳系は、 [ 0123456789 ] 員 { れ , rn } これは、 0 ~ 9 のいすれか 1 文字にマッチする正規表現 となります。これは、正規表現 A をれ回以 E 、 m 回以下 です。しかしこれだけでは、 繰り返した正規表現を篇眛します。つまり、員 { 2 , 3 } は正 規表現い川亠 4 川と同様な未になります。 と大差ありません。たしかに当の手間は半分不隻になっ この演算子は、 2 つの数値をどのように指定するかでい ていますが、まだ簡単な指定とはいえません。値の範囲を ろいろな意味をもたせることができます。表 2 にこれらの 指定する記法を利用すれば、格段に使いやすくなります。 己法と未を示します。 UNIX システムか利用する ASCII コード体系では、数字 無限の回数を数値で直接指定することはできませんが、 の 0 ~ 9 は順番に並んでいます 1 。このように順番に並ん 系区し回数の指定で回数を省略したときの意味を定めるこ でいる文字を指定する場合、、、一 " を使って範囲を指定する とにより、無限に繰り返す処理も表現しています。この記 ことができます。これを利用すると、さきはどの正規表現 法を使うと、これまで紹介した演算子はそれぞれ表 3 のよ は次のように表せます。 うに表現できます。 [ 0 ー 9 ] これらの略言己去はたしかにイ甦リですが、さらに便利な略 去が用意されています。さきはどの長すぎる正規表現を 1 EBCDIC というコード体系でも、財コ頂番に並んでいます。 表 1 連結のメタキャラクタ メタキャラクタ最′」迴数 最数 0 1 十 0 1 文字クラス 一三ロ 一三ロ 122 UNIX MAG AZINE 2000.7
特集•ThinkPad 570 で FreeBSD 0 (setq wl—smtp—posting—server ー your. smtp. server. name" ) (setq wl—from "FuII Name く your@mailaddress>" ) 図 37 WanderIust の . wl ファイル (autoload 'wl—draft " 1 " "Write draft with Wander1ust . (autoload 'wI t'Wander1ust" t) (load "mime—setup") 図 36 ・ emacs の言聢 (Wanderlust) 図 37 の上がメールの From フィールドの設定、下が メールサーバー (SMTP サーバー ) の指定です。 your. smtp. server. name には、メールサーノヾーの名則を孑日疋し ます。 ソースファイルの samples / ja ディレクトリに . wl ファ イルの言田なサンプルがあるので、それを参考にするとよ . addresses ファイノレ いでしよう。 50 十 lovelove + inbox "MH フォルダ受信箱ー Wanderlust の画面です。 ァイルの例を示します。図 38 は、このファイルを使った です。フォルダ名は省略可能です。以下に、 . folders フ フォルダ " フォルダ名ー . folders ファイルの書式は、 ら追加、変更できます。 よう。また、フォルダは必要に応して、 Wanderlust 上か ディレクトリに含まれているので、参考にするとよいでし ンフ。ルが Wanderlust のソースファイルの samples/ja 定は . folders ファイルに書きます。 . folders ファイルのサ を利用するにはフォルダの設定も必要です。フォルダの設 こまでで基本的な設定はできましたが、 Wanderlust フォルダの設定 際に [Tab] キーでアドレスを自重甫完できます。 にここで登録された名前か利用されるほか、メールを書く こにアドレスを書いておくと、メールの一覧や返イ anyone@boo.b00 ” B00 B00 " B00 B00 Bootarou someone@foo . bar " F00 Bar" F001ish Barbeq ニックネームフルネーム # メールアドレス す。 . addresses ファイルの言当方法は以下のとおりです。 これは必頭のファイルではありませんが、あるとイ叫リで 図 38 フォルダの表示例 BuFfers F 日 18k Edit 、 F 猷「 lp ト ] らゞ : t 叩 : 1 / 1 / 7 フォルダ受信霜 : 1 / 1 / 1 + 13e13e : 0 / 0 / 1 ) 十 V 自、リ′ OV 色 ! Oye I 第 4 の受信蘓 : ま″ / ま ロ 1 富鼓 i を : ま / 第 / ま ! 化の 1 / ま / 第 阯の 2 : ま / / ま み」れ a 第を 1 為 3 婢 ) ). - ,S 、 V 日 : 本 / ま / す は use ロ第 e2 な 0 ) 3 朝叩ー s 日、日、ト朝第 20 ぇ 2 : ネ / ネ / ー ロ : 第 / ま / 第 国第達・ 0 / 0 / 0 : 0 / 0 / 0 、み : 0 / 0 / 202 : 0 / 0 / 14 + very/lovelove %inbox " 工 MAP4 の受信箱” %from. charlie "Char1ie't / 迎 1 . topicl " ML その 1 " / 迎 1 . topic2 " ML その 2 " [ 「れ ] a ロ 0 日 rl し st : F ロ 1 目 e 尸 ( F ロ虹 r ) ー LI ー - 日 11 一 &username1/pop3@pop—server l&username2/pop3@pop—server ー + inbox2 友達 { + from/foo " f00 くん一 + from/boo " b00 ちゃん一 *%from. taro,%from. jiro, + from/saburo + draft " 草稿ー + sent " 送信済みー + trash " ゴミ箱” 、 /IH フォルダ " 3 兄弟 十て始まるフォルダは MH フォルダです。つまり、 勺な MH 形式のフォルダを指します。たとえは十ⅲ b 。 x と指定すると、デフォルトでは / Mail/ ⅲ b 。 x ディレクト % で始まるフォルダは IMAP フォルダです。たとえは、 IMAP フォルダ リを指します。 %mboxname@servname とすると、 IMAP サー servname ク ) メ ールポック ス mboxname にアクセスします。 servname は省略可 UNIX MAGAZINE 2000.7
図 33 ・ Wanderlust (XEmacs) ftle Edit Mule 魯 ) ド Op も 0 れ s 他 T00 ト Summary 特集•ThinkPad 570 で FreeBSD 0 12 物 i 仟リ〉 / し国、な 0 、 ts / 国 ail 図 34 ports のディレクトリ 13 物 1 幵リ >ls -d 第 ( 、本 師 d lust ー s / 謝 - d 部・ 1 ト破託 s20 / 田 erl いト物 u 地 / 14 義 iffy > 14 員ⅳ f リ > ロ 材 ( 回・・ lust - 第 acs20 / ( 回寸 l-,st - 第 acs21 ” ule / 当叩 : / 33 / 1275 3 受信籍 : 0 / 0 / 3 向重要 ! : 0 / 0 / 4 0 プミ箱 : / 田 / 草稿 : 0 / 0 / 0 明 : 0 / 0 / 18 ー 1 地 : 0 / 0 / 401 - IPlab-Misc : の IPI ) - ・ S 社心ぎ 竹面厄 Lauers け ロ : 0 / 0 / 11323 ロお仕事 : 0 / 0 / 2345 9 05/17( ) 20 : 19 新 1 東 e Ts 山く ( 心 1 : ) / 1 ? ( ) 盟 : 44 ト Hisakazu くを社 8373 394 / 180 ) 02 : 14 に t21 く編 - - = 物“ー ~ = 、は 一聞ノ ( ) 物 5 曲旦色 .i„ 0 i 名 / 1 歇 ) 15 : 48 語 t 欲 a K 1 誠、 i を 80 「石 / 1 ス、・ ) 自・ワス丁心を料スト第 0 第 i イ十ス「れ・ 1 0 ーー on ′ゎ - メ % - トは 1 : は、 Date: Thu, 18 Hay 2000 03 : 55 : 40 900 Hessage—Id: く 200 ( 51803554 、。第、ム・第第・、ふ、〉 In—Reply—To: YO 出、醜 0 Thu, Hay 20N 02 : 1 Ⅲ - 阨門 i 可い 1.0 Content-Transfer-Encoding : 7b 置 > > デメリットはありますわ。 〉ラ ~ タの第効率でしようが ? 〉 ( 丐 ) 巧 3 > 後は、バケットの分解、韈の処諱遅延とかてすかね またかい話になりますが、 ルータやスイッチにおける転送処理量が増えます。 I 田 7 , - 新 44 い一、て 1P1 鹵 3 時 > 11 2 creation-date: 21 208 図 35 packages からのインストール Elect 「価ⅱ c mail packages 田 utilities. 物 tpd ー 2.0 pruce-0.4. 記 krat-l. 2 anderlust—emacs—l. 0.3 and 1 t ー S20 ー 1.0.3 anderlust—mule—l. 0.3 lust-xemacs20-1.0.3 mbiff-O. la aii ー 0.6 p 叩 3 ー 0.5.6a faces-3.3 usr/ports/mai 1 / t の ] usr/ports/nail/spruce] usr/rnrts/mail/tkrat] usr/ orts ma i 1 wander lust-em usr/ports/mai l/wander lust-mu /usr/ports/mai l/wanderlust-xe ん8/P師、 ts/mai 1 / bi 幵 ust 、、 ts/nai 1 m 第 ail u 望、 / øot 、 ts / 第 ail ん叩叩 3 usr/ports/mail/xbuff usr/ports/mail/xfaces 'LISr• 0 「 t 三 / いヨ、 Iu 三 t 一 Mew と WanderIust Wanderlust は同じ Emacs 上のメーラーである Mew とよく上肆交されます。キーバインドなどはよく似ています が、さまざまなフォルダとその一覧表示、 IMAP4 への柔 軟な対応など、 Mew より優れた部分も多くあります。 とくに、 XEmacs と組み合わせて利用すると、カラフ ルでアイコンなども多用されているため、見た目はたいへ ん派手です ( 図 33 ) 。 Mew は IM と呼ばれる Perl スクリプトをバックエ ンドでもっていますが、 Wanderlust ではこれをすべて Emacs Lisp で夫現しています。このため、 Windows な どの標準では Perl をもたない環境で Meadow などから 利用する場合には、 Mew より簡単にインストールできる と思います。 インストール ports からのインストール まず、 ports を使ったインストールについて説明しま す。 /usr/ports/mail の下にある以下の ports を利用し ます。できるだけ新しい p 。 rts を利用することをお勧めし ます。 ports が旧すぎると思われる場合は、前述したよう に適宜アッフ。デートしてください。 止ヨ ! 三多をミト ] 187 : ニ子一は / 韓盞 : : 鸞攣 [ 1 ] 低砌引 48 Yet せ、・ e e ⅲ t 日、 f tn 第一 ・ wanderlust-emacs (Emacs 19 の士昜合 ) ・ wanderlust-emacs20 (Emacs 20 の場 - 伶 ) ・ wanderlust-mule (Mule のナ昜合 ) ・ wanderIust-xemacs20 (XEmacs 20 の昜合 ) ・ wanderlust-xemacs21-muIe (XEmacs 21 の場合 ) インストールの手順ははかの ports と同しです。 root になって、それぞれのディレクトリで make install を実 行するだけです。関連するいくつかの ports も、必要に ここで注意してほしいのは、 FreeBSD 3.4 の pack- ・ wanderlust-xemacs20-1.0.3 ・ wanderlust-mule-l. 0.3 ・ wanderlust-emacs20-1.0.3 ・ wanderlust-emacs-l. 0.3 derlust か含まれています。 FreeBSD 3.4 の packages (mail) には、以下の Wan- packages からのインストール 応して自重加勺にインストールされます。 トールするはうがよいでしよう。 するか、頁で説明する手順でソースファイルからインス ので、 ports を最〒版に更新して ports からインストール 一部の機能が使えないなどの制限が出てくるかもしれない です 0 京稿執筆時の最新バージョンは 1.1.1 ) 。そのため、 ages の Wanderlust はやや旧いバージョンであること UNIX MAGAZINE 2000.7
CAFE BABE リスト 5 生産者・消費者問題 import j ava. util . Random; public class ProducerConsumer { public static final int BUFFER-SIZE = 5 ; public static void main(String args ロ ) { final Buffer buffer = new Buffer (BUFFER—SIZE) ; new Thread() { / / 生産者スレッド Random random = new Random ( ) ; public void run() { while (true) { buffer. put (random. nextlnt ( ) ) ; ・ 1 0 0 N td ・ 1 •H O d synchronized void put (int i) { while (((tail + 1 ) % size) / / パッフアが満杯のあいだ待つ System. out . print1n("Buffer is fu11. " ) ; try { wait ( ) ; } catch (InterruptedException e) { } buffer [head] head = (head 十 1 ) % size; 110tifyA11() ; head) { } . start(); new Thread() { / / 消費者スレッド public void run() { while (true) { System. out . println(buffer. get()) ; synchronized int get() { tail) { while (head / / パッフアが空のあいだ待つ System. out . print1n("Buffer is empty. try { wait() ; } catch (InterruptedException e) { } int i = buffer [tail] ; (tail + 1 ) % size; tai1 notifyA11() ; 1 ; } . start(); class Buffer { private int buffer ロ , private int Size ; private int head ; private int tail; Buffer(int i) { new int [i] ; buffer ducer) がデータを書き込み、消費者 (consumer) がデー タを取り出して使用する間題です。このとき、共有バッフ アか謚れないように管理する必要があります。 サンプル・プログラムをリスト 5 に示します。 このフログラムでは、バッフアは有限長のリンクンヾッフ アで、任意の整数を書き込む生産者スレッドと、 ノヾッファ から整数を取り出して標準出力に出力する消費者スレッド か並行に乍します。 なお、本来はバッフアが空の場合と : 淋不の場合とでは別 void sleep(long ミリ秒 ) の条件変数を利用すべきですが、 こでは Java の制約の void sleep(long ミリ秒 , int ナノ秒 ) ために 1 つの条件変数だけを使っています。 sleep() メソッドを実行している最中のスレッドをはか sleep() メソッド のスレッドがインタラブトしたときは、 InterruptedEx- wait() メソッドと同様に、タイムアウトを設定できる ception 例外が発生します。インタラブトについては、機 メソッドとして sleep() メソッドがあります。 sleep() メ 会をあらためて詳しく説明します リスト 6 に、約 1 秒間隔て驃気出力に出力する簡単な ソッドは、現在実行中のスレッドを一日亭止し、指定され た時間カ過したあとに実行を再開します。 プログラムを示します。ただし、スレッドが実行を一日亭 リスト 6 sleep() の実行 public class S1eepTest { public static void main(String args ロ ) { 0 ; i く 100 ; i + + ) { for (int i = try { Thread. currentThread() . sleep ( 1000 ) ; } catch (InterruptedException e) { } ; System. out. println(i) ; 114 UNIX MAGAZINE 2000.7