タグ

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

  • 継続を使ってSjaxをAjaxに簡単に変換する方法 - llameradaの日記

    JavaScriptによる全文検索エンジンの最初のバージョンはAjaxではなく、Sjaxであった。その為、サーバへのリクエストが発生する毎にブラウザが固まってしまい、応答性が悪かった。なぜ、Sjaxで記述したかというと、連続してサーバへリクエストを送り、しかも、サーバからのレスポンスに応じてリクエストを変更するようなAjaxプログラミングが面倒だった為である。このようなSjaxのコード例を次に示す(prototype.jsを使用)。 // (Sjax)サーバからpathのデータをoffsetの位置からlengthバイト取得 function fetch(path, length, offset){ var range = ["bytes=" + offset + "-" + (offset + length - 1)].join(""); var options = { method: "

    継続を使ってSjaxをAjaxに簡単に変換する方法 - llameradaの日記
  • UTF-8文字列を圧縮されたUTF-8文字列に変換するライブラリ u-lzss - llameradaの日記

    UTF-8文字列の圧縮ライブラリを作っている。いまさら圧縮ライブラリをなぜ作るのかというと、JavaScriptによる全文検索エンジンで、インデックスの圧縮を行いたいからである。検索結果に概要文を出すには、インデックスが元テキスト全てを含む必要がある。従って、インデックスサイズの肥大化を避けるには、圧縮が必要不可欠である。ところが、次の条件を満たすライブラリを見つけられなかった。 圧縮後のデータがUTF-8文字列 JavaScriptで復元可能 前者の条件が必要なのは、JavaScriptでバイナリが扱えない為、圧縮後のデータがUTF-8文字列である必要がある為である。後者の条件は当たり前であるが、意外に該当するライブラリは少なかった。JavaScriptによるzipの解凍ライブラリは公開されているが、ライセンスが不明であった。 しょうがないので、LZSS符号をベースに、自分でライブラリを

    UTF-8文字列を圧縮されたUTF-8文字列に変換するライブラリ u-lzss - llameradaの日記
  • JavaScriptによる全文検索エンジン - llameradaの日記

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

    JavaScriptによる全文検索エンジン - llameradaの日記
    t_43z
    t_43z 2007/01/26
    インデックスはRubyで作成。
  • 1