タグ

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

  • ニコニコ大百科のアーキテクチャ - グニャラくんのグニャグニャ備忘録@はてな

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

    ニコニコ大百科のアーキテクチャ - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2009/04/17
    id:fukken つけたお!(キリッ
  • 全文検索エンジン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つの方法 - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/10/17
    slewで0.0005sec/sec補正だと、9時間を補正するのに2年間! そしてサーセン>id:hirose31
  • Rubyでeventmachineを使って高速にメールを送る - グニャラくんのグニャグニャ備忘録@はてな

    またまた某サービスで、今度はメールを送るという要件が発生。 しかも、ユーザごとに異なった内容を送るというもの。 テンプレートはErubisを使うとして、 メール送信はどのライブラリを使おう。tmailかなぁ? とGoogle検索すると、eventmachineってものがあるらしい。 Rubyから非同期でガンガンSMTPサーバに接続できるようです。ひゃっほい! というわけで、ためしにeventmachineを使って メールを送信するテストコードを書いてみた。 一応並列に20個コネクションを張っている…はず。 テストが怪しいので、ご利用時は検証のこと。 eventmachineの挙動全く理解してねっす。 eventmachineにはSMTP clientだけでなくSMTP serverの実装もあるので、 テスト時にはそれを使うといいと思う。 ちなみに、EM::Protocols::SmtpCl

    Rubyでeventmachineを使って高速にメールを送る - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/10/07
    大盛可・不可の二種類の無料券があり、店員に周知されていなかった様子
  • x86_64環境でRubyからMySQLのクエリを実行するときの問題が示す根本的な問題… - グニャラくんのグニャグニャ備忘録@はてな

    ニコニコ大百科というサービスをリリースしたわけですが、 開発言語を選定する際に 「最近書いてなくて忘れかけてるし、部下も書けるし、 たまにはRubyで書いてみようじゃないか。」 とテキトーに決めたことをちょっと後悔。 特にRubyのbase64に関しては マニュアルの使用方法の項目にはencode64などの関数を直に使う方法が書いてあるが、生で使うと怒られる(encode64 is deprecated; use Base64.encode64 instead)。 Base64.encode64()を使うと、今度は途中とお尻に勝手に改行が入る。マニュアルには書いていない挙動(るびまには書いてあるが)。Base64.encode64().split.joinなどをして改行を除去する必要がある。 さらに、urlsafeなエンコードをしようとすると、Base64.encode64().split

    x86_64環境でRubyからMySQLのクエリを実行するときの問題が示す根本的な問題… - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/06/03
    EeePCをサーバに使うような男、ちょっとした不具合にブチ切れするの図
  • ニコニコ大百科リリース - グニャラくんのグニャグニャ備忘録@はてな

    ニコニコ大百科という、ニコニコ動画版Wikipediaとも説明すべきサイトをリリースしました。 5/25 25:25:25公開という設定になっております。 社会人になってから、初めての外部向けWebサイト構築がこれだよ! ミドルウェア開発が業(?)なので、 ミドルウェアばっかりに凝ってしまいました…あはは… lighttpd ruby(ほとんどのロジック、Pythonにしとけばよかった… FastCGI経由) MySQL(DBサーバ) Senna(自動キーワードリンク) repcached(セッション保持用memcached、EeePCでLVS frontと一緒に動いている) Tritonn(検索) libeventのevhttp(API用Webサーバ) Varnish(API用WebサーバのHTTPアクセラレータ) 他にも、各ページの閲覧数ランキングのために、Tokyo Tyrantを

    ニコニコ大百科リリース - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/05/26
    プログラミングのほとんどを1人でやれたので、とてもやりやすいプロジェクトだった。
  • 最もタメになる「初心者用言語」は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! - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/02/04
    ブームには乗る。
  • グニャラは大変なFlashを描いていきました - グニャラくんのグニャグニャ備忘録@はてな

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

    グニャラは大変なFlashを描いていきました - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/01/27
    ひさびさに徹夜とかしたよ。
  • 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 - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/01/17
    とりあえず公開しておけメソッド
  • Sennaではてなキーワード自動リンクを実装する - グニャラくんのグニャグニャ備忘録@はてな

    [注意]このエントリはPHPとMecabでキーワード自動リンクを実装するのパクリです。 こんにちは、末永です。 今年もどうぞよろしくお願い致します。 Webサービスを開発していると、特定のキーワードを自動でURLリンクにする処理が必要になることがあると思います。今回は、このキーワード自動リンク機能を全文検索エンジンSennaを使って実装する方法を紹介したいと思います。 1. Sennaインストール MeCabのインストールは必要ないので、こんな感じでインストールしてください。 $ ./configure --prefix=/usr --without-mecab $ make $ sudo make install 2. 辞書を作る テキストファイルに、改行区切りでキーワードを記述したファイルkeyword.txtを作成します。 ただし、文字コードはEUC限定ですぞ。 Wikipedia

    Sennaではてなキーワード自動リンクを実装する - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2008/01/09
    hatenapo、結構便利
  • PHPで高速に携帯ゲートウェイのIPから携帯キャリアを判別する - グニャラくんのグニャグニャ備忘録@はてな

    [追記]id:hetimaに指摘された、32bitアーキテクチャでの問題を修正。大感謝。 携帯電話からのWebアクセスゲートウェイのIPアドレスから、 携帯キャリアを判別したい場合がある。 通常は、id:tokuhiromによる Net::CIDR::MobileJP(WWW::MobileCarrierJP)を使うといいと思う。 DSAS開発者の部屋:携帯ゲートウェイのIPアドレス帯更新を効率的に確認する方法 http://d.hatena.ne.jp/tokuhirom/20071207/1196989588 YAMLが出力されるので、さまざまな環境で利用ができるよ! 今回、PHPで携帯キャリアを判別したいと思ったんだけど、 PHPYAMLを読んでその中身をすべて検査するなんてやだいやだい! と沸き立つような強い衝動が。 というわけで、cidr-mobilejpというPythonスク

    PHPで高速に携帯ゲートウェイのIPから携帯キャリアを判別する - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2007/12/31
    もうちょっと最適化できるはず。
  • 同好の士を発見! - グニャラくんのグニャグニャ備忘録@はてな

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

    同好の士を発見! - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2007/12/21
    エントリをよく読むと、早速活動を行っていることがわかりますよ!
  • Python Tシャツもらったよ!!! - グニャラくんのグニャグニャ備忘録@はてな

    PyCon 2007のおみやげのTシャツ http://omake.accense.com/wiki/PyCon2007/GiveAway ダーツで抽選された結果、 僕が当選しました!!! 高品質RADIUSサーバシリーズfullflexでおなじみの アクセンス・テクノロジー様からいただきました!!! Tシャツを着てみて、写真を撮ってもらいました!!! 着てみた 裏はこんな感じ ヘビ!!!! RADIUSとスリーショット!!!! 後ろが散らかっているのは気にするな!!!

    Python Tシャツもらったよ!!! - グニャラくんのグニャグニャ備忘録@はてな
    tasukuchan
    tasukuchan 2007/03/22
    太って痩せた
  • 1