黄槐决明

黄槐决明

黄槐决明

黄槐决明

黄槐决明

路边看到开着五瓣黄花、结着豆荚的半乔半灌木,查查疑似黄槐决明(Senna surattensis或Cassia surattensis),维基英文说SennaCassia两个属到现在还是分不清楚,中文没有词条。百度垃圾则在黄花槐(Sophora xanthantha)下扰乱视听地贴了一堆黄槐决明的图片。

最终判断参考中国植物物种信息数据库

magic quotes

这篇博文里涉及两个问题。一是Mediawiki显示空白,二是在托管共享服务器上关掉自己PHP环境里的magic quotes。

对于第一个问题,我找到了原因但是没在上面费时间;解决了第二个问题,第一个问题也就N/A了。

 

先说事情的缘起。最近发现我那个自用小Wiki出状况了,所有页面都显示空白正文,只剩标题和Wiki标准界面菜单。

如果点“编辑”,就能在编辑框里看到正文。做一些改动再打开,可以看到词条内容确实被改动过。这是个很好的信号,说明数据库里的内容都还在,而且存取都没问题,只是后续的处理和显示出错了。

大致搜了一下网上内容,有遇到完全相同症状的,说是PHP的PCRE版本升级了,而低版本的Mediawiki代码会出错。方案是降级PCRE或者升级Mediawiki。

降级PCRE是不可能的了,Mediawiki早该升级了。

那就升吧。

 

  1. 下载Mediawiki。
  2. 解压。
  3. 上传到服务器上的一个新路径下。
  4. 把旧Wiki里的images目录拷过去。
  5. 把旧wiki里的LocalSettings.php改一下$wgScriptPath,拷过去。
  6. 浏览器上打开新路径的Wiki链接/mw-config,按指示操作。
  7. 确认新版本运行正常。
  8. 删除旧Wiki目录。
  9. 把新Wiki目录改为旧Wiki曾用名。
  10. 把LocalSettings.php的$wgScriptPath改回来。

 

做到第六步时报错了,说新版Mediawiki不能在magic_quotes_gpc打开的情况下运行,让我关掉。

magic_quotes_gpc是PHP_INI_PERDIR级别的,不能够被程序软关,就是说在LocalSettings.php里调用ini_set没用,必须在类似php.ini这类系统级设置里硬关。

可系统不是我一个人的,我只能局部定制。

 

直接在.htaccess里写

php_flag magic_quotes_gpc Off

刷,产生“500 Internal Server Error”错误。据说如果PHP在Apache上不是以Module运行,则会看到这个错误号。这条路走不通了,再来。

 

写个PHP脚本,只有一句话:phpinfo(); 上传运行。阅读phpinfo()的输出,找到PHP初始设置都用了哪些.ini文件。

再写个PHP脚本,只有一句话readfile($_GET[file]); 上传运行,把.ini文件一个个读出内容来,拼接成一个php.ini,在文件末尾附上

    magic_quotes_gpc = Off

在.htaccess里放一句

    SetEnv PHPRC 新php.ini全路径名

上传,再刷,没关掉……

 

几乎山穷水尽时留意到了phpinfo输出的这一栏:

    user_ini.filename     .user.ini

对啊,PHP_INI_PERDIR的说明里也提到了.user.ini,我早该用这个最省力的方法。

创建一个.user.ini文件,把“magic_quotes_gpc = Off”写到里面,上传到Wiki主目录下。再刷,呼,终于行了。

微博分享按钮

三年前往博客里添加了一个微博分享按钮,最近发现微博分享方式有WBML新版了,于是按照微博介绍的WBML界面重写了这段代码。

先贴代码。新版的添加微博分享按钮的方法:编辑正在使用的monochrome族主题(其它主题可能要微调)的header.php,做两个改动:

一、在<html>标签后增加wb命名空间:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:wb="http://open.weibo.com/wb">

二、在</head>之前加入以下代码:

<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script>
<script type="text/javascript">
jQuery(function(){
//  window.setTimeout(function() {  // Make it asynchronous if using the iframe mode.
    jQuery('div.post').each(function() {
        var url = jQuery(this).find('h2.post_title > a').first().attr('href');
        if (typeof(url) == 'undefined') {
            url = location.href;
        }
        var titlestr = jQuery(this).find('.post_title').text() + ': ' + jQuery(this).find('p').not('.wp-caption-text').text();
        titlestr = titlestr.replace(/\s\s+/g, ' ').substr(0, 110);

        var buttonstr = '<div style="width:95%;text-align:right;margin-top:-40px;margin-bottom:40px;">';

        var param = {
            url:url,
            type:'button',
            addition:'number',
            picture_search:'true',
            title:titlestr,
            ralateUid:'1691250947'  // 关联用户的微博用户号码
        };
        var temp = [];
        for(var p in param) {
            temp.push(p + '="' + encodeURIComponent(param[p] || '') + '"');
        }
        buttonstr += '<wb:share-button ' + temp.join(' ') + '></wb:share-button>';


        buttonstr += '</div>';
        jQuery(this).find('div.post_content').first().after(buttonstr);
    });        // jQuery.div.post.each
//  }, 5000);  // window.setTimeout
});
</script>

