ままならない日々を送る。
Rubyで遊ぶ。とりあえずcgi版のWebカウンターを書いてみたり。
rb2cを試してみる。例えば次のようなスクリプト:
def wait
sleep rand(15) / 10.0
end
Thread.start {
for i in 1..10 do
print "t1\n"
wait
end
}
for i in 1..10 do
print "y2\n"
wait
end
をCに変換してみる。ふーむ,ちゃんと動くやん。
nicolatterのテストのために,KDEをインストールする。しかし苦労する。日本語化パッチ当てるとコンパイルができない。何なんだ。
qtは,ソースの展開とパッチを当てた後,
$ cp src/kernel/qwidget.h include/qwidget.h $ cp src/kernel/qwindowdefs.h include/qwindowdefs.h $ cp src/tools/qglobal.h include/qglobal.hそして,次の行をinclude/qevent.hにQKeyEventクラスのpublicメンバとして追加。
QString text() const;
仕事を定時で切り上げて芦屋のスタジオに直行。ペダルの感触を掴んだような掴んでないような。
とりあえず80点までいった。でも思想が違う,きっと。
いろいろ買い物。
連結財務諸表関係でいい本が見つからず,それは先送り。
『羊たちの沈黙』の続編らしい。
follow-up(s): 2000.07.22
相変わらず女性voばっかり買っとるな。
XSLTで遊ぶ。過去の日記(例えば2000.04.16)にも書いたが,HTMLが予定していない構造の文書をWebブラウザで見たいからという理由で直接HTMLで記述するのは,記述したい文書の構造が自然に記述できないし,構造の情報が失われる恐れがあるので,上手くない。内部ではあくまで構造に即した形でデータを持っておき,表示するときにHTMLに変換するのがよい。
例えば次のようなXML文書をXSLTでHTMLに変換してみる。
<?xml version="1.0" encoding="utf-8"?> <article> <pa>はろはろXML</pa> </article>
で,XSLT文書:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="iso-2022-jp"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="/">
<html>
<head>
<title>XSLTのテスト</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="pa">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
</xsl:stylesheet>
XSLTプロセッサとしては
LotusXSLはhttp://xml.apache.org/のXalanと実質的に同じもの。
$ export CLASSPATH=.:/opt/lotusxsl_1_0_1/xalan.jar:/opt/lotusxsl_1_0_1/xerces.jar $ java org.apache.xalan.xslt.Process -in first.xml -xsl first.xslt -out out.html
XTの場合,XPも必要。
$ export CLASSPATH=.:/opt/xp/xp.jar:/opt/xt/sax.jar:/opt/xt/xt.jar $ java com.jclark.xsl.sax.Driver first.xml first.xslt out.html
で,こういうHTMLが出力される。エンコーディング(文字コード)もきちんと変換される。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <META http-equiv="Content-Type" content="text/html; charset=iso-2022-jp"> <title>XSLTのテスト</title> </head> <body> <p>はろはろXML</p> </body> </html>
XMLファイルから完全なHTMLファイルを生成するのも有効だけど,動的にページを生成するときなど,XMLファイルからHTML片を生成できればもっとよさそう。その辺はどうなんだろう。
触った感じとしては,次の場合に有用:
XSLTはあくまでも文書の変形であって,Webブラウザで見たときにある程度の見栄えを出すためにはCSSも書かないといけない。なので,XSLTを使う明確な理由がない場合には,単に手間が増える。
follow-up(s): 2000.05.12
今日はやや早い帰宅。9時ぐらい。
XMLファイルをEmacsでも編集したかったので,Mule-UCSを取ってくる。
インストール方法は,http://homepage1.nifty.com/hobbit/html/meadow.html
XMLは最初にXMLバージョンを書かないといけないので,ファイルの先頭を次のようにする。
<?xml version="1.0" encoding="utf-8"?><!-- -*- coding: utf-8 -*- --> <article> 以下略
XML + XSLTの続き。
2000.05.07に書いたサンプルでは最初からHTMLで書いても変わらない。今回は脚注を付けてみる。すなわち本文中に脚注を埋め込んだXMLデータをXSLTによって,脚注を本文と分離する。
まずXMLファイル:
<?xml version="1.0" encoding="utf-8"?>
<article>
<section>
<p>今度はHTML + CSSではできない例を。</p>
<p>例えば脚注を本文に仕込むような形。
<note>こんな感じ。</note>
</p>
<p>脚注を本文に埋め込んで書いておいて,HTML化するときに脚注化する。</p>
<p>脚注はセクション毎に表示するように変換する。
<note>セクション1の脚注2</note></p>
</section>
<section>
<p>脚注を入れる場所はあえて指定できないようにした。<note>脚注その2</note></p>
<p>「脚注を入れる場所」というのは見栄え。</p>
</section>
<section>
<p>脚注のないセクションでは,脚注欄は作らない</p>
</section>
</article>
次にXSLTファイル,かなり長いが:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:output method="html" encoding="iso-2022-jp"
doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN"/>
<xsl:template match="/">
<html lang="ja">
<head>
<title>XSLTのテスト−その2</title>
</head>
<body>
<xsl:apply-templates/>
</body>
</html>
</xsl:template>
<xsl:template match="section">
<hr/>
<xsl:apply-templates/>
<xsl:if test=".//note">
<p><b>脚注</b></p>
<dl compact="compact">
<xsl:for-each select=".//note">
<dt>
<a>
<xsl:attribute name="href">
<xsl:text>#note</xsl:text>
<xsl:number level="any" count="note" from="article"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:text>fn</xsl:text>
<xsl:number level="any" count="note" from="article"/>
</xsl:attribute>
<xsl:text>*</xsl:text>
<xsl:number level="any" count="note" from="section"/>
</a>
</dt>
<dd>
<xsl:apply-templates/>
</dd>
</xsl:for-each>
</dl>
</xsl:if>
</xsl:template>
<xsl:template match="p">
<p>
<xsl:apply-templates/>
</p>
</xsl:template>
<xsl:template match="//note">
<sup>
<a>
<xsl:attribute name="href">
<xsl:text>#fn</xsl:text>
<xsl:number level="any" count="note" from="article"/>
</xsl:attribute>
<xsl:attribute name="name">
<xsl:text>note</xsl:text>
<xsl:number level="any" count="note" from="article"/>
</xsl:attribute>
<xsl:text>*</xsl:text>
<xsl:number level="any" count="note" from="section"/>
</a>
</sup>
</xsl:template>
</xsl:stylesheet>
昼起きる。LinuxJapanの原稿をチェック。
follow-up(s): 2000.05.21
Netscape Communicator 4.73を取ってくる。このWebサイトのスタイルシートをちょっとだけ変更。
Rubyで遊ぶ。
--
xfce 3.3.3を取ってくる。今のところ,icewmとxfceを気分で切り替えてるけど,今度のxfceはタイトルバーのデザインがなかなかいいねぇ。
今日のリンク:ぐるなび ホームページ 関西版
一日会議。とても疲れた。3つの分科会に分かれてたけど,私,なんか知らんが3つともcommitしてるから,結局日常業務は6時から。で,それを済ませて,あとうち一つの議事録を書いて10時で切り上げ。4人で180円ラーメンを食べに行く。
--
昨日,apacheをバージョンアップ。phpは私的に覚えようという気がないので捨て捨て。
6月からリーダーですって。
昨日,OpenMotif 2.1.30 を取ってきて,コンパイル。コンパイルは大した問題もなくできたけど,ちょっとまだ試せてない。
/opt$ tar xzvf openmotif2.1.30.tar.gz /opt/motif$ mkdir imports /opt/motif$ ln -s /usr/X11R6 imports/x11 /opt/motif$ make Worldbindings/Makefileでエラーが生じるので,
FILES = ...で「sun_なんちゃら」を2つばかり削除。
/opt/motif$ su /opt/motif# make install他にpangoを取ってくる。
む,gccをコンパイルし直さないといかんな。うちのgccって今,ロケールにしたがって文字リテラルを評価するようにしてるが,ソース中に現ロケールと異なるエンコーディングの文字リテラルがあるとコンパイルできない。gccにはソースのエンコーディングを指定するコマンドラインオプションが(たぶん)ないので,むしろ多バイト文字を解釈しないようにgccを作った方がよさそう。
/opt/gcc-tmp$ ../gcc-2.95.2/configure --prefix=/usr --enable-shared
--enable-threads
スクリーマーズ(SCREAMERS,原作:変種第二号/人間狩り,Second Variety)よいねぇ。これは劇場にも観にいったが,原作も素敵。
CGIスクリプトが書けるヘッダー。Webサーバーがapache 1.3.xの場合だと,ソースのmain/util_script.c:ap_scan_script_header_err_core()辺りに処理の定義がある。
次のヘッダーフィールドは適当に処理される。CGIスクリプトがこのヘッダーを出力してもそのままクライアントに渡るわけではない。
| Status | HTTP状態コード |
| Set-Cookie | クッキー;RFC 2109 HTTP-STATE参照。 |
次のヘッダーフィールドは,内容に問題がなければそのままクライアントに渡される。RFC 2616 HTTP/1.1参照。
これ以外の場合はそのままヘッダーに追加される。他のWebサーバーは違うかもしれない。
follow-up(s): 2001.02.25 POSTメソッドのリダイレクト
アクセスログを要約するrubyスクリプトを書いてみる。で,4月分。
まずHTTP_REFERER:
nil = 6062 http://www2.airnet.ne.jp/pak04955/ = 2871 http://www.forest.impress.co.jp/library/iefavorites.html = 2034 http://www.infoseek.co.jp/Titles = 260 http://www.vector.co.jp/vpack/browse/person/an009852.html = 138 http://hpcgi1.nifty.com/bakera/flashbbs/flashbbs.cgi = 114 http://www2.airnet.ne.jp/pak04955/review.htm = 87 [unknown origin] = 68 http://nicola.sunicom.co.jp/nicola/soft/list.html = 64 http://www.altavista.com/cgi-bin/query = 61 http://www2.airnet.ne.jp/pak04955/webpage.htm = 60 http://www2.airnet.ne.jp/pak04955/download.htm = 56 http://www.lycos.co.jp/cgi-bin/pursuit = 54 http://www.excite.co.jp/search.gw = 44 http://www.linux.or.jp/link/editor.html = 43 http://search.fresheye.com/ = 43 http://www.google.com/search = 40 http://www2.lint.ne.jp/~lrc/in_urlmng.htm = 37 http://www2.airnet.ne.jp/pak04955/charcode.htm = 34 http://homepage1.nifty.com/cura/oya/what_is_nicola.html = 30
窓の杜が意外に多い。
あと<http://hpcgi1.nifty.com/bakera/flashbbs/flashbbs.cgi?id=html>がなんというか濃いなぁ。2000.04.08と2000.04.16を肴にしてるのね。【謎】とかを多用する文体ってクラクラしてまう。
REMOTE_HOST:
nil = 1057 ppp.odn.ad.jp = 733 ppp.infoweb.ne.jp = 604 sony.co.jp = 547 airnet.ne.jp = 377 jin.gr.jp = 362 sharp.co.jp = 248 goo.ne.jp = 235 teleway.ne.jp = 187 fujitsu.co.jp = 176 catv296.ne.jp = 155 gate.nec.co.jp = 151 hkd.mesh.ad.jp = 141 5.221.202.ts.2iij.net = 132 seikyou.ne.jp = 116 toshiba.co.jp = 115 zaq.ne.jp = 108 interq.or.jp = 101 esm.co.jp = 98 ap.plala.or.jp = 95
ODNとinfowebがかなりの割合を占めているが,その一方でco.jpドメインも多い。昼間に多く見られてるのかも。
HTTP_USER_AGENT:
Mozilla/4.0 = 5143 WWWC/1.00 = 2361 Mozilla/4.7 = 1595 Mozilla/3.01 = 400 KINOFINGER/2.0.2.15 = 362 Mozilla/4.6 = 266 moget/1.0 = 235 NATSU-MICAN/2.3(20000120) = 218 Mozilla/4.08 = 178 Mozilla/4.5 = 164 Mozilla/4.72 = 132 Mozilla/5.0 = 119 EirGrabber = 98 Mozilla/4.51 = 89 QILM/2.65 = 88 Mozilla/4.04 = 74 InternetLinkAgent/2.3 = 64 Mozilla/2.0 = 63 Gulliver/1.3 = 58 InfoSeek = 54
Mozilla/4.0が多いが,これはIEも含む。
Mozilla/4.0 (compatible; MSIE 5.01; Windows 98)
括弧内までで表を作るとかなり大きくなったので,今回は括弧内は無視して表を作った。
follow-up(s): 2000.07.07
やたらめったら誤字脱字が多いな。あちゃー,2000.05.13が反映されてないやん?
参考文献が書いてないので,ここに書くなり。
Netsphere Laboratories http://www.nslabs.jp/
[PR]