明日はエイプリルフールだ。何が起こっても信じてはならない(^^;)例えば、.NETのUnix上での開発をPerlコミュニティが担当するとか、Parrotが.NETのCLRに統合されるとかだ。まあ、明日が楽しみ(^^)
そう言えばこんなのが出ているけど、The Shared Source CLI Beta。FreeBSD4.5でインストールしてみるのは乙なものかもしれない。ただ、手早くコンパイルするためにはメモリが512MBぐらいのマシンが欲しいらしい。コードネームをRotorという。VMwareにFreeBSDをインストールして動かしてみるかな(^^)重そうだけど(^^;)
Opening Up the PlayStation 2 with Linuxという記事にMaelstromというゲームがPS2Linuxに容易に移植されているという話が出ている。仕事が速いね。
最近、JabberというXMLメッセージングP2Pシステムを使ってみたが、まだ使いこなせない(^^;)クライアントとサーバーとPerlで書いたエージェントを同時に動かしたりするんだけど、なんとも使い勝手が複雑怪奇だ。もっと整理した形のアプリケーションにまとめないと普及しないのではと思う。XMLメッセージングという言葉は魅力的な響きだが・・・Jabberという文字がロジテックのハブの接続状態を示すランプのそばに刻まれていた。Jabberは何の略語かと思っていたが、意味のある単語だった。「ぺちゃくちゃしゃべる」っていう意味。元々P2Pでチャットをするためのアプリケーションだから当然の用語なのだ。Perlで書かれたRSSニュースリーダーのエージェントがあったりするので、そそられるアプリでもある。
本は最近も山ほど買っているが、久しぶりに物理関係の書籍を買った。ポピュラーサイエンスの本。「エレガントな宇宙」ブライアン・グリーン著、林一、林大訳、草思社、2002年2月6日第9刷(2001年12月25日第1刷)、574ページ、2200円。超ひも理論の解説書。科学ライターではなく、研究者自身が書いているが、読みやすくてわかりやすい。まだ最初のほうしか読んでないけど、お勧めの予感がする(^^;)これが最終理論になるのだろうか。ペンローズのツイスター理論はどうなるのだろう。お楽しみはもう少し先に取っておきたい(^^;)
ArrangeNoteに保存したブックマークメモのデータをブックマーク記述言語「XBEL」に基づいて出力するJavascriptを掲載したページを作った。
Windows XPの載った新マシンへ移行するために環境を移し始めた。まずはマシンの位置を交代。正面にDimension 4300Sを置いた。最近コマーシャルでDELLが「時代が要求する価格を実現?」と主張しているマシンだ。確かに安い割りにスペックは良いので、メインにしないともったいない。テスト的にインストールしてみたVMware、AirWEBに続いて、ようやくDana、ArrangeNote、Python for Win32-JP、ActiveTcl、ActivePerl、ActiveScriptRuby、スクリプト・HTML・XML類、Becky!2、Cygwin、Cygwin版Ruby、Parrotとインストールした。AirCraft以外で日常的に使うものはほぼ移した。
ついでにParrotの記録を残しておこう。無論Cygwinが必要だ。インストールにはcvs.perl.orgのanonymous cvsを使う。/usr/localのディレクトリでcvsを実行すれば、/usr/local/parrotにインストールされる。続いて、cd parrot、perl Configure.pl、make、make testでOK。make testの結果を次に載せておこう。
jscripter@DELL2 /usr/local/parrot $ make test perl t/harness t/op/basic..........ok t/op/bitwise........ok t/op/debuginfo......ok t/op/hacks..........ok t/op/ifunless.......ok t/op/integer........ok t/op/interp.........ok t/op/macro..........ok, 1/9 skipped: Await exceptions t/op/number.........ok t/op/rx.............ok, 2/27 skipped: various reasons t/op/stacks.........ok, 1/15 skipped: Await exceptions t/op/string.........ok t/op/time...........ok t/op/trans..........ok t/pmc/array.........ok, 1/1 skipped: Wait until this works t/pmc/perlarray.....ok, 5/5 skipped: Arrays need a little rejigging t/pmc/perlhash......ok, 8/8 skipped: No tests for things we know don't work quite yet t/pmc/perlstring....ok, 1/8 skipped: Pending new version of concat_p_p_s t/pmc/pmc...........ok, 1/56 skipped: string->int not finished yet All tests successful, 20 subtests skipped. Files=19, Tests=313, 219 wallclock secs (113.13 cusr + 123.13 csys = 236.26 CPU)
新マシンのmops・・・
jscripter@DELL2 /usr/local/parrot/examples/assembly $ ../../parrot mops.pbc Iterations: 100000000 Estimated ops: 200000000 Elapsed time: 7.145912 M op/s: 27.988030
CPU動作周波数比、1.6GHz/266MHz程度のスピードアップだ。リーズナブル(^^)
CLR(Common Language Runtime)としてのニュースはcolaというC#に似た言語が登場し、Basicが発表されたことだ。Basicについてはperl6-internalsのメーリングリストを読むこと。
News for TS Networkにも昨日書いたが、ようやく出た。お正月の0.0.3では出来上がったバイナリの名前はtest_parrot.exeだった。0.0.4はparrot.exeとtestがはずれた。バージョン表示も可能だ。こんな具合・・・
$ ./parrot -v This is parrot version 0.0.4-devel built for i386-nojit Copyright (C) 2001-2002 Yet Another Society. All Rights Reserved. Parrot may be copied only under the terms of either the Artistic License or the GNU General Public License, which may be found in the Parrot source kit. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See either the GNU General Public License or the Artistic License for more details.
恒例のmops・・・
$ ../../parrot mops.pbc Iterations: 100000000 Estimated ops: 200000000 Elapsed time: 48.748261 M op/s: 4.102710 $ /bin/perl mops.pl Iterations: 100000000 Estimated ops: 200000000 Elapsed time: 359 M op/s: 0.557103064066852 $ ruby mops.rb Iterations: 100000000 Estimated ops: 200000000 Elapsed time: 441.919021 M op/s: 0.4525716036 $ python mops.py Iterations: 100000000 Estimated ops: 200000000 Elapsed time: 348.396916986 M op/s: 0.574057892735
Cygwin上のテスト。既存のスクリプト言語の10倍近く速くなるわけだ。
ニュースのXML化をネタにして始まったXMLのお勉強もいよいよ佳境に入ってきた。まだまだと思いながらもそろそろ乗り遅れないようにと考えたのだが、タイミングは良かった。Semantic Webをかき分けて調べていくと完成度の高い目新しいツールがいろいろと出てくる。RDFの構造を2Dグラフでビジュアルに表示するIsaViz RDF Editor、知識ベースを開発するためのProtege-2000、XMLでメッセージングするJabberなどだ。Semantic Webの新しい世界の胎動のようにも感じられる。JabberはP2Pのコミュニケーションツールだけに最もおもしろそうだ。O'REILLYからProgamming Jabber(DJ Adams)が今年1月に出ているぐらいで、注目度は既に高い。セキュリティ機能を付加してビジネスに応用しようという動きもある。XMLメッセージングを拡張することによってこれまでにない複合的な新しい形態のコミュニケーションを生み出す可能性がある。
Business Weekの3/4号の特集はTHE NEW WEB。Semantic WebがBusiness Weekの特集になる時代に突入した。WWWの発明者であるTim Berners-Leeが主役だ。内容的にはTimが共にW3Cを設立したダートウゾスLCS所長の「The Unfinished Revolution」(以前紹介した「ダートウゾス教授のIT学講義」)と同じ。Semantic Webは元々Tim Berners-LeeのWWWを結んで頭脳にするという初期の構想としてあるもので徐々に姿を現しつつある。キーワードとして上げられているのは 当然まずXML、そしてRDF、ontologyだ。RDFの初期の成果として上げられるのが、最近TS Networkのニュースの配信で取り上げたRSS 1.0である。単にXMLをHTMLに変換するというテクノロジーを追い求めるだけでは皮相な結果に終わりかねない。RDFは奥が深いし、ontologyへの理解も必要だ。もう少しその深みに嵌ってみたいと考えるこの頃である。最終的にはA.I.の要素が絡むはずだし、この記事に取り上げたリンクにはTHE NEW WEBにおける新しい脈動が感じられる。じっくりと探索してみる価値がある。
・・・という不思議な現象が起きている。index.htmlで来訪者数をカウントするのは望ましくないなあ。さてどうしようか。よく考えてみよう(^^;)
トム・クランシーの最新作「大戦勃発」が出た。全四巻で、まずは二巻まで。早速買ってきたが、やはりトム・クランシーの文体だ。翻訳でもそれは伝わってくる。最近は、マーティン・グリーンバーグやスティーブ・ピチェニックとの共著が多いのだが、クランシーとは何か違うと感じてしまう。さて、本物のクランシーでしばらく楽しめそうだ。
XMLをベースとしたニュース配信の検討において、まずXML/XSLをブラウザで直接表示するという試みを行った。この方法はブラウザがIE6に限定されてしまうと問題がある。従って現状ではXMLはHTMLに変換してサイトにアップロードする必要がある。XML/XSLからHTMLに変換するためにPerlのXML-XSLTモジュールを使用してみた。これはgnomeのlibxsltライブラリを使用するため、Windows上ではCygwin環境を利用する必要がある。このPerlのモジュールは高速に動作して快適である。
現在はXMLのタグセットに標準化されたものを使ってみようと(Rich|RDF) Site Summaryの採用を検討中である。RSSで記述したファイルをサイトにアップロードしておけばFeedreaderのようなRSS Readerを使用して読むことができる。しかし、このようなリーダーは大変便利だが普及度は現時点では極めて低いと言わざるをえないし、ブラウジングもその実装に束縛されてしまう。やはりここはPerlのXML-RSSモジュールを使った自前のスクリプトでHTMLに変換してしまおう。このモジュールはWindows上のActiveStateのPerlでも使用可能である。次にRSS 1.0で書いたニュースファイルとHTMLに変換するスクリプトを載せておこう。HTMLに変換したものはNews for TS Network(Test)である。
まずはRSS 1.0で書いたts_news_sjis.rdfである。ポイントはsjisで書く場合にはencodingを"x-sjis-cp932"としておくこと。これはXML-RSSモジュールを使用する場合の制限である。
<?xml version="1.0" encoding="x-sjis-cp932"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://purl.org/rss/1.0/" > <channel rdf:about="http://homepage1.nifty.com/kazuf/ts_news.rdf"> <title>News for TS Network(Test)</title> <link>http://homepage1.nifty.com/kazuf/</link> <description>インターネット発展の流れの中で、PCのさらなる活用を目標に、スクリプト言語、XMLやHTMLを自由自在に加工するテキスト処理、それに関連する技術・話題、加えてパーソナル・コンピューティングに関わる最先端の話題を捉えようという試み。</description> <image rdf:resource="http://homepage1.nifty.com/kazuf/gif/ts_network_logo_an.gif" /> <items> <rdf:Seq> <rdf:li resource="http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html" /> <rdf:li resource="http://bricolage.thepirtgroup.com/" /> <rdf:li resource="http://homepage1.nifty.com/kaityo/copalpro/index.html" /> </rdf:Seq> </items> </channel> <image rdf:about="http://homepage1.nifty.com/kazuf/gif/ts_network_logo_an.gif"> <title>For TS Network</title> <link>http://homepage1.nifty.com/kazuf/</link> <url>http://homepage1.nifty.com/kazuf/gif/ts_network_logo_an.gif</url> </image> <item rdf:about="http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html"> <title>Javaが正規表現によるパターンマッチングをサポート [2002/02/17]</title> <link>http://java.sun.com/j2se/1.4/docs/api/java/util/regex/package-summary.html</link> <description>use Perl;の記事、Java finally catches up to Perl (and Python, Tcl)http://use.perl.org/articles/02/02/14/228223.shtml?tid=35から。Java2SE v.1.4.0では、正規表現による文字列のパターンマッチングができるようになった。パッケージはjava.util.regexである。以前はサードパーティのサポートはあったが、正式なサポートはJavaでテキスト処理をする場合には朗報だろう。SyntaxはPerlに似ていて上位互換のようだが、だいぶ違う仕様の部分もあるようなので注意はしたほうが良い。使い方はPythonに似ているので、Perlのようにテキスト処理を簡潔には書けない。</description> </item> <item rdf:about="http://use.perl.org/articles/02/02/21/1827237.shtml?tid=10"> <title>Bricolage-Devel 1.3.0 リリース [2002/02/24]</title> <link>http://bricolage.thepirtgroup.com/</link> <description>use Perl;の記事。BricolageはPerlで書かれたオープン・ソースのコンテンツ・マネジメントシステム。ブラウザーベースのインターフェースを持ち、HTML::MasonとApache/mod_perl、PostgreSQL RDBMSを使用する。開発版で1.2.1のバグフィックスと1.4.0のSOAPサーバー機能の実装を目的としている。</description> </item> <item rdf:about="http://homepage1.nifty.com/kaityo/copalpro/index.html"> <title>スクリプト開発環境Copal2登場 [2002/02/26]</title> <link>http://homepage1.nifty.com/kaityo/copalpro/index.html</link> <description>海鳥さんのスクリプト開発環境Copalの2000/NT対応版がCopalproとして登場。実行速度も改善されたそうだ。ページの最後にある「開発よもやま話」も是非読もう。</description> </item> <item rdf:about="http://www3.ocn.ne.jp/~yamako/ArrangeNote/index-j.html"> <title>ArrangeNote Ver. 1.1.10 公開 [2002/02/28]</title> <link>http://www3.ocn.ne.jp/~yamako/ArrangeNote/index-j.html</link> <description> ----- Ver. 1.1.10 での変更点 ----- - ArrangeNoteヘルプに「オプション・環境設定」の説明を追加。 - 以下のバグを修正。 *メモ一覧で切り取りしても、アイコンの色が切り取り状態にならない。 *メモ一覧でメモの表題を編集していると、表題のエディタが消える場合がある。 *ツールバー・メニューバーが描画更新されない場合がある。 *Altキーを押下してもメニュートラッキングがキャンセルされない。 *メニュートラッキング中にIMEのウィンドウがメニューバーで開いてしまう。 *メモのエディタで↓や[EOM]のゴミが残ってしまう。 </description> </item> </rdf:RDF>
次に変換用Perlスクリプト。XML-RSSモジュールを使用すると出力はUTF-8となるので、jcode.pmでsjisに変換して出力するようにしている。整形の独自仕様としてはitemのdescriptionで記事の部分は、改行があれば<br>を挿入し、"^\s*[*]"にマッチすれば、リスト表示をするように整形する。また、URLが書かれていればリンクを張る。デザインはrss2html.plからもらっている。
use Jcode; use XML::RSS; my $rss = new XML::RSS; $rss->parsefile("ts_news_sjis.rdf"); print <<EOM; <HTML> <HEAD> <TITLE>$rss->{'channel'}->{'title'}</TITLE> <META HTTP-EQUIV="Content-Type" content="text/html; charset=Shift_JIS"> </HEAD> <BODY TEXT="#FFFFFF"> <table bgcolor="#000000" border="0" width="600"><tr><td> <TABLE CELLSPACING="1" CELLPADDING="4" BGCOLOR="#000000" BORDER=0 width="100%"> <tr> <td valign="middle" align="center" bgcolor="#EEEEEE"><B><a href="$rss->{'channel'}->{'link'}"><font color="#006400" face="Arial,Helvetica">$rss->{'channel'}->{'title'}</font></a></B></td></tr> <tr><td> <center> <p><a href="$rss->{'image'}->{'link'}"><img src="$rss->{'image'}->{'url'}" alt="$rss->{'image'}->{'title'}" border="0"></a></center><p> <ul> EOM foreach my $item (@{$rss->{'items'}}) { $lmatch = 0;$item_description = ""; @dlines = split(/\n/, $item->{'description'}); foreach $dline (@dlines){ $dline =~ s/([^<"])(http:\/\/[\/\w\d\s\.:\?=\-\+\&\%\$\#]+)([^\/\w\d\s\.:\?=\-\+\&\%\$\#])/$1<a href="$2"><font color="#ffffff">$2<\/font><\/a>$3/g; $dline =~ s/^([\s\-]+[^\*\s].+)$/$1<\/br>\n/; if(($lmatch > 0) and ($dline !~ /^\s*[*]/)){ $dline .= "</ul>\n"; $lmatch = 0; } if($dline =~ s/^\s*[*]([^\s*]+)$/\t<li>$1\n/){ if($lmatch == 0){ $dline = "<ul>\n$dline"; } $lmatch++; } $item_description .= $dline; } if($lmatch > 0){ $item_description .= "</ul>\n"; } print jcode("<li><a href=\"$item->{'link'}\"><font color=\"#ffffff\">$item->{'title'}</font></a>\n<p>$item_description</p>\n")->sjis; } print <<EOF; </ul> </td> </TR> </TABLE> </td></tr></table> </BODY> </HTML> EOF
参加者が急激に増加しつつある。50名を越えてよかったなあと思ったら、今日は60名を越えている。インターネット上でスクリプト言語とテキスト処理の新たなコミュニティを作る作業はまだ緒についたばかりだが、まずは参加者が増えて活性化することが前提である。
今やテキスト処理の対象はHTMLであり、XMLである。これはインターネット自体がテキスト処理の対象であるということだ。スクリプト言語は最も広大な世界を取り扱うツールとなった。ツールは高性能かつありがたいことにフリーである。個人は望めば、情報処理能力を極限まで拡大することが可能な時代だ。XMLは単なるマークアップ言語ではない。拡張可能であることによってプログラミング可能になった言語である。しかし、その使い方は拡張可能であることによって混沌とした状況になっているようにも見える。取り扱い方もあらゆる方法が提案されていて、それも混沌としている。スクリプト言語はその状況を改善するキーワードになるだろう。TS Networkが今後のインターネットという大海を航海するための羅針盤となれればと思う。