From yesterday to this morning, we had set up two MySQL servers as master-to-master configuration.

One server is located in Tokyo, the other is in Shiga. They are replicated each other in order to get our system redundant and load-balanced. We had used OpenVPN for this purpose. It is very easy to setup by using tunnelling.

Okey, we agree with that the VPN will become the neck of a bottle if our network get heavy traffic. But fortunately or unfortunately, it is not so heavy. So we considered that a performance issue would be still no problem, against a stability issue.

posted by Png genki on Tue 26 Feb 2008 at 08:13

イベントのお知らせです。

OoO(Offline meeting for Offline renderists)

いちおう今回のメインテーマはあって、それは OoO をオンラインでフォローするための、ompf のオフラインレンダラ版フォーラムを RoR で作ろうというものです.作っていただける方はいるので、それにときどき意見を出すみたいな。

まあでもその一方で、 MLT の実装とか, 論文書くとかしてても OK.

スライド作成が間に合えば、世界初、日本でしか聞けない(<- これ大事)、MUDA のプレゼンとかするかも.

ということで、僕は作る人として参加します。 Offline Renderingについて熱く語りましょう。

posted by Png genki on Sat 23 Feb 2008 at 02:57

このブログの背景画像を設定は、 以下のような感じのCSSで中寄せしているのですが、 これがなぜか、OperaとSafariでは右側に1 pixelずれてしまいます。

   1  html {
   2    background: #DCDCDC url(/images/bg.gif) top center repeat-y
   3  }

しょうがないので、サーバサイドでそのようなブラウザを検出して、 中寄せしているBlock要素の左側に、以下のように1 pixelだけ paddingを入れています。

   1  #base.center-fix {padding: 0px 0px 0px 1px}

こういう微妙な挙動の違いは、acidテストのような見た目で判断する テストではわかりにくいのかもしれないですね。

posted by Png genki on Fri 22 Feb 2008 at 03:55

少し前になりますが、このブログでHatenaStarを使えるようにしました。 記事の右下の署名のところに表示されています。

このブログシステムでは、デフォルトの挙動だと、タイトルの右側に出てしまうので、以下のようなカスタムローダを使っています。

   1  document.observe('dom:loaded', function(){
   2    Hatena.Star.EntryLoader.loadEntries = function(){
   3      return #{entries.to_json}.map(function(entry){
   4        var star = $(['article_star_', entry[2]].join(''));
   5        return {uri: entry[0], title: entry[1],
   6          star_container: star, comment_container: star};
   7      });
   8    };
   9  });

loadEntriesはElementオブジェクト含む配列のリストを返す 必要があるのですが、これはPrototype.jsの$()関数のように、 ElementでもElement IDの文字列でも両方 受け取れるようにしたら、もっと便利かも。

posted by Png genki on Fri 22 Feb 2008 at 03:42

今回は、Railsアプリケーションに、Undo/Redo機能を追加する プラグインの紹介です。

What is RUR (Rails Undo Redo)

RUR (Rails-Undo-Redo) is a rails plugin (and soon a gem as well) to make it so easy to implement multi-level undo redo in your Rails application that you better start thinking of better excuses not to implement Undo/Redo (no, seriously, it is going to be a lot easier).

これはなかなか面白いプラグインですね。後で使ってみよう。

posted by Png genki on Tue 19 Feb 2008 at 01:27

2/13のIE7のWindows Updateの影響か、 2006年の6/12(1年半ぐらい前)に書いた記事 IE7からIE6に戻す方法 のアクセス数が増えていた。

当時は、ブラウザの互換性のためにIE7のベータ版をインストールした後に 元に戻す方法を調べて書いていたのでした。 今になって参照されるというのも面白いですね。

posted by Png genki on Mon 18 Feb 2008 at 09:23

SafariかFirefoxで閲覧することが多いので気がつくのが遅れましたが、 この記事 をPostして以降、IE6でレンダリングが乱れる状態になっていたようです。

原因は、はっきりとはわかっていないのですが、 埋め込まれていたSWF(現在はリンクだけになっています)の初期化と、 JavaScriptの実行が干渉していた模様。 JavaScriptの実行とFlash Playerの実行の順序やタイミングについては、 ブラウザごとに微妙に違ったりしているようで、なかなか良くわかりにくい ところですね。

何も考えずに SWFObject などを使って、JavaScript側から明示的にタイミングを指定して SWFを初期化するのが良いのかも。

posted by Png genki on Sun 17 Feb 2008 at 05:14

外部に公開されているサーバでは、sudoのタイムアウトを長くする事は セキュリティ面からお勧めできませんが、 ローカルのVMWare上で動いているOSなどでは、 sudoのタイムアウトを長くしたいと思うこともあるかもしれません。

そんなときは、visudoコマンドで/etc/sudoersに以下の設定 を書き加えればOKです。

   1  Defaults timestamp_timeout = 1440

1440はタイムアウト時間を[分]であらわしたものです。

At Your Own Risk!

posted by Png genki on Sat 16 Feb 2008 at 17:38

Pratik Naik氏による1ファイルで出来たRailsアプリケーション。

Single file Rails Application

Just for fun and profit

Thinを使ってますね。

Rails App Golfとかやったら面白いかもしれません。 Railsアプリとは何かという、ちょっと哲学的な問題に突き当りそうですが。

posted by Png genki on Sat 16 Feb 2008 at 16:55

Thin は、最近話題の軽量・高速が売りのWebサーバです。

Thin is a Ruby web server that glues together 3 of the best Ruby libraries in web history:

  • the Mongrel parser, the root of Mongrel speed and security
  • Event Machine, a network I/O library with extremely high scalability, performance and stability
  • Rack, a minimal interface between webservers and Ruby frameworks

ということで、 RailsアプリケーションでThinを使う方法をメモしておきます。 何はともあれ、まずはsudo gem install thinで thinをインストールします。 あとは、RAILS_ROOT

   1  $ thin start

するだけでOKです。非常に簡単です。 thinコマンドのオプションは以下の通り。

   1  Usage: thin [options] start|stop|restart
   2  
   3  Server options:
   4    -a, --address HOST     bind to HOST address
   5                           (default: 0.0.0.0)
   6    -p, --port PORT        use PORT (default: 3000)
   7    -e, --environment ENV  Rails environment
   8                           (default: development)
   9    -c, --chdir PATH       Change to dir before starting
  10    -s, --servers NUM      Number of servers to start
  11                           set a value >1 to start a cluster
  12    -d, --daemonize        Run daemonized in the background
  13    -l, --log FILE         File to redirect output
  14                           (default: log/thin.log)
  15    -P, --pid FILE         File to store PID
  16                           (default: tmp/pids/thin.pid)
  17    -t, --timeout SEC      Request or command timeout in sec
  18                           (default: 60)
  19    -u, --user NAME        User to run daemon as (use with -g)
  20    -g, --group NAME       Group to run daemon as (use with -u)
  21  
  22  Common options:
  23    -D, --debug                      Set debbuging on
  24    -h, --help                       Show this message
  25    -v, --version                    Show version

見ての通り、デフォルト設定はRailsアプリケーションに 最適化されています。

posted by Png genki on Sat 16 Feb 2008 at 12:48