tsnetworkc3.png更新日記

更新日記インデックス
更新日記インデックス2001年版
Monthly Index
1/27/2002

今朝は娘を英検の試験に鈴峯まで車で連れて行った。帰りの時間まで待つこと約二時間、井口のサンデーサンと中央書店で過ごした。モーニングトーストセットとセルフサービスのドリンクでネットランナー2月号の自宅サーバー運営マニュアルをじっくり読んでコーヒー3杯目を飲み終えると中央書店に移動。文芸春秋創刊80周年記念二月特別号に立花隆が「地獄の黙示録」22年目の衝撃を書いているのでしばらく立ち読み、結局ゲットすることに・・・時間があるのでスイング・ジャーナルなどご無沙汰の雑誌を立ち読み、トム・クランシーやSF関係などコンピュータ関連以外をじっくり調査。結局、グレッグ・イーガンの「宇宙消失」と「祈りの海」をさらにゲット。グレッグ・イーガンは「順列都市」で注目していた作家、J.P.ホーガンと同様、ハードSF系の作家だが読ませるね。最近は忙しくて最後まで読みきる小説というのは少ない、積読にならないように・・・「順列都市」もホーガンの「ミクロ・パーク」もまだ読み掛けだ。アシモフなきあと、読むべき作家が一人増えたのはうれしい。

1/23/2002

昨年末にリリースされたα2を動かしてみた。我が愛機にはちと荷が重いが動いた。Project: KDE on Cygwin File Listから次のものをダウンロードしてインストールしよう。

binutils-20011126.tar.bz2
libtool-2001-12-14.tar.bz2
perl-5.6.1-p1.tar.bz2
perl-5.6.1-p2.tar.bz2
kdebase-2.2.1-a2-u1.tar.bz2
kdebase-2.2.1-a2.tar.bz2
kdegames-2.2.1-a2.tar.bz2
kdelibs-2.2.1-a2-u2.tar.bz2
kdelibs-2.2.1-a2-u3.tar.bz2
kdelibs-2.2.1-a2-update1.tar.bz2
kdelibs-2.2.1-a2.tar.bz2
startkde

kde2_s.pngWindows2000上のKDE2.2.1 on Cygwin α2

デザインは当然、1.1.2よりは良いがはるかに重い。高速のPC環境で使うことが前提だ。WebブラウザのKonquerorはまだ起動しなかった。焦らずβになるまで待ったほうが良いかもしれない。

1/17/2002

本サイトにリンクを張っていただいたページを発見(^^)このサイトのリンク集は凄い!必見

1/14/2002

XSLTプロセッサはいろいろあるようだが、Sablotronが紹介されている本を読んだので試してみた。既に0.80が出ており、Perlから制御するためのモジュールもあるが、残念ながら、Win32版は不完全な出力しか得られなかった。特にgenerate-id()関係がおかしいし、害はないが含まれない項目が出力されたりする。スクリプト言語が関連するツールに興味があるので、CPANをXSLTで検索して探してみた。XML-LibXSLTというのがxmlとxslからhtmlを出力できるモジュールのようだ。このモジュールはXML-LibXMLも使うのでそちらもゲット。これはGnomeのXML C libraryであるlibxmlもインストールする必要があるので、Cygwinにインストールすることにする。結局、



をインストールする。Cライブラリは、./configure、make、make installで、Perlモジュールは、perl Makefile.PL、make、make installでインストールする。

次のようなPerlスクリプトがhtmlを出力する。これってSYNOPSISそのままだけど(^^;)出力をIE6で読み込むとxmlとxslの場合とまったく同じ結果が得られる。素晴らしい。入力がShift_JISでも出力はUTF-8になる。

use XML::LibXSLT;
use XML::LibXML;

my $parser = XML::LibXML->new();
my $xslt = XML::LibXSLT->new();

my $source = $parser->parse_file('ts_news2.xml');
my $style_doc = $parser->parse_file('ts_news2.xsl');

my $stylesheet = $xslt->parse_stylesheet($style_doc);

my $results = $stylesheet->transform($source);

print $stylesheet->output_string($results);
1/12/2002

