天空 Blond https://skyblond.info/ zh-CN 愿知识带给你我勇气,用那温暖的光,驱散冰冷的黑夜。 Sun, 01 Mar 2026 16:52:00 +0800 Sun, 01 Mar 2026 16:52:00 +0800 【随便写写】78 & 2026春节摄影 https://skyblond.info/archives/1103.html https://skyblond.info/archives/1103.html Sun, 01 Mar 2026 16:52:00 +0800 天空Blond 突然想起来三月份的更新还没写,但好在春节的时候回家拍了拍照片。于是赶忙写一篇。

今年春节一如既往地回到了家,也一如既往地没能完成什么事情。今年也带相机回家了,但架不住冬天太冷,没有拍星星,只拍了拍鸟。

在家拍拍

因为顾虑室内外温差而导致水汽在镜头内部凝结并导致发霉,因此春节这几天并没有频繁地把相机拿出来。但尽管如此,还是在家拍到了一些鸟,只是因为黄昏时刻光照不足,所以大部分都是废片。

img

img

珠颈斑鸠在北京算是非常常见的鸟类了,而且和昆明的斑鸠不同,北京的斑鸠一点也不警觉,所以你可以看到我可以优哉游哉地近距离拍摄他们。

img

乌鸦当然也是常见鸟类。这张照片的灵感源自于前些年用手机+望远镜拍到的一张黄昏时逆光的小鸟。因为是逆光,所以背景的天空是棕黄色的,而小鸟则因为光线不足而呈现黑色,就像剪影一样。那天在家里正好看到远处的建筑上有几只乌鸦,因此就想复刻一下当时拍的照片。但是很遗憾的是我和乌鸦之间有很多树枝,他们造成了如图所见的虚影。但整体大约就是这个效果了。

北京植物园

第二天和朋友约了去北京植物园。因为根据我在昆明和香格里拉的经验,想要遇到丰富的鸟类就得去当地植物园。但是北京毕竟是北方城市,大冬天除了松树一类的之外,全都秃了。难怪先前一直不喜欢冬天——太单调了,太无聊了。这么一看我还是更喜欢昆明的冬天,想起来1月中旬有天下午,我在拿快递的路上路过一个绿化带,不禁感叹这个时间还能看到书上挂着绿叶。到了2月初的时候已经有粉色的花朵挂在树上了(我一直分不清桃花樱花和梅花,所以这里就叫它粉色花朵好了),五颜六色的冬天也十分让人喜爱。

言归正传,这次去植物园倒是多多少少也有些收获。

img

我记得之前在昆明拍到过这个鸟,是北红尾鸲的雌鸟。我就想这个鸟怎么分布这么广泛?到Bird Of The World上一查,原来人家是候鸟,并且有两个亚种:

  • Phoenicurus auroreus auroreus(指名亚种):繁殖区(夏季)在西伯利亚中南部(从贝加尔湖以西起),蒙古北部和东北部,向东至黑龙江流域和乌苏里江流域,向南至朝鲜半岛北部和中部,以及中国东北地区(向南延伸至河北和山东北部)。非繁殖区(冬季)在朝鲜半岛中部和南部,日本(本州中部以南),台湾,中国东南部(河南东南部和安徽以南),海南岛以及越南北部。
  • Phoenicurus auroreus leucopterus(西南亚种):繁殖区(夏季)在中国中部和西部(青海东部,甘肃西北部和陕西,向南至西藏东南部和云南北部)。非繁殖区(冬季)在喜马拉雅山脉东部,向东至泰国北部和中南半岛(印支半岛)北部。

所以同样是北红尾鸲,我在昆明看到的应该是西南亚种,而这次在北京看到的是指名亚种。这两个亚种的分布区域并不重叠,因此算是两个不同的群体。

大自然,真神奇啊。

img

黑尾蜡嘴雀,这是以前没见过的鸟。查阅Birds Of The World之后发现它的群体分布和刚才的北红尾鸲类似,同样有两个亚种。这个是Eophona migratoria migratoria亚种。而云南同样也有分布,是Eophona migratoria sowerbyi,可惜我还没见过云南这边的亚种。

img

这个是锡嘴雀。一开始我以为是黑尾蜡嘴雀的雌鸟,因为他们一起觅食,并且这只颜色比较淡,但后来查了AI才知道认错了。至于为什么锡嘴雀会和黑尾蜡嘴雀一起在地面上觅食,Gemini说这个叫“冬季混群(Mixed-species foraging flock)” 和 “生态位分化(Niche partitioning)”。

所谓冬季混群是说,在冬天,鸟类没有繁衍的任务,并且食物变得稀少,因此他们就不再争抢地盘。而混群则是鸟类的一种常用生存策略,比如城市中流浪的宠物鹦鹉可能会和麻雀一起行动。对于体形和食性都比较相近的鸟类,他们会共同行动,这样就能借助数量优势来提前发现猛禽,从而提高群体的生存率。同时出于食物稀少、难以寻找的压力,群体觅食可以提高找到食物的概率。

而生态位分化则可以减少他们互相冲突的情况。锡嘴雀的嘴部鸡肉非常发达,因此可以咬碎非常剪影的果核,这样一来即便和黑尾蜡嘴雀一同行动,黑尾蜡嘴雀也咬不开锡嘴雀的食物。

img

img

img

img

img

最后就是鸳鸯了。在植物园北园的水域里,鸳鸯和绿头鸭都有。

这么一说这还是我第一次拍到鸳鸯。虽然在传统文化中,鸳鸯一直是夫妻和美的代表,但其实鸳鸯的脾气一点也不好。我甚至还看到了绿头鸭抢了鸳鸯的食物而被鸳鸯驱逐的画面(很遗憾,没拍到),而鸳鸯的体形明显比绿头鸭要小。

结语

以上便是春节期间在北京的摄影成果了。冬天一冷就什么都不想做,不想做事情就天天躺在床上刷手机,刷到假期结束又在懊悔为什么自己虚度光阴。好在我已经回到了昆明。暖和的天气至少不会想要让人虚度光阴。那么这篇文章大概就是这样了,我们下一篇文章再见 :)

-全文完-

]]>
0 https://skyblond.info/archives/1103.html#comments https://skyblond.info/feed/
【代码札记】改进电码转换程序 https://skyblond.info/archives/1102.html https://skyblond.info/archives/1102.html Sun, 01 Feb 2026 08:19:00 +0800 天空Blond 早年间写过一个utf8-ctc,用来将文字转换成中文电码表示,当时还写了一篇文章来介绍它的基本原理。但当时有几个东西让我耿耿于怀:压缩、加密和校验。终于在机缘巧合之下,本文将记述如何改进这些问题。

前言

简单来说,utf8-ctc这个程序已经能够做到将任意输入文本转换成一系列中文电码,以便使用者可以将其方便地(相比于base58)抄写在依赖光学进行阅读的物理媒介上(例如明信片或信纸)。在遇到中文电码表之外的字符时,这个程序可以自动以utf8编码将其转换成字节数据,然后利用base9992表示。在这个过程中,程序还会尝试使用deflate压缩算法进行压缩,如果压缩后的结果更短,则使用压缩后的结果,进一步减少用户需要抄写的电码数目。同时在输出前,还加入了对称和非对称的密钥生成机制,以密钥作为CSPRNG的种子将结果分块进行置换加密(Transposition Cipher)。

但目前有三个问题:

  • Deflate压缩算法在长文本的情况下效率不佳,而对于中文中夹杂的外文短语,几乎大部分场景下未压缩的数据量都更小一些。
  • 加密算法实质上是置换加密,虽然程序中有估计拖延时间的设计,但本质上多次置换和一次置换没有本质区别。
  • 无法校验用户的输入,因此用户输入错误一位或几位数字,程序无法判断。最好情况是对应的字变成乱码,最坏情况是utb8字符解码失败,导致整块外文引用无法解析。

更换压缩算法

最开始由于Java标准库内置Deflate算法(zip同款),所以我当时毫不犹豫地就使用了这个算法。但随着后续测试发现,对于中文夹杂的外文短语或emoji,由于其数据量非常小,通常不到50字节,在这种情况下几乎任何常规的压缩算法都难以发挥作用。因此大部分时候我们需要用base9992表示原始数据。而当文本中出现成片的外文引用,例如引用了一整段外文,此时的数据量使使劲能达到大约1KB的量级,此时压缩算法能够略施拳脚。而考虑最坏情况,比如一个外国人输入了一段从头到尾都没有中文的文字,那这种情况对于压缩算法来说是最好不过的了。

我选取了三组数据进行测试,第一组是一段英文文字,第二组是一段日文文字,第三组是电影利兹与青鸟的台词。

DeflateLZMA2
174B115122
393B221228
29KB102189517

可以发现在文本量比较少的时候,选用LZMA2算法会导致我们比使用Deflate时多产生7个左右的字节,这对应大约4到5个电码。而对于长文本时,我们能够节省超过500个字节,大约对应300个电码。由于能够使用的符号有限,程序中只能选取一种压缩算法。经过一番思索,我认为能够在长文本上取得较好压缩效果更为重要,这样能够在处理长输入时尽可能减少用户需要抄写或处理的电码数量。

其实在选择LZMA2算法之前,我更中意的是zstd算法,可惜zstd并没有纯Java实现,因此它的依赖会对便携性产生影响。

由于符号有限,9992和9993分别表示未压缩的UTF8数据的开始和结束,而9994和9995表示压缩的UTF8数据的开始和结束,此外我便找不出其他可以挪用的成对的电码了。因此我不得不将Deflat替换成LZMA2,这也意味着如果有人用新程序解码了旧程序压缩的数据,由于压缩算法的变化,新的程序会直接报错,导致所有非中文段落无法解析。

更换加密算法

原本的置换加密就是图一乐。置换加密有点像是y=kx+b:你可以做很多次置换迭代,相当于多次洗牌,对应地,你可以在一元一次方程上迭代多次y=k( k( k ( kx + b) + b) + b )+b,但如果你化简这个式子,你会发现最终可以用一套新的参数替换这一系列迭代y=k' x + b'。这对于置换加密也是类似的:你可以多次洗牌,但本质上迭代N次和迭代1次并没有对攻击者造成实质性的困扰。由于明文本身没有变,只是打乱了顺序,因此攻击者可以根据统计学数据来做类似小学时候看词造句这样的攻击。虽然这种方法无法解析出抽象的句子,但你总不能从头到尾句句抽象吧。因此我们需要一种更安全的加密手段。

但由于我们的输入输出是电码,并不是传统意义上的二进制数据。如果我们将输入转换成utf8编码进行加密,那样又会破坏使用电码的本意。因此我将目光转到了ChaCha20,TLS1.3的核心标准之一。

ChaCha20本身是一个加密算法,它将明文与密钥流进行XOR运算来加密,其设计方案具有诸多特点,这里就不多赘述了。我们的问题是如何将电码这种非二进制数据利用ChaCha20进行压缩。

如果从数学的角度入手,二进制的XOR或许可以被加法和取模替代。假如我们有个密钥流,它的元素是0000到9999的数字,那么我们就可以这样加密:

enc = (input + key) % 10000

而解密时:

plain = (enc - key + 10000) % 1000

虽然没有xor那么简洁对称,但我认为也足够好了。同时由于ChaCha20使用XOR加密数据,那我们只要不停地加密字节0,0 XOR key = key,这样我们的输出就是二进制的密钥流了。通过拒绝采样,我们可以拒绝所有大于等于60000的值,剩下的值对10000取模,就可以根据ChaCha20得到我们需要的密钥流了。

采取拒绝采样的原因是我们需要保证0000到9999中每个元素的出现概率不会因为我们的操作而产生偏差。例如我们不使用拒绝采样,而是简单地将两个临近的字节解析为short数值,然后对10000取模,那么受制于short的0到65535的取值范围,我们可能会得到5536、15536、。。。、55536,但我们得不到65536;而对于1234来说,我们有1234、11234、。。。、61234。这样你会发现,对于1234来说,我们有六个可能的来源,而对于5536来说,我们只有五个可能的来源。这便是人为引入的偏差。

对于ChaCha20本身的参数而言,我们需要一个256bit的密钥,和一个96bit的nonce。受制于ChaCha20的原理,这个nonce必须不能重复,否则就会出现使用同一个密钥流加密文本的情况:

enc1 = (plain1 + key) % 10000
enc2 = (plain2 + key) % 10000
enc1 - enc2 = (plain1 - plain2) % 10000

可以看到当我们使用同一个密钥流两次加密不同信息的时候,对密文应用取模减法就可以抵消密钥流带来随机性(同样地,原版ChaCha20使用的XOR也有类似的缺陷)。虽然攻击者无法获得明文,但两次明文的差值也足够提供丰富的信息以便后续攻击。

这里我们也可以认为ChaCha20不是加密,而是提供了一个密码学安全的随机流。我们的数据安全就建立在攻击者无法猜到下一个密钥流是什么随机数值的事实上。合法的用户通过提供正确的密钥和参数可以重复可靠地产生这个确定但不可预测的流,而一旦攻击者能够通过某种手段消除我们引入的随机性,那么整个ChaCha20加密的安全性也就此被打破

因此我们需要保证nonce永远不会重复。然而时间是最大的敌人,只要时间足够长,总会有重复的可能。怎么办呢?把时间变成我们的朋友就好了:

  • 前64bit(8字节)使用当前时刻的毫秒精度的时间戳
  • 后32bit(4字节)使用SecureRandom生成的随机数

只要我们保证在同一毫秒内生成的随机数不会产生碰撞即可。但随机数碰撞(或不碰撞)是一个概率问题,最简单粗暴的方式就是保证每毫秒只进行一次加密。但考虑到系统的时间可能会漂移(例如人为调整时间,或者NTP同步),因此同一个毫秒可能会重复出现。

根据生日问题的原理,2的32次方大约有42亿种不同的可能(记作k),假如我们采样N次,那么N次不发生碰撞的可能性是:

$$ \frac{k!}{(k - N)! \times k^N} $$

感觉42亿的阶乘好像不太好算,那我们用其近似形式来计算一下碰撞的概率:

$$ P = 1 - e^\frac{-N^2}{2k} $$

这样我们就可以计算出不同的采样次数下,发生碰撞的可能性:

PN
0.000010%29
0.100000%2931
1.000000%9291
10.000000%30083
25.000000%49710
50.000000%77162
75.000000%109124
99.000000%198892

假设我们每毫秒采样2931次,那么发生碰撞的概率就是0.1%,根据数学期望,当发生时钟漂移导致同一时间戳重复出现长达1秒时,或1000次(每次一毫秒),即总共取样293万次时,可能会发生一次碰撞。不过我实在想象不到得是发生什么事才能导致这种状况。就算万一真的出现了这种状况,我想那应当不在我的程序的使用范围内。

引入每行校验

解决了加密的问题,下面就要考虑如何验证并提示用户有没有输入错误。常见的校验码,如CRC32,大多会生成4字节的数据用来校验,但四字节用hex表示就是8个字符,对于书面抄写而言,这是极大的负担。如果秉承着正文只要抄写数字的目标,那么ISO 7064 mod 97-10会是个不错的选择。因为它的主要用途是验算IBAN(国际银行账号)号码。

这下我也可以说我的程序会进行“金融级校验”了 XD

简单来说,它的计算公式如下:

mod(98 - mod(data * 100, 97), 97)

而计算结果只需要简单地拼接在输入的数字串末尾,然后一并进行如下校验:

mod(data_check,97) == 1

如果输入的数字串(包含2位末尾校验位)对97取模余1,就说明数据是正确的,否则数据就是错误的。因此当即将输出电码(加密或未加密)时,我们对电码进行分组,例如每行包含N个电码以便用户抄写,将这一行的电码视为一个数字,然后计算校验,在每行最后会产生两位校验位,用户将他们一并抄写在同一行。在读取时,我们在每行结束时将一行的输入进行校验,如果成功则剥去最后两位校验数字,余下当作电码按四位一组解析;如果失败则告诉用户打错了。这样就能有效避免输入错误导致的解码错误。

关于先加密后校验还是先校验后加密:我的程序采取了先加密后校验,这样对于解密时就是先校验数据,确保数据没有损坏或篡改,再输入解密算法。如果不做校验,或先解密后校验,那么你无法确保输入进解密算法的数据不包含恶意数据,例如针对你的解密算法而特制的攻击数据。这样早晚会出现安全问题。

对输出整体进行签名

虽然我们有每行校验,可以在一行结束时判断用户是否输入正确,但这无法确保用户不会抄串行,因为每行都是正确的,但行的顺序变了。考虑到我们的ChaCha20加密算法并不包含对数据完整性的校验,所以在加密时对数据进行签名显得尤为重要。

在众多HMAC算法中,SipHash能够给出较短的密码学安全摘要,长度为64bit,用hex表示则只需要抄写16个字符。但SipHash需要128bit的密钥,而程序里用的都是256位的。我们当然可以直接截断,将前128bit作为SpiHash密钥,但这样好像不够优雅,因此我使用了HKFD(Hash Key derivation function,这里使用SHA256)来生成一个专门给SipHash使用的密钥。

至于输入嘛,考虑到我们的输入是0000到9999的数字,我们可以将其作为short数值,按照大端序转换成字节,依次喂进SipHash。因此加密时的输出流程是:

电码 -> 加密 -> SipHash摘要 -> 按行校验

而解密时则是反过来的:

按行校验 -> SipHash验证 -> 解密 -> 电码还原成文字

效果展示

以如下明文为例:

天匠染青红,花腰呈袅娜。

使用对称加密(密钥为test-key):

