Linux Gazette 2000年3月号

IntelとAMDからついに1GHzのCPUが発表されました。我々消費者の手に入るようになるのはいつのことでしょうか。でも1GHzのCPUを手に入れたら何に使いましょう。

今月のLinux Gazetteの内容


今月のニュース

Linux Jounal 3月号発売中。特集はトレーニング。

▽▽▽ディストリビューション関連ニュース▽▽▽
BlueCat

Linx Real-Time Systems は Linx バージョンの BlueCat Linux を発表。BlueCat Linux は組み込みシステムの開発環境、LinuxWorks スイートの一部分で Red Hat 6.1 互換。
www.bluecat.com

Corel

Corel から Linux 用の Macromedia Flash

Hard Hat

Monta Vista Software は 組み込み用途のHard Hat Linux を搭載した GoAhead WebServer を出荷。組み込み JavaScript を使用しており、Active Server Pages (ASP) を使った唯一のオープンソース。
GoAhead

Linux for Windows

Windows から起動できる Linux for Windows がリリースされた。ベースはLinux-Mandrake 6.1。
Macmillan software

Linux-Madrake

Linux-Mandrake 7.0 が Macmillan USA からリリースされた。初心者、中級者を対象としたパッケージ。

Red Hat

Red Hat はヨーロッパでの事業強化。

Storm

Storm Linux 2000 がヨーロッパでリリースされた。

SuSE

スウェーデンの Sysdeco Mimer と提携。Sysdeco Mimer は MIMER DBMX を開発している企業。Mimer のパーソナルエディションがダウンロードできる。
http://www.mimer.com/download

SCO と SuSE は SCO の Tarantella を SuSE の顧客へ提供。

TurboLinux

Turbo Linux に E-Commerce Suite

▽▽▽その他のニュース▽▽▽

▽開催予定のイベント▽

Linux Open Source
Expo and Conference
March 7-10, 2000
Sydney, Australia
www.linuxexpo.com.au
Game Developers Conference
March 10-12, 2000
San Jose, CA
www.gdconf.com

Software Development Conference & Expo
March 19-24, 2000
San Jose, CA
www.sdexpo.com

Singapore Linux Conference (SLC)
March 23-25, 2000
Singapore
www.slc.com.sg

Colorado Linux Info Quest
April 1, 2000
Denver, CO
thecliq.org

Montreal Linux Expo
April 10-12, 2000
Montreal, Canada
www.skyevents.com/EN/

Spring COMDEX
April 17-20, 2000
Chicago, IL
www.zdevents.com/comdex

HPC Linux 2000: Workshop on High-Performance Computing with Linux Platforms
May 14-17, 2000
Beijing, China
www.csis.hku.hk/~clwang/HPCLinux2000.html

(In conjunction with HPC-ASIA 2000: The Fourth International Conference/Exhibition on High Performance Computing in Asia-Pacific Region)

Linux Canada
May 15-18, 2000
Toronto, Canada
www.linuxcanadaexpo.com


GetTux.com 閉鎖

GetTux.comが資金調達ができずに閉鎖されることになった。Linux の普及とドキュメントの整備とを目的に設立されたのだが融資先の目途がたっていない。

Linux-Net プロジェクト

Linuxが家電関連機器のインテリジェント端末に利用されることを目的にしている。例えば冷蔵庫のミルクが切れそうな場合、サーバーに通知を出してショッピングリストにミルクを追加する。そうすればいつでもPDAなどで確認できる。

Cobalt Qube 2 と Phoenix Aaptive Firewall<

新しいファイアウォール、Phoenix Adaptive Firewall が発表された。ICSA、LinuxLabs、Cobalt Qube 2サーバーの認定を受けている。対象は小規模から中規模のビジネス、ワークグループ、支店、学校、政府機関など。Phoenixの採用でより使いやすく高機能になる。Phoenix Qube の価格はユーザー数無制限で2495ドル。

OpenTape.org 開設

オープンソースをサポートする OpenTape.org が開設された。Linux用のデータバックアップハードウェア、ソフトウェアの技術情報を提供する。

