Monthly Archives: October 2007

我在南京成功的扶起了一位摔倒的老太 (转载自两全其美)

  长达两月无休止的加班终于结束,终于有半月的假期供我挥霍了。于是,我一人背 起了行包,开始了我的快乐自由行。   第一站,我选择了美丽的六朝古都——南京。住在便宜的旅店里,一大早就背起包 来到了著名的玄武湖边游逛,我喜欢这样自由的在一个陌生的城市里漫游,真切感受这 城市的生活气息。   好多人在晨练,老年人、中年人男男女女,一派祥和的样子。远处一个步履蹒跚的 老太,大约60多岁,正走下几级台阶,颤颤悠悠,让人捏把汗。在下最后一个台阶的时 候,老太脚底一拌摔倒在地。   四面晨练的人围了上来,我也快步跑过去。老太侧卧在地无法起身,嘴里“哎哟哎 哟”声不断。围观的旁人你看我我看你,都没有上前相扶的意思。看见我这个背着行包 的外地人从远处跑过来,大家自动给我让开道,众人眼睛都看着我,仿佛在说:“年青 人力气大,你扶老太起来吧!”   有没有搞错,大家都是每天一同晨练的老伙伴,摔倒了都没人扶,这是什么世道? 老太的“哎哟哎哟”声不断传入耳,激起了我无限的同情心。谁叫我是一个古道热肠、 乐于助人的大好青年呢?   老人有难,无人相助,我上!   赶紧从背包里掏出一张纸,上书《救助老人安全宝典》,快速扫描了几眼划了红线 的要点。   对于一个象我这样富有爱心的人来说,助人是快乐的。但是,助人是需要有标准程 序的,特别是扶助摔倒在地的老太,就象ISO9000,次序不能乱、手续不能缺,否则,助 人的后果是很严重的。   下面,就请各位跟随我一起,重温我扶起老太的标准动作程序。   1、 通知家人、亲友前来处理:   我蹲下身:“老太,你好,你还记得家里的电话或子女亲友的手机号吗?我可以帮 你打电话叫他们来。”   老太努力回想:“哎哟,摔的有点头晕,记不起什么电话号码了。”   ▲▲▲《救助老人安全宝典》用醒目的粗黑体大字写明:最佳救助方式,通知家人 亲友!如无法联系,继续以下程序▲▲▲   2、 问老太姓名及子女职业:   我:“老太,请问你姓什么?”   老太:“我姓徐,哎哟!”   我惊得连退三步:“什么,你难道就是网络江湖传说中著名的徐老太!?”   ▲▲▲《救助老人安全宝典》用醒目的粗黑体大字写明:徐老太,中止救助程序! 报警处理。▲▲▲   老太:“错了,我不是徐老太,哎哟!我姓许,允许的许。”   我抹了抹汗:“哦,听错了,是许老太。请问你有子女吗?从事什么职业?”   老太:“我有一儿子,在电力公司工作。”   ▲▲▲《救助老人安全宝典》用醒目的粗黑体大字写明:子女在警察局、法院、检 … Continue reading

Posted in 生活杂记 | 3 Comments

中西差异之精确与模糊

这几天中午都是在公司楼下的餐厅吃饭,每次当我排队等餐的时候都会看到大厨拿着一个万用表一样的东西,把探针插进每一块烤着的肉里面看看,然后决定是继续烤还是盛出来,据说那个东西是通过测量肉的电阻来判断生熟的。我在想美国烤牛排的时候八成熟是不是就是用这个东西量出来的。 对比中国菜谱中的“食盐少许”,“酱油少许”这种字样,老美做起菜来可就累多了,超市里的厨房用具里有各种称重的,测温的,还有量体积的,难怪能有肯德基麦当劳这种精确到薯条要甩几下的故事。 我无意去评价两种方式那个更好,只是想说这就是文化差异,厨师会注意这些,程序员在做international coding的时候也应该注意这些语言之外的文化差异。 完了突然想起来,模糊逻辑是中国人首先提出来的吗?

Posted in 生活杂记 | Leave a comment

使用std::string容易犯的一个很难发现的bug

前一阵子同事说他的一段code老出AV,但是查不出来什么毛病,让我帮他看看。仔细看了半天才发现了这么一句: string s = "xxxx"; …. printf("%s", s); 他的本意是输出这个字符串,因为string有const char*的类型转换操作符所以他就没有写。可是却忘了printf是一个变参函数,后面的东西都是。。。里面的,这就意味这编译期间编译器根本不知道printf需要什么参数,编译器所生成的应该只是将这个对象的第一个dword压栈,然后调用printf。然后printf解析格式化字符串,发现s%后便试图按照const char*去解释对应的参数。 这样如果string的memory layout中第一个dword不是所对应的字符串的地址,那就可能出问题了 将其改成printf("%s", s.c_str())之后,就没有问题了。 后来问同事原来他的代码以前是用char *的,后来做了一次refactor,用string来代替所有的字符指针,便出现了这个问题。当时就想把这个问题写下来后来因为忙就忘记了,但是上周末跟另外一个同事改写他的代码的时候,又遇到了同样的问题,想想还是写下来留个纪念吧

Posted in Win32 Programming | 11 Comments