伊通河的红嘴鸥

有一天坐校车路过伊通河,看河面上一片白点。再看,像水鸟,还有的扇动翅膀正横过空中。赶紧掏出手机拍了几张,放大看,果然是白色大鸟,翅膀张开的样子像海鸥之类的。

仓促之间拍照,没有一张清晰的,放大也很模糊,还有车窗的反光。

发到朋友圈。不一日,同事LDZ老师在群里喊我,之前我发的伊通河水鸟,可能是红嘴鸥,附了一张照片参考。

后来查到,央广网也报道了,https://jl.cnr.cn/ztgz/20241030/t20241030_526957965.shtml。提到2015年开始治理,2019年有红嘴鸥等大量野鸟栖息。印象里,隐约记得这几年见过估计是红头鸭的,不多。

以前只知道候鸟南迁要途经吉林市,因为有大湖大河。偶尔还有报道迷路到了集安、长春的。

又不多久,前辈YK老师问我,是不是去滇池越冬的红嘴鸥,附了一个链接。链接的页面里有不少清晰照片,大鸟在空中特别近距离掠过。滇池水体巨大,望不到对岸,大海一样。空中满眼都是远远近近的白鸟,蔚为壮观。

看到一段文字“在湖岸安家筑巢”,突然我就不审美不浪漫了。哪不对呢?据我所知,鸟类只有在繁殖期才会筑巢。巢是为幼雏特别提供的场所,在越冬地的是能长途跋涉的成鸟,按说不该有巢才对。

那么,需要讨论以下几个问题。1.红嘴鸥的繁殖地是哪里,会不会是滇池。2.红嘴鸥的非繁殖期会不会也筑巢。3.伊通河的红嘴鸥与滇池的是同一品种、同一批吗?顺便,它们的迁徙路线和时间是什么样的?

物种库 http://museum.ioz.ac.cn/species_detail.aspx?id=19266 没有提到这些问题。不过有别的信息。长40厘米左右,翼展1米左右,真大啊。拉丁名,回头用于去维基百科。提到第一冬鸟,后面没提。可能成熟需要不止一年。

对滇池当地和红嘴鸥的报道,还是央广网,https://china.cnr.cn/gdgg/20231119/t20231119_526491686.shtml 提到 “从2~4岁时,红嘴鸥就开始繁殖”。所以第一冬鸟时还是毛头小子小丫头。这些与主题无关,只是有趣。提到了时间和地点,“红嘴鸥每年11月下旬到次年3月下旬在昆明越冬,4月初时又飞到蒙古国西部、俄罗斯贝加尔湖地区和北极圈内等地繁殖后代。”在北方繁殖。还提到“红嘴鸥的数量从1984年的2000只,阶段性跳跃式地增长至2021年的44000只。其中,少部分红嘴鸥不再离开滇池水域进行迁徙,但也未见在滇池筑巢繁殖后代”。有的成为了留鸟,不再迁徙,但未见筑巢繁殖。提到当地政府投入力量环保。还认为未筑巢可能因为人类溺爱,似乎暗示日子过得好就不需要鸟巢了,我怀疑想多了,可能仅因为不在当地繁殖。

这里有张分布图,https://baike.baidu.com/item/%E7%BA%A2%E5%98%B4%E9%B8%A5/698557

为清晰起见,我复制过来。

可以看到,标注(原产地)的,包括东北,粗略看起来长春也在边缘。在滇池,差不多是身为旅鸟或者视作非繁殖地越冬。不仅如此,凡太平洋海岸线附近,整个中国、朝鲜、日本、东南亚,都是非繁殖地。南南亚岛屿和大洋洲的北部岛屿也有存在。所以,不难断言长春伊通河的红嘴鸥是不是就是滇池的,甚至不能断言滇池就是迁徙的最南端,也可能只是经停。

跨大西洋两岸,加拿大、格陵兰鸟、欧洲、红海、阿拉伯海沿岸、印度西岸、青藏高原以南也有分布。不过那些和滇池的,看起来不是同一批。

云南对当地的红嘴鸥做了标记,观测离开昆明以后的迁徙路线。https://www.sohu.com/a/42676719_115092 提到发现了3条路线。从这里看没有经过东北的。其中若尔盖湿地似乎就是红军长征所过草地。

http://km.bendibao.com/tour/20221012/66018.shtm 则提到“ 迁徙新路线  发现了一条往东北方向去的一条红嘴鸥的迁徙路线,从昆明出发到了黄河,然后到东北停歇,然后继续往东北方向,到达了俄罗斯,有4000多公里的直线距离,飞行比较长的一只红嘴鸥,它一共飞行了8000公里。”这一段话中提到三次“东北”,其中两次为“东北方向”,指的当是角度,另一次是“到东北停歇”指的当是“东北三省”。提到有条路线过滇池后翻越喜马拉雅山去了缅甸。

https://baijiahao.baidu.com/s?id=1783138058708100450,提到筑巢时间。“每年的4到6月是红嘴鸥的繁殖期,红嘴鸥通常在地面上筑巢”。按前文对迁徙时间和地点的资料,那么此时在北方,不在滇池。虽然在北方筑巢并不能断定在滇池就不筑巢,但是如果红嘴鸥如果和一般鸟类相同,只在繁殖期筑巢的话,那么4~6月繁殖结合迁徙时间和地点可以得出结论在滇池不筑巢。同一文章,也提到了在昆明即滇池筑巢,“昆明周边的湿地和湖岸地也为红嘴鸥提供了理想的生活居所。这些地方有大片的芦苇荡和湖中岛屿,为红嘴鸥提供了安全的筑巢环境”。

用拉丁文名在维基百科 wikipedia 查,重定向至 Black-headed_gull 黑头鸥,这是红嘴鸥的别我。有一段文字,“It breeds in colonies in large reed beds or marshes, or on islands in lakes, nesting on the ground. Like most gulls, it is highly gregarious in winter, both when feeding or in evening roosts.”在陆地筑巢。在冬天成群活动,进食或夜晚……此处用了个词 栖息。这可以作为旁证,红嘴鸥在夜晚栖息时,并不需要巢。

综上,在滇池“筑巢”的说法,我怀疑是比喻义。一般鸟类只在繁殖时才筑巢,没有找到红嘴鸥例外的说法。红嘴鸥在北方繁殖,在南方途径或越冬。所以,在滇池应该不筑巢。

