flonum 果然立功了... 不过这一技巧最早是 mozilla 发明的 ?
slide 50 页起 http://www.atdot.net/~ko1/activities/rubyconf2012_ko1_pub.pdf 演说 http://www.confreaks.com/videos/1272-rubyconf2012-implementation-details-of-ruby-2-0-vm
为什么我突然 de ja vu 的觉得虎炮以前吐槽过这个帖子...
开发模式?这么好看的图白画了
#4 楼 @as181920 这是 unicode character property group (翻译成字符属性组?) 的写法,很多正则引擎例如 Perl, .NET, ruby 都支持,详细列表文档里有 http://www.ruby-doc.org/core-1.9.3/Regexp.html#label-Character+Properties
还有个常用的用法就是匹配中文 \p{Han}
对文档补充说明一下:
Letter
是字母或者字符Mark
是字符上面或者侧面的小点类型的附加元素,如音调标记或者 ü
上的两点Symbol
是符号,如 +-*/
Punctuation
是标点符号,如 ,.
Separator
有 3 种:空格 Zs
换行符 Zl
分段符 Zp
Ruby 2.0 里新加了 Grapheme (这个词是学着音素 (Phoneme) 造出来的,可以看作"字素") 的匹配 \X
.gsub(/[\p{Punctuation}\p{Symbol}]/, '')
中文标点适用
大概是没有载入 rails.js, button_to 是生成了一个表单所以没 javascript 也可以,但 link 就需要 js 处理了,参见 https://github.com/rails/jquery-ujs/blob/master/src/rails.js#L184
貌似做法是没事就准备一个 jvm, drip 时把准备好的送出去,然后马上启动下一轮要用到的 jvm, 对执行间隔至少几秒的脚本效果明显,但对于在 shell prompt 中使用的脚本 (貌似就我有这种 corner case...) 没用... 另外貌似 jvm 的环境变量会滞后一轮 ?
这里 points 是个数组 point 有 x 和 y 方法,所以定义个类带这两个属性就可以了。例如
Point = Struct.new :x, :y
points = [Point.new(1, 2), Point.new(3, 4), Point.new(4, 5)]
没看明白,File.read
?
textmate 的 ruby 代码都是 1.8 的没更新过,rvm use system
再来吧
可以存文件系统或者分布式文件系统,然后加个字段存文件的路径 ? 有不少 gem 让你数据库表都不用设计的:https://www.ruby-toolbox.com/categories/rails_file_uploads
刚看了 xiki 的演示... 好像不错的样子
这个问题比较麻烦... 你要写一个递归的比较方法:
def compare a, b
case a
when Hash
return false unless b.is_a?(Hash) and b.size == a.size
a.sort.zip b.sort do |(ka, va), (kb, vb)|
return false unless compare(ka, kb) and compare(va, vb)
end
true
when Array
... # 类似 Hash
else
return false if b.is_a?(Hash) or b.is_a?(Array)
a.to_s == b.to_s
end
end
当然上面的代码还是有一点点问题,就是引用到父元素时会无限循环 (例如:
h = {}; h['a'] = h
), 所以还得把比较过的元素存起来验证是否已经比较过了...
土办法:把页面专用的 js 写成一个 partial ...
如果原数组可以改,判断 a.uniq!
返回值是否为 nil
就可以了
#42 楼 @jimrokliu +1 App 本来是缩写,但读成 A-P-P 反而没缩写的效果了...
我觉得发音最调皮的几组词是: analyze, analytics, analysis finite, inifinite
这个很简单,紧急度可以用悬赏 10 元,100 元,1000 元... 来标记
用 lambda:
more = -> {
v = 0
-> { v += 1 }
}
moe = more.()
moe.() # 1
moe[] # 2
moe.[] # 3
moe.call # 4
我用最简单的那种,大写都不用...
# coding: utf-8
不过第二种的好处是对 emacs 各种文件格式都通用...
因为 textmate 用的是 1.8 的 ruby 执行 command, 设置 auto-ruby 只影响 run command 里使用的 ruby ...
这个问题我也遇到过,ruby bundle 很久没更新过了。后来另外做了个 command, 不能用鼠标点但是可以查 1.9 的文档:
#! /usr/bin/env ruby
word = $stdin.read
if word =~ /\s/
word = ENV['TM_CURRENT_WORD']
end
exec "#{ENV['RVM_RUBY']} -S ri -f html #{word}"
其中的 RVM_RUBY 是你的 rvm 的 auto-ruby 的位置 (可能你的叫别的名字), 配置在 textmate 的环境变量中