#1 楼 @hz_qiuyuanxin 1.不是和 nginx 比哟,而是比 rack-cache。 2.unicorn
#8 楼 @fake_whythelukystiff libpq 里面提供的异步函数,就是方便客户端程序,在独立的线程上阻塞等待结果,而不影响主线程。 伪代码:
def async_exec(sql)
Thread.new do
conn.PQsendQuery(sql)
while true
res = PQgetResult(conn)
if res
yield res
break
end
end
end
end
async_exec("select...") {|res| #process result }
nodejs 里面的回调,主要就是靠 libuv 这个库实现的,就是把 IO 的等待,都放在单独的线程池里面阻塞,主线程还是可以继续处理 request。 ruby 的 web 应用里,都是单进程执行,一个 IO 阻塞了,那就无法处理后面的 request。 我们为了产品稳固,涉及这种耗时操作的,都放队列去执行了,不会去用线程,否则带来的问题更多。 ruby 里面也有个libuv 的拓展,但是如果要用这个库做东西,还不如直接用 nodejs 。
#5 楼 @fake_whythelukystiff libpq 提供的是基本的异步支持,可以给开发者提供多一种选择,足够了。 只不过,在 ruby-pg 中,把异步接口实现成同步了,容易给上层开发者带来误解。 sequel 的维护者,就认为 async_exec 不会阻塞 ruby 解释器。 nodejs 这种回调优先的平台,在 pg 接口:node-postgres 的实现中,都是用 libpq 的异步函数。
#2 楼 @jimrokliu 在 nodejs 这种平台,回调结构很自然。 但要在 ruby,尤其是 MRI 上实现回调,比较折腾,还是算了。
#43 楼 @imlcl http://www.padrinorb.com/api/index.html 这种 API?我一般都是看源码,源码的单元测试会写很多用法。在文档里可能没体现的。
#39 楼 @debugger :plus1: 官网里的文档很久没更新,1.0 的 roadmap 提到要启用新官网: https://github.com/padrino/padrino-framework/wiki/Roadmap-for-1.0 到时会使用这个项目里的文档:https://github.com/padrino/padrino-docs/
#25 楼 @Numbcoder #27 楼 @hooopo 没错,介绍 padrino 的 slide 里,没有比这个好的。 只不过,1.0 版本今年底才会发布,实在是太..慢..了~
padrino :plus1:
哇,主题名字太劲爆了。不过,我是真不喜欢 rails。
照片很赞。
rack 代码里 session 下面的 cookie 实现,其实就是在浏览器里存储了 session 的 key,seesion 的 value 还是在内存的。叫 cookie based session: https://github.com/rack/rack/blob/master/lib/rack/session/cookie.rb 代码里还有个 memcache 的 session 实现,就是把 session 的 value 存储在 memcache 里: https://github.com/rack/rack/blob/master/lib/rack/session/memcache.rb 要实现共享 session,要考虑几方面: 1.安全,因此首选存在 server 2.稳定,不能因 server 端 crash 而丢失 session,要有持久化支持。 3.自动清除,客户端的 cookie 有效期是可以设置的,为避免 server 端 session 存储规模太大,也要支持 expire 后自动删除。 综上,使用基于 redis 和 mongodb 的 session 存储,都挺好: https://github.com/roidrage/redis-session-store https://github.com/yeezon/mongo_session 我在项目里,一直用 mongo_session。 padrino 里,指定 session 存储:
set :sessions, :use => Rack::Session::MongoSession, :config => {:host=>''...}
配字幕:“爷是 Linux 和 git 之父,关注小屁孩太 Low B 了。”
团队的前端,在用 ng 开发单页应用。 他们也痛苦于 ng 操作 DOM 没 jquery 方便。但是他们强迫自己不碰 jquery,完全用 ng 的方式开发。 导致初期开发成本略高,主要是开发定制组件。越到后面开发效率越高,并且代码更易于维护。
术业有专攻。后端和前端,如果都很简单,一个人做没问题; 如果都比较庞杂,团队分工配合,比一个人可靠。 我在的小公司,也是创业阶段,前后端一直是不同人写的。但后端要负责运维,前端负责不断改进用户体验。一个人,根本没那个精力,除非是非常资深的人。