月亮为什么总是一面对着地球
April 6, 2008 11:00 pm GMT-0700 | In Study | 12 Comments | hide0. 引子
me: 你知道月亮为什么总是一面对着地球吗?
litmon: 另一面害羞?
me: 恩!
litmon: 那是因为什么?她喜欢这个体位?
litmon 真是非常天真无邪(是吗?)。不过月亮到底为什么总是一面对着地球?因为月亮的公转和自转周期完全一样。不过这是不是一个巧合?就像太阳和月亮看起来一般大一样是一个巧合?要说清楚这个问题,先要从引潮力说起。
1. 引潮力
引潮力是万有引力引起的。想象一个人头朝下往黑洞掉进去,因为头离黑洞近,所以头受到的万有引力就会比脚要大。这样的结果是,头会试图比脚跑得更快,最后身体就会被撕裂(请大家珍惜生命,远离黑洞)。一个足够大的物体在强引力场里会被撕裂,这个引起撕裂的力就是引潮力。
在大多数地方,引力场没这么强,所以引潮力也没这么骠悍。对于在稳定轨道上运行的地球(上面左图黑的是地球,太阳在右边很远的地方),离心力平衡掉了大部分引力(稳定圆形轨道上离心力等于地球中心受到的太阳引力)。离心力和万有引力迭加,在靠近太阳的地方引力占优,把东西往太阳拉;远离太阳的地方离心力占优,把东西往外甩。地球上自由流动的海水就会沿太阳-地球的连线拉伸,这就是潮汐的机理。引起潮汐的力和上面把物体撕裂的力是一个道理,都是引潮力,只不过潮汛看起来平和多了。
引潮力的具体模型要复杂的多,比方两侧的海水会瘪下去(上面的右图),另外月球对地球上的海水也有引潮力,而且比太阳产生的大一倍(每日潮汐变化取决于太阳-地球-月亮三者的位置,总之很复杂)。但是引潮力的基本意思就是,如果两个星球距离比较近,引潮力就会把星球沿两者连线方向拉伸。
(上面两个图取自维基百科)
2. 潮汐锁定
引潮力会改变星球的自转速度。如左图所示,地球绕着太阳(C)旋转,假设地球在 A 点的时候海水很配合的沿太阳-地球连线突起了,然后当地球公转到 B 点的时候,由于海水流动会有滞后,并且地球的自转比公转快,这样海水的突起就会超前,突起所受的万有引力不再经过地球中心,也就会影响地球转动了(物理学里这个叫做力矩,这就像打在陀螺边上的绳子会影响陀螺旋转是一个道理)。离太阳近的那陀受到的引力相对较大,所以两陀突起的净效果也由这陀决定。这陀受到的引力是沿地球自转相反方向,但却和公转方向一致,也就是说,海水流动滞后和引潮力会减慢地球的自转,同时加快地球公转。类似的分析也可以发现,如果地球自转比公转慢,引潮力会使地球自转加速、公转减速。
这样的公转、自转速度变化什么时候是个头呢?当自转和公转周期一样的时候就是稳定状态了,这时候突起永远沿太阳-地球的连线,引潮力就无法改变自转速度了,这就是所谓的潮汐锁定(Tidal Locking)。计算表明,建立潮汐锁定的时间很长,需要几百万年到上万亿年,轨道半径越大,建立潮汐锁定的时间也越长。地球年龄大概 46 亿年,目前公转要一年,自转只要一天,估计等到太阳毁灭还不会和太阳建立潮汐锁定。不过,月球也会受到地球产生的引潮力(虽然月球表面没有潮起潮落,但是固体拉伸的形变还是存在的),月球离地球很近,所以很久很久以前就已经和地球建立潮汐锁定了。
潮汐锁定实际上是一个很普遍的现象,很多行星的卫星都是永远一面对着行星。所以,月亮永远一面对着地球,这并不是一个巧合,而是天文时间尺度上的必然现象。
3. 结语
2006 年诺贝尔物理学奖得主 John C. Mather 和 George F. Smoot 在 Nobelprize.org 的采访中提到,如果你站在天文时间尺度上思考问题,你的胸襟就会变得不一样,虽然这并不会改变你的日常生活行为。
A. 后记
litmon: 你知道月亮用哪一面对着太阳嘛
me: 屁股
litmon: 我刚才仔细想了一下,应该是亮的那一面吧
me: 恩,有道理啊!
litmon: 这个多有趣,你应该论证一下这个
Geotagging
April 2, 2008 5:19 pm GMT-0700 | In Life, Tech | 7 Comments | hideGeotagging,一般指给数字化的内容打上地理信息标签,常见的一种形式就是给数码相片加经纬度信息(JPEG 的 GPS tag 属于 EXIF 标准的一部分,不过 GPS tag 在数据结构上和 EXIF 头是并列的关系,嗯……不深究无聊的细节问题了)。现在比较高级的相机都带 GPS 或者 GPS 接口了,对于没有 GPS 功能的相机,一张一张加 geotag 是不可能的,所以一般的做法是随身另带一个 GPS 记录位置/时间(GPS tracklog),然后回家之后把 GPS tracklog 和相片自动同步(两者都带有时间信息)打上 geotag。相机的时间需要预先对准,不过后期也可以用软件调,有些人的做法是对着 GPS 接收器拍一张照片用作后期处理时计算相机和 GPS 的时间差。
前几天出去玩带的是一个 WAAS-enabled GPS,最好的地方显示 5.5 feet(1.7 米)的精度,不过回来把 GPS tracklog 放到卫星图上看貌似有 4 米左右的误差,不知道是卫星图定位有问题还是我这个 GPS 说大话了……后期软件是土鳖的免费的 EasyGPS 和 PhotoMapper,同类软件貌似还有很多。把 GPS tracklog 和同步后的照片缩略图放进 Google Earth 的效果图见上。听说还有人在 GPS tag 里加入照相机朝向的信息(有些 GPS 带电子罗盘,所以这也可以自动同步),真是 geek 到家了。不过给照片加上这么精确的位置信息有什么用呢?似乎也没有什么大用,对我来说就是因为实在太容易搞,所以不搞白不搞。Geotag 的概念倒是不错,有名的旅游景点在 Google Earth 里都有很多网友上传照片,所以无聊的时候可以在里面环游世界(我的虚拟阳光宅男形象呈现出来了……)。
康神代码赏析
March 24, 2008 6:41 pm GMT-0700 | In Tech | 14 Comments | hide#!/bin/bash OLDCONTENT=`find -type f -exec md5sum {} \; | md5sum` svn up &> /dev/null NEWCONTENT=`find -type f -exec md5sum {} \; | md5sum` if [ "$NEWCONTENT" != "$OLDCONTENT" ]; then # reload updated configuration fi
以上是康神写的一个脚本的摘要。值得说的有两点:1、svn up 前后康神对整个目录的文件名和文件内容 md5 消化,这是确认目录是否有变化(包括文件改名)的一个好办法;2、康神用了 &> /dev/null
重定向 stdout 和 stderr,一般土鳖都写成 >/dev/null 2>&1
,康神伟大!
批评一下 PHP
March 23, 2008 10:43 pm GMT-0700 | In Tech | 3 Comments | hidePHP 里函数多如牛毛,加进去又没什么统一规划,搞得现在成了命名法大杂烩,比如:
- obj_verb 型的:array_slice() http_inflate()
- verb_obj 型的:create_function() parse_str()
- verbobj 不加下划线:setcookie() addslashes()
- 直接把 POSIX 传统函数拿来用的:opendir() fopen()
- 这种算什么呢:error_reporting() htmlspecialchars() 特别是这个 htmlspecialchars 命名毫无章法
- 新老 DOM 类函数不一样:一个叫 getAttribute(),另一个叫 get_attribute()
- 你可能会说,那同类函数可能命名法就一致了吧?也不全是,日历函数:
- verb_obj:cal_days_in_month()
- 大写首字母不加下划线:JDDayOfWeek()
- 突然又全小写了:jdtounix()
(其实 PHP 函数名不分大小写,最后这俩只是文档故意添乱) 晕死。有人说,你真弱,用多了就全熟了。好吧,我是比较弱,可是我知道有人在知名大公司天天写 PHP 还是和我一样晕……PHP 函数命名为什么这么乱?给俩链接:
- 20 possible reasons why PHP function names and parameters are weird
- Do You PHP? 里第二部分:The Ugly Duckling of Programming Languages
换个话题,最近 PHP 的 substr 函数被人改坏了。
There was a small inconsistency between PHP 5.2.1 and 5.2.2. In PHP 5.2.1, substr($str, $start)
returns the full $str
if (
$start < 0 && abs($start) > strlen($str))
. But starting from PHP 5.2.2, FALSE would be returned. Before 5.2.2, this behavior was conveniently used to extract at most N last characters of a string, e.g. $str = substr($str, 30);
limits $str
to at most 30 characters and truncate from the beginning if necessary. However, this no longer works! See also: diff-5.2.1-5.2.2, bug 41375. This is likely to change back in PHP 5.3, given what’s recently been done on PHP_5_3 branch.
PHP Doc 有正方呼吁:This is a small inconsistency, one of those things that makes the life of a PHP programmer like hell. Bugzilla 上反方辩护:The fact that it worked up until 5.2.1 doesn’t mean that you should have used it. 这个问题其实最开始只是因为别的原因无意间改错的,但是 PHP 内部却有人坚持错误,有人报告这个问题也被归类为 Bogus(意思就是说,RTFM,回家好好读文档去)。其实文档也不明确,现在基于各种原因,PHP 5.3 分支上又改回去了,真是搬起石头砸自己的脚。
说个微软搬石头砸自己脚的故事。IE 最开始搞出 {client,offset,scroll}{Top,Width,Height,Left} 十二个很有意义的 HTML 属性用来方便的设置/获取对象大小/位置等信息,实在是一个很好很强大的发明,基本也铁定进 HTML5 了。不过 IE 里面的制造标准不明确,各类元素定义略有不同,反倒别的浏览器抄得更和谐。搞到现在的局面是,微软自己发明的东西,反倒被 QuirksMode 说成 IE 里 incorrect/buggy,不如别的浏览器“正确”,真是衰啊。
高老头的厕纸问题
March 20, 2008 1:23 pm GMT-0700 | In Life, Study | 12 Comments | hideKnuth 在 1984 年发过一片研究厕纸问题的论文(The Toilet Paper Problem,后收入 Selected Papers on the Analysis of Algorithms)。在很多卫生间都可以看到如右图所示的双卷卫生纸架,以防一卷用完时出现尴尬情景。Knuth 研究的问题就是一卷用完时另一卷平均还剩几张的问题。他论文里写道:世界上有两种人,喜欢从大卷里用纸的和喜欢从小卷里用纸的;但是无论是谁,如果碰到两卷都用完了,那就有麻烦了!(很多人都说 Knuth 是因为自己碰到过这个事情所以才写了这篇文章)。Knuth 在 Mathematical Writing 第 31 页 15. Excerpts from class, October 30 提到发表这个论文时遇到的麻烦。杂志编辑对这个图灵奖得主的论文评价是“在我们杂志上讲笑话是危险的!”。Knuth 最后同意修改有粪便学双关含义的论文章节标题,但是论文题目死活不肯改了,因为 Knuth 号称已经用这个题目做过两次演讲。最后编辑只好说:Your toilet paper is accepted!
Knuth 推导出的结果如上图所示(憎恨数学者请跳过此段) 。n 是厕纸初始张数(张的含义是单个人 D.B. 后使用的厕纸数量),p 是大卷厕纸爱好者的比例,Mn(p) 为一卷用完时另一卷剩余的张数。结果很符合逻辑:如果 p 很小,大部分人都用小卷厕纸,最后剩下的一卷肯定很大;而大卷厕纸爱好者一旦占优(p > 50%),则最后很有可能出现两卷厕纸差不多一起用完的情形(Mn(p) 极小)。一个细节问题是这篇论文里面的 Catalan 数定义略有不同,论文里的 Ci 是通常定义下的 Ci-1。
Knuth 推导出公式之后感叹:When a formula turns out to be so simple, it must have a simple explanation. But the author hasn’t been able to think of any direct proof.(统计学里常见,很多时候确实可以找到简单方法)Knuth 一直很追求简单性,写 TAOCP 里很多算法都要斟酌词汇找到最有效的表达方法,不过在厕纸问题上却碰了个钉子,于是直接把郁闷的心情写进了论文。Knuth 在厕纸问题论文最后感谢:I wish to thank the architect of the computer science building at Stanford University for implicitly suggesting the problem… 大牛是不是都喜欢搞笑,想起诺贝尔物理学奖得主 Ramsey 大师在巨著 Molecular Beams 的参考书目里有一条是这样的:RAM50e N. F. Ramsey, private communications and lectures (1950)。囧,private communication 一般表示和别的大牛私人通信,他居然自己和自己私人通信……
Knuth 更多八卦可以看收入水木精华区的 helloooo 的文章。Knuth 中文名字是高德纳,我们一般叫他高老头,高老头非常可爱,几个月会出来讲个学(Computer Musings 有视频)。
上面这俩是啥?是新的厕纸设备,只有使用完第一卷时才能使用第二卷(图片来源)。这么看来,Knuth 那篇论文完全是在自娱自乐,有统计学上的价值却不能解决实际问题。现在新厕所都用上面这类新装置了,(啊,我终于回到我写这篇文章的起因了)不过上个月我上厕所,发现两卷居然都被人用光了!看来这种新装置也不靠铺。当时我身上一没手机二没女朋友照片三没人民币,连选择的条件都没有,只好等有老大爷进来求他给我送点纸。更奇怪的是,过去了两天居然还没有人装上新厕纸,资本主义的效率是不是就是这么低啊?看来我碰到的恐怕不是什么小概率事件,而是清洁工罢工了……
说到资本主义的低效率,我住的公寓楼地下室的垃圾箱要维护,这一维护,居然就维护了三个多月,搞得垃圾通道完全停用,门口的临时垃圾箱一到周末就会满出来。据说他们把垃圾箱拆开了才发现少零件……零件来了每天叮叮咚咚敲一会儿就收工了,晕啊,修个垃圾桶就能修三个月,这就是资本主义!
这篇文章思维好跳跃,我最近逻辑有点乱……
风起云涌图
March 18, 2008 11:26 pm GMT-0700 | In Life | 5 Comments | hide某人说,Blog 再不更新就长草了。我常常和某人说,Blog 就是有事写点,没事不用写。或者反过来也可以,有事忙了就不写,没事空了就写点。Blog 不是为了别人而写的,更不是为了留言和访问量而写的,Blog 是为了促进自己思考而写的。
这么一篇空洞无意义的文章实在是很浪费大家时间,于是我贴一张图吧。这是上周末在我阳台上拍的,定时每分钟一张,一共 29 张照片合成,动画速度是真实速度的一千倍。短短半个小时云行千里,请大家珍惜生命,远离博客,去看看大自然,哈哈。
技术信息:相机 Canon A570IS,使用 CHDK 脚本定时拍摄。土鳖低端相机也能用 Intervalometer,呵呵呵。
夏令时是邪恶的
March 9, 2008 2:28 pm GMT-0700 | In Life, Tech | 6 Comments | hide换夏令时啦!丢了一个小时。每年都要调两次时间,每次调时间,都会出点事。
(标题引自 chen3feng 留言)最早认识到夏令时的邪恶是多年前改夏令时那天我刚好赶早班飞机,人还在外地完全没想起来要调时间,幸好我临睡前突然想起来,需要再提早一个小时出发,后来到机场的时候只剩 20 分钟就起飞了,真是后怕……
早期不知道是 samba 还是 windows 有问题,总之调时间以后两边看共享目录的时间会差一小时。有一次我几 TB 的数据被自动重新同步了一次,真衰。
有人在 crontab 里放了两点半执行的命令,结果调夏令时那天事务流程完全乱掉…… crontab man page 专门在 BUGS 一节指出:
If you are in one of the 70-odd countries that observe Daylight Savings Time, jobs scheduled during the rollback or advance will be affected. In general, it is not a good idea to schedule jobs during this period.
因为有了一些教训,有同事写程序开始用 UTC 时间,这样就不会受到本地时间调整的影响。去年不知道哪个土鳖提出来把调夏令时的日子提前一个月,各类操作系统都需要更新过才能正确调整夏令时。有位同学没更新操作系统,看时间不对就直接把电脑时钟拨快了一个小时,结果反而那些先进的用 UTC 时间的程序出错了(因为没有调整时区,所以电脑的 UTC 时间就错了)……
sigh,到底是用本地时间,还是 UTC 时间写程序?
为什么要执行夏令时??不是说夏令时不省能源反而费吗???
德国人的形式主义
March 7, 2008 8:35 pm GMT-0700 | In Life, Tech | 6 Comments | hide下面这个材料转载自 Guide to LaTeX(第四版 146 页 7.5.1 节)。如果你直接看第三列,可能会觉得有点别扭,但又不一定说的上来哪里别扭;事实上,别扭的是有些符号之间的水平间距不理想。而第二列则是微调过水平间距的,看起来比第三列好看一些。熟悉 LaTeX 的可以仔细看第一列里相应的水平间距微调命令(这材料很有名,很多 LaTeX 书里都有,如果你看见过不要说我 TOOOOOLD!)。举例来说,第一行根号 2 和后面那个 x 之间需要稍微有点空隙;如果不留空隙(如第三列所示) ,看起来就比较难看。
如果你没觉得第二列比第三列好看,甚至没看出来两列有什么不一样,这很正常,不要觉得自己有问题!即便是每年成千上万屁挨着地用 LaTeX 生产出来的博士论文里,也只有极少数专门美化了这个水平间距问题,而这里面德国人占了大多数。为什么德国人这么注重形式?我也不知道,可能和他们民族严谨的作风有关。事实上,上面那本葵花宝典 Guide to LaTeX 的作者 Helmut Kopka 和 Patrick W. Daly 就是俩德国人。
说起德国人的严谨,我倒也认识一位严谨的德国物理学家。他光是让别人设计个 FPGA,就要专门写一个 RFC。这可不是拿 RFC 做个标题而已,而是严格按照标准 RFC 格式和风格书写,并且写完了那个 XHTML Strict 文档他还专门去 W3C 通过了验证。他把这个 RFC 发给同事们,结果半个月过去还没有人理他。于是他召集开会,说我老早就 request for comments,你们怎么一点 comments 都没有?你想啊,这么一群笨蛋物理学家,有谁会知道他电子邮件标题里的缩写 RFC 就是要 comments 的意思啊。
该德国仁兄给实验组建了一个内部 wiki,服务器装的是 Debian。在那个 wiki 的某个小角落里,他写了一大段使用 Debian 的理由,其中的废话包括:我最爱 Debian;Debian stable 很 stable;我装的,当然我选!等等……是因为有人和他争论哪个 Linux 发行版好的无聊问题么?不,事实上,整个实验组只有他一个人懂 Linux……
是严谨?还是形式主义呢?
This weblog is licensed under a Creative Commons License.
Powered by WordPress. Theme based on Pool by Borja Fernandez.