<?xml version="1.0" encoding="UTF-8"?>
<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/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I.D.E.A.中文站 &#187; Ruby</title>
	<atom:link href="http://www.tzhang.com/blog/tag/ruby/feed" rel="self" type="application/rss+xml" />
	<link>http://www.tzhang.com/blog</link>
	<description>沉淀生活点滴.zZ</description>
	<lastBuildDate>Sat, 14 Jan 2012 14:47:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Heroku试用体会</title>
		<link>http://www.tzhang.com/blog/2009/08/27/heroku-sinatra-experience</link>
		<comments>http://www.tzhang.com/blog/2009/08/27/heroku-sinatra-experience#comments</comments>
		<pubDate>Thu, 27 Aug 2009 03:07:18 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[ec2]]></category>
		<category><![CDATA[google map]]></category>
		<category><![CDATA[heroku]]></category>
		<category><![CDATA[sinatra]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/?p=527</guid>
		<description><![CDATA[上一篇的sinatra应用部署在了heroku上。经过几天的试用有几点体会 1. Heroku是架构在Amazon EC2上的，具有不错的扩展性，只要你有钱，拖拉一下鼠标就能实现scaling了。这一点着实很方便。当然代价是价格会比EC2高，毕竟人家提供了增值服务嘛。具体高多少很难比较，连heroku的老板都说对应关系很复杂。基本上要是网站做大了，用heroku就不合算了。 2. 不烧包的就用heroku的free配置，只有一个dyno的，5M存储空间，可以支持绑定自己的域名。 3. 近期遭遇了几次request time out,因此查了一下heroku doc，dyno基本上把它看成一个线程吧，换句话说，这个一个dyno的free版只能支持并发度为1的压力。因此并发连接多的化，你会经常看到time out的。计算容量也是比较寒酸，用ab -n 10 url测一下，10个请求4个fail掉了orz. 看来免费的午餐也不好用啊。大家用来做原型demo就好了，验证好了自己找地方去deploy也挺好。 update：不知道是这次测试当时受海底光缆受损的影响还是其他原因导致结果很差，后来新的测试比较正常，后面我贴了一个新的benchmarking的测试结果。free的计划还是可以承受一些负载压力的。特此给heroku正名 4. heroku提供了deploy代码的好方案，但在DB方面限于技术原因，还比较薄弱，mysql什么的还是用不起来。 5. google map API是跟域名相关的，如果没有自己的域名的话，部署到xxxx.heroku.com这种子域名下面是不能用的，想必早有人在heroku下面申请了key, 后来者都会遇到冲突。花钱买自己域名吧 6. Heroku的想法不错，这也难怪他们会积攒了数万用户，也得到了300万美元的投资。云计算，不再是一个概念了，已经有若干成熟的方案面向消费者了。这一点要向先行者amazon致敬 7，最后一点就是heroku的支持做的不怎么样，文档也很不完整。遇到问题还是要自己摸索解决。 add-on: AB benchmarking result:做了两个测试，一个是简单到极致的逻辑，另一个相反，是复杂到极致的逻辑，看看两个边界状况的对比和共性应该更能说明问题：case1表现不错（里面就两行code当然不错了，呵呵），case2太复杂了，failed了88个（一共100个请求，FT）. case1: light code: localhost:sinatra tony$ ab -n 100 -c 10 http://ip2loc.dazhe.me/counter/ This is ApacheBench, Version 2.3 < $Revision: 655654 $> Copyright 1996 Adam Twiss, [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tzhang.com/blog/2009/08/25/sinatra-heroku-gae-google-map-prototyping">上一篇的sinatra应用</a>部署在了heroku上。经过几天的试用有几点体会</p>
<p>1. Heroku是架构在Amazon EC2上的，具有不错的扩展性，只要你有钱，拖拉一下鼠标就能实现scaling了。这一点着实很方便。当然代价是价格会比EC2高，毕竟人家提供了增值服务嘛。具体高多少很难比较，连heroku的老板都说对应关系很复杂。基本上要是网站做大了，用heroku就不合算了。</p>
<p>2. 不烧包的就用heroku的free配置，只有一个dyno的，5M存储空间，可以支持绑定自己的域名。</p>
<p>3. 近期遭遇了几次request time out,因此查了一下heroku doc，dyno基本上把它看成一个线程吧，换句话说，这个一个dyno的free版只能支持并发度为1的压力。因此并发连接多的化，你会经常看到time out的。<del datetime="2009-09-03T02:29:56+00:00">计算容量也是比较寒酸，用ab -n 10 url测一下，10个请求4个fail掉了orz. 看来免费的午餐也不好用啊。大家用来做原型demo就好了，验证好了自己找地方去deploy也挺好。</del><br />
<strong></p>
<p>update：不知道是这次测试当时受海底光缆受损的影响还是其他原因导致结果很差，后来新的测试比较正常，后面我贴了一个新的benchmarking的测试结果。free的计划还是可以承受一些负载压力的。特此给heroku正名</strong></p>
<p>4. heroku提供了deploy代码的好方案，但在DB方面限于技术原因，还比较薄弱，mysql什么的还是用不起来。</p>
<p>5. google map API是跟域名相关的，如果没有自己的域名的话，部署到xxxx.heroku.com这种子域名下面是不能用的，想必早有人在heroku下面申请了key, 后来者都会遇到冲突。花钱买自己域名吧</p>
<p>6. Heroku的想法不错，这也难怪他们会积攒了数万用户，也得到了300万美元的投资。云计算，不再是一个概念了，已经有若干成熟的方案面向消费者了。这一点要向先行者amazon致敬</p>
<p>7，最后一点就是heroku的支持做的不怎么样，文档也很不完整。遇到问题还是要自己摸索解决。</p>
<p>add-on: AB benchmarking result:做了两个测试，一个是简单到极致的逻辑，另一个相反，是复杂到极致的逻辑，看看两个边界状况的对比和共性应该更能说明问题：case1表现不错（里面就两行code当然不错了，呵呵），case2太复杂了，failed了88个（一共100个请求，FT）. </p>
<p><strong>case1: light code:</strong><br />
localhost:sinatra tony$ ab -n 100 -c 10 http://ip2loc.dazhe.me/counter/<br />
This is ApacheBench, Version 2.3 < $Revision: 655654 $><br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/</p>
<p>Benchmarking ip2loc.dazhe.me (be patient)&#8230;..done</p>
<p>Server Software:        nginx/0.6.38<br />
Server Hostname:        ip2loc.dazhe.me<br />
Server Port:            80</p>
<p>Document Path:          /counter/<br />
Document Length:        15 bytes</p>
<p>Concurrency Level:      10<br />
Time taken for tests:   7.828 seconds<br />
Complete requests:      100<br />
Failed requests:        0<br />
Write errors:           0<br />
Non-2xx responses:      100<br />
Total transferred:      26200 bytes<br />
HTML transferred:       1500 bytes<br />
<strong>Requests per second:    12.77 [#/sec] (mean)</strong><br />
Time per request:       782.820 [ms] (mean)<br />
Time per request:       78.282 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          3.27 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:      309  389 192.2    317    1233<br />
Processing:   316  378 272.2    337    3050<br />
Waiting:      314  377 272.3    335    3050<br />
Total:        627  767 332.5    661    3370</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%    661<br />
  66%    677<br />
  75%    705<br />
  80%    815<br />
  90%   1017<br />
  95%   1543<br />
  98%   1570<br />
  99%   3370<br />
 100%   3370 (longest request)</p>
<p><strong>case2: heavy code:</strong><br />
localhost:sinatra tony$ ab -n 100 -c 10 http://ip2loc.dazhe.me/<br />
This is ApacheBench, Version 2.3 < $Revision: 655654 $><br />
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/<br />
Licensed to The Apache Software Foundation, http://www.apache.org/</p>
<p>Benchmarking ip2loc.dazhe.me (be patient)&#8230;..done</p>
<p>Server Software:        nginx/0.6.38<br />
Server Hostname:        ip2loc.dazhe.me<br />
Server Port:            80</p>
<p>Document Path:          /<br />
Document Length:        696 bytes</p>
<p>Concurrency Level:      10<br />
Time taken for tests:   24.932 seconds<br />
Complete requests:      100<br />
Failed requests:        88<br />
   (Connect: 0, Receive: 0, Length: 88, Exceptions: 0)<br />
Write errors:           0<br />
Non-2xx responses:      88<br />
Total transferred:      36676 bytes<br />
HTML transferred:       10992 bytes<br />
<strong>Requests per second:    4.01 [#/sec] (mean)<br />
</strong>Time per request:       2493.243 [ms] (mean)<br />
Time per request:       249.324 [ms] (mean, across all concurrent requests)<br />
Transfer rate:          1.44 [Kbytes/sec] received</p>
<p>Connection Times (ms)<br />
              min  mean[+/-sd] median   max<br />
Connect:      310  328  28.1    316     410<br />
Processing:   614 2067 790.9   1961    3904<br />
Waiting:      613 2066 790.9   1960    3903<br />
Total:        977 2395 788.1   2370    4214</p>
<p>Percentage of the requests served within a certain time (ms)<br />
  50%   2370<br />
  66%   2645<br />
  75%   2888<br />
  80%   3086<br />
  90%   3569<br />
  95%   4036<br />
  98%   4177<br />
  99%   4214<br />
 100%   4214 (longest request)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2009/08/27/heroku-sinatra-experience/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sinatra,Heroku,Google AppEngine,Google Map的简单试用</title>
		<link>http://www.tzhang.com/blog/2009/08/25/sinatra-heroku-gae-google-map-prototyping</link>
		<comments>http://www.tzhang.com/blog/2009/08/25/sinatra-heroku-gae-google-map-prototyping#comments</comments>
		<pubDate>Tue, 25 Aug 2009 15:32:24 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[google map]]></category>
		<category><![CDATA[sinatra]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/?p=524</guid>
		<description><![CDATA[写了个简单的google map应用，用的是简单清爽的Sinatra做DSL, Google Map API, 作用就是把访问者的ip地址解析到地理位置然后在google map上标出来。部署在Heroku上。整个程序只有62行ruby代码。地址在这里：ip2loc.dazhe.me 同样，这段代码可以不经修改的跑在Google AppEngine上，有时间的时候我再做这件事吧。下面是个抓图，有兴趣的朋友帮我验证一下效果。具体地址可能有些偏差，因为用的是国外的ip查询库，在国内的部分可能差别较大，比我我自己的ip就被标在了北海。]]></description>
			<content:encoded><![CDATA[<p>写了个简单的google map应用，用的是简单清爽的Sinatra做DSL, Google Map API, 作用就是把访问者的ip地址解析到地理位置然后在google map上标出来。部署在Heroku上。整个程序只有62行ruby代码。地址在这里：<a href="http://ip2loc.dazhe.me">ip2loc.dazhe.me</a></p>
<p>同样，这段代码可以不经修改的跑在Google AppEngine上，有时间的时候我再做这件事吧。下面是个抓图，有兴趣的朋友帮我验证一下效果。具体地址可能有些偏差，因为用的是国外的ip查询库，在国内的部分可能差别较大，比我我自己的ip就被标在了北海。<br />
<a href="http://www.tzhang.com/blog/wp-content/uploads/2009/08/图片-1.png" rel="lightbox[524]"><img src="http://www.tzhang.com/blog/wp-content/uploads/2009/08/图片-1.png" alt="snap" title="snap" width="595" height="400" class="aligncenter size-full wp-image-525" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2009/08/25/sinatra-heroku-gae-google-map-prototyping/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>用Ruby on Rails开发Facebook 应用(2)</title>
		<link>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-2</link>
		<comments>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-2#comments</comments>
		<pubDate>Mon, 28 Jul 2008 15:59:12 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rfacebook]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/?p=224</guid>
		<description><![CDATA[上一篇说了不少虚的，现在作点儿实在的： Step.1 Facebook注册一个App. 作为facebook的用户，在也面最下方的developer连接可以进入开发者的portal. 这需要你加入developer app(这本身也是facebook的一个app).之后你就可以创建facebook app了。你需要指定的最基本的信息包括application name, callback url和canvas page url. 尤其是后者，可以看作是facebook给你分配的地址，不可重复。由于facebook已经有了超过26000个app，好名基本都有人用了，因此想要找一个长度合适有好记又有意义的canvas url药费一下脑筋了。 注册好的app也可以更改属性，并不是一成不变的。过程简单不贴图了。总之你的app有了自己的key和secret. 这两个是facebook识别app的重要依据。 Step.2 本地开发环境安装rfacebook和rfacebook plugin (前提是你有一个work的rails环境哦，别告诉我还没有。翻翻我之前的帖子) sudo gem install rfacebook rails yourappname cd yourappname script/plugin install svn://rubyforge.org/var/svn/rfacebook/trunk/rfacebook/plugins/rfacebook Step.3 配置facebook app信息 生成facebook.yml文件: rake facebook:setup 将facebook.yml按照facebook app的信息进行填写 注意facebook.yml每段都有tunnel: tunnel: username: yourLoginName host: www.yourexternaldomain.com port: 1234 local_port: 5678 这是用来提供你自己的电脑和虚拟主机服务器之间的链路的。要知道facebook把对你app的访问请求转到我们自己的虚拟主机上，要是开发的时候任何一点变化都要deploy到服务器上才能生效的话，怕是要累死了。所以tunnel提供了使用ssh来使得服务器到本地开发环境的链路。这样可以认为facebook把访问请求转到了local的机器上。 怎么用这个tunnel配置呢？看例子 tunnel: username: foobar < [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-1">上一篇</a>说了不少虚的，现在作点儿实在的：</p>
<p><strong>Step.1   Facebook注册一个App. </strong><br />
作为facebook的用户，在也面最下方的<a href="http://developers.new.facebook.com">developer连接</a>可以进入开发者的portal. 这需要你加入developer app(这本身也是facebook的一个app).之后你就可以创建facebook app了。你需要指定的最基本的信息包括application name, callback url和canvas page url. 尤其是后者，可以看作是facebook给你分配的地址，不可重复。由于facebook已经有了超过26000个app，好名基本都有人用了，因此想要找一个长度合适有好记又有意义的canvas url药费一下脑筋了。</p>
<p>注册好的app也可以更改属性，并不是一成不变的。过程简单不贴图了。总之你的app有了自己的key和secret. 这两个是facebook识别app的重要依据。</p>
<p><strong>Step.2   本地开发环境安装rfacebook和rfacebook plugin</strong> (前提是你有一个work的rails环境哦，别告诉我还没有。翻翻我之前的帖子)</p>
<p>    sudo gem install rfacebook</p>
<p>    rails yourappname<br />
    cd yourappname<br />
    script/plugin install svn://rubyforge.org/var/svn/rfacebook/trunk/rfacebook/plugins/rfacebook</p>
<p><strong>Step.3   配置facebook app信息</strong><br />
  生成facebook.yml文件:<br />
    rake facebook:setup<br />
  将facebook.yml按照facebook app的信息进行填写</p>
<p>  注意facebook.yml每段都有tunnel:</p>
<p>    tunnel:<br />
      username: yourLoginName<br />
      host: www.yourexternaldomain.com<br />
      port: 1234<br />
      local_port: 5678<br />
  这是用来提供你自己的电脑和虚拟主机服务器之间的链路的。要知道facebook把对你app的访问请求转到我们自己的虚拟主机上，要是开发的时候任何一点变化都要deploy到服务器上才能生效的话，怕是要累死了。所以tunnel提供了使用ssh来使得服务器到本地开发环境的链路。这样可以认为facebook把访问请求转到了local的机器上。</p>
<p>  怎么用这个tunnel配置呢？看例子<br />
  tunnel:<br />
	username: foobar                <strong> < ----- ssh user id</strong><br />
	host: www.mysite.com         </strong><strong>< ----- server adderss</strong><br />
	port: 8888<br />
	local_port: 3000</p>
<p>  配只好之后就rake之：<br />
    rake facebook:tunnel:start</p>
<p>(待续)<br />
    </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-2/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ruby on Rails开发Facebook 应用(1)</title>
		<link>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-1</link>
		<comments>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-1#comments</comments>
		<pubDate>Sun, 27 Jul 2008 16:22:16 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[facebook app]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rfacebook]]></category>
		<category><![CDATA[RoR]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/?p=222</guid>
		<description><![CDATA[facebook为app提供了很庞大的用户群体和不错的API支持（至少对ruby on Rails来说是如此），对于想把Web2.0作为创业方向的同学来说，可以节省积累用户的时间。 要学习facebook app的基础知识的同学请参看这里，已经对facebook熟悉的同学请跳过： ［连接丢失，抱歉］ 看完之后你至少应该知道Facebook App有三种和facebook耦合的方式(external,Iflame,FBML)，这就ok了. 前面说过用Ruby开发facebook app有不错的支持，是因为这个东东： “rfacebook” 什么？这么大名鼎鼎的东西不知道？那你得看看这个 http://rfacebook.rubyforge.org/ 不看也行，你知道rfacebook提供了facebook api的ruby接口就行了。新版的rfacebook还连同一个rails plugin一起release,大大方便了使用rails的同学 网上能找到不少有关RoR开发Facebook App的教程。比如一下这些，建议大家都看看： http://www.liverail.net/articles/2007/6/29/tutorial-on-developing-a-facebook-platform-application-with-ruby-on-rails http://giantrobots.thoughtbot.com/2007/6/14/fist-in-your-facebook 看过上面的教程相信大家有了更多认识；更相信大家有一个印象，就是这些教程太老了（没办法，谁让rails更新的这么快呢），通过这些教程理解要点还可以，跟着作是没什么希望的。反正我是看到rhtml的后缀就没法再忍受往下看了。网上爬了个遍也没看到有更新的教程。那就自己摸索这来吧。（待续）]]></description>
			<content:encoded><![CDATA[<p>facebook为app提供了很庞大的用户群体和不错的API支持（至少对ruby on Rails来说是如此），对于想把Web2.0作为创业方向的同学来说，可以节省积累用户的时间。</p>
<p>要学习facebook app的基础知识的同学请参看这里，已经对facebook熟悉的同学请跳过：<br />
［连接丢失，抱歉］</p>
<p>看完之后你至少应该知道Facebook App有三种和facebook耦合的方式(external,Iflame,FBML)，这就ok了.</p>
<p>前面说过用Ruby开发facebook app有不错的支持，是因为这个东东： “rfacebook”  什么？这么大名鼎鼎的东西不知道？那你得看看这个</p>
<p>http://rfacebook.rubyforge.org/</p>
<p>不看也行，你知道rfacebook提供了facebook api的ruby接口就行了。新版的rfacebook还连同一个rails plugin一起release,大大方便了使用rails的同学</p>
<p>网上能找到不少有关RoR开发Facebook App的教程。比如一下这些，建议大家都看看：</p>
<p>http://www.liverail.net/articles/2007/6/29/tutorial-on-developing-a-facebook-platform-application-with-ruby-on-rails</p>
<p>http://giantrobots.thoughtbot.com/2007/6/14/fist-in-your-facebook</p>
<p>看过上面的教程相信大家有了更多认识；更相信大家有一个印象，就是这些教程太老了（没办法，谁让rails更新的这么快呢），通过这些教程理解要点还可以，跟着作是没什么希望的。反正我是看到rhtml的后缀就没法再忍受往下看了。网上爬了个遍也没看到有更新的教程。那就自己摸索这来吧。（待续）</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2008/07/28/develop-a-facebook-app-with-ruby-on-rails-1/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A textmate-like gedit in Ubuntu for Ruby and Rails IDE</title>
		<link>http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit</link>
		<comments>http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit#comments</comments>
		<pubDate>Thu, 17 Apr 2008 15:10:53 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[gedit]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit/</guid>
		<description><![CDATA[Pls follow the instructions from http://grigio.org/pimp_my_gedit_was_textmate_linux Add-on by Deep Blue (Linux newbie may need this if you are using Ubuntu): How to install liberation fonts on Ubuntu commands: &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- echo &#8220;deb http://ppa.launchpad.net/corenominal/ubuntu gutsy main&#8221; &#124; sudo tee -a /etc/apt/sources.list echo &#8220;deb-src http://ppa.launchpad.net/corenominal/ubuntu gutsy main&#8221; &#124; sudo tee -a /etc/apt/sources.list sudo apt-get update sudo apt-get install [...]]]></description>
			<content:encoded><![CDATA[<p>Pls follow the instructions from <a href="http://grigio.org/pimp_my_gedit_was_textmate_linux">http://grigio.org/pimp_my_gedit_was_textmate_linux</a></p>
<p>Add-on by Deep Blue (Linux newbie may need this if you are using Ubuntu):</p>
<p>How to install liberation fonts on Ubuntu</p>
<p>commands:<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
echo &#8220;deb http://ppa.launchpad.net/corenominal/ubuntu gutsy main&#8221; | sudo tee -a /etc/apt/sources.list<br />
echo &#8220;deb-src http://ppa.launchpad.net/corenominal/ubuntu gutsy main&#8221; | sudo tee -a /etc/apt/sources.list<br />
sudo apt-get update<br />
sudo apt-get install ttf-liberation<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>My customized Gedit screen snapshot:<br />
<a href="http://www.tzhang.com/gallery/main.php?g2_view=core.DownloadItem&#038;g2_itemId=495&#038;g2_GALLERYSID=TMP_SESSION_ID_DI_NOISSES_PMT" rel="lightbox" title="A textmate-like Gedit as Ruby and rails IDE" ><img src="http://www.tzhang.com/gallery/main.php?g2_view=core.DownloadItem&#038;g2_itemId=496&#038;g2_GALLERYSID=TMP_SESSION_ID_DI_NOISSES_PMT" width="150"  height="150"  alt="A textmate-like Gedit as Ruby and rails IDE" title="A textmate-like Gedit as Ruby and rails IDE" class="g2image_normal" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>x86 架构下Ruby/Rails开发环境比较及安装方法</title>
		<link>http://www.tzhang.com/blog/2008/04/11/ruby-and-rails-development-environment-comparison-and-setup-instructions-on-x86-platform</link>
		<comments>http://www.tzhang.com/blog/2008/04/11/ruby-and-rails-development-environment-comparison-and-setup-instructions-on-x86-platform#comments</comments>
		<pubDate>Fri, 11 Apr 2008 03:30:28 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[编程开发]]></category>
		<category><![CDATA[电脑网络]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[textmate]]></category>
		<category><![CDATA[x86]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/2008/04/11/ruby-and-rails-development-environment-comparison-and-setup-instructions-on-x86-platform/</guid>
		<description><![CDATA[x86 架构下Ruby/Rails开发环境比较及安装方法 [Ruby/Rails Development Environment comparison and setup instructions on x86 platform] Original posted on www.tzhang.com/blog/ Apr 11, 2008 Version 1.0 方案选择: 1. OSX + Textmate 2. Linux + Netbeans 3. Windows + e texteditor + cgywin 优缺点比较: 1. 缺点： a) OSX在非Mac机器上安装对显卡的要求很高，兼容性并不好。多系统启动支持也不好，需要用户有较高的操作系统知识和排错技能以及很出众的耐心和时间:( b) OSX安装在非Apple机器上理论上说是非法的；textmate也是收费软件且价格不菲 优点：想使用最优秀的ruby/rails 编辑器textmate的话，只能这么办哦 2. 缺点： a) NetBeans IDE比不上textmate;只能将就着用 优点： a) Linux下全部软件都是开源免费的，包括NetBeans b) [...]]]></description>
			<content:encoded><![CDATA[<p>x86 架构下Ruby/Rails开发环境比较及安装方法<br />
[Ruby/Rails Development Environment comparison and setup instructions on x86 platform]</p>
<p>Original posted on www.tzhang.com/blog/<br />
Apr 11, 2008<br />
Version 1.0</p>
<p>方案选择:<br />
1. OSX + Textmate<br />
2. Linux + Netbeans<br />
3. Windows + e texteditor + cgywin</p>
<p>优缺点比较:</p>
<p>1. 缺点：<br />
   a) OSX在非Mac机器上安装对显卡的要求很高，兼容性并不好。多系统启动支持也不好，需要用户有较高的操作系统知识和排错技能以及很出众的耐心和时间:(<br />
   b) OSX安装在非Apple机器上理论上说是非法的；textmate也是收费软件且价格不菲      </p>
<p>   优点：想使用最优秀的ruby/rails 编辑器textmate的话，只能这么办哦</p>
<p>2. 缺点：<br />
   a) NetBeans IDE比不上textmate;只能将就着用</p>
<p>   优点：<br />
   a) Linux下全部软件都是开源免费的，包括NetBeans<br />
   b) Linux下可以方便的安装使用众多Rails相关的开源软件及库</p>
<p>3. 缺点：<br />
   a) Windows环境在ruby/rails的世界里绝对算是少数派<br />
   b) e texteditor也是收费软件</p>
<p>   优点:<br />
   a) Windows简单易用，方便没有Linux/UNIX经验的人使用，setup过程简单<br />
   b) e texteditor 使用起来十分接近textmate</p>
<p>安装方法：<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;<br />
方案一<br />
OSX<br />
	N/A yet<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
方案二<br />
Linux + NetBeans + ruby 1.8.6 + rubygem 1.0.1 + rails 2.0.2 + mysql 5<br />
a) 安装Ubuntu Linux<br />
b) 安装Ruby (初学者在Ubuntu下推荐用apt-get安装1.8.5版本)<br />
sudo apt-get install ruby<br />
c) 安装RubyGem<br />
	Download RubyGem code<br />
		url: http://rubyforge.org/frs/?group_id=126<br />
	Untar<br />
		tar –xzvf rubygems-1.1.0.tgz<br />
	Setup<br />
		Sudo ruby setup.rb<br />
	验证安装<br />
		gem –v<br />
		which gem<br />
d) 安装rails<br />
	安装<br />
		sudo gem update &#8211;system<br />
		sudo gem install rails &#8211;y<br />
	验证安装<br />
		rails -v<br />
e) 安装Netbeans<br />
	下载安装文件：<br />
		url: http://dlc.sun.com.edgesuite.net/netbeans/6.0/final/<br />
    安装<br />
		把下载的Bin文件拖入终端即可<br />
	运行<br />
		/$installDir/bin/netbeans<br />
