今年もあとわずかとなりました。皆様もよいお年をお迎えください。
Linux Journal12月号発売中。特集はシステム管理。
▼▼▼ディストリビューション関連ニュース▼▼▼●ASP Linux
アプリケーションプロバイダをターゲットにしたASP Linuxが SWsoft により開発された。これは Red Hat 7 互換のディストリビューションに ASP、ISP、NSP 用のサーバソフトウェアを統合したものだ。SWsoft は現在アジア太平洋地域でディストリビューション、ソース、アプリケーションのミラーサイトを探している。
●CalderaCaldera Systemsは同社の Linux管理ソリューションを Caldera Volution とすると発表した。現在はベータバージョンがwww.calderasystems.com/betaで公開されている。Volution は Linux システム用のブラウザ/ディレクトリベースの管理ソフトで LDAP を利用しており、Linux システムのポリシー、プロファイルを管理することが可能になる。
Caldera Systems, Inc. は Linux/Unix Power Solution Tour 2000 を11月14日から12月12日まで開催する。このツアーは Caldera の将来を示すものだ。
●NeoLinuxNeoware Systems は Comdex Fall 2000 でデスクトップアプライアンス用の組み込み NeoLinux 2.0 を展示する。カスタマイズ可能なユーザインターフェースと二つのメインコンポーネントが特徴だ。MS Windows のアプリケーションや UNIX の X アプリケーションなどを実行するための通信を確立する ezConnect と ネットワークを通してアプリケーションの新機能などを追加する ezSnap だ。スタンドアローンとしては1年間のサポートとアップグレードがついて60ドルだ。
●StormStorm 関連のリンク
●今後開催される予定のコンファレンス、イベント
|
USENIX Winter - LISA 2000 | December 3-8, 2000 New Orleans, LA www.usenix.org |
|
Pluto Meeting 2000 | December 9-11, 2000 Terni, Italy meeting.pluto.linux.it |
|
LinuxWorld Conference & Expo | January 30 - February 2, 2001 New York, NY www.linuxworldexpo.com |
|
ISPCON | February 5-8, 2001 Toronto, Canada events.internet.com |
|
Internet World Spring | March 12-16, 2001 Los Angeles, CA events.internet.com |
|
Game Developers Conference | March 20-24, 2001 San Jose, CA www.cgdc.com |
|
CeBit | March 22-28, 2001 Hannover, Germany www.cebit.de |
|
Linux Business Expo | April 2-5, 2001 Chicago, IL www.linuxbusinessexpo.com |
|
Strictly e-Business Solutions Expo | May 23-24, 2001 Location unknown at present www.strictlyebusinessexpo.com |
|
USENIX Annual Technical Conference | June 25-30, 2001 Boston, MA www.usenix.org |
|
PC Expo | June 26-29, 2001 New York, NY www.pcexpo.com |
|
Internet World | July 10-12, 2001 Chicago, IL events.internet.com |
|
O'Reilly Open Source Convention | July 23-26, 2001 San Diego, CA conferences.oreilly.com |
|
LinuxWorld Conference & Expo | Conference: August 27-30, Exposition: August 28-30, 2001 San Francisco, CA www.linuxworldexpo.com |
|
Linux Lunacy Co-Produced by Linux Journal and Geek Cruises | October 21-28, 2001 Eastern Carribean www.geekcruises.com |
OEone と Tatung Co. が提携を発表した。両社は Linux ベースのインターネットコンピュータソリューションの提供を目指す。
●SGI と ePeople が Linux ユーザへオンラインサポートSGI と ePeople は Linux ユーザへオンラインのテクニカルサポートを提供する。ウェブサイトは SGI Online Helpdesk と ePeopleで、SGI の200人の技術者が ePoople の Linux サポートに協力する。SGI は同時にオンラインのヘルプデスクから WebPacks も提供する。
●IBM、KDE にVia Voice を統合IBM は KDE リーグに参加、同社の Via Voice テクノロジを KDE に統合する。Linux 環境では Via Voice が唯一の音声認識ソフトだ。KDE リーグは KDE の普及を目指す KDE 開発者と業界の団体で、KDE 自体のプロモーションと KDE 上で動作するアプリケーション開発を支援する。
●Linuxcare と Eazel が提携Linuxcare と Eazel が提携を発表した。Linuxcare は Eazel が提供している Nautilus クライアントと Eazel サービスに対するメールでのサポートと Eazel の Linux ノレッジベースのサポートを提供する。
●英国のオンライントレーニングサイト英国の Training Pages はトレーニングコースが10,000を越えたと発表。同サイトは Linux、Apache、MySQL、PHP などのオープンソースで構築されている。
●Computer History Graphing Project 0.9.2 が公開Computer History Graphing Project 0.9.2 が公開された。すべてのコンピュータ関連事項を一つのツリーで表現するもので汎用の構文解析機能を有している。オプションで DBM ハッシュを出力することも可能。詳細は comp-hist.sourceforge.net を参照。
●Linux 関連のリンクAdobe の FrameMaker のベータバージョンは公開されない。Linux Weekly News speculates why.
中国はオープンなコミュニティの促進よりも管理を強化? The Internet in China
ホイールマウスを X 環境で動作させる。darned mouse wheel
おすすめのリンク
Anchordesk と ZDnet おすすめのリンク
The open-source life Linux 用の開発ツールの作者が自身のプロジェクト LTT と GPL に関して語る。
The coders' collective: FreeDevelopers.net は企業がソフトウェアを開発する方法を模索している。
Open-source rumble? オープンソースコミュニティでの競争とソフトウェア開発の効果。
MSNBC の Comdex 2000 に関するレポート
Gnutella とその法的側面
From Linuxworld Windows が安定性の確保のために Linux のコードを利用している?
Traceroute Java Servlet sources (under Linux) がダウンロード可能 (http://cities.lk.net/trdownload.html)
▼▼▼ソフトウェア関連ニュース▼▼▼●IBM から Linux 用のスモールビジネススイート
IBM は業界初のスモールビジネス用のLinux ベースの統合ソフトウェアを発表した。メッセージング、コラボレーション、プロダクティビティ、ウェブサイト構築、データマネージメントなどの機能とインストールプログラムを提供する。中心となるのはデータベース、eメール、ウェブアプリケーションの三つのサーバだ。統合スイートは www.ShopIBM.com から499ドルで入手できる。対応ディストリビューションは Caldera、Red Hat、SuSE、TurboLinux だ。欧州とアジアの10カ国の言語に対応している。具体的なソフトウェアは Lotus Domino Release 5.04、IBM WebSphere Application Server、 Standard Edition Version 3、IBM DB2 Universal Database Version 7、IBM WebSphere Homepage Builder、IBM Suites installer、WebSphere Studio、Domino Designer などだ。
●Wolfram が Mathematica 4.1 を発表Wolfram Research, Inc. は科学技術計算用ソフト、Mathematica 4.1 を発表した。ほとんどのメジャーな Linux ディストリビューションにネイティブに対応している。Parallel コンピューティングツールキットを使えば Linux クラスタでの使用も可能。製品は www.wolfram.com/products/mathematica/newin41. から入手できる。
●ウェブでのビジネスソリューション、Omnis Studio 3.0Omnis Software は Omnis Studio 3.0 をリリースした。これは 4GL の RAD プログラムで、ウェブベースのビジネスアプリケーションの速度向上を目指している。Omnis Studio はハイパフォーマンスのビジュアル RAD ツールで eコマース、データベース、クライアント/サーバアプリケーションの GUI インタフェースをコンポーネントベースで構築できる。Omnis Studio 3.0 の体験版と新バージョンの詳細は www.omnis.net、www.omnis.net/v3 を参照。
●Linux NetworX が BRU を Evolocity に統合Linux NetworX, Inc. はバックアップ、復元ユティリティの BRU を Evolocity クラスタソリューションに統合した。BRU は Enhanced Software Technologies, Inc. の実績のあるバックアップ、復元ユティリティだ。現在テープデバイスの信頼性は確立されているがそれでもバックアップ中にエラーが起こる可能性はある。BRU はテープリード時にエラーを検知し修復する。Evolocity クラスタシステムはハードウェア、ClusterWorX マネージメントソフトウェア、RapidFlow 10/100 ギガビットイーサネットスイッチ、アプリケーション、ストレージ、BRU バックアップユティリティからなる。
●Tribes2 が Linux に移植Loki Software Inc. は Sierra Studios と提携、Tribes2 を Linux へ移植することになった。Loki は www.lokigames.com でベータテスタも募集している。
●Mahogane 0.60 メール/ニューズクライアントメール、ニューズクライアントの Mahogany がリリースされた。Mahogany はオープンソース、クロスプラットフォームのメール/ニューズクライアントで X11 と MS Windows 上で動作する。POP3、IMAP、MIME に対応、SSL 経由でのセキュリティも確保している。ソースは http://mahogany.sourceforge.net/ から手に入る。
●Linux 用 Opera ベータ2がリリースOpera for Linux の最新ベータが Opera.com で公開された。
●GtdRadiant 1.1 ベータがリリースLoki Software, Inc と QERadiant.com は GtkRadiant 1.1 ベータをリリースした。これは Quake III アリーナレベルエディタ Q3Radiant のクロスプラットフォームバージョンだ。詳細は http://www.qeradiant.com/gtkradiant.shtml を参照。
●Epitera から オープンソース開発ツールキットhttp://www.epitera.com は Comdex 2000 でオープンソース開発ツールキット、AbsoluteX を公開した。これは Linux 上での GUI のカスタマイズを容易にする。http://www.absolutex.org からダウンロードできる。
●Open Motif が TurboLinux の IA64 に対応Integrated Computer Solutions, Inc. は Motif の IA64 の移植を発表した。現在多くの UNIX プラットフォームが GUI ツールキットに Motif を採用しているので既存のエンタープライズアプリケーションには非常に重要なことだ。ソフトウェアは http://www.motifzone.net/download/dldform.php からダウンロードできる。
今月の HelpDex は ここ をクリックしてください。
あちこちの展示会やコンベンションでの Linux の人気はうなぎ登りだ。初心者から一儲けしようとしている人まで。LPI (Linux Professional Institute) の聴衆は非常に熱心で、それぞれに自分の意見を持っている。一つ確かなのは Linux が普及すればするほど習熟した人が必要になる。そのためには知識の標準化も必要だ。
Linux はもう一部のもの好きな人間のための OS ではない。COMDEX/Linux Business Expo も盛況だった。Linux 関連企業の売り上げも伸びているので Linux プロフェッショナルへの需要も増加するはずだ。Linux プロフェッショナルには正しい知識、正しいツールが必要であり、正確な資格認定が重要だ。そのような中で多様な Linux プロフェッショナルや初心者に一つの基準を提供するのが LIP (www.lpi.org) で2年前から活動している。ウェブサイトの関連情報はフランス語、ドイツ語、ギリシャ語、日本語、ポーランド語、スペイン語、英語で表示され、間もなく中国語でも閲覧できるようになる。このような作業は世界中のボランティアによって遂行されている。
日本はつい最近 Virtual University Enterprises (VUE) と接続され、オンラインで管理者の資格認定試験が可能になった。LPIー中国も間もなくスタートする。
LPI はコミュニティの情熱と分別により支えられている。なされるべき作業は山とある。LPI に協力したい人は wilma@lpi.org、dan@lpi.org、info@lpi.org へコンタクトしてほしい。レベル2のテストは2001年の第一四半期に行われる予定だ。ウェブサイトの情報をこまめにチェックしてほしい。LPI としては Linux プロフェッショナル達が LPI-1、LPI-2、LPI-3として認知されるのを願っている。この認定資格は IBM、SGI、SuSE、TurbLinux などに認められている。世界中の国で認定試験が実地されており米国、カナダ、ドイツ、オランダ、日本などで頻繁に行われている。
2001年1月にはアムステルダム、ニューヨークで、2月にはパリで試験が行われる。その後も各地で試験が行われる予定だ。詳細は http://www.lpi.org/i-events.html でチェックしてほしい。展示会やコンベンションへの援助は info@lpi.org か wilma@lpi.org までコンタクトしてほしい。皆さんもどしどし挑戦してほしい。
[Eric は Sun Puppy も描いています。 http://www.sunpuppy.com から見ることができ ます。]
GnuPG はデータの符号化やデジタル署名に用いられる安全な通信のためのツールで PGP 互換だ。ライセンスの絡む IDEA アルゴリズムを用いていないので GPL 以外の制限はない。GnuPG は公開鍵方式だ。ユーザはパブリック鍵とプライベート鍵とを作成しプライベート鍵はユーザが保存し公開されることはない。パブリック鍵は通信相手が利用する。
GnuPG の機能は次の通り
インストール方法
gnupg のソースファイルを /usr/local/ ディレクトリかまたは適当なディレクトリへコピーして該当ディレクトリへ移動する。
[root@dragon local] tar xvzf gnupg-1.0.4.tar.gz
[root@dragon local]# cd gnupg-1.0.4
[root@dragon gnupg-1.0.4]# ./configure
[root@dragon gnupg-1.0.4]# make
実行ファイルの作成。
[root@dragon gnupg-1.0.4]# make check
パッケージ付属のテストを実行。
[root@dragon gnupg-1.0.4]# make install
実行ファイルと必要なファイルをインストールする。
[root@dragon gnupg-1.0.4]# strip /usr/bin/gpg
"strip" コマンドは実行ファイルのサイズを少なくしてパフォーマンスを向上させる。
コマンド
1: 新しい鍵を作成
まずパブリック鍵とプライベート鍵を作成する。コマンドラインのオプションは --gen-key だ。
[root@dragon /]# gpg --gen-key
gpg (GnuPG) 1.0.2; Copyright (C) 2000 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg: /root/.gnupg: directory created
gpg: /root/.gnupg/options: new options file created
ここで GnuPG を一度終了してから再び立ち上げる。
[root@dragon /]# gpg --gen-key
gpg (GnuPG) 1.0.2; Copyright (C) 2000 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.
gpg:/root/.gnupg/secring.gpg: keyring created
gpg: /root/.gnupg/pubring.gpg: keyring created
Please select what kind of key you want:
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection? 1
DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024) 2048
Do you really need such a large keysize? y
Requested keysize is 2048 bits
Please specify how long the key should be valid.
0 = key does not expire
<n> = key expires in n days
<n> w = key expires in n weeks
<n> m = key expires in n months
<n> y = key expires in n years
Key is valid for? (0) 0
Key does not expire at all
Is this correct (y/n)? y
You need a User-ID to identify your key; the software constructs the
user id
Real name: Kapil sharma
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? o
Enter passphrase: [enter a passphrase]
We need to generate a lot of random bytes. It is a good idea to perform
パブリック鍵、プライベート鍵作成時に求められる入力について説明しよう。
長い鍵サイズは一長一短だ。セキュリティが強化される反面符号化、解読に時間がかかる。 ほとんどの場合デフォルトのサイズで十分だ。鍵のサイズは後から変更することはできない。 ほとんどのユーザには「key does not expire」で十分だ。鍵の有効期間を決めるときはパブリック鍵を持っているユーザへ忘れずに連絡をしよう。
Real name: Enter you name here
パスフレーズの長さには気をつけよう。セキュリティの観点からするとプライベート鍵の解読にパスフレーズを使うのは GnuPG の弱点だ。パスフレーズには辞書から類推できる単語の使用せず、大文字、小文字、記号などをミックスしよう。 2: revocation certificate の作成 鍵の作成が済んだらプライベート鍵のパスフレーズを忘れたりしたときのために「revocation certificate」を作成しよう。 [root@dragon /]# gpg --output revoke.asc --gen-revoke mykey "mykey" は鍵を特定するもの。キー ID、ユーザ ID の部分など。作成されたファイルは revoke.asc に保存される。他のユーザがアクセスできないところへ保存しよう。 3: 鍵のリスト 鍵のリストは次のように入力する。 [root@dragon /]# gpg --list-keys
4: パブリック鍵のエスポート パブリック鍵はホームページやキーサーバに置いて利用することができる。パブリック鍵を利用相手に渡すにはまずエクスポートする必要がある。
[...]
5: パブリック鍵のインポート 鍵の作成が済んだらパブリック鍵を今後使用できるようにパブリックキーリングデータベースに追加しよう。 [root@dragon /]# gpg --import <filename>
上記の例では Mandrake Linux の "mandrake.asc" をインポートした。 6: 鍵を有効にする 鍵をインポートしたらその鍵を有効にする。鍵のフィンガープリントの確認と有効な鍵としての署名をする。鍵のフィンガープリントの表示は次のようにする。
上記の例では mandrake のフィンガープリントを確認している。 7: 鍵の署名 鍵をインポートし確認をしたら鍵にサインをすることができる。鍵の署名はその鍵の所有者を知っていることを証明する。確実なものにだけ署名することにしよう。
pub 1024D/9B4A4024 created: 2000-01-06 expires: never
trust: -/q
MandrakeSoft (MandrakeSoft official keys) <mandrake@mandrakesoft.com>
Are you really sure that you want to sign this key
Really sign? y
You need a passphrase to unlock the secret key for
Enter passphrase:
8: 署名のチェック 署名にチェックは次のようにする。
9: 符号化と解読 ドキュメントの符号化と解読は簡単だ。mandrake にメッセージを送る場合ならメッセージを mandrake のパブリック鍵を使って符号化する。解読できるのはパブリック鍵に対応するプライベート鍵を持つ mandrake だけだ。mandrake から読者にメッセージを送る場合には読者のパブリック鍵を使って符号化されてくる。自分のプライベート鍵を使って解読すればいい。 Enter passphrase:
メッセージの解読は次の通り。 10: 署名のチェック "--verify" オプションを使えば暗号化されたデータが送り主によって署名されているかどうかチェックすることができる。 GnuPG を使えば
GnuPG のフロントエンドやソフトウェアのリスト
GPA 標準の GnuPG の フロントエンドを目指す優れた GUI
GnuPG はオープンソースの優れたプログラムだ。暗号化、解読などのすべての機能を持ち GPL の下でで公開されている。メールの暗号化、ファイルの暗号化などネットワークでのセキュリティ確保に役立ててほしい。 Linux Gazette の9月号で Making a Simple Linux Network Including Windows 9x というタイトルで記事を書いたが、「どうやったのか?」というメールが多かったのでそれに応えよう。また中途半端だった sendmail の設定に関しても説明しよう。sendmail の設定は通常のメールサーバ構築のための設定ではなく、二つのマシンから相互にメールの送受信が可能なメールサーバの設定だ。さらに設定の意味は sendmail.cf ファイルの設定ではなく sendmail を実際に動作させることだ。 筆者の環境は Linux ワークステーションを使用している。ネットワークネーム (ホストネーム)はない。多くのプログラムがうまくいかなかったのはもともと sendmail があらかじめ設定されておりユーザが sendmail.cf を修正して使用するということを想定していないためだろう。 1. まずすることは Linux マシンにホストネームをつけることだ。"hostname one.juro.sk" ようのようにコマンドラインで実行してほしい。one.juro.sk はマシンの名前だ。名前の所を読者の名前に変えて使用してほしい。例えば、one.frank.com のようにだ。ネットワークの設定に関しては9月号の記事で解説している。Linuxconf なら次のようにしてほしい。
from Real Name, Comment and Email Address in this form:
"Heinrich Heine (Der Dichter)
Email address: kapil@linux4biz.net
Comment: Unix/Linux consultant
You selected this USER-ID:
"Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net> "
You need a Passphrase to protect your secret key.
some other action (type on the keyboard, move the mouse, utilize the
disks) during the prime generation; this gives the random number
generator a better chance to gain enough entropy.
.++++++++++..+++++++++++++++..+++++....+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.+++++.+++++.++++++++++..+++++.++++++++++....++++++++++..+++++>++++++++++.+++++^^^
public and secret key created and signed.
GnuPG は複数の種類の鍵を作成することができる。DSA は基本的な鍵でデジタル署名に使用され、EIGamal は符号化に使用される。DSA (署名のみ)は DSA 鍵のみを作成する。(4) は EIGamal だけで署名と符号化を実行する。ほとんどのユーザはデフォルトのままでいいだろう。
(1) DSA and ElGamal (default)
(2) DSA (sign only)
(4) ElGamal (sign and encrypt)
Your selection?
About to generate a new ELG-E keypair.
minimum keysize is 768 bits
default keysize is 1024 bits
highest suggested keysize is 2048 bits
What keysize do you want? (1024)
Please specify how long the key should be valid
0 = key does not expire
<n> w = key expires in n weeks
<n> m = key expires in n months
<n> y = key expires in n years
Key is valid for? (0)
from Real Name, Comment and Email Address in this form:
"Kapil Sharma (Linux consultant) <kapil@linux4biz.net> "
Email address: Enter you email address
Comment:
Enter
any comment here
Enter passphrase:
/root/.gnupg/pubring.gpg
------------------------
pub 1024D/020C9884 2000-11-09 Kapil Sharma (Unix/Linux consultant)
<kapil@linux4biz.net>
sub 2048g/555286CA 2000-11-09
[root@dragon /]# gpg --output kapil.gpg --export kapil@linux4biz.net
[root@dragon /]# gpg --export-armor> kapil-key.asc
"--export" はファイルからパブリック鍵を抽出する。"armor" はアスキーファイルを作成。
[root@dragon /]# gpg --export-armor
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.0.2 (GNU/Linux)
Comment: For info see http://www.gnupg.org
-----END PGP PUBLIC KEY BLOCK-----
"filename" はエクスポートされたパブリック鍵
入力例:
[root@dragon /]# gpg --import mandrake.asc
gpg: key :9B4A4024: public key imported
gpg: /root/.gnupg/trustdb.gpg: trustdb created
gpg: Total number processed: 1
gpg: imported: 1
[root@dragon /]# gpg --fingerprint mandrake
pub 1024D/9B4A4024 2000-01-06 MandrakeSoft (MandrakeSoft official
keys) <mandrake@mandrakesoft.com>
Key fingerprint = 63A2 8CBD A7A8 387E 1A53
2C1E 59E7 0DEE 9B4A 4024
sub 1024g/686FF394 2000-01-06
[root@dragon /]# gpg --sign-key <UID>
pub 1024D/9B4A4024 created: 2000-01-06 expires: never
trust: -/q
sub 1024g/686FF394 created: 2000-01-06 expires: never
(1) MandrakeSoft (MandrakeSoft official keys) <mandrake@mandrakesoft.com>
Fingerprint: 63A2 8CBD A7A8 387E 1A53 2C1E 59E7 0DEE 9B4A 4024
with your key: "Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net> "
user: "Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net> "
1024-bit DSA key, ID 020C9884, created 2000-11-09
[root@dragon /]# gpg --check-sigs mandrake
pub 1024D/9B4A4024 2000-01-06 MandrakeSoft (MandrakeSoft official
keys) <mandrake@mandrakesoft.com>
sig! 9B4A4024 2000-01-06
MandrakeSoft (MandrakeSoft official keys) <mandrake@mandrakesoft.com>
sig! 020C9884 2000-11-09
Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net>
sub 1024g/686FF394 2000-01-06
sig! 9B4A4024 2000-01-06
MandrakeSoft (MandrakeSoft official keys) <mandrake@mandrakesoft.com>
[root@dragon /]# gpg -sear <UID of the public key> <file>
使用例は次の通り。
[root@dragon /]# gpg -sear Mandrake document.txt
You need a passphrase to unlock the secret key for
user: "Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net> "
1024-bit DSA key, ID 020C9884, created 2000-11-09
[root@dragon /]# gpg -d documentforkapil.asc
You need a passphrase to unlock the secret key for
user: "Kapil Sharma (Unix/Linux consultant) <kapil@linux4biz.net> "
1024-bit DSA key, ID 020C9884, created 2000-11-09
Enter passphrase:
[root@dragon /]# gpg --verify <Data>
1: 暗号化されたメールを送ることができる。
2: ファイル、ドキュメントを暗号化することができる。
3: ネットワークを通じて暗号化されたファイル、重要な文書の送信が可能。
GnomePGP GNOME デスクトップツール
Geheimniss KDE フロントエンド
pgp4pine Pine 用のフィルタ
MagicPGP Pine で使用する別のスクリプト
PinePGP同じく Pine 用のフィルタ
Copyright © 2000, Kapil Sharma.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 60 of Linux Gazette, December 2000
Windows のパーティションを共有する
By Juraj Sipos
hostname > Basic sendmail configuration > present your system as: one.juro.sk
2台目のマシンでも同様にしてほしい。例えば、two,juro.sk のように。
2. 1台目のマシンの /etc ディレクトリにある sendmail.cw ファイルには one.juro.sk が入っていなければならない。2台目には two.juro.sk だ。このファイルはあらかじめ設定されており次のような文字列が入っているはずだ。
# sendmail.cw - include all aliases for your machine here.
3. DNS も変更する。DNS は bind パッケージに含まれている。bind をインストールして /etc ディレクトリの設定ファイルを変更しよう。筆者の設定ファイルは次のようになっている。
/etc/named.boot
;
; a caching only nameserver config
;
directory /etc/namedb
cache . root.cache
primary 0.0.127.in-addr.arpa named.local
筆者の /etc/named.conf ファイルは通常の Linux の設定とは違っている。これは FeeBSD を使っているためだ。設定ファイルが /etc と /var ディレクトリに分散するよりは /etc にまとめたほうが使いやすい。それに /etc/ディレクトリは定期的にバックアップしている。root.cache ファイルはインターネットのルート DNS サーバのファイルだ。今回は修正する必要はない。
/etc/named.conf
options {
directory "/etc/namedb";
};
zone "." {
type hint;
file "root.cache";
};
zone "0.0.127.in-addr.arpa"{
type master;
file "named.local";
};
zone "juro.sk"{
type master;
file "juro.sk";
};
zone "0.0.10.IN-ADDR.ARPA"{
type master;
file "10.0.0";
};
/etc/namedb/named.local
$TTL 3600
@ IN SOA one.juro.sk. root.one.juro.sk. (
20000827 ; serial
3600 ; refresh
900 ; retry
3600000 ; expire
3600 ) ; Minimum
IN NS one.juro.sk.
1 IN PTR one.juro.sk.
最後のピリオドは間違いではない。必ず入れなければならないので注意して欲しい。DNS の詳細な情報は DNS-HOWTO から得られる。内容が理解できなくても問題はない。この設定で正常に動作する。
/etc/namedb/juro.sk
$TTL 3600
@ IN SOA one.juro.sk. root.one.juro.sk. (
2000080801 ; serial
3600 ; refresh
900 ; retry
1209600 ; expire
43200 ; default_ttl
)
IN NS one.juro.sk.
IN MX 0 one.juro.sk.
localhost. IN A 127.0.0.1
;info on particular computers
ns IN A 10.0.0.1
one IN A 10.0.0.1
www CNAME one
ftp CNAME one
two IN A 10.0.0.2
MX はメールの情報だ。NS はネームサーバ、CNAMEは正規名もしくはアリアス。
/etc/namedb/10.0.0
$TTL 3600
@ IN SOA one.juro.sk. root.one.juro.sk. (
1997022700 ; serial
28800 ; refresh
14400 ; retry
3600000 ; expire
86400 ; default_ttl
)
IN NS one.juro.sk.
1 IN PTR one.juro.sk.
2 IN PTR two.juro.sk.
; the above PTR is reverse mapping
SOA は Start of Authorityだ。";" で始まる行はコメントだ。数字は時間を秒数で表している。
"ndc start" と入力するとネームデーモンがスタートする。 DNS(BIND) が起動しているときは "ndc restart" と試して欲しい。nslookup コマンドを使えばネームサーバへの問い合わせができる。
$ nslookup Default Name Server: one.juro.sk Address: 127.0.0.1
10.0.0.1 と入力するとそれが one.juro.sk だと教えてくれる。
他のマシンで DNS サーバを起動する必要はない。本稿で想定しているネットワークは簡単なものなのでセカンダリ DNS サーバの必要はない。とにかく始めよう。そうすれば何とかなる。
4. resolve.conf ファイルに "domain juro.sk" と記入するとネットワークに属するマシンはドメイン情報を得ることができる。同じドメインのコンピュータ同士は通信が可能だ。ネットワークに繋がれていても "juro.sk" と "frank.com" ドメインでは通信ができない。本稿のネットワークはプライベートアドレスを使用しているのでインターネットでの混乱も生じない。DNS サーバは one.juro.sk が 10.0.0.1 だと教えてくれる。(ダイアルアップでインターネットにアクセスするにはルータが必要だ。ルータを使えばモデムを共有することができる。小さなプライベートネットワークでインターネットにアクセスするなら DNS サーバからアクセスしたほうが簡単だ。ゲートウェイとして機能すると同時にルータにもなる。freesco というミニダイアルアップルータを使えば ISP の設定だけで使える。サーチエンジンを利用して検索して欲しい)。
TWO コンピュータは ONE コンピュータの DNS 設定を読み込む。コンピュータ ONE のresovle.conf ファイルは次のようになる。
domain juro.sk nameserver 127.0.0.1 nameserver 10.0.0.1 # (this is maybe not necessary, but I have it there)コンピュータ TWO の resolve.conf ファイルは次のようになる。
domain juro.sk nameserver 10.0.0.1
ネットワークの設定は9月号の記事を参照して欲しい。ネットワークに接続してあり上記の設定が済んでいればマシン ONE と TWO 間で相互にメールの送受信ができる。インターネットに接続してあれば www.linuxgazette.com のような IP アドレスも表示してくれる。入力されたアドレスを IP アドレスに変換するのは前述のルート DNS サーバだ。もし期待通りに動作しなければ "ndc restart" を試して欲しい。これで問題が解決できなければネットワークの設定を再度見直そう。
Linux マシンと Windows マシン間でメールの送受信をするには Windows マシンに Linux の sendmail のようなメールサーバをインストールする必要がある。フリーウェアか Winroute のような高度なメールサーバまで選択肢はある。繰り返すが sendmail.cf ファイルの修正は必要ない。そのままで動作するはずだ。
数年前に PCGuardian Encryption Engine (www.pcguardian.com) をダウンロードして使っている。これはシェアウェアだが何度か C: ドライブをフォーマットしているので期限が過ぎても再度インストールして使っている。本稿を参考にする人はすべて自己責任で行って欲しい。PCGuardian Engine は DOS FAT 16 と Windows FAT 32 を暗号化する。フロッピで起動しても C ドライブを見ることはできない。暗号化されたパーティションを削除するには DOS の fdisk ではなく Linux の fdisk か cfdisk を使う必要がある。ブートマネージャを使うならパスワードを要求しないものにする必要がある。筆者は FreeBSD の BOSS ブートマネージャを使っている。BOSS を先にインストールすると PCGuardian パスワードマネージャは BOSS ブートマネージャに影響しない。起動するとパスワードが要求され BOSS ブートマネージャが Windows/Linux を立ち上げる。Windows から MS-DOS モードで再起動を選択すれば loadlin.exe で暗号化された Windows パーティションから Linux を起動することができる。他のブートマネージャを PCGuardian と共存させることは難しいだろう。GAG ブートマネージャ(http://www.arrakis.es/~scostas/SOFTWARE/GAG/gageng.htm)も動作するだろう。BOSS は www.freebsd.orgからリンクをたどって欲しい。ブートマネージャの使用は非常に危険だ。できれば使わないほうがいい。また、暗号化された Windows パーティションは Linux からマウントすることはできない。
オブジェクト、クラス
今月はオブジェクト、クラス、メッセージ、カプセル化の説明をしよう。記事の全文は check the MST page を、その他のリソースは ここを チェックしてください。
今月の記事を始める前に先に説明しておこう。コードやオブジェクトに関する質問が多かったがこれに関しては4回目に説明する予定だ。初めは基本的な説明に重点を置きたい。メッセージは媒体だが、複数の意味がある。ここでは初心者が呆れてしまうような解説は止めよう。話はそれるがテクニカルに関する書籍が最近はあふれている。あるテクニカルの書籍は1000ページで19ドル95セントだ。Java 2 Fundamentals は742ページだ。Smalltalk は単純だ。演算子が二つ、予約語が五つ、それに予約文字が九つだ。これでは葉書一枚で済んでしまう。
オブジェクト
前回、オブジェクトは名詞のようなものという説明をした。今回はオブジェクトの動作について詳しく説明しよう。オブジェクトを動詞として考えてみよう。personというオブジェクトを例にすると、person にある動作を依頼することができる。例えば、
1 は単なる動作だ。題名、リズムなどは問われていない。2 では題名を指定し、3 では題名と大声でとリクエストしている。4 では動作の依頼ではなく彼自身に関する質問だ。オブジェクトは実世界と同様の属性を持つことができる。person というオブジェクトを作成した場合の属性は多分次のようになるだろう。
(Person new) sing.
(Person new) sing: 'MaryHadALittleLamb'.
(Person new) sing: 'MaryHadALittleLamb' andDoIt: 'loudly'.
(Person new) sing: 'MaryHadALittleLamb' andDoIt: 'quietly'.
(Person new) whatIsMyHeight.
Smalltalkのコードは読みやすく通常の会話と似ている。それぞれのリクエストはメッセージといいそれに対して person が対応をする。対応をする方法はメソッドで規定される。最後のメッセージは "whatIsYourHeight" から "whatIsMyHeight" に変えてある。どちらのメソッドも可能だが通常はオブジェクトの観点から決定することが多い。リクエストが理解できれば別々の person に動作をさせることも可能だ。同じ person に異なった動作を依頼する場合には次のような形式になる。
| aPerson |最初の行で変数を宣言している。person の名前がまだないので便宜的に aPerson とする。他のプログラム言語で多用される "x", "y", "i" などよりはいいだろう。通常は連続する単語の最初を大文字にする。上記の例では新しい person を作成し変数 aPerson に割り当てている。aPerson にメッセージを送ってメソッドの実行を依頼している。それでは "Person" とは何だろう。名詞なら特定のクラスもしくは名詞のサブセットだ。Smalltalk では Person はオブジェクトでありクラスと呼ばれる特別なオブジェクトだ。クラスを関連オブジェクト作成のための青写真と考えればいいだろう。クラスからオブジェクトのインスタンスを作成することはオブジェクトの初期化といい、オブジェクトのインスタンス変数に格納されている。aPerson に背の高さを尋ねるとインスタンス変数に格納されているものを返すが、ここでは背の高さの決定方法までは分からない。オブジェクトとはオブジェクトが振る舞うためのメッセージ、データの集合体と言えるだろう。
カプセル化
メッセージ、データの集合体をオブジェクトだと説明したが、データを直接参照することはできない。メッセージを通してのみアクセスできる。これをカプセル化という。これが従来の手続き型言語との大きな違いだ。従来データとメソッドが分離されているので同期がとれず片方が変更された場合には苦労してもう一方も変更しなければならなかった。オブジェクト志向言語はデータとメソッドを閉じ込めることによりこの点を解決しようとした。そうすればデータの格納方法やメソッドを変更しても他のオブジェクトには影響がない。つまりコードの変更は一か所で済む。だから aPerson の背の高さも whatIsYourHeight を聞くまでは分からない。person はどのようにしてでも返事を返すことができるがそれがどのように決定されているかは分からない。決定方法をより良いものに変えたとしても我々に必要なものは返事だけだ。
オブジェクト志向言語の重要なポイントは責任の範囲を考慮することだ。実世界の人と同様に aPerson オブジェクトにも責任の範囲がある。適切な範囲を設定することが重要だ。範囲を広げすぎると個々のケースに対応できなくなり、範囲を限ってしまうと別のケースの場合には別のオブジェクトを作らなければならなくなる。
オブジェクト志向言語のコンセプトを理解することが重要なのでコードの実行や Person クラスの作成などはまだ説明していないが、次は Person クラスの作成と継承、多様性、抽象クラスについて解説しよう。参考のためにソースコードを本稿末に掲載する。コードをロードするには Squeak にロードしなければならない。"file" リストを開いて (Menus>open>....>file list) Person-Article2.st を見つけて右上方をクリックし、中ボタン>filein を選択する。ファイルブラウザは次のようになるはずだ。
これでコードに戻り実行することができる。コードを実行するには中ボタン > do itをクリックする (Alt-d でもいい)。一行ずつや複数の行を選んで実行してみよう。変数を使用しているものは複数のラインを選択してハイライト表示にする必要がある。"double quotes" 引用符は Smalltalk ではコメントと見なされる。コードの一部をコメントにして再実行してみよう。この場合に再コンパイルは必要ない。実行は次のようになる。
(Person new) sing.
(Person new) sing: 'MaryHadALittleLamb'.
(Person new) sing: 'MaryHadALittleLamb' andDoIt: 'loudly'.
(Person new) sing: 'MaryHadALittleLamb' andDoIt: 'quietly'.
(Person new) whatIsMyHeight.
次回の記事では継承、多様性、クラスの抽象化、クラスのコレクションを説明しよう。
他のプログラム言語経験者のために演算子と予約語を説明しておこう。
A Sweet Squeak
いつもはコードを例にすることはないのだが今回は例外としよう。数字を使って遊んでみよう。プログラムの紹介で良く利用される階乗だ。階乗は次のように表現される。
1 factorial = 1
2 factorial = 2*1
3 factorial = 3*2*1
4 factorial = 4*3*2*1
下記のコードを実行しても結果が表示されないだろう。それは結果を表示するウィンドウが開かれていないからだ。次のようにしよう。
1067桁まで試すことができる。
もし時間があるなら 10000 factorial を試してみるといい。筆者はそのつもりはない。
桁数を確かめるのが大変ならサイズを返すことができる。
(1000 factorial) size
もし正しい桁数が返されているのかどうか自信がないなら次のコードを試してみよう。"1000" が返されるはずだ。
1000 factorial // 999 factorial
精度を確かめるなら次を試してみるといい。
123443/5432
これは分数を返す。
浮動小数点を表示させたければ次をためそう。"22.72426793416332" が返されるはずだ。
123443.45/5432.23
処理時間が気になるなら Time を使おう。結果は所要時間をミリオン秒で表示する。
Time millisecondsToRun: [100 factorial]
Time millisecondsToRun: [1000 factorial]
筆者の P200 のマシンの結果は次の通りだ:
0.020 seconds
5.967 seconds
プログラムの経験がある方なら気がつくだろうが Smalltalk では使用する数字のタイプに煩わされることはない。integers, large integers, floats, large floats などだ。だからタイプの不整合もない。
Person の Smalltalk コードサンプル
最後に Smalltalk のコード例を示そう。別に理解できなくても心配ない。作成や意味に関しては今後の記事で解説する予定だ。
"This is a Class definition"
Object subclass: #Person
instanceVariableNames: ''
classVariableNames: ''
poolDictionaries: ''
category: 'MakingSmalltalk-Article2'
"My Characteristics is a category of methods for the class (similar
to an interface in Java (but it's not enforced))"
Person methodsFor: 'My Characteristics'"The 1 method in the My Characteristics category"
whatIsMyHeight"This is the singing category, it has 6 methods"
"Actually, in practice we'd probably just name this method 'height', with the 'whatIsMy' implied.
Simple example to show how a query about my characteristic can be done. Ah-ha - notice that the height is not being returned via an instance variable as we guessed at above, but is in fact hardcoded... A BAD PRACTICE TO DO, but is fine for this example to keep things simple, and wanted to show how to do a ' in a string"(Workspace new contents: 'My height is 5'' 7"') openLabel: 'This is my height'! !
Person methodsFor: 'Singing'"And the methods for singing - method 1 of 6"
maryHadALittleLambLyrics"singing method 2 of 6, we use the 'my' prefix convention to indicate a private method"^'Mary had a little lamb, little lamb, little lamb, Mary had a little lamb whose fleece was white as snow.'
mySing: someLyrics inManner: anAdjective withTitle: aTitle"singing method 3 of 6"
"Using simple logic here for illustrative purposes - if the adjective is not 'loudly' or 'quietly' just ignore how we're being asked to sing"| tmpLyrics |
anAdjective = 'loudly'
ifTrue: [tmpLyrics := someLyrics asUppercase].
anAdjective = 'quietly'
ifTrue: [tmpLyrics := someLyrics asLowercase].
self mySing: tmpLyrics withTitle: aTitle
mySing: someLyrics withTitle: aTitle"singing method 4 of 6"(Workspace new contents: someLyrics) openLabel: aTitle
sing"singing method 5 of 6"self mySing: 'Do be do be doooooo.' withTitle: 'A bad impression of Sinatra'
sing: aSong"singing method 6 of 6"aSong = 'MaryHadALittleLamb'
ifTrue: [self mySing: self maryHadALittleLambLyrics withTitle: 'Mary had a little lamb']
ifFalse: [self sing].
sing: aSong andDoIt: anAdjectiveaSong = 'MaryHadALittleLamb'
ifTrue: [self mySing: self maryHadALittleLambLyrics inManner: anAdjective withTitle: 'Mary had a little lamb']
ifFalse: [self sing].