2010年8月11日

你怀疑过“温水煮青蛙”的故事吗

你怀疑过“温水煮青蛙”的故事吗,以下是转来的部分:


青蛙有那么蠢吗?

   ——另一个“温水煮青蛙”的故事

         时寒冰


    “温水煮青蛙”的著名故事,被很多人引用过。大意是这样的:将青蛙投入已经煮沸的开水中时,青蛙因受不了突而其来的的高温刺激立即奋力从开水中跳出来得以成功逃生。同样是水煮青蛙实验,把青蛙先放入装着冷水的容器中,然后再加热。结果就不一样了。青蛙反倒因为开始时水温的舒适而水中中悠然自得。直至发现无法忍高温时,已经心有余而力不足了。被活生生的在热水中热死。

    青蛙真的有那么蠢吗?

    上个世纪九十年代,北京一位女生物老师,组织全班同学做了一次这样的实验(我认识的一位朋友正好在这个班):同学们两三位一组,分配一个容器和一只青蛙,文火加热,使水温缓缓升高,以符合“温水煮青蛙”的基本条件。同学们激动而焦急地看着显示水温的温度计和容器中的青蛙。当温度缓步升到60度时,开始有青蛙跳出。水温到65度的时候,所有容器中的青蛙一个不拉地全部跳出来了。

    女生物老师说:“青蛙在水温升到60多度后自动跳走,说明它对水温的本能反应并不因为温度变化的快慢而存在大的差异。它们没有蠢到被煮死而不逃离的地步。你们要记住,即便所有人都认同并且经常说的道理,也可能是错的。那些被社会普遍认定的真理,也可能是谎言。凡事一定要经过亲自实验、调查、思考,不要人云亦云。”

    那位朋友告诉我说:“那次实验改变了他一生,让他懂得理性思考是何等的重要。”

    女生物老师证明了青蛙没有那么蠢,她却忽略了,人却可以蠢到不可思议的程度。学校对她组织的“温水煮青蛙”实验表示了极大的愤怒,因为,这种实验并非教学中安排的内容,与学生的分数没有任何关系。老师据理力争,反而埋下更大隐患,后来学校找借口把她辞退了。

    那位朋友说,他从此再也没有见过这位可敬的老师,他曾经去打听过,也没有结果。

    这是我听到的与众不同的“温水煮青蛙”的故事。我没有去做过类似的实验,但那位朋友讲起此事的眼神,让我相信,他曾经被这个实验震撼,并被老师的话打动。

    如果中国的教育环境,赞赏并鼓励这位老师的教学方式,带出来的孩子,将来该是何等的优秀?孩子们那么喜欢和认同她的教学方式,却不能改变她被逐出校园的命运。

    后来,我无意中与一位外国朋友谈起此事,问他对“温水煮青蛙”怎么看?他耸耸肩,抱歉说从未听说过这个原理,但说会请教做过实验的专家。哦,原来,在我们这里几乎人尽皆知的“温水煮青蛙”故事,并非全球流行。

    “温水煮青蛙”的不难做,但所有的人宁肯直接引用“温水煮青蛙”典故去论证从量变到质变的顺理成章,也不愿意去做任何一点质疑,也包括我自己,至少在听到这个故事以前,我和人们一起认为,青蛙就是那么蠢。

    “温水煮青蛙”的后续故事让我思索了很久。

 

posted @ 2010-08-11 15:17 Free Programmer 阅读(38) 评论(0) 编辑

ViewState、UpdatePanel及控件OnPre之间的纠葛

    ViewStateAJAX UpdatePanel一起使用,在一些情况下,貌似会引起整页回发,让人觉得UpdatePanel失效了。

 

    这是在解决另一问题时,发现的。

   

    这个问题是这样的:

    对页面上的一个Panel添加了OnPre事件,这个Panel是放在UpdatePanel里的。或许也与TabContainer有关,实际上,是这样放的:UpdatePanel里放TabContainerTabContainer里的每一个Tab里放的Panel

只有当使用ViewState来判断是否让这个Panel显示(用的是Panel.Visible),才正常,每次操作,都会触发OnPre事件。而用其他方式,只有第一次加载页面,或整页回发时,才触发这个事件。

事实上,我注意到,使用ViewState时,任何操作都会引起整页回发,这不是我们预期的效果。我们是加了UpdatePanel的。还好,虽然出现这个问题,但OnPre事件是正常的。

然而,当不用ViewState时,UpdatePanel倒是正常了,不会整页回发,但OnPre事件不正常了。

 

 

重点:原因!!

 

谜底揭晓:因为在UpdatePanel中,如果你要让某个控件的VisibleFalse(使用OnPre事件),那么,它再也不会出现了。

第一次这个控件的VisibleFalse,那么,它再也不会出现了(再不也不会触发OnPre,除非整页回发)。如果第一次这个控件的VisibleTrue,则OnPre会正常被触发,但,如果下一次,Visible被置为了False,则它再也不会被显示,其OnPre事件不会被触发。

 

要解决这个问题,有个方法:

 

避免在位于UpdatePanel里的控件使用Visible,改为使用“Display:none;”

 

比如这样:

Panel.Attribes.Add(“Style”,”Display:none;”);

 

如果要显示出来,就这样:

Panel.Attribes.Remove(“Style”);

 

    

posted @ 2010-08-11 11:34 Free Programmer 阅读(535) 评论(0) 编辑

C#中两个问号和一个问号

C#中两个问号的双目运算符

view sourceprint?

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace ConsoleApplication1

{

    class Program

    {

        static void Main(string[] args)

        {

            int? a;

            a = null;//此时输出3

            //a = 6;//此时输出6

            int b = a ?? 3;

            Console.Write(b);

            Console.ReadKey();

        }

    }

}

变量定义中含有一个问号,意思是这个数据类型是NullAble类型的。

 变量定义中含有两个问号,意思是取所赋值??左边的,如果左边为null,取所赋值??右边的。

posted @ 2010-08-11 11:31 Free Programmer 阅读(696) 评论(1) 编辑

今天,我看到一组图解释“ 什么是博士?”

今天,我看到一组图

美国犹他大学的助理教授Matt Might,用这组图解释,博士学位到底是什么意思。他说,每年都有新生的入学教育,但是有些观点语言说不清楚,不如画图。

我觉得,这组图真的很好懂,而且一点没错,博士就应该是图中的意思。老子说"大道至简",可是真的要很简单地表达出来,却是非常难的一件事。

========================================

什么是博士?

作者:Matt Might

译者:阮一峰

1.

假设人类所有的知识,就是一个圆。圆的内部代表已知,圆的外部代表未知。

2.

读完小学,你有了一些最基本的知识。

3.

读完中学,你的知识又多了一点。

4.

读完本科,你不仅有了更多的知识,而且还有了一个专业方向。

5.

读完硕士,你在专业上又前进了一大步。

6.

进入博士生阶段,你大量阅读文献,接触到本专业的最前沿。

7.

你选择边界上的一个点,也就是一个非常专门的问题,作为自己的主攻方向。

8.

你在这个点上苦苦思索,也许需要好几年。

9.

终于有一天,你突破了这个点。

10.

你把人类的知识向前推进了一步,这时你就成为博士了。

11.

现在你就是最前沿,其他人都在你身后。

12.

但是,不要陶醉在这个点上,不要把整张图的样子忘了。

继续努力向前推进吧!

(完)

posted @ 2010-08-11 11:20 Free Programmer 阅读(69) 评论(0) 编辑