补充 为什么长春的太阳在北面,使用geogebra解释

5. 补充1-定量

以上,定性分析表明,长春日出时的方位角在 东西向测地线 以北,因此日出在东北方。

定量分析也对吗?我们以长春夏至日那天日出时的方位角为例。

5.1 测量

下图,是长春正上方俯视。阳光与晨昏线垂直,阳光穿过北回归线(在这个角度上的投影边缘,图中在阳光的路线上、地球边缘的黄圆点),并穿过地心。阳光与东西方向夹角为23度左右。未考虑投影。

立体视角如下图所示,阳光与东西方向夹角为23度左右。在图中可以看到,23度测量自 北回归线与(长春日初时)当地刚好正午的那个地点阳光的交点、长春、长春东西方向测地线三者的夹角,比投影到(或投影后展开?)长春的大地上的角度略小。这是长春夏至日时的日初时的方位角。

考虑一下投影呢?下图中,两个灰色箭头是刚刚测得23度的夹角;两个蓝色箭头是测地线(假设大地是平面)的延伸,夹角32.72度。

5.2 验证数据

https://gml.noaa.gov/grad/solcalc/azel.html
查 北纬42度,东京120度,使用东八区时间。之所以不使用长春的真实经纬度,是为了与上一节 测量 中的经纬度以及时刻保持一致。

方位角为 90-57.65=32.35度。

https://www.osgeo.cn/app/s1904 查同一时点地点。

302.20-270=32.2度。这个网站也说 方位角从正北顺时针算,但是结果并不是。存疑。

5.3 小结

验证数据32.35度或32.2度,我测量的数据32.72度,可以视为大致相等了。Geogebra绘图测量和根据天文或地理网站上推算的相符,长春日出时的方位角在 东西向测地线 西偏北32度左右。九十度的三分之一,肉眼容易观察到,难以忽视。

6. 补充2-为什么纬度越高,
日出时的方位角越北

为什么纬度越高,日出时的方位角越北呢?

我们回顾下面这张图。长春的方位角,是北回归线(与长春日出时,当地时间正午的那个地点)、长春、东方之间的夹角。

我们增加了一个虚拟的城市,北境。由上图可以看到,北境比长春更靠北。为什么图中画得更向西了呢?因为北境的日落时间更晚。如果保持图中的晨昏线(以及北境日出时,当地时间正午的那个地点)不变的话,即北境与长春使用同一晨昏线。就在长春日出时,北境也同时日出。

我们旋转一下地球,从北境的上空俯视。如下图所示,肉眼可见,北回归线、北境、东(注意这是北境的东,不是长春的东)的夹角,即北境日出时的方位角 大于 长春日出时的方位角。

这个角度有多大呢?用geogebra量一下(与长春一样的,仍然不是北境大地上的角度)。下图,35.02度。

35.02度大于23度。日出时的太阳,北境的比长春的更北。

从上帝视角再看一下。越向北,晨昏线越向西;越向北,东西方向的测地线越“陡峭”;越向北,日出时的方位角越北。

以上未考虑到投影。考虑到投影以后,如下图所示。长春的太阳方位角(太阳、长春、长春的东)32.74度,北境的太阳方位角(太阳、北境、北境的东)49.99度。再向北,再向北,太阳会持续由东、向南、向西,再向北,在你还没有感觉的时候转回东方,白夜。

为什么长春的太阳在北面,使用geogebra解释

1. 事实观察

小学二三年级地理课上老师讲到:太阳从东方升起、西方落下。我提出了问题,是*正*东吗?老师说,对,是正东。我问,为什么我看到早晨的太阳都是在东南方呢?老师说,那是因为你起得太晚,太阳已经移到东南方了。所以语文课本里有提到,“太阳升到一杆子高了”。我必须得在太阳刚离开地平线的时候观察,那时才是准的。

类似的疑问在我的读科普书时也有,埃及人如何定义“年”。说,当看到天狼星从地平线升起的时候,尼罗河就会开始泛滥,埃及人把这一天定为一年的开始。到下一次天狼星从地平线升起,这之间的时间间隔,称为一年。然而,我又困惑了。在冬季星空中,天狼星每天都会升起啊。每天升起的时候,都会路过地平线。那么,哪一天才是一年开始的那一天呢?从看到那本科普书以后,这个疑问伴随我阅读每一本这一类的科普书。大家都是这样说的,难道他们都没有疑问,只有我不懂?后来我才知道,也许吧,最初翻译的或者科普的那位作者遗漏了一点儿信息。并非“天狼星从地平线上升起”,而是“天狼星与太阳*一起*从地平线上升起”。由于太阳沿黄道在星座所构成的天穹中的逐日移动,所以,天狼星这一恒星与太阳从地平线上一同升起的时机,全年只有一天。

回到日出的方向。初中二年级,又学地理。当时我正有晨跑的习惯,所以有机会观察到太阳初升时在地平线上的位置。不是正东!

我观察到太阳每天从东北方升起。至少可以断定不是正东,而是东偏北。之所以能确定东北方向,是因为正午时的日影(的反方向)可以定义正南方。正南的180度是正北。正南和正北之间90度,是正东和正西。

太阳不仅从东北方升起,我后来还观察到太阳落下的方向是向西北方,而不是正西。东北人知道,因为向北的窗户被晒得够呛,东西都掉色了。

最近有长春的前辈老师发朋友圈提到,他在傍晚的时候发现在长春正东正西(这可以参见百度地图或者高德地图)的街道上,能看到日影向南指。也就是说,太阳偏北,在西北方。

在网上查一下作为佐证。

长春市2023年夏至日的日落时间,在http://richu.ttvz.com/cha/changchun-20230622.html查到为 19:24。

长春的经纬度,用bing查。

https://gml.noaa.gov/grad/solcalc/azel.html根据经纬度和日落时间,查到6月24日日落时的方位角为 由正北顺时针旋转 284.26度,超过正西(284.26-90*3)= 14.26度。

下图,直观感受一下,西偏北14.2度,俯视图。

2.简单原理

再确认复述一遍观察,北回归线以北的地点,都有机会看到太阳在 北面。太阳初升和落山时,会在东北和西北方,而不是正东、正西,也不是东南或西南。

简单的原理是,越向北的地点,即纬度越高,现象越明显。在北极圈里,夏至日前后(春分和秋分之间)极昼期间,太阳向大约西方落山,越过正西也不消失在地平线下,直至正北再转回来——午夜已过,太阳开始初生,由东北方升起。

以上,是以(众所周知的)极端情况解释一般现象。以下,原理再复杂一点。

北回归线以北,春分和秋分两天,白昼与夜晚时间相等,各12小时。太阳从正东升起,向正西落下,刚好180度。春分以后,秋分以前,特别是夏至日这一天现象最明确,白昼时间长于黑夜。

同时,太阳在天幕中移动的角速度是恒定的。

所以,要想得到超过12小时的白昼,初升至落山,太阳划过的角度必须超过180度才行。白昼和黑夜的时间差越大,太阳在白昼超过180度的角度也要越大。越过180度,就是从正东的北面初升,向正西的北面落下。

还能得到一条与主线关系不大的结论——秋分以后,太阳将从东南方向升起,向西南方向落山,白昼时间短于12小时,太阳初末的方位角之间小于180度。

但是为什么呢,地理书上不是这么说的啊?地理书上还有图呢。

手绘精度这么高的图示,远超出我的能力,求助geogebra。

3. 原理图示

我们先用地球的图示分别定义 东西方向、黎明,然后解释原理。

3.1 东西方向的定义

地球的侧视图如下。下图的视角是,北极点和南极点分别在最上和最下,地球的地轴与纵方向完全重合。

请注意以下3个特别的标注。1.南北方向。在长春本地人看来,所谓南北,是沿当地的经线方向,向北极点的是北方,向南极点的是南方。2.东西方向。在这一点上,长春本地人与上帝视角看地图时通常的感觉不同。上帝视角看地图,我们一般隐约觉得沿42度(长春纬度43,然而42容易记得多)纬线,向左为西,向右为东。但是当地人认为,东西方向应该是直线,而42度纬线是弧形。

如下图所示,绿线是同纬度所指的“东西”。当地人认为的“东西”在通过长春的一条测地线——球上周长最大的弧——上面。过长春一点,地球上有无数条测地线,下图中的红线是测地线之一,是过长春和西班牙北部同纬度地点(和球心)的测地线。过长春的经线也是测地线之一。

那么哪一条测地线才是长春当地人认同的“东西”方向呢?是与“南北”方向垂直的那条测地线。

换个视角,从长春的正上方,也就是从长春本地俯视大地,如下图所示,标注了蓝色“东西方向”的大弧测地线为东西方向。你看,东西方向是直的,不是弯的,42度纬线是弯的,弯向了北方。

调整一下角度,从北极上空俯视,我们可以看到,长春的白昼时间,即晨昏线与42度纬线的交点(“黑夜到来”与P点)之间,白昼部分大于180度(过北极点、南极点的淡紫色面积上缘为180度直线)。

3.2 黎明的定义

我们要讨论的是接近黄昏或者日出的时候,太阳的方位角。不失一般性(哈哈),我们讨论黎明的时候。

什么是黎明?从当地视角看,太阳即将出现在地平线上。从上帝视角看,太阳直射点即将到达 晨昏线中早晨的一侧。

什么是晨昏线?地球的白昼即太阳照射地球的半边 和 地球的黑夜即太阳照射不到的地球影子的半边,二者的交界线。晨昏线与阳光垂直,或者说,晨昏线是与阳光的方向垂直的平面与地球表示的交界形成的圆。

如下图所示,夏至日前后,金色的阳光从右上角直射在北回归线上。侧视图中,晨昏线刚好把地图分割为左下半边黑夜,右上半边白昼。

换个视角,顶视图,从北极方向看,如下图所示。长春,当地球逆时钟转到“黎明到来”那一点时,即晨昏线与42度纬线交点时,看到太阳升起——太阳即将出现在地平线上。

3.3 黎明时的太阳