ニュースの更新を開始した。当面、XML/XSL版だけだが、HTML版にも拡大していく予定。XML/XSL版はXMLについてのノウハウを獲得するための実験のようなものだが、プログラミングとしても結構おもしろい。IE6しか読めないのが難点だ。NN6.2で読めない。XMLからHTMLを自動生成してアップロードするようなスクリプトを書いてHTML版は作る予定。XMLデータ作成ツールが問題。それからニュース・データのフォーマットをどうするのかという問題もある。インターネットを探すと、

News Industry Text Format

がおもしろそうだ。貴重なプロのデータに溢れているサイト、プロのフォーマットはさすがに万能だ。

1/6/2002

ちょっと英語のお勉強。

おもしろそうな話。マークしよう。

The Open Hyperdocument System Home Page

ニュース関係は更新日記にすべて移行しているが、昨年五月で更新の止まっていたニュースページをXML化で蘇らせようというプロジェクトにしてしまおう(^^)・・・ということで、まずはタイトルリストを作って各記事へのリンクを張るにはどうすればよいか。generate-id()関数を使う。これはノード毎に一意で決まるidを出力する関数である。記事毎のノード(/ts_news/news)のidを使ってタイトルリスト側から記事にハイパーリンクを張ればよい。xslは次のようなものになる。

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="html" encoding="Shift_JIS" doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN" doctype-system="DTD/xhtml1-strict.dtd" />
	<xsl:template match="/">
		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
		<head>
			<title>News on TS Network</title>
			<link href="ts_news2.css" rel="stylesheet" type="text/css" />
			<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
		</head>
		<body>
			<p><i><b>News on TS Network</b></i></p>
			<hr />
			<p><i><b>Table of Contents</b></i></p>
			<ul>
				<xsl:for-each select="ts_news/news">
					<li><a>
						<xsl:attribute name="href">
							#<xsl:value-of select="generate-id()"/>
						</xsl:attribute>
							<xsl:value-of select="title"/>
						</a></li>
				</xsl:for-each>
			</ul>
			<hr />
			<xsl:for-each select="ts_news/news">
				<p><div class="title"><a>
					<xsl:attribute name="name">
						<xsl:value-of select="generate-id()"/>
					</xsl:attribute>
						<xsl:value-of select="title"/>
				</a></div></p>
				<p><div class="source"><xsl:value-of select="source"/></div></p>
				<p><div class="date"><xsl:value-of select="date"/></div></p>
				<p><div class="content"><xsl:value-of select="content"/></div></p>
			</xsl:for-each>
		</body>
		</html>
	</xsl:template>
</xsl:stylesheet>

なかなかおもしろい。もう少しXMLの詳細について書かれた本が欲しいものだ。まだ、規格が確定していないことやブラウザに実装されていない機能も多いことから良いテキストが出にくいのかもしれない。

1/4/2002

お正月休みも終わりだ。さて、年越しはParrotではじまりParrotで終わろうとしているが、気になっているXMLを取り上げよう。XMLは確かにデータを使いまわすためには有効な方法論だろう。テキスト処理フリークにとってはどのようなデータでも如何様にでも変換してしまうというのが得意技であるので、別にインプットはXMLである必要もないかもしれない。しかし、XMLでWebページを書けば、データと表現を分離できるというのは魅力ではある。HTMLはCSSを使ったとしても完全に表現を分離できない。どうすればxmlファイルをWebブラウザで表示できるのだろう。それが疑問だ。XSLTという言葉は知っていても具体的に試したことはない・・・・・よく調べると、うーん、これってXML2HTMLコンバータ、それじゃあまりおもしろくないね。xmlファイルをそのまま表示させたい。すると結局cssを使うということらしい。へーっ、そうなのか。それは知らなかった。(・・・その後、xslを使って表示可能であることがわかったが、IE5.5ではうまく表示できない。インプレスの「実例で学ぶXML」を推薦したが、さすがに情報が古くなっている。やはり新しいものを選ぶのがよい。私が持っているものなら秀和システムの「XMLツールキット」は新しくて、例が豊富だ。他にも探せばいろいろな本がありそうだ。)

まず、ts_news.htmlのニュースデータをXMLに変換して取り出すスクリプトを書いた。まだ適当だから、IEに読み込ませてエラーにならないレベルまでスクリプトを修正していく。IEはエラーの位置を表示するXMLのデバッガとして使える。最後に問題になったのはURLに含まれる&だ。取り合えず、&amp;に置換したが、URLとして使いたい場合はどうするのだろう。まあ、それは次の課題としておこう。出来上がったts_news.xmlはこんな具合だ。

<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet href="ts_news.css" type="text/css"?>
<ts_news>
	<news>
		<title>Apocalypse 2 by Larry Wall May 3, 2001</title>
		<source>http://www.perl.com/pub/2001/05/03/wall.html</source>
		<date>2001/5/4</date>
		<content>
黙示録第2弾。
		</content>
	</news>
...
</ts_news>

それから、cssを適当に書いてみた。

ts_news
{
	font-size: 10pt;
	matgin: 5px;
}

ts_news, news, title, source, date, content
{
	display: block;
	margin-bottom: 10px;
}

title
{
	font-size: 12pt;
	font-style: italic;
	color: blue;
	background-color: silver;
}

こんな具合に見えるようになる。問題はXSLTで実現できるようなもっと複雑なインテリジェントな表現をしたい場合、例えば記事タイトルのリスト表示を加えるとかしたい場合はどうするのかということだ。もう少し調べよう。

xml/xslをIE5.5で試したが、表示されない。秀和システムの「XMLツールキット」のサンプルも表示されないのでどうしようもないなと、Googleで検索してみたが、特にそのような報告もないようだ。仕方ないので、IE6をインストールしてみると表示されるようになった。原因不明のままだ。XMLツールキットにはIE5.5が同梱されているのに・・・取り合えず、いつも取り合えずだが、cssの表示と同等レベルにまでなるようにxslを書いてみた。

<?xml version="1.0" encoding="Shift_JIS" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
	<xsl:output method="html" encoding="Shift_JIS" doctype-public="-//W3C/DTD XHTML 1.0 Strict//EN" doctype-system="DTD/xhtml1-strict.dtd" />
	
	<xsl:template match="/">
		<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
		<head>
			<title>News on TS Network</title>
			<link href="ts_news2.css" rel="stylesheet" type="text/css" />
			<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
		</head>
		<body>
			<xsl:for-each select="ts_news/news">
				<xsl:sort select="date" order="descending" />
					<div class="title">
					<p><i><xsl:value-of select="title" /></i></p>
					</div>
					<div class="source">
					<p><xsl:value-of select="source" /></p>
					</div>
					<div class="date">
					<p><xsl:value-of select="date" /></p>
					</div>
					<div class="content">
					<p><xsl:value-of select="content" /></p>
					</div>
			</xsl:for-each>
		 </body>
		 </html>
	</xsl:template>

</xsl:stylesheet>

意図通りに動かすのには結構慣れる必要がありそうだ。cssも併用しているが、表示はフォントの種類が違っているだけだ。

div.title, div.source, div.date, div.content
{
	font-size: 10pt;
	display: block;
	matgin: 5px;
	margin-bottom: 10px;
}

div.title
{
	font-size: 12pt;
	font-style: italic;
	color: blue;
	background-color: silver;
}
1/3/2002

よく考えてみるとおかしい。出来上がっているParrotの名前がtest_progのままだし。フォルダの種類も昔のままだ。CVSでの更新がうまくいっていないのか、PS2 Linuxの作業と混同してしまったか。再度CVSの更新をしてみるとフォルダも増えた。だが、Configure.plで山ほどエラーが出る。Configure.plの中味を覗くと、作業の途中で止まったようなファイルだ。書き換えのためのマークが入っていて、Perlのスクリプトとしてはエラーが出るのが当然だ。Cygwinではファイルシステムが特殊になるし、ルートにparrotのフォルダを作っているのがまずいのかもしれない。どうも/usr/localに置くのを想定して動いているようなメッセージも出るので、/usr/localにcdしてCVSからやり直し。これでmake testまですべてうまくいった。

$ ../../test_parrot mops.pbc
Iterations:    10000000
Start time:    1010028433.955000
End time:      1010028439.432000
Count:         10000000
Elapsed time:  5.477000
Estimated ops: 30000000.000000
Elapsed time:  5.477000
op/s:          5477451.161301
Mop/s:         5.477451

