phpBB论坛优化拾零

今天对FontRouter论坛进行了少许的优化。当初为了图省事儿,直接用Dreamhost的One-click Install架设了一个基于phpBB的论坛,没想到后期维护起来竟然如此麻烦。

phpBB没有一个便于扩展的插件机制,所有的第三方优化都基于对代码的直接修改,美其名曰“MOD”。不用我在这里评论,自己动手安装过MOD的人恐怕都对其“易用性”深有体会吧。不过话说回来,MOD的优势在于性能和灵活度,不必浪费冗余的代码支撑繁复的插件stub,所以自然要快不少,这恐怕是Dreamhost在One-click Install中采用phpBB的最主要原因吧。从另一个角度来讲,通过MOD的安装和调整,我倒是在PHP语言的学习上进步了不少。 🙂

今天主要进行了一些本地化调整和SEO工作:

(1)调整了subSilver模板的CSS,将所有11点阵以下的字体全部提升至11点阵,这是中文字体显示的底线。只因我一直使用Firefox(设置了强制最小字体),所以时至今日才发现这个重要的本地化视觉缺陷。

(2)将subSilver模板中默认的内嵌CSS替换为外部.css文件引用(修改template/subSilver/overall_header.tpl文件)。这个其实说不上是优化,因为我一直没有注意到subSilver模板的这个默认行为,导致每页的带宽消耗白白浪费了10k余……

(3)修改了页面TITLE的生成规则,去掉了冗余了文字,加入了站点描述:
首先是修改template/subSilver/overall_header.tpl文件,将原有的<title>…</title>替换为:

<title>{PAGE_TITLE} :: {SITENAME} – {SITE_DESCRIPTION}</title>

然后分别修改view_topic.php、view_forum.php,去掉“$page_title=”后面的冗余部分,只保留主题/论坛名。

