首页 » Ruby

Ruby C++ 扩展

早年写过用C++ + SWIG写Ruby插件的文,但实际中还是以原生C++写Ruby扩展,因为也相当简单。但长久没用还是会忘记,不得不翻以前的老代码回忆,写下这篇博文,若下次再忘记,也不至于去翻仓库。
建立 extconf.rb
require 'mkmf'
$libs = '-lstdc++'
create_makefile 'foo'
建立 foo.cc
#include <ruby.h>
VALUE plus(VA...

Ruby下使用SWIG封装libcurl

本文通过在ruby下使用SWIG封装libcurl来简要描述如何通过SWIG来扩展ruby。
关于SWIG的入门使用可参见 使用SWIG扩展ruby性能
一、关于SWIG
SWIG全称为 Simplified Wrapper and Interface Generator,通过swig可以方便快捷的使用c/c++扩展php, ruby等语言以提高性能或满足其它用途。
二、关于libcurl
libcurl是一个著名的http/ftp库,通过libcurl可能轻松通过http/ftp协议访问网络。
三、流程...

Ruby的预定义变量

一、异常
名称
描述
相当于
$!
捕获的异常
Exception
$@
异常的backtrace
Exception#backtrace
例:
begin
raise "err msg"
rescue
p $! # #&lt;RuntimeError: err msg&gt;
p $@ #["(irb):2:in `irb_binding'", "/usr/local/lib/ruby/1.8/irb/...

如何编写RubyGems

目标:通过本文章学习并编写一个gem ‘hello’
一、认识RubyGems
1、什么是RubyGems
RubyGems是ruby下的包管理系统。最著名gem的当属Rails
2、gem的基本文件布局
文件名
类别
描述
gemspec
文件
gem的规范说明。
lib
文件夹
用于lib文件的存放
bin
文件夹
可执行文件
ext
文件夹
c/c++源文件
tests
文件夹
单元测试文件
3、gemspec文件规范常用项
名称...

从rails回到了php

从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的页面只需...

ruby稳定版已更新为1.9.1-p0

今天发现stable version已从1.8.7升至为1.9.1-p0。一会测试一下兼容性和性能的提升。
相关链接
Ruby官方网站
–2009-02-10补充–
到正式可以用至少还要1个月,许许多多gems都还未能兼容1.9.1。部份版本已出了新版本,但都还在github中。
ruby的脚步太快, 追起来有点吃力,暂时驻足观望一阵。...

用c++写ruby模块提升性能效果显著

对于生成600项item的树型目录。
纯ruby代码大约200ms
包括rails初始化(0-6ms),mysql查询(0-2ms),树型生成(20-30ms),递归render,其它。
经过c++重写后,全部只需10ms。实在太爽啦。
如果那递归render都用c++代替,那感觉是用C++写网页,而不是用ruby写网页,利用不到rails提供的很多特性。但递归render 600项实在耗时,鱼和熊掌不能兼得,得另想法子。...

Rails 使用Haml代替Rhtml

什么是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~!@\#$%^&*()+-"
...

Fastcgi,Lighttpd比Nginx更好

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

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

这只是个人测试,也是个ruby初学者的测试,如果因优化不周而造成重大误差还请各位能多多指教。
Rails vs Rack vs Merb:
Rails 性能比Merb差不少,但文档,插件丰富,加上Rack可以高速处理某些需求。又闻Merb要并入Rails,高速处理又有Metal,真是前景无限。
Rack 一个字快,爽。
Merb 看上去很美,只是发觉文档太少。不太试合初学者,比如我想让ActiveRecord支持Enum类型,Merb似乎需要自已操刀,而Rails可以拿来就用
速度上 静态>Rack>Me...