骑行简记

1. 骑行-东南湖大路到南溪湿地-往返

往返共15.36公里,1个半小时,秋水长天。

路上我们瞥见花鼠子窜进丛林,刺毛撅腚的;远看巨大的白鸟在河面掠过,翅膀缓慢扇动,波澜不惊;一个小伙子坐在电力驱动的滑板上飞驰而过,又几次在拐角后遇到他拆了轮子维修,在路上磕打,呵哒呵哒;迎面遇到一个奋力蹬车的男孩头盔上插着带稳定器的镜头,镇定自若地昂着头,像罗马士兵头上有英冠在风烈烈作响。巨大的树桩横卧在河口,面积庞大的芦苇遮蔽水面,黑色的蒸汽机车连着绿皮车厢,轿车雕塑锈迹均匀电镀闪亮。

我们在其间骑行,往返共15.36公里,1个半小时,共秋水长天。

https://mmbiz.qpic.cn/sz_mmbiz_jpg/s51CCYxbmoTwkscYS9jWSPaxtyZNG1wDTiagk589szwpCC0ehEibd65tDDUdEHqZhwjdotdMiaLMXibyROeTOh2kiaA/0?wxfrom=12&wx_fmt=jpg&tp=wxpic

https://mmbiz.qpic.cn/sz_mmbiz_jpg/s51CCYxbmoTwkscYS9jWSPaxtyZNG1wDdDtC40B3oKHoseItrDOn7N1P2WuicdDFPrznOhpw7tMiayxZymjcomTw/0?wxfrom=12&wx_fmt=jpg&tp=wxpic&usePicPrefetch=1 https://mmbiz.qpic.cn/sz_mmbiz_jpg/s51CCYxbmoTwkscYS9jWSPaxtyZNG1wDEYwJbB11J3JkWfKfzyefpNUcADrtASibFl8gljOJLy7opib4mK7jvBiaw/0?wxfrom=12&wx_fmt=jpg&tp=wxpic C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\a16d3cc0c8a0c4a8628fab1722327764.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\9be3573d132f9f1c605d465bff0b0e7e.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\971fe66e48f9780ce7f61d8b88cb3145.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\d5c5d7e6250e03a58e26f32a9d414211.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\34a325a278a367741e8ed1ae1bca82c9.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\8fa654b9c1b28c5de2d587a388c916ff.jpg

2. 骑行-自由大路到北湖地铁站

C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\9b56eb515e971d0d9d9bf7dc86aa4fea.jpg

​​ C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\9667179fa14ced2858065b1c1da13ed8.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\8c888ad7757b2e7bef29f468927d7a87.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\99ff5ff6612183ff8e6fa348ea3c1c71.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\d7ea724395a7a2fe02c756a8b21d2983.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\59bb44b8c46627856280940a0bce082a.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\d25b3049bf2de2cbf5e2a658d444fb36.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\b9091ea470d083b40230d3537548b136.jpg C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\158faaa90c63aa273fc026146571315a.jpg

3. 骑行-自由大路到北湖最北-往返

很多没有拍到。有比整条桥还要长的货运火车车厢,咣啷咣啷。有高铁安静地在远处穿越楼群。有单节的和谐号横过河面。

​​有一个巨大的风筝悬浮在更大的净空里,周围毫无参照物,看不到风筝线,像大王章鱼在深海摆动手臂。有斜拉桥的立柱刚刚遮挡住太阳,强烈的阳光溶解了轮廓。拦河坝阻断河流,界分市区的水景和下游的湿地沼泽,长达几公里的芦苇蔓满河床。

​密林里帐篷毗邻,有小狗的叫声。烧烤的炊烟顺风几十米不散。儿童骑车的背着长杆武器,呼朋引伴的,爬上高台喊爷爷奶奶的,蹒跚而行的。野餐桌上,

一位兄弟可能喝多了,一遍遍喊,“这么多人,他们是不是都是钓鱼的,是不是都是钓鱼的?”不远处堤坝上密密麻麻的钓杆,哈哈大笑,大家都听出了弦外之音?一位妈妈在教小孩下斜坡。“你得正着下,像我这样,不能侧着下。”我差点脱口而出,你那个才是错的。一位爸爸在教孩子轮滑,说了三遍,“你得弯腰,不要怕。”孩子喊,“你别管我!”摔了,“为什么摔了?”

