NULL::something

Login via flickr, はてな, TypeKey.

2005-11-08

なぜホームページだけ表示が崩れていたか

XML 宣言を省略したことにより、IE で描画モードが変わっていたせいみたいだ。唐突に思い出して omit-xml-declaration="no" にしたらなおった。でも CSS で解決する方法がないっぽいのはどうすればいいんだろ。標準モードで描画させないほうがいいんじゃないか。

Trackback URI: http://lowreal.net/logs/2005/11/08/1.trackback

ruby-xslt 0.9.1

ちゃんとエラークラス吐くバージョンがリリース。kiyoya さんのパッチ。

ruby extconf.rb --enable-error-handler して Makefile 作成。ちゃんと exslt もリンクさせるため、OBJS に /lib/libxml2.dll.a /lib/libexslt.dll.a /lib/libxslt.dll.a を追加。なんか知らんけど明示的に指定しないとリンクされなくて ld が怒る@cygwin (このバージョンに限らず)

XML::XSLT::XSLTError と、そのサブクラス XML::XSLT::ParsingError, XML::XSLT::TransformationError が追加される。変換用 XML ファイルのエラーなのか、XSLT ファイルのエラーなのかはわからなく。そのかわりエラー発生のタイミングが変わった。serve 時ではなく、xml= のときに出るようになった。だから問題ない。

エラーの message の意味がないっぽいので、--enable-error-handler 時には rb_raise 第2引数を STR2CSTR(rb_ary_to_s(rb_cvar_get(cXSLT, rb_intern("@@errors")))) とかにしたほうがいい感じ。--enable-error-handler は errors が定義されるのがキモイけど俺はそんなに気にならない。

第二引数を変えるだけだと以下のコードがダメ。

xslt = XML::XSLT.new()
xslt2 = XML::XSLT.new()

begin
    xslt.xml = File.read("examples/fuzface.xml")
    xslt.xsl = File.read("examples/fuzface.xsl")

    out = xslt.serve()
    print out;
rescue XML::XSLT::XSLTError => e
    p XML::XSLT.class_eval("@@errors") #=> (1)
    p e.message #=> (2)
end
p XML::XSLT.class_eval("@@errors") #=> (3)

begin
    xslt2.xml = File.read("examples/fuzface.xml")
    xslt2.xsl = File.read("examples/fuzface.xsl")

    out = xslt2.serve()
    print out;
rescue XML::XSLT::XSLTError => e
    p e.message  #=> (4)
end

(3) で (2) のときと同じ (4) のとき前のエラーメッセージが紛れ込む。クラス変数使ってるからだろうけど、単純に

Inserted at 2005-11-08T22:25:28+09:00

インスタンス変数にしないのにはなんか理由があるんだろうからとりあえずそのままにして、

void xslt_raise(VALUE cError) {
#ifdef USE_ERROR_HANDLER
  VALUE errors = rb_cvar_get(cXSLT, rb_intern("@@errors"));
  VALUE error_str = rb_ary_to_s(errors);
  rb_ary_clear(errors);
  rb_raise(cError, STR2CSTR(error_str));
  return;
#endif
  rb_raise(cError, "");
}

とか作って経由させ、リセットさせてみる。XML::XSLT.errors は常に空の配列が返るようになって無意味になる。

ruby-xslt.0.9.1.error_message.patch

Inserted at 2005-11-08T22:11:22+09:00

スレッドの切り替えってどういうタイミングなんだろう。

Inserted at 2005-11-09T00:05:37+09:00

Trackback URI: http://lowreal.net/logs/2005/11/08/2.trackback

visitors on xrea

Visitors を XREA 上で使う。のりさんにコレいいよ、とか教えてもらったので以下略

特に何も考えなくても make できる。

XREA の生ログは最新5日分しか保存されないので、CRON でバックアップをとるようにする。んで、ついでに visitors 解析。

#!/bin/sh
cd log

DOMAIN="lowreal.net no-real.net headphone.lowreal.net"
#DOMAIN=`ls *[^0-9].log | sed s/\.log$//`

for domain in $DOMAIN
do
    echo $domain.log
    gzip $domain.log
    mv $domain.log.gz $domain.log.`date +%Y-%m-%d`.gz
    zcat $domain.log.`date +%Y-%m`-[0-9][0-9].gz > tmp # パイプると Resource temporarily unavailable ?
    ../visitors tmp -A -o html -f ../public_html/log/$domain.log.html --trails --prefix http://$domain
done
rm tmp

上のようなのを FTP ログイン後のルートに visitors と一緒に突っ込んどく。んで、毎朝6時ぐらいに実行されるようにしとけばあとはてきとう。

しかし XREA でコマンド実行しようとすると Resource temporarily unavailable になりまくる。いぢめ。

Trackback URI: http://lowreal.net/logs/2005/11/08/3.trackback

NULL

RSS feed meter for http://lowreal.net/logs/latest

Alternates

  1. RSS 1.0
  2. Atom 1.0

Generated with Taglibro

この日記は Taglibro と呼ばれる XML ベースの XSLT をテンプレートとして使ったシステムを使っています。現在の Taglibro は Ruby, ruby-xslt, libxml-ruby による実装です。ソースコードはとりあえず公開していません。