第一次重写后,IE不稳定地显示按钮、Firefox完全不行(IE竟然胜出,奇迹)。调试发现和一年前的一次优化有关。当时我把分享按钮的JS代码改为异步(橙色代码,页面加载完毕5秒后)运行,而此定时器似与WBML版按钮冲突。

之所以怀疑这个定时器,是因为观察了博客右边栏放置的静态代码“微博关注”按钮。我留意到它总能显示,并且当整个页面加载完毕、网页闲下来时才开始运作。猜想渣浪也发现这些按钮很耗时,于是也在按钮里内置定时器,把我这些外层的定时器顶得不干活了。

另注:渣浪程序员把“关联用户”的设置参数命名为ralateUid,嗯,从上一版延续至今以后也一直会继续错下去的拼写,厚道地猜想这是为了防鹅防寨故意拼错的。另外,微博文档里说抓图选项是searchPic,而快捷设置页里则可以看到是picture_search。我测试之后得知,picture_search是有效参数。

冥王星·新视野号

冥王星和卡戎·图片来自NASA

冥王星和卡戎·图片来自NASA

今天的关注焦点是新视野号(New Horizons)飞掠冥王星

NASA公布的飞掠时间是世界协调时2015年7月14日11:49:57(北京时间2015年7月14日19:49:57),也不用太掐着点儿看实况转播。因为没有“实况转播”:飞掠之后再过4小时25分钟,才能有飞掠瞬间拍到的图片传过来。另外飞掠是一个过程,即使已经开始远离冥王星,这一段时间仍然比前几天靠得近得多。这段时间新视野号必然在忙着采集数据,没空发照片。

冥王星、卡戎和地球、月球的大小比较 除月球外的图片其余部分来自NASA

冥王星、卡戎和地球、月球的大小比较
除月球外的图片其余部分来自NASA

飞掠卡戎的时间是世界协调时12:03:50。

运行到冥王星轨道之外,回过头来看,就是暗面了,虽然比前几天离冥王星近,但是光学观测条件恶劣了。不过,还有一项观测在逆光条件下更有利,就是对大气的研究——如果冥王星有那么一丝大气的话。

新视野号最新测得冥王星直径2370km,卡戎直径1208km。NASA官网上放了它们俩和地球的大小比较示意。我想这样还是不太能让人理解冥王星究竟多小,就又在图上按相同比例添了个月亮。添完之后,我这时常为冥王星降级略感不平的人觉得被说服了,它这么一丁丁,就是该降级。

太阳系著名天体位置示意

太阳系著名天体位置示意

这些天常常看到人问,为什么新视野号不能在冥王星停一停,转几圈再走。这张对比或许能帮人理解:能挣脱地球引力、又经过木星加速、只用了九年半就飞到了冥王星的一个航天器,不可能被比月球还小的冥王星捕获入轨。除非新视野号一头撞死在冥王星上,否则根本停不下来,哪怕擦着冥王星的表面飞都停不下来。打个比方,大猩猩抡出来的一个链球,螳螂是接不住的。

还见人继续问:先让卡戎帮新视野号减速嘛。

这就是只定性不定量的思考不耐了。冥王星和卡戎捆一起都顶不上月球的个儿,一只螳螂接不住大猩猩的链球,再加一只螳螂还是接不住。

新视野号2006年1月19日出发,2015年7月14日到达冥王星,只花了九年半,这个速度十分惊人。再参照一下右边这幅太阳系著名天体的位置图,会让一些人感到疑惑:探访水星信使号为什么花了六年半(2004年8月3日-2011年3月18日)才飞抵目的地?

这个疑惑其实对苹果和橙子的比较。简短地说,新视野号路线设计为极速到达,而信使号被有意放慢了脚步。

新视野号的任务是“飞掠”,就像前面说过的,它不需要绕着冥王星转,所以只需要玩命飞就行。倘若它的任务是绕飞冥王星,那么它飞过去的速度就只能慢不能快,而那样的话,恐怕一百年也到不了了。

信使号的任务是“入轨”,它不能笔直朝着水星冲过去、传完数据玩消失——如果那样就粗暴快捷多了,而绕飞水星的技术难度很大。

