#3 楼 @liwen_zhang 就在回调逻辑里加限制吧,回调中加入用户的 access_token 之类的,限制用户上传次数。
求推荐高质量的 scala 社区
在学 scala,觉得模式匹配和 for-comprehension 都很好用,错误处理和 Future 也是很优雅的。 看了这篇,又学到了动态调用 补充一条打开类: Scala:
//通过隐式转换打开已有类,进行扩展
implicit class IntFun(i: Int) {
def fun() = println("have fun")
}
> 2.fun()
> have fun
Ruby:
class Integer
def fun
puts "have fun"
end
end
> 1.fun
#1 楼 @yukihiro_matz 嗯,一提到并发就用别的语言去了~ 不过了解一下 Fiber 对理解 actor 模式的实现也是挺有帮助的http://www.blogjava.net/killme2008/archive/2010/04/13/318182.html 不论用什么语言,总是存在共性的。
a[0]=1,2,3,4,5
中的=
号赋值其实是更改了a[0]
的引用,所以不会影响原来的引用。
又看了一下文档,像楼主这样声明是有问题的:
Note that the second argument populates the array with references to the same object. Therefore, it is only recommended in cases when you need to instantiate arrays with natively immutable objects such as Symbols, numbers, true or false.
To create an array with separate objects a block can be passed instead. This method is safe to use with mutable objects such as hashes, strings or other arrays:
因此
a = Array.new(6) { [] }
才是楼主需要的
#4 楼 @Seabornlee 这是王垠的一篇文章,忘了说明出处,造成误解,抱歉。
楼主的例子中,定义方法是为了封装@current_user,不要暴露实例变量
首页配图很棒。 建议弄个 demo 展示
嗯,就是这么做吧。 就相当于 cookie 一样。
拉勾
嗯,在用 leancloud,对于 iOS 的开发者很方便。 想做一个 ruby 的 sdk,开了个头,有意的可以一起完善。 https://github.com/loveltyoic/avos-ruby-sdk
看起来不单纯是 CW 的问题,贴代码吧。
这里其实是为了构造嵌套的形式,的确 res_1 本身不会生成路由,这种情况直接用 namespace 啊。
支持! 楼主是个对技术非常有热情的好同学!
楼主点评一下这款键盘呗,为什么卖呢?
写个 helper module,然后在需要的 controller 里 include xxxHelper
递归匹配文件夹
既然是执行完才返回,为什么还要做成后台任务?
嗯,需要研究一下日志。 另外我也用 ab 测试了一下:
Concurrency Level: 20
Time taken for tests: 11.950 seconds
Complete requests: 1000
Failed requests: 0
Write errors: 0
Total transferred: 443000 bytes
HTML transferred: 117000 bytes
Requests per second: 83.68 [#/sec] (mean)
Time per request: 239.000 [ms] (mean)
Time per request: 11.950 [ms] (mean, across all concurrent requests)
Transfer rate: 36.20 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 10 159 657.5 21 7782
Processing: 14 47 40.7 37 840
Waiting: 14 47 40.7 37 839
Total: 27 206 663.0 62 7979
平均 239ms, 为什么会差距这么大呢?
#2 楼 @quakewang 首先感谢回复! 这个 API 的代码只是请求另一个 API 并直接返回结果,而且我将结果缓存在 redis 了。 从图中看并没有发起外部请求,那么应该是直接读缓存数据并返回的。 redis 读不会要这么久吧,是否跟服务器性能有关呢?
@quakewang 求帮忙看看
#5 楼 @shangrenzhidao #6 楼 @w7938940 https://ruby-china.org/topics/22809,比较深入的看了一下源码,抛砖引玉
从 before_validation 开始搜索
# File activemodel/lib/active_model/validations/callbacks.rb, line 56
def before_validation(*args, &block)
options = args.last
if options.is_a?(Hash) && options[:on]
options[:if] = Array(options[:if])
options[:on] = Array(options[:on])
options[:if].unshift lambda { |o|
options[:on].include? o.validation_context
}
end
set_callback(:validation, :before, *args, &block)
end
# File activesupport/lib/active_support/callbacks.rb, line 600
def set_callback(name, *filter_list, &block)
type, filters, options = normalize_callback_params(filter_list, block)
self_chain = get_callbacks name
mapped = filters.map do |filter|
Callback.build(self_chain, filter, type, options)
end
__update_callbacks(name) do |target, chain|
options[:prepend] ? chain.prepend(*mapped) : chain.append(*mapped)
target.set_callbacks name, chain
end
end
# File 'activesupport/lib/active_support/callbacks.rb', line 549
def normalize_callback_params(filters, block) # :nodoc:
type = CALLBACK_FILTER_TYPES.include?(filters.first) ? filters.shift : :before
options = filters.extract_options!
filters.unshift(block) if block
[type, filters, options.dup]
end
# This is used internally to append, prepend and skip callbacks to the
# CallbackChain.
def __update_callbacks(name) #:nodoc:
([self] + ActiveSupport::DescendantsTracker.descendants(self)).reverse_each do |target|
chain = target.get_callbacks name
yield target, chain.dup
end
end
# File activesupport/lib/active_support/callbacks.rb, line 740
def set_callbacks(name, callbacks)
send "_#{name}_callbacks=", callbacks
end