红嘴鸥向南迁徙的范围非常大,整个中国的东部沿海、东南亚、大洋洲都可能是目的地。包括滇池。滇池可能部分红嘴鸥的途经地,也可能是部分红嘴鸥的目的地。长春伊通河的红嘴鸥,可能与滇池的是同一只,也可能不是同一批。

读到这里,你会不会有点遗憾?可能会想,原来红嘴鸥的故乡、娘家不是滇池啊,原来有的还会跑到国外(无论向南还是向北,无论繁殖地还是越冬地)去啊,原来欧洲也有不是特有的啊,原来……

红嘴鸥的出现,至多能一定程度上得出结论,生态环境好转。因为“我们盖上了大工厂”十有八九不会引得“燕子为啥来”。还能得出结论,市民友好有利于红嘴鸥出现。滇池距离昆明市区只有5公里,所以市民非常容易到达。如果不够友好,杀死或猎捕或虐待都会使得红嘴鸥跑远,毕竟这家伙每天可以飞150公里。滇池距离市区近,可能也是大家会关注,有那么多照片的原因。滇池距离市区,我也没有看到就相信了,而是查证了一下,用百度地图量了两个距离,作为与网上信息的交叉验证。

对红嘴鸥的进一步拟人化,在哪里筑巢、安家、当作娘家,所谓引喻失义,再发展就是数地争当红嘴鸥故乡,并作为证据表明哪里是最好的地方,近而表明我热爱这片土地,我才是真正的东北人。

再发展,就是云南的朋友骂我,“杨老师你看你这不好吧”。万一滇军来问罪,我会把最近读到的一段文字发给他。

雷海宗在《中国文化与中国的兵》说了下面一段。

----引文开始---中间有省略----

北京猿人发现之后,有些夸大习性未除的国人更欢喜欲狂,认为科学已证明中国

历史可向上拉长几十万年。殊不知这种盗谱高攀的举动极为可笑,因为北京猿人

早已断子绝孙,我们绝不会是他们的后代。由史学的立场来看,北京人的发现与

一个古龙蛋的发现处在同等的地位,与史学同样的毫不相干。据今日所知,旧石

器时代

但不见得某一地的新石器时代人类就是同地后来开化人类的祖先,某一地的新石

器文化也不见得一定与同地后来的高等文化有连带的关系。因为我们日常习用

“中国史”“英国史”“欧洲史”一类的名词,无意之间就发生误会,以为一块

地方就当然有它的历史。

由自然科学的立场来看,地方也有历史,但那是属于地质学与自然地理学的范围

的,与史学本身无关。地方与民族打成一片,在一定的时间范围以内,才有历史。

民族已变,文化的线索已断,虽是同一地方,也不是同一的历史。这个道理应当

很明显,但连史学专家也时常把它忽略,无论在中国或西洋,“上古史”的一切

不可通的赘疣都由这种忽略而发生。所以关于任何地方的上古史或所谓“史前

史”,即或民族文化都一贯相传,最早也只能由新石器时代说起,此前的事实无

论如何有趣,也不属于史学的范围。

----引文结束---

以上对于事实的讨论万一错了,你刚好知道,万望告诉我,我好纠正。多谢!

此文也发布在以下站点。

----

知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福

----

以下是我曾经发布博客的站点,有些旧文。

----

豆瓣 - 因为审核"我的日记",不再更新。

https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。

https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

好工具 | 词源

最迟在大学入学以后,老师就告诉我们背单词需要看字根。更早,老师可能也说过。弟子不肖,没记住,除了 -ful, -ness 几个简单的。一想到 -ly 既可能是形容词,又可能是副词,我就绝望地想,这有啥用啊。更何况,词性,在阅读的时候根据上下文做简单地语法分析就可以猜出来了,为什么要特别记住呢,一点儿也不提供更多的信息。写作时,如果有word或 grammarly 之类的工具,会自动更正。更难的,像 German 和 Germany,哪个是德国人,哪个是德国,我都分辨困难,这事儿词根有啥用。

有用。不过,有用的不是字根,而是词源。

网上有人提到,德国Germany,很可能源于Germania日尔曼尼亚。以下是我瞎发挥的。所以你看,什么什么尼亚,是地名。例如 坦桑尼亚、罗马尼亚。说不定Germany就是Germania日尔曼尼亚的亚字去掉了,读作“日尔曼尼”。这是地名。另一个就是那个地区的人了,German。

词源到哪里去查呢?

1. 高山字根 APP

有个 高山字根 APP

http://www.dicts.cn/dictword20181/download.html 下载。

输入一个单词,可以给出这个单词 根据词源,能拆成哪几个词根。如果仅止步于此,与-ful, -ness 这种词缀的区别还不大。还会给出词干部分的来源,以前我的困难是,这些词干我大多不认识。不认识,就像文章中的某个词,并无定义,或者用法与定义无关——例如,赋能、抽象——读起来可真是困难。

2. 童哥说单词

刚好,就某个单词的词源,我有过困惑请教作者。他告诉我,那个单词的词源是有所本的,来自《童哥说单词》。这本书将近2000页,可当词典用。例如,有一条是这样的。

如果我要查的是 leechcraft,分解为 leech-craft。Craft我认识,有帮助;但是leech我不认识,啥用没用,跟硬记乱码没多大区别。但是,这本书说,leech是水蛭。这我就知道了。我知道,(1)在 p2p bt 下载中,只下载不上传的人,就叫作 leech;(2)华盛顿就是被西方传统医学放血疗法治死的,地狱笑话被lecchcraft治死的;(3)湖南一带曾经有过严重的血吸虫病,蚂蝗/水蛭(确实是同一种东西?还是某种田螺)是重要的传播途径,七律《送瘟神》可与《祭鳄鱼文》对比(4)leech读作 凌迟……leechcraft顿时生动起来;

3.

上面引的这段文字中,有"PIE*leg"是什么东西?查了一下,是“基于印欧语(PIE, Proto-Indo-European)”的意思。追溯词的来源,有些词形相似,有些读音相似,有些读音经过稀奇古怪的变化以后相似。

我突然想到,英语,印欧语系,他们自己不是应该研究得很充分吗?查到一个APP,绝好。

有个网站 https://www.etymonline.com/cn。它说

这个网站有 app可以下载,名字就叫作 Etymonline。其中 etymon 是字源的意思。

应用的效果,举个例子。Inter 这个词,折成 in - ter。In就是in,大致“在里面”的意思。Ter是什么?在 etymonline中搜索一下,得到下图。

Ter 来自拉丁文,是earth地球、土地一类的意思。印欧语系的字根原始的意思是 干燥,也许是使干燥。这还是抽象。点击 ter,得到下图。