Hotmail に対抗するフリー e-mail サービス、Linuxlinks.com

LinuxLinks.com はウェブベースのフリーメールサービスを開始。ユーザーはウェブブラウザがあればメールの送受信ができる。添付ファイルやPOP3の受信も可能。その他メッセージ検索、シグナチャ、アリアスなどの機能を提供。

LinuxベースのDSLモデム

Silicon Automation Systems はLinux 用のxDSLモデムを開発した。Synpase G.lite モデムの速度は下りが1.5Mb/s、上りが512Kb/s。
www.sasi.com

▽▽▽ソフトウェア関連ニュース▽▽▽

インターネットフォン

Phone はインターネット電話を可能にするクライアントプログラムだ。要求される機能は次の通り。

e-mailアドレスが番号となる。接続リストはサーバーのデータベースで管理される。クライアントプログラムはフリーのオープンソース。サーバー機能もしばらくはフリーで提供される。

iPlanetウェブサーバー

Sun-Netscape 連合から iPlanet ウェブサーバーが発表された。iPlanet Web Serber と FastTrack Edition 4.1 は開発者向けでフリーで提供される。FastTrack Edition 4.1 は Netscape Enterprise Edition 4.1 のコアアプリケーションと管理機能を有している。iPlanet Web Serber, FastTrack Edition 4.1 ソフトウェアは5月にはフリーで提供される予定。

インターネット対応携帯電話でネットワークの設定変更

SPIRO-Linux が SPIRO-Linux WETMINts を発表。WETMINtSはブラウザを使って DNS、local/remote ファイルシステムなどを変更するアプリケーション。CGI機能を使ってシステムファイルをアップデートする。

Xi Graphics 製品

Xi Graphics は Linux 用のドライバを発表した。3D Linux ドライバは OpenGL 1.1.1互換で libGLU、libGL をサポートする。オンラインでの価格は29ドル。評価版をダウンロードすることができ購入前に実際に使用感を確かめることができる。

その他のソフトウェア

Magic Enterprise Edition V.8 : e-コマース、エンタープライズソフトウェア開発のためのツールキット

clobberd 4.16 : ユーザーとネットワークインタフェースをモニタするデーモン

TotalView 4.0 : 複数のプラットフォームでの開発に対応したデバッガ

Cyclades : Cyclom-Y と Cyclades-Z のバージョン6.5.5をリリース

Igloo FTP : 商用FTPクライアントのベータバージョンをリリース

ESP Print Pro : Linux用のプリンタドライバパッケージ

CUPS : Common Unix Printing System


More 2¢ Tips

●デスクトップに天気図を貼り付ける

       ディレクトリ作成


   mkdir ~/weather ~/bin/cron

ファイル ~/bin/cron/hourly.job の内容

  #!/bin/sh

  W=$HOME/weather

  wget http://www.cis.ec.gc.ca/goes/huron_f.jpg \

    -O $W/goes_huron_f.jpg

  wget http://www.cis.ec.gc.ca/goes/gulf_f.jpg \

    -O $W/goes_gulf_f.jpg

  wget http://sgiot2.wwb.noaa.gov/COASTWATCH/GOES/G8CWNEVS.GIF \

    -O $W/G8CWNEVS.GIF                                          

ファイルに実行属性を付加

   chmod +x ~/bin/cron/hourly.job 

crontab を実行

   crontab -e

次の内容を追加

   10 * * * * $HOME/bin/cron/hourly.job >> /tmp/out.h 2>&1

ファイルを保存して終了
テストをして結果が確認できれば完了

    ~/bin/cron/hourly.job

取得した天気図を使用しているウィンドウマネージャに登録する

●トリプルブート

NT ローダーを使ったトリプルブートが以前紹介されましたが今回は Lilo を使ったトリプルブートの方法。インストールしたOSは Win95(FAT32)、NT4(NTFS)、Linux(ext2)。
lilo.confに次のセクションを追加。


# Windows 95 stanza

       other=/dev/hda1

       table=/dev/hda

       label=windows

# End Windows 95 stanza



