Googleの分散データ処理言語Sawzallの統計ライブラリをC++, Ruby, Pythonから利用するライブラリSZaruを公開しました

Googleで利用されている分散データ処理言語SawzallのOSS実装 szl が公開されました。 公開されたソースの中にはSawzallの実行環境の他に大規模データ向けの統計ライブラリが含まれています。この統計ライブラリには高度なアルゴリズムが実装されているので、…

レコメンド(推薦)・サービスに一番大切なこと

flickrの写真をクリック履歴から自動的に推薦するサービス「フォト見る」を数日前にリリースしました。さいわい、気に入って頂いた方もいるようです(Route 477(2009-03-12))。「フォト見る」をリリースしてみて思ったのですが、レコメンド(推薦)を軸とし…

Google WSDM'09講演翻訳:大規模な情報検索システム構築における課題(4)

GoogleのFellowであるJeffrey Dean氏のWSDM'09における講演"Challenges in Building Large-Scale Information Retrieval Systems"のスライドの翻訳の最終回です。Googleの検索システムの10年間の進化の軌跡が紹介されており、今回は将来の課題についての紹介…

Google WSDM'09講演翻訳:大規模な情報検索システム構築における課題(3)

GoogleのFellowであるJeffrey Dean氏のWSDM'09における講演"Challenges in Building Large-Scale Information Retrieval Systems"のスライドの翻訳の第3回です。Googleの検索システムの10年間の進化の軌跡が紹介されており、今回は2004年から2007年ぐらいま…

Google WSDM'09講演翻訳:大規模な情報検索システム構築における課題(2)

GoogleのFellowであるJeffrey Dean氏のWSDM'09における講演"Challenges in Building Large-Scale Information Retrieval Systems"のスライドの翻訳の第2回です。Googleの検索システムの10年間の進化の軌跡が紹介されており、今回は2000年から2001年ぐらいま…

Google WSDM'09講演翻訳:大規模な情報検索システム構築における課題(1)

GoogleのFellowであるJeffrey Dean氏のWSDM'09における講演"Challenges in Building Large-Scale Information Retrieval Systems"のスライドを翻訳してみました。Googleの検索システムの10年間の進化の軌跡が紹介されており、興味深い話が満載です。個人的に…

検索キーワードを入力するのが面倒な人向けのflickrの写真を検索するサービス

検索キーワードの入力がいらない、「フォト見る」というflickrの写真を検索するサービスを作りました。気に入った写真をクリックしていくと、クリックされた写真と同じタグの写真が次々と表示されます。例えば、「海」の写真をクリックすると「夕日」や「ビ…

Key Value Store勉強会に参加してきた

とても楽しかった。ミドルウェア系の勉強会が一番自分の関心に近いみたい。印象に残ったことを何点か。 Masterがあるタイプの分散ソフトウェアで、障害時のMaster選択に苦労した話を聞いて、Chubbyが便利な理由が改めてよくわかった。 Key Value Store だと…

Mixi年賀状はセキュアな郵便システムとなるか?

Mixiがマイミクにたいして住所が分からなくても年賀状を郵送できるミクシィ年賀状を開始した。このサービスは前のエントリ「Googleストリートビューと郵便システムの問題点」で妄想した郵便システムとほぼ同じであり、「住所」を「ネット上のID」に置き換え…

Googleストリートビューと郵便システムの問題点

Googleストリートビューによって明らかになったことの1つに、「住所」を他人に気軽に公開してはならないということがある。「住所」とGoogleストリートビューを組み合わせれば、「家族構成」や「年収」・「車の車種」などの重要な個人情報が推定できる。つ…

Erlang 分散システム勉強会に参加してきた。

Erlang 分散システム勉強会に参加してきました。とても楽しくて、質問ばかりしていました。最近はミドルウェアの開発がメインのためかもしれません。個人的にはAmazonのDynamoのOSS実装であるKaiが気になりました。今度、Erlangの勉強がてら読んでみようと思…

TagGridのデータ配置アルゴリズムの簡単な解説

はじめに TagGridでは16000毎のFlickrの写真を、写真のタグにしたがって格子状に配置しています。この配置アルゴリズムについて簡単に説明したいと思います。 基本的なアイデア まず、入力となるのはN個のタグ付きデータとします。また、K種類のタグがあると…

「なぞり出し」ユーザ・インターフェイスを「気持ちいい」と感じる理由

はじめに 先日公開したTagGridは比較的好評だったようでAsiajinにもとりあげて頂きました。Flickr mashup on Google App Engine from Japan – AsiajinTagGridでは、画面全体を埋めつくすように75x75のサムネイル画像を表示しています。1024x768と比較的小さ…

16000枚のFlickrの写真を気楽に眺めるためのサービスを作ってみた

はじめに Flickrには綺麗な写真がたくさんありますが、写真を探すには検索キーワードの入力や、それりのクリック操作が必要で、ものぐさな私には少々面倒でした。また、Flickrは日本から遠いので、画面切替に時間がかかります。そこで、画面切替とクリック操…

MySQLでの高速な重み付きランダム表示

東京都で賢い借金返済方法を教えます!では、MySQLに格納したWikipedia記事をランダムに表示している。速度を気にしないなら、 SELECT * FROM docs ORDER BY RAND() LIMIT 10; で良いのだけど、レコード数が多いと遅くて使いものにならない。そこで、記事ID…

