タグ

2009年6月25日のブックマーク (6件)

  • はやいTCPサーバの書き方 - nyaxtのPC作業ログ

    cagra高速化にあたってのノウハウを一部公開してみます。また明日校正/更新します。つっこみ待ちです。 select(2)の代わりにepoll_wait(2), kqueue, /dev/epoll等を使う 他に山ほど解説ページがあるので略 大量のディスクリプタを処理するようなサーバの場合、多少効果があるかもしれません。しかし、クライアント数が少ない場合、劇的な性能の向上は見込めないとおもいます。クライアント数が多い場合は、1セッション1スレッドなモデルではOS側のタスクスイッチングのオーバーヘッドが効いてくることも多いです。クライアント数を増やすには複数のセッションを1スレッドで処理できるようにすると良いです。実装にあたっては、non-blocking ioを活用すると効果的です。 TCP_NODELAYを設定する Nagleアルゴリズムをオフにします。多少応答性が良くなります。 これっ

    はやいTCPサーバの書き方 - nyaxtのPC作業ログ
  • ネットワークプログラムのI/O戦略 - sdyuki-devel

    図解求む。 以下「プロトコル処理」と「メッセージ処理」を分けて扱っているが、この差が顕著に出るのは全文検索エンジンや非同期ジョブサーバーなど、小さなメッセージで重い処理をするタイプ。ストリーム指向のプロトコルの場合は「プロトコル処理」を「ストリーム処理」に置き換えるといいかもしれない。 シングルスレッド・イベント駆動 コネクションN:スレッド1。epoll/kqueue/select を1つ使ってイベントループを作る。 マルチコアCPUでスケールしないので、サーバーでは今時このモデルは流行らない。 クライアントで非同期なメッセージングをやりたい場合はこのモデルを使える: サーバーにメッセージを送信 イベントハンドラを登録;このときイベントハンドラのポインタを取っておく イベントハンドラ->フラグ がONになるまでイベントループを回す イベントハンドラ->結果 を返す 1コネクション1スレッ

    ネットワークプログラムのI/O戦略 - sdyuki-devel
  • Gmailの「マルチ受信トレイ」が驚くほど便利 【Gmail Labs機能】

    この発想は「Eメール」というサービスにはなかったのではないでしょうか。Googleが発表した新しいLabs機能の「マルチ受信トレイ」は、受信トレイに複数の「フォルダ」を表示してしまう超効率化機能です。 組織のマインドマップツールをマインドマイスターにすべき理由 伸びてる産業、会社、事業を紹介しまくるStrainerのニュースレターに登録!! Gmail Labsの新機能「マルチ受信トレイ」 「マルチ受信トレイ」は、Gmailの受信トレイに「ラベルごとに受信したメール」「スター付」「検索結果」などの一覧も表示できる機能。 仕事やプライベート、目的別に一覧を一度に確認することができ、受信トレイに未読メールが溜まりすぎるなんてことも解消できそうです。 「マルチ受信トレイ」のUI ↑このように、デフォルトでは左に従来の受信トレイ、右側に検索結果や下書き、スター付といった項目を受信トレイ合わせて最大

    Gmailの「マルチ受信トレイ」が驚くほど便利 【Gmail Labs機能】
  • FP法について - Writing Cafe

    [Programs] / 最終更新時間:2004年06月24日 23時45分47秒 概要 最近、開発効率をなんとかしたいという思いが強くていろいろ調べている。どの手法を使うとどうなるのかが分からないと判断がつかない。そこで開発効率を測る物差しとしてファンクションポイント(FP)法に注目してみた。 よりよい開発のあり方については、楽しいプロジェクト運営もどうぞ。 目次 概要 目次 参考 現状 ソフトウェアの規模 注意すること FP法の用語 用語の言い換え データファイル 要素処理 FP値の計測手順 どんなレポートを書くか? プロジェクト見積もり 1. FPの計測タイプを識別する 2. 計測範囲とアプリケーション境界を識別する 3. すべてのデータファイルと、その複雑度を識別する ファンクションポイント計測一覧表-ファイルをリスト化 ファンクションポイント計測一覧表-ファイルの複雑度を加える

  • GAE/JでJavassist - たぷつきません

    使える機能をうまく選択することで制限付きながらGAE/JでJavassistが扱えます。 GAEではクラスパスが無いのでルックアップがうまくいきません。サーブレットやフィルタのinit()で以下のようにクラスパスを登録しておきます。 ClassPool pool = ClassPool.getDefault(); pool.appendClassPath(getServletContext().getRealPath("WEB-INF/classes")); for (File file: (new File(getServletContext().getRealPath("WEB-INF/lib")).listFiles())) { String jarPath = file.getAbsolutePath(); if (jarPath.toLowerCase().endsWith(".

    GAE/JでJavassist - たぷつきません
  • eventlet - Doge log

    eventletを少し調べてみた。意外にいい。 twistedよりも軽量(コード量などが) コルーチン生成にgreenletを使用。自前のスタックを使っての継続処理 コルーチンで協調スレッド(co-operate)を実現 socketメソッド、sleepでコンテキストスイッチが発生し、他に処理を譲る(待ちが発生するところでスイッチする) I/O多重化部はselect,poll,libevent(pyevent)から選べる。pyeventがあればそれを優先 mod_wsgiブリッジを持つ。wsgiに対応してればうごかせる。(但し、DBを使ってるとその処理でブロックする。DB処理もeventlet風に修正する) twistedサポートがある。EventReactorをインストールできる nginxサポートがある。フロントエンドnginxを使用 backdoor。python interpre

    eventlet - Doge log