本站首页    管理页面    写新日志    退出


«July 2025»
12345
6789101112
13141516171819
20212223242526
2728293031


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

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.

从零开始发明一个新的语法,并为之构造一个编译器或解释


阅读全文(2957) | 回复(0) | 编辑 | 精华 | 删除
 


[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


阅读全文(5894) | 回复(0) | 编辑 | 精华 | 删除
 


[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

阅读全文(1918) | 回复(0) | 编辑 | 精华 | 删除
 


[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对应

阅读全文(2478) | 回复(-1) | 编辑 | 精华 | 删除
 


[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

阅读全文(2767) | 回复(1) | 编辑 | 精华 | 删除
 


[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、物理内存

阅读全文(1623) | 回复(0) | 编辑 | 精华 | 删除
 


[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

阅读全文(2348) | 回复(0) | 编辑 | 精华 | 删除
 


[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

阅读全文(5019) | 回复(0) | 编辑 | 精华 | 删除
 


[Ruby on Rails]多态(polymorphism),覆盖(Override),重载(overload)
软件技术

lhwork 发表于 2007/1/20 14:06:11

多态(polymorphism)
覆盖
阅读全文(5410) | 回复(0) | 编辑 | 精华 | 删除
 


[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

阅读全文(1974) | 回复(0) | 编辑 | 精华 | 删除
 


« 1 2 3 4 5 6 7 8 9 10 »



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.664 second(s), page refreshed 144774999 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号