:plus1: 重新登录可以把 cookie 里的 remember_user_token 也变成 secure
#17 楼 @bhuztez 首先 phantom read 是指查询的结果集合变化了,是事务进行过程中删除了或者又插入了记录造成的。
其次 repeatable read 隔离等级首先要做的是对已经查询的记录加上 lock 机制禁止更改,而不是字面上的"可以重复读到一样的值" --- 否则我要你这个事务有何用?我干嘛读第二次?
再说 SQL-92 标准是允许 repeatable read 中出现 phantom read 的,但不允许读取过的记录被别的事务更改。标准规定的 repeatable read 会自动对读出来的记录加锁但不加 range lock (range lock 类似于锁表,但只锁定满足 where 语句的部分), serializable 是有 range lock 的。
不过 pg 实现的 repeatable read 也是没有 phantom read 的 (见 http://www.postgresql.org/docs/9.1/static/transaction-iso.html) , 事务开始后,别的事务如果做插入或者删除记录操作,其中一个会回滚而不是读取新的 commit 的值。对同一记录,pg 的 repeatable read 不会第一次读出 X 第二次读出一个 Y 来,只会读出 X (没更改) 或者是回滚 (被更改).
nginx 只用 gzip_static on
发送静态资源就够啦,绝大部分动态内容都是不压缩的比较快
gzip on
的话也可以配置哪些内容 gzip 哪些不 gzip
像压缩过的 js, png 图片,gzip 对瘦身效果很不明显,但是耗费很多服务器和客户端的 CPU, 还是不 gzip 的好
用 gzip_static
还有个好处:在编译 asset 时就比较压缩效果,压缩比少于一定量就不 gzip
#8 楼 @rasefon 1.9 或者 1.8+activesupport 都可以用。见 http://ruby.on-page.net/#rk_916_885
我提几个 code style 的小建议,不过不怎么不重要 (楼主是按照算法直译的?)
3 格缩进 -> 2 格缩进
Hash.new
-> {}
lines.map { |l| l.chomp }
-> lines.map &:chomp
"#" == line[0]
-> line.start_with?('#')
其实楼主的代码就是最初 activerecord 里 method_missing 的做法...
注释里的代码是 python 2 啊
打字特别快的人
basecampe ?
js 里面 function a()
这种写法有个天坑,就是会影响前面的代码!你可以看 coffeescript 生成的代码里,都不会这样写的
好多梗,彩虹小马都有... 强力...
#11 楼 @u1378130755 不小心上了马甲...
比 perl 5.10 快 多线程一直支持,只是一个进程最多占用一个核,现在偶尔可以双线程用到两个核了,以后把大锁拆成小锁就能用上所有核了。服务器和高性能计算是两回事,高性能计算用显卡更靠谱... 服务器多起几个进程就和那些所谓性能好的一样了。
april fool ...
测试足够就不怕,测试写得少或者没有的自然就一堆坑
被炒过的还能面吗?