2010年11月16日星期二

【腾讯网】上百宝宝疑喝多美滋奶粉患肾结石 检验结果成谜

编者按:在过去一年里,多美滋奶粉被媒体曝光小虫、白线等各种异物,并对麦芽糊精含量予以回避。而在去年初,上百名食用多美滋奶粉的宝宝患肾结石。最终药监部门检测结果是多美滋不含三聚氰胺。专家指出,没有三聚氰胺奶粉仍可导致结石。最后在多家媒体的非议中,多美滋结石事件草草收场。但是,究竟谁应该对百名肾结石宝宝负责?

多美滋奶粉曝百名结石宝宝

去年北京青年报报道称,“截止到2月25日,我这里统计在册的‘结石宝宝’已达124个。”“结石宝宝之家”的创办者赵连海说。赵连海的儿子曾被查出患有肾结石,尽管他的儿子已恢复了健康,但他还是决定为更多的结石患儿做点事。去年9月,他发起创办了“结石宝宝之家”,想要收集患肾结石的宝宝资料,再将相关材料送到卫生部。

赵连海介绍说,这124个“结石宝宝”中,有100个一直都是吃多美滋奶粉的,而期间没有吃过其他任何品牌的奶粉。另外24个也都以吃多美滋奶粉为主。“我们相信质检总局的证明,奶粉中不含三聚氰胺。但是,让我们不解的是,为什么不断出现‘结石宝宝’,问题到底何在?奶粉中是不是含有其他导致肾结石的物质?”

多美滋奶粉未检出三聚氰胺

多个知名网络论坛网友爆料,广东、浙江、四川等地多名婴幼儿,因饮用中法合资的著名品牌多美滋奶粉后,出现肾结石或肾钙化症状。而多美滋中国公司则发布声明称,多美滋是经过评估获得了生产销售婴幼儿配方奶粉资质的公司,产品完全符合国家有关标准后才允许上市的。

去年2月13日上海市质量技术监督局在其网站上发布消息:从2008年9月中旬上海市质量技术监督部门驻厂监管以来,多美滋婴幼儿食品有限公司生产出厂的932批多美滋配方奶粉,涉及产品6188.544吨,经国家指定的检验机构检验,全部未检出三聚氰胺。多美滋婴幼儿食品有限公司 2008年9月14日前生产的多美滋配方奶粉,企业共送检1741批,涉及产品25048.84吨,经国家指定的检验机构检验,同样全部未检出三聚氰胺。

专家观点:没有三聚氰胺奶粉或可导致结石

无三聚氰胺的奶粉与结石之间到底有没有关系?记者采访了相关专家。

中国奶业协会理事兼广东省奶业协会副会长王丁棉,向记者列举了除了三聚氰胺外三种可致婴儿肾结石的情况。一是,“高渗透压”现象,奶粉中的蛋白与钙,如果偏高,当碰到天气很热,小孩喝水又少,甚至体重偏低的情况时,将出现高渗透压,磷酸钙就沉积到了肾脏,导致结石;二是,奶粉配料中的乳清粉如果质量较差和盐分较高,也会产生结石;三是,奶粉中残留抗生素,比如绿霉素,就会与奶粉进行化学反应,而产生结石。

河南省人民医院泌尿外科主任医师张祥生告诉记者,产生结石的原因不唯三聚氰氨一种,尿酸、胱氨酸、磷酸钙、磷酸镁胺、草酸等等,多了,或尿路畸形的人喝水少了,都能导致肾结石。

部分家长质疑检验结果

上海质监总局发布公告宣称,多美滋婴幼儿食品有限公司生产出厂的932批多美滋配方奶粉(涉及产品 61885.44吨),经国家指定的检验机构检验,全部未检出三聚氰胺。此外,2008年9月14日前生产的多美滋配方奶粉,企业共送检1741批,涉及产品25048.84吨,经国家指定的检验机构检验,也全部未检出三聚氰胺。

东方网:多美滋疑云还待最终澄清

我们还注意到,多美滋公司的声明中,将此次危机的起因表述为“毫无根据的谣言”。据媒体的报道,此次问责多美滋的是患儿家长,这些家长完全是自发联合自发统计的,这其中的“谣言”何在?难道多美滋在指责报道这些患儿家长自发控诉的媒体传播了谣言?

我们还需看到,上海市质检局公布的检验结果中,并未说明多美滋公司送检奶粉具体的生产时间区间,亦未说明送检样品是否为一个时间段中产品的全部批次样品,因此,做出“所有多美滋产品均不含三聚氰胺,符合国家标准”似乎有欠妥当,这里的“所有”二字还需更清晰的交待。

关于多美滋的疑云还未散去,三鹿的前车之鉴不止令人胆寒,更应催人自省。

挑战多美滋,本就是一场失衡的较量

去年2月18日,国家卫生部介入调查多美滋事件,派出专家在凯里市黔东南州医院给唐鑫宜琳复查,孩子去年就是在同家医院查出双肾结石的。这次检查的结果,孩子的结石消失了。蒋亚林几乎是对着手机高兴地大声吼出来,把远在浙江工作的丈夫吓了一跳。但冷静下来,她心中的疑问不减。“孩子没采取任何治疗,2月1日我带她到认识的医生(蒋拒绝透露是哪家医院)那里检查,还说双肾有结晶,怎么一下就消失了呢?多美滋这结石到底是什么成分,怎么来无影去无踪?”

多美滋事件中,蒋亚林是第一个站出来面对媒体说话的人,但她并不是第一个发现多美滋有问题的人。2008年11月21日,西安母亲王梅与英特儿公司分列原告、被告,案件在西安一审开庭。王梅在起诉书中表示,去年3月13日,她购买了两罐多美滋奶粉,批号为2E8029-0411,在奶粉中闻到了强烈的化学气味。经与英特儿公司沟通,对方承认包装袋在生产环节出现意外,致使包装袋上残留有溶剂乙酸乙酯。(注:乙酸乙酯主要用作溶剂,及用于染料和一些医药中间体的合成。对眼、鼻、咽喉有刺激作用。误服者可产生恶心、呕吐、腹痛、腹泻等。慢性影响:长期接触本品有时可致角膜混浊、继发性贫血、白细胞增多等。)

对于这样的官方证明,部分消费者仍然不接受。蒋亚林女士在接受记者采访时表示,截至14日晚8时,在册登记的疑因饮用多美滋奶粉而患结石症的患儿数字已高达96名,其中最小的出生仅100天,还有一名浙江的患儿才113天,此外也新增加了来自黑龙江省的患儿。该女士称,多美滋结石娃娃患儿不是个案,“这些孩子来自于全国各个省市”,“他们唯一吃过的一样的东西是多美滋奶粉,唯一相同的问题是肾部有各种的问题”。

