IT戦記

プログラミング、起業などについて書いているプログラマーのブログです😚

2007-08-01から1ヶ月間の記事一覧

XPath のパーサ書いた

ふー。XPath パーサが出来ましたよ>< わーい。 昨日中に作ろうとは思っていたけど>< もうすぐ朝の 6:00 か。 もう 18 時間くらいはずっとコード書いてたんだなあ。集中してて時間が過ぎるのが一瞬だったよ。 XPath パーサのデモ http://amachang.art-cod…

正規表現の XPath 字句解析その2

またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みも…

JavaScript で XPath の構文木を考えてみる。

またまた パーサーブームの続編です。 昨日は数式のパーサーを作って、帰り道にいろいろ考えたんですけど、普通の言語で考えると構文木って結構複雑になるんじゃないかなあって思いました。 で、横断歩道で明日 XPath の構文木を考えてみようと思ったわけで…

XPath の字句解析をワンライナーで作ってみた。

ソースコード var expression = '/html/body/div/[attribute::class="hoge fuga piyo"]'; var tokens = expression.match(/"[^"]*"|'[^']*'|\d+(?:\.\d*)?|\.\d+|\*|\/\/|\/|\||\+|!=|<=|>=|<|>|=|\(|\)|\[|\]|\.\.|\.|@|,|::|-|(?![0-9-:])[\w-]+:\*|\$(?:(…

JavaScript で数式パーサを書いてみた。

背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * /…

XPath は実用に耐えうるかの考察と xpath.js

背景>< Safari 3 系から DOM Level 3 XPath が実装されました!!!キタコレ!!! Firefox 2 系は DOM Level 3 XPath が実装されている。 Opera 9 系は DOM Level 3 XPath が実装されている。 XPath 1.0 in JavaScript • Cameron McCormack's blog (以下…

ロケーションバーに直入力するとブクマを見に行って補完してくれるコンポーネント作った

今日徹夜ぎみで作ってみた でも 使ってみたら逆に不便だった>< 勉強になったからいいや。 破棄! もったいないので、今手元にあるソースを貼っときます このソースを Firefox インストールディレクトリ以下の components に入れると textbox 要素で autoco…

JavaScript < jQuery < Lisp ?

はじめに 僕は jQuery も Lisp も触ったことがないので、このエントリが言ってることは間違えてる可能性があります>< もし、「それ違うよ」ってのがあれば指摘してくれると嬉しいです>< そういえば 初めて dankogai さんと会ったときに「S 式とアセンブ…

久しぶりの Shibuya.JS

久しぶりの Shibuya.JS を開催するます>< 今日の夕方から募集なので、ぜひぜひ聞きにきてください。 僕は、クロスブラウザ系のお話をします。INSIDE Gecko では、あの最速でチュパカプラな主任研究員が登場します・・・!!これはすごい。 詳しくはこちら …

Re: ひとりとか

おかげさまで人脈は広くなってウェブな著名人の方と 仲良くさせていただいているわけですが それを自分の実力と勘違いしないでおこうと思う。 http://d.hatena.ne.jp/dropdb/20070821#p1 俺も勘違いしないようにしよう。 あとでもうちょっと書くかも。 http:…

arguments に対して shift するための考察(をしていたらカッとなって配列変換のベンチマーク)

JavaScript において可変引数を扱う場合 arguments オブジェクトを使います。 function func() { for (var i = 0; i < arguments.length; i ++) { alert(arguments[i]); } }; func(1,2,3) // 1,2,3 を順に表示 そして 可変引数を使うパターンとしては、 すべ…

はてなスターとはてなブックマークはいい組み合わせだと思う

なんか はてなスターとはてなブックマークはいい組み合わせだと思った。 そう思ったきっかけは このエントリを見ていて 誰もが最高級品を使える経済 - アンカテ ふむふむおもしろいなー。って思って。 じゃあ、みんなはどんな反応をしているんだろうと思って…

Pathtraq で 2ch コピペブログの人気エントリを作ってみた

リンク マウント アンマウント | パソコン豆知識 なにかと便利です コピペブログは 2ch をずっとヲチできないときに重宝してますが、数が多過ぎる&質がまちまちなので Pathtraq でまとめてみました。 Pathtraq でまとめておけば、それなりに質の高い(おも…

JavaScript 第5版 を読んでみたよ

今日の朝 オライリー・ジャパンから「サイ本最新作」こと「JavaScript 第5版」が送られてきてたのでガーっと読んでみたよ。弾さんより早く書評を書こうと必死だったのは内緒だよ。JavaScript 第5版作者: David Flanagan,村上列出版社/メーカー: オライリー・…

Math.floor を使わずに小数を整数にする

少数を整数にしたいような場合 たとえば、 0 - 9 のランダムな整数が欲しい場合 普通はこう書く var value = Math.floor(Math.random()*10); Math.floor を使わない場合はこう書く var value = ~~(Math.random()*10); 「~」は補数を求める単項演算子で、オペ…

IEを華麗に撃墜する一行

はい! こんにちは!!!!! 今日は、偶然ブラクラ発見しちゃったから、それをお伝えしますね!これだよ! <script>document.createStyleSheet().addRule('html > body', 'display:block');</script> → サンプル (IEだとブラウザが固まった上にメモリ 1.5 GB くらいくっちゃ…

配列を結合したり、配列を初期化したり

既出かもー 配列の結合 var array1 = [1, 2, 3]; var array2 = [4, 5, 6]; [].push.apply(array1, array2); alert(array1); // [1, 2, 3, 4, 5, 6] 3文目で空配列を使ってるのは書くのが短いからってだけ。 配列の初期化 function hoge() { var args = []; …

シンプルライフ

職場で僕の家の話しをしたら盛り上がったので、書く 僕の家には、画面付きの小さな DVD プレーヤーと、布団と、ゴミ箱以外の家具がない。冷蔵庫もコンロもパソコンも洗濯機も(共同のやつを使ってる)もちろん、ネットも契約してないし、テレビもない。家で…

アクセスログ共有サービス Pathtraq リリース!

Pathtraq リリース! ついに、待ちに待った kazuhooku さん謹製の Pathtraq がリリースされました! サイトはこちら http://pathtraq.com/ Pathtraq とは アクセスログを共有サービスです。 Pathtraq を使うためには、まず、ブラウザに Pathtraq の拡張機能…

LL 魂

いよいよ 明日ですね!こんなにも資料が出来てないと明日というのが信じられません! 遠足の前日とは違う意味で眠れません>< でも、諦めたらそこで試合終了です。安西せんせい。 LL 魂に来るハテナーは |☆+| をクリック! スター!スター!会場で探します…

HTML5 のバリデーションを行ってくれるサービスがある

まだ Tech Preview 版ですが WHATWG の HTML5 のバリデーションを行ってくれるサービスを発見しました。 http://html5.validator.nu/ 新しいものを追いかけたい人にはいい気がします。 僕もその一人です。

body の overflow: hidden が変

以下のようなコードがあって ... <html> ... <body> <div></div> </body> </html> body が overflow hidden で幅固定で div が横に伸びていったら div は body を「はみ出ない」と思うんだ。 でも、ブラウザによってははみ出てしまう。 Opera 9 はみ出る Safari 3 はみ出る Firefox 2 はみ出ない I…

xmllint で XHTML をバリデーション

XHTML を書くとき ちゃんと DOCTYPE 宣言で正しい DTD が示されていれば、 xmllint で簡単にバリデーションが出来ます。 $ xmllint --valid --noout hoge.html便利です。 バリデーションが通らなかった場合は、根拠となる DTD が表示されるので勉強にもなり…