最近也在学习 rust, 赞楼主!
还在招聘中,顶一下!
自已用 imagemagick 实现一个也没几行代码吧,下面是我之前写的,你试下在 jruby 下能不能用 注意参数-font 字体路径,改成你自已的,另外需要 subexec 这个 gem(如果你已经用了 mini_magick,就已经有这个 gem 了)
class Captcha
def self.create(code)
command = <<-CODE
convert -size 100x28 -fill black -background white \
-draw 'stroke black line #{rand(20)},#{rand(28)} #{rand(30)+50},#{rand(28)}' \
-draw 'stroke black line #{rand(50)},#{rand(28)} #{rand(100)},#{rand(28)}' \
-wave #{2+rand(2)}x#{50+rand(20)} \
-font '#{Rails.root}/public/fonts/segoepr.ttf' \
-gravity Center -sketch 3x1+#{rand(180)} -pointsize 22 -implode 0.2 label:#{code} png:-
CODE
sub = Subexec.run(command)
sub.output
end
end
class CaptchasController < ApplicationController
def show
headers['Cache-Control'] = 'no-cache, no-store, max-age=0, must-revalidate'
headers['Pragma'] = 'no-cache'
headers['Content-Type'] = 'image/png'
session[:captcha] = random_text
render text: Captcha.create(session[:captcha])
end
end
可以用 https 提交?
#60 楼 @neutralevil 噢,多谢,我用的是Ubuntu, 看了下貌似没有什么替代品,我也交换了 caps_lock 和 control, 这样按左 control 毫无压力,但是想按右 control 的时候好纠结
#41 楼 @neutralevil 怎么绑定的?
#6 楼 @u1378130755 那个 method 是 Object 的方法, http://ruby-doc.org/core-2.0.0
以下内容纯属臆测
首先,你可以想像有一张表在维护着 方法名 和 方法体 的映射。
方法名是方法体的名字 (废话), 比如 hello, ori_hello 就是方法名。 方法体是计算机内部对象,我们估且称呼不同的方法体为方法体1,方法体2吧
方法名 belongs_to 方法体 方法体 has_many 方法名
就你以上的例子:
def hello
后,映射表是这样的
hello --> 方法体 1
alias ori_hello hello
后,映射表是这样的
hello --> 方法体1
ori_hello --> 方法体1
再def hello
后 映射表是这样子的
hello --> 方法体2
ori_hello --> 方法体1
所以, 问题 1.1: 旧的 hello(即方法体1) 依旧存在,只不过现在它只有一个方法名叫 ori_hello。 问题 1.2: 实际上我们是可以在代码中获取到方法体的,所以不用 ori_hello,也是可以调用旧 hello 的
def hello
puts 'hello world'
end
method_body = method :hello
def hello
puts 'hello china'
end
hello // ==> hello china
method_body.call //==> hello world
问题 2.1: 新的 hello(即方法体2) 跟旧的 hello(即方法体1)没有一毛钱关系。只不过是 凑巧 在方法体2中调用了方法体1而已。 问题2.2: There is no such thing as metaprogramming. It's just programming all the way through.
类变量不属于某一个特定的类,而是属于整个继承链,所以不存在父类的类变量覆盖了子类的类变量这一说法,因为他们根本就是同一个变量,请参见元编程 129 页。
忘了 java 吧