为什么正午时太阳在南方?因为太阳的直射点在北回归线,在“南北方向”的南面——并且在“东西方向”这条线的南方。如下图所示。

黎明的时候呢,太阳在哪里?如下图,太阳在金色的“北回归线23.5度”那一点。长春在哪里?在“黎明到来”那一点。

太阳,即金色的“北回归线23.5度”那一点,与长春的南北相对位置如何?

如果你认为沿经线方向向北极的方向是北,没错。如果你认为42度纬线分割了南北,那么,这是上帝视角。在长春本地人看来,“东西方向”的蓝色测地线的北面,就是北。

如下图,此时长春在图中 黎明到来,东西方向是长春(在大地上与经线圆垂直)的测地线。

可以看到,太阳正直射右侧金色点“北回归线23.5度”处,这一点,在东西方向测地线的北面。这就是长春当地人看到的,黎明时日出的方向。为什么我们一般认为太阳应该在南面呢,因为我们看地图的时候以为太阳“北回归线23.5度”在42度纬线的南面。但是,这是上帝视角,不是长春本地人的看法。

换个角度,如下图,从长春本地的正上方看,如下图所示,太阳正从东北方升起。

4. 东北是北方吗?

以上我们可以看出,在高纬度地区,不同于课本中粗略的写法,太阳的初生和落山,夏季是在东北和西北,而不是正东、正西。这是由于纬度较高,或者由于过于细节,不适合在课本中深入讨论导致淹没重点和主流。

有个类似的观点——东北是北方吗?东北当然在整个中国相对较北的部分。说起来有点奇怪,在相对较北的部分,难道不就是北方吗?这取决于如何定义北方。

“你们北方人不是喜欢吃面吗?”

如果不谈祖上,我可以算地道的东北人。不仅我,事实上,绝大多数东北人的地道东北,都不能讨论祖上。我,以及这些东北人,从出生到现在,都是以大米作为主食的,吃面(无论面条还是馒头)相对较少。为此,还被中原的同学嘲笑过,你们东北的面的做法也太贫乏了。因为我们不怎么吃面啊。

那么,为什么会有说法“北方人喜欢吃面”呢?因为,东北不是北方。在“北方人喜欢吃面”这句话里的北方,全称是 中国的北方,简称是 华北。因此,东北不在北方,东北人不是北方人。东北作为中国大米的主产区(大米是之一,粳米是唯一),怎么可能不吃大米,都进贡了吗?

北方人喜欢吃面,这说法往深了挖……是分裂……啊。或者 (在中国相对较北的部分之)东北不是北方,东北人不是北方人?

为什么长春的太阳在北面,使用geogebra解释 补充

5. 补充1-定量

以上,定性分析表明,长春日出时的方位角在 东西向测地线 以北,因此日出在东北方。

定量分析也对吗?我们以长春夏至日那天日出时的方位角为例。

5.1 测量

下图,是长春正上方俯视。阳光与晨昏线垂直,阳光穿过北回归线(在这个角度上的投影边缘,图中在阳光的路线上、地球边缘的黄圆点),并穿过地心。阳光与东西方向夹角为23度左右。未考虑投影。

立体视角如下图所示,阳光与东西方向夹角为23度左右。在图中可以看到,23度测量自 北回归线与(长春日初时)当地刚好正午的那个地点阳光的交点、长春、长春东西方向测地线三者的夹角,比投影到(或投影后展开?)长春的大地上的角度略小。这是长春夏至日时的日初时的方位角。

考虑一下投影呢?下图中,两个灰色箭头是刚刚测得23度的夹角;两个蓝色箭头是测地线(假设大地是平面)的延伸,夹角32.72度。

5.2 验证数据

https://gml.noaa.gov/grad/solcalc/azel.html
查 北纬42度,东京120度,使用东八区时间。之所以不使用长春的真实经纬度,是为了与上一节 测量 中的经纬度以及时刻保持一致。

方位角为 90-57.65=32.35度。

https://www.osgeo.cn/app/s1904 查同一时点地点。

302.20-270=32.2度。这个网站也说 方位角从正北顺时针算,但是结果并不是。存疑。

5.3 小结

验证数据32.35度或32.2度,我测量的数据32.72度,可以视为大致相等了。Geogebra绘图测量和根据天文或地理网站上推算的相符,长春日出时的方位角在 东西向测地线 西偏北32度左右。九十度的三分之一,肉眼容易观察到,难以忽视。

6. 补充2-为什么纬度越高,
日出时的方位角越北

为什么纬度越高,日出时的方位角越北呢?

我们回顾下面这张图。长春的方位角,是北回归线(与长春日出时,当地时间正午的那个地点)、长春、东方之间的夹角。

我们增加了一个虚拟的城市,北境。由上图可以看到,北境比长春更靠北。为什么图中画得更向西了呢?因为北境的日落时间更晚。如果保持图中的晨昏线(以及北境日出时,当地时间正午的那个地点)不变的话,即北境与长春使用同一晨昏线。就在长春日出时,北境也同时日出。

我们旋转一下地球,从北境的上空俯视。如下图所示,肉眼可见,北回归线、北境、东(注意这是北境的东,不是长春的东)的夹角,即北境日出时的方位角 大于 长春日出时的方位角。

这个角度有多大呢?用geogebra量一下(与长春一样的,仍然不是北境大地上的角度)。下图,35.02度。

35.02度大于23度。日出时的太阳,北境的比长春的更北。

从上帝视角再看一下。越向北,晨昏线越向西;越向北,东西方向的测地线越“陡峭”;越向北,日出时的方位角越北。

以上未考虑到投影。考虑到投影以后,如下图所示。长春的太阳方位角(太阳、长春、长春的东)32.74度,北境的太阳方位角(太阳、北境、北境的东)49.99度。再向北,再向北,太阳会持续由东、向南、向西,再向北,在你还没有感觉的时候转回东方,白夜。

虚数i开方结果是什么

1. 虚数i开平方根

二猫问,-1开平方根,得到的是虚数i;虚数数i开平方根,得到的是什么呢?

即 已知sqrt(-1) => i,

问 sqrt(i) => ?

2. 不能开方-什么是开方

简单粗暴的回答是,i不能开方。这种回答也不是没有先例,在除法里,我们规定 任何数都不能除以0。就这么规定的,似乎也没有什么原因。

