特集・プログラミング入門 1 ) はないでしようから、 main() のように、引数を省略してしてもかまいません。 ノート 6 main() に対する引数は、プログラムの夫彳郛にシェルか ら渡される引数の数と、その内容を崙内した配列です。この引 外部変数 (external) ・レジスタ変数 (register) 静的変数 (static) ・自動変数 (auto) C 言語では、下記の変数を定義することができます。 変数 ますは、変数などの定義から始めましよう。 別の事項について説明していきます。 したプログラムの象をみてきました。こからは、個 ごく小さなプログラムを例に、 C 言語で言当 則節では、 変数などの定義 数の扱いについては彳幻主します。 プロックを離れると、その変数は存しなくなります。た 変数です。自動変数はプロックの内部で定義さオ L 、処理が 通常、 C プログラムのなかで使われる変数の大半は自動 プに依存します。 自動変数、青弸勺変数、外部変数の区別は、変数のスコー のなので、今回はとりあげません。 これらのうち、レジスタ変数は特別な場合に利用するも 図 5 静的変数列 (test3. c) printf ( "%d\n" 1 i + 1 ; static int i add ( ) add(); add(); add(); main() autO int x ; autO int ; 照は不可能になります。同様に、変数 x を、 かたちになります。しかし、関数の実行カ鮗了すると、 : 参 とえば、 func ( ) autO autO i nt i nt 1 ; X ; のように関数を宣言した場合、関数 func() を実行してい るあいだは変数 i 、 x がメモリ上に石呆され、参照可能な UNIX MAGAZINE 2002 ユ 1 と亘言した場合には、内部のプロックを実行しているあい だは変数 x は存在し、参照することも可能です。しかし、 処理がこのプロックを抜け出ると、変数 x は消えて参照 できなくなります。 このように、自重加勺に用意さイ畯になったら自重加勺 に消滅するという意味で、、自動変数 " と呼ばれているわけ です。 auto は省略可能なので、プログラムにわざわざ auto と書かれていることは稀ですが、そのような場合も自動変 数として変数か旦言されていると考えてください。 一方、静的変数は、いったん宣言するとメモリ上にすっ と存在し続けます。図 5 を見てください。このプログラム をコンパイルして実行すると、 % a. out 2 3 4 という処理結果が出力されます。関数 add() において変 数 i は青弸勺変数として定義されているため、関数の実行が 終了しても領域は確保され続けます。したがって、 2 回目 121
計算式を構成する関数について調べ、それを応用するよう になります。必要に迫らオレしは、普通のエンドユーサーで もこの程度のことはするでしよう。 ところが、エンドユーザーのなかから、ほんのちょっと 違うことを考える人がかならず出てきます。表計算ソフト ウェアで作ったデータをもとにして、具イ勺な直を入力 することなく特定の目的のための計算書 ( フォーム ) を作 るユーサーです。たとえば、確定申告をする際に表引算ソ フトウェアのお世話になっている人はたくさんいると思い ます。そのときにおこなった引算をもとに、個別のデータ はすべて空欄にし、必要な計算式の定義だけをセルに埋め 込んで誰でも使える ( 汎用の ) 計算書を作ろうと考える人 たちです。この考え方をさらに進め、マクロ機能を使って 入力へルバーを作り、入力を省力化しようとする人もいる でしよう。 このように、 1 回かぎりの計算に終らせるのではなく、 計算の、、方法 " を表現して再利用可能なかたちにしておこ うと考えるユーサーがかならすいるものです。まさしく、 ワンランク上のエンドユーサー " と呼ぶにふさわしい人 たちだと思います。 見方を変えると、このようなユーザーは、、、開発者とし てアプリケーションを利用するエンドユーザー " と捉える こともできるでしよう。このようなユーサーになれば、ア プリケーションを手際よく扱えるようになるのはもちろ ん、開発者として周囲の人たちの苦労を轤咸できるように 特集・プログラミング入門 もなります。 それはプログラムなのだ 上に述べたような、、ワンランク上のエンドユーサー 作るものには、 ・処理のガ去を表現する 再利用可能なかたちでほかの人たちに提供する が という特生があります。これは、まさしくプログラムその ものといえるのではないでしようか。もちろん、通常の プログラミング言語によって作られたプログラムとは形態 が異なります。しかしプログラムであることに違いはあ りません。言い換えれば、、、ワンランク上のエンドユーザ " とは、開発者としてプログラムを作れるエンドユーザ 104 ーといえます。 ソフトウェアの 2 層構造 もちろん、このようなユーザーの存在は表言 1 算ソフトウ ェアの分野だけではなく、ワードプロセッサやグループウ ェアなどの分野にも共通する現象です。これは、現在の多 くのアプリケーションが、 2 層構造をもっことに起因して います。 大多数のアプリケーション・ソフトウェアは、ユーサー が直感的に作業しやすい GUI (Graphical User lnter- face) と操作環竟を提供しています。これが、アプリケー ションの、、表層 " です。多くのエンドユーザーは、この表 層の機能を使って作業をしているわけです。 丘のアプリケーションは、東したユーサーに対して 複雑な操作を可能にするインターフェイスも提供していま す。こちらは、アプリケーションの、深層 " といえます。 このインターフェイスは、表層構造と同じように GUI の なかに埋め込まれ、、、詳細 " などという名前の付いたボタ ンを押したときに現れ . る場合もあります。しかし、たいて いはマクロだったり、スクリプトだったり、ある種の茁妾 的なプログラミンクユ羅竟を提供する方式が主充です。この 深層の構造を理解し、かつアプリケーションのほかの構成 要素との関係をうまく保ちながら、表層の機能だけでは実 現不可能な処理を言当できるようにするわけです。 この 2 層構造があるからこそ、エンドユーサーか前に進 もうとすると、、壁 " にぶつかり、さらに、この壁を乗り越 えたエンドユーサーが開発者に等しい存になるのです。 スキルアップ = プログラミング能力 工ンドユーサーであっても、上記のような 2 層構造の アプリケーションを使いこなすには、プログラミングかで きる開発者としての能力を身につけなければなりません。 すこし古い話になりますが、 1990 年代の初め、コンピ ータ・リテラシー (computer literacy) の重要性か強 調された日月がありました。その背景には、ユーサー教育 におけるプログラミング偏重への反省があります。 それまでの大学での情報処理教育は、 Pascal や For- tran などのプログラミング言語の学習から始まり、 ートン法を用いた数イ蒴 1 のようなプログラミンク育を 通じて、、、コンピュータの利用とは、プログラムを作り、 計算させることだ " という考え方を徹底して教え込むもの でした。たしかに、大型汎用コンピュータの利用か主流 UNIX MAGAZINE 2002 ユ 1
Newtech ( e y 旧 ハードウェア RA 旧をベースに設計された 株式会社ニューテック ネットワークストレージ ConfidenceATAII NAS 高速なハードウェア RA 旧コントローラを実装 スワップやホットスペア設定にも対応した容易なメンテナンスを実現しています。 ントローラや HDD 収納部分は高い実績をもつニューテック RAID システムをそのまま使用し、そのためホット ニューテックはストレージメーカーのポリシーを重視し、 R D 装置内部 NAS コントローラを実装しました。コ 設計としています。 有利です。本製品では 1GHz の CPU を搭載し、レ 0 性能を重視した ステムでは 1 つの高速 CPU より、低速でも 2 つの CPU を持つほうが 要求し、より多くのタスクや割り込み処理が発生します。こういったシ GigabitEther のネットワークは 100Base の 1 0 倍の旧バケット処理を DuaICPU 構成 >GigabitEther の速度を活かす 必要に応じてのポリューム拡張が容易に行えます。 従来の煩わしいポリューム管理から開放されます。導入時に将来を見越した容量設定を行う必要はなく、 ロジカルポリュームマネージャ ( LVM ) 機能を実装したファイルサーバーでは、容量拡張や、 R D 増設時の 容量拡張自在のロジカルホリュームマネーシャ 〒 105-0012 東京都港区芝大門 1 -7-7 浜松町 K ビル 製品 3 年保証プラス初年度 1 年間全国無償オンサイト 21J モアノレ (HDD 8 台搭載 / 日 AlD5 可能 ) 280GB 標準価格ー キャンペ 10 日 asexl 10 / 100Ba5e 3 ヶ内蔵 ーン価格 \ 998 , 000 ホス村以 Ether 講入法 ディスク 十凵他 Sa 一年問 P 電源 NEWTECH 1 1_J モテノレ (HDD 2 台搭載 / ミラーリング専用 40GB 標準価格 : ー亘 キャンペー 1000BaseXl 10 / 100 日 ase ン価格 \ 549 , OOO ホスト / 以内蔵ディスク Ether 3 ヶ内蔵購入法 無オンサイト C 電源 NEWTECH >512MB ~ 2GB のメインメモリ ( 2U は標準で 2GB ) 接続するユーザーが多くなればディスクへのランダムアクセスが増加し、サ - バー レスポンスの低下につながります。円滑なファイルマネジメントを行うには十 分なメインメモリが必要となります。 IGB を超える容量がディスクキャッシュさ れれば、サーバー処理の殆どがオンキャッシュ処理されるため高いパフォーマ ンスを維持できます。 >IU モテルはミラーリンク専用 2U モデルは多彩な RAID 設定が可能 ハードウェア R 川 D コントローラを搭載することに より、 2U モデルでは R D 0 / 1 / 0 + 1 / 5 、ホットス ペアなどの多彩な RA 旧設定が可能です。また、 両モデルともにハードディスクのホットスペアに 対応し、容易なメンテナンスを可能にします。 Linux ヘースの OS 「 MVD powerd NAS OS にはマウンテンビューデータ社の「 MVD powerd NAS 」を採用。停電な どの意図しない電源断でもファイルが壊れにくいジャーナリングファイルシス テムや、ロジカルポリュームマネージャ。またファイルの更新履歴を保存可能 にするスケジューリング可能なスナップショットなど多彩な機能を持ちます。 バックアップサーバーのヘッタユニットとして ConfidenceATAll NAS に別売のバックアップソフト「 NetVaultJ と必要なオ プションを導入することにより、ネットワークバックアップサーバーとすることも できます。詳しくは弊社営業部までお問合せください。 ◆詳しくは弊社営業部までお問い合わせください。
ラックマウント・システムのパイオニア、ロジカルイフェクトなら 貴社条件にビッタリの仕様で注文が可能。 当社製品は、自社製品の為に整合性が取れています。相性間題で悩む必要はありません。 当社サーバは、お客様仕様状態 & 1 台ずっ 30 ℃検証室 & 50 ~ 150 時間高負荷テスト合格品「のみ」が出荷されます。 N を W ※ X E 0 N は、 1 0 、外気温摂氏 30 ℃・ ・ IU / 2U / 3U / 4U 対応■ 10 分で設定完了•MS-Windows / Linux / MAC 混在対応 管理者の為の員 S & ⅱ Server 信Ⅲ川Ⅲ川ⅢⅢ 川Ⅲ川川川Ⅲ ⅢⅢ当ⅢⅢ川Ⅲ損 D u 引 A t Ⅲ 0 n M P 2 1 0 0 + 対応 D u 引 X E 0 N 2 . 4 G H z 対応 T h e 「 m 引 M 0 n i t 0 r が機能せずに動作可能 ! 完全動作 クロス・ストレート自動認識 10 / 100 5port S/W HUB NEW これって実は、当社たから出来る、スゴイ技術 R a x Y s / 旧 t r a C 0 0 L シリーズ 1 / 2 / 3 U 対応 ・サーバ動作中に抜き差し可能 ( Hot “ ap タイプ ) ・サーパ内に設置する為、ハブ設置スペースが不要 ■ 5 ポート 10 / 100 自動認識 / スイッチングハブ ーハードウェア R D & ホットスワップ搭載 ・ R DO , 1 , 5 , BOD に対応 ・ IDE および SC 引に対応。混在可能 ■制約の無い U Ⅲ X 設定に対応 ( 識者向け ) ・ IU = 640GB / 2 1. 28TB/ 3U = 2. 4TB に対応 Raxys NAS Ⅷ 9 , 700 Raxys NAS Builder ⅵ .0 搭載 ~ 師 GB 対応 & ホットスワップ機能標準装備 ・ 3U = 最大 18 / 4U = 24 ドライブ対応 ・リムーバブル・ドライブ搭載対応 ・ Mount / Un-Mount 対応 ■ IDE および SC 引に対応。混在可能 リ b Ⅷ 9 00 ~ Baxys Raxys Library Builder ⅵ .0 搭載 6CD/DVD ROM ~ 18CDROM 対応 ホットスワップ対応タイプ 電源 0N / OFF サーパ依存型 単 39 , 700 単 29 , 700 RaKYS-AIIin1U \ 299 , 700- 」 全ての入出力機能を 1 IJ に搭載。 8P0 「 t KVM/ TFT/ Touch Pad/ Keyboa rd 装備 Ⅷ , 700 RaKYS - 財 0 Manag ・′ ■ IU 8P0 「 t / 2U 16Port KB/Mouse/ モニタ切替機 ■相性問題を抑える為、標準規格コネクタを採用 ・ I/O Manager IU / 21J の混在に対応 NEW VIANet Switch Ⅷ 9 , 700 ~ Raxys 1 U / 2U / 3U / 40- DUA し M ・ m ー CPU 3 年保談 対応システム DUAL PentiumM1.13~1 40GHz DUAL Athlon MP 168 + ~ 218 + 1 U 4 ホットスワップ HDD 対応 Raxys - 仆 ' 1 2 40 対応システム CeIeron 1 .1G—PentiumM1.40GHz Pentium4 & SDRAM 1 .8 ~ 2.4GHz RaKYS 1 2W3 4U M ・ m ー CPU 3 年保証 対応システム Pentium4 & DDR 1 .8 ~ 2.4GHz Pent m Ⅲ 1.13 ~ 1 40GHz 1 U 4 ホットスワップ HDD 対応 自に第ⅢⅢⅢ Ⅲ川Ⅲ Ⅷ , 700 ~ Ⅷ 9 , 100 ~ ¥ 229 , 700 ~ 9 , 700 Ⅲ蹶Ⅲ川川蕚 1 U 遠隔電源 0 N / 0 F F スイッチ ■ 1500VA および 3000VA の 2 モデルを用意。 •Master 、引 ave の 2 タイプを用意。 ・ 1 台に 8 ロの電源コネクタを装備 ・モデムによる電源 ON ・ F に対応 ・オプションで SNMP 、 LAN 、 USB に対応 3000 Ⅵ A 149 , 700 ■カスケード接続により、最大 1 2 8 ロの電源に対応 ( Y99 , 700 / 129 , 700 ) VIANet UPS NEW 邵 9 , 700 ~ 遠隔電源 0 N / 0 F F 機能対応 IJ p s 2 タイプ同時発売 a 0 ①①ー 1 2 3 Ⅲ 41J Si 回 0 リ A し DUAL Xeon 1.8 ~ 2.4GHz DUAL Athlon MP 168 + ~ 218 + DUAL PentiumM1.13~1 40GHz Pentium4 & RIMM 1.8 ~ 2.4GHz 対応システム M ・ m ー CPU 5 年保 ・ UPS 機能標準装備。 ■ 3U 3000VA に対応 ■ SNMP/LAN/USB 経由で ON ・ OFF 可能 (0pt i on) •VIA Net Switch 併用で高度な電源管理可能 ■拡張バッテリー利用で無限増設 & 長時間稼動対応 ( Y129. 7 Raxys 15u / 30u / 35u / 41u 高品質ラック・キャビネット ■アルミを多用し、 41U = 90kg を実現 ■標準で、 750 / 900 / 1100 薗を用意。 ・フロント・リアドア・サイドバネル全装備 ・トップ・ポトムプレート装備 ( FAN 付 ) Ⅷ 9 , 700 ~ ・キャスタ・スタンド添付 ・ラック対応 6 ポート OA タップ装備 ・日 A に完全準拠。他社製品の利用に対応 権 a 0 ①皿 0 i れ誂 ■トップ・ポトムプレート装備 ( FAN 付 ) \ 249 , 700 ~ ・リアドア・サイドバネル全装備 ・フロントに強化ガラスを採用。 ・アルミを多用し、 41U = 85kg を実現 ・ LRF モデルは Du 引 At on / XE の積載に対応 ■日 A に完全準拠し設計。他社製品の利用に対応 ■キャスタ・スタンド添付 / OA タップ装備 9 0 0 B 9 0 0 S B 9 0 0 W L R F ロいト http:llwwwllogicaleffectucom LogicaI ロシカルイフェクト株式会社 Effect 東京都台東区草橋 2-18-6 ロシカルスクエア FAX 0 5822-5522 / TEL: 0 5822-3322 ※当社では、可能な限り、生産基地を日本国内とする、国内産業育成努力をしています。 ※当社は、ラックマウント分野におけるクーリング技術において、最先端の技術力を持っています。 ※開発会社のため、基本的に「他社に存在し、当社に出来ない仕様はありません」 ※本広告の数倍のモデルが W e b ページに存在し、また特注仕様も 0 E M 企業様には行っております。 ※通常は開発業務を行っていますので、お問合せは可能な限り、 w ・ b サイトにて御願い致します。 ※ 2 0 台以上の計画注文で簡易設計変更可能です。競合企業様も、協力企業様としてお問合せ下さい。
NEWS 解析 / レポート機能をもつ。 Mobile IP 、 GTP (GPRS TunneIing ProtocoI) に 132 , 000 円。 http://www.nai.com/japan/sniffer/ ( 分散ネットワークのリアルタイム管理製 旧電話用の音声分析・管理ソフトウェア 品 ) と Sniffer Portable 4.7E ( ネットワー ク・アナライザ ) に対応する。 日本ネットワークアソシェイツは、音声 H. 323 、 RTP 、 RTCP 、 SIP 、 SCCP 、 価格はいすれも 657 , 000 円、バージョ MGCP などの音声トラフィック・データ データ分析・管理ソフトウェア「 Sniffer ンアップは 53 , 000 円。 Voice for Sniffer Distributed 2. IE 」「同 をデコードし、ジッタ、遅れ、バケット紛 http://www.nai.com/japan/sniffer/ 失などの発見、原因の特定が可能。各製 for Sniffer Portable 2. IE 」 ( いすれも英 語版 ) の販売を開始した。 品は、それぞれ Sniffer Distributed 4.2E 対応。 価格は 165 万円、バージョンアップは ・ Network Associates 高速 HDL シミュレータ付き設計・検証環境 理値表、マクロ・コンポーネント、スプ セイコーインスツルメンツ (Tel 03- 5645 ー 1742 ) は、米 Summit Design の高 レッドシート、 HDL テキスト ) による設 計、自動チェック ( シンタックス、合成可 速 HDL 言・検証環境「 Riviera—EIite 」 能性、 HDL 品質 ) 、デバッグが可能。シ の販売を開始した。 対応 OS は、 SoIaris 7 (SPARC 版 ) 以 ミュレーションにより詳細な動作検証が 米 ALDEC の高速 VHDL/VeriIog— 上、 Red Hat Linux 7.2 、 Windows NT HDL シングルカーネル・シミュレータ おこなえる。コメントやバージョン管理 4.0 (SP3 以 - い / 2000 / XP 。 などの機能が付属。別売のシステムレベ Riviera と、 Summit Design のシステム 価格は 400 万円。 6 カ月間のタイムラ ル設言環境「 System Design 」と組み合 レベル /HDL 統合設言環境 Visual Elite イセンス付きの試用キャンペーン価格は を統合。グラフィカルな入力 ( プロック わせて、 C/C 十十 /SystemC による設計 198 , 000 円 ( 12 月 31 日まで ) 。 も可能。 図、ステートマシン、フローチャート、真 •ALSI レポート機能 ( 付属のログ分析ソフトウェ ア LogLyzer と SQL Server との連携が 可能 ) を強化。 アノレフ。スシステムインテグレーション スやユーサーグループにもとづくアクセ 対応 OS は、 Solaris 2.6 / 7 / 8 (SPARC ス制限が可能。新バージョンでは、フィ (Tel 03 ー 5499 ー 1331 ) は、 URL フィルタ 版 ) 、 Red Hat Linux 6.2J / 7.1 / 7.2 / 7.3 、 リング・ソフトウェア「 InterSafe Proxy ルタリング処理を高速化し ( 既存の VI. 1 Turbolinux 7 Server 、 Windows 2000 V2.1 」の販売を開始した。 の 1.5 倍 ) 、規制対象のカテゴリーを 30 種 Server (SP2 以上 ) 。 類から 40 種類に増やしたはか、セキュリ データベースに登録された Web サイト 価格は 198 , 000 円 ( 25 ューザー。契約期 ティ機能 ( 使用プラウサの制限や URL 中 へのアクセス制限をおこなう ( 8 月時点で 間 1 年 ) から。 の文字列にもとづくアクセス制限など ) と の登録サイト数は約 1 , 100 万 ) 。 IP アドレ URL フィルタリング・ソフトウェア BSMiSOL グデータのテープなどへのバックアップ 機能を追加。 対応 OS は SoIaris 2.6 / 7 / 8 (SPARC 住友金属システムソリューションズ 文字列をフィルタリングし、内容を記録、 版 ) 。 (Tel 03 ー 5815 一 7270 ) は、 Web 情報セキュ 保存して各種レポート機能や送信制限に 価格 ( ライセンス価格 / 年間保守科金 ) は リティ管理ツール「 WEB GUARDIAN よりエンドユーサーの Web 利用を管理す 120 万円 / 180 , 000 円 ( 50 ューサー ) から。 る。新たに、プロキシー・サー V2.1 」の販売を開始した。 ー (Squid) HTTP でインターネットに送出される との連動によるユーサー ID での確認、ロ Web 情報セキュリティ管理ツール 27 UNIX MÄGAZINE 2002.11
特集・プログラミング入門 V 図 1 testl. c #include く stdio . h> main ( ) printf ( " He110 world. \n") ; たとえは、図 1 の内容のプログラムを testl. c という名 前で作成したとします。 このソースコードをプログラムとして実行できる形式に 変換する処理をおこなうのが、、コンパイラ (compiler)' です。 UNIX では、オ剽軻勺に C コンパイラ (/usr/bin/ cc など ) が用意されています。そこで、 % cc testl . c とすると、コンパイラによって a. out というファイルが作 成されます。これが、、実行可能形式のファイル " です。 He110 world . % . /a. out れを実行す川ま、 116 試みられます。コンパイラは徹底的に文法をチェックし、 れます。この段階の処理では、さまざまなエラーの発見か 本体べ度され、アセンプリ言語コードへの変換がおこなわ これらの処理か終ると、ソースコードは C コンパイラ 開されます。 リプロセッサによる処理が必要な部分は最終的にすべて展 あるので、 C プリプロセッサが再帰的に実行され、 C プ C プリプロセッサの機能を使って言当されているところが レクトリに置かれています ) 。ヘッダファイルのなかにも、 むべきへッダファイルです ( 通常は、 /usr/include ディ のうち、標準入出力のライプラリを利用するときに読み込 の部分が展開されます。 stdio. h は、標準 C ライプラリ #include く stdio . h> るコマンドか展開されます。図 1 のフログラムであれは、 ソースコードに埋め込まれている、プリプロセッサに対す ます C プリプロセッサか起動されます。これによって、 この図からも分かるように、コンパイラを実行すると、 コンパイラか実行する処理の流れを示します。 グラムの連携プレーによってなりたっています。図 2 に コンパイラか夫行する曰里の処理は、しつは複数のプロ というように文字列か画面上に出力されるはすです。 図 2 C コンパイラで ~ 里の流れ . ソースコード C プリプロセッサ (cpp) アセンブラ (as) ↓ アセンブリ言語コード C コンパイラ ↓ 展開されたソースコード 実行可能形式のファイル ↓ リンカ (ld) オブジェクト・ファイル ぐ ・・・マクロの展開 ・・アセンブリ言語への変換 ・・・オプジェクト・コードへの変換 ライブラリとの結合 実行可能形式への変換 工ラーを発見した場合には変換竹喋を中止して、デバッグ 時の助けになるようにエラーメッセージを提小します。 この段階での最商化も重要な題です。 C 衄は青級三 に 1 ロローⅱ第「コ 語であり、システム内部での処理におけるコードとはかけ 離れたかたち当されています。一方、アセンプリ言語 は基本的に機械語にもっとも近い記述形式です。そこで、 C 言語からアセンプリ言言の変換をおこなうとき、さま ざまな最適化や高速化の処理を適用し、コンパイラ本体で 可能なかぎり効率のよいコードを積極的に利用しようとす るわけです。 アセンプリ言語コードカられたら、今度はアセンプラ (assembler) を使って、、オプジェクト・コード " に変換 します。このオプジェクト・コードは、いわは半完成品 です。コンパイラの一当里の処理のための中間生成ファイル であり、それ単体で動くことはありませんし、中身も人間 ( ューサー ) が見て分かるようなものではありません。しか しながら、このオプジェクト・コードを生成することで、 その後のリンカによる処理か効率的におこなえるようにな ります。 そして、最後にリンカによってオプジェクト・ファイ UNIX MAGAZINE 2002.11
特集・プログラミング入門を に関数を実行したときも、それ以前の実行結果をイした まま扱うことかできます。このように、メモリ上に永続的 に領域か不呆される変数か静的変数です。 プログラマーにとって、静的変数の振舞いは間的に分 かりにくいものです。ですから、よくよく考えたうえで使 うようにすべきでしよう。また、この変数はすっと存在し 続けますが、その参照はあくまでも関数内 ( プロックの内 側 ) に制限される点にも注意が必要です。 最後は外部変数です。通常の静的変数を参照できるの は、関数内またはプロック内に限定されています。これ に対し、外部変数は、青籟勺変数と同しくメモリ上に永続的 に領域カ蔀呆されるだけでなく、さまざまな関数からの参 照も可能になっています。これは、すべてのプロックの外 側で変数を定義することで見されます。 図 4 のプログラムにおいて、配列としての変数 nd[] 、 md[] はどちらも外部変数として機能します。したがって、 同しファイルのなかであれば、どの関数からも参照できま / ート 7 ておきます。 のように、頁で、、外部にこんな変数があるよ " と旦言し extern char *nd ロ ; extern int md ロ ; をオ内した別のファイルからの参照も可能です。この場合 最終的にリンクされる、オプジェクトのソースコード す。 122 ニックでもあります。 参照するというトラブルを避けるためのちょっとしたテク ません。これは、ほかのファイルから誤って外部変数を static を付けるのだろうと疑間に思った人もいるかもしれ ことで可能になります。外部変数の旦暠に、なぜわざわざ ようか。これは、変数の宣言の : 麪頁に ssstatic" を付ける からは参照できないようにするにはどうすればいいのでし し、同時に、ほかのファイルにオ内されたソースコード それでは、あるファイルのなかで外部変数として宣言 なりません。 コードにおいて、変数名の旦言か重複しないようにしなければ 外部変数の場合は、プログラムを構成するすべてのソース 関数の宣 関数の旦言も、基本的には変数の宣言とはば同しです。 ただし、変数の旦暠のルーノレに加え、関数旦言の順番カ墹 題になります。 関数の定義は、旧い C 言語のスタイルでは、 型関数名 ( 引数リスト ) 引数の宣言 ; という形式でおこなわれます。描丘の ANSI でのスタイ ルは、 型関数名 ( 型宣言を含む引数リスト ) となり、引数リストの部分に各引数の型宣言も同時におこ なうようにしています。関数名の前にある、、型 " は、関数 UNIX MAGAZIN E 2002.11 mplicitly declared tO return funcdef . c : 7 : warning : xsquare ' was previously i ion Of ( xsquare ' funcdef . c:3: warning: previous implicit declarat s implicit declaration funcdef . c : 7 : warning : type mismatch with previou % cc funcdef . c にすると、コンパイル時に ところが、浮動小数点型を扱おうとして図 6-b のよう ます。結 : 描勺に、これは間題なく動きます。 裡に int 型の関数だと仮定し、コンパイル処理をおこない main() のなかで初めて登場したとき、コンパイラは暗黙 図 6 を見てください。図 6-a では、関数 xsquare() が です。 ⅲ t 型を返すものと仮定して処理されるところがポイント 題になります。関数の戻り値については、型を省略すると さきはど述べたように、関数の場合には宣言の順番カ墹 ていますれ 定義されることになります。これも、変数の宣言とよく似 場合は、そのファイルのなかだけて参 . 照可能な関数として 型の前に static を付けたらどうなるでしようか。この で関数カ処理結果を返すことを日韶の了解とします。 るために付けられます。この、、型 " を省略すると、 int 型 の実行結果唳り値 ) がどのデータ型を返すのかを明示す
11 ー Plat' H0 a ー e ① " Process lntel@XeonTM Processor 1.80GHz 最大 12GB ※ 2GB 団 MM が必要になります lntel@ PRO/1000XT Gigabit Ethernet ControII lntel@ 82546EB RedHat ⑩し i Windows 00 一※その他の OS も順ー CPU RA M ネットワ - ク 対応 OS .3 1 年目オンサイト保証 2 ~ 3 年目センドお ' ・保証 最長 4 年間保 工ンタープライズ仕様の オープンソース対応サーバ登場 Trus-E1 1 は、 Inte19 XeonTM プロセッサをデュアル・プロセッサ構成で搭載 可能なラックマウント・サーバです。 Linux をはじめとするオープンソース オペレーティングシステムと、 Microsoft@ Windows9 2000 Se Ⅳ er 等に対応しています。 T 「 us - E11 は、ウエプサーバやメールサーバなどのインターネット・アプリケーション に対し、プロードバンド時代に対応する高い性能を提供します。また Intel@XeonTM プロセッサの高い浮動小数点演算性能により、限られた面積に多台数の設置が必要な並列演算 クラスタ・アプリケーションにおいても威力を発揮いたします。そのほか、これまで 4- way クラスのマルチプロセッサ機が必要となっていたテータベース・サーバ等のビジネス アプリケーションにも最適なプラットフォームです。 Trus-E1 1 の特長 最先端のテクノロジー ギガビット・イーサネット 冷却システム ハイパフォーマンスサーバには、強力な冷却が必要ですシステム全体での冷却を 標準で IOOOBASE - TX ギガビット・イーサネット コンバクトな筺体に P 「 estonia コア 追求し、ヒートシンク、メモリ、 PC 防ードすべてが、空気の流れを考慮して配置されて t 可⑧ Xeorr プロセッサと を 2 ポート装備 います。専用の釐体との組み合わせにより、理想的な冷却システムを実現します t 可⑧ E7500 チップセットを コントローラは t 可⑧ PRO / 1000XT ギガビット・ ィーサネット・コントロープ nt 可⑨ 82546E 日を搭載。 採用し、 Du プロセッサ構成が 簡単な保守・運用 高速な転送速度を実現します 可能ですさらに 3.2GB / sec の 高帯域を有する主メモリ ( ECC 機能付き ) 工具なして都品の交換が可能であり、容易に電源 大容量 HDD と R 0 サポート と PC ト X バススロットといった最先端のテク やファンやマザーポードの交換ができます。また ノロジーを凝縮しました 3 台のハードディスクを搭載することカ河能です 標準添付の管理ソフトにより、遠隔地から温度の さらに RA 旧オプションにより、 RA 旧 0 、 RAID 1 また 監視や異常事態 拡張性 は RAID 5 の構成 発生時の自動シャ・ をサポートします ットダウンなどが可 コンバクトな筺体ても拡張性は犠牲になりませんメモリ 能です は最大 12GB まで増設可能、さらに PC 励ードは 2 枚まで 拡張可能です Trus-E11 (u) 348 , 000 円 基本仕様 プロセッサ : lntel@ Xeorr Processor 1.80GHz マサーボード : 旧 t ⑧ E7500 グラフィック :ATI RageXL ネットワーク : 旧 t Gigabit Ethemet Controller メモリ : 128M B x 2 HDD : SCSI HDD18GB 管理ツール : lntel@ Server Management Plat'Home TotaI Solution Service コンサルティング サーバ構築のエキスパートとして、システム構築、導入に必要とされる情報をご提供します カスタム・システムインテグレ - ションサ - ビスーお客様のシステムの設計からプログラムの開発、テスト、マニュアル作成までをご支援いたします セキュリティ 培ってきた UN Ⅸの、あらゆるノウハウを集約して、セキュアで快適なネットワーク環境をサポート クラスタ構築 確実に実現できるハイパフォーマンス・ PC クラスタ・ソリューションを提案したします ※インテル ,lntellnside ロゴ、 Pentium 、 Cel 部 on はアメリカ合衆国およびその他の国における インテルコーポレーションまたはその子会社の商標または登録商標です。 マルチ OS/PC-UNIX べンダー ぶらっとホーム株式会社 本社 : 〒 1 01 -0021 東京都千代田区外神田 2-4-6 ササゲビル TEL : 03-3251-2600 FAX : 03-3251-2602 店鋪 : 〒 101-0021 東京都千代田区外神田 1-11-4 ミッワビル TEL: 03-3251-7611 FAX: 03-3251-7000 お電話ください オンラインショッビングでも受付中 ! Plat'Home お問い合わせはこちら 0 RL http://www.plathome.co.jp/ XEON 0120-795-123 の・
連載 /UNIX Communication N0tes— 写真 1 PoIycom の ViewStation SP かなりのコストがかかる作業である。 ⅱ 3 私のオフィスには、 PoIycoml の「 ViewStation SP 」と いうピテオ聳義用の機材 ( 写真 1 ) があるが、奈良先端大のファ イアウォールの内側のネットワークに接続しようとすると、相 手への発信は可能でも着信はまったくできない。そのため、 の ViewStation SP はファイアウォールの外側の、制限を まったく設けていないネットワーク・セグメントにオ簽してい る。 ViewStation はいわゆるアフライアンスであり、セキュ リティ上の問題はとくにないと考えていた。しかし、先日、 部の Polycom 製品にセキュリティ・ホールが発見さこれ らの機種では OS のバージョンアップを求められた。こ刎列か らも分かるように、アプライアンスといえどもセキュリティ・ ホールとはまではない。通常のコンピュータであろうがアプ ライアンスであろうが、それなりのセキュリティ対策は必要な のである。 P2P 型アプリケーションは、数多くのおもしろいサー ビスを提供できる可能性があり、エンドユーサー層の注目 度も高い。とくに、描匠のインターネット電話は、内線網 および公衆網の構築の両面で注目を集めている。その意味 からも、ファイアウォールと P2P 型アプリケーション をうまく共存させることは大きな課題である。たとえは、 ファイアウォールの設定を緩める代わりに、特定の P2P 型サービスを使うノードを 1 つの VLAN に集めて厳しく 監視し、万一、不正アクセスがあった場合も迅速に発見で きるように設定することもおこなわれている。しかし、真 の未でファイアウォールとうまく ; 叫秀する P2P 型サー ビスの管理基盤はまた確立されていない。 利用者の反乱 ファイアウォールの設定があまりに厳しすぎると、利 用者は不岡を募らせて、やがてはネットワーク管理者に無 断て宛険な使い方をするようになる。これが、、利用者の反 乱 " である。 1 http://www.polycom.com/ 52 たとえば、内部ネットワークに置かれている WWW サーバーに対して、外部からアクセスできるようにファイ アウォールを設定したとする ( 現実に、ユーザーからの申 告にもとづいて、このように設定することはヨ - ・分考えられ る ) 。そのユーザーが、正しく WWW サーバーを運用し ているのなら間題はない。ところが、外部からそのシステ ムに簡単にアクセスするために、 TCP ポート 80 番で待 ち受ける Telnet サーバーを起動していたらどうなるだろ うか。あるいは、電子メールを交換するために TCP ポー ト 80 番でリクエストを待つ sendmail を稼動させてい たらどうなるだろうか。ューサーからの申告にもとづいて ファイアウォールの設定を変更した場合は、その申告どお りに使われているかを石忍しなければ、目的とするファイ アウォールかま現されているかは分からない。 もちろん、申告どおりに使わないユーサーにも問題はあ る。セキュリティ対策をどんどん突き詰めていくと、けっ きよくは外部と内部との茁妾の通信を徹底して制限すると いう方向にいってしまう。それでも、ユーザーがあまり 不閊を感しないのであればよいが、そのような ( 管理者に とって ) 幸福な状況はめったになく、たいていは利用者の 反舌励起きる。セキュリティ・ポリシーの周知徹底も重要 だが、設疋しているポリシーに無理がないかを定期的に再 検討することも忘れてはならない。 いったん利用者の反乱か起こると、これを食い止める のはたいへん難しい。最糸勺には、 DMZ 以外ではすべて のバケットを通さないようにファイアウォールを設定し、 DMZ 上の中継システムを完全な管理下におく以外にガ去 はない。 何かが通れば穴は開いている 私の研究室の学生 O 君と一緒に海外出張に行ったとき のことである。出張先でアクセスできるネットワークは、 きわめて堅固なファイアウォールによって守られていた。 はばすべての通信はファイアウォールで遮断さオ L 、アプ リケーションごとに用意された中継サーバーをかならす経 由しなければならなかった。つまり、インターネット上 のシステムに直接アクセスすることは不可能だったのであ る。ただし、 ICMP だけは通過できるように設定されて いた。 O 君は出張先のネットワーク管理者にかけあって、ファ UNIX MAGAZINE 2002 ユ 1
0 す情報を白寉に検索できるようにしています。 Q-Pocket はテキスト検索は得意ですが、キーワード が分からないと検索が困難ですし、テキストを含まない写 真などの情報は検索対象にできないという問題がありまし た。また、各データか関連づけられているわけではないの で、データ間の関係を用いた検索も不可能でした。 そこで、キーワード検索の代わりに迅想的なリンクを重 視し、頭のなかの清報を迅想によって探しあてるのと同様 な方法で引・算機内の情報を検索する「近傍検索システム」 を試作してみました。 近傍検索とは、 1 つの情報をもとに、その近傍の情報を たどる操作を繰り返していくことによって目的とする情報 を探し出す手法です。 ます、ある情報と内容や作成日時、置き場所などカ随い ものを、、近青報 " と定義します。そして、 1 つの情報を 表示するときは、つねにその近傍情報も表示することにし ます。近傍情報のなかから 1 つお尺すると、さらにその 情報に関する近傍清報も表示されるため、関連する情報を 連想的にたどって最終的に目的とする情報に到達できる可 能性か高くなります。 まったく単純なコンセプトですが、これだけでも次のよ うにけっこう強力な連想検索か可能になります。 例 1 : ある製品をどの展示会で見たのか思い出したい ・会場で、誰かとその製品について話したことを思い出 す。 展示会に一緒に行った人の情報を調べる。 ・その人に関連する写真リストのなかから展示会で撮った 近傍検索とは何か ・なぞなそ認証の原稿を参照する。 ・ UNIXMagazine ディレクトリを参照する。 の原稿を書いたころに写真を撮ったはすだと思う。 ・ UNIX MAGAZINE の記事でとりあげたのだから、そ 例 2 、、なぞなぞドア " の写真を探す 写真を撮った日時から展示会を特定する。 ものを選ぶ。 196 をみつける。 ・原稿の執筆前後に撮った写真のなかから、なぞなぞドア 例 3 : 学会で発表された論文を探す ・その学会の直後に山登りに行ったことを思い出す。 ・山に登ったときの写真を探す。 ・その写真を参照し、その前後に開催されたイベントを調 そのなかから学会を選び、 Web ページで公開されてい る論文を入手する。 通常、人間はこのような竹喋を自然に頭のなかでおこな っているはすですが、言算機ーヒではそれはど簡単には実行 できません。ー E 記の 3 番目の例でいえば、 1. 山登りに行ったことを思い出し 2. ファイルプラウサや写真管理ツールでそのときの写真を 探してキ彡日時をヾ 3. 予定表を開いてその日時に移動して学会の予定を参照し 4. 学会のホームページに移動して検索する といった一里のイ 1 三業が必要になります。近傍検索システム を利用して、これらの竹璞をすべてクリック 1 つで実行で きるようにしておけは、このような連想的な検索もかなり 楽になるはすです。 構造を利用するものにしても、キーワードにもとづくも のにしても、点て利用可能な計算機十の検索システム では、人間がなんらかの指定を明示的におこなう必要があ ります。しかし、構造を使うのか、それともキーワードで 検索するのかなどと、いちいち方法を指定すること自体が 面倒です。毎日のようにおこなっているイ / ド業とはいえ、フ ァイルを探そうとするたびに cd や ls でディレクトリをた どるのは、あまり効率的とはいえません。 Google などの全文検索システムが身近になってきたと はいえ、キーワード窈旨定による検索は、プラウサー E でク リックの系区しによって情報を探すガ去にくらべると、そ れなりに手間のかかる作業だと思います。 近傍検索システムは、目の前に見えているリストのなか からなんとなく必要そうなものお尺するプラウジンク髞 作を繰り返していけば、最糸勺には目指す情報にたどり着 けるというアイデアにもとづいています。 そもそも、 web のようなハイバーテキスト・システム は誰でも使える検索オ冓として考案されたものではないで しようか。たとえは、 Yaho 。 ! に代表される、、ディレクト UNIX MAGAZINE 2002.11