このサイトの作り方

このサイト(I like Ruby)がどうやって生成されているのか紹介します。 コンテンツの質と比較してとても複雑な構成で書かれています。

概観

利用者的な視点でいうと次の手順でページを作成しています。

  • 自宅サーバ (WEBrick)
    • RWiki2を使ってコンテンツを記述
    • Divを使ってサイドバー、テーマなどレイアウト
    • プレビューがすんだらDivからスナップショットを生成
  • ftpupでbiglobeにupload

まわりくどいですが、RWiki/RDにだいぶ慣れてしまったのでこうやって 書くのが一番楽そうだったのです。

と、言いつつ今回も別の目的があります。DivとRinda2のRingの検証です。

概観・裏

仕組みはさらに複雑でRinda2から追加されたRinda::Ringを利用します。

WEBrickへのサーブレット(DivのTofulet)のmountや、RWikiサーバの検索などに Ringのネームサーバ機能を利用します。 プロセスの配置は動的に変更することもできます。 WEBrickとTofulet, RWikiが自宅内LANのマシンに分散配置されたりします。

次の手順で起動します。

  1. RingServerの起動。
  2. RWiki/WEBrick/Divのアプリケーションのいずれかの起動。 部品には次のものがあります。
    • WEBrickを使ったtofu-runner
    • RWikiデーモン
    • RWikiのviewer/editor - Divのアプリケーション
    • 箱入り娘 - Divのアプリケーション
    • お小遣い帳 saifu - Divのアプリケーション
    • ...

結局必要なプロセスを起動しなくては機能はしないのですが、 順不同で起動してもちゃんと機能します。 これは、特定の部品(プロセス)を再起動することが可能であることを示します。

このサイトのシステムはRingがどのくらい堅牢(?)なシステムを作れるのかの実験でもあるのです。

あれ?咳の書くのはいつも実験ばっかりですね。

このサイトのDivはdiv-1.2.0/sample/rwikiに入っています。

Ring

RingはRinda2のTupleSpaceを利用したネームサーバとネームサーバを検索する仕組みです。 RingのネームサーバはRingServerのインスタンスでローカルのネットワーク上に 一つ必要になります。