タグ

ブックマーク / labs.cybozu.co.jp (47)

  • Kazuho@Cybozu Labs: setlock を使って cron をぶんまわす方法

    « データベースをコピーするモジュール DBIx::Replicate | メイン | Tritonn (MySQL+Senna) の join を高速化 » 2008年01月30日 setlock を使って cron をぶんまわす方法 事前計算や DB 再構築を手軽に実行するのに cron は便利ですが、タスクのまわし過ぎによるサービスのパフォーマンス低下や実行順序の制御を別途行う必要があります。自分は、そのためのツールとして、daemontools の setlock コマンドがお気に入りです。setlock は、flock を用いて、タスクの待機や実行中止を制御することのできる、とても小回りのきくプログラムです。 1-59/* * * * * /usr/local/bin/setlock -nx /tmp/precompute.lock /usr/local/bin/setlock

  • Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました

    « 開発しているウェブアプリケーションフレームワーク NanoA について話してきました | メイン | なぜサイボウズ・ラボで働くのか » 2008年11月27日 ウェブサービスの SSD 化について話してきました 日 (11/27) 開催の Shibuya Perl Mongersテクニカルトーク#10 で、ウェブサービスの SSD 化について話しました。スライドを置いておきますので、開発しているウェブアプリケーションフレームワーク NanoA について話してきました とあわせてご覧いただければ幸いです。 末筆となりますが、Shibuya.pm の実行委員(?)の方々、ありがとうございました&おつかれさまです。 (まだ終わってないけど ^^;)

    youpy
    youpy 2008/11/28
  • Kazuho@Cybozu Labs: ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法)

    « ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 | メイン | ウェブアプリケーションのインストーラジェネレータ » 2008年11月04日 ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法) 適切な設計によって、信頼性の高いソフトウェアやサービスを構築することが重要なのは、言うまでもないことです。一方で、なんらかの原因で問題が発生した際に、障害を局所化し、損害を小さくい止める「ダメージコントロール」という概念もあります。ウェブサービスの場合も、特に検索や集計といった、計算量がクエリの種類によって大幅に異なるようなケースでは、次善の策として後者の手法が有効に働く場合もあるかと思います。 ともかくそういうわけで、MySQL のスロークエリを強制終了するようなタスクを書きやすくする Perl モジュール MySQL

    youpy
    youpy 2008/11/05
  • Kazuho at Work: Greasemetal - a userscript runtime for Google Chrome

    For more than two years, I have been using Firefox. And Greasemonkey. Then, last week, came Google Chrome. It was at the moment I tried the new browser that I suddenly noticed I could no more live without userscripts (especially, AutoPagerize). So I started looking into the source code of Google Chrome, and found out a way to implement a userscript runtime. And that's Greasemetal. It is now availa

  • log4ZIGOROu : nsIObserverServiceを使って複数のobserverに通知を行う

    date 2007-06-01 17:29:44 category ExtensionJavaScript permlink here comment 0 trackback 0 FirefoxやThunderbirdの拡張を作る際に、場合によっては非同期処理が入ったりします。 XPCOMではそのような場面でobserverが簡単に仕込める仕組みとして、nsIObserverServiceと言うインターフェ−スがあるので、今回はその使い方についてご紹介します。 ObserverServiceの概要 そもそもnsIObserverServiceには下記のようなメソッドが定義されています。 addObserver() removeObserver() notifyObservers() enumerateObservers() 以下簡単にそれぞれについて触れてみます。 addObserver,

    youpy
    youpy 2008/06/26
    nsIObserverService XPCOM
  • Kazuho@Cybozu Labs: MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話

    « フレンド・タイムライン処理の原理と実践 | メイン | MySQL の ORDER BY を高速化 » 2008年06月12日 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 フレンド・タイムライン処理の原理と実践 の続きです。 先のエントリでは、プルモデルの速度が当初予測していたよりも遅かった (というより SQL レイヤでのオーバーヘッドが大きそうだった) ので、MySQL Internals メーリングリストで質問したりしながら、C++ で直接 InnoDB にアクセスするようなコードを書いてみました。 タイムライン構築速度 タイムライン/秒 SQL そしたら、10倍以上高速に! ベンチマークを perl ベースのものから mysqlslap に変えたのですが、プッシュモデルの 2/3 の速度が出ています。これなら、データサイズが約 1/10 にな

    youpy
    youpy 2008/06/12
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

    « MySQL のクエリ最適化における、もうひとつの検証方法 | メイン | MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 » 2008年06月09日 フレンド・タイムライン処理の原理と実践 MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話に続きます。 Twitter が注目されるようになって久しい今日この頃ですが、友人の投稿を時系列に並べて表示する、というのは、Twitter に限らず Mixi の「マイミクシィ最新日記」やはてなブックマークの「お気に入り」等、ソーシャルなウェブサービスにおいては一般的な手法です。ですが、この処理 (以下「フレンド・タイムライン」と呼ぶ) は、一見簡単そうに見えて、実装には様々な困難が伴います。記事では、「フレンド・タイムライン」を実現する、プッシュ型とプル型の二種類の手法について、その原

    youpy
    youpy 2008/06/09
  • Kazuho@Cybozu Labs: YAPC::Asia 2008 で Pathtraq について話してきました

    « データベースの差分バックアップとウェブサービスのお引っ越し | メイン | メッセージキュー事始め with Q4M » 2008年05月16日 YAPC::Asia 2008 で Pathtraq について話してきました YAPC::Asia 2008 で、Pathtraq の裏側の技術的特徴について話してきました。統計処理を行うウェブサービスを構築する上での問題や解決技法だけでなく、インターネットにおけるロングテールの実測データや、現在のサービス規模等の話も入っていますので、興味ある方はご覧いただければ幸いです。 スライドはこちら: YAPC::Asia 2008 Tokyo - Pathtraq - building a computation-centric web service » SlideShare 過去3年間で最大の YAPC::Asia だったのでしょうか。一参加者

    youpy
    youpy 2008/05/17
  • 秋元@サイボウズラボ・プログラマー・ブログ: Google Social Graph API登場 - 公開情報から人のつながりを探せるように

    Google Social Graph APIに戻って「Googleのウェブ検索」を説明するなら、ウェブにあるページとページのリンク関係を大量に集めて、単語を入れたら関連するページを返す、ということになるだろう。 今日新しく発表されたGoogle Social Graph APIは、リンクの中でも特に「サイトと人、人と人の関係」が書かれたリンクを収集して検索できるようにしたAPIだ。 APIを使ったサンプルがあるのでこれを使ってみる。My Connectionsというサンプルでは、ブログや自分のプロフィールが載ったページのURLを入れる(複数あれば改行で区切る)と、過去にブログやSNSなどで自分が登録した情報から、関係のあるウェブサイトのURLや、知人のページを取得して表示してくれる。 人間関係やサイト間の関係はどこから取っているのか、というと、これはXFNやFOAFといったmicr

    秋元@サイボウズラボ・プログラマー・ブログ: Google Social Graph API登場 - 公開情報から人のつながりを探せるように
    youpy
    youpy 2008/02/17
  • Kazuho@Cybozu Labs: Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか)

    « Q4M - MySQL 上で動作するメッセージキュー | メイン | データベースをコピーするモジュール DBIx::Replicate » 2008年01月22日 Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) Pathtraq は、ウェブブラウザの拡張機能を通してアクセス情報を匿名化・統計処理することにより、ウェブ上の人気ページや注目のサイトを発見するシステムです。公開より5ヶ月、多くの方々に拡張機能をインストールしていただき (ありがとうございます)、統計として様々な見せ方をできる準備が整ってきたように思います。そこで今回、より便利にお使いいただけるよう、デザインのリニューアルと新機能の追加を行いました。 1. デザインのリニューアルについて ウェブサイトのデザインを全面的に見直しました。今、何が話題になっているのかがよりわかりやすく、また、どのよう

    youpy
    youpy 2008/01/22
  • CAPTCHA解読ソフトの価格表に見るCAPTCHAのレベル差 | 秋元@サイボウズラボ・プログラマー・ブログ

    via del.icio.us/popular Coding Horrorブログの記事Has CAPTCHA Been “Broken”?(CAPTCHAは破られたか?)では、CAPTCHAの解読ツールに値段をつけて売っている中国の業者の価格表を紹介していて、これが面白い。 CAPTCHA用の文字列画像を作るときは、文字を画像化したり、色をつけたり、線を引いたり、無関係な点や図形を足したり、湾曲させたり、と、いろいろな加工で「人には読めるけど機械には読めない」ように作るわけだが、この価格表では、単純なCAPTCHAで彼らの販売するツールで読み取れる可能性が高いものほど値段が安くなっているし、彼らのツールでは読み取れてない場合も多いような難しいものについては、ツールの値段も高くなっている。 この価格表で図らずも、いろいろな大手サイト(主に英語中国語でのサイト)が使っているCAPTCHA図形

    CAPTCHA解読ソフトの価格表に見るCAPTCHAのレベル差 | 秋元@サイボウズラボ・プログラマー・ブログ
    youpy
    youpy 2007/11/26
  • Kazuho@Cybozu Labs: Japanize - Internet Explorer に対応しました

    « CGI::Application 用にディスパッチャ兼パーマリンクジェネレータを書いてみた | メイン | Pathtraq サービス中断のお知らせ » 2007年11月16日 Japanize - Internet Explorer に対応しました 日、Internet Explorer 用の Japanize 拡張機能 (プラグイン) を公開しました。Japanize のトップページからダウンロード・インストールしていただくことが可能です。 Japanize は、インターネット上の様々なウェブサイトの UI を翻訳 (ローカライズ) するウェブサービスです。2005年8月の公開以来、300人以上の翻訳者による延べ27,000回以上の翻訳データ投稿の結果、翻訳データサイズは4.5MBを超えるまでになりました。Flickr! や Twitter といった人気の英語サイトを含む550以

    youpy
    youpy 2007/11/16
  • TAKESAKO @ Yet another Cybozu Labs: 続イメージファイト - HTML 2.0 New Browser Detection

    Shibuya Perl Mongersテクニカルトーク#8 で発表した「続イメージファイト」の資料を SlideShare で公開しました。 Shibuya.pm#8 続イメージファイト - HTML 2.0 New Browser Detection JavaScriptCSS Hacksを一切使わずにHTMLでブラウザを判別するハックの紹介です。 HTML 2.0 - Browser detection [3] ブラウザ判別のデモのページにアクセスすると、使っているブラウザの画像が表示されます。 このimgタグのsrc属性はfirefox2.0、firefox1.5、その他のGeckoエンジンを搭載したブラウザ、Safari2、Safari3、Opera、ie、w3m、lynxなどのブラウザの判別に対応しています。 テキストブラウザの判別

    youpy
    youpy 2007/10/02
  • Kazuho@Cybozu Labs: サーバシグニチャは隠さないのが当たり前

    « Pathtraq バージョンアップのおしらせ - サイドバー表示に対応 | メイン | Perl から MySQL に非同期アクセスする方法 » 2007年09月05日 サーバシグニチャは隠さないのが当たり前 ウェブサーバ(Apache)で、404などのエラーページを表示したとき、ヘッダやページの下にApacheやOSのバージョンが表示されます。こういったサーバ情報をわざわざ表示する必要はありません。 ウノウラボ Unoh Labs: 5分でできるウェブサーバのセキュリティ向上施策 私も何年も前からセミナーではサーバ、モジュールバージョンは隠すようにと言っています。何故こんな事で賛否両論になるのか全く理解できません。 yohgaki's blog - サーバシグニチャは隠すのが当たり前 Server: ヘッダを隠すメリットについての議論はあるようですが、Server: ヘッダを表示すべ

    youpy
    youpy 2007/09/05
  • Kazuho@Cybozu Labs: 新サービス: Pathtraq リリースのおしらせ

    « swifty - 高速な共有メモリキャッシュ | メイン | Japanize 拡張機能 0.8.9 リリースのお知らせ » 2007年08月08日 新サービス: Pathtraq リリースのおしらせ 日、ウェブブラウザの拡張を通してアクセスログを共有するサービス「Pathtraq」(パストラック) を公開しました。いろいろな使い方ができるサービスなのですが、いくつか紹介したいと思います。 なお、Pathtraq は今朝方まで、サイボウズグループ内で、数十人で試験運用をしていただけなので、データが全然足りません。以下を読んで興味をお持ちいただけた方々には、ぜひインストールしていただいて、一緒に便利なアクセス解析システム、ランキングページを作って行ければと思っております。よろしくお願いいたします。 1. いくつかの使い方 a) 注目の情報を知る Pathtraq - 24時間ランキング

    youpy
    youpy 2007/08/08
  • 秋元@サイボウズラボ・プログラマー・ブログ ついにページビューによる測定が最重要でなくなりそう

    via Yahoo! News ウェブサイトの視聴率測定最大手のニールセン/ネットレイティングスが、ページビューによるウェブサイトのランクづけをついに廃止(非公式化)し、サイト滞留時間でのランキングに切り替えるという発表を明日(米国時間火曜日)するらしいというニュースがきた。 Ajaxによるユーザビリティ向上などで、Yahooなどはかえってページビューの減少が起こっていたり、YouTubeなどの動画サイトではユーザが動画をじっと見ているので実際の利用時間に比べてページビューが少なかったり、何かするたびに別のページを開かせるMySpaceが、ページビューでは実際よりも人気があるように見えてしまっていたというような問題が出ていたが、これらの問題を解消するのが目的らしいということだ。 サイト滞留時間でランキングをつけなおすと、PVでトップだったYahooが2位に後退、トップはPVでは6位だったA

    youpy
    youpy 2007/07/10
  • Javascriptでdiffる ( with 形態素解析 ) (nakatani @ cybozu labs)

    Javascript で diff というのはいくつか試された例はあるようですが、まだこれといった決定打は出ていない様子です。 実は diff は見た目ほど軽い処理ではないので、Javascript にやらせるのはこれが結構大変…… diff の計算量は、おおざっぱに言うと比較対象の要素数の二乗に比例し(実際にはそれより小さくすることができるのですが、まあ話のイメージとして)、かつメモリを大量に消費するので、バッチ的な処理に最適化されていない Javascript にはどうしても荷が重いものとなってしまいます。 比較対象の要素数を減らせば当然計算量は減りますが、行単位で比較してもあまり嬉しくない(わざわざ Javascript で処理するということは自然文が対象と思って良いでしょう)。最小の文字単位だとギブアップ。 ということは形態素解析で分かち書きして、単語単位で diff するのが J

    youpy
    youpy 2007/06/29
  • TAKESAKO @ Yet another Cybozu Labs: Operaでも非同期リクエストが並列処理できる img-JSONP

    先日金床さんに教えてもらったOperaで非同期並列JSONPを実行させる方法を実際に試してみたら意外とすんなり動いてしまったので報告します。 最速インターフェース研究会 :: OperaでJSONPを非同期リクエストするより JSONP が Opera だと非同期処理できない http://d.hatena.ne.jp/secondlife/20060906/1157515075 に書かれているとおりOperaだとscript要素を足した瞬間にJavaScriptの実行が止まって、ロード完了まで後続のスクリプトが実行されなくなります。 サンプルコード 改善前(普通のJSONP) Operaはスクリプトを追加するとタイマーが止まる(サンプルページ) http://la.ma.la/misc/js/opera_jsonp_test.html function test(){ var s = d

    youpy
    youpy 2007/06/06
    img 要素のonerror を使う
  • 秋元@サイボウズラボ・プログラマー・ブログ: reCAPTCHA - キャプチャを利用した人力高性能OCR

    reCAPTCHA という新サービスはすごい。その構想力には感動させられた。 念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっ […] reCAPTCHA という新サービスはすごい。その構想力には感動させられた。 念のためにCAPTCHA(キャプチャ)について説明しておくと、スパムプログラム(bot)と人間のユーザを見分けるための簡単な(しかし機械にとっては難しい)クイズのことだ。ある程度ウェブを使っている人なら、ネットサービスの登録時やコメントの書き込み時などに、読みにくく加工されたアルファベットを読まされたりした経験があるだろうと思う。 それらのサイトでは、あなたが人間にしかできないクイズを解いたのを見て、ユーザ登録やコメントの投稿を受け付けたりする仕組みになっているわけだ。文字を読む以外のC

    youpy
    youpy 2007/05/25
  • Kazuho@Cybozu Labs: 負荷に応じてキャッシュを自動調節する Perl モジュール

    « Re: PoCo::Client::HTTP が勝手に文字コードを変えてしまう件 | メイン | Cache::Adaptive の使い方 » 2007年05月09日 負荷に応じてキャッシュを自動調節する Perl モジュール Cache::Adaptive の使い方に続く 最近かりかりとサーバサイドの実装をしています。修行の成果、だいぶ複雑な SQL も書けるようになってきました。DBMS の気持ちを考えながら SQL 最適化するのは楽しいですね。しかし、いくら SQL を工夫したところでパフォーマンスの限界はあるわけです。 となると、採りうる選択肢はスケールアウト・スケールアップ・キャッシングの3つになります (もちろん組み合わせも可)。ただ、需要予測の最大値に基づいて機材を確保するのもあまり効率的とは言えませんし、リリース直後に徹夜でパフォーマンスのチューニングをするのもイヤです

    youpy
    youpy 2007/05/10