2011年3月31日星期四

FW: 转:面条被曝添加食用胶

转:面条被曝添加食用胶

面条被曝添加食用胶

最近这两天,蚯蚓的心情不太好,因为有一个挚友,中学时代的朋友,到现在已经有20年的友谊了。最近查出来了,脑部长了一个脑膜瘤,而且他目前是《网络蚯蚓》两位程序员之一,今天动手术,刚得到消息说,手术相当成功。在这里也祝他早日康复。前几天,蚯蚓还和他讨论得病的原因,都说不清楚,到底是什么原因造成的。办公室的环境,工作的压力,工作的强度,个人的性格,饮食方面,都可能是诱因之一,也有可能是综合因素。不过,这哥们提到一点,他平时很喜欢吃面,这也是蚯蚓知道的,但是联想到最近的一个新闻,突然有点怀疑,是不是面吃多了,才诱发了他的疾病。蚯蚓说的这个新闻,可能网友已经从各大媒体中知晓了,今天在这里,再和大家回顾一下。以下是新闻报道全文:

近日读者投诉称,卖面条的在面条里掺食用胶,买回的湿面条能点着燃烧!记者调查时发现,确有一些经营者在使用化工添加剂,一些粮油店也销售这些添加剂。不法商贩在面条中添加化工产品如食用胶、柠檬黄、蓬灰、复合磷酸盐等,以增强面条的筋度和弹性,有的加入明矾使面条白亮光洁。

  绝对猛料

  面条掺食用胶,湿面条能燃烧

  19日,郑州的赵女士向记者投诉称:"有个亲戚做面条生意,里面掺有食用胶。这样的面条咋煮都不会断,亲戚说卖面条的都加有这种东西,米线里也掺有食用胶,吃起来很筋。我上网一查,很多人说吃一碗米线等于吃进一个塑料袋。"

  20日,家住经三路的张先生对记者说:"中午我从农贸市场买回湿面条,做饭时两根面条掉火旁很快被燃着了。我拿几根面条用火机点燃,想不到面条都燃烧了,烧后有股刺鼻的气味,烧后的粉末发硬,面条里到底添加的是啥东西?"

记者买来湿面条试验,湿面条一点就烧出了火苗



  骇人调查

  面条店用得多,添加剂卖得俏

  3天来,记者在枣庄农贸市场和都市村庄暗访10多家面条店,发现做面条的在面条里掺有添加剂。

  在一家面条店记者看到,面条里掺有一种叫"蓬灰"的添加剂。记者问:"这东西添进去能吃吗?"女店主说:"现在都用这种东西,拉面、面条和米粉中都加有这东西。"

  记者在枣庄市场一面条店以买面粉为名进入店内,见地上放着一瓶落满灰尘的玻璃瓶,内装铁红色添加剂。拂掉灰尘后记者看到是半瓶柠檬黄。

