タグ

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

  • 間違って空メールを大量送信したインターンに、大量の「自分がやらかした失敗」体験が集まる

    We mistakenly sent out an empty test email to a portion of our HBO Max mailing list this evening. We apologize for the inconvenience, and as the jokes pile in, yes, it was the intern. No, really. And we’re helping them through it. ❤️ — HBOMaxHelp (@HBOMaxHelp) June 18, 2021 今晩、HBO Maxのメーリングリストに誤って中身が空のメールを送ってしまいました。ご迷惑をお詫びします。たくさんジョークが届いてる通り、やったのはインターンです。ほんとにそうなんです。これからも彼らを助けてやっていきます❤️ サービスやブランドから

    間違って空メールを大量送信したインターンに、大量の「自分がやらかした失敗」体験が集まる
    d-nkt
    d-nkt 2021/07/20
  • Kazuho@Cybozu Labs: SSD (フラッシュメモリ) のベンチマークと選定基準

    ベンチマークに使用したのは、一般的な HDD、高速性で有名な Intel の SSD、ネットブック (DELL Inspiron Mini 9) の内蔵 SSD (STEC 製, 32GB)、および SanDisk の SDHC カード (SanDisk Extreme III) です注。 この表を見て2つの SSD を比較すると、読み込みパフォーマンスの差がそれほど大きくないことに気づきます。また、SD カードの読み込み速度も、HDD を大きく上回っています。つまり、ランダムリードについては、メーカーや SSD 間の差は、あまり大きくない、ということになります。 一方で、書き込みパフォーマンスについては、非常に大きな差があります。X25-M と STEC の SSD の差は、実に 50 倍にのぼります (SSD の書き込みバッファをオフにした場合の値はこちらの表を参照のこと)。また、SD

    d-nkt
    d-nkt 2009/02/06
  • Kazuho@Cybozu Labs: MySQL Conference & Expo 2009 で Q4M の話をします

    « Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性 | メイン | 「自由な情報」のためのウェブブラウザ » 2008年12月20日 MySQL Conference & Expo 2009 で Q4M の話をします 来年4月にカリフォルニアで開催される MySQL Conference & Expo 2009 で、開発・公開しているストレージエンジン Q4M について話をする機会をいただくことができました。しかも 45 分間! 光栄です。 「MySQL のカンファレンス」なので、運用や実装面について、相当突っ込んだ話ができそう (というかツッコミが怖い...)。自分にとってもいい成長のチャンスだと思うので、しっかり準備していきたいと思います。 Using Q4M - a Message Queue Storage Engine for MySQL

    d-nkt
    d-nkt 2008/12/20
  • Kazuho@Cybozu Labs: MySQL の order by 〜 limit を高速化する方法

    « なぜサイボウズ・ラボで働くのか | メイン | Text::MicroTemplate - テンプレートエンジンのセキュリティと利便性 » 2008年12月12日 MySQL の order by 〜 limit を高速化する方法 filesort が回避できない場合に、MySQL の order by 〜 limit を高速化する方法というのを書いてみました。半分は効果測定が目的の実装のため、UDF になっていたりと、利用にはある程度のスキルが必要だとは思いますが、興味のある方はどうぞ。

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

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

    d-nkt
    d-nkt 2008/11/05
  • 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

    d-nkt
    d-nkt 2008/10/29
  • Kazuho@Cybozu Labs: Q4M 0.8.3 をリリースしました (含 FreeBSD サポート)

    « MicroblogCon1 の報告と Q4M 0.8.1 リリースのお知らせ | メイン | Greasemetal (Google Chrome 用 Greasemonkey) を公開しました » 2008年09月02日 Q4M 0.8.3 をリリースしました (含 FreeBSD サポート) MySQL 5.1 のプラガブルストレージエンジンとして動作するメッセージキュー Q4M のバージョン 0.8.3 をリリースしました。今回の修正点は、以下のとおりです。 シャットダウン時 (および DROP TABLE 時) に発生する可能性のあるデッドロックの修正 FreeBSD のサポート FreeBSD のサポートについては、ソースからのビルドエラーを修正したのに加え、バイナリ版も同時にリリースするようにしました。MySQL AB の公式バイナリと組み合わせて動作確認を行っておりますの

    d-nkt
    d-nkt 2008/09/02
  • Kazuho@Cybozu Labs: Q4M バージョン 0.8 をリリースしました

    d-nkt
    d-nkt 2008/08/17
  • Kazuho@Cybozu Labs: 最適化された最適化手法について

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

    d-nkt
    d-nkt 2008/07/25
  • 秋元@サイボウズラボ・プログラマー・ブログ: 各ソート技法をアニメーションで表示するAnimated Sorting Algorithm Demo

    ソートアルゴリズムのアニメーションデモでは、様々なソート手法(挿入、選択、バブル、シェル、マージ、ヒープ、クイック、三分割クイック)について、ソート対象のデータが完全ランダムの場合、ほぼソートされている状態、逆順にソート […] ソートアルゴリズムのアニメーションデモでは、様々なソート手法(挿入、選択、バブル、シェル、マージ、ヒープ、クイック、三分割クイック)について、ソート対象のデータが完全ランダムの場合、ほぼソートされている状態、逆順にソートされている場合、同じ値のものが多数ある場合のデータをソートする様子を、Javascriptを使ったアニメーションで見せてくれる。 それぞれのソートアルゴリズムがどのようなものか見せるというだけでなく、ソートのアルゴリズムに「常にこれが最適」というものはない、というのを示すのも目的、ということだ。 各アルゴリズムのリンクからは、そのアルゴリズムのコー

    秋元@サイボウズラボ・プログラマー・ブログ: 各ソート技法をアニメーションで表示するAnimated Sorting Algorithm Demo
    d-nkt
    d-nkt 2008/06/26
  • Kazuho@Cybozu Labs: MySQL の ORDER BY を高速化

    « MySQL (InnoDB) に直接アクセスしてタイムライン処理を高速化する話 | メイン | なんとなくリフレクション in C++ » 2008年06月20日 MySQL の ORDER BY を高速化 Pathtraq の拡張にむけて、いろいろ技術的な可能性を調査していると、MySQL の ORDER BY に負荷がかかっていることが分かりました。他にもボトルネックはあるのですが、ここは比較的最適化しやすそうだったので、試しに書いてみました。 mysql51-sort-opt.patch やっていることは、ソートルーチンのベタな最適化です。ORDER BY 句によって悪名高き filesort が実行される場合に、最大30%〜50%ほど高速に動作するようになりました。ただ、自分が書く類いのクエリだと、質的には top n sort を実装すべきなので、どうしたものかと思っていま

    d-nkt
    d-nkt 2008/06/23
  • 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 にな

    d-nkt
    d-nkt 2008/06/12
  • 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

    d-nkt
    d-nkt 2008/06/09
  • Kazuho@Cybozu Labs: データベースの差分バックアップとウェブサービスのお引っ越し

    « C++ テンプレートを使って高速な高機能サーバを書く方法 | メイン | YAPC::Asia 2008 で Pathtraq について話してきました » 2008年05月01日 データベースの差分バックアップとウェブサービスのお引っ越し 現在、Pathtraq のサーバを、オフィス内のサーバルームに設置されたマシンからデータセンタ内の新サーバへ移行する作業を行っています。その際に問題となるのは、ダウンタイムを最小にしつつ、100GB 弱ある MySQL のデータをいかに移動させるか、という点になります。答えは言うまでもなく差分転送なのですが、rsync は双方向の接続が必須だったり、差分情報をキャッシュすることができなかったり、いろいろ融通が効かなそうです。だんだん調べるのも面倒になってきたので、自分のニーズに見合う、データベースファイル用の差分バックアッププログラムを書いてみました

    d-nkt
    d-nkt 2008/05/07
  • Kazuho@Cybozu Labs: C++ テンプレートを使って高速な高機能サーバを書く方法

    « C++ テンプレートで(いまさら)FizzBuzz | メイン | データベースの差分バックアップとウェブサービスのお引っ越し » 2008年04月18日 C++ テンプレートを使って高速な高機能サーバを書く方法 「C++ のメンバ関数ポインタって何のためにあるの」という質問を耳にすることがあります。実際は、たとえばステートマシンを書くのに便利なのですが、ちょうどサイボウズ・ラボの C++ 熱が盛り上がっていることもあり、昔の作ったサーバフレームワークを再実装してみました。ちなみにもともとは、1990年代に東京大学駒場キャンパスで使われていた friends というサービスのバックエンドだった、finger プロキシ用に書いたコードです。ソースコードは /lang/cplusplus/friends_framework - CodeRepos::Share - Trac においてありま

    d-nkt
    d-nkt 2008/04/22
  • 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

    d-nkt
    d-nkt 2008/04/16
  • Google App Engineを使ってみた

    Google App Engine(書きにくい。GAEとか略すのかなと予想)のページで、使える状態になっていたのでボタンを押して利用開始。 アプリは3つまで作らせてくれるということなので、まず Application名 […] Google App Engine(書きにくい。GAEとか略すのかなと予想)のページで、使える状態になっていたのでボタンを押して利用開始。 アプリは3つまで作らせてくれるということなので、まず Application名 “akky” を確保。 これで、http://akky.appspot.com/ が使えるようになる。(Google Appsのように、独自ドメインへのマップもできる予定) まずはローカルでちゃんと動くPythonアプリを作る、ということで、さきほどインストールしたSDK上で作業。 C:> cd “Program FilesGooglegoogle_

    Google App Engineを使ってみた
    d-nkt
    d-nkt 2008/04/09
  • Kazuho@Cybozu Labs: Q4M (Queue for MySQL) 0.3 リリース

    « 高速なCometサーバを書いてみた件 | メイン | Parallel::Prefork - Perl でマルチプロセスなサーバを書く方法 » 2008年03月19日 Q4M (Queue for MySQL) 0.3 リリース MySQL 上で動作するメッセージキュー「Q4M」のバージョン 0.3 をリリースしました。今回のバージョンアップで、以下の機能が追加になっています。 メッセージリレー機能 Q4M テーブルに挿入されたメッセージを、別のサーバで動作する MySQL に転送できるようになりました。サーバが落ちたりネットワークが切断された場合でもメッセージの喪失や複製が発生しないように設計されています。 例えば Pathtraq の場合、サービス体と文解析システムは、それぞれ物理的に離れたロケーションで運用されています。そして、両者間の情報交換のために Q4M のメッセージリ

    d-nkt
    d-nkt 2008/03/19
  • 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 ディレクトリ以下を見ていただくとして、ベンチマークの結果とチューニング手法について、記録と記憶に残っている範囲からまとめておきたいと思います。 パフォーマンスについて まず、パフォーマンスに

    d-nkt
    d-nkt 2008/03/10
  • Kazuho@Cybozu Labs: データベースをコピーするモジュール DBIx::Replicate

    « Pathtraq リニューアルのおしらせ (リアルタイム検索機能の追加ほか) | メイン | setlock を使って cron をぶんまわす方法 » 2008年01月29日 データベースをコピーするモジュール DBIx::Replicate データベースをオンデマンドでコピーするモジュール DBIx::Replicate を書いて、CodeRepos にアップロードしました。こんな感じで使います。 use DBIx::Replicate qw/dbix_replicate/; # 20才以下の人だけを young_table にコピー (1000行毎, 最大負荷 0.5) dbix_replicate({ src_conn => $dbh, src_table => 'all_people', dst_conn => $dbh, dest_table => 'young_people

    d-nkt
    d-nkt 2008/02/15