REST 化 Chito
一直没有在 Chito 中考虑 REST,因为对用 blog 的人没啥看得见的好处,所以总是没有动力。
现在终于下定决心,也算是补一下我 Rails 知识的弱项之一 ( 其他的弱项还包括 Test 和 Cache
)。
代码要更改不少地方,希望是个开心的过程~ ![]()
用 Texvc 生成数学公式
is-Programmer 目前用 l2p 这个小程序,配合 TeX 系统来生成数学公式图片,现在又有新的选择了,那就是 Texvc ~ ![]()
texvc 是 MediaWiki 附带的用来生成公式图片的小程序,在 MediaWiki 安装路径下的 Math 目录中可以找到这个程序,和 l2p 一样,需要配置好 TeX 环境。
genki 写了一个简单的 texvc 的 Ruby wrapper,这样在 ruby 中就可以方便的生成公式图片了~
首先安装,gem 包名称叫做 genki-texvc:
-
sudo gem install genki-texvc
使用方法非常简单:
-
require 'texvc'
-
Texvc.parse( 'f(x)=\int_0^x \sin(t)\,dt' ) #=> Magick::Image
就会生成:
parse 之后会返回一个 Magick::Image 实例,你可以显示出来,或者写到文件中,或者再做进一步处理~ ![]()
Ruby 1.8.6 p230 p238 有内存泄漏 Bug
这两天有些奇怪,服务器上 Rails 进程的内存占用总是不断上涨,只要一天时间,内存就暴满,然后开始啃虚拟内存,网站也变得很慢。
开始以为是 ruby-gettext 的问题,因为 1.90 的 ruby-gettext 确实有这么个内存泄漏的 bug,不过我当初打过了补丁,应该不会出现问题。尝试升级到 1.91,问题依旧……
接着怀疑是代码本身的问题,不过前些日子一直正常,这两天又没有改过网站代码,所以排除。
后来想起来,上个星期把服务器上的 ruby 升级为最新的 1.8.6_p230,难道问题出在这里? Google 了一下,果然:
[Ruby 1.8 - Bug #216] (Open) Memory leaks in 1.8.6p230 and p238
看来 production 下不能使用 p230 和 p238 了,即使是 is-Programmer 这样流量很小的网站,问题都很严重。
降级回 1.8.6_p114,问题解决~ ![]()
像 Lua 那样引用 Hash 元素
Lua 中的 Table 可以拿来当作多种数据格式来使用,比如 Hash ( Dictionary ):
-
h = {a=1,b=2,c=3}
-
print(h['a'])
-
1
最爽的是,可以用 h.a 这种形式来引用 Hash 中的元素:
-
print(h.a)
-
1
利用 Ruby 的 method_missing,也可以这样爽一把,仅仅需要:
-
class Hash
-
def method_missing(method, *args)
-
self[method]
-
end
-
end
即可,测试:
-
h = {:a => 1, :b => 2, :c => 3}
-
puts h.a
-
1
只要 hash 的 key 不要与 Hash 内置的方法重名就可以了~ ![]()
啥?还要实现赋值? 这个好办,只要将上面的代码改为:
-
class Hash
-
def method_missing(method, *args)
-
if method.to_s =~ /=$/
-
self[method.to_s.chop.to_sym] = *args
-
else
-
self[method]
-
end
-
end
-
end
就可以了,测试:
-
h = {:a => 1, :b => 2}
-
h.a = 456
-
puts h.a
-
456
感觉不错~ ![]()