没有三聚氰胺的奶粉就安全吗

但是,这个消息并不能让身为医生的笔者感到释然。不错,三聚氰胺可能导致婴幼儿出现结石,但并不等于导致婴幼儿结石的罪魁祸首就一定是三聚氰胺。同理,不含三聚氰胺的奶粉,不等于就不会导致婴儿出现结石。如今,媒体曝光的是可能有婴儿在饮用多美滋配方奶粉后出现了肾结石,而上海市质监局的回答是在多美滋奶粉中没有发现三聚氰胺,从逻辑学上讲,好像属于偷换了概念。

笔者本来对多美滋奶粉是比较认可的,孩子从断奶以后,饮用多美滋奶粉快两年了,到目前为止,也比较健康,没有发现什么问题。可是听到这么个“结石”问题,心里总感觉有个疙瘩,因此非常希望得到明确的答案,这个答案就是对多美滋来个全面的检测,并对相关的“结石宝贝”进行更全面的病例分析,以明晰其中的主要根由。所以,我希望质监局的结论不要做得太快,至少先了解一下,如今有多少可能导致婴幼儿结石的原因,然后一一排除才行。

南方网:多美滋,拿到免死金牌了吗

也就是说,多美滋的检测过关只能排除含有三聚氰胺的可能性,并非质量就一定没问题。多美滋大可不必笑得太早,随着质检及卫生部门的深入调查,真相很快就会水落石出。

至于此前多美滋声明的“系竞争对手搞破坏”,到现在仍没有确凿的证据证明确实为对手所诋毁,相反,被媒体曝光的“结石宝宝”却频频见报。这样鲜明的对比,多美滋是真的糊涂了还是在装疯卖傻?

多美滋不要因为未检验出三聚氰胺而沾沾自喜,因为这只是对患者致病原因的一种排除。上海市质量技术监督部门的“多美滋配方奶粉未检出三聚氰胺”的检验报告,对多美滋来说,绝对不是一块“免死金牌”

这完全就是在转移视线~
食品企业的一个最基础最起码的义务就是保证食品安全,也就是避免一切任何可能危害人体健康的情况出现~

这不是一个含不含三聚氰胺的问题~而是是不是有害宝宝健康的问题~
所以~无论从任何角度去看~多美滋都是有绝对责任的~

Posted via email from 米良的草窝

【BBCChinese】点评中国:中国为癌变的痛苦折磨

香港支持赵连海的民众

支持赵连海的民众聚集在香港中联办门口抗议。

11月10日,结石宝宝家长赵连海被北京法院以“寻衅滋事罪”判处两年半徒刑,海外媒体纷纷关注,推特网友愤怒不已。联系最近中国各地频频发生的民变,频频发生的文化精英被禁止出国事件,有观察力和远见的人们不难判断:在盛世红光满面的外表下,中国正为癌变的痛苦深受折磨。

从肾结石到权力结石

2008年9月,中国当局尚沉浸在奥运狂欢中,一场毒奶风暴扫荡了本已稀薄的道义资源,婴儿肾结石刺激着国人的神经,自此,人们的嘲笑声与批评声在网络内外更加汹涌。

对权力当局来说,安抚几十万结石儿童,尽快蒸发国民们不幸的回忆与现实痛苦感,开动宣传机器即可,但少数血性尚未衰亡的结石宝宝家长持续的抗议,并由此带来的自由结社——结社宝宝之家联盟,带来的街头化行动,才是权力结石化的脑袋最焦灼和最不愿看到的事。

表面看来,专政的铁拳已经粉碎了赵连海的抗议,将赵连海投入铁窗,寻求到官方暂时的稳定;实际上,当局不得不用长远的道义损失来止住局部的溃烂和疼痛。从技术与战术层面讲,当局完胜赵连海;从战略与大局而言,当局此举,何以收拢本已离散的民心,何以安抚那些对体制尚存一丝改良幻想的民众?

从街头民变到体制癌变

实际上,收拾人心,建设诚信,正是当局管理中国社会面临的巨大困难。自从道义和诚信资源在60年间挥霍殆尽后,当局突然发现,原本安分守己的屁民们一夜之间变成了以死抗争的维权公民。一个人心离散的社会,任何管理者也无法有效地使之和谐,更何况一些管理层自身德行不彰,诚信可疑。在世界普遍性的民主潮流下,不敢或不愿通过公开竞争的选票认证,为其增添合法性。

于是乱象无日无之,群体性事件即民变暴增。最新的例子就是10月广西苍梧民变,11月云南昭通民变,其中血淋淋的场景,警车被焚烧的火光,触目惊心。这些扇动着的“蝴蝶翅膀”,相信可以使更多的人看清体制的癌变,看清中国现实的痛苦与未来的可能。

如果这些民变频发的讯息,还不足以警醒朝野,需要寻求改革的出路,那么请看历史上的王朝末年,哪个不是由小规模频发的民变,演变到局面大规模失控?

各阶层都在喘息颤栗

不要以为只是中国底层人民在忍受着强拆失地,失业,CPI上涨的痛苦,忍受着李刚门官二代的凌辱;更多的人未来不确定性增加,更多的中产阶层被迫忍受高油价高房价;即使高层既得利益者和巨富们也无时不生活在可能被清洗的阴影中。

知识分子作为最能影响社会舆论的阶层,也出现前所未有的分化。最近以来,对持独立和批评意见的知识分子群体的防范与打压有升级趋向,艾未未被软禁,贺卫方,徐友渔,夏业良,郝建,张博树,崔卫平等知名教授和学者有的被禁止出境,有的被约谈····无不显示思想洗脑和统战失灵而被迫把强硬手段顶上一线,也是强权趋向颓势的风向标。

历史地看,这种社会紧张的局势决不会长久。东汉末年党锢之祸打压清议和太学生请愿,北宋打压司马光/苏东坡等元佑党人,明末打压东林党人,清末打压维新派,都加速了民间的离心力,加速天下风云激荡;环视世界,除了朝鲜三代世袭外,还有几个自我隔绝于文明世界的孤儿?拒绝人权等普世价值的既得利益集团强硬派,有几天的戏好唱?

中国仿佛一个被癌变痛苦折磨的病人,虽然盛世华灯高挂,向西方的采购出手豪阔,面上红光四射,但这个国家的肌体,他的人民——无论是底层,中产,知识分子,甚至高层既得利益者,无不对现实充满无力感和焦虑感。中国在这种停滞和社会力量拉锯博弈中,其变数和不可预测性正在增加。

祖国之癌——专制肿瘤,将会在何时,以何种方式被解决?你们偶尔也会提出这一疑问吗?

本文不代表BBC的立场和观点。网友如要发表评论,请使用下表:

读者反馈