XPathGraphを使ってAmazonでの売り上げランキングの変化をグラフにする方法

http://xpath.kayac.com/を使って、Amazonでの売り上げランキングの変化をグラフにしてみました。グラフにすることで、売り上げランキングの変化を簡単に見ることができます。まず、XPathGraphにユーザ登録します。ユーザ登録した後、「新しくグラフを作成す…

Google App Engineから感じるGoogleのメッセージ

Google App Engine]のチュートリアルを試したみた。 pythonは殆んど知らないが、Railsに似たフレームワーク構成になっているので、だいたいなんとかなった。Google App. Engineの特長をまとめるとこんな感じだろうか。第一印象なので、間違っているところは…

あるWikipedia記事に似ている記事を表示する「Wikipediaめくり」

Wikipedia記事をランダムに表示したり、ある記事に似ている別の記事を表示する東京都で賢い借金返済方法を教えます!というサービスを作りました。Wikipediaの記事は面白くてついつい読んでしまいますが、自分の興味の範囲内の記事ばかり読んでしまいがちで…

「はてなダイアリー」は「はてな」の収益に貢献しているか?

twitterでのid:fromdusktildawnとid:malaのやり取り*1をみて考えてみたが、「はてなダイアリー」は、「はてな」の収益に凄い貢献していると思う。多分、ブログサービスの中では例外的に儲かっている気がする。特に、無料ユーザをお金に結びつける点ではピカ…

TinySegmenterをRubyに移植

Javascriptだけで書かれたコンパクトな分かち書きソフトウェアであるTinySegmenterをRubyに移植しました。移植してから別実装があるのに気がつきましたが、気にせず公開することにします。Codereposにアップしてありますので、下記のURLよりダウンロードでき…

GoogleのBigTableの特長の1つはエンジンとストレージが疎結合であること

GoogleのBigTableの特長の1つはエンジンとストレージが疎結合であることである。 MySQLやPostgreSQLではSQLクエリを受け付けるマシン(エンジン)と、実際にデータを格納するマシン(ストレージ)は同じである。つまり、エンジンとストレージが密結合である。 エ…

for 文を setTimeout に変換する(継続風)

for 文を setTimeout に変換する - IT戦記が楽しそうだったので、久しぶりにJavaScriptを書いてみた。 継続風に書くと、通常のforループとsetTimeout付きforループが同じようになります。 JavaScriptも楽しいなぁ。また、書きたい。 // 通常版 forloop(0, 3,…

ニコニコ動画は動画検索におけるGoogleになり得るか?

ニコニコ動画は動画検索におけるGoogleになり得ると思う。GoogleがWebページ検索において革命的であったのは、重要なのはページそのもの内容ではなく、Webページに対するアノテーション、つまり、リンクであることに気が付いた点である。そして、ニコニコ動…

継続を使ってSjaxをAjaxに簡単に変換する方法

JavaScriptによる全文検索エンジンの最初のバージョンはAjaxではなく、Sjaxであった。その為、サーバへのリクエストが発生する毎にブラウザが固まってしまい、応答性が悪かった。なぜ、Sjaxで記述したかというと、連続してサーバへリクエストを送り、しかも…

UTF-8文字列を圧縮されたUTF-8文字列に変換するライブラリ u-lzss

UTF-8文字列の圧縮ライブラリを作っている。いまさら圧縮ライブラリをなぜ作るのかというと、JavaScriptによる全文検索エンジンで、インデックスの圧縮を行いたいからである。検索結果に概要文を出すには、インデックスが元テキスト全てを含む必要がある。従…

JavaScriptによる全文検索エンジン

JavaScriptでインデックス型の全文検索エンジンを作ってみた。全文検索エンジンを作る際に問題となるのは、インデックスデータを部分的に読み込む方法である。通常はmmapやpreadなどを使ってファイルの一部を部分的に読み込むのだが、もちろん、ブラウザには…

Wiki小話/Vol.7

Wiki小話/Vol.7に行ってきました。学習技術とRuby on RailsとJavaScriptが好きな自分には、とても楽しいイベントでした。特に印象深かったのは、音声認識技術の強みと弱みを一般の人にもっと知って欲しいというメッセージとid:brazilさんのとってもポップな…

複数の単語を似た意味に分類するサービス

単語をクラスタリングするサービスを作りました。http://llamerada.sakura.ne.jp/clustord/cluster.cgi入力された単語を似た意味のグループの分割します。例えば、「トマト」「りんご」「みかん」「なす」を入力した場合、「トマト なす」と「りんご みかん…

AjaxにおいてXMLHTTPRequestとIFRAMEのどちらを使うべきか?

JavaScriptによりサーバと非同期通信する際の手段にはXMLHTTPRequest(XHR)とIFRAMEがある。Ajaxと言えば普通はXHRだが、IFRAMEを使うことによってもサーバとの非同期通信が可能である。IFRAMEの場合、サーバと通信するタイミングでIFRAMEのsrcを変更し、IFRA…

dojoの不思議

dojoをちょっと触ってみた。機能は豊富だし、ドキュメントはしっかりしているし、名前空間もきちんと分かれているし、優れたJavaScriptライブラリだと思った。でも、日本のブログだとあまり話題を聞かない気がする。むしろ、MochiKitの方が名前をよく聞く。…