textarea で動く劣化コピー xml-mode 続き。

TAB 入力時動的補完リストを表示させてみる。たいして意味がない気がする。xyzzy の dabbrev に相当。

デフォルトの内容で j[TAB] とすると ja, javascript, js が候補にあがる。Down/Up で選択してもう一度 TAB を押すと補完される。

「動的」なので、適当に vfsgergfherkgr とか入力したあと、vfs[TAB] とかやれば補完される。

似非 xml-mode じゃホント意味ないなぁ。っていうかほんとはタグの予測補完をやろうと思ったんだけどめんどくてやめたんです。動的補完のが簡単だけどソレなりの面白さはあるかなと。

関係ないところでは C-x h を入力したときキーバインド一覧をだすようにしてみた。微妙。

直前に動的補完できそうな文字がない場合は、親要素に合わせて開始タグ候補をリストするようにしてみた。

xml.complementList = {
"head" : ['<meta name="" content=""/>', '<link rel="" href=""/>'],
"body" : ['<div class="section"', "<p>", "<address>"],
"div"  : ['<div class="section"', "<p>"],
"p"    : ['<abbr title', "<span class"],
"ul"   : ["<li>"],
"ol"   : ["<li>"],
"dl"   : ["<dt>", "<dd>"]
"pre"  : ["<![CDATA["]
};
  1. トップ
  2. script
  3. 動的補完 in textarea
  1. トップ
  2. javascript
  3. 動的補完 in textarea

2005-10-20 を最後に更新されてないらしいです。たぶん DNS エントリ消したせいなので復活させて 301 投げなおします。いままで 301 返してたつもりだったんだけどなぁ。今 eNom がメンテ中でなにもできん。

DNS 更新 / ドメイン設定 / リダイレクト設定 が終わった。Bloglines 巡回待ち。

1時間以上たったけど更新されないな。ちゃんとリダイレクトされているんだけど。Bloglines の挙動をまとめたページとかないのかなぁ。わけわからんよ。

  1. トップ
  2. net
  3. Bloglines can't find my feed

制限つきながら、IE でも動くように。閉じタグ補完とかだけ。

Ajax による Full IME のコードをパクっています。

keypress 時のコードがうまくかければもうちょい使えるだろうけど、いかんせん IE はデバッグしにくいのでやる気起きない。Opera も。

  1. トップ
  2. script
  3. 似非 xml-mode in textarea
  1. トップ
  2. web
  3. 似非 xml-mode in textarea
  1. トップ
  2. javascript
  3. 似非 xml-mode in textarea

IE がモノとして存在していたら、とりあえず床に叩きつけ、五階建てマンションのベランダから踏み切りにほうりなげ、電車によりつぶされる様なストーリーを連想したりするんだけど、きっと IE がモノとして存在するとすれば、東京タワーあるいはもっとよくわからんデカイものなのだろうから、叩きつけることも、五階建てマンションのベランダから放り投げることもできないし、ましてや踏み切りにいきなり東京タワーなんて現れた日には事故どころじゃないよサイコキネシスだ、とここまで書いてちょっと切なくなってきた。つまるところ今なんでこのトップページだけが IE でズレて表示されるのか全くわからなくてむかついていたわけです。CSS のどこ書き換えてもなおらねぇ。a { border: 1px solid red } とかやるとなおるけどな!!

というか、なんでトップページだけなんだよと。意味わかんねぇよと。IE なんて死んでしまえばいいんだ。ほんとうに。でも俺と IE どっちのほうが価値があるかっていったら明らかに IE さんなわけで、あぁ、これはきっと僻みなんだな。俺ってばバカなやつ、あはは。とかなんとか。

自動筆記で日記書くのって頭悪いなぁ。なぁ。

そんなわけで、もう知らない。知らないったら知らないよ!!!!

  1. トップ
  2. ie
  3. Fucking IE
  1. トップ
  2. fuck
  3. Fucking IE
  1. トップ
  2. web
  3. Fucking IE

なんか Bloglines が title を sanitize しない気が。。。

title に &lt;textarea&gt; って書いたやつ (すなわちタグじゃなく実態参照) からバグって表示される。なんですか。いぢめ食らってますか僕。

script じゃダメっぽいな。textarea だけか。

