2008-01-01から1年間の記事一覧

ThinkIT 「徹底比較!検索エンジン」についてツッコミ

Sennaの場合には、文書数を166,512より多くしようとすると、メモリ確保の失敗が原因のsen_memory_exhaustedというエラーが発生し、インデックスに文書を追加できなくなりました。 http://thinkit.jp/article/744/1/ しっかりと反応しておきます。 対象文書サ…

SennaでWAVE DASH(〜)とFULLWIDTH TILDE(〜)を同一視する

Sennaでは、UTF-8の文字列を正規化しています。 たとえば、「?」は「ミリバール」に、「AbRACADAbra」は「abracadabra」に、「ハラヘッタZO」は「ハラヘッタZO」に変換されます。 これで、文字のゆれに対応した検索ができるわけです。 さて、某サービスでWAVE D…

libxml-rubyでメモリリークしている気がする

libxml-rubyでメモリ使用量がじわじわと増えていく。 以下のようなコード。使い方の間違いとかについてツッコミ求む。 require 'xml/libxml' doc = XML::Document.new() doc.root = XML::Node.new('root') root = doc.root root << child = XML::Node.new('c…

memcachedを時刻巻き戻りに強くしてみる

昨日のダサい失敗エントリが注目を集めているようで恥ずかしいお… 今後ダサい失敗で困らないために、memcachedのパッチを書いてみようと思った。 時間が巻き戻った瞬間に障害が出るのはしょうがないけど、 巻き戻ったあとにその影響が残り続けるのは嬉しくな…

memcachedを愚弄する1つの方法

某サービスでセッション情報を保持するために利用している memcached(repcached)に障害が起こった。 ちゃんと追えていないけど、おそらく以下のような原因。他の人がハマらないように。 障害発生まで memcached(repcached)の中には揮発したらそれなりにマズ…

Subversionクライアントだけをソースからインストールする(清貧な感じで)

複数台へのデプロイをするときに、 各マシンでsvn updateをして、 最新版のファイルをSubversionのリポジトリから入手する手法があります。 でも、これって各マシンにSubversionを入れないといけないんだよね。 portsも入れていない(わざとだけど)FreeBSD…

グッドデザイン賞を受賞しました。

未来検索ブラジルが検索エンジン開発において(!)グッドデザイン賞を受賞したようです。 http://www.g-mark.org/search/Detail?id=34960&sheet=outline&lang=ja みんなも、オープンソース開発をしてグッドデザイン賞をもらおう! あ、あとブラジルはIT技術者…

Rubyでeventmachineを使って高速にメールを送る

またまた某サービスで、今度はメールを送るという要件が発生。 しかも、ユーザごとに異なった内容を送るというもの。 テンプレートはErubisを使うとして、 メール送信はどのライブラリを使おう。tmailかなぁ? とGoogle検索すると、eventmachineってものがあ…

Senna 2.0の展望と、Tritonnで問題が発生している人向け情報

Senna 2.0βのリリースが見えてきました。 去年の夏に出すと言っていましたが、紆余曲折あっての現状です。 ライバルのTokyo Cabinet/Tokyo Dystopiaについては、 ストレージと全文検索インデックスを分割する方向性です。 mixi engineer blog 今までのSenna…

ニコニコ大百科開発ブログはじめました。

ニコニコ大百科の開発関連についてはブログ分けました! ニコニコ大百科開発日記 EeePCをサーバとして使い倒す方法や、 libeventのevhttpとvarnishの組み合わせ、 repcachedを使う上でlibmemcachedに当てなければいけないパッチ、 Rubyのlibmemcached bindin…

[xml][libxml2][c]XMLをHTTPSで取得して、XPathで指定された中身をC言語で取り出す方法

某サービスのAPI呼び出しについて、 API呼び出しをSSL化する UserAgentに特定の文字列を入れる という新しい要件が発生した。 というわけで、 [xml][libxml2][c]XMLをHTTPで取得して、XPathで指定された中身をC言語で取り出す方法 - グニャラくんのグニャグ…

MIDIファイルをはてなのメロディ記法やピコカキコに変換する(mid2flmml)

ニコニコ大百科でMMLで音楽を投稿できるサービスを始めたはいいが、 MMLって難しいですよねー。 というわけで、MIDIからMMLへの変換をするソフトを作ってみた。 mid2mmlというソフトウェアがあるが、やはりFlMMLとは文法がちょっと違う。 あずねっと mid2mml…

ピコカキコ機能リリース。

ニコニコ大百科でMMLでメロディを書き込める「ピコカキコ」機能をリリースしました。 JASRACと音楽著作物利用許諾についての契約を結んでいるので、 JASRAC管理楽曲についても投稿可能です。 はてなのMML記法(メロディ再生記法)と互換性があるので、 今まで…

SennaのTracが公開されております。

そういえば(安定剤)、lighttpのTracサイトで思い出しましたが、 SennaのTracが稼動し始めました。 まだ情報が少ないですが、Ticketを切って開発を進めていこうと思っています。 宜しくお願いいたします。 SennaのTrac ちなみに、 以前から公開しているニコ…

lighttpdでモジュールを書く際に気をつけること

lighttpdのモジュールを書くことを覚えてしまったせいで、 ついついlighttpdのモジュールで仕事を進めてしまうクセがつきました。 「なんでもおもっど」状態です。 全パスに対するアクセス数をTokyoCabinetに記録したり、 特定のパスに対してはmemcachedから…

検索エンジンの歴史的意義と未来

弊社森(オラの上司)が大阪市立大学で発表をしてきました。 発表資料は以下からどぞー。 検索エンジンの歴史的意義と未来 発表の前半は、コミュニケーション技術の歴史を踏まえ、 多対1のコミュニケーション技術として検索エンジンを捉える試みです。 発表…

Flexでキーボードイベントを取得するのに詰まる

Flex 3でコントロールのfocus関係なしにキーボードの入力を取得するには、 http://livedocs.adobe.com/flex/3_jp/html/help.html?content=events_11.html http://www.adobe.com/cfusion/communityengine/index.cfm?event=showdetails&productId=2&postId=304…

[xml][libxml2][c]XMLをHTTPで取得して、XPathで指定された中身をC言語で取り出す方法

タイトル通り。必要に迫られて… libxml2はAPIの数がオニのようにあります。泣きそうです。 注意:ルートノードが1つの文書しか対応していません。 根性不足で、URLからxmlDocPtrを得られるAPIを見つけられなかったため、 xmlTextReaderPtrで最初のノードを…

x86_64環境でRubyからMySQLのクエリを実行するときの問題が示す根本的な問題…

ニコニコ大百科というサービスをリリースしたわけですが、 開発言語を選定する際に 「最近書いてなくて忘れかけてるし、部下も書けるし、 たまにはRubyで書いてみようじゃないか。」 とテキトーに決めたことをちょっと後悔。 特にRubyのbase64に関しては マ…

ツッコめ!全文検索エンジンSennaの新しいAPIについての素案。

みんな、[Senna-dev 884]のメールは読んだかな!? 全文検索エンジンSennaの新しいAPIについての素案がついに公開されました。 今までのAPIのほとんどを刷新するという 大改造!劇的ビフォーアフター的API群です(APIの匠)。 んで、この新しいAPI群で何が…

ニコニコ大百科リリース

ニコニコ大百科という、ニコニコ動画版Wikipediaとも説明すべきサイトをリリースしました。 5/25 25:25:25公開という設定になっております。 社会人になってから、初めての外部向けWebサイト構築がこれだよ! ミドルウェア開発が本業(?)なので、 ミドルウ…

Ludiaパフォーマンス・チューニング・セミナをやるらしい

Ludiaパフォーマンス・チューニング・セミナというセミナをやるそうです。 http://lists.sourceforge.jp/mailman/archives/ludia-users/2008-March/000205.html http://d.hatena.ne.jp/ludia/20080326 さて、演習問題サンプルを解けるでしょうか!?

Ludia 1.5.0ワクテカ

PostgreSQL 8.3対応のLudia 1.5.0が今月中に出る(ことを目標にしている)ようです。 Ludia 1.5.0 ドキドキ。

MySQL + Sennaで実現する全文検索とMySQL Enterprise Monitor 日本語版プレビュー

住商情報システム主催で、MySQL+Sennaの紹介を含んだセミナーが開催されるそうです。 MySQL + Sennaで実現する全文検索とMySQL Enterprise Monitor 日本語版プレビュー 興味のある方は是非是非ご参加くださーい。

Debianのlibtidy-ruby1.8がすぐ落ちてくれる件について

scrAPIにも使われているlibtidy-rubyですが、 DebianのtestingだとSEGVで落ちてくれるようです。原因はコレ↓ http://rubyforge.org/tracker/index.php?func=detail&aid=10007&group_id=435&atid=1744

FastCGIでRubyのスクリプトを動かしたとき、Lost connection to MySQL server during queryと怒られる件について

Rubyを最近書いていなくて忘れそうだったので、次の仕事はRubyを使って書くことにしてみました。 lighttpdを使ったことがなかったので、次の仕事はlighttpdを使うことにしてみました。 という非常にいい加減な理由でlighttpd + Ruby on FastCGIでWebアプリケ…

最もタメになる「初心者用言語」はSennaQL!

地味に反響のないSenna 1.1.0ですが、 SennaQLという新しい問い合わせ言語が搭載されています。 我々の調査の結果、 なんとSennaQLは以下のページで挙げられている Schemeの特徴を全て満たしていることが判明しましたっ!!! 最もタメになる「初心者用言語…

グニャラは大変なFlashを描いていきました

今週末は2つの勉強会に参加・発表させていただきました! ステキな発表の場を設けていただいてありがとうございます!! 両方ともActionScript/Flashについて(?)の発表です。 それぞれ発表資料を公開させていただきます。 Flash + JavaScriptでmemcached…

PHP Extensionを書く勉強会に参加中

PHP

PHP Extension勉強会に参加しました。 さすが肉好きのPHPer、 懇親会のロウリーズ・ザ・プライムリブではみんな大食いしていました(嘘 参考 実例で学ぶPHP拡張モジュールの作り方:連載|gihyo.jp … 技術評論社 PEAR::CodeGen_PECLでPHP拡張を書いてみよう(…

Senna 1.1.0リリース

Senna 1.1.0をリリースしました!(GREEで) 落ちるバグとか治っているので是非入れ替えを…