这些单词中都有 ter 这个字根。里面不少我认识的啊,问题解决了。这,不就是科幻小说里经常怀念的故土 terra 吗。在 eymonline 也可以看到汉语版本,如下图,截自网站,与app内容一致。

再举两个例子。

Welter,查到词根有 Wel,我不认识。但是由它派生的词,这些有 拧巴 意思的词,熟悉的可真不少。

我猜测,非常多的单词,它们的字根与咱们熟悉的两三千词,很可能有相当高比例有同源的字根。所以,非常多的单词,拆分以后,都能追溯到根儿,再洐生到咱们熟悉的两三千词。这样,这些非常多的陌生单词,就是老朋友引荐的了。

再来一个伏特加 vodka,字根有 wed,水、湿的意思。以下单词,很多都相当熟悉。有些令人震惊,“你也是来自这个字根啊……好像很有道理的样子。”

此文也发布在以下站点。

----

知乎 https://www.zhihu.com/people/yang-gui-fu-52

独立博客 https://younggift.net/

微信公众号 杨贵福

----

以下是我曾经发布博客的站点,有些旧文。

----

豆瓣 - 因为审核"我的日记",不再更新。

https://www.douban.com/people/younggift/?_i=0098558fqLUL9h

CSDN – 因为要求我登记手机号码的原因是“为了您的安全”,不再更新。

https://blog.csdn.net/younggift?type=blog

blogsopt – 因为从我的机器不可达,无法更新

朋友圈里的杨打油

我,朋友圈里的打油诗人,目前贴了19首。

最初,发朋友圈。有几位朋友说,你这连韵也不押啊。我说:不押韵的多啦,你看王维,再看苏东坡。几位朋友说,人家那是古声古韵,当时是押韵的啊。

后来,徒夫先生说,平仄不通;四声八病,你这太典型了啊。推荐我看王力。我草草翻完几本,又找规律讲解和格律判定。再写,徒夫先生说,对仗还得看词性。前途漫长,此路绵绵无绝期。

刚好攒了十九首,“结集”一下,再接再厉。

(1)

(2)

我困牢笼短

君游四海长

隔墙频网聚

片语诉衷肠

2024年8月28日

(3)

(4)

(5)

(6)

(7)

(8)

(9)

(10)

(11)

(12)

(13)

(14)

(15)

(16)

(17)

(18)

(19)

哑铃缺斤少两

可调节哑铃片的一对哑铃,发现份量不对。经过称量和讨论,确定了折算公式,缺1/4。

1. 偶然发现

一对哑铃,2根杆,4个锁紧螺丝;哑铃片共4种不同份量,每种4个。4种哑铃片分别标称2.5kg、2kg、1.25kg、0.75kg。组合出不计杆每只 (2+1.25+0.75)*2 =8kg,兴致勃勃练了一段时间。觉得小有进步,可以调高份量了。

忘了因为什么,可能是想把杆重算进去,也可能为了方便以前一直用的固定重量哑铃对比,总之偶然想到称重一下。不称要不紧,一称发现份量不对,缺斤少两。

如下两图所示,标称750g的,称重结果为431g;标称1.25kg的,称重808kg。标称相同的4个哑铃片重量上下略有浮动,十几或几十克,容易理解。但是标称与称重结果差距这么大,就没法用误差解释了。

我锻炼的时候写日志,要记录重量。以后吹牛时,哑铃片的份量也得如实才行啊。不然,在家里举8kg,在别的地方别人面前一显摆,8kg根本举不起来,岂不尴尬。哑铃仅仅重量不准,毕竟这么沉重,又不能扔了,那么想办法找到真实重量标定一下吧。

2. 猜测

猜测上面写的数字的单位不是kg,而是磅,这个重小的重量单位。

换算了一下,手头现有的数字不符合磅和公斤的换算关系。

标称 称重(g)
0.75 443
1.25 808

在网上查到 https://forum.xitek.com/thread-1772754-1-1.html 在 bing 的 cache 中,PCM120说的情况跟我的差不多。

: 我的哑铃用了将近有二十年了,一直没注意重量是否符合要求,当年是按重量付款的,价格约为5元/千克。

: 看了楼主的帖子,下午把哑铃也称了一下,结果如下(标称/实际 单位 :千克):

: 哑铃片:0.75 / 0.49 1.50 / 0.976 2.0 / 1.495。

: 附件重量(手柄及两个固定螺母):1.329千克。

盎司?也不对。

以前见过向龙的壶铃只有数字,没有单位,也好奇过是磅还是公斤。后来用称重确认了,所以还是用秤吧,别猜了。

3. 称重

最简单的称重方法是,4种、每种4个,共16个哑铃片,每个称重一下,贴个不干胶贴标上数值。但是我的工具不行。

我手头现有两个秤。一个是厨房用秤,如上两图所示。量程/最大1kg,精度0.1g。另一个是体重秤(此刻才想到体重秤有两个,但是不影响接下来的方法和结论)。最大重量不清楚,能称大活人,精度也不精楚。最大重量远超过我要称重的哑铃片、杆、螺丝的总和,但是量程不仅是最大重量,还包括最小重量,与精度又有不同。说起细节来挺麻烦,简而言之,从现象上看,哑铃片放在体重秤上“打不起砣”,显示为0。

解决方案是这样的。

(1) 人先站在体重秤上,作为空白。体重秤没有“去皮”功能,所以记录下这个重量,称为H。接着,人拿着哑铃片D,称得新的重量N。计算,哑铃片的重量D=N-H。

(2) 小的哑铃片按上述方法称重得到0,因为体重秤的精度不够。所以用厨房秤称。

(3) 大的和小的之间的重量,比如空杆,人和体重秤联合测量,得到结果0,又超出厨房秤的范围。在厨房秤旁边搭个差不多等高的小台子,把重物同时放在小台子和厨房秤上,得到一侧的读数L。把重物旋转180度,测另一侧的读数R。L+R得到空杆的重量1kg多一点。

以上方案中包括以下假设和需要讨论的地方。

(1) 根据现象,可以推得体重秤的误差分布是不均匀的。因为,在0附近,测得存在哑铃片和不存在哑铃片间的差额为0;在人体重附近,这个差额不是0。既然误差分布不均匀,那么在哪个范围内误差是可忽略的。

(2) 记录数据时假设了体重秤和厨房秤的误差相同。更有甚者,假设了如果二者量程无限,那么同一重物在这两个秤上的结果相同,不然无法比较或求和。有同学可能提到,都是法定用于计量的秤,应该不会有问题吧。如果以此为依据,那么哑铃上还标着数字呢,也作不得准。

