タグ

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

  • 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

    hiro_y
    hiro_y 2013/12/25
  • Kazuho@Cybozu Labs: MySQL Conference & Expo 2009 に参加してきました

    « FreeBSD の ptrace ではサンドボックスを作れないという話 | メイン | ブログ移転のおしらせ » 2009年04月30日 MySQL Conference & Expo 2009 に参加してきました 先週一週間、MySQL Conference & Expo 2009 に参加してきました。ほとんどのキーノートのビデオや一部のセッションの資料は公開されているようなので、それ以外、全体からうけたイメージなどについて、つらつらと。 サービスをスケールアウトする話は、意外と聞かなかったように思います。今回が初参加だったので間違っているのかもしれませんが、単純な「スケールアウトできるよね」という話ではなく、むしろ、アプリケーションデベロッパに負担をかけずにスケールアウト (もしくはスケールアップ) するデータベースを、どのように作るか、というところが盛り上がっていたように思います

    hiro_y
    hiro_y 2009/04/30
    Q4Mの詳細な資料。
  • Kazuho@Cybozu Labs: Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性

    « MySQL の order by 〜 limit を高速化する方法 | メイン | MySQL Conference & Expo 2009 で Q4M の話をします » 2008年12月16日 Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性 先月開催された Shibuya.pm #10 でプレゼンテーションがあった MENTA や NanoA では、Mojo 由来のテンプレートエンジンを拡張して使用してきたのですが、Perl モジュールとして独立させるべきだよね、ということになり、このたび Text::MicroTemplate として CPAN にアップロードしました。 そのことを告知するとともに、作業の過程で興味深く感じた、テンプレートエンジンのセキュリティと利便性に関する話題をブログに書いておこうと思います。 テンプレートエンジンのエスケ

    hiro_y
    hiro_y 2008/12/16
    Perlのテンプレートエンジン周りの話。
  • Kazuho@Cybozu Labs: なぜサイボウズ・ラボで働くのか

    « ウェブサービスの SSD 化について話してきました | メイン | MySQL の order by 〜 limit を高速化する方法 » 2008年12月08日 なぜサイボウズ・ラボで働くのか 12月6日に大阪で開催されたサイボウズの採用説明会で、話をさせていただきました。大学生の方々向けということで、あまり技術面に振ったプレゼンをするのもどうかと悩んだ末、自分が、なぜサイボウズ・ラボで働いているのか、ということを、大学生の頃から振り返ってみることにしました。 ふだん、しなれていない類いの話なので、うまく伝わったか、正直不安です。ただ、自分自身にとっては、何が好きなのか、何がやりたいのか、ということを改めて見つめ直すいい機会になりました。また、来場者の方々といろいろ話をできたことも、自分にとっていい刺激になったと感じています。 ですので、ご来場いただいた方々には、サイボウズに興味をも

    hiro_y
    hiro_y 2008/12/08
    「つまり、世界の進歩に、自分の小さな一押しを加えるということ」
  • Kazuho@Cybozu Labs: ウェブサービスの SSD 化について話してきました

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

    hiro_y
    hiro_y 2008/11/27
    特にDBをSSDに何とかして乗せる方向。耐久性とかどうなのかな。
  • Kazuho@Cybozu Labs: 開発しているウェブアプリケーションフレームワーク NanoA について話してきました

    « サイボウズの新卒採用説明会に参加します | メイン | ウェブサービスの SSD 化について話してきました » 2008年11月27日 開発しているウェブアプリケーションフレームワーク NanoA について話してきました 日 (11/27) 開催の Shibuya Perl Mongersテクニカルトーク#10 で、最近作っているウェブアプリケーションフレームワーク NanoA について話しました。スライドを置いておきますので、ぜひご覧ください。

    hiro_y
    hiro_y 2008/11/27
    NanoAについての発表資料。設計思想みたいなものを言語化するのって大事。
  • Kazuho@Cybozu Labs: ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性

    « Filter::SQL でデータベースを叩くワンライナーを簡単に書く方法 | メイン | ウェブサービスにおけるダメージコントロール (MySQL のスロークエリを自動的に kill する方法) » 2008年10月28日 ウェブサービスにおける SSD 導入にむけて〜検索サービスの可能性 実際に試してみた結果については、ウェブサービスの SSD 化について話してきましたをご参照ください。 検索エンジンや小さな行が多いデータベース等で使用する目的での SSD (Intel X25-M) のベンチマーク結果については、Kazuho at Work: Benchmarking SSD for MySQL をご覧ください (InnoDB の話をしていますが、Senna / Tritonn でも基的に同じ) Sun が SSD 製品の投入を表明 (マイコミジャーナル) したり、Google

    hiro_y
    hiro_y 2008/10/29
    SSDはランダムアクセスに強い/バイトあたり単価が安い/全文検索のインデックス置き場として。
  • Kazuho@Cybozu Labs: MicroblogCon1 の報告と Q4M 0.8.1 リリースのお知らせ

    « Q4M バージョン 0.8 をリリースしました | メイン | Q4M 0.8.3 をリリースしました (含 FreeBSD サポート) » 2008年08月30日 MicroblogCon1 の報告と Q4M 0.8.1 リリースのお知らせ 先日 (8/27 水) 、弊社を会場にして、マイクロブログのサービス開発やそのミドルェアに関するカンファレンス「MicroblogCon1」を開催いたしました。スピーカーの方々、お越しいただいた方々、ありがとうございました (当日の模様は coji さんが撮影して中継、techtalk.jp にて公開してくださっています。 ありがとうございます) 。奥はその中で、Q4M の概論から入門的な話をしたので、興味のある方はスライドをご覧ください。

    hiro_y
    hiro_y 2008/09/01
    Q4M発表資料。バイナリ版もリリースするようになったのこと。
  • Kazuho@Cybozu Labs: 最適化された最適化手法について

    « Pathtraq の API を公開しました | メイン | 実行時間を抑制するモジュール Sub::Throttle を書いた » 2008年07月25日 最適化された最適化手法について 昨日ソフリットを会場に (壇上さん++) 開催された CodeRepos Conference #1 に参加してきました。お題は「自重しないで coderepos に貴様がいれているプロダクトについて語れ!」ということだったので、そのあたりを例に挙げながら、自分は最適化手法について (空気を読まずに) 話しました。 どちらかと言うとサーバの最適化設計を中心にした話です。いろいろ荒削りですが、そうだね、とか、そこは違うよ、とか指摘いただければ幸いです。発表の動画がニコニコ動画にアップロードされているので (coji さんありがとうございます) よろしければあわせてご覧ください。

    hiro_y
    hiro_y 2008/07/26
    最適化によって期待できる速度の上限を知っておくこと。
  • サイボウズ・ラボ : サイボウズ・ラボ、話題のウェブサイトをランキング化するサイト Pathtraq (パストラック) の統計情報取得 API を公開 - 6,000万件のブログやニュースの統計データから検索やランキング取得が利用可能に

    サイボウズ・ラボ、話題のウェブサイトをランキング化するサイト Pathtraq (パストラック) の統計情報取得 API を公開 - 6,000万件のブログやニュースの統計データから検索やランキング取得が利用可能に サイボウズ株式会社 (社: 東京都文京区 代表取締役社長: 青野 慶久 (戸籍名: 西端 慶久) 以下サイボウズ) の連結子会社で、研究開発を専門に行うサイボウズ・ラボ株式会社 (社: 東京都千代田区 代表取締役社長 畑 慎也 以下サイボウズ・ラボ) は、2007年8月8日(水)に開始した話題になっているウェブサイトやブログをリアルタイムにランキング化するサイト「Pathtraq (パストラック)」のアクセス統計データを利用した 開発者向け API を2008年7月23日(水)より公開することを発表いたします。 Pathtraq (パストラック) の概要 「Pathtraq

    hiro_y
    hiro_y 2008/07/24
    Pathtraqのデータを利用できるAPIが公開に。
  • 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 にな

    hiro_y
    hiro_y 2008/06/13
    MySQLのプラグインをC++で書くと速い。
  • Kazuho@Cybozu Labs: フレンド・タイムライン処理の原理と実践

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

    hiro_y
    hiro_y 2008/06/09
    友達のタイムライン取得処理をDB側でどう実装するか。登録でがんばる or 取得でがんばる。
  • Kazuho@Cybozu Labs: MySQL のクエリ最適化における、もうひとつの検証方法

    « メッセージキュー事始め with Q4M | メイン | フレンド・タイムライン処理の原理と実践 » 2008年06月09日 MySQL のクエリ最適化における、もうひとつの検証方法 EXPLAIN を使用して MySQLSQL を最適化するというのは、良く知られた手法だと思います。しかし、EXPLAIN の返す結果が、かならずしもアテになるわけではありません。たとえば、以下のような EXPLAIN を見て、このクエリが最適かどうか、判断ができるでしょうか。私には分かりません。 mysql> EXPLAIN SELECT message.id,message.user_id,message.body FROM message INNER JOIN mailbox ON message.id=mailbox.message_id WHERE mailbox.user_id=2 OR

    hiro_y
    hiro_y 2008/06/09
    show statusの結果をもとにチューニング。
  • Kazuho@Cybozu Labs: メッセージキュー事始め with Q4M

    « YAPC::Asia 2008 で Pathtraq について話してきました | メイン | MySQL のクエリ最適化における、もうひとつの検証方法 » 2008年05月27日 メッセージキュー事始め with Q4M 今日、奥が開発し Pathtraq でも使っているメッセージキュー Q4M について説明する機会があったので、自分の頭を整理しながらスライドに起こしてみました。メッセージキューとはそもそも何か、という所から始まって、Q4M の内部構造と使用方法、さらには、ウェブサービス等でキューを使うべきいくつかのシナリオについても書いてありますので、よろしければご覧ください。

    hiro_y
    hiro_y 2008/05/27
    Q4Mの内部構造と使用方法。
  • Kazuho@Cybozu Labs: Perl で埋め込み SQL を使って楽をする話

    « Japanize for IE バージョンアップのおしらせ | メイン | Filter::SQL を使って掲示板を書いてみました » 2008年04月16日 Perl で埋め込み SQL を使って楽をする話 DSL (ドメイン固有言語) は、プログラム開発の生産性を向上させる有力な手段です。そして、よく使われる DSL の代表例が正規表現と SQL だと思うのですが、前者に比して後者を嫌いな人が多いようです。なぜだろうと思ってつぶやいたところ、「SQL はリテラルじゃないから!」という答えが tokuhirom さんから返ってきました。そういえば例えば Pro*C のように C で Embedded SQL というのは良く聞く話なのに、Perl では同様の例がないような感じだったので、作ってみました。Perl で埋め込み SQL を実現するソースフィルター Filter::SQL

    hiro_y
    hiro_y 2008/04/18
    Perlのコード中にSQLをそのまま書く。
  • Kazuho@Cybozu Labs: 高速なCometサーバを書いてみた件

    « Pathtraq 最新ランキング ガジェットを公開しました | メイン | Q4M (Queue for MySQL) 0.3 リリース » 2008年03月10日 高速なCometサーバを書いてみた件 もう昨年の2月になりますが、Comet について調査を行いました。その際の成果をまとめたスライドは既に公開していた (Comet の正しい使い方) のですが、同時に実際に作ってみた実装についても、オープンソース化することとなりました。コードは CodeRepos に置いておきますので、どうぞご覧ください。 (Revision 7754: /lang/perl/fastr) 使い方は example ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

    hiro_y
    hiro_y 2008/03/12
    CometサーバのPerlによる実装をCodeReposで公開。
  • 24時間で作られたWigitizeの開発者はiKnow!の関係者 | 秋元@サイボウズラボ・プログラマー・ブログ

    百式で紹介されていた24時間で作られたドットコムサイト『Wigitize』、Diggで2000票近くを集めていたのでネットサービス作成のサンプルとして面白かったのは間違いない。 Diggされた元記事では、デザイン、ソース管理、Rails/DB開発、HTML, Javascript書き、JSON出力、バックグラウンド処理、API作成、ドメイン名と連絡メール、ホスティングとの契約、公開、SEOまでを手際よく24時間で進めた様子を、使った道具やサービスと一緒に紹介している。 もう一つ面白い話があって、このDominiekさんのブログを読んだり、彼の会社トゥーポイントのサイトを見るとわかるんだけれど、この人はオランダから東京に昨年移ってきており、英語学習SNSとして最近ネットで話題になったiKnow!の開発にも関わっているようなのだ。(顧客リストにiKnow!のセレゴジャパン) 昨年といえば、写真

    hiro_y
    hiro_y 2008/01/21
    「日本の進んだネット環境やモバイル環境、あと日本や東京の何か(文化とか安全? よくわからん。今だと円安も、か)が、何人もの若手ネットサービス開発者の興味をひきつけているのではないだろうか。」
  • JSRuby - Javascript による Ruby(っぽい)実装 (nakatani @ cybozu labs)

    OreScript時代の幕開け - yukobaの日記 http://d.hatena.ne.jp/yukoba/20071108/p1 巷で OreScript ブームが巻き起こる中、某所ではさらに局地的に Javascript での言語実装ブーム。 ××さんが ******* を試作したり、西尾さんが python4js を試作したりして、うーむこんなおもしろそうなお祭りは看過できんでわないか。Ruby 成分の多い中谷としてはここはやっぱ JavascriptRuby かっ!? そういえばだれか Javascript でパーサ書いてはったよなあ。それを使わせてもらえば Ruby の構文木をさっくり得られて、ちょこちょこっとインタプリタ書いたら、FizzBuzz くらいなら動くんじゃないの? という思いついてしまったからには、もう作ってみるしか。 というわけで言った者勝ち(笑)の

    hiro_y
    hiro_y 2007/11/22
    JavaScriptによるRubyパーサ。
  • Kazuho@Cybozu Labs: サーバメンテナンス中にエラー画面を返す方法

    « Pathtraq サービス中断のお知らせ | メイン | Japanize と Pathtraq が Firefox 3 Beta 1 に対応しました » 2007年11月18日 サーバメンテナンス中にエラー画面を返す方法 サービスのメンテナンス中など、ウェブサーバ全体で 503500 エラーを返したいようなケースがあると思うのですが、その場合どうすればいいのでしょう。ちょっとググってみたけど分からなかったので自分で考えてみました。 ErrorDocument 503500 "Sorry. The service is under maintenance." RedirectMatch 503500 .* とりあえずこんな感じでいいみたい。RedirectMatch 等の設定ディレクティブで 300 番台以外のステータスコードを指定できることを今回初めて知りました。 (参考: mod_

    hiro_y
    hiro_y 2007/11/18
    webサーバ全体で503+エラー画面を返すために。
  • TAKESAKO @ Yet another Cybozu Labs: 出張 Shibuya.js 24 動画アーカイブ公開

    空前の技術系イベント動画公開ブーム到来、ということで、 2007年9月15日(土) に開催された 出張 Shibuya.js 24(Mozilla 24 ~ Worldwide Continuous Event ~) の動画アーカイブが公開されました。 お待たせいたしました!9月15日~16日に開催されたMozilla 24 の各セッションアーカイブを公開しました。日語、英語の両方が用意されています。 当日は日国内だけでも四つの会場で同時並行で行われていたため、見られなかったセッションもあるかと思います。ぜひこれを機会にサイトを訪れていただければと思います。 アーカイブ公開は、約半年間、2008年4月末まで行われる予定です。この機会をお見逃し無く。。。 Shibuya.JS内の 全セッションが一つの動画(約1時間50分)にまとまっているので、 各セッションの開始時刻を記載しておきました

    hiro_y
    hiro_y 2007/11/09
    2007/9/15の出張Shibuya.jsの動画。