# Windows NT stanza

       other=/dev/hda2

       table=/dev/hda

       loader=/boot/os2_d.b

       label=NT

# End Windows NT stanza

●ATI Xpert@Work PCI カードドライバ

XF86Setup か xf86config を使って設定をATIカードに変更する。なければSVGAカードを選択しよう。

●shadow パスワードに変更

RedHat 6.1 ならコンバートツールを使おう。
"man pwconv"

●Samba で暗号化パスワードと平文パスワードを使用する

smb.conf の [global] セクションに次の文を追加


include = /usr/local/samba/lib/smb.conf.%m

マシンA(maca)とマシンB(macb)が平文のパスワードを使うなら /usr/local/samba/lib/smb.conf.maca, /usr/sbin/samba/lib/smb.conf.macb を作成して [global] セクションに

[global]

encrypt passwords = no

を追加する。これでmaca, macb 以外のマシンは暗号化パスワードを利用できる。

●マイクロソフトコードレスホイールマウスを使う

/etc/X11/XF86Config の Pointer セクションに次の設定を追加する


    Protocol    "MouseSystems"

    Device      "/dev/gpmdata"

●ナルモデムで Wind95とLinuxを繋ぐ

ネットワークカードを2枚買うことを薦めます。

●NEC Multisync モニタのサポート

xconfigurator か xf86config を使って設定しよう。/etc/XF86Config の設定例は次の通り。


Section "Monitor"

    Identifier  "SAM M174"

    VendorName  "S.A.M. GmbH"

    ModelName   "M174"

    HorizSync   30-64   

    VertRefresh 47-100  

    Gamma 1.2

    Mode "640x480@72Hz" # Standard VESA

        DotClock        31.5

        HTimings        640 664 704 832

        VTimings        480 489 492 520

    EndMode

    Mode "800x600@72Hz" # Standard VESA   

        DotClock         50

        HTimings         800 856 976 1040

        VTimings         600 637 643 666

        Flags            "+HSync" "+VSync"

    EndMode

    Mode "1024x768@70Hz" # Standard VESA

        DotClock          75

        HTimings          1024 1048 1184 1328

        VTimings          768 771 777 806

        Flags             "-HSync" "-VSync"

    EndMode

EndSection

●Linux でPOP サーバーを立てたが Windows からメールが打てない

多分MTA(Mail Transfer Agent)の設定のrelayが動作していない。MTAの設定をやり直そう。


HelpDex (By Shane Collinge)

Linux Gazette に掲載されている漫画です。ご覧になるにはこちらをクリックしてください。