で、いつリダイレクトのほうの URL に書き換わるんだろう。

  1. トップ
  2. script
  3. Bloglines sanitize <script>alert("unco");</script>
  1. トップ
  2. web
  3. Bloglines sanitize <script>alert("unco");</script>

textarea で動く劣化コピー xml-mode の入力まわりを整理して分離してみた。C-x i とかいうツーストローク以上のキーバインドも可能に。ただ、やっぱり文字入力をキャンセルさせる方法がわからないため、入力された文字をあとから削除する方法になってる。チラつく。

これである程度自由にキーバインドが変えられるようになった。

function xmlText_initialize() {
var xml = new xmlText(document.getElementById("xmltext"));
var kb = new keyBinding(document.getElementById("xmltext"), {
"C-x i" : function () { xml.indentLine() },
"TAB"   : function () { xml.indentLine() },
"C-q"   : function () { xml.indentBuffer() },
"C-."   : function () { xml.wellClose() },
"/"     : function () { xml.slash() },
"="     : function () { xml.equal() },
"RET"   : function () { xml.newLineAndIndent() }
});
}
window.addEventListener("load", xmlText_initialize, true);

劣化コピー xml-mode と一緒に使うとき、キャレット位置が若干混乱するのが微妙。なんで混乱するのかよくわからないのだけれど。

textarea のスクロール位置をセットしなおす方法が分からん。使えないって!

event.preventDefault() を使えばキャンセルできるみたいだ。書き換えよう。

あー、しかもブラウザのキーバインド横取りできる。

スクロール問題解決?

Ctrl+記号を入力すると文字が誤認される。

  1. トップ
  2. script
  3. キーバインドの実装
  1. トップ
  2. javascript
  3. キーバインドの実装
  1. トップ
  2. web
  3. キーバインドの実装

textarea で動く劣化コピー xml-mode

まだまだバグがあるんだけど、ぶっちゃけ微妙に飽きてきたので公開 (してモチベーションあげる作戦)。Firefox でしか確認してない。IE では絶対動かないだろう。Opera でもたぶん動かないだろう。問題なのは setSelectionRange, selectionStart。綺麗にクロスブラウザ化するスクリプトをどっかで見たけどまぁいいや。

keydown/keyup は shift とかを単体で押しても反応しやがるので困った。keypress はイベント発生時点で、まだ textarea.value に文字が入力されないのが困った。かなりキモイ方法で解決したけど、スマートなのは keypress 単体を使って、文字入力をキャンセルする方法かなぁ。できなかったけど。

キャレット位置がおかしいバグがなおせたらそこそこ実用になるかな。

dump() しまくってるので Fx のコンソール表示させてると楽しいですよ。なにがだよ?