# ./ctc encode -t "天匠染青红,花腰呈袅娜。" -w 4 -k test-key
Nonce = 0000 019B D1DD 117C ADE4 95E3
MAC = 7026 79EA E6BB 074B
4442  4214  2130  3200   35
1120  3419  2668  8328   70
6938  6776  9452  0880   03

其中-w 4表示每行打印4个电码,可以看到程序输出了nonce和mac,分别用于解密和验证消息完整性。而实际的电码输出有三行,每行后面都会有一个两位校验码。

解密时假如不提供密钥(使用-i选项忽略错误强行打印文字):

# ./ctc decode -i
>> 4442  4214  2130  3200   35
>> 1120  3419  2668  8328   70
>> 6938  6776  9452  0880   03 
>> EOF
秩瞀抹涞外泽□岬锅鄱□嘶

你会发现加密后的数据是完全无从下手的。而正确的解密则是这样:

# ./ctc decode -k test-key -n "0000 019B D1DD 117C ADE4 95E3" -m "7026 79EA E6BB 074B"
>> 4442  4214  2130  3200   35
>> 1120  3419  2668  8328   70
>> 6938  6776  9452  0880   03 
>> EOF
天匠染青红,花腰呈袅娜。

当某一行的数据输入错误时,即便没有提供密钥也能检测出来:

# ./ctc decode
>> 4442  4214  2131  3212   35
>> 1120  3419  2668  8328   70
>> 6938  6776  9452  0880   03 
>> EOF
Detect error line: 4442 4214 2131 3212 35

如果每行都对了,但是摘要不对的话,也是能检测出来的:

# `-m` 最后一位从B换成了C
# ./ctc decode -n "0000 019B D1DD 117C ADE4 95E3" -m "7026 79EA E6BB 074C" -k test-key
>> 4442  4214  2130  3200   35
>> 1120  3419  2668  8328   70
>> 6938  6776  9452  0880   03 
>> EOF
Exception in thread "main" java.lang.IllegalArgumentException: MAC mismatch
        at info.skyblond.ctc.commands.DecodeCommand.run(DecodeCommand.kt:49)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.parse(CoreCliktCommand.kt:107)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:78)
        at com.github.ajalt.clikt.core.CoreCliktCommandKt.main(CoreCliktCommand.kt:90)
        at info.skyblond.ctc.MainKt.main(Main.kt:6)

虽然报错的方式不太体面,但好歹是报了。

后记

本文修正了utf8-ctc中尚未解决的一些问题,至此我认为这个项目可以算作是完成了。这样一来我也可以光明正大地邀请大家前往 https://github.com/hurui200320/utf8-ctc 下载并体验。当然了,一如既往地,这是我一时性起编写的项目,因此不存在任何保证,也不会许诺大伙任何新增的功能。如果有什么想法可以尝试着开个issue,但我不会保证会有回应。

那么以上就是全文了,祝大家新春快乐。

-全文完-

]]>
0 https://skyblond.info/archives/1102.html#comments https://skyblond.info/feed/
【随便写写】77 & 欢度元旦 & 2025年终总结 https://skyblond.info/archives/1101.html https://skyblond.info/archives/1101.html Sun, 04 Jan 2026 23:37:00 +0800 天空Blond 原本一月份是有预订的更新的,但是想着既然都新的一年了,总该写点总结。可是从12月底一直到元旦假期结束,我老实想着,却从来没开始写。因为最大的问题是不知道写点啥。但是元旦假期都结束了,总不能再拖了吧。

流水帐总结

翻阅了一下以往的记录,2024年没写正经的年终总结,而是把2024年拍的照片发了出来。今年当然也没落下摄影这个爱好,虽然我平日里不爱出门,不喜欢旅游(除非不花钱而且够档次),但2025年还是增加了出门的频次,并且还特意去了一趟香格里拉。并且经过大约一年的摸索,也终于得到了一个稳定处理照片的工作流

除此之外今年也试图涉足了一下星空摄影,买了赤道仪,骑着自行车在夏夜拍星星,只不过因为设备不够昂贵,并且没有覆盖范围足够远的交通工具,所以没能拍到效果不错的星空。不过花钱租远程天文台倒是取得了不错的结果,就是太贵了,家境贫寒,告辞。

在游戏方面我今年也有进步,虽然switch真是一点没碰,但好歹和朋友联机玩了一阵Minecraft(还顺手水了一篇文章),年末又买了逃离鸭科夫,虽然我强烈质疑官方运营创意工坊的水平,并且强烈要求官方关闭创意工坊,让玩家自寻出路,但除了mod方面的问题,这个游戏还是好游戏,像我这种反应慢又菜的精神老年人也能乐在其中。得益于社区开发的联机mod,我和朋友也从中获取了不少的快乐。

在技术方面,由于上班导致我没有太多精力可以在尝试杂七杂八的事情上,但这一年还是尽力尝试了一些新事物,例如在Unraid上使用ZFS,尽管初始设置并不完美,但这个元旦假期我也做了一些调整,花了好多不必要的时间在上面。还有我为了遏止BT吸血客户端做了一些努力

至于Kindle越狱,一开始我确实是奔着折腾去的,但是最后发现kindle的性能实在是太差了,只能看书。但看书也有看书的好,今年看完了狼与辛香料小说的正传,看完了终将成为你的漫画版。平日里狼与辛香料能让我专注于工作之外的事情,是一种十分难得的放松。但工作上的压力大到我读不进去书的时候,终将成为你这个系列漫画给予了我走下去的力气。这就是百合漫画的力量吗,太棒了。

生活与工作

自从2024年中搬到昆明,截至2025年底已经住了一年多了。好多生活习惯也已经成为日常惯例,几乎不需要思考就可以完成每日的吃穿用住。但随之而来的就是生活变得无聊,而工作来带的压力无处消解。也正因如此,消费主义趁虚而入,大约我每个月都得花点钱买一些新奇的玩意解解闷儿。

今年的大额消费差不多就是尼康的180-600mm镜头,和在溥仪眼镜配的两幅眼镜。说起配眼镜,起因是因为原来的镜子镜框坏了,加上本身度数不准,我就想找个高档的眼镜店配个高点的。早年间在北京的时候去Alexa配过眼镜,一套下来7千多,我寻思这溥仪眼镜8千怎么还下不来呢?确实下来了,结果被导购一忽悠,又加了一副太阳镜。说是免费送一副4000元以下的镜框,结果哪知道我这慧眼识珠,一睁眼就拿了一副六千多的镜框。羊毛没抓到,自己还贴了2000多进去。

除此之外就是每月买的一些小玩意儿了,比如新的显示器,一套校色仪(屏幕+打印机),一个比较专业的家庭打印机(爱普生L8168),星野赤道仪,碳纤维三脚架,kindle paperwhite 6,卡式磁带播放器这些。当然,我也反思过我的消费习惯,每个月花钱太多不好,不过转念又一想,这些也不算是吃灰浪费。挣钱早晚都要花,早花早享受嘛。不然死了留下一堆钱,我又没儿没女,留给谁呢?

当然,花钱也不是生活的全部,除了上一节提到的各种科教文卫活动,我想起来这一年还和朋友一起看了一些影视作品。其中印象最深的还是芙莉莲和你的颜色。当时看完之后拿起手机就写了小作文,只不过碍于体量,只发在朋友圈了。我想既然都写了,还是应该和大伙分享一下。所以正好就在这里放上来吧。

首先是芙莉莲的观后感:

今天把Frieren动漫看完了,感觉做的真棒。不敢相信在京阿尼都能拉坨大的的时候还能看到这么好的动漫。(别问为什么打英文,问就是三星输入法打不出正确的词,不想挑字)

既然都是寿命论,那我看过的也就只有狼辛和小林家的龙女仆了。目前正在看狼辛的小说,因为已经完结了,再续的羊皮纸那就之后再说了。龙女仆的漫画之前也看了,不过单行本一年一本等不起。现在也打算去买Frieren的漫画。感谢台湾电子书商,使我钱包旋转。

我认为单从寿命论的角度来看,Frieren的氛围应该介于龙女仆和狼辛之间。龙女仆里提到过即便是托尔他爹也只能让小林活到自然死亡,但从漫画剧情来看,作者似乎并不太在意寿命的问题,故事的重点比较关注当下的冒险,非要说的话那就是享受当下的生活。而狼辛虽然结尾俩人过上了幸福生活,但就目前的进度来看,其实二人的旅途中总是蒙着随时要离别的悲伤,和二人心照不宣极力避免分别的异样。虽然这种场景能让二人经历的每一场冒险都显得尤为珍贵,但说实话,要不是我知道结局是好的,我真会越看越着急。

Frieren之所以介于二者之间,是因为其中有对勇者一行人过去的追忆,也有与年轻人的新的冒险。Frieren在勇者死后才尝到源于不了解却已经无从开始的悲伤,每次过回忆我都觉得勇者有点委屈。他为Frieren什么都想到了,可是他死后Frieren才想起他的好。不过这里面Frieren的性格设定也很方便,就是对情绪情感什么的很迟钝,所以就很方便地淡化了这种悲伤。而恰好在此契机之下,和年轻人的冒险也很有料,每次战斗都很新奇,虽然最后打泥人的时候已经能感觉出来原画已经不知道该怎样表现那些奇异魔法了,只能通过怪异的颜色充满画面来使观众眼花缭乱。但总体来说都挺有意思的。

不过我比较好奇的是这里面精灵的设定是不是参考了托尔金的设定,后面黄毛精灵说事情拖一千年也不会对精灵造成什么伤害。按照托尔金的设定,精灵的命运是和地球绑定在一起的,死后灵魂也不会消散,他们的命运是固定的。而Frieren的老师是人类,按托尔金的设定来讲就是人类的命运不受束缚,因此人类才有无限的可能。

挺好的,很喜欢。狼辛,龙女仆,Frieren,这仨可能是我现在最喜欢的作品了。之前肯定也喜欢过别的,但当下我最喜欢这三个。

这是山田尚子导演的「你的颜色」的观后感:

看了山田尚子导演的电影,你的颜色。

自从看过利兹与青鸟之后我就牢牢记住山田尚子这个名字了。那一部电影至今仍然是我最喜欢的电影之一,细节丰富,人物细腻,情感充沛。

你的颜色比起利兹与青鸟,脱离了他人的剧本,可以算是山田尚子自己的风格化故事。它比利兹与青鸟拥有更多山田尚子的特色在里面。一贯地,电影中有丰富和细腻的人物细节,表现手法依旧出众。例如电影开篇窦子得知纪美退学,没有一句台词,只是通过人物动作的定格以及随着转场将画面逐渐去掉色彩来表达。或许你可以用一句很高明的台词来表明窦子的情绪,但你顶多只能表达一种。依靠这种转场来表达情绪就可以很丰富了:可能有一些震惊在其中,也可能有一些失落,还可能是其他的什么。这一刻观众自己的解读也成为了电影的一部分。我认为这是自我看过利兹与青鸟以来,山田尚子善用的表现手法。

「圣神,那些无法改变的事物,请给予我接受它们之内心平静吧。那些能够改变的事物,请赐予我改变它们之勇气吧。而“不可改变”与“可以改变”之事物,请给予我区别它们之智慧吧。」——宁静祷文

从故事来说,利兹与青鸟在于描写二人关系的发展,而你的颜色则更注重与个人在别人投射来的期望与自己想要做的事情中取得和解。虽然最终三人组成了乐队并在文化祭中登台演出,但这部电影并非孤独摇滚那样的乐队番。实际上你可以把组乐队换成其他任何事情,只不过我猜组乐队应该是时下潮流,并且容易在电影中体现出来。毕竟无论如何电影总是需要原声配乐的。

电影中不同角色的叛逆程度各不相同。日吉子老师作为学校的老师,对她而言叛逆可能已经是过去式了,但在影片中仍然乐于帮助处于叛逆进行时的主角一行。窦子在主角三人中可能是不需要面对什么叛逆的,或者说她的叛逆更多来自于保护朋友。其次是路易,这大哥想组个乐队,但家人期望他学医来继承家业,最终大哥也是和自己家里人聊开了,在继续学业的同时兼顾乐队。而纪美大概是三人中最强烈的,面对家人与学校过高的期待时选择了逃跑。虽然最后和奶奶解开了心结,但影片中并没有给出明确的后日谈。我觉得一方面是不好交代,另一方面是回应「无论多少次,我们都可以重新选择开始」这句话吧。在影片结尾,所有人随着乐队的音乐舞动,所有人也都接受了无法改变的,同时也接受了新的变化。

「接受无法改变的,勇于改变可以被改变的。这些,就是我稍微明白的道理吧。」——日暮窦子

当然,这部电影并非乐队番,所以音乐不是重点。山田尚子细腻的表现手法同样展现在了音乐上。在影片结尾的演奏中,乐曲的旋律单调,填词尚可,表演中穿插着一些小小的不和谐。毕竟是三人第一次以乐队的形式演奏,但我认为正是这些细节才让故事不会显得过于架空和理想化。

从真实性的角度来说,我认为你的颜色也继承了利兹与青鸟中关于童话的叙述。山田尚子的目的不在于用这个故事影射或关联现实,而是构造了一个能够支撑主角们的场景,就和拍电影时那些刻意设计的场景一样。这样山田尚子才能将镜头聚焦在人物该如何面对自己的内心。正因如此,影片所讲述的故事才有了比童话更能治愈人心的可能性,我认为这是山田尚子表现手法的一个特点之一。不然你想,真要从生活来说这一定是科幻片:在学校闯了祸,你父母能在不骂你的情况下理解你并说出「原来是交到想让自己保护的朋友了呢,本来想狠狠说教你一顿的」这样的话吗?试想若是你中途退学,你的老师能邀请你回学校登台演出,理解你体贴他人,教导你「无论多少次都可以重新选择开始」,并鼓励你「你是以自己的时间从学校毕业的」吗?同样地,你能想象你的老师在你无法及时返回宿舍的时候告诉你「一定不要责怪自己」,然后给你出主意吗?我活了这么大,我想象不出来。不过就算在现实中,我觉得影片想要传达的意图还是可取的。

至于影片的故事性本身,好多人批评故事没有结构,和商业化叙事差得远。我倒是觉得无伤大雅。毕竟大多数人的人生都没有明确的结构,也不需要明确的结构。那何必还要苛责这个影片的叙事和音乐必须要有结构呢?

要说起对于生活中唯一不满意的,大概就是我的运动和饮食习惯了。虽然我竭尽所能降低了油脂的摄入,但每日工作和做饭是在时间与精力上都发生冲突的事情。我上班,就不能做饭,不能做饭就只能点外卖,而点了外卖,第二天一定会涨秤。可是自己做饭吧,又要牺牲工作时间,无形中放大了工作中的压力。并且随着工作内容的进行,任务不断增多,也不能像一开始那样一周有个一两天下午没事可以出去骑车。现在我将骑车的安排放到了周六下午,每次20公里的样子,因为我住的地方附近并不平坦,一次骑多了膝盖疼。所以按道理来说还是应该少量多次才对。但没办法,现在的生活是建立在当前工作的收入之上,因此保障工作就不得已成为了第一优先级,而身体,尤其是健康,则因为没有立刻遭到报应而被默默牺牲着。我终于也没能成为我理想中的人。


不过说起这个,这一年来我认为变化最大的就是我看待事情的方式变化了。去年我没有在年终总结中写什么太主观的东西,只是说生活正在稳中向好,我对此很满足,也很热爱;而前年由于没找到工作,压根儿我就没心情写年终总结,不过心情大约和大前年一样,多少显得有些死气沉沉的,或许夹杂了一些悲愤,但总体还是悲伤的。大前年我的跨年文章写的很悲观,以「这篇文章不会祝你新年快乐。」开头,以鼓励大家自己创造道路为结尾。

虽然看待事情的方式变化了,并非是说我现在不认同当时的我了。正相反,我认为得益于我对自己的信任与认可,无论再怎么改变,我都不会后悔曾经的我做出的决定。也正因如此,我仍记得当初的我是以何种心情写下那些文字的。时至今日我也觉得当时的我说的有道理,人必须自己创造他自己的道路,也正因如此,自由、责任与希望都存在于他本身,他不能再以借口推脱。

不过随着收入稳定,生活条件改善,尽管我仍然担忧之前提出过的问题,我也依旧认为当下的政府远不及我心目中的预期。但比起没有工作时的终日焦虑与担忧,工作像是一个飘渺空间中的锚,无论我的内心被什么样的情绪所左右,工作的收入以及来自老板的肯定总能为我带来一些自信,进而让我在生活中增添了些许底气,以便我能够面对这些潜在的问题而不退缩。也许未来这种感觉会演变成对问题的麻木,也许不会,这是未来的事情,我没有能力预知未来。但我希望我能够保持敏锐,不要变得麻木,并且在力所能及的范围内促进改变。或许这些话对于2022年的我来说根本不可能说出口,甚至都不可能这样想,但现如今在2025年之后,我这样想了,也这样相信着,因此便敲了这些话出来。

我知道我这叽里咕噜说了一大堆有的没的,像谜语人一样,始终没有说出来我看待事情的方式到底怎么变的,从哪变到哪。实话实说,我不是文学巨匠,我真没法用具体的文字说明白这种事。但我相信就和看电影一样,如果你也有类似的经历,读完上一段之后或许你会有一些感觉。

《狼与辛香料》和《终将成为你》

当然,老板的肯定不常有,而同事的捣乱天天在。因此过日子总有质疑自己几斤几两的时候。非常值得庆幸地,Kindle给我提供了远超手机的阅读体验,使得我终于可以安心地看书,而不必担心看着看着书就开始看b站了。