真的没有原因。有,老师十有八九也讲过,可能咱们都没有注意到,或者后来考试也不是重点,咱们就忘了。就像网上公众号提到“吾生也有涯,而知也无涯”后面还有半句,不少人大呼被课本骗了。语文课本的书下注释明确写了后半句,“以有涯随无涯,殆已(我印象里是 汲汲乎怠哉。存疑”。这样的例子还有,共同点是你自己没注意怨谁。

a/0 非法,原因是 任何数乘以0都不能等于a。这是当时老师讲的。其背后的原理是 a/

0 并非一个数字,甚至这个数是否存在我们都不知道。a/0不是个数字,它是个运算。a/0表示这样的运算,如果这个运算可以求解,那么得到的数字 乘以0等于a。

类似的2/3的意思是 这是个运算,这个运算如果可以求解,那么所得的数字是 乘以3等于2的那个(那些?)数字。为了表示2/3这样的数字(!)我们由整数域扩展得到有理数域,这是另一个故事,按下不表。

我们确实有过规定,规定任何数不能除以0。那么是否有规定 i不能开方呢?不记得。

那么,我们类推一下。除以0的先例中的规定,要看除法的定义。虚数i是否能开方,我们要看看开方的定义。

什么是开方?

开方是一种运算,sqrt(a)的意思是 如果这个运算可以求解,那么所得的数字是 平方以后等于a的那个(那些?)数字。

运算sqrt(-1),得到的结果是i。为什么呢,因为 i^2 即 i*i => -1。这是开方的定义决定的。

那么sqrt(i)的意思是什么呢?这有点麻烦,我们暂且搁置这个话题,用geogebra求一下。

3. 用geogebra试试

先测个空白,sqrt这个函数能不能用。

这什么玩意。

世界上第一个无理数,这个可以。

看来geogebra可能有特殊的语法,我不会。想个诡计吧。

-1的平方根是i,这是已知部分。

可以,可以。虚数i的平方根是0.71+0.71i,一个复数。而且geogebra贴心地给出了这个数在复平面中的位置。

图中,z1是虚数i,z2是sqrt(i)。

我说,看起来z2也能求平方根啊。二猫说,肯定能啊,既然它也是个复数。

我在geogebra里输入z2,怎么也不对。二猫说,“得用 z 下划线 2”吧。我心想,你平时偷摸学了不少啊。

结果是这样的。

4. 复平面-乘法的含义-手动求sqrt(i)

我若有所思,0.71……这数字咋这么熟悉呢。

过了一会儿,我在白板上画了下面这张图。

C:\Users\young\AppData\Local\Temp\WeChat Files\e41151e32587efa6b608cbc25603855.jpg

回到刚才我们暂时搁置的线索——开方到底什么意思。

开方是这样的运算,如果a=sqrt(x),那么a是这样的数字a*a=x。一个数字x开方得到的数字a,a自己乘以a自己,能得到x。

那么sqrt(i)什么意思?一个数字,这个数字自己乘以自己,其结果是虚数i。

下一个问题,什么是乘法?在复平面上,我们已知(什么时候知道的?我也不知道,反正应该已经知道了)乘法是 绕原点逆时钟旋转(我们姑且忽略模的增长,假装没这回事)。

小结一下,
开方 是……符合……的乘法。
乘法 是 绕原点逆时钟逆转。

虚数i是什么?复平面上 坐标为 (0,1) 的那个点,即z1。

虚数i开方,就是 有个数字,它旋转两次相同的角度,就能从x轴正方向到达 (0,1)。这个数字是什么?

虚数i是(长度为1)角度90度的那个点。哪个点旋转两次相同的角度能达到90度?45度。

所以,虚数i开方,是长度为1,角度45度 的那个点。

长度为1,角度45度 的那个点的坐标是什么?在单位圆里,那个点的横坐标是 半径1*cos(45),那个点的纵坐标是 半径1*sin(45)度。

三角函数 sin(45)=cos(45)=sqrt(2)/2,即

结论,sqrt(i) => 0.71+0.71i.

这一结果验证了geogebra的sqrt的结果。

5. 任意复数开任意(实数)次方-十二平均律

我们可以再求得更具有一般性一些。

虚数i的3次方根,结果是多少?那个斜体(?)的i是按alt+i打出来的。

-1 的2/3次方根,结果是什么?

数字长得像而且眼熟?因为那是60度和30度的正弦和余弦。是对180度和90度三等分得到的角度。

几次方根,就是把角度等分多少份。因为几次方,就是自乘/旋转几次。所以几次方根就是几等分角。

十二平均律,就是把一个八度内的音程等分成12分。跨八度是频率乘以2,所以等分就是开12次方根。

2/3方根就是三等分,再取两份。

十二平均律中一个八度里的第2个音,距离最左面3个8度^1/12,即3个倍频的12次方根,就是对倍频12等分,再取2份。

6. 数域

听说,复数是数域扩展的终点。所有的运算,其来源和结果一定不会超过复数的范围。

如上示例,任意复数可以开任意实数的方根。那么,任意复数,可以方根时,可以开任意复数的方根吗?

虚数i的虚数i次方,即i^i,如下图所示,这样行不行?

复平面上的几何意义是什么?需要扩展数域才能计算?

复数是数域扩展的终点吗?

批卷子,以及其中的时间花费和技术

批卷子,再把分数填写到教务系统上,还有各种报告和表格,需要5个小时以上(尚不包含主考/监考的时间 90分钟,也不包含命题的时间)。以一门3学分的课程为例,每2周3次授课,一次每周,一次隔周;每次90分钟。计54学时,合40.5小时。在这门课程中,除授课40.5小时以外,需要额外花费5小时批卷子、核分、上分、制表和写报告。也就是说,不完全统计,十分之一以上时间用于被管理而不是教学。十分之一,其时间消耗估计大于整个课程中的任何一章。

十分之一时间这么久,就值得总结时间在各项活动中花费的比例,以及有哪些技术可以用于提高效率。

1. 试卷排序

在正式开始批卷子工作以前,先要排序。教务部门要求试卷在教师上交时必须以特定顺序排列。比如按学号、按教务/选课系统中学生的次序、按考试的座次。不同时期有不同的排列要求,因此每门课程,我都重新阅读一次当前政策,按要求执行。

当前执行的策略,在考试中,监考人员和主考,会要求学生在试卷左上角写上签到的序号。这个序号就是教师上交试卷时的序号,因此学生写上大字有助于教师对试卷排序。但是这不能完全解决问题。原因之一是,经常有学生写错这个序号,错误率在十分之一左右。即50人左右的班级,有5人左右写错。因此,不仅遇到写错的序号需要排序,而是要对所有序号核对一遍。此外,学生并没有责任在试卷上写序号,没有任何条文有此要求。确实有同学不写,可能忘了,也可能重视自己的权益。

排序,考虑到试卷这种实体,每次交换或插入、比较的花费的代价与计算机算法不同,所以我一般在总体上使用归并排序,分组以后使用插入排序。感觉效率和费劲程度都较好。

排序之后,与缺考记录单对比,确认相符。

2. 批卷子

吕老师在一次会议中讲过,要先用铅笔试批几份。假设这几份具有典型性的话,根据这几份试卷考虑一下本学期判卷的严宽程度。

判卷第一要条,甚至比正确更重要,是公平。所有试卷,必须根据相同的判卷准则。因此,如果判到后期万一发现哪道题判错了,纠正的工作量相当大,因为此前的必须全回溯一遍。这与程序设计中,bug存在的时间越长修改的工作量越大,是一致的。

这个方法我执行了十五六年,甚至一度所有试卷全用铅笔判一遍。虽然增加工作量,但是减少了担心判错带来的紧张。接下来再用红笔抄在卷面上,再擦去铅笔判的版本。但是,后来的教学检查中曾经判定我擦得不够干净,要求重擦。从此以后,我就只用红笔判,错了就剌掉,签名。也有偶尔错的,也有改完挺乱的,不过我不紧张了。

判卷的时候,答案放在旁边对照。如果同学们答得普遍地好,或者连续几位同学都答得不错,答案就背下来了。如果连续几位同学出错,答案就记不住了,记住的也会忘掉。头疼,没啥招。

3. 算分数

小题分数累加到大题,总数值较小,一般可以口算。

大题分数累加得到卷面总分,我没有能力口算。见过同事口算又快又准的,特别是父母是教师,从小帮助核分的同事。令我羡慕不已。我的口算(以及笔算)能力之差,有时候二猫妈和二猫也嘲笑我口算错得离谱,差距我咋考上大学的。因为考大学时计算不那么重要。如果考大学时计算的比重再增加一些,我怀疑我就考不上了。

所以大题分数累加,我必须借助工具。以前用计算器,卖菜的有声音的那种最好,听到可以帮助复核。

后来用 ipad 里的 siri,感觉这个最好,简直离不了手。长按呼出来,我就读“28+34+27+11等于多少”这样。Ipad会语音报出答案,我瞥一眼屏幕上显示的我读过的数字。“等于多少”也可以不说。下载试过国内的几种计算器,语音识别失误率不能忍受。没试过国外的计算器,我猜它们听不懂汉语的数字。

大题加得卷面总分,这个过程要执行两次。

接下来,把纸质试卷上的卷面成绩抄到excel表格卷面成绩中。这个过程可以借助家人,我经常需要求助二猫妈。试卷和excel表格都已经按相同次序(就是教师要上交时的)排序完毕。我按excel读人名,二猫妈读试卷上的分数,我复述,然后记在excel中。这是第一遍。第二遍,我读人名,然后读分数,二猫妈看试卷确认。

在家人繁忙的时候,教师也得能独立完成这项工作。我使用过 讯飞有声,或者手机的录音机。第一遍,我口述成绩录音,然后播放录音时,我录入得到成绩单。第二遍,成绩单导出成 excel转成word,再存成excel,微信传到手机,用ES文件管理器打开,存在donwload目录下;用讯飞有声导入,讯飞有声读成绩单,我看卷面复核。

这样,就得到了卷面成绩。

4. 作业成绩

假设 总成绩中包括 期末成绩、作业成绩、小组成绩。分别得到期末成绩、作业成绩、小组成绩,在教务的登分系统中(按教师指定的规则)计算。

作业成绩,我们从每位同学都已经有了对应的分数开始。接下来的难点在于,作业的名单和卷面成绩的名单,这两种名单的顺序可能不同,看起来像下面的表格这样。

把姓名、作业、卷面对应起来的解决方案,一种是排序。把其中之一按另一个排序。问题在于,按另一个中“另一个”的排序规律是未知的,或者不能确定。也可能是按学号排序的,也可能根本就没有规则。是的,有时根本没有规则,但是你按没有规则这个规则排序。我校登分系统,经我测试,下载模板中的姓名可以排序,不影响上传时的成绩与姓名的对应。谢天谢地。

把姓名、作业、卷面对应起来的另一个解决方案是 nslookup 函数。

先复制得到 姓名、作业。

然后增加卷面这一列,值为如下图中 卷面 这一列绿色框中的公式。

在公式中,
蓝色“Q3”对应左方蓝色方框中的“阿大”,表示要寻找的卷面成绩属于 阿大;
红色“M$3:N$12”对应左侧红色方框,表示在哪些单元格中查找(注意其中的"$"表示绝对坐标,避免在复制公式时因为位置不同而导致寻找的范围变化);
黑色“2”表示卷面成绩在单元格M$3:N$12的第2列;

FLASE表示精确查找。

综合起来,以上公式表示,在单元格M$3:N$12中的第1列查找阿大所在的行,把查找到的这一行的第2列的值填在当前位置。

接下来,把这个公式复制到下面的每一行。得到所有人的卷面成绩。

最后,如果成绩冻结了,那么复制并按数值粘贴到另一个位置备用。

5. 小组成绩

小组成绩,假设小组中每位同学的成绩均相同。用vlookup函数。

(感谢)学习委员或班长提供分组名单,形式一般如下。

在计算小组成绩时,由于不符合vlookup函数的条件,因此不能直接使用上述表格。由于同学们和班长和学习委员并无责任按教师要求填写名单(这会带来学习以外的工作量,即(教师)管理导致的时间成本),因此由教师处理。以上表格备用。

教师根据小组的工作情况得到小组成绩单,形势一般如下。

按下来,我们把小组成绩由对应到小组,推进到对应到每位同学。

首先,我得要得到 姓名-所属小组 这样的形式。

复制 | 选择性粘贴 | 转置,如下图所示。

得到下表。

删除第1列,得到下表。

按……这样的规则合成而为一列,如下表所示。

对每个小组 复制 | 填充单元格,执行了三次,得到下表。

去掉每组的表头,加上总的表头。

以上得到 姓名-所属小组 表格。

准备公式查询 此前备用的学委或班长提供的表格,即下面这张表。

Vlookup公式如下。含义在上面提过一次,此处不赘述。

这样,就得到了小组成绩。按作业成绩的处理方法,或者排序,或者vlookup,得到 姓名-卷面-作业-小组 成绩表格。

6. 成绩提交

我校的教务系统可以下载成绩录入模板,不必须在浏览器中录入。虽然登录必须使用360浏览器,别的统统不行,但是不必在浏览器中受折磨已经谢天谢地了。为了每学期录入成绩,又不愿望忍受360(毕竟我家的机器是我的,我有完全的所有权,可以决定什么软件不得安装;单位的机器虽然不是我的,但是如果安装了什么软件导致安全事故也是我的责任),所以我把360浏览器装在了 sanboxie中。为此,我贡献了1GB硬盘空间(以及CPU)给360浏览器,每学期用一次。

下载的模板里包括 学号、姓名,以及定好的成绩由哪几部分按什么比例加权,比如在期末卷面占70%,平时成绩30%,这样。学号-姓名-成绩 可以排序,真好!

我下载模板,排序。把我此前得到的 学号-姓名-卷面-作业-小组 成绩都粘到模板里。上传。

7. 成绩分析

可以下载 成绩单、成绩分析报告(的模板)了。其中成绩分析报告模板有bug,需要手动修改图表的数据范围。这个工作每学期都要做一遍。我有足够清醒的觉悟和意识,清楚模板只是为了方便我的工作而提供的,出错都是我的责任。类似的,试卷模板的头和脚,我也每年修改一次。为什么不用上一年改好的模板?万一今年模板变了,我没有看到区别怎么办。所以,所有的工作要从上级下发的模板开始,而不是从我的老经验开始,那不够可靠。

在成绩分析报告中,要回答一系列的问题。其中包括著名的“为什么学生成绩不服从正态分布”。各位教师同事,不要瞎编造谣。上级从来没有要求教师保证学生成绩必须服从正态分布,所以别向我科普小样本下正态分布如何如何。上级没要求过这个,上级要求的是如果不服从正态分布,解释一下。我每年解释一下。有时候看着差不多正态了,就不解释。

还有优秀百分比什么的,这一类,上级从来没有*要求*,而是认为应该达到什么样才合理吧。教师同事,你脑补一下,领导和颜悦色的请教你这位有经验教师的表情,“应该达到什么样才合理吧”。你对自己的经验和教学理论和你以前学过的知识,对自己算出来的分数分布到底有多少信心?考验你的时候到了。

8. 达成度报告

注意,我以上提到要花5个小时的工作里,还没有包括这项工作。

为了写达度度报告,得做一系列工作,其中这里我要讨论的是 问卷。问卷的对象是学生,要求学生回答对每部分章节或知识点或者什么什么指标,要求学生回答、对这些内容学生认为自己达到了何种程度。因为要求学生自己回答,所以得用问卷。因为考试结束以后(以及课程开始之前,所以我不赞同教师在开课前要求学生预习或做题,因为教师无此权利)教师不宜打扰学生,所以要在授课期间,课程即将结束时发布问卷。发布问卷时,上级没要求(上级甚至没要求发布问卷),我觉得教师应该意识到,咱们没权利要求学生必须填这个问卷,没有任何条例作为依据要求学生填写。是的,教师必须提交,但是学生无此义务。所以,每一轮,有多少同学配合,我都表达了感谢。对于不愿意配合的同学,我也觉得人家做得没错。帮我是人情,不帮我是本份。那是我的活儿,不是学生的。

假设,我收集到了足够(多少?)学生对问卷的填表。那就是此前谈过的
https://zhuanlan.zhihu.com/p/645284339 多列数据的分类统计。
统计之繁复,值得单独写了一篇博客,还挺长。

9. 总结

时间如此宝贵,以至于时间事实上就是生命本身。时间不仅是工程上,也是管理上,也是人生中,最重要的因素。

工作中,时间占比高达十分之一的,需要高度重视,记录花费的时间,记录每一种子任务花费多少时间。也需要高度重视,考虑如何提高效率节省时间。

把时间花在刀刃上。

没有批卷子经验的同学们,可能会以为“是不是就你笨,用好办法的话会快很多,花不了多少时间啊”。我所见的事实是,很多不熟悉(比我更不熟悉)计算机工具使用的教师,兢兢业业花了比我更多的时间,令人心疼。如果你刚好知道有什么办法能提速增效的,一定要告诉我啊!

//封面

// 我根据下面这本书,在瓦楞纸上刻的。

// Woodimals Creative Animal Puzzles for the Scroll Saw (Jim Sweet)

 

多列数据的分类统计

这个问题在三两年前就2022年4月,2022年11月分别困扰过我。当时解决了,然后忘到脑后。后来又遇到同一次问题,虽然后来也解决了,然而解决之前又一次走上同一条弯路,这感觉令人不悦。

最近2023年7月,又一次遇到同一类型的问题。探索的顺序和以前又完全相同。我不禁想起我的本科导师李树杰老师教导过我的,“杨儿啊,你得做笔记啊。”我当时说什么来着,“那些失败的过程有啥好记的。”

得正经记录一下了,不然还会第四次错。贴出来是最好的记录,因此有了这个帖子。

先从问题的背景和故障现象说起。

微信图片_20230722224008

1. 问题

如下表所示,是学生对教师授课效果的评价。例如,阿大同学认为,教师第一章讲得优,第二章讲得良,第三章讲得中。依此类推。

要求是,统计 每一章 分别 有多少优、多少良、多少中、多少差。即,想得到下面的表格。

按上表所示,我们可以看出,纵向看例如第一章;有7人优,2人良,1人中,共10人;横向看例如优的人数,第一章7,第二章4,第三章2,共13人。

另一个类似问题的场景,订餐-派送。如下表所示,我们希望按宿舍得到一张表,按宿舍-楼层再得到一张表。每张表都按 早餐每种菜品多少份、午餐每种菜品多少份、晚餐每种菜品多少份 计数。

需求/字段尚不稳定,可能多次随时变更。每次变更后都要求 快!

2. 为什么用透视表不行

统计数据最快的不是R或者python,更不是matlab。而是excel。这里的快不是指执行速度,而是指开发。响应快速,培训周期短,用户接受迅速,部署环境简单(经常已经安装过)。

Excel里看起来最像解决方案的是功能强大的 透视表。

然而不行。

关于透视表的使用,值得另用一篇博客才能说清楚。在此暂且略过,假设你已经会了。我尝试了每个字段在行或者在行,尝试了各种计数值的方法,都得不到我想要的结果。各种尝试的结果都非常乱,在此不贴图了。

我想要的结果是,再贴一遍,如下。

中间是计数值;行,是优良中差;列是……每列分别统计。

如果每列分别统计,但是不要求放在一张表中,透视表是可以胜任的。如下。

我们可以看出,这三张表合在一起,就是我希望的结果。

严格地说,这三张表(每张表取1列,横向拼接在一起;
并且行标签都使用 优、良、中、差这4个条件;
并且计数值都使用 优、良、中、差这4种情况对应的计数)合在一起,就是我希望的结果。

“合在一起”符合这么复杂的定义才行。但是透视表的 多列 并不是这个意思。

透视表的 多列,是指 每一列作为一个条件,这些条件以 与操作 复合。例如

以上数据得表下表。

使用透视表的前提条件是 只有1列是数据(计数项,或者求得项等),基余的列都是条件。而我在这里遇到的两张表,学生评教师的 和 订餐-派送 的,其中的 每章 或者 每餐,都不是条件,而是多列数据。

如果从SQL的角度考虑,那么相当于 group by 语法。Group by后面如果有多个列/字段,列/字段之间用逗号分隔,其含义是 既符合又符合,例如 既是东北地区,又是吉林,可爱度10;东北地区所有省份可爱度之和 30。

另一个可供参照的技术是 平行数组。两个数组是独立的,一个数组是语文成绩,另一个数组是数学成绩。两个数组都使用学号作为下标,因此发生关联。两个数组都是计数或求和项,下标(对应excel中的左侧那些列)是条件。

3. 解决方案0 归约

有个近乎耍赖的方案。这个故事告诉我们:1.很多巧妙的方案都近乎耍赖,然而有效;2.巧妙不得长久和通用。

既然我们要求的是计数,那么如果正确赋值,我们可以只计数,而不分类、统计、汇总。因此也不需要透视表。

这个问题,我们把 优、良、中、差分别赋值为10、8、6、4。在这里,我们假装这就是教务部门要求的赋值权重,或者教师不会得到比4分还低的评价。事实上的要求共5档,然而4档还是5档并不影响我们的技术讨论,因此忽略这一区别。Ctrl-h,给出对应赋值,全部替换。

得到下表。

求平均值。

得到下面的表格。

可以看到,第一章教学效果最后,第二章稍差,第三章快放弃了。

虽然以上数据已经符合教务部门的期待了,但是在以上归约过程中,我们舍弃了优、良、中、差每个档次的数量,因此丢失了一些细节。

在 订餐-派送 问题中,按类别计数这一节细不能丢弃,如何赋值呢?

令几种类别 正交,使用多项式。用每“位”数字对一种类别计数。

特色1 1
特色2 10
特色3 100
基本 1000
全素 10000

得到下面的表格,计数。

早餐这一列3205的意思是 3份基本,2份特色3,0份特色2,5份特色1。按宿舍和楼层求和,可以得到 地点-类别 派送数量。

春华,2份基本,3份特色1。

如果计数超过10种,那么可以使用为每种类别预留多位数字。

4. 解决方案1 按列分别统计后合并

还可以把多列数据拆开,对每列数据单独统计。

4.1 透视表

对每一章分别用透视表统计。

手动排序,得到下表。

把行和列改为第二章。

得到第二章的统计结果。

用同样方法得到第三章的统计结果。把三章数据横向拼接,得到下面的表格。

4.2 Access - group by

把Excel粘贴或导入到Access。

新建查询,SQL视图如下。

执行得到结果,尚未根据优良中差排序。

然后对F2排序,横向合并,略。

之所以使用Access,是因为拆分单列和合并结果比Excel更方便。

4.3 Excel - countif函数

这种方法学自 OLIVER_QIN cnblogs 奔跑的金鱼。

https://www.cnblogs.com/OliverQin/p/9436814.html

在下图中绿色的单元格中使用函数 countif。第一个参数是用于统计的区域,这里对应第一章。第二个参数是判断的依据,左侧的优良中差是手动键入的。“良”是红色,因为当前统计的是良的数量,引用“良”。

注意需要用形如$B$2的绝对引用,这样在向其他单元格复制时引用的位置不会变动。类似的,第二章和第三章如下图。

5. 解决方案2 转变为一维数据-透视表

把列标题作为变量名,改为一维数据。具体操作步骤如下。

第一步,把表格复制三份,纵向排列。如下表所示。

第二步,删除除了第一个以外的标题行。

第三步,增加一列,章节。按下图填写 第一章、第二章、第三章。

第四步,删除并非本章的成绩。

第四步,把第一章、第二章、第三章3列合并为一列。

以上,完成了把列标题作为变量名,改为一维数据。这样就符合透视表的要求,只有一列,即最右一列 作为数据的计数项,其余的左边两列都是条件。

对上面“一维”表格使用透视表。

手动对行和列排序,得到下面的表格。

6. 解决方案3 透视表-多重计算合并计算数据区域

以下方案最为优雅来自,OLIVER_QIN cnblogs 奔跑的金鱼

https://www.cnblogs.com/OliverQin/p/9436814.html

快捷键Alt + D P,调出 数据透视表和数据透视图向导,选择点选按钮 多重合并计算数据区域。

共3步,所以第2步拆成了2a和2b!此处有手动狗头表情。

选定区域,然后点击 添加 按钮。

注意,此时得到的透视表不是我们想要的,如下表。

当前的行、列、值是这样的。

修改为下图所示,关键点是行由“行”改为“值”,即由按行(姓名)改为按值(优、良、中、差)分类。

多列数据的分类统计

这个问题在三两年前就2022年4月,2022年11月分别困扰过我。当时解决了,然后忘到脑后。后来又遇到同一次问题,虽然后来也解决了,然而解决之前又一次走上同一条弯路,这感觉令人不悦。

最近2023年7月,又一次遇到同一类型的问题。探索的顺序和以前又完全相同。我不禁想起我的本科导师李树杰老师教导过我的,“杨儿啊,你得做笔记啊。”我当时说什么来着,“那些失败的过程有啥好记的。”

得正经记录一下了,不然还会第四次错。贴出来是最好的记录,因此有了这个帖子。

先从问题的背景和故障现象说起。

问题

如下表所示,是学生对教师授课效果的评价。例如,阿大同学认为,教师第一章讲得优,第二章讲得良,第三章讲得中。依此类推。

要求是,统计 每一章 分别 有多少优、多少良、多少中、多少差。即,想得到下面的表格。

按上表所示,我们可以看出,纵向看例如第一章;有7人优,2人良,1人中,共10人;横向看例如优的人数,第一章7,第二章4,第三章2,共13人。

另一个类似问题的场景,订餐-派送。如下表所示,我们希望按宿舍得到一张表,按宿舍-楼层再得到一张表。每张表都按 早餐每种菜品多少份、午餐每种菜品多少份、晚餐每种菜品多少份 计数。

需求/字段尚不稳定,可能多次随时变更。每次变更后都要求 快!

为什么用透视表不行

统计数据最快的不是R或者python,更不是matlab。而是excel。这里的快不是指执行速度,而是指开发。响应快速,培训周期短,用户接受迅速,部署环境简单(经常已经安装过)。

Excel里看起来最像解决方案的是功能强大的 透视表。

然而不行。

关于透视表的使用,值得另用一篇博客才能说清楚。在此暂且略过,假设你已经会了。我尝试了每个字段在行或者在行,尝试了各种计数值的方法,都得不到我想要的结果。各种尝试的结果都非常乱,在此不贴图了。

我想要的结果是,再贴一遍,如下。

中间是计数值;行,是优良中差;列是……每列分别统计。

如果每列分别统计,但是不要求放在一张表中,透视表是可以胜任的。如下。

我们可以看出,这三张表合在一起,就是我希望的结果。

严格地说,这三张表(每张表取1列,横向拼接在一起;
并且行标签都使用 优、良、中、差这4个条件;
并且计数值都使用 优、良、中、差这4种情况对应的计数)合在一起,就是我希望的结果。

“合在一起”符合这么复杂的定义才行。但是透视表的 多列 并不是这个意思。

透视表的 多列,是指 每一列作为一个条件,这些条件以 与操作 复合。例如

以上数据得表下表。

使用透视表的前提条件是 只有1列是数据(计数项,或者求得项等),基余的列都是条件。而我在这里遇到的两张表,学生评教师的 和 订餐-派送 的,其中的 每章 或者 每餐,都不是条件,而是多列数据。

如果从SQL的角度考虑,那么相当于 group by 语法。Group by后面如果有多个列/字段,列/字段之间用逗号分隔,其含义是 既符合又符合,例如 既是东北地区,又是吉林,可爱度10;东北地区所有省份可爱度之和 30。

另一个可供参照的技术是 平行数组。两个数组是独立的,一个数组是语文成绩,另一个数组是数学成绩。两个数组都使用学号作为下标,因此发生关联。两个数组都是计数或求和项,下标(对应excel中的左侧那些列)是条件。

解决方案0 归约

有个近乎耍赖的方案。这个故事告诉我们:1.很多巧妙的方案都近乎耍赖,然而有效;2.巧妙不得长久和通用。

既然我们要求的是计数,那么如果正确赋值,我们可以只计数,而不分类、统计、汇总。因此也不需要透视表。

这个问题,我们把 优、良、中、差分别赋值为10、8、6、4。在这里,我们假装这就是教务部门要求的赋值权重,或者教师不会得到比4分还低的评价。事实上的要求共5档,然而4档还是5档并不影响我们的技术讨论,因此忽略这一区别。Ctrl-h,给出对应赋值,全部替换。

得到下表。

求平均值。

得到下面的表格。

可以看到,第一章教学效果最后,第二章稍差,第三章快放弃了。

虽然以上数据已经符合教务部门的期待了,但是在以上归约过程中,我们舍弃了优、良、中、差每个档次的数量,因此丢失了一些细节。

在 订餐-派送 问题中,按类别计数这一节细不能丢弃,如何赋值呢?

令几种类别 正交,使用多项式。用每“位”数字对一种类别计数。

特色1 1
特色2 10
特色3 100
基本 1000
全素 10000

得到下面的表格,计数。

早餐这一列3205的意思是 3份基本,2份特色3,0份特色2,5份特色1。按宿舍和楼层求和,可以得到 地点-类别 派送数量。

春华,2份基本,3份特色1。

如果计数超过10种,那么可以使用为每种类别预留多位数字。

解决方案1按列分别统计后合并

还可以把多列数据拆开,对每列数据单独统计。

4.1 透视表

对每一章分别用透视表统计。

手动排序,得到下表。

把行和列改为第二章。

得到第二章的统计结果。

用同样方法得到第三章的统计结果。把三章数据横向拼接,得到下面的表格。

4.2 Access - group by

把Excel粘贴或导入到Access。

新建查询,SQL视图如下。

执行得到结果,尚未根据优良中差排序。

然后对F2排序,横向合并,略。

之所以使用Access,是因为拆分单列和合并结果比Excel更方便。

4.3 Excel - countif函数

这种方法学自 OLIVER_QIN cnblogs 奔跑的金鱼。

https://www.cnblogs.com/OliverQin/p/9436814.html

在下图中绿色的单元格中使用函数 countif。第一个参数是用于统计的区域,这里对应第一章。第二个参数是判断的依据,左侧的优良中差是手动键入的。“良”是红色,因为当前统计的是良的数量,引用“良”。

注意需要用形如$B$2的绝对引用,这样在向其他单元格复制时引用的位置不会变动。类似的,第二章和第三章如下图。

解决方案2 转变为一维数据-透视表

把列标题作为变量名,改为一维数据。具体操作步骤如下。

第一步,把表格复制三份,纵向排列。如下表所示。

第二步,删除除了第一个以外的标题行。

第三步,增加一列,章节。按下图填写 第一章、第二章、第三章。

第四步,删除并非本章的成绩。

第四步,把第一章、第二章、第三章3列合并为一列。

以上,完成了把列标题作为变量名,改为一维数据。这样就符合透视表的要求,只有一列,即最右一列 作为数据的计数项,其余的左边两列都是条件。

对上面“一维”表格使用透视表。

手动对行和列排序,得到下面的表格。

解决方案3 透视表-多重计算合并计算数据区域

以下方案最为优雅来自,OLIVER_QIN cnblogs 奔跑的金鱼

https://www.cnblogs.com/OliverQin/p/9436814.html

快捷键Alt + D P,调出 数据透视表和数据透视图向导,选择点选按钮 多重合并计算数据区域。

共3步,所以第2步拆成了2a和2b!此处有手动狗头表情。

选定区域,然后点击 添加 按钮。

注意,此时得到的透视表不是我们想要的,如下表。

当前的行、列、值是这样的。

修改为下图所示,关键点是行由“行”改为“值”,即由按行(姓名)改为按值(优、良、中、差)分类。

对行和列手动排序,得到下面的表格。

总结

(1)核心原理 透视表认为只有一列数据是计数项,其余的列都是条件。

所以可以 拆分为单列统计再合并。

所以可以 把通过把标题改为变量名,把多列数据转为一维数据。

(2)特殊技术 数据透视表和数据透视图向导 可以 多重合并计算数据区域。

(3)你得做笔记啊。失败的实验也同样重要。发表是最好的记录。

对行和列手动排序,得到下面的表格。

7. 总结

(1)核心原理 透视表认为只有一列数据是计数项,其余的列都是条件。

所以可以 拆分为单列统计再合并。

所以可以 把通过把标题改为变量名,把多列数据转为一维数据。

(2)特殊技术 数据透视表和数据透视图向导 可以 多重合并计算数据区域。

(3)你得做笔记啊。失败的实验也同样重要。发表是最好的记录。

微信图片_20230722224018

好工具 | 平铺窗口WindowGrid

窗口在屏幕上以什么样的风格布局,我见过几种典型的方案。

一种是层叠的,或者浮动的。就是一般我们所见到的情况。如下图所示,三个窗口互相有覆盖的区域。激活的窗口在最前面,挡住后面的窗口。工作的时候视线在这些窗口间转来转去。

我见过最疯狂的层叠,是在大二的时候,看机房里旁边的师兄玩windows3.1自带的纸牌游戏。一大堆纸牌从远到近,从上到下,倾泻而下,后出现的覆盖先出现的。我以为是他写的程序,问这个是怎么实现的。他说这个可容易了。这么炫的效果又特别容易,我更加觉得自己无知。后来有另外的师兄告诉我,那是纸牌游戏打赢时候的过关效果动画。

我见过其次疯狂的层叠,是实验课的时候看到不少同学的编程界面。那么大个显示器,整个都被按钮、菜单、toolbar、广告、各种无关的窗口占据着,留了不到十行五十来个字符的空间,挤在里面写代码。大概就像下图这样。

这类同学往往倾向于用鼠标编程序,在写代码的过程中用鼠标比键盘还多。

层叠以外的风格,我本人走的是另一个极端。无论编程序还是写文字,绝大多数情况下,我都是把当前窗口设置为全屏。不仅最大化而已,而是要占据整个屏幕,连菜单和按钮都隐藏起来。绝大多数操作用快捷键,鼠标也几乎不动。

看起来就像这样,同一时刻只能看到一个窗口。Word快捷键 alt-v u 全屏,退出全屏按ESC。

在用word写作文字时,经常需要用鼠标翻页,使得我正关注的段落在屏幕的正中间。使用 Emacs 则这个操作可以由键盘 C-l 完成,令当前位置上下居中显示。

像这样。Emacs和Firefox全屏快捷键 F11。

如果不是正在写文字或者写代码,我的窗口口风格也并不总简洁到如此极端,而是采用平铺式 tiling的风格。

平铺式风格,又称为瓦片式。整个屏幕划分成若干区域,每个区域显示一个窗口。窗口之间互相没有覆盖,分别在某个区域里最大化。如下图所示,左侧、右上、右下,分别由三个不同窗口占据,窗口间彼此不覆盖。因此可以同时看到三个窗口,但是工作时如果要打字输出,那么需要切换激活的窗口。

平铺式还有个特性对我有帮助。我视力不好,需要非常靠近显示器。与你不同,你看屏幕左上角,只需要转动眼睛,我需要向前探头,再上,再向左。费时间而且易疲劳。所以,我希望窗口特别是我关注的段落能精准地显示在我希望的地方,这样能减少左右移动脖子。

平铺式的窗口管理器(以及各式窗口管理器)在Linux下非常繁荣。Dwm,awesome,xmonad,sawfish,xfce4,各具特色。Windows操作系统下,我长期用过一个,忘了名字。这一轮装机器时似乎找过,找不到了,也许停止开发了。微软开发的PowerToys中的FancyZones,看介绍也非常不错。但是PowerToys是个全家桶,包括很多我不关心的功能,尺寸也不小。所以我没有使用。

我用了 WindowGrid,感觉不错。在这里 http://windowgrid.net/。安装文件也就是运行文件,553KB。运行时占内存30MB多一点,CPU 0。

操作的过程很方便。鼠标点击窗口的标题栏,不要松开,这是拖动窗口的起始动作。差异是,此时按下空格键,当前窗口变成青色,鼠标拖动,只能在事先分配的几个区域中停靠。这几个区域,就是瓦片。如下图所示,青色细线划分了区域,3*2的青色范围是当前正要停靠的区域。

我的机器设置了12个纵列,1行。经常把窗口停在左起第3列到右数第3列之间,正对着我的眼睛。

12*1,这比windows内置的 左1/2,右1/2,左上、右上、左下、右下多了些选择。特别是windows内置的区域要么偏左,要么偏右,居然没有正中间u我最需要的这种配置。

鼠标左键在窗口标题栏按下时,按下 左control 可以只移动而不改变窗口大小。也只能移动到指定的几个区域中,在目标区域中最大化窗口。

 

如何将无损音频格式FLAC转换为其他格式,如MP3或AAC?

如何将无损音频格式FLAC转换为其他格式,如MP3或AAC?

---------------------------

用ffmpeg。

  1. 测试播放 flac 格式的文件。
ffplay filename.mp3

2. 转换

ffmpeg -i filename.flac filename.mp3
ffmpeg -i filename.flac filename.aac

3. 测试转换结果,播放mp3和aac格式的文件。

4. 慎重起见,换个播放器试试。

用微软windows自带的媒体播放器播放,没有问题。因为界面看起来就是空白的窗口,所以略去截图了。

文件大小如图所示。

由太阳角度和时间求地点

假设有张照片,有太阳照射下的影子,知道房屋墙基的角度,知道照片拍摄的时间。求拍照的地点经纬度。

1. 题目

就是这张照片。

C:\Users\young\AppData\Local\Temp\WeChat Files\365306cb65c4ecd6d88843a2db30b84.jpg

橙色线,即墙基的角度,为东偏北25.4度。

(原本拍照想题目的时候,以为房屋是正南正北的,即墙基是正东正西走向。在百度地图上看了一下,并非如此。截图放在geogabra里量了一下角度,即上图。)

拍摄时间为 2023年6月30日15:22。

2. 分析

2.1 概念

本篇标题中的“太阳的角度”并非单一变量,而是包含两个数据。其中之一是 高度角 Elevation,另一个是 方位角 Azimuth。

高度角,指 在纵剖面上,太阳的投影-观测者-地平线 之间的夹角。

方位角,指 在水平面上,正北-观测者-太阳的投影 之间的夹角。

https://gml.noaa.gov/grad/solcalc/azelzen.gif

上图来自 https://gml.noaa.gov/grad/solcalc/glossary.html#azimuthelevation.

图中,h为高度角,A为方位角。

2.2 原理

太阳的高度角 与 时间、纬度 有函数关系。由高度角、时间求得的纬度不唯一,分别在太阳在地点上的直射点两侧,距离太阳在地点上的直射点有相等的纬度差。

太阳的方位角 与 时间、经度 有函数关系。

例如下面的示例,由经度、时间 求得 太阳的方位角,由纬度、时间求得 太阳的方位角。我们需要的是两个反函数,由 太阳的高度角、时间 求得 经度,由 太阳的方位角、时间 求得 纬度。

https://www.osgeo.cn/app/s1904

我们需要找公式或找到可查的表。

2.3 自变量

函数值是 经度和纬度,我们需要的自变量 为 太阳的高度角、太阳的方位角、时间。

时间已知。

太阳的高度角可以由建筑的影子和建筑的比值得到;太阳的方位角可以由墙基的角度得到正北,由建筑的影子在大地上的旋转角度得到。

影子长度的测量和影子角度的测量,细节在下文中。

3. 测量

在照片上做出辅助线,得到下图。

图中的角β是高度角。

图中的角 α与方位角有关。把百度地图与照片叠置,旋转照片得到下图。

其中绿线为正东正西走向,红线为太阳影子的方位角。因此太阳方位角与东西方向的夹角为
25.4度-∠GFH。

3.1 太阳的高度角

根据带辅助线的照片,用geogabra可测得太阳高度角41.82度。

或者 根据房角高CD的像素个数 与 房角的影子长DE的像素个数,二者比值构成太阳的高度角β的正切。根据反正切可求得β角大小。

用 画图 测量像素的坐标,在excel中用勾股定理算得距离。用反正切求得角度为40.5度。

注意到此处有误差,由于视角并非水平,因此求得的角度略小于真实值。考虑到影子的本体是建筑物而不是较短的钉子,因此测量误差较小;并且视角高度不大,所以认为误差可以接受。

3.2 太阳的方位角

视角高度不大,因此对水平面角度(和长度)的测量误差较大,需要做透视矫正。

选了个容易使用的工具。用华为手机拍照功能中的 智慧视觉(左上角)| 扫描 功能,校正照片。

其中左上角是房角在水平面上的投影。左上角-右上角和左上角-左下角 之间等距,由假设栏杆的每根立柱间隔无论左右方向和前后方向都是相等的推得。右下角是做平行线得到的。

测得太阳影子与房基间夹角23.02度。

因此从正北顺时针的方位角为 270-(25.4-23.02)=267.62度。

4. 代入公式

所需公式在网上可以查到,未重新推导。

4.1 高度角

4.1.1 高度角公式

高度角公式

https://www.zhihu.com/question/51315574

sin hs =sinφ·sinδ+cosφcosδ·cosΩ

其中

hs 为高度角

φ 为地理纬度

δ-赤纬

Ω-时角,deg

4.1.2 赤纬公式

赤纬公式

https://zhuanlan.zhihu.com/p/265303609

https://pic4.zhimg.com/v2-54d355b186fcee176de2edb3fd45c3fb_r.jpg

其中t为由3月21日到所求日期6月30日的差,用excel求得值为101,如下图。

把101代入赤纬公式得到23.15度。旁证检验,6月30日刚过夏至不久,太阳由北回归线23.5度向南,求得赤纬的结果与此符合。

4.1.3 时角

在高度角公式的贴子中,孔sysu

求得15:22对应的时角为 (15.37-12)*15=50.55度。

4.1.4 反函数

不必求反函数,可以根据高度角公式在excel中制表,局部如下。

上图中,由纬度、赤纬、时角三个变量求得高度角。其中赤纬和时角在本题中是固定值,已求出。以1度为间隔穷举所有北纬纬度。

观察表格可以发现,在高度角40度左右对应的纬度范围相当大。如果考虑到测量的误差,北纬10度至北纬60度都有可能。

画XY散点图如下。

散点图由上图可以看出,根据高度角求纬度,由于高度角范围较小,所以计算得到的高度角误差较大。(纬度分辨率相当低。)

4.2 方位角

不需要引入方位角公式。

时差,经度差与时间差对应,每360度对应24小时。因此 360/24=15,即每小时对应15度,或每度0.067小时。

拍照时间使用东八区时间-北京时间。同一时刻,东八区中央经线东经120度的太阳方位角为259.56度。根据 https://gml.noaa.gov/grad/solcalc/azel.html 查得。

此前已算得太阳的方位角267.62度。与东八区间的方位角相差267.62-259.56=8.06度。照片所在地比东经120度的太阳更偏西,所以地点更东,120+8.06=东经128.06度。或者按每度111km,拍照地点为由北京向东8.06*111=894.66km。

5. 验算

剧透得知,照片拍摄地点为 吉林省长春市东北师范大学净月校区。

根据 Stellarium 得到 经纬度。

https://gml.noaa.gov/grad/solcalc/azel.html

查得高度角41度左右,方位角264度左右。

或者 用 https://scienceasdf.github.io/site/solarAngle.html 在PC机获得大致的经纬度。

得到高度角为41度左右,方位角264度左右。

https://www6b3.wolframalpha.com/Calculate/MSP/MSP550511ie5c243908hid200003i4hhge80hh56880?MSPStoreType=image/gif&s=4

似乎看起来不错,由经纬度算得的高度角和方位角 与 测量值相差不大。

测量值 根据经纬度的计算值 误差
高度角 40 41 -1
方位角 268 264 4

然而误差相当大。

因为纬度分辨率差,所以高度角即使测量非常精确,求得纬度的范围也非常大。按我的测量,纬度从北纬10度到北纬60度,跨度5550,大致相当于从漠河到曾母暗沙。

方位角差4度合地面4*111=444km,从长春到珲春,再远一点就是日本海。

 

二猫的童年

二猫中考结束了,兴高采烈地喵喵叫,再也不用上初中了。说,看着满床满地满书桌的资料,就想应该抽出一张来复习。就像在考场上发现题目比平时简单,告诉自己“以后中考的时候可以慢点答”,然后遽然发现,正在中考。童年转瞬即逝,即使我经常还错觉她仍然是不一点儿高的孩子,却早就比二猫妈还要高了。

所以,趁时光不远,正是时候写点什么回顾一下二猫的童年。

一直以来不太写孩子的故事。一方面我觉得需要尊重她本人的意愿,而她在更小的时候恐怕没有能力辨别到底是否赞同公开讨论她的故事。另一方面,大家听别人家孩子的故事,通常怀着“可供借鉴”之类的心态吧。私以为成年以前,判断孩子某些特质或家长选择的利弊还为时过早。即使成年以后,我们就能断定怎么做是对的么?总之,把孩子视为孩子评判,有违我的准则。因此,这一篇并非希望有所检讨或借鉴,而是单纯回忆。

包括幼儿园前,幼儿园、小学、初中。以下是我的回忆,不是二猫本人的回忆。因为二猫在过了某个时间点以后,突然就忘掉了童年时的很多事,像开关卡搭一下。她会说,“对对,你提到过的,但是我一点印象也没有了。”

二猫从小语言能力非常突出。说话早,认字早。当时我们都感觉非常厉害,就是那种——家长自己觉得这孩子太棒了,居然这么牛,然而过了一两年,每个孩子都会拥有同样能力——的那种厉害。二猫没有经历过 饭饭,香香,臭臭 这样叠字的阶段,能说单字以后每多久就可以说简单的句子。

和她聊天的时候与面对成年人的感觉差不多,除了人生经验还不够。比如我提到我小时候菜里肉太少,她问,是因为奶奶觉得吃肉多不健康吗?

幼儿园的时候,在我身后的墙上写很多字。应该说是很多笔画,她认为那是字,而且每个字都有读音。再问一遍还能认出来,或者记起来吧。再大一点,问我某个字怎么写。我瞎写一气骗她。她说,你写得不对。我说,正确的应该怎么写。她说,我不会写,但是我认识。

认识字多,所以在学前就读了很多书。多到什么程度呢?小学二三年级的时候,老师要求大家把最近一年读过的书名写在一张纸上。二猫用特别小的字,写了满满一页。她说,还有,写不下了。老师认为二猫在说谎,说,不可能,一个人不可能读这么多书。我和二猫妈考虑再三,要不要跟老师解释一下,决定还是沉默。这种沉默在小学入学面试的时候,二猫也做过。要求大家读画本,二猫拿起来就念,毫不犹豫。老师问,你是不是读过这本。二猫说,没有。但是她没有提议,你再换一本给我读吧。

某次作文,二猫提到,小的时候妈妈指着书上的字给她读画本,后来有一天就说:你已经是个大孩子,可以自己读了。二猫太喜欢那些故事了,只好自己读。老师感叹,真是聪明的家长。这里有个可笑的潜在负面效果。多数汉字二猫都是自学的,所以读音也是自学的,不少汉字在小学阶段仍然只读半边。聊天的时候出现过好多我们听不懂的词。现在都不记得具体是哪些了,我随便编一个吧。比如她可能说“见贝要求如何如何”,问了半天,写下来,是“规则”。大致如此。讲解完她自己也哈哈乐。二猫妈审稿到此,说“羊圈(quan)”。二猫说,对对对,当时我读的是《吹小号的天鹅》,把羊圈(juan)读成了羊圈(quan)。

再后来某次家长会的时候,老师请二猫妈做了一次报告,讲如何引导孩子读书。二猫妈提到,我们自己没事也喜欢读书,每年也买多少多少钱的。

喜欢读书,有自己的书架,后来又溢出其他架子上,散到地上床上。特别喜欢《夏洛的网》,用里面主角的孩子为自己起了英文名,某种小蜘蛛。喜欢过《玛蒂尔达》,后来很淡然的态度。喜欢《柳林风声》,给我解读过我看不懂的人物动机。我很喜欢《哈尔罗杰历险记》,积极推荐,她说全看过了,有点吓人,没意思。《我亲爱的甜橙树》,看了很多遍,中考结束以后又捧起来了。喜欢三国,因此初中时看了三国志、后汉书、晋书。小时候喜欢看三国,突然有一天说“害怕”。我们猜测再三,因为血腥暴力,因为权谋政治?都不是,就是怕,怕,还想看,还怕看。后来说清楚了,“怕看到关羽死”。当时她还不能区分恐惧和担忧。

比三国更早,在更小的时候,书籍就给了她力量。她非常喜欢看《小猫当当》,当时最喜欢的一本,是关于尿床的。小猫当当尿了床,其他小动物,挨个给出画面,都尿了床。各有特色,大概是小猫当当的是小鱼的形状,熊猫是竹子形状,大致如此,都尿成了自己喜欢的东西。然后大家一起晒被子。结尾是什么,太阳很红?我当时非常奇怪,为什么结尾不是“如果不尿床该有多好啊”。我当时没敢问,任由二猫喜欢这书。直到幼儿园或者小学,我终于有机会提问,为什么喜欢这本书呢,它并不能解决任何问题,甚至没有正面的引导。此时,二猫已经能清晰表达,她说,“看了这本书,我就不害怕尿床了。”醍醐灌顶。

喜欢看书到了痴迷的程度。应该是经常猫起来偷偷看书,因为暑假学校要求看书的时候,她挑了几本必读书目就跑到了床后面。问为什么要躲起来,答习惯了。这种直肠子回答是二猫特色,做法也是一样。因为中午在图书馆读书回班迟到,正被班主任撞到。问去哪了,答图书馆。也许还问了看什么书,肯定答三国演义吧。老师说,图书馆就是你的班级,你去图书馆上课吧。二猫讲这段的时候,我说,孩子,老师是在批评你啊,你可不能像我那样就真回家看动画片去了。二猫说,我回图书馆看了一节课书,特别过瘾。家长再教育,孩子说,老师是认真的,不是在跟我商量,是要求。问,跟图书馆老师怎么说的?答,我老师让我回来看书。图书馆老师后来再见到二猫,问过,你是不是就是老师不让上课让回来看书的那个女生。

喜欢看,也喜欢写。两篇发表在《作文与考试》上。还写了科幻小说《狼蛛》发表在科幻世界少年版上,是信息学竞赛和养昆虫的故事。参加了很多次自然博物馆魏老师组织的活动,抓虫子,养虫子,认虫子。我跟去过一次,学的是《蝴蝶的防御》。她在小说里没有提到——曾经把两只独角仙里大的那个送给了好朋友,还细心附带上昆虫吃的果冻。好朋友把果冻吃了,独角仙饿死了。

语言早熟,在幼儿园时期并不是什么好事。从幼儿园回来,问过得好不好。答,还行。玩什么了?看一会儿云,玩一会儿chuachua(塑料插件玩具,类似乐高),玩一会儿chuachua,看一会儿云。没有多少朋友。她想跟小朋友玩的时候,会礼貌地问“咱们能一起玩儿么?”三四岁的小朋友似乎还不知道她为什么要问。别的小朋友从她手里拿东西的时候,从来不问,抢了就走。有一次在家二猫拿着玩具,我假装在后面追抢,二猫跑两步以后把玩具飞快地扔到前面的地上。我起初很愤怒,怎么能摔东西呢。后来突然想到,有可能,她在幼儿园面临争抢时就只能这样处理。语言有优势,但是体力和斗志上明显不及。并且还意识不到体力的差距。我带二猫在楼下小公园里玩,看到一群比她高,大约到我腰高的孩子,成群地风一样跑来跑去。二猫试图指挥,用语言,你们到这玩,你们往那跑。我乐呵呵地看孩子们没一个答理她。最后一个孩子对我说,叔叔,能把你家孩子带得远一点吗,我们怕撞到她。二猫懵懂地看着我,问,他们为什么不带我玩。我才意识到,还不能充分理解语言和体力的相对性,不只二猫如此,看来是遗传的。

为了锻炼二猫花钱——那个时候手机付款还不普及——大家都用纸质或金属的人民币。为了锻炼二猫,我给她三块钱,让她替我去买可乐,我在门外等她。老板告诉她,小孩儿少喝(也许是不喝,细节我忘了)可乐。二猫说,她不喝,是给爸爸买的。老板说,小孩儿不能骗人。二猫不喝可乐,她试过几次,在不同年龄段,目前的结论都是一致的,难喝。

类似的,还有大人看她戴眼镜,告诉过她,不要看电视。她说,她不看电视。她确实不看,因为家里没有。大人就会说,不看电视你怎么近视了呢?显然不信。她会说,遗传的。大人就会说,近视怎么还能遗传呢。

乳牙很差。大人看到会说,小朋友不要吃糖。二猫说,我不吃糖。大人会说,不吃糖牙怎么会坏呢?二猫的科普几乎没有人信,她说,是遗传的。牙釉质先天发育不全,长出来以前就那样了。

二猫有坚定的意志品质。小时候几乎不吃糖,因为牙齿不好。也不吃巧克力,因为我把大量吃巧克力影响发育的简化版本告诉她了,即吃了不长个。吃水果。曾经对着剩下的唯一樱桃大哭,这是留给爸爸的。那粒樱桃我犹豫再三,吃掉呢,还是奖励给她。记得是吃了,奖励了其他的东西。

说起奖励,有过一次重大奖励。具体奖励的是什么不记得了,但是缘由还记得。小学。……

我们说,知是非,讲义气,必须重大奖励。奖励的内容具体是啥,家长忘了,孩子也忘了。孩子甚至忘了有过奖励。不过,我一直记着当时的感觉,觉得这个孩子很好,很自豪。并非因为这是我的孩子,而是因为我希望我周围的人是这样的人,希望我自己也能这样做。

即使很小的时候,二猫的热情也表现得相当冷静。带出门玩的时候,沉默不语,表情淡定。回家以后跟姥姥白话得没完没了,所见所闻滔滔不绝。也许总有人能感觉到冰下的火焰吧,她在每个学段都有相当铁杆的好朋友。

老猫,是最重要的朋友。二猫妈告诉她,咱们全家其实都是猫,但是这个秘密不要让别人知道。她自认是老猫的媳妇,我和二猫妈的童养媳。老猫的学名是李白,所以后来她狂热地阅读李白的诗和相关信息。

她在幼儿园有个朋友,家里有非常大的院子。我们一起感慨过,有那么大的院子可真好啊。小学的一个好朋友,一起玩过改良的定向越野。就是把果冻吃了饿死独角仙的那位。那位好朋友转学走了,后来在网上还有联系。小学持续到初中的好朋友。小学时我见过,后来初中放学时又见,拖着个大大的行李箱当书包,个子也窜高,认不出来了。运动会的时候给二猫梳头,似乎从受照顾的小妹妹长大成了姐姐。

学校以外的活动,也交到了朋友。马上要中考了,还有微信留言,问地生考试当初如何如何。二猫说,这是合唱团的好朋友。她们在省少年儿童合唱团一起受训和表演,直至二猫上初中超龄退役。后来这位低一级的同学也上了同一个初中,离得不远,但是从来碰到过。也许碰到过,但是大家长变了样子,互相不再认识,但是在网上保持着联系。

说起合唱团,二猫也曾经唱歌跑调来着,但是同一时期却一直保持着绝对音高的听力。在小学的小提琴班老师拉了音符,没有参照,让大家听。她说,是re吧。老师说,大家看一下,这就是听绝对音高。二猫在合唱团练,我在外面走廊里听。和声一起,天籁之音。并不跑调。

除了音乐,也练了舞蹈。中国舞10级,非常容易就拿到了,因为柔韧性非常好。别人哭着喊着压腿压腰,她趴那都睡着了。然而,我们说好了,过了10级就再也不练了,她实在是不喜欢。家长也要言而有信。

与舞蹈相关的,中考体育选了坐姿体前屈,非常容易就可以满分了。不过,参加了辅导班,感觉非常值得。即使容易满分,教练也能给出方案使得更轻松一些,怎么热身,怎么压还是发力,训练时如何利用不对称。跳绳也很容易就满分了,特别是换了好绳;还有教练第一次三两分钟就指出,歪,哪面容易挂住,以及身体前倾这样的技术要领。我们一度担心过的800米,进步也很快,虽然不能满分,也可以高分通过,也许能扣0.3分?不过后来因为疫情后同学们纷纷阳性,中考取消了800米。

钢琴考到央音8级,不好考的那种。视唱练耳老的三级也过了。9级没过,想再练,被我拦住了。我说,孩子,你现在信息学投入这么多时间,钢琴没有足够时间练不可能过去。她说,不过也可以练啊。我说,9级学习挺贵的。她没有再学9级,不过我听起来相当难相当壮丽的曲子已经可以在一周左右练成了。在初中班级的联欢会上表演过。在马上就要中考之前,最后一天在校的时候,跑到大厅弹了一通。中考之前的晚上,在家又弹。这样就很好。

从小学四年级开始,学习以外花时间最长的是信息学,成了非常牛的学姐的小迷妹,认识了很多特别厉害的学长学姐,信息学内外他们都有非常广泛地讨论。未来还会继续学,她仍然保持着狂热,希望作为职业。

小时候的记忆,二猫有些忘得干干净净。几年前我瞎编磁性球的数量不对,她被诈出来说还记得更早的几年前曾经掉到床后一个。这个故事不知道她是否还记得了。不知道她是否还记得,冬天在伊通河回来的路边,厢式车的下面藏着的那个最好的冰溜子。

持续学,一直作为职业的,保持狂热的,是永远也不会忘掉的。即使忘掉的那些,虽然不再是记忆,也已经成为我们的一部分,恒久地影响我们的选择和不断塑造我们。再过很多年,也许我们会忘掉这个特别炎热的夏天。也许会忘掉剧烈变化要么酷热要么暴雨的夏天,在这个夏天中考结束了初中的学业,结束了义务教育阶段。我们也许会忘记如何连接在一起,忘记很多细节,然而我们仍然切实感觉到,正如春风拂面。

微信图片_20230629221117

批量压缩歌曲

有时候听歌。好像停留在了某个阶段不再成长了,所以绝大多数歌曲对我都太新。像刘德华《忘情水》,还有孙燕姿(非AI的那位)《绿光》,老狼《同桌的你》《白衣飘飘的年代》《B小调雨后》,在我听来都是非常新的歌,才听到没多久的感觉。相应的,更新的歌由于基本没听过,就都感觉特别陌生。嗯,就是上古戏曲古董突然听到五四音乐的感觉,有点排斥。所以,当老朋友给我一大批听起来非常熟悉亲切的老歌的时候,我的愉悦可想而知。这旋律,这钢琴或提琴的伴奏,这……原来这首歌的首唱是他/她啊,不如后来谁谁唱得好,怪不得没流行。

过了一段时间,硬盘空间又告罄。删了一段时间各种宝物,今天轮到这些歌了。

2.5G空间可供回收。或者移到移动硬盘,不过那样可能得很久之后才能听了,因为不是顺手就能做的,可能就不做了。删除之前,突然注意到文件扩展名是 .WMA,每个文件10M左右。MP3就可以啊,虽然WMA采样率可能更高,奈何我的音箱以及耳朵没有多么优秀,白白浪费。

压缩一下。

第一步 改名,去空格

为了后续转换能成批操作,我查看了文件名。有的文件名中存在空格,这会要求转换命令中作为文件名的参数必须外加引号括住。需要额外的工作,不如统一把空格去除。

例如:

东北师大校歌 – 老年合唱团版 .wma

改名为

东北师大校歌–老年合唱团版.wma

操作的方法是 用 Total Commander 全选文件,然后 File | Multi-Rename Tool。左上红框中是目标文件,[N]表示原名不增加日期、时间、序号之类。右上红框,Search for中有个 空格,这样就把所有空格替换为 无。

有些同学在描述这一步的时候可能会称为“预处理”——凡是正式行动之前的都是预处理,如果有若干步需要区分,就分别叫 预处理1,预处理2,预处理3。

第二步 遍历文件

Total Commander据我所知不提供 选中以后提交给某个工具处理 这样的功能,还得用 shell 之类的工具,才能指定这200多个文件都需要操作。即 遍历,这些被遍历的文件都执行相同的操作(题外话,在STL和SICP中也有类似思路)。

我隐约记得 linux 下几种 shell 如何遍历文件,但是我的座机 bash shell 下默认不搜索 ffmpeg 这个转换工具。用windows的批处理吧,我语法不熟悉,搜索。

用 bing,关键词:bat 遍历文件。

第一条命中。

写日志,避免以后引用或要查找的时候忘了。

这条指令与我记忆中长得非常像,差不多。(切手指长小段焯水晾干)备用。

第三步 压缩 格式转换

优秀工具ffmpeg有这个功能,语法我记不清了,猜测是

Ffmpeg -i 输入文件.wma 输出文件.mp3

压缩比,比特率,采样率之类的都用默认值。

差不多,(勾芡大火爆炒出锅晾凉)备用。

第四步 技术原型试验

我才不会直接在任何宝物上实施写操作。万一写错了,把宝物写坏了写没了怎么办。打游戏时凡重大事件以前,必save以备load。

在当前目录下随便建个目录,起名 1 (随便起的,一会儿就删除)。把十几首歌曲复制(不是搬移)进去。

在目录1下建个批处理文件,名字是 1.bat(随便起的,一会儿就删除)。1.bat的内容如下。

for %%i in (*) do ( ffmpeg -i %%i %%i.mp3)

命令行下(在Total Commander按ctrl-下键),在目录1下运行1.bat。不到一分钟,mp3文件生成了。播放,效果不错。原有wma仍在。

以上说明技术原型验证通过。

第五步 操作

把所有wma文件复制(不是搬移)到目录1(这是操作台)中。

命令行下,在目录1中执行1.bat。等。

第六步 估算

从下图中可以看出,这首歌典时长将近4分钟,转换速度为50倍速左右。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\1686816594230.png

歌典大约250首,需要转换多久呢?

每首转换需要 4分钟*60秒/分钟/50倍速,约4秒左右。

250首*4秒/首,合约16分钟。

已转换得到的mp3每首大小约3~5M,与经验中的每分种1M相符。原WMA文件每首10M左右,这样压缩比约0.3~0.5。

还有十多分钟,正好写博客。

十多分钟后转换结束,时间估算正确。MP3占用文件1M,原WMA约2.5G,压缩比0.4,估算准确。

第七步 清理

不,不叫做 后处理。

把目录1递归删除。

把WMA文件搬移(复制后删除原文件)到移动硬盘,在日志中记录目标硬盘的卷标。

把mp3文件都移到 "music 一人一首成名曲 252首 mp3"目录下。