<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/ME2.2.3" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>pylori*style</title>
	<link>http://tam.qmix.org</link>
	<description>テスト中</description>
	<pubDate>Sun, 29 Jun 2008 04:50:18 +0900</pubDate>
	<generator>http://wordpress.org/?v=ME2.2.3</generator>
	<language>ja</language>
			<item>
		<title>Consistent Hasing を Ruby で試す</title>
		<link>http://tam.qmix.org/ruby/consistent-hashing-ruby/</link>
		<comments>http://tam.qmix.org/ruby/consistent-hashing-ruby/#comments</comments>
		<pubDate>Sun, 29 Jun 2008 13:50:18 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://tam.qmix.org/ruby/consistent-hashing-ruby/</guid>
		<description><![CDATA[Consistent Hashing を試すというページにて、Perlで Consistent Hashing を実装しているのを見つけたので、そのプログラムを Ruby に移植してみました。Perl 側の文法を完全には理解していないので一部は勘ですが、実行結果が一致しているのでたぶん合っていると思います。単純な移植ではつまらないので二分探索を用いた高速化も行っています。詳しくは以下のページをご覧ください。
ConsistentHashingRuby – pylori*style – Trac
]]></description>
			<content:encoded><![CDATA[<p><a href="http://8-p.info/consistent-hashing/">Consistent Hashing を試す</a>というページにて、Perlで Consistent Hashing を実装しているのを見つけたので、そのプログラムを Ruby に移植してみました。Perl 側の文法を完全には理解していないので一部は勘ですが、実行結果が一致しているのでたぶん合っていると思います。単純な移植ではつまらないので二分探索を用いた高速化も行っています。詳しくは以下のページをご覧ください。</p>
<p><a href="http://tam.qmix.org/dist/wiki/ConsistentHashingRuby">ConsistentHashingRuby – pylori*style – Trac</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/ruby/consistent-hashing-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby/EventMachineによるサーバの例</title>
		<link>http://tam.qmix.org/ruby/ruby-eventmachine-server/</link>
		<comments>http://tam.qmix.org/ruby/ruby-eventmachine-server/#comments</comments>
		<pubDate>Sun, 02 Mar 2008 13:16:06 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://tam.qmix.org/ruby/ruby-eventmachine-server/</guid>
		<description><![CDATA[最近、Ruby/EventMachineというライブライがおもしろくて良く使っています。EventMachineは、イベントドリブンで非同期I/O処理を行うためのライブラリで、一部 C++ で書かれていて高速動作するのが特徴です。
EventMachine のインストール
rubygems を使うのが簡単です。
$ gem install eventmachine
EventMachineの使い方
ごく簡単な例:
require 'rubygems'
require 'eventmachine'

EventMachine.run {
  EventMachine.start_server('localhost', 7000, EventMachine::Connection)
}
EventMachine.run はイベント待ちの無限ループを行います。ブロックの中身はイベント待ちループの初期化のあと、ループに入る前に呼ばれます。
EventMachine.start_server は、指定TCPポートで待ち受けるサーバを登録します。3つ目の引数は、イベント発生時にコールバックを処理するクラスまたはモジュールを指定します。
EventMachineのイベント待ちループで、新しい接続(コネクション)が発生すると、ここで指定したクラスのインスタンスが生成され、イベントに応じてそのインスタンスオブジェクトのメソッドが呼び出されます。モジュールを指定した場合は EventMachine::Connectionにmix-inされます。EventMachine::Connectionは元々EventMachineにあるベースとなるクラスです。
上記のスクリプトを実行するとイベント待ちループにはいるので、別の端末ウィンドウを開いて telnet 等で次のように接続します。
$ telnet localhost 7000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
なにか文字を入力して Enter を押すと、サーバを起動した端末の方に
............&#62;&#62;&#62;5
............&#62;&#62;&#62;7
などと表示されます。数字は入力した行の文字数です。実際に入力した文字より2多いと思いますが、これは行末の &#8220;\r\n&#8221; も含めて数えているからでしょう。このように EventMachine::Connectionにはデフォルトで受け取った各行の長さをSTDOUTに出力するコールバックルーチンが定義されています。実際に使うときには EventMachine::Connectionを継承したクラスをつくるか、必要なメソッドを定義したモジュールを指定することになります。
Echoサーバの例
Echoサーバとは、クライアントからの入力をそのまま出力して返すものです。先ほどの例に少し手を加えてEchoサーバを作ってみます。
require 'rubygems'
require 'eventmachine'

module MyHandler
  def receive_data data
    send_data("&#62;&#62; "+data)
  end
end

EventMachine.run {
  EventMachine.start_server('localhost', 7000, MyHandler)
}
新たにMyHandlerというハンドラを定義して、それをstart_serverの引数に渡しています。receive_dataは入力があったときに呼び出されるメソッドで、引数の変数に受け取ったデータが入ります。send_dataは出力するためのメソッドで、ここでは入力の先頭に&#8221;&#62;&#62; &#8220;を付加してそのまま送り返しています。
これは非常に簡単な例ですが、これだけで複数のクライアントから同時に接続されても正しく動くサーバが簡単に作れます。非同期入出力をするプログラムを作る際には便利なライブラリです。
]]></description>
			<content:encoded><![CDATA[<p>最近、Ruby/EventMachineというライブライがおもしろくて良く使っています。EventMachineは、イベントドリブンで非同期I/O処理を行うためのライブラリで、一部 C++ で書かれていて高速動作するのが特徴です。</p>
<h3>EventMachine のインストール</h3>
<p>rubygems を使うのが簡単です。</p>
<pre>$ gem install eventmachine</pre>
<h3>EventMachineの使い方</h3>
<p>ごく簡単な例:</p>
<pre>require 'rubygems'
require 'eventmachine'

EventMachine.run {
  EventMachine.start_server('localhost', 7000, EventMachine::Connection)
}</pre>
<p>EventMachine.run はイベント待ちの無限ループを行います。ブロックの中身はイベント待ちループの初期化のあと、ループに入る前に呼ばれます。</p>
<p>EventMachine.start_server は、指定TCPポートで待ち受けるサーバを登録します。3つ目の引数は、イベント発生時にコールバックを処理するクラスまたはモジュールを指定します。<br />
EventMachineのイベント待ちループで、新しい接続(コネクション)が発生すると、ここで指定したクラスのインスタンスが生成され、イベントに応じてそのインスタンスオブジェクトのメソッドが呼び出されます。モジュールを指定した場合は EventMachine::Connectionにmix-inされます。EventMachine::Connectionは元々EventMachineにあるベースとなるクラスです。</p>
<p>上記のスクリプトを実行するとイベント待ちループにはいるので、別の端末ウィンドウを開いて telnet 等で次のように接続します。</p>
<pre>$ telnet localhost 7000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.</pre>
<p>なにか文字を入力して Enter を押すと、サーバを起動した端末の方に</p>
<pre>............&gt;&gt;&gt;5
............&gt;&gt;&gt;7</pre>
<p>などと表示されます。数字は入力した行の文字数です。実際に入力した文字より2多いと思いますが、これは行末の &#8220;\r\n&#8221; も含めて数えているからでしょう。このように EventMachine::Connectionにはデフォルトで受け取った各行の長さをSTDOUTに出力するコールバックルーチンが定義されています。実際に使うときには EventMachine::Connectionを継承したクラスをつくるか、必要なメソッドを定義したモジュールを指定することになります。</p>
<h3>Echoサーバの例</h3>
<p>Echoサーバとは、クライアントからの入力をそのまま出力して返すものです。先ほどの例に少し手を加えてEchoサーバを作ってみます。</p>
<pre>require 'rubygems'
require 'eventmachine'

module MyHandler
  def receive_data data
    send_data("&gt;&gt; "+data)
  end
end

EventMachine.run {
  EventMachine.start_server('localhost', 7000, MyHandler)
}</pre>
<p>新たにMyHandlerというハンドラを定義して、それをstart_serverの引数に渡しています。receive_dataは入力があったときに呼び出されるメソッドで、引数の変数に受け取ったデータが入ります。send_dataは出力するためのメソッドで、ここでは入力の先頭に&#8221;&gt;&gt; &#8220;を付加してそのまま送り返しています。</p>
<p>これは非常に簡単な例ですが、これだけで複数のクライアントから同時に接続されても正しく動くサーバが簡単に作れます。非同期入出力をするプログラムを作る際には便利なライブラリです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/ruby/ruby-eventmachine-server/feed/</wfw:commentRss>
		</item>
		<item>
		<title>FreeBSD 7.0 を VMware Workstation 6.0 にインストール</title>
		<link>http://tam.qmix.org/install-memo/freebsd-70-on-vmware/</link>
		<comments>http://tam.qmix.org/install-memo/freebsd-70-on-vmware/#comments</comments>
		<pubDate>Sat, 01 Mar 2008 12:09:53 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[freebsd]]></category>

		<category><![CDATA[インストールメモ]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/12</guid>
		<description><![CDATA[インストール環境

VMware Workstation 6
Host OS = Windows XP Professional
Guest OS = FreeBSD 7.0R

OSのインストール

Windows XP 上で、FreeBSD ftp site ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/からISOイメージをダウンロードする。
VMwareのVMメニューのSettingsからCD-ROMを選択し、Use ISO imageをチェックし、ダウンロードしてきたISOイメージファイルを指定する。
bootして、通常通り一通りインストールする。
TimeZone, rootのパスワードを設定
再起動

portsnapでportsのインストール

portsnap fetch; portsnap extractを実行

VMware toolsのインストール

ports/misc/compat6xをインストール
VMwareのVMメニューからInstall VMware Toolsを選択
ports/emulators/vmware-guestd6とports/emulators/vmware-tools6をインストール

X11のインストール

portsまたはpackageでx11-servers/xorg-server, x11-drivers/xorg-drivers, x11-fonts/xorg-fontsをインストール
x11-drivers/xf86-video-vmwareをインストール
x11/xterm, x11/xinit, x11/xrd, そのた必要なものをインストール

Xの設定
xorgconfig を起動して設定していく。

マウス、キーボード: 適切なものを選択。/stand/sysinstallでmouseをenableにしておき、Protocol はauto, デバイスは/dev/sysmouseが吉。
horizontal sync range, vertical sync range: なんでもよい？
monitor identifier: (例) vmware
Video Card: VMWare guest OS (generic)
video memory do you have on your [...]]]></description>
			<content:encoded><![CDATA[<h3>インストール環境</h3>
<ul>
<li>VMware Workstation 6</li>
<li>Host OS = Windows XP Professional</li>
<li>Guest OS = FreeBSD 7.0R</li>
</ul>
<h3>OSのインストール</h3>
<ul>
<li>Windows XP 上で、FreeBSD ftp site <a href="ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/" class="external">ftp://ftp.jp.freebsd.org/pub/FreeBSD/releases/i386/ISO-IMAGES/</a>からISOイメージをダウンロードする。</li>
<li>VMwareのVMメニューのSettingsからCD-ROMを選択し、Use ISO imageをチェックし、ダウンロードしてきたISOイメージファイルを指定する。</li>
<li>bootして、通常通り一通りインストールする。</li>
<li>TimeZone, rootのパスワードを設定</li>
<li>再起動</li>
</ul>
<h3>portsnapでportsのインストール</h3>
<ul>
<li>portsnap fetch; portsnap extractを実行</li>
</ul>
<h3>VMware toolsのインストール</h3>
<ul>
<li>ports/misc/compat6xをインストール</li>
<li>VMwareのVMメニューからInstall VMware Toolsを選択</li>
<li>ports/emulators/vmware-guestd6とports/emulators/vmware-tools6をインストール</li>
</ul>
<h3>X11のインストール</h3>
<ul>
<li>portsまたはpackageでx11-servers/xorg-server, x11-drivers/xorg-drivers, x11-fonts/xorg-fontsをインストール</li>
<li>x11-drivers/xf86-video-vmwareをインストール</li>
<li>x11/xterm, x11/xinit, x11/xrd, そのた必要なものをインストール</li>
</ul>
<h3>Xの設定</h3>
<p>xorgconfig を起動して設定していく。</p>
<ul>
<li>マウス、キーボード: 適切なものを選択。/stand/sysinstallでmouseをenableにしておき、Protocol はauto, デバイスは/dev/sysmouseが吉。</li>
<li>horizontal sync range, vertical sync range: なんでもよい？</li>
<li>monitor identifier: (例) vmware</li>
<li>Video Card: VMWare guest OS (generic)</li>
<li>video memory do you have on your video card: なんでもよい?</li>
<li>depth関連: (Host OSの depth にあわせる)</li>
<li>/etc/X11/xorg.confに生成されるので中身を確認</li>
</ul>
<h3>CapsLockとCtrlをいれかえる</h3>
<ul>
<li>キーボードのCapsLockとCtrlを入れ替えたければ、/etc/X11/xorg.conf の Section &#8220;InputDevice&#8221; に Option &#8220;XkbOptions&#8221;  &#8220;ctrl:swapcaps&#8221;　という行がコメントで存在しているはずなので、有効にする</li>
<li>さらにports/x11/xkbcompをインストールする</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/install-memo/freebsd-70-on-vmware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>weblogger: Emacsでblog投稿</title>
		<link>http://tam.qmix.org/install-memo/weblogger-emacs/</link>
		<comments>http://tam.qmix.org/install-memo/weblogger-emacs/#comments</comments>
		<pubDate>Mon, 11 Feb 2008 17:07:02 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[インストールメモ]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/4</guid>
		<description><![CDATA[WordpressにEmacsから投稿するために、以下のページを参考に weblogger というものをインストールしてみました。
Blogging with Emacs
インストールは簡単で、手順は以下の通り。
CVSでソースをとってくる

cd ~/.emacs.d/
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/emacsweblogs
co -d weblogger weblogger/lisp
.emacsを編集

(add-to-list 'load-path "~/.emacs.d/weblogger")
(require 'weblogger)
M-x weblogger-setup-weblog
blogのエンドポイントURL、ユーザ名、パスワードなどを入力
準備ができて、新規に投稿するには、M-x weblogger-start-entry
入力し終わったら C-c C-c
]]></description>
			<content:encoded><![CDATA[<p>WordpressにEmacsから投稿するために、以下のページを参考に weblogger というものをインストールしてみました。</p>
<p><a href="http://peadrop.com/blog/2007/05/11/blogging-with-emacs/">Blogging with Emacs</a></p>
<p>インストールは簡単で、手順は以下の通り。</p>
<p>CVSでソースをとってくる</p>
<pre>
cd ~/.emacs.d/
cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/emacsweblogs
co -d weblogger weblogger/lisp</pre>
<p>.emacsを編集</p>
<pre>
(add-to-list 'load-path "~/.emacs.d/weblogger")
(require 'weblogger)</pre>
<p><code>M-x weblogger-setup-weblog</code><br />
blogのエンドポイントURL、ユーザ名、パスワードなどを入力</p>
<p>準備ができて、新規に投稿するには、<code>M-x weblogger-start-entry</code><br />
入力し終わったら <code>C-c C-c</code></p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/install-memo/weblogger-emacs/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ubuntu 7.04日本語版のインストール</title>
		<link>http://tam.qmix.org/install-memo/ubuntu-704-ja-vmware/</link>
		<comments>http://tam.qmix.org/install-memo/ubuntu-704-ja-vmware/#comments</comments>
		<pubDate>Fri, 04 May 2007 00:00:40 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[インストールメモ]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/5</guid>
		<description><![CDATA[VMware Workstation上にUbuntu 7.04日本語ローカライズ版をインストールしてみました。
Ubuntu 7.04 on VMware インストールメモ
大きな問題もなく簡単にインストールできます。VMware toolsのインストールでちょっとエラーが発生しますが、それほど致命的なものでもないので放置中。
]]></description>
			<content:encoded><![CDATA[<p>VMware Workstation上にUbuntu 7.04日本語ローカライズ版をインストールしてみました。</p>
<p><a href="http://tam.qmix.org/wiki/UbuntuOnVmware.html">Ubuntu 7.04 on VMware インストールメモ</a></p>
<p>大きな問題もなく簡単にインストールできます。VMware toolsのインストールでちょっとエラーが発生しますが、それほど致命的なものでもないので放置中。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/install-memo/ubuntu-704-ja-vmware/feed/</wfw:commentRss>
		</item>
		<item>
		<title>PerlのPlagger、PHPのPrhagger、Rubyは？</title>
		<link>http://tam.qmix.org/uncategorized/plagger-ruby/</link>
		<comments>http://tam.qmix.org/uncategorized/plagger-ruby/#comments</comments>
		<pubDate>Sun, 28 Jan 2007 12:00:52 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/11</guid>
		<description><![CDATA[PHP版のPlaggerっぽいものであるPrhaggerが出たら しいです。Rubyをメインに使っている者としては当然Ruby版Plaggerを期待するわけですが、誰か作っていないものでしょうか。 Prhaggerはブラウザ上で設定できるらしいので、Ruby版Plaggerでも同じようにするためにRailsベースでやるのが良いと思います。名前は、Plagger + Rails で Plarail(プラレール)。商標とかまずいかなぁ。
追記: praggerというのが出たみたいです。http://pragger.ikejisoft.com/
]]></description>
			<content:encoded><![CDATA[<p>PHP版のPlaggerっぽいものである<a href="http://www.phppro.jp/news/294">Prhaggerが出た</a>ら しいです。Rubyをメインに使っている者としては当然Ruby版Plaggerを期待するわけですが、誰か作っていないものでしょうか。 Prhaggerはブラウザ上で設定できるらしいので、Ruby版Plaggerでも同じようにするためにRailsベースでやるのが良いと思います。名前は、Plagger + Rails で Plarail(プラレール)。商標とかまずいかなぁ。</p>
<p>追記: praggerというのが出たみたいです。<a href="http://pragger.ikejisoft.com/">http://pragger.ikejisoft.com/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/uncategorized/plagger-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>うざいページ分けを結合するGreaseMonkeyスクリプト</title>
		<link>http://tam.qmix.org/uncategorized/greasemonkey-pageconcater/</link>
		<comments>http://tam.qmix.org/uncategorized/greasemonkey-pageconcater/#comments</comments>
		<pubDate>Sun, 21 Jan 2007 12:00:33 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[未分類]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/10</guid>
		<description><![CDATA[ITmediaとかMYCOMジャーナルで、意味もなくページを分割している記事が多くて、いや、少しでもページビューを稼ごうという戦略ということでサ イト側としては意味はあるのでしょうが、見る側としてはとにかく激しくうっとおしい！と思っていたら、同じことを思っている人はいるものでした。
[usability]うざい！めんどい！果てしなくうっとおしい！
この方は、これを解決するGreaseMonkeyスクリプトを作られていて、以下のページで公開されています。
[GreaseMonkey]PageConcater
実は今までFirefoxを使っていなかったので、上記ページは知っていながら使えていなかったのですが、最近Firefoxをメインのブラウザにしたのを機にこのGreaseMonkeyスクリプトを導入しました。とても便利でありがたいです。
]]></description>
			<content:encoded><![CDATA[<p>ITmediaとかMYCOMジャーナルで、意味もなくページを分割している記事が多くて、いや、少しでもページビューを稼ごうという戦略ということでサ イト側としては意味はあるのでしょうが、見る側としてはとにかく激しくうっとおしい！と思っていたら、同じことを思っている人はいるものでした。</p>
<p><a href="http://zeromemory.sblo.jp/article/1639944.html">[usability]うざい！めんどい！果てしなくうっとおしい！</a></p>
<p>この方は、これを解決するGreaseMonkeyスクリプトを作られていて、以下のページで公開されています。</p>
<p><a href="http://zeromemory.sblo.jp/article/1644396.html">[GreaseMonkey]PageConcater</a></p>
<p>実は今までFirefoxを使っていなかったので、上記ページは知っていながら使えていなかったのですが、最近Firefoxをメインのブラウザにしたのを機にこのGreaseMonkeyスクリプトを導入しました。とても便利でありがたいです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/uncategorized/greasemonkey-pageconcater/feed/</wfw:commentRss>
		</item>
		<item>
		<title>ChartDirector for Ruby</title>
		<link>http://tam.qmix.org/ruby/chartdirector-for-ruby/</link>
		<comments>http://tam.qmix.org/ruby/chartdirector-for-ruby/#comments</comments>
		<pubDate>Sat, 30 Sep 2006 13:01:04 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/9</guid>
		<description><![CDATA[ChartDirectorとは、Advanced Software Engineeringの製品で、チャート(グラフ)を描くためのライブラリです。有料ですが、試しに使ってみるだけなら無料でできます。最近になってRuby用が出たので試しに使ってみました。
ダウンロードと展開
ダウンロードページ http://www.advsofteng.com/download.html からアーカイブをダウンロードします。ここではChartDirector for RubyのFreeBSD(i386)用をダウンロードしました。ダウンロードしたら展開します。
% wget http://download2.advsofteng.com/chartdir_ruby_freebsd.tar.gz
% tar zxvf chartdir_ruby_freebsd.tar.gz

 railsdemo
ChartDirector for Rubyには、Ruby on Rails用のサンプルが添付されています。 Railsが使える環境であれば、次のようにして展開したディレクトリの中にあるrailsdemoディレクトリで ruby srcipt/serverを実行し、ブラウザでhttp://localhost:3000/にアクセスすればデモを見ることができます。
% cd ChartDirector/railsdemo
% ruby script/server

左側のリンクをクリックすると豊富なサンプルグラフを見ることができます。たとえば、Cylinder Bar Shadingというリンクをクリックすると以下のようなサンプルが表示されます。

自分のrailsアプリケーションでChartDirectorを使う場合は、railsdemo/vendorディレクトリの中身を全部自分のrailsアプリのvendorディレクトリにコピーして使います。
rubydemo
ChartDirectorは、もちろんruby単体で使うことができます。rubydemoディレクトリに移動し、rubyのライブラリサーチパ スにrailsdemo/vendorを含めれば、デモプログラムを実行できます(実際に使う場合にはrailsdemo/vendorの中身を全部 rubyのライブラリサーチパスのどこかにコピーして使うことになります)。
% cd ../rubydemo
% ruby -I../railsdemo/vendor simplebar.rb
上記のようにするとsimplebar.pngというグラフ画像が生成されます。

画像下部にある黄色いバーは、ライセンスを登録していない場合に表示されます。ライセンスを購入し、設定すれば黄色いバーは表示されなくなります。
ライセンスの購入
http://www.advsofteng.com/purchase.htmlからライセンスを購入することができます。メールでライセンスコードが送られてくるので、それをファイルに書き込むと登録は完了し、グラフ画像に黄色いバーが表示されなくなります。
ChartDirectorは非常に機能が豊富で、美しいグラフを高速に生成できます。サンプルやドキュメントも充実しています。値段も安いのでオススメのグラフライブラリです。
]]></description>
			<content:encoded><![CDATA[<p>ChartDirectorとは、<a href="http://www.advsofteng.com/">Advanced Software Engineering</a>の製品で、チャート(グラフ)を描くためのライブラリです。有料ですが、試しに使ってみるだけなら無料でできます。最近になってRuby用が出たので試しに使ってみました。</p>
<h4>ダウンロードと展開</h4>
<p>ダウンロードページ <a href="http://www.advsofteng.com/download.html">http://www.advsofteng.com/download.html</a> からアーカイブをダウンロードします。ここではChartDirector for RubyのFreeBSD(i386)用をダウンロードしました。ダウンロードしたら展開します。</p>
<pre>% wget http://download2.advsofteng.com/chartdir_ruby_freebsd.tar.gz
% tar zxvf chartdir_ruby_freebsd.tar.gz</pre>
<p></p>
<h4> railsdemo</h4>
<p>ChartDirector for Rubyには、Ruby on Rails用のサンプルが添付されています。 Railsが使える環境であれば、次のようにして展開したディレクトリの中にあるrailsdemoディレクトリで ruby srcipt/serverを実行し、ブラウザで<a href="http://localhost:3000/">http://localhost:3000/</a>にアクセスすればデモを見ることができます。</p>
<pre>% cd ChartDirector/railsdemo
% ruby script/server</pre>
<p><img src="http://tam.qmix.org/imgs/s-WS124.jpg" alt="s-WS124.jpg" /></p>
<p>左側のリンクをクリックすると豊富なサンプルグラフを見ることができます。たとえば、Cylinder Bar Shadingというリンクをクリックすると以下のようなサンプルが表示されます。</p>
<p><img src="http://tam.qmix.org/imgs/s-WS125.jpg" alt="s-WS125.jpg" /></p>
<p>自分のrailsアプリケーションでChartDirectorを使う場合は、railsdemo/vendorディレクトリの中身を全部自分のrailsアプリのvendorディレクトリにコピーして使います。</p>
<h4>rubydemo</h4>
<p>ChartDirectorは、もちろんruby単体で使うことができます。rubydemoディレクトリに移動し、rubyのライブラリサーチパ スにrailsdemo/vendorを含めれば、デモプログラムを実行できます(実際に使う場合にはrailsdemo/vendorの中身を全部 rubyのライブラリサーチパスのどこかにコピーして使うことになります)。</p>
<pre>% cd ../rubydemo
% ruby -I../railsdemo/vendor simplebar.rb</pre>
<p>上記のようにするとsimplebar.pngというグラフ画像が生成されます。</p>
<p><img src="http://tam.qmix.org/imgs/simplebar.png" alt="simplebar.png" /></p>
<p>画像下部にある黄色いバーは、ライセンスを登録していない場合に表示されます。ライセンスを購入し、設定すれば黄色いバーは表示されなくなります。</p>
<h4>ライセンスの購入</h4>
<p><a href="http://www.advsofteng.com/purchase.html">http://www.advsofteng.com/purchase.html</a>からライセンスを購入することができます。メールでライセンスコードが送られてくるので、それをファイルに書き込むと登録は完了し、グラフ画像に黄色いバーが表示されなくなります。</p>
<p>ChartDirectorは非常に機能が豊富で、美しいグラフを高速に生成できます。サンプルやドキュメントも充実しています。値段も安いのでオススメのグラフライブラリです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/ruby/chartdirector-for-ruby/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Hpricot</title>
		<link>http://tam.qmix.org/ruby/hpricot/</link>
		<comments>http://tam.qmix.org/ruby/hpricot/#comments</comments>
		<pubDate>Sun, 27 Aug 2006 12:57:52 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/8</guid>
		<description><![CDATA[HpricotというRuby用のHTMLパーサに注目していたのですが、 最近ちょうど使いたい場面があったので使ってみました。 まず、Hpricotはスキャン部分がC言語で書かれていて、類似のHTreeより高速だということですので両者を比べてみました。
require 'benchmark'
require 'open-uri'
require 'rubygems'
require 'hpricot'
require 'htree'

str = open('http://www.ruby-lang.org/en/').read

n = 100
Benchmark.bm {&#124;x&#124;
  x.report {n.times {HTree(str)}}
  x.report {n.times {Hpricot(str)}}
}
結果は次のようになり、たしかにHpricot(下の段)の方がかなり高速なようです。
     user     system      total        real
11.773438   0.671875  12.445312 ( 13.631620)
 4.750000   [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://code.whytheluckystiff.net/hpricot/">Hpricot</a>というRuby用のHTMLパーサに注目していたのですが、 最近ちょうど使いたい場面があったので使ってみました。 まず、Hpricotはスキャン部分がC言語で書かれていて、類似のHTreeより高速だということですので両者を比べてみました。</p>
<pre>require 'benchmark'
require 'open-uri'
require 'rubygems'
require 'hpricot'
require 'htree'

str = open('http://www.ruby-lang.org/en/').read

n = 100
Benchmark.bm {|x|
  x.report {n.times {HTree(str)}}
  x.report {n.times {Hpricot(str)}}
}</pre>
<p>結果は次のようになり、たしかにHpricot(下の段)の方がかなり高速なようです。</p>
<pre>     user     system      total        real
11.773438   0.671875  12.445312 ( 13.631620)
 4.750000   0.359375   5.109375 (  5.644100)</pre>
<p>使い方等については<a href="http://tam.qmix.org/wiki/">wiki</a>の<a href="http://tam.qmix.org/wiki/Hpricot.html">HTMLパーサ Hpricot</a>にまとめました。 使い勝手もかなり良く、おすすめです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/ruby/hpricot/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Ruby or Rails CheatSheets</title>
		<link>http://tam.qmix.org/ruby/ruby-or-rails-cheatsheets/</link>
		<comments>http://tam.qmix.org/ruby/ruby-or-rails-cheatsheets/#comments</comments>
		<pubDate>Sat, 19 Aug 2006 12:00:12 +0900</pubDate>
		<dc:creator>tam</dc:creator>
		
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://blog.qmix.org/p/7</guid>
		<description><![CDATA[Ruby Insideの16 Great Ruby Articles and Resources In The $100 Contest So Farという記事で、 Ruby or Rails Cheat Sheetsというのが紹介されています。 RubyやRailsのcheat sheet やリファレンスがいくつかあがっていて、たとえば Ruby On Rails Referenceなんかは、結構便利。しかし、Ruby on Rails Cheat Sheetをみると、もはやRubyとRailsは区別されていない感じです。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.rubyinside.com/">Ruby Inside</a>の<a href="http://www.rubyinside.com/16-great-ruby-articles-and-resources-in-the-100-contest-so-far-197.html">16 Great Ruby Articles and Resources In The $100 Contest So Far</a>という記事で、 <a href="http://techcheatsheets.com/tag/ruby+or+rails/">Ruby or Rails Cheat Sheets</a>というのが紹介されています。 RubyやRailsのcheat sheet やリファレンスがいくつかあがっていて、たとえば <a href="http://blog.invisible.ch/2006/05/01/ruby-on-rails-reference/">Ruby On Rails Reference</a>なんかは、結構便利。しかし、<a href="http://www.ilovejackdaniels.com/cheat-sheets/ruby-on-rails-cheat-sheet/">Ruby on Rails Cheat Sheet</a>をみると、もはやRubyとRailsは区別されていない感じです。</p>
]]></content:encoded>
			<wfw:commentRss>http://tam.qmix.org/ruby/ruby-or-rails-cheatsheets/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