TAB 以外の文字でのインデントは一切考えていません。必要性を感じませんから。

  • 属性に / を書こうとすると空要素タグ補完されてうざい。文字列の中にいるか外にいるか調べられればいいんだけどうまくいかない。タグの中の "[^"]*" をスキャンするとかなんとか。
  • たまに補完後のキャレットの位置がおかしい。原因・再現性不明
  • CDATA を見事に無視してインデントする。そんなに難しくないと思うけど、面倒くさいと思う。大して使わないのでどうでもいいちゃどうでもいい。
  • <empty-tag /></close-tag> みたいなときインデント崩れる。原因は空要素タグを最初から無視しているせいなんだけど、これ修正するのはめんどい。
  • 一通り実装終わり。CDATA のインデント無視も動いてるっぽい。俺的に汚いソースを書くとインデントが崩れる素晴らしい仕様に(わらい
    1. トップ
    2. script
    3. xml-mode in textarea
    1. トップ
    2. js
    3. xml-mode in textarea
    1. トップ
    2. web
    3. xml-mode in textarea

    というか二年次にあがれるんだろうか、とか思いつつ。あれ本当に微妙に危険な香り。2-3個落としそうだよなぁ。いくつ落としたらだめなんだっけなぁ。えーっと専門26単位必修で、20単位取得できないと二年次になれない。っていうかやばくね。やばくね。いまさら感が激しいけどやばくね。どうしよ。どうしよう? よく考えると教養科目を今年度とってないな。やばいな素で。まぁ仕方ないよなぁ。はぁ。

    まぁどうにかなるよなぁ。なってほしい。なれよ。とにかく、二年次で情報システム関係にいくか情報デザイン関係にいくか微妙に迷ってたんだけど、情報デザインのほうがよさげなのでとりあえず決定。グループワークが多いらしいのが不安だけど、結局そのうちやることになるから仕方ないか、と、いう、か、殆ど学校で口開かないのは危険なんじゃと思い始めた。挨拶ぐらいしかせんな。

    最近現実に対してリアルに諦めはじめて、リアリティにとんだ夢の世界のほうがリアルにいいんじゃないかと思いはじめた。結局いま見ている風景とか、街で歩きタバコしている宇宙人とか、どこに伝えたいことがあるのかわからない音楽とか、そういうのもとかも、無意識のうちに自分が望んで見ているものなわけで、この世界のこの地域の言語でいうならまさしく幻想というか、限りなく中核に近いところで繰り広げられるパッチワークに対して面白さを抱けないみたいな。でもこんな考えもそのパッチワークに含まれた布切れの一部で、実際にはまったく中核に近づいていない可能性もあったりするのだけれど、これまたどうしてもこの考えが間違っているとは思えない。そういう世界、で片付いてしまうのはつまらないけど、現実的だと思う。無意識が無限大に近いような世界フレームを繋ぎ合わせて、脳に刻み込んでいくだけ。「脳」も「無意識」も象徴的でしかない。象徴というか比喩か。どっちでもいいんだ。結局今この世界の中で、この世界について正確に記述することは絶対に不可能だから。この世界は「脳」で考えている、ということになっているだけ。本当は「他人」すら存在しない。つまんないなぁ。無限再帰ループ。alert() はマジでうざいからはやく対処法ください。

    1. トップ
    2. life
    3. 二年次専攻コース洗濯
    1. トップ
    2. school
    3. 二年次専攻コース洗濯

    昨日行ってきた@品川・新高輪プリンス。前回 (2000) より全然人が多かった。特に内定者がいっぱい……

    そんなにおもいっきり面白い展示があったわけじゃない気がする。SED ぐらいかなぁ。SED は確かに綺麗だった。綺麗だったけど庶民には関係なさそうで略。EOS-5D を持ってみたけど重かった……そして全然関係ないところ (AF フレームがファインダーに映るとか) に感動してた。どれにでもついてるよボケ。Wireless IXY は意味があるのか疑問だったんだけど、実際見てみてやっぱり疑問だった。デジタル一眼が Wireless でコンピュータに直接転送できたら便利かもしれないけど、アマチュアには関係ない話だなぁとかなんとか。

    ってことで面白さとしては携帯プロジェクタがなんかやけにかっこよくてよかった。チラついてたけど。

    ソフトウェア関連で Microsoft と云々が……Canon のカラーマネージメントソフトウェアが Windows Vista に搭載されるとか、ぶっちゃけどうでもいいのでよく見てこなかったけど……

    なんかあとは自動システムが多かったなぁ。顔識別・笑顔識別・オート追尾とか。

    デジタル一眼欲しい。

    印刷データ管理とかいってるけど、印刷しなくてすむようなシステムになるべきとか言ってたらキヤノンはプリンタ作ってんダカラ!とか怒られた (誰に)。わろす。

    詳細 @Impress Watch

    1. トップ
    2. tech
    3. Canon EXPO 2005 in Tokyo
    1. トップ
    2. life
    3. Canon EXPO 2005 in Tokyo

     /tmp/ruby-GD-0.7.4
    $ ruby extconf.rb
    checking for main() in -lz... yes
    checking for main() in -lpng... yes
    checking for gdImagePng() in -lgd... yes   
    checking for main() in -lm... yes
    checking for gdImageColorResolve()... yes
    creating Makefile                        
    /tmp/ruby-GD-0.7.4
    $ make
    gcc -g -O2   -I. -I/usr/lib/ruby/1.8/i386-cygwin -I/usr/lib/ruby/1.8/i386-cygwin -I. -DHAVE_GDIMAGECOLORRESOLVE -I/usr/local/include  -c GD.c
    gcc -shared -s -Wl,--enable-auto-import,--export-all  -L"/usr/local/lib" -L"/usr/lib" -o GD.so GD.o  -lruby -lm -lgd -lpng -lz  -lcrypt
    /tmp/ruby-GD-0.7.4
    $ make install
    /usr/bin/install -c -m 0755 GD.so /usr/lib/ruby/site_ruby/1.8/i386-cygwin
    /tmp/ruby-GD-0.7.4
    $ ruby -ve 'require "GD"'
    ruby 1.8.3 (2005-09-21) [i386-cygwin]
    /usr/lib/ruby/site_ruby/1.8/i386-cygwin/GD.so: No such file or directory - /usr/lib/ruby/site_ruby/1.8/i386-cygwin/GD.so (LoadError)
    from -e:1
    exit 1

    意味分からん。いつかはちゃんと動いていたのになぁ。拡張ライブラリが反抗期で僕は悲しい。

    1. トップ
    2. ruby
    3. ruby-gd
    1. トップ
    2. gd
    3. ruby-gd

    質素かつやりたいほうだいかつファンタジーな感じにしようと試行錯誤してとりあえず画像は作ったんだけど、どうあがいても実装できないので構造をちょっといぢっちゃおうかな!バレないよね!とか思ったりしたり。とか書いたらバレるじゃんかよ。誰だよこれ書いたやつ。

    年賀状も同じ系統にしようかと思ってる。flickr の CC 画像をコラージュしようと思ってたんだけど微妙にそれさえめんどくさくなってきた。ああ、どんどんダメ人間に。どうせダメ人間だよ。悪いかよ。もともとダメ人間だよ。うるさいなぁ。

    ちょっとごめんトイレ行って来る、なんて言って席を立ったはいいけど、戻ってきたら自分の座る場所がなかったとか、がんばって作ったはいいけど使われなかったとか、一緒に選んだもののせいで悲しい眼をする誰かを見るとか、そういう気分。たぶんそれいっぱいある。きもちわるいぜ。ぜ。ぜ。ぜ。

    つまらないから寝るよ。寝ようよ。夢の中は素晴らしいぜ。

    あぁそうそう、言うのを忘れていたけれど、僕は妖精と暮らすから君は君なりに生きてくれよ、って彼がいってたよ。

    1. トップ
    2. css
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. design
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. web
    3. 新しいサイトスタイルを考えたけどどうしようか以下略
    1. トップ
    2. dempa
    3. 新しいサイトスタイルを考えたけどどうしようか以下略

    誰かと結婚することになったらしい。やたら構造が複雑な建物で結婚式。そして迷う。「あれ? ここ俺のいる場所じゃなくね」とかいいつ迷う。迷う。岩井がでてきて案内される。なんで君はこの建物に詳しいんだ。というかなんでそんなに高速移動ができるんだ。業務用みたいなエスカレータ・エレベータ。これ以上覚えていない。

    1. トップ
    2. life
    3. 夢: 結婚式・黒
    1. トップ
    2. dream
    3. 夢: 結婚式・黒

    旅行に行く夢を見た。

    ついたのが午前2時ぐらいで、すぐにみんな寝てしまう。俺と、もう一人が近くの崖で何か話をする。話の結果俺は彼を殺す。よくわからんけど。絞殺。あーやってしまったんだなぁ、と思う。

    部屋に戻る途中に何か動物的なものに見つかる。ぎりぎりで部屋に入る。同じ部屋のやつが眼を覚ます。そいつは寝ぼけていたのですぐに寝てしまう。このとき午前3時。

    起きて、朝食をとる。殺したやつがいる。死んでいない。あー、また俺は生き延びたんだなぁと思う。

    1. トップ
    2. life
    3. 夢: 崖・殺人
    1. トップ
    2. dream
    3. 夢: 崖・殺人

    哀さん から (http://mixi.jp/view_diary.pl?id=48756398&owner_id=9740)

    ハンドルは何?
    さとう / 砂糖 / 佐藤 / cho45
    ハンドルの由来は?
    さとう
    RO にて一時期の間 SyrupNg をキャラ名に (俺はよくキャラを消すので数字をインクリメントさせながら使ってた) していた。固定パーティ (まだギルドが存在していない) だったヤツに「syrup って何?」と訊かれたとき「砂糖水みたいなもん」とか答えたせい。その後砂糖汁だかなんだかを経てありがちな名前の落ち着く。母親の旧姓が佐藤なので特に違和感もなく。
    cho45
    C12H22O11 を纏めただけ。ユニークっぽいのでユニークさが必要ならこっちを使うことにしてる。
    過去のハンドル
    素で覚えてない。本名を省略したやつを使っていた (いる) けど親父とかぶるのでできるだけ使わないようにしてる。
    本名は?
    非常に良くある苗字と、割かしよく見かける名前の組み合わせ。本名でぐぐると 508 件ヒット。巡回リストに同姓同名がいる気がする。漢字はわからんけど。
    ハンドルと本名どっちが好き?
    ハンドルのほうが好き。本名は響きがあまり好きじゃないし、由来 (過去の政治家の名前) も好きじゃない。といってもハンドルは苗字っぽいし名前が不定なので比べるのが微妙だけど……
    過去あだな
    苗字一文字とって「っさん」。あと幼稚園ときは「ひーくん」だった。やばいキモイ。
    一番大切な人に何と呼ばれたい?
    難しいなぁ。「ひろさん」とか呼ばれたい、かもしれない。佐藤って呼ばれたらいいかもしれない。ネットでの活動を知っての上なら。ただあんまり呼び方気にしないかもしれない。全然関係ないけどこの質問に「おにいちゃん」と答えたやつが絶対いそうだ。あー「君」って呼ばれたい。正直「君」って呼ぶ女の子って憧れる。
    かわいいと思う名前は?
    雪 (ゆき) / 雨 (あめ) / 音[無夢] (ねむ) / 春日 (はるひ)
    生まれ変わってもその本名?
    いや。美少女で「音夢」という名前かつ眠そうな人間に生まれたい。ムリ。
    バトンを回す五人

    友人に言われて検索してみて吹きそうだったんですが、「音夢」は某エロゲーのキャラとは全然関係ないです。というかそのゲームやったことないし。

    1. トップ
    2. net
    3. 名前バトン
    1. トップ
    2. self
    3. 名前バトン

    午[前後]n時でもいいよ。

    内臓えぐりだして見せてやろうか、ということを考えて、それに関することでいくつか決心してみたりするけど、やっぱそういうのに不快的な人もいるわけで、やっぱ考え直したほうがいいんだろうか、今ならまだ戻れるかもしれないぜ、なんていうことを脳内天使と悪魔がささやきあっていたりするけど、脳内天使と悪魔について考えていたら俺には悪魔と悪魔が不毛な議論を重ねているように見えてきたので彼らをどうにかして消去する方法を考えることにした。.scan(/考/).size #=> 4

    1. トップ
    2. life
    3. 午前4時に何かをするのはやめたほうがいい

    SSH ログインの制限緩和うんちゃらがだいぶ前になってたわけでして、できるなら CGI 経由で make なんてしたくねぇよとか思ったのでいろいろとやった。未完成。

    なんかサッパリよくわからないけど XREA に SSH でログインしたときは ~/.profile が実行されるらしい。~ は /virtual/username。そこで次のような .profile を用意

    export PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$PATH"
    hh=$HOSTNAME
    uu=$USER
    col=32
    TITLEBAR='\[\033]0; \w\007\]'
    PS1="${TITLEBAR}
    \[\e[${col}m\]$uu@$hh \[\e[33m\]\w
    \[\e[${col}m\]\$\[\e[m\] "
    

    PATH 通せば ruby とかが素で通る。これ自体は CGI 経由と同じ。残りはどっかからパクったオマケ。カレントディレクトリ見えてないと嫌よ症なので……

    しかしこれで make しようとしても、collect2: cannot find `ld' とかでやがって通りません。ld -v は通るんだけどなぁ? 小プロセスに環境変数引き継がれてないとか? わかんねぇ。ほんとわかんねぇ。

    lowreal@s63.xrea.com ~
    $ echo $PATH; ruby -ve "p ENV['PATH']"
    /usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/rbin
    ruby 1.8.3 (2005-09-21) [i686-linux]
    nil

    なぜ。

    1. トップ
    2. web
    3. SSH on XREA
    1. トップ
    2. xrea
    3. SSH on XREA

    標準添付の rexml は軽くやるぐらいなら十分だけど、名前空間関係がちょっと怪しい。今時 XML を真面目に使えないとなるとやばい。

    RAA を検索してみると libxml-ruby がよさげなので試してみる。extconf.rb がなんだかしらんが全く通らないので該当部分でばっさりコメントアウト。extconf.rb の存在意義なし!!!

    リファレンスの類が見当たらない。要素は ele = XML::Node.new(element_name[, content]) で作るみたい。便利だけど Node っていう名前にちょっと違和感が……属性は ele["attr_name"] = attr_valueDOM 実装を期待してたんだけど違うらしい。getElementsByTagName は Node#find みたいだし (find の引数は XPath なので全然違うが) あーやばい。コンテキストノードとカレントノードの違いを忘れそうだった。Node#find はトップレベルのコンテキストノードにレシーバを設定して云々、でいいのかな。カレントノードが XSLT のものだよなぁ。

    名前空間関連はまだ調べてない。libxml だから大丈夫だと思う(てきとう。とりあえず学校へ。眠いっつうの。

    1. トップ
    2. xml
    3. Ruby で XML をまじめに使いたい
    1. トップ
    2. ruby
    3. Ruby で XML をまじめに使いたい

    どういうのが切ないのかを考える。どういう風に表現すれば切ないっぽいのかを考える。ちなみにただのメモだから結論なんて出ていないし、そもそも考えるまでいってない部分だってありますよと。うるせーよ。

    切なさがの正体がよくわからないので、正体不明のままにしとく。

    • 伝えたいのに伝えられない。(なんらかの約束が邪魔をする / 自分が素直になれない (ツンデレ))
    • 伝えたのに伝わっていない。(字がかすれて読めない手紙 / 喧騒にまぎれる声)
    • 解決方法がどれも問題を含む。(所謂友達か恋人か)
    • 解決方法がそもそもない。(死んでいく近しい人 / 過去の選択ミス)
    • 自分が無力。(明らかに周りとの差を感じる / 助けてあげたいが助けを求められていない) 広くとると一個上と同じ。
    • 現実と理想とのギャップ。(美しい音楽を聴くとき、絵を見るとき) 上二つとだいたい同じ。

    効率的、とか書いたけどまずムリだ。頭痛くなってきた。とりあえず日本語かけるようになれよ俺。な?

    1. トップ
    2. life
    3. 効率的に「切ない」を実装したい
    1. トップ
    2. thinking
    3. 効率的に「切ない」を実装したい

    新しくなっているのに気付いた。 ruby extconf.rb --enable-error-handler (off by default) とか書いてあるのでちょっと期待しつつ。

    とりあえず cygwin で make できんので Makefile 修正。OBJS に /lib/libxml2.dll.a /lib/libxslt.dll.a を追加して強制リンキング。exslt ははずす。

    いろいろやってみたんだけど、よくわからん。USE_ERROR_HANDLERXML::XSLT.errors が定義されるんだけどエラー起こしても特に何も入ってない。/* this is really quite inelegant */ とか書いてあって苦労してんなぁとかなんとか。

    とりあえずさらに really quite inelegant なコードで解決を図る。Ruby 側で…

    require '../xslt'
    xslt = XML::XSLT.new
    xslt.xmlfile = "fuzface.xml"
    xslt.xslfile = "fuzface.xsl"
    begin
    err = STDERR.dup
    pipe = IO.pipe
    STDERR.reopen(pipe[1])
    out = xslt.serve # raise RuntimeError
    rescue RuntimeError => e
    p XML::XSLT.errors #=> []
    if e.message =~ /^(XSL|XML|Stylesheet) /
    p e
    p pipe[0].readpartial(4096) #=> エラーメッセージ
    else
    raise
    end
    ensure
    STDERR.reopen(err)
    end
    __END__
    起こりうるエラーたち (grep)
    parser.c:53:      rb_raise( rb_eRuntimeError, "XSL parsing error" );
    parser.c:59:      rb_raise( rb_eRuntimeError, "XSL Stylesheet parsing error" );
    parser.c:65:      rb_raise( rb_eRuntimeError, "XSL Stylesheet parsing error" );
    parser.c:84:      rb_raise( rb_eRuntimeError, "XML parsing error" );
    parser.c:90:      rb_raise( rb_eRuntimeError, "XML parsing error" );
    parser.c:97:      rb_raise( rb_eRuntimeError, "Stylesheet transformation error" );
    

    tests/fuzface.rb の改造。xmlfile= は使うなという警告がでるけどとりあえず放置。$stderr じゃなくて STDERR にメッセージを吐くらしくめんどっちいことをやってる。readpartial は cygwin の ruby が 1.8.3 になったから使ってみた。便利よねコレ

    ごちゃごちゃやってみたけど使わない。XREA に入れるのめんどいし……

    これでドウダ

    class XML::XSLT
    class XSLTError < StandardError; end
    class XSLParsingError < XSLTError; end
    class XSLStylesheetParsingError < XSLTError; end
    class XMLParsingError < XSLTError; end
    class StylesheetTransformationError < XSLTError; end
    alias __org__serve serve
    def serve
    ret = nil
    err = STDERR.dup
    pipe = IO.pipe
    Thread.critical = true
    STDERR.reopen(pipe[1])
    begin
    ret = __org__serve
    rescue RuntimeError => e
    STDERR.reopen(err)
    Thread.critical = false
    message = pipe[0].sysread(4096)
    error_class = XSLTError
    case e.message
    when "XSL parsing error"
    error_class = XSLParsingError
    when "XSL Stylesheet parsing error"
    error_class = XSLStylesheetParsingError
    when "XML parsing error"
    error_class = XMLParsingError
    when "Stylesheet transformation error"
    error_class = StylesheetTransformationError
    end
    raise error_class.new(message)
    ensure
    STDERR.reopen(err)
    Thread.critical = false
    end
    ret
    end
    end
    xslt = XML::XSLT.new
    xslt.xmlfile = "fuzface.xml"
    xslt.xslfile = "fuzface.xsl"
    begin
    xslt.serve
    rescue XML::XSLT::XSLTError => e
    p e
    end
    

    将来完璧な実装になっても消すだけ! これなら使えそう? ごめん嘘。エラークラス云々があるのでそのままじゃ無理。

    1. トップ
    2. web
    3. ruby-xslt 0.8.2
    1. トップ
    2. ruby
    3. ruby-xslt 0.8.2
    1. トップ
    2. xslt
    3. ruby-xslt 0.8.2

    make がうまくいったっぽいのでメモ。ちなみに数度要望の末 ruby-xslt を入れてもらってある (この過程で別の鯖と違う点があるかもしれない)。でもやっぱり自分でビルドできないかなぁという試行。

    #!/bin/sh
    PATH="/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$PATH"
    export PATH
    ruby extconf.rb #1
    #make #2
    # test
    #cd tests
    #ruby fuzface.rb
    

    みたいなのを make.sh として作って保存しとく。ちなみに AddHandler cgi-script-debug .sh してある。念のため一発でやらずに一行ずつ実行させる。

    ruby extconf.rb は Permission Denied がでつつも一応通るので問題なしということにしとく。んで、make なんだけど libxml/* が見つからないとかいわれる。しかたないのでローカルの /usr/include/libxml2/libxml を同じディレクトリに転送する。エラー一切なく make が通った。テストもしてみたけど大丈夫っぽい。微妙だけど。

    関係ないけど XREA に拡張ライブラリ置くとき怪しいことをすることにした。/virtual/username/lib/ruby/RUBY_PLATFORM を掘ってその中に入れる。ローカルは cygwin なので /virtual/username/lib/ruby/i386-cygwin/xml/xslt.so、XREA は /virtual/username/lib/ruby/i686-linux/xml/xslt.so。んで使う場合は $LOAD_PATH.unshift("/virtual/lowreal/lib/ruby", "/virtual/lowreal/lib/ruby/#{RUBY_PLATFORM}") しとく。もともと XREA 上の RSS パーサが古いのでアレしてコレした感じ。

    s63.xrea.com 上で作った xslt.so。ちゃんと動くかは知らない。

    ちなみに上のセクションのスクリプトは動かないです。1.8.2 なので。readpartial を sysread にすればとりあえず動きます。どっちでもよさげだから sysread にしとくのが吉か。

    1. トップ
    2. web
    3. ruby-xslt on XREA
    1. トップ
    2. xslt
    3. ruby-xslt on XREA
    1. トップ
    2. ruby
    3. ruby-xslt on XREA