平日里看《狼与辛香料》最多,我是看了动漫之后就变得爱不释手,于是没等到新版动画就直接跑去买了电子书大看特看。我很敬佩作者能够写出这么跌宕起伏的剧情。我大约一周里能有五天,每天拿出大约半个小时来看书,通常是工作日,开始上班之前。在看过罗伦斯和赫萝将要面对什么挑战,或者看到他们想到了怎样的办法,我觉得心中变得充实了起来。我想这也能侧面提醒自己,工作并非生活的全部,做不到的事情就是做不到。

大约是11月下旬,忘了是因为什么事了,大概还是同事的问题吧,就觉得这个班上的没意思。狼与辛香料有点看不进去了,毕竟都是字,因为我买的台版书,所以还是繁体中文,就更难读了。后来想要不找点漫画,但是我确实不怎么看漫画,正好最近b站给我推了几个女同漫画的视频,就去搜了搜。奔着不完结不看的原则,买了终将成为你的全系列(漫画和小说),紧接着就大看特看。十分爱看,简直爱不释手,八本漫画我记得四天好像就全都看完了。我长眼睛就是为了女同漫画的。

其实原本打算借机写写读后感,但是想来想去没什么特别想说的。当时读狼辛的时候画了好多高亮,因为真的很喜欢作者写的内容。但是正传有16本,真的要一本一本说,感觉会很麻烦,而且会剧透。当时读这两部作品的时候我就觉得有些惋惜,因为这么好的作品,读一本少一本了。一旦你读过,再读的时候或许会有其他的收获或心得,但你绝不会再有第一次那样为读到这么跌宕起伏的故事而感到幸福、喜悦的心情了。

另外从情感线来看,狼辛和终将成为你都有很精彩的感情线。从赫萝遇上罗伦斯并一起启程寻找故乡,二人在旅途中逐渐构建感情关系,最终能够互相信任,并愿意在余下的时间里与对方共同度过。小糸佑与七海灯子从相遇,到灯子推着佑往前走,再到中途换成佑想要推灯子一把,再到两个人逐渐想明白二人的关系,我觉得这种故事性是非常精彩的。当然还有热爱学习的佐伯女士。我想过简单提要一下剧情,但最后我还是觉得真正好的东西应当留作惊喜让读者自己去发掘。

平日里我读书的时候都喜欢先做功课,看看剧情有没有雷点,结局怎么样之类的,然后再决定看不看。但对于这两部作品来说,我可以以推荐的目的向大家打包票:他们的结局都很好,剧情也很精彩,感情线也很细腻。非常值得一看,是不可多得的优秀作品。

元旦假期

我一直觉得国内的假期分配的有些不够平均。自从十月份国庆之后,一直到元旦,两个多月的时间一个假期都没有,这让我对于上班这件事感到十分枯燥。因此我决定好好利用元旦假期。

12月31日游昆明植物园和黑龙潭

本打算赶在元旦前一天早早地去昆明植物园拍鸟,结果没想到有个中学来这里做校外活动。而且单纯从人流量来说,明明还没有到元旦,可是公园里的人却一点也不少。单纯从观鸟来看,还是西园北边的树林比较清净。

从观鸟的角度来看,我觉得植物园应该是绝佳的观鸟地点了。在植物园的时候也遇到了两个同好,毕竟脖子上挂着长焦,很容易就互相认出来了。

凤头雀嘴鹎

image

image

image

当时正在找别的鸟,结果那只鸟飞走了。正准备继续走,突然听到有鸟叫,于是变开始在附近的树上寻找。比较遗憾的是这只鸟所在的树在一个山坡上,我没办法方便地移动来调整角度。并且树比较高,所以只能呈现一个仰视的视角。不过这个鸟的发型倒是挺飒的,符合鹎类的一贯形象。

蓝额红尾鸲

image

image

image

image

image

这种鸟是在北门附近的裸子植物林里面拍到的。光线不够充足,导致我只能降低快门速度。幸好尼康的防抖足够厉害,在没有机身防抖、纯靠镜头防抖的情况下能够在大约1/320到1/640s的快门时间下捕捉到这些图片,除了运气好之外,我认为尼康的技术还是比较起作用的。

另外眼尖的读者可能看出来了,最后一张的鸟的颜色好像和前面几张不太一样。前面的都是雌鸟,最后一张是雄鸟。据说是因为鸟类在演化中变成了雄鸟鲜艳,所以可以吸引掠食者,通过牺牲自己的方式来保证雌鸟有机会将自己的后代养大。不过雌鸟雄鸟颜色差异大,对于我来说要准确识别还是有些难度。

黑头金翅雀

image

这只鸟是在快出植物园的树上拍到的。树比较高,树枝比较密,不过好在还是拍到了。我在植物园只看到了几只,但今天我的朋友去了南滇池湿地公园,看到树上有一群的黑头金翅雀在树上觅食,而且见人不跑,他用手机都拍到了很不错的照片,可以说是很幸运了。

红尾水鸲

image

image

image

image

宏伟水渠红尾水鸲,b站观鸟区的顶流之一,不必多介绍了吧。这是在黑龙潭拍到的。

白喉扇尾鹟

image

image

image

这个是在黑龙潭公园深处的山里拍到的。我正准备爬梯子,余光刚好看到有什么东西在树林中动,但奈何树林太密,别说拍了,看都看不清。恰好它飞到了旁边开阔视野中的一个树枝上。那当然是机不可失时不再来,我赶忙拍下了几张照片。

它的尾巴好长诶,几乎和身子一样长了。还是头一次看到这样漆黑的鸟。

1月1日2日东川两日自驾游

玩儿完植物园,第二天就是正式的元旦了。想着昆明城里哪的人都多,那不如去附近的地方看看吧。于是租了一辆大众探岳,准备去东川的山里玩玩。住宿嘛,还是选的城里,云上酒店的行政套房80平米只要不到800一晚,这也就是东川,放在上海想都不敢想。

第一天开车去看了红土地,说实在的,确实一般,没有网上的照片那么红。后来经过朋友的提醒我才想起来,呈贡这边的绿化带里用的就是红土啊,想看红土找个绿化带就完了,干嘛非得开山路好几十公里。

image

这是从我们下榻的酒店的窗户拍的。山景房,风景不错。这个是2号拍的,山上有雾,而1号我们入住时雾几乎没有,可以看清楚山的轮廓,而日落的时候夕阳把山照成金色,颇有日照金山的味道。只不过1号开了一天山路,完全没力气拿出相机拍照,算是一个遗憾了。

第二天我们计划的是去东川森林公园。去是去了,可是一路上坡,我们爬了十分钟,作为生活在城市里且不怎么运动的胖子,这个运动还是有些激烈了,于是我们一商量,原路返回开车吧。虽然进不了森林公园,但沿着山路上山看看也是好的。这一次的山路和昨天不同,山景真的非常好看:

image

虽然路比较凶险,到后面李子沟公路,路边都没有护栏,但谨慎驾驶,我认为这景色完全值得。

image

东川原本因为铜矿辉煌,而现在虽然前景有待商榷,但自然风光是真好。如果能够便捷交通,踏踏实实地开发,我相信旅游业的潜力是非常大的。

后记

嗯,2025年的年终总结大概就是这样了吧,其实大部分都是想到什么写什么。既然之前没有祝大家新年快乐,那今年也不祝了。但我希望大家都能够找到自己热爱的生活。纵然生活不会一帆风顺,我祝大家都能找到在自己面对艰难险阻时仍能支持前行的力量。无论它来自你热爱的小说还是漫画,亦或是影视作品,还是源自你身边真切而具体的人,都请务必依赖这宝贵的力量,尽情创造自己的道路。

-全文完-

]]>
0 https://skyblond.info/archives/1101.html#comments https://skyblond.info/feed/
【随便写写】76 & 11月拍的照片 https://skyblond.info/archives/1100.html https://skyblond.info/archives/1100.html Sat, 13 Dec 2025 22:52:00 +0800 天空Blond 其实本来早就想写这篇文章,但是因为11月底不幸感染了甲流,劲儿还挺大,给我干发烧了。所以一直拖到现在才开始写。这篇文章主要分享我11月在公园拍的一些照片。

前言

11月整体比较无趣,因为工作上比较心力交瘁,每天靠着百合漫画度日(终将成为你真的太好看了,我太喜欢了,感动到落泪)。而周末的两天只能说算是补偿精神,还没真正开始享受周末,它就结束了。想了许久上四修三的打算,最终也没能跟老板提。但月底的时候朋友路过我这里,那两个周末可真是太不一样了(要是第二个周末朋友没把甲流传染给我就更好了)。要不说呢,这日子怎么会跟谁过都一样呢?

纵观整个11月份,一共就出门了两次,两次去的还都是同一个公园:渔浦寒泉湿地公园。虽然不知道名字为什么这么叫,但是它地理位置偏僻,风景还算是不错,偶尔还能看到一些鸟,算是还不错的去处吧。

第一次

第一次是本着探路的性质去的,虽然带上了相机,但是没指望拍出些什么东西。不过话虽如此,还是拍到了一些不错的照片。

image

首先是在一个栈道上,我远远看到树上有鸟,虽然听到叫声就知道是老熟人(黄臀鹎)了,但是这次老熟人在吃树上揪来的果子,还是有点新奇的。

image

顺着栈道继续走,就能看到一池子莲花。我问了Gemini 3,它说这是睡莲。因为我实在是不怎么认识植物,所以它说是就是呗。上图是我用600mm当微距拍的。虽然很近,但是感觉细节上还是差了一点。尼康的刀法也不比老黄差啊。

image

image

这一张可能是我最喜欢的几张之一,我趴在栏杆上使用了一个相对低的角度拍摄,拍摄的时候就刻意让水下的倒影和水面上的花朵尽可能一致。而且这是整个池子里唯一一朵粉色的睡莲。等我们一周之后再去的时候,这朵花就已经谢了。

image

image

在发现水面倒影的好处之后,我又尝试拍了几张手段类似的照片。这一张是白色的睡莲,后期时我故意将水面倒影提亮了。我朋友建议将这张照片竖着裁出来(后面一张),但我个人认为还是横着的好看(前面一张)。我觉得放的太大了,会有一种傻大黑粗的感觉。不过我也拿不准到底哪个更好一些,所以就都放出来了,读到这里的朋友们可以在评论区留个言,说说看你觉得哪种裁切好看一些。

关于在LrC中同一张照片按照不同方式裁切,网络上似乎并没有一个同一的答案,至少我看到好多人在一个reddit帖子里说了各种不同的方案。我的方案是调色完成后,创建一个虚拟副本,这样一个按照横屏切,另一个按照竖屏切。

image

image

image

这几位也是老朋友了。分别是普通翠鸟,白鹡鸰和小白鹭。白鹡鸰和小白鹭似乎比较常见,我们第二次去的时候就没有看到翠鸟。

image

等等,你是?夜师傅?公园中间有一片湖,湖中间有个小屋。这一次看到一个疑似夜鹭的鸟在里面睡觉。第二次的时候我们看到黑天鹅在围栏外面睡觉。

以上就是我第一次去公园探路时所拍到的照片了。

第二次

第二次是和朋友一起去的。我一个人出行的时候,大部分情况都是我一个人走的飞快,像是在完成什么走路任务之类的东西。而两个人的话,走走停停,要比我一个人逛公园细致很多。所以这一次拍到的内容也更丰富一些。

image

image

image

image

一开始我还以为是大花蚊子(夜鹭幼鸟),但秉持着严谨的态度询问过懂鸟之后,才知道池鹭。

image

image

在栈道上寻找鸟的时候忽然看到一只鸟飞过来,落在了不远处的岸边。我赶快调整角度拍摄。拍完之后却发现:这谁啊?我咋一点都不认识啊?回家查了一下懂鸟,说是扇尾沙锥。喜加一。

image

拍完扇尾沙锥,我一个回身,走到了另一条栈道上。我一看,这又是谁啊?回家查了懂鸟,说是白腰草鹬。又是一个加新。

image

image

image

image

image

image

image

因为很小只,而且离得很远,相机的自动对焦根本不好用。而且这只鸟动起来非常快,颇有白鹡鸰的风范。回家查了一下,您猜怎么着,人家是黄头鹡鸰,确实跟白鹡鸰论亲戚。

image

来都来了,那就再拍个莲花吧,不过这朵有点老了。只胜在阳光的角度还行。

image

image

老朋友了,就不多介绍了。

image

image

近距离欣赏小䴙䴘。第一次去的时候也见到了,但是因为光线角度不对,照出来全是黑的。这次正好光线合适,就拍下来了。本来还想用高速连拍拍一下它入水捕食的动作,可惜我这机器缓存太小,而它的动作又难以预判,折腾了二十分钟也没拍下来。

虽然花了很多努力却得不到想要的结果是一件很令人沮丧的事情,但我仍然要强调诱拍是每一个鸟类爱好者都应该人人喊打、积极反对并积极制止的行为。出片当然是一件好事,但我拍鸟是因为我喜欢看各种各样的小鸟,如果出片是建立在伤害他们的基础上,那这个片也就没必要出了。

image

image

蒲公英,被树林间漏下的阳光照亮。同样因为不知道是横屏更好还是竖屏更好,所以就两者都尝试了。

后记

以上便是本月的更新了,看起来比较水,实际上也很水。值得一提的是,11月底我从法国订了一台很普通的磁带播放器(类似于早年间的磁带随身听)。我知道他们的音质当然不如卡座播放器好,但是现在想要找到高质量,还在产的磁带播放器可太难了。虽然可以收老家伙的二手,但我认为这样终究是不可持续。虽然磁带早就被时代抛弃了,但是看到人类曾经做到登峰造极的东西就此消失,还是多多少少有些难过。

扯远了,就这个磁带播放器而言,我当然是没什么艺术细菌去搞remix。不过我也尝试了往上录制一些音乐,除了蔡琴,效果都不错。不知道为什么,蔡琴的歌曲总是会有很明显的齿音,消不掉。而我购买磁带播放器最大的目的还是想试试看用自己的方法在磁带上存数据——我有一台二手的LTO6磁带机,我知道往磁带上存数据是一个很精密很高端的活儿,所以我也不打算和LTO6作比较。就是单纯地玩儿。不过这些就是以后的事情了。

以上,便是全部内容了,感谢各位的阅读。我们下次更新再见。

-全文完-

]]>
1 https://skyblond.info/archives/1100.html#comments https://skyblond.info/feed/
【歪门邪道】Kindle PaperWhite 6 越狱 https://skyblond.info/archives/1099.html https://skyblond.info/archives/1099.html Sat, 08 Nov 2025 17:53:00 +0800 天空Blond 最近在YouTube上看到了一个关于kindle越狱的视频,心里痒痒就去网上搜了一下kindle的价格。没想到当年对上学时候的我遥不可及的价格,如今已经变成了我唾手可得的东西。于是就买了,并不是因为爱看书,就是单纯想玩儿。

关于购买建议

由于之前我没用过任何e ink屏幕的产品,也没了解过电子书这个产品线,所以当时购买的时候不是很了解,并且抱着主要以越狱的目的购买了kindle。事后来看,kindle在这方面并没有给予我太多的回报,因为单纯从硬件上来说,我买的这一款kindle性能只够看书的,连浏览器都不能正常流畅使用。虽然我取得了系统的root权限,也成功地在上面运行了java,但性能实在是太糟糕了。

如果不考虑越狱这种玩儿的目的,单纯为了阅读,那么市面上有更好的选择:比如主打开放系统的PocketBook,以及可以无痛安装KOReader的Kobo(尽管我不喜欢这个外形)。如果大家不能接受花1600买个只能振奋你一个周末的玩具,那么请务必不要因为这篇文章的鼓动而去无脑下单kindle。如果你真的想要购买一个电子书,请务必根据自己的需求做好产品调研,寻找到真正适合自己需求的设备。毕竟挣钱不容易,现在经济不好看,花钱更要谨慎。

为什么Kindle也要越狱?

我最早知道越狱这个词还是因为早年间亲戚传给我一个好几手的iPhone4,那时候还是ios6到7的过度时段。越狱之后取得了系统的很多权限,装了很多插件,是非常有意思的一段经历。后来因为家境贫寒,用回了安卓,又踏入了root和刷机的领域。只不过安卓刷机刷来刷去,最终还是依赖于自己给自己售后——或许一个系统更新或者一个重启就再起不能了。现如今我用上了港版三星,再也不用为了Google全家桶刷机了。

至于Kindle,越狱也是出于同样的目的:取得更多对设备的控制权。抛开安卓系列,大部分kindle运行的是基于linux的定制操作系统,除了精简大部分组件以适配寒酸的硬件之外,最重要的是将用户锁在亚马逊的生态里面。

你想要阅读在亚马逊上购买的书?不好意思,你购买并不等于你拥有,一般情况下亚马逊会通过版权保护的手段来加密你下载的电子书,但最终还是亚马逊控制这些书,他们可以不经过你允许地撤销你对一本书的访问,或者修改一本书的封面来为他们的电视剧做广告(即便你购买了无广告版本)。而从阅读体验来说,越狱之后安装的KOReader作为原厂阅读器的替代品,可以说功能非常丰富。例如你可以从calibre利用无线设备连接,直接将你的电子书收藏发送到kindle上,也可以安装插件,比如在阅读过程中选中一段话,让ai解释,以及生成二维码(手机扫码后可以复制到手机上),或者直接绑定telegram bot来发送到telegram上。对于养成类玩法比较看中的读者还可以利用内置的阅读统计功能记录你哪天读了什么书,读了多久,一个月下来看着统计日历,满满的成就感。

