Ruby
iteye_14216
这个作者很懒,什么都没留下…
展开
-
ruby下载文件的问题
我使用open-uri来下载文件:[code="ruby"]require 'open-uri'url = "http://www.union-ms.com/wenj/2005628171127.mp3"open(url) do |fin| size = fin.size download_size = 0 puts "size: #{size}" fi...2008-04-14 19:01:03 · 860 阅读 · 1 评论 -
Ruby复合函数
复合函数的意思就是:有函数:f(x)=x + 1;g(x)=x * x则g(f(x)) = (x + 1) * (x + 1)我们给Ruby的打开Proc类:[code="ruby"]class Proc def self.compose(f, g) lambda { |*args| f[g[*args]] } end def *(g) ...原创 2010-12-29 00:14:17 · 114 阅读 · 0 评论 -
Returning
我们经常做的事情是创建一个对象,操作这个对象,然后返回这个对象:[code="ruby"]def build_options options = Hash.new options[:key1] = 'value1' options[:key2] = 'value2' options end[/code]Rails提供了returning,使用ruby最常...原创 2010-12-31 20:34:26 · 423 阅读 · 0 评论 -
生成长度为n的随机字符串
包含数字和小写字母的随机串[code="ruby"]def gen_random_str(len) rand(36 ** n).to_s(36)endgen_random_str(6) #bv0oan[/code]包含数字和大小写字母的随机串[code="ruby"]def gen_rand_str(len) rand_indxes = (0...l...2010-12-31 20:50:04 · 738 阅读 · 0 评论 -
从hash快速生成URL参数
[code="ruby"]key_values = { :key1 => "value1", :key2 => "value2"}key_values.map{|entry| entry * '='} * '&' #key1=value1&key2=value2[/code]原创 2010-12-31 21:03:54 · 714 阅读 · 0 评论 -
函数对象作为case语句中的条件
Ruby 1.9的Proc#===作为call的一个别名,所以函数对象可以作为case语句中的条件[code="ruby"]def multiple_of(factor) lambda{|num| num % factor == 0}end#or#def multiple_of(factor)# proc{|num| num % factor == 0}...原创 2010-12-31 22:28:26 · 126 阅读 · 0 评论 -
One line Ruby code
经常使用perl来代替一行的sed awk,主要是想使用perl更强大的正则:[code="shell"]echo "Hello 123 world" | perl -ne 's/\s+\d+\s+/,/g;print'[/code]ruby也提供了和perl一样强大的一行代码功能:[quote]$ruby --help -a autospl...2010-12-31 23:03:24 · 124 阅读 · 0 评论 -
Lazy evaluation in Ruby
1.使用||延迟初始化[code="ruby"]def fib(n) @result ||= [] return n if (0..1).include? n @result[n] ||= fib(n-1) + fib(n-1)end[/code]2.使用无穷大InifinityRuby可以使用无穷大:[code="ruby"]i...原创 2011-01-01 21:49:37 · 113 阅读 · 0 评论 -
Ruby Proc curry化
Ruby 1.9 Proc增加了curry方法,可以将Proc进行curry化:[code="ruby"]greeting_func = lambda { |name,greeting| puts "#{greeting} #{name}" }.curryhappy_greeting = greeting_func["Happy"]happy_greeting["New year"...原创 2011-01-01 23:11:22 · 123 阅读 · 0 评论 -
Ruby Coroutine
Ruby1.9提供了Fiber,提供了Coroutine的功能。 Fibers作为实现轻量级合作并发的基础设施,和线程很像,提供了创建一个可以pause和resume的代码块,但Fibers是非抢占式的,必须由程序而不是VM来调度。每一个fiber提供了4kB的栈空间可以允许fiber的block进行深层嵌套函数调用。这是rdoc对Fiber的描述。 Ruby的Fi...原创 2011-01-02 15:51:36 · 176 阅读 · 0 评论 -
Ruby Enumerators
一个enumerator是一个用来枚举其他对象的Enumerable对象。在Ruby1.8,需要require 'enumerator',在Ruby1.9已经内建,不需要再require,并且进行了增强。Enumerators是类Enumerable::Enumerator,所以你可以直接new出来实例,但是通常使用to_enum或者使用enum_for(Object的方法)。如果没有参数,t...2011-01-02 21:13:56 · 165 阅读 · 0 评论 -
Ruby 1.9 regex (named capture group)
Ruby 1.9正则增加了支持命名组,这样使得正则具有更好的可读行,你可以定义每一部分的正则,然后命名成组,并且在后面加上{0},表明不获取匹配内容,然后在使用\g引用对用的组,组成大的正则,并且加上/x修饰。这样比较复杂的正则,会有更好的可读性。[code="ruby"]users = %w{ alice:10.23.52.112:true bob:192.1...原创 2011-01-08 22:57:56 · 134 阅读 · 0 评论 -
Ruby1.9 lambda操作符
Ruby1.9提供了lambda操作符,使得lambda表达式更像匿名函数。lambda表达式更像method,而block更像Proc,主要表现在:local return,break以及参数传递规则。lambda更像method,所以支持默认参数:1.8的lambda表达式:[code="ruby"]succ = lambda{|x| x+1}[/code]1.9使用l...原创 2011-01-09 13:35:31 · 260 阅读 · 0 评论 -
写段代码看看别人都怎么称呼你网站的?
步骤很简单:1)使用google的搜索inlink的语法link:url和num参数指定一页显示的结果数,在这个结果中找到外链的页面url,排除网站内链接。[code="ruby"]def search_inlinks_from_google(query,result_num) escaped_query = CGI.escape("link:#{query}")...2011-01-23 20:49:34 · 234 阅读 · 0 评论 -
写个简单的汉语bigram tokenizer
写个简单的汉语bigram tokenizer,基本能够满足文本挖掘的原型实验的需要。[code="ruby"]def bigram_tokenize(text) tokens = [] 0.upto(text.length-1) do |i| tokens ...原创 2011-01-23 23:29:01 · 403 阅读 · 0 评论 -
命令行词典
经常要查单词,所以利用qq dict api写了一个命令行词典工具:[code="ruby"]#!/usr/bin/env rubyrequire 'rubygems'require 'net/http'require 'json'def trans(q) url = "http://dict.qq.com/dict?q=#{URI.encode(q)}"...2011-09-27 14:50:01 · 225 阅读 · 0 评论 -
Ruby HTTP/HTML parser相关资源
Net::HTTP: [url]http://ruby-doc.org/stdlib/libdoc/net/http/rdoc/classes/Net/HTTP.html[/url]Nokogiri: [url]http://nokogiri.org[/url]Mechanize: [url]http://mechanize.rubyforge.org/[/url]...原创 2011-09-28 12:04:57 · 195 阅读 · 0 评论 -
松本行弘的程序世界
全书涉及到程序设计的方方面面,买这边书的目的希望能看到看看Ruby设计抉择和最基本的原则。作者在这本书上阐述了Ruby最基本的设计原则::简洁,扩展,稳定。对设计block,而不是直接使用闭包,以及为什么是Mixin而不是多重继承(当然Minix是多重继承的一种实现而已)做了比较精彩的解释。另外对面向对象中的实现模式,比如Io语言的原型模式和基于类为模板的实现模式做了比较清晰的介绍。基于类模板的方...原创 2011-10-02 16:49:15 · 127 阅读 · 0 评论 -
Ruby String#unpack
从一个例子开始:如何将一个字符串转化成一个十六进制的串。一种方法是使用字符串的each_byte来做:res = []"abc".each_byte {|i| res << i}res.map {|i| i.to_s(16)}写了三行才实现出来这个功能,非常不爽。我们看看unpack的强大功能吧:"abc".unpack('H*')一行代码搞定。 unp...2010-06-01 00:58:15 · 297 阅读 · 0 评论 -
Ruby Metaprogramming的一次公司分享活动
主要介绍了Ruby Metaprogramming的机制和方法。主要包括:IntrospectionDynamic dispatch/Dynamic methodGhost MethodRuby Alias and AOPObject/Class ExtensionEval/Class Eval/Instance Eval/Module EvalRuby Object ...2010-12-12 12:11:41 · 105 阅读 · 0 评论 -
Ruby class变量 VS class实例变量 VS实例变量
[code="ruby"]#!/usr/bin/rubyclass A @@a = "a" # a class variable @b = "a" #a class instance variable attr_accessor :c def initialize(c) @c = c # an instance ...原创 2010-11-28 23:20:44 · 88 阅读 · 0 评论 -
用ruby写了一个搜索下载歌曲的工具
[url=http://fuliang.iteye.com/blog/176323]前几天用java写了一个GUI的搜索下载工具[/url],主要利用baidu mp3搜索的结果。[url=http://hi.baidu.com/david_jlu/blog/item/d76622a1f1a6878f46106446.html]david同学用perl写了命令行的类似的下载工具[/url],为了练...2008-04-15 12:56:50 · 123 阅读 · 0 评论 -
动态语言很好,很强大!
前几天看了徐老师写的[url=http://hi.baidu.com/xuqingyang/blog/item/665b9601b70b7e031d9583a8.html]谈谈学习动态脚本语言对搞web mining研究的必要性[/url],想起上次英语课话剧,使用ruby一行代码完成任务的事,深刻体会到动态语言的简洁强大之处,对处理文本的方便之处。开始剧本中是为了更好的理解剧情,中英文混在一起的...2008-04-21 21:16:22 · 222 阅读 · 0 评论 -
Ruby的魔法 学习笔记二 meta-programming
meta-programming1、Create a object on the fly.[code="ruby"]Person = Class.newp1 = Person.newputs p1.class #Person[/code]我们已经凭空创建了一个类Person,现在我们想添加点方法:好的我们打开这个类:[code="ruby"]class ...2009-02-24 00:26:35 · 165 阅读 · 0 评论 -
Ruby self在不同环境的含义
Ruby的self在不同的环境中有不同的含义,这点和java的this不同,原因是java实际上只有一种环境--在class的实例方法定义中使用,代表访问这个方法参数自动传进的那个对象。而由于ruby作为一个完全纯净的面向对象语言,任何东东都是对象,方法是对象,类也是对象...,所以self就会有很多环境,区分不同环境的self含义才能更好的理解程序的含义一、Top Level Context...2008-11-21 10:36:09 · 122 阅读 · 0 评论 -
Ruby的魔法 学习笔记之一
Ruby的许多动态特性,让Ruby具有很多魔法,这个魔法足以让你来定制你自己的语言DSL,Rails就是Ruby在Web的DSL.一、向对象显示的发送消息我们可以向对象直接发送消息:[code="ruby"]class HelloWorld def say(name) print "Hello, ", name endendhw = HelloWorl...2008-11-21 11:21:50 · 152 阅读 · 0 评论 -
小脚本搞定CVS服务器更换后checkout下来的工程迁移
CVS换了新的服务器,原来的工程需要更改Server配置,这个东东手工做起来可是个体力活,写了一个脚本分发下来。[code="ruby"]def changeCVS(path) Dir.foreach(path) do |dir| if dir != "." && dir != ".." absdir = path + "/" + dir if (Fil...2008-11-28 13:14:31 · 118 阅读 · 0 评论 -
Install mysql ruby gem
env: ubuntu首先需要安装 mysql dev librarysudo apt-get install libmysqlclient15-dev 不然直接sudo gem install mysql会报错:l-config=/usr/local/mysql/bin/mysql_configBuilding native extensions. This could t...原创 2010-03-01 13:51:57 · 97 阅读 · 0 评论 -
Ruby Date Range
Ruby的Range功能强大无比,我们可以简单的使用:[code="ruby"](1..10).each{|i| puts i}[/code]打印出:12...10对于字符串我们也可以:[code="ruby"]("hello" .. "world").each{|word| puts word}[/code]更加强大的是对于日期,ruby同样支...原创 2010-10-09 21:45:01 · 119 阅读 · 0 评论 -
写个小脚本统计一下最近写的代码行数
[code="ruby"]class CodeLineStat attr_reader :code_lines def initialize @code_lines = 0 end def stat(path) Dir.foreach(path) do |file| if file != "." && file != ".." then ...2010-03-27 00:08:05 · 118 阅读 · 0 评论 -
轻松删除所有安装的gem
删除安装所有的gem:[code]gem list | cut -d" " -f1 | xargs gem uninstall -aIx[/code]原创 2011-06-13 12:28:27 · 931 阅读 · 0 评论 -
构建自己的DSL之一 Simple Crawler
转载请标明出处:http://fuliang.iteye.com/blog/1122008经常需要从网上抓取一些需要的内容做成语料,供分类使用。所以需要一个灵活的抓取、抽取程序-自己的DSL来做这件事,这样每次只需要写几行代码就能得到需要的内容。比如我比较希望以下几行代码就能把我的博客的内容给抓下来:[code="ruby"]crawler = Crawler.new1.u...2011-07-11 22:08:56 · 351 阅读 · 0 评论 -
构建自己的DSL之二 抓取文本处理
转载请标明出处:http://fuliang.iteye.com/blog/1122051公司的蜘蛛抓取的内容一个记录是以TAB分割的各个字段的值,并且随着各种分类得分、正文静态得分策略的添加,版本不断的演变。每次做抽样、分析、分类语料等文本处理都需要写一些样板式的代码,并且得到wiki查找指定版本每个字段的位置。构建一个好的DSL来自动处理这件事情能够省去很多重复的操作,只需要关注要处理...2011-07-11 23:18:14 · 197 阅读 · 0 评论 -
ruby用一行代码实现linux命令
一、linux的grep:[code="ruby"]ruby -ne 'puts $_ if $_ =~ /foo/' /usr/share/dic/words[/code]-n 选项相当于在-e指定的代码外边包上一层 while gets ... end$_表示当前行在多个文件搜索:[code="ruby"]ruby -ne 'puts $_ if $_ =~ /...2009-09-30 21:56:40 · 152 阅读 · 0 评论 -
构建自己的DSL之三 抓取文件管理
转载请标明出处:http://fuliang.iteye.com/blog/1127437我们抓取的网页抽取的结果是带有日期的文件,经常需要操作某个日期范围的文件,来进行统计,抽样,入库,所有需要一个方便的DSL来处理这件事情。我们希望制定几个条件就可以得到符合条件的文件,比如:[code="ruby"]data_set = CrawlerDataSet.with_cond d...原创 2011-07-18 23:26:21 · 202 阅读 · 0 评论 -
使用ruby nokogiri抓点东西弄成分类语料
使用ruby nokogiri从搜狐旅游新闻频道抓点东东做成分类的训练预料:[code="ruby"]#!/usr/bin/ruby## Author: fuliang http://fuliang.iteye.com #require 'open-uri'require 'nokogiri'link_xpath = "/html/body/div/div[...2010-10-29 21:59:29 · 97 阅读 · 0 评论 -
Yet another Ruby Memoization
night_stalker: [url]http://www.iteye.com/topic/406220[/url]Hooopo: [url]http://www.iteye.com/topic/810957[/url]两位大仙都讨论过Ruby Memoization首先说一下什么是Memoization:举个例子,fib数列:[code="ruby"]def fib(n...原创 2010-11-28 20:11:50 · 116 阅读 · 0 评论 -
Ruby extend self
我们想让实例方法同时为类方法,那么可以使用extend self,这个对于普通的类可能没有什么用。但是对于module来说还是很有用的,因为module不可以实例化,module的实例方法通过自身就无法单元测试,所以通过extend self可以作为类方法暴露来测试了:[code="ruby"]module M extend self def greeting ...原创 2010-11-28 22:40:50 · 158 阅读 · 0 评论 -
Ruby发送json请求
[code="ruby"]require 'net/http'require 'uri'require 'json'customers = [{ "id" => 1123, "name" => "B-abc", "citys" => "", "company" => "&qu原创 2011-05-05 18:37:50 · 663 阅读 · 1 评论