@ghosTM55 期待你的召唤 +1
话说 最近发生什么了,好多都被强了。
@neversion 就是 打开类,添加 或 覆盖 你想要的方法。具体还是看你的需求了
感觉 T800 很难在 ruby-china 上 招到 ruby 程序员了, 要不你们去 python、php 社区试试....
@neversion 一般做法是: 添加 代码 config/initailizers/xxxx.rb 进行修改 gem 一些行为,实现定制。
Nice
当你想 跟踪一个代码的 调用过程的时候,我的思路是
1, binding.pry
2、pry-backtrace 显示调用流程
3、查看 User 的 method_name 的源码位置
User.method(:method_name).source_location
4、查看 User 的 method_name 的源码
puts User.method(:method_name).source
@ane 你 source ~/.bashrc 了没有
将下面一行添加到.bashrc 就 ok 了 export RUBYOPT="-U -Ku -E utf-8:utf-8"
咱们的回复 有点偏离 lz 的本意了,不过既然说到这了,咱们就继续说说 CookieStore 的一个弊端:
如果使用 CookieStore,那么用户对应的 session cookie 就存到客户端,这个时候 也就与服务器无关了,也就是说你即使 logout 了,通过 copy 这个 cookie 还是可以访问 server 的。这个文章有个演示
那么怎么让客户端 cookie 失效呢
解决方法:
1、用户 主动 修改密码,让之前的 cookie 失效.(但是 试想用户主动 修改密码的 频率 实在太低) 2、修改 secret_key, 是所有的 cookie 都失效 (代价太大了,应该直接不用这个方案)
回到 lz 的 共享的 session 的问题:#14 楼 huacnlee 给出了一个大众的方案。
恩 走位很风骚...鉴定完毕
#34 楼,只是一个 建议而已,看你。
@lgn21st 题外话,对评论 按钮 的频率是否 应该做个限制。 比如 我有时候 手快了 多点了一下。就多发了一条评论。
对于 2.Nginx 缓存的 'A. 动态请求静态文件化' 其实可以直接用 Rails 自带的 caches_page(Rails4 已将抽成 gem 了)。效果是一样。@quakewang 你觉得呢?
建议:对于 3 整页缓存 标题 应该改成 action 缓存。因为整页缓存 是 caches_page 的说法
刚才试了一下 Rack::Deflater
siege -t30s -c 10 'http://127.0.0.1'
                                     使用后              不是使用
Transactions:                 187 hits            242 hits
Availability:                   100.00 %           100.00 %
Elapsed time:                29.03 secs         29.18 secs
Data transferred:           0.39 MB            1.17 MB
Response time:             1.01 secs          0.69 secs
Transaction rate:           6.44 trans/sec   8.29 trans/sec
Throughput:                   0.01 MB/sec      0.04 MB/sec
Concurrency:                    6.51                 5.69
Successful transactions:     187              242
Failed transactions:            0                    0
Longest transaction:          9.16              4.67
Shortest transaction:         0.09              0.09
发现压缩比例 在 77% 左右。
膜拜...
先点收藏,然后 点喜欢, 然后来评论, 然后慢慢品味。 话说 很喜欢 这种接地气的 分享。
@Kabie 汗!!写错了....
确实 nice!!
@larrylv 第一次见 这中写法,能大致讲讲么? def fast "foo" "bar" end
刚才看了一下,有几个小疑问 1、String#gsub versus String#sub 其实没有可比性 gsub 是全局替换,sub 只替换第一个,应用场景不一样,所以没有可比性。 2、疑问 为什么直接赋值 更快呢? 我的理解是 a,b = 1, 2 会产生一个新的 array[1, 2],然后在赋值给 a, b;所以为慢一点。@larrylv 你说呢?
Parallel versus sequential assignment
def slow
  a, b = 1, 2
end
def fast
  a = 1
  b = 2
end
3、 Explicit versus implicit String concatenation
def slow "foo" + "bar" end
def fast "foo" "bar" end
可以尝试其他的比较
require 'benchmark/ips'
def slow
    "foo" + "bar"
end
def fast
    "foo" "bar"
end
def append
  "foo" << "bar"
end
def another
  "%s%s" %["foo", "bar"]
end
Benchmark.ips do |x|
  x.report("slow") { slow { 1 + 1 } }
  x.report("fast") { fast { 1 + 1 } }
  x.report("append") { fast { 1 + 1 } }
  x.report("another") { fast { 1 + 1 } }
end
测试结果如下
Calculating -------------------------------------
                slow     37185 i/100ms
                fast     72146 i/100ms
              append     71189 i/100ms
             another     71661 i/100ms
-------------------------------------------------
                slow  1477945.1 (±10.8%) i/s -    7325445 in   5.012391s
                fast  3086600.4 (±7.8%) i/s -   15367098 in   5.012460s
              append  3086374.5 (±9.1%) i/s -   15305635 in   5.007838s
             another  3038806.7 (±9.9%) i/s -   15048810 in   5.010956s
发现'another'的的效率最高,而且最安全
先赞一下,在拜读!!
鞭屁入里 呀 呵呵
mark 学习了!!