首先,信使号在水星面临和冥王星相同的问题:怎么刹车?水星个头太小了,连木卫三土卫六都比它大,它接不住地球直接扔向它的探测器;其次,水星离太阳太近了,信使号飞往它的途中会不断被太阳吸引加速,与其说是飞向水星,还不如说是往太阳上掉落,本来就刹不住车,被太阳加速后更是雪上加霜。

所以信使号到达水星的轨迹是兜着圈子慢慢飘近的,经过一次回归地球,两次金星接力,三次水星飞掠,到第四次靠近水星时才偷偷混进绕行轨道。我们说“六年半到达水星”,指的是最终入轨日期,而不是首次飞掠水星的日期(2008年1月14日,距发射三年半)。

木星和木卫一的合成照片 来源NASA

木星和木卫一的合成照片
来源NASA

刚才说过,新视野号到达冥王星之前,在木星老大哥那里得到过一次引力加速(2007年初),趁机拍了老大哥家里老老少少的一些照片。探测木星是新视野号的任务之一,也是一次系统测试确认的大好机会。

跑一趟木星并不吃亏,事实上,如果不经过木星而直接飞往冥王星的话,未经引力加速的探测器要晚三年才能到达。

 

 

微笑·汉景帝的地下王国

塑衣式彩绘女俑

塑衣式彩绘女俑

四川博物院《汉景帝的地下王国》特展

四川博物院《汉景帝的地下王国》特展

四川博物院正在展出汉阳陵博物馆的文物(2015年7月10日至9月10日)。这个特展的名字叫做《微笑·汉景帝的地下王国》,起“微笑”这个名字,应该是因为参展文物中,最具代表性的是一大批面带微笑的陶俑。不论是着衣式还是塑衣式的陶俑,都面色平和,含春带喜。

这儿,“汉阳陵”读作“汉·阳陵”而非“汉阳·陵”,即汉景帝的阳陵。

着衣式行走武士俑

着衣式行走武士俑

汉景帝阳陵外藏坑着衣式陶俑出土现场资料照片

汉景帝阳陵外藏坑着衣式陶俑出土现场资料照片

前面提到两个词:“着衣式”和“塑衣式”,现在展开说一说。

所谓着衣式,其实出土和展出时都是裸体的。“着衣式”既然成了“脱衣式”,“着衣”从何谈起呢?这儿的“着衣”是相对于“塑衣”而言,就是说,陶俑的衣服是穿上去的、而非雕塑的一部分。但丝麻棉材料的衣服经不起时间的考验,很快就朽烂光了,只剩下光溜溜的裸体俑。右上图是大批着衣式陶俑出土时的宏大场面,考古人员宛如闯入了大叔天体营的沙滩聚会。上面大图里可以看到陶俑都是断臂模样,左右肩膀只剩两个孔洞。这些孔洞原本安装有木头胳膊,可是木头也都腐烂无存了。

所以,“着衣俑”和“裸体俑”这两个势不两立的词指的是同一样东西。展方为了重现当初安放陶俑时的盛况,精心打扮了两件陶俑给观众体会。

着衣式俑(衣服为复制品)

着衣式俑(衣服为复制品)

展出恰逢孩子们的暑假,有许多家长带着娃们来看展,却没有做好预习功课,也没有现场学习或应变的兴趣,结果面对这些裸体俑,就出现了尴尬场面。一个女孩儿甚至当场表示:“这个展览少儿不宜。”拽着妈妈离开了。这句话有种悖论式的微妙感,直白地说,这女孩儿意识到少儿不宜,说明她已经不是少儿了……

或许,真的是少儿不宜吧。看,这儿有件宦官俑,比起三大件齐全的武士们,宦官俑的小丁丁确实是名副其实的小丁丁,只剩豆大的一丁丁了。

猛击阅读全文

山鸦日记——后记

随笔:山鸦日记

chough-diary-100

山上的朋友告诉我,他至少看了两天,窗前的那家红嘴山鸦只剩父母在巢,可能是孩子们都飞走自立了。

他说,那父母偶然还会一愣神后作出频频下望找孩子的举动,孩子们应该是羽翼丰满后自己飞走的,不像其它一些动物,由父母赶出家门。

明年,后年,年复一年,这样的剧情还会重演在每个屋檐下。

霸·迷失千年的古国

铜甗

带有“霸”铭文的铜甗内壁

金沙遗址博物馆正在地下一层临展展厅展出《霸·迷失千年的古国》(2015.07.07 – 2015.10.07),展品丰富,展线有次序有逻辑,墙上图文说明信息量巨大。

2007年,因为一起盗墓事件,在山西翼城县隆化镇大河口发现了一座西周墓葬。考古人员从这座墓葬中发掘出大量带有铭文的青铜器,大量的礼器、玉饰、乐器、兵器、车马器暗示着墓主显赫的地位,青铜器铭文中反复出现一个字:“霸”。考古学家们猜想,这是一个实有封地、却被历史忽略遗忘的诸侯国。

