随感録 2000年5月

2000-05-03 (Wed)

# rb2c

Tag(s): Ruby

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に変換してみる。ふーむ,ちゃんと動くやん。

rb2c : a Ruby to C converter

# KDE 1.1.2jaのインストール

Tag(s): Linux

nicolatterのテストのために,KDEをインストールする。しかし苦労する。日本語化パッチ当てるとコンパイルができない。何なんだ。

  • qt-1.45 + qt-1.45-i18n-20000128.diff
  • kdelibs-1.1.2 + kdelibs-ja.19990915.diff
  • kdeutils-1.1.2 + kdeutils-ja.20000120.diff

 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;

2000-05-06 (Sat)

 仕事を定時で切り上げて芦屋のスタジオに直行。ペダルの感触を掴んだような掴んでないような。

--
Another HTML-lint gateway

 とりあえず80点までいった。でも思想が違う,きっと。

2000-05-07 (Sun)

いろいろ買い物。

  • 法人税の決算調整と申告の手引
  • 会計法規集 第14版

連結財務諸表関係でいい本が見つからず,それは先送り。

  • ハンニバル(トマス・ハリス)上巻(Thomas Harris, Hannibal)

『羊たちの沈黙』の続編らしい。

follow-up(s): 2000.07.22

  • isa, pretender

相変わらず女性voばっかり買っとるな。

  • パートナー(小花美穂)
  • BLAME! #4(弐瓶勉)
  • Gallery Fake #4(細野不二彦)
  • 月下の棋士 #28(能條純一)

# XML + XSLT

Tag(s): XML Webデザイン

XSLTで遊ぶ。過去の日記(例えば2000.04.16)にも書いたが,HTMLが予定していない構造の文書をWebブラウザで見たいからという理由で直接HTMLで記述するのは,記述したい文書の構造が自然に記述できないし,構造の情報が失われる恐れがあるので,上手くない。内部ではあくまで構造に即した形でデータを持っておき,表示するときにHTMLに変換するのがよい。

http://www2.wbs.ne.jp/~skaga/

例えば次のような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片を生成できればもっとよさそう。その辺はどうなんだろう。

触った感じとしては,次の場合に有用:

  • XMLデータをWeb以外にも流用したい
  • 脚注の自動採番などをスクリプトを通さずやりたい

XSLTはあくまでも文書の変形であって,Webブラウザで見たときにある程度の見栄えを出すためにはCSSも書かないといけない。なので,XSLTを使う明確な理由がない場合には,単に手間が増える。

follow-up(s): 2000.05.12

2000-05-10 (Wed)

今日はやや早い帰宅。9時ぐらい。

# Mule-UCSのインストール,XMLファイル

Tag(s): Linux XML

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>
以下略

2000-05-12 (Fri)

 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>

2000-05-13 (Sat)

 昼起きる。LinuxJapanの原稿をチェック。

follow-up(s): 2000.05.21

 Netscape Communicator 4.73を取ってくる。このWebサイトのスタイルシートをちょっとだけ変更。

2000-05-14 (Sun)

Rubyで遊ぶ。

  • グループウェアっぽいWebカレンダー
  • バグ追跡システム
を書いてみる。どっちも(というか後者は)すでにあるけど,データベースソフトを必要とするのは大袈裟すぎる。プロバイダにそんな大きなの置けるか。

--
 xfce 3.3.3を取ってくる。今のところ,icewmとxfceを気分で切り替えてるけど,今度のxfceはタイトルバーのデザインがなかなかいいねぇ。

# ぐるなび

Tag(s): 今日のリンク

今日のリンク:ぐるなび ホームページ 関西版

2000-05-16 (Tue)

 一日会議。とても疲れた。3つの分科会に分かれてたけど,私,なんか知らんが3つともcommitしてるから,結局日常業務は6時から。で,それを済ませて,あとうち一つの議事録を書いて10時で切り上げ。4人で180円ラーメンを食べに行く。

--
 昨日,apacheをバージョンアップ。phpは私的に覚えようという気がないので捨て捨て。

2000-05-18 (Thu)

 6月からリーダーですって。

# ぴあ

Tag(s): 今日のリンク

今日のリンク:@ぴあ

# OpenMotif, Pangoのインストール

Tag(s): Linux

昨日,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 World
 bindings/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

2000-05-20 (Sat)

スクリーマーズ(SCREAMERS,原作:変種第二号/人間狩り,Second Variety)よいねぇ。これは劇場にも観にいったが,原作も素敵。

# CGIで出力できるHTTPヘッダーフィールド

Tag(s): CGI Webデザイン

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参照。

  • Content-Type
  • Location
  • Content-Length
  • Transfer-Encoding
  • Last-Modified

これ以外の場合はそのままヘッダーに追加される。他の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.082000.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-21 (Sun)

 やたらめったら誤字脱字が多いな。あちゃー,2000.05.13が反映されてないやん?

 参考文献が書いてないので,ここに書くなり。

  • James Gettys, Robert W. Scheifler, Xlib - C Language X Interface X Consortium Standard X Version 11, Release 6.4
  • 木下凌一,林秀幸『X-Window Ver.11プログラミング第2版』日刊工業新聞社
  • 錦見美貴子,高橋直人,戸村哲,半田剣一,桑理聖二,向川信一,吉田智子『マルチリンガル環境の実現 X Window/Wnn/Mule/WWWブラウザでの多国語環境』プレンティスホール出版

2000-05-24 (Wed)

 CDを購入:

  • 宇多田ヒカル「Wait&See」
  • Van Halen, LIVE: Right here, right now.

2000-05-28 (Sun)

 謎の催し物に参加。凹む。というか見るに耐えん何かの集合。

follow-up(s): 2000.06.11

 BON JOVIのCDなどを購入。

2000-05-29 (Mon)

 Web掲示板の新しい版を公開。添付ファイルの扱いを少々変更したり。