Archive for May, 2006

口语培训 & Zen Cart

2006-5-29 21:11 | by 2ndboy

  之前报名参加的英语口语培训今天第一天上课,结果倍受打击,还是老问题——我的词汇量实在是太少了!初中的时候很少背单词,结果每次英语考试分数都挺高,其结果就是我觉得背不背单词没什么所谓。高中的时候遇到了一个好英语老师,此公对应试考试的门路摸的非常清楚,教我们的都是应试秘诀,结果是虽然我高中也很少背单词,但是高考英语是 116 分。大学里几乎对英语彻底放羊,结果就是我现在到了用的时候才发现,读东西的时候很多东西看不懂,想说的时候很多东西说不出,真是有苦说不出呀!

  工作以后彻底发现了英语的重要性,而且简直跟你的发展和薪水息息相关!是时候该好好背背单词了,虽然之前的口语测试中老外对我的表现评价非常高,但那毕竟只能说明我语感还不错,体现不出实际的基础来。木桶盛水的多少是由最短的木板决定的,今后要多记单词多看语法,写下这篇 post,以次明志^_^

—–

  最近研究了开源网店 Zen Cart,虽然客串 PHP 开发者久已,但看了 Zen Cart 的实现还是忍不住要佩服一下,Zen Cart 的架构可以让你不用或者很少修改其原始代码就能对其进行扩展。粗粗悟了一下,发现有些妙处跟 RoR 的思想一致,那就是用惯例和约定俗成来简化程序结构。除了表现层的处理略显过时和数据库抽象没有做好之外,还是很有些东西值得一学的。

  研究之下不禁对自己以前每写一个东西都重造车轮的行为感觉脸红,虽然是客串 Web 程序员,抽象和重用的功力却需要加强呀。

今日杂谈

2006-5-21 19:37 | by 2ndboy

  昨晚看了《南极大冒险(Eight Below)》,GF 超级喜欢里面八条有情有义又机灵的雪橇狗,其实我一直都挺喜欢拉布拉多和哈士奇这两个犬种的,看完这部片子以后更坚定了以后有条件要养一条哈士奇的想法了!今年动物影片不少,虽然看完《帝企鹅日记》以后人们不能真的去养企鹅,但是狗年里一部《导盲犬小Q》和这部《南极大冒险》估计真的能拉动拉布拉多和哈士奇的销量呢!

  我从小到大,家里养猫的次数远多过养狗,猫这种孤傲的动物感觉不象狗那么跟人亲近,但是城市里养狗确实不太方便,毕竟体形和食量上,两者的差别还是挺大的,于是我们家只养过两条狗。我们那边的土狗虽不象藏獒那么威武凶猛但是体形上却也比浙江这边的土狗大的多,估计狭路相逢我们那里的土狗一定是占上风的:)

—–

  最近看过的电影还有《防火墙(Firewall)》,哈里森·福特宝刀不老,虽然这次化身银行计算机安全技术专家,但身上依然还带着印第安纳·琼斯打不倒的硬汉作风。认识并记住哈里森·福特这个名字是在《亡命天涯(The Fugitive)》中他扮演的医生角色,后来才看了他在 80 年代拍的《夺宝奇兵》系列。

  其实这部片子刚开始的时候感觉有点沉闷,谁知后来的情节就紧张的让人喘不过气来,一直到最后坏人罪有应得,一家人安全团圆为止。对了,顺便说一句,好像电影里的安全系统都有个特征,那就是字符终端界面,而非 GUI(当然也有这样的场面)界面,甚至这部片子里面的提示符等特征让人一看就觉得是 Unix 系统,看来 *nix 系统在大家的心目中才是安全牛人的象征呀!:)

—–

  昨天下午去参加了公司排球比赛的赛前训练,不经常做运动的我在 30 度的气温环境下一个小时训练下来已经累的喘不过起来。不过搞笑的还在后头,今天早上起来身上各处的肌肉就又酸又痛,甚至连起床和下蹲这样的动作都有点吃力!唉,老了老了,以后要多参加这样的活动锻炼锻炼呀!

—–

  最近研究了一下著名的开源论坛 phpBB,对 phpBB 的印象有所改善,但是对 PHP 的不足之处又有所体会。用 PHP 构建复杂应用时确实是陷阱多多呀,不支持 namespace 和 module(或类似概念)带来了很多潜在的冲突,尤其是跟其它应用进行互操作的时候,期望以后的 PHP 能够在这方面有所改善!

Crash 惊魂

2006-5-20 10:49 | by 2ndboy

  本来一直下班都很准时的,但是昨天下午被一个问题拖住了。起因是其它 team 在调我们 team 的 dll 时程序异常,由于最近的一个新 feature 是我实现的,所以同事就找到我头上来了。结果调试了一下跟到了一个从来没看过的地方(我们的代码规模实在是太大了,每个人只了解自己 team 负责的部分的一部分代码而已),出错的代码大意如下:

  1. void foo::bar( ... ..., void *pValue )
  2.  {
  3.    bool bTest = (bool)*((bool *)pValue);
  4.    ... ...
  5.  }

  调我们 dll 的同事传过来的值是 1,而上述代码中 pValue 是个指针,结果必然导致访问违例,程序就 crash 了。该同事说这块代码已经很久没改过了,他们一直是这么调的 pFoo->bar( … …, (void *)TRUE );,看了看 foo::bar() 的实现,pValue 确实是被当作 bool 值来使用的。

  找到我们 team 做这一块的同事,他检查了代码之后大吃一惊,说以前的代码一直都是 bool bTest = (bool)pValue; ,谁会改我们的代码呢?用 CVS 查了一下 log,最后找到了“肇事者”,原来是 Mac team 的一个同事,他们升级到 GCC 4.0 以后编译上面代码不能通过,所以就把代码改成了现在这个会导致程序异常的样子。

  这件事其实并不复杂,可是解决过程有点象是在破案一样:)给我们的启示就是:(1)在一个多人协作的环境中(我们目前有十数个 team,几十个人工作在同一个项目中),改其它 team 代码的时候一定要找到相关同事一起进行。(2)这位改代码的同事的代码通过编译是毫无问题的,但是由于上层调用的方式不是拿 pValue 当指针用的,是直接强转传值的,所以修改后的代码必然会出问题。所以,能通过编译的代码未必就能正常运行,修改代码前一定要弄清楚代码的确切含义。

  下班走出公司大楼以后比平时晚了不少,嗯,今天是周末了,可以好好休息一下了。

五一、Postcard

2006-5-13 15:39 | by 2ndboy

  五一放假 7 天,又请了一天的假,回家参加老哥的婚礼。来回坐了 60 多个小时的火车,以至于下了火车还觉得整个人在摇晃!上火车前在书店里买了一本《达·芬奇密码》打算在路上解闷看看,没想到在回家的火车上就已经被我一口气看完了,回杭州的路上只好看火车上的电视来打发时间。

  《达·芬奇密码》这本书目前在国外非常火爆,而且已经被好莱坞改编成了电影。但是我看完全书后实在是觉得不像想象中的那么好看,宗教故事和谜题部分确实不错,但是比较起来我还是会觉得金庸的小说更具可看性:)

—–

I got a postcard from Paris, Ruibo post it there to me. Thanks! It’s a great gift for me. The card is very nice, I have never saw Eiffel tower in that point of view.