好文!我想任何关心现实的人都有这样的疑问,中国很可能又一次进入专制循环。可悲得中国之命运,每次都已社会爆炸的方式来改变,如何能积累和进步呢?现代文明真是遥遥无期。我相信对改良仍报希望的人越来越少了,像清王朝一样,当革命的步伐赶超改革之时,中国又一次输给了自己。未署名

入木三分,深入骨髓,字字珠玑,痛彻淋漓。钟果仁, 中国

类似的烂文和白日梦一样的预言已经持续了几十年,唯恐中国不乱的反动文人。物以类聚人以群分,BBC中文网就是聚集这类反共反华的反动分子平台。未署名

Posted via email from 米良的草窝

久石让大叔音乐会

在舟舟的提议下,我和他一起去了久石让大叔在国家大剧院的管弦音乐会~而且舟舟很华丽的搞到了第一排正中的票2张~(这票原价880,舟舟搞到手的时候850,无比的佩服舟舟的挖掘能力,提前两周居然能搞到850的票~今天听一个MM说,市面上都把280的票抄到2000+了~感谢主~我们居然还买到了减价票~哈哈~)~

我们比较激动,舟舟怕堵车,所以说去早点,于是我5点就溜了出来~结果路上一切顺利,我们都到早了~于是两个人站在国家大剧院门口,吹着冷风吃KFC(我们打算在里面吃,但是被赶出来了~悲剧~)~吃完发现已经有人在排队了,于是我们就去了~
等了小半个小时~然后才检票进去,那会儿大概6点20左右~
一路飘进去~由于我是第一次进国家大剧院~嗯嗯~怎么说,里面果然很华丽~最赞叹的是球顶和水立方一样是玻璃中加流水的~白天阳光一照肯定超级漂亮~可惜今天是晚上~不过我觉得要是能躺在什么地方透过水幕看星星也是件很浪漫的事情~~~
进去以后,我们两个有点迷路~搞不明白音乐厅在什么地方~瞎窜了半天~最后我们决定随着人流走~
很快人流把我们领到了一个摊位前~发现实在卖Hisaishi大叔的CD~发现有Piano Story全集和一张精选集~我说我刚从“非常操蛋”上拖了一份APE格式的下来~不用买了~结果听到有人说那是签售版,限量30份~280五张CD~那会儿只剩不到10份了~而且瞬间就卖出去4份~
于是我们一下子不犹豫了~我们同时决定出手~舟舟突然发现他没有现金,周围的无数人也在叫嚷着要去取现~而我的话,Emma今天刚刚把帮她买ES7的900多给我,于是我包里有小1千的现金~~~于是我立马丢了600给那个买CD的~抢到了倒数3、4套~再一转眼,最后两套也出去了~还好我们出手及时~哈哈~
随后我们在剧院里逛了几圈~里面还是有不少很有意思的东东可以看的~还见到了舒伯赫的生平介绍~
一路上舟舟拿着他的G7各种拍~我就那个恨啊~我咋就那么听话,没有把相机带来~就算7D带不进来的话,Casio的卡片还是能带进来的~而且那卡片无闪光的夜景效果还是相当不错的~
我当时那个后悔啊~不过这才是我第一次后悔太听话的没有带相机~后悔没有及时入手iPhone 4~唉~~~

后来我们边逛,边找剧场入口~逛了一圈,才发现入口就在我们买CD的旁边~
于是飘进去~发现第一排的位置超级赞~我们距指挥台不到5米(舟舟说是3米~哈哈~不过3米<5米嘛,所以我没有说错~哈哈~),后来确实证实了这个问题~坐在那里,连大叔头上的汗珠都能看见~哈哈~里面真的好热,特别是在聚光灯下,大叔又那么投入的在Perform~
嗯~大叔在乐团如场前,带了个翻译MM进来说了几句~
大叔一开始卖弄了两句很不地道的中文~似乎说的是“大家好,我是久石让”~那中文说得像美国人的调子~但是大叔明明是个日本人,不知道他怎么学会的American Chinese Tone~
后来就开始飙日文~然后MM翻译~结果不知道是音响效果的原因,总之回音非常大~(我们能听到大叔和翻译MM的话,然后大概有个半秒的延时,能从音响里听到第二遍~于是码间干扰(ISI)超级严重~~估计坐远点听不到大叔的声音的话会好很多~)~
期间发现一个很惊喜的地方,大叔说完,对比翻译MM的翻译,我发现我大概能听懂一半~~~我的日文的确不算太烂~哈哈~
后来大叔说了一些场面话,期间他提到了一个很有意思的事情~就是久石让大叔和宫崎骏大叔俩人之前从来没有和国内的任何乐团或者组织合作过,所以国内所有打着他或者宫崎骏名号的音乐会,都是“假冒伪劣”的“海贼版”~(我们之前还说考虑去看看12月的宫崎骏音乐会,那个票最高Class好像才400,相比这次要便宜太多了~在北京音乐厅还是哪,忘记了~按照这个说法,那个基本也可以确定是假冒的了~~~)
于是大叔说“今日は本の物の久石譲です”~哈哈~

接下来音乐会就开始了~大叔很有范~不过动作表情超级诡异~感觉他完全的沉浸在自己的音乐当中~然后试图用身上的所有能够运动的部位来演绎他的音乐~于是就有了在台上各种正常的诡异的,合理的或者菲疑可思的扭动~

Conmas(日语里把Concert Master缩写成了Conmas)是一个很酷的眼镜男,习惯性的扬着半个头,一副很牛X的样子~哈哈~不过他不愧是国家大剧院管弦乐团的首席,的确超级给力~~琴弓都被他拉的各种抽丝~断下来的毛飘了一地~
看他那样投入的演奏,我很担心他一激动就把琴弓弦给拉断了~不过后来他似乎也意识到这个问题~中场的时候似乎是换了一把弓~
Conmas旁边也是一个眼镜哥哥,不过他要比Conmas有亲和力多了~而且由于Conmas是不能停下来的,所以他就肩负着着帮Conmas翻谱的职责(如果谱相同的话,两人合用一谱)~~~~~~

首席大提看起来年纪大了很多~但也超级给力~下半场的时候还有一段他的独奏~只是他今天似乎有点感冒~一边拉琴一边吸鼻子~感觉很诡异~大提琴的次席是一个超级有气质的眼镜姐姐~嗯嗯~特别是穿着丝质的长裙和抱着提琴的时候,到快节奏的时候,爆发力也很强~呵呵~

小提琴被分为了三组~和Conmas正对的那组的首席估计是他们乐团的未来之星,感觉超级年轻,肯定不到30~而且似乎他女朋友在台下~他一上台就开始对台下用眼神打招呼~而且能从他眼神里看出那种温柔和眷恋来~嗯嗯~可惜我没有找到谁是他女朋友,不过从他的眼光大概能确认她在第二排或者第三排靠左的地方,这样正好正对这他~
我在想那个女孩子那个时候一定是非常幸福的~看到自己的男朋友穿着帅气华丽的Tuxedo和世界级的大师同台表演~~那种自豪感是可以想象的~呵呵~祝福他们~~~~

