Today's the day

思考,自知,耐心

Rails 2.1 Release

转自: http://weblog.rubyonrails.org/2008/6/1/rails-2-1-time-zones-dirty-caching-gem-dependencies-caching-etc

Over the past six months, we’ve had 1,400 contributors creating patches and vetting them. This has resulted in 1,600+ patches. A truly staggering number. And lots of that has made it into this release.

New features
The new major features are:

Partial Updates 大期待,其实原来一直以为 Rails 里面早就有了这个功能 ,没想到现在才有,想想现在更新文章的浏览计数,就要把整篇文章再保存一遍,真让人不爽。

正好 Chito 1.0.6 刚完工,1.0.7 就迁移到 Rails 2.1 上去。

Chito 1.0.6 更新摘要

终于把 is-Programmer 换成了 Chito 1.0.6,以后 is-Programmer 也完全基于 Chito,随着 Chito 更新而更新了。

以下是更新摘要:

核心

  • 大幅提高了边栏和导航栏的生成速度。
  • 支持插件 js 和 css 缓存。
  • 改善了插件视图结构。
  • 多语言 ( 目前: 英文 & 简体中文,根据浏览器默认语言偏好设置来改变)。
  • 用户密码 salt 加密。

功能

  • 保存并继续编辑。
  • 边栏和导航栏的浮动窗口设置。
  • 指定永久链接后,将生成带有日期的文章地址,例如: http://liyanrui.is-programmer.com/2008/5/30/context-mkiv-zh-typescript.3062.html
  • 用户登录,不必再跳转到首页。
  • 评论
    • 评论审核机制。
    • 过滤链,支持对评论的多重过滤。
    •  不再用 alert 提示评论错误信息,改用更平滑的 ajax 效果。
    • 评论的表单外观改善。
    • 验证码转移到插件,可以选择是否启用。

修正

  • 大写扩展名文件缩略图不生成的问题。
  • 评论换行丢失的问题。
  • IE 下 image resize 的 js 错误警告问题。
  • IE 下管理界面菜单的显示问题。
  • IE 下删除草稿、留言后的跳转错误问题。
  • 文章自动生成的简介中带有 %nbsp 的问题。

插件 & 皮肤

  • 高亮搜索的关键词插件。
  • Scribbish 皮肤。

 

配置了下双显示器

当初安装服务器的时候,买了一个 14 吋的小显示器,晚上突发奇想,决定发挥一下这个显示器的余热。

本来做好要折腾一番的心理准备,结果却发现双显示器的配置异常的简单,倒是趴在地上插显示器线费了半天劲

直接在 xorg.conf 中打开 Nvidia 卡的 TwinView 功能就可以了,不知道 A 卡有没有这么简单:

  1. Option   "TwinView" "True"

其实还要在 xorg.conf 里设置第二显示器相对位置之类的,但是完全可以启动后用 nvidia-settings 来完成,如下图,拖动显示器到你想要的位置即可,然后把改动保存到 xorg.conf 就可以了,不要忘记用 root 用户运行 nvidia-settings:

用来放一些 Screenlets 最合适了,也可以放个终端监测某些任务。

最大化窗口的话,窗口只会充满当前的显示器,非常方便~

 

Chito 1.0.6 收工

断断续续的终于完工了 1.0.6, Chitolog.org 已经换上了 1.0.6,如果没有什么问题,就可以发布了。

这次也要把 is-Programmer 升级到 1.0.6 上来

更新的内容不少,过两天再总结,vym 的草图最能说明问题,相比之前的 那个小列表 ,不知不觉间确实是长了不少

移植了 Scribbish 主题

貌似不少基于 Rails 的 Blog,都是用的 Scribbish 这个主题,风格简洁明了,适合技术 Blog。

于是这次也顺便移植到了 Chito 上来,和 Typo 一样,Chito 1.0.6 默认也将包含这个主题。

实现了 Akismet 插件

既然实现了评论过滤,那么实现 Akismet 插件就是理所应当的了

Akismet 官方有开发手册,接口非常简单,你也可以参考 RailsCasts 上的 Akismet 教学视频,注意参数名称,还有不要遗漏必要的参数就可以了。

由于是多用户 Blog,每个人想要使用 Akismet 之前要设置自己的 Akismet API key,注册一个 WordPress 帐号就会拥有一个 key,完全免费,然后把这个 key 填写到设置中即可。

 

中国,加油

Firefox 3 CSS Hack

Firefox 3 RC1 终于横空出世,试用了一下,感觉不错,页面渲染速度提升非常明显,js 的执行速度也有很大的提升,cpu 和内存占用率也下降不少,对此我已经相当满意了~

中文版上还有个粗心的笔误

Firefox 2 和 Firefox 3 在 CSS 的渲染在某些细节上还是有点差异,毕竟 Firefox 3 完全通过了Acid2。比如,这次 Chito 1.0.6 里面就碰到了,下面第一张是 Firefox 2 下期望的外观,到了 Firefox 3 下就变成了后面的样子:

  

所以有些时候确实需要 Firefox 3 的 CSS Hack,网上搜了一圈,好不容易看到了个:

  1. #hack, x:-moz-any-link, x:default {
  2.     /* Firefox 3 style here */
  3. }

这样 #hack 这个 id 的样式,只有 Firefox 3 可以解析,不去深究这样写的意义是什么,尝试了一下确实有效。

Chito 也支持浮动窗口了

Chito 边栏的功能是插件提供的,虽然在 “外观 -> 边栏" 下可以调整边栏的位置,但是想要调整某个边栏项的设置,就得跑到 “插件” 下去找,非常麻烦。

同样处境的,还有导航栏的设置,还有将来的评论过滤器的设置,所以搞个像 WP 那样的浮动设置很有必要。

正好看到了 Prototype Window,这个不错的窗口库,构建于 prototype 和 script.aculo.us 库之上,对于 Rails 项目来说很合适。

还附带了 Rails 的 Helper 文件,方便到家~

 

拆分数组

Ruby 中的 Array 类提供了非常实用的 select 和 reject 方法,可以方便的从数组中挑出或剔除符合条件的元素:

  1. a = [1,2,3,4,5,6,7,8]
  2. a.select {|x| x % 2 == 0}
  3. >> [2,4,6,8]

如果想要把数组拆分成两个集合,一个符合某个条件,一个不符合,要怎么办呢?

可以先写一个 select 然后再来个 reject:

  1. a = [1,2,3,4,5,6,7,8]
  2. even = a.select {|x| x % 2 == 0}
  3. odd = a.reject {|x| x % 2 == 0}
  4. >> even = [2,4,6,8]
  5. >> odd = [1,3,5,7]

这样的话,不仅条件要重复写两遍,数组中的元素也要遍历两遍

可以利用 Ruby 可以返回多个值的特性,来写个 separate 函数:

  1. class Array
  2.     def separate
  3.         yes, no = [], []
  4.  
  5.         self.each do |x|
  6.             yield(x) ? yes << x : no << x
  7.         end
  8.  
  9.         return yes, no
  10.     end
  11. end

这样,数组拆分一次就可以搞定了

  1. even, odd = a.separate {|x| x % 2 == 0}