(3) 印象里方案(3)中的称量方法对重物放得有多平是有要求的,但是细节不记得了,人懒没有查。所以,假设两次称量之和就是准确的重量。

称了几个组合,得到一些数字。笔记粗糙而乱,除了记录还有猜测和推算(以及暴露口算和笔算能力有多么弱)。下面有表格,此处仅展示,可跳过,不影响阅读。

4. 拟合

实验得到以下几组数据。之所以有斤,还有kg,是因为体重称有时候单位是公斤(kg),有时候是斤。这样记录保留了原始数据,虽然没有表明哪个才是原始的。

在测量过程中,我就开始猜测,感觉像是 哑铃片实际重量为标称的3/4。所以在笔记的左侧用测得的其他数据验证了一下,感觉差不多。这可以作为一个结论,即3/4不知道从哪里来的,经验公式。

不过经验公式不够“科学”,说服力还可以更强一些。我把这些数据用XY散点图绘图,如下图所示。再拟合一下,Excel中称为 趋势线。

拟合的结果是公式的参数。用于拟合的数据有了,先验公式/曲线的函数是什么呢?我们可以通过观察发现,差不多是线性的。也可以猜测一下缺斤少两的做法,在什么情况下不易被用户发现。缺斤少两的直接收益是厂商可以用更少的铁,毕竟哑铃价格中的重要因素是铁的价格。如果每个哑铃减去相同的重量,对较高重量的哑铃获益不多,在较低重量的哑铃上更容易暴露出来。那么按标称乘以一个因数,即线性的缺斤少两,是更佳方案。线性的结果拟合的就挺好,更复杂的,就略过不讨论了。

从图示和R2上都可以看出,线性拟合对于所有数据的误差都不大。

所以,得出结论 标称重量*3/4 或者 标称重量*0.75,即哑铃片的真实重量。缺1/4。以前的哑铃片组合表格,修订如下。我以为去杆8kg的,加杆和螺丝以后,刚好8kg多一点。

5. 讨论

为什么追究这个问题呢,一个因素当然是考虑在工具有限的情况下如何得到有说服力并且易用的结果,是件好玩的事。

也有更实际点的用途。网上有报道,有人在家里用哑铃或杠铃锻炼,以为自己厉害到这个数值了,结果在健身房举了真实重量的哑铃,导致受伤了。

邢ZP老师提到,有百米跑道只有九十米,比实际短十米。受测小朋友误以为自己是天赋异秉不可多得的短跑人才,长期为没能在奥运会上为国争光而遗憾。直到后来这位同学家乡的新闻爆出体育设施建设中的贪污才让他终于把心放下。

我们讨论到,哑铃不是计量器具,不能当作法码用,所以缺斤少量不受计量法管束吧。邢ZP老师还提到,计量器具里,健身房的体重秤的数值说不定也有偏。不过,体重秤并不用于称肉卖,所以并没有顾客多花钱少得肉,没有这方面的损失,还得到了情绪价值。这个,又怎么看呢?

https://younggift.net/

https://www.zhihu.com/people/yang-gui-fu-52

微信公众号 杨贵福

字幕批量繁转简

繁体中文的字幕读起来不那么顺畅,转成简体中文就容易多了。对于电视剧有很多字幕文件的情况,需要批量转换。这个实验过程可以帮助理解简繁对应关系、编码,实践命令行工具使用和批处理编写,可以涉及环境变量、搜索路径、cmd和shell知识,以及word、记录本、Total Commander使用。

1. 解决方案

本文把字幕批量从繁体转换为简体,涉及到的命令行工具为 OpenCC 和 iconv。工具的下载路径、简要的原理、其他替代工具将在后文给出。使用如下所示的bat代码。

for %%i in (*.ass) do (

 iconv -f UTF-16le -t utf-8 "%%i" > "%%i.utf8"

 opencc -i "%%i.utf8" -o "%%i" -c c:\tools\opencc\share\opencc\t2s.json

 del "%%i.utf8"

)

2. 繁体转简体,其他工具 及 原理

电影的单个字幕文件转换,可以用word完成。常用的字幕格式 srt, ass 都是纯文本文件,可以用word打开。使用word的"繁转简"功能即可达到目的。

简体 繁體

在原理上,如下图所示,两个“体”字,在同一个文件中可以同时出现。这两个“体”字的的不同并非由于 编码、国别、本地化locale、字体 的差异,而是不同的字符。在编码上互不相关,二者的对应关系完全由于自然语言汉语决定——在技术上,任意两个字符(严格地说,还有多对一、一对多等情况,在此略过)都可以对应——人为规定“体”与“體”之间为简-繁对应。

电视剧的字幕每集一个文件,逐个用word打开操作,有点麻烦。这种任务,一般适合使用命令行操作。

有个 OpenCC 项目,支持命令行下的繁简转换。

https://github.com/BYVoid/OpenCC

我运行时报错,但是没有找到详细手册。猜测 OpenCC 只能读入 UTF-8编码。

3. 编码,其他工具 及 原理

(1)判定当前编码

我当前要处理的字幕文件是不是utf-8,查看文件编码可以用 Linux 下的 file 命令。或者用记事本 | 另存为,或者用 Total Commander | F3 查看 等诸多方式。这几种方式间可以相互补充印证。

(2)转换编码

在原理上,编码的不同是更一般性的问题,在各种语言中普遍存在,而不仅在中文中存在。通过 记事本 | 另存为,保存为 UTF-8,可以完成编码的转换,从而符合 OpenCC 的输入条件。也可以使用 SubtitleEdit 另存时转换编码。

批量处理的话,可以使用 iconv。

Iconv 在 https://gnuwin32.sourceforge.net/packages/libiconv.htm。下载 Binaries 和 : Dependencies,解压到同一目录中。

4. 批处理

了解以上原理、试用命令行工具对单个文件转换成功后,选用 iconv 和 opencc 写 bat代码 完成批量转换。

(1)遍历目录

遍历当前目录,并以扩展名 ass 作为筛选文件的条件,形成下面的循环。

for %%i in (*.ass) do (

rem 对每个文件执行的操作

)

(2)对每个文件执行编码转换,然后由繁体转换为简体

在循环体中对遍历的每个文件执行类似操作。

第一步,用iconv转换编码,由utf-16 小端 unicode 到 utf-8。

第二步,用opencc执行由繁体到简体的转换。