面条店使用的柠檬黄、蓬灰等添加剂,在粮油店调料店就可买到



  记者问这是干啥用的,老板说:"是往热干面里加的。"

  记者在另几家面条店调查时,有店主直言不讳地说:"现在有哪家不用添加剂?"

  记者调查时了解到,面条店使用的柠檬黄、蓬灰、复合磷酸盐等,在粮油店调料店都可买到。

  记者在枣庄农贸市场问几家粮油店,果真有卖的。记者分别买几种后,与一店主攀谈:"这些东西卖得好吗?"

  女店主:"卖得可好了,市场卖面条的都用这个。卖面条的有的在面中加有明矾,这样面条看上去白亮光滑,好卖。明矾加到油条里,炸出的油条好看还不塌架。"

  另一调料店老板告诉记者:"我这里添加剂都卖完了,马上要进货。"

  眼见为实

  记者亲自试验,面条烧出火苗

  记者分别购买了5种面条,在点燃试验后发现湿面条真的可以燃烧,还烧出了火苗,如不人为熄灭,长长的面条可全部烧完。面条烧后发出皮毛烧焦的气味,很刺鼻,剩下发黑的灰烬用手捏感觉非常硬。

  为验证购买的面条与自己做的手工面有无区别,记者和面后做成面条用火点燃,面条着火后很快自动熄灭,燃后的灰烬一捏即成碎末。

  实用提醒

  吃东西多样化,做到食不厌杂

  发稿前记者采访了国际食品包装协会副会长兼秘书长董金狮。他说,明矾在油条中是当膨松剂用的,但不能在所有食品中使用。明矾含有铝,铝很容易在人体大脑、肝肾脾等器官中蓄积,如在大脑中沉积就易引起老年痴呆、记忆力减退、智力下降等。面条的食用量很大,如在面条中加入明矾对人体造成的危害是很大的。(就是因为这一层原因,蚯蚓所以怀疑蚯蚓朋友的脑膜瘤是面吃多了造成的,当然是瞎猜的,没有足够的科学依据,不过到给蚯蚓提了个醒,以后还是吃手工拉面吧)。

  董金狮提醒市民:"面条能燃烧一是含有蛋白质,二是加入了有机食品添加剂。有机食品添加剂分为天然和化工两种。如面条中添加有化工产品就会助燃。最近曝光的水解蛋白,也是可以燃烧的。消费者在选择时要注意选天然添加剂。"

  国家规定要求出售的食品要标注各种成分和比例,但农贸市场上出售的面条、馒头等,都不可能标注什么比例,长期食用对人体就有危害。食不厌杂,消费者不能常吃含有不明添加剂的面条和馒头,要注意经常调剂食品结构,对掺有不明添加剂的食品最好不吃或少吃。

  做个小试验

  亲爱的读者,看了本文报道,请您把自己买来的面条点火烧一下,如果能燃烧,且烧后有皮毛烧焦的气味,说明面条里添加了化工用品,下次您就不要再买那家的面条了。

  给您支一招

  和面时加鸡蛋和盐,面条更筋道

  记者就不加任何添加剂如何使面条筋道请教了面点师贾先生。他说:"要增加面条的筋道,和面时在面粉中加入鸡蛋和食盐,做出的面条口感润滑有嚼头。要想改变色泽和口味,可在面粉中加些绿豆粉、黑豆粉。用胡萝卜汁、芹菜汁、菠菜汁加入鸡蛋和面,面条也很筋道。我不赞成用色素和添加剂,这既没营养,也不利于健康。"

2011年3月30日星期三

FW: 【分享阅读】程序员那些悲催的事儿


 
查看原文请猛击这里

程序员那些悲催的事儿

2011年3月22日 陈皓 发表评论 阅读评论 9,261 次点击    

在StakeOverflow上有这样一个贴子叫"Confessions of your worst WTF moment"(WTF就是What the fuck的缩写),挺有意思的,我摘几个小故事过来,希望大家在笑过之后能从中学到什么――所有的经验都是从错误中来的(我在其中加了一些点评)

我们公司的软件是给警察局用的,那是一个对用来处理被逮捕的人的系统,此系统还需要收集脸部特征和指纹信息,并且,这个系统和会向FBI的系统提交这些信息。当我们在测试这个系统的时候,我们一般都是用我们自己的指纹,当然,数据库联着的是我们的测试数据库。不过,有一次,在我们测试完后,我们忘了把系统切换回生产库,于是我们的测试数据库就联上了生产环境,于是我们的指纹信息和照片就散布到了其它系统中……清除我们警察局这边的还好办,但是,你需要波士顿警察局警司去法院签字才能从FBI的数据库中清除我们的信息。

点评:测试环境和生产环境的数据不要混在一起。

有一次,我需要向新系统中导入一堆数据,因为数据量太大,需要5个小时,只能在夜里来干,在系统需要正式使用前2个小时,数据导完了,此时是凌晨4点。随后,我需要删除一些数据,于是我在SQL命令地上输入了"DELETE from important_table; where id=4"。是的,我没有看到哪里还有个分号,天啊。

点评:这就是加班工作的恶果。另,在delete之前最好先做一次select。

我把我的管理员口令提交到了一个开源软件的源码里。

点评:1)版本管理器里的东西是删不掉的。2)一些用户和口令要hard code在代码里,所以,不要混用代码使用的权限和管理员的权限,小心管理程序的运行权限,为其注册专门的用户。

我为一个很大的银行开发软件,在我的代码里,我为一段理论上根本不可能执行到的代码加了一个报错信息。有一天,不可思异的事发生了,这条报错信息显示在了该银行的1800个分行的超过10000个终端上――"如果你看到这个信息,说明整个系统被Fuck了,回家吧,祝你过得愉快!"

点评:"假设是恶魔",Assume意为Ass � u � me,意为――搞砸你和我。对于一些关键东西,永远不要做假设。小心你言语中的――"可能、应该、觉得、不应该"等词语,程序可不认这些东西。

我远程登录到服务器上加几个防火墙规则。第一件我想干的事是在不允许任何人的任何连接,第二件是,为某个端口打开访问权限。不过,我在做完第一件事后就把配置保存了,结果其生效了……

点评:这样的事经常发生,做远程网络管理的人多少会有那么几次发生这样的错误。在你将你的网络配置生效前,你得想一想,断线了你是否还能登得上去。改配置不要太冲动,生效前检查几次。

我们的代码中有一个模块完美地工作了很多年了,只是代码太乱了。我说服了我的老板,我可以重写这个模块,于是我花了三个星期来重写这个模块。今天 ,我还记得,我的老板站在我的后面看着我,而我在在流着斗大的法汗珠去fix被我重写的"超级漂亮"的那个模块中一个接一个的bug。从那以后,我再也不重写代码了,除非有重大的利益。

点评:这就所谓的屠宰式编程。这个案例告诉我们两个道理,1)维护代码要用最最最保守的方法来进行。2)重构代码前要像一个商人一样学会计算利益。当然,ThoughtWorks的咨询师一定会告诉你TDD,结对,极限等等方法告诉你如果实践重构。但我想告诉你,一个程序在生产环境里运行好几个年能没有问题是一件很不容易的事,那怕其中的代码再烂,你再看不过去,你都要有一个清醒的头脑明白这几点,1)软件的运行质量是远远大于代码质量的,2)你的测试案例是远远小于生产环境的,3)软件的完美的质量,是靠长时间的运行、测试和错误堆出来的,而不是某种方法论

――――――――――――――――

相信大家做程序员这一生中也有很多发生在自己身上的悲催的事儿,欢迎分享。我先分享几个我亲身经历过的事。

一个发生在我的领导身上。

我98年刚参加工作的时候,在某单位网络部门,一次,我们整个部门去给下属单位培训Cisco路由器,结果我们发现带去培训地点的设备少带了集线器HUB,设备连不起来。于是领导很不高兴,质问我们为什么没有带集线器?那几个对领导平时就不满的老员工说办公室里没有集线器了,都借给别的部门了。领导想了想,问我:"陈皓,我记得上次我给过你个集线器",我说,"好像没有吧,我记不起来了,什么牌的?几口的?",领导说: "什么牌子想不起来了,不过我记得那个集线器是一个口的"。"一个口的?!",我心里嘀咕着,"真敢说啊"。但我不敢接话了。那几个老员工来劲了――"哪有一个口的HUB啊,一个口的怎么联两台电脑啊?",领导说:"用两个一个口的不就行了"。领导这话一出,全场一片寂静,无言以对……

后来:我们所有的组员都离开了我们的这个领导,我们的这个领导今天还在那里工作。我想告诉大家,很多时候该走的是领导(包括外企,我上一东家正在裁人,不过我觉得该被裁掉的应该是那些经理)。我们的领导经常出这样或那样的笑话,这让我随时随地地警醒自己――"不要当一个被人笑话的经理",于是,今天我还在努力地学习技术。

另一个发生在我身上

刚刚接触Linux的时候,还不是很懂,那时的PC还只有奔3,编译公司的程序好慢啊,有时候为了调查一个问题,需要不断地打log,来来回回地编译,很不爽。直到有一天,硬盘不够了,df一下,发现/dev/shm还有空间。于是,把全部程序copy了过去,发现编译起程序超快无比,爽得不行。于是就把工作环境放在/dev/shm下了,连开发都放在这里了。这一天,开发一个功能,改了十来个文件,加班很晚,觉得基本搞定,大喜,回家睡觉。第二天一来,发现/dev/shm下空了,一个文件都没有了,问同事,同事不知,同事还安慰我说,上次他的文件也不知道被 谁删了,于是我大怒,告老板!老板也怒,发邮件到整个公司质问大家谁删了陈皓的程序,无人应答。IT部门答,"昨晚唯一的操作就是重启了linux服务器,什么也没干,不过我们天天备份服务器,可以恢复",IT部门问我丢的文件在哪个目录下?于是,我reply to all � "在/dev/shm下……",哎,人丢大发了……

后来:我很感谢我以前犯的这个错,从那天以后,我开始立志学好Linux,这个错误让我努力,让我发奋。所以,我想告诉大家――尤其是刚出道的程序员,你们要多多犯错,要犯错那种丢死人的错,这样你才会知耻而勇

再来一个发生在我同事身上的

01年,我们开发银行系统,在AIX上开发,RICS6000很贵,只能在客户那里开发,开发进度很紧张,慢慢地硬盘就不够用了,系统中有大量的垃圾文件,于是需要清除一些文件,于是有一个同事写了一个脚本,可以自动清除的各种不重要的文件,里面有一条命令大致是这个样子" rm -rf ${app_log_dir}/*",意为清除程序运行的日志。为了使用这个脚本,需要在root用户下运行,一开始还不错。直到有一天,某人一运行,整个根就没了。搞得整个团队只能用一周前的备份重写已写好的代码。后来,才发现原因是${app_log_dir}变量为空,于是成了"rm -rf /*"……

后来:这个事后,我的那个同事,把rm命令改了名,并自己写了一个rm命令,把删除的文件先放到一个临时目录下。而我也因为这个事情,到今天,每次当我在root目录下使用rm时,敲击回车的手都是抖的。(另,rm时永远使用绝对路径)这里,我想告诉大家――犯错不可怕,可怕的是不会从中总结教训,同一个错犯两次

欢迎分享发生在你身上那些悲催的事。

 

2011年3月29日星期二

FW: 【分享阅读】Fix Bug的五个阶段


 

查看原文请猛击这里

Fix Bug的五个阶段

2011年3月24日 陈皓 发表评论 阅读评论 2,886 次点击    

下面的文章和《各种流行的编程方式》有异曲同工,请你不要理解错了。本文来源,翻译如下:

――――――――――――――――――

一个非常严重和困难的bug,能够成就一个饱经沧桑深受压力的有经验的专业程序员的职业生涯。经受这种考验的创伤程度,相当你受到了一次严重的身体伤害,离婚,或是家庭成为的离世。

研究人员在研究了计算机编程心理学后,得出了一个程序员们在解决一个困难的bug时的心路里程。这些不同的境界,很像为大众所知的Kübler-Ross Stages of Grief(这个模型描述了人对待哀伤与灾难过程中的5个独立阶段(否认,愤怒,耍赖,抑郁,接受)。绝症患者被认为会经历这些阶段),而且原因都很相似。就好像死亡所伴随的悲伤一样,fix一个bug是一个过程其初始化了一个事件,一开始是拒绝相信,其造就了你苦闷的情绪并开始逐步影响你的心智。这种苦闷的情结果会让你纠结要努力忍受,最终会你会找到一个满意的结果。

了解下面这几个bug-fixing的阶段,会让我们更好的生存下来,并持之以恒,最终带来……关闭我们所有的bug的结果。

第一阶段:抵触

本阶段的状态: 多疑 Skeptical. 生气 Offended. 易怒 Petulant.

1. 不理睬

也许这个bug会安静地离开。

2. 标记上"不是bug"

也许这是用户的错,或是本地配置有问题。是的,我确信就是那样,一会就会好的。

3. 就是一次小故障

我想这就是一次小故障,很奇怪地发生了一次,它不会再发生的,虽然没有搞清楚是为什么发生了,不过这就好像我们的数据库,网格,浏览器或别的什么打了几个嗝一样。一会就会好的,我确信。

4. 躲藏.

我要休几天病假,也许他们会把这个bug转给别人的。

5. 标记为"修改需求中"

你看,我是按照需求实现的。如果你们想要改这个行为和UI,就一定要修改需求。也许他们会决定就这样了。

6. 需要更多的信息

我不能确定这是一个bug,除非我能在错误日志中看到一条特定的报错信息。

7. 转给其他人

我调查这个bug中看到了其它模块中我看不懂的数据,问题很大。我应该把这个bug转给开发那个模块的人。我可以在我的模块中检查一下那个边边角角的情况,但是正确的fix应该是在别人的模块中。反正那个在别的国家,我见不着他。

第二阶段:接受

本阶段的状态: 认命 Resigned. 被打击 Defeated. 被激怒 Annoyed.

1. 接受现实

行了,行了,行了!这是我的bug,我会修正它的。

2. 把这个bug放到最后

也许,我可以在我需要fix这个bug之前找到一个新的工作。

3. 和你的经理讨价还价

好的,你看,我可以正确地fix这个问题,不过我需要一个月。也就是说,我可以给这个问题贴个创可贴,那不会真正的解决它,但是我们可以避免用户的抱怨,这可以为我们赢得几天的时间。

4. 为这个bug标记一个无耻的时间

上帝啊,我希望这时间够了。

第三阶段: 投入和沮丧

本阶段的状态: 眼花 Giddy. 头晕 Light-headed. 紧张 Nauseous.

1. 开始调查

我能搞定它,我能搞定它!只需要小小的调整一下,小小的关注一下,多一点咖啡因,再加上一点时间,我能搞定它。

2. 迷惘

Shit. 这太扯了。我居然没有一点进展。这代码真是乱。这样的代码居然能编译和运行,真TMD的神奇,我有机会能搞清楚它什么不正常吗?

3. 再次躲藏

你看,很对不起。我不得不要去切除我的阑尾。再一次,是的,既然你提到了它,我的确有两个阑尾。现在我一个也没有了,你高兴了吧?。

4. 犯贱

好吧,总之,你到底期望什么?想让我在一个没有高级调试器的环境下改这个BUG。我是什么?千里眼吗?我在我的Commodore 64上一个更好的调试器!

5. 瞎搞

看看我试试这么改?Kao,这样不行。要不然这样搞?也不行。那么那样搞呢?Shit,居然变得更糟了。

6. 绝望

我不可能fix这个bug了。我是个糟糕的程序员。我太笨了。我在这个满是聪明人的地方干什么?迟早他们会知道我的能力太差,那时我就玩完了,在这也混不下去了。

7.耻辱

我的经理问我为什么我用了一个月的时候来fix这个只需要两天就可以解决的bug?老实说,我不知道怎么去读日志信息,我搞坏了我们的编译脚本。现在,我不敢去让别人来帮我,因为这样只会让我显得更愚蠢。

8. 恐慌!

这事变得比我相像的要复杂!而我开始觉得复杂的事变得简单……而我觉得简单的事变成需要重定半打的类。为什么我以前在我的经理前拍着胸说我可以搞定这个事?

9. 通宵工作,远离朋友和家人

(语无论次的喃喃自语,一阵一阵地大声咒骂)

第四个阶段:愚蠢的快感

本阶段的状态: 感恩 Grateful. 安心 Relieved. 极端地自我欣赏 Awfully Impressed with Yourself.

1. 醒悟

哦!我终于明白怎么搞定它了……

2. 写正确的代码

我真NB,我是编码机器!

3. 测试

牛!通过一个测试。真牛!又通过一个测试了。靠!有测试失败了。这是为什么……

4. 隐藏测试失败

反正这完全是一个不重要的测试案例。没有人会检查它,这个测试真是毫无意义。

5. 提交代码

我太牛了,厨房里有个馅饼可以庆祝一下吗?

6. 关闭 bug.

我听说那里有个馅饼可以庆祝一下

第五个阶段: 与"完成"肉搏

本阶段的状态: 焦燥不安 Twitchy. 神经过敏 Nervous. 迷信 Superstitious.

1. 有人reopen了这个 Bug

真的?他们发现了你引入了另一个bug? Shit � 那只是一个不重要的案例永远不会发生的。

2. 修正以前的修正

是的,我甚至检查了员工的年龄是一个虚数的情况,就是为了防止出错。

3. 关闭 bug

是的,贱货,你被关闭了。全部都关了,再也不用心烦了。

4. 发誓以后再也不干这种事了

5. 大家都意识到你现在是那个模块的专家了

哦,不!现在他们又给了我三个那个模块的新bug

没关系,现在你只需要GOTO 第一个阶段。

此外,作为一个工作中的程序员,你会永远经历这些烂事,直到你――死亡,退休,或是被升到管理层。

(全文完)

 
Regards,
--
Fan, Kai-Li
Telephone : +49(9191)-18-6165
Examination System Team, CT R&D SW, SSME