你们有使用 Mondrian 这种 OLAP engine 吗,用 MDX 来查询,还是直接用 RDBMS 和 sql 来处理?
第一感觉是没有用括号的缘故,搜索了一下 Programming Ruby 果然如此:
http://phrogz.net/ProgrammingRuby/language.html#blocksclosuresandprocobjects
Braces have a high precedence; do has a low precedence. If the method invocation has parameters that are not enclosed in parentheses, the brace form of a block will bind to the last parameter, not to the overall invocation. The do form will bind to the invocation.
另外,这里用 map 应该就可以达成需求,不需要 each_with_object
clear_cache users.map{ |user| disassociate_user user.id; user.cache_key}
已经撸了 2 题,有意思,你这个题目用 hash 保存一下,空间换时间,就可以了:
你应该在 4 月 1 号发布这个 gem 的
好像有问题吧?比如说要求每页显示 10 个用户信息,那我代码调用
@users = User.paginate(page: params[:page], per_page: 10)
@users.each do |u|
link_to u.name, u
end
页面上就显示 11 个用户了?
将人工判断为 spam 的文章放入到一个集合,新发的文章对这个集合中进行相似度算法过滤,考虑到避免算法误杀,可以将过滤掉的文章再放入一个 list, 每天运营人员扫一眼就可以了。
最大可能是在 deal_with 或者 write_file 这 2 个方法里面有内存泄漏,如果没有内存泄漏,只是做 array 操作,是不应该出现这种情况的。你可以测试一下:
def report_rss
puts 'Memory ' + `ps ax -o pid,rss | grep -E "^[[:space:]]*#{$$}"`.strip.split.map(&:to_i)[1].to_s + 'KB'
end
arr = []
report_rss
10.times do
1000000.times do |i|
arr << i
end
report_rss
arr.clear
GC.start
end
rss 内存会稳定在 GC 参数设置的一个上限。
如果前端有 nginx 或者 apache, 可以不用在 rails 里面处理,比如说 nginx, 直接添加 options 的支持:
if ($request_method = OPTIONS ) {
add_header Access-Control-Allow-Origin "*";
add_header Access-Control-Allow-Methods "POST, GET, OPTIONS";
...
add_header Content-Length 0;
add_header Content-Type text/plain;
return 200;
}
另外补充一个冷知识:
ruby china 的 ip 是 61.174.15.167 转成 16 进制进行换算:61 * 256 * 256 * 256 + 174 * 256 * 256 + 15 * 256 + 167 得到 1034817447 请访问:
后面有。和没有。都是解析到相同域名 只是在 heroku 域名识别的时候没有匹配
1000 次操作还不到 2 秒,平均一次 2 毫秒,这性能还想压榨...
如果时间合适,我可以带个新玩具过去
render nothing: true
#5 楼 @blacktulip 一行党
arr.inject([]){|r, a| (i = r.index [a[0], -a[1]]) && r.delete_at(i) ? r : r << a}
出现这些情况的时候是否都是并发比较多的时候?可以检查一下操作系统的 ulimit 等参数,可能文件打开句柄数或者 socket 打开数之类超过了限制,导致 nginx 等待 puma 处理掉其他请求的时候,没有办法再打开更多的进程而出现超时。
如果是买 linode 这些国外 vps 代充值的,比官网还便宜,那就是黑卡了。 用一段时间可能会被回收的。
是直接塞进去的,在 Rails.cache 的 read/write 方法内部已经做过序列化和反序列化了。
投诉工信部是有用的,不过你得以用户的身份去提起投诉,说服务商在你访问 XXX 网站的时候插入广告。
不过,这只能针对你所在的服务商...其他不同服务商的用户还是有可能被强 X
#1 楼 @blacktulip 有内建的 divmod 方法可以用:
def average_allocate(total, division)
div, modulo = total.divmod division
[div + 1] * modulo + [div] * (division - modulo)
end
我之前是用 OpenStack 来实现自动扩容和降容: http://quake.github.io/slides/cosug-2012/
算法是简单地通过统计 30 分钟的平均 session per instance,来决定扩容或者降容,或者通过监控 app 服务器 load,也比较容易实现。
单纯解析 html 的方式是很容易被视为 bot,现在流行用 headless browser
Markdown