第三步,删除临时文件。

for %%i in (*.ass) do (

iconv -f UTF-16le -t utf-8 "%%i" > "%%i.utf8"

opencc -i "%%i.utf8" -o "%%i" -c c:\tools\opencc\share\opencc\t2s.json

del "%%i.utf8"

)

其中 %%i 是对应当前遍历的文件名的变量;

c:\tools\opencc\share\opencc\t2s.json 是繁体到简体的配置文件及其所在路径;

%%i.utf8 是临时文件。

Iconv 和 opencc 需要放在搜索路径%path%下,或者像下面这样使用如下绝对路径。

先备份,然后把所有字幕文件放在当前目录下,执行上述批处理(名字就叫“字幕文件 unicode2utf8 繁2简 - go.bat”)。一瞬间以后,所以字幕文件完成了编码和繁简转换。在此案例中,只有一个文件 a.ass。

使用 Total Commander | F3 功能或者上述提到的其他方法,可以验证编码转换完成。

打开文件查看内容,可以检验,已由繁体转换为简体。

使用AHK禁用🚫Windows10表情输入面板,及映射鼠标右键快捷菜单

在Windows10中,误触 win+; 或 win+. (左windows键和分号 或 左windows键和点)组合键,会弹出如下窗口,挡在你正看着的地方。

如果正在写东西,无论是写代码还是写文字,这时的体验都相当不好,想骂人。功能并非越多越好,不管三七二十一全都展示出来就更加糟糕。

这个窗口叫作表情输入面板,在网上找到两种禁用方法。第一种是改注册表。我尝试过至少两个流派,都无效。并且,改注册表这么高权限的操作,应该慎用,尽可能不用。能完成任务的话,取得的权限越少越好。第二种是按特别操作步骤,能够得到特定的窗口/界面,再操作就能禁用。我尝试过至少两个流派,在我的机器都找不到期待的界面。这种Windows GUI风格修改配置与Unix/Linux或Windows ini相比,虽然对初学者友好,但是对稍微复杂一点的修改相当不适用。版本小修改、位置或文字变动,都可能使以前的操作方法失败。

写了一小段AHK脚本,代码如下。

<#;:: ; 禁用 表情输入面板

return

<#.:: ; 禁用 表情输入面板

Return

已经安装了AHK,我把下述代码保存为 ahk扩展名,放在启动执行中。问题解决,世界终于清净了。

代码的含义如下。

拦截了 左win+. 和 左win+分号。这两种组合键是我经常会按到的,在本想按 win+L 或 ctrl+L 的时候。右win+. 和 右win+; 没有拦截,仍然可以使用。不常用的功能,入口应该避免误触。要隐蔽,因为不常用,隐蔽不会妨碍工作效率。

此外,我的键盘有个小缺欠。这款键盘没有上下文菜单,或称鼠标右键菜单,或称快捷菜单。它们略有区别,在此略过。总之,就是按下以后,弹出下图中菜单的那个键。

也写了一段AHK脚本,如下。

^F1:: ;上下文菜单

; msgbox ,,, here

Send, {AppsKey}

; MouseClick , right

这样,我按 ctrl-f1时,会弹出上下文菜单。最后一行的注释,对应的是在鼠标当前位置按下鼠标右键,这个功能我不常用,并且用 keynavish 完成,所以在此注释,只留作备忘。

https://younggift.net/

https://www.zhihu.com/people/yang-gui-fu-52

微信公众号 杨贵福

哑铃片的组合有几种,以及使用Excel解决

对于实现需求“一副哑铃,有可替换的哑铃片 0.75kg,1.25kg,2kg,2.5kg每种各4片。可以组合出哪些重量”,此前写过一篇博客,https://zhuanlan.zhihu.com/p/702387535。我当时感觉有条件的穷举相当困难,束手无策,二猫用C/C++解决了。上次那个故事告诉我们,精确描述需求经常相当困难,即使你觉得问题简单并且考虑清楚了。

前两天练着的时候,突然想到,好像用Excel能解决。这次的故事告诉我们,如果需求清晰了,一切都不是问题。

总体的思路是——先穷举、再过滤。

问题1. 约束条件:两个哑铃重量相同,每个哑铃的两端重量相同。
2.5kg,2kg,1.25kg,0.75kg 共4种哑铃片。

思路是这样的。

(1)在每个重量组合中,4个哑铃片的每个有2种状态,
分别为0和1,1代表取、哑铃片拧在杆上,0代表舍、哑铃片不拧在杆上。

(2)哑铃片彼此重量不同,因此分配4种不同的权重,对应二进制每位2^3~2^0。

步骤如下。

(1)Excel表格的左半边,函数的自变量及取值。

第1行以4种哑铃片的重量作为标签;
第2行的数据是哑铃片的重量,用于接下来的计算。
第3行开始穷举4种哑铃片的所有状态可能。
其中 0000代表4个哑铃片都舍;
0001中的1代表0.75kg哑铃片取,其余哑铃片舍;
0010中的1代表1.25kg哑铃片取,其余哑铃片舍;
0011代表1.25kg和0.75kg哑铃片取,其余哑铃片舍……

其2^4=16种可能。

(2)Excel表格的右半边,函数值。
“半边”这一列,用于计算单个哑铃一端的重量。公式为
每个哑铃片的重量 * 每个哑铃片的状态0或者1 ,4个哑铃片累加。

也即 sigma( 每个哑铃片的重量 * 每个哑铃片的状态 )

也即 2.5kg*状态a + 2kg*状态b + 1.25kg*状态c + 0.75kg*状态d

下图中,D6是0.75kg哑铃片的状态,d是0.75kg哑铃片的重量。

如下图,得到哑铃组合的16种可能。

(3)接下来,把单个哑铃的一端加倍,再加上杆的重量1.1kg。

16种可能,不重不漏。其中有些组合的重量是相同的,给予保留。在锻炼中,这时的重量分布不同,旋转等动作的时候会有不同感觉。

按重量排序。需要排序的原因分析在第2个问题中详述,此处从略。

问题 2. 放宽的限制条件:只组装出单个哑铃。
限制条件:每个哑铃的两端重量相同;每端不超过4个哑铃片。

2.5kg,2kg,1.25kg,0.75kg 共4种哑铃片,每种2片,共8个。

(1)自变量-取舍状态,穷举所有可能,函数值-哑铃重量。

下图为局部,只包括了所有可能中的8种。

按问题1中的思路,把每片哑铃赋值为一个自变量,取值为拧上或不拧上的状态1或0。共2^8=256种可能。