​迷路了,从桥上翻过一大片芦苇,过了居民区,前面还是河床,还是河水。看地图,才发现刚刚沿着直流前进了很久。想起亚历山大和色诺分,要延河上溯几个月才能横渡。

看地图,路尽了,需要绕很远。看车辙。走低头推车才能通过的小路,十几米外就是新路。看大致方向,横跨白杨林和齐肩高的草丛。

只要还有外卖小哥的摩托不时通过,有倒骑驴卖小饼和冰镇饮料,那么距离人间烟火就不远。一个外卖小哥前轮扎进管道井,我不停车远远喊,“用不用帮忙?”他答,“马上就拽出来了,大哥。”我回头喊,“不用?”他喊,“除来了!”我不顾绝尘而去。

自由大路到北湖最北,往返共35.58公里,骑行2.5小时。往返都是顶风,有点累人。花费共3个小时多一点,除了骑行,其余的时间是三次停留休整,以及迷路。水喝光了,一瓶脉动不太够。美团单车花费12.6元,曾经离开运营区,又返回了。

C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-10\af7ddc0352a06105e9e0d6e9ae209666.jpg

https://mmbiz.qpic.cn/sz_mmbiz_jpg/s51CCYxbmoS7xQFw1UHxrGk90WI46vibDgweTv3icibNZOm6PJoub59ojwAEsUINibXRziaD6jlp2M75UKIufaq9C1g/0?wxfrom=12&wx_fmt=jpg&tp=wxpic

https://mmbiz.qpic.cn/sz_mmbiz_jpg/s51CCYxbmoS7xQFw1UHxrGk90WI46vibD5abqBia8XDKPSvmzKW2xrst5cvYBwhibNW1qESibaiaF13vEtppDp3W32g/0?wxfrom=12&wx_fmt=jpg&tp=wxpic&usePicPrefetch=1

夜徒

有露营地摆满帐篷,张灯结彩。有灯球刻画出的海盗船在黑灯瞎火的林子里晃荡,金属刮擦的吱扭声令人牙酸。没有音乐,只有乘客的惊叫此起彼伏。

有个小伙外放《明朝那些事》(?)朱元璋阻击王宝宝,从我身边嗖地越过,声音一会儿就远去消失了。好一会儿,我又遇到他,朱元璋和陈友谅又怎么怎么,他正在徒步休整,被我超过。就这样,他跑步时超过我,徒步时被我赶超回来,朱元璋的一生就这样断断续续地回顾着。

前面一双白鞋慢跑,看配速比我快速徒步慢得不多,我要超过需要很久。我放慢速度,拉开距离别万一那是位女生再被吓到。这样又跟了一段路,岔路都没有路灯,夜徒危险不适合拐出去。终于有位女生从后面跑来,白鞋紧跑几步跟住她。她们跑远了,我又开始加速。

湖对岸的喇叭正播放《乌兰巴托的夜》,听不清哪个版本,只听到很大的声音唱“那么静那么静”。前方有人在听王杰系列,连着一首接一首。当时听得悠扬,30多年前特有的缠绵纯情和伤感,我还想这有钱老登的音箱质量不错,此刻却一首也想不起来听到的是哪首。也许哪首都一样?后来我超过了歌声,听王杰的不是老登,是位姑娘。

60分钟
6000步
6000米

补充:

李老师指出:王宝宝可还行[偷笑]

打印身份证正反面在同一页,保证大小与原件一致

1. 两个问题,以及在物理世界中的方法

又被要求身份证正反面,复印件。且不论身份证的哪一面才是正面,哪一面才是反面,有两个问题需要考虑。

1.1 第一个问题,大小一致

现在大家经常找不到复印机,而打印机容易找到。用打印机,不用复印机,即打印的,算不算复印件?这得看提要求的人是怎么想的,还有哪些指标是他关注而没有提到的。如果打印件的原始材料来自照相机或者手机,那么,打印件中的身份证的大小是失真的。复印件的尺寸,除非特别设置扩印或者缩印,默认是与原件等大小的。

