表示 - みる会図書館


検索対象: UNIX MAGAZINE 2001年12月号
78件見つかりました。

1. UNIX MAGAZINE 2001年12月号

連載 / シェルの魔術ー① 図 1 パイプラインとパックグラウンド・ジョブ % finger ー tail + 2 ー awk '{print $ 1 } ' ー sort ー uniq [ 1 ] 1594 1595 1596 1597 1598 2 moley 1 ohm [ 1 ] Done finger ー tail + 2 ー awk print $ 1 ー sort ー uniq 図 2 リダイレクションとパックグラウンド・ジョブ % cat testl . txt test2. txt > 10g. txt & [ 1 ] 1599 [ 1 ] ジョフの番号 cat testl . txt test2. txt > 10g. txt こで注意してはしいのは、 メッセージを表示させるために ジョブの終了を知らせる リターンの空打ちが必喫 プロンプトの前をよく見てみましよう。 や、、 [ 2 ] 1593 " という、なにやら怪しげな数字も表示さ れています。この数字のうち、、、 [ ] " で囲まれているは うをジョブ番号と呼びます。 さきほど説明したように、ユーサーはバックグラウンド で好きなだけジョブを実行できます。同しようなジョブを たくさん走らせると、どオ功ゞどれなのか区別できなくなっ てしまいますね。このため、シェルがバックグラウンド・ ジョブに対して番号を割り振っていくわけです 3 このジョブ番号は、ジョブを識別したいときに使いま す。たとえは、ジョブカ冬ったとき、シェルはジョブ番 号とともにその終了を通知します ( 次項で説明します ) 。ま た、ユーサーがジョブに対して操作をおこなうときにも、 ジョブ番号によって対象となるジョブを指定します。 一方、ジョフ番号の後ろに続く数をプロセス識別子と 呼びます。これについては次回以降で説明します。 バッククラウンド・ジョブの終り さきほど ls コマンドをバックグラウンドで実行しまし た。このときもう一度、リターンを空打ちすると・・ [ 1 ] 1592 " [ 2 ] ls となにやら表示されました。この表示は、、、 ls " というジョ プカ鮗ったことを表しています。また、 [ ] で囲まれてい る霆ネは、終了したジョブのジョフ番号です。 3 実際には停止中のジョブにも割り振られます。停に中のジョブについては 88 あとて説明します。 になったことです。つまり、ジョブカ鮗っても、その瞬 間に表示されるわけではないのです。このメッセージは、 ジョブカ鮗った時点からみて、次のプロンプトが表示され るときに一 -- 赭に表示されます。 とはいえ、プロンプトを表示するときまで、シェルが ジョブの終了を知らなかったわけではありません。しつ は、ジョブの終了と同時にそのことを知っています。そ れでも、プロンプトを表示するまて教えてくれないのは、 ューサーがフォアグラウンドでおこなっているイ / ド業の邪魔 をしないためです。 「作業の邪魔をされてもいいから、どうしてもどうしても すぐに教えてはしいんやけど・・ そんな場合も大丈たジョブの終了と同時に教えてもら ノート 2 れるようになります。 これで、ジョブカ鮗了するとすぐにメッセージか表示さ % set notify ないを実行しましよう。 うようにすることもできます。そのためには、次のおまし UNIX MAGAZINE 2001.12 また、 Z シェルの場合は次のおましないです。 $ set ー 0 notify ルの場合は次のように実行してください。 ようなおましないがあります。たとえは、 BourneAgain シェ ジョブ制御の機能をもつシェルのはとんどで、これと同し

2. UNIX MAGAZINE 2001年12月号

