余寒お見舞い申し上げます。今年は暖冬のようですが2月に入ってからは例年の寒さが続いているようです。でも春は確実に近付いてきます。暖かくなると花粉の時期になります。今のうちからご用心を。
Linux Journal 2000年2月号発売中。今月の特集はデスクトップとしてのLinuxです。
フィンランドの出版社 SOT は Best Linux オペレーティングシステムのベータバージョンをリリースした。製品版は間もなく出荷される予定。詳しくは http://www.sot.com
Caldera は IBM のオープンソース e-コマース製品をバンドルした OpenLinux eServer を発表した。
http"//www.ecommercetimes.com/news/articles2000/000124-8.shtml
Corel は OE/ONE.com の株式30%を取得した。OE/ONE.com は情報機器、シンクライアントプラットフォームのツールキットや製品を開発してきた。Corel は Corel Linux にOE/ONE.com の機能を統合する予定。Corel はさらに Linux 用のWordPerfect Office 2000 ベータ もリリースした。
http://www.ecommercetimes.com/news/articles2000/00013101.shtml
Linux-Mandrake 7.0(Air) がリリースされた。
http://www.linux-mandrake.com
Red Hat は Compaq Alpha 版の Linux OS をリリース。 http://www.ecommercetimes.com/news/articles2000/000113-5.shtml
SuSE はマックワールドで Macintosh PowerPC 版 SuSE Linux 6.3 ベータを公表した。製品版は今春の予定。
SuSE のサポート強化。ブレーメンにサポートセンターを2月15日にオープン。
SuSE、ミノルタのプリンタをサポート。Minolta PagePro 8, 18, 25 モノクロレーザープリンタでの高品質な印刷を実現。最新のSuSE Linux にユティリティが含まれている。ミノルタはネットワークユティリティ、PageScope を強化。
Linus Torvalds 氏が勤務する Transmeta の内容が明らかになった。Transmeta は1月19日 Crusoe CPU を発表。この CPU はコードトランスモーフィングを使って他の CPU をエミュレートをする。また Transmeta は Mobile Linux も開発中だ。だが市販はされずに OEM 向けになるもよう。Transmeta に関する情報は www.transmeta.com か www.crusoe.com を。
アメリカ、ユタ州の Davis Applied Technology Center で Linux が正規の教科として取り入れられる。対象はコンピュータに関し基礎的な知識を有する者。このカリキュラムはいずれオープンドキュメンテーションとして Linux ドキュメンテーションプロジェクトに還元される予定だ。自習用やLinux教育などに再利用されるようになるだろう。
オープンソースが出版物にも影響を与えている。オープンコンテンツのもとではインターネットなどで自由に閲覧できるようになり、又ソフトウェアとともに配布することが可能になる。今後はオープンソース、既存の出版社との関わり、オープンドキュメントの発展などに関する議論が展開される予定。品質や継続した開発、バージョンアップ、著者、出版社などへの支払いなど問題は多い。オープンコンテンツに関し意見のある方は
-Andy Oram, Editor, O'Reilly & Associates, Inc.
統一的で包括的な情報提供が Linsight の目標だ。情報を求めてあちこち探し回る必要がなくなることが理想だ。Linsight のリソースは2種類ある。
LinEvents (http://linevents.com) はオープンソース/フリーソフトウェアに関連する情報を収集して公表し、情報アクセスを補助する。
LinTraining(http://lintraining.com) は Linux のトレーニングに関するリソースを提供する。
2月の IDG/Linus Torvalds 賞は XFree86 プロジェクトが受賞した。これは IDG ワールドエキスポで発表された。受賞者の賞金は2万5千ドルだ。
Software Carpentry プロジェクトの目標は簡単に使えるソフトウェアエンジニアリングツールとそのドキュメントを構築することだ。 Los Alamos の National Laboratory が Advanced Computing Laboratory に86万ドルの資金を融資しており結果はオープンライセンスの下で公開される。最初のコンテストはデザインで賞金は10万ドルだ。エントリはウェブで公開される。受賞者にはツールデザインの製作のために20万ドルが融資される。ツールはWindows NT と Linux で稼動し Python を使用する。
Wave Technologies International, Inc. は ( www.wavetech.com) Sair, Inc. ( www.linuxcertification.com) を買収した。Sair はベンダに依存しない Linux トレーニング関連機器の開発と Sair Linux & GNU サーティフィケーションを実施している。
包括的に Linux サーティフィケーションテストを計画している Linuxnerds.com は読者からの問題と解答を募集している。詳しくは Nerd@Linuxnerds.com へ。
Linux の広がりに伴い Colorado Linux Info Quest (CLIQ) は4月1日、Denver Tech Center Marriott での Linux コンファランスとエキスポを計画している。興味のある人はhttp://thecliq.org へ。
LinuxDevices.com は Embedded Linux Polls Center を開設した。これは投票により 組み込み Linux の開発者、ユーザのトレンドや方向を見極めようとするものだ。組み込みシステムとはデスクトップのアプリケーションとは違い、ATM マシン、インターネットキオスク、産業プロセスコントロール、医療機器、通信機器などの特定機器用システムだ。組み込みシステムの分野では Windows CE、Windows NT Embedded を有するマイクロソフトもまだメジャープレーヤではない。最近は堅牢なことでは定評のある Linux の評価が高まっている。興味のある方は http://www.linuxdevices.com/polls へ。
■ 特別なキャラクタを持つファイルの削除
先月号の特別なキャラクタを持つファイルの削除はそのまま使用すると危険。削除する前に警告を表示させる。
find / -name '*[^][a-zA-Z0-9#%~:,._+-]*'
表示されないキャラクタがある場合には
find / -name '*[^])}{([a-zA-Z0-9@#$&"'"'"'%~:,._+-]*' | cat -v
特別なキャラクタを持つファイルを削除するには
find . -maxdepth 1 -name .... -print0 | xargs -0 rm
ユティリティやスクリプトを盲目的に使用することには危険が伴うことを忘れずに。
■ 2¢ Tip
便利な 2 ¢ Tipに提案。オープンポートをチェックして報告するための Perl スクリプト。
showports.pl
■ html ファイルの閲覧と編集
◆ エディタとブラウザ
Lynx, Netscape 等と vi, pico, joe, emacs 等のエディタ
◆ mc
html を表示できるミッドナイトコマンダと cooledit
◆ emacs
emacs は html ファイルの編集と表示が可能
◆ Amaya
変更を自動的に反映させコードのストラクチャをツリー形式で表示
◆ KDE ツール
KDreamSite: http://www.raverx.seite.ms
WebMaker: http://www.services.ru/linux/webmaker
KWebDeb: http://mason.gmu.edu/~ebanker/kwebdev/index.html
◆ Galway
GNOME の html エディタ http://erin.netpedia.net/
その他にも優れたツールが多数。 http://www.freshmeat.net や even www.linuxberg.org を参照。要はテンプレートやスクリプトをうまく利用すること。
■ Windows NT ドメイン
WINS で IP アドレスを解決するには NT マシンがドメインネームを持っている必要があり、WINS Addressing tab の "Enable DNS for Windows Resolution" をチェックする。
■ Linux マシンから NT マシンにアクセス
http://us1.samba.org/samba/docs/DIAGNOSIS.html や http://us1.samba.org/samba/docs/FAQ/ を参照。
■ laptop マシンで Linux
Linx Gazette のサーチエンジン、http://www.linuxgazette.com/wgindex.html をチェック。
■ SuSE 6.1 でディスクミラリング
まず Software-RAID mini HOWTO を読む。場所は http://www.linuxdoc.org/
■ パルス回線でトーンモデムを使う
モデムのダイアルストリングを編集する。電話番号の前の ATDT を ATDP にすればいい。
■ Red Hat Linux がカーネルパニックで起動しない
インストール時に作ったブートディスクで起動して lilo を再インストールする。
■ Linksys の Ether16 NIC がインストールできない
◆ NE2000 互換のカードなら動作するはず
◆ Ether ソフトウェアがリソース設定で IRQ と I/O のコンフクリトをチェックする。新しいハードウェアの搭載やオンボード機器があればチェックしよう。
◆ ドライバの組み込み:Red Hat を使っているなら Linux Config を使おう。
◆ ISA IRQ の変更はしなくてもいい。
◆ 起動時にエラーメッセージが出なければ ifconfig をチェックする。カードにアドレス、サブネットマスクなどを設定する必要があるかもしれない。別の ISA スロットにカードを変えてみてハードウェアの問題かソフトウェアの問題かを把握しよう。
■ Diamond SupraExpress 56i V PRO モデム
これは winmodem です。Linuxでの使用は諦めよう。
ウェブサイトを有する企業はコンテンツ維持のためにある種のデータベースを利用していることが多い。そこで今回はウェブサイトでの使用を前提としたオープンソースのソフトウェアを紹介しよう。プラットフォームは Red Hat を使用しているがほとんどのディストリビューションにも当てはまる。
Linux についてはもう説明する必要はないだろう。
Apache
インターネットで最も利用されているウェブサーバ。ボランティアにより開発されている。機能的にも速度的にも他のUNIXベースのサーバにひけを取らない。ほとんどのディストリビューションにバンドルされているのでブラウザでアドレスを http://localhost/ と指定すればいい。
PostgreSQL
高機能のリレーショナルデータベースマネージメントシステム。ほとんど SQL がそのまま利用できる。インストールする時は Red Hat のRPM から postgres で始まるものを全部インストールすればいい。できればデータベースファイルをデフォルトの /var/lib/pgsql/ ではなく /home/postgresdb(又は /usr/local/など) にしたい。そうするとシステムの再インストールの時に便利だ。
postgres ユーザはデータベースの管理者だ。ルートでログインして postgres のパスワードを設定、ディレクトリを作成して所有者を PostgreSQL の管理者に変更する。
# passwd postgres
# mkdir /home/postgresdb
# chown postgres.postgres /home/postgresdb
データベースファイルを置く場所を環境変数 PGDATA で設定する。設定したら /etc/profile ファイルの最後に付け加えよう。
PGDATA=/home/postgresdb
PGLIB=/usr/lib/pgsql
export PGDATA PGLIB
データベースを利用するには postmaster が起動されていなければならない。常に起動させておくためには setup から System services を選び、postgresql に "*" が付いていることを確認する。
最後に /etc/rc.d/init.d/postgresql のデータベースディレクトリを /var/lib/pgsql から /home/postgresdb に変更する。
これで起動する準備ができた。早速起動しよう。
# /etc/rc.d/init.d/postgresql start
最初の起動時に基本的なデータベースが作成され、postmaser がデフォルトで起動される。
インストールのテストをしてみよう。ルートで pguser を作成したら postgres でユーザ pguser を作成する。質問にはデータベースの作成ができないように答えること。終了したら pguser でログインしてテーブルを作成しレコードをいくつか作ってみよう。
# adduser pguser
# passwd pguser
$ createuser pguser
pguser=> create table friends ( name varchar(30), email varchar(90) );
pguser=> insert into friends values ( 'John', 'john@johnny.com' );
pguser=> insert into friends values ( 'Mary', 'mary@linuxmail.com' );
pguser=> select * from friends;
PgAccess を使ってグラフィカルに操作することもできるが初めはコマンドラインを使用することをお薦めする。
PHP3
PHP はサーバサイドのスクリプト言語で、強力なデータベース操作が可能だ。PostgreSQL, MySQL, Oracle, Sybase, Informix などに対応しておりデータベースを使ったサイトを簡単に構築できる。Php, php-manual, php-pgsql をインストールしたら /etc/httpd/conf/httpd.conf と /etc/httpd/conf/srm.conf ファイルの次の行のコメントを外す。
LoadModule php3_module modules/libphp3.so
AddModule mod_php3.c
AddType application/x-httpd-php3 .php3
AddType application/x-httpd-php3-source .phps
test.php3 を使って簡単なテストをしてみよう。内容は1行だ。
<?php phpinfo() ?>
http://localhost/test.php3 でアクセスしてみるとサーバに関する情報が表示されるはずだ。ここまでできたら実際に試してみよう。
<?php
//変数を定義
$PG_HOST=
"localhost";
$PG_PORT=5432;
$PG_DATABASE=
"pguser";
$PG_USER=
"pguser";
$PG_PASS=
"";
//データベースをオープン
$dbconn=pg_connect(
"dbname=$PG_DATABASE host=$PG_HOST port=$PG_PORT user=$PG_USER password=$PG_PASS" );
if ( ! $dbconn ) {
echo
"Error connecting to the database !<br> " ;
printf(
"%s", pg_errormessage( $dbconn ) );
exit();
}
//データベースハンドルは $dbconn
//レコードを挿入するsqlコマンド
$sqlcom=
"insert into friends values ('Marius', 'marius@marius.com')";
$dbres = pg_exec($dbconn, $sqlcom );
if ( ! $dbres ) {
echo
"Error : " + pg_errormessage( $dbconn );
exit();
}
//レコードを追加したことをメールで報告
mail(
"marius@marius.com",
"Lucky winner !",
"You've just won a row in our database. Congratulations !",
"From : boss@db.com");
//メールを打つのは容易い
//データベースの内容を取得
$sqlcom=
"select * from friends";
$dbres = pg_exec($dbconn, $sqlcom );
if ( ! $dbres ) {
echo
"Error : " + pg_errormessage( $dbconn );
exit();
}
//取得したレコードを表示
$row=0;
$rowmax=pg_NumRows($dbres);
while ($row<$rowmax)
{
$do = pg_Fetch_Object($dbres, $row);
$s=
"<p>$do->name | $do->email\n";
printf(
"%s", $s);
$row++;
}
//データベースを閉じる
pg_close( $dbconn );
//これだけ。だいたいの感じは分かってもらえたでしょうか。
//御覧の通り決して難しくはありません。
?>
次のサイトを参考にして下さい。
Linux Gazette に漫画の登場です。「HelpDex」は "help desk" のことのようです。
2000年1月11日にボランティアの努力が実り最初のサーティフィケーションテストが作成された。 Linux Professional Institute はT1A テストを公表。これは Linux管理者の レベル1 の資格を認定するものだ。技術テストには世界中のボランティアが多数参加した。
T1 Aに興味のある人は VUE; http://www.vue.com/linux/ に登録する必要がある。テストはほぼ1-2時間だ。又T2 シリーズのボランティアも同時に募集している。
Eメール、ニュースで利用されている "Pine" は "pico" という小さなエディタを利用している。コマンドの数は少なくほとんどが画面下部に表示されている。
|
|
UW PICO(tm) 3.5 New Buffer [...] ^G Get Help ^O WriteOut ^R Read File ^Y Prev Pg ^K Cut Text ^C Cur Pos ^X Exit ^J Justify ^W Where is ^V Next Pg ^U UnCut Text^T To Spell |
Pine は幅広く利用されているが Pine も Pico もオープンソースではない。更に Pico を利用するには Pine をダウンロードしなければならない。そういうわけで "Pico クローン" の "Nano" を開発しようというオープンソースのプロジェクトがある。GNUのライセンスの下で Pico のような軽くて使いやすいエディタを提供しようというものだ。
nano の外見はこういう感じだ。
|
|
nano 0.8.1 New Buffer . ^O Write Out ^_ Goto Line ^R Read File ^Y Prev Page ^K Cut Text ^C Cur Pos ^X Exit ^\ Replace ^W Where Is ^V Next Page ^U Uncut Txt ^T To Spell |
外見は Pico に良く似ているが著作権の縛りがない。また若干のコマンドが追加されている。ヘルプはまだ実装されていないがコマンドラインのヘルプが存在する。
set editor="nano -citxz"
のようなコマンドが増えるだろう。
Nano をインストールするにはソースをダウンロードしてコンパイル、インストールしなければならない。
wget http://faculty.plattsburgh.edu/astyanax/nano/dist/nano-0.8.1.tar.gz
gtar xvvzf nano-0.8.1.tar.gz
cd nano-0.8.1 ./configure make
guckes@linux> ls -l nano -rwx--x--x 1 guckes users 120357 Jan 31 21:31 nano guckes@linux> strip nano guckes@linux> ls -l nano -rwx--x--x 1 guckes users 38232 Jan 31 21:34 nano
現在 nano のメーリングリストはないので ニュースグループ、comp.editors を利用して欲しい。nano の開発者は現在国際化に取り組んでいる。
今月紹介するサイトは Unix Guru Universe サイトだ。これは Unix のサイトだが、Unix と Linux では共通点が多い。Solaris、HP-UX、OpenBSD、Linux共通で利用できる情報が掲載されている。Linux関連のセクションとしては管理者ガイド、ファイアウォール、プロキシサーバHOWTO、DNS HOWTO などがある。その他にも関連FTPサイト、ユーザグループなどへのリンクがある。が、本来はシステム管理者のためのサイトとして開発されている。サーチエンジンは "Find It Fast", "Find It Now" からリンクされている。Linuxをインストールして起動したならその後の管理に是非活用して欲しい。
Perl と共に DBI と DBD::Pg がインストールされている必要がある。次のサイトを参考にして欲しい。
フリーの本や文学を配布しているとデータベースに大きなオブジェクトを置く必要が出てくる。今回は Perl と PostgreSQL を使って大きなオブジェクトを利用するためのデータベースを構築する。
ラージオブジェクトとはデータベースのテーブルに通常は納まらない物(テキストやバイナリ)だ。使用する環境は RedHat Linux, Postgresql-6.5.4, Perl 5 (with DBI, DBD::Pg, Pg), Apache_1.3.9 。
Perl DBI は汎用的なデータベースインタフェースで個々のデータベースにアクセスするには Perl DBD ドライバを使用する。PostgreSQL にアクセスするには Perl DBI と Perl DBD:Pg を使う。例えば "peaple" というテーブルから PostgreSQL で最初と最後のレコードの名前を表示するにはこういう感じになる。
#!/usr/bin/perl
use DBI;
use vars qw($dbh);
### アクセスするデータベースは zing
$dbh ||= DBI->connect("dbi:Pg:dbname=zing");
my $Command = "select first_name,last_name from people
sort by last_name,first_name";
my $sth = $dbh->prepare($Command);
my $Result = $sth->execute;
while (my @row_ary = $sth->fetchrow_array)
{print "<br> $row_ary[0] $row_ary[1]\n";}
ラージオブジェクトにアクセスすると2度のリードが発生する。ファイルのコピーと実際のリードと。Apache の下で mod_perl 経由で Perl が動いているときにファイルをメモリに読み込んでしまうと大量のメモリが消費されることになり、現実的ではないのでテンポラリファイルを使用するようになっている。PostgreSQL のドキュメントの例を使って PostgreSQL のラージオブジェクトのインポート、エクスポートの方法を見てみよう。例では psql を使っている。
CREATE TABLE image (
name text,
raster oid
);
INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));
SELECT lo_export(image.raster, "/tmp/motd") from image
WHERE name = 'beautiful image';
これを Perl スクリプトを使って書くとこんな具合だ。
#!/usr/bin/perl
use vars qw($dbh);
$dbh ||= DBI->connect("dbi:Pg:dbname=zing");
my $Command = "INSERT INTO image (name, raster)
VALUES ('beautiful image', lo_import('/etc/motd'));";
my $sth = $dbh->prepare($Command);
$sth->execute();
$Command = "SELECT lo_export(image.raster, '/tmp/motd') from image
WHERE name = 'beautiful image'";
$sth = $dbh->prepare($Command);
$sth->execute();
ZING は実際に使用している Perl スクリプトを www.genericbooks.com で公開している。
データベースサーバのデータの入出力にウェブサーバを使う場合、データベースサーバとウェブサーバのアカウントが違う場合には(例えば "www" と "pgsql")一時ファイルの読み込みに問題が発生するかもしれない。そのためにはウェブサーバとデータベースサーバのアカウントを同じにする、同じグループにする、cron を使ってウェブサーバの pid でファイルを保存しなおすなどの方法を講じる必要があるがセキュリティの問題が発生する可能性もある。ZING ではファイルのエクスポートにウェブサーバの子プロセスの pid を使っている。
参考サイト
この記事は Linux のディストリビューションからインストール用の CD-ROM を作る方法について述べる。本来は SCSI の CD-ROM を使ったほうが簡単なのだろうが IDE CD-ROM ユーザの方が多いだろう。CD-ROM ライターには2通りある。CD-ROM の書込と CD-RW の書込だ。CD-RW の書込ソフトは CD-ROM の書込にも使える。次に IDE CD-ROMライターを使うにはコンピュータに IDE CD-ROM が SCSI の CDーROM だと思わせなければならない。そのためにはカーネルに "ide-scsi" をモジュールとして作成し、CD-ROM ライターにアタッチする。方法は Linux 起動時のコマンド引数として渡すか lilo を編集する。Linux が起動したらコマンドプロンプトから "insmod ide-scsi" と入力してモジュールを組み込む。
Linux で CD-ROM を作成するには2種類のソフトがある。cdredord と Xcdroast だ。今回使用するのは cdrecord だ。cdrecord と "ide-scse" が正しくインストールされていれば次のような応答がある。
正しくインストールされていない場合
# cdrecord -scanbus cdrecord: No such file or directory. Cannot open SCSI driver.正しくインストールされている場合
# cdrecord -scanbus
Using libscg version 'schily-0.1'
scsibus0:
0,0,0 0) 'ATAPI " 'CD-R/RW CRW6206A' '1.2A' Removable CD-ROM
0,1,0 1) *
0,2,0 2) *
0,3,0 3) *
.............
0,7,0 7) *
ここまでできたら好みのディストリビューションをダウンロードしよう。ダウンロードするときは CD のイメージをダウンロードする。ISO イメージだ。ダウンロードしたら CD-R に書き込むだけだ。CD イメージを /tmp にダウンロードしたとすると書き込むには
cd /tmp cdrecord -v speed=2 dev=0,0,0 6.1-i386.isoと入力する。cdrecord がコマンド、-v はカーネルのメッセージを表示する。speed=2 は書き込み速度、dev=0,0,0 は "cdrecord -scanbus" で表示された3個の数字だ。6.1-i386.iso が書き込む CD イメージ。
非常に簡単だが将来はブート可能の CD-ROM 作成なども紹介したい。
パソコンや OS が増えると同じだけホームディレクトリが増える。そんな環境でホームディレクトリを共有する方法を述べよう。基本的な条件はホームディレクトリを共有するためにサーバにホームディレクトリがあり、samba、nfsクライアント/nfsサーバがインストールされていることだ。Windows とドライブを共有するためには smb プロトコルを使用し、Linux でディレクトリを共有するには tcp/ip で nfs を使用する。セキュリティの観点からサーバはファイアウォールの内部に置き tcp wrapper の使用を薦めます。設定例とともにその方法が述べられているが、別の機会に改めて紹介しよう。
複数の人間でソースファイルを管理するにはそれぞれが使用中のファイルを上書きしないように注意しなければならない。ディレクトリが少なければ Revision Control System (RCS) で充分だが開発環境が複数のコンピュータに及んだりネットワークを利用するようになると Concurent Version System (CVS) が必要になる。今月は Secure Shell (ssh) を利用した方法について説明する。来月はそれを使ってリポジトリのインポート、アップデート、リポジトリの登録などについて述べる。
export CVS_RSH=ssh
export CVSROOT=repository@repository_home:/home/repository/cvsroot
SSH を使えば安全なネットワークを組むことができる。今後機会があればその設定なども紹介しよう。
このシリーズの最後としてとても便利な例を紹介しよう。mySQL を使ったオンラインのブックマーク作成だ。php3 のコードを書く前に mySQL のテーブルを作成しなければならない。mySQL のデータベースを操作するにはいくつか方法がある。
今回の使用例の設定は次の通りだ。
データベースホスト: myserver
ユーザネーム: myusername
パスワード: mypassword
データベース名: mydatabase
テーブル名: bookmark
bookmark テーブルの項目名: id,
url, description
データベースが運用できるようになったらコーディングの例を示そう。
<HTML> <head> <title>Anderson's bookmark</title> </head> <body bgcolor=white> <form ACTION="sendbook.php3" METHOD="Post"> <center><p>Enter The Bookmark Title:</font> <input TYPE="text" SIZE="40" NAME="description"> </p> <center><p>Enter The Bookmark URL:</font> <input TYPE="text" SIZE="40" NAME="URL"> </p></center> <p><input TYPE="Submit" VALUE="Check"><br> </form> <a href="book.php3">View Bookmarks</a> </body> </html>
次の例は mySQL データベースをオープンしHTML フォームからデータをデータベースに送る。
<?php
//もし項目が空白の場合はデータを送信せずにエラーメッセージを返す
if(!($description=="") || !($URL==""))
{
//データベースサーバに接続する
mysql_connect(myserver, myusername, mypassword);
//データベースに接続
mysql_select_db('mydatabase');
//ブックマークテーブルに挿入するコマンド
mysql_query("insert into bookmark(description, URL) values ('$description', '$URL')");
//データベースの接続を終了
mysql_close();
//データが挿入されたらブラウザで表示
echo "Thanks for adding the bookmark<br>";
echo "<a href=book.php3>View BookMraks</a><br>";
echo "<a href=sendbook.html>Add Another One</a><br>";
}else{
echo "You need to go to the form: <a href=sendbook.html>Sendbook</a>";
}
?>
次のスクリプト、book.php3 は データを検索して表示する。
<? echo "<HTML>"; echo "<HEAD><TITLE>Afsilva's Bookmark</title></head>"; echo "<body bgcolor=white>"; echo "<IMG SRC=bookmark.jpg><br><br>";
//データベースサーバに接続
mysql_connect(myserver, myusername, mypasword);
//データベースに接続
mysql_select_db("mydatabase");
//データベースのすべての項目を検索
$result = mysql_query("SELECT * FROM bookmark");
//mysql_num_rows() は該当するブックマークの数を返す $rows = mysql_num_rows($result); echo "Number of bookmarks:"; //レコード数を表示 echo $rows; echo "<br><br>"; $i=0; echo "<a href=sendbook.html>Insert More BookMarks</a>\n<br><br>"; echo "<table border=1>";
//配列を使ってケリーにアクセス
//配列のインデックスはデータベースの項目名
while ($row = mysql_fetch_array($result))
{
echo "<tr><td>\n";
// " ." 演算子は文字列を結合
echo "<a href=".$row["URL"].">".$row["description"]."</a>\n";
echo "</td></tr>";
}
echo"</table>";
mysql_close();
echo"<a href=../index.html target=_top>";
echo "</HTML>";
?>
この3つのスクリプトでブックマークを運用することができるがここで止まらずに自分のブックマークアプリケーションをより良いものにして下さい。これはゲストブックやカウンタなどにも応用できます。筆者への後意見や質問は遠慮なく afsilva@liberty.edu, までどうぞ。
人工知能に関しては意見が別れることが多いがこの記事はそのコンピュータに関連する側面に視点を限ってきた。つまり空を飛びたければ鳥の研究をするのではなく飛行機に乗ってしまえばいい。
人工知能構築のためのツールとして選んだのは Prolog だ。 SWI Prolog ( www.hio.hen.nl/faq/SWI-Prolog.html) を使う。Prologは非常に柔軟で強力だ。その上論理的である。Prolog のプログラムは事実と一連のルールからなる。事実はナレッジベースというファイルに保存される。ルールはプログラムだ。
実際に簡単な図とそのリストを示してPrologの説明をしており、グラフサーチのプログラムを走らせることもできる。
人工知能の構築にはその他のアルゴリズムも利用されている。誰でもが応用できるような例を紹介しているが、エキスパートシステム、ロボット、ファジーなどその応用範囲は広い。