不说废话,火速上图:

前面说过,这个特展的信息量巨大,挑几块展板感受一下。注意第六块还有个观众互动内容,从互动区的投票来看,参加互动的观众还真不少。
猛击阅读全文

苍鹭

苍鹭

苍鹭

湿地公园里有一大群苍鹭(Ardea cinerea),外号“老等”的,总在等,有时是一只等,有时是一群等,站在水中、岸上、树上,一直在等。我到水边的时候它们已经站在那里了,我站到腰酸腿疼撤退的时候,它们有一些还没动过。我不叫老等,它们叫,所以我等不过它们也不丢人。

grey-heron-6

grey-heron-5

grey-heron-2

grey-heron-4

水里有很多鱼,个头还不小,在水中或岸边等到鱼的苍鹭会先把脖子45度伸直,确认是鱼后,奋力一扑,再把脑袋露出水面时,一条鱼已经到嘴了。鱼不会上树,所以树上的苍鹭通常等的时间不长,它们站在高处可以瞭望到整个水面,哪里热闹了,它们就起飞,缓慢从容地拍着翅膀,在水面上空兜几个圈子,确认猎物后就飞掠过去或者垂直下降,一头扎进水里。

grey-heron-9

我曾经以为涉禽是不会游或者不敢游的,看到苍鹭到深水区捉鱼,才颠覆了这想法。它抓到一条鱼,也不急着飞走,面对前来争抢的同类,它反正已经把鱼咽下去了,漂在水面上扑扇着翅膀对抗。

猛击阅读全文

湿地公园

灰喉鸦雀

灰喉鸦雀

我正在拍湿地公园里的一丛再力花(Thalia dealbata),一只色彩鲜明的袖珍小鸟飞落在花柄上,啄食了几口花,歪着脑袋看看我,道:“唧!”

起初以为这是棕头鸦雀(Sinosuthora webbiana),再细看它的小脸蛋,棕色不够,是只灰喉鸦雀(Sinosuthora alphonsiana)。也有说灰喉鸦雀是棕头鸦雀的一个亚种的,长相确实挺容易混淆的。

再多说几句灰喉鸦雀,它的拉丁文学名曾叫Paradoxornis alphonsianus,深入研究DNA后,Paradoxornis属被拆分,灰喉鸦雀学名变更为Sinosuthora alphonsiana。英文维基百科中,以上两个名字都指向同一篇Ashy-throated parrotbill;另外,Parrotbill(鸦雀)的正文写道:

Later studies found no justification to presume a close relationship between all these birds, … As names like Paradoxornis paradoxus – “puzzling, paradox bird” – suggest, their true relationships were very unclear.

博主译:新近的研究发现,无法认定所有这些鸟之间存在密切的亲缘关系……如同Paradoxornis paradoxus名字——“迷惑的、矛盾的鸟”——所暗示:它们的亲缘关系很不明确。
博主注:Paradox意思是“矛盾的、悖论的”,Ornis是拉丁语的“鸟”。

小鸊鷉

小鸊鷉

还没脱掉繁殖羽的小鸊鷉(Tachybaptus ruficollis)正训练两个孩子抓鱼,它抓住一条鱼逗弄孩子过来,孩子游近时丢到水里,孩子抓到后它就抢走再丢,如果鱼逃走了它就亲自扎猛子抓回来,最后孩子吞吃掉被折腾死的鱼。嗯,为身心同时饱受摧残的鱼点个蜡。

小鸊鷉培训孩子捉鱼

小鸊鷉培训孩子捉鱼

顺便说一下,如果有孩子喊“鸭子!鸳鸯!”可以告诉他这叫做“小鸊鷉”,不是鸭子,不是鸳鸯,和鸭子鸳鸯大雁天鹅这一伙的关系就是它们都是鸟。如果这些词是大人先喊出来的,或者孩子开口后、大人的言语也确认了这是“鸭子、鸳鸯”,就不用告诉他们了。

苍鹭

苍鹭

打架抢鱼的苍鹭

打架抢鱼的苍鹭

公园里有个比较大的水域,至少看到了苍鹭(Ardea cinerea)、小白鹭(Egretta garzetta)、夜鹭(Nycticorax nycticorax)这些鹭科鸟类。苍鹭照片比较多,我另开一个博文贴照片。

小白鹭

小白鹭

我正在拍这只小白鹭在再力花上荡来荡去站立不稳的窘态,它忽然迅雷不及掩耳地扑到水里,口衔一条鱼飞走了。似乎告诉我:“看,我真的不是掉下去的。”

猛击阅读全文

昆虫微距练习

fly-20150703

最近的微距练习特别验证昆虫——特别是苍蝇蚊子——对我的信任,小花蝇的复眼都拍出来了。

mosquito-20150703