REST 化 Chito

一直没有在 Chito 中考虑 REST,因为对用 blog 的人没啥看得见的好处,所以总是没有动力。

现在终于下定决心,也算是补一下我 Rails 知识的弱项之一 ( 其他的弱项还包括 Test 和 Cache  )。

代码要更改不少地方,希望是个开心的过程~

Posted by galeki 1 day ago


用 Texvc 生成数学公式

is-Programmer 目前用 l2p 这个小程序,配合 TeX 系统来生成数学公式图片,现在又有新的选择了,那就是 Texvc ~ 

texvc 是 MediaWiki 附带的用来生成公式图片的小程序,在 MediaWiki 安装路径下的 Math 目录中可以找到这个程序,和 l2p 一样,需要配置好 TeX 环境。

genki 写了一个简单的 texvc 的 Ruby wrapper,这样在 ruby 中就可以方便的生成公式图片了~

首先安装,gem 包名称叫做 genki-texvc:

  1. sudo gem install genki-texvc

使用方法非常简单:

  1. require 'texvc'
  2. Texvc.parse( 'f(x)=\int_0^x \sin(t)\,dt' )      #=> Magick::Image

就会生成:

 

parse 之后会返回一个 Magick::Image 实例,你可以显示出来,或者写到文件中,或者再做进一步处理~

 

Posted by galeki 4 days ago


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,问题解决~

Posted by galeki 8 days ago


准备实现文章底栏

放 “相关文章” 或者订阅信息比较合适~

为了尽可能不多占用文章的版面,准备用 Tab 页来显示各个项目:

使用了 realazys2uTab,简单又轻巧~ 

 

Posted by galeki 16 days ago


像 Lua 那样引用 Hash 元素

Lua 中的 Table 可以拿来当作多种数据格式来使用,比如 Hash ( Dictionary ):

  1. h = {a=1,b=2,c=3}
  2. print(h['a'])
  3. 1

最爽的是,可以用 h.a 这种形式来引用 Hash 中的元素:

  1. print(h.a)
  2. 1

 利用 Ruby 的 method_missing,也可以这样爽一把,仅仅需要:

  1. class Hash
  2.     def method_missing(method, *args)
  3.         self[method]
  4.     end
  5. end

即可,测试:

  1. h = {:a => 1, :b => 2, :c => 3}
  2. puts h.a
  3. 1

只要 hash 的 key 不要与 Hash 内置的方法重名就可以了~ 

啥?还要实现赋值? 这个好办,只要将上面的代码改为:

  1. class Hash
  2.     def method_missing(method, *args)
  3.         if method.to_s =~ /=$/
  4.             self[method.to_s.chop.to_sym] = *args
  5.         else
  6.             self[method]
  7.         end
  8.     end
  9. end

就可以了,测试:

  1. h = {:a => 1, :b => 2}
  2. h.a = 456
  3. puts h.a
  4. 456

感觉不错~ 

Posted by galeki 21 days ago