Blog信息 |
blog名称: 日志总数:1304 评论数量:2242 留言数量:5 访问次数:7574347 建立时间:2006年5月29日 |

| |
[Ruby on Rails]用ruby创建领域特定语言(DSL)——转载 软件技术
lhwork 发表于 2007/2/7 8:50:28 |
转自http://uncutstone.blogdriver.com/uncutstone/1196082.html
简介:一篇介绍ruby DSL的很好的入门文章
by Jim Freeze 英文原文见:http://www.artima.com/rubycs/articles/ruby_as_dsl.html
摘要:总的说来,有两种创建 DSL 的方法。 一种方法是从零开始发明一个新的语法,并为之构造一个编译器或解释器。另一种方法是裁剪一个现存的通用目的语言, 增加或修改方法(methods), 操作符(operators),以及缺省的行为。本文讲述使用第二种方法来在 Ruby 之上创建 DSL.
一个 DSL, 是一个针对相对窄的应用范围设计的编程或描述语言。相对于通用目的语言, 它被设计来处理特定的计算任务, DSL 仅适用于特定领域。 你可以用两种方式创建一个 DSL.
从零开始发明一个新的语法,并为之构造一个编译器或解释 |
|
[Ruby on Rails]使用ruby解析json 软件技术
lhwork 发表于 2007/2/7 8:50:03 |
rails1.1已经加入对json的全面支持,现在的Array,Hash,String,Object...等等都有一个to_json方法,生成json字符串。反过来,我们该如何解析json呢?查了下http://www.json.org/上面ruby语言的链接,在rubyforge上找到了一个项目。解析json对ruby来说非常简单,只要一行代码:
def unsafe_json(json) eval(json.gsub(/(["'])s*:s*(['"0-9tfn[{])/){"#{$1}=>#{$2}"}) end
例子: json = '["a", "B", "C"]' puts "Unsafe #{unsafe_json(json).inspect}" #输出Unsafe ["a", "B", "C"]
把上面的json字符串解析成Array。这样的方法并不安全,比如: json = 'puts "Danger Will Robinso |
|
[Ruby on Rails]ruby实现抽象类和抽象方法 软件技术
lhwork 发表于 2007/2/7 8:49:20 |
ruby语言本身并没有提供abstract class和abstract method机制。这是ruby的spirit所决定的。但如果我们真的需要定义一个公共抽象类(或者抽象方法)来让子类来实现,又该如何做呢? 我们可以通过在调用方法时抛出NotImplementedError来防止方法被调用。如(来自《ruby cookbook》的例子):
class Shape2D def area raise NotImplementedError.new("#{self.class.name}#area是抽象方法") end end class Square < Shape2D def initialize(length) @length = length end &nb |
|
[Ruby on Rails]使用ruby备份你的blog 软件技术
lhwork 发表于 2007/2/7 8:48:04 |
虽然sohu不大可能倒闭,但是我也想导出我所有的文章,备份在自己的数据库中。javaeye的blog系统提供了一个blog导入导出的功能,用起来很酷。其实你自己用ruby写一下也很简单,比如我要读取我的blog的RSS源:
require 'rss/2.0' require 'open-uri' url = 'http://dennnis-zane.blog.sohu.com/rss' feed = RSS::Parser.parse(open(url).read, false) puts "=== blog名称: #{feed.channel.title} ===" feed.items.each do |item| puts item.title puts " (#{item.link})" puts puts item.description end
feed.items对应 |
|
[Ruby on Rails]利用google在线翻译制作自己的翻译程序之ruby版 软件技术
lhwork 发表于 2007/2/7 8:46:47 |
刚学ruby时写的工具,我自己一直在用,放在桌面上,遇到不懂单词就得问它。发在railscn上,ranchgirl修改的更为ruby way。
受blogjava上的帖子启发,实在是个有趣的主意,写了个ruby版本的,对俺这等英语一般的同学来说,google在线翻译经常使用呐,原贴之java版 http://www.blogjava.net/ekinglong/archive/2006/11/12/80704.html?Pending=true#Post
| |
[Ruby on Rails]ruby on rails应用性能优化之道(转) 软件技术
lhwork 发表于 2007/2/7 8:45:58 |
javaeye站长的经验之谈:http://www.javaeye.com/topic/51595
这是一篇我们运营JavaEye网站将近半年时间所得到经验的总结。目前在整个rails社区,都极少有运营rails大访问量网站经验的人详细的谈这个话题。至于国内,rails应用都停留在学习和尝试阶段,真正投入商业运营的基本找不到,所以谈这个话题为时太早,颇有对牛弹琴的感觉。所以权当是个人的总结性文章吧,也不会很详细的展开谈论,能对大家有所启发就好。
一、硬件
1、CPU ruby解析器相对于JVM,PHP解析器来说,比较低效,可能会导致比较多的context switch,因此提高CPU和内存之间的总线带宽和传输速度会对ruby应用有比较大的性能提升。在目前主流的x86_64 CPU当中,AMD Opteron在CPU芯片内置内存控制器,可以有效提高CPU和内存数据交换速度,提高context switch能力。所以用AMD Opteron比Intel Xeon EM64T性能要好很多。
2、物理内存
|
|
[Ruby on Rails]ROR学习琐记 软件技术
lhwork 发表于 2007/2/7 8:44:16 |
下载了N久的<Agile web development with rails>英文版,今天开始看,记录下一些看的过程值的记录的东西...俺记忆力一般
1.几个命令:
A.创建一个应用 rails 应用名称,如rails demo
B.启动服务器,在应用目录下:ruby script/server
C.创建controller: ruby script/generate controller hello
2.几个函数:
在rhtml页面模板中使用的函数:
h()函数:告诉ROR对字符串不进行任何处理,显示特殊字符,如h(killme6115@sina.com)
link_to()函数: &nb |
|
[Ruby on Rails]Ruby On Rails使用MySQL汉字不出现乱码的设置方法 软件技术
lhwork 发表于 2007/1/20 14:27:20 |
环境: Ruby 1.8.5 MySQL 5.0 Windows
XP
MySQL设置: 将MySQL的Character设置成为utf8(或GBK或GB2312,只要和ROR里的Character设置统一就行)。 修改方法有3种: 1、用MySQL
Server Instance Config
Wizard设置character-set为utf8 2、修改MySQL的配置文件,改其中的两处default-character-set=utf8(推荐,改完后重启MySQL生效) 3、在建表时指定表的character-set为utf8
Ruby
On Rails设置: 修改application.rb告知MySql使用UTF8
class ApplicationController <
ActionController::Base before_filter :configure_charsets &nb |
|
[Ruby on Rails]在Ruby中利用SMTP和POP3收发邮件 软件技术
lhwork 发表于 2007/1/20 14:04:23 |
如果你想找一个简单文雅的方法来编写网络应用程序,那么你应该看看Ruby(关于Ruby的简介可以看看“A Ruby
Refresher”)。Ruby简单(像Python),完全的面向对象(Smalltalk),强大(像Perl)。另外,Ruby的一个显著的特点
是适合编写网络应用程序。使用Ruby提供的库函数和内建的网络支持,你能轻松的编写网络应用程序(比如email客户端,SOAP服务器,分布式处理
等),并且维护和扩展也很容易。我们来看看Ruby,学习一下Ruby fans已经知道的东西: Ruby really connects. 1。通过SMTP发送Email每星期Holden Glova, Pat Eyler, 和 Phil Thomson都会向Ruby Garden 网站(http://www.rubygarden.org)
提交一个Ruby Weekly News
(RWN |
|
|