jako.pasmをアセンブルする際に必要なPerlライブラリは-Iオプションでなぜか付加できない。結局、/lib/perl5/site_perlにPerlライブラリの入ったParrotフォルダをコピーして動かした。エラーメッセージを見ると@INCには/lib/perl5/site_perlが/usr/lib/perl5/site_perlとして入っているみたいだ。これもインストールの場所が悪いのかも・・・PS2 LinuxよりもCygwinのほうが多少速いかな。

Parrotについてはちょっと古いがSimon CozensのParrot : Some Assembly Requiredを読むと大体わかる。Simon Cozensはエイプリルフールの張本人。今年はネタに苦労するだろう。jakoについての説明も僅かだがある。最新の情報はParrot examplesを参照。

1/2/2002

元旦の雨から一転して雪。お正月らしくなった。道路の上まで降り積もっている。今日はゆっくりしよう。

Linuxでは日本語環境が不自由なのでというか、エディタもDanaが使えないし(^^;)使いこなすのが面倒なので、それでいつまでたっても使えないのだが、再度Cygwinに挑戦。要は、新しいバージョンを試すだけなんだけど(^^;)最新バージョンの1.3.6をセットアップすると、あっけなく./Configure.plも正常に動いた。makeも無事終了。できあがったフォルダの種類や実行形式のプログラムの名前が大分Linuxとは違うんだけど・・・結局、正常にjakocでコンパイルして、assemble.plでバイトコードにアセンプル。バイトコードインタープリタも正常に動いて完了。

#
# helloj.jako
#
# ObHW
#
# Copyright (C) 2001 Gregor N. Purdy. All rights reserved.
# This program is free software. It is subject to the same
# license as Perl itself.
#
# $Id: hello.jako,v 1.2 2001/09/17 12:51:27 gregor Exp $
# Modified by Kazuo Fujioka
#

print("ハローワールド!\n");
end;

試したかったのはShift_JIS日本語が通るかどうか。初めて書いたjakoのプログラム(^^;)Win32コンソールのbashでは当然か見事にハローワールド!が表示された。

1/1/2002

旧年中はいろいろとお世話になりました。本年もよろしくお願いいたします。昨年最後の記事はParrot関係です。新年のページに早く更新し過ぎたので、12月分の更新日記を是非読んでください。

元旦は朝方は雨が降っていたが昼から雨が上がったので日が落ちる前に女房と歩いて恒例の毘沙門天参り。人出が例年より少ない感じだ。新しい年の無事を祈って御神籤を引いた。多宝塔まで細い道を登ると少し霞がかっているが広島市内への眺望が素晴らしい。南に遠く高層のリーガや瀬戸内の海も識別できる。午後4時になると太陽の高度が低くなっている。破魔矢を求めて帰宅の途に。つるべ落としで沈んでいく日、燃えるような鮮やかなオレンジ色が白い雲に映えて美しい。

Parrotのlanguagesディレクトリにはjakoとminiperl、schemeのサブディレクトリがある。jakoはParrot上で動くことを意図した最初の言語である。このディレクトリだけにサンプルがある。jakocというのがコンパイラ。jakoのソースをParrotアセンブラに変換することができる。それをバイトコードにアセンブルして、Parrotで実行する。次のような具合だ。

[root@ps2linux jako]# pwd
/root/parrot/languages/jako
[root@ps2linux jako]# ./jakoc mops.jako > mops.pasm
[root@ps2linux jako]# perl -I../../ ../../assemble.pl mops.pasm > mops.pbc
[root@ps2linux jako]# ../../test_parrot mops.pbc
Iterations:    10000000
Start time:    1009880651.775667
End time:      1009880657.951470
Count:         10000000
Elapsed time:  6.175803
Estimated ops: 30000000.000000
Elapsed time:  6.175803
op/s:          4857667.850285
Mop/s:         4.857668

Perl6がどのように動作するのかが垣間見えてきた。バイトコードにアセンブルすると圧倒的なスピードが得られる。既にスクリプト言語の範疇では捉えられない言語に変貌しつつある。Perl6を早く見てみたい。

フレームを利用してホームページのデザインを変更。トップに置いていた各ページへのリンクが使いにくいので、リストにしてフレームのページに移した。index.htmlをnewindex.html に変更してアクセスすること。

2001年12月分
2001年11月分
2001年10月分
2001年9月分
2001年8月分
2001年7月分
2001年6月分
2001年5月分
2001年4月分
2001年3月分

(c)jscripter
TS Network ☆ミ >>