coffee 的文档已经说得够详细了啊...
写的时候要想想什么是不用测的...
另外测试先行的话由于没有实现的先验知识,测试就不容易膨胀得太大...
我们实际天天都在用 nodejs... asset 编译时就用了 node 上面跑的 uglifyjs 和 coffee-script. 没用在服务器上而已。
我只用过 google appengine, cloud foundry 和 heroku, 都能用 ruby. 虽然 appengine 支持的 ruby 只能是 jruby, 但它上面肯定不能跑 node, 最近说会支持新语言但我猜是 rust 或者 dart, 不会是 node. 你说的云服务我都没用过,估计他们的决定是因为人群因素而不是技术因素吧,另外要做到 heroku 十分之一左右的功能,至少得招个 挺 会 ruby 的,他们公司应该有会的,但对应云产品开发团队似乎是没有。
不过这类服务问题是,只能面向没有 linux 知识或者没时间/没人配服务器的低端用户,终究没 vps 性价比高。支持 nodejs 确实挺符合市场规律的 ...
提到 Zed Shaw 是想起
多进程模式部署的话 (现在性能和内存表现均最佳的是 eventmachine + 多进程), 服务器间多进程共享数据的最佳方案是使用 Zed Shaw 推荐的 0mq 进行通信...
mongrel2 就是去掉了多线程模式
t.string :name, limit: 2000, unique: true, default: "hello world"
查询能保持上下文 (上一页最后一条的 id) 的话就能无限翻下去
否则就是业界标准 100 页... google 都不给你翻到 100 页以后
#10 楼 @quakewang 嗯嗯... 还是应该 split...
这些服务器都使用了 Zed Shaw 的 mongrel 遗留下来的用 ragel 生成的基于状态机的 html header parser...
不如找个公式... 例如这个
\begin{gather}
\textbf{[Var]}
&\frac{x:\sigma \in \Gamma}{\Gamma \vdash x:\sigma}
\\
\textbf{[App]}
&\frac{\Gamma \vdash t : A \rightarrow B \quad \Gamma \vdash s : A}{\Gamma \vdash t \cdot s : B}
\\
\textbf{[Abs]}
&\frac{\Gamma,x : A \vdash t : B}{\Gamma \vdash \lambda x.t : A \rightarrow B}
\\
\textbf{[Let]}
&\frac{\Gamma \vdash s : \sigma \quad \Gamma,x:\sigma \vdash t : B}{\Gamma \vdash \textbf{let}\ x=s \ \textbf{in}\ t : B} &
\\
\textbf{[Inst]}
&\frac{\Gamma \vdash t : \sigma \quad \sigma \sqsubseteq \sigma'}{\Gamma \vdash t : \sigma'}
\\
\textbf{[Gen]}
&\frac{\Gamma \vdash s : \sigma \quad X \notin \textbf{FV}(\Gamma)}{\Gamma \vdash t : \forall \ X.\sigma}
\end{gather}
看效果可以贴到 http://luikore.github.io/latex/
#7 楼 @zhaojiahui 如果加个 content_html 字段保存渲染后的内容,就不用每次访问 show 都执行 markdown 渲染了,可以快一点,但代码也会变得复杂点
The ruby way...
def solve_rpn expr
expr.scan(%r"(\d+)|([+\-*/])").inject [] do |stack, (num, op)|
stack << (num ? num.to_i : stack.pop(2).reverse.inject(op))
end.last
end
solve_rpn "10 4 3 + 2 * -"
#4 楼 @zhaojiahui 去掉 to_html
啊
#2 楼 @zhaojiahui 简单点就是把 markdown(@question.content)
放到 show.html.erb 里...
自己定义个全局的同名 helper 或者可以...
def form_for *xs, **opts, &p
super *xs, {authenticity_token: false, **opts}, &p
end
新建个 helper , 将这一大坨代码放进去应该就好了
方向错了,你应该加个字段 Question#content_html
然后在 post
action 里把 markdown 生成好赋进去,最后在 show
action 显示 @question.content_html
就可以了。