函数值,半边(单个哑铃的一端)重量,取值为

Sigma( 每个哑铃重量 * 每个哑铃片的取舍状态)

下图为局部,只包括了所有可能中的4种。

接下来,求单个哑铃的两端,再加上杆的重量。

(2)过滤条件1 相同重量哑铃片的去重

有一种情况,在穷举中认为两种不同组合,但在需求中视为相同的组合,需要去重。

例如:两个0.75kg哑铃片间没有任何不同,因此取任何一个,在需求中认为相同。但是在上述穷举中两个0.75kg哑铃片的状态是不同的变量,所以未去重。

解决方案如下。

两个相同重量的哑铃片,设1为取,0为舍,共有如下4种可能组合。

哑铃片a 哑铃片b
0 0
0 1
1 0
1 1

我们可以注意到,以上4种组合中 01 和 10 两种状态是完全相同的,因为在需求中两个相同重量的哑铃片没有任何不同,二者取哪个并无区别。

根据以上分析,我们过滤掉 10 的这种情况。

即 遍历4种哑铃片,只要其中任何一种哑铃片有10这样的组合,去除这一组合。

在Excel中分两步完成。

第一步 取重量相同的2片哑铃,如果组合为10,作标记为1。
算法是 左侧的权重为2^1=2,右侧的权重为2^0=1;如果 左*2 + 右 的值 为2,那么标记赋值为1,否则赋值为0。如下图所示,标记“0.75kg - 10”为1。

第二步 遍历所有4种哑铃片,作 或操作,即4种哑铃中有任何一个符合(组合为10),对“有哑铃片存在10组合”标记为1。如下图所示。其中的“+0”是为了把TRUE或FALSE转为1或0的形式。

(3)过滤条件2 哑铃片超过4个,去除

对左侧的状态 求和,哑铃片每取1片会有加1。如果总数大于等于5,对“哑铃片4个及以下”作标记1。

(4)过滤条件1 + 过滤条件2

上述两个条件中任意一个标记为1,那么标记“两条件过滤”当前组合为1。

设置筛选条件如下,去除所有标记为1的行。

(5)排序

筛选完成后发现,与问题1不同的,哑铃的重量并非由小到大升序排列。原因是二进制权重(以及所有带权的进位制)都假设 右边的所有位取1所得到的结果,小于 左侧任意一位的值。如二进制的100 > 011,如十进制的 1000 > 999。这样,按0000~1111穷举权重,得到的结果才是符合升序排列的。即相当于按下图的条件排序。

在下述反例中,
状态0000 1111得到重量4,
状态0001 0000 得到重量2。

状态 自变量值 0000 1111 < 0001 0000,
重量 函数的值 4 > 2。

这导致的按状态升序排列所有组合,函数值并非全都符合升序排列。

在Excel中,容易处理,按列 半边重量(或*2未含标,或加杆1.1kg,顺序相同)排序。

(6)得到结果

因为有筛选,所以如果想把结果复制粘贴到Excel之外,会把筛选掉的组合也一并复制粘贴出来。

排除筛选掉的行的方法,在Excel中按如下步骤操作。

第一步 Ctrl-g 或 F5 得到 定位对话框。

选择 定位条件。在下图中选中 可见单元格。

Ctrl-c复制,打开或新建 另一个工作表,鼠标右键 | 选择性粘贴。如下图所示,按 数值 粘贴。

共49种可能。经与二猫的工作核对,一致,旁证我的结果是对的。

画图分析,双哑铃 其中每个哑铃重量的增长,如下图所示。

从图中可以看出,(1)增长较为平缓,这样锻炼时可以组合出步进不那么激进的重量;(2)某些重量有不止一种组合。相邻求差发现步长有三种,分别是0、0.5、1、1.5。其中6处步长为1,4处步长为1.5,2处步长为0.5.

单哑铃的重量增长,如下图所示。具有与双哑铃相同的特性。

相邻求差发现步长有四种,分别是0、0.5、1、1.5,其中多数是0.5,更多哑铃片使增长更平滑。7处步长为1,1处步长为1.5——最后一步。

-----

https://zhuanlan.zhihu.com/p/709971919
微信公众号:杨贵福

避免雨课堂在切换窗口时暂停视频

在疫情期间对雨课堂就久闻大名,因为不喜欢被强迫,更喜欢自由发挥的感觉,所以未得一见。最近才知道雨课堂有个“为了你好”的功能,就是把网课切换到后台的时候,视频会停止播放。甚至在桌面上并置两个窗口,把另一个窗口设置为活动时,雨课堂的视频也会暂停。

一方面不喜欢被操控的感觉,另一方面喜欢操控代码的感觉。所以,手痒打算试一试如何禁止这个贴心的特性。我平时用 firefox,这次偏偏没有找到有些贴子提到的界面,所以只好换成 Chrome。

如果我是雨课堂的前端程序员,检测窗口不活动最直接的方法是 检测鼠标离开。就从这里试,姑且一试。

1. 技术原型 设置断点,找到代码,修改

打开目标页面,就是网课那页。在 Chrome 中,按 F12 进入 [这个界面叫作什么]界面。选择 Sources。

在窗口的右侧,Event Listener Breakpoints | Mouse | mouseout 设置断点。

动一下页面,东点西点,进入离开,触发断点。鼠标点击下图中红色方框中的按钮,或者按 shift-f11快捷键,跳出当前函数几次。

直到看到下图中的代码。用双斜线注释下图中红色方框中的那一行。在本文中,以下我们把这个文件称为目标文件。

注释以后如下图所示。

Ctrl-s保存。

清除断点。

此时,在不关闭当前页面和F12的前提下,可以连续播放视频,在切换到窗口以外时视频不会被暂停。

2. 下一节课 手动修改代码

载入下一节课时,或者刷新当前页面,修改刚刚那行代码以后就可以避免视频暂停了。

载入下一节课时,不必再次设置断点。通常,F12页面不关闭,在F12d页面上显示的就是这个文件的这个位置,只是代码又刷新成没有注释的版本了。一眼就能看到那行关键代码,注释掉就完成了修改,能避免视频暂停。或者按 ctrl-shift-f 显示 search,在文本框中键入要找的代码,回车就能找到目标文件及代码所在的行。打开文件,注释那一行就可以避免视频暂停。

3. 自动 超驰

每次修改代码还是不够自动化。在写 chrome插件或者油猴脚本 自动修改js代码或变量或函数之前,还有轻量级一点并且相对自动化的对付手段。

