Blog

You are browsing the archive for 2009 十月.

The time machine of BuddyPress taking everything nearby back to memory

十月 27, 2009

终于搞明白了 BuddyPress 这个诡异的时间问题。

按照 web app 的常识,主程序设定用户时区便可以正常显示,然而在 BuddyPress 并不是这样,它是 WPMU 的一个插件,它的相对时间首先看齐于 group/forum/status/wire 这些 BuddyPress 组件,对于 WPMU 的 blog 组件实际上处于一个平行关系,再加上 WPMU 的多用户 blog,每个用户的 blog 有可能设置不同的时区,BuddyPress 产生时间混沌看上去是一件不可避免的事情,不过这并不是什么坏事,这只是产品成熟过程中的一个里程碑,目前来说,无论 BuddyPress 的站长身处哪个时区,都必须将主 blog (也就是 WPMU 安装时的默认初始 blog) 的时区对准服务器所在的时区,这看上去像一个内部框架向主框架的反包围,不过这确实解决了 BuddyPress 首页的全站动态 (Site Wide Activity) 时间线混乱的问题,唯一的副作用就是,凡是主 blog 的 post 时间都是服务器时间,而非用户身处的时区了。
(全文 …)

BuddyPress 很酷的时区问题暂时得以解决

十月 25, 2009

/wp-content/plugins/buddypress/bp-core.php, line 1289 – line 1292:

1
2
3
4
$since = $newer_date - $older_date;</p>

<p>if ( 0 &gt; $since )<br />
 return __( '[Use GMT Timezone]', 'buddypress' );

改成

1
2
3
4
5
$since = $newer_date - $older_date - 50400;</p>

<p>if ( 0 &gt; $since )<br />
 $since = $since + 50400;<br />
 //        return __( '[Use GMT Timezone]', 'buddypress' );

50400 是本地时间和服务器时间的时间差,以秒计,henkude 服务器在 UTC-6,而我们都在 UTC+8,因此相差14个小时,也就是50400秒,之所以要在后面再加回去是因为 BuddyPress 的这个 bug 只存在于全站动态 (Site Wide Activity) 里,其他地方都 OK,所以当这个值为负值时,只有全站动态里是正常的,其他地方就只能显示 Use GMT Timezone,所以要加回去才能正确显示。

归根究底,BuddyPress 是 WPMU 的一个插件,不知道为什么会使用两套时间戳算法,在 BuddyPress 官网上找了半天,只找到自己大半年前去问这个问题的帖子,还是被一个老外 moderator 揶揄了一番,郁闷。虽然也有说 trac 里面给出了补丁,可是怎么翻也没翻到,简直是一片混战。论坛上有人了这么个临时解决方法,没时间测试了,貌似也没我这样省事。

Update: 这个方法在 BP 安装24小时后开始失效,据官方论坛称,BP 的相对时间问题会在安装后24小时自动纠正,但实际上 blog 输出到全站动态的时间是正确的,而论坛帖子输出的时间确实服务器的时间而不是用户设定的本地时间,这个问题已经提交到 BP 的 trac,不知道会不会有下文,这实在是个历史悠久的老虫子了。附一张截图说明

henkude – 很酷的

十月 24, 2009

2009年9月4日,网易科技频道于凌晨发稿《谷歌大中华区总裁李开复离职始末》,在互联网上引起激烈反响。网民们通过 twitter新浪围脖雅虎咪咪等 microblog 工具大量传播有关开复老师离职相关的新闻和文章资讯,开复老师在一天之后做出了响应:

请大家不要乱猜测我要做什么。下星期宣布。不是卖关子,是有些细节还没有搞定。给我一点时间和耐心。保证是很酷的。谢谢大家的支持。

请不要乱说我加入IdeaLab。我不加入任何公司,我会自己做一个青年创业平台。下星期会给大家更多信息。

我会留在北京

我目睹并亲生经历了这场中国互联网业界最强悍、公然、预谋已久的 PR,怀着无比“敬佩”之情向此后频频在电视媒体上出现、“受邀”参加各种关于他的创新工场的谈话类节目的开复老师说一声:“你丫真是很酷的!”