タグ

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

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

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

  • 恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、ミドルウェア開発チームの青木(@a_o_k_i_n_g)です。将来の夢は川口浩探検隊に入ることです。 先日、弊社のアプリケーションサーバーで大量にメモリを消費するという現象に遭遇しました。アクセス頻度の低いサーバーがメモリを大量消費するという謎深いものでした。 発生当初の状況はこんな感じです。 アプリケーションサーバーでは Jetty が稼働 現象が発生した JVM は 5GB 程度のメモリを消費しており、明らかに通常ではない量のメモリを消費している 複数台のサーバーで発生していたが、全てで発生したわけではない。 また、発生したサーバーはいずれもアクセス頻度が少ないサーバーだった。 ヒープ、パーマネント、スタック ひとまず、JVM でトラブルが発生した時は何はともあれヒープダンプとスレッドダンプを見るに限ります。各種情報の取得をインフラ部隊へ依頼し、得られたヒープを解析すると、

    恐怖の JVM 大量メモリ消費!メモリリークの謎を追え!! - Cybozu Inside Out | サイボウズエンジニアのブログ
  • 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 ではなく

    f99aq
    f99aq 2014/04/25
    コメントも興味深い
  • Kazuho@Cybozu Labs: String::Filter っていうモジュール書いた - 続: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について

    先のエントリ「(Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について」の続き。 弾さんが「404 Blog Not Found:DHTML - 構造化テキストは構造化するのがやっぱ正しい」で示されているような DOM ベースの操作を行えば、原理的に XSS 脆弱性を防ぐことができます。ただ、クライアントサイド JavaScript によるレンダリングはウェブの構造を破壊するという点で筋が悪い(テーブルと FONT タグを利用したページレイアウトが批判されていた頃を覚えていらっしゃいますでしょうか。JavaScript によるレンダリングはウェブのリンク構造も破壊するので一層たちが悪いというのが自分の考え)ですし、サーバサイドでの DOM 操作は重たいので、できれば避けたいところです。 構造化テキストの HTML への変換は、よほど複雑な記法でない限り

  • Kazuho@Cybozu Labs: (Twitter の XSS 脆弱性に関連して) 構造化テキストの正しいエスケープ手法について

    昨日の Twitter の XSS 騒ぎは、まだ皆さんの記憶に新しいことと思います。いい機会なので、ツイートのような構造化テキストのエスケープ手法について触れておきたいと思います。 Twitter のメッセージは、単なる平文(プレインテキスト)ではなく、「@英数字」のような他のユーザーへの言及と「http://〜」のような URL を自動的にハイパーリンク化する構造化テキストです。 このような複数のルールをもつ構造化テキストを HTML 化する際には、どのようなコードを書けばいいのでしょう? まず「@〜」をリンク化してから、URL をリンク化すればいいのでしょうか? それだと、@〜 のをリンク化した A HREF タグの中の URL がさらにリンク化されていまいますね。 では、URL をリンク化してから @〜 をリンク化すればいいのでしょうか? それだと、@ を含む URL があった場合に

    f99aq
    f99aq 2011/01/08
  • 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

    f99aq
    f99aq 2010/02/13
  • ロイター通信が「AP通信がそんなにリンクや引用されるのが嫌なら、ブロガーはロイターの記事にリンクするといいよ」宣言 | 秋元@サイボウズラボ・プログラマー・ブログ

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

    f99aq
    f99aq 2009/08/10
  • twitterで7000人にフォローされる方法。あるいはtwitterスパム注意報 | 秋元@サイボウズラボ・プログラマー・ブログ

    twitterを使ってる方も多いのではと思うのだけれど、みなさんはユーザーjmcoonをフォローしてたりしないだろうか? twitterではfollowスパムの活動がひどくなってきているようだ。 twitterでは、他のユーザをfollowすることで、その発言(tweet, つぶやき)を自分のページで読むことができる(API経由でツールで読むときも同様)。 多くの人にfollowされている人は、twitterでつぶやいただけで多くの人に意見やリンクを紹介できる、ということで、その影響力を表すためにfollowerの数をランキング化するtwitterholicのようなサイトも存在する。 当の有名人(Digg創業者のケビン・ローズさんとか、大統領候補のオバマ氏)は、4万人を越える購読者(followers)が実際についている。しかし、人気があるからfollowers数が多い、を逆用して、fo

    twitterで7000人にフォローされる方法。あるいはtwitterスパム注意報 | 秋元@サイボウズラボ・プログラマー・ブログ
  • 秋元@サイボウズラボ・プログラマー・ブログ: Flashによる複数ファイルアップロードライブラリSWFUpload

    via Ajaxian SWFUploadというFlashのライブラリがAjaxianで紹介されているが、これけっこういいのではないか。 ファイルダイアログで表示される拡張子を指定できる 複数ファイルを、CtrlやShiftで選択できる イベント毎にJavascriptのハンドラを呼べる アップロード開始前にファイルの情報がわかる プログレスバーが表示できる ページ全体のリロード無しにアップロードされたファイルを表示できる Flashの動く環境すべてで動く FlashやJavascriptが使えない環境でも、通常のフォームアップロードになる 最後の項目は重要だろう。 リンク先でデモを試せる。”Try it out!”ボタンを押して、適当なファイルを複数選び、アップロードすると、ファイルサイズやプログレスバーが表示される。 複数アップロードは、Webアプリでよく要望されて困るところだし、プロ

    秋元@サイボウズラボ・プログラマー・ブログ: Flashによる複数ファイルアップロードライブラリSWFUpload
    f99aq
    f99aq 2006/11/18
  • 書いたものが物理法則に従い動くホワイトボード(動画) | 秋元@サイボウズラボ・プログラマー・ブログ

    物理の授業で良く出てくるような、ボール、車、ねじや重力の方向などを書いたホワイトボードだが、そのまま実行することができる、という技術の動画。 MITのMulti-Domain Sketch Recognitionという研究らしい。オリジナルの動画はこちらのページでダウンロード可能。他に振り子を書いた様子の動画もある。 物理法則通りに書いたものを動かすアプリケーションの方は以前からあって、この研究はホワイトボードの入力インタフェースのところが肝らしい。 この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、という場合にはコメントやツイッターでご指摘いただければ幸いです。最新の状況を調べて新しい記事を書くかもしれません

  • 秋元@サイボウズ研究所プログラマーBlog 訪問者が入れているFirefox extensionを検知するJavascript

    chrome:プロトコルで Firefox Extension が持っている画像などをアクセスすることで、その Firefox である extension がインストールされているかどうかを判定できるらしい。 実際のデモはこちら(自分の使ってる拡張機能を知られたくない人は押さないこと) 著名な extension ごとのチェック対象画像のリストを整理している人もいた。 リンクが訪問済かどうかをCSSの属性からチェックする技法がちょっと前に話題になったけど、いろいろ考えるもんだ。 # こちらは、 あなたのWeb2.0度判定テストやHatebu::Addiction(はてブ中毒度)などで使われている。 この記事は移転前の古いURLで公開された時のものですブックマークが新旧で分散している場合があります。移転前は現在とは文体が違い「である」調です。(参考)記事の内容が古くて役に立たなくなっている、

    f99aq
    f99aq 2006/09/05
    これはまずいな。Mozilla 側は把握してるんだろうか。
  • 秋元@サイボウズラボ・プログラマー・ブログ: CSSの圧縮サービス比較記事

    CSS Optimization: Make Your Sites Load Faster for Free というブログのエントリで、CSS の圧縮サービスの比較をしている。 空白や改行を除去したり、無くても同じ結果になる重複を省いたりすることで CSS のサイズをコンパクトにしてくれるサービスは、ウェブページの表示速度改善(や、帯域削減やサーバの利用効率向上)を目的としたものだ。 この記事では、4つのブラウザから使える無料サービスを使って、Digg や Slashdot といった著名なサイトの CSS を実際に圧縮し、圧縮率を比べている。 比較された4つのサービス、今回の測定対象では、Icey Compressor、Clean CSSCSS Optimiser、Flumpcakes という順で成績が良かったということ。 圧縮率の高さもそうだが、整形・圧縮をかけた結果、元の表示と違って

  • 一方ロシアは鉛筆を使った の真相 | 秋元@サイボウズラボ・プログラマー・ブログ

    via The Space Review 最近ネットで富に「一方ロシアは鉛筆を使った」というセンテンスを見かけるのだけど、プロジェクトX 風ナレーションってやつ? この一文を見ただけでも全体の話が想像できてしまって、非常に面白い、よくできた話だなあと思っていたところ、この逸話(?)が流行っているのは日だけではないらしい。 del.icio.us/popular でこんな解説記事を発見。 結論としてはこの話はよくできたジョーク、あるいは都市伝説(どちらであるかは書き手がわかってて書いてるかどうかによる)だということだ。スペースペンの値段は4ドル程度で、鉛筆の値段とそう違わない。 上記の有名な文は英語だと “The crafty Russians used a pencil.” というのだそうだ。以下解説記事のポイントをまとめると、 – 普通のボールペンが宇宙で機能しないのはホント – 有名

    f99aq
    f99aq 2006/05/09
  • Ziki – オープンなソーシャルネットワーク | 秋元@サイボウズラボ・プログラマー・ブログ

    Ziki というサービスが始まっている。 さっそく試してみたところ、これはオープンな SNS を狙っているのではないか、と感じられた。 ユーザ登録して、自分にタグをつけていくと、タグのついたほかのメンバーの一覧ページができる。これは mixi などでいうコミュニティにあたる。 とりあえず作ってみた My Ziki がこれ 自分の属性には、自分のブログをはじめとして、RSS で提供されているさまざまなものを含めることができる。例として推奨されているのは、Blogger.com などのブログサービス、写真共有サービス Flickr 、ブックマーク del.icio.us/Blinklist など。カレンダーサービスの RSS 出力などをわせるのもありだろう。 RSS を追加する際に、RSS のカテゴリーを指定させられる。フィードの性格ごとに違う表示をするのかも(あるいは、将来するつもりなのか

    f99aq
    f99aq 2006/04/24
  • 秋元@サイボウズラボ・プログラマー・ブログ: Yahoo! UI Library はすごいね

    via O’Reilley Radar Yahoo! UI Library で、Yahoo! が実際に使っている Javascript のライブラリ集が公開されている。 Yahoo! のどこでこんなユーザインタフェースが使われてるんだろう? と思うぐらい、サンプルで見せられる UI パーツは豊富だ。それぞれの “Example” を見てまわるだけでもおなかいっぱいだ。 コアユーティリティ アニメーション クロスブラウザ対応の XMLHttpRequest ラッパ DOM 操作 ドラッグアンドドロップ イベントハンドリング UI コントロール部品 カレンダー スライダー ツリー ドラッグアンドドロップなんかは、ファンタジースポーツで使われているのを見たことがあるので知っていた。複数のリスト間でアイテムの移動や並べ替えを行うときには使えるパーツだろう。 日語カレンダーなんかも、いい感じで再利

  • Ajax は難しい? AHAH ならどうだ | 秋元@サイボウズラボ・プログラマー・ブログ

    AHAH は Asynchronous HTML and HTTP の略で、Ajax の Javascript と XML の部分を素の HTML に置き換えた、Ajax のかけそばみたいなものだ。 AHAH (アハー、と読むのだろうか)は、Ajax の簡略版と言える。提唱者の主張するその特徴は、 XML スキーマとか考えないことでデザインが高速にできる 現行の HTML を再利用でき、新たにウェブサービスを作る必要が無い すべてのデータはブラウザで見える形でやりとりされ、デバッグやテストが簡単 HTML はページの DOM に直接埋め込める形で返されるので、パーズが不要 HTML なので、デザイナが CSS で直接フォーマットできる。XSTLT でプログラマーが整形するよりいい 処理はサーバ側で行われるので、クライアント側でプログラミングは無い サーバ/クライアント間のデータ転送を、無駄

  • 1