在目标文件上鼠标右键,选择下图中靠近下方的红框所在的菜单项, Override content (超驰)。注意看靠近上方的红色方框,目标文件已经修改完成了。

浏览器会在上方菜单之下显示一段文字,并选择文件夹保存修改过的js文件。

浏览器会要求本地硬盘的权限,如下图,允许。

附:以上两条消息对近视眼丰富不友好,如果不弹出系统菜单,那个大个屏幕,根本就看不到消息的存在。

完成以上操作后,载入下一节课,或者刷新当前课程,视频播放以后不会因为切换出窗口而暂停。原理是,目标文件不从远程载入,而是从本地的 override目录中那个刚刚保存的文件载入。从下图中我们可以看到,文件不在Page中,并且右下角标记了淡紫色圆点,表示使用这个本地文件超驰目标文件。

4. 更自动 及 其他

以上方法,适用于对前端开发感兴趣的同学。如果想给非程序员的其他人使用,还需要开发成 Chrome插件,或者油猴脚本(这和自动开始下一课是两种不同功能)。我猜测在 Burp 中正则表达式匹配 js 文件内容,在线修改,可能也行。我还看到有贴子用 python 代替浏览器的角色,发送心跳信号,极短时间内就学完了。

探索原理,熟悉工具,花费的时间比循规蹈矩地学一遍还要长。不过,乐在其中。


https://younggift.net/

https://www.zhihu.com/people/yang-gui-fu-52

如何理解一个数的无理数次幂

1. 问题

PQ同学在朋友圈提到,“如何理解一个数的无理数次幂?”我回复,“(3^x)^x = 9,求x。”

简单解读一下。写成更易读的形式为,在下面这个方程中求x。

我们容易猜测到, 刚好符合要求。接下来可能想到,解可能不唯一,然后想到 也是一个解。所以,这个方程如果有解,那么要求3这个数的次幂是无理数。因此,如果这个方程有解、有意义、成立,那么,一个数(在这里是自然数3)的无理数次幂就需要有意义。换言之,这个方程就是一个数的无理数次幂的意义,就是“如何理解一个数的无理数次幂”。

以上对解的猜测是否正确,可以找一下旁证。

用Geogebra,没错。

用 wolfram alpha https://www.wolframalpha.com/input?i=Solve+%283%5Ex%29%5Ex%3D9

得到2个解。

化简其中一个,结果没错。

数值约等于1.414,正是我们熟悉的 +sqrt(2) 和 -sqrt(2)。

2. 对这个方程又如何理解

单单这么一个方程,看起来有点莫名其妙。你能会觉得这并没有回答,而只是对问题的重复。

这个方程类似在 数域扩展数据类型 那一课中 所举的其他几个例子。我们略做回顾。

第一步 首先要有数。最初的数(似乎)是自然数。自然数是如何定义的?由0和+1操作可以定义出1。进而,由1和+1操作定义出2……这样,我们定义出自然数。

第二步 2+3=5,3+4=7。为方便起见,我们发现 自然数 可以用 加法 表示。

第三步 我们由加法定义出减法。7-4=3。5-3=2。7-4 的意思是 这样的一种运算——如果这个数x存在(有意义,有定义,有解)的话,方程7-4=x有解,即 x+4=7,也就是说那个数是 加上4等于7的那个数。当然,后来我们知道这个数刚好存在,并且唯一,是3。

根据减法的定义,我们列出式子 2-3。根据定义,其含义为 2-3=x,即x+3=2,加上3等于2的那个数——如果这个数存在的话。这个数不存在,在所有自然数中,当我们遍历时可以发现,没有一个数加上3能等于2。

第四步 为了2-3=x或x+3=2这个方程有解,我们扩展数域,令x=-1。我们把这个新的数域,也包括旧有的自然数,起个名字,称为整数。

负数或者说自然数以外的整数为什么存在?如何整理负数?负数,就是令2-3=x有解的那种数。如果想解这种方程,那么就需要负数。如果某个物理现象的建模所得到的方程,即各种变量间的约束关系,刚好就是这样的方程,那么我们就需要负数。

书说简短,我们按这样的方式,即因为方程需要有解(因为运算或逆运算是有定义的,因此应该可解),继续扩展数域,就得到了分数/有理数、实数中的无理数、复数。

回到最初的方程上来。这个方程(3^x)^x = 9看着如此简单,不应该无数吧。如果它有解,我们就必须接受次幂是无理数的,否则方程无解。

3. 如何构出这个方程

构造这个方程不是“显然”就写出来了。

看问题 “如何理解一个数的无理数次幂”时,我首先想到 有什么情况下会有无理数次幂。

所以,我需要一个方程。类似这样的方程 一个数^(x)=另一个数,即一个数的无理数次幂的值是另一个数。2^sqrt(2)=管它什么呢,这就是无理数次幂。但这是没有意义的,是对问题的重复。

什么是有意义呢,我们在什么情况下需要次幂是无理数?答案是:这类同于数域的扩展。

我需要类似 2个数的平方等于2 的形式,这样其解就是sqrt(2),无理数。那么我需要 x*x 的形式。加法不行,减法不行,一定要乘法才行,sqrt(2)就是那个 自乘等于2的数,x*x=2 的那个x。

3^(x*x)=9,这就有意义了。这个方程不需要 问题中的无理数次幂 就可以定义出来。并且,这个方程易懂,我们能猜出来它的根有sqrt(2)。

但是还差一点。这个方程确实没有引用未定义的概念无理数次幂,但是它的解是2,也没有引出无理数次幂(必然存在)这一结论。

变换一下,3^(x*x)=(3^x)^x,这样就可以了。这个公式叫做什么来着?

这样,我们就得到了 (3^x)^x=9,其解是无理数的次幂。

3. 物理意义及扩展

这个方程(3^x)^x=9在数学有意义了,但是有的同学可能还会追问,这样的方程有必要存在吗?那么,所追问的就是这一类方程,或者说无数数次幂,的物理意义。

物理中有没有这样的方程呢,我首先想到的是欧拉公式,那是复数次幂。实数的,还非得是无理数的,有理数/分数的不行,一时没想起来。搜索了一下。我才知道无理数次幂是高中数学的内容/捂脸。

又搜到

为什么几乎所有的物理公式里面的参数都是有理次方的? - Boo Radley的回答 - 知乎

https://www.zhihu.com/question/418475291/answer/2120030068

有回答指出 半衰期、热力学中的多方过程 都可能是无理数次幂。