0 を交わすための機能もかならず用意されています。 市販のグループウェア製品では、これらの機能を別々 のシステムとして提供することが多いようです。たとえば サイボウズの製品では、会議室予約やスケジュール管理な 最終史新 10 分齧 1 日 1 - 。 1 1 月 1 年 物 / 掲示仮 ど、用途に応じて 10 を超える機能が用意されています。 予定表 28 一月 0 / 師 22 : 35 掲示とⅧ k ゆ比較 2 〔ーハ 0 / 26 2 ~ 唸 6 を 0 日記 20F 月 0 / 2622 : 04 : 14 これらの製品では、用途ごとに異なるシステムを使わざ 家計薄 れー / 10 / 2622 、 : P 。まサーバの計算機能 20F / 10 / 部 20 郷 : 55 るをえませんし、その性質上、使い方がかなり限定される ブックマーク 2 ( 町一内 0 / 26 ー 0 る 141 面白情報 20F 月 0 / 26 当 823 バーコードによる書籍管理 のではないでしようか。したがって、想定されていない用 をー内 0 / 268 : 400 噂 / ゴシップ 20 ) 1 ハ 0 / 263 な 6 : 3 き 更新履歴 20F み 0 / 268 : 3023 途で利用するのは難しく、異なるシステム間ではデータの ビデオ上映会 28 ーハ 0 / 25 ー 447 当ト 名言集 20 カ 0 / 24 ー 034 砂 退秀がとりにくくなるおそれがあります。 CS [ ニュ←ス 2 DI / 10 / 241002 2 掲示システム改良 2 ・月 0 / 2323 当 5 : 41 掲示仮アクセスの視覚化 熱ーハ 0 / 2023 当 84 これに対し、あらゆる用途に柔軟に対応できる単純かっ 図 2 掲示板」 ( 更新履歴 ) 強力な基本システムを用意すれは、こういった間題も起き にくいでしよう。 方イルの集表示検索 ) ジやンプゆカりマーり⑧タスクヘルプ 今回は、掲カ財反と Wiki の基本機能だけを用いたグルー 新履歴 記事ま引記事肖験ー覧 プウェア機能の実現について考えてみます。 図 1 タイトルリスト . 方イル 0 編集 ( 印表示 ( 常・ジャンプ 0 ブマーり ( 印タスりヘルプ ( 印 リスト 製リスト ~ に 0 5 年 新雇ーいこ印を 5 卩ツ井 28 レ 18 田 : 幻 し RL の中に W rre か含まれているとひどいことになるのでとりあえすの処理を鄰した。 増井 / 18 四芻 現在のアクセス表示はこんなこ。 3 増井 2C01 ハ幻 2 : 17 G 旧こよる視覚化を変更してみた。分 . 宿寺間 / 日よどでアクセス分布を表示。 イ増井 2 ( 朝 / 10 / 幻 198 : 1 日 アクセス履歴を G 旧表現するようにしてみた。 イ増井 ( 4 / 10 / 2318 掲示板を投稿ごとに別にのディレクトリに格納するように変史 記新靈にトを 掲示板十 Wiki = グループウェア 極論をいえは、日記やメモ、スケジュール管理、言侖な どは、人間か書いた文章を並べたものにすぎません。いろ いろな人の意見をトピックごとロ }J 順に並べたものは掲 カ財反に、内容を考慮して読みやすく並べたものは凾の文 書にみえるでしよう。また、考えたことをとりとめもなく プログラムです ) 。 時間順に並べたものは日記に、予定だけ取り出してカレン タイトルリスト ダーの上に並べれはスケジュール帳にみえます。 図 1 は、すべての掲カ反と Wiki ページを一覧表示する 最初から定型的な文書を作ろうとするのではなく、非定 トッフ。ページです。掲カ反と Wiki ページは色分けされて 型文書を並べ替えて定型文書にするという方針にしておけ います。右側には、各掲カ財反や Wiki ページへのアクセス は、メモをとったり意見を交換したり、あるいはスケジ 状況を視覚化して表示します。たとえは、過去 10 分以内 ュールを調整したりといった非定型的な要素の多いイ事に にアクセスされたページは一番左の、、 10 分 " の欄に棒カ俵 適した文囓着理システムか作れるはすです。 示さ時間の経過とともに、、 1 時間 " 、、 1 日 " このように考えていくと、次々に作成されるテキストを いうふうに右に移動していきます。 時間順に並べて表示する仕組みと、内容に応して編集しや 掲示板 すいようにまとめる仕組みさえあれば、たいていの竹喋に 図 1 から、、更新履歴 " という掲カ財反お尺すると、図 2 適用できそうです。前者には掲反を、後者には Wiki を 窈曷反か表示されます。掲カ財反といっても、この例では 使えばよいことになります。 才者は和だけですが、更新履歴のように時間の糸を茴か重 掲反も Wiki も、もともとは共同イ乍業や青報交換のた 要な場合には掲カ財反の形式て情報を保存しておくはうがな めのシステムです。ただし、個人的な日記やメモ帳のよう にかと便利です。 な用途にも十分便利に使えるように思います。 以 - E のアイデアをもとに、 Web 上で掲カ財反と Wiki を 掲示板へ窈殳稿 統合したシステムを作ってみました (Perl で書いた CGI 図 2 の右上にある、、記事投稿 " をクリックすると図 3 の 178 UNIX MAGAZINE 2001.12

3. UNIX MAGAZINE 2001年12月号

ユ et ・ 5 PIay with UNIX ⑩ 図 2 モジュール名の表示 T00 旧 図 3 ターミナル名の表示 TOO 旧 Sam & HO に length CV こで名前か表示されている "SampIe & Ho 旧 length CV" は、 Os- cillator の則下にあるサンフ。ル & ホールドク刈罸を制餌するターミナル。 つの音源モジュールか利用できる。これらのうち、 Sam- pler はそれ自体に固有の音色はない。読み込む WAVE フ ジュールをクリックすると、 Oscillator の操イ行、ネルが ァイルの品質で音色カ鴃まるので、残りの 2 っとはちょっ 表示される。表示されているパネルを隠すには、再度アイ と別の扱いになる。 コンをクリックするか、あるいは操イ行、ネル左 - E の [x] ポ 出力モジュールには、オーディオ信号を PC のオーディ タンをクリックする。 オ・テパイスへ出力する OSS と、モニター上に杉を表示 操作パネル左下にある三角形のアイコン ( く ) をクリッ する Scope の 2 つがある。このどちらかに音源モジュー クすると、操作パネルで設定した数値か読み耳ゼ L るように ルの出力を接続す川まいい。 なっている。ただし、数値の入力はできない。 モジュールの呼出し パッチ接続の方法と意味 これらのモジュールを呼び出すのが、 SSM の操作の第 各モジュールの両側にある穴のようなものがターミナル 一歩である。それには、 ToolBox 内のアイコンをクリッ で、モジュール間をパッチコードて接続するときはこれを クする。しかし、どのアイコンがどのモジュールを表すの 使う。ます、接続したいターミナルの片方をクリックする かを識男けるのは大変である。 : 第彡を模したアイコンがた と赤色に変わる。そして、もう一方のターミナルも同じよ くさんあり、見分けがつかないのである。 うにクリックすると、 2 つのターミナルのあいだに赤い線 か引かれる。これがイ瓦想的なパッチコードである。 アイコンにポインタを当てると、べースウインドウの下 部に、、 OscillatorPIugin. so" のような名前が表示される 接続されているパッチコードを外すには、どちらかの ターミナルをクリックする。なお、パッチコードによる ( 図 2 ) 。これを手がかりにして判別すればいいのだが、そ れなら最初からモジュール名をテキストで表示してくれる ターミナル間の接続はつねに 1 対 1 であり、 1 つのター ほうがいいような気もしないではない。 ミナルから複数のターミナルへパッチを張ることはできな い ( そのようなタコ足酉当泉が必要な場合は、あとで説明す で、このアイコンをクリックすると、ウインドウの右側 る Splitter というモジュールを使う ) 。 にモジュールか現れる。ただし、続けざまにモジュールを 基本的に、モジュールの左イ則のターミナルが入力、右側 呼び出すと、これらのモジュールはすべて同し位置に表示 カ咄力になっている。受け付ける信号の不頁はモジュール されるため、次から次へと重なって何がなんだか分からな ごとに違うが、ターミナルにマウスのポインタを近づける い状態になってしまう。呼び出したモジュールは、かなら と、べースウインドウの一ト部にターミナル名か表示される すマウスでドラッグして別の位置に動かしておこう。 ( 図 3 ) 。 操作パネルの呼出し 手始めに、 Oscillator (OscillatorPIugin. soo 図 4 ) 多くのモジュールには、それぞれの操イヾネルが用意さ と Scope (ScopePlugin. soo 図 5 ) を呼び出し、パッチ コードで接続してみよう ( 図 6 ) 。 れている ( ないものもある ) 。たとえは、 OsciIlator のモ SPI いⅢ MOd 朝引リ 03C 皺 0 「 P に 0 ! 1 0 122 UNIX MAGAZINE 2001 ユ 2

4. UNIX MAGAZINE 2001年12月号

ーフェイスの街角の インタ 図 3 記事ま高 万イル ( 日編集表示検常ジわプ 0 ブックマーり⑧タ乃 (I) ヘルプ ( 印 投稿者名 / タイトル / 本文は町Ⅵカミ使えます。 沖パスワード 図 6 、 Viki ページの例 方イルの集 ( 印表示叨常ジャンプブッりマーり⑧タスク (I) ヘルプ 掲示板と Wiki の比較 履歴ー編集ー一覧 : 、よく使われていますが、ともに長所と短所があると思いまを。掲示仮とを融等 ることによリ、これらの長所を組み合わせて便えるのではないかと考えています。 掲示板の特徴 1 や投 1 寺がわわリすい まからの情報かがはっきりわかる 世間でよく便われている ・ x 大事なをのでも古い情報が消えで - ′まうので T O や F Ot よどを丿にくい ・ x ひど丿で使うことはできない一日にとがには実は第 Wiki の特徴 どこからでも参加可能 ・中力らでも論に参カルや誓、 ・簡単にⅥもレヾージを作ることカできる ・ = 時初ドがわかりにくい ・ x 誰が編集したのかわわない ・ x なんとなく数居が高いかも 図 7 、 Viki ページの験 、万イル ( 日編集 ( 印表〒 ( 検常 ) シャンフ 0 プマゆ⑧タスりヘルプ凹 掲示板と Wiki の比較 上些」フィルタ」新颪液ー可 の h い 0 : / ん” .2ch. n 2 ゃんわる ] に代表されるような掲示板と http://todo ・ org/cgi-bin/jp/tiki . i Tiki] や http://eee ・ jin ・ gr . jprnahi/Rfiki/ R 響 iki ] のような [http://c2 ・ con/cgi/ 響 ikibase liki 'iki b ] が く使われていますが、 ともに長所と短所があると . います。 示板と引 ki を融合するこによリ、これらの長所を組み合わせて使えるのではないかと えています。 hZ 〉掲示板の特徴く / h わ 引 > 間順やキ都寺亥がわかりやすい ⅱ〉誰からの情報かかはづきりわかる ⅱ > 間でよく使われている Ⅱ > x 事なものでも古い情報が消えてしまうので 80 や FÅO などを作りにくい い > x ひとりで使うことはできない く簡 n を引 ze : -1 c 引 0 「 : ”れ > 日記とかには実は便利 ! く / fon い 記事一第 , 試を 5 掲示仮と比較ーに 0 きを 記事餘時に必要です。 形式 0 プレーンテキスト印敏行にはくめくのなど明示が必要 ) 内容ょっ 図 4 キ髜麦の更新履歴 フ河ルの編集表示強索 ) ジャンプ 0 ブックマーグ印タスクヘルプ ( 印 更新履歴 記事投擡に己事一一覧 更新鰕歴ー第いい 5 製〒物と wtk 比較ーい 0 叩 8 0 履歴ー一覧 0 増井 2 こ朝 / 13 : 46 : 10 ちょっと史新 ? 増井 2 4 / 18 田 : 幻 し RL の中に Nki ト b が含まれているとひどいことになるのでとりあえすルの処理を財した。 る増井 2 ( / 1 芻 53 現在のアクセス示はこんな 増井 20 朝 / 1 四 : 17 田 G 旧こよる視覚化を変更してみた。分ル旧′よどでアクセス分布を表示。 イ増井 2 4 / 1 19 : 18 アクセス履歴を GIFT 表現するようにしてみた。 ー、増井 2031 / 162 創 掲示仮を投稿ごとに別にのディレクトリに格納するように変更 図 5 記事キ髜麦のタイトルリスト 方イル集 ( 印表示 (I) 技常ジャンプ 0 プマーり ( 印タスクヘルプ し 記事投キ引記事肖一一覧 リュト - に蘚 0 ーで右上の、、編 はⅥ Tiki ページのほうカ更利でしよう。こ 検索 / 作成 集 " をクリックすると、画面か図 7 に変わり、 Wiki«— 最終史新 10 分 1 1 日 1 / 掲示抜 1 月 1 年 年 東新履歴 28 ー / 10 / 2622 : 新 ジの編集ができるようになります。 予定表 2 第内 0 ノ 26 22 : 36 : 掲示仮と物 k 比絞 2m1 月 0 / 26 22 : 26 支 0 この例では HTML を直接言当していますが、 URL と 日記 ー内 0 々 022 : 04 : 14 家計薄 20 』月 0 / 26228 : 名前を、、 [ ] " で囲んでリンクを指定する簡易記法も使えま Poærrot' ーバの計算機能 2 月 0 / 2620 6 当 5 ブックマーク 月 0 / 26 1 9 : 51 1 面白情報 20 月 0 / 2 を : 5823 バーコードによる書籍管理 れー 0 / 25 : 40g 噂 / ゴシップ ~ , 20 第 / 10 / 2 をつ 名前を、、 [ [ ] ] " で囲むと、その名前の Wiki ページへ ビデオ上映会 20F ハ 0 / 251441 る 6 名言集 20F / 10 / 24 ー住 34 当き OSL ニュース : ー / 10 / 2410 つ 2 2 のリンクか生成され、、、くく〉〉 " で囲むと、その名前の掲 掲示板システム改良 2 ・ OI カ 0 / 2 ↓ 2 ? 豸 5 : 41 掲示板アクセスの視覚化 2 ( ー / 10 / 2 ? 23 当 0 ー 4 カ反へのリンクが生成されます。これによって、掲カ反や Wiki ページ間での相参照が簡単に滝見できます。 フォーム画面カ俵示さ新しい記事を才哥できるように 、 Viki ページのフィルタ なります。必要事項を書いて [Submit] ボタンを押すと、 図 8 は、予定表のための Wiki ページです。このペー 掲カ財反か図 4 のように変わります。 ジはユーザーが HTML 形式でデータを直接言当するわけ 掲カ財反の更新にともない、タイトルリストも図 5 のよう ではなく、単純な予定データをフィルタに通し、 HTML に変化し、、、更新履歴 " が知直に移動しています。 のテープルを自重丿吽成してカレンダーを作る仕組みになっ Wiki ページの 3 セキュリテイへの当進か必要な湯をでは、 HTML を滷 : 接記述できるよ 図 6 は Wiki ページの例です。このページのように うにするのは題かもしれません。ただし個人あるいはグルーフ。内での 時間軸をそれほど重視する必要のない情報を扱う場合に イ月に限定するのなら、これでもかまわないと思います。 リスト 179 UNIX MAGAZINE 2001.12

5. UNIX MAGAZINE 2001年12月号

連載 / シェルの魔術ー① と呼ぶことにします。一方、洗濯機がおこなっているジョ プは、、バックグラウンド・ジョブ " と呼びます。 こまでの説明は、シェルにも同しように当てはまりま す。パイプラインなどでまとめられた一当里のコマンドをジ ョブと呼びます。シェルがあるジョブの終了をしっと待っ ている場合、そのジョブはフォアグラウンド・ジョフと呼 はれます。一方、ジョブの終了を待たすにプロンプトを返 す場合、そのジョブはパックグラウンド・ジョブと呼は・ れます。フォアグラウンドとバックグラウンドは、日本語 でそれぞれ表 / 裏という言葉を使うこともあります。「ジョ プを裏で走らせる」などというわけです。 フォアグラウンド・ジョフ ジョブを始めるとき、いままでのように普通にコマンド を実行すると、フォアグラウンド・ジョブになります。 % ls 1i k . 1 link . 2 testl . txt test2. txt バッククラウンド・ジョフ ジョブをバックグラウンド・ジョブにする ( 裏で走らせ る ) ためには、ひとまとまりのコマンドの最後に制御文字 、、 & " を付けます。 % sleep 120 & [ 1 ] 1592 ←すぐに表示される として実行してみましよう。 して実行した ls コマンドを、バックグラウンド・ジョブ 試しということで、さきほどフォアグラウンド・ジョブと 好きなだけジョブを実行することができるのです。ものは こともできます。つまり、ユーザーはバックグラウンドで こで、さ引ンヾックグラウンド・ジョブを走らせる 利用できます。 ンド・ジョブを使うと、ジョブカ鮗るまでの時間を有効に めることができるわけですれこのように、バックグラウ で、 sleep コマンドを裏で実行しながら、次々と作業を進 ックグラウンド・ジョブとして実行された証拠です。これ すぐにプロンプトか表示されました。 sleep コマンドがバ さきはどのフォアグラウンド・ジョブの場合と異なり、 こでは、 ls コマンドが実行さその結果か表示され てから次のプロンプトが表示されています 1 。つまり、シ ェルは ls コマンドカ鮗るのを待っているわけです。 もうすこし時間のかかるコマンドで試してみましよう。 トを表示せずにしっと待っています。 かります。シェルは sleep コマンドか終るまで、プロンプ この例では、 sleep コマンドは終了するまでに 120 移力、 ← 120 秒経ってから表示される % sleep 120 UNIX MAGAZINE 2001.12 表す場缶第多いようてす。 り、 $ で Bourne シェル系のシェルを、 % で C シェル系のシェルを 1 プロンプトは E によって変更することかできますが、デフォルト値によ のバックグラウンド・ジョブの例とくらべてみてください。 これらの例だけでは分かりにくいかもしれませんが、次 えられます。何もしない、ということも重要なんてす マンドの結果が反映されるのに時間がかかるといった場合が考 ですが、連続して実行すると負荷か高くなりすぎたり、前のコ 休みを入れるために利用します。休みが必要な理由はさまざま ンドを順番に実行する場合に、コマンドとコマンドのあいだに に立つのだろうと思うかもしれませんが、たとえは複数のコマ します。それ以外は何もしません。こんなコマンドがなんの役 sleep コマンドは、、指定した秒数だけ眠る " という仕事を % Is & [ 2 ] 1593 % link . 1 1i Ⅱ k . 2 testl . txt test2. txt おや、今度はプロンプトが見当たりませんね・・ 。おっ と、よく見てください。 ls コマンドの実行結果か表示され ている行のう頁に、プロンプトか表示されているではあり ませんか。 ls コマンドの結果が出力される前に、シェルが プロンプトを表示してしまったのです 2 。このことからも、 シェルがコマンドの終了を待たすにプロンプトを表示して いることを実感できますね。 ところで、バックグラウンド・ジョブの結果が、フォ アグラウンド・ジョブの場合と同しように端末に出力され ていることに仂ゞつきましたか ? この例からも分かるとお バックグラウンド・ジョブの標準出力にはコマンドを 実行したシェルの端末か引き継カれます。また、標準入力 と標準ェラーも兼に引き継がれます。ただし、標準入力 についてはすこし注意が必要です。これに関してはのちほ ど説明します。 2 TC シェルなどでは、このようにならない場合もあります。 87

6. UNIX MAGAZINE 2001年12月号

連載 / BSD をハックする一の xosview の表示 •PROt$ per 滝ノ IDLE 図 1 0 冊 PU Eh 26 目 - 鬩日 P 。 0 日 GE 0 ET ISk 70K NTS 第 XFER/IDLE ・ CPU 使用状兄 ・ロードアベレージ —mbuf ーノヾッフア・キャ ープロセス空間 ・メモリ使用状況 ツンユ ・ネットワーク I/O 状兄 ・コンソールへの syslog 出力 ・プロセス数 ・アクテイプなプロセス数 UNIX MAGAZINE 2001.12 1 pkgsrc/sysutils/xosview/ 1 画素 = 1 文字の棒グラフなら実現できそうです。そこで、 今回使用している液品は 1 行が 20 文字ぶんあるので、 はできません。 ク待ち ) を考えると、 xosview のように頻繁な画面書換え す。また、通イ言隻 ( 9 , 600bps 、 1 文字ごとにエコーバッ 的なことはできるかもしれませんが、これはかなり面倒で 表示はできません。ューサー定義フォントを使って擬似 今回使用しているシリアル接続液品では、グラフィック れます。 ように、頁目ごとに直とグラフィックの両方で表示さ す。そこで、 x 。 s ⅵ ewl を参考にしました。これは図 1 の いろいろありますが、表示できる文字数は限られていま 図 2 醯設計 rx 凵 #####B 凵 tx 凵 #####B 最初のバージョンでは以下の 5 項目を表示することにしま ・ロードアベレージ ・メモリ使用状況 ープロセスの・合言 ー空きメモリ ・ネットワーク I/O 状況 ・ディスク I/O ・ CPU 使用状況 画面言十 画面言の叩き台を図 2 に示します 5 それぞれの糸督直を得るためにはカーネルのどの部分を 統言直の取得 数の制限があるためこのようにしました。 すが、転送量を別々に知るのは難しいことと、画面の文字 表示します。書込みと読出しを男 ! 胴に表示したいところで 4 行目はディスク I/O です。これも数値と棒グラフで ます (@の部分か棒グラフ ) 。 3 行目は CPU の利用率です。数値と棒グラフで表示し バイト数を表示します。 2 行目はネットワーク I/O です。送信バイト数と受信 量を数値で表示します。 ジを表示します。続いて、使用中のメモリ量と空きメモリ まず、 1 行目の左から 7 文字を使ってロードアベレー メモリ averunnable を参照すれは分かります。 これは、前々回 ( 8 月号 ) に説明したとおり、大域変数 ロードアベレージ 調べれはよいかを検討します。 93 リー内の VM-METER サプカテゴリーについて間 , 午を が、メモリの fr_ 煢を得るには sysctl で CT-VM カテゴ vmstat や xosview のソースを参照すれば分かります

7. UNIX MAGAZINE 2001年12月号

BSD をハックする 齊藤明紀 ステータス表示器 ( 3 ) 写真 1 LCD の LCD によるステータス表示 ( 続き ) ハードディスクは消耗品であるとよくいわれます。たし かに、信頼性では定評のあるメーカーのハードディスクで も、一定の割合で涛命の短いものがあります。運悪くそう 、、外れ " を引いてしまうと、購入してすぐに壊れると し、つ いう目に遭います。 対策としては、バックアッフ。やミラーリン久あるいは RAID 5 のような冗長化か挙げられます。 NetBSD も含 め、山も匠の OS は ()C UNIX だけでなく Windows も ) ソフトウェア RAID やソフトウェア・ミラーリング機能 前回 ( 10 月号 ) は、シリアルポートに接続した LCD かオ剽售で提供されています。 パネルに文字列を表示するところまで説明しました。今 したがって、手間と多少窈生能劣化を覚語すれは、無料 回は、さまざまなカーネル↑欝にを表示できるようにします でデータの冗長化が可能になっています。ハードウェアの ( 写真 1 ) 。 RAID 装置もありますが、高価なのでプライベートや小規 ます、表示器のスペックを確認しておきましよう。前 模用途には向きません。 回紹介したとおり、秋月電子通商か販売しているシリアノレ ところが山も匠、 3.5 インチ IDE ディスクをミラーリン 制御の液品表刀ヾ器で、 LCD ュニットの画面が大きいモデ グするタイプのハードウェア RAID 1 ユニットが 3 万 ルを使用しています。 円 ~ 6 万円くらいと襾になってきました。これは、 PC これは 20 文字 >< 4 行表示のキャラクタ・ディスプレ の 5 インチベイ 2 つぶんのサイズの RAID 装置で、コ イで、 119 x 35 ドットのドットマトリクス液品表示ユ ントローラと 2 台の IDE ディスクをイ褓内することかて、き ニットを使っているようです。表示できる文重は、 JIS- ます。 X ー 0201 (JIS カタカナ ) にほほ 1 材処した 192 文字のほか、 こまて安くなると、頑張って CCD (Concatenated ューサー定義フォントが 8 文字です。各文字は 5 x 8 ド disk driver) や RAIDframe の設定をおこなうより、金 ットですか : 一番下のドットはカーソル ( アンダーライン て解決しようかという気持ちがむくむくと湧いてきます。 型カーソルです ) 表示に使用します。なお、文字と文字の ちょっと頑張れはよいことをサポって金を出すのは老化現 あいだは横方向、縦方向ともに 1 ドットすっ空きがあり 象かもしれないなあと思いつつ、この RAID 1 の箱を 2 ます。 つも買ってしまいました。 購入してから 2 ~ 3 カ月経ちますが、なかなかセット 表示内容の検討 アッフする日肋ゞとれません。数カ月くらい運用してみた 表示したい情報を思いっくままに挙げてみます。 うえで、その経験をこの連載でも紹介したいと考えていま ・ディスク I / O す。 、朝 ) ~ ら「強第日、第気 92 UNIX MAGAZINE 2001.12

8. UNIX MAGAZINE 2001年12月号

0 図 8 予定表 . 方イル編集表示 (Y) 索ジャンプ 0 ) プ朸マーク但 ) タスクヘルプ 予定表 履歴ー編集一一覧 「 1 Ⅳ % - ( 木 ) 10 / 第 1 Ⅳ 27 10 / 21 1 イ月 ) い 0 / 四 ( 火 ) 3 1 Ⅳ ( 日 ) ⅱた ( 金 ) il ) 、 0 / 31 ( 水 ) 「 / 1 ( 木 ) 「 1 四 ( 月 ) ! 曰 0 / ( 火 ) 10 / 2 日 ( 日 ) ド子定表・・第い 0 斗ぉ 6 今回のシステムは、開発してから日が浅く、使用実績は それほどありません。しかし、いままでのところは、掲示 板と Wiki の組合せはなかなか・商です。しはらく実験 的に使いながら、予定表やメモなどの PIM に関連するも のや、グループウェアとして扱うデータをこの形式に移行 しようと考えています。通常の Web ページもこの形式で 言当できるようにしておけば、どこにいても修正が可能に なります。 PDA との同期か可能であり ) 個人でもグルー フでも同しソフトウェアを使える点は、将来的に大きなメ リットになると思います。 このシステムは、通常の Web プラウザと CGI の利 用を前提としているため、 Q-Pocket で用いた重加索の ようなインターフェイスは使えません。また、 Emacs の ように強力な編集機能か利用できないという間題もありま す。しかし、データ自体は単純な構造なので、 Web プラ ウザ以外のインターフェイスを揃えていけは、さらに使い やすいシステムに仕ーヒげられるのではないかと思います。 メールて予定表を管理する MHC4 と同様なガ去を用いて、 メールを介した情報の追加や検索がおこなえるようにすれ は、携帯電話だけで使えるシステムになります。 朝 ( 月 ) 訂一ⅱ / 6 ( 火厂 11 / 9 ( 金 ) 11 / 10 11 / 4 ⅱみ 63 ) - 当 1 / 17 ( 土 ) 11 / 1 イ ( 水 ) 11 / 15 ( 木 ) 11 / 12 ( 月 ) 11 / 13 ( 火 ) 11 内 1 ( 日 ) 11 / 21 ( 水 ) ; 11 / 靆 ( 木 ) 11 / 23 ( 金リ 11 / 24 ( 土 ) 11 / 19 ( 月 ) 11 / ( 火 ) 11 / 16 ( 日 ) 11 / 28 ( 水 ) イイノ四 ( 禾 ) ⅱ / ( 金 ) i2 / 1 ( 土 ) ~ 行イ月 ) ⅱ / 2 れ火 ) 11 / 25 図 9 予定醯 方イル [ ) 編集表示強常・ジャンプ 0 ブマーり⑧タスりヘルプ ( 印 予定表 フィルタ「方てプーー・ 0 田 / 11 / 3 文化の日 00 レ 1 1 / 20 AVI 02 帰切 子定表 - ています。 図 8 て省上の、、編集 " をクリックすると、図 9 の編集画 面か表示されます。この図からも分かるとおり、データは ごく簡単なテキストとして言当します。これをカレンダー 用のフィルタて処理することにより、図 8 の HTML が 生成されます。 カレンダーだけでなく、各種のフィルタを用意しておけ ば、さまざまな用途に対応させることができます。たとえ は毎日入力する家引・簿のデータをもとに、収支グラフを生 成するフィルタも作れるでしよう。 おわりに 以前から、 PIM といえどもグループウェアとしての機 能か重要だと孑商する声は少なくありませんでした。しか し、そのための機能を活用している人はあまりいないよう です。 これまでは、ネットワーク環境が未整備だったことも あって、スケジュール管理に紙と鉛筆を使おうが、 PDA や PC を使おうが大差ないのが実情でした ーにきて、 ようやくネットワーク基盤か整い始めたため、ネットワー クを活用するグループウェアは大きく発展する可能匪があ ります。柔軟かっ屯で、優れたシステムの開発力球めら れるところです。 今回のシステムは、私の Web ページ 5 で公開していま す。掲万財反 , 、の手高や Wiki ページの編集もできるように していますので、ぜひお試しください。 はすい・としゆきソニー CSL) 実装と使用実績 掲反や Wiki ページへの書込みをおこなう場合には、 新しいメッセージや編集された Wiki ページに対して時 刻にもとづく新しい ID を割り当てて保存します。掲カ財反 であれば同じタイトルのデータを集めて時刻順に表示し、 Wiki ページであれば山データのみを表示します。この ように、掲カ財反と Wiki ページは一見すると違うもののよ うにみえますが、データ自体は ID のみで管理するごく単 純な形式にしてあります。このデータ管理手法は、 2000 年 5 月号で紹介した Q-Pocket と同じなので、異なる PIM などとのデータ交換も容易です。 4 http://www.quickhack.net/mhc/ 5 http://www.csl.sony.co ・ jp/person/masui/WikiBBS/ 180 UNIX MAGAZINE 2001.12

9. UNIX MAGAZINE 2001年12月号

3 の ( ばなりません。さきほどの宣言では引数の数が 1 っとな っているので、 2 つ以 E の引数を指定したときに警告メッ セージが表示されてしまいます。それを cpp で確認して みましよう。 % cpp #define P(x) (x) int main P (int ac , char : 2 : macro 'P' used with ( 2 ) t00 many args lns w ーマルチプラットフォーム対応インストーラ開発環境ー ◆〃 DEVELOPER int main ( int ac ) マクロ P に複数の引数を指定した部分で警告メッセー ジか表示され、出力では 1 つ目の引数しか出力されていま せん。 この間題は、括弧とカンマ演算子を使えば解決できま す。 C 言語では、複数の式をカンマで区切って並べ、全 体として 1 つの式であるかのように角物 ( することができま す。そこで、複数の引数をカンマ演算子でまとめて解釈さ せようというわけです。そのために、引数の並び全体を括 弧でくくり、 1 つの引数であるかのように指定します。っ int main P((int ac, char **av)) という形式て呼び出します。このガ去なら、マクロの仮引 数に括弧付きの数式か割り当てられるため、マクロ定義に おいては瓜か不要になります。 この形式で指定したときに K & R で正しく解釈するた めには、 P マクロ全体力啌の括弧の対になっている必要が あります。そのため、ソースコードにあるようなマクロ定 義となっていたわけです。 マクロ定義に続いてファイル本に関するコメントがあ り、次のように書かれています。 [consume , supply) [supply , consume) 2 ~ 3 行目は、 full と呼はれる ( データの埋まった ) 部 分が consume 以上 supply 未満であることと、 empty と呼はれる ( データの埋まっていない ) 部分が supply 以 上 consume 未満であることを示しています。この記法 は、開区間限と下限を含まない区間 ) と閉区間限 と下限を含む区間 ) を表す標勺な記法にもとづいていま Windows 、 SoIaris 、 Linux 、 Mac OS 、 HP - 獸、 A Ⅸなど、あらゆるプラットフォームで インストールを実現 ピジュアルなインタフェースで 視覚的、かっ直感的な操作 日本語を含む 29 尋 ( 日ロロ standard は 9 言語 ) の インストーラ開発 www.b00.co.jp/installanywhere/ 動作環境 標準価格 」 ava 1 . 1 以上 Enterprise 335 , 000 円 Standard 140 , 000 円 フリーウェアの lnstallAnywhe 「 e Now! もご利用いただけます。 開発元 : 米国 Ze 「 0 G Software 社 BOC は文化オリエント株式会社の登録商慓です / その他記載されて いる会社名および製品名は各社の商標または登録商標です / 表示の 価格に消費税は含まれておりません 製品のお求めはクライアント・サービス本部まで ー www.bOC.co.jp/sales/ BOC は」 a aO れ e のシルバースポンサーです。 11 月 28 日 ~ 30 日 - バシフィコ浜 - 」 a 旦 One http://jaVa.sun.com/javaone/ 文化オリエン新式会社 本社仙台市泉区七北田字白水沢 14- IAKAMA ビル〒 981-3131 Td022-373-0360 Fax022-373-1625 fu11 : empty : 30 ( 71 UNIX MAGAZINE 2001 ユ 2

10. UNIX MAGAZINE 2001年12月号

連載 /JavaServer Pages—@ 図 16 サープレット・コンテキストとその青報を取得する context ・ jsp ファイル く %@ page contentType="text/htm1; charset=Shift-JIS" % > く ! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4 . 0 Transitiona1//EN"> く html> く head> く meta http—equiv="Content—Type" content="text/html ; charset=Shift—JIS" > く tit1e>Serv1etContext ( ) method く /title> く /he ad> く body> く % config ・ getServ1etContext ( ) ; Serv1etContext sc く % = sc. getServerInf0 ( ) %> く br> サープレットパージョン : く % = sc ・ getMajorVersion() % >. く % = sc. getMinorVersion() %> く br> xm にファイルを見ていくと、次のような言当主がみつかる カレントディレクトリ : く % = sc ・ getRea1Path('"') %> く br> く /body> く /html> はすです。 く servlet> く /servlet> Serv1et く /servlet—class> く servlet—class.org/apache . J asper く servlet—name>j sp く /servlet—name> 図 17 context ・ jsp を表示した結果 卩 - フ , イル・編表示お知こ人りツールヘルプせ ー郎・ 0 奇 1 0 検常三おび、り当履歴・朝動 - をリンり e.lM " ! アドしス 0 ト 0 ″″ ( 事 / 聞 eon 第 p サーバー Acache Tomcat / 40 1 サーブレットバージョン : 23 カレントディレクトリ : / リ sr / loca レ k 日臧一 t 。 mcat ー 40 1 れに / u ん m 日 g 日 . servlet . Jsp 小・第示されま 0 億をみサイト く ! ーー The mapping for the JSP servlet く servlet—mapping> く servlet—name>jsp く /servlet—name> く url—pattern>*. j sp く /url—pattern> く /servlet-mapping> 84 り、ログメッセージを出力できます。図 16 は Servlet- プジェクトか得られれば、サープレットの情報を入手した Context オプジェクトを返します。 ServletContext オ 現在のサープレットに対応した javax. servlet. Servlet- ServletContext() です。このメソッドは戻り値として、 ソッドは、サープレット・コンテキストを取得する get- config 暗黙オプジェクトか胱供している 2 つ目のメ サーフレット・コンテキストの取得 わります。 を書き換えると、図 15 で表示されるサープレット名も変 ンに対応するサープレット名で、上記の 2 カ所の jsp servlet-name" タグで囲まれている部分が JSP 工ンジ Context オプジェクトを取得し、サープレットのバージョ ンとさまざまな情報を表示する context. jsp ファイルで、 図 17 はそれを表示した結果です。 サープレットのパラメータの取得 getInitParameter() と getInitParameterNames() は、どちらもサープレットのパラメータ情報を取得するメ ソッドです。 getInitParameter() は引数としてパラメー タ名をとり、パラメータの値を Str ⅲ g オプジェクトとし て返します。 getInitParameterNames() はすべてのノヾ ラメータの名前を Enumeration オプジェクトの形式で 返します。 図 18 は、 getInitParameterNames() を使ってノヾラ メータ名を取得し、さらにその値を getInitParameter() で取得する JSP ファイル params. jsp です。図 19 は params. jsp をプラウサて表示した結果です。デフォルト では、 JSP 工ンジンに対応するサープレットにはパラメー タが 1 つしか設定されていないため、プラウザに表示され UNIX MAGAZINE 2001.12