はてなの入力欄で動く xml-modeそれのナロー化 css-mode

バグバグだけどなんか今日はもうやる気しない。留年しそうなんだもん。一個単位数え間違えてた。これから軽く必死こいても、あがれる確立20%ぐらい。はぁーうまくいかない。

  • インデントしないエリアにバグ。閉じた直後の RET がおかしい。いままでずっと CDATA で囲ってたから気付かなかった。
  • css-mode の開き括弧直後の RET がおかしい。
  • 補完リストの位置がおかしい。offsetLeft がおかしいのか?
  • はてなのエリアだと右下の広げるやつを一回やっとかないと横に伸びる。はてなの JS とのコンフリクト

物好きの方がいたらどうぞ。eta.user.js

余計なことしなくていいよモード (謎) は M-x c RET

  1. トップ
  2. javascript
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. firefox
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. script
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい
  1. トップ
  2. xml
  3. GreaseMonkey スクリプトのデバッグが激しく面倒くさい

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

  1. トップ
  2. css
  3. なぜホームページだけ表示が崩れていたか
  1. トップ
  2. web
  3. なぜホームページだけ表示が崩れていたか

ちゃんとエラークラス吐くバージョンがリリース。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) のとき前のエラーメッセージが紛れ込む。クラス変数使ってるからだろうけど、単純にインスタンス変数にしないのにはなんか理由があるんだろうからとりあえずそのままにして、

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

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

  1. トップ
  2. xslt
  3. ruby-xslt 0.9.1
  1. トップ
  2. ruby
  3. ruby-xslt 0.9.1
  1. トップ
  2. xml
  3. ruby-xslt 0.9.1

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 になりまくる。いぢめ。

  1. トップ
  2. xrea
  3. visitors on xrea
  1. トップ
  2. log
  3. visitors on xrea

違いがわからんうえに、ちゃんとキーボードと対応してない。英語キーボードだとちゃんと対応してんのか?

e.which, e.charCode, e.keyCode, String.fromCharCode(e.which) の順で、前者が keydown、後者が keypress。環境は Firefox 1.0.7

;
61 0 61 = / 59 59 0 ;
C-;
61 0 61 = / 61 61 0 =
C-+ (Ctrl+Shidt+;) テンキー側の C-+ は問題なし
61 0 61 = / 61 61 0 =
C-:
59 0 59 ; / 59 59 0 ;
C-| (Ctrl+Shift+\)
220 0 220 テ・ / 発生しない
C-a
65 0 65 A / 97 97 0 a
C-F1
112 0 112 p / 0 0 112

差が一定ってわけじゃないし、どうやってマッピングすればいいか見当がつかない。さらに IE だとイベントが発生するタイミングがまた全然違う。帰れ。

Gecko_DOM_Reference:Examples#Example_7:_Displaying_Event_Object_Constants

つまり、正確に処理するにはキーボード配置を自分で作らないとダメなわけか。入力された文字を取得したいのに、入力されたキーしか取得できない。Gecko の e.charCode って charCode じゃないだろ。

それにしてもなんでセミコロンの位置でDOM_VK_EQUALSなんだろう。わからん。

  1. トップ
  2. javascript
  3. Event.which, Event.charCode, Event.keyCode
  1. トップ
  2. script
  3. Event.which, Event.charCode, Event.keyCode
  1. トップ
  2. dom
  3. Event.which, Event.charCode, Event.keyCode