突然想到前几天刚刚又看到的,维度。相当于下面这个回答中的,维度有一维、二维、三维,还有分数维度,还有无理数维度。正是按数域扩展的思路,“如果符合定义,我们还可以得到这样的结果;它有点匪夷所思,但是符合定义”。

在物理中,是否存在某个物理量正比于另一个物理量的无理数次幂的情况? - 笠道梓的回答 - 知乎

https://www.zhihu.com/question/396816857/answer/1242606325

接下来,我们可以按同一思路继续讨论。一阶导数是什么意思,二阶导数是什么意思,都是有定义的。那么,1/2导数是什么意思,sqrt(2)阶导数呢?

https://younggift.net/

https://www.zhihu.com/people/yang-gui-fu-52

哑铃片的组合有几种,以及二猫的编程解决

一副哑铃,有可替换的哑铃片 0.75kg,1.25kg,2kg,2.5kg每种各4片。可以组合出哪些重量?

1. 我哥给我一副哑铃

回老家,我哥给我一对可调节哑铃。

之前我有6.5kg*2kg哑铃一对,用来练深蹲、单侧或双侧俯身划船,农夫行走和土耳其起立。份量有点轻,但是没有更重的。还有3kg*2哑铃一对,是邦哥带我去迪卡侬买的,用来练肩。他说,不用太重,你感觉侧平举不太费劲就对了。一直用到现在,刚刚才有一点觉得轻,但是没有刚好稍微重一点儿的,因此没有进步的意愿。还有2对1kg哑铃,俯身或俯卧练肩后侧或肩胛,有时希望稍微重一点点点。

我哥给我的这对哑铃可调,共16片哑铃片,0.75kg,1.25kg,2kg,2.5kg共4种,每种各4片。哑铃杆2根,每根1.1kg。

我装配出8kg*2哑铃,当天晚上就练了一轮肱二头肌。果然比6.5kg的要给力,略微有点过于给力。第二天晚上,第三天晚上,肱二头肌拉伸时有微微疼痛。还试了左右分别5组土耳其起立,也果然比6.5kg*2要难。我想,是不是应该降一下重量,比6.5kg高5~10%,这样成长曲线更平滑一些,痛苦能少点。

如果有个表格,能把这副哑铃所有能组合出的重量都列出,我每次查找下一个5~10%进步的选项就可以了。最大重量是每个哑铃13(+杆重1.1)kg,练肩的话,我今生也不会达到。总重五十多斤,抱着深蹲对我可见的未来也足够。

问题是,都有哪些组合呢?

2. 用EXCEL试试

凡事,先用最简单的工具试试。Excel最简单,各种计算,特别是简单场景的,无出其右者。有人可能觉得C最简单,或者觉得Python最简单。你得在发着低烧,要求速度的时候,看出错率和体力消耗。这才是简单。

图1 Virgin Python,惟真楼的巨蟒

Excel有求组合和排列的函数,就是英文单词 combin 和 permut 或变形。我刚一输入函数就觉得“不对”。一,这两个函数的作用是求组合和排列的数量,而我要的是列表,仅仅数量对我不够。二,相同重量的组合,对我而言可以算同一种。如何判断?Excel 是否能像 C++ STL 那样支持自定义的谓词呢?十有八九不能。这样对多数用户过于复杂,容易用错。况且,我对谓词的要求是判断求和相等,通用的谓词定义需要何种计算能力,是不是得图灵机等价,那么这里需要用VBA才行。

再查,Excel 365版本以后的,支持给出组合和排列的条目。我手头的版本过低,不知道有多低,不过,想想发行时间应该不足以支持。试了下 一个array类函数{=PERMUT(A2:A4,3)},又试了ctrl-shift-enter组合键,果然不能工作。

再往下就是用VBA或者某个特别的插件,进入奇技淫巧模式了。

3. 二猫出手

所以,这种活儿就应该用C语言。穷举,判断条件自定义。找二猫,问“我有这么个问题”。我没说“这事挺简单”,虽然不确定,但是隐约觉得还有坑。

二猫说“简单,能做。”

然后开始问我尚未细化的需求。俩哑铃是不是需要相同重量?每个哑铃杆有两端,这两端是否需要相同重量?相同重量,使用不同的哑铃片,比如 2 == 1.25+0.75,这算一种还是两种?我又一次体会到 需求难提,用人类语言尽述心中所想的难度,以及为什么会有《猴爪》这样的故事。

没多一会儿,程序就出来了。核心代码大致如下。

我说,输出改成这样的格式吧,这里加几个空格,那里加两个\t,这里乘以2,那里对齐。二猫体会到需求变更是工程中的常态,用户经常在看到输出效果以后才知道“那不是我想要的”;可能程序员最花时间的那部分,做完以后,用户说“这个不重要”,请删除。

最重要最复杂的业务逻辑完成以后,我和二猫不约而同地对剩余的工作采用了额外的工具,而不是修改程序。二猫写了段以map为准的代码,把数据吃进去再排出来,去除完全相同的重复。核心代码大致如下。

我用excel去除重量相同的重复,调整格式,分别得到重量列表和组合列表。

这样,我们得到了以下表格。能够看到相同重量有多种哑铃片组合方式。

双手两手相同重量,不去重复,最右列是哑铃片的组合。

单手,不去重复,最右列是哑铃片的组合。

4.赞叹精妙设计

观察上述两个表格,我发现,我并不太需要哑铃片的组合。只要告诉我这个重量是可行的/,对我来讲信息就足够了。有了可以得到这个信心,很容易算出组合的方式。就算我的口算能力一塌糊涂,也可以再根据想要的重量查上面的两张表格。

因此,我删除哑铃片的组合,去除相同重量的重复行,得到下述两个表格。简洁多了。

双手,杆两端平衡,按相同重量去除重复。

单手,杆两端平衡,按相同重量去重。

观察这两张表格可以发现,哑铃片重量的选择应该是精心设计过的。哑铃总重的增量,绝大多数是0.5kg。增加0.5kg对于提高训练难度,经常不是特别大,也不特别小,相当适合。个别增量是0.25或者1。

再回顾哑铃片的种类,0.75kg,1.25kg,2kg,2.5kg,如果使用分数是 5/2,4/2,5/4,3/4,有点意思。转换成以1/4的倍数表示,那么4种哑铃为 10,8,5,3。这几个数字看起来眼熟得多,隐约有人民币面值的种类,以及质数、合数之类的印象。好了,应该是精心设计过的。就到这里吧,赶紧去锻炼——莫等闲,锈了新哑铃。