由于我们坐的太考前,舞台有一定高度,所以我们看不太清楚后面的~只能看到个大概~不过首席长笛是个很PP的MM,年纪不大~不过功力很赞~里面一段长笛独奏~嗯嗯~的确很华丽~呵呵~

最诡异的是乐团里有一座竖琴,而且Performer是个金发的外国MM~据说国家大剧院的乐团里有十来个外籍成员,竖琴MM是一个,不过对她的表演,我仅有印象的就是一次扫琴~~~平时她的演奏都被其他乐器给淹没了~~~还有几个让我有印象的外籍成员一个是吃吹大管或者黑管(说实话,我分不清这俩乐器,实在是长相太像了~更不要说从那么远的距离从遮挡中看过去~)~还有一个是吹一个Super Size的圆号(低音圆号?我没有见过那种Size的圆号~感觉真个号有他身子大了~)~

还有就是最后一排负责打击乐器的3男3女~看着他们不断的换装备,换乐器~很好玩~特别演奏“End of world”的时候,一个MM甚至用一个锤敲一个诡异的架子,听起来像是钢锤敲钢管~~~我不确定他们是不是把一个钢管镶了个边,然后抬台子当乐器使了~然后还有定音鼓,镲,军鼓~还有超级赞的木琴,还有铃~这俩乐器在久石让的音乐中有着不可替代的位置~特别是One Summer's day(千与千寻)和Kiki's delivery service里~

整个音乐会分为上下半场,上半场演奏的是大叔自创而且现在最喜欢的极简风格的音乐~曲子都比较陌生~不过能听出大叔的那种独特的风格在里面~呵呵~
下半场就是Movie和Anime里的Melody(呃~大叔开场提到了这个词~而翻译MM也就直译为Melody了~呵呵~)~~~其实基本就是比较著名的片子的比较出名的OST~
而且有大叔的独奏和钢琴指挥~~~(大叔用的是一架斯坦威(Steinway & Sons)的琴~据舟舟说可能得30万~我回来研究了一下~我估计可能还不止~因为斯坦威的立式钢琴就得30万出头,三角琴一般要比立式更贵一些~所以应该会比30万更贵~~~不过那琴的确很漂亮~绝对是一件艺术品,而不仅仅是乐器~~~~)
有"入殓师"的Theme(就是那个大提琴独奏的曲目~很赞)~
魔女宅急便(哈哈~是我最喜欢的片子之一~~KiKi那种契而不舍的精神很令人感动~~~还有她和蜻蜓的感情~)~
千与千寻的Theme(也是我最喜欢的之一~因为是在梦境里,所以音乐超级飘渺~典型的New Age风格~)~
水之旅人(我似乎没有看过这部片子~~)~
Summer(菊次郎的春天,电影一点印象都没有,不过曲子很熟悉)~这超级欢快的一首曲子,听着心情不知不觉的就轻松了好多~~~而且刚开始那段~全部是用提琴拨弦演奏的~主旋律不断的用小提琴,大提琴,低音提琴拨弦演奏,然后变为大叔自己用钢琴演绎~太感动人心了~~~)~~
ポニョ──悬崖上的金鱼姬(这片子对我来说似乎太小了一些~不过还是一如既往的梦幻~特别是暴风雨来临时那段配乐~超级赞~~~)~
最后就是一首Oriental Wind~据说是某绿茶广告~不过的确很赞~主旋律被用各种乐器重复,层次感超级鲜明~~~很感人~~~

演奏完以后~大叔要离场~于是大家就开始站起来鼓掌~乐团的成选也开始跺脚~~哈哈~很有趣的一幕~于是大叔两次返场~演奏了一曲Innocent(天空之城),还是著名的トトロ之歌~哈哈~~~
然后大叔再次离场~但是大家这次都开始明白怎么会事情了~于是超级卖力的鼓掌~于是大叔又回来了~
但是这次他很坚决的请大家离场,Conmas和Conmas后的一个拉小提琴的女孩都试图挽留他~但是他很坚决的把整个乐团都请走了~~~
但是乐团的人都走的很慢~而且观众也没有人离席~~~于是大叔又坐下,来了一曲钢琴独奏“人生のメリーゴーランド”~~超级感人~~~于是好多走在后面没有离场的乐团成员,就就近坐了下来听大叔独奏~~~
这曲子很诡异~本来是一首很欢快的曲子,但是被大叔演绎的很悲情~似乎有一种不舍在里面~呵呵~很感人~~~让我真正体会到了曲子是有感情的,即使是同一首曲子,藉由不同的感情去演奏也会有完全不同的感觉~~~~
或许由于大叔的曲风由之前的欢快的交响乐变为了有些悲情的钢琴曲~让大家有点沉浸在音乐之中~抑或是大家也从大叔的演奏中听出了那种不舍,但是有无奈的分离的感觉~所以演奏完,大家都只是发自内心的鼓掌,没有刚开始的那种鼓动的感觉在里面了~(很奇怪,以前上音乐课的时候,那老师讲破喉咙解释音乐,感情什么的,完全不得要领,但是在这种时候,我突然无师自通了~呵呵~音乐的感染力的确是发自灵魂的~真正的感动不需要学习,因为那是一种灵魂的触动~我当时真的被感动了~而且能够体会出掌声中的那种感情的变迁~~)
大叔这时很意外的没有走~因为他看到了一个父母俩带着一个小男孩做在了第一排边上的过道上~于是大叔说了一句“I will perform for you”(没错~他说的是英文,而且是很地道的没有一丝假名感觉的英文~呵呵~大叔的Pronunciation还是很纯正的~说起来,我也发现,大叔在和乐团成员交流的拥抱的时候,他们用的也是英文,我很清楚的看到了靠里的那个小提琴分部的首席对大叔说了一句 Thank you~我也会读唇~~哈哈~)~
于是大叔又独奏了一曲~不过这曲子我完全没有听过~~~~
大叔演奏完很期待的看了小男孩和他妈妈一眼~结果他很怯懦的往后躲~于是大叔就有些失落的走了~~

里面有段小插曲,有几个人几次想从后排冲上台去找大叔签名~结果都被负责 Security 的 body guard 给拦下来了~呵呵~~~相对来说,第一排的孩子们都比较淡定~没有谁比较冲动~不然或许还是有成功的机会的~呵呵~毕竟一个跨步就能爬台子上去~