当然,事后我还发现kindle这种独立的设备极大地提高了我阅读的意愿。原本我是在平板上看漫画,手机上看小说。但最近看小说的频率越来越低,我上一次在手机上看书已经是一个月之前了。为什么呢?手机那在手里就不自觉地往YouTube和b站跑,读到一半弹个通知指不定又干什么去了。总之就是我在手机上可以读书,而且真的读起来体验也不错。但问题就在于,我在手机上读不起来书。所以我想这也是一个单独的电子书所带来的好处吧——手机往旁边一扔,拿起电子书大读特读,管什么朋友发消息同事找我有事,统统看不见。我可以获得一个不受打扰的阅读时段。而且这种体验再配上一套好书,比如狼與辛香料,哇,那这简直是人间天堂,死而无憾了。

Kindle越狱导论

由于不同版本的固件需要使用的越狱方法不同,并且亚马逊对于未停止支持的设备还在积极更新系统,封堵越狱使用的漏洞,因此越狱的实操会不断更新,但本文不会随之更新(因而我懒),所以这里只简述越狱的大体流程,并给出寻找详细资料的指引。

开始动手越狱之前

如果你决定越狱,请务必熟读相关教程后再操作。为了避免你的kindle自动更新,请务必启动飞行模式,断开网络连接。并采取必要措施阻止更新(例如填满剩余空间,删除根目录下任何update开头的文件或文件夹)。

本文不是越狱教程。

截至目前(2025年11月8日),亚马逊已经发布了5.18.6版本的固件,在该版本中,最新的越狱方法已经被修复。一旦升级到这个版本将无法越狱,需要等待新的越狱方法(取决于发现的漏洞,可能需要几个月,也可能需要几年)。

在社区的Discord中可以得知,固件版本5.18.5.0.1就已经会对最新的AdBreak造成影响了。而固件5.18.6则是彻底封堵了AdBreak越狱。

由于我手上没有任何Kindle设备,因此在简单搜索了一下之后决定购买Kindle PaperWhite 6签名版,因为是32GB存储空间。但新购入的设备对于出厂固件充满了不确定性,我比较期待的是出厂固件在5.18.1以下(即最高版本5.17.0.4),这样就可以使用较为稳定的WinterBreak。目前有两个主流版本,对于5.18.1以前的固件,WinterBreak只需要你登录亚马逊帐号即可,原理大约是通过修改缓存文件,在启动亚马逊商店时执行自定义内容,从而获取系统权限。但5.18.1及以后的固件中修复了这个问题,需要改用AdBreak。正如其名,它需要依赖广告机制来触发,本质上是修改广告以及special offer的缓存来实现点击广告执行自定义内容,因此AdBreak的前置依赖于你的kindle必须能够接收广告。

无论哪种越狱方法,他们的目的都是通过高级权限修改文件系统,让原生kindle系统能够接纳我们的自定义密钥,这个密钥可以用于签名固件更新,而我们便可以通过自己创建固件更新文件、自己用自定义密钥签名的方式来向原生系统注入我们想要的修改,从而达到越狱的目的。WinterBreak和AdBreak的目的是向系统中注入密钥,而后面的hotfix则是利用这个密钥修改系统,在系统中刻意为我们用户留一个后门。而执行hotfix则是持久地修改系统,让它为我们保持这个后门的打开。所以后续即便更新了系统,只要安装的hotfix还在,我们就可以运行它来修改更新后的系统,再次打开这个后门。

越狱海外版Kindle PaperWhite 6

我在下单时赌了一把,我本以为由于库存的缘故,到手后的kindle会老一些,我还提前下载了kpw6的新固件,准备到手之后升级到5.17.0.4再越狱。结果到手一看,它已经是5.17.0.4了,实在是惊心动魄。考虑到这已经是亚马逊退出中国的好几个年头了,国内的货还能这么新,属实令我惊讶。

下面简单来说到手后从开箱到越狱的流程吧。

首先检查外观,确认没有问题,拆封、开机。开机后直接跳过WiFi设置,因为kindle一旦连上网络就会自动下载最新固件并安装,如果它自动更新到了最新版本,那么我们就没法顺利越狱了。因此跳过WiFi设置后我前往设置页面确认当前固件版本,并连上USB将kindle的存储空间占满,只留下20MB的剩余空间。通常Kindle下载一次更新要50到300MB,只要我们不给它留出足够的空间,它就没法自动更新。

确认好版本之后就可以配置WiFi激活亚马逊帐号了。因为无论哪种越狱方法,它都依赖亚马逊帐号。配置好WiFi、登录账号。登录完成后启动飞行模式,将Kindle断网,然后再次插入电脑检查根目录,此时根目录已经出现了update.bin.tmp.partial文件夹了,说明kindle已经在自动下载新固件了。删除之后弹出kindle,它自动重启进入更新了,但好在我早已填满了存储空间,更新失败。

最后按照教程下载WinterBreak需要的文件,并根据指示操作即可。大概流程是:

  1. 下载WinterBreak需要的文件,将其解压后覆盖进Kindle的根目录
  2. 根据教程触发越狱,看到成功提示后安装hotfix
  3. 安装成功后运行hotfix,持久地取得系统权限
  4. 安装KUAL和MRPI,这一步需要注意释放剩余空间。原本我只剩下20MB,多次安装都失败。后来删除了一些无用文件,留了差不多300MB的空间,这样才安装成功
  5. 安装插件禁用OTA更新,禁用OTA更新后即可关闭飞行模式,放心地让kindle连接wifi了
  6. 安装KOReader和其他一些实用工具

越狱国行Kindle PaperWhite 4

我在越狱成功后的下一个周末,将我朋友的PaperWhite 4也越狱了。他的设备是国行,序列号里面有一堆0。但好在固件版本够低,是5.16.6,我将它升级到了最新的5.17.0.3然后进行越狱。当我正准备进行WinterBreak越狱时,突然发现他的设备上没有购物车这个按钮。因为kindle业务早就退出中国了,国行的书店也都关了。在刷了新固件之后可以看到系统刚刚启动时是有购物车按钮的,但很快就消失了。因此我们判定亚马逊并没有使用定制硬件或者定制固件,而是一套固件根据帐号区域来行事。

经过一番思索,我决定在他的kindle上登录我的帐号,因为我的帐号是外区的。登录后果然购物车按钮重新出现,但点了之后并没有触发WinterBreak,我猜测应该是切换帐号导致固件清空了商店页面的缓存。于是重启kindle后重新用WinterBreak的文件覆盖进去,这样就成功触发了越狱。

越狱之后国行版本就没什么太大区别了,我如常安装KUAL和MRPI这些东西。但切换帐号时遇到了个问题:kindle切换帐号会清空document文件夹,这虽然不会删掉越狱的状态,也不会删掉KUAL和安装的插件,但KUAL和hotfix确实依赖document文件夹中的一些内容作为起动器。于是在切换帐号之前我备份了document文件夹,其中有两个疑似比较相关的文件:

  • KUAL.kual,就是一个0字节的文件
  • Run Hotfix.run_hotfix,内容是当前hotfix的版本号,我的是v2.3.2,就一行,没有空行结尾

备份妥当document文件夹之后,我便退出帐号,让朋友登录回他的国区帐号。系统重启之后果然什么都没了,在kindle系统内找不到任何关于hotfix或者KUAL的痕迹。于是我将document文件夹还原,系统重新索引后,KUAL和hotfix的图标就重新出现了。

越狱参考资料

如前文所述原因,本文并不提供任何越狱的具体指导,但本节将列举越狱过程中我用到的参考资料。

首先是本文的开端:

我一开始看了第一个视频,心里有点痒痒,但是没买。后来看了第二个,觉得如果想玩儿就得马上行动了。于是当天晚上就下单了kpw6。

随后是一些更细节的资料:

我推荐的实用工具

本节将介绍我安装在kindle上的一些实用工具。

Scriptlet

Scriptlet是hotfix中附带的一个功能,能够将位于document文件夹中的sh脚本展示在kindle的界面中,并且能够点击运行。

KUAL扩展

KUAL是Kindle Unified Application Launcher的缩写,它提供了一个统一的kindle应用启动器,用来启动我们自行安装的扩展。除了KOReader之外,我还额外安装了两个扩展:

  • kterm

    • 这是一个终端模拟器,运行起来就有一个虚拟键盘,你就可以在终端中运行命令了。
  • usbnetlite

    • 这是一个提供ssh访问的扩展。虽然它的ssh终端兼容性不佳,例如缺少环境变量,无法提供正确的terminfo,导致诸如top这类命令无法启动。但对于执行复杂命令来说,能够在电脑上远程敲命令,怎么不比kterm在e ink上的模拟屏幕强多了。

KOReader插件

KOReader最初的使命就是打造一个Kindle/Kobo Open Reader,这也是它名字的由来。它本身就内置了好多插件,并且还提供一个灵活的插件系统以及用户补丁系统(允许用户无需重新编译软件即可修改软件的行为),但本节将介绍我额外安装的插件:

  • Telegram Highlights

    • 即便KOReader本身能将选中的文字生成二维码,但操作起来还是比较复杂。这个插件能够将选中的文字以及截图发送到你绑定的Telegram Bot上。
    • 不过这个插件并不是直接和telegram通信,而是需要经过一个中转服务器。插件将数据发送到这个中转服务器上,然后中转服务器再通过telegram服务器发给你。这就意味着你通过这个插件发送的一切都会被运营中转服务器的第三方知晓。不过这个中转服务器是开源的,你可以自己搭建。
  • Assistant

    • AI助理,我用的Gemini 2.5 flash,因为pro太贵了,用不起。这个插件本身内置了一些提示词,比如翻译、解释、词典之类的。你可以自定义提示词,但我现在也想不到什么独特的提示词。我认为这其中最有用的就是词典和解释了,你能够选定一些词来问AI这是什么意思,在词典模式的话,它还可以根据上下文来详细解读。非常好使,不过缺点是需要挂代理。

后记

以上便是我给Kindle越狱的经历了。很幸运地赶上了非常方便越狱的固件版本,但受制于硬件,虽然后来我成功地跑起来了Java 11(再新的版本就因为过时的glibc版本而无法运行了),但基本上也做不了太复杂的东西。就算是TUI,由于e ink屏幕只能显示黑白或灰度的像素,因此能使用的库也十分受限。这个Kindle在我手中已经两周有余,但和最初买它的目的不同,没能发挥它在读书之外的功效,但令我很意外地,它促使我每天开始读书了。最近刚刚读完狼与辛香料的第九本,太精彩了。读书真好。

-全文完-

]]>
2 https://skyblond.info/archives/1099.html#comments https://skyblond.info/feed/
【随便写写】75 & 国庆香格里拉游记 https://skyblond.info/archives/1098.html https://skyblond.info/archives/1098.html Mon, 13 Oct 2025 00:54:00 +0800 天空Blond 国庆假期和朋友一起去香格里拉玩儿了,因为之前一直都在昆明市区里面转,已经转腻歪了。加上我们在六月份都购入了长焦镜头,就想着出去找地方拍拍鸟,因此就决定前往香格里拉。本文记述此次旅途。

行程规划

鉴于我们两个都不太喜欢规划行程,因此还是我主导了规划的事情。这次观鸟主要参考了7天•香格里拉冬季观鸟- 行程路线 - 山鸟社这篇计划。原本是打算复制一个的,但是鉴于国庆期间滇金丝猴国家公园专家别苑的住宿太贵了,而且行程太紧,再加之我们二人对看猴没什么兴趣,反而还怕猴儿给我新配的眼镜抢走,最终我们决定放弃这段行程。

原本计划是和山鸟社的行程一样,想着住在景区里面方便看鸟。但是我看到一些测评说住在专家别苑并不能让游客开车自己转,还是要做摆渡车。这样一来就失去了好多自由度,后续在普达措也印证了这一点,如果区域之间必须要乘坐景区提供的摆渡车才能到达,那游玩体验就会大打折扣。

取消的另一个原因是住在景区里就意味着完全封闭,当然你可以出来买东西再买票进去,但我的钱不是大风刮来的,该省还是得省。

从结果来看,这次取消虽然减少了行程的内容,但时机却很恰当。

于是我们的行程就变成了:

  • 9月30日下午乘火车从昆明前往香格里拉
  • 10月1日去取租的车,四处转转熟悉一下前往各个景区的路线
  • 10月2日前往普达措国家公园
  • 10月3日前往高山植物园和纳帕海
  • 10月4日和5日待定

    • 原本是3日高山植物园,4日纳帕海,5日留作机动。结果后来得知高山植物园和纳帕海在一个地方
    • 3号在酒店查香格里拉附近还有哪可以去,看小红书说有个月亮湖,我们就去了

9月30日火车前往香格里拉

9月30日下午我们乘坐C642次列车从昆明出发。买票的时候本来想买10月1日的,结果我因为不常坐火车,不知道火车票有多火热,打开12306一看,我草,一张票都没了。于是不得已买了9月30日下午的。本着尽最大努力避开熊孩子的想法,我们往返买的都是商务座,有点贵,一个人单程800块左右,但坐下来体验非常不错,类似A350-900的反鱼骨布局,但只反了一半:在飞机上左右两侧都是朝向窗户的,左边朝左,右边朝右。而到了火车上,左边确实朝左对着窗户,可是到了右边还是朝左的,这样就只能对着走廊了。我认为这是高铁想要学飞机两仓的布局,但又处于成本,直接左右两侧复用同一款座椅模具。

唯一美中不足的就是C字头,也就是云南省内的城际列车降本增效了,商务座不管饭了。火车上一路全是隧道,手机扫码根本没法订餐。最后我们一路走到餐车,我掏出在钱包里躺了好久的100元纸钞,正好买了两份饭两罐芬达。我就说数字支付不行吧。

由于9月30日大家还都在上最后一天班,因此商务舱人不多,直到下火车之前都非常舒服。我们的火车是晚上10点半到达的香格里拉。从昆明出发时我还穿着短裤短袖,可是到了香格里拉我一看列车员连羽绒服都穿上了,我就觉得不妙。下到站台品了品——果然好冷。

出站后我们直奔网约车上车点,驱车前往希尔顿。为什么住希尔顿呢?因为它便宜,而且还有位置。景区边上的住宿平均一千多一晚上,而希尔顿只要500多。什么?你问为什么不住全季?因为我手慢了,全季已经满了。

10月1日开车四处溜达

在香格里拉的几天里,我们在一嗨上面租了个车。原本想租大众帕萨特的,结果手慢了,全都租完了,于是被迫选择了日产新天籁。这款车够宽够长,唯独不够高,每次我进出驾驶位都要碰到头(当然,也可能是我驾驶座调的不对)。

我们从10月1日上午10点开始租,一直到6号下午6点,保险全都拉满,加上还车无忧和油费,总共是花了2471.28元。在油费方面,因为我们选了无忧还车,因此不满油还车可以免受加油手续费,只需要按照当日油价补差价即可。油费79.28元,当日香格里拉加油站的92汽油价格为7.55元每升,差不多10.5升油,我们这几天一共开了325公里。全程开了ECO模式(其实拿到车就是开着的,懒得关了,除了踩油门反应肉,其他的没啥毛病),百公里油耗3.23升。

这对吗?这不对吧。整车1460kg,加上我们两个人300kg,在加上大约20kg的随身行李,总共1780kg的物体,在平均海拔3500米的地方跑了325公里,百公里10.5L?我看网上测评,极限节油的情况下也得百公里4.4L,人家还是在平原上测试的。开了空调油耗就到百公里5.8L了。我不可能开出百公里3.23L的油耗。

我问了Gemini,它说租车公司极有可能给出了错误的油量,虽然我的驾驶习惯能让发动机在车辆滑行时节省燃油,但不太可能将整体油耗降低到3.26L每百公里。Gemini综合估计我的实际油耗可能在6L每百公里吧。

由于保险都拉满了,所以取车还车都很顺利。停车时虽然蹭了轮毂盖,但是一嗨也没找我额外要钱。非常好。

在开车出去溜达之前,我们看到希尔顿有点餐送到客房的服务。送一次收取餐点金额15%的服务费,但是因为我们点的菜有好几个都没材料了,并且送餐送了一个多小时,因此服务人员免收了我们服务费。忘记拍餐点的照片了,但总体而言我觉得偏贵。但后来我才知道,我口口声声说昆明是美食荒漠,是我太大声了,香格里拉才是。在香格里拉的这几天,我们每天早饭都是KFC,晚饭点一次外卖翻车一次,附近古城的餐厅更是不太敢闯。

总之,吃好了午饭,我们就按照普达措-高山植物园-纳帕海环湖路西侧-石卡雪山的路线出门溜达了。由于当日我在开车,因此路上没拍照片。

普达措

我们到了停车场就下来找厕所,没拍照片。

高山植物园门口的天空之门

据说这里是小红书上一个出片点,当时确实也有好多人在拍照。但这个地方是在高山植物园门口,其实和高山植物园没啥关系。

这个是纳帕海上的一个经幡,不过上面似乎并没有印刷或书写佛经,不知道是不是专门搞出来给游客看的。

image

当时正在看风景,突然看到有鸟,这我能放过?通体乌黑,鸟喙是红色的,经查,这应该是红嘴山鸦。

image

image

image

image

image

image

这个是混在同一片鸟群里的,但这些鸟喙是黑色的,应该就是普通的乌鸦。

image

image

image

image

纳帕海环湖路西侧

后来我们驱车来到了纳帕海环湖路西侧(高山植物园在东侧)。也不知道开了多久,有一个探出去的迷你半岛。路边正好有卖牦牛肉串的,此时已经晚上六点半了,我们也饿了,于是就停下来买点吃的。在等肉串的时候,我又注意到水面上有鸟,于是掏出相机开始拍摄。

这些是白骨顶。

image

image

image

这是小鸊鷉一家。

image

image

image

这是随便照的风景。

image

image

以及一个很近的大经幡,上面确实没有印刷经文。

image

