• 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
 
 

This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/182

ShootingStarはCとRubyで作られたCometサーバです。

今回のバージョンアップの主な目的は、細かいバグの修正です。

  • 機能改善
  • ログにシグネチャ情報を書き出すようにした.
  • エラーログの出力形式を変更した
  • バグ修正
    • 不正なHTMLコメントを修正
    [English]

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/182

    posted by Png genki on Wed 18 Apr 2007 at 19:20

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/181

    ShootingStarを使用してCometを使ったChatを作る手順を動画にしてみました。

    ShootingStarは、CとRubyで実装されたCometサーバです。 RubyForgeでオープンソースプロジェクトとして開発しています。

    http://rubyforge.org/projects/shooting-star/

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/181

    posted by Png genki on Tue 17 Apr 2007 at 12:03

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/180

    ShootingStarの今後の開発計画をまとめておきます。

    ShootingStar-2.0.0

     4月末ごろ5月上旬リリース予定

    ShootingStar-2.0.0では、クラスタリングを実装する予定です。
    複数台のCometサーバを使った大規模運用を可能にします。

    また、5月以降、実際に大規模運用を行ってみてボトルネックの分析や
    高負荷時の振る舞いについて調査したいです。

    ShootingStar-3.0.0
     夏。

    ShootingStar-3.0.0では、Flashのxmlsocketのサポートや、
    IMやIRC等の非ブラウザ環境との相互運用を実現する予定です。

    [English]

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/180

    posted by Png genki on Fri 13 Apr 2007 at 01:21

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/179

    恒例のSIGGRAPHの採択論文リストが公開されましたね。

    SIGGRAPH 2007 papers on the web

    内容はまだ公開されてないけど、個人的に面白そうなのはこのへんかな。

    ・Joint Bilateral Upsampling
    ・Frequency Domain Normal Map Filtering
    ・A Theory of Locally Low Dimensional Light Transport
    ・Scene Completion Using Millions of Photographs
    ・Fast Triangle Order Optimization for Vertex Locality and Reduced Overdraw
    ・Sampling with Polyominoes
    ・Implicit Visibility and Antiradiance for Interactive Global Illumination

    大分片寄ってますが。

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/179

    posted by Png genki on Wed 11 Apr 2007 at 10:47

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/178

    HyperEstraier は、全文検索エンジンです。Ruby on Railsから利用する場合は、acts_as_searchableを利用すると、非常に簡単にWebサービスに検索機能を追加することができます。

    今回は、HyperEstraierのP2P連携機能を使ってクラスタリングを行う手順を紹介します。

    まず、クラスタリングを行う全てのPCに、 通常の手順でHyperEstraierをインストール します。パッケージマネージャを使う事もできますが、今回はソースからインストールする事にします。

    インストールが済んだら、HyperEstraierを初期化して起動します。以下では、/usr/local/hyperestraier以下に環境を構築しています。

       1  # estmaster init /usr/local/hyperestraier
       2  # estmaster start -bg /usr/local/hyperestraier
    

    起動したら、ポート1978にアクセスし、動いていることを確認します。 続いてWebインターフェイスからノード間のリンクを作成します(もちろん、あらかじめノードを作成しておく必要があります。)

    リンクの作成は、ノード編集画面から行います。

    例)
    http://search-1.com:1978/master_ui?action=10&name=nodename
    

    ノード編集画面の一番下のlist of linksに以下のように、「{{!}}」で区切って別なサーバのノードを登録します。

    http://search-2.com:1978/node/nodename{{!}}label{{!}}1000
    

    上記は、search-2.com上のnodenameというノードに対して、labelというラベルでリンクを作成しています。1000というのは信頼度で、検索結果の順位に影響します。1台目から2台目へのlinkの設定が済んだら、2台目から1台目に逆方向にリンクを張ります。

    以上でクラスタリングは完了です。 実際に検索を行うときは、メタ検索のdepthを1以上に指定する必要があります。

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/178

    posted by Png genki on Wed 11 Apr 2007 at 02:25

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/177

    今回のバージョンアップの主題は、コネクション切断検出の改善とバグフィックスです。

    とくに、Safariユーザにとっては、非常に重要なバグ修正を含んでいます(Safariの特殊な挙動に対する一種のワークアラウンドです)

    http://rubyforge.org/projects/shooting-star/

    ChangeLog:

    • 2 major enhancements:
      • meteor/strikeのレンダリング結果をキャッシュするようにした
      • ソケット読込時のエラーおよび切断検出を改善した
    • 5 minor enhancements:
      • ブラウザの「戻る」を押したときに、キャッシュされてしまう問題を解決
      • meteor_helperを追加(中身は空ですが)
      • Safariでiframeのonloadが効かない問題に対処
      • それに関連して、configurationに'sweep_timeout'の項目を追加
      • 切断検出のために'session_timeout'の設定項目を追加
    • 3 minor bugfixes:
      • MacOSのブラウザ群におけるキャッシュの扱いの問題への対処.
      • 特にSafariの「戻る」時の奇妙な振る舞い(formのポスト)への対処
      • クライアントの接続管理の改善

    [English]

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/177

    posted by Png genki on Fri 30 Mar 2007 at 00:15

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/176

    Webアプリケーションを開発するときは、動作確認のためにローカルでWebサーバを立ち上げることになります。Railsアプリケーションでは、デフォルトでWebrickを使うようになっています
    (mongrelをインストールしている場合は、デフォルトでmongrelを使うようになっています。また、lighttpdがインストールされている場合もデフォルトでlighttpdを使うようになります。)

    WebrickはRubyに標準でついてくるし、使い方も大変簡単で便利なのですが、本番環境ではLighttpdやApacheを使うことが多いので、動作確認でもLighttpdを使いたくなったりします。

    というわけで、Lighttpdを使って開発を行うときのポイントをメモしておきます。

    (1) lighttpdコマンドにPATHを通す
    lighttpdをインストールしたら、lighttpdのコマンドにPATHを通しておきます。Debianの場合、/usr/local/sbin/lighttpdあたりにあります(ソースからインストールした場合)
    ちなみに、現時点ではlighttpd-1.5.0系のバージョンは設定ファイルの書き方などが1.4.0系とはだいぶ変わっていて、Railsが追従できていないので、1.4.0系の最新版を使うことをお勧めします。

    (2) Webサーバは起動しっぱなしで使用する
    まず、以下のコマンドで起動します。

    $ ./script/server lighttpd

    最初に起動したときに、config/lighttpd.confファイルの雛形が生成されるので、一旦Ctrl+Cでサーバを停止して設定ファイルを適宜書き換えます。そして再び、今度は-dオプションをつけて起動します。

    $ ./script/server -d

    二度目以降はlighttpdを指定しなくても自動的にlighttpdが起動します。(逆に、webrickを使いたい場合は明示的にwebrickを指定する必要があります)

    (3) プラグインの書き換え等を行ったら、fcgiプロセスを再起動
    プラグインのように自動リロードされないコードを編集したときは、以下のコマンドでfcgiプロセスを起動しなおします。

    $ ./script/process/reaper -a graceful

    次回ブラウザからアクセスされたタイミングで、プロセスが再起動し、プラグインなどの修正箇所が反映されます。

    (4) logger.debugを使ってデバッグ

    -dオプションをつけてWebサーバを起動すると、pの出力が画面に出なくなるので、かわりにlogger.debugを使います。詳細は「Railsでデバッグをする7つの方法」を参考にしていただければ。

    (5) Webサーバの停止の仕方
    以下でOK.

    $ kill `cat tmp/pids/lighttpd.pid`

    大体こんな感じでしょうか。

    Enjoy!

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/176

    posted by Png genki on Wed 28 Mar 2007 at 10:21

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/175

    Cometサーバ ShootingStar-1.0.3をリリースしました。
    http://rubyforge.org/projects/shooting-star/

    以下のコマンドでインストールできます。
    $ sudo gem install shooting_star

    主な機能:
    - Cometサーバ
    - Cometクライアント(Rails Pluginとして)

    本リリースは、ShootingStarの最初のパブリックリリースになります。

    リポジトリのtrunkがそのままサンプルRailsアプリケーションになっています。
    以下の手順でチェックアウト可能です。

    $ svn co svn://rubyforge.org/var/svn/shooting-star/trunk shooting_star

    詳細については、同梱のREADME.txtをご覧ください。

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/175

    posted by Png genki on Fri 23 Mar 2007 at 06:05

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/174

    Railsのレイアウトの仕組みは、レイアウトを明示的に指定しない場合は、fooコントローラに対してapp/views/layouts/foo.rhmltが存在する場合はfoo.rhtmlをレイアウトと見なし、存在しない場合はapp/views/layouts/application.rhtmlをレイアウトとして使用するようになっています。 両方とも存在しない場合はレイアウト無しと見なされます。

    これを、foo.rhtmlをレイアウトとして使用しつつ、さらにその外側のレイアウトとしてapplication.rhtmlを使用するようにするには、コントローラに以下のようなafter_filter を追加すればOKです。

    class FooController < ApplicationController
      after_filter :wrapping_output_with_application_layout
    
    private
      def wrapping_output_with_application_layout
        return true if @performed_redirect
        content_for_layout = response.body
        erase_render_results
        add_variables_to_assigns
        @template.instance_variable_set("@content_for_layout", content_for_layout)
        render_text(@template.render_file('layouts/application', true))
      end
    end
    
    コントローラ毎のレイアウトの共通部分をさらに括り出したい場合に便利です。

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/174

    posted by Png genki on Tue 20 Mar 2007 at 16:56

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/173

    Ruby拡張のドキュメントの書き方がさっぱりわからなくて困った。 こんな感じの警告が出るんですよね。

    Installing ri documentation for shooting_star-1.0.2...
    
    No definition for asteroid_s_run
    
    No definition for asteroid_s_stop
    
    No definition for asteroid_server_send_data
    
    どこかに書かれてるのかなあ・・・。と、いろいろ調査した結果、Rakefileの中で以下のように書けばOKでした。
    Hoe.new('shooting_star', ShootingStar::VERSION) do |hoe|
      ...
      hoe.spec_extras = {
        :extensions => 'ext/extconf.rb',
        :rdoc_options => ['--exclude', 'ext/asteroid']
      }
      ...
    end
    
    Ruby拡張について無視させている感じですね。まあ、直接呼び出されることは無いから良いか・・・。

    This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/173

    posted by Png genki on Tue 20 Mar 2007 at 10:49