Archive for May, 2008

长城在哪里?

Monday, May 12th, 2008

刚刚在玩Google Earth, 在美国逛了一大圈之后又在国内逛, 逛到北京就想起来看看长城什么样子, 从小到大, 我都没出过吉林省. 在北京附近找了好一阵子, 大概20分钟, 才差不多确定长城的位置. 但基本上什么也看不到, 我一直对在太空能看到长城的说法深信不疑, 没想到, 放到最大都看不到.

where is the great wall

谁在上面这个图上看到长城了记得告诉我.

像我这样的好孩子在小的时候就听老师讲在太空能看见的唯一建筑就是长城, 而且不只是老师讲, 教科书上也是这么说的, 真太失望了. 只有google一下, 发现原来这个问题在几年前引发过大规模的讨论.

曾在太空站工作的宇航员威廉·博格在1991年出版的《在太空中如何盥洗》一书中说,在那样的高度上已无法用肉眼看到长城,而需要用望远镜才能看到。

2000年凤凰卫视曾采访第一批登上月球的宇航员之一奥尔德林。他说,在月球上是看不到万里长城的,长城是狭窄而不规则的,在轨道上,很难看到不规则的事物。

2000年5月4日,首位太空游客蒂托在接受记者采访时也说,我从中国上空飞过时看到了中国的河流和山脉,但没有看到中国的长城

2003年10月中国首位宇航员杨利伟返回地球后表示:“看到地球景色非常美丽,但我没有看到我们的长城。”

2004年年初,全国政协委员王翔在政协会议上的提案要求有关部门尽快纠正小学语文课本第七册课文《长城砖》中有关宇航员肉眼能看到长城的错误,教育部对此公开答复表示纠错工作正在进行。

美国宇航员尤金·塞尔南2004年2月访问新加坡时表示,“在高度为160-320公里的地球轨道上,中国的长城的确可以用肉眼看到”。国际空间站远征七队的科学官埃德·刘也赞同他的观点。

2004年5月11日欧洲空间局网站首页以“从太空看中国长城”为题,发布了一张“普罗巴”卫星3月25日过境时获取的高分辨率卫星图像,文字说明指出,该图右上方一条蜿蜒曲折的细线条是延伸7240公里的长城。该公告还认为,如果天气、光照等条件适合,宇航员可以用肉眼看到长城。

公告刊出仅一天后,美国宇航局网站转发了这条信息和图像。两家国际公认的空间科技权威机构发布的信息立刻引起广泛关注,类似“从太空看到长城并非神话”的报道出现于内地多家媒体,还有文章“叫停”政协委员建议小学语文课本应纠错的提案。

与此同时,质疑和否定的意见也纷纷见诸报端和网站。复旦大学和美国加州大学的学者首先提出不可能是长城,根据立体效应和翻转180度看,图像很明显是一条汇聚水流的山沟。

2004年5月19日欧空局发布纠错公告,承认此前公布的图像发生解释错误,把一条注入密云水库的河流误判为长城,至于那条被判为运河的影像是否有错和宇航员能否看到长城等问题则未提及。

2004年5月27日,北京市测绘设计研究院的科技人员用航片、1:1万地形图与欧空局的图像进行叠加分析后提出新的看法,长城、河流之说都不正确,是条山间公路。

真TMD的郁闷被这个谎言忽悠了十几年, 而且深信不疑, 现在这年头, 媒体不可信, 书籍也不可信, 连小学教材都不可信, Ch*ne*e 的教育真TMD….. 幸好哥们学习不太好, 要么现在肯定成白痴了.

面向对象的访问控制

Monday, May 5th, 2008

这两天有在看php5的面向对象的一些教程, 因为php4用的比较多,所以对面向对象这个概念并不是很熟悉.

这里只是简单记录一下关于public, private和protected.

public(公共的)应该比较容易理解, 完全公开, 任何地方都可以访问, 包括该类内部, 外部, 子类等等.

a = "1";
	}

	function test(){
		echo $this->a;
	}
}

class b extends a{
	function test2(){
		echo $this->a;
	}
}

$a = new a;
$a->test();
// 这里说明public属性对象内部可访问, 而该语句没报错是
// 因为test方法也可以访问, 说明方法默认为public

echo $a->a; // 这里说明public属性外部也可以访问
$b = new b;
$b->test2(); // 这里说明public属性在子类中可以访问
echo $b->a;  // 这里说明public属性在子类外部也可以访问
?>

private(私有的)可以理解为只有对象的内部可以访问, 但是其中有可比较难理解的概念, 就是继承来的public方法可以访问到父类的private方法和属性, 而且实际上private属性和方法在技术上是无法被覆写的, 这个我目前还没有研究太透彻.

a = "2";
	}

	function test(){
		echo $this->a;
	}
}

class d extends c{
	function test2(){
		echo $this->a;
	}
}

class e extends c{
	private $a="3";
	function test2(){
		echo $this->a;
	}
}

$c = new c;
$c->test();// 这里说明private属性对象内部可访问
// echo $c->a; // 这里会报错说明private属性外部不可以访问
$d = new d;
echo '[';
$d->test(); // 这里输出2,说明在test()中可以访问到class c 的$a
echo ']';
$d->test2(); // 这里没有产生输出说明private属性在子类中不可见
echo $d->a;  // 这里也没有产生输出说明private属性在子类外部也是不可见的
$e = new e;
echo '{';
$e->test();  // 这里输出2, 说明该方法可见, 但访问的是父类的$a
echo '}';
$e->test2();
// 这里输出了3说明$a被覆写了, 但其实在class e中
// 其父类的$a并不可见,所以并不是覆写而是创建
?>

protected (受保护的)我个人理解就是在对象和子对象中你想怎么用都可以, 就是不可以在外面用.

a;
	}
}

class g extends f{
	function test2(){
		echo $this->a;
	}
}
$f = new f;
$f->test(); // 这里产生了输出,说明protected属性对象内部可以访问
//echo $f->a; // 这里报错说明protected属性对象外部不可以访问
$g = new g;
$g->test2(); // 这里输出4,说明protected属性在子类中可以访问
$g->test();  // 这里输出4,说明protected属性在子类中可以访问
// echo $g->a;  //这里报错,说明protected属性在子类的外部不可访问
?>