10月2日普达措森林公园

普达措国家公园标榜自己是中国大陆第一个国家公园,但显然不是管理最好最用心的。景区目前只开了三个景点,景点之间要用摆渡车作为交通,不能自驾,也不能自由决定游玩顺序。早上9点半进,玩了一圈晚上5点出。很显然观鸟是不现实了,时间和鸟类活跃的时间对不上。

第一个景点是个原生态步道,感觉不错。但公园在景点缺乏管理,导致小孩子老头老太太人手一个塑料袋在那捡蘑菇,所到之地寸草不生的那种摘法,就很讨厌。同时入园不查火种,写了禁止吸烟,结果一个大哥跑小树林里点了一颗。不过抛开这些缺点不提,原生态是非常到位的:

image

image

image

上面这张应该是绿背山雀,当天阴天,所以光线不佳,而且小体型的鸟动作非常快,没什么抓拍的机会就飞走了。鸟群中不止这一种鸟,下面这张应该是煤山雀。

image

image

这张看上去像是褐头山雀,但查阅了一些资料发现这个可能是川褐头山雀。我分不清二者的外观区别,但从分布来看比较可能是川褐头山雀。

image

第二个景点是属都湖。花了90租了个自行车。林道不错,面向一般大众的。但是林道容易,自行车就不容易。那个破车啊,挑了半天勉强找到一辆能骑的,导致这3.6km林道的体验极差。建议直接坐船跳过这段,毕竟船票只要65。

第三个景点是碧塔海,那个栈道一般。而且不知道咋回事,可能是栏杆和我包蹭来蹭去,把我水杯蹭出来了。我的水杯掉到了自然保护区里,痛失一个杯子。而且这个景点较前两个景点商业化严重许多,完全可以不来。来了也看不到什么,因为现在就开了前1/4。同样地,这里的景区管理也不行,一直说不要离开栈道,但有些家长带着孩子都上山了,志愿者轰都轰不下来。

从观鸟的角度来看,这里也没什么鸟。

image

image

上面是老朋友白鹡鸰,下面是隐纹花松鼠。这里有好多游客在投喂松鼠。如果说整个森林公园封闭景区是为了保护的话,那到这里我也非常理解景区的做法了,但是我依旧对不能自由穿行景区而感到遗憾。

以防你不理解我的文字:且不说告示牌和工作人员都在不停的说不要投喂松鼠,广播里还不忘科普人工投喂会损害松鼠和其他野生动物自主觅食的能力,单从常识的角度来说,观赏野生动物就不应该和其产生任何互动,更别说投喂了。这不是剥夺游客的乐趣,这是为了保护生态。或者更直观地说,在生态价值面前,游客的乐趣与体验一文不值,毕竟这里不是动物园。

image

image

image

当天中午没有在景区里吃饭,早饭肯德基,午饭全靠士力架顶着。我都怕给自己顶出糖尿病了,这玩意儿真他妈甜。

当日单人花费256元,不是很值,不如武夷山。

10月3日高山植物园与纳帕海

高山植物园是让我喜出望外的一个景点。首先这里人很少,可能大家都是奔着小红书的天空之门来的,植物园直接pass了。我们在园内逛了一上午,除了我们自己只看到了6个游客。里面蚊虫不少,但是我带了含有避蚊胺的驱蚊液,效果拔群,没有被咬。而且由于植物众多,没有什么人,因此拍到了许多鸟。如果单从观鸟的角度来说,这是整个行程中最棒的一个地方了。由于高山植物园也有科研性质,因此我也推荐大家去买张门票进去看看,20一个人还要啥自行车。我们去的时候不在花期,但我觉得风景也不错。另外还能顺便资助一下高山植物的保护,虽然我对植物一窍不通,但我知道鸟类栖息还是十分依赖植物的。高山植物园对于高原上的原生物种的保护与保存还是贡献挺大的。

可惜天公不作美。还记得9月30日下了火车我说冷吗?可能是那个时候开始感冒的,到10月3日已经开始有明显的乏力了,我连180-600这颗镜头都举不稳了。回来筛选照片的时候经常看到鸟在照片中四处乱动——这不是鸟在动,而是我实在没力气稳住镜头了。但这时还好,还没有强烈的症状。虽然乏力,但我还能动。

由于拍到了好多张鸟照,下面将根据物种分类。

黄腹柳莺

虽然是柳莺,但是我之前从来没见过,算是加新了。

image

image

image

image

image

image

红喉姬鹟

红喉姬鹟也是我先前没见过的鸟,现在不在繁殖季,所以颜色没那么鲜艳。但从一些照片可以看到它喉咙处有淡淡的黄/橙色。

此外,经过查询Birds of the world,我头一次知道这类小体型的鸟类也会远距离迁徙,之前一直以为只有像海鸥那么大体型的鸟才会迁徙。红喉姬鹟体长11.5厘米,体重大约在8到14克之间。红喉姬鹟的迁徙路线和越冬地目前上不明确,但科学家比较确信可能至少有三条秋季迁徙路线:

位于西伯利亚西北部的红喉姬鹟会向南途径乌拉尔山脉与阿富汗,最终抵达印度。这条迁徙路线的个体最少,并且该路线与它们的亲戚红胸姬鹟迁徙路线重叠。

位于西伯利亚中部的红喉姬鹟会向南穿过蒙古和中国中西部,抵达缅甸及更远地区。香格里拉正好在这条路线上,因此我们拍到的红喉姬鹟正要前往缅甸。

最后位于西伯利亚东部的红喉姬鹟会向南途经中国东北部和东部,前往东南亚。

后两条路线是红喉姬鹟大部分个体会选择的迁移路线。它们在俄罗斯中部和东部的过境时间为8月上旬至10月下旬;于9月至10月间抵达中国西部、印度、孟加拉国、缅甸和泰国;于10月上旬至11月中旬抵达香港。在中国东部的过境时间则在9月中旬至10月下旬之间。春季回迁主要在4月份,部分个体要到5月才开始,在中国北部和蒙古的过境高峰十分明显,并会一直持续到6月上旬。并且它们在日本、韩国、菲律宾西部(巴拉望岛)、婆罗洲、安达曼群岛以及美国西北部(阿拉斯加)均有迷鸟记录,其记录分布最西可达英国。

这么小体型的鸟每年都要进行这么长的迁徙,真厉害啊。

image

image

image

image

image

image

image

image

黑眉长尾山雀

黑眉长尾山雀也是我这次新见到的鸟种,是三有动物。

image

image

image

橙翅噪鹛

橙翅噪鹛,还是加新,而且这个是国二!一开始注意到它是因为它的叫声和环境中的其他鸟类很不一样。其他鸟类都是短促的一声,只有它是比较长比较婉转的叫声。于是驻足停留了好久才在树丛中找到它。除了第一张我和它对视,其他的还挺有国二风范的。

image

image

image

image

image

image

image

image

这里一开始我以为是松鼠,因为是路边松树林里面的地面上有窸窸窣窣的声音。但是因为杂草和树枝什么的太密了,没看到。走来走去移动视角才发现这不是松鼠,还是橙翅噪鹛。应该是在地上找吃的。

image

image

image

image

黄眉柳莺

这张照片认了半天,我和AI都搞不清这是什么柳莺。就当它是黄眉柳莺吧。

image

10月4日月亮湖

3号回到酒店就在想4号要去哪里,看来看去在小红书上有人提到月亮湖,在高徳上看周边也看到了这个景点,于是想着那就去看看呗。开车开了一个多小时,到了之后发现就一大片草原加上一滩水。有个大姐看我们拿着相机,非说要让我们给拍几张照片。我拍了几张,感觉16-50这个头拍人像不太灵,于是我决定及时止损,让我朋友带着他的索尼20-70上。

除此之外就没什么了,简单逛了逛,走到了水潭周围的地方,结果鞋湿了。过了一会儿开车又回去了。拍了一些照片,但选来选去没什么出片的,就算了。我本身也不擅长拍摄风光和人像。

其实这一天开始感冒的症状就有一些严重了,但是因为这几天我一直预防性地吃新康泰克,所以有发烧的症状但是不明显。开车的时候集中精神有些费力,但也不是不能开。

10月5日在希尔顿趴窝

5号本打算开车去白马雪山哑口,走老214国道看雪山。但这一天一醒来就觉得非常乏力,而且精神涣散。由于没有体温计,所以没法确定是不是发烧了。看网上的视频得知老214国道路还是比较险峻,周围没有护栏,而且单程要开3到4个小时,我想了想,还是算了。虽然租的车保险拉满了,翻下山去直接报废都不用我赔钱,但是我还是比较惜命的。万一开车走神翻下山去,那被人找到的时候就只能拿勺㧟了。所以综合考虑还是不要冒险了,大不了下次再来嘛。

于是这一天就在酒店修整,顺便收拾东西准备6号返程。下午把车还到火车站。

10月6日返回昆明

6号一早前往火车站乘坐C640次列车返回昆明,还是商务座。当列车开出香格里拉,从海拔3500米下降到2000米,我感觉我的感冒一下子就舒服了一半。这个教训告诉我们:如果一定要感冒发烧的话,一定不要在高原。

此外我还发现真是林子大了什么鸟都有。自己上错车厢,然后发现9车不能前往8车的。大部分人询问列车员后发现过不去,一般也就认了,毕竟自己没提前就位,慌乱之中上错了车厢,等下一站去站台走过去就是了。唯独这其中有一对中年男女,从列车员处得知自己过去不后开始恼羞成怒,对着列车员大喊大叫,扬言要投诉他们。怎么?你说投诉就能把9车厢的牵引车头改成列车让你过去?招笑。有时候真的替服务业从业者觉得不公,怎么什么傻逼都能遇到,遇到了还不许还嘴,太憋屈了。我旁听时都想要替列车员骂他们几句,自己不早来还要投诉人家,干脆给你开个专列得了。不过想来想去,沾这种屎干嘛。

最后快到昆明站的时候,还有三个人下去抽烟,站台上的工作人员喊了好几次让他们上车,就不听,车里的也叫他们上车,就不。就喜欢抽那口烟,结果车门关了,没上来。招笑。

我在这里还是建议大家要提高自己的素质与修养,当然不能为此变成任人宰割的绵羊,但素质和修养永远是文明与友善的名片。

总结

这次香格里拉之行算是我第一次规划一个旅行吧。严格来说第一次独自旅行是2023年前往昆明找朋友玩,那也是我后来决定暂住昆明的契机,但是从规划来说,当时并没有严格的时间表,所以并不能算是真正的旅行。这次我从头到尾查资料、决定行程,定车票和酒店,还挺新鲜的。虽然旅途中有好有坏,后面感冒发烧还挺难受的,但是高山植物园作为观鸟体验的高光时刻,我觉得这一趟真的不虚此行。我朋友说旅行就是一个祛魅的过程,还真是。我一开始对香格里拉的各个景点是有一些自己的想象的,但是很显然这些想象都没有对上。我一开始想象纳帕海应该是一大片水,然后周围有沙滩或滩涂,我可以站在公路边上的沙滩上用长焦远远地拍摄前来觅食的鸟类,这原本是我此行中期望最大的地方,但实际呢?纳帕海已经被当地居民圈地变成一个模式化的商业地块了——花海拍照、抱小羊拍照(小红书上还看到一些关于动物福利问题的讨论,例如为了避免小羊在游客身上拉屎,一天不让吃草之类的)还有骑马遛弯。而且根本没什么迁徙来的鸟,有些大失所望。你说风景吧,风景确实不错,但也并非精采绝伦、非看不可。所以我觉得这地方的体验真不算好。

而高山植物园则是我期待最小的一个,因为我原本想高山植物园可能树林很迷,林鸟不太好拍摄,因为光线之类的问题,可能拍出来会很昏暗,要么快门速度上不去糊成一团,要么iso被拉爆全是噪点。但我万万没想到这个植物园和我想的完全不一样,而且是此行中观鸟体验最好的一个。果然人不应该根据自己有限的经验去揣度没有见过的东西。

关于ISO和噪点的问题,ISO高并不意味着噪点多。抛开不同CMOS的高感能力不同,通常在高ISO的情况下,这意味着你的相机在当前光圈和快门速度设置下不能获取足够的进光量来将所有像素亮度的平均值维持在一个中性点。说人话就是欠曝了,所以相机只能通过增大ISO提高增益的方式来提亮画面,这样做的代价就是会放大噪声,而由于你的进光量不足,就导致信噪比很差,自然就会产生很多噪点。

结论:ISO不产生噪点,但它是衡量进光量和噪点的一个指标。

至于普达措嘛,只能说有好有坏,一开始我也没什么太大的期待,因为山鸟社的行程一开始就没它。这是在决定不去滇金丝猴公园之后才找到的景点,所以本身期待就没那么大。最开始我对它的想象就是武夷山,毕竟武夷山也是靠大巴车在景点之间移动的,但从现实体验来说,普达措差远了。尤其是租赁自行车那一块,真是整个公园最大的败笔。

彩蛋:I'm Nikon

image

image

一个梗罢了,别当真。尼康的对焦大部分时候还是挺好的。对不上多半是因为没设置好。

-全文完-

]]>
4 https://skyblond.info/archives/1098.html#comments https://skyblond.info/feed/
【歪门邪道】从零开始摸索的照片后期工作流 https://skyblond.info/archives/1097.html https://skyblond.info/archives/1097.html Mon, 01 Sep 2025 20:03:00 +0800 天空Blond 鸽了好几个月,本来打算4月就写这个话题的,但是因为一直有别的写,就一直在往后推。前几篇文章答应要写了,所以这一篇终于开始写了。那么闲话少说,书归正传吧。

前言

说起来我并非什么专业摄影师,至今不会人像拍照,而后期方面也全看自己摸索。上一次有个飞机的照片,天是灰色的,我也不知道怎么捣鼓的,就把天拉蓝了,毫无技巧,全靠感情。色彩理论什么的我也不懂,总之就是没有任何技术性的修图。所以本文并不旨在分享后期修图技巧,更不是面向专业摄影师(如果真是专业摄影师的话,搞不好还得笑话我在粗糙原始的修图手法呢)。本文侧重的是介绍我在摸索照片后期工作流的过程,并向其他业余爱好者介绍我现有的一套成熟的从拍照到出图的一个稳定流程。在这套流程下,兴致来了就仔细修修,困了累了就差不多裁剪一下拉一下对比度就出片了。总而言之,我的目的并不是为了好看和卖钱,我的工作流更侧重于将我之前拍的照片稳定地转变出成片,不至于落到摄影成为只按快门的爱好。

当然了,就算在摄影爱好者的范围里,我这套工作流也不算什么特别好的成果,只是希望能够抛砖引玉,给还在探索不同后期软件组合的人一些参考资料。如果你有更好的方案或软件,也欢迎在评论区友善地分享。

尼康工坊

尼康相机嘛,当然最开始用的软件就是尼康工坊了。这个软件是免费的,也支持NEF的各种格式,如果你要后期做摇摇乐,这个也是必不可少的软件。只不过对于Z50 2来说,尼康工坊为数不多的好处之一就是能够读取照片拍摄时的优化校准,并且后期能够调整和切换不同的方案。其次就是能够显示出照片的对焦点,只不过在我的测试中,对焦点在鸟身上并不意味着镜头的焦点就在鸟身上,所以最终还是得要人眼去对比哪张对焦的更好。在编辑方面,基本的功能都有,而且尼康专属的各种功能都可以调整,比如动态D lighting和人像柔和之类的,这些功能虽然在其他软件中也有平替,但尼康工坊中对于这些功能的调整在效果上是和在照相机内调整的效果是一致的。

尼康工坊在我拍照初期承担了我拍照后修图的工作,在我拍了大约1300张照片之后,我发现这个软件的功能和性能还是不能是我满意。从性能上来说,尼康工坊导出一张照片要好久,而我是将NAS的一个共享通过SMB挂载到我的电脑上来访问,这样一来就更慢了。而且从功能上来说,单是导出格式就十分受限。尼康工坊能导出jpg、tiff和heif格式的照片。如果之后你有专业处理的需求(例如放进photoshop进行处理,或者使用一些计算软件来后期,常用于星空摄影等),那就只能选用tiff格式了。但是此时文件大小会从NEF格式的25MB上下膨胀成125MB左右,十分占用空间。至于编辑照片本身,界面可以说是能用,但比起Lightroom还是差得远。在功能上也并不完全,例如LrC可以选择蒙版,对前景和背景分别处理,但尼康工坊就做不到。至于光学矫正方面,人家都叫尼康工坊了,你还指望它支持腾龙?如果你的NEF文件里面有机内矫正数据,那尼康工坊就能根据这些内嵌数据做矫正,如果没有,那就没办法了。

当然,以上问题还是只我当时意识到的。从现在工作流来看,尼康工坊(和其他大部分工具)都缺乏一个好用的素材管理功能。

Affinity Photo 2

这个软件我之前在寻找photoshop平替时就买了。虽然它主打照片编辑,但比起LrC,它更像是PS。但界面和PS完全不一样,需多操作的概念也不同,在重新学习上比较麻烦。在上手过程中我也注意到Affinity Photo的资料比较少,而且有些是过时的。例如我一度想要调整界面的缩放,因为我的笔记本15英寸2k屏幕,字看上去有点小,我想调大一点。官方的中文操作手册说可以调,但我找了半天也没找到手册上说的设置,最终只好放弃。如果真要学习的话,那我建议学好英语,去Youtube上搜教程视频,跟随讲解操作,这样会简单明了不少。

除此之外,这个软件也没法完全替代尼康工坊。尼康工坊好歹还有个文件夹目录选照片的功能,这个软件就和PS一样,你只能选一张照片打开,完事了再去处理其他的。我认为缺乏最基础的浏览功能对于照片编辑来说就是致命伤。

