2006-01-01から1年間の記事一覧
GreaseMonkeyのスクリプトはかなり書きやすい。それは良いのだが、探し方がいまいち判らない。googleで検索してもそれほど引っかからないし、repositoryでの探し方もよく判らない。(チラ見で理解できる程の英語力があればrepositoryも使いやすいのかもしれな…
別サイトの宣伝でもしようかな。ここでは私の作ったGreaseMonkeyスクリプトを紹介したりします。 xxxholic(http://kilrey.hp.infoseek.co.jp/gm/xxxholic.user.js) 中毒者の名前通り、mixi中毒や2ch中毒の人向けのスクリプトです。 ユーザーが読み終わった後…
(function(){ var noAction = true; var touch = function(event){ noAction = false; }; window.addEventListener("click",touch,false); window.addEventListener("keydown",touch,false); window.addEventListener("scroll",touch,false); /*------------…
XML->DOMのライブラリが出来た。 あとはNN4でレンダリングに反映させる方法を考えねば。
昨日の理由が判った。 どうやらhtmlの仕様によると、tableの子供にformを持ってきてはいけないらしい。 mixiのhtmlは腐っているということか。
Firefoxで <html> <head> </head> <body> before <table> <form> <tr> <td> test </td> </tr> </form> </table> after </body> </html>のようなhtmlを読むとDOM treeが <html> <head> </head> <body> before <table> <form></form> <tbody> <tr> <td> test </td> </tr> </tbody> </table> after </body> </html>になってしまう。何故?
Netscape Navigater 4で使ってみた。 createElementがないって……、どうしたものかな。
元ネタは http://ma.la/mirrorman/wiki.cgi/IFRAMEHttpRequest なのだが読めなくなっているね。 webarchiveも貼っておこう。 http://web.archive.org/web/20060414173301/http://ma.la/mirrorman/wiki.cgi/IFRAMEHttpRequest とりあえず簡単に言うと iframe…
googleのDOM parserのソースを眺めた。 これなら実装できそう。 分量の大半はNodeクラスのコードになるだろう。
DOMXMLの相互変換を書いている。 IE,Firefox,Operaはデフォルトの機能をラップして同じインターフェースで触れるようにした。 DOM->XMLに関してはデフォルトの機能が使えなくてもそこそこ読める形に変換出来るようにした。問題はXML->DOMである。 結構大きな…
X Libraryの利点はライブラリ圧縮できること、なのだろうか。 まだこの機能は使っていないから良く判らない。
script要素の書き足しで動的にjavascriptを読み込むという手法がある。 それを利用してimportシステムを作った。 .jsファイルごとに依存するファイルを記述する。 既に読み込んだファイルは読み込まない。 という感じになった。なかなか便利。
X Libraryを使って簡易Windowシステムを作ってみた。 割と簡単に書けたのだが、見栄えも悪くない。
X Libraryというのがあった。 http://d.hatena.ne.jp/brazil/20060111/1136987311 で、suggestをX Libraryで書き直してみた。 prototype.jsのbindとkeyCode関連がないことが不便だがなかなか悪くない。 Object汚染がないので安心して利用出来るのも良い。
prototype.jsなのだけど、クロスブラウザ部分しか使っていないのよね。 他に良いクロスブラウザライブラリないかな。
suggestをリファクタした。 prototype.jsへの依存度がアップしてすっきりしたコードになった。
ブラウザ判別してIEでも動くようなコードを入れた。 ちょっと汚い感じになるのは仕方ないのだろうか。 現在3,259byte!4kB以下なら良いとしよう。
と思ったらIEで動かなかった……。
suggestをちょっと書き直した。 大きさはなんと圧縮なしで2,600byte!小さい!味噌はポップアップを使わずにselectを使った点にある。 要するにGUIのコードを書いていない分小さいのね。
google suggestみたいに候補がポップアップするのを作った。 上下キーで選択してReturnを押すとinputの中にそのデータが入る。自分で実装してみると、案外簡単だと思った。 AJAXってアイディアが重要なのかもしれないな。
SPANなどをクリックすると編集できるようにするライブラリを書いた。 FFとIEで動作を確認した。
久しぶりに書くがjavascriptいじりは続けている。 最近はprototype.jsなどAJAXライブラリを中心に遊んでいる。で、ふと疑問に思ったのだが、 prototype.js(ver.1.4.0)の同期通信の挙動が妙だ。 respondToReadyStateにデバッグコードを挿入しても全く反応がな…
マクロについて考えていたことがまとまってきた。 マクロは記述性を上げるものである。 マクロは理解している人にとって可読性が上がるものである(上げるではなく!)。 マクロは理解していない人にとって可読性を下げるものである。 つまり、lispのマクロが何…
=
Schemeを複数人で開発しているときはマクロの扱いはどうなっているのだろう? 皆が好き勝手にマクロを作っていたら可読性が落ちて仕方ない。 ありがちなマクロなら名前衝突の可能性もあるだろう。 身近にLisperがいないので判らぬ。 追記: 考え直したらCでも…
最近初めてGNU globalというものを使った。 いいね、これ。 あとは簡単にコメントが書き込めるようになっていると完璧。
関数呼び出しのためには普通、引数として与えられた式を評価する。 引数同士の評価順は不定とする言語も多いが、大概の言語では引数を評価してから本体を評価する。 これに対して、引数はそれが必要になった時点で評価するようにすればLazyになる。さて、引…
マクロって文法を拡張するものだ。確かに強力だ。 マクロのない言語ではイディオムというものがたくさん生まれる。 マクロのある言語では同じ数だけ(以上?)マクロが生まれるに違いない。 一つのマクロ体系を憶えることは一つの言語を覚えることに等しい。で…
残る問題は清潔なMacroの実装が判らないこと。 要するにパターン言語の実装が判らない。
非常に参考になるコードである。 例えばマクロの実装なんてクロージャの延長で作れるだとか、 特殊手続きをeval loopの中に入れるとシンプルになるだとか、 脱出のみのcall/ccなら例外を使って実装できるだとか。