X Station と Linux (By Matteo Dell'Omodarme)

以前 IBM の X ステーションというターミナルがあり IBM RISC 6000 に接続して使用されていました。X ステーションにはネットワークからの起動と X インタフェースとがインストールされていました。これはサーバーが高価だった時に利用された形態です。同じことが Linux ボックスでも可能でしょうか。Linux から X ステーションを起動するには次のステップが必要です。

  1. IBM RISC 6000 用のブートファイルを手に入れる
  2. IBM RISC 6000 から X ステーションのフォントを取得する
  3. Linux bootpd デーモンの設定
  4. Linux tftp デーモンの設定
  5. Linux xdm デーモンの設定
必要なファイルは AIX インストレーションバックアップの /etc/x_st_mgr と /usr/lpp/x_st_mgr にあります。

X ステーションが起動するとイーサネットアドレスをネットワークに流しブートの要請をします。これはX ステーション 120に必要なプロセスで X ステーション 130はブートファイルとフォントをスタティックに保存しています。X ステーションの起動が済んだら ftp を利用して X ステーションが必要とするファイルを提供します。その後に xdm が起動されてログインのダイアログが表示されます。最後に crontab を編集して1分毎に xdm デーモンが起動されるようにします。


Eterm のチューンアップ (By Edward Livingston-Blade)

Eterm を持っていたら次のコマンドを入力してみて下さい。

Eterm -W -O --shade 60 --home-on-echo no --home-on-input

背景が透明で明るさを抑えた Eterm が表示されるはずです。因みに使っている Eterm は "Eterm-0.8-9.i386.rpm" です。Eterm のウィンドウでスクロールアップしたときにシステムが新しいテキストを表示すると最後の行まで戻るのはどうやら Red Hat のデフォルトの仕様のようです。それまで使っていた "gnome-terminal" では画面をスクロールアップしたときにシステムがテキストを表示しても画面はそのままです。もちろん自分でテキストを入力したときには画面はコマンドラインまで戻ります。これを止めるための引数が "--home-on-echo no" で、"--home-on-input" は念のために入れてあります。

"ls --color" をデフォルトで使っていますが Eterm と背景との関係があまり良くないので緑と白を入れ換え、青を少し明るくしています。これはそれぞれの好みによりますから自分にあったものを探して下さい。では Eterm のデフォルトの RGB のバリューは何でしょうか。筆者は次のように想像しています。


Name          Code  RGB Value        Name          Code  RGB Value

Black         30    000000           Dark Gray     1;30  333333

Red           31    cc0000           Light Red     1;31  ff0000

Green         32    00cc00           Light Green   1;32  00ff00

Blue          34    0000cc           Light Blue    1;34  0000ff

Cyan          36    00cccc           Light Cyan    1;36  00ffff

Purple        35    cc00cc           Light Purple  1;35  ff00ff

Brown         33    cccc00           Yellow        1;33  ffff00

Light Gray    37    faebd7           White         1;37  ffffff

Eterm が内部で使用している番号を含めると次のようになる。

              Eterm                                         Eterm

Name          Color #  Code  RGB Value        Name          Color #  Code  RGB Value

Black         0        30    000000           Dark Gray     8        1;30  333333

Red           1        31    cc0000           Light Red     9        1;31  ff0000

Green         2        32    00cc00           Light Green   10       1;32  00ff00

Brown         3        33    cccc00           Yellow        11       1;33  ffff00

Blue          4        34    0000cc           Light Blue    12       1;34  0000ff

Purple        5        35    cc00cc           Light Purple  13       1;35  ff00ff

Cyan          6        36    00cccc           Light Cyan    14       1;36  00ffff

Light Gray    7        37    faebd7           White         15       1;37  ffffff

そこで白とライトグリーンを入れ換えライトブルーを明るくするには

Eterm -f rgb:00/ff/00 --color10 rgb:ff/ff/ff --color12 rgb:99/99/ff -W -O --shade 60 --home-on-echo no --home-on-input

とします。


Gimp スクリプト (By Wolfgang Mauerer)

Gimp は Linux のディストリビューションの中でも優れたアプリケーションであると同時に他の優れたグラフィックツールに匹敵するツールだ。その特徴はプラグインで機能を拡張できることにある。右クリックで表示されるメニューのフィルターを見てみると良くわかる。すべてのフィルターがプラグインで実現されている。メニュー項目の "Scritpt-Fu" もそうだ。これは Lisp をベースにしたスクリプトによって実現されている。エンドユーザーのアプリケーションとしての Gimp に何故複雑な言語を、と思われるかもしれないが言語に関する議論を始めるとスペースが足りなくなってしまう。単純に言えば強力で柔軟な言語であることらしい。Gimp のスクリプトを使えばウェブのボタンを作るのにテキストと色などを指定すれば後は全部自動で処理してくれる。非常に簡単だ。

Marc Lehmann氏が Gimp 1.1.x デベロッパー用のエクステンションを開発した。これは Perl のインタフェースを含んでいる。Perlはどの Linux ディストリビューションにも含まれているが Gimp 1.0.x ユーザは GIMP-Perl パッケージを手に入れなければならない。例示されているスクリプトを保存し(今回はsimple.plというファイル名で保存)実行属性をつければ Gimp から利用できるようになる。Gimp と Perl サーバ (Menu Xtns -> Perl Server) から ./simple.pl と入力して実行するとレッド・ブルーのキャンバスが開くはずだ。Perl server を使えばモジュールをインストールしなくても簡単にテストをすることができるようになっている。コーディングやデバッグが簡単にできるようになっているのだ。期待通りに動作することを確認したスクリプトをインストールすには次のようなコマンドを使う。


 gimptool -install-bin simple_fu.pl 

これは特定のユーザのためのコマンドなのですべての Gimp ユーザがその恩恵を受けられるようにするには次のようなコマンドを使う。

 gimptool -install-admin-bin simple_fu.pm

すでに定義されているファンクションやプラグインを利用すれば少ないコードで必要なジョブを完了させることも可能だ。実際に Gimp は大量のファンクション、プロシージャなどからなっておりこれらの機能には DB ブラウザからアクセスすることができる。例のスクリプトの中でも使われている gimp-layer-new ファンクションは多数の引数を取り新しいレイヤーを返す。simple.plの中では変数 $layer にアサインされている。データベースを "canvas" という名前で検索すると "canvas" という GIMP ファンクションが表示される。plug-in-apply-canvas を選べばスクリプトの中で使った引数が表示される。

DB ブラウザのほかにもスクリプト開発のツールがある。PDB(Procedural Data Base Brower)だ。まだアルファバージョンだが優れたツールには違いない。さらにファンクションの関数を起動するにも短縮形が使え入力が若干楽になっている。

Perl を利用することでエラーが発生した場合のトレースも楽になる。Gimp::set_trace(TRACE_NAME)をサブルーチンのヘッダに挿入すれば実行されたファイルの行番号を示すだけではなくより詳細な情報が得られる。


IP マスカレードを使ったプライベートネットワークとロードランナー (By Mark Nielsen and Andrew Byrd)

Time Warner の Roadrunner(RR) ケーブルモデムを使って IP マスカレードを使ったプライベートネットワークを構築するという内容。DNS からファイアウォールまでを含んだネットワーク構築の記事でこの記事の内容を十分に理解するにはネットワーク、IPCHAINS、DNS、IP マスカレード、セキュリティなどに関する知識が必要だ。まずそれぞれの機器にネットワークカードが必要でゲートウェイとなるマシンには2枚必要だ。それぞれのマシンには IP アドレスが割り振られておりゲートウェイには外界用の IP アドレスと内部ネットワーク用の IP アドレスが必要。ゲートウェイマシンはそれほどマシンパワーを必要とせず古い486マシンでも十分だ。ワークステーションは TCP/IP をサポートしている OS なら Linux、MacOS、Windows などなんでも良い。できることなら 10/100 Mbs の自動認識ハブと 100 Mbs のネットワークカードを使おう。ネットワークカードは PCI の方がいい。

RR はゲートウェイマシンに接続される。ゲートウェイマシンで使用するネットワークカードは別々のプランドを使用するとドライバの区別がしやすいし、リソースの競合も少ないだろう。この記事ではゲートウェイマシンに Redhat 6 をクリーンインストールしている。すべてインストールしてかまわないが X サーバーや画像処理ソフトはゲートウェイマシンには不必要だ。その代りに ipchains、BIND、cacheing nameserver、pumpなどは忘れずにインストールしよう。named はブート時に起動させたほうが良い。RR に接続された eth0 は DHCP を使い、プライベートネットワーク用の eth1 は固定 IP アドレスを設定する。

ハードウェアの環境が整ったらソフトウェアの設定だ。IP Chains、Masqeurading、DNSを設定してそれぞれのワークステーションの環境を整える。

インターネットに常時接続の状態では常に危険が伴う。セキュリティの甘いシステムを破壊したり踏み台に利用したりする人がいるものだ。マスカレードの機能も万全ではない。でも telnet、ftp、その他ポートを利用するデーモンを起動しなければ危険性はかなり少なくなる。より高度なセキュリティを求めるのなら openssh や tcplogd などを利用すると良い。

セキュリティに関するまとめ

  1. サービスは openssh だけにする。DNSはゲートウェイマシン以外に置く
  2. /etc/inetd.confでサービスを起動しない
  3. 印刷、ファイル共有、データベースなどのサービスは別のマシンに置く
  4. tcplogdをインストールしてポートスキャンに対処する
  5. VNC、mail、ftpなどにはopenSSHを利用する

RoadRunner を使うとログインの度に IP アドレスが変わってしまう。IP アドレスが変わってもスタティックなドメインネームを提供してくれるのが Dyndns.org だ。dyndnsに一度登録すればゲートウェイマシンを起動する度にdyndnsにアクセスしてネームサーバのレコードをアップデートしてくれる。検討してみてはいかがだろうか。


LCLint で C プログラムのチェック (By Pramode C E and Gopakumar C E)

C プログラムのチェックに lint が使われたことがあった。文法をチェックして表示してくれるプログラムだ。lint を拡張したものに LCLint がある。LCLintの機能は使われていない変数、型の不一致、コードの終了、宣言の前の使用、ループやケースの終了、返り値のチェックなどだ。例えば次の C プログラムを実行すると「hello」とプリントすることを期待しているのだが結果はそうではない。




main()

{

        int a[10];

        if (sizeof(a)/sizeof(a[0]) > -1)

            printf("hello\n");

}



gcc でコンパイルすると何のメッセージも表示せずにコンパイルが終了するが、"lclint a.c" とすると比較している型の不一致、返り値が存在しない等のメッセージを表示する。

LCLint はメモリ管理のチェックもする。例えば次のコードではエラーが表示される。




#include <stdlib.h>

int main()

{

        int *p = malloc(5*sizeof(int));

        *p = 1;

        free(p); 

        return 0;

}



次のようなコードならエラーは出ない。



#include <stdlib.h>

#include <stdio.h>

int main()

{

        int *p = malloc(5*sizeof(int));

        if (p == NULL) {

                fprintf(stderr, "error in malloc");

                exit(EXIT_FAILURE);

        } else *p = 1;

        free(p); 

        return 0;

}



LCLint はマクロのチェックも強力だ。




#define sqr(p) p * p

main()

{

        int i=2, j;

        j = sqr(i+1);

        printf("%d", j); /* 5 と表示する */

        return 0;

}



ではプロトタイプの宣言やマクロの定義には()を使うなどのエラーメッセージが表示される。

その他ファンクションのプロトタイプ、グローバル変数のチェックなどにも有効だ。LCLint は http://lclint.cs.virginia.edu/ftp/lclint/lclint-2.4b.src.tar.gz からソースを入手することができる。より詳しく調べたければ http://www.sds.lcs.mit.edu/lclint/ が役に立つだろう。


Smalltalk と ペンギン (By Jason Steffler)

Linux 用の VisualWorks Non Commercial バージョンがフリーで公開されました。ここで使用する例はどの Smalltalk でも同じ動作をします。Smalltalk の基本はどのバージョンでも同じですが GUI コードなどに違いがでてきています。今回使用するのは VWNC v3.0 です。Smalltalk の特徴は次の通りです。

Smalltalk は Xerox の Palo Alto 研究所で70年代初期に開発された。学習用に開発されたために文法は至って単純。大規模なクラスライブラリを備えており非常に強力で完全にオブジェクト志向の言語だ。VWNC3 は フリーのダウンロードサイト から入手することができる。Smalltalk は3ボタンマウスを想定しているので2ボタンの場合にはシミュレートする必要がある。

IDE は終了した時点をまさにそのまま保存する。再開する場合には全く同じ環境で始めることができる。Smalltalk は完全にオブジェクト志向だ。ウィンドウもメニューもボタンもすべてオブジェクトだ。常に使われる "Hello World" の例で示すと、新しい workspace を開いて "Transcript cr. Transcript show: "Hello World." と打ち込んでハイライト表されているコードの上でミドルボタンを押してメニューの "do it" を選ぶ。Transcript ウィンドウに "Hello World" と表示されただろうか。この場合の "Transcript" はオブジェクトで "cr"、"show" はともにオブジェクトへのメッセージだ。Smalltalk ではコードをコンパイル、リンク、実行などが必要ない。その場ですぐ実行できる。

Smalltalk はインクレメンタルバイトコンパイリングを採用している。コンパイルとインタープリタの中間のようなもので次のような動作をする。

  1. Smalltalk コンパイラが Smalltalk のコードをバイトコードに変換
  2. バイトコードはバーチュアルマシンに渡される
  3. バイトコードが実行されて結果が返される
Java もバイトコードを使用しているという点では似通っているが若干性質が違う。Java の場合にはインクレメンタルではないのでプログラム後改めてコンパイルしなければならない。

今日の日付を表示するにはワークスペースの中で "Date Today" とタイプしコードをハイライト表示させたら3ボタンを押して "print it" を選ぶ。すると今日の日付が表示される。同じメニューの "inspect it" を選ぶと date のインスペクターが表示される。一番上の self をクリックすると今日の日付が表示され、day をクリックすると1年の中の日付の数字が、year をクリックすると年が表示される。ここで day をクリックしてプロパティに1を加えてみる。同じくマウスの3ボタンをクリックして表示されるメニューで "accept" を選ぶとオブジェクトの日付が1日進む。このようにコードを書いてすぐに実行できることとオブジェクトを操作して直接変更することができることが Smalltalk の大きな特徴となっている。デバッグには非常に効果的だ。

ワークスペースに 「1+2*3」 と打ち込むとどうなるだろうか。マウスの3ボタンでメニューを表示して "print it" を選んで欲しい。結果は読者が期待する 7 ではなく 9 だ。これは前から言っているようにすべてがオブジェクトだからだ。この例では 1、2、3 がそれぞれオブジェクトなのだ。オペレータの + と * はオブジェクトに対するメッセージだ。1をハイライト表示にしてマウスの3ボタンでメニューを表示し "inspect" を選ぶと中身は1になっている。オペレータの優先順位を変更したければ 「1+(2*3)」とすればよい。

バーチュアルマシンとは Smalltalk のバイトコードを実行できるバーチュアルコンピュータのことだ。このために他のプラットフォームへの移植が容易になっている。「ファイル」メニューから Setting を選ぶとダイアログが表示される。その中の "Look Selection" で Macintosh を選んで "accept" をクリックするとマック風のルックアンドフィールに変化する。

Smalltalk が強力だと言われる理由はそれ自身が Smalltalk で書かれていることだ。変更、拡張、改良などが簡単にできる。必要に応じた拡張が簡単にできる。

Smalltalk にはガベージコレクション機能がある。どこからも参照されていないオブジェクトは回収され開放されたメモリは再利用される。C++ ではメモリを管理するのはプログラマだ。さらにポインタの操作もない。技術的に言えばオブジェクトを参照している変数はポインタを使っているのだが C++ のような操作は発生しない。

オブジェクト志向言語に慣れていないプログラマへの説明には充分だっただろうか。オンラインヘルプ、デバッガ、コードの共有などスペースの都合で触れられなかった優れた機能もまだたくさんある。


プロセスのクローン (By Alex Vrenios)

クラスタシステムとはネットワーク接続された複数のマシンがクライアントからは単一のサーバに見えるようなシステムを言う。システム上では多数のプロセスが走っており、プロセスが複製を作成したり、プロセスをネットワーク上の他のマシンに移行したりする。

プロセスのクローンにはサービスとインタフェースを利用する。まず /etc/services と /etc/inetc.conf に次のような記述が必要だ。


   clone    5050/tcp       #クローンを起動させる


   clone    stream   tcp     nowait  root  /usr/bin/cloned     cloned

変更を有効するには再起動するかコマンドから指示する必要がある。

   >killall -HUP inetd

リモートのマシンからコールがあるとリモートマシンの名前を保持してプロセスが新たにコピーされ必要な処理を遂行する。ローカルマシンからリモートの名前で clone() がコールされるとリモートマシンで cloned が起動する。その後の動作はアプリケーションに依存する。リモートマシンのプロセスから他のリモートにプロセスをコピーすることもできる。

これが今後どのように発展するかは読者の工夫次第だ。利用したプログラムのソースを参考にして欲しい。
test.c
cloned.c
clone.c