如果你在意大小,用相机或手机拍摄的结果,如果没有梯形失真等,那么,可以通过身份证的尺寸已知来校正。85.6mm x54mm,与银行卡和名片大小一致。

扫描仪得到的图片,打印出来的大小与原件是相同的。

这样,大小一致姑且算解决了。

1.2 第二个问题,把两张图片放在同一页中,这怎么做呢?

复印件的标准做法,是先复印身份证正面,然后把身份证反面放在刚刚复印出来的正面那张纸上,再复印一次,得到了正反和反面在同一张纸上。

打印机+扫描仪,当然也可以打印出来正面,再把反面放在纸上扫描一次,再打印出正反面在同一页纸上。要在物理世界里多费一张纸,纯用计算机如何解决呢?

有人说用 word等 编辑,但是这不能保证大小不变。

2. 虚拟世界的方法

2.1 用 Windows内置的 画图

如果扫描的大小是整个扫描仪的白色底版,在扫描仪的软件中把除身份证以外的部分切掉。用 Windows 操作系统自带的 画图 剪切,也可以,不会改变图片的原始尺寸。

然后把两张图片贴在画图中,一左一右并置。

可以移动图片,但是不要拉动下图中红圈中的手柄,会导致图片大小或纵横比变化。

然后打印就可以了,默认设置就是大小不变。

2.2 用命令行工具 ImageMagick + InfanView

> magick convert +append 0001.jpg 0002.jpg output.jpg

以上命令中,

magick convert 是命令行和参数;
+append 表示水平排列;
0001.jpg 和 0002.jpg 分别是身份证正面和反面;
output.jpg 是合并的结果。

我从这里学到的 https://blog.csdn.net/qq_24127015/article/details/86525305

output.jpg 是两张身份证左右拼在一起 同等大小的图片,比A4纸小很多。

接下来,用InfanView打印 output.jpg。

注意 要求 原尺寸,注意下图中的方框。

2.3 用命令行工具 ImageMagick+浏览器

或者如果没有 InfanView,在

> magick convert +append 0001.jpg 0002.jpg output.jpg

这一行之后,把output.jpg转为 pdf文件。

>magick convert output.jpg output.pdf

然后用浏览器打开 output.pdf。

接着用浏览器打印 output.pdf,原比例,,注意下图中的方框;横纵皆可。

3. 效果展示

打出画的效果如下。

下图是A4纸,身份证正反面分别横向或纵向放置。黑白的,是打印的结果,身份证正反面;有蓝色斜线两张纸片的是我手绘的身份证样张,放在了打印出的身份证正反面A4纸上面作为参照。从图中可以看出,长宽的大小都没有变化,尺寸一致;正反面放在同一张纸上,符合要求。

此文也发布在以下站点。
----
知乎 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 – 因为从我的机器不可达,无法更新

如何得到GPS经纬度

很多年以前,我们就喜欢在城市和郊野徒步,称这种行为作“暴走”。不随团体行动,就只我们两人。距离一般在8公里以内,一两个小时。

从2007年起有博客记录,开始使用谷歌地图和手机中的GPS。

步行7000米 https://younggift.net/1450

GPS,我徒步,你记录 https://younggift.net/455

徒步:GPS-KML-maps https://younggift.net/445

后来开始使用高德地图之类的系统以后,发现坐标有偏移。再后来知道有几种不同的坐标,以及换算的一些方法。

Fwd: 百度地图坐标偏移的纠正 https://younggift.net/10

很多年以后,现在仍然喜欢徒步,用 Keep 记录。在城市繁华区域还好,走着走着到郊外,人迹罕至的地方也没有了地标。标记一下,以后再走回来发现根本不是那里。刚开始想,不是说北斗定位1米甚至1米以下了吗,怎么回事?后来才想起来,记录的是哪种坐标下的经纬度呢?

最近试用了两个APP,发现记录的是准确的,发在这里供你参考,也供我自己备忘。

一个APP是 手机物理工坊(phyphox),另一个是 两步路户外助手。

在 手机物理工坊 中,点击下图中蓝方框,可以进入GPS界面。