至于编辑功能本身,如果能熟悉这个软件的操作的话,功能还是挺全面的。首先打开NEF时和ACR差不多,有一个解码RAW的过程,在这里你可以调成诸如曝光、对比度、色彩、镜头矫正之类的功能。关于镜头矫正,这个软件自己带了一些镜头的数据文件,并且随着更新会添加新的镜头。在这个界面调整完成后点击“开发”按钮之后,图像就会被栅格化,之后你就可以像Photoshop那样精细地编辑这张图片了。

至于那个按钮为什么叫开发,我估计是叫develop吧,这个词在英文中也有对胶片胶卷冲洗的意思。

这个软件其实从功能上看还挺不错的,如果你的工作流比较偏向于使用Photoshop,那么这个软件配合尼康工坊可能会比较合适:首先在尼康工坊中筛选标记有希望出片的照片,然后在尼康工坊里选择使用这个软件打开。不过对我来说,我并不喜欢Photoshop那样过于精细化的编辑,这种强大的功能对于我的工作流来说反而还是负担。所以我最终没有选择Affinity Photo 2。

Capture One

在寻找其他照片编辑软件的时候,这个软件由于出众的色彩解析能力进入了我的候选名单。但在了解了定价方案之后,我直接将它排除:Pro版是能在电脑上运行该软件所需的最低订阅档,目前的价格是年付214.2美元(合17.85美元一个月),如果按月订阅的话则是27.3美元一个月。他们也提供买断的许可证,但官网原话是“适合不依赖我门最新更新或硬件支持的摄影师”,而在支持论坛上的帖子则解释说买断的许可证并不包含功能更新,只包含小版本号(X.Y.Z中的Z)的bug修复的优化。当他们更新了新功能时(例如从16.5更新到了16.6),你需要重新购买pro许可证才能获得更新。这样的许可证价格是345.45美元(之后重复购买可获得大约20%的折扣,但还是很贵)。至于他们的更新频率,他们在论坛的帖子上提到他们从一年一更新移动到release when ready模型,也就是说只要他们的新功能开发完毕就会发布新版本。

我认为这从经济上看并不划算(不适合我),我顶多算是一个摄影爱好者,对于编辑软件的利用率不高,采用订阅制就意味着我闲置的时候也在为它支出。而买断制的定价和发版模型也并没有很良心。所以最终我决定跳过试用直接将其淘汰掉。当然了,富哥和有钱的退休人员随意。

关于买断和订阅,我个人一直非常讨厌订阅制。如果你说你提供服务,比如我租用服务器,或者使用密码管理器这一类的东西,那按月或按年付钱是可以理解的。但你说软件这个东西,把更新绑定到订阅上也不是不行,可是你又没有约定你每个订阅周期一定会有多少个功能更新,更新多了你不乐意,更新少了我不乐意。如果说把使用权和订阅绑定在一起,那就更没道理了,使用权并非服务,我为何要付钱?

所以目前我接受订阅制的只有明确服务内容的东西,以及不太贵的东西。至于其他的,能按量付费就按量付费,如果商家给脸不要脸,那我只能盗版了。

Luminar Neo

在见识过了昂贵的软件之后,Luminar Neo以AI照片编辑的亮点进入了我的视野。但经过简单试用之后我发现其功能并不能满足我的编辑需求。由于当初试用时恰逢Z50 2发布没几个月,因此对于NEF的支持也不完全。当时我测试的无压缩NEF可以支持,但高效压缩就不行。并且它既无法读出尼康的色彩方案,也没法读出原始颜色,就导致所有使用了色彩方案的NEF加载出来的颜色就很奇怪。

总体来说我对这个软件不是很满意,因此以NEF不兼容为借口向客服退了款。

至于定价:永久买断119美元,包含购买后一年内的所有更新,之后的更新需要支付额外的升级费用(类似于老版本升级折扣)。根据Reddit上的信息来看,这个升级费用大约是一每6个月50美元左右,相当于以40%或50%的折扣每年重新续订。我感觉这个价格比JetBrains和Capture one都良心。只不过考虑到这软件的功能嘛,只能说不适合我。

RawTherapee

开源免费,但是不太好学,功能比较复杂,并没有所谓的out of box支持,只不过自由度非常高,如果你有一个移除拜尔滤镜的机器,那你可能不得不用这个软件将RAW文件解析为黑白的。只是对我而言我需要开箱即用的支持,我并不需要对RAW文件有多高的自由度,我只是想编辑照片,所以这个软件pass。

DarkTable

也是开源免费的,而且说是针对摄影师打造。但是吧,你看那些个卖相机的哪个公开了自家的RAW文件格式?一个个的都得靠逆向。虽然开源的想法很不错,可是现实一点也不美好。只能说如果一定要在Linux上编辑照片的话,darktable可能和rawtherapee一样是唯一的选择,但我有Windows。

DXO PureRAW 4

我最后测试的就是DXO家的软件了。最先是DXO PureRaw,因为看中了他们的降噪能力,虽然也是神经网络降噪,但架不住效果好哇。而且DXO他们自己有针对不同的相机和镜头制作光学模块,他们会买来对应型号的相机和镜头,在他们的实验室里面拍摄一系列测试照片,然后基于此制作出一套色彩和光学的矫正模块。在我评估这个版本的时候,他们还不支持Z50 2,直到今年2月份他们发布更新,我赶快下载下来试用,感觉不错。

但PureRaw毕竟是处理RAW文件的,输出一个DNG格式,方便你进行后续的处理,这个软件本身没有任何编辑与调色的功能。它就是很朴素的以他们自己的方式解析DNG文件、还原色彩、矫正光学。

由于效果不错,再加上我想一步到位,于是就看了看他们家的DXO Photolab 8。

顺带一提,现在他们家出PureRaw5了,好像还新增了富士还是谁家的那个XTrans传感器的支持了。买断制130美元,如果你之前买了PureRaw3或4,那么可以按照90美元的价格升级,大约是30%的折扣,还是比Capture one良心。

忘记说了,DXO家的软件和LrC联动都非常好。对于PureRaw,你甚至可以在LrC里面操作它的界面来处理你的RAW文件。

DXO Photolab 8

DXO Photolab 8这款软件是我目前认为最贴合我的需求的软件之一,除了它那个看起来有点吓人的启动界面。买断制售价240美元,从6或者7升级上来时120美元,相当于50%的折扣,非常良心了。

在功能方面,除了全面包含PureRaw的降噪和矫正功能,它还提供了完整的编辑模式,例如常见的曝光、调色等,还有一些DXO自家的功能,例如Smart Lighting,它可以在不用你手动调整高光阴影的情况下自动调整图片的曝光度,同时增加一些明暗对比以“解锁阴影和/或回复高光来优化动态范围”。还有DXO ClearView Plus,类似于LrC的去薄雾,能够淡化大气薄雾和朦胧效果。至于其他什么色彩曲线就更不用说了。

对于调色来说,它支持不同的渲染方式,你可以通过类似预设的方式来模拟不同的相机或胶片的渲染效果,你可以通过氪金DXO FilePack插件来获得更高级的胶片模拟效果。不过我本人对胶片模拟并不是很感兴趣,所以就没充钱。除了模拟其他颜色,它还可以对照片应用LUT,这我还是头一次见。

当然,如果只是做成这样的话,那只是一个更高级的尼康工坊罢了。我之前说过尼康工坊不能局部调整,而DXO Photolab 8就有这个功能,虽然没有LrC那么花哨的自动识别主体或前景,但它的U Point技术好像也挺厉害的,只不过我没怎么用过,看起来也是多少带点自动识别的技术在里面。

除此之外,对于裁剪、修补之类的需求,DXO Photolab同样也有。虽然LrC有AI自动修补,但从实际体验来看,首先你需要全局代理,其次Adobe那个AI有时候修补的结果很诡异,大部分时候并不好用。我通常使用图章这类工具将要移除的元素圈起来,然后使用临近的背景去填补。DXO Photolab也提供了这个功能的平替,总体来说除了素材管理,它几乎可以完美替代LrC了(是的,色彩空间管理和软打样人家也有)。

说到素材管理,其实DXO也有类似的功能。和LrC一样,分为文件夹、项目组(收藏夹集)和项目(收藏夹)。我目前在LrC上的文件管理流程完全可以搬到这个DXO Photolab 8上,但用户体验会有折扣。首先DXO PL 8没有缓存(类似LrC智能预览或1:1预览),因此当文件离线的时候你完全无法预览。其次是元数据的数据库没有备份。虽然和LrC一样,大家都推荐不要共享本地数据库,但LrC可以设置定期将数据库备份,我是将备份全都存储到了NAS上,这样不怕丢。DXO PL8提供了手动备份的选项,但不能自动备份。对于我这种经常忘记事情的人来说,手动备份就等于没有备份。

当然,没能让PL8完全替代LrC的关键就是它和LrC的联动太丝滑了。在安装PL8的时候,你可以让安装程序给LrC安装一个插件,借助这个插件你可以将选定的文件交给PL8处理,处理完成后自动将结果导回LrC并放入一个新的收藏夹来和老文件做区分。

Adobe Lightroom Classic

这个软件常被简称为LrC,由于从小学开始就接触了Photoshop CS6,因此Adobe对我来说一直都是多媒体行业的标杆企业,直到他们吃相难看地强制所有人都购买他们那个订阅。就像我之前说的,软件用订阅制是不合理的,如果不能按量付费,厂商又给脸不要脸,那我就只能用盗版了。不过Adobe最近的盗版也比较恶心人,虽然有俄罗斯那边的大佬给做破解,但Adobe自己内置了需多恶心人的东西,稍有不慎破解就失效了。虽然有解决办法,但对于需要稳定使用的人来说是不可接受的。所以淘宝上就催生了需多所谓的正版,其实就是教育版,一年大约400块左右,他们会给你的账号拉入组织。这种方法有时候会不稳定,联系售后重新加入组织就好了。和所有拼车都一样,拼车有风险,上车要谨慎。

我喜欢LrC的主要原因还是它的素材管理,能在离线时进行预览,并且元数据管理和搜索做的也比较丰富,整体的界面打磨的也比较好。虽然它在图像处理上可能不是最好的,但从体验来说它是真好用。因此我最终选择把LrC和DXO Photolab 8结合起来用。

这里还是要提一嘴尼康的色彩优化。在使用DXO PL8和LrC的时候,他们默认都忽略色彩优化。 LrC可以在设置中调整如何解读颜色,默认是Adobe自己的色彩,如果你选择让照相机管理,那就可以读出色彩优化,不过这对于后期的难度会增加。DXO PL8也是类似,你需要将渲染修改成相机配置文件。所以虽然一开始色彩优化是我的买Z50 2的主要原因,因为我想避免后期,但随着照片越拍越多,我意识到后期是我不得不做的事情。用别人的色彩当然很好,但如果场景不对盲目套用的话反而适得其反。我做事又不喜欢搞一大堆复杂的工具,所以还是直接用默认色彩拍照,我后期想看什么自己调就是了。

我的照片工作流

这里简单地介绍一下我的照片处理工作流。并不专业,有建议可以提,不爱看就滚。

文件处理

首先是用Nikon Transfer 2将NEF文件从相机拷贝到电脑上。一开始我还会同时拍摄NEF和JPG,但后来发现JPG的用处不大,所以就不拍了。在NAS中按照日期和地点创建好文件夹,将文件复制到NAS上即可。

我在NAS上单独开辟了一个photograph的挂载点,用于存放我自己拍的照片。目录大概是这样子:

P:\
├─export
│  ├─云南
│  │  ├─20241227昆明呈贡中央公园
│  │  ├─20241228昆明拍星星-猎户座
│  │  ├─20241228春城公园+呈贡中央公园
│  │  ├─20241229昆明捞渔河湿地公园
│  │  ├─20241231昆明呈贡白龙潭
│  │  ├─20250111玉溪抚仙湖
│  │  ├─......
│  │  ├─20250621昆明东川森林公园
│  │  ├─20250706捞渔河呈贡段G213拍鸟
│  │  ├─20250713捞渔河呈贡段G213拍鸟
│  │  └─20250727沐春湖
│  ├─北京
│  │  ├─20250129除夕
│  │  ├─20250130初二
│  │  ├─20250203奥森
│  │  └─20250205西单随便拍
│  └─香港
│      └─20250118香港故宫
├─lrc backup
│  ├─2025-03-10 2134
│  ├─......
│  └─2025-08-18 2022
├─nightsky
│  ├─in-person
│  │  ├─20250418呈贡宪法主题公园南河三
│  │  │  ├─biases
│  │  │  ├─darks
│  │  │  ├─flats
│  │  │  ├─lights
│  │  │  └─masters
│  │  ├─20250504呈贡白龙潭室女座
│  │  │  └─......
│  │  ├─20250504呈贡白龙潭月亮
│  │  │  └─......
│  │  └─20250605呈贡拍月亮
│  └─skygems
│      ├─FSQ106 Namibia
│      │  └─28186-0-7_M 42
│      │      ├─blue
│      │      │  ├─biases
│      │      │  ├─darks
│      │      │  ├─flats
│      │      │  ├─lights
│      │      │  └─masters
│      │      ├─green
│      │      │  └─......
│      │      ├─luminance
│      │      │  └─......
│      │      └─red
│      │          └─......
│      └─Tecnosky Newton230
│          └─28784-0-9_M101
│              └─......
├─raw
│  ├─云南
│  │  ├─20241227昆明呈贡中央公园
│  │  ├─20241228昆明拍星星-猎户座
│  │  ├─20241228春城公园+呈贡中央公园
│  │  ├─20241229昆明捞渔河湿地公园
│  │  ├─20241231昆明呈贡白龙潭
│  │  ├─20250111玉溪抚仙湖
│  │  ├─20250511阳宗海
│  │  ├─......
│  │  ├─20250606宪法主题公园拍鸟
│  │  ├─20250621昆明东川森林公园
│  │  ├─20250706捞渔河呈贡段G213拍鸟
│  │  ├─20250713捞渔河呈贡段G213拍鸟
│  │  └─20250727沐春湖
│  ├─北京
│  │  ├─20250129除夕
│  │  ├─......
│  │  └─20250207月亮
│  └─香港
│      └─20250118香港故宫
└─video
    └─云南
        ├─20250726测试森海塞尔MKE600
        └─20250727沐春湖

一共是五个目录:

  • export:导出的成片,结构和raw文件夹一样
  • raw:拍摄的RAW文件,其下一级文件夹是地区,二级则是时间+地点或拍摄主题,所有raw文件都在二级文件夹中
  • nightsky:夜里拍星星用的,其下一级文件夹分为两个

    • in-person:我自己扛着相机去拍的,其下文件夹是时间+地点或拍摄主题,raw文件会按照biases、darks、flats和lights分类,使用Siril处理,其中的中间文件就放在masters里面,最终输出则放在二级文件夹的根目录,这样点进来这个文件夹就能看到对应的结果
    • skygems:我在skygems这个平台上租用远程天文台拍的,由于他们的设备都比较专业,所以每个通道都会有biases、darks那些文件夹,然后最终将不同通道组合起来输出。并且由于租用设备的不同,每个设备拍的照片会有其单独的文件夹。
  • video:拍视频的,由于我买了森海塞尔的MKE600麦克风,所以开始尝试录制视频了。和raw差不多,也是一级地区,二级日期+地点或拍摄主题。视频使用达芬奇免费版进行处理。
  • lrc backup这个是LrC的自动备份,就不多说了。

在LrC中初步筛选

由于所有照片都由LrC管理,所以照片编辑的第一步就是导入LrC。当你的照片已经到如果一些之后,LrC会记住照片的所在路径。每次需要导入新照片时,只要在图库的文件夹中找到raw文件夹,右键选择同步文件夹,LrC就可以自动找到新的文件了,目前还从来没有失手过。

导入完成后,我会对新的文件夹右键,选择创建收藏夹,就会创建一个与文件夹同名的收藏夹。使用收藏夹的好处就是可以做到照片与文件分离。如果你从文件夹那里选择文件并开始编辑,如果你不小心手滑按了delete,那你的照片文件就会被删除。可是如果从收藏夹里面选择文件并开始编辑,那按了delete也只会把这个照片从当前收藏夹中删掉,而不会实际删掉文件。

当然,直接把所有文件扔进一个收藏夹是不行的,我一般会用收藏夹集合。首先给新创建的收藏夹改名,把原来的名字剪切走,改名为RAW,然后在相同位置创建收藏夹集,名字就是你刚才剪切的那个。然后把这个RAW收藏夹移动进刚刚创建好的收藏夹集,这样我们就可以用类似子文件夹的方式管理照片了。

接下来我们便可以在RAW收藏夹中查看每一个照片,使用快捷键P将照片标记为有用,U取消标记,X标记为无用。除非对焦模糊或完全没有利用价值,否则我很少使用无用标记。主要使用P标记出有可能修图出片的照片,完成后使用过滤器列出标记留用的照片,全选,然后在工具栏中找到文件、增效工具额外信息、转移到DXO Photolab 8就可以把选定的照片交给DXO PL处理。

DXO Photolab矫正、降噪、调色

当照片导入到DXO PL之后会应用一个我自己保存的预设。基本上就是默认预设开启光学和色彩校正,开大约10的DXO CleverView,加一点弱的DXO Smart Lighting,色彩渲染选择DxO相机配置文件,自动应用DeepPRIME XD/XD2s降噪(创建这个预设的时候还没有DeepPRIME3)。通常这一套下来会提供一个比较不错的baseline。

在此基础上我通常会做一些调色,这方面我确实没什么技巧,就是凭感觉,所以就不献丑介绍了。

