你的例子可以简化成这样:
b1 = B.find xxx
p b1 #结果一
b2 = B.find xxx
b2.update_attributes k: :v
p b2 #结果二
b1 和 b2 两个对象虽然都对应同一个数据库记录,却是不同时间点上的记录
最简单的是添加一个 warden strategy (例如叫做 my_token_strategy ), 然后
initializers/devise.rb:
config.warden do |manager|
manager[:default_strategies][:user].unshift :my_token_strategy
end
正常的用 authenticate_user!
就好了
GC :)
ruby -ane 'BEGIN{$r = Hash.new 0}; $r[$F[0]] += [1,2,5][$F[1].to_i]; END{puts $r.sort_by(&:last).reverse.take(10).map{|k,v| "#{k} #{v}"}}'
#4 楼 @yukihiro_matz 看文档咯
@hooopo 这得看怎么打分... 例如看结果的几个字是不是连在一起
不用分词的搜索法:每字当一词用 ngram
angular 就是用这个做省略版的依赖注入的
无脑 pull 当前分支:
gup() {
local br
br=`git branch 2> /dev/null|\\grep '^*'|sed -e 's/..//;s/\\n//'`
tainted=`git status --porcelain | \\grep -v '^\\?\\?'`
if [[ $br == master ]]; then
if [[ $tainted == '' ]]; then
echo git stash
git stash
fi
echo git fetch
git fetch
echo git rebase FETCH_HEAD $br
git rebase FETCH_HEAD $br
else
if [[ -n $br ]]; then
if [[ $tainted == '' ]]; then
echo git stash
git stash
fi
echo git pull --rebase origin $br
git pull --rebase origin $br
else
echo seems not in any branch
fi
fi
}
还是觉得对冲突挨个看挨个删最简单... 有时没冲突也不代表 merge 成功,测试没过还得改
ThreadPoolExecutor 主要有两种应用场景:一是某种需求的资源支持不了高并发,要限制并发; 二是服务器本身面对的并发数不高,吃不满 CPU. 你可以 wrk 或者 ab 用高并发的情况测一下会不会爆炸...
至于开多少个线程,如果每个 worker 都是纯 CPU 计算并且 有足够的 CPU (例如网站请求量很低), 就开核心数目个,这时它是作为一个并行工具而不是并发工具。
如果 worker 是 IO 密集型的就得多开,开多少应该看实际情况而不是 "凭经验", 但开的太多 ThreadPool 就变成虚设了。
ThreadPoolExecutor
不是并发工具,而是 限制并发 的工具...
例如只起一个的话,网站有 1000 并发请求,但是调用到这个 ThreadPoolExcecutor
就卡成 8 并发了...
如果改成多线程部署环境每个请求起一个 ThreadPoolExecutor, 那线程数就爆炸了...
#16 楼 @quakewang node.js 的 parser 其实比 unicorn 的慢...
symbol 是 lisp 的遗留产物啦,后来 string 的越来越优化了就逐渐没多大意义了
production 模式默认不 serve asset 的吧?看配置了 不同的地方还有可能是 asset_host, default_host
for triangle in %w[▲]
puts triangle
end
其实这需求有个更简单的办法,就是 requestAnimationFrame ...
在 books.each
上加一行 binding.pry
, 然后在命令行看看 books 是个啥对象 (nil?), 应该是更前面 books = ...
的代码有问题
谷歌技术里已死或者快死的还有
不过有些基本 idea 是很有启发性
Angular 是个大杂烩,模板语言的设计整体性太差,ad-hoc 感很严重,重新造了一遍依赖管理和作用域等轮子,module 很多不过有很多也是为了解决自己创造的问题,别的框架用了 observable 好久以后它才引入... React without JSX 真的简单轻便很多...
下编译好的版本吧 https://github.com/textmate/textmate/releases
如果想自己编译,我的机器上 test_scm 也总有问题,有可能是因为作者 git 的版本和大家的不同...
试试修改 Frameworks/scm/tests/t_git.cc , 把第 13 行改成 (加了个 mkdir -p
)
std::string const script = text::format("{ cd '%1$s' && '%2$s' init && mkdir -p .git/info && '%2$s' config user.email '[email protected]' && '%2$s' config user.name 'Test Test' && touch .dummy && '%2$s' add .dummy && '%2$s' commit .dummy -mGetHead && %3$s ; } >/dev/null", jail.path().c_str(), git.c_str(), cmd.c_str());
把目标分布的累积密度函数的反函数应用到均匀分布随机函数的结果上就可以
我们要求的累积密度函数 F(x) = x**2, 设系统提供的函数对应随机变量为 X, 那么我们只需要证明
P(F^-1(X) < x) = F(x)
F 是单调增,所以
P(F^-1(X) < x) = P(X < F(x))
又由于对随机变量 X 有 P(X < x) = x
所以 P(X < F(x)) = F(x)