メモ代わり。てきとーに。 いや、ですからてきとーですって。 2年前ぐらいにPythonあたりでメールくれた方、ごめんなさい。メール紛失してしまい無視した形になってしまいました。。。

2008年6月11日水曜日

[mod_chxj][css] CSSのセレクタ選択ルーチン

とりあえずCSSのセレクタファインダができた。

できたといっても

  • 全称セレクタ
  • タイプセレクタ
  • 子孫セレクタ
  • 子供セレクタ
  • クラスセレクタ
  • IDセレクタ
を見つけることができるだけ。
上記の組み合わせであれば大抵の場合見つけることができる。

さて、次は
擬似クラスをどう扱うかを考える。
あと、外部参照先がローカルの場合はHTTPリクエストを発行しないようにしよう・・。

-- 追記
擬似クラスは別途擬似クラス抽出ルーチンを用意する。
=>擬似クラスは内部参照に変換予定。
属性セレクタにはとりあえず対応しない。

-- 追記
とりあえずa:link a:visited a:focusの抽出はできた。

>あと、外部参照先がローカルの場合はHTTPリクエストを発行しないようにしよう・・。
とりあえず面倒なんで後回し。
.

2008年6月9日月曜日

[libcroco] 子供セレクタのバグ?


 a > .def#id1 > c { ... }
 

といった感じのセレクタを指定した場合、

a.def#id1 > c
 

と認識されてしまう・・・。

a > *.def#id1 > c { ... }
 

と、全称セレクタを明示的に指定すれば問題なし。

これはバグだよね?

.

2008年6月7日土曜日

[pcre] pcre_execのovector

個人的メモ。

pcreのpcre_exec()関数のovectorについて。


ovector[偶数番目]


は、マッチした文字列が何文字目から始まるかがセットされる。


ovector[奇数番目]
 

は、マッチした文字列が何文字目で終わるかがセットされる。

ovector配列の要素数は、

パターンのサブパターン、グルーピングしたものの数 * 3
 

だけ確保する。 * 3は三倍の意。
三倍にする理由は、
  1. 何文字目で始まるか
  2. 何文字目で終わるか
  3. 作業領域
に使用するからだそうで。

.

2008年6月6日金曜日

[Python] Pythonクイックリファレンス

やっと読破。

さて、次は何を読もうかな。

Jythonでも見ておくか。

ところでJythonを今まで「ジェイソン」って読んでたけど
これ「ジャイソン」が正解なのね・・・
.

2008年6月1日日曜日

[mod_chxj] libxml2を使ってみたが・・・

mod_chxjのパーサにlibxml2を使おうと思って、libxml2を使ってみた。

が、エラー通知をオフにするとエラーが通知できない(そりゃそうだ)
エラー通知をオンにするとxmlCtxtでやるとエラーだらけで、htmlCtxtを使うと
HTMLでないタグがエラーになってしまう・・・。

うーむ。やり方がまずいのかもしれないが、
とりあえずはlibxml2は使わないことにしようと思う。

ということでlibcrocoでもCSSOMでなくて当初考えていたSACで。
さらに自力でSelector検索機能を実装する。(うへー)

.

2008年5月30日金曜日

[stone] stoneを使う

結構昔から使っているんだけど、
最近のはmakeするときに-DUSE_EPOLLが定義されちゃうんで
My Linuxではコンパイルが通らない。。(kernelが2.4のため・・・)

ま、これは-DUSE_EPOLLをはずしてコンパイルすればよいっと。

で、stoneをKILLしてすぐに再起動するとエラーになっちゃう。
ま、しょうがないと言えばしょうがないんだけど、ちょっと使いづらいので、
tcpserver(djb)のまねしてreuseソケットを使うようにした。


diff -Nur stone.orig/stone.c stone/stone.c
--- stone.orig/stone.c 2006-09-17 09:53:35.000000000 +0900
+++ stone/stone.c 2008-05-30 12:52:01.000000000 +0900
@@ -3676,6 +3676,10 @@
return 0;
}
saPort(csa, 0);
+ {
+ int opt = 1;
+ setsockopt(sd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof opt);
+ }
if (bind(sd, csa, csalen) < 0) {
#ifdef WINDOWS
errno = WSAGetLastError();



んで、そんときの何の役にも立たないパッチ。


そんだけ。
.

2008年5月26日月曜日

[その他] 岡山

先日ちょっと用があって岡山に行ってきた。

初岡山上陸。

ひとつ気になったことがある。
それは、エスカレータの乗り方。


大阪なんかだと急いでいる人用に左側を空けて乗る。
東京なんかだと急いでいる人用に右側を空けて乗る。

ところが、岡山では、思いっきりばらばら。
きっちり左よっている人ときっちり右に寄っている人が
入り乱れた感じ。
だもんで、お急ぎルートが無い!
いや、実に見事にばらばらでした。
(新幹線乗り場のエスカレータだから?)

ちょっと面白かったんで、書いてみた。
おしまい。
.