在DXO PL里面的所有编辑都不涉及裁剪,这样可以保证图片怎么来的,DXO怎么还给LrC。

做好之后就可以选导出到Lightroom,我一般都选择应用所有校准,dxo会逐个照片处理,并生成一个DNG文件。最终一并导入到LrC中。

在LrC中裁剪、导出成片

处理完成的照片我会放到一个名叫DXO的收藏夹中,和RAW放在一起。然后在这个收藏夹中裁剪、构图。如果感觉成片还行,那就打上5星的评分,不行就算了,如果勉强那就打个3或4星,如果成片多就不要他们,成片少就带上他们。

在最终调整的过程中可能会做一些微调,但我尽可能避免这种事情,让所有对图像本身的调整都发生在DXO PL那里,因为Adobe这个软件的访问权限并不是永久的。所以我希望即便有一天我不用Adobe了,我还能使用终身购买的DXO PL去打开我编辑过的图片。

总之,做好裁剪之后,使用过滤器筛选5星照片,应用元数据模板后导出即可。

导出时我用PNG格式,位深度8,色彩空间sRGB,调整图片的长边为3000像素(但不扩大小的图片),分辨率为240像素/英寸。取决于拍摄地点,我会看情况是否勾选删除位置信息。

在最终发布前我还会使用exitfool检查图片的元数据,确保元数据不会包含特定的信息。

后记

以上就是我的照片处理工作流了,虽然一点也不专业,但我认为就目前而言,对我完全是够用了。至于Adobe,很遗憾,虽然我不喜欢这家公司现在的做法,但不得不承认LrC做的确实好使。如果未来Adobe真的吃相难看,连淘宝也解决不了问题了,那我可能就会彻底舍弃它,转用DXO Photolab吧。

总之,以上就是全部内容了。我们下一篇文章见!

-全文完-

]]>
0 https://skyblond.info/archives/1097.html#comments https://skyblond.info/feed/
【歪门邪道】BT下载的反吸血之路 https://skyblond.info/archives/1096.html https://skyblond.info/archives/1096.html Fri, 01 Aug 2025 07:22:00 +0800 天空Blond 最近看到以183开头的IP地址在均匀地下载我tixati中挂的种子,虽然下载量不大,并且进度乍一看也没问题,但警觉的我意识到这不对劲,我可能又被人刷流量了。检查了一下IP黑名单,发现BTN的ip黑名单一直连接超时。想来想去,这样总不是个办法,还是得上正经的PeerBanHelper。于是,本文将记录我的折腾之路。

Tixati

Tixati一直是我最喜欢的BT下载软件之一,因为它好用,功能丰富,性能稳定,最重要的是还有跨平台支持,对于openSUSE来说,只需要安装一个rpm包即可。为了解决吸血和刷流量的问题,它自带一个IP屏蔽列表,所以我配置了BTN网络定期导出的IP黑名单,tixati会定期自动获取最新的列表并根据IP实行封禁。但这有个问题:btn网络的ip黑名单全都用的国外的服务器,有github,有cloudflare,还有jsdelivr。最近他们在tixati中全部都超时,获取不到。本打算弄个反向代理,但想来想去太麻烦了,并且BTN导出的ip黑名单总归有延迟,并且BTN规则列表的仓库也说了:

此项目不能作为唯一反吸血手段使用,它无法代替由反吸血程序提供的本地检测能力。它也并非是 PeerBanHelper 的核心 “全量” 数据。此项目的存在一切皆依赖于连接到 BTN 网络的用户。规则并不是大风吹来的
鼓励您使用在可能的情况下优先使用PeerBanHelper连接到 BTN 网络,以便向本仓库贡献数据。

任何已在反作弊辅助脚本、工具、程序中使用本项目提供的数据的朋友,请您考虑实现 BitTorrent Threat Network 标准规范,以便向网络提交数据。

本着支持开源项目以及「为众人抱薪者,不可使其冻毙于风雪」的指导思想,我开始更换到受BTN支持的bt下载器。

BiglyBT

BiglyBT是我第二喜欢的bt客户端,但很遗憾,在这次折腾中它没能成为我的最终选择。我喜欢这个客户端单纯是因为它是Java写的,但我也是Java开发者,我深知Java的弱点:调用C库。好巧不巧,BiglyBT就调用了GTK库来实现UI。具体来说,它通过一个名叫SWT的组件来调用系统的GTK库,它本身并不包含GTK二进制文件。而默认安装的3.8.0.2版本在openSUSE上有bug,每次我尝试调整库的列视图时,只要点保存就必定崩溃。经过一番调试,我发现是SWT的问题,因为updater提示无法自动更新SWT。我在这个issue中找到了一个3.8.0.3-B14的beta版,这个版本修复了SWT更新的问题,而更新好SWT之后,UI的bug解决了,不过还有新的问题。

在测试过程中,我注意到如果通过unraid的VM页面重启虚拟机,BiglyBT并不会收到关机信号并正常退出。重启之后自启动,会在右下角提示BiglyBT没有正常退出,而我观察到的问题是有些在seeding状态的种子,经过非正常退出之后会变成灰色的queued状态。在这种状态下并不会给他人上传,而我在文件中选择recheck强制重新检查文件后,这个种子又能重新seeding了。由于我的路由器ip会变化,而据我观察一些bt软件并不会更新获取到的ipv6地址,就导致路由器获取新的ip后,bt软件的联通性直接大幅下降。为了缓解这个问题,我在unraid中设定了脚本,每天凌晨在路由器重启半小时之后重启虚拟机,强制所有软件重新获取ipv6地址。如果每天重启都会随机导致一些种子无法正常seeding,对于我来说这还是挺严重的问题,因为我不可能每天都去检查nas上面软件的状态。

qBittorrent

qBittorrent并不是我最喜欢的bt软件,因为它ui有些简陋,并不像tixati那么花哨,功能上也没有BiglyBT那么丰富。但不得不说,因为ui简单,功能不复杂,因此这个软件运行起来确实稳定,并且也受BTN官方支持。

和BiglyBT需要使用sh脚本安装不同,openSUSE本身就有qBittorrent的包,所以直接用zypper安装即可。安装完成后配置起来也不难,大部分情况下默认设置都能工作得很好,BTN也能和它配合。

按理说事情就应该告一段落了,但我在测试下载新种子的时候发现qBittorrent无法写入任何数据。具体表现是开始下载种子后,直接提示错误,错误内容是Invalid argument。查看日志发现,具体错误原因与file_mmap这个函数有关。虽然这个函数是libtorrent的,但从过名字可以推断,这个函数应该是会调用Linux的mmap函数来将文件的一部分直接映射到内存,这样可以进行高性能的随机读写。而从目前的状况来看,读取验证哈希没有问题,但写入有问题,于是我开始怀疑unraid提供的挂载点。

我原本认为我是用的是virtiofs来将unraid的共享文件夹挂载到虚拟机里,于是就以此为出发点,开始研究virtiofs对于mmap的支持。经过一番搜索,我找到了Introduce allow-mmap flag这个合并请求。这个合并请求的内容是给virtiofs的服务端添加命令行选项来决定它是否允许mmap。既然都添加了cli开关了,那想必virtiofs应该是支持mmap才对。我想来想去,想不明白,总不能是我挂载选项写错了吧。于是打开/etc/fstab一看,啊?我没用virtiofs,用的是9p。合着我刚才跟空气斗智斗勇来着呗?

于是我花了两分钟在unraid中将挂载点从9p模式改成virtiofs,然后启动虚拟机,果不其然启动失败,因为fstab还是9p,改成virtiofs之后再次重启,qBittorrent一下子就好了。而且挂载点的读写性能也有显著的上升。我的ZFS卷采用3盘raidz1的vdev,一共有两个,总共6个盘位。之前不知何故,在读取文件验证哈希时,虚拟机内只能读到60MB/s,多个线程一起读也才勉强140MB/s,我当时以为是虚拟化的性能损失,就没太在意。现在从9p切换到了virtiofs,虚拟机内的读取性能可以达到683MB/s,差不多是这6块硬盘的极限了。

9p vs virtiofs

因为一开始配置挂载点的时候我也没有详细了解9p和virtiofs的区别,所以就选了默认的第一个,正好是9p。今天切换到virtiofs之后解决了问题,于是我想趁此机会了解一下二者的区别。这种时候gemini就派上了用场。

以下内容由gemini 2.5 flash生成,没用pro是因为充不起会员。请批判性地阅读以下内容,如果要做严肃用途的参考,请务必独立查证后使用。本文作者并不为以下段落的误导性信息负责。

根据Gemini 2.5 Flash所说,9p是Plan 9文件系统协议,最初是贝尔实验室在1992年开发。其核心设计理念是“一切皆文件”,即将各种系统组件(如窗口、网络连接、进程)都表示为文件,并通过统一的文件系统接口进行访问和操作 。在QEMU中(unraid系统使用的虚拟化后端),客户端使用9p协议主要通过virtio进行通讯。而9p本质上是一种网络协议 。虚拟机和宿主机之间的通信通过消息进行 。它采用客户端-服务器模型,其中客户端(虚拟机)发送请求消息(T-messages),服务器(宿主机)发送回复消息(R-messages) 。QEMU的9p服务器可以将I/O任务分派给工作线程,从而允许主线程处理其他请求,以实现并发处理 。

9p协议的“一切皆文件”理念,虽然对于Plan 9这样的分布式操作系统来说非常优雅,因为它通过分层命名空间暴露所有资源,但在面对现代应用程序对高级IO原语(例如mmap)的需求时,其局限性便显现出来 。mmap操作与传统的readwrite的字节流语义截然不同,它允许应用程序将文件内容直接映射到内存中进行访问,这是一种随机访问的高性能原语 ,而9p协议围绕流式文件的设计,使其难以在网络边界上高效且正确地表示和传输。这不光导致9p协议的IO性能存在瓶颈,更是导致9p无法完全实现unix文件系统语义的关键原因。即使QEMU的9p实现通过virtio技术来借助内核驱动和共享内存进行加速,其底层协议仍然是网络协议 。网络协议固有的消息序列化、反序列化以及即使在本地通信中也存在的上下文切换(vmexits)开销,限制了其性能。此外,9p协议在mmap支持方面存在具体限制。默认情况下,9p提供只读的mmap功能。这意味着,如果尝试以读写模式打开文件并进行mmap操作,后续的mmap可能会失败 。为了启用写入功能,需要在虚拟机客户端的挂载命令中明确指定cache选项,例如cache=mmapcache=fscache 。如果未启用CONFIG_9P_FSCACHE,内核侧客户端代码会使用generic_file_readonly_mmap,从而导致写操作的mmap失败 。对于qBittorrent这类需要频繁进行文件预分配和随机写入的应用,这种只读mmap的默认行为和对特定缓存选项的依赖,直接导致了下载种子时出现file_mmap的IO错误 。9p的性能也受到msize参数的显著影响,该参数定义了9p服务器和客户端之间最大消息大小 。在Linux内核5.15版本之前,默认的msize仅为8KB,导致性能表现不佳,有时甚至低至12MB/s 。尽管内核5.15及更高版本将默认msize提高到128KB,但对于大多数机器而言,这仍然会限制性能 。通过在挂载命令或/etc/fstab中手动增加msize(例如,msize=262144msize=104857600)可以显著提高速度,但Linux 9p客户端目前将msize上限限制在512KB 。这些限制进一步解释了9p模式下性能不佳的原因。

而virtiofs的开发旨在解决现有解决方案(如virtio-9p)的不足,这些方案基于未针对虚拟化优化的网络协议 。这些旧有解决方案缺乏本地文件系统语义,且性能不足以满足现代工作负载的需求 。VirtioFS的目标是在共享目录树的多个虚拟机之间提供本地文件系统语义 ,这对于轻量级虚拟机和容器工作负载尤为有用 。VirtioFS以FUSE(用户空间文件系统)为基础 。虚拟机内核充当FUSE客户端,而virtiofsd守护进程则作为FUSE服务器运行在宿主机上 。一个半虚拟化的virtio设备virtio-fs负责在虚拟机和宿主机之间传输FUSE消息 ,取代了传统的/dev/fuse接口 。

VirtioFS最根本的创新在于其明确利用了“虚拟机和宿主机协同定位”的优势 。与9p将虚拟机-宿主机通信视为网络问题不同,VirtioFS通过共享内存和直接访问(DAX)技术,将昂贵的通信(vmexits)替换为更廉价、更直接的内存访问 。这是一种从基于网络协议的共享方式向更高效的内存共享方式的范式转变。这种设计选择是VirtioFS实现卓越性能的主要驱动力,尤其对于I/O密集型工作负载而言,因为它最大限度地减少了传统网络文件系统固有的开销,因此能够极大地提高IO性能。同时,VirtioFS采用FUSE作为协议 ,为其提供了“丰富的原生Linux文件系统接口” 。FUSE是一个成熟且被广泛理解的用户空间文件系统实现框架,这使得VirtioFS能够向虚拟机呈现高度兼容且完整的文件系统抽象。这对于qBittorrent这类需要标准POSIX文件系统语义来执行复杂操作(如mmap和文件预分配)的应用程序至关重要。FUSE基础,结合VirtioFS的扩展,使其能够“像本地文件系统一样”运行 ,这正是qBittorrent所需的功能。

性能基准测试清晰地展示了VirtioFS的显著优势。在fio mmap测试中,virtio-9p的mmap模式下,单文件(单线程)性能为28 MB/s,4文件(4线程)性能为140 MB/s 。相比之下,VirtioFS在none + dax模式下,单文件性能达到126 MB/s,4文件性能达到501 MB/s;在always模式下,单文件性能为235 MB/s,4文件性能为858 MB/s 。即使是always + dax模式,其性能(单文件121 MB/s,4文件487 MB/s)也远超virtio-9p 。这些数据表明,VirtioFS,尤其是在启用DAX或always缓存模式时,为mmap操作提供了显著更高的吞吐量 。

即便抛开virtiofs的性能优势,执意使用9p也会造成兼容性问题。9p对mmap操作的默认只读行为以及对特定缓存选项的严格要求,使其在面对qBittorrent这类需要复杂文件操作的应用时,容易出现兼容性问题和I/O错误 。而VirtioFS利用共享内存中的元数据版本表,在无需昂贵通信的情况下为多个虚拟机提供一致的访问 。VirtioFS的元数据版本号通过原子比较-交换操作实现,当版本号发生变化时,虚拟机将刷新其元数据缓存。对应地,如果开启9p对mmap的支持,在遇到多虚拟机访问同一文件的场景时,其主要依赖于宿主机进行仲裁(使用同步锁进行竞争,在频繁发生的场景下性能远不如原子比较-交换操作),并且9p协议本身并不原生提供缓存一致性机制,这意味着如果一个虚拟机在竞争中胜出,其他虚拟机可能仍然持有旧版本的mmap缓存,导致数据不一致、Last Writer Wins(最后一个写入块的客户端会覆盖掉之前所有其他虚拟机的修改,因为它不知道这些修改的存在)以及性能下降(竞争频繁的情况下可能会频繁刷新缓存)。其中last writer wins是破坏数据的主要问题,这可能会使得一些关键性的修改被丢弃,进而导致数据损坏。

总结:用户在Unraid虚拟机上使用qBittorrent时,从9p模式切换到VirtioFS模式后,IO错误的解决和性能的显著提升,清晰地证明了VirtioFS在现代虚拟化文件共享场景中的压倒性优势。

9p协议,作为Plan 9分布式操作系统中的通用网络文件系统协议,其“一切皆文件”的设计理念和基于消息传递的通信方式,使其在处理如qBittorrent这类对mmap和高并发IO有严格要求的应用时,暴露出固有的局限性。其默认的只读mmap行为和对msize等参数的敏感性,导致了性能瓶颈和功能不兼容。即使经过优化,9p作为网络协议的本质决定了其无法完全消除通信开销,难以提供真正的本地文件系统语义。

相比之下,VirtioFS是专为解决虚拟化环境中的文件共享挑战而设计的。它通过以下关键创新实现了卓越的性能和兼容性:

  1. 利用FUSE协议: VirtioFS以FUSE为基础,提供了丰富的原生Linux文件系统接口,使其能够像本地文件系统一样运行,满足应用程序对标准POSIX文件系统语义的期望。
  2. 直接访问(DAX): 这是VirtioFS的核心优势。通过将宿主机的文件内容直接映射到虚拟机内存,DAX绕过了虚拟机页面缓存和传统的I/O路径,显著减少了通信开销,并实现了高效的mmap操作,确保了多虚拟机间共享文件的一致性。
  3. 协同定位优势: VirtioFS的设计明确利用了虚拟机和宿主机在同一物理机器上协同定位的特点,将昂贵的通信(vmexits)替换为更高效的直接内存访问,这是其性能超越9p的根本原因。

因此,对于需要高性能、低延迟以及依赖本地文件系统语义(特别是mmap功能)的虚拟化工作负载,如qBittorrent下载、数据库操作或开发编译环境等,VirtioFS是明确的首选方案。而9p协议虽然在某些轻量级或对性能要求不高的共享场景中仍有其应用,但其在处理复杂I/O和mmap密集型任务时的局限性使其不再是现代虚拟化环境中的理想选择。

以上内容由gemini 2.5 flash生成。请批判性地阅读以上内容,如果要做严肃用途的参考,请务必独立查证后使用。本文作者并不为以上段落的误导性信息负责。

嗯,总之就是virtiofs是一个更加现代化的解决方案,以后就用它了。

PeerBanHelper

这里简单给大家介绍一下这个用来检测并封禁peer的工具:PeerBanHelper。由于最近吸血的不光是迅雷,还有pcdn和idc机房通过吸血bt上传者来平衡上下行流量比。我认为后者比迅雷更加可耻,引用我在搭建NAS时就说过的话