虽然只是一个小小的调整,不过其SEO效果却是不容忽视的,特别体现在AdSense的内容相关性实实在在提升了不少。 (:

(4)调整了Google AdSense的布局。撤掉了原来页面顶端和底端的两个横幅广告(事实证明,这种放置不恰当的BannerAd完全不会带来任何Click),代之以Post顶楼右侧的小幅广告。希望这个调整能为疲软的AdSense带来一点改观。(此前的点击率一直停留在10-5这个数量级上,差不多快对AdSense绝望了…… X-( )

(5)安装了phpBB Google Sitemap Generator v1.0.1。这个MOD可以为你生成一个体面的Google Sitemap,不过Google Webmaster工具报告却提示其生成的Sitemap有语法错误。XML Validator检查了一下,发现它在<sitemap>下使用了<changefreq>,这是0.84的标准语法所不支持的,修改代码去掉之后就OK了。

我“芯”未老

在最近HDTV/HDRip汹涌大潮的席卷下,我的旧电脑已倍感不支。一遇到高码率的H.264电影,音画异步的状况常常是惨不忍睹。好在当年攒这台电脑时亦预见到了今日可能面临的困境,潜藏在CPU深处的那股超频异禀也终于盼到了大展宏图的这一天。

当初刚买这台电脑时,为了不致辱没我“超频狂人”的称号,虽需求并不强烈,但也小超了一点。Athlon 64 2800+的CPU在225的外频下一跑就是两年。千里伏骥,唯仰天嘶鸣,实在委屈它了……

华硕K8N 这块主板虽然在超频界并不被看好,但既然到了我的手中,那也绝非池中之物。三压分调、外频双锁,再加上过频保护的金钟罩,上手的分量可谓恰到好处。

闲话不多说,直接来看超频的成果吧:

3850+ (275 x 9, DDR333 @ 458 & 1T, HT 3x @ 825) 稳定
3920+ (280 x 9 @ 1.6V, DDR333 @ 466 & 1T, HT 3x @ 840) 稳定
4060+ (290 x 9 @ 1.6V, DDR333 @ 482 & 1T, HT 3x @ 870) 进入WinXP,播放H.264片刻后死机
4100+ (295 x 9 @ 1.6V, DDR333 @ 491 & 1T, HT 3x @ 885) 能点亮,但无法进入WinXP

上述实验充分展现了这块Athlon64的超频潜力,总算不枉当年花的大价钱了。在电压方面,我还是比较怜惜,只加了0.05V,毕竟夏天的脚步已悄然临近了;另一方面,本着追求性能平衡的理念,我没有打算通过牺牲内存和HT的频率来换取CPU“一枝独秀”。

最终,经过几天时间的考验,锁定“3920+”为最佳的稳定频率,基本实现了绝大多数码率的H.264正常播放。:)

不过问题也随之而来了,首先是发热量,以往通过“Cool&Quiet”的调控,CPU风扇几乎未曾全速运转过,但现在只要CPU稍显繁忙就会听到风扇匆匆提速的脚步声;与此同时,能耗明显增加,特别是夜间下载的时候,颇为浪费。

于是,寻找一条平衡性能与能耗的道路就显得非常迫切了,浮现在我脑海中第一个念头就是“软超频” —— 一个曾经叱诧风云却渐已被人淡忘的名词。以往,“频随芯动”的境界只有在AMD或Intel施展独门秘传的绝技时才能有幸得见,但借助“软超频”,我们已然可以任意驾驭这种上乘心法,在泰山压顶时施展出雄浑内力,在凌波微步间轻扬起拂柳之袖。

下面就祭出我所使用过的传说中软超频的“七种武器”,挨个掂量掂量。

nVidia nTune
师出武林正宗,可惜学艺不精,眼高手低。
在调节HT-multiplier,调节CPU外频或AGP频率时常常死机。

A64Tweaker 0.31/0.6beta
无师自通的武学天才,精通内存调教之术。可惜中道颓丧,缺乏应变乏术。
完全没有正确识别出nForce3 Pro的内存参数来。

A64Info
与A64Tweaker有着极深的渊源,武艺一脉相承,青出于蓝而甚于蓝。
最求极致的性能是他的拿手好戏,可调节的内存参数让人眼花缭乱。

ClockGen 1.0.5.3
系出名门,秉承师门戒律,只修行纯正内功,不屑于旁门左道。
仅限调节CPU外频、AGP频率。

ClockGen for nVidia nForce3 1.04
与ClockGen为同门师兄弟,但学艺泛而不精。
功能部分有效,可调节FID、调节VID无效、调节CPU外频或AGP频率时死机。

ATI Tool
ATI显卡的软超频工具,地位无可动摇。与CPU软超频堪称“双剑合璧”!

HoeKey
这不是那个小巧强悍的热键工具么?没错!它的“指点”,再加上ClockGen for nForce3,那才真正发挥出了软超频的精髓!正所谓“笑看风云,尽在弹指一挥间!”。

FontRouter2 for Symbian 9 启动第一轮测试

发布页面:http://fontrouter.oasisfeng.com/forum/viewforum.php?f=5

由于Symbian 9安全机制的限制,所有被Server调用的ECOM插件都必须至少拥有ProtServ权限。为什么有这个限制呢?Symbian 9安全体系的介绍中给出了缘由:

1. The capabilities of a process never change. There is no way of adding capabilities to a process, nor of removing capabilities from a process. All DLL code runs at the capability level of the process that loads it.

2. A process cannot load a DLL with less capability than itself. The need for this constraint follows from the fact that all DLL code runs at the capability level of the loading process and therefore must be at least as trusted at the loading process. DLL capabilities only reflect the level of trust that the loading process can place in them; they don’t actually authorise anything.

但就是因为这个机制本身缺陷而强加的约束,使得完全用不到“ProtServ”权限的FontRouter2也无法采用自授权证书方式发布。在这一点上,实在应该对Symbian 9的DLL安全机制设计提出批评,看看在Symbian开发者论坛上因为Recognizer Plugin所面临的同样问题而引发的争论,就可以理解众多Symbian 9开发者的感受了。

言归正传,正是因为上述原因,目前FontRouter2 for Symbian 9只能采用“未认证安装包”的形式发布,它不能被直接安装至手机中。用户必须首先向Symbian Signed申请开发者证书,并使用获得的证书自行对安装包进行授权,才能在手机上正常安装和使用。详细的步骤和注意事项可以参考以下文章:

http://www.gosymbian.com/forum/viewtopic.php?t=757 (英文)
http://blogs.forum.nokia.com/view_entry.html?id=429 (英文)
http://bbs.0110.cn/redirect.php?tid=303848&goto=lastpost&frameon=no (中文)

修复Blog在IE7下的显示问题

因为用惯了Firefox,再加上兼容性方面的原因,一直没有安装IE7。有朋友在评论中反映我的Blog在IE7下打开时存在的问题:页底部分飘上来,挡住了第一篇文章的内容。

今天用IE7试了一下,果然如此。于是在网上查了查关于IE7对页面布局的影响,发现问题果然出在典型的“width/height误用”上。刚开始试着去掉了div的height属性,发现IE7/6倒是正常了,可Firefox反倒不显示“background”属性指定的背景图片了,真是怪哉……

在网上几经周折,终于找到了一个可以兼顾Firefox和IE的解决方案:用“min-height”替代原来的“height”属性。

最后,感谢崇尚环保主义精神的IE7 Standalone:http://tredosoft.com/IE7_standalone/

《生日快乐》

今天是我的生日,正巧硬盘里躺着一部刘若英、古天乐的《生日快乐》,于是很投入的看完了整部电影。不知是因为电影情节真的太伤感,还是因为自己独自一个人过生日很容易产生共鸣,看完电影后,眼眶竟然有些湿湿的。这种感觉就像当年第一次读完《第一次亲密接触》时一样,虽然只是淡淡的忧伤,却仿佛快把自己融化,分不清楚眼前是现实还是故事……

Happy Birthday

小米和小南,彼此深爱着对方,也都能体会到对方的那份感觉,但小米却因为害怕失去,始终保持着那份游离于好朋友和恋人之间的关系,这让小南一直琢磨不透她的心思。这种若即若离的关系,加上两人后来因为学业发展而彼此远离,让这段感情始终无法开花结果。当故事情节发展到尾声时,我想所有看完这部电影的人都会为之心酸吧,大家都会在心中默默祈祷不要让小米知道真相……

默默回想,相比之下小米还是幸福的,至少她爱的那个人是深爱着她的,至少还有那么多值得回忆的甜蜜,至少在生日这天还有一个约定的牵挂……

搞定FontRouter2 @ S60v3

  今天终于彻底解决了S60v3上FontRouter2无法拦截到部分字体请求的问题(这个问题其实也存在于原S60第二版的环境下),还是多亏IDA帮了大忙。到目前为之,已初步在模拟器上完成FontRouter2向Symbian 9下两个平台——S60v3和UIQ3的移植验证。

  大家看到下面这个图一定会猜想“哇,这是什么界面语言?” 呵呵,其实模拟器里跑的还是英文版的S60v3,只不过我让FontRouter2运行在一个特殊的调试模式下,以方便验证是否成功拦截了所有的字体请求。至于下面这些字符是代表什么含义,相信聪明的你早已猜出来了吧~ 🙂

Preview: FontRouter2 for S60 3rd Edition

午夜灵异事件

午夜时分,正当我沉浸在Pop Music中惬意的Coding时,突然间不知从哪里传来一声低沉而恐怖的号角,虽然夹在音乐声中,但却异常刺耳。而这声音…… 分明就是从我的房间里发出来的。正当我惊疑未定之际,又是同样一声号角,比刚才更加清晰有力。

“一定从音箱里发出来的!” 我立马暂停了正在播放的Pop Music,竖起耳朵警觉的倾听辨认声音的来源。整个房间里顿时静的可以听到自己的心跳。(我的机箱噪声控制的很不错哦~)大约10秒钟后,号角声再度响起,我一瞥时钟,12:00:20!从零点整开始,每隔十秒准时一声!

我的第二反应立刻想起了当年在学校里流传甚广那个吓死人不赔命的“恐怖图片”恶作剧。“靠!一定是哪个万恶的个人网站搞的鬼!” 于是,我立马以最快的速度关闭了FireFox中所有的标签页。

当时钟的秒针无情的跳到30时,那追命的号角声又一次准时想起!这一次我是真的有些坐不住了,“完了,该不会是中了某个杀人木马了……” 来不及细想,我争分夺秒的开启任务管理器,飞快了扫描并结束掉所有可疑的进程。

可是号角声依然不为所动的再度吹响,我不禁为之全身毛骨悚然。再也坐不住的我立马从椅子上弹起,退后三丈,用眼角的余光扫射了一遍整个房间,不放过每一个角落,然后,再将散乱的目光游移于屏幕四周。因为我也来不及细究这恶作剧的肇事者,但我断定LCD里一定会在转瞬间跳出一个女鬼来,现在只要我避免目光聚焦于屏幕,自然不会被恐怖的图像所震慑。

时间仍在无情的流逝,在经过整整六声号角之后,当分针开始挪动它的身躯时,没有了第七声号角,但我却听到了撕裂肺腑的一声铡刀劈下的巨响。在这一瞬间,我不禁纵身一跳,紧接着脚下一软,坐倒在了床沿。

奇怪的是,屏幕上并未如我预想的那样出现恐怖的女鬼,但却弹出了一个FireFox页面:“FEBE结果报告……”

罢了罢了,原来是这个Firefox扩展搞的鬼!不过出乎我意料的是,那6+1段怪异的声音竟然只是Firefox FEBE扩展备份前的预提示音而已,结果险些让我丢了魂魄。

有软如斯,真是暴汗啊!君若不信,但可装此扩展一探究竟~ 不过那种恐怖的经历怕是再难以体会得到了……

Dreamhost启用新的Promo Code规则

今天收到Dreamhost的Newsletter,其中提到了新的Promo Code规则——“Promo Codes That Give FEATURES!”。看起来比较有意思,不过按照Dreamhost的一贯作风,应该只不过是一种新的营销手段,而不会是什么实实在在的“福利”吧。

到管理面板中阅读了一下新的Promo Code规则,原来所谓“提供特性的Promo Code”,其实就是通过牺牲奖励的金额而换取被推荐人获得一些原本需要额外花钱才能获得的特性,具体效果如下:

Extra Disk Bonus? [0 – 100%]
You lose $9 of rewards per 10% disk you give

Extra Bandwidth Bonus? [0 – 100%]
You lose $9 of rewards per 10% bandwidth you give

Free Domain Registration Bonus? [0 – 6]
You lose $15 of rewards per free lifetime domain registration you give

Unique IP Bonus? [0 – 3]
You lose $30 of rewards per free lifetime unique IP you give

虽然为Promo Code增加上述特性就意味着要么牺牲你所能获得的奖励(非全额Promo Code),要么牺牲被推荐人的折扣额度(全额Promo Code)。但值得注意的是,上述特性的后两项:“免费域名”和“固定IP”所扣去的奖励金额却远比直接购买该项服务更便宜,因为它们是“终生免费(Free Lifetime)”(即使直接购买Unique IP服务,也需要每年$47.4),也就是说,你只要牺牲一点折扣就可以换取终生免费的对应服务,只要你还在继续使用Dreamhost!

也许你会想,Dreamhost这次难得真的是这么“慷慨”了?其实,正如上面所说,“终生免费”是和你的帐号相绑定的,如果你使用了这个提供终生免费特性的Promo Code,就更难以摆脱Dreamhost的诱惑了。好一招留住客户的高明手段!比此前的营销技巧更具杀伤力!佩服佩服!

我们且不要完全从营销手段的角度去看待这次Promo Code的升级,只要充分发掘其深层价值,还是可以造福真正需要这些特性的朋友!

我从上述四项特性中挑选了最具价值的“终生固定IP”(它是架设SSL所必备的条件)和“终生免费域名”特性,提供如下Promo Code:

LifetimeIP Full Discount: $67 ($97 – $30 for Free Lifetime Unique IP)

LifetimeDomain Full Discount: $82 ($97 – $15 for Free Lifetime Domain Name)

当然,如果你对上述新特性不感兴趣,仍然可以使用以往的全额Promo Code: SAVE97NOW(Full Discount: $97)。