タグ

ブックマーク / developer.cybozu.co.jp (33)

  • Kazuho@Cybozu Labs: 「サーバ書くなら epoll 使うべき」は、今でも正しいのか

    多数のTCP接続をハンドリングするサーバを書くなら、1コネクション1スレッドのモデルではなく、epollやkqueueのようなイベント駆動型のI/O多重化を行うべきだ、と言われます。だが、そのような主張は、「C10K問題」が書かれた2002年から7年経過した今でも有効なのでしょうか? echoサーバを書いて、ベンチマークを取ってみることにしました。 ふたつのグラフは、いずれも接続数とスループットの関係を表しています。最初のグラフは、全接続がアクティブに通信した場合、あとのグラフは、全接続のうち小数のコネクションが順次アクティブになっていく、というモデルです。これらのグラフから、以下ようなことが読み取れます。 epoll も per-thread モデルも、良くスケールする epoll は、ワークセットが小さい場合に (最大50%) per-thread モデルよりも高速 少なくとも、1コネ

    terazzo
    terazzo 2012/09/27
  • プログラミング言語APLで謹賀新年Golf | TAKESAKO @ Yet another Cybozu Labs

    2012年の元旦ということで、プログラミング言語APLで謹賀新年Golfをやってみました。 APLとはA Programming Languageの略で、1957年のFORTRAN登場以降にケネス・アイバーソン博士によって発明された数式処理のための記法をIBMが対話型のプログラミング言語として修正し実装したものです。当時は⍳{iota}や⍴{rho}など特殊な記号を入力するためのAPLキーボードがあったそうです。 今ではAPLフォントの記号はすべてUnicodeの中で定義されています。 先月開催したサイボウズ・ラボユース冬の合宿では、林拓人さんが筑波大学の図書館から借りてきたAPLの教科書があったので少し斜め読みしてみました。それで、APLの記号の使い方が大体わかったので、今回の謹賀新年Golfをしてみることにしました。 まずは91文字のAPLプログラム。 11×((3⊖5 o↑1⌽(1

    terazzo
    terazzo 2012/01/02
    『言語設計者たちが考えること』でもAPL好きな人多かったな
  • Googleストリートビュー乱射ゲーム、グーグルにAPIを遮断されあっという間に終了 | 秋元@サイボウズラボ・プログラマー・ブログ

    昨日ご紹介した、グーグルのストリートビューを使って世界の街角で自動小銃を撃つサービスGoogleシュートビューが、サービス終了しました。サイトには”Ctrl + alt + delete”の文字だけが表示されています。終了という意味? Business Insider Advertisingが報じるところによると、このプロモーションを製作したオランダPool Worldwide社のクリエイティブ・ディレクターErwin Kleinjan氏が「グーグル社が利用規約違反を理由にAPIの利用許可を撤回した」と語ったということです。 金曜に公開され、月曜に停止されたこのサービス、ピーク時には一秒に3000人の訪問者を集め、サーバーがクラッシュしたこともあったとか。 利用規約のどこに違反したのかはわかっていませんが、グーグル社としてはストリートビューのイメージが悪くなると判断したんでしょうかね。

    Googleストリートビュー乱射ゲーム、グーグルにAPIを遮断されあっという間に終了 | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2011/12/15
  • Kazuho@Cybozu Labs: アクセスログからアテンション(注目情報)をデータマイニングする手法について

    多数のユーザーの行動記録からアテンション情報(注目されているデータが何か)をデータマイニングしたいというのは、大量のデータを扱っているウェブサイトにおいては自然と出てくる要求です。そこで、先月末にサービスを終了したサービス「パストラック」において使用していた、アクセスログから注目度(人気度)の高いウェブページや人名等のキーワードを抽出するためのアルゴリズムを紹介しておきたいと思います。 たとえばはてなブックマークのような、ユーザーの能動的な行為(「ブックマークする」という作業)から注目情報を抽出するのは決して難しいことではありません。それは、直近の一定期間内のブックマーク数=注目度、という前提が上手に機能するからです。現に、はてなブックマークの人気エントリーは、最近24時間程度の期間内にブックマークしたユーザー数の多い URL を降順で並べているように見受けられます。 しかし、アクセスログ

    terazzo
    terazzo 2010/11/11
  • Kazuho@Cybozu Labs: テストケースの実行にあわせて Apache を起動・終了する方法

    ウェブアプリケーションやライブラリの結合テストを行う段階になると、実際に Apache を起動してテストを実行したくなります。しかし、そのためにいちいち Apache の設定ファイルを修正して httpd を再起動して、とやっていては面倒です。特に複数のプログラムを同時に開発していると、あっちをテストしたらこっちが動かなくなって… なんてなったりして嫌気がさしてきます。 そこで、テストを実行する際に、環境毎に異なる以下のような問題を吸収しつつ、テスト専用に設定された Apache を自動的に起動終了してくれる Perl モジュール:Test::Httpd::Apache2 を書きました。 環境によって、インストールパスが違う (/usr/local/apache/bin だったり /usr/sbin だったり) 環境によって LoadModule の要不要や、ロードするパスが違う 環境によ

    terazzo
    terazzo 2010/08/27
  • Kazuho@Cybozu Labs: REST におけるトランザクションについて (Re: Web を支える技術)

    といいつつ、ひとつだけ理解できないというか、納得できないところが。トランザクションのところがなんだかRESTっぽくないのがすごく気になる Webを支える技術 -HTTP、URI、HTML、そしてREST (WEB+DB PRESSプラスシリーズ)(山 陽平) - ただのにっき(2010-04-23) 「Web を支える技術」は自分もとてもいいだと思う (教科書としてすばらしいし復習用としても読みやすいのでイイ) のですが、トランザクションの所だけは分かりづらいなと感じました。その原因は、atomic transaction で解決できる課題を例として使っているという点と、トランザクションと更新クエリのレイヤ分割がされていない、という2つの点によるものではないでしょうか。 HTTP 上でトランザクションを表現する必要があるケースのほとんどは、atomic transaction ではなく

    terazzo
    terazzo 2010/04/25
  • Hatetris 超高難易度テトリス | 秋元@サイボウズラボ・プログラマー・ブログ

    Hate(憎む) + Tetris = Hatetrisと名付けられたこのブラウザで動くテトリス、普通のテトリスと大きく違うところがあります。 * 重力がないので好きなだけ次の移動を考えることができる? たしかにそれも違うところですが、もっと大きな違いは * 常に、一番困難なブロックが現れる という点です。操作はカーソルキーのみ。重力がないので明に下に落としていかないと次は出ません。まあ一回やってみてください。すごいイライラしますよ 作者の解説によれば、このゲームに偶然はなく、どの状況ならどのパーツが出てくるかは常に決まっています。ラインを消せないように消せないようにブロックが出てくるので、その消しにくいブロックを使ってラインを作ることを、理詰めで考えなければいけません。勝手にブロックが落ちなくても、そうとう考えさせられますよ。 偶然性がないことから、すべての入力は記号の組み合わせで記録す

    Hatetris 超高難易度テトリス | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2010/04/21
    5行が限界だわ……。とりあえず凹的な形というか、&hC3,&hE7,&hEFの形を作ったら何が来ても一行分は消せる。
  • Kazuho@Cybozu Labs: crontab を使って効率的にサービス監視する方法

    監視とは継続的なテストである、という話 (もしくは cronlog とテストスクリプトを組み合わせた監視手法について)に続きます 今日ようやく、積ん読状態だった「Software Design 2010年1月号」を手に取ったのですが、特集が「今日から使えるスクリプト満載! [プロ直伝]お手軽サーバ監視術」。興味深く拝読したのですが、もっと楽ができるのにと思うところも。ちょうど、昨年末に運用しているサービス「パストラック」のサーバを移転し、crontab と perl で書かれたスクリプト群を使った監視環境を構築したところなので、そこで使っているスクリプト cronlog を紹介したいと思います。 特集の前書きにも書かれていることですが、サーバやネットワーク機器が多数ある環境なら、Nagios を始めとする、専ら監視のために作られたソフトウェアを使って、監視システムを構築すべきです。逆に小規

    terazzo
    terazzo 2010/01/14
    crontabのMAILTOの活用法。とりあえず経過をだらだら出力しておいて、異常があったら非0でexitすればメールで送られるというのは書きやすいかも。
  • 情報科学苦手の会に参加してきました | TAKESAKO @ Yet another Cybozu Labs

    今年の情報科学若手の会には参加できなかったので、情報科学苦手の会の方に参加してきました。 幹事のみずしまさん、運営周りをいろいろサポートしていたsyuuさん(ハンドルネーム)、会場提供たけおかさん、その他発表者のみなさん、参加者のみなさん、ありがとうございました。 自分はC++が苦手なので、templateでコンパイル時に素数を数え上げるプログラムを作成して自習勉強してみました。苦手な法律の話も勉強したのですが、ピザ到着の時間が近かったので今回は発表をパスさせていただきました。 ■ C++テンプレートでコンパイル時に静的に素数を計算する 元ネタ: C++テンプレートでFizzBuzz – おびなたん☆ Kazuho@Cybozu Labs: C++ テンプレートで(いまさら)FizzBuzz C++のテンプレートで素数計算 – 西尾泰和のはてなダイアリー ちょっと古い話題ですが、enumを

    terazzo
    terazzo 2009/12/08
  • Kazuho@Cybozu Labs: TCP通信ではデータの送信をまとめて行うべき、もうひとつの理由(& サーバのベンチマーク手法の話)

    TCP通信をするプログラムを書く際に「データの送信はまとめて1回で」行うべき、というのは鉄則と言っていい、と思います。その理由としては、パケット数を最小限に抑えることでオーバーヘッドを少なくするためだと一般に説明されますが、自分はもうひとつポイントがあると考えています。次のグラフを見てください。 グラフは、一定量のデータを転送するのにかかる時間と使用するブロックサイズ(1回のwrite(2)で書き込むサイズ)の関係を表したものです注1。 ホスト間のTCP通信を行っている場合は、TCPのバッファが有効に機能するので、ブロックサイズ(=パケット数の逆数)による速度の変化は、ほぼありません。一方、同一ホスト上で通信を行うと、ブロックサイズと反比例して所要時間が反比例の関係にあることがわかります。 原因は、同一ホスト上の通信では、送信プロセスがwrite(2)を呼ぶたびにコンテクストスイッチが発生

    terazzo
    terazzo 2009/12/01
  • Kazuho@Cybozu Labs: 高度に進化した分散データストアは RDBMS と見分けがつかない? (shibuya.pm #12 スライド)

    開発しているシャーディングミドルウェアである Incline と Pacific については YAPC::Asia 2009 を始めいろいろな所で話をする機会をいただいてきたので、今回は、なぜ RDBMS ベースのアプローチを採用したのかという背景を中心に説明させていただきました。概念的な話が多くて分かりにくかったと思います(すみません)が、細かな点についてはパフォーマンスとスケーラビリティのためのデータベースアーキテクチャ (BPStudy#25発表資料)を参照いただければと思います。 また、中で出てきた「実体化ビュー」については、Materialized view - Wikipedia, the free encyclopediaが良くまとまっているかと思います。Incline は一言でいうと、RDBで構成されるshard群の上で read-only かつ eventually co

    terazzo
    terazzo 2009/12/01
  • 13,400円で宇宙からの写真を撮ったMITの学生の話 | 秋元@サイボウズラボ・プログラマー・ブログ

    これがその写真の一枚 マサチューセッツ工科大の二人の学生Justin LeeさんとOliver Yehさんが、普通にお店で入手できる部品を組み合わせることで、これまでにない超低予算(148ドル)での成層圏からの地球撮影に成功した、ということです。 その手順ですが、まず、気象観測用の300グラムのゴム気球(1800円)、それにパーティーグッズの店でヘリウムを2700円分詰めてもらいます。 成層圏での気温は-55度にもなるので、普通のバッテリーは動かなくなります。そこで、高価な耐寒機器やヒーターを搭載する代わりに、携帯カイロを電気系に密着させ発泡スチロールでカバーします。 撮影した写真がどの高さから取られているかを記録し、撮影を終えたカメラを回収するためには、カメラの場所を追跡する必要がありますが、これも高価で重いGPSモデムではなく、GPS内蔵の携帯電話(4500円)を使うことに。カメラと接

    13,400円で宇宙からの写真を撮ったMITの学生の話 | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2009/09/14
  • Kazuho@Cybozu Labs: Mycached: memcached protocol support for MySQL

    It is a well-known fact that the bottlenecks of MySQL does not exist in its storage engines, but rather in the core, for example, its parser and execution planner.  Last weekend I started to wonder how fast MySQL could be if those bottlenecks were skipped.  Not being able to stop my curiousity, I started  adding memcached proctol support to MySQL as a UDF.  And that is Mycached. From what I unders

    terazzo
    terazzo 2009/08/26
  • 海面が上昇したときにどこが海に沈むか調べられるサービス | 秋元@サイボウズラボ・プログラマー・ブログ

    Global Sea Level Rise Map(世界海面レベル上昇地図) は、指定した水位まで海抜が上昇したら、どこが沈むのかを地図上に表示してくれるサービスです。 Google MapsとNASAのデータを使って作成されているということ。 もう一つ、Global Flood Map(世界洪水地図)というのもありました。 http://developer.cybozu.co.jp/photos/uncategorized/2009/08/19/globalfloodmaptokyoscreenshot.png“> こちらは、都市のデータを使ってるので都市ごとに沈むかどうかの丸印がつくもの。海面上昇をフィートで指定するので、ちょっと日人にはわかりにくいかと思いますが。 なお、国立環境研究所の記事によれば、 最新の予測結果では2100年までの海面上昇は18cm~59cmと見積もられていま

    海面が上昇したときにどこが海に沈むか調べられるサービス | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2009/08/19
  • ロイター通信が「AP通信がそんなにリンクや引用されるのが嫌なら、ブロガーはロイターの記事にリンクするといいよ」宣言 | 秋元@サイボウズラボ・プログラマー・ブログ

    ロイター通信が「AP通信がそんなにリンクや引用されるのが嫌なら、ブロガーはロイターの記事にリンクするといいよ」宣言 AP通信が今年の6月に、非商用の記事引用でも、5単語で$7.5(商用なら12.5ドル)の支払いをブロガーに要求したことから、英語圏ではニュースの引用やリンクとフェアユースについての議論が続いているようです。 引用に当たってはAPと利用契約を結ぶこととなるが、その中には「記事の中でAPや記者を批判してはならない。違反した場合は解約もありうる」」という条件があり、ニュース記事の短文引用は公正な利用であるとした公正利用(Fair use)権を無視したものだという批判が出ている。 米国:AP、引用語数で課金|STI Updates|情報管理Web それに対して、ライバルの通信社であるトムソンロイターズ・メディアの社長クリス・アハーン(Chris Ahearn)さんが、公式ブログに登場

    terazzo
    terazzo 2009/08/10
  • Amazon Mechanical Turkの回答者はどんな人達? | 秋元@サイボウズラボ・プログラマー・ブログ

    ネットの向こう側に居るだれかに、少額の作業を発注するというアマゾンのサービス、メカニカルターク(AMT)を使った面白い調査があった。 この人がAMTへ投げた仕事の依頼は、 「自分の顔と、『なんで自分はタークしてる(AMTで回答してる)かを書いた紙を写真に収めてアップロードしてください」 というもの。最初5セント(5円)からはじめて、30人の写真を集めるには、最終的に50セント(50円)まで値を上げる必要があったそうだ。以下がその集まった写真。 白人が多くて、アジア系は少ない。紙に書かれた回答の動機は、「金のため」、が「暇潰し」の倍あったそうだ。 50円でこんなことするかなあ、と僕などは思うけど、ネットにはいろんな人がいるからね。日語でこういうことができるサービスが、アマゾンがやっても他社がやってもいいから、できると面白そうだと思った。 via Waxy この記事は移転前の古いURLで公開

    Amazon Mechanical Turkの回答者はどんな人達? | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2008/11/21
  • 参考 | 秋元@サイボウズラボ・プログラマー・ブログ

    【ハウツー】Webブラウジング新時代到来!? 新アドオン「Ubiquity」を"しっかり"試す (1) Firefox上で簡単に呼び出せるコマンドライン | エンタープライズ | マイコミジャーナル FireFoxプラグイン「Ubiquity」に大量のコマンドを登録して日のサイトを一発で開くすごい方法 (eXtreme Gadget (エクストリーム ガジェット) ポケットに入るアジャイルな究極の小道具) Latest topics > Ubiquityの先にある未来についてAza氏と直接話せた – outsider reflex (こっから下は余談) ちなみに、なんで会うことになったかというと、Harper Reedさんの紹介で。Azaさんは以前はシカゴに住んでいたことから、シカゴローカルのウェブコミュニティでの知り合いだったということだ。 今回、Azaさんが東京に行くならということで

    terazzo
    terazzo 2008/11/21
  • Google Friend Connectを試してみた | 秋元@サイボウズラボ・プログラマー・ブログ

    さきほど正式に公開されたGoogleの新しいソーシャルサービス、Friend Connect(グーグル・フレンドコネクト)のデモサイトを試してみた。 自分のサイトにFriend Connectを貼るほうは、申し込んだけどまだ使えるようになっていないので、サンプルとして提供されている4つのサイトを見てみた。 短編アニメーションを公開してフィードバックを募るサイト ガコモールとそのレシピに特化したサイト 歌手イングリッド・マイケルソンのサイト 聖書クイズのサイト それぞれのサイトで、Sign inなどのリンクをクリックすると、ポップアップが開いて、そのサイト(上のパーツ)に対して自分のFriend Connectへのアクセス許可を与えるかを尋ねられる。 FacebookやOrkutなどから、自分のプロフィール写真や友達リストを持ってくるように設定することも可能だ。Facebookを選んでFac

    terazzo
    terazzo 2008/05/13
  • mowser終了。創業者魂の叫び「モバイルなんか流行んねーよ!」 | 秋元@サイボウズラボ・プログラマー・ブログ

    すごいもの読んでしまった。 Google Mobile Proxyとか、日で言うとはてなMobileGatewayのような、パソコン向けのウェブサイトを携帯電話ブラウザ用に変換するプロクシサービスMowserのサービス開発を終了することになったと、創業者のRussell Beattieさんのブログで発表があった。 資金調達もできず、ページビューも伸びず、ユーザに良かれとスキマ広告を外したら広告収入は一日数ドルまで落ち込み、もうやってられないということらしい。 I don’t actually believe in the “Mobile Web” anymore, and therefore am less inclined to spend time and effort in a market I think is limited at best, and dying at wors

  • Codetcha プログラマだけが解けるデバッグを利用したCAPTCHA | 秋元@サイボウズラボ・プログラマー・ブログ

    Codetchaは、なんと提示されたJavascriptをデバッグすることで自分が人間であることを証明するというCAPTCHAのアイデア。 コンセプトデモで試すことができる。表示されたJavascriptの中のバグを修正して、[Test Code]で実行すると、コードが表示され、そのコードで[Submit answer]することで先に進めるようになる。 そんな大層な間違いではないので、プログラマならすぐに直せるだろうけれど、プログラミングをしたことがない人とか、スパマーのスクリプトには解くのは大変だろう。プログラムを直せないと進めないCAPTCHAは、技術者だけが参加できる掲示板みたいなものに使われるのだろうか。 コンセプトデモでは、元々ちゃんと動くコードに、変数名や変数をランダムで生成した上で、関数名を一文字置換したり、スペースを空けるべきところをランダムに詰めてみたりすることで、「ちょ

    Codetcha プログラマだけが解けるデバッグを利用したCAPTCHA | 秋元@サイボウズラボ・プログラマー・ブログ
    terazzo
    terazzo 2008/03/18
    「ユニットテストだけ~」はとても面白そうだけど、結果を自動判定できるものは大抵自動で作れそうな気も。