可以在以下界面中查看。第1个数据是纬度,第2个数据是经度,第3个数据是高度。

图中可见,我当时的纬度在43.863140附近,经度在125.30365附近,高度200米左右。

物理世界里的位置地标如下。

C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-08\629cc8bdceebc28a29f68215e9288b61.jpg

在长春市长白山宾馆附近。

小数和度分秒的换算,可以使用在线工具。

精度在知乎上有牛人 InkFx 回答如下。

另一个APP两步路,界面如下。

给出了3种都称为“经纬度”的指标,而且提供了小数和度分秒的切换。其中的“国际通用”WGS84与手机物理工坊的数据一致。GCJ-02“国测局”(我记忆)里与高德地图一致。

上面这个GPS取自东北师范大学地理系门前,此处有物理的GPS。

C:\Users\young\xwechat_files\wxid_mkn03idldug522_cef6\temp\RWTemp\2025-08\a7ce97a8644ee5090946c750a05a8371.jpg

手机物理工坊在同一位置给出的数据如下。精度为三五米,我算了一下,地理系石碑上的数据、手机物理工坊、两步路的WGS84数据一致。与本文此前给出的 手机物理工坊 处在不同的 tab 中。

以上,手机物理工坊、两步路的WGS84的数据一致。本文还引用了 经纬度换算的小数(十进制)和度秒换算,并引用了 小数位数与位置偏移精度的讨论。

pdf加绿背景-改进

此前写过一篇博客 一行命令把PDF改成绿底,https://zhuanlan.zhihu.com/p/31660926156。最近发现还有个瑕疵,生成的PDF有白边。在暗夜里看的时候,即使有台灯作为背景光,这道白边还是相当刺眼。

改进如下。总体思路是 此前用word中画矩形生成绿色底色。修改为 用画笔,即 mspaint。大小与PDF的大小完全相同。

首先,查看PDF的宽和高。在 firefox 中在这里。

在弹出的对话框里,如下图,找到 5.83x8.27英寸。

接下来,在画笔中修改“属性”。

改为5.83x8.27英寸。

最后,把画笔中的这张图改为 绿色背景,颜色可以用吸管之类的从喜欢的地方取得。保存为 png格式,再转换为pdf。

修改的部分就这些,其余的操作与上一篇相同,就是那一行代码。

pdftk input.pdf backgroundbg.pdf output output.pdf

这样,白边就没了,整个底色完美地改为绿色。

此外,钟老师提到,图片的PDF没法改底色。

我也没有想到好办法。技术路线还是有的,识别出连续大面积白底,然后改为绿色。如果图示内部的白色也转成绿色,那么连续大面积这个指标也不需要。还要考虑去锯齿带来的影响。想想就麻烦,不如去找个质量高的文字版本的PDF了。

录公交车报站声的少年

公交车上,"前方到站……",后面是个我不熟悉的地名,一个小伙子捏尖嗓子在学报站。四个中学生人手一部手机,他们正在录公交车报站的声音。听交流,什么尾部或者尾画,126路的什么什么特性,如何剪辑发布,是个非常专门的领域,术语专门到我即使刚刚听完也没能力复述出来。把手机尾巴朝前,怼到旁边的耳边上给他听。挠出一段,给小伙伴看,指指点点,哎呀哎呀感叹。

在这个城市里,这四位同学他们一定坐过很多公交,才可能积累这么多素材,形成这么多术语和指标。对城市的大动脉,他们有和他人完全不同的视角,贴近观察过的精细经验。

我想起同事的孩子曾经坐很多公交车,从始发着坐到终点站,再坐回来。还画,细节极其丰富。有位老学生画过非常多的螃蟹,他曾经立志成为中国画螃蟹最多的人。小时候喜欢吃芸豆的豆,爸妈剥出来用线串上在房檐下晾干存储。我吃过很多,对芸豆豆的纹理和形状,哪里有斑点,咬住皮儿从豆上剥离下来的口感非常熟悉。

就是这些构成了世界。

正想到这里,一个小学年龄的孩子上车坐在我旁边。孩子的后面跟着一位老奶奶,我轻轻捅了下她的胳膊肘,边起身边拍拍我的座位。她说"谢谢"的时候,我已经挪远在几米开外说"不客气"。

