存档

‘ruby/rails’ 分类的存档

Btk 0.1.0

2009年11月25日 没有评论

Btk 基于 Ruby GTK2 的扩展,大大方便ruby下的gui。
安装:gem install btk
主页:http://btk.rubyforge.org/

Hello World:

require 'rubygems'
require 'btk'

# w will call border_width= or set_border_width with parameter 10
Btk.Window :border_width=>10 do|w|

        #alias of signal_connect('delete_event')
        w.sig_delete_event do
                puts "delete event occurred"
                false
        end

        #alias of signal_connect('destroy')
        w.sig_destroy do
                puts "destroy event occurred"
                Gtk.main_quit
        end

        # Button will add to w automatically
        w.Button "Hello World" do|btn|
                btn.sig_clicked do
                        puts "Hello World"
                end
        end
        w.show_all
end
Gtk.main

 

分类: btk 标签:

从rails回到了php

2009年2月12日 2 条评论

从rails回来,重新用起了php,起因还是由于rails render一个63k的view要多花去10ms,这个view就一个erb fragment缓存,,即由原来每个响应20ms下降到30ms,降低了足足50%,很受伤,后然尝试使用merb,但merb不太习惯,正值ruby1.9.1,Rails2.3发页,又尝试ruby1.9.1,可惜很多gems都未能完善,fcgi,mongrel都无法工作,只能用回了1.8.7。最后无奈之下用回了php。用php重写了所有代码后,一模一样的操作那个63k的页面只需10ms。 

但rails给我的启发是巨大的,现在我的目录结构也仿rails, 如app,config,public,log,tmp等。我甚至写了个Rakefile用来管理文件的常用操作,使用了ruby的2个月。学到了不少。ruby我还会继续用他,作为我的刀,希望ruby越来越好,早一天让我从php又回到了ruby。

分类: php, ruby/rails, 编程 标签:

ruby稳定版已更新为1.9.1-p0

2009年2月10日 没有评论

今天发现stable version已从1.8.7升至为1.9.1-p0。一会测试一下兼容性和性能的提升。

相关链接
Ruby官方网站

–2009-02-10补充–
到正式可以用至少还要1个月,许许多多gems都还未能兼容1.9.1。部份版本已出了新版本,但都还在github中。
ruby的脚步太快, 追起来有点吃力,暂时驻足观望一阵。

分类: ruby/rails, 编程 标签:

ruby升到1.8.7,性能提升到我吐血。

2009年1月26日 没有评论

早听说debian/ubuntu的1.8.6是debug模式,比正常的慢50%,一直没在意,反正是测试服务器不缺这点时间。

前几篇日志提到的600个节点的树递归生成时间与render耗时太长,要近200ms,c++render虽然快但不实用,于是今重写了扩展对erb进行yield,但最终只能优化到70ms(3ms树生成+70ms render),最后发现即使什么都不作进行600次link_to操作也要花掉60-80ms。随抱着试试的心态升到了1.8.7
升级后发现目录也改成像freebsd的/usr/local/…的样子不太熟悉。然后安装gem又折腾了一阵。最后怀着激动的心情安装好一试,!只要20-40ms!又试了试其它页面,原本要花0-6ms的页面全都稳定得变为0-1ms。太爽了!!!

边守岁边测试,看到这满意的结果,能安心的睡个好觉了。

越来越中意ruby了

分类: ruby/rails, 编程 标签:

Rails 使用Haml代替Rhtml

2009年1月1日 没有评论
什么是Haml
Haml,一款简洁的的类似Rhtml的插件,可以极大的简少写xhtml等视图代码的量。

安装haml
安装gem
sudo gem install haml
安装haml plugin至rails
haml –rails [rails路径] 如 haml –rails . 则安装haml插件至当前目录

第一个haml

%h1 Chapters#index
%p
  == Time: #{Time.now}
  =h "a~!@\#$%^&*()+-"

输出

<h1>Chapters#index</h1>
<p>
  Time: Thu Jan 01 01:56:57 +0800 2009
  a~!@#$%^&amp;*()+-
</p>

比起笨重的Rhtml实在是简化不少。

性能
rhtml 158.72 reqs/s
haml 154.83 reqs/s
下降约 2.45%
单个文件请求时间绝对值增加 0.159ms
对性能的影响还是微乎其微的

相关链接
haml首页
Haml Tutorial
Haml Documentation

分类: ruby/rails, 编程 标签:

Fastcgi,Lighttpd比Nginx更好

2009年1月1日 没有评论

javaeyerobbin建议我使用lighttpd 我对服务器的实现机制不太了解,只要哪个稳定,支持高负荷,快则选哪个。试用了lighttpd后,的确发现在fastcgi方面比nginx做得更好。比如nginx 500并发测试rack,fastcgi会出现broken pipe错误。而lighttpd不会。虽说我相信可能是我配置不当,且可以通过nginx和linux一些设置来解决这问题,但没有理由不去选择直接可以正常运行而性能不分伯仲的lighttpd。nginx的配置服务器非常更方便,灵活。如果没有那个错误,我想我还是会继续走nginx之路 :p