f) 安装MySQL<br />
	sudo apt-get install mysql-common mysql-clients<br />
g) 安装完成，记得在NetBeans里面更改默认的Ruby解释器<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-<br />
方案三<br />
Windows + e texteditor + cgywin + console2<br />
	a) 安装e texteditor<br />
		url: http://www.e-texteditor.com/download/e_beta_setup.exe<br />
		安装<br />
		注意安装途中可能报错，那是个别文件不符合windows命名规则的原因，不用管，ignore掉然后继续就好了，影响不大。<br />
	b) 安装cgywin<br />
		初次运行e texteditor就会提示安装cgywin,直接选automatic install就好了，e texteditor会自动下载cgywin<br />
	c) 安装console2<br />
		下载console2<br />
			url: http://sourceforge.net/projects/console/<br />
		解压即可<br />
		配置console和cgywin<br />
			选add tab, 在shell里面输入:<br />
			c:\cygwin\bin\bash &#8211;login –i<br />
			将该tab移到最上方，以后每次启动console2都会自动启动该shell<br />
	d) 安装RubyGem<br />
	Download RubyGem code<br />
		url: http://rubyforge.org/frs/?group_id=126<br />
	Untar<br />
		tar –xzvf rubygems-1.1.0.tgz<br />
	Setup<br />
		Sudo ruby setup.rb<br />
	验证安装<br />
		gem –v<br />
		which gem<br />
		如果出现错误，使用：<br />
			unset RUBYOPT</p>