我回头看四个小伙子,有人在播放以前的成果,有人正沉浸在虚拟和现实的报站声音里,保持着侧耳倾听的姿势,不知道在专注着哪个细节。

不断改进

写博客如同看电影,过程都是遇到困难、找到方案、解决问题,最后写篇博客分享快乐,“从比以后公主和王子就过上了幸福的生活”。事实上,有时比这还要好。读了博客以后,会有师长朋友指出更好的方案,“那么那么整更好”,“你解决不了的那个小问题,其实这么一整就行”。我经常试试,有时经年累月再写一篇博客。今天这篇,就是几个后来的改进。

0. 修煤气灶

当初修煤气灶坏了,接了根线,一切恢复现象正常。甚是得意,写博客炫耀。立马跳出来好几位,告诉我有危险。吓得我赶紧修改博客,说明危险,免得误导别人;下单了阻燃线,又一次修好以后再发博客。

这是更新最快的一次,剩下的就没有这么及时了,有的拖了几年才改进,到这篇博客又过了几年。

1. 修跳跳灯 互锁

跳跳灯弹簧勒在柱子上,限位器的塑料疲劳或氧化变性断裂,弹簧容易脱落。以前写过这篇https://zhuanlan.zhihu.com/p/669324968,先用圆珠笔芯,后来用蝴蝶螺帽,作为限位器。

Zack老师在朋友圈和私聊分别告诉我,这样还不够完美。应该在蝴蝶螺帽的外面再加一个普通的螺帽,普通螺帽和蝴蝶螺帽拧紧以后会 互锁,这样就更稳定了,用上个十来年不成问题。

我手头没有螺帽,担心网购买到的不匹配,犹豫了一段时间,就这么对付着用。后来读机械入门的书,突然想到,螺帽的规格仅有限的几种,尺寸不是连续的,相邻两种的差别足够大,所以我的测量误差不成问题。下单,三四颗螺丝和一堆螺丝的价格没啥差别,就买了一小包。用掉了其中的几颗,普通螺帽和蝴蝶螺帽互锁,果然稳固。

剩下的螺帽能干点啥呢?用来打弹弓挺好,不过太危险了。焊接成摆件,先做个电焊机,护目镜哪里来?先搁置吧。

感谢 Zack 老师教诲。

2. 用键盘操作浏览器 提示文字不遮挡、开新tab

我用 Vimium有一段时间了,写过这篇博客 https://zhuanlan.zhihu.com/p/583683300。后来希望打开每个链接的时候开新的标签页TAB,不希望打断我当前的注意力,不要立即跳转。事实上,不仅读网页,我看朋友圈和公众号的时候,内容也很少立即读,而是加到滴答清单里,有时间再读。等到我有时间,贴子可能已经消失了。也罢,假设它不重要吧,不读地球照样转。

改了这段配置 Custom key mappings。

unmap f

unmap F

map f LinkHints.activateModeToOpenInNewTab

后来又加了一些按键,左手与游戏CS相同的键位操作上下翻页,以及退回上一页。

map s scrollDown

map w scrollUp

map z goBack

又发现,按f以后链接上的提示文字会遮挡链接,容易看不清要跳到到的链接。效果是这样的。

C:\Users\young\Documents\WeChat Files\wxid_mkn03idldug522\FileStorage\Temp\ef129b1745f17ad76ed0bc96cdb3f38.jpg

拖了一段时间,终于下定决定改了,效果如下。红色的是提示文字,输出以后跳转对应的链接。提示文字下的链接没被遮挡,仍然可以看到。

修改方法是这样的,改CSS for Vimium UI。

div > .vimiumHintMarker {

/* linkhint boxes */

background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,rgb(255 247 133/ 10%)),

color-stop(100%,rgb( 255 197 66/10%)));

border: 1px solid #E3BE23;

}

div > .vimiumHintMarker span {

/* linkhint text */

/*color: black;*/

color: red;

/*font-weight: bold;*/

font-weight: normal;

font-size: 12px;

}

div > .vimiumHintMarker > .matchingCharacter {

}

3. 随机播放音乐 隐藏窗口

之前写过这一篇 https://zhuanlan.zhihu.com/p/666430615,更早还写过一行代码随时播放音乐的。都有个缺点,会弹出一个窗口,会干扰我当前的工作,虽然只有一瞬间,得手动切到后台。

这么解决,运行如下脚本,随机播放当前目录下的音乐。

IFS=$'\n'

for i in `ls | shuf`

do

echo "$i"

ffplay "$i" -hide_banner -loglevel error -autoexit &

pid=$!

sleep 1

c:/tools/AHK/AutoHotkeyU64.exe hide.ahk

wait $pid

done

其中的 hide.ahk 是 ahk 脚本,小工具,内容如下,作用是把 ffplay 切到后台。

WinHide ahk_exe ffplay.exe

有时候还想把 ffplay 呼到前台,切换歌典或者暂停什么的,用下面这个脚本 unhide.ahk。

WinShow ahk_exe ffplay.exe

仍然有个缺点。在ffplay窗口隐藏了之后,只是看不到,键盘操作比如上下左右,焦点仍然在 ffplay 中,所以会跳到音乐的某个时间点。需要手动 ctrl+tab 切换一下,到当前正在工作的窗口。暂时没找到办法,感觉可以忍。

为了解决这个问题,还试过 gplay.exe 等工具。不错,但是没有解决我的问题。

还发现上一个版本的脚本遇mp3文件名中有空格时会出错,已经解决了,就是上述代码中$i外面的那对引号。

4. 滴答清单任务顺延 用tampermonker脚本

这个单独写了一篇博客,即 https://younggift.net/9666。更早的方法 https://zhuanlan.zhihu.com/p/681570615。

新的方法不再独占鼠标和键盘焦点,并且可以把浏览器切到后台,不影响当前工作。

在上一个版本的使用过程中,还发现一个 bug。AHK操作界面是的图像匹配是精确的。如果控件上有文字,windows加了抗居齿以后,有相当高的概率匹配不上。我一度以为加上某个参数是增加模糊对比功能。并不是,后来细读手册才发现记忆有误,那是某个区域透明。虽然有时候也能达到我想要的效果,因为把文字区域视为透明抠掉了,但并非我以为的模糊或粗略对比。这一bug在使用tampermonker脚本后一并解决了。

5. everything在离线的移动硬盘中查找文件 不必手动更新

以前写过一篇 https://zhuanlan.zhihu.com/p/28835500,移动硬盘即使离线也能检索。发贴以后,有不少牛人给出替代方案,tree啦,totalcommander做dir啦。所有这些方案,包括我写的这个,都有一个共同缺点,就是手动操作的过程必不可少。移动硬盘有变化就要手动操作更新 everything的文件、tree或者dir,这可太麻烦了。我只有在大量更新以后才做,慢慢就变成了不做更新。

最近发现了更方便的方法,只要把移动硬盘插上,everything会自动更新数据库,完全不必手动操作建立efu,不需手动更新。

在这个位置

Everything | options | Indexes | NTFS | Local NTFS volumes | Descartes (C:\mnt\Descartes)

做如下选择

Include in database, checked

Monitor changes, checked

其中 Descartes 是我的一块移动硬盘,mount 在 C:\mnt\Descartes 这个空目录挂载点上。用mount不用盘符的好处,是每次插上移动硬盘,文件的目录都是固定的。

做上述选择后,每次把移动硬盘插上,everything自动更新数据库,在左下角显示状态,扫描、索引、排序文件名,时间很短。完全不必手动操作建立efu,不需手动更新。移动硬盘离线以后,仍能搜索。

如下图中前2行所示,Descartes这块移动硬盘没有插在机器上,也在搜索的结果里;后2行是本地硬盘上的文件。

写这篇的时候还发现了一些替代方案,在 everything 里导出之类的,都没有我上面提到这个方便。

用 tampermonkey 脚本实现滴答清单任务顺延

以前我用 AHK 实现过滴答清单的任务顺延,在这里 https://zhuanlan.zhihu.com/p/681570615。这个方案的缺点是需要保持滴清单在前台,同时我不能操作鼠标和键盘干扰 AHK 脚本运行。有一天突然想到,滴答清单有 web 版本,那么利用  tampermonkey 脚本 应该能达到相同效果。

愿景,要达到的效果是 每天的超期任务,顺延到今天。

需求分析,需要执行一系列的动作。包括点击某个控件,在新弹出的某些控制上再点击,诸如此类。

技术原型,需要能 找到特定控件、点击特定控件。此外,还要有入口。我尝试了裁入即触发脚本,失败了。时间久远,我已经想不起来到底是脚本没运行,还是脚本运行找不到控件。总之,我改成了在界面上加了个大按钮,每次手动点击这个按钮触发脚本运行。

动作顺列如下。

第1步 入口

第2步 把分组切换到按 时间,这样会出现 顺延 按钮。

第3步 把分组切换回按 清单。

定位控件的方法是根据 css 的 class 或者 xpath。写代码时,我打开 w3school | css 页面,当作忘记语法时的速查表。

实现过程 略,参见文末的代码。

这个方法和 AHK脚本 相比,优点是可以不必把滴答清单置于前台,甚至把滴答清单的页面或浏览器最小化也没有影响;不独占鼠标和键盘,因为代码调用 click 函数,而不是发送鼠标和键盘事件。

跑了两三个月以后,有一天突然不好使了。用手动完成了两三天,找时间看了一遍动作过程,有按钮不点击了。F12看源代码,发现滴答清单的 web 升级过。这时 AI 已经相当成熟,所以把那段 html 截下来问了豆包,请她给出代码。把这段代码插入到我原有的脚本里,一切又顺畅了。

表面上看,这是一段方便工作的脚本。实质上,在技术路线选择和技术手段上,这属于 软件工程的 自动化测试。有同学告诉我,这个现在叫作 RPA (rpa robotic process automation)。虽然核心的业务逻辑非常简单,但是仍然要花些时间,主要的精力消耗在如何定位控件上。遥想当年 Unix 系统通过 重定向和管道机制,仅解析文本,就能够方便地做各种自动化的工作。后来出现了人类用起来方便的 GUI 界面,机器的自动化变得比以前麻烦很多,最主要的原因就是找控件麻烦而琐碎。也许以后 AI 高度发展,自动化的动作又可以非常普及了吧。

此文也发布在以下站点。
----
知乎 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 – 因为从我的机器不可达,无法更新

附 代码

// ==UserScript==

// @name 滴答清单 顺延

// @namespace http://tampermonkey.net/

// @version 2025-01-18

// @description try to take over the world!

// @author Young

// @match https://dida365.com/webapp/

// @icon https://cncdn.dida365.com/static/img/favicon.ico

// @grant none

// ==/UserScript==

$('body').append('<font color=red><input type="button" value="顺延" id="CP" border=1></input></font>')

$("#CP").css("position", "fixed").css("top", 200).css("left", 150).css("color","white").css("background-color","#04AA6D").css("padding","15px 32px");

$('#CP').click(function(){

gogogo();

});

(function() {

'use strict';

// alert("here.");

}

)();

function sleep1(time) {

time*=1000

return new Promise(resolve => {

setTimeout(() => {

resolve();

}, time);

});

}

async function gogogo()

{

// 今天

$("p:contains('今天')")[0].click();

await sleep1(2);

// 上下箭头

$("#group-order-option").click();

await sleep1(2);

// 分组

$("div[data-key='groupBy']").click();

await sleep1(2);

// 时间

//$("div[data-key='dueDate']").click();

// 20250321 问了豆包

$('li[data-menu-id*="dueDate"]').eq(0).click();

// 上下箭头,收起菜单

// $("#group-order-option").click();

$('div[id="group-order-option"]').click();

await sleep1(2);

// 折叠 "今天" 如果是展开的

if($("span > svg.-rotate-90").length==0 && $("h6:contains('今天')").length!=0)

$("h6:contains('今天')")[0].click();

await sleep1(2);

// 顺延 如果顺延不存在,不会有影响

$("div:contains('顺延')[tabindex='0']").click();

await sleep1(2);

// 确认"顺延"

$("button:contains('顺延')").click();

await sleep1(2);

// 上下箭头

$("#group-order-option").click();

await sleep1(2);

// 分组

$("div[data-key='groupBy']").click();

await sleep1(2);

// 清单

//$("div[data-key='project']").click();

// 20250321 问了豆包

$('li[data-menu-id*="project"]').eq(0).click();

await sleep1(4);

// 上下箭头

//$("#group-order-option").click();

$('div[id="group-order-option"]').click();

await sleep1(2);

alert("顺延完成。");

}