分类: ruby/rails, 编程 标签:

对于这两天ruby开发网站性能测试总结

2008年12月31日 2 条评论

这只是个人测试,也是个ruby初学者的测试,如果因优化不周而造成重大误差还请各位能多多指教。

  1. Rails vs Rack vs Merb:
    Rails 性能比Merb差不少,但文档,插件丰富,加上Rack可以高速处理某些需求。又闻Merb要并入Rails,高速处理又有Metal,真是前景无限。
    Rack 一个字快,爽。
    Merb 看上去很美,只是发觉文档太少。不太试合初学者,比如我想让ActiveRecord支持Enum类型,Merb似乎需要自已操刀,而Rails可以拿来就用
    速度上 静态>Rack>Merb>Rails
    速度横向比较
    静态 Rack Merb Rails
    速度 3130 1192 305 180

    (单位:reqs/sec)

  2. Cache:

    page缓存很方便,而且直接生成html,很容易实现全站静化,只是如果每个文件id都放于同一目录下,很难想像几万文件挤在一个目录下。cache还有待学习。似乎fragment能解决这个问题。
    对于很简单的helloworld,action缓存不快反慢。reqs由180下降到150。

  3. 服务器:
    Fastcgi比mongrel快不少。mongrel更易使用。我现在是 development用mongrel,production用fastcgi
    Nginx和lighttpd差不多快,
    apache2的mod_rails性能记得也不错,具体数值忘了,apache2太大型,内存占得多,配置灵活性没Nginx好,且在性能上和Nginx与Lighttpd有不小差距,所以不再予考虑。
  4. 我个人最终取向:
    Nginx+Fastcgi+Rails+Rack 作为我的Rails平台。

2009-1-21补充:

  1. Fastcgi

    经过实践,发现在fastcgi上lighttpd略胜一筹,最佳的性能稳定Rails平台还是为公认的 Lighttpd+Fastcgi. 但不可否认nginx为非常优秀的服务器,特别是他的配置方式,我尤为中意。

  2. Cache

    提到的Fragment Cache与Page Cache为2个不同等级的cache,
    Page提供全文cache,在controller中以caches_page :actionName形式。
    Fragment为区域cache,在views中以 <% cache do %> xxx <%end%> 形式。
    关于Fragment Cache存储方式如文档中提到的

    #内存cache,也是默认的cache
    ActionController::Base.cache_store = :memory_store
    #以文件形式保存
    ActionController::Base.cache_store = :file_store, "/path/to/cache/directory"
    ActionController::Base.cache_store = :drb_store, "druby://localhost:9192"
    ActionController::Base.cache_store = :mem_cache_store, "localhost"
    ActionController::Base.cache_store = MyOwnStore.new("parameter") #重写自已的Store
    

    在environment可以添加语句 config.cache_store = xxx 进行设置

    网上很多文章因使用的rails版本已过时,仍以 fragment_cache_store= 作为教程存在,使人走了不少弯路。所以在rails升级或学习的过程中,阅读changelog是很有必要的。

    关于自定义Store网上教程似乎很少,但因其并不复杂,又因rails源码公开,大家可参考MemoryStore的源文件 memorystore_cache.rb
    如 class MyOwnStore < ActiveSupport::Cache::Store 并重写write,read等方法,则可以轻松制定Fragment的缓存方式。

    关于更多cache可以参考http://www.railsenvy.com/2007/2/28/rails-caching-tutorial 但注意该rails的版本也以过时,因为其log显示还是以Completed in 0.18700 (5 reqs/sec) | Rendering: 0.10900 (58%) | DB: 0.00000 (0%)形式。

分类: ruby/rails, 编程 标签:

Ruby Rack + Fcgi 那是相当的快啊!!!

2008年12月31日 没有评论
如下Rack代码

#!/usr/bin/ruby
require 'rubygems'
require 'rack'

class HelloRack
        def call(env)
                [200,{"Content-Type"=>"text/html"},["Hello Rack"]]
        end
end
Rack::Handler::FastCGI.run(HelloRack.new)

页面为最简单的输出“Hello Rack”
测试结果:
Requests per second: 1192.04 [#/sec] (mean)
太强悍了。
鄙人这台虚拟机nginx静态文件也不过
Requests per second: 3130.42 [#/sec] (mean)
速度横向比较

静态 Rack Merb Rails
速度 3130 1192 305 180

(单位:reqs/sec)
以后小任务就交给你啦Rack。
Rails不久会有Metal,也是基于Rack,听说很快,让我们拭目以待。

分类: ruby/rails, 编程 标签:

merb自已附带了一个.gitignore

2008年12月30日 没有评论

人都是比较懒的,我就因为.gitignore的存在,merb用git而不是svn版本控制了。而且git在ruby中很流行,看来凡是学ruby的人都会慢慢git化。

分类: ruby/rails, 编程 标签:

测试下来Merb比Rails快80%

2008年12月30日 没有评论
同样是最简单的Hello World程序
昨日测Rails约为180左右
而Merb达到了305req/s
比Rails快60-70%。
非常不错。
分类: ruby/rails, 编程 标签: