タグ

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

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

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

    JavaScriptによる全文検索エンジン - llameradaの日記
  • クラスタリング技術を使った「はてなブックマーク」でのお気に入りユーザ数ランキング(簡易ジャンル別) - llameradaの日記

    今度は「はてなブックマーク」の「お気に入り」ネットワークで、ジャンル別のランキングを求めてみました。同じユーザから「お気に入り」されているユーザは、同じジャンルに分類されます。詳細は以前の記事を参照してください。 参考リンク:クラスタリング技術を使ったAmazon DVDでの出演回数ランキング(簡易ジャンル別) - llameradaの日記 結果をみると「はてな」の人々が同じクラスタに分類されたり、サブカル系のブックマークをするユーザがまとまっているなど、そんなに結果は悪くないようです。新たな「お気に入り」を探す手助けになるかもしれません。なお、ユーザ数は今回収集した3647ユーザ中での数になりますので、実際より少なくなります。 追記:深い考えもなしに公開してしまいましたが、人を分類するのは問題が多いです。しかも、クラスタリング技術は基的に大雑把で分類精度はあまり高くないのが普通です。い

    クラスタリング技術を使った「はてなブックマーク」でのお気に入りユーザ数ランキング(簡易ジャンル別) - llameradaの日記
  • Google Co-opを使ってRailsのapiを検索するsubscribed linksを作ってみた - llameradaの日記

    Custom Search Engineが話題になっているので、試しにRuby on Railsapiリファレンスを検索できるsubscribed linksを作ってみた。 下記のページからリンクを購読できる。 http://www.google.com/coop/profile?user=002096757702379668848 リンクを購読した状態で「ror find」と検索窓に入力すると、Ruby on Railsapiリファレンスのfindメソッドを記述したページへのリンクが表示されるようになる。google.comドメインでないと動かないようだ。 なお、このsubscribed linksはとりあえず作った物なので、あまり役に立たないと思う。試し終わったら購読は取り消した方が良いでしょう。アンカーリンクを埋め込めないのと、一部のメソッドしか登録されていないので、使い勝手は今

    Google Co-opを使ってRailsのapiを検索するsubscribed linksを作ってみた - llameradaの日記
  • クラスタリング技術を使ったAmazon DVDでの出演回数ランキング(簡易ジャンル別) - llameradaの日記

    前回Amazon DVDでの出演者ランキングを作ってみたところ、その結果が結構面白かった。 参考リンク:イチローのベーコン指数は4次 - Amazon DVD データベースでのスモールワールドネットワーク - llameradaの日記 ただし、前回の結果では、日人俳優、声優、ハリウッド俳優などが入り乱れてたランキングの為、今ひとつ結果が分かりにくかった。そこで、俳優のジャンル別のランキングを作ってみたくなった。 とはいえ、俳優をジャンルに分類するのは結構大変な作業だし、簡単に利用できそうなデータベースも知らない。そこで、クラスタリング技術を使って俳優をジャンルに分類してみた。 一般にIT業界でクラスタリング技術というと、計算機を束ねて利用する技術のことを指すが、データを似通ったデータ群に自動的に分割する技術のこともクラスタリング技術と呼ぶ。主に、人工知能やデータマイニングで使われている。

    クラスタリング技術を使ったAmazon DVDでの出演回数ランキング(簡易ジャンル別) - llameradaの日記
  • イチローのベーコン指数は4次 - Amazon DVD データベースでのスモールワールドネットワーク - llameradaの日記

    ベーコン指数というのをご存知だろうか?まず、俳優ケビン・ベーコンと共演した俳優のベーコン指数を1次とする。そして、ベーコン指数が1次の俳優と共演した俳優のベーコン指数を2次とする。この操作を繰り返して、俳優のベーコン指数を定義する。すると、殆どの俳優(日人やインド人も含めて)が6次以下のベーコン指数を持つ。このような現象をスモール・ワールド現象と呼び、このようなネットワークをスモールワールドネットワークと呼ぶ。いわゆる「世間は狭い」というやつである。 参考:スモール・ワールド現象 - Wikipedia この現象は中々面白いのだが、簡単に体験できるサービスがなかった。ベーコン指数を求めるサービスはあるのだが、ケビン・ベーコンは日人とあまりなじみがない。 そこで、Amazon.co.jpが持つDVDのデータベースを使って、任意の俳優間で、両者をつなげる俳優の共演関係を求めるサービスを作っ

    イチローのベーコン指数は4次 - Amazon DVD データベースでのスモールワールドネットワーク - llameradaの日記
  • 表示中のページをブックマークしたユーザのブックマーク一覧を表示するブックマークレット - llameradaの日記

    「XML を JSON に変換するサービス」と「はてなブックマーク」を使って、表示中のページと関連するかもしれないページを表示するブックマークレットを作ってみました。このブックマークレットを使うと、表示中のページをブックマークしたユーザの中から一人ランダムに選択して、そのユーザのブックマーク一覧が表示されます。はてなブックマークを結節点として、多数のページが繋がっているような感じになります。 動作は次のようになっています。まず、現在表示中のページをブックマークしているユーザ一覧を「はてなブックマーク」のRSSを使って取得します。このとき、外部ドメインのRSSJavaScriptからは読み込むために、「XMLをJSONに変換するサービス」を使っています。次に、読み込んだユーザ一覧から、ランダムに一人のユーザを選んで、そのユーザのブックマークを表示しています。このときも、「はてなブックマーク

    表示中のページをブックマークしたユーザのブックマーク一覧を表示するブックマークレット - llameradaの日記
  • 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によるソーシャル・ブックマーク管理デスクトップ・アプリケーション
  • MochiKitと日本語は相性が悪い? - llameradaの日記

    brazilさんのMochiKit解説記事(http://d.hatena.ne.jp/brazil/20060122/1137926216)を読んでいて、関数型言語風のプログラムは読みにくいなと思った。読みにくい原因をつらつらと考えてみると、日語の言語構造と前置型が相性が悪いのが原因の一つではないかと思った。 MochiKitJavaScriptのライブラリである。Pythonの影響を受けており、Lispなどの関数型言語風な記述が出来る。brazilさんの記事で取り上げられているサンプル・コードはこちら。 theSum = sum(takewhile( partial(operator.gt, 10), imap( partial(operator.mul, 2), count() ) )); ok( theSum == (0 + 2 + 4 + 6 + 8) ); theSum に

    MochiKitと日本語は相性が悪い? - llameradaの日記
  • 1