整场音乐会是很赞很赞的,唯一可惜的是没有听到我最最最喜欢的侧耳倾听里的曲子~唉~这不能不说是一种莫大的遗憾啊~毕竟侧耳倾听是宫崎骏作品里唯一一部和音乐有关(突然想起好像不是唯一一部,ギブリ工作室早期有一部叫做大提琴手的片子~~~和太阳王子是同时期的作品~不过不是太出名)~而且侧耳倾听里的歌也超级赞(我很喜欢那首该自Country Road的歌~)~

大叔离场后~我们就飘出去准备签名~结果发现签名场拉了隔离线,然后被围了里三层外三层~根本挤不进去~好多人没有搞明白~不知道之前卖过CD~所以也想过去,但是被几个剧院的保安拦住了~我和舟舟因为坐的靠前,所以出来的时候比较靠后~于是我们俩很费力的举着CD袋子过去~保安看到以后,帮我们分开了一下人群,我们才溜了进去~然后发现前面已经排了好多人~我数了一下,结果发现我是第31个~舟舟是第32个~然后我就囧了~不是说只放30张么?怎么会多出来?结果后来~又来了几个~总共排了36个人~不过后来发现里面有三个是凑数的,不是排队的~有一对情侣买了一套,所以可以去掉4个人,但是还是多出俩来,不知道那俩是哪冒出来的~或许是昨天买了碟子,忘记签名的回来补签???(我猜的~因为据排在我后面的一个女孩说剧场里坐她旁边的那个男生今天是第二次来,他头天就来过一次~结果没有买到CD,今天又来试试,结果还是没有买到~所以看到她买到了很激动~而且那孩子绝对是超级粉丝,因为他是从上海飞过来的~呵呵~而且画2000+买了原价280票的孩子也是他~~~~悲剧的孩子,愿主保佑他~阿门~~~~)
签CD的时候还和大叔卖弄了一下日语~表达了一下我的敬仰之情~~~呃呃~呵呵~
签完名出来,遇到了几个似乎是日本留学生围在最外围~看到人出来就激动~然后他们看到我的CD,很羡慕的那那里激动~结果被我听到了,于是我转手把刚签了名的CD递给了其中一个女孩~那孩子当场傻了~旁边的那个男孩和另一个女孩也傻了~过了他们抬头一脸茫然的看了看我~我对他们笑了笑~然后其中那个男孩换成中文说“我们能接过来看看么?”于是他们很激动的在那里研究那签字~然后我发现Joe Hisaishi在日文里应该发音为Hisaishi Joe~日文也是姓在前的~虽然我不知道大叔把哪个当姓~呵呵~(大叔本姓应该是藤沢(ふじさわ)全名藤沢守(ふじさわ まもる))~但是所有罗马音注释时都是写的Joe Hisaishi~~~

签完名,我们本来要离开~后来想了想,我和舟舟说,或许还会有什么剧情发生~反正耽搁不了几分钟~于是我们又回去了~结果发现签名完的几个人都在那~于是大家打了个招呼~很快大叔就签完了所有的CD~然后准备撤了~这时候又有人奔过去想要签名~可惜再次被尽职的Body Guard拦住了~呵呵~看样子名人的签名是不会随便给的~给多了就不值了~而且对于我们来说也不太公平(虽然我并不是很在意~呵呵~)~~呵呵~

然后舟舟把我送回家~然后很激动的想给谁打个电话~拿出电话来思考了一下,还是Call回了家里~给老爸讲述了一下今晚的经历~~
结果老爸感冒吃了药~撑的很辛苦~而且他明早一二节有课于是我就放他去睡觉了~
然后说找有时差的YoYo和LuLu激动一阵,结果一个去睡觉了~另外一个去开会去了~囧了~
于是只好一个人在这里自言自语~~~

附件里是几张照片~哈哈~可惜没有现场的照片~只有期待舟舟的G7够给力了~呵呵~~~~下次一定卡片不离身~等有钱了就去搞只小莱卡~哈哈~

呵呵~我也要赶紧睡了~明天晚上又要加班~和美国总部的大佬们Review DDS~安排的又是操蛋的22:00到23:30~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!


Posted via email from 米良的草窝

2010年11月15日星期一

久石譲オフィシャルサイト Staff Blog

11/12fri 北京リハーサル。


北京の会場は「国家大劇院」。
ドーム状の大きな施設内にコンサートホールとオペラハウスと芝居劇場の3つの劇場が併設された
この施設は広い広い。
バックヤードも広く、リハーサル終了後にCCTVのの取材を受けたのですが、取材部屋から楽屋まで
まるで迷宮。ひとりで取り残されたら戻れそうもありません・・・


さて、取材を終えた久石は只今楽屋でピアノの練習中。
左の楽屋からSummerが聴こえてきました♪
すると右の楽屋からもピアノの音色が!
今日はこのホールで世界的に有名なピアニスト、アシュケナージの本番です。
そう、楽屋エリアでは左から久石のピアノが、右からはアシュケナージのピアノが
只今同時に奏でられています♪
なかなか体験できることではないですよね☆
in Beijing☆☆☆

看起来大叔自己也很在意这场演出啊~~~嗯嗯~~~

Posted via email from 米良的草窝

[☭脑瘫党群☭][19005] 膜拜一下我国奸商....

Fish 发过来的东东~很刺激~呵呵~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!

---------- Forwarded message ----------
From: Sun Fish Died
Date: 2010/11/14
Subject: [☭脑瘫党群☭][19005] 膜拜一下我国奸商....
To: NTParty

天气冷了,咱坏掉的PSP备用电源的壳胶也脆了...


 然后...
 

为了装作是大容量电源,特地丢了块铁当配重....JS们辛苦啦...
这个是锂电池,硬的,据说PSP的仿造电池为了装作里面塞满了软的聚合物电芯,还要往里面填瓦楞纸之类的....

Posted via email from 米良的草窝

无题~~~

夜晚在四环上飚车是件很有意思的事情~一个人骑着车,听着歌,在月光、路灯车灯下奔驰在无人的道路上~看着路边的星星点点的灯光~当疾驰的汽车从身边窜过的时候,当冷风从发间穿过的时候~我感觉到自己的每一个细胞都一阵激灵~有了一种被电到的感觉~
这种别样的感觉让我觉得自己被生活所麻木的身躯得开始在复苏~重新有了知觉~让我清除的意识到自己还在活着~自己在按照自己的意愿活着~
那时一种自由的感觉~卸掉了生活、工作、人际交往的压力后的自由~很清新,很透彻的感觉~
不经意间,想起了Savage Graden的Animal Song~
歌是这样唱的~
'Cause I want to live like animals
Careless and free like animals
I want to live
I want to run through the jungle
With wind in my hair and the sand at my feet

是啊~Careless的生活,没有那么多顾虑的无忧无虑的生活是多么的难能可贵和令人向往~

