久しぶりに SONIC DEAD KIDS を聞きなおす。やっぱ、全然今のアートとは違う。昔のほうが好きだ、とあらためて思った。一番好きなのは MISS WORLD だけど。
レモン畑であの娘は
GreaseMonkey スクリプトのデバッグが激しく面倒くさい
はてなの入力欄で動く xml-mode と それのナロー化 css-mode
バグバグだけどなんか今日はもうやる気しない。留年しそうなんだもん。一個単位数え間違えてた。これから軽く必死こいても、あがれる確立20%ぐらい。はぁーうまくいかない。
- インデントしないエリアにバグ。閉じた直後の RET がおかしい。いままでずっと CDATA で囲ってたから気付かなかった。
- css-mode の開き括弧直後の RET がおかしい。
補完リストの位置がおかしい。offsetLeft がおかしいのか?はてなのエリアだと右下の広げるやつを一回やっとかないと横に伸びる。はてなの JS とのコンフリクト
物好きの方がいたらどうぞ。eta.user.js
余計なことしなくていいよモード (謎) は M-x c RET。
なぜホームページだけ表示が崩れていたか
XML 宣言を省略したことにより、IE で描画モードが変わっていたせいみたいだ。唐突に思い出して omit-xml-declaration="no" にしたらなおった。でも CSS で解決する方法がないっぽいのはどうすればいいんだろ。標準モードで描画させないほうがいいんじゃないか。
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) のとき前のエラーメッセージが紛れ込む。クラス変数使ってるからだろうけど、単純にインスタンス変数にしないのにはなんか理由があるんだろうからとりあえずそのままにして、
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
スレッドの切り替えってどういうタイミングなんだろう。
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
になりまくる。いぢめ。
Event.which, Event.charCode, Event.keyCode
違いがわからんうえに、ちゃんとキーボードと対応してない。英語キーボードだとちゃんと対応してんのか?
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なんだろう。わからん。
*-mode in textarea
テキストエリアの管理部分と、モード用機能を分離してみた。似非ミニバッファ搭載!
新しくモード用のオブジェクト (関数) をつくればいい感じに。まぁあんまり綺麗な実装じゃないんだけど……
似非ミニバッファは M-x でフォーカス移動。入力した内容を eval した結果を挿入。M-x new Date() RET とかやれば Sat Nov 05 2005 06:57:29 GMT+0900
みたいに挿入される。ただの eval なのでグローバルに見えてる関数じゃないと使いにくい。
モードはテスト用に xml と c (中身は未実装)。M-x c RET とかやるとモード変更。これは特別に判定させてる。
余談だけど M-x (new Date()).w3cdtf() RET とか眠い。
再び Firefox 限定になりました。IE と Gecko とだと、イベント起きたときの e.which とか e.keyCode とかがバラバラなんだもん。IE は Ctrl+* で keypress が発生しないし。
まぁ色分けできない textarea ではかなり微妙な感じになってきました。XML はインデントさえまともなら色ついてなくてもいい (逆にインデントがまともじゃないと色がついてても読めない) んだけどねぇ。
リージョンをサポート。C-SPC でマーク。C-w (kill-region), M-w (copy-region-as-kill), C-y (yank), C-x n (narrow-to-region), C-x w (widen)
しにがみのバラッド。@電撃hp 38
電撃 hp 2005 OCTOBER VOLUME 38 「しにがみのバラッド。てのひらの銀河<前編> Cherish You (Side-A)」 76ページ にヘッドフォン娘がっていう話を友人から聞いて貸してもらった。絵のやつはアートモニターシリーズっぽいヘッドフォン。
作中にデムパったヘッドフォンガールがでてくるんだけど、名前が黒崎クロエ。笑うって。笑うって。
樋浦トイロってなんだっけっていう感じだったけど親父の話が出てきたところで思い出す。あぁ。あぁ。とかなんとか。
臭いがするのは、メロディーフラッグ (BUMP OF CHICKEN)・MISS WORLD (ART-SCHOOL)・乾いた花 (ART-SCHOOL)・鋼鉄の朝 (BURGER NUDS) trick or treat (Good Dog Happy Men)
なんか消化しきれてないんだなぁって思った。ばらばらというか、なんというか。思い込みの激しい登場人物が多いとかなんとか誰かが言ってました。
ヘッドフォンの役割は理想的だった。役割なんて1つしかないけど。
スウィングガールズ
動的補完 in textarea
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["]
};
Bloglines can't find my feed
2005-10-20 を最後に更新されてないらしいです。たぶん DNS エントリ消したせいなので復活させて 301 投げなおします。いままで 301 返してたつもりだったんだけどなぁ。今 eNom がメンテ中でなにもできん。
DNS 更新 / ドメイン設定 / リダイレクト設定 が終わった。Bloglines 巡回待ち。
1時間以上たったけど更新されないな。ちゃんとリダイレクトされているんだけど。Bloglines の挙動をまとめたページとかないのかなぁ。わけわからんよ。
似非 xml-mode in textarea
制限つきながら、IE でも動くように。閉じタグ補完とかだけ。
Ajax による Full IME のコードをパクっています。
keypress 時のコードがうまくかければもうちょい使えるだろうけど、いかんせん IE はデバッグしにくいのでやる気起きない。Opera も。
Feed クロールの混乱
mixi の最新日記も更新されないなぁ。わからん。なにが悪いのか全然分からん。
Fucking IE
IE がモノとして存在していたら、とりあえず床に叩きつけ、五階建てマンションのベランダから踏み切りにほうりなげ、電車によりつぶされる様なストーリーを連想したりするんだけど、きっと IE がモノとして存在するとすれば、東京タワーあるいはもっとよくわからんデカイものなのだろうから、叩きつけることも、五階建てマンションのベランダから放り投げることもできないし、ましてや踏み切りにいきなり東京タワーなんて現れた日には事故どころじゃないよサイコキネシスだ、とここまで書いてちょっと切なくなってきた。つまるところ今なんでこのトップページだけが IE でズレて表示されるのか全くわからなくてむかついていたわけです。CSS のどこ書き換えてもなおらねぇ。a { border: 1px solid red } とかやるとなおるけどな!!
というか、なんでトップページだけなんだよと。意味わかんねぇよと。IE なんて死んでしまえばいいんだ。ほんとうに。でも俺と IE どっちのほうが価値があるかっていったら明らかに IE さんなわけで、あぁ、これはきっと僻みなんだな。俺ってばバカなやつ、あはは。とかなんとか。
自動筆記で日記書くのって頭悪いなぁ。なぁ。
そんなわけで、もう知らない。知らないったら知らないよ!!!!
Bloglines sanitize <script>alert("unco");</script>
なんか Bloglines が title を sanitize しない気が。。。
title に &lt;textarea&gt; って書いたやつ (すなわちタグじゃなく実態参照) からバグって表示される。なんですか。いぢめ食らってますか僕。
script じゃダメっぽいな。textarea だけか。
で、いつリダイレクトのほうの URL に書き換わるんだろう。
キーバインドの実装
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+記号を入力すると文字が誤認される。
xml-mode in textarea
まだまだバグがあるんだけど、ぶっちゃけ微妙に飽きてきたので公開 (してモチベーションあげる作戦)。Firefox でしか確認してない。IE では絶対動かないだろう。Opera でもたぶん動かないだろう。問題なのは setSelectionRange, selectionStart。綺麗にクロスブラウザ化するスクリプトをどっかで見たけどまぁいいや。
keydown/keyup は shift とかを単体で押しても反応しやがるので困った。keypress はイベント発生時点で、まだ textarea.value に文字が入力されないのが困った。かなりキモイ方法で解決したけど、スマートなのは keypress 単体を使って、文字入力をキャンセルする方法かなぁ。できなかったけど。
キャレット位置がおかしいバグがなおせたらそこそこ実用になるかな。
dump() しまくってるので Fx のコンソール表示させてると楽しいですよ。なにがだよ?
TAB 以外の文字でのインデントは一切考えていません。必要性を感じませんから。
属性に/を書こうとすると空要素タグ補完されてうざい。文字列の中にいるか外にいるか調べられればいいんだけどうまくいかない。タグの中の"[^"]*"をスキャンするとかなんとか。たまに補完後のキャレットの位置がおかしい。原因・再現性不明- CDATA を見事に無視してインデントする。そんなに難しくないと思うけど、面倒くさいと思う。大して使わないのでどうでもいいちゃどうでもいい。
- <empty-tag /></close-tag> みたいなときインデント崩れる。原因は空要素タグを最初から無視しているせいなんだけど、これ修正するのはめんどい。
二年次専攻コース洗濯
というか二年次にあがれるんだろうか、とか思いつつ。あれ本当に微妙に危険な香り。2-3個落としそうだよなぁ。いくつ落としたらだめなんだっけなぁ。えーっと専門26単位必修で、20単位取得できないと二年次になれない。っていうかやばくね。やばくね。いまさら感が激しいけどやばくね。どうしよ。どうしよう? よく考えると教養科目を今年度とってないな。やばいな素で。まぁ仕方ないよなぁ。はぁ。
まぁどうにかなるよなぁ。なってほしい。なれよ。とにかく、二年次で情報システム関係にいくか情報デザイン関係にいくか微妙に迷ってたんだけど、情報デザインのほうがよさげなのでとりあえず決定。グループワークが多いらしいのが不安だけど、結局そのうちやることになるから仕方ないか、と、いう、か、殆ど学校で口開かないのは危険なんじゃと思い始めた。挨拶ぐらいしかせんな。
最近現実に対してリアルに諦めはじめて、リアリティにとんだ夢の世界のほうがリアルにいいんじゃないかと思いはじめた。結局いま見ている風景とか、街で歩きタバコしている宇宙人とか、どこに伝えたいことがあるのかわからない音楽とか、そういうのもとかも、無意識のうちに自分が望んで見ているものなわけで、この世界のこの地域の言語でいうならまさしく幻想というか、限りなく中核に近いところで繰り広げられるパッチワークに対して面白さを抱けないみたいな。でもこんな考えもそのパッチワークに含まれた布切れの一部で、実際にはまったく中核に近づいていない可能性もあったりするのだけれど、これまたどうしてもこの考えが間違っているとは思えない。そういう世界、で片付いてしまうのはつまらないけど、現実的だと思う。無意識が無限大に近いような世界フレームを繋ぎ合わせて、脳に刻み込んでいくだけ。「脳」も「無意識」も象徴的でしかない。象徴というか比喩か。どっちでもいいんだ。結局今この世界の中で、この世界について正確に記述することは絶対に不可能だから。この世界は「脳」で考えている、ということになっているだけ。本当は「他人」すら存在しない。つまんないなぁ。無限再帰ループ。alert() はマジでうざいからはやく対処法ください。
Canon EXPO 2005 in Tokyo
昨日行ってきた@品川・新高輪プリンス。前回 (2000) より全然人が多かった。特に内定者がいっぱい……
そんなにおもいっきり面白い展示があったわけじゃない気がする。SED ぐらいかなぁ。SED は確かに綺麗だった。綺麗だったけど庶民には関係なさそうで略。EOS-5D を持ってみたけど重かった……そして全然関係ないところ (AF フレームがファインダーに映るとか) に感動してた。どれにでもついてるよボケ。Wireless IXY は意味があるのか疑問だったんだけど、実際見てみてやっぱり疑問だった。デジタル一眼が Wireless でコンピュータに直接転送できたら便利かもしれないけど、アマチュアには関係ない話だなぁとかなんとか。
ってことで面白さとしては携帯プロジェクタがなんかやけにかっこよくてよかった。チラついてたけど。
ソフトウェア関連で Microsoft と云々が……Canon のカラーマネージメントソフトウェアが Windows Vista に搭載されるとか、ぶっちゃけどうでもいいのでよく見てこなかったけど……
なんかあとは自動システムが多かったなぁ。顔識別・笑顔識別・オート追尾とか。
デジタル一眼欲しい。
印刷データ管理とかいってるけど、印刷しなくてすむようなシステムになるべきとか言ってたらキヤノンはプリンタ作ってんダカラ!とか怒られた (誰に)。わろす。
ruby-gd
/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
意味分からん。いつかはちゃんと動いていたのになぁ。拡張ライブラリが反抗期で僕は悲しい。
新しいサイトスタイルを考えたけどどうしようか以下略
質素かつやりたいほうだいかつファンタジーな感じにしようと試行錯誤してとりあえず画像は作ったんだけど、どうあがいても実装できないので構造をちょっといぢっちゃおうかな!バレないよね!とか思ったりしたり。とか書いたらバレるじゃんかよ。誰だよこれ書いたやつ。
年賀状も同じ系統にしようかと思ってる。flickr の CC 画像をコラージュしようと思ってたんだけど微妙にそれさえめんどくさくなってきた。ああ、どんどんダメ人間に。どうせダメ人間だよ。悪いかよ。もともとダメ人間だよ。うるさいなぁ。
ちょっとごめんトイレ行って来る、なんて言って席を立ったはいいけど、戻ってきたら自分の座る場所がなかったとか、がんばって作ったはいいけど使われなかったとか、一緒に選んだもののせいで悲しい眼をする誰かを見るとか、そういう気分。たぶんそれいっぱいある。きもちわるいぜ。ぜ。ぜ。ぜ。
つまらないから寝るよ。寝ようよ。夢の中は素晴らしいぜ。
あぁそうそう、言うのを忘れていたけれど、僕は妖精と暮らすから君は君なりに生きてくれよ、って彼がいってたよ。