<p>e) 安装rails<br />
	安装<br />
		sudo gem update &#8211;system<br />
		sudo gem install rails &#8211;include-dependencies<br />
	验证安装<br />
		rails -v</p>
<p>	f) 测试安装<br />
		rails blog<br />
		cd blog<br />
		e .<br />
	你将会看到e texteditor 自动启动并将当前目录的项目打开。</p>
<p>====================================================================<br />
updated 2008-04-16</p>
<p>Install sqlite3 and mongrel:</p>
<p>#before install Mongrel,<br />
apt-get  install build-essential #we need it to compile mongrel and Sqlite3</p>
<p>#intall Mongrel<br />
gem install mongrel –include-dependencies</p>
<p>#install Sqlite3<br />
apt-get install sqlite3 swig libsqlite3-ruby libsqlite3-dev<br />
gem install sqlite3-ruby #compile this need libsqlite.h</p>
<p>#install Lighttpd<br />
apt-get install lighttpd</p>
<p>===============================================<br />
UPDATED 2008-05-27:<br />
在Linux下有更好的IDE选择了，Gedit可以加几个插件和主题，就可以比较完美的模仿textmate了，具体请看这个帖子<br />
<a href="http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit">http://www.tzhang.com/blog/2008/04/17/textmate-like-gedit</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2008/04/11/ruby-and-rails-development-environment-comparison-and-setup-instructions-on-x86-platform/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu环境下Ruby, Rails, Waves的安装方法</title>
		<link>http://www.tzhang.com/blog/2008/03/20/how_to_setup_ruby_waves_rails_environment_on_ubuntu</link>
		<comments>http://www.tzhang.com/blog/2008/03/20/how_to_setup_ruby_waves_rails_environment_on_ubuntu#comments</comments>
		<pubDate>Thu, 20 Mar 2008 10:50:04 +0000</pubDate>
		<dc:creator>Deep Blue</dc:creator>
				<category><![CDATA[编程开发]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[waves]]></category>

		<guid isPermaLink="false">http://www.tzhang.com/blog/2008/03/20/how_to_setup_ruby_waves_rails_environment_on_ubuntu/</guid>
		<description><![CDATA[Reference: http://www.javaeye.com/topic/43228 Ubuntu环境下Ruby, rails, waves的安装方法： 1 ) Ruby 1.8.6 ruby的源代码可以从Ruby官方网站下载： http://www.ruby-lang.org/en/downloads/ ./configure –prefix=/usr/local/ruby make sudo make install export PATH=/usr/local/ruby/bin:$PATH 安装好以后，修改操作系统PATH路径，加入/usr/local/ruby/bin： export PATH=/usr/local/ruby/bin:$PATH 在Linux上，一般将设置放在/etc/profile中，便于对全局生效 sudo gedit /etc/profile add the following lines before umask 022 if [ -d /usr/local/ruby/bin ] ; then PATH=/usr/local/ruby/bin:&#8221;${PATH}&#8221; fi &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 2 ) Rubygems是ruby的在线包管理工具，可以从rubyforge下载rubygems： http://rubyforge.org/projects/rubygems/ sudo /usr/local/ruby/bin/ruby setup.rb 验证安装：gem -v which gem 3 [...]]]></description>
			<content:encoded><![CDATA[<p>Reference: http://www.javaeye.com/topic/43228</p>
<p>Ubuntu环境下Ruby, rails, waves的安装方法： </p>
<p> 1 ) Ruby 1.8.6<br />
      ruby的源代码可以从Ruby官方网站下载：</p>
<p>http://www.ruby-lang.org/en/downloads/</p>
<p>      ./configure –prefix=/usr/local/ruby</p>
<p>      make</p>
<p>      sudo make install</p>
<p>      export PATH=/usr/local/ruby/bin:$PATH</p>
<p>                安装好以后，修改操作系统PATH路径，加入/usr/local/ruby/bin：<br />
      export PATH=/usr/local/ruby/bin:$PATH</p>
<p>                在Linux上，一般将设置放在/etc/profile中，便于对全局生效<br />
                sudo gedit /etc/profile</p>
<p>      add the following lines before umask 022</p>
<p>if [ -d /usr/local/ruby/bin ] ; then<br />
    PATH=/usr/local/ruby/bin:&#8221;${PATH}&#8221;<br />
fi</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;</p>
<p> 2 ) Rubygems是ruby的在线包管理工具，可以从rubyforge下载rubygems：</p>
<p>http://rubyforge.org/projects/rubygems/</p>
<p>      sudo /usr/local/ruby/bin/ruby setup.rb</p>
<p>                验证安装：gem -v<br />
              which gem</p>
<p> 3 ) Install Rails<br />
      sudo gem install rails -y</p>
<p> 4 ) Install Waves<br />
      sudo install waves<br />
      注意在Ubuntu环境下虽然在/etc/profile里面有ruby的path, 但是sudo的话还是提示需要ruby 1.8.6以上环境。找乐很多地方都没有解决方法（好把我承认是linux菜鸟，可能大家都不屑于些出来把，最后启动的时候选recovery mode意外的发现可以以root id登入，一切ok啦）</p>
<p>     Problem: sudo will not provide the ruby path.<br />
     solution: use ubuntu recovery mode and you will have a real root user.</p>
<p> 5 )  Install mysql</p>
<p>     sudo apt-get install mysql-common mysql-clients</p>
]]></content:encoded>
			<wfw:commentRss>http://www.tzhang.com/blog/2008/03/20/how_to_setup_ruby_waves_rails_environment_on_ubuntu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

