#112 楼 @danielking async, nodeproxy,wind.js 等等,只是把嵌套换了一种表现形式而已,没有从根本上消除复杂度。
结果集是 lazy loading 的,直到结果集被遍历,才会发送 SQL 语句,所以你缓存的时候是一个空结果集。正确做法是强制 eager loading:
Rails.cache.fetch("top10") { Job.limit(10).all }
用 all 强制 eager loading。
一般来说,做实际应用,用 Java 语言几乎不可能裸写 netty 和 Servlet 的,除非极特殊的情况,同样的情况下,Ruby 也比较少直接用 Rack,Python 也很少直接用 WSGI,所以就框架比拼来说,至少应该是从 express 往下看起,往上就没必要看了。
那你看除了 cakephp 和 rails 比较差以外,主流 web 框架基本都在 1000-7000 这个区间,差异有,但是实际应用场景不会差太多,最多 3 倍以内。
所以最后用什么,更多取决于程序员的偏好了。例如我的话,不喜欢 Java 语法的繁琐,不喜欢 node.js 变态的异步回调,不喜欢 PHP 代码组织凌乱,不喜欢 Go 贫瘠的类库,排除法下来只能选择 Python 或者 Ruby。那我相对更熟悉 Ruby,当然会选择 ruby。
命令行 + tig,分支合并的时候会用 SourceTree 看一下分支情况。
#105 楼 @vincenttone 我记得好像以前看 ruby china 有个帖子说网站曾经跑在 Linode 上,启动了两个 Thin 进程和一个后台 resque,然后内存就不够用了,网站并发访问一高就很慢,似乎是抱怨过 Rails 的吧。
我个人网站:robbin 个人网站 跑在 Linode512 上,用 rainbows 跑了两个进程,每个进程跑 32 个线程,每个 workder 进程稳定使用 70MB 内存。调大 GC 参数以后,每个 workder 进程稳定在 110MB 物理内存,可以轻松支撑很大的并发访问量。
RUBY_HEAP_MIN_SLOTS=600000 RUBY_FREE_MIN=200000 RUBY_GC_MALLOC_LIMIT=60000000 export RUBY_HEAP_MIN_SLOTS RUBY_FREE_MIN RUBY_GC_MALLOC_LIMIT
我只能说 fuck Google and Larry Page.
我是故意标题党的,目的是吸引眼球,我希望那些停留在 Rails 舒适区的程序员思路和眼界更开阔一些。
我本来想把全文贴过来的,结果发现我回帖不到 10 个,莫权限发主题贴,正好有人帮贴,省事了。
限制是应该的。只不过我回帖数不够阿,只好努力回帖。
sorry,gets 只是读一行,用 read 可以读取完整的 data
读取 raw post data,我现在用 request.body.gets thin/unicorn都OK,用的是rack 1.5
用 sinatra 的好处: