タグ

ブックマーク / tasukuchan.hatenablog.com (26)

  • ニコニコ大百科アラートでのメッセージキュー設計について。 - グニャラくんのグニャグニャ備忘録@はてな

    お風呂でメモ。 要件 ニコニコ大百科で起こったイベントのうち、 ユーザが指定したものだけを通知するクライアントアプリケーションを作成したい。 なお、すべてのイベントは漏れなくユーザに伝わることとし、 すべてのユーザに送られる情報は同一とする。 イベントが起こった「直後」にイベントが通知されることが望ましい。 計算負荷・ネットワーク負荷が軽い方法がよい。 サーバ側はRuby、クライアント側はPythonを用いる。 さて、どのような通信方式でデータをやりとりすべきか。 RSS/ATOM まず考えられるのが、RSSやATOMなどの採用。クライアント側でもライブラリなどがあってお手軽。 feedのエントリ数が固定だと、pollingの間にすべてのイベントが流れてしまう恐れがある。 よって、feedのエントリ数は可変とし、一定の時間内に起こったイベントを全て記録することとする。 一定の時間内に起こっ

    ニコニコ大百科アラートでのメッセージキュー設計について。 - グニャラくんのグニャグニャ備忘録@はてな
  • ニコニコ大百科のアーキテクチャ - グニャラくんのグニャグニャ備忘録@はてな

    Twitter mongrelP: @tasukuchan グニャラくーん、ニコ百の鯖がEeePCという話が持ち上がってますがただの監視用ですよね(しんぱいそうなめでみている) http://twitter.com/mongrelP/status/1524183917 ニコニコ大百科のアーキテクチャについてメモしておきます。 当は、このネタでRuby Kaigiに申し込もうと思ったけど、すっかり忘れていたのでエントリを起こしておきます。Rubyあんま関係なかったし。 全てのリクエストを受付、セッション情報も保持するEeePC 次世代サーバプラットフォーム EeePC ニコニコ大百科宛ての全てのリクエストは、全てEeePCに送られます。 実物の写真を載せておきます。 EeePCは2台稼動しており、1台はホットスタンバイです。 EeePCは、SSDとUPSを備えた次世代サーバプラットフォーム

    ニコニコ大百科のアーキテクチャ - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2009/04/17
    ustreamer++ 良記事
  • groongaデータベースAPIについて概説 - グニャラくんのグニャグニャ備忘録@はてな

    groongaにおいて、データベースを扱うためのAPI群について概説します。 groongaは、RDBMSでいうところのテーブル・カラムを扱うAPIを提供します。 テーブルは、内部的にハッシュテーブルもしくはパトリシアトライが基となっています。 それぞれの要素について、どのような操作が行えるかを説明します。 grn_hash grn_hashとは、以下の操作を行えるAPI群です。 任意のkeyを指定したデータ保存 任意のkeyを指定したデータ取得 任意のkeyを指定したデータ削除 カーソルを用いた、全てのkey/valueの取得・設定・削除 内部の実装は、ハッシュテーブルです。 メモリ上に作成することも、ファイルとして作成することもできます。 いわゆる*DBMと同等のことができます。 Tokyo CabinetでいうところのTCHDBですね。 grn_pat grn_patとは、以下の操作

    groongaデータベースAPIについて概説 - グニャラくんのグニャグニャ備忘録@はてな
  • 全文検索エンジンgroongaをテストリリースしました。 - グニャラくんのグニャグニャ備忘録@はてな

    全文検索エンジンのgroongaをテストリリースしました。 groonga 日開催された、key-value store勉強会で発表させていただきました。 今まで、Sennaには Tritonn経由で使った場合、MySQL側のインデックスとの併用が難しく、Senna来のパフォーマンスが発揮できなかった。 従来のインターフェースでは、トークナイザの切り替えなどの柔軟性がなかった。 といった問題がありました。 groongaは、それに対する返答です。 自分でデータベース書けばいいんじゃね? 柔軟なAPI用意すればいいんじゃね? ってことですね。 データベースは、key-valueストアを組み合わせたcolumnストア的な感じになっています。 詳細については、今後別エントリやドキュメントで述べます。 今後は、Sennaはバグ修正のみ行うメンテナンスモードに移行します。 実際使ってみよう 今回

    全文検索エンジンgroongaをテストリリースしました。 - グニャラくんのグニャグニャ備忘録@はてな
  • memcachedを愚弄する1つの方法 - グニャラくんのグニャグニャ備忘録@はてな

    某サービスでセッション情報を保持するために利用している memcached(repcached)に障害が起こった。 ちゃんと追えていないけど、おそらく以下のような原因。他の人がハマらないように。 障害発生まで memcached(repcached)の中には揮発したらそれなりにマズい情報が入っている。 repcachedサーバ2台のOS入れ替えをしていて、1台は再起動が成功した。 1台目のサーバへ2台目のサーバからのレプリケーションが完了したのをstatsのcurr_itemsにて確認した。 よって2台目を再起動するものの、起動しなくなった。 この時点では、1台は生きているから後でデータセンターいこうっと、という気軽な気持ちだった… 現象 生きている1台目のサーバで、以下のような現象が起こった… 値をsetする際に、ある閾値以上のexptimeを指定すると即expireされる。 その閾値は

    memcachedを愚弄する1つの方法 - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2008/10/17
    UTCかぁ
  • Senna 2.0の展望と、Tritonnで問題が発生している人向け情報 - グニャラくんのグニャグニャ備忘録@はてな

    Senna 2.0βのリリースが見えてきました。 去年の夏に出すと言っていましたが、紆余曲折あっての現状です。 ライバルのTokyo Cabinet/Tokyo Dystopiaについては、 ストレージと全文検索インデックスを分割する方向性です。 mixi engineer blog 今までのSennaはTokyo Dystopiaに近いものでしたが、 Senna 2.0では逆にHyper Estraierのほうに近づく感じになっています。 それぞれ特色が出て面白いですねー。 今回は転置インデックス部分にもかなり手が入っているので、 Senna/Lucene/Tokyo Dystopiaのパフォーマンス比較もやってみたいと思います。 (とはいえ、パフォーマンス比較はそれぞれのライブラリに精通しないと意味のある情報が出せないので、大変ではありますね…) Senna 2.0 + MySQL 5

    Senna 2.0の展望と、Tritonnで問題が発生している人向け情報 - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2008/09/22
    gj!
  • 検索エンジンの歴史的意義と未来 - グニャラくんのグニャグニャ備忘録@はてな

    弊社森(オラの上司)が大阪市立大学で発表をしてきました。 発表資料は以下からどぞー。 検索エンジンの歴史的意義と未来 発表の前半は、コミュニケーション技術歴史を踏まえ、 多対1のコミュニケーション技術として検索エンジンを捉える試みです。 発表の後半は、コミュニケーション技術としての検索エンジンが 現在どのような課題を抱えているか、 来検索エンジンとはどうあるべきか、について語られています。 発表者の森と、 「検索エンジンは情報を減らすための技術だから面白い」と 盛り上がって話した記憶があります。 (ちばてつやの看板がある渋谷の中華料理店で) 大変面白い資料ですので、是非一読をオススメいたします。

    検索エンジンの歴史的意義と未来 - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2008/07/21
    その中華料理やのオーナーとは知人です
  • ツッコめ!全文検索エンジンSennaの新しいAPIについての素案。 - グニャラくんのグニャグニャ備忘録@はてな

    みんな、[Senna-dev 884]のメールは読んだかな!? 全文検索エンジンSennaの新しいAPIについての素案がついに公開されました。 今までのAPIのほとんどを刷新するという 大改造!劇的ビフォーアフター的API群です(APIの匠)。 んで、この新しいAPI群で何ができるようになるのでしょうか。 簡単に言うと、 「Sennaは、データベースになります!」 といいつつも、全文検索機能を充実させるために、 データベース的機能を強化した、という感じになっておりますぞ。 データベース機能 新しいSennaでは、複数のテーブルというものを持つことができます。 テーブルは、複数のレコードを持つことができます。 レコードは、複数のカラムを持つことができます。 カラムは、ある型のデータを保持します。 一般的なRDBMSの2次元表をまずはイメージしてください。 ポイント1. レコードごとにカラムが

    ツッコめ!全文検索エンジンSennaの新しいAPIについての素案。 - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2008/05/28
    Perlバインディングばいんばいん
  • 最もタメになる「初心者用言語」はSennaQL! - グニャラくんのグニャグニャ備忘録@はてな

    地味に反響のないSenna 1.1.0ですが、 SennaQLという新しい問い合わせ言語が搭載されています。 我々の調査の結果、 なんとSennaQLは以下のページで挙げられている Schemeの特徴を全て満たしていることが判明しましたっ!!! 最もタメになる「初心者用言語」はScheme! Schemeで豊かな表現力を身につける 参照透明できれいな心をそだてる 括弧はこわくない>< Schemeは上を目指せる! これはみんなSennaQLを学ばないといけないですね!! SennaQLのおためし方法 Senna 1.1.0以降をインストールしたあとに、 % senna filename.db と実行すれば、対話的環境でSennaQLを試すことができます。 SennaQLで簡単な計算をやってみましょう。 > (+ 1 1) 2 > (define a 3) a > (define b (+

    最もタメになる「初心者用言語」はSennaQL! - グニャラくんのグニャグニャ備忘録@はてな
  • グニャラは大変なFlashを描いていきました - グニャラくんのグニャグニャ備忘録@はてな

    今週末は2つの勉強会に参加・発表させていただきました! ステキな発表の場を設けていただいてありがとうございます!! 両方ともActionScript/Flashについて(?)の発表です。 それぞれ発表資料を公開させていただきます。 Flash + JavaScriptでmemcachedと直接通信 @ さかとくカンファレンス ActionScript3上で、Socketを用いてmemcachedとの通信を行うモジュールを書きました。 さらに、そのモジュールをJavaScriptから呼べるようにしました。 get/setしかサポートしてないですし、 全体的に設計とコーディングが小汚いです。 ちょっと恥ずかしいけど、 CodeReposにアップしているので適当に直してもらえると嬉しいです… プログラム体・発表資料は以下に置いております。 CodeReposのレポジトリパス 発表資料(PDF

    グニャラは大変なFlashを描いていきました - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2008/01/28
    おおとりの貫禄
  • Google Suggestのようなものを高速に実現するサーバsuggested - グニャラくんのグニャグニャ備忘録@はてな

    Google Suggestのようなものを高速に実現するサーバsuggestedというものを書いてみた。 が、しばらく放置していた。とりあえず公開してみる。 特徴 epollやkqueueを使っていてネットワーク部分が速い Sennaを使っていてSuggest部分が速い Sennaを使って正規化している。「トン」とか「ミリバール」(組み文字)とか「Wiki」(全角)とかでも検索可能 置き場 CodeResosに置いてあります。 http://svn.coderepos.org/share/lang/c/suggested/trunk 一応、2008/01/17バージョンの全ソースコードを貼っておこう。 #include <sys/types.h> #include <sys/time.h> #include <stdlib.h> #include <err.h> #include <sys

    Google Suggestのようなものを高速に実現するサーバsuggested - グニャラくんのグニャグニャ備忘録@はてな
  • 同好の士を発見! - グニャラくんのグニャグニャ備忘録@はてな

    今日の懇親会では、ファンKLabを結成することが出来て感無量。 是非細々と活動を続けていきましょう!>会員のみなさん 土曜日も飲み会だ。 井戸のように深い胃袋だったらいいんだけど、 もうさすがに飲みすぎな予感。 ええ加減、休肝日を設けないと。。。 そして、Tシャツに悪い言霊の言葉を書いちゃった。 素敵なメンバーによる素敵な言葉の中で浮いてた。 後に残る記念品だし、冗談でも良くないね。反省中です…

    同好の士を発見! - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2007/12/21
    頭文字D
  • サーバ26台 - グニャラくんのグニャグニャ備忘録@はてな

    DELLのサーバ26台が届いた。全部メモリ8Gらしい。 ブラジル秘密基地:サーバーが26台届いた - livedoor Blog(ブログ) そろそろサーバ台数が200台を超えるのかな? やっと重い腰を上げてXenの勉強を始めてみるか。。。 id:Voluntas曰く「VMWareいいよVMWare」ということらしいのだが。 昔以下のようなエントリを書いたが、 LANケーブルはカテゴリ6eで - グニャラくんのグニャグニャ備忘録@はてな 時代は過ぎたもので、もうカテゴリ7のケーブルが出ているらしい。 というわけで、カテゴリ7のケーブルを買ってみることにした。 Amazonで買いたいところなんだけど、在庫がないことが多くて困る。 カテゴリ7LANケーブル(ワインレッド・2m)

    yappo
    yappo 2007/12/14
    Xen楽しいよXen (それいがいいじってないだけ
  • Subversion to Subversion migration - グニャラくんのグニャグニャ備忘録@はてな

    CodeReposやsourceforgeなどのSubversionレポジトリに 既存のSubversion管理のリポジトリを移したい。 でも、移転先のSubversionリポジトリの物理ファイルには触れない。 つまり、svnadmin dumpはできるけどsvnadmin loadはできない。 こんなときに各リビジョンの変更履歴とコメントだけを移したいんだけど どうしたらいいのかな、 と思ったらちゃんと記事があった。 SVKでsubversion下のプロジェクトを履歴も含めて移転 - Bulknews::Subtech - subtech mumuを移転しようかと思ってます。 [追記] 移転は大好評のようでした! #codereposで凄惨なリンチを受けたことは口外しちゃダメって言われたよ!

    Subversion to Subversion migration - グニャラくんのグニャグニャ備忘録@はてな
  • ClearSilverについて調べる - グニャラくんのグニャグニャ備忘録@はてな

    Python + Django掲示板システムを書いてみていたんだけど、 どうもスマートに書けない。 O/Rマッパが必要となるようなシステムでもないし、 入力フォームもそう多くない。 というわけで、 自前でテンプレートシステムを呼び出して、 データベースとのやりとりやロジックは自前で実装しちゃおうぜ、 という気分になりました。 ClearSilverっていうテンプレートエンジンが動作がはやそうなので調査。 PythonでもCでも使えるみたい。 随時更新。 目標 すばやく動的なHTMLを出力したい。 でも楽もしたい。 かんたんな仕組み HDFっていうデータ構造を作るよ テンプレートにそれ流し込むよ できあがり! 導入事例 www.livedoor.comのトップページ (Cで書かれてるらしい) Trac (Python) でも次期バージョンではGenshiというテンプレートエンジンになるらし

    ClearSilverについて調べる - グニャラくんのグニャグニャ備忘録@はてな
  • DjangoのテンプレートエンジンをPHPに移植してみた。 - グニャラくんのグニャグニャ備忘録@はてな

    ブラジルのPHP仕事をひさびさにやることになった。 そこで思ったこと。テンプレートエンジンを使いたいよ… しかも、Djangoみたいに継承ができるやつを。 というわけで、よさげなテンプレートエンジンを探してみようか、 と思ったんだけど、PHPテンプレートエンジン多すぎっす。調べる気失せるっす。 世界のPHPテンプレートエンジン、トップ25 - GIGAZINE rhacoのテンプレートエンジンはDjango風らしいけど、 テンプレートエンジンだけ使う方法を調べるまで至らなかった… rhacoの公式サイト: ハゲてもかっこいい芸能人-ハゲていてもかっこいい有名人 じゃあ、自分で書いちゃう!?書いちゃう!? … 書いちゃった!! その名もGunyaTemplate。ダサいので名前募集中です。 ブラジル社長によってmumuという名前が授けられました! (EbiTemplateとかMaitakeT

    DjangoのテンプレートエンジンをPHPに移植してみた。 - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2007/09/10
    これは。。。
  • 今流行の.emacs & .vimrc - グニャラくんのグニャグニャ備忘録@はてな

    僕の周りで強引に流行らせている、 エディタで行末に存在するスペースを強調表示する設定。 この設定をすると、人が書いたコードの行末のスペースが大変気になってしまい、 その人に設定を押し付けて…といった伝染力を持ちます。取り扱い注意。 この設定の流行り始めた段階では、 Subversionの差分で「どこが変わったの?」と思うような差分が多く出現します。 .emacs (when (boundp 'show-trailing-whitespace) (setq-default show-trailing-whitespace t)) .vimrc highlight WhitespaceEOL ctermbg=red guibg=red match WhitespaceEOL /\s\+$/ 追記その1 Vimでtabを使っていると、2つめ以降のタブで強調表示されないようだ。 2007-09-0

    今流行の.emacs & .vimrc - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2007/09/03
  • Django勉強会 Disc 4での資料を公開します - グニャラくんのグニャグニャ備忘録@はてな

    Django勉強会 Disc 4で発表させていただいた資料を公開します。 今回は構成とかグダグダ&Djangoの話が少なくてすみませんすみません… DjangoでSenna 2.0!(PDF注意) Senna 2.0を用いたWikipedia検索はリポジトリに公開しています。 Senna2.0でのWikipedia検索@Django Tritonn版はこちら TritonnでのWikipedia検索@Django 公式の場でSenna 2.0について話すのは初めてだったのですが、 やはり説明のための構成を練らないといけないですね… なぜSchemeを採用したか、というのは皆さん興味を持たれるようです。

    Django勉強会 Disc 4での資料を公開します - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2007/08/27
  • 世の中、納得のいかないことばかりです。 - グニャラくんのグニャグニャ備忘録@はてな

    出社したとたん、 「グニャラさんって『エロか悪』なんですね!!!」と 新しくブラジルに入った人に言われる。 誰が言っていたのかと聞いてみたところ、 「表面的でない人間的な優しさを持った人」らしい。 http://naoya.g.hatena.ne.jp/naoya/20070703/1183456164 ( ゚Д゚)…へぇ〜…ふぅ〜ん…(#^ω^)ピキピキ

    世の中、納得のいかないことばかりです。 - グニャラくんのグニャグニャ備忘録@はてな
  • Webサーバ書くのって流行りなの? - グニャラくんのグニャグニャ備忘録@はてな

    Memcachedの添え物として扱われている(ような気がする) libeventちゃんカワイソウ。 libevent というわけで、libeventとsennaを使って COOKIEによるセッション維持機能がついたWebサーバを書いてみた例。 (Sennaは単なるハッシュライブラリとして使っています。) mainを書き下すと、 Senna初期化 libevent初期化 httpd機能開始 URIごとにハンドラ関数を設定 イベントをガンガン処理 といった感じ。 Cでこれくらいの長さだったら、 妥当だと思います。 バグがありそうだし、セッション変数の種も適当だけど、 気にするなってことで。 実用にはならないけど、サンプルの1つとしてどうぞ。 LLな言語のインタプリタなんかを抱え込むと面白いのかもね。 #ifdef WIN32 #include <winsock2.h> #include <wi

    Webサーバ書くのって流行りなの? - グニャラくんのグニャグニャ備忘録@はてな
    yappo
    yappo 2007/05/08
    この論点のずれたDISりっぷりがすばらしい