Real Programmers
xcb 的漫画真是非常有趣~
原来也看过一个类似的漫画,不过说到拿磁铁就结束了,没想到 xcb 这个竟然到了“蝴蝶效应”,顺便还不忘恶搞 Emacs 一把~
迂回的实现了覆盖 helper 中的函数
终于搞定了 Chito 的相对时间插件,早就想实现这个插件了,不过一直没有想出好的实现方法,目前这方法虽然有点迂回,不过总体效果还是不错,也给以后的插件开发带来了很大的方便~
好大的雪……
上海也能下成这样,这雪放在北方也不算小雪了~
现在还在下~
中文相对时间
不知道啥时候开始,流行用相对时间来表示当前的日期,这种方法确实是不错,同 “2007 年 1 月 24 日” 相比,“1 天前” 这种表示确实看起来舒服多了,毕竟人们在思考时间的时候,大多数也是以当前的时间作为基点。
如果是个是个人气很旺的论坛之类,还可以看到某回复发表于 “n 分钟前” 这样的效果,顿时感觉人气和交互度高了很多。
Rails已经内置了对相对时间的支持,time_ago_in_words 这个 helper 就是干这个用的,比如要显示文章发表的相对时间:
这样就会显示为诸如 “post at 5 days ago” 这样的效果了~
只不过是英文的,要显示中文的就要翻译一下了,开始我想,把 time_ago_in_words 返回结果中的 days 替换成“天”、month 替换成“月”之类,后来去看了下源码,发现源码很短,重新写一个就行了。
time_ago_in_words 实际上是调用的 distance_of_time_in_words 这个函数,并且以 Time.now 作为第二个参数而已:
distance_of_time_in_words(from_time, Time.now, include_seconds)
end
这样的话,我们把 distance_of_time_in_words 中的英文改成中文就 ok 了:
-
def distance_of_time_in_words(from_time, to_time = 0, include_seconds = false)
-
from_time = from_time.to_time if from_time.respond_to?(:to_time)
-
to_time = to_time.to_time if to_time.respond_to?(:to_time)
-
distance_in_minutes = (((to_time - from_time).abs)/60).round
-
distance_in_seconds = ((to_time - from_time).abs).round
-
-
case distance_in_minutes
-
when 0..1
-
return (distance_in_minutes == 0) ? '不到 1 分钟' : '1 分钟' unless include_seconds
-
case distance_in_seconds
-
when 0..4 then '不到 5 秒'
-
when 5..9 then '不到 10 秒'
-
when 10..19 then '不到 20 秒'
-
when 20..39 then '半分钟'
-
when 40..59 then '不到 1 分钟'
-
else '1 分钟'
-
end
-
-
when 2..44 then "#{distance_in_minutes} 分钟"
-
when 45..89 then '大约 1 小时'
-
when 90..1439 then "大约 #{(distance_in_minutes.to_f / 60.0).round} 小时"
-
when 1440..2879 then '1 天'
-
when 2880..43199 then "#{(distance_in_minutes / 1440).round} 天"
-
when 43200..86399 then '大约 1 个月'
-
when 86400..525599 then "#{(distance_in_minutes / 43200).round} 个月"
-
when 525600..1051199 then '大约 1 年'
-
else "#{(distance_in_minutes / 525600).round} 年"
-
end
-
end
把上面的代码加到 application_helper.rb 中去,就可以看到中文的相对时间了~ 当然你也可以去掉 “大约” 这个繁琐的词,或者随便改成自己喜欢的中文表达方式~
过两天就做 Chito 的相对时间插件~
服务器虚惊一场
昨天晚上起床就发现网站上不去了,ssh 也连不上,心想不妙,去问网管,网管说是内网有个机子在 arp 欺骗,不过每次似乎总是这个原因,真有点怀疑真实性……
网管说等机子自动刷新完 mac 缓存就好了,如果实在着急,可以打电话重启机子。我等了一个小时,还是没好,无奈只好打电话去重启,这也是服务器自上架以来的第一次重启,之前服务器已经无故障平稳的运行了三百多天,不过服务器没什么负载也是真的,所以没什么可自豪的。
结果重启之后还是不行,心情一下跌倒谷底,在想服务器是不是启动失败了、硬盘坏道了、 CPU 烧掉了……越想越郁闷……
但是大半夜的也没发解决问题,只好先去吃饭,吃到一半,试了下发现网站都可以上了,顿时心情大喜,心想运气真是不错~
等我吃完饭,打算 ssh 连一下服务器,结果竟然是 connection refuse,顿时晴天霹雳,心想完蛋列,肯定是上次升级 openssl 之类的,导致 ssh 服务没有正常启动吧,ssh 启动不了,就啥也干不了了,难道这次真的得去跑机房了?
镇静了一下,忽然想到,原来 ssh 的默认端口号我改掉了,升级之后是不是端口也恢复成默认的了呢,马上尝试,OK! 连上~ 再次欢呼~
一身冷汗啊,只要 ssh 不出问题,其他一切问题都好办,ssh 一挂,就只有跑路了……
下次 etc-update 的时候一定要仔细看了……