<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/xml.xsl" type="text/xsl"?><feed xmlns="http://www.w3.org/2005/Atom">
  <title>nulog, NULL::something : out of the headphone &gt; 2005 &gt; November &gt; 08</title>
  <link href="http://lowreal.net/logs/2005/11/08"/>
  <icon>http://lowreal.net/img/banner.png</icon>
  <link rel="self" type="application/atom+xml" href="http://lowreal.net/logs/2005/11/08.atom"/>
  <link rel="alternate" type="application/xhtml+xml" href="http://lowreal.net/logs/2005/11/08.xhtml"/>
  <updated>2005-11-08T19:19:34+09:00</updated>
  <author>
    <name>cho45(砂糖)</name>
  </author>
  <id>http://lowreal.net/2005/11/08</id>
  <entry>
    <title>なぜホームページだけ表示が崩れていたか</title>
    <link rel="alternate" type="text/html" href="http://lowreal.net/logs/2005/11/08/1.html"/>
    <link rel="alternate" type="application/xml+xhtml" href="http://lowreal.net/logs/2005/11/08/1.xhtml"/>
    <updated>2005-11-08T12:59:59+09:00</updated>
    <published>2005-11-08T12:59:59+09:00</published>
    <id>http://lowreal.net/2005/11/08/1</id>
    <category term="css"/>
    <category term="web"/>
    <content type="xhtml" xml:base="http://lowreal.net/">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p><abbr title="Extensible Markup Language">XML</abbr> 宣言を省略したことにより、<abbr title="Internet Explorer">IE</abbr> で描画モードが変わっていたせいみたいだ。唐突に思い出して <code>omit-xml-declaration="no"</code> にしたらなおった。でも <abbr title="Cascading Style Sheets">CSS</abbr> で解決する方法がないっぽいのはどうすればいいんだろ。標準モードで描画させないほうがいいんじゃないか。</p>
      </div>
    </content>
  </entry>
  <entry>
    <title>ruby-xslt 0.9.1</title>
    <link rel="alternate" type="text/html" href="http://lowreal.net/logs/2005/11/08/2.html"/>
    <link rel="alternate" type="application/xml+xhtml" href="http://lowreal.net/logs/2005/11/08/2.xhtml"/>
    <updated>2005-11-08T14:16:20+09:00</updated>
    <published>2005-11-08T14:16:20+09:00</published>
    <id>http://lowreal.net/2005/11/08/2</id>
    <category term="xslt"/>
    <category term="ruby"/>
    <category term="xml"/>
    <content type="xhtml" xml:base="http://lowreal.net/">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>ちゃんとエラークラス吐くバージョンがリリース。<a xmlns="http://www.w3.org/2005/Atom" href="http://kiyoya.comthy.org/diary/">kiyoya さん</a>のパッチ。</p>
        <p><kbd>ruby extconf.rb --enable-error-handler</kbd> して Makefile 作成。ちゃんと exslt もリンクさせるため、OBJS に <code>/lib/libxml2.dll.a /lib/libexslt.dll.a /lib/libxslt.dll.a</code> を追加。なんか知らんけど明示的に指定しないとリンクされなくて ld が怒る＠cygwin (このバージョンに限らず)</p>
        <p>XML::XSLT::XSLTError と、そのサブクラス XML::XSLT::ParsingError, XML::XSLT::TransformationError が追加される。変換用 <abbr title="Extensible Markup Language">XML</abbr> ファイルのエラーなのか、<abbr title="XSL Transformations">XSLT</abbr> ファイルのエラーなのかはわからなく。そのかわりエラー発生のタイミングが変わった。<code>serve</code> 時ではなく、<code>xml=</code> のときに出るようになった。だから問題ない。</p>
        <p>エラーの <code>message</code> の意味がないっぽいので、--enable-error-handler 時には rb_raise 第2引数を <code>STR2CSTR(rb_ary_to_s(rb_cvar_get(cXSLT, rb_intern("@@errors"))))</code> とかにしたほうがいい感じ。--enable-error-handler は errors が定義されるのがキモイけど俺はそんなに気にならない。</p>
        <ins datetime="2005-11-08T22:11:22+09:00">
          <p>第二引数を変えるだけだと以下のコードがダメ。</p>
          <pre class="Ruby">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 =&gt; e
    p XML::XSLT.class_eval("@@errors") #=&gt; (1)
    p e.message #=&gt; (2)
end
p XML::XSLT.class_eval("@@errors") #=&gt; (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 =&gt; e
    p e.message  #=&gt; (4)
end
</pre>
          <p>(3) で (2) のときと同じ (4) のとき前のエラーメッセージが紛れ込む。<del datetime="2005-11-08T22:25:28+09:00">クラス変数使ってるからだろうけど、単純に</del>インスタンス変数にしないのにはなんか理由があるんだろうからとりあえずそのままにして、</p>
          <pre class="C">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, "");
}</pre>
          <p>とか作って経由させ、リセットさせてみる。<code class="Ruby">XML::XSLT.errors</code> は常に空の配列が返るようになって無意味になる。</p>
          <p>
            <a href="/2005/ruby-xslt.0.9.1.error_message.patch">ruby-xslt.0.9.1.error_message.patch</a>
          </p>
        </ins>
        <ins datetime="2005-11-09T00:05:37+09:00">
          <p>スレッドの切り替えってどういうタイミングなんだろう。</p>
        </ins>
      </div>
    </content>
  </entry>
  <entry>
    <title>visitors on xrea</title>
    <link rel="alternate" type="text/html" href="http://lowreal.net/logs/2005/11/08/3.html"/>
    <link rel="alternate" type="application/xml+xhtml" href="http://lowreal.net/logs/2005/11/08/3.xhtml"/>
    <updated>2005-11-08T19:19:34+09:00</updated>
    <published>2005-11-08T19:19:34+09:00</published>
    <id>http://lowreal.net/2005/11/08/3</id>
    <category term="xrea"/>
    <category term="log"/>
    <content type="xhtml" xml:base="http://lowreal.net/">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p><a href="http://www.hping.org/visitors/">Visitors</a> を XREA 上で使う。<a xmlns="http://www.w3.org/2005/Atom" href="http://diary.noasobi.net/">のりさん</a>にコレいいよ、とか教えてもらったので以下略</p>
        <p>特に何も考えなくても make できる。</p>
        <p>XREA の生ログは最新5日分しか保存されないので、CRON でバックアップをとるようにする。んで、ついでに visitors 解析。</p>
        <pre title="/virtual/lowreal/log-compress.sh" class="SH">#!/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 &gt; tmp # パイプると Resource temporarily unavailable ?
    ../visitors tmp -A -o html -f ../public_html/log/$domain.log.html --trails --prefix http://$domain
done
rm tmp
</pre>
        <p>上のようなのを <abbr title="File Transfer Protocol">FTP</abbr> ログイン後のルートに visitors と一緒に突っ込んどく。んで、毎朝6時ぐらいに実行されるようにしとけばあとはてきとう。</p>
        <p>しかし XREA でコマンド実行しようとすると <q>Resource temporarily unavailable</q> になりまくる。いぢめ。</p>
      </div>
    </content>
  </entry>
</feed>