计时器产品对比和操作分析

本文对比计时器产品的功能、实现方法,以及给出一种带旋钮、按钮、转盘显时的复杂计时器的操作的状态机。

1. 功能

计时工具的功能有如下几种。

(1) 钟表,显示当时时间,年月日、时分秒,可能涉及时区,称 time clock。

(2) 倒计时,设置分钟数,经过这些分钟后响铃提醒,如倒计时25分钟,称 timer;

(3) 正计时,通常以秒为单位给出时间间隔,称 stop watch;

(4) 闹钟,设置某个时刻,如8:00,每天在这个时刻响铃提醒,称 alarm。

在番茄时间管理中,倒计时这一功能使用最多。所谓计时器,一般指倒计时,即timer。

2. 操作方法

操作包括 设置时长、开始计时、暂停计时、停止计时。

设置倒计时时长的方法,有如下几种。

(1) 按键

原始的电子表使用这种方法。通过某按键切换 mode/模式,再通过某按键开始倒计时。

有状态的,需要使用状态机。后文会给出一个复杂实例。

还有可以通过手机APP设置的,也列入这里。

(2) 2位数字组合

如图所示, 2个数字可以分别设置, 1 2 3 5 10 15 20 25 30 55 共10种组合。

(3) 重力感应

考虑到常用分钟的数较少,所以可以利用不同侧面朝上作为分钟数的指标。

A.棱柱形状。侧面有 4面 (立方体) ,8面矩形,10面正三角形等。

B.正多面体的。

以下是示例。

正12面体。

立方体的。4种时间长度。有LED的面朝上暂停计时,空白面朝上停止计时。边长6.7cm,跟魔方大小差不多。比魔方还要大一些,魔方边长5.7cm。

8侧面的。

10侧面。

6侧面。

3. 进度展示

展示 倒计时已过去多久、还剩多久,这样的方法有如下几种。

(1)八段码 LED。面积小,翻转角度时易读性差。下图中绿箭头和绿方框内的是LED。方块边长约6cm,LED 为 1cm*2cm。

(2) 大一点的LED或者LCD

(3)占整个侧面的LCD屏

(4)闪灯,下图中箭头指向的的绿点。不展示百分比或分钟数,只显示工作中。也许可以通过闪灯的频率或颜色变化表示百分比,解读困难。绿灯和黄灯分别代表大于或小于1/2时间。

(5)机械转盘。有声音,倒计时24db,走时15db。需要上弦,设置时,正转到底55,完成上弦,再反转到需要的时间。

(6)虚拟(LCD或有色LED)转盘,在屏幕的固定位置

4. 提醒方式

闪光、振动、声音、声音大小可调。

5. 其他

(1)磁吸固定

(2)充电底座

(3)数字上有卡通图案

.

5. 价格

十元左右到三五百元。带LCD比带LED贵;电子的比机械的贵。

6. 操作分析

下面这种计时器,有时间显示和设置、闹钟设置、倒计时显示和设置等功能;可操作部件只有2个,包括橙色旋钮(可以旋转,还可以按)、齿轮按钮;显示器件包括红色转盘、8段码LED上下2行。

因为功能复杂,可操作部件少,所以操作是有状态的,需要用状态机描述规格。简而言之,(1)长按齿轮进入设置;(2)在设置状态下,短按齿轮,切换时、分、ON/OFF、24/12小时制。

操作复杂到 有视频教程

https://item.jd.com/100076166929.html?cu=true&utm_source=lianmeng__10__guangdiu.com&utm_medium=tuiguang&utm_campaign=t_1000193788_&utm_term=13e05343ebd84e3b93f71d2103c48271

状态机图如下。

此文也发布在以下站点。
----
知乎 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 – 因为从我的机器不可达,无法更新