タグ

ブックマーク / llamerada.hatenadiary.org (8)

  • JavaScriptによる全文検索エンジン - llameradaの日記

    JavaScriptでインデックス型の全文検索エンジンを作ってみた。全文検索エンジンを作る際に問題となるのは、インデックスデータを部分的に読み込む方法である。通常はmmapやpreadなどを使ってファイルの一部を部分的に読み込むのだが、もちろん、ブラウザには使えない。ブラウザでファイルの一部分を読み込むには2通りの方法がある。1つは、ファイルを多数のファイルに分割する方法であり、もう1つはHTTPリクエストのRangeヘッダを利用して、ファイルの一部を取得する方法である。前者の利点は、ブラウザのキャッシュが効くことや、対応ブラウザが多いことである。後者の利点は、ファイル数が少なくなるので、インデックスの管理が容易になることである。今回はRangeヘッダの実用性にも興味があったので、後者の方法を用いた。 参考ページ:最速インターフェース研究会 :: Ajaxを使ったシンプルなチャット 転置イ

    JavaScriptによる全文検索エンジン - llameradaの日記
    Wacky
    Wacky 2007/01/24
  • HTML要素を抜き出す正規表現の自動生成プログラム - llameradaの日記

    HTML要素を抜き出す正規表現を自動生成するプログラム html2regexp を作ったので公開します。 札幌市で賢い借金返済方法を教えます! 使い方は簡単で、HTMLファイル中の抜き出したいHTML要素の先頭タグの末尾にh2rと書き加えるだけです。例えば次のように指定します。 <ul> <li><a href="hoge" class="h" h2r>hoge</a></li> <li><a href="huga" class="h" h2r>huga</a></li> </ul> <div> <a href="f">f</a> </div>すると、html2regexpは、2つのa要素を抜き出す次の正規表現を生成します。 (<(\w*?)\s*([^>]*?" class="h"[^>]*?)>(.*?)<\/\2>)HTMLを抜き出して利用したり、Webアプリケーションのテストなどの

    HTML要素を抜き出す正規表現の自動生成プログラム - llameradaの日記
    Wacky
    Wacky 2006/10/21
    HTML要素を抜き出す正規表現を自動生成するプログラム html2regexp を作ったので公開します。
  • llameradaの日記 - 任意のコマンドをreadline化するRubyスクリプト

    telnetなどのreadlineが組み込まれていない環境で入力を間違えた場合、ctrl+BSで文字を削除する(bash環境)。これでも十分ではあるが、慣れ親しんだemacsキーバインドが使えた方が便利だと思った。 そこで、任意のコマンドをreadline環境下で実行するスクリプトrl.rbを作ってみた。使い方は下記のようになる。 rl.rb telnet d.hatena.ne.jp 80 対話環境でctrl+h(1文字削除), ctrl+a(行の先頭へ移動)などが使えるようになる。また、ヒストリも有効にしてある。ただし、^]などのエスケープ・シークエンスが送れなくなるので注意すること。 コードは下記。ライセンスはrubyと同一とする。 #! /usr/bin/env ruby # rl.rb - readline wrapper # by llamerada (http://d.hat

    llameradaの日記 - 任意のコマンドをreadline化するRubyスクリプト
    Wacky
    Wacky 2006/04/15
    対話環境でctrl+h(1文字削除), ctrl+a(行の先頭へ移動)などが使えるようになる。また、ヒストリも有効にしてある。
  • JavaScriptで簡易スタック・トレース&プロファイラ - llameradaの日記

    しばらく前にJavaScriptでのスタック・トレースの保存が話題となっていた。 最速インターフェース研究会 :: JavaScriptでDebugScreen、その2 http://d.hatena.ne.jp/brazil/20060117/1137427933 これらの記事を読んだとき、以前作ったプロファイラの仕組みを利用すれば、簡単なスタック・トレースならば保存できそうかなと思った。そこで、試しに作ってみた。コードは下記。 var FuncCallObserver = function(){ var self = this; self.listeners = ; self.observing = false; self.observe = function(object, name){ name = name || object.constructor; for(property

    JavaScriptで簡易スタック・トレース&プロファイラ - llameradaの日記
    Wacky
    Wacky 2006/01/28
    プロファイラの仕組みを利用すれば、簡単なスタック・トレースならば保存できそうかなと思った
  • llameradaの日記 - Ruby on Railsによるソーシャル・ブックマーク管理デスクトップ・アプリケーション

    Ruby on Railsで作成したweb アプリケーションは、exe形式の実行ファイルにすることが出来る。詳しくは、Distributing Rails Applications - A Tutorialを参照のこと。 この仕組みを知って、何か面白いことが出来ないかなと考えていた。そこで、前から欲しかったソーシャル・ブックマーク管理デスクトップ・アプリケーションを作った。現在のところ、del.icio.usとはてなブックマークに対応している。 何故、こんなアプリが欲しかったいうかというと、自分のブックマークを迅速に検索したいからだ。私はソーシャル・ブックマークとしてdel.icio.usを使っているが、del.icio.usのサーバはそれなりに重い。そのため、目的のブックマークを探し出すのに時間がかかってイライラすることがある。 デスクトップ・アプリケーションならば、計算資源に余裕がある

    llameradaの日記 - Ruby on Railsによるソーシャル・ブックマーク管理デスクトップ・アプリケーション
    Wacky
    Wacky 2006/01/12
    Ruby on Railsで作成したweb アプリケーションは、exe形式の実行ファイルにすることが出来る。
  • Makeを利用したJavaScriptファイルの結合・圧縮 - llameradaの日記:

    ある程度の規模のJavaScriptプログラミングでは、モジュール毎に、複数のファイルに分割してプログラミングするのが普通である。これは、ファイルの大きさが適度な方が編集作業が容易なのと、モジュールの別プロジェクトへの再利用性を高めるためである。 しかし、ブラウザ・アプリケーションでは、複数ファイルを1つのファイルに結合する方が望ましい。なぜならば、複数ファイルへの分割は、サーバへの多数のHTTPコネクションの発生を意味し、応答性が低下する。そのため、例えば、Google Mapsでは、多数のコードが100kbを超える1つのJavaScriptファイルにまとめられている。 また、ユーザの利便性を高める意味では、JavaScriptファイルの圧縮も重要である。JavaScriptの文法的な意味は保存したまま、ファイルサイズを圧縮することにより、ダウンロード時間を短くできる。また、圧縮により、

    Makeを利用したJavaScriptファイルの結合・圧縮 - llameradaの日記:
    Wacky
    Wacky 2005/12/06
    可読性向上の為、複数にファイルを分け、makeツールを使って統合・圧縮。なるほど、そういった使い方もあったかと膝ポン
  • JavaScriptの簡易プロファイラ - llameradaの日記

    JavaScriptで少し大きなアプリケーションを作っていると、処理速度がどんどん遅くなってしまうことがある。処理速度を向上させるには、ボトルネックとなっている処理を見つけて、その部分のパフォーマンスを改善するのが一般的である。そこで、ボトルネックを見つけるのに便利なプロファイラを作ってみた。 コードはこちら。 var Profiler = Class.create(); Profiler.prototype.extend({ initialize: function(){ this.keys = []; this.records = {}; }, observe: function(object, name){ name = name || "Method"; for (property in object) { if(typeof object[property] == "functi

    JavaScriptの簡易プロファイラ - llameradaの日記
  • llameradaの日記 - JavaScript でマルチスレッド・デザインパターン

    JavaScriptでデザインパターンを書いてみる。とはいえ、いまさらFactoryパターンなど書いても面白くないので、マルチスレッド・デザインパターンにする。 もちろん、JavaScriptの言語仕様にスレッドなどない。しかし、ブラウザ環境では実質的にスレッドが存在する。スレッドが発生する場面には2種類ある。1つは、イベントである。例えば、ユーザのクリック動作によってonclickイベントが発生した時、onclickイベントハンドラだけを処理するスレッドが発生するとみなせる。もう1つは、setTimeoutとsetIntervalメソッドである。これらのメソッドでは、一定時間後に、別の処理を実行させるが、この処理は現在の処理と並行的に実行される。つまり、スレッドとみなせる。個人的には、setTimeoutをアニメーションなどの小細工だけに使うのはもったいないと思う。setTimeoutの

    llameradaの日記 - JavaScript でマルチスレッド・デザインパターン
    Wacky
    Wacky 2005/09/18
    setTimer等を使って、workerThreadを実現
  • 1