When superstars and cannonballs are running through your head
And television freak show cops and robbers everywhere
Subway makes me nervous, people pushing me too far
I've got to break away
So take my hand now

是啊~城市让我们变得快节奏~拥挤的地铁,粗制滥造的电视剧,铺天盖地的媒体宣传…一切的一切把我们掩盖在了生活的闷锅当中~
繁忙成为了生活的主旋律,枯燥乏味成为了生活的基调色彩~我们逐渐被生活所麻醉~感官变得麻木~对一切都失去了激情~沮丧,苦闷,忿恨,抱怨~
啊~
生活失去了美丽的其应有的本色~一切都失去了本来的意义~
我们就像那只被孟孟闷在锅里用温水煮着的青蛙~
水温不高的时候,我们自得其乐~让水开始被烧开的时候~我们发现锅盖已经被紧紧的盖上,我们已经失去的跳出锅去的机会~最终无奈的成为别人口中的一锅蛙汤~~~~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!

Posted via email from 米良的草窝

2010年11月14日星期日

A trick to avoid Objective-C++ in Cocoa application

I'm working on a project that help me to convert the music file tags encoding from GBK, GB2312, JIS,UTF16 to UTF8~~~ iTunes (or whole mac world) only support UTF8 Encoding~ So to avoid the scrambled text, the music file tag's encoding has to be transcoded. (Actually, not only the music the subtitle of movies also need to be transcoded before used on Mac.)

