phpQuery和create_function

鸟类名称查询加点美观的新功能:为每种鸟配一幅图片。编程过程中留意到phpQuery宣称的很多过滤器——如:header:nth-child——都不好用,系统报错都说“create_function有问题”。

查查PHP手册,原来create_function在PHP 7.2.0时已过时,到8.0.0时已过世。手册建议改写成匿名函数。改写也不难,就是找到所有的(共11处)

create_function('$params', 'codes that use $params')

把它们改写成:

function($params){codes that use $params}

改完一跑,效果还不错呢,算是把半残的phpQuery医治好了。

受影响的过滤器至少有这些:

:parent  :empty  :enabled  :header  :only-child
:first-child  :last-child  :nth-child

升级微知

昨晚升级“微知”,从mediawiki下载、解压、上传,却出现了500号运行错误。打开PHP 错误报告,说是某些类找不到。到它提示的缺失目录下去看,发现一些奇怪的文件名,例如.ph.p、甚至像是从中间截断的(题图所示红叉部分)。拿这个信息一搜,说是“别用7-Zip解压tar(尤其从GitHub打包的),会丢东西”。换Windows自带的解压,果然正确文件出来了(题图所示绿勾部分)。

Mediawiki升级支持不了太大版本跨度,只能先升到 1. 35,再升到1.43。今天基本上把1.35搞定了,只是出了个意外:许多页面变成空白,试着重写,则报编辑冲突,不允许覆盖,有些图片也不显示了。

调查一番,发现是丢了99个版本的更新记录。手动运行SQL修复 :

INSERT INTO revision_actor_temp (revactor_rev, revactor_actor, revactor_timestamp, revactor_page)
SELECT rev_id, 1, rev_timestamp, rev_page FROM revision
WHERE rev_id > 1 AND rev_id < 101

给所有revactor_actor硬赋的1,等于是把所有丢失的版本更新揽到1号用户(也就是我自己)身上。在多用户的wiki上是未必正确的无奈之举,而在我这里则是唯一正解。

修好先跑两三天再升1.43,我自己也喘口气压压惊。


6月13日后记:升级1.43的时候(及之后)发现数据库经常报“数据库已锁定”(The primary database server is running in read-only mode)警告,怀疑是新版数据库的replica闹出的幺蛾子。不是自己的服务器,权限不够,查不了太多,只能通过打开$wgDebugToolbar$wgDebugDumpSql,跟踪到这么一句:

SELECT @@GLOBAL.read_only AS Value	6.297ms
Wikimedia\Rdbms\DatabaseMySQL::serverIsReadOnly

用phpMyAdmin查看@@GLOBAL.read_only,果然一会儿是0,一会儿是1,十分飘忽。目前无法做更深入的研究,先去includes\libs\rdbms\database\DatabaseMySQL.php里面,强行让serverIsReadOnly返回false就是了。

对振荡天星的猜想

天问二号出发了,预计一年后到达振荡天星(2016 HO3)。从已知的一点信息,猜猜振荡天星的模样吧。

振荡天星的光谱属于S型小行星,这种小行星的平均密度是3000千克/立方米。从对其亮度变化周期的观测,知道这颗小行星自转相当快,每28分钟转一圈。再按S型小行星的平均反照率,估计其尺寸大约40-100米。

就算它是个直径60米的球体好了,一顿操作猛如虎,可以算出表面逃逸速度是3.9厘米/秒。这就有趣了,按照它的自转周期,赤道线速度高达11.2厘米/秒,已经超过了逃逸速度。就是说,在它赤道上搁一块石头,会直接被甩飞到太空里去。只有把石头搁到纬度70°以上,才能暂时存留。说“暂时”,是因为石头会被甩向低纬度(重力太小,摩擦力不够挽留它的),进入±70°范围之后再被甩飞。

所以,振荡天星不太可能是个松散的石头堆,而更可能是一整块,否则自己就散架了。40米以上的一整块,很可能是熔过的抛射物。一坨熔融岩浆在太空中高速旋转的话,应该会把自己转成一个妊神星那样的长扁椭球。如果它形状不太扁,那有可能是后天撞转的。

倘若它真是一整块的话,天问二号带去的磨削毛刷就最合适了。探测器贴上去时会努力匹配自转,把横向速度差控制到5厘米/秒以内。不过,先落到高纬度,必要时再往低纬度爬(天问二号有这个能力),应该更容易些。


再推推球形松散石堆在太空中不散架的最低条件:赤道线速度2πr/T < 逃逸速度√(2GM/r),其中M = 4ρπr³/3。化简不等式,得到T√ρ > √(1.5π/G) ≈ 265716。若S型小行星ρ为3000,则T > 4851.3s才能不散架,而振荡天星的T只有1680s。

贝努小行星·图源NASA

之前国际上取过样的“龙宫”“贝努”这俩松散石堆,都是C型小行星,密度较低,1200左右。好在它们自转速度极慢,最快是贝努的4.288小时一圈,它的T√ρ ≈ 535746 > 265716,完全可以维持形状。

乐山大佛

最爱乘船去看乐山大佛,看他从山崖后渐现一手,渐现半面,进而全身充满视野,令人心动不已。

岷江上游两岸的游船码头都已经停用了,如今要去东岸下游的乌尤寺码头。

花花鸟鸟丑猴子

正当季的是海绵杜鹃
某种溲疏
黑短脚鹎白头色型
某种柳莺
丑萌丑萌的藏酋猴

珙桐

峨眉山息心所的珙桐

从万年寺车站下车,乘索道上行到万年寺,却不进寺,沿着息心所方向的指示牌拾阶而上,大约四十分钟,就看到石阶的尽头,忽然现出一树“白鸽子”,迎风飘拂,仙气十足。

珙桐就生长在息心所外的平台边

金腰燕

遇到一家金腰燕,养活了两个孩子!挤在壶状巢的门口,圆头圆脑,煞是可爱。

这家金腰燕的屋子十分别致,有好几层色彩。想是搭到一半时,被粉墙的人类刷白了。但它们没放弃,坚持把房子盖完了,中间还短暂地换过一段黄泥。

燕子父母飞进飞出,忙个不停。带给孩子的食物里,看到了一只异色瓢虫。谢谢瓢虫!

我给这场面起个英文名:SWALLOW。
老友豌豆皮跟了个同样双关的中文名:嚥。

白鹡鸰与黑水鸡

睡莲鹡鸰
带娃的黑水鸡

淡色沙燕

拔草垫窝的淡色沙燕

在南河边散步,看到许多小鸟在河畔的干草地上起起落落,细看发现是忙着拔草垫窝的淡色沙燕

我拔,我拔拔拔
出发!
忙得像机场
歇一会儿,梳理一下

万幸

和家人刷《哪吒2》。演到殷夫人化丹时,周围一片嘁嘁喳喳,净是家长教育孩子要孝顺、以后要听自己话的低语声。惴惴地听着侄女和她老妈那边,竟然安静祥和。再一看,原来她老妈睡着了,真是万幸。