我一直不鼓励大家运行 pcdn 给互联网公司花钱当狗,但愿意当狗是个人自由,因此我只反对这种行为。但为了避免 ISP 限制自己的家宽而刷别人的上传量,这种就属于损人利己的脑瘫行为了,必须要重拳出击。

而PeerBanHelper正是用来解决这个问题的,虽然我对于其实现方式不够认同,但它确实是现行最流行的威胁保护工具。由于家用宽带上行有限,因此我必须保证我上传的每一字节都传给需要的人,哪怕对方下载了但不上传,我这也算是有效共享。而这种刷流量的人在获取到我传给他的数据后直接丢弃,这就是浪费我的上行带宽,绝对不能容忍。

我认为理想的BT辅助工具应该和BitTorrent一样是分布式去中心的。因此我理想的PeerBanHelper应该是采用类似DHT的网络结构,所有peer能够发布自己收集到的数据,并且中继自己从其他节点收集到的信息。这些信息可以使用密钥进行签名来防止伪造,并且通过算法在不同节点的报告中自行决定应该封禁哪些节点,同时算法还应该能够抵御赛贝尔攻击来防止刷流量的人自导自演,或其他人通过这个工具来封禁其他正常的节点。

总之,我理解PeerBanHelper为什么要做成中心化的服务器,因为这种实现最简单。参考I2P、区块链以及其他开放的分布式系统设计,想要设计一个去中心化的分布式系统很简单,但想要让这个系统安全可靠高效且不被攻击和滥用,那就非常难了。也许实现这样一个系统非常困难,甚至不可能,可我觉得我们应当始终心怀对完美事物的追求,这样才会有发展与进步。

由于我进行bt下载的软件就是安装在虚拟机里面,如果再装个docker就显得有些套娃了。当然可以部署在unraid的docker上,但我想让所有与p2p操作的部分都放在虚拟机里面,而的rpm包只支持redhat,所以我就采用了sh脚本的安装方式。安装后去社区的实例上注册个帐号,然后参照官方文档配置即可。其中有一个是否允许服务器下发脚本,虽然介绍说可以更加精准地识别一些威胁,但我还是不喜欢没有经过我审阅的脚本在我的设备上运行,何况PBH的知名度和可靠性远不如BOINC。

不过即便是没有开启下发脚本,PBH还是成功地封禁了那些183开头的IP,至于封禁原因嘛,也很好猜:IDC机房刷流量。

截图 2025-07-20 01-25-41.png

后记

至此我的BT方案应该算是够我用上一段了。虽然上一篇答应大家写我是怎么处理照片的,但抱歉一鸽再鸽,毕竟bt下载这个事儿更加紧急一些,而且防止我忘了,要赶紧写出来赶紧发。所以处理照片的流程就放到下个月啦,一定会写的!

-全文完-

]]>
3 https://skyblond.info/archives/1096.html#comments https://skyblond.info/feed/
【歪门邪道】使用Deskflow在Linux和Windows之间共享鼠标键盘 https://skyblond.info/archives/1094.html https://skyblond.info/archives/1094.html Thu, 03 Jul 2025 21:55:00 +0800 天空Blond 本来想写写照片的处理流程,可是我现在主力是之前装的NUC,而照片则是依赖windows上的adobe。键盘倒是好说,一个机械有线插到nuc上,另一个罗技的蓝牙键盘连到windows上。可是鼠标就只有一个,虽然鼠标本身支持连接两个设备,但本质上还是断开一个连接另一个。Linux的蓝牙不算好用,断开之后重新连接就要好一阵。这时我灵机一动:怎么也应该有个跨系统共享鼠标键盘的东西吧。

一开始搜到的解决方案是Synergy 3,个人用户终极版买断49美元,提供14天免费试用。他们号称提供Linux客户端,实际上截至目前只支持Ubuntu、Debian和Fedora。虽然OpenSUSE和Fedora是近亲,但安装过程提示libei不可用,因为Fedora上libei这个包在OpenSUSE上叫lebei1。通过断开依赖安装之后可以正常启动软件,但实际测试后发现Windows操控Linux没有问题,但Linux上将鼠标移动到桌面边缘不能操控Linux,估计还是依赖库名字不一样,加载失败了吧。没办法,我想花这个钱,可是对方实在是没本事接住啊。

后续经过一番搜索,我发现了这个叫做DeskFlow的项目,它是Synergy 1的开源项目(卖49美元的是Synergy 3,不兼容1)。这个项目的最后更新是在7月3号上午,看来还是有在积极维护的。而且往下看了一眼,他们在OpenSUSE上有专门的打包,这样就不用安装flatpack版本了。

在Linux上安装比较简单:sudo zypper in deskflow即可成功安装。在Windows上的安装则遇到了一些问题,为了装这个软件我前前后后重启了四五次。真是废物Windows。首先Synergy和Deskflow师出同门,因此你得先卸载Synergy,再安装Deskflow,否则你卸载Synergy的时候还得先卸载Deskflow,再卸载synergy,然后重新安装Deskflow,十分麻烦。其次就是Deskflow要求新版本的vc运行库,我之前装过这个库,但是似乎太老了,得用新版本覆盖一遍,据说是因为Windows Installer只会检测你装没装过这个二进制,而完全不看版本号,导致我安装Deskflow时一直卡在Starting service。

虽然安装起来有些麻烦,但用起来并不麻烦。我的主要目的就是利用Linux的键鼠控制Windows,所以启动软件后在Linux上选择server模式,如果启用了防火墙的话,记得在防火墙里添加端口:sudo firewall-cmd --add-port 24800/tcp --permanent然后sudo firewall-cmd --reload即可。默认设置下服务端的端口号是24800,协议走的TCP。通信部分Deskflow使用了TLS加密,但默认是RSA 2048位的证书。虽然堪用,但我还是去Edit -> Preferences里面将key length调成4096了。可惜不能选加密方式,不然高低得从RSA改成ed25519。修改完密钥长度后记得点旁边的按钮来重新生成密钥。

这里需要注意的是Synergy 3和Deskflow都用了24800这个端口。我在开着Synergy 3的情况下启动Deskflow,Deskflow会提示端口被占用,无法启动服务器。关闭Synergy 3之后就没有问题了。

Windows端只要client模式,然后填上服务端的ip就行了。由于共享键鼠这个需求还是受到物理距离的限制,所以用局域网IP就行,我的nuc和笔记本都是固定的局域网ip,没有必要使用tailscale——如果我在北京试图共享键鼠给云南的设备,一般来说我在北京是看不清云南的屏幕的。

第一次连接和ssh差不多,客户端和服务端需要交换公钥。Deskflow会提示用户确认公钥是否相同,用来避免中间人攻击。连接成功之后需要在Linux上的服务端配置里面调成一下两台电脑的布局。虽然我的nuc是双屏,但对于Deskflow来说还是被当成了一个屏幕。根据物理摆放的位置,我将笔记本设置在了nuc的右边,这样我在Linux上将鼠标移动到最右边的时候就可以控制笔记本了。

虽然这个软件功能比较简单,但确实能够提升两台电脑的使用体验。我的nuc是wayland桌面,除了剪切板共享无法使用(对于这个问题我已经见怪不怪了),其他功能都非常好用(说是其他功能,其实就是共享个鼠标和键盘)。在延迟方面我没有测试,但只要局域网不丢包,从我的日常使用来说完全感觉不到延迟。

但需要注意的是,我的日常并不包括在Windows笔记本上打游戏。我认为这种共享肯定多少还是会增加一点延迟的,但即便是打游戏,可能也看游戏类型?反正目前这个方案对我来说已经足够好了。

对了,gnome上默认没有托盘图标了,想在后台运行还得自己装托盘插件。但这件事在我装好系统之后就做完了,所以问题不大。我还是想不明白为什么gnome开发团队要删掉托盘图标。

好啦,以上就是关于Deskflow的使用体验了,毕竟功能较为单一,实在没啥可说的(

以前都是上一个月提前写出下一个月的,然后定时在下个月1号上午发布。结果这次因为6月比较忙,所以忘记写7月的更新了。虽然这一篇比较短,但也不能算水吧,毕竟是真实的需求(目移)。总之这个就是7月份的更新啦。8月份我准备介绍一下我的照片处理工作流,虽然本打算6月趁618买下新镜头,可6月的昆明下了一整月的雨,尤其是一到周末就下雨,根本没有机会出去拍鸟。所以本想着发一些小鸟的照片,但因为没拍到,所以泡汤了。但工作流还是可以介绍的,那我们就下一篇文章再见啦。

-全文完-

]]>
0 https://skyblond.info/archives/1094.html#comments https://skyblond.info/feed/
【随便写写】74 & 2025年春节后到5月底的照片 https://skyblond.info/archives/1093.html https://skyblond.info/archives/1093.html Sun, 01 Jun 2025 09:01:00 +0800 天空Blond 突然想起来春节回云南之后拍的照片还没有发过,赶紧看了一下,好在也没拍什么照片。

因为工作日要上班,而难得的周末又没什么动力出门——要么天气太热,要么刮风下雨,所以春节之后到现在一直没怎么出门拍照片。更何况我这最远的焦段就是250mm,对于鸟类摄影来说完全不够吃。也正因如此,在618趁打折购入180-600之前,我也稍微涉足了一下风光摄影和街景的拍摄。

三月初逛公园

春季里的每一天都是很舒适的——温度不高,太阳不晒,没有大风,也不会下雨。所以三月的第一天我就扛着相机带着独脚架连逛了三个公园。春暖花开的感觉真好。

img

一进公园就看到有只鸟在树枝上,可是因为体型小动作快,而且还是背光,没看清。回家之后查了一下,原来是绿背山雀。我是头一次见到这种鸟。

img

到现在我也分不清这是桃花还是樱花。好像是樱花吧。

img

这一张是在市政府对面的公园里拍到的,这个公园中间有一潭水。想必各位读者从画质就能看出来,这张照片经过了严重的裁切放大,根本原因就是250mm根本够不到。由于距离很远,所以我在取景器里只能分辨出一个物体在动,并依靠感觉来跟踪这个物体。回家一看,哇,是普通翠鸟!我也是第一次看到翠鸟。

img

这个就是老朋友了,红嘴黑头,黑水鸡。

img

本来没想拍,但这狗看着挺喜庆的,主人就在旁边。本着不想给人脸打马赛的宗旨,我通过巧妙的取景和裁切技巧,只留下了狗。看品种应该是柴犬?

img

一看这发型,再一看这黄屁股,黄臀鹎,没跑了。

img

这张是在前往第三个公园的路上拍的。看起来应该是两个狗主人在交流经验。边牧四舍五入可能算是我最喜欢的狗了,因为挺聪明的,而且黑白配色看着干净利落,虽然夏天看着长毛会觉得有点热,但总体来说还是挺可爱的。倘若之后我居有定所了,一定养两只边牧,再养两只缅因猫,然后再种一院子的树给本地的鸟栖息。

img

img

第三个公园平平无奇,只是我余光一扫,等等,这是什么?福瑞要从小抓起!昆明人的精神生活实在是太丰富了口牙!

可惜春天在工作的忙碌中过得飞快,转眼间就没了。

五一劳动节随地大小拍

五一假期我朋友来找我玩,于是我们晚上逛街白天逛公园,四处乱拍。五月四日晚上去白龙潭拍星星,我换镜头的时候没拿好还把相机摔了。好在回家查看了一下问题不大,只是电池仓那部分外壳因为掉落而变形了,我用钳子和锤子还有几张餐巾纸又给砸正了。好孩子可不要学哦,虽然维修相机有板金这种操作,但人家是把精密器件拆出来,单独对外壳校正。像我这样子,如果运气不好的话,很可能会在校正外壳的同时,震动传入机体把cmos什么的震坏了。好在我这个Z50 II也不是啥贵重的机器,我也懒得拿去售后挨刀子,所以就自己处理了。如果各位读者的器材比较金贵,或者比较爱惜自己的机器,那不小心摔了之后一定要去官方售后。

由于拍星星没拍到什么好看的,因此这里就展示晚上街拍和白天去捞渔河拍的吧。

img

这个是晚上没事干出门逛街,抬头一看发现路灯被一堆树叶挡住了。本着来都来了的指导思想,就拍了几张。回家犹豫了半天——删吧,这张看着还挺绿的;可是留着吧,有没啥意境可言。所以就让Adobe整了个自动,我简单又调了调。我也不知道这张照片算好看还是不好看。

img

这张也是,而且不如上一张,路灯那里过曝了,而右边因为黑漆漆一片所以欠曝了。但我感觉这个场景的构图还是可以的,应该吧。嗯。。。看得出来我对于街景确实没啥天赋。不过后面还有风光呢,看到风光就知道我更没什么天赋了。

img

这几张都想拍出点光与影的感觉,可是吧,标牌太亮了,我出门也没带独脚架,多重曝光懒得搞,所以就这样了,也不是很理想。

img

这张可能是我晚上街拍最满意的一张。路过了一家疑似准备关门的小鹿噘嘴。可能这张照片也没啥构图和意境可言,但我觉得标牌以及夜晚的蓝色调和店内的灯光颜色形成对比,也不算完全没得看是吧。

给要买Z50 II的读者提个醒:这个机器的高感相当于没有,虽然自带了闪光灯,但总不能对着人随地大小闪吧,而且闪光灯范围有限。由于cmos是祖传的,所以iso稍微过高(虽然iso不直接导致噪点,但自动iso时iso过高通常意味着进光量不够,从而导致噪点产生)噪点就爆了。上述照片全是经过DXO PhotoLab 8处理过的,你别说,这软件要价二百多美元,真的没有一分钱是冤枉的。这次还拍了一张徳和的广告牌,周围没有直接光源,全靠广告牌的亮光拍了一张,本来原本都分辨不出颜色了,而且raw全是噪点,可是我放到dxo里面一处理,不光降噪效果绝佳,而且颜色还原也相对能看。至于为什么没放出来,因为我按扫描件那么拍的,我怕放出来之后人家说我侵犯版权。

晚上街拍到此结束,下面是在捞渔河拍到的。

img

这个鸽子之所以能数毛,是因为这是小摊贩弄来卖鸽粮的,不怕人。

img

这张白鹭就不一样了。5月的滇池没有了海鸥的造访,显得有些冷清。我左看右看,只在远处看到一直白鹭站在木杆上。

img

飞天白鹭。

img

这张感觉也不错,我赶在小孩哥来嚯拢水之前拍下了相对平静的水面。

img

这张是水面倒影,我把它后期又翻转了一次,对应在岸上看到的景象。好像也没什么出奇的,没有拍出我想要的意境(也许我想要的意境根本不存在?)。

img

发现的为数不多的鸟,黄臀鹎。看体型可能是幼鸟?

img

夜鹭死苦。是夜鹭吧,应该没认错吧。

img

一行白鹭上西天。好像不对,是上西天还是上青天来着?我这点知识啊,全还给语文老师了。那以前的学费什么时候退一下?

img

应该是小䴙 ( pì ) 䴘 ( tī )。第一次看到这种鸟。

img

这不知道谁扔到路边木桩子上的花,觉得有点意思,就拍下来了。回家品了半天,是有点意思,但不多。

img

还是水面倒影,像是PhotoShop里面某种风格化滤镜。

img

蝴蝶,品种未知。虽然蝴蝶的速度没有鸟快,但是蝴蝶的行动轨迹更加随机。所以跟了半天才拍到这一张,而且由于栈道比较窄,还要提防别连人带相机掉河里。

img

捞渔河的树林,随便拍拍,没啥意境。

五月中旬探访阳宗海

五月中旬我的朋友们租了辆车,问我要不要出去玩。一开始我是拒绝的,因为开车太累了。但架不住他们一直问,所以还是开了。去哪呢,去了阳宗海。结果路上差点被半挂逆行超车一把带走。现在回想起来还是一身冷汗,幸好当时我运气比较好,往右躲闪之后压到路边的立柱,好在立柱右边到排水渠还有两个轮胎宽的空间,我刚好把大货车让过去。之后也没有惊慌地立马向左打方向,不然非得翻了车不可。

阳宗海整体感觉一般,没什么特别出众的地方。

img

这个好像是国家能源集团旗下的阳宗海发电厂吧。

img

虽然是阳宗海,但更像是一片湖。这是水上的帆船项目,可以花钱体验。

img

放大之后的大烟囱。白色的烟应该主要是水蒸汽,毕竟人类文明进化了这么多年,发电还是离不开烧热水。

img

这是广角拍的,可以看到250mm的效果还是可以的。

img

这是阳宗海朝南的一侧,不知道为什么,这一侧水汽很足,显得湖面发白。

img

在回来的路上偶遇鹊鸲抓到一直虫子。

后记

这几个月没怎么出去拍照,主要还是周末太短了。周六刚从一周的疲惫中缓过来,周日就要为下周的忙碌做准备。希望我司能尽快践行一下极为先进的上四修三工作制。

由于618快到了,如果我关注的商品打折的话,我可能就会顺势买一颗尼康的180 600的镜头,虽然不是s line,但相比100 400,我觉得拍到比拍好更重要。其他想买的嘛,配套的爱普生打印机,之后就可以自己打印照片然后当成明信片寄给朋友了。之前一直在用富士的冲印服务,虽然效果不错,但是架不住太贵了。30张照片要寄给5个人就得二三百块,想来想去不如自己买个打印机划算——立等可取,后期开销少。

好啦,这篇文章至此就先告一段落了。我们下一篇见!

-全文完-

]]>
1 https://skyblond.info/archives/1093.html#comments https://skyblond.info/feed/