タグ

ブックマーク / amachang.hatenablog.com (92)

  • そろそろモバゲータウンについて一言いっとくか(タイトルはネタです) - IT戦記

    なんか、以下のブログが喧嘩してるみたいですね http://d.hatena.ne.jp/tksmash/ ホームページを作る人のネタ帳 で、自習室さんは前からたまに読んでたんですが、ネタ帳さんの記事はあまり読んだことがなかったので、読んでみました。 で、モバゲー批判の記事がいっぱいでびっくり モバゲー潜入。『25歳以上♂禁止』とかにへこむ28歳。モバゲーのゲームはおまけだったのか。*ホームページを作る人のネタ帳 モバゲー潜入レポ2。モバゲーは広告をもっとよく選んで表示する義務があるんじゃないかな*ホームページを作る人のネタ帳 モバゲーレポ3。ファミレスで、会話もせずに黙々と携帯をいじる女子学生達に『オヤジ』と言われる*ホームページを作る人のネタ帳 健全に努力しているというモバゲーからのメールは、当に健全か?*ホームページを作る人のネタ帳 『YouTubeにあなたの画像がのってます』と『

    そろそろモバゲータウンについて一言いっとくか(タイトルはネタです) - IT戦記
  • ノードの集合を「ドキュメント順」に高速に並べ替える。その1 - IT戦記

    ドキュメント順とは何か? ドキュメント順とは、簡単に言えば「XML のソース上の前にある順」のこと。 詳しくはこのへんを見てね。 XPath ではこの「ドキュメント順」という概念がよく登場する。 たとえば、ノードを文字列化するときは子孫テキストノードを「ドキュメント順」に文字列として連結しなければならない。とかとか でも、このドキュメント順へのソート 考えただけでもめちゃめちゃ重そうだ・・・。 いろいろ考えてみた。 XPath 実行中はドキュメント順が変わることがないので、DOM アクセスはキャッシュできる。 ノードの集合は木構造で保存したほうが比較回数が少なくてすむ(アルゴリズム初心者なので、実際に早いか検証しないと><) で、今回は DOM アクセスをキャッシュしながらノードを比較する関数を作る 汎用的に作ったので XPath 目的以外でも使えます。 var order = funct

    ノードの集合を「ドキュメント順」に高速に並べ替える。その1 - IT戦記
  • 正規表現の XPath 字句解析その2 - IT戦記

    またまた XPath ネタです。 先日、XPath の字句解析をワンライナーで作ってみた。 - IT戦記で書いた正規表現の XPath 字句解析ですが、よく考えるといろいろおかしかった(不正な文字が無視されたりする)& id:otsune さんからコメントやブクマの突っ込みもありまして、1から正規表現を勉強してから新しく書き直すことにしました。 正規表現の勉強方法 以下の二つの方法で勉強しました。 1.SpiderMonkey の正規表現デバッグオプションを使う SpiderMonkey をビルドするときに、以下のフラグを付けてビルドします。 $ make -f Makefile.ref "DEFINES=-DREGEXP_DEBUG -DDEBUG"こうすると正規表現がどういう風に実行されたかを調べることができます。 こんな感じ $ js js> 'foobar'.match(/o+/)

    正規表現の XPath 字句解析その2 - IT戦記
  • JavaScript で XPath の構文木を考えてみる。 - IT戦記

    またまた パーサーブームの続編です。 昨日は数式のパーサーを作って、帰り道にいろいろ考えたんですけど、普通の言語で考えると構文木って結構複雑になるんじゃないかなあって思いました。 で、横断歩道で明日 XPath の構文木を考えてみようと思ったわけです。 では、仕様と見比べながら XPath の構文木の構造を考えてみましょう。 仕様読むの大嫌いなんですけど、がんばります。 仕様のリンク xpath cover page - W3C まず、冒頭に The primary syntactic construct in XPath is the expression. An expression matches the production Expr. http://www.w3.org/TR/xpath#section-Introduction とあるので、 XPath 全体は Expr である

    JavaScript で XPath の構文木を考えてみる。 - IT戦記
  • IT戦記 - JavaScript で数式パーサを書いてみた。

    背景 いままで、ちゃんとパーサというものを書いたことがなかったので勉強のためにアレコレ考えながらやってみようと思って、簡単な数式を木にするパーサを書いてみようと思ったのです>< 今回作るパーサの仕様 パースする数式の演算子は二項演算子 + - * / と単項演算子 + - だけ。 括弧とかは使わない。 演算の優先順位は * / のほうが + - より高い。つまり、 1 + 1 * 1 は 1 + (1 * 1) 単項演算子は二項演算子より優先順位が高い。つまり、 - 1 + 1 は (-1) + 1 で、作ってみた! ソースコード filter 関数とか使ってるので、 Firefox only です。 var parse = function(source) { var tokens = source.match(/[-+*/]|[^-+*/\s]+|\s+/g).filter(/^[^\

    IT戦記 - JavaScript で数式パーサを書いてみた。
  • IT戦記 - 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 (以下、 xpath.js)なるものがあり Internet Explorer 6 および 7 のような DOM Level 3 XPath を実装していないブラウザでもそれ相当の機能を実装することができる ということで、以下のことを試してみたい!! Safari, Firefox, Opera の XPath のパフォーマンスはどうか? xpath.js のパフォーマンスはどうか? xpath.js は XPath 1.0

    IT戦記 - XPath は実用に耐えうるかの考察と xpath.js
  • ロケーションバーに直入力するとブクマを見に行って補完してくれるコンポーネント作った - IT戦記

    今日徹夜ぎみで作ってみた でも 使ってみたら逆に不便だった>< 勉強になったからいいや。 破棄! もったいないので、今手元にあるソースを貼っときます このソースを Firefox インストールディレクトリ以下の components に入れると textbox 要素で autocomplete="delicious" が使えるようになります。 開発中のものなのでバグありまくりです。 ちなみに、僕が一日に書けるコードはちょうどこのくらいです↓ const Cc = Components.classes; const Ci = Components.interfaces; const Cr = Components.results; const CLASS_ID = Components.ID('{aa892eb4-ffbf-477d-9f9a-06c995ae9f85}'); const C

    ロケーションバーに直入力するとブクマを見に行って補完してくれるコンポーネント作った - IT戦記
  • JavaScript < jQuery < Lisp ? - IT戦記

    はじめに 僕は jQuery も Lisp も触ったことがないので、このエントリが言ってることは間違えてる可能性があります>< もし、「それ違うよ」ってのがあれば指摘してくれると嬉しいです>< そういえば 初めて dankogai さんと会ったときに「S 式とアセンブラは両極端にいながら データ==プログラム というところが同じだ」というようなことを言っていた(気がする)。 データ==プログラムというのは当にすごい データとしてプログラムを直接書き換えたりいろいろなことができる。当にすごい。 もちろん、他の言語でも、リフレクションすることや、変数やプロパティに関数を格納することでそれと似たようなことは可能だ。でもそれは、データ=プログラムとは全然違う。 バイトコード書き換えは似ているが、バイトコードの世界がデータ==プログラムなのであってその言語自体はそうじゃない。でも、バイトコードを

    JavaScript < jQuery < Lisp ? - IT戦記
  • arguments に対して shift するための考察(をしていたらカッとなって配列変換のベンチマーク) - IT戦記

    JavaScript において可変引数を扱う場合 arguments オブジェクトを使います。 function func() { for (var i = 0; i < arguments.length; i ++) { alert(arguments[i]); } }; func(1,2,3) // 1,2,3 を順に表示 そして 可変引数を使うパターンとしては、 すべて可変引数 固定引数と可変引数 の二つに分けることができます。 すべて可変引数 引数が与えられた分だけ同じような処理を行うパターン function add() { for (var i = 0, r = 0; i < arguments.length; i ++) r += arguments[0]; return r; } var r = add(1, 2, 3, 4, 5); 固定引数と可変引数 最初のいくつかの引

    arguments に対して shift するための考察(をしていたらカッとなって配列変換のベンチマーク) - IT戦記
  • IT戦記 - Pathtraq で 2ch コピペブログの人気エントリを作ってみた

    リンク マウント アンマウント | パソコン豆知識 なにかと便利です コピペブログは 2ch をずっとヲチできないときに重宝してますが、数が多過ぎる&質がまちまちなので Pathtraq でまとめてみました。 Pathtraq でまとめておけば、それなりに質の高い(おもしろい)スレが効率的に読めるので便利です。 RSS も吐いているので登録しておくとさらに便利です。 ちなみに、 Pathtraq の解析クエリを使って、トップページやサイトマップなどのエントリとは関係ないページは省いてあるので、実際のエントリのみを見ることができます。

    IT戦記 - Pathtraq で 2ch コピペブログの人気エントリを作ってみた
  • アクセスログ共有サービス Pathtraq リリース! - IT戦記

    Pathtraq リリース! ついに、待ちに待った kazuhooku さん謹製の Pathtraq がリリースされました! サイトはこちら http://pathtraq.com/ Pathtraq とは アクセスログを共有サービスです。 Pathtraq を使うためには、まず、ブラウザに Pathtraq の拡張機能をインストールします。 そうすると、ステータスバーの右のほうに今見ているページおよびサイトの人気度が表示されて、そのページがどれくらいの人に見られているのかを知ることができるようになります。 そして、今自分が見ているサイトの情報をみんなで共有することができます。 家サイトの方にはランキングや特定サイトのアクセス解析機能やブログパーツ生成機能があり、これから続々とおもしろいデータが集まってくるのではないかと思います。 みなさん、ものは試しということでさっそくインストールして

    アクセスログ共有サービス Pathtraq リリース! - IT戦記
  • IT戦記 - Math.floor を使わずに小数を整数にする

    少数を整数にしたいような場合 たとえば、 0 - 9 のランダムな整数が欲しい場合 普通はこう書く var value = Math.floor(Math.random()*10); Math.floor を使わない場合はこう書く var value = ~~(Math.random()*10); 「~」は補数を求める単項演算子で、オペランドを整数変換するので二回やることでオペランドを整数化できるのです。 まとめ でも、もっといい方法があるかも。 皆様なら「どう書く?」のでしょうか。

    IT戦記 - Math.floor を使わずに小数を整数にする
  • シンプルライフ - IT戦記

    職場で僕の家の話しをしたら盛り上がったので、書く 僕の家には、画面付きの小さな DVD プレーヤーと、布団と、ゴミ箱以外の家具がない。 冷蔵庫もコンロもパソコンも洗濯機も(共同のやつを使ってる)もちろん、ネットも契約してないし、テレビもない。 家で一人でいるときは、ずっとケータイでブログか 2ch を見てる。 それで十分で何も必要ないんだ。ほんとに。現代社会はものが溢れてると思う。 部屋は六畳だけど ほぼ、三畳分のスペースしか使ってなくて、反対側にクモの巣が張っていました。

    シンプルライフ - IT戦記
    dbfireball
    dbfireball 2007/08/10
    本とかないの?
  • xmllint で XHTML をバリデーション - IT戦記

    XHTML を書くとき ちゃんと DOCTYPE 宣言で正しい DTD が示されていれば、 xmllint で簡単にバリデーションが出来ます。 $ xmllint --valid --noout hoge.html便利です。 バリデーションが通らなかった場合は、根拠となる DTD が表示されるので勉強にもなります。 Another HTML Lint もいいんですけど xmllint のバリデーションが通ればデータとしては正しいので、 xmllint だけで十分といえば十分。 Another HTML Lint などの「エレガントさ」を計る類いのものは参考程度にしておいて、「エレガントさ」は自分で探していくほうが正しい気がします。

    xmllint で XHTML をバリデーション - IT戦記
  • style.cssText の使い処に関する考察 - IT戦記

    cssText って知ってますか? cssText っていいうのは CSSRule オブジェクトとか CSSStyleDeclaration が持っている情報を css ファイルに書く形式の文字列にしてくれる機能です。 乱暴に言ってしまえば、 css 系のオブジェクトが持っている innerHTML みたいなものです。 具体例を見てみましょう。 こんな感じの body があるときに <body style="margin: 1em; padding: 1em; border: 1em">....</body> こんな感じで使えます。 alert(document.body.style.cssText); // 'margin: 1em; padding: 1em; border: 1em' 簡単でしょう?(ボブ略 設定も出来ますよ こんな感じ // さっきの続き document.body

    style.cssText の使い処に関する考察 - IT戦記
  • どう書く?.org に JavaScripter が少ない・・・。 - IT戦記

    ほら JavaScript http://ja.doukaku.org/lang/javascript/ Python http://ja.doukaku.org/lang/python/ Ruby http://ja.doukaku.org/lang/ruby/ Perl http://ja.doukaku.org/lang/perl/ Java http://ja.doukaku.org/lang/java/ PHP http://ja.doukaku.org/lang/php/ コード見てもらうことは そのコードを見てもらえないことの 10 倍以上の勉強効果があると思う! どーせ、 JavaScript のソースは隠せないんだし! どう書く?.org で色んな人の JS が読みたいです! うほ! 目指せ No.1 言語!

    どう書く?.org に JavaScripter が少ない・・・。 - IT戦記
  • document.createStyleSheet で動的に CSS を生成 - IT戦記

    今まで var element = document.createElement('style'); document.getElementsByTagName('head')[0].appendChild(element); if (ie) { var sheet = element.styleSheet; } else { var sheet = element.sheet; } みたいにやっていた。 ところが dojo のソースを眺めていたら IE には createStyleSheet という関数があるみたい。 createStyleSheet を使うとこうなる。 if (ie) { var sheet = document.createStyleSheet(); } else { var element = document.createElement('style'); doc

    document.createStyleSheet で動的に CSS を生成 - IT戦記
  • Re: new の挙動 - IT戦記

    以下のエントリへの反応です。 new function() { //どうのこうの } は、 (function(){ this={} //どうのこうの return this })(); みたいなことしてるんだろうか。 http://d.hatena.ne.jp/gnarl/20070628/1183009662 this はキーワードなので変数としては使えないのですが、使えるとするならば、ほとんどそれに近い挙動だと 思います。 一つだけ違うのは this がどういうプロトタイプを持つかということです。 new function() { arguments.callee.prototype.hoge = 'hoge'; alert(this.hoge); // hoge }; (function() { var _this = {}; arguments.callee.prototype.

    Re: new の挙動 - IT戦記
  • (function(){})() の代わりに - IT戦記

    jQuery 見てたら (function() { // hoge })(); を new function() { // hoge }; って書いてたー。おー。たしかにー。

    (function(){})() の代わりに - IT戦記
  • IT戦記 - Safari 3 に実装された、当たっている CSS ルールを全て抽出できる getMatchedCSSRules が凄い

    今日は、まだまだ Safari 3 が熱い! window オブジェクトを走査していたら、またしても面白そうな関数を見つけてしまった。 その名も getMatchedCSSRules !!! まずはデモをご覧ください 以下のブックマークレットを任意のサイトで実行すると、コンテンツの下に DOM Inspector のような要素が出現します。 そこで、要素を開いていくと Safari の場合は、どの CSS ルールが当たっているかを見る事ができます。 javascript:(function(){var d=document,s=d.createElement('script');s.className='css-inspector-script';d.body.appendChild(s);s.src='http://amachang.art-code.org/cssInspector.j

    IT戦記 - Safari 3 に実装された、当たっている CSS ルールを全て抽出できる getMatchedCSSRules が凄い