To support tens of tag formats of music files, I introduce the well known open source library TagLib(http://developer.kde.org/~wheeler/taglib.html), which is well designed and documented C++ library, with C binding. 
I checked out the source code from its SVN and compiled it to a framework(Thanks to Sbooth, he submitted a XCode project structure for TagLib on github, https://github.com/sbooth/AudioFrameworks/tree/master/taglib/)~

I tried include the code into my code, but it fails to compile, it reports a lot error similar to the following:

> #include <string>
TagLib.framework/Headers/TagLib.h:33:18: error: string: No such file or directory

-> namespace TagLib {
TagLib.framework/Headers/TagLib.h:45: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'TagLib'

I search a lot of documents from Apple ( I have to say, contract to MSDN, Apple's document really sucks!!!! ) and the maillist archives (http://cocoadev.com/forums/comments.php?DiscussionID=1286, this mail thread might be helpful, although the guy "mmw" speaks in a disgusting tone).
I realize the problem is that Objective-C is only a extension  of C, so it doesn't support the keyword class and similar thing. So I can just rename the file .m to be .mm, which represents Objective-C++ source file. So XCode knows that and try to compile it as a Objective-C code mixed with C++ code instead of to process it  as pure Objective-C code. It works well in my code.

But the problem continues, I import the TagLib's header files in my .h file, which cause the C++ definition spreads all over the project. I have no option but rename all of my .m files to .mm.
Later, I found a bigger problem, XCode compiles .mm file may be 2x slower than .m file. And only 2 source files were involved C++ code( I wrote a Objective-C wrapper for TagLib fileref and tags, which only expose the features that I needed, it is similar to a façade pattern).
I'm not sure whether if the problem is caused by include TagLib's header file everywhere, and which is not pre-compiled ( maybe I should included it in to the pch definition? I'm no idea~ )
So I wish I can avoid to use .mm extension in most of my code. So I try to expose TagLib types in my .h file, which means I cannot use TagLib types as property or even private fields!
It is somehow difficult, but I still did it!
This is my definition .h file

//

//  MediaFileInfo.h

//  Transcoder

//

//  Created by TimNew on 11/13/10.

//  Copyright 2010 Windy's. All rights reserved.

//


#import <Foundation/Foundation.h>

#import "NSString.TagLibIntegeration.h"


@interface MediaFileInfo : NSObject {

NSString *filePath;

NSString *title;

NSString *album;

NSString *artist;

}


@property (retain,readonly) NSString* filePath;


@property (retain, readonly) NSString *title;

@property (retain, readonly) NSString *album;

@property (retain, readonly) NSString *artist;



- (id) initWithFilePath:(NSString *) file;

- (id) initWithFilePath:(NSString*) file update:(BOOL) update;


- (void) refresh;


@end

You can find that there is no TagLib stuff at all. I moved all import instruction to the .mm file instead of put it in the .h file.
Still now everything should go well. But unfortunately it didn't!
The reason is that I import the NSString.TagLibIntegeration.h file. I just wrote a category to extend NSString, so I easily convert between NSString to TagLib::String.

//                                              

//  NSString.TagLibIntegeration.h

//  Transcoder

//                                                                                           

//  Created by Wen Di on 11/13/10.

//  Copyright 2010 Windy's. All rights reserved.

//


#import <Cocoa/Cocoa.h>


namespace TagLib {

class String;

}


@interface NSString (TagLibIntegeration) 


- (id) initWithTagLibString:(TagLib::String) tagLibString;

- (TagLib::String) ToTagLibString;


@end

I try to introduce TagLig/tstring header to my code, so I try to declare a stub for TagLib::String type~ It works well, but doesn't solve the problem at all. It is obvious that I use the keyword "class"!
So which require every source file imported this header to be .mm file again. 

After I analyze the code, it is very lucky that I found that I only used this two methods only while I need to work the TagLib types directly, which means that except the MediaFileInfo.mm, there is no source file need to import this NSString.TagLibIntegeration header file.
So once again, I moved the import instruction from MediaFileInfo.h to MediaFileInfo.mm.

Now, everything goes well! I only introduced 2 .mm files and solved all problems!

Conclusion:
1. Avoid to import every header files in .h file, only import declaration related .h file, all others can be import in .m or .mm file. 
2. When necessary, a stub definition can be used instead of import specific .h file.
3. Wrap the 3rd party types if possible, which might avoid the 3rd party types spread into our own code, which might increase the dependency of our code to 3rd party's code, which is a potential rick.
4. Always remember, Objective-C is an extension to C, not C++, so all C++ keywords such as class, const, virtual are not available.


TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!


Posted via email from 米良的草窝

2010年11月13日星期六

一个关于Inheritance和Delegate的故事

发现一段更有意思的。很怀念的东东啊~Knight Rider and Robo Cop~(怨念:Knight Rider 2010版 居然只播了一季就因为收视率不佳而停播了~怨念啊怨念~~~~~)

Once upon a time (before Baywatch), there was a man with no name. Knight Industries decided that if this man were given guns and wheels and booster rockets, he would be the perfect crime-fighting tool. First, they thought, "Let's subclass him and override everything we need to add the guns and wheels and booster rockets." The problem was that to subclass Michael Knight, you would need to know an awful lot about his guts so that you could wire them to guns and booster rockets. So instead, they created a helper object, the Knight Industries 2000, or "KITT the super car."

Note how this is different from the RoboCop approach. RoboCop was a man subclassed and extended. The whole RoboCop project involved dozens of surgeons who extended the man's brain into a fighting machine. This is the approach taken with many object-oriented frameworks.

While approaching the perimeter of an arms dealer's compound, Michael Knight would speak to KITT over his watch-radio. "KITT," he would say, "I need to get to the other side of that wall." KITT would then blast a big hole in the wall with a small rocket. After destroying the wall, Kitt would return control to Michael, who would stroll through the rubble.

Many objects in the Cocoa framework are extended in much the same way. That is, there is an existing object that needs to be extended for your purpose. Instead of subclassing the table view, you simply supply it with a helper object. For example, when a table view is about to display itself, it will turn to the helper object to ask "How many rows of data am I displaying?" "What should be displayed in the first column, second row?"

Thus, to extend an existing Cocoa class, you will frequently write a helper object. This chapter focuses on creating helper objects and connecting them to the standard Cocoa objects.

所以从技术上来说~ KITT (印象里应该是是Knight Industry Two Thousand的缩写~)其实是用了比 Robo Cop 更少的投入,做到了几乎相似,甚至要更优越的功能~毕竟在Knight Rider里,还有一个Karl的存在,而在Robo Cop里只有它一个(那个大个子似乎是没有大脑的版本,是个纯AI制品~)~~~

PS:每次想起Knight Rider 我就会想起小时候的一个故事~~~
我到现在还记得小时候看的Knight Rider里那个让我困惑了无数年的Phrase:计算机超负荷~记得剧情里是某女爆喝一声“计算机超负荷”,然后对键盘敲几下,然后就让KITT行为发生改变,不在接受Michael的指挥~整个场景和小强同学的“天马流星拳”一样让人印象深刻~而我百思不得其解的问题是,为什么超负荷能让代码的行为发生改变~还有如何才能写几行代码就能让计算机超负荷~难道是写了一个死循环(那个时候我好像刚刚开始玩GWBasic,正在研究 For 循环,GWBasic的For循环很难产生死循环,所以对“死循环”这个术语有着不同寻常的兴趣)~
直到N年以后,我读大学了~代码也写了N多了~某天回想起这个“计算机超负荷”的时候~我才意识到,这是那个翻译完全不同计算机术语瞎翻译导致的结果~
“计算机超负荷”的原文应该是"Computer Overload"~Overload 从构词来说的确挺像是超出(over)-负荷(load)这两个词复合而成~所以他那样翻译了~
而这个词,一个准确的属于应该是"重载"~“计算机重载”要比“计算机超负荷”这个说法靠谱多了~虽然我到现在也不知道如何去重载一个计算机~呵呵~不过 Science Fiction 嘛~意境到了就 ok 了~“计算机重载”这种说法可要比“计算机超负荷”要有意境多了~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!


2010/11/13 米良
Cocoa Programming for Mac OS X 里看到这么一段话~挺有意思的~~~

Once upon a time, there was a company called Taligent, which was created by IBM and Apple to develop a set of tools and libraries like Cocoa. About the time Taligent reached the peak of its mindshare, I met one of its engineers at a trade show. I asked him to create a simple application for me: A window would appear with a button, and when the button was clicked, the words "Hello, World!" would appear in a text field. The engineer created a project and started subclassing madly: subclassing the window and the button and the event handler. Then he started generating code: dozens of lines to get the button and the text field onto the window. After 45 minutes, I had to leave. The app still did not work. That day, I knew that the company was doomed. A couple of years later, Taligent quietly closed its doors forever.

可以想象,这个故事一定发生在OO刚刚起步的年代~那个年代几乎把 inheritance 当作所有问题的 Killer Pill~随着技术的演化,在无数的 Developer 对着一堆堆让人眼花缭乱的继承树(特别是像C++这样具有多继承能力的预言的继承树)浪费的无数的 Working Hour,杀死了无数自己的脑细胞后,人们终于开始意识到或许应该有一种比 Inheritance 更好的方式去处理某些问题~ 于是有了 Composition 有了 Delegate~~~甚至把继承深度作为了代码可维护性的一个重要指标!

看新的预言中~C# 和 Java 拿掉了多继承~ 在产生变种对象的时候,Java 是采用 Handler 的新类,其实就是 Delegate 的方式~ C# 对于比较重量级的对象(比如 Form,Window,Page)依然采用 Inheritance ,但是对于轻量级的对象(Button,TextBox,MIenutem)时则采用更为灵活的方法级别的Delegate~
C#的方式和 Cocoa 比较类似。
Cocoa 中,由于界面采用溜达MVC模式~需要大量定制的对象,比如Window,View,会采用继承重载的方式。需要改变行为时一般会 Controller,而要改变Visual时,通常会重载Visual Element对象本身~ 而轻量级的定制,或者仅仅是响应某些交互的话,则会采用Delegate的方式~比如Application的Delegate~~

Vision只有一个,但是Implementation会有很多~而对比不同语言对同一个问题的处理方式是一件非常有意思的事情~在这种对比中~才能发现不同的设计模式和实现模式的优劣~~~和在现实中的实用效果~~~~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!



Posted via email from 米良的实验室

一个关于Inheritance和Delegate的故事

发现一段更有意思的。很怀念的东东啊~Knight Rider and Robo Cop~(怨念:Knight Rider 2010版 居然只播了一季就因为收视率不佳而停播了~怨念啊怨念~~~~~)

Once upon a time (before Baywatch), there was a man with no name. Knight Industries decided that if this man were given guns and wheels and booster rockets, he would be the perfect crime-fighting tool. First, they thought, "Let's subclass him and override everything we need to add the guns and wheels and booster rockets." The problem was that to subclass Michael Knight, you would need to know an awful lot about his guts so that you could wire them to guns and booster rockets. So instead, they created a helper object, the Knight Industries 2000, or "KITT the super car."

Note how this is different from the RoboCop approach. RoboCop was a man subclassed and extended. The whole RoboCop project involved dozens of surgeons who extended the man's brain into a fighting machine. This is the approach taken with many object-oriented frameworks.

While approaching the perimeter of an arms dealer's compound, Michael Knight would speak to KITT over his watch-radio. "KITT," he would say, "I need to get to the other side of that wall." KITT would then blast a big hole in the wall with a small rocket. After destroying the wall, Kitt would return control to Michael, who would stroll through the rubble.

Many objects in the Cocoa framework are extended in much the same way. That is, there is an existing object that needs to be extended for your purpose. Instead of subclassing the table view, you simply supply it with a helper object. For example, when a table view is about to display itself, it will turn to the helper object to ask "How many rows of data am I displaying?" "What should be displayed in the first column, second row?"

Thus, to extend an existing Cocoa class, you will frequently write a helper object. This chapter focuses on creating helper objects and connecting them to the standard Cocoa objects.

所以从技术上来说~ KITT (印象里应该是是Knight Industry Two Thousand的缩写~)其实是用了比 Robo Cop 更少的投入,做到了几乎相似,甚至要更优越的功能~毕竟在Knight Rider里,还有一个Karl的存在,而在Robo Cop里只有它一个(那个大个子似乎是没有大脑的版本,是个纯AI制品~)~~~

PS:每次想起Knight Rider 我就会想起小时候的一个故事~~~
我到现在还记得小时候看的Knight Rider里那个让我困惑了无数年的Phrase:计算机超负荷~记得剧情里是某女爆喝一声“计算机超负荷”,然后对键盘敲几下,然后就让KITT行为发生改变,不在接受Michael的指挥~整个场景和小强同学的“天马流星拳”一样让人印象深刻~而我百思不得其解的问题是,为什么超负荷能让代码的行为发生改变~还有如何才能写几行代码就能让计算机超负荷~难道是写了一个死循环(那个时候我好像刚刚开始玩GWBasic,正在研究 For 循环,GWBasic的For循环很难产生死循环,所以对“死循环”这个术语有着不同寻常的兴趣)~
直到N年以后,我读大学了~代码也写了N多了~某天回想起这个“计算机超负荷”的时候~我才意识到,这是那个翻译完全不同计算机术语瞎翻译导致的结果~
“计算机超负荷”的原文应该是"Computer Overload"~Overload 从构词来说的确挺像是超出(over)-负荷(load)这两个词复合而成~所以他那样翻译了~
而这个词,一个准确的属于应该是"重载"~“计算机重载”要比“计算机超负荷”这个说法靠谱多了~虽然我到现在也不知道如何去重载一个计算机~呵呵~不过 Science Fiction 嘛~意境到了就 ok 了~“计算机重载”这种说法可要比“计算机超负荷”要有意境多了~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!


2010/11/13 米良
Cocoa Programming for Mac OS X 里看到这么一段话~挺有意思的~~~

Once upon a time, there was a company called Taligent, which was created by IBM and Apple to develop a set of tools and libraries like Cocoa. About the time Taligent reached the peak of its mindshare, I met one of its engineers at a trade show. I asked him to create a simple application for me: A window would appear with a button, and when the button was clicked, the words "Hello, World!" would appear in a text field. The engineer created a project and started subclassing madly: subclassing the window and the button and the event handler. Then he started generating code: dozens of lines to get the button and the text field onto the window. After 45 minutes, I had to leave. The app still did not work. That day, I knew that the company was doomed. A couple of years later, Taligent quietly closed its doors forever.

可以想象,这个故事一定发生在OO刚刚起步的年代~那个年代几乎把 inheritance 当作所有问题的 Killer Pill~随着技术的演化,在无数的 Developer 对着一堆堆让人眼花缭乱的继承树(特别是像C++这样具有多继承能力的预言的继承树)浪费的无数的 Working Hour,杀死了无数自己的脑细胞后,人们终于开始意识到或许应该有一种比 Inheritance 更好的方式去处理某些问题~ 于是有了 Composition 有了 Delegate~~~甚至把继承深度作为了代码可维护性的一个重要指标!

看新的预言中~C# 和 Java 拿掉了多继承~ 在产生变种对象的时候,Java 是采用 Handler 的新类,其实就是 Delegate 的方式~ C# 对于比较重量级的对象(比如 Form,Window,Page)依然采用 Inheritance ,但是对于轻量级的对象(Button,TextBox,MIenutem)时则采用更为灵活的方法级别的Delegate~
C#的方式和 Cocoa 比较类似。
Cocoa 中,由于界面采用溜达MVC模式~需要大量定制的对象,比如Window,View,会采用继承重载的方式。需要改变行为时一般会 Controller,而要改变Visual时,通常会重载Visual Element对象本身~ 而轻量级的定制,或者仅仅是响应某些交互的话,则会采用Delegate的方式~比如Application的Delegate~~

Vision只有一个,但是Implementation会有很多~而对比不同语言对同一个问题的处理方式是一件非常有意思的事情~在这种对比中~才能发现不同的设计模式和实现模式的优劣~~~和在现实中的实用效果~~~~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!



Posted via email from 米良的草窝

一个关于Inheritance和Delegate的故事

Cocoa Programming for Mac OS X 里看到这么一段话~挺有意思的~~~

Once upon a time, there was a company called Taligent, which was created by IBM and Apple to develop a set of tools and libraries like Cocoa. About the time Taligent reached the peak of its mindshare, I met one of its engineers at a trade show. I asked him to create a simple application for me: A window would appear with a button, and when the button was clicked, the words "Hello, World!" would appear in a text field. The engineer created a project and started subclassing madly: subclassing the window and the button and the event handler. Then he started generating code: dozens of lines to get the button and the text field onto the window. After 45 minutes, I had to leave. The app still did not work. That day, I knew that the company was doomed. A couple of years later, Taligent quietly closed its doors forever.

可以想象,这个故事一定发生在OO刚刚起步的年代~那个年代几乎把 inheritance 当作所有问题的 Killer Pill~随着技术的演化,在无数的 Developer 对着一堆堆让人眼花缭乱的继承树(特别是像C++这样具有多继承能力的预言的继承树)浪费的无数的 Working Hour,杀死了无数自己的脑细胞后,人们终于开始意识到或许应该有一种比 Inheritance 更好的方式去处理某些问题~ 于是有了 Composition 有了 Delegate~~~甚至把继承深度作为了代码可维护性的一个重要指标!

看新的预言中~C# 和 Java 拿掉了多继承~ 在产生变种对象的时候,Java 是采用 Handler 的新类,其实就是 Delegate 的方式~ C# 对于比较重量级的对象(比如 Form,Window,Page)依然采用 Inheritance ,但是对于轻量级的对象(Button,TextBox,MIenutem)时则采用更为灵活的方法级别的Delegate~
C#的方式和 Cocoa 比较类似。
Cocoa 中,由于界面采用溜达MVC模式~需要大量定制的对象,比如Window,View,会采用继承重载的方式。需要改变行为时一般会 Controller,而要改变Visual时,通常会重载Visual Element对象本身~ 而轻量级的定制,或者仅仅是响应某些交互的话,则会采用Delegate的方式~比如Application的Delegate~~

Vision只有一个,但是Implementation会有很多~而对比不同语言对同一个问题的处理方式是一件非常有意思的事情~在这种对比中~才能发现不同的设计模式和实现模式的优劣~~~和在现实中的实用效果~~~~

TimNew
------------
Release your passion
To Realize your potential

I am a pessimist, I feel I'm living in a world without light.
But I am also a prayer, I believe I’m going towards a world full of sunshine!


Posted via email from 米良的实验室