鸦鸦的巢穴 https://crowya.com/ 在乌鸦统治的世界里,洁白的羽毛是有罪的。 Wed, 18 Mar 2026 17:14:40 +0000 zh-Hans hourly 1 https://wordpress.org/?v=6.9.4 https://img.crowya.com/wp-content/uploads/2023/05/cropped-niaolei.png?x-oss-process=image/resize,m_fill,h_32,w_32 鸦鸦的巢穴 https://crowya.com/ 32 32 又活半年 https://crowya.com/4364 https://crowya.com/4364#respond Wed, 18 Mar 2026 16:54:38 +0000 https://crowya.com/?p=4364 活到2026年,终于如愿以偿地玩上了生化危机9。作为0~8代无一缺席的粉丝,这次迫不及待地在首发就以三百多大洋 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往又活半年

]]>
活到2026年,终于如愿以偿地玩上了生化危机9。作为0~8代无一缺席的粉丝,这次迫不及待地在首发就以三百多大洋购入游戏本体。

RE9的快乐

开局是惊艳的,依然是发丝清晰可见,场景细致入微,但是里昂老了,虽然风韵犹存,但是我还是更怀念2和4的奶昂。另一个遗憾是艾达从始至终没有出现,虽然有新的角色格蕾丝,怯懦口吃颇有几分可爱,但是艾达已经成为了a part of me i can’t let go.

RESIDENT EVIL requiem 2026_3_1 23_37_30.png

RESIDENT EVIL requiem 2026_3_1 23_37_50.png

RESIDENT EVIL requiem 2026_3_10 23_49_47.png

RESIDENT EVIL requiem 2026_3_12 23_18_17.png

慢悠悠搜刮的话,差不多是13个小时的通关流程,每天间歇性玩几个小时的话,差不多一两周的快乐时光。但是通关后的空虚,可能要长达两个月。很难再找到这么符合我口味的高质量游戏了。

我是从原版那个年代过来的,原版的乌鸦,可以用枪击杀,落地变成金币,原版的艾达,是毫不留情抢夺我胜利果实跳上直升机的坏女人,一袭红衣两缕飘带,这个形象挥之不去了……

3D打印的快乐

3D打印机是我买过最正确的东西。我是抱着智商税的怀疑下单的,结果它真的解放生产力。甚至靠着它打印出来的大疆nano配件在小红书开店小赚了一笔,直接售罄,已经赚回了打印机的钱。(虽然炒股又亏了)

1773843571902.jpg

1773843571940.jpg

1773843571978.jpg

1773843572018.jpg

销量好的时候每天下班要发十单左右,来不及做现货,只能下班继续加自己的班,那段时间感觉很命苦,但是是真暴利,成本6.21元,运费5块左右(偏远省份更贵),售价38,就这样我大概卖了100多个……

磁吸手环成本:

  1. 圆形包胶磁铁(磁力加强到极限值12kg)4元
  2. 拍拍带手环 1.5元
  3. 圆形引磁片两片 0.15+0.08元
  4. 黑色包装盒 0.24元
  5. 3D打印成本 0.1元
  6. 螺钉 0.04元
  7. 其他 0.1元

但是由于是懒人主义+完美主义+同行竞争+玻璃心+悲观主义,我卖完第一批库存后还是收手不干了,现在市场应该已经被其他竞品吞没了,机会窗口也就那么一两个月。懒是因为单打独斗+扮演客服真的让人心神不宁,时不时来个咨询都要及时回复,上班时间很难回复;完美主义是我认为产品本身不完美,不够轻薄,大疆Nano本身也不完美,为不完美的产品做配件是不可能完美的;同行竞品也确实多,他们甚至更暴利!但是他们也确实宣传图精美,而这是我没有时间改进的,哪怕在AI时代,我也没有多余力气去调教;玻璃心是因为有极为挑剔的用户差评并投诉了我的拼多多店铺,虽然其余95%都是好评或沉默,但这加剧了我的不完美主义……悲观主义是我害怕下次进货没有这么好的流量,库存烂手里,于是我选择了见好就收……于是我草草结束了这次从设计、采购、生产到销售的完整实践……虽然几个月后依然有买家追着问何时补货……真的很感激他们的认可,但是我真的力竭了……

寻找下一个商机真的很难……有的时候太想赚钱,反而赚不到钱,这次商机,完全是恰好对运动相机感兴趣和恰好有3D打印机的双重偶然。真的是有心栽花花不成,无心插柳柳成荫。

除此之外也打了很多很多实用的工具和摆件,比如小米鱼缸增高架、垃圾袋悬挂支架、桌边收纳盒、nano三脚架兼手持握把、打字机抽纸盒、游标卡尺、豪宅模型、皮划艇模型、王冠、花瓶、盖瑞蛇……

1773846292711.jpg

1773847399292.jpgRESIDENT EVIL requiem 2026_3_12 21_09_13.png

简直就是生化危机的周边!这个打字机抽纸盒我花了一周改良,甚至还在拓竹社区上传了配置,还有下面的三脚架也是!

1773846292773.jpg

1773846292840.jpg

1773847110118.jpg

RESIDENT EVIL requiem 2026_3_1 11_46_26.png

虽然这栋小房子和游戏里的疗养院不能说是一模一样,也算是同一种风格吧,更温馨,超喜欢!

1773582332049.jpg

1773846659399.jpg

今年以来打印的东西实在是太多了,实在不能每张图片都放全了……所以说3D打印机真的不是智商税!是第一生产力!拓竹能发财我是一点也不意外,可惜没有上市,不然肯定要重仓!

口袋照片打印机

除此之外小米的热升华打印机也是极具幸福感的好东西,虽然没有靠它挣到钱……

1773845624437.jpg

从Pinterest上打印了好多康纳的美照……当然也可以打自己的……丑照!

没有买拍立得,是因为以我的拙劣摄影技巧,废片率太高。

断舍离

今年是我的断舍离元年,物质观有重大转折,从囤积综合征转变为身外之物皆可弃的流浪主义——一个行李箱装下所有,保持随时随地可以踏上旅程的状态(毕竟要追随里昂的步伐可得轻装上阵)。

经常吃灰的switch和kindle已经咸鱼出掉了。

电脑和掌机游戏不互通实在不方便,墨水屏不能听书刷小红书实在不方便,于是想换steam deck和海信A10了,还没剁手,后者据说下半年才会出。

虽然物品还在努力删减中,但我相信极简主义已经说服了我——

有什么东西不是花钱能买回来的呢?花几块钱就能买到的东西,留着干啥?塑料袋、空瓶都是废物,自从批发了几百个整齐叠放的漂亮袋子就再也没有囤塑料袋的习惯了,自从买了漂亮的玻璃罐子就再也没有囤空瓶的习惯了;就连3D打印机这样的大件,也完全是工业标准品,就算地震了房塌了也可以随时东山再起卷土重来,没有必要视为不可割舍的一部分,只要有存款,黄金才是唯一值得囤积的东西!1773850933520.jpg

到哪里去

如今的我已经不再纠结从哪里来,只常常梦想到哪里去。这半年间我踩点了好多地方,在湖州爬了山,在东太湖看了日落,在独墅湖划了浆板,在宁波东钱湖看了日落,在杭州西湖坐了手摇船,在钱塘江没追上日落……我的梦中情乡也在苏州吴江和杭州滨江之间反复横跳……

虽然看似还是去了一些地方,但真实的情况是大部分时间还是家里躺着……

Monday,work & sleep
Tuesday,work & sleep
Wednesday,work & sleep
Thursday,work & sleep
Friday,work & sleep
Saturday,sleep~
Sunday,sleep!

陷入虚无

随着养鱼养猫成为日常生活的一部分,那种初遇时的新鲜感也在迅速流失,哆哆的猫砂盆换了一个又一个,啵啵的鱼缸清洗了一次又一次,长期复购的品牌和鱼缸造景也逐渐稳定下来。啵啵会钻进它的洞穴,哆哆会在键盘上打滚……只能趁它睡觉的时候偷偷码字喽,写这篇文章的时候哆哆正在熟睡,嘘!

虽然这些可爱的瞬间仍然能让人会心一笑,但是嘴角上扬的弧度逐渐变小,撸猫喂猫和在鱼缸前发呆已经成了例行公事。有那么几个时刻似乎理解了有钱人的空虚,也许拥有更多,也会觉得寡淡无味吧。当漂亮房子、漂亮老婆、漂亮饭变得唾手可得的日常基线,就会想要更多。但是他们随时可以踏上新的旅途,尝试新的运动,或者发展新的relationship……而打工人不能。

随着不停地画板改板投板调板,越发地对技术的本质——人人都能做但有些人不愿意做的dirty work——产生了疲惫。于是愈发地发现人类工作30年是一种酷刑,这30年间将无数次盼望衰老,错过四季,时间上的不平等分配是人类生产资料不平衡的终极本质。但我也渐渐想明白了自己最需要的一种自由是时间自由。

随着文章更新的频率越来越低,我不得不承认我的曾经引以为傲的精力正在迅速流失,一切的意义正在黯然失色,或者俗不可耐地聚焦到金钱上,然后献给股市和彩票的镰刀,人性的贪嗔痴一个都逃不掉,最终成为一个无聊的大人。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往又活半年

]]>
https://crowya.com/4364/feed 0
服务器廉价续费迁移教程 https://crowya.com/4354 https://crowya.com/4354#comments Sat, 24 Jan 2026 13:24:14 +0000 https://crowya.com/?p=4354 优惠价格结束的这一天终究还是到来了,打开一看续费价格飙到一千多了,这哪受得了! 但是兜兜转转发现阿里云又有别的 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往服务器廉价续费迁移教程

]]>
优惠价格结束的这一天终究还是到来了,打开一看续费价格飙到一千多了,这哪受得了!

但是兜兜转转发现阿里云又有别的廉价套餐了,99一年,不知道能续费多久,先上车再说~

传送门:云小站_专享特惠_云产品推荐-阿里云

新购的服务器是ECS,地域选了华东1杭州,旧的服务器是轻量应用服务器,地域在华东2上海,这就涉及到跨域跨产品类型迁移,就得老老实实转移文件了。

服务器迁移至少应该有三种方式:

第一种是系统盘层级的快照,相当于直接把系统盘搬家。

第二种是宝塔面板内部的一键迁移方式,大概是宝塔面板重新下载安装到新服务器再帮你自动复制文件。

第三种是网站级别的备份还原,手动把wordpress数据库和文件夹搬过去。

如果运行了不止一个网站,那肯定是快照最彻底了。我用的就是阿里云的磁盘快照功能,然后创建镜像,再共享到ECS,再从华东2上海复制到华东1杭州,这样就得到了一个在华东1杭州的镜像了。

接下来购买服务器的时候直接选自定义镜像,列表里就有我们刚创建的镜像了。实例启动后数据盘就完全搬过来了。如果你先买了服务器,后创建的快照,不要慌,问题不大,也有办法重装系统。在ECS实例里面,点击“资源变配-镜像操作-更换操作系统”就可以选到你的自定义镜像重装,好像会给你直接换个数据盘来安装。

这个时候输入新的公网IP,应该是能直接进入wordpress。但是还有两个操作别忘了:防火墙的端口设置也要照搬过来,否则宝塔面板是进不去的;还有域名解析也要更改到新的公网IP。

最后PING域名,成功解析到新IP,并且打开网站一切正常,搬家结束。

至于为什么偏爱杭州,我最近是真的被杭州的地理条件迷住了,我宣布它是我的梦中情乡,至少在自然环境上,是优于上海的,毕竟钱塘江和西湖群山真的太美了。

已经把杭州地图挂墙上了。每天看几眼就又想努力了。

这是从一个博主那要来的杭州高清地图,可惜水的颜色太寡淡了,试了颜色替换,准确度不是很好。也许以后会重新折腾ArcGIS吧。这个色号是我精挑细选了上千年的结果:#81c5d2

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往服务器廉价续费迁移教程

]]>
https://crowya.com/4354/feed 5
AD原理图添加ROOM及模块复制的方法(PCB更新不删除) https://crowya.com/4333 https://crowya.com/4333#comments Thu, 11 Sep 2025 09:25:12 +0000 https://crowya.com/?p=4333 这次终于不拖延了,教程来了!已在AD15和AD22中亲测有效,界面略有差异,但步骤都是通用的。 核心思想是在原 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往AD原理图添加ROOM及模块复制的方法(PCB更新不删除)

]]>
这次终于不拖延了,教程来了!已在AD15和AD22中亲测有效,界面略有差异,但步骤都是通用的。

核心思想是在原理图设置class分类,通过class自动添加room,通过room实现模块批量布局走线。

AD原理图添加ROOM

第一步:修改工程设置

点击顶部“类生成”的选项卡,自动生成的全部取消(解决了每次画PCB都有一个初始ROOM的问题,这个ROOM不会再自动生成了),用户自定义的全部勾选,注意看下方小字,提示你在哪里定义,ClassName是器件的一个parameter参数,不是description也不是comment。

下一步就是批量选中一个模块的所有器件,增加一个parameter参数。

注意过滤掉线等杂质,只选元器件,然后新增的参数名叫ClassName(不区分大小写),这个单词是固定的,不能乱改,至于具体的类别名称随便取,比如我这里取名叫“模块1”。

模块2、模块3同样的操作……

然后就是激动人心的更新PCB时刻了。

更新列表会自动添加相应的ROOM,以后再更新也不会被删除,列表干干净净,强迫症大快人心。

模块批量复制(自动布局布线)

下面讲讲模块复制的方法,也就是ROOM COPY。前提是第一个模块得自己画好。

首先把每个模块都用ROOM包裹起来,如果ROOM尺寸过大可以用自动包裹调整一下,一般是器件周围的最小矩形块。

然后就是最关键的一步,通道复制。

上面这张图全是重点,首先你要找到PCB LIST这个面板,一般在右下角菜单。

然后复制Channel Offset那一列到下一个模块粘贴,有的AD版本可能要打开edit模式。(注意,这是AD自动布局的核心逻辑:只要通道一致布局布线就完全一致。)

然后就是ROOM COPY(快捷键DMC),先点击模板ROOM,再点击要布局的ROOM。

这个界面的参数需要自己摸索,不同的复制方式细节有所不同。

得到理想的结果,大功告成↓

如果失败了,大概率是通道编号不对,没有对应上,再检查检查吧~

如果元器件封装丝印翻转到背面了,那可能是软件bug,需要自己更新一下封装库,或者手动调整一下。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往AD原理图添加ROOM及模块复制的方法(PCB更新不删除)

]]>
https://crowya.com/4333/feed 2
2025幸福报告 https://crowya.com/4321 https://crowya.com/4321#comments Sun, 27 Jul 2025 12:17:19 +0000 https://crowya.com/?p=4321 20250320这一天,我有了自己的猫咪。 首次见到它的那一天,它在快递间无家可归,喵头喵尾地渴求人类的施舍。 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往2025幸福报告

]]>
20250320这一天,我有了自己的猫咪。

首次见到它的那一天,它在快递间无家可归,喵头喵尾地渴求人类的施舍。

询问一番才得知,是一个善良而富有爱心的同事曾经收养过的已经做过绝育的公猫,由于家里已经养了四只猫,实在无力负担,打算放归自然。即便如此,他依然每天在楼下添置猫粮,寻一有缘人把它领走。

于是,贪恋猫色的我自告奋勇把它掳回了家。那一天,博客里的虚拟宠物终于在现实世界里有了物理实体,洁白的毛色仿佛是一种宿命的连结。

公猫阉了就是公主,给它千挑万选了一张橙粉色小床,原厂已经停产,在闲鱼上才好不容易买到。

原来养猫并没有想象中麻烦,新手养猫无非就是解决“吃喝拉撒睡”的问题,一碗水,一碗猫粮,一盆猫砂,足矣。至于睡觉,猫猫其实并不爱睡猫窝或者小床,它更爱和人睡在一起,就像婴儿离不开母亲那样。如果是极简主义者,碗可以用现成的,猫砂盆可以用大号纸箱或者塑料箱,只需要购买猫粮和猫砂这两种耗材而已,如果有个院子的话,可能连猫砂都不需要了。我的咪咪最喜欢的猫粮是渴望六种鱼,但是价格有点小贵,目前在寻找性价比更高的鱼味猫粮,但也许一分价钱一分货吧,从营养成分来看也许确实是贵的好。平时人吃不下的食物也可以分享给猫咪,但猫猫不喜欢口味太重的东西,太咸太辣太油都不爱吃,它更喜欢食物原本的味道。目前发现它挺爱吃奥乐齐的盐烤青花鱼。

如果是懒人养猫,可以入手全自动三件套:自动饮水机、自动喂食器、自动猫砂盆。有了这三样东西基本可以做到零负担养猫,至少外出一个小长假可以无人托管。如果足够勤劳的话,也可以每天手动换水、加粮、铲屎。目前小米有宠物饮水机和宠物喂食器两件套,但还没有推出自家的猫砂盆。前两者价格已经相当便宜,我是十分推荐入手的,而自动猫砂盆是构造最复杂的也是最贵的,技术路线也有很多种,我还在观望状态,目前还是手动铲屎,可能搬新家后再考虑升级吧,希望小米早日补齐这个品类。

对于普通的猫砂盆,高度就是硬道理,作为新手麻麻还是踩了不少坑的,一开始买了个三层循环过滤的浅盆,结论确实是智商税,满盆的猫砂很重,如果要提起第一层还是需要持久臂力的,并且需要像炒菜那样颠盆才能过滤下去,即使过滤完了也需要清洗盆体才能放入底层继续使用,不然会有缝被堵住,还是挺麻烦的,最麻烦的在于,猫咪会刨砂,浅盆是一定会洒出来的,每天都要扫地,即使有扫地机器人都不一定兜得住。所以后来还是更换了加高款半透明蜜桃粉猫砂盆,自带一个小垃圾桶可以铲屎,和我的玫瑰金猫砂铲也是绝配。

至于猫砂的选择,新手一般从豆腐砂开始,最终过渡到矿砂。根据我的经验,所有的植物猫砂都会腐坏变臭,包括豆腐砂、木薯砂、混合猫砂等,但优点是可以冲马桶。无机物矿砂则相对味道较小,但是避雷膨润土砂,粉尘极大,所以最优选是矿砂,矿砂兼具不臭和无尘的优点,但是裹屎能力和矿砂颗粒大小有很大关系,颗粒越细包裹能力越好,颗粒粗的几乎就是不沾屎,等于无用。好的矿砂一定是裹的严严实实的,如果不是,果断换牌子吧。矿砂不可以冲马桶,但实践下来其实冲马桶更费劲,不冲马桶反而省事,因为猫砂盆一般都不会放在厕所里,而是阳台那种通风好的地方,每次把猫砂盆搬到厕所铲是很费劲的,而且倒进马桶、冲水、等溶解也是漫长的过程,就算可以冲一下子扔很多进去也是有堵住的风险的,平添烦恼,不如垃圾袋打个结,直接扔垃圾桶,也是没味道的,还不用反复搬运猫砂盆。

20250330的周末去了趟千岛湖,买了一包小鱼干,果然家里有崽子觅食的时候就会考虑更多~

20250420这一天,猫猫有了鱼的陪伴。

一开始有十条小鱼,但是由于红宝石鱼过于凶悍,别的小鱼陆续伤亡,最后只剩它住上了独栋别墅。

鱼缸也是小米,有灯光、水泵和过滤系统,可以自动喂食。后来我把鱼缸从黑色换成了白色。

20250408重温童年回忆,通关了生化危机0~8。

20250509收纳癖发作,迷恋上了侧开折叠箱,买了很多箱子。

20250531收纳癖发作,迷恋上了活页本,给了说明书一个家。

20250608跟风考了电子信息的教资,据说可以退税~

20250628和千岛湖认识的小伙伴一起清蒸帝王蟹,一锅真的炖不下~

20250720通关了GTA5。

忘记是哪一天,偶然发现一个很漂亮的神秘图样——扶桑树

20250727,看完了爱伦坡的《乌鸦》,至此拖延症终于完成了一个心头夙愿。

以我的个人品味筛选出以下几个短篇值得一读:

  • 变态虐杀
    • 《黑猫》:满分杰作!精准还原虐猫心理,叠加杀妻、黑猫还魂复仇恐怖气氛,TOP1必读篇目!
    • 《陷坑与钟摆》:变态刑法,脑洞大开,重口味不可错过!
    • 《一桶蒙特亚白葡萄酒》:地窖囚禁杀人,情节略平淡。
  • 推理解谜
    • 《金甲虫》:解谜寻宝,炫技之作。
    • 《莫格街凶杀案》:侦探推理小说始祖。
  • 航海探险
    • 《莫斯肯漩涡沉浮记》:莫斯肯!赫尔辛根山与莫斯肯岛!三体圣地!怎可错过!语言极其绚丽,想象力极其丰富,爱伦坡的物理知识非常严谨!科幻迷和航海迷必读篇目!
    • 《瓶中手稿》:航海遇难日记……
    • 《气球骗局》:热气球横穿大西洋!着重点居然是控制系统设计……又一物理知识的炫技之作。
  • 科幻启蒙
    • 《与一具木乃伊的谈话》:古埃及的香存技术……冬眠技术的原型
    • 《凹凸山的故事》:催眠、幻境、现实……很奇幻的糅合
  • 美女之死
    • 《丽姬娅》:邪恶的借尸还魂之术
    • 《椭圆形画像》:是杰作也是遗像
    • 《厄舍府之倒塌》:活埋妹妹破土重生
  • 幽默讽刺
    • 《眼镜》:美娇妻变老太婆
    • 《塔尔博士和费瑟尔教授的疗法》:精神病院被病人统治
  • 意境美学
    • 《乌鸦》:爱伦坡最得意的诗歌,建议读英文原文。nevermore!
    • 《红死病的假面具》:哥特美学?
    • 《埃莱奥诺拉》:亚当夏娃的世外桃源……

传送门:
微信读书链接:乌鸦(果麦经典) – 埃德加·爱伦·坡 – 微信读书
Z-Library链接:乌鸦爱伦坡短篇小说精选-曹明伦译-果麦经典

2025已经过去了一大半,也许还发生了一些有趣的事件,但由于懒癌的糟糕习惯未能全面而及时地留下痕迹,那就这么结束吧~好好睡觉,活到明年就能玩上生化危机9了呢!

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往2025幸福报告

]]>
https://crowya.com/4321/feed 22
NAS入坑笔记 | 网盘+相册+影视库+软路由 ALL IN ONE https://crowya.com/4249 https://crowya.com/4249#comments Mon, 20 Jan 2025 16:49:23 +0000 https://crowya.com/?p=4249 前言 在一个平平无奇的下午,当学弟向我要文件而OneDrive无力地转圈圈的那一刻,我决定入坑NAS。 起初我 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往NAS入坑笔记 | 网盘+相册+影视库+软路由 ALL IN ONE

]]>
前言

在一个平平无奇的下午,当学弟向我要文件而OneDrive无力地转圈圈的那一刻,我决定入坑NAS。

起初我并不晓得NAS有什么别的功能,我单知道它可以代替网盘和相册,至于后面的影视库和软路由,完全是意料之外的惊喜。

中年人幻想的NAS使用场景应该是有老婆有孩子有新家之后打造一个专门的机柜来供奉它,作为家庭的网络和数据中心,存一些宝宝照片和4K影片,局域网内所有设备互联互通,还能直接访问Google……然后作为家里的信息化专员,被老婆夸能干,还要给我一个爱的抱抱……当我流着哈喇子从办公桌上抬起头时,望见黑黢黢的屏幕里反射出的呆头晃脑没睡醒的女人,突然意识到一个可悲的事实,我可能一辈子不会有老婆……

于是我决定不再等待我那未曾谋面的老婆,提前完成这个计划——趁着双11下单了绿联DXP4800和两块希捷酷狼的4T硬盘。

本来以为一个周末能玩腻,结果一个多月过去了,功能越折腾越多,坑越挖越深,光是这篇文章就断断续续写了一个多月,终于在春节前草率完结——先写个不完美的垃圾出来,然后信任读者的悟性。

硬件选购

NAS

简单做了功课,消费级NAS的主流市场已三分天下:群晖、极空间、绿联(其他品牌由于名字不合眼缘被笔者非常主观地抛弃)。如果你是等等党可以再等一下尚未出世的小米NAS。

群晖的性价比是极低的,虽然他是老牌厂商但谁买谁是冤大头,毕竟NAS这个东西,完全和电脑机箱一样可以自己组装搭配,硬件买贵不划算,而且从科学的角度讲,群晖的塑料壳从散热上就是劣势,工业界有个说法,温度每升高10℃,电子器件寿命减半,那为什么不用更低的价格买个金属机壳呢?如果你是软件党,就是迷信群晖的系统,那完全可以装个黑群晖,但,我依然觉得群晖的软件系统也已经过时了。下面是群晖和绿联的UI对比,前两张是群晖APP摘自小红书,后两张绿联APP是笔者亲自截图。

最关键的一点是,群晖的功能非常分散,没有统一的入口,可能你需要装N个APP才行,这对于强迫症来说恐怕是难以忍受的,更别说分享给你的假想老婆使用了,恐怕一个平底锅就飞过来了。

而绿联的网盘、相册、影视库全部集成在了同一个APP中,用户只需要一个账号就能具备全部访问权限,除此之外还有音乐库、docker、虚拟机、下载器等功能,都是ALL IN ONE,只有软路由需要单独配置,不过这个一般不用老婆操作,只要我们自己搭建就好啦,其他家庭成员只需要使用面向小白的用户UI,从这个角度来看绿联云APP的功能已经全覆盖了。

至于极空间,在软件方面和绿联应该是相同的理念,但是由于外观不合眼缘被笔者非常主观地抛弃了(个人认为极空间的前盖板非常累赘,长得和投影仪一样没有区分度)。

1736263143724.png
(左一绿联,右一极空间)

综上所述,绿联是目前国产消费级NAS之优选。但,我还是很期待小米整个白色机箱出来,再把工艺和性价比卷一卷。不过总有一拨人,依然把群晖当作精神领袖,丝毫嗅不到新的风向,就像油车被新能源卷死的前夜那样。如果只是单纯喜欢经典,那很正常,毕竟每个人喜好不同,但我最看不惯的是某些群晖用户非要跑到其他品牌用户面前拉屎,连人家UI都没见过,就diss绿联只会做充电宝云云……大家都是同样的硬盘同样的插槽,用同样的通信协议控制电压电流,有个说法是NAS稳定性取决于供电电压波动和电源纹波,要论电源,绿联做了这么多年充电宝充电器,都是相通的东西,其技术积累恐怕已经胜过某些组装厂了。

UPS

说到供电,UPS(Uninterruptible Power System,不间断电源)还是有必要备一个的,毕竟机械硬盘怕掉电损伤,搞不好跳个闸,停个电,拔个插头,心里总是不安稳。由于UPS需要和NAS通信,不一定是通用的,根据NAS官方的推荐列表来选购就可以了,比如我买的是施耐德APC BK650M2-CH。UPS通常不止一个插座,你可以理解为带电池的大号插排,路由器的插头也可以安排上,这样断电后也许还能继续联网给你报信。

NAS入坑了,UPS还会远吗?_1_巫鸦筑巢_来自小红书网页版.jpg

刚安排上UPS,就经历了一次清晨七点园区停电维护,UPS顺利通过了考验。根据我的经验,即使通知停电一天,实际停电时间一般也不超过几分钟,可能就是合个闸的时间,不会一直断电,只是当天可能会反复断电几次,每次都很短暂,所以NAS自动关机时间可以设置长一点,比如五分钟或者十分钟,只要撑过施工期来电了就不用关机了,避免服务中断。就算一直停电,UPS也会在电池耗尽前给NAS发出警告,这个时候NAS就会停止硬盘读写然后自动关机(绿联称作待机模式),相当于软着陆。

软件配置

成品NAS的方便之处就在于操作系统和必备软件都给你安装好了,而且提供可视化界面,省去了大量折腾时间。不过NAS的系统都是基于Linux的,为了解决各种bug,还是需要有一定的动手能力的。不过别担心,本文整理了最初阶的常用知识,点此速查:Docker入门笔记SSH命令笔记完整的NGINX配置。另外别忘了还有万能的ChatGPT!

总体架构

先给出整体轮廓,后面再介绍配置细节。

系统架构

NAS (4).png

网络架构

网络 (1).png

文件架构

AList.png

网盘

这个功能就是系统自带的文件管理器,没什么好说的,傻瓜式操作。支持分享和收集、权限管理,有回收站功能。NAS网盘的空间取决于硬盘容量,速度取决于你家宽带,可视为无穷大不限速。

双十一玩具开箱_5_巫鸦筑巢_来自小红书网页版.jpg

我目前只有两块4T硬盘,组的是RAID1。RAID1是一比一备份,逻辑上最容易理解,其他的RAID方式过于先进和灵异了,我暂时还没搞懂它们的工作原理,但我相信简单即可靠。除此之外,我的用户文件夹是定期自动备份到阿里云盘的,所以我的鸡蛋同时放在三个篮子里。如果你只需要备份到百度网盘,官方的网盘工具已经可以实现了,但需要开通百度的NAS会员(我已经氪金试过了,目前这个网盘工具bug较多,不推荐),后期也极有可能支持阿里云盘,但如果你不想花钱的话,就装个AListTaoSync吧。

Docker入门笔记

在docker里新建一个名为sync的项目,docker-compose配置如下:

services:
​
    alist:
        image: xhofe/alist:latest
        container_name: alist
        network_mode: host
        # ports:
        #     - 5244:5244
        volumes:
            - ./alist/data:/opt/alist/data
            - /volume1:/volume1
            - /home:/home
        environment:
            - PUID=0
            - PGID=0
            - UMASK=022
            - TZ=Asia/Shanghai
        restart: unless-stopped
​
    tao_sync:
        image: dr34m/tao-sync:latest
        container_name: taoSync
        network_mode: host
        # ports:
        #     - 8023:8023
        volumes:
            - ./taoSync/data:/app/data
        restart: always
语法解读

image是镜像源,默认从DockerHub拉取,如果下载不了参考绿联的加速URL配置

container_name容器名随意取。

network_mode可以是host也可以是bridge,host模式与宿主机同IP,bridge模式是宿主机的子网,推荐host,简单粗暴,可以解决后期大多数网络玄学问题。而且下载器、p2p、ipv6等场景必须host,简单起见,我建议所有docker都用host。host模式下无需配置容器层面的端口映射,直接访问IP:端口号就是。bridge模式下要把宿主机IP端口映射到子网IP端口。

volumes存储映射是重中之重,前面是NAS里的路径,后面是容器里的路径。./是相对路径,相对于docker-compose.yaml所在目录,不要漏掉这个小点,非常容易被忽视!只有/开头的是绝对路径。一些语法如下:

volumes:
  - ./data:/app/data                # 相对路径
  - ../logs:/app/logs               # 上一级目录
  - ../../configs:/app/configs      # 上上级目录
  - /var/app/config:/app/config     # 绝对路径
  - ~/app-files:/app/files          # 用户主目录路径
  - ${BASE_PATH}/shared:/app/shared # 环境变量路径
  - ./readonly:/app/readonly:ro     # 只读挂载

environment环境变量其实大部分有默认值,我们只需填写原先为空的值,或者改动原有的值。PUID=0PGID=0意味着是root用户。UMASK=022意味着root用户可读+写+执行,其他用户只读。

restart自动重启按需选择即可,一般是always

注意事项

在绿联系统中,创建docker-compose时的存储映射可以写根目录下任意路径,而创建单个docker容器只能受限于共享文件夹,所以你要备份用户文件夹的话只能通过docker-compose创建!

如果你还分不清docker-compose和docker容器,那么我再解释一下,docker-compose是多个docker的项目合集(当然也可以是一个),创建语法需遵循yaml格式,而创建单个docker容器的语法是不同的,以taoSync为例:

docker run -d --name taoSync --network host -v $(pwd)/taoSync/data:/app/data --restart always dr34m/tao-sync:latest

这个需要在SSH命令行里输,如果你不喜欢命令行,绿联Docker也有可视化的傻瓜式操作。

不过我还是建议首选docker-compose,因为路径不受限,后期维护也方便。而且compose重新部署时会自动跳过正在运行且配置无变化的容器,不会影响现有进程,服务不会中断。

AList配置

局域网访问192.168.1.102:5244进入登录页面,初始账号密码一般在docker日志里查看。

1735451847044.png

修改密码后添加两个存储,配置如图。

1735451989086.png

刷新令牌从这里获取:阿里云盘 Open | AList文档

TaoSync配置

局域网访问192.168.1.102:8023进入登录页面,默认账号为admin,初始密码一般在docker日志里查看,如果没有显示这个日志,可以到同级目录的data/log/sys_xxx.log文件查看,通常在第一行。

1735453466604.png

登录后先前往系统设置修改密码。

引擎管理里面添加alist,地址一般是http://192.168.1.102:5244,令牌到AList管理-设置-其他中复制。

1735454096411.png

由于我使用了子目录反向代理,地址才会变成http://192.168.1.102:5244/alist,刚开始用别学我。

最后新建作业,每天11点自动同步的配置如下,你也可以改成其他时间和频率。

1735453710686.png

Q&A

 既然存到NAS,为什么还要备份到阿里云盘?
因为我经常PT下载和刷流,硬盘读写还是比较频繁的,还是会担心磁盘磨损挂掉。多一重备份多一重保险。
 既然备份到阿里云盘,为什么还需要NAS?
一是为了避开网盘的限速和审查,资料自主可控。这就和中国为什么要自建北斗一个道理,你的资料握在别人手里,哪怕是大厂也有隐私泄露和冻结的风险,尤其是某些爱看不良影片的宅男。
二最最关键的是,网盘是没有CPU和内存的,它只能存文件,不能运行服务,像MP这种中枢是没有办法运行在网盘上的,处理不了需要计算的任何自动化程序,就算1+1也算不了,没有思考这个功能!要想跑代码,要么服务器,要么NAS。
 已经有服务器了还有必要入NAS吗?
有,两者的应用场景有很大区别。
服务器硬件配置不高但费用蛮贵的,硬件是按年租用,流量也要计费,一般适合展示博客这种计算量很小的轻量级文本处理,优点是稳定,公网IP,非常稳定。
NAS存储空间非常非常大,而且配置没有天花板,你想配多高就能配多高,一次购买终身享用,毕竟家庭宽带本来就是刚需支出,就算你不买NAS也要交宽带费,所以NAS的网费可忽略不计,硬件处理能力强可玩性就很高了,可以同时运行很多很多服务,甚至可以常年跑个WIN11虚拟机,不管你走到哪都可以远程使用这个电脑。
所以可玩性NAS>服务器,但NAS一般私有,最佳应用场景是家庭局域网,或者小范围的家人朋友,很少对外提供服务,所以交流互动对外可见性和稳定性上,服务器>NAS。
 已经有NAS了还有必要入服务器吗?
看情况,NAS虽然也可以搭建网页,但80和443端口被封禁,你的域名就必须带其他端口号访问或者部署CDN,不太优雅,且SEO大打折扣,如果只是写写个人笔记不在乎有无读者还行,但如果你要写一个能够稳定访问的blog,还是建议入服务器。
 有没有一种可能,alist挂载阿里云盘充当硬盘,服务器或电脑作为控制中枢,不用买NAS了?
有可能,但笔者还没折腾过。

相册

这个也是傻瓜式操作,不需要额外折腾docker了。

支持本地AI分类和基于文件夹的分类,常见的识人识物地图等功能都有,可多人共享。

影视库

为什么要自建影视库?Netflix、优酷/爱奇艺不香吗?南瓜电影、荐片播放器不香吗?资源网站+迅雷下载不香吗?

首先,NAS影视库是私人的、免费的、无广告的、提前下载好的、随时随地可以播放的、局域网无卡顿的(外网播放受限于宽带速度)、国内外资源都有的、永远不会审核下架的、全平台所有设备通用的(不用来回拷贝)、自动化下载和整理的、具有权限分级管理的、界面精美的、情绪价值拉满的幸福小窝呀!

网飞确实是个好东西,但费用和国内稳定性不太友好,优酷/爱奇艺的界面已经逐渐变得屎上雕花了,以至于我这个25岁的老年人看了都嫌视觉疲劳,而且没有咱爱看的重口味剧呀,南瓜电影的界面和内容我还是喜欢的,和网飞一个风格,荐片播放器确实是个神器,有点像暴风影音和快播的后继者,我目前还在用,迅雷下载只能下BT,而BT和PT比起来也只是冰山一角……为了解决各种影视资源割据的局面,你希望有一个工具把它们通通整合起来,兼收并蓄,一统天下,而NAS影视库就能够实现你的愿望。

影视库可不是一个装满视频文件的杂乱路径,而是具有智能刮削归纳功能的选片数据库。影片下载来源可以多种多样,但最终都会集中展示出来。先来欣赏一下影视库的颜值~

效果展示

手机端
电脑端/网页端
1735569493877.png
1735569686891.png
1735570205915.png
电视端
1735570735556.png
1735570716169.png

值得一提的是,绿联云影视全平台都有客户端,不但支持安卓电视,还支持Apple TV

下面讲讲怎么搭建影视库,不过在此之前,有必要先澄清几个概念。

名词解释

  • 直链:从服务器下载,人越多越慢,因为水管就那么粗,N个人同时打开水龙头。
  • P2P:peer to peer,从有资源的用户那下载,去中心化,人多力量大,可能有好几个用户同时给你输血。
  • 种子:P2P资源的地图,告诉你去哪下找谁下,后缀通常为.torrent
  • 磁力链接:P2P资源的身份证,你拿着这个身份证挨家挨户找资源,被问的用户也会帮你去别人家问。通常以magnet:?xt=urn:btih:开头。
  • 保种:P2P的核心是分享,你从别人那下资源,别人也会找你下资源,你下载的同时也在上传分享,下载完成后保留种子文件和资源文件,别人就能继续从你这儿获取资源。
  • BT:Bittorrent,一种协议,是所有人都可以下载的公开种子,不记名,也没有分享率的限制,你可以下完资源就删种,提起裤子就不认人,也不会有什么惩罚,仅仅是道德上比较自私,缺乏互联网精神而已。但如果大家都这么自私,BT资源就会面临后继无人的断种风险。
  • PT:Private Tracker,仅限同一个PT站的用户可以下载,并且标记用户,可以追溯到是谁下了种子、下了谁的资源,甚至每个用户的下载进度、下载量、上传量、分享率都可以统计出来,PT资源有严格的规则,自私鬼是不被允许的,一旦你上传量小于下载量,你马上就要面临被封禁的风险,所以每个用户都会保证自己的分享率大于1,这就形成了良好的社区氛围,有利于种子的长期存活。
  • 下载器/上传器:用于下载和上传P2P资源的软件。支持的协议包括BT、PT和磁力链接等。迅雷不能下PT。
  • 文件整理:对下载的文件进行分类归档和重命名,便于影视库识别。Linux系统有个神奇的魔法叫做硬链接,文件复制后只占一份空间,非常适合影视资源的二次整理,而不破坏种子文件结构。后面会细讲。
  • 刮削:你下载的资源只有一个文件名,那么海报、剧情简介、演员表从哪来呢?影视库会根据这个文件名去自动匹配影片信息,这个识别资源并抓取海报等信息的过程就叫刮削。
  • 刷流:PT站要求分享率大于1,但实际上用户都会先把分享率刷高到远大于1,因为如果你要下载资源你必须先有足够的上传余量,所以平时即使不下载也会不停刷上传量,以备日后下载之需。
  • 辅种:多个PT站有同一个资源时,难道要下两遍资源?多占空间呀!辅种能够让你脚踏两条船,一份资源两头上传,只需要下载两个PT站的种子就可实现资源共用。

资源类型

  • 录制来源(和分辨率没有直接关系!)
    • CAM/TS/TC:影院盗录,画质较差。TC相对较好。
    • TVRip/HDTV:电视转制/高清电视转制。HDTV较好。
    • DVDRip/HDRip:正版DVD转制/高清DVD转制。HDRip较好,一般简写为HD。
    • WEBRip/WEB-DL:流媒体网站转制。画质不错。推荐下载。
    • BluRay/BDRip:蓝光光盘转制。画质最佳。推荐收藏。
  • 视频编码(和文件格式没有直接关系!)
    • H.264/AVC:兼容性强,最通用。
    • H.265/HEVC:压缩率更高,文件体积减少约30%~50%。
    • AV1:开源新标准,压缩率最高,文件体积减少约50%~60%。
  • 文件格式
    • MP4:兼容性强,最通用。
    • MKV:支持多音轨和多字幕,画质高,文件大。
    • AVI:旧格式,逐渐被淘汰。
    • WMV:微软格式,适合 Windows。
    • MOV:苹果格式,适合 Mac/iOS。
  • 分辨率
    • 480p (SD) (标清):720×480
    • 720p (HD) (高清):1280×720
    • 1080p (Full HD) (全高清):1920×1080
    • 1440p (2K):2560×1440
    • 2160p (4K) (UHD) (超高清):4096×2160
    • 4320p (8K):7680×4320

综上所述,考虑兼容性的话,推荐WEB-DL或BluRay来源、H.264编码、MP4格式、1080p的资源;考虑品质的话,推荐BluRay来源、H.265编码、MKV格式、4K的资源。

 蓝光为什么叫蓝光?
蓝光之所以叫“蓝光”,是因为它使用了波长更短的蓝色激光(蓝紫色激光,波长约为 405 纳米)作为读取和写入数据的光源。这与传统 DVD 和 CD 使用的红色激光(波长约为 650 纳米)形成了鲜明对比。

蓝光全称是 Blu-ray Disc,其中 “Blu” 是“Blue”的简化拼写,代表蓝色光束。为避免“Blue”与商标的冲突,故去掉了字母“e”,创造出“Blu-ray”这个独特词汇。

特性CD/DVD (红光)Blu-ray (蓝光)
激光波长650 纳米(红光)405 纳米(蓝光)
单层容量CD:700MB,DVD:4.7GB25GB(单层),50GB(双层)
数据读取速率较低较高

蓝光资源细分:

特性蓝光原盘Remux蓝光压制
质量无损,原始编码无损提取,保持原始编码有损压缩,重新编码
内容包含电影、菜单、花絮、广告等仅包含影片仅包含影片
体积25GB~100GB15GB~50GB2GB~15GB
封装格式ISO或BDMV文件夹MKVMKV或MP4
兼容性需支持蓝光导航的播放器兼容大多数播放器兼容性最广泛
适合人群收藏完整光盘内容的用户追求无损观影但不需菜单的用户注重体积和画质平衡的用户

搭建工具

以下每项功能至少选择一个。

  • PT站:馒头(kp.m-team.cc)、我堡(ourbits.club)、彩虹岛(chdbits.co)等
  • 下载器/上传器:utorrent、qBittorrent、Transmission、下载中心(绿联自带,Tr内核)
  • 文件整理&刮削&刷流&辅种&自动签到:nastool(已停更)、MoviePilot(nastool继任者)、ptool
  • 影视库展示&播放器&刮削:Jellyfin(免费)、EMBY(收费)、PLEX(收费)、影视中心(绿联自带)
  • 辅种:IYUUReseed

我目前的搭配是:馒头+我堡+Transmission+MoviePilot+影视中心。

(在这里特别感谢苯苯提供的MT邀请码,带我打开了PT的新世界!)
(彩虹岛也准备入但还没搞到邀请码,如果有友友能赐邀定当不胜感激!)
(这是纯PT资源的流程,当然你也可以找些BT资源和荐片播放器作为补充。)

工具介绍

可以看出,某些工具存在功能重叠,例如影视库软件和MoviePilot都有刮削功能,只需启用其中一个即可,也有初学者常把这两者搞混,因为很多帖子一提到影视库就开始讲MoviePilot,以至于有人以为MoviePilot就是影视库,实则不然,这里澄清下,MoviePilot只是一个自动化中枢,是搭建影视库的中间环节,它需要连接PT站查询资源,又要给下载器传达指令,还要把最终文件交付给影视库,配置起来最复杂,但它本身既不能播放影片也不能展示海报墙。另外,MoviePilot的插件集成了IYUU辅种功能,所以不需要单独部署辅种工具了。

绿联自带的影视中心:精美海报墙+全平台播放器,胜过Jellyfin,刮削很快很准,界面简洁易用,支持影视库权限管理,可以瞒着你假想的老婆建一个R级影视库,她是看不到的。

绿联自带的下载中心:Transmission内核,可以作为轻量级的PT或BT下载器,有保种功能,但没法和MoviePilot联动,基本靠手动,也可以作为普通下载器下任何东西,类似浏览器下载。

Transmission和qBittorrent都是非常主流的下载器,但qBittorrent占用内存大且界面更复杂,据说保种数量过多时会卡死,我个人更偏爱性能稳定且简单易用的Transmission。

PT站的选择看这篇即可:PT 下载从入门到养老篇一:站点介绍及生存指南 | 回声

辅种工具

以下是笔者在初期探索过程中踩坑记录的笔记,不是重点,有了MoviePilot后就不用ptool了。

IYUU:基于种子,扫描下载器中正在做种的种子,如果种子删除了就没用了,通过爱语飞飞(IYUU)服务器匹配站点种子进行辅种,将同资源种子添加到下载器。NAS并不一定需要部署IYUU。

Reseed:基于文件,扫描指定路径下的文件名和大小,生成一个JSON文件,然后上传到Reseed服务器匹配站点种子进行辅种,将同资源种子添加到下载器。NAS不需要部署Reseed。(注:Reseed不开放注册,需要TJUPT校园网用户或我堡认证登录。)

简单来讲,辅种有三个步骤:扫描、匹配、下种。

其中最关键的匹配由第三方服务器完成,我们本地NAS需要的软件功能是扫描和下种,需要对下载器进行连接和操控,这个软件可以是IYUU的自动化容器(Docker应用,有web界面),也可以是Reseed的手动索引工具(Linux或Windows软件,可挂载到Windows上操作),也可以是ptool的自动化程序(Linux或Windows软件,无图形界面)。ptool可连接IYUU或Reseed服务器,所以我说NAS不需要部署IYUU或Reseed。而且亲测IYUU容器蛮臃肿的,内存消耗比qBittorrent还大……

Docker部署

如果第一次玩docker请先参阅上文的Docker入门笔记

在docker里新建一个名为media的项目,docker-compose配置如下:

services:

    moviepilot:
        stdin_open: true
        tty: true
        image: jxxghp/moviepilot-v2:latest
        container_name: moviepilot
        network_mode: host
        # ports:
        #     - target: 3000
        #       published: 3000
        #       protocol: tcp
        volumes:
            - /volume1/download:/download
            - ./moviepilot/config:/config
            - ./moviepilot/core:/moviepilot/.cache/ms-playwright
            - /var/run/docker.sock:/var/run/docker.sock:ro
        environment:
            - NGINX_PORT=3000
            - PORT=3001
            - PUID=0
            - PGID=0
            - UMASK=000
            - TZ=Asia/Shanghai
            - AUTH_SITE=iyuu
            - IYUU_SIGN=改成你自己的IYUU密钥
            - SUPERUSER=改成你自己的用户名
            - MOVIEPILOT_AUTO_UPDATE=release
        restart: always

    transmission:
        stdin_open: true
        tty: true
        image: linuxserver/transmission:latest
        container_name: transmission
        network_mode: host
        volumes:
            - /volume1/download:/download
            - ./transmission/config:/config
            - /volume1/download/torrent:/watch
        environment:
            - PUID=0
            - PGID=0
            - UMASK=000
            - TZ=Asia/Shanghai
            - TRANSMISSION_WEB_HOME=/config/web
            - PASS=改成你自己的密码
            - USER=改成你自己的用户名
            - RPCPORT=9091
        restart: always

特别要注意的是,- /volume1/download:/download这个路径必须在moviepilot和transmission中映射一致。

由于MP的更新非常频繁(佩服作者旺盛的精力),笔者的compose配置可能相对滞后,建议同时参考MP官方的安装指引

Transmission的前端皮肤需要单独下载:TrguiNG,下载页面上最新的ZIP文件,解压后将文件夹重命名为 web并存放到 /config 路径下。

1735819422561.png

Transmission配置

局域网访问192.168.1.102:9091进入登录页面,账号密码是创建docker时的环境变量。

1735817923393.png

点击右上角设置。

1735821252929.png

重点关注下载设置和网络端口设置。

默认保存路径不是很重要,因为MP也可以设定路径,但都是基于/download这个母路径,所以必须映射一致!

“在未完成的文件名后加上.part后缀”是有必要勾选的,可以避免在文件下载过程中触发MP自动整理,否则未完成的影片可能会被交付到影视库但无法播放。

网络端口设置和你的路由器工作模式有关,如果只有一个主路由,建议把随机端口和UPnP都启用,但如果存在旁路由且构成双重NAT(即两层网关嵌套),UPnP可能会失败,同时导致随机端口无法打通外网,这个时候建议禁用随机端口,使用固定端口并手动在路由器里做好端口映射。

而UPnP是自动端口映射,由TR向路由器发出申请,但是通常只支持一层网关,因为即使旁路由知道57223端口指向192.168.1.101,主路由还是不知道,除非主路由把一切端口都甩给旁路由(指定DMZ主机,但似乎网络会卡)。

所以说简单即可靠,如果把软路由作为主路由能够避免绝大多数网络玄学问题,但前提是得有天线,支持WIFI,而NAS虚拟化出的openwrt容器一般是没有无线网卡的,只能作为旁路由,是一种妥协而非最优。

端口映射

为什么要做端口映射?每个终端都有上万的的端口,每个端口提供不同的服务。比如有个用户要下你盘里的资源,他先到访你家路由器,说是要找57223端口,路由器说我家里10台设备人人都有57223端口,我咋知道你要找谁?甚至路由器本身也有57223端口,该不会是找俺吧?于是该用户啥也没找到骂骂咧咧走开了。你苦等了几天发现资源无人问津,终于想起来给路由器交代这事:以后有人来找57223端口,你就把他带到192.168.1.101这个地址。

怎么做端口映射?先登录路由器,局域网访问192.168.1.1

电信光猫兼路由器的用户名一般为useradmin,密码在路由器背面标签纸上。

然后找到高级设置-端口映射。

1735822711883.png

9091端口是TR的web控制页面,设置端口映射后可以从外网访问。详见本文软路由部分。

57223是我随便选的端口号,用于TR的P2P连接,建议UDP和TCP都选上,做好映射后务必回到TR设置中测试端口是否连接成功。如果连接失败,通常表现为只能下载不能上传,或者上传速度很小约等于0。

我这里填的局域网IP为192.168.1.101,实际上我的NAS有两个地址101、102应该都可以。至于为什么默认网口为102时在101做端口映射也能成功是一个比较玄学的问题。

MoviePilot配置

局域网访问192.168.1.102:3000进入登录页面,初始用户名已在环境变量里设置,如果没设置默认为admin,密码一般在docker日志里查看。

1735829290614.png

登录后先去改密码。

1735831151122.png

仪表盘可以看到下载和上传速率。

1735829969120.png

“推荐”页面都是未下载的资源,并不是你的影视库,只是推荐你可以下点新片子了。

1735830052679.png

“资源搜索”可以更精确地寻找你想下载的影片。

订阅是指已经有上映信息但你的PT站还未收录的资源,一旦收录后会自动下载。

1735830826183.png

下面开始讲几处重要的配置。

连接下载器
1735902000227.png
连接PT站

可以手动添加也可以自动添加。

手动添加的话你要一个个去找站点请求头中的Cookie信息或者Authorization信息,还是有点麻烦的,而且时间长了会过期,又要重新添加。

自动添加可以把你桌面浏览器里的Cookie信息自动上传到MP,需要安装浏览器插件CookieCloud

1735903409565.png

配置完点击保存。如果没有及时同步,可以到服务列表手动执行。

同步完成后应该就能在站点管理看到你的PT站了。

1735904238420.png

这一步做完以后可以先去推荐页下载几个资源试试,看看MP能否正常从PT站获取数据并给TR添加下载任务。

自动整理

文件整理是实现影视库统一的关键。

1735904960522.png

核心配置如下:

1735905769645.png

换句话说,文件整理的功能就是资源搬运,从各个下载目录搬运到影视库目录,并且做一些目录分类、文件重命名之类的预处理。

搬运方式
  • 硬链接:连体双胞胎。砍掉一个头还活着。一份文件生成多个文件入口,但只占用一份存储空间,只有所有入口都删除后才能释放文件占用空间;可以修改硬链接后的文件名但不会影响原文件做种(不能修改文件内容);要求在同一磁盘/存储空间/映射路径下才能硬链接。
  • 软链接:可以跨盘。类似于快捷方式,原文件删除后软链接即会失效;使用软链接时的原文件路径需要与生成软链接时的原文件路径保持一致,否则无法使用,也就是在docker环境下,映射前后的目录路径需要一致。

实际测试下来硬链接是正常的,软链接没法在SMB上使用。推荐硬链接。

为什么不能直接移动或复制呢?

复制占用两份空间太浪费。移动的话就没法继续保种了。保种的文件是既不能动目录结构也不能改名字的,否则就会被认为是不同的资源,做种前下载器会校验文件特征码的,必须完全一致才能做种。

监控方式
  • 下载器监控:仅针对MP官方添加的下载任务有效,如推荐、搜索、订阅功能添加的下载任务,即使是刷流插件添加的任务也不行,下载器监控需要MOVIEPILOT标签才会被接管。
  • 目录监控:适用于插件或者外部播放器添加的资源,只要文件夹里进来一个新视频就会触发搬运(还没下载完的不完整文件一定要添加额外的后缀名)。目录监控为实时。请避免对网盘目录使用目录监控,容易触发大量API请求导致被流控。
    • 性能模式:适用于NAS本地目录
    • 兼容模式:性能降低且NAS不能休眠,但可以兼容挂载的远程共享目录如SMB

整理记录可以在【媒体整理】里查看。

1735913281982.png
手动整理

如果自动整理出错或失败,也可以手动整理。

1735915382650.png
1735916065017.png

集数定位:使用表达式来确定集数的位置,{ep}占位符代表集数。例如:(BD)十二国記 第45話「東の海神 西の滄海 五章」(1440x1080 x264-10bpp flac).mkv(BD)十二国記 第32話「風の万里 黎明の空 九章」(1440x1080 x264-10bpp flac).mkv 共3个文件需要批量整理,此处可以填(BD)十二国記 第{ep}話{a}(1440x1080 x264-10bpp flac).mkv{ep}表示集,{a}表示随意用一个变量来替代不需要的但又不一致的部分,如果除了集数外没有其余不一样的内容,则只标定{ep}就行。

整理规则

一些例子:

原始文件名预处理文件名
猎罪图鉴2-03.mp4猎罪图鉴第2季第03集
白夜破晓02.mp4白夜破晓第02集
白夜破晓27v2.mp4白夜破晓第27集

像荐片之类的第三方播放器,下载的文件名可能不规范,无法被MP直接识别,因此我们需要增加预处理规则:

1736603039206.png

在设定-词表-自定义识别词添加以下正则表达式:

([^\d]+)(\d+)-(\d{1,2})\.mp4$ => \1第\2季第\3集
([^\d]+)(\d{1,2})v\d+\.mp4$ => \1第\2集
([^\d]+)(\d{1,2})\.mp4$ => \1第\2集

注意先后顺序不能变,越复杂的规则应当优先匹配。

如果不确定规则是否生效,可以在MP右上角-捷径-识别,输入文件名称测试。

订阅规则

如果你订阅的资源上线了,而且不止一个,比如有1080p、2K、4K、蓝光原盘、H264、H265等等类型,你选哪个呢?你让下载器下哪个呢?

规则就是事先给这些资源指定一个优先级顺序,如果同时命中多个资源MP就会按你的偏好下载最合适的资源。

我设置的规则如图。因人而异,看自己需求。

1736000516119.png
1736000593295.png
1736000659073.png
1736000836894.png

如果不确定规则是否生效,可以在MP右上角-捷径-规则,输入资源标题测试。

插件配置

我目前使用的插件共11个。

1735993257501.png

首先点击右下角的插件仓库设置,扩充一下插件源:

https://github.com/jxxghp/MoviePilot-Plugins/,https://github.com/thsrite/MoviePilot-Plugins/,https://github.com/honue/MoviePilot-Plugins/,https://github.com/InfinityPacer/MoviePilot-Plugins/,https://github.com/dandkong/MoviePilot-Plugins/,https://github.com/Aqr-K/MoviePilot-Plugins/,https://github.com/AnjoyLi/MoviePilot-Plugins/,https://github.com/WithdewHua/MoviePilot-Plugins/,https://github.com/HankunYu/MoviePilot-Plugins/,https://github.com/baozaodetudou/MoviePilot-Plugins/,https://github.com/almus2zhang/MoviePilot-Plugins/,https://github.com/Pixel-LH/MoviePilot-Plugins/,https://github.com/lightolly/MoviePilot-Plugins/,https://github.com/suraxiuxiu/MoviePilot-Plugins/,https://github.com/gxterry/MoviePilot-Plugins/,https://github.com/hotlcc/MoviePilot-Plugins-Third/,https://github.com/boeto/MoviePilot-Plugins/,https://github.com/xiangt920/MoviePilot-Plugins/,https://github.com/yubanmeiqin9048/MoviePilot-Plugins/,https://github.com/loongcheung/MoviePilot-Plugins/,https://github.com/xcehnz/MoviePilot-Plugins/,https://github.com/imaliang/MoviePilot-Plugins/,https://github.com/wikrin/MoviePilot-Plugins/

完整的插件仓库地址可在官方Wiki找到,可能会不定期更新。

下面挑几个重要的插件讲讲。

站点刷流

刷流是最重要的插件。它会帮你自动找限免资源然后下载保种以刷取上传量。

1735993493093.png

150-190指的是刷流资源的文件体积超过190GB后自动删到150GB。一般是按时间倒序删,先把最旧的种子删掉。

200指的是刷流资源的文件体积超过200GB后停止刷流。

当然这里有个逻辑问题,因为超过190GB就开始删种,所以永远到不了200GB,在1点到7点之间会一直刷下去。

但如果你把保种体积改为180GB,那么超过180GB就停止刷流,文件体积将停留在180GB多一点永远触发不了动态删除。

所以动态删除确实有逻辑漏洞,你也可以不用动态删除,配置一些普通的删除规则。

1735993672950.png
1735993768578.png
1735993811275.png

我堡的站点独立配置如下:

[{
    "sitename": "我堡",
    "seeder": "400",
    "pubtime": "360"
}]

独立配置是为了均衡一下馒头和我堡的上传量,因为馒头是热门大站,如果采用完全一样的设置我堡的上传量占比将少得可怜。

IYUU自动辅种

首先要配置IYUU站点绑定这个插件。

1735994147907.png
1735994201684.png

0 */4 * * * 表示每天每隔 4 小时的整点执行一次任务,即每天的 0:00、4:00、8:00、12:00、16:00 和 20:00。

站点自动签到

PT站不仅有分享率的要求,长期不登录也会被删号,所以必须定期签到。保种不等于签到。

1735994266537.png

不过有的网站似乎自动签到是无效的,最好还是定期手动登录看看,以保万无一失。

下载器助手

下载器助手有三大功能:

  1. 自动做种:通常在通过IYUU等工具辅种后,下载器中种子校验完毕但不会立即变成做种状态,可以通过本插件定时扫描下载器中“已完成但未做种”的种子并设为做种状态。
  2. 站点标签:如果下载器中种子很多,要想统计各站点的种子数量变得麻烦,可以通过本插件定时(或者通过监听下载添加事件)给种子添加站点标签。
  3. 自动删种:定时删除丢失文件的错误种子,或者通过监听源文件删除事件匹配对应的种子自动删除。
1735994331345.png
清理硬链接

由于硬链接有多个文件入口,如果只在影视库中删除,是删不干净的,所以我们需要一个插件,当影视库中的资源被删除时,同步删除所有硬链接资源。不过当刷流任务被删除时,是不影响影视库里的资源的,因为这个监控是单向的,以影视库为主导。君可以杀臣,臣不能杀君。

1735994603509.png
ChatGPT

开启插件后,消息交互时以#号开头,或者以号结尾,或者超过10个字符,则会触发ChatGPT回复。

开启辅助识别后,内置识别功能无法正常识别种子/文件名称时,将使用ChatGTP进行AI辅助识别,可以提升动漫等非规范命名的识别成功率。

1735996365413.png

API和KEY可以用这个项目申请:chatanywhere/GPT_API_free

捷径工具箱

有的小伙伴可能用了很久MP还不知道它自带的捷径工具箱有多好用,入口就在右上角第一个图标。

1735998496627.png

其中网络测试工具是最常用的,可以测试你的软路由配置有没有成功,我这里全绿当然是有魔法加持啦~

这里的日志对排查问题也是很有帮助的。

最强大的其实是消息中心,这里是可交互的,可以通过发消息搜索片名,如果配置了ChatGPT插件还能直接跟ChatGPT对话!

但网页版交互还是不够方便,如果能在微信或者TG上交互,那就更爽了,而MP确实是有这个功能的!

在微信和TG之间,我选了微信,因为考虑到国内网络的稳定性和家人的使用,还是微信更方便。

但微信需要有域名和公网服务器才行,如果没有的话还是TG的搭建门槛低。请自行斟酌。

下面就来教你怎么把MP的消息推送到微信并通过微信菜单控制MP!

连接微信

首先注册或登录企业微信网页版。

名字随意,比如我的企业叫“鸦鸦影视”。

在企业微信管理后台找到第一个要填写的参数:企业ID

1736065444926.png

然后转到应用管理-创建应用。名称图标都随意,如果取名困难就填MoviePilot,logo可以用MP图标

创建完成后又可以填两个参数:应用AgentId应用Secret

1736066247740.png

然后在应用管理-接受消息-设置API接收。随机获取TokenEncodingAESKey填入MP。

1736067746974.png

这次填完以后,先在MP里确定保存。注意确定后还要保存。要保存。重要的话说三遍!

后面开始上难度了。

1736085998430.png
回调地址

回到企业微信网页版,URL填写http(s)://DOMAIN:PORT/api/v1/message/?token=你的API令牌(在MP设置-基础设置)

比如我的地址是http://nas.crowya.com:3000/api/v1/message/?token=我的API令牌(配置了端口转发)

也可以是https://nas.crowya.com:666/mp/api/v1/message/?token=我的API令牌(配置了反向代理)

如果地址正确,浏览器直接访问这个地址会返回{"status": "OK"}的提示信息。

这个地址还是有些门槛的,因为需要你有一个域名,并且配置了DDNS,详见本文软路由部分。

IP+端口号是不可以的,这是企业微信的限制。能在企业微信正常保存即设置成功。

代理地址

现在只缺一个代理地址还没填了。注意MP的代理地址和企业微信的URL是不同的!

2022年6月后新建的企业微信应用需要有固定公网IP的代理才能接收到消息,需要使用有固定IP的VPS搭建代理服务。

由于企业微信的限制,这门槛又高了不少。

NAS一般是没有固定IP的,言下之意就是得有公网服务器。

不过貌似也有小伙伴在NAS上搭建代理成功的[1],这个我没有测试。

因为我正好有阿里云服务器,就直接在服务器上搭建了。

由于大多数人都不熟悉Nginx配置,这里我们依然用大家喜闻乐见的docker方式部署。

可以借助宝塔面板的docker工具创建容器,这里用的是命令创建:

docker run -d \
    --name wxchat \
    --restart=always \
    -p 8080:80 \
    ddsderek/wxchat:latest

其中8080可改成其他端口,记得在防火墙放行!

1736080007799.png

如果因为网络问题拉取镜像失败,请转到设置添加以下配置(加速URL)后重试。

{
  "registry-mirrors": [
    "https://dockerproxy.cn",
    "https://docker.1panel.live",
    "https://docker.nastool.de",
    "https://docker.agsv.top",
    "https://docker.agsvpt.work",
    "https://docker.m.daocloud.io",
    "https://dockerhub.anzu.vip",
    "https://docker.chenby.cn",
    "https://docker.jijiai.cn"
  ]
}
1736079747799.png

搭建完成以后,访问http://你的公网IP或域名:8080出现“微信代理搭建成功!”,这个地址就是填入MP的代理地址

最后将代理服务器IP填入应用管理-企业可信IP。如果你是管理员就把自己的企业微信ID加入管理员白名单

1736081476425.png
微信交互

最后掏出手机微信扫码,关注你自己的企业号就可以使用了。还可以邀请家人加入你的企业。

1736083477428.png

至此微信交互应该可以用了,可以发几条消息测试一下发送和接收是否都正常。微信收发的消息也会在MP捷径工具箱的消息中心同步显示。有时候会出现只能发送不能接收的情况,可能是因为微信对非固定IP代理的限制。

如果一切顺利,耐心等待一段时间后微信底部会自动出现功能菜单。

PT站新手考核经验

前面讲的都是自动刷流的方法,如果新手该开始接触PT站可能没法一下子配置这么多东西,其实我也是摸索了一个月才完全折腾到稳定,刚开始的一周是手动刷流的,其实手动刷流这个过程也会积累很多经验,学到很多东西,逐步找到感觉。

我的NAS目前没有IPV6也没有固定公网IP,但这并不影响PT站的可用性,顶多就是速度慢一点。虽然我的上传速度只有500KB/s左右,但每天24小时不间断运行,日积月累愚公移山,一周左右也能通过新手考核,所以小伙伴们要有信心,时间肯定是够的,只要别触犯规则就行了。

 注册未满 30 天者,且分享率低于 0.3 会立即被禁用帐号
分享率低于 1 会有五天警告期,期限内未改善将会禁用且删除账号。

这是最重要的两条规则,所以刚拿到账号一定不要下任何非免资源,哪怕50%也不可以!先把上传量刷上去,这个时候只能下完全free的资源!至少等上传量有个几GB才能小心翼翼地去下一些小体积种子。

1731160115483.png

上传量和下载量任务一般很快就能做完,最后就是刷魔力值。点击魔力值右边的[使用]可以看到魔力值获取途径和当前时魔(每小时可获得的魔力值数量)。

1736087585782.png

其中做种体积是决定性因素,只要体积够大基本时魔就大,不过体积和时魔并不是线性关系,更像是log函数,体积超过700GB后收效甚微[2]。其次就是尽量下官方种子,有额外加成。单纯刷种子数量(做电子书战士)我觉得不划算,找资源很费劲而且收效甚微。最容易获得的是这个二级验证加成,只要开启账号登录的二级验证就能+10%,立竿见影,非常划算,强烈推荐。总的来说时魔超过50就可以躺平了。

1736089585876.png

官方解释:

  • 简言之,为做种人数少、档案体积大的种子做种能获得更多魔力值。
  • 捐赠者每次将得到2倍的魔力值
  • +单种子官方奖励加成(每个种子给予0.1%加成,总计体积每GB给予0.01%加成,无需24小时)
  • +等级奖励加成
  • +持续在线做种奖励加成(每100个种子给予「当前基本奖励值」5%的额外加成,仅统计连续做种超过24小时的种子,单种大小少于10MB不计算)
  • +启用二级验证加成

By the way, 如果你手动刷流用的是绿联自带的下载中心保种的,那么后期就会面临如何迁移到Transmission的问题,这里面有一个坑我已经踩过啦,绿联下载的文件迁移到TR需要手动删掉一层目录才能通过校验(原先有两层同名文件夹),但也有部分文件,例如.ts后缀的是直接裸露在下载目录的,这种直接移动就好了。

软路由

软路由是局域网中的重要中枢,可以实现魔法上网、解锁VIP、去广告等功能,且所有连接WiFi的用户自动具备这些功能,客户端无需做任何配置,但服务端需要锲而不舍的折腾精神。如果要参考笔者的网络配置,请先回顾下文章开头的网络架构

以MoviePilot为例,学习完本章节后你会得到以下四个访问地址:

  1. http://192.168.1.101:3000(局域网地址)
  2. http://222.64.209.221:3000(公网地址,端口映射)
  3. http://nas.crowya.com:3000(公网域名,DDNS+端口映射)
  4. https://nas.crowya.com:666/mp/(公网加密域名,反向代理+DDNS+端口映射)

软路由、硬路由、旁路由、主路由,这些都是什么意思?

  • 软路由没有特别标准的定义,主要特征是具备强大的CPU和灵活的软件系统(最出名的是OpenWrt),自由度很高可以深度定制。例如用旧电脑做软路由、虚拟机跑软路由、docker运行软路由,或者购买基于OpenWrt系统深度定制的成品路由器(例如小米路由器)都是软路由。
  • 硬路由一般硬件性能较弱,功能单一,不支持开放系统。例如电信光猫,其实路由器只是它的兼职,它的本职工作是光纤信号转换,即光信号转电信号。
  • 主路由:局域网中的最上游网关。例如电信光猫的智能网关。
  • 旁路由:也没有标准的定义。一般指下游网关,即二级网关。也可能是相对于NAS系统的虚拟化运行,显得这个路由系统是依附在宿主机上的妾室,地位低(但功能上是中流砥柱,所有奏折先经过它批阅)。旁路由是可以没有天线的,自身并不一定需要支持WiFi,如果局域网中有其他支持WiFi的路由器,可以互补。

光猫

光猫为什么叫光猫,难道发明它的人也是猫奴?no no no,光猫的正式名称叫调制解调器,英文是 modem,这下明白了吧,就是音译。

我猜有的人还分不清网线和光纤,以为网线就是光纤,no no no,带水晶头的网线是铜线,传输的是电信号,光纤比网线细很多,一般在光猫背面,入户就这一根,剩下的在你家里走的网线一般都是电信号线。

1736263694704.png

其实光纤优点比电线多很多,成本低、传输距离远,可谓物美价廉,那为啥不都用光纤?因为光信号解调难,电信号就像英语,是电子界通用语言,光信号就像中文,难学,如果家里都用光纤,那么你的终端电脑上就要自带光电翻译器了,还不如一开始先解调了,全屋设备共享电信号。

如果你嫌弃光猫兼职的路由器性能不够强,功能不够开放,自己又买了一台性能强劲的软路由,怎么办?只能作为二级网关吗?

如果你的软路由自带天线的话,其实没必要再启用光猫的路由功能了,可以到电信网关设置里把路由模式改桥接模式,这样的话它就只起一个光信号转电信号的功能,然后用软路由去拨号,这样软路由作为主路由,简洁明了,避免了双重路由带来的性能损失。

电信光猫的局域网地址一般是192.168.1.1,账号密码见背后贴纸。

1736349137057.png

这个页面可以设置端口映射,我的常用列表如图。配置步骤详见上文端口映射

1736350405098.png

不过这个页面只有基础设置和端口映射,要想路由改桥接,需要进入底下的快速装维入口,其地址为192.168.1.1:8080

1736349468526.png

这里其实有两种账户,一种是普通账户useradmin,就是背面贴纸上的密码,另一种是超级管理员账户telecomadmin,密码一般不会告诉用户,如果你想折腾更高级的功能比如DMZ或者关闭UPnP的话,可能很想搞到这个密码,我当初折腾了半天没搞出来,后来咸鱼4块钱就查到了……早知如此,不如一开始就咸鱼好了,目前不清楚他们的信息来源,不过查密码需要接收一个验证码转发给商家。

如果你只是想路由改桥接,那么普通账户也可以改的,没必要琢磨这个超级管理员账户了。

1736350031709.png

不过,由于笔者的软路由是docker运行的虚拟化容器,没有天线,只能作为旁路由,需要主路由的天线接收WiFi,所以还是采用了双重路由的臃肿结构。我这里就没有改。读者可以自行定夺采用哪种方式。本文接下来讲解的方式是旁路由模式的OpenWrt。

OpenWrt

Open Wireless Router,OpenWrt是一个开源的基于Linux的路由器系统。既然属于Linux系统,那么你有三种方法运行它:在一堆真实的硬件上装操作系统(实体路由器)、虚拟机运行(虚拟出整个系统)、docker运行(和宿主机共享Linux基础设施,仅虚拟化独有功能,前提是宿主机也是Linux系统)。从成本来看,显然docker运行的性能开销是最小的。

  • 实体路由器:独立的CPU和内存。
  • 虚拟机运行:共享CPU,内存独立。宿主机可以是任意系统。
  • docker运行:共享CPU和内存。宿主机必须也是Linux。

虽然网络上大部分教程都是虚拟机跑OpenWrt的,但我实际用下来感觉docker版的功能完全相同,而且更节省内存。除非你NAS不是Linux,否则我想不出docker有什么缺点[3]。有人说docker的macvlan不能和宿主机通信,这可能是和虚拟机唯一的区别,但使用起来似乎并无影响。因此我选择docker版镜像。

镜像下载

这里需要解释一下,由于OpenWrt的自由化程度实在太高,以至于几乎没有适用于所有用户的统一镜像,最佳方式是自己定制编译一个,不过如果你想偷懒的话,也可以直接下载Kwrt的通用镜像。虽然是第三方,但确实比官网好用。在此感谢苯苯的教程让我知道了这个项目。

没编译的参数其实也是可以进入系统后期修改的。如果你想提前编译好,可以参考我的设置:

1736429932088.png

我选择的定制软件包:luci-app-acme luci-app-ddns-go acme-acmesh-dnsapi luci-app-unblockneteasemusic

旁路由模式下后台地址建议设为200以上,因为通常前150个地址是路由器自动分配的,如果你设置的静态地址数字小了,有概率和自动分配重复!如果你是主路由,直接设为192.168.1.1就行,这个地址专门就是为主路由预留的,不会被分配。

子网掩码不用改。它的作用是判断同一网段。255.255.255.0的二进制是11111111.11111111.11111111.00000000

1736431033005.png

后台密码随便改,自己记住就行。默认主题建议argon,我每个都试了一遍,还是argon最优雅[4],没bug。

Docker不要勾选,openwrt系统也可以安装docker,毕竟它也是个完整的linux系统,但是我们已经有nas运行的docker了,没必要用到openwrt里面的docker。但如果你只有一台软路由,也可以用openwrt系统作为轻度nas使用。

iStoreOS就是一个好看点的主页和傻瓜式商店而已,但商店里的插件基本和openwrt软件包重复,没有装的必要。但如果你只有一台软路由,倒是可以装个iStoreOS获得好看的桌面,作为轻度nas使用。路由狗没研究过。

文件系统SquashFS好像比Ext4多了个恢复出厂设置的功能。但好像会影响自动更新。

ROOTFS.TAR.GZ记得勾选上(docker容器的编译仅限赞助用户,为了写这篇教程,我给作者赞助了两次咖啡,第一次过期了忘记截图😭)。

最后构建新固件,排队等下载,一般docker镜像在90MB左右。

Docker部署

首先在NAS的控制面板里打开SSH功能。(注:Docker版的openwrt镜像只能SSH导入,绿联导入会失败,不信邪的可以自己试一下)

WIN11菜单右键打开终端。

1736433964668.png

导入openwrt镜像:(导入前要先把镜像上传到NAS文件管理器,文件名和路径改成你自己的)

docker import /volume1/download/ug_download/kwrt-12.10.2024-x86-64-generic-rootfs.tar.gz openwrt

回到绿联的docker-本地镜像检查一下是否导入成功:

1736434359155.png

接下来需要创建一个虚拟网络。创建macvlan网络有两种方式,一种是SSH:

docker network create -d macvlan –subnet=192.168.1.0/24 –gateway=192.168.1.1 -o parent=eth0 openwrt

另一种是绿联的可视化操作,创建完成后应该能在docker-网络里看到如下信息:

1736434748122.png
 注意这里的网卡必须是LAN1或LAN2,不能是BR-LAN或者VBR-LAN,任何桥接过的网卡都不可以,亲测有bug!

最后在docker里新建一个名为proxy的项目,docker-compose配置如下:

services:

    openwrt:
        image: openwrt
        container_name: openwrt
        networks:
            openwrt:
                ipv4_address: 192.168.1.201
        privileged: true
        command: /sbin/init
        restart: always

networks:
    openwrt:
        external: true

容器启动时会有硬盘插拔的提示,不用太担心,这个应该是openwrt通过热插拔事件自动挂载磁盘。我的理解是,它的权限很高,和NAS共用硬盘空间,所以不需要作任何存储映射。

SSH命令笔记

如果部署完成后访问192.168.1.201进不去系统,多半是openwrt的network配置不当,可以通过SSH修改。这里介绍几个最常用的命令。

1736574370615.png

我的/etc/config/network完整配置如下:

config interface 'loopback'
	option device 'lo'
	option proto 'static'
	option ipaddr '127.0.0.1'
	option netmask '255.0.0.0'

config globals 'globals'
	option packet_steering '1'

config device
	option name 'br-lan'
	option type 'bridge'
	list ports 'eth0'
	option promisc '1'

config interface 'lan'
	option device 'eth0'
	option proto 'static'
	option ipaddr '192.168.1.201'
	option netmask '255.255.255.0'
	option ip6assign '60'
	option gateway '192.168.1.1'
	option delegate '0'
	list dns '223.5.5.5'

如需修改,可使用vivim命令:vi /etc/config/network,然后按i进入编辑模式。

编辑完成后,按esc切回命令模式,然后输入:wq保存并退出。如果输错了不想保存直接退出,输入:q!

如果要修改的东西太多手动编辑太麻烦,可以用EOF命令覆写整个文件:

cat > /etc/config/network << 'EOF'
#两个EOF之间为整个文件内容,便于复制粘贴
EOF

注意前面一个'EOF'必须用单引号包裹,否则文件内的特殊符号需要转义。

最后通过/etc/init.d/network reload或者/etc/init.d/network restart重载网络配置。如果还是不行重启容器试试。

初步配置

局域网访问192.168.1.201进入登录页面,密码是编译时设置的,如果没改就是root

1736437938306.png

先去改个主题配色给自己提供点情绪价值吧~在系统-进阶设置-Argon主题设置。

1736437850476.png

系统-设置向导是最关键的配置,每项都要好好核对!

网络-接口也是重中之重,部分和设置向导重合,其余设置也需要核对。

1736438698656.png

如果openwrt作为旁路由,没有WiFi天线,建议把接口的br-lan改为eth0。eth0只支持有线网口,br-lan可以理解为有线+无线。

1736438958802.png

DHCP

Dynamic Host Configuration Protocol,自动分配局域网IP地址,例如手机接入WiF瞬间分配到192.168.1.6,同时分配了上游网关和DNS服务,上游网关决定了网络拓扑,局域网内只能有一个DHCP服务。谁开启了DHCP,谁就是终端的默认网关。

根据排列组合有以下几种情况:

  1. 主路由网关指向旁路由,旁路由网关指向旁路由:如果旁路由没有WAN口,局域网无网络。
  2. 主路由网关指向旁路由,旁路由网关指向主路由:不可以,死循环,局域网无网络。
  3. 主路由网关指向主路由,旁路由网关指向旁路由:旁路由不起作用,旁路由无网络。
  4. 主路由网关指向主路由,旁路由网关指向主路由:
    • 主路由开启DHCP,旁路由关闭DHCP:旁路由不起作用,设备会自动连接到主路由,并通过主路由收发信息。除非在终端设备上手动设置静态IP,并指定网关为旁路由。
    • 主路由关闭DHCP,旁路由开启DHCP:旁路由起作用,设备会自动连接到旁路由,经由旁路由→主路由双重路由后连接到公网。

所以我选择的配置是:关闭主路由的DHCP,开启旁路由的DHCP,并将旁路由的网关指向主路由。

如何关闭主路由的DHCP?电信网关访问192.168.1.1-高级设置-局域网设置。

1736350510164.png

然后在openwrt-网络接口-DHCP服务器-常规设置,确保“忽略此接口”没被选中。自动分配地址范围设为192.168.1.2~192.168.1.100,共99个地址,应该足够给家里的设备分配了。NAS建议设为静态地址,如192.168.1.101。这样能确保分配不重复。

1736439353563.png

DNS

Domain Name System,域名翻译官,根据域名查询IP,可以给正确的也可以给错误的,多个DNS可以上下游嵌套,通过DNS劫持可以破解一些软件功能或者去广告。但同时,某些墙也可以通过DNS污染让你偏离航向,找不到正确的访问地址。总之DNS是一把双刃剑。

当终端自动获取IP地址时,同时也会设定网关和DNS,DNS通常和网关地址相同,但有个区别,上游网关是唯一的,而DNS则是饱和式救援,可以设置多个DNS服务器,通常为本地DNS路由器地址+公共DNS服务器地址。常见的公共DNS如下:

  • 国内常用公共DNS
    • 阿里云:223.5.5.5
    • 中国电信:114.114.114.114
  • 国外常用公共DNS
    • 谷歌:8.8.8.8
    • Cloudflare:1.1.1.1

如果是国内网络环境,首选DNS不要用国外DNS,建议阿里云,如果能访问国际网络,建议都填上,但也不是越多越好,建议别超过4个。

至于路由器上的本地DNS,一个典型应用场景是去广告,例如插件AdGuardHome。但是查了些资料后目前并不推荐使用了,原因如下[5]

“效果不佳,现在应用的广告都内置httpdns,路由器部署AdGuardHome连httpdns都没法拦截,更别说用dotdoh的大厂了。”
“现在app的广告都已经和内容使用一个域名了,单纯的dns已经没有办法去广告了,更别提广告还是走的https加密,就算是代理软件也没办法的。”
“浏览器插件或客户端过滤当前设备大概能过滤⁴⁄₆~⁵⁄₆,因为可以针对性的过滤路径或文件。而通过网关装adghome能有就²⁄₆~³⁄₆就不错了。通过流量过滤我的感觉是介于两者之间,能过滤一部分的手机开屏广告和一部分的浏览器弹出广告,算是一个配置既不太麻烦效果也能接受的均衡点吧。”

简言之,现在广告的矛已经升级了,普通的盾已经防不住了。而且AdGuardHome是比较庞大臃肿的,拖累性能,增加延时,过滤效果却一般。而且如果小白配置不当还有可能连不上网络,得不偿失。如果确实对去广告有强烈需求,还是建议在终端拦截,成功率更高一些。

DDNS

Dynamic Domain Name System,即动态域名解析,将你的域名自动解析到软路由或NAS的公网IP,这样你就得到了一个固定的访问域名,即使没有固定的公网IP(通过授权密钥修改域名解析,会自动更新)。

举例:访问nas.crowya.com解析到222.64.209.221。(前提是你有一个域名。我的域名是在阿里云买的。)

其中222.64.209.221是我的路由器公网IP,但并不固定,隔段时间会变,或者重启路由器也会变。这也是家庭宽带和公网服务器最大的不同之一,没有固定IPV4。想要固定IPV4需要和运营商申请,但不一定同意。有些校园网用户或个人要求开通的可能会有固定IPV6。IPV6都是固定的,因为地址数量多,用不完,根本用不完。IPV4之所以不固定的根本原因是地址数量稀缺,全球终端都挤爆了,通过回收再分配可以节约一点号段,就和手机号、车牌号类似。

由于DDNS是个特别普及的功能,实现方式有很多,提供服务的厂商也很多,这里讲讲绿联自带的DDNS和openwrt的DDNS-GO插件。两者功能重复,建议只启用其中一个。我选择的是DDNS-GO,因为软路由是上游网关,它的IP地址更可靠,下游终端可能会因为挂代理测出来的IP不准。

绿联DDNS

在控制面板-设备连接-远程访问,启用DDNS支持并填入阿里云域名和AccessKey。

1736611789606.png
1736612082066.png
DDNS-GO

首先在openwrt软件包安装DDNS-GO插件并启用,访问后台地址,设置密码并登录。

1736612825913.png
1736612592700.png

UPnP

Universal Plug and Play,自动端口转发,常用于P2P下载等非固定端口,打一枪换一炮的游击策略,端口号通常很大,例如54490,过会儿又变成了59668,局域网内只能有一个UPnP服务。我选择关闭电信网关的UPnP启用openwrt的UPnP,但似乎没什么意义,因为UPnP似乎没法透过双重路由,但即使是倒过来启用电信网关的UPnP关闭openwrt的UPnP,似乎也会有一些奇奇怪怪的BUG,这个还待研究……有条件的话最好还是用openwrt做主路由,从根源上避免双重NAT。

启用或关闭电信网关的UPnP需要超级管理员密码,详见上文光猫部分。

1736350175143.png

openwrt的UPnP一般不用特别设置,默认就是启用的。

1736614009537.png

OpenClash

首先梳理一下clash的来龙去脉,clash有好多好多版本,例如Windows端的CFW,安卓端的clash,还有docker版clash内核,openwrt的OpenClash插件,还有三大面板dashboard,yacd,metacubexd……为了分清这些软件的区别,首先要建立前端和后端的概念。

你看到的可视化web页面、软件的UI界面、控制中心、管理后台、各种设置项,都是前端,只要不是通过代码或配置文件来交互的,都是前端。而后端是看不见摸不着的,只能通过代码、命令、配置文件、API等指令来执行具体功能,对人类来说很难操作,但是对机器来说小菜一碟,它又不需要花俏的界面,它只负责执行命令。

clash最初只有一个内核,也就是后端,它只接受.yaml格式的配置文件。这个配置无法自动更新,并且对小白不太友好,所以才会有各种各样的开发者开发出了前端+后端的傻瓜式软件版本,例如CFW。也有的开发者是只做了前端,采用前后端分离的方式,可以自由搭配,例如docker版clash+yacd的组合。

  • clash后端内核:docker版clash、mihomo(clash-meta)
  • clash前端面板:官方版dashboard,yacd(最优雅),metacubexd
  • clash前端+后端:Clash for Windows(CFW)、安卓版clash、OpenClash(Linux)

但是出于某些不可抗力,最初的clash内核源码(Dreamacro/clash)已于2023年11月删库保平安。虽然内核停更了,但各大前端和前后端软件还在,并且用户非常广泛。目前有个叫mihomo的项目(MetaCubeX/mihomo),基本上继承了clash的衣钵,并且在继续更新。就像moviepilot代替nastool一样换个马甲东山再起。OpenClash也还在继续更新,并且支持clash-meta。clash-meta是mihomo的另一个马甲。

时至今日,虽然红颜薄命命运多舛,clash依然是最流行的代理软件。不过也有一些别的选择,例如docker版v2rayA,配置简单,可以自动更新GFW列表和机场订阅,并且支持同时连接多个节点负载均衡,但是内存占用和openwrt差不多,已经被我打入冷宫了。

要想在NAS上搭建代理,主要有以下两种方案:

  • docker版clash+yacd:无法自动更新机场订阅。仅限IP:PORT提供代理服务,不支持局域网代理。
  • openwrt版OpenClash:可以自动更新机场订阅。既支持IP:PORT代理,也支持局域网代理。

显然openwrt版OpenClash的功能是大于docker版clash+yacd的,但是配置也更复杂一点。都折腾到这份上了,总有一天还是得升级到OpenClash的。建议一步到位,直接上手OpenClash。

修改GitHub下载地址

初次使用可能会遇到内核下载失败的问题,在覆写设置-常规设置里面换个CDN地址试试。

1736655338784.png
添加订阅并启用自动更新
1736655001574.png
修改运行模式和DNS劫持

有两种模式搭配可选:(在插件设置-模式设置和DNS设置里修改)

  • Fake-IP模式+防火墙转发:(暂时没搞明白啥原理)
  • Redir-Host模式+Dnsmasq转发:推荐,感觉兼容性更好。此模式下亲测可以成功解锁网易云音乐。
1736656266287.png
添加自定义分流规则

如果直接修改配置文件,更新订阅时是会被覆盖的,为了永久保留自定义规则,需要到覆写设置-规则设置下面添加。

1736657069848.png
添加第三方规则订阅

先到规则附加页面底部-管理第三方规则集,下载几个常用规则,然后回到概览添加分流策略。

1736658419129.png

插件设置-第三方规则订阅-勾选自动更新。保存并应用配置。

1736658783546.png

解锁网易云音乐

解锁网易云灰色歌曲和VIP歌曲。原理是采用Bilibili/JOOX/酷狗/酷我/咪咕/pyncmd/QQ/Youtube等渠道替换音源。

安装软件包名为luci-app-unblockneteasemusic的插件,注意核对名称,解锁网易云音乐有多个软件包,其他包名可能版本较旧无法使用。

目前已亲测在iPad网易云音乐HD版和安卓网易云荣耀定制版上有效。最新的网易云官方版无效,只能是定制版。荣耀定制版可以在其他品牌手机上运行,但是需要安装荣耀账号服务。为了解决这个麻烦事,有酷安大神提取出了不需要荣耀账号的版本,且针对小米手机优化,界面也十分精简。推荐安装这个版本:下载地址

1736688962971.png

不论是iOS还是安卓都需要安装CA证书。iOS在设置-通用-VPN与设备管理-配置描述文件。小米手机可以先保存到文件管理器,然后在设置-WLAN-高级设置-安装证书,或者直接在设置搜索证书。

如果需要验证解锁有没有成功,可以用周杰伦的专辑测试,例如“十一月的肖邦”,解锁前全是灰的。

如果openclash和解锁网易云音乐冲突,请将openclash运行模式改为Redir-Host模式+Dnsmasq转发或者Fake-IP模式+防火墙转发,并且在openclash插件设置-开发者选项增加一条防火墙规则:(这个配置我足足摸索了一个星期!)

nft insert rule inet fw4 dstnat ip daddr @neteasemusic counter jump netease_cloud_music_redir

1736690106017.png

保存并应用配置后到防火墙检查一下规则是否生效:NAT动作链”dstnat”第一行应该是网易云音乐的相关规则,并且优先级很高(数字越小越高,不限正负)。这一点非常重要,直接决定了解锁成败与否。

1736690503119.png

ACME

ACME 的全称是 Automatic Certificate Management Environment,即“自动化证书管理环境”。用于自动申请和续签SSL证书,是开启HTTPS加密访问的前提。

注意luci-app-acmeacme.sh的教程有所不同,本文讲的是具有可视化面板的luci-app-acmeacme.sh的教程请看官方Wiki

1736944638123.png

这里的邮箱必须填上,否则无法申请证书。然后在证书配置添加并编辑。

1736944756462.png

DNS验证目的是为了确保你是这个站点的主人,即验证所有权,否则你一下子给一百个陌生人的域名申请证书怎么办,防止滥用,毕竟人家是免费的。如果DNS验证不了,请检查软件包是否安装了acme-acmesh-dnsapi,请注意,如果你是用KWRT在线编译的openert,默认是不带这个软件包的,建议手动补充到定制软件包列表。这个问题足足困扰了我半个星期才解决!感谢这个帖子指点迷津:openwrt 咋更新证书?luci-app-acme-OPENWRT专版-恩山无线论坛

1736944895735.png

如果Ali_Key和Ali_Secret填了没效果应该是插件bug,可以在DNS API凭证那一栏手动新增两行:

Ali_Key="你的Ali_Key"

Ali_Secret="你的Ali_Secret"

高级设置一般不用改,保存并应用之后,检查一下证书列表有没有新条目。成功的话会显示证书路径:

私钥:/etc/ssl/acme/nas.crowya.com.key

公钥证书:/etc/ssl/acme/nas.crowya.com.fullchain.crt

记住这两个路径就行了,后面在NGINX配置里会用到。也许你在这个路径下还看到了其他几个.crt文件,其他.crt只是中间产物,最后会合并成一个完整的证书链文件fullchain.crt(ACME插件自动帮你完成了拼接和软链接复制)。

如果证书列表没有更新,可能是还没到执行时间,一般来说每天零点才会执行检查更新证书的命令,不过你也可以通过SSH手动执行:

/etc/init.d/acme start

NGINX

最后一步是修改nginx配置,这个配置又足足困扰了我半个星期,日思夜想,夜不能寐,差点又要放弃HTTPS了,网上的教程查不到有用的,chatgpt也抓不住关键,硬生生把我从小白逼成了nginx配置专家。

启用HTTPS

这个步骤需要用到前面申请的SSL证书。目的是为了开启主域名nas.crowya.com的HTTPS访问。

先说一下,进阶设置里的nginx配置并不是原汁原味的nginx配置,是需要先经过UCI编译的,一定要仔细研读_lan的写法,有很多细节需要注意!

编辑器下面有一行说明:开头的数字符号(#)或分号的每一行(;)被视为注释;删除(;)启用指定选项。

虽然如此,我也不建议添加任何注释,因为UCI的注释很容易和nginx注释搞混,万一因为注释的问题编译失败是有可能打不开openwrt网页的,当然我已经失败N次了,补救办法也是有的,后面再讲。

仔细看这条option access_log 'off; # logd openwrt'这里的注释可是在引号里面的!万一你写到引号外面就凉凉了!这就是为什么我说UCI的注释很容易和nginx注释搞混!

原本的配置包括_lan等都不要删掉,建议只在后面新增,不要动原来的配置,即使chatGPT骗你删掉也别信,它懂个屁!如果你删了恭喜你再次喜提打不开openwrt网页。

系统-进阶设置-NGINX的UCI配置后面追加:

config server 'nas_crowya_com_https'
    list listen '443 ssl http2'
    list listen '[::]:443 ssl http2'
    list listen '666 ssl http2'
    list listen '[::]:666 ssl http2'
    option server_name 'nas.crowya.com'
    list include 'conf.d/luci.locations'
    option ssl_certificate '/etc/ssl/acme/nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'

第一段配置的含义是访问nas.crowya.com的443或666端口启用SSL加密传输。第二段配置的含义是访问nas.crowya.com的80端口自动重定向到HTTPS端口。443是浏览器默认的通用HTTPS端口,会自动隐藏省略。666是为了规避家庭宽带对443的封禁,额外增设一个加密端口,但这个端口会出现在地址栏无法隐藏,后面也会提到。两个SSL证书地址从ACME插件复制过来即可。

list include 'conf.d/*.locations'这句是从default_server那边抄过来的,这句必须要有,否则访问nas.crowya.com就是404。/etc/nginx/conf.d/luci.locations这个文件主要是指定主页地址(openwrt)。当然你也可以自己做一个主页[6],不一定打开就是openwrt,可以是个NAS资源导航,然后用别的空闲端口去映射openwrt。这一步我也卡了很久,因为我以为主页是可省略项,它能自动找到default_server的主页,实则不然,主页是必须要指定的,即使和default_server一样也要再写一遍。

其实这个配置就是反向代理的一种。你访问nginx,nginx访问luci.locations里指定的路径和页面(openwrt)。后面会细说。

如果你一不小心配置写炸了导致openwrt网页进不去,我把原始配置摘出来了。SSH输入以下内容可以恢复原始配置:

cat > /etc/config/nginx << 'EOF'
config main 'global'
    option uci_enable 'true'
​
config server '_lan'
    list listen '443 ssl default_server'
    list listen '[::]:443 ssl default_server'
    option server_name '_lan'
    list include 'restrict_locally'
    list include 'conf.d/*.locations'
    option uci_manage_ssl 'self-signed'
    option ssl_certificate '/etc/nginx/conf.d/_lan.crt'
    option ssl_certificate_key '/etc/nginx/conf.d/_lan.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off; # logd openwrt'
​
config server '_redirect2ssl'
    option server_name '_redirect2ssl'
    option return '302 https://$host$request_uri'
    list listen '80'
    list listen '[::]:80'
​
config server 'default_server'
    option server_name 'openwrt/'
    list include 'conf.d/*.locations'
    option access_log 'off; # logd openwrt'
    list listen '80 default_server'
    list listen '[::]:80 default_server'
EOF

注:两个EOF之间是原始配置,外面那个命令是覆写文件。

最后重启一下nginx:/etc/init.d/nginx reload/etc/init.d/nginx restart或者在系统-启动项手动点击。

反向代理

以前看到“反向代理”这四个字就头大,一直没搞清楚师傅到底是做什么工作的。这次终于做了点功课,就算挫骨扬灰都不可能再搞混了!

根本区别是这个代理架设在客户端还是服务端!如果是用户想委托中介,架设在客户端,就是正向代理;如果是服务商想委托中介,架设在服务端,就是反向代理。一个是打酱油的小孩,一个是商场的导购。假设你身患残疾出不了门,委托小孩帮你去买瓶酱油,这个过程是正向代理。商场预判了各种顾客的需求,招聘了一个导购员放在商场入口,然后小孩问姐姐,酱油在哪里,她告诉小孩在一楼食品区XX货架,但是小孩太矮够不着,于是导购姐姐帮忙从货架上拿下来递给小孩,这个过程是反向代理。

可是,个人家庭用户有什么服务端呢?什么情况下会用到反向代理呢?web服务也是服务!只要不是直接通过文件路径访问的,间接通过域名跳转,都涉嫌反向代理。设想这样一个场景:你的NAS里装着MP和openwrt等应用,只能局域网访问,或者外网通过不加密的http端口映射访问,那么你到海南旅游的时候怎么才能安全地访问家里的应用呢?这时你想到了你那豪宅中的保姆,打个加密电话给他,“喂,帮我看看MP入库了什么新电影?”于是保姆通过内网打开MP,并把页面内容保存下来,加密传输给你。当然,这个保姆也可以是一段程序代码,也就是nginx。注意这个过程实现了加密,反向代理一般就是为了开启HTTPS。

  • 反向代理:远程CALL你家里的保姆NGINX帮你打开内网页面,你和保姆加密通讯。
  • 正向代理:让你身边的助理Clash去外网Google一个东西,简称代理。

前面的UCI配置只是实现了openwrt主页的HTTPS访问,那还有那么多应用怎么开启加密传输呢?这里涉及到两个概念:

  • 子域名反向代理:通过xxx.nas.crowya.com的域名访问应用web页面,需新建xxx.locations文件并在UCI配置新增server,配置复杂但兼容性好,几乎所有应用都支持。
  • 子目录反向代理:通过nas.crowya.com/xxx的域名访问应用web页面,仅需更改luci.locations文件,配置简单,仅部分知名应用支持,如MP、ALIST等,需要开发者专门适配,否则可能会出现静态资源路径混乱,CSS/JS无法加载等情况。

我的经验是,除非应用的官方Wiki给出了子目录反代的配置说明,其他情况下子域名反代始终是更稳妥的选择。

下面分别给两个例子,可作为模板使用。其他应用的反向代理详见完整的NGINX配置

子域名反向代理(以TaoSync为例)

新建/etc/nginx/conf.d/ts.locations,文件内容如下:

location / {
                proxy_pass http://192.168.1.102:8023;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}

在NGINX的UCI配置后面追加:

config server 'ts_nas_crowya_com_https'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    list listen '666 ssl'
    list listen '[::]:666 ssl'
    option server_name 'ts.nas.crowya.com'
    list include 'conf.d/ts.locations'
    option ssl_certificate '/etc/ssl/acme/*.nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/*.nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'ts_nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'ts.nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'

访问地址:https://ts.nas.crowya.com:666

子目录反向代理(以MoviePilot为例)

/etc/nginx/conf.d/luci.locations文件后面追加:

location /mp/ {
                proxy_pass http://192.168.1.102:3000/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}

访问地址:https://nas.crowya.com:666/mp/

反向代理的斜杠/语法

反向代理的斜杠/非常关键,加和不加以及在哪里加的效果完全不同,可以说是玄学范畴,只能以最终测试为准。

具体使用方法可参考这篇文章:Nginx反向代理之路径替换 – 钟小嘿 – 博客园

建议要么两者都加斜杆,要么都不加,这样转发的地址一般不会错。
使用一句标准的话来说,总结如下:(与location是否有斜杆关系不大)
第一,若proxy_pass代理地址端口后无任何字符,则转发后地址为:代理地址+访问的uri。
第二,若proxy_pass代理地址端口后有目录(包括”/”),则转发后地址为:代理地址+访问的uri去除location匹配的路径。
但有些情况可能是错的,配置时需要谨慎。

绕过80和443端口

在局域网访问是感受不到运营商对80和443端口的封禁的,换句话说,80和443端口在局域网可以正常访问。但是一旦到了公网,比如用手机流量访问,80和443端口就打不开了,这是因为国内限制家庭用户搭建web服务,而80和443正是默认的web服务端口,分别对应HTTP和HTTPS,全天下浏览器都晓得,因此首当其冲。

解决方法汇总:

  1. 使用其他显性端口:随便选一个别的端口(不能和其他服务重复),例如666,将666端口转发到443端口。公网访问时始终携带端口号,例如https://nas.crowya.com:666。稍稍影响美观,但666在西方是恶魔数字,在中国是吉祥数字,比较有个性。
  2. 隐藏端口号的方法:在1的基础上隐藏端口号,理论上只有80和443端口会被浏览器自动隐藏,但多走些弯路也能达到隐藏的效果。
    • 服务器中转方案[7]:前提是你有一台公网服务器,将服务器的443转发到NAS的666可以实现不带端口号的访问,但可能会涉及流量中转,消耗服务器带宽,而且不是人人都有服务器的。
    • 隐性URL方案[8]:域名解析里新增一条解析记录,记录类型选择”隐性url”。和服务器中转原理类似,域名商提供一个中转域名,用iframe把带端口的地址给包了起来。相当于套娃,监控里看监控里的电视。兼容性差,有些页面似乎会无法显示。
    • CDN方案[9]:有些cdn的回源可以设置自定义端口,用cdn可以解决去掉端口号的问题,缺点就是不能直接回源。

隐性url有一个很大很大,甚至是致命的问题,首先,隐性url解析是基于iframe实现的,这对搜索引擎的蜘蛛非常不友好,注重seo的兄弟千万不能使用,第二,在浏览器中显示的域名永远都是隐性url记录的解析值,无论你怎么点内部链接,浏览器永远就显示那个域名,用户看了会摸不着头脑。可以这样理解:我建个博客,域名为123.com,使用了隐性url解析,我打开一篇文章,发现url还是原来的123.com,大受震撼。我登陆wordpress后台,url输入123.com/wp-admin,(刻进DNA的链接),发现页面正常跳转,但是浏览器显示的url还是原来的123.com???有用户看到的话,绝对以为闹鬼了。那么蜘蛛要来爬你的站,发现一个域名指向了一堆不同的页面,你让他怎么想?它还会来爬吗?

笔者目前采用的是显性端口号,因为隐藏端口号大费周章却没多大意义,最终还是放弃了。因为我的NAS还是个人使用为主,公网服务器我也有,没必要为一个端口号死磕到底,博客地址不带端口号就够了。

完整的NGINX配置

NGINX的UCI配置:(包含了openwrt、TaoSync、DDNS-GO、路由器页面的子域名反向代理)

config main 'global'
    option uci_enable 'true'
​
config server '_lan'
    list listen '443 ssl default_server'
    list listen '[::]:443 ssl default_server'
    list listen '666 ssl default_server'
    list listen '[::]:666 ssl default_server'
    option server_name '_lan'
    list include 'restrict_locally'
    list include 'conf.d/luci.locations'
    option uci_manage_ssl 'self-signed'
    option ssl_certificate '/etc/nginx/conf.d/_lan.crt'
    option ssl_certificate_key '/etc/nginx/conf.d/_lan.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off; # logd openwrt'
​
config server '_redirect2ssl'
    option server_name '_redirect2ssl'
    option return '302 https://$host$request_uri'
    list listen '80 default_server'
    list listen '[::]:80 default_server'
​
config server 'default_server'
    option server_name 'openwrt/'
    list include 'conf.d/luci.locations'
    option access_log 'off; # logd openwrt'
    list listen '80'
    list listen '[::]:80'
​
config server 'nas_crowya_com_https'
    list listen '443 ssl http2'
    list listen '[::]:443 ssl http2'
    list listen '666 ssl http2'
    list listen '[::]:666 ssl http2'
    option server_name 'nas.crowya.com'
    list include 'conf.d/luci.locations'
    option ssl_certificate '/etc/ssl/acme/nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'
​
config server 'ts_nas_crowya_com_https'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    list listen '666 ssl'
    list listen '[::]:666 ssl'
    option server_name 'ts.nas.crowya.com'
    list include 'conf.d/ts.locations'
    option ssl_certificate '/etc/ssl/acme/*.nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/*.nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'ts_nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'ts.nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'
​
config server 'ddns_nas_crowya_com_https'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    list listen '666 ssl'
    list listen '[::]:666 ssl'
    option server_name 'ddns.nas.crowya.com'
    list include 'conf.d/ddns.locations'
    option ssl_certificate '/etc/ssl/acme/*.nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/*.nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'ddns_nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'ddns.nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'
​
config server 'lan_nas_crowya_com_https'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    list listen '666 ssl'
    list listen '[::]:666  ssl'
    option server_name 'lan.nas.crowya.com'
    list include 'conf.d/lan.locations'
    option ssl_certificate '/etc/ssl/acme/*.nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/*.nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'lan_nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'lan.nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'
​
config server 'lanplus_nas_crowya_com_https'
    list listen '443 ssl'
    list listen '[::]:443 ssl'
    list listen '666 ssl'
    list listen '[::]:666  ssl'
    option server_name 'lanplus.nas.crowya.com'
    list include 'conf.d/lanplus.locations'
    option ssl_certificate '/etc/ssl/acme/*.nas.crowya.com.fullchain.crt'
    option ssl_certificate_key '/etc/ssl/acme/*.nas.crowya.com.key'
    option ssl_session_cache 'shared:SSL:32k'
    option ssl_session_timeout '64m'
    option access_log 'off'
​
config server 'lanplus_nas_crowya_com_http'
    list listen '80'
    list listen '[::]:80'
    option server_name 'lanplus.nas.crowya.com'
    option return '301 https://$host$request_uri'
    option access_log 'off'

/etc/nginx/conf.d路径存在以下文件:

  • ddns.locations
  • lan.locations
  • lanplus.locations
  • luci.locations
  • ts.locations

luci.locations文件内容:(包含了TR、MP、alist、clash和yacd的子目录反向代理)

location /cgi-bin/luci {
        index  index.html;
        include uwsgi_params;
        uwsgi_read_timeout 300s;
        uwsgi_param SERVER_ADDR $server_addr;
        uwsgi_modifier1 9;
        uwsgi_pass unix:////var/run/luci-webui.socket;
}
location ~ /cgi-bin/cgi-(backup|download|upload|exec) {
        include uwsgi_params;
        uwsgi_read_timeout 300s;
        uwsgi_param SERVER_ADDR $server_addr;
        uwsgi_modifier1 9;
        uwsgi_pass unix:////var/run/luci-cgi_io.socket;
}
​
location /luci-static {
        error_log stderr crit;
}
​
location /ubus {
        ubus_interpreter;
        ubus_socket_path /var/run/ubus/ubus.sock;
        ubus_parallel_req 2;
        ubus_script_timeout 600;
}
​
location /tr {
                proxy_pass http://192.168.1.102:9091;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}
​
location /mp/ {
                proxy_pass http://192.168.1.102:3000/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}
​
location /alist/ {
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_set_header Host $http_host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header Range $http_range;
                proxy_set_header If-Range $http_if_range;
                proxy_redirect off;
                proxy_pass http://192.168.1.102:5244/alist/;
                client_max_body_size 20000m;
}
​
location /clash/ {
                proxy_pass http://192.168.1.201:9090/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
}
​
location /yacd/ {
                proxy_pass http://192.168.1.201:9090/ui/yacd/;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
}

ddns.locations文件内容:(DDNS-GO子域名反向代理)

location / {
                proxy_pass http://192.168.1.201:9876;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}

lan.locations文件内容:(电信网关子域名反向代理)

location / {
                proxy_pass http://192.168.1.1;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}

lanplus.locations文件内容:(电信网关超级管理员页面子域名反向代理)

location / {
                proxy_pass http://192.168.1.1:8080;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Forwarded-Proto $scheme;
}

ts.locations文件内容已在子域名反向代理(以TaoSync为例)给出,此处不再赘述。

虚拟机

笔者使用频率较低,参考这篇教程即可:绿联NAS虚拟机安装Windows,打造辅助工作站 – 哔哩哔哩

主页导航

安装了这么多应用,如何快速管理呢?除了绿联自带的应用入口,还有一些docker应用是没有入口的,这里推荐一个浏览器主页插件iTab,可以很方便地进入应用后台管理页面,而且颜值极高,支持动态壁纸和小组件,图标数据云端同步,全平台通用。

1735446698657.png

不止是NAS应用,你常用的网站导航也可以单独做一个分类,通过右侧菜单或鼠标滚轮切换,而且所有图标都可以隐藏掉只剩一个搜索框,强迫症狂喜,不论是极简主义还是囤积患者都可以找到平衡。任何小伙伴没用过这个插件我都会伤心的,真的很好用自发推荐。

Honeycam 2024-12-29 12-15-24.webp

注:如果自动获取网站图标失败,可以手动去开发者工具箱找找图片,或者去iconfont-阿里巴巴矢量图标库搜搜看。

后记

这篇文章写的累死我了。。。

尤其是网上找不到教程被迫自己摸索的时候,无数次沮丧、失望、绝望、奔溃,那一刻我真的懂了没有可行性论证的前提下做事是多么困难多么艰辛,就像一旦有人验证过原子弹可行,你有了这个思想钢印,造原子弹就是信手拈来水到渠成的事情,但是对于未知的事情下定决心去做真的好难!好难!!好难!!!我动摇了无数次,每次遇到一点报错都要怀疑这条路是不是根本走不通或者硬件本身是不是不支持……幸好我的完美主义足够病入膏肓,这条路非行不可,这点要感谢我的偏执型人格,虽然平时很嫌弃她,但上头的时候还是很给力的……

从PT站看人性弱点

当你搭建完NAS的生产力环境、折腾完MoviePilot和影视库、通过了PT站新手考核,你就被PT站套牢了。

因为你不眠不休、日思夜想、熬夜折腾的这段时间和付出的心血,都是你的沉没成本。

这个时候如果有人发出一句灵魂拷问:这世上真的有什么资源是PT独有的吗?BT找不到吗?第三方播放器没有吗?

我沉默了。PT并不是独一无二的,但却是最矫情的。即便注册就要捐赠几百,即便一个月不登录就要被删号,即便刚入站就要经过一个月考核期,我还是爱她爱的死心塌地,每个月都坚持签到,这是为什么?如果把PT站拟人化,她不就是一个不断索取的公主病小仙女吗?

这时我才想起了那个不哭不闹、从来不向我提任何要求的BT。但是我怎么就,从来没有珍惜过她呢?我觉得她傻,好欺负,所以下完电影就删种……唉,人性呐,轻易得到的就不会珍惜。历经千辛万苦得到的,即使平平无奇,也不舍得丢掉。

PT的生态之所以如此完善,恐怕也是因为千千万万个被沉没成本套牢的用户,其中不乏一些优秀的开发者,用爱发电。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往NAS入坑笔记 | 网盘+相册+影视库+软路由 ALL IN ONE

]]>
https://crowya.com/4249/feed 26
迄今为止最满意的GIF录屏软件 https://crowya.com/4236 https://crowya.com/4236#comments Sun, 29 Dec 2024 15:26:37 +0000 https://crowya.com/?p=4236 试过了天若OCR、ShareX、LICEcap、ScreenToGif等各种GIF录制软件,发现最好用的是这款 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往迄今为止最满意的GIF录屏软件

]]>
试过了天若OCRShareXLICEcapScreenToGif等各种GIF录制软件,发现最好用的是这款——Honeycam,网络上宣传很少,知道的人不多,当我打开它的主页惊喜地发现它属于Bandisoft旗下,和曾经风靡一时的蜂蜜浏览器是同根生,期望值瞬间拉满,最终也的确不负众望。

插句题外话,这家公司给我的初始印象很好,之前用过的Bandicam(班迪录屏)和Bandicut(班迪剪辑)都是非常利索的神器,以前测过它家录制视频的体积和清晰度都是最佳,而且可以选CPU或显卡,还有它那个无损切割也是非常牛逼的功能,和剪映那种需要渲染才能导出的是不一样的,无损切割或拼接是瞬间完成,画质丝毫不变的,对于轻量级剪辑非常适用,但缺点是不能加任何特效。

一张图就能说明Honeycam有多好用,完全解决用户痛点。

GIF的体积通常是比MP4大好几倍的,用其他软件录出来的话,10秒钟就要上百MB,要是时间再长一点,都要几百MB了,实在是太离谱,而且也没有压缩的选项,而这个Honeycam,是唯一一个把压缩功能做的这么简洁明了的,而且还贴心地写了篇教程告诉你如何缩小图像文件大小,真的是做到用户心坎上了。

而且Honeycam的UI界面还算可以,我用的是免费版左上角有水印,录制时长限制好像是10s,不过对于我够用了,而且我现在没有那种必须无水印的强迫症了,而且这软件我也愿意无偿安利,水印留着也不错。

还有一些高级功能暂时没接触到,但看着就很强。

至于其他的软件,各有各的缺陷,ScreenToGif是在太臃肿了,UI界面字体都发虚,刚打开就没有使用的欲望……LICEcap安装包是很小巧只有几百kb,不过功能也很简陋,而且录制出来的GIF体积也很大。

天若OCR和ShareX都是大而全的OCR+截图录屏工具集,包含很多功能,录制GIF并不是最强最专业的,不过OCR还是挺好用的,截图标注也好用,比如本文的所有图片就是天若OCR截取并标注的。

天若OCR的界面非常素雅耐看,也可以安利一下。

最后展示一下我录的WebP,10秒钟才7.8MB。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往迄今为止最满意的GIF录屏软件

]]>
https://crowya.com/4236/feed 2
沃尔沃VOLVO工厂参观日记 https://crowya.com/4193 https://crowya.com/4193#comments Thu, 26 Sep 2024 17:05:01 +0000 https://crowya.com/?p=4193 这种活动本来应该是由组长出席的,但人家日理万机,作为组里的咸鱼,参观交流这种好事终究还是落到了我头上,也算是土 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往沃尔沃VOLVO工厂参观日记

]]>
这种活动本来应该是由组长出席的,但人家日理万机,作为组里的咸鱼,参观交流这种好事终究还是落到了我头上,也算是土鹌鹑进大观园了。

今天参观的这个工厂位于上海浦东,人家不是生产汽车的,而是生产挖掘机的。没想到吧!上一个让我种草的还是兰博基尼拖拉机。据说厂区员工约两百人,车间工人约一百人。为了避开早高峰,人家七点半上班,四点下班。外企是不加班的。狠狠羡慕了。每个人都看起来很精神,与常年加班的参观企业高达三十人的丧尸队伍形成了鲜明对比……

生产管理

在进入生产区之前,给每个人发了护目镜、反光马甲、安全帽三件套,这里要点名表扬的是他们的安全帽,做的和鸭舌帽一样轻薄,甚至我刚拿到的时候以为就是一个鸭舌帽,只不过帽子里面的夹层是硬的,这谁不爱戴啊!

工厂不大,但空间利用率非常高,整个产线非常紧凑。没有大量采用机械臂,人工还是主要的装配方式,但效率很高。很多零件物料区就紧挨着产线放置,就像厨师的调料罐就在手边一样。扳手是有扭矩传感器的,每一个螺丝是否拧紧都由系统判读,螺纹浸胶也有视觉识别系统。不过工具点墨水这种传统方式也是存在的。连工人的动线、走路距离也在优化的考虑范围内,自家装修都没考虑那么细!仓储区采用扫码定位的方式,信息化水平很高,对应的货架会亮起灯,直接找灯就行,闭着眼睛也不会找错。而且仓储区就在生产车间隔壁,哦不对,连墙都没隔。每层货架都是滚轮隔层,物料箱的推拉感觉会像抽屉一样省力。据说连卸货也是按需到达,就像南方人做饭前才买菜一样,零件到了就直接进车间一锅炖了,如果唐僧是一个螺栓,估计孙悟空也来不及抢救。如果是我这种白痴老板,可能就会建个大仓库存零件,囤货再取货,顶多搞个快递分拣那样的机器人来回跑……

那一刻我懂了,航天这种总装厂为什么看起来这么白净空旷,因为根本不是现代流水线作业,是硕博手工小作坊。什么时候挤起来了机油味多起来了低学历工人占比多了,才是商业航天的出头之日。设计密集型产业如果没有风口是赚不了钱的。

每个工序都有一个指示灯,正常情况下是绿色,如果出现故障就会变黄,如果一段时间内没有解决问题就会变红,最终导致产线停下来。最前面有一个信息看板,可以看到今天的生产进度,比如当前生产一辆挖掘机的耗时是75分钟,已经生产了5辆,据说他们高峰时期可以每天生产27辆,但是参观当天他们的生产计划是6辆。可能也是现在大环境变差的一个反映?听说2010年的时候国家有一波巨额补贴发力基础建设,那个时候五粮液也想造挖掘机,沃尔沃的产能也是在那个时候提升上去的,后来这个风口过去了,产能就一直稳定没变了。所以,看到没,先进生产力这些只是表象,技术不是难题,重要的是需求,只要需求量大,一定会倒逼供应端量产升级。再钝的剑多磨几次也锋利了。关键是看市场给不给你这个机会。是时代造英雄而不是匹夫的一厢情愿技术能力。

所以个人悲观地认为,很多军工产品的质量和效率问题暂时是无解的,一是定制化产品太多无法形成量产,二是市场不给试错机会。就像你定做了一件衣服但你拿回家又不穿,晾在衣柜里,裁缝怎么知道他做的好不好呢?结果等衣服发霉了你想到拿出来试一试了,穿到身上发现扣子缝错了再去刨人家祖坟,坟头草都七丈高了……

最炸裂的是,沃尔沃工厂一个产线可以生产不同型号的挖掘机,大型挖机和小型挖机从同一个阴道分娩出来你敢信?!而且这个吨位的差距,怎么看也不是几个小零件的差异那么简单。如果是我这种白痴老板,可能就会圈很大的地,分好几条产线,雇两倍的员工,对外宣称占地多少亩,气势多宏伟……

不过大挖机的工序和小挖机的工序耗时不一样,会出现前后产线等待问题,所以要匹配时间,听他们说最好是一台大挖机配几台小挖机生产,听到这里,如果我是一个嗅觉灵敏的数学建模出题老师,那么我今年的出题素材就有了……排队论,最优排班表,死去的记忆很少再攻击我了。

惊到我的是,沃尔沃居然给每个员工做了雷达图,维度是对每道工序的熟练程度。我一直以为这种华而不实的图只适合用来互联网简历上装逼,没想到是真的有实用功能。沃尔沃有个管理制度叫333,即一个岗位至少有三个人会,一个人至少会三种岗位,一个车间至少有三个全能员工。前两个还比较正常,但全能员工给我的冲击力太强,一个雷达图全边形战士就这么活生生地展示在我眼前,ARE YOU SURE?听说他们会组织轮岗培训和考核,每一项工序分三级熟练度,如果每个工序都是三级熟练度,那你就是全能员工!所以当我看到某员工只差一项技能就即将获得大满贯时替他激动不已。

至于供应链,沃尔沃零几年刚进入中国的时候,零部件都是进口的,现在国内供应商已经可以生产一部分零部件了,且物美价廉,但是像发动机这样核心的东西,还是海外进口的。

思想理念

再来说说他们的理念。减碳是真的在做,据说他们前几年和国网搞的屋顶光伏项目,已经回本并且供应了厂区百分之六十的电力。又一次对国网吃醋,光伏果然是个饱和式竞争的行业。另外,他们的目标是要实现不少于35%的女性员工和领导层。不得不说这点真的比国内黑心企业强太多了,人家一个生产大吨位挖掘机这种重工业风的企业,都在努力实现性别均衡,而国内就喜欢卡性别卡年龄卡户籍,女生指标不超过多少个已经成为常规操作。真的是两种反方向的努力。

而且他们的管理层,真的是从一线操作工晋升上来的。国内工厂你就打一辈子螺丝吧……

最让我动容的是,他们很在意挖掘机座椅的舒适度,他们说,挖掘机司机很辛苦,提高舒适度就是提高效率,其他成本可以省,座椅不能省……员工的疲劳也会影响质量……人老了,听不得这些人文关怀,如果我是叶文洁,听到这段话都会迟几秒按……

整个参观下来,没进过浮夸的会议室,没有巨屏投影,展板直接放在车间,甚至后面放PPT交流都是大家随便拖个椅子坐下就听。很种草他们带滑轮支架的显示屏,感觉居家很适合用来放电视。如果是我这种白痴老板,可能就会单独做一间形象展示厅,那一刻我才发现,国企对我的驯化深入骨髓,可我一直觉得自己是个很叛逆的人呐!果然环境还是会制约人的想象力。

触电体验

本次参观之行还有一个有意思的地方是在沃尔沃的触电体验区,EE人怎么能抵挡这种诱惑,那光滑的两个电极犹如姑娘袒露的双乳,不知不觉你就伸出了双手……共有十级可调,一级触电好像是50V,2mA左右,我试到了第五级,好像是70多伏,3mA左右。(记不清电压中间有没有小数点了。)终于可以和大家分享一下触电的美好体验,那种感觉就像是脉冲按摩,触碰电极的手指有麻麻的感觉,就像蚊子频繁用尖针刺你,但只在表皮有,身上不麻,身上导通久了是一种若隐若现肌肉酸酸的感觉,但时间不长的话基本品味不出来,只有手指头的麻感比较明显,而且可能是周期性高频信号,我猜测是因为皮肤和电极接触不良导致的断续,也有可能是因为指纹的沟壑导致触点不断变更。触电体验区是意外伤害体验区的一部分,本意应该是让员工警惕触电的危害,但是……我怎么觉得我的敬畏之心反而下降了……本来以为电一下就会一命呜呼,没想到只是蚊子叫,甚至还有点按摩的快感……虽然只体验了五级,但其实感觉还能往上调,但是有点不好意思占着坑位继续玩了,后面还有那么多同事们,总不能显得过于变态……不过说来也巧,电完回家之后,我居然破天荒地立刻洗澡而且把衣服都洗了,也没有坐在厕所刷手机,而且当天晚上就写了博客……难道电击疗法真的是治疗拖延症的神迹?

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往沃尔沃VOLVO工厂参观日记

]]>
https://crowya.com/4193/feed 5
Argon主题优化 | 将说说添加到RSS https://crowya.com/4185 https://crowya.com/4185#comments Mon, 16 Sep 2024 10:21:58 +0000 https://crowya.com/?p=4185 动机 果然读者是第一生产力,自从有友友反馈RSS订阅不到我的脑电波(疯言疯语)后,我就下定了决心解决这个问题, […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Argon主题优化 | 将说说添加到RSS

]]>
动机

果然读者是第一生产力,自从有友友反馈RSS订阅不到我的脑电波(疯言疯语)后,我就下定了决心解决这个问题,在请教了chatgpt老师后,仅用两个小时就搞定了这个功能,其实很多事情都没有我们想象中的那么困难,只要你起步去做,就会发现这件事情——半步就走到头了。

方法

废话不多说,直接上代码:

// 将 shuoshuo 类型的帖子加入到 RSS feed 中
function custom_rss_query($query) {
    if ($query->is_feed) {
        $query->set('post_type', array('post', 'shuoshuo')); // 添加 'shuoshuo' 类型
    }
    return $query;
}
add_filter('pre_get_posts', 'custom_rss_query');

// 只在 RSS 中为没有标题的 shuoshuo 自动生成默认标题
function add_default_title_to_rss_shuoshuo($title, $post_id) {
    if (is_feed()) {  // 检查是否是 RSS feed
        $post_type = get_post_type($post_id);
        
        if ($post_type == 'shuoshuo' && $title == '') {
            return '脑电波'; // 只在 RSS 中为无标题的说说设置默认标题
        }
    }
    
    return $title;
}
add_filter('the_title', 'add_default_title_to_rss_shuoshuo', 10, 2);

这个代码写在哪呢?可以写在主题的functions.php里,但是考虑到可能存在的更新覆盖(虽然主题大大已经停更很久了),我还是强烈安利你写在Snippets这个插件里,这个插件可以更直观清晰地管理附加代码,包括PHP、HTML、CSS、JavaScript等都能写。我也是今年才发现这个好东西,如果早点知道还能这么操作可能就不会去自己做插件了哈哈。

保存成功后可以去feed页面查看一下是否添加成功,比如我的订阅地址是https://crowya.com/feed

注意如果要在手机RSS阅读器里看到效果,可能需要清除一下缓存,WP Super Cache或者Autoptimize的缓存都清除一下试试,之前的评论验证码bug极有可能就是Autoptimize缓存未更新的问题。

如果你的RSS只显示10条内容,可以在WordPress自带设置里修改。

如果你好奇我的RSS结尾信息是怎么添加的,那是因为Yoast SEO刚好有这个设置我就用上了哈。

最后推荐一个安卓端的RSS阅读器:Read You,颜值还怪好看的哈,功能也简洁,对标的应该是iOS的Reader,最重要的还是免费开源。之前的inoreader为啥不用了?全平台还是香的,但是我发现它是在线更新,文章获取频率是固定的,没法第一时间手动刷新,对于我们这种需要实时调试的博主来说就有点鸡肋了,而Read You就只是单纯地从本地获取服务器内容,离线阅读器,随时都可以手动更新。

不过测试的时候最好清空一下所有文章哈,有可能他发现本地存过某篇文章就跳过更新了,这样有些标题可能还是旧的。

就酱紫吧,终于在中秋假期拔掉了这个flag,祝大家中秋节快乐!

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Argon主题优化 | 将说说添加到RSS

]]>
https://crowya.com/4185/feed 7
密码保护:人物速写(三):表演型人格的底层逻辑 https://crowya.com/4101 https://crowya.com/4101#comments Sun, 30 Jun 2024 05:07:29 +0000 https://crowya.com/?p=4101 无法提供摘要。这是一篇受保护的文章。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(三):表演型人格的底层逻辑

]]>

此内容受密码保护。如需查阅,请在下方输入密码。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(三):表演型人格的底层逻辑

]]>
https://crowya.com/4101/feed 1
密码保护:人物速写(二):采样心理学与宿命心理学 https://crowya.com/4092 https://crowya.com/4092#comments Sat, 29 Jun 2024 16:27:34 +0000 https://crowya.com/?p=4092 无法提供摘要。这是一篇受保护的文章。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(二):采样心理学与宿命心理学

]]>

此内容受密码保护。如需查阅,请在下方输入密码。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(二):采样心理学与宿命心理学

]]>
https://crowya.com/4092/feed 2
密码保护:人物速写(一):自恋型人格障碍素材合辑 https://crowya.com/4029 https://crowya.com/4029#comments Sat, 22 Jun 2024 18:49:21 +0000 https://crowya.com/?p=4029 无法提供摘要。这是一篇受保护的文章。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(一):自恋型人格障碍素材合辑

]]>

此内容受密码保护。如需查阅,请在下方输入密码。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往密码保护:人物速写(一):自恋型人格障碍素材合辑

]]>
https://crowya.com/4029/feed 21
上班真是太爽了 https://crowya.com/4014 https://crowya.com/4014#comments Sun, 19 May 2024 16:00:31 +0000 https://crowya.com/?p=4014 打工一个多月了,每天回家都在筑巢,所以一直没更新什么动态。我可能是真的有强迫症,并且朝着洁癖的方向发展了。不仅 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往上班真是太爽了

]]>
打工一个多月了,每天回家都在筑巢,所以一直没更新什么动态。我可能是真的有强迫症,并且朝着洁癖的方向发展了。不仅是精神上的、数字世界的,现在还延申到了物理世界。也许物理世界才是根,其他的本末倒置了。每天回到井井有条的屋子,我的顶级自恋人格就在窃窃私语。

“难道我真的是收纳天才?在我这间屋子里游荡的鬼魂也太幸福了叭!无论如何,我是不会与活人共享我的劳动成果的,女人和猫咪除外。”

目前除了零星的几个快递还没到,筑巢工程算是暂时告一段落,虽然这个顽固的进程可能还会伺机重启,生命不息,折腾不止。这意味着单线程大脑即将迎来一个短暂的低功耗待机状态,但是后续的任务队列已经堆满了,我要把之前还没通关的Layers of Fear打完,然后开始重新品玩经典的生化危机系列,从头开始,好久没见艾达和里昂了。听说2已经有了重制版。

这个周末是完全躺平的一个周末,虽然有个最美公寓评比,嘿嘿,那还不是小菜一碟。离家近的好处就体现出来了,老妈上门来打扫,于是我就有了免费的保姆,过上了衣来伸手饭来张口的日子。娶老婆享的福也不过如此。因此我会好好珍惜我妈,工资上交,反正她也不花。

一百年前,我就看透了工资上交的骗局。交给一个深爱你的自己不舍得花钱全帮你存起来的女人,比放保险柜还靠谱。但是却能无本万利,白嫖她的笑脸。

虽然我的小厨房有炒锅、高压锅电饭煲、空气炸烤箱、微波炉等等一应俱全,且一律选购年轻人喜欢的奶白配色,但主要使用人还是我妈。锅碗瓢盆,瓢盆就不说了,碗具也是有巧思的,之前压箱底的露营专用纯钛套装锅碗就派上了用场,说是套装,还是我自己在1688上挑挑拣拣配出来的,一个带吊环和导流嘴的钛锅里面,可以装下大中小三个钛碗,再放几个钛杯。钛金属是很独特的哑光灰色,看起来比304不锈钢精致多了。自从知道不锈钢里可能有铬等重金属元素,我就不淡定了。纯钛给的心理安慰实在是太强了,虽然纯度也不可能是100%,总会有杂质的。钛氧化后可能会出现一层蓝膜,有的人买来就烤蓝,有的颜值升高了,有的会变丑,因为火候难以控制,我相信我是后者,所以我不烤。

我最近好像对露营装备比较着迷,就连买的拉快递小车,也是营地车。买的箱子,也是那种适合露营用的折叠侧开箱。总之搬新家买了超多东西,此处不一一赘述,每件都花了很多心思。甚至会废寝忘食,熬夜购物、整理,睡四个小时然后像鬼魂一样去上班。

但上班是真的爽吧,感觉完全不像学生时代那么纠结,主要是强迫症没有了,效率大大提高。如果是我自己的课题,我会畏畏缩缩投鼠忌器一步三回头吧,但是做产品,没有那么多刨根问底的欲望,也没有挖掘创新点的压迫,实现甲方需求就行了呗,怎么简单怎么来。感觉完全是两个方向,学术是挖空心思把问题复杂化,自己搞自己,搞得心很累,上班是化简,一切从实用角度出发,反而能快速理解并发现新的技巧。后者的思路才对啊!而且有以前的图纸作参考,保护和辅电完全可以挪来用啊!

终于不是自己瞎搞了,从原边取电原来也不难,保护也不过是用比较器,之前从未关注过的部分,好像关注起来也没有多大负担。

五一放假回来之后,师傅让我一个月画好原理图,刚开始还担心,因为第一个月还要轮岗,但实际上执行还是没到位,理想很美好的一个月轮岗以两个半天的参观结束。轮岗主要是装配和调试,这里又是一个上班比上学爽的证明,因为上学是一个人画板焊板调板,现在至少有分工了,虽然设计还是得包揽从画图到试验的全过程……但有总比没有好。

下周是培训和参观,要到外地去,又可以爽玩一周。

幸好这周五就把原理图发给了师傅,虽然肯定有问题,甚至刚发完邮箱就发现有个电容耐压不够应该换掉(就看师傅会不会指出这个问题了,留作一个检验项),但好歹是交了一版,可以稍稍安心玩耍了。要是放在以前,以我的强迫症,起码会检查N遍才敢交。上班治好了我的强迫症,交差的优先级大于一切。过犹不及,深以为然,以前就是太用力了什么都干不好。我现在就是松弛感强的一批。至于之后的问题,就留给之后吧。

即使是886、996,上班也真的比上学舒服,因为强迫症严重的人在学生时代会感受到24小时全年无休延绵不绝的压力,即使导师不push,她都要被自我的凝视淹死了,尤其是当强迫症碰上拖延症,会无限内耗自己,就像误差放大器不停地积分累加,但调节器没有办法追上期望,这是一种永恒的失望,是INTP痛苦的学生时代。

但886肯定是不好的,人必须有时间做自己的事。目前而言,我想做的事是看这几个人的书:爱伦坡、阿加莎、爱手艺、斯蒂芬金。希望有时间吧。

隔离是一种享受,上班和下班的隔离,过去与未来的隔离。

上班真的太爽了,不知道以后忙起来还会不会如此口出狂言。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往上班真是太爽了

]]>
https://crowya.com/4014/feed 8
九寨沟单人行 https://crowya.com/4002 https://crowya.com/4002#comments Sun, 31 Mar 2024 06:23:52 +0000 https://crowya.com/?p=4002 前言 本来想去的是云南,因为冬天适合往南跑,但是拖延症直接拖到了春天,那就索性换个目的地吧,九寨沟这三个字就蹦 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往九寨沟单人行

]]>
前言

本来想去的是云南,因为冬天适合往南跑,但是拖延症直接拖到了春天,那就索性换个目的地吧,九寨沟这三个字就蹦了出来。为什么是九寨沟呢?大概是小时候看到的一个宣传图印在了脑子里,五光十色的水,很诱人。后来这个地方就成了一个心结,此生非去不可。物质和精神匮乏的童年需要用一生去填补。

这次旅程也再次验证了我是个P人,我不是不想做规划,我也向往那种准备充分按部就班的旅行,但终究是没有充足的时间和行动力去付诸实践。拖延症的一大特征就是做事需要仪式感,我没法把碎片的时间利用起来,哪怕查一下攻略和机票价格根本花不了多少时间。我不能,我做不到,我必须花整块的时间,比如一天来研究安排这个事情。如果没有研究的条件,那索性就不研究。所以曾经当某人叫我在系统工程课上帮他做攻略的时候,厌恶值拉满。我可以走神,可以刷小红书,但是要做这么正经的需要仪式感的事情,不大可能。因为走神和刷手机只会占用非常少的线程,随时可以切回听课的主线程,而我一旦开始思考,就是全屏沉浸式100%满线程状态,坐在教室等于白来。虽是水课,也需要对进度有个把握,才能放心地排除所有不重要的知识点。当然,这都是次要的,重要的是我体会不到任何结伴出行的便利,只有负担。

说到这里我又想起了我那爱发牢骚的老妈,她发牢骚的内容是为什么她还房贷,而我却不帮她还。一种相似的情绪在飙升。我没向她要学费,她却向我要房贷。不知道的人还以为她背负了多少巨款,结果扣完公积金只要再还几百。怎么说呢,我很好奇她上学的时候奶奶有没有催她要过。以及我女儿上学的时候,我会不会说出这种话。我肯定是不会的,因为我知道我女儿以后大概率也会有她自己的房子要还贷,一代人有一代人的事情,如果我有女儿的话。但我不会有,因为我不忍心让她重复我的命运。我把这种牢骚称之为年龄越界,年龄大的人与年龄小的人对比后觉得自己劳苦功高或者委屈,这是纯纯的道德绑架和年龄压榨。“我忙我有理”,“你凭什么这么舒服”,我觉得更进一步,她完全可以和刚出生的婴儿对比,凭什么这个小孩不用读书不用上班不用还房贷!如果一个小孩从童年开始就代办别人交代的事情,我简直不敢相信她会是个多么不开心的小女孩。她成年以后还会有更多的烦恼,但是她连童年都没有。

又想起了某人自己不想做攻略的原因是他上班了。年龄越界的又一经典写照。“我忙我有理”。是因为我还没上班所以好欺负吗?是因为我以后不会忙吗?上班比上课高贵吗?不知道他上课的时候,有没有烦人精去压榨他。如果是个姐姐,我一定会翘课去舔她,因为我图她的观赏价值情绪价值生育价值经济合作价值,但没有价值还要拖后腿的人,简直是在挑战我的道德底线。我要是一个人出游,也要比这省心吧。至少没有人会在上课的时候打断我,觉得我不务正业应该多劳动。我完全可以选择舒适地度过我的研究生岁月。1+1<1的买卖,我不会做。

扯远了,总之,也许是曾经的猪队友让我萌生了单人行的必要性。事实也证明非常爽。完全不用考虑他人口味,也不管什么当地特色菜,什么评分价位都不必在意,也不用排队。早上就蹭酒店的免费早餐,中午或者晚上点的菜全是我爱吃的。什么,听说好多人不爱吃鱼?那就狠狠地吃鱼!以前吃火锅总觉得不过瘾,现在才发现是尬聊和抢肉降低了用餐体验。同样的道理,对于神经麻木性树懒来说,全屏沉浸式满线程独占才能获得最佳的进食体验。

前面铺垫太多了。朋友建议我写一篇游记,但是我又实在不擅长叙事。那就直接把这几天的主要行程罗列出来吧。机票是出发前一天晚上买的,偶然发现12306也能买机票而且有时会便宜巨多。酒店是地铁或者商务车上定的,因为从成都到九寨沟单程就要五小时,有充足时间考虑住哪。吃什么就没有那么讲究了,主打一个眼缘。现在小红书推荐的也不靠谱了,大部分是营销,只要有想吃的菜品,价格合适,直接冲就可以了,反正树懒的味蕾也尝不出什么区别。

1000018841.jpg

行程概览

六天五夜,穷游一周,总开销¥3944.1,节奏散漫,除了九寨沟其他都是顺便看看的心态,不看也无所谓。可能有遗漏之处,先这样吧。

3.25 周一

  • 机票 上海浦东-成都双流 12306 ¥570
  • 酒店 如家精选 去哪儿APP ¥255
  • 吃喝 飞机餐 藤椒鱼肉饭 ¥0

3.26 周二

  • 车票 成都东-九寨沟 九座商务车 天府出行公众号 ¥246
  • 酒店 美仑酒店 去哪儿APP ¥240
  • 吃喝 九寨童话藏餐厅 牦牛火锅↑ 烤羊肉串↓ ¥113

3.27 周三

  • 门票 九寨沟 浙江七市感恩票 高德 ¥75
    • 景区消费 编发¥30 披肩¥60 烤肠¥10
  • 酒店 美仑酒店 去哪儿APP ¥240
  • 吃喝 牦牛肉面 ¥20

3.28 周四

  • 车票 九寨沟-成都 九座商务车 携程直通车 ¥218
  • 酒店 汉庭(天府广场店) 华住会APP ¥311.5
  • 吃喝 老妈蹄花 雪豆蹄花↑ 夫妻肺片↑ 麻婆豆腐↓ ¥114

3.29 周五

  • 成都市内一日游 高德 ¥67
    • 市中心 成都博物馆 人民公园 春熙路太古里
    • 西线 浣花溪公园 杜甫草堂¥47 宽窄巷子
    • 北线 成都动物园¥20 大熊猫繁育基地(来不及)
    • 东线 东郊记忆(来不及)
    • 远郊 都江堰 三星堆博物馆(太远放弃)
  • 酒店 汉庭(天府广场店) 华住会APP ¥311.5
  • 吃喝 民间粮仓·土菜馆 虾仁蒸蛋↑ 蘑菇青菜↑ 手撕鸭↓ 砂锅竹笋↓ ¥95.9

3.30 周六

  • 机票 成都天府-上海虹桥 12306 ¥840
  • 吃喝 机场德克士 炸鸡 ¥29

其他消费 ¥98.2

  • 小吃 烤肠 鸡腿 冰激凌 ¥29
  • 零食 虾片 士力架 鱿鱼须 ¥22.8
  • 饮料 椰子水 ¥9.9
  • 地铁 单车 ¥36.5

注:这不是事先做的规划,而是事后做的小结。铁血P人。

九寨沟印象

1000018989.jpg

九寨沟景区比九寨沟县城更远,虽然在深山,但景区附近的商业街也很发达了,肯德基、蜜雪冰城、咖啡什么的都有,酒店和饭店也特别多。由于是山沟,建筑都是长条形分布。订的酒店距离景区门口大约一公里,但店铺也大多在这个位置。到了发现酒店在装修门面,但还在营业,淡季人少,好心的老板娘直接给我升级成了高级大床房,感觉血赚。晚上看了会神秘海域4的游戏直播,投屏好爽。

次日准备进沟,早就听说浙江人免门票,但还是要买个观光车票,观光车是必坐的,因为景区很狭长,徒步根本不可能走完。一进景区就是坐观光车到最高点,然后往下逛,它有个丫形分叉,左边最高点是长海,右边最高点是原始森林,但是很遗憾,去的那天原始森林不开放,在右边的次高点箭竹海下车。九寨沟就是各种湖,但颜色比海更蓝,应该是溶解了什么矿物质。去的那天不算好时机,是个阴雨天,湖水几乎都是蓝色的,没看到想象中的五光十色,可能需要晴天阳光折射才有?季节海是季节性湖泊,去的时候是枯水期,所以并没有十分惊艳的感觉。但也有八分妩媚吧,即使是阴天依然美的像仙境一样。

1000019150.jpg

上午遇到一个粘人的妹妹,推销五块钱一根的编发,我寻思着还挺便宜,两根辫子岂不是只要十块钱,本来就对妹妹没有抵抗力,那就编吧。事实证明我还是太天真了,是一根发绳五块钱,她给我编了六根,所以花了三十。但也还行啦,谁让人家有这个手艺呢,关键是享受了妹妹的服务,快乐是无价的。中午回到了中心交汇点,也就是是诺日朗中心站,这里有食堂和铺子,一毛不拔的我也在这里买了个藏族披肩,从七十砍到六十,e人也许能砍更低,但是对i人来说多一秒的交流都是在掉电,六十就六十吧,谁让我没做功课呢,出发前根本没意识到九寨沟是高原,或者说意识到了但还是不信邪,气温比成都低很多,所以不得不买。不知道是不是我最近飘了,还是被迪士尼的物价衬托了,我感觉景区的物价也还行,在里面买吃的穿的也不是很贵。披肩是很厚一坨,穿上就温暖了许多。那时候根本没有意识到自己的新皮肤有多杀马特,直到回酒店照了照镜子。

1000019157.jpg

中午开始连绵不断的下雨,还好我带了一把超轻巧的五骨折叠伞,只有89克。养兵千日,用兵一时。这是很久之前种草的出门装备,那天是第一次打开,本来以为过脆易折,没想到意外好用,超爱这把小伞。

1000019441.jpg

下午从诺日朗中心站坐观光车去另一侧的最高点,也就是长海,海拔三千多米,车往上爬升,雨变成了雪,并且越来越大,这让我再一次感叹买披肩的正确性,不然肯定冻死。不过那天的长海有很多雾,不是很上镜。到终点站下车,外面下着雪,地很滑,行人踩过的雪,会变成冰,特别滑,至少我的鞋子差点让我滑倒N回,到五彩池那一段路全程扶着栏杆走。但是五彩池也是蓝色的,并没有想象中丰富的变化。之后就是走马观花的看湖看海看瀑布看溪流,不再赘述,直接上视频吧。

成都印象

1000019394.jpg

成都并没有什么特别想去的地方,随便挑了几个热门地点看一看,主要还是看美女,太古里的美女最多。晚上的太古里很好看,但是忘了拍照。透明的斜顶玻璃房子,彩色的喷泉,各种大牌的门面设计都很不错,纸醉金迷,以至于我这只小土鳖感觉格格不入。成都博物馆里面最喜欢的是这个青蛙笔筒,虽然不知道它在古代是干什么用的。

1000019369.jpg

大概是每个城市都有个人民公园,每个人民公园都有个相亲角,成都的人民公园再一次震惊我,男士一律用蓝纸,女士一律用粉纸,挂满了一片片,居然还有盖章,不知道是怎么做到这么整齐划一的。有个外国人在感慨和评论,但我不关心,匆匆穿过了这片区域。后来去了浣花溪公园和杜甫草堂,杜甫草堂要收费,但里面的园林设计还行,有条湖面上的小径我很喜欢。

1000019380.jpg

公园隔壁就是四川省博物馆,但是评价一般,我本身对博物馆也没什么特别兴致,就没去。紧接着去了宽窄巷子,算是两条商业街吧,但是我没有购物的习惯,走了一圈就去成都动物园了,本来是想去熊猫基地,还想去东郊记忆,但是下午确实走累了,走几步就要歇一歇,从动物园出来已经五点多了,来不及了,索性回春熙路吃饭了。没去成算是遗憾吧,不过也没那么遗憾,P人对自己一向很宽容。晚上住在天府广场那边,一晚三百出头,大床带窗,装修还新,在春熙路这边只能订到没窗的。前台的小姐姐还送了我华住会的金卡,虽然她们可能有提成吧,但我确实也想搞一个。之前错过了单位统一开通的金卡,现在嫖到也不错。在电梯里看到了汉庭的机器人,傻憨憨的。

周五的机票比周六贵,我是没想到的,最后选了周六回上海,来的时候是双流机场,去的时候是天府机场,一开始以为天府机场很远,但是地铁直达也还好,18号线有直达班次,比普通车次快十分多钟吧大概。

结语

在没出门之前,我总是蠢蠢欲动,总感觉淡季不旅游就是亏了。

我有一个暴论,工作日出去玩就是在变相赚钱。越打工,人越穷。

但是发现世界上还是有那么多工作日不上班的人,嫉妒之心油然而生。

不过真的吃喝玩乐一周之后,我只想回家躺着,出门实在是太累了。

人是在欲求不满的痛苦,和欲望满足后的倦怠之间,像钟摆往复。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往九寨沟单人行

]]>
https://crowya.com/4002/feed 15
最喜欢的三款Typora主题 https://crowya.com/3997 https://crowya.com/3997#respond Sun, 24 Mar 2024 04:49:41 +0000 https://crowya.com/?p=3997 本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往最喜欢的三款Typora主题

]]>
cut_20240108125456.png
Forest
cut_20240108125456.png
Mint
cut_20240108125511.png
Notion

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往最喜欢的三款Typora主题

]]>
https://crowya.com/3997/feed 0
一个充电宝引发的争论:先有mAh还是先有Wh https://crowya.com/3995 https://crowya.com/3995#comments Sat, 23 Mar 2024 14:01:20 +0000 https://crowya.com/?p=3995 那天在迪士尼排队,掏出了我最爱的Anker充电宝,后边的小情侣在赌我这个是无线的还是有线的,然后看我插上了线, […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往一个充电宝引发的争论:先有mAh还是先有Wh

]]>
那天在迪士尼排队,掏出了我最爱的Anker充电宝,后边的小情侣在赌我这个是无线的还是有线的,然后看我插上了线,他们以为有线实锤了。我很想转过头去告诉他们其实无线也可以的,但是我忍住了。被误解是i人的宿命。

1000018806.jpg

然后朋友跟我讲起了mAh和Wh的概念,我才知道原来mAh还有猫腻。

  • 瓦时(Wh):能量的单位,W=Pt=UIt。
  • 毫安时(mAh):电量的单位,Q=It​,电流大小和时间的乘积,可以理解为,电流越大,放电时间越短,电流越小,细水长流。
  • 注意:电量还有一个单位——库伦(C),1库仑=1安培·秒,因此1mAh=3.6C,而1C约相当于6.25×10^18个电子的电量。

从公式可以看出,mAh和Wh的计算公式只差了个电压U,因此,假如一个充电宝对应的Wh是固定的话,在不同的电压下,mAh就不同了。

例如安克的这个充电宝,电芯容量5000mAh,电池能量18.5Wh=3.7V×5000mAh,因此广告宣称的5000mAh,是在3.7V这个电压条件下的。但是当它以5V输出的话,不计损耗的理想情况下,容量就变成了3700mAh。而它标注的额定容量2900mAh,应该是考虑了各项损耗后的实验数据。

这里引入了一个重要假设,那就是充电宝的能量(Wh)是固定的。

但是,mAh也是有明确物理意义的呀,它是电量的单位,和库伦数成正比,而库伦数又和电子数成正比,换句话说,毫安时和电子数是绑定的。

那么问题来了,为什么是充电宝的能量固定,而不是它的电子数固定???为什么是从Wh推导mAh,而不是从mAh推导Wh?究竟是先有mAh还是先有Wh?

如果假设充电宝的能量固定,那就必须接受充电宝的电子数可变这一灵异现象。

但是,电子数怎么能变呢???它是一个物质实体,冰箱里的鸡蛋数量,难道会随着计算方式的改变而改变吗?

你可以暂停阅读思考半天,但是我现在就要揭晓答案。

其实这里进入了一个概念误区,毫安时代表的并不是充电宝里含有的电子总数,而是在外界刺激下可提供的电子数量。这里的外界刺激,就是电压差。电压差越大,它能提供的电子数就越多。就好比你向朋友借钱,他不给,但是你拿刀架在他脖子上,他立刻掏出一百万给你。

聪明的小伙伴可能会立刻发现这套解释的一个bug,按照我的说法,5V应该比3.7V的mAh更大才对!

对你个大头鬼哦!

5V是输出电压,不是电压差。为什么会有3.7V,主要是锂电池电芯单元的电压,充电宝和手机的电池电压都是3.7V左右,充电宝先升压到5V,然后才能给3.7V的手机充电,如果只输出3.7V,没有电压差的话,是充不了电的,水往低处流,电往低处充。

但是,不论是输出5V还是3.7V,都可以视为外界的反向电动势吧,它是一个阻力电压。想象一下,最愉悦的放电状态,肯定是一根导线直通啦,外界电压为零的时候能提供的电子数最多吧。它应该有一个内部电压,暂且设为N吧,不管有没有其他的升降压电路,它有一个放电的趋势,这能达成共识吧,然后输出电压是阻力,应该有个负号。所以电压差应该是N-5V和N-3.7V,而N-3.7V大于N-5V,所以3.7V的mAh更大。

也许有不严谨的地方,但是先这么理解吧。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往一个充电宝引发的争论:先有mAh还是先有Wh

]]>
https://crowya.com/3995/feed 1
自建Meting API修复音乐播放器 https://crowya.com/3987 https://crowya.com/3987#comments Tue, 12 Mar 2024 09:43:57 +0000 https://crowya.com/?p=3987 咕咕了这么久终于修好啦~ 原本以为超复杂,没想到超简单。 感谢injahow/meting-api的项目和并非 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往自建Meting API修复音乐播放器

]]>
咕咕了这么久终于修好啦~

原本以为超复杂,没想到超简单。

感谢injahow/meting-api的项目和并非正文的教程。

工具

步骤

  1. 在宝塔面板新建一个网站,域名为api.example.com,文件目录为/www/wwwroot/api
  2. 下载Meting API安装包,上传到/www/wwwroot/api再解压。解压后将文件夹重命名为meting。此时你的index.php应该位于/www/wwwroot/api/meting目录下。
  3. 访问https://api.example.com/meting/,即API地址。出现参数说明,代表部署成功。
  4. 页尾脚本添加以下代码:
<script> var meting_api='https://api.example.com/meting/?server=:server&type=:type&id=:id&auth=:auth&r=:r'; </script>

注意

  1. 阿里云DNS解析也要设置好,A解析或者泛解析,否则会显示502。
  2. 新建api.example.com网站的时候请选择PHP8.1或以下版本,否则控制台会报错utf8_encode()且模型无法加载。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往自建Meting API修复音乐播放器

]]>
https://crowya.com/3987/feed 1
P2P联机游戏加速之ZeroTier方案 https://crowya.com/3977 https://crowya.com/3977#comments Fri, 08 Mar 2024 04:11:15 +0000 https://crowya.com/?p=3977 写在前面 首先要感谢我那爱吃茴香馅包子的朋友的push,不然就不会有这篇教程了,其次要感谢他的建设性误导意见, […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往P2P联机游戏加速之ZeroTier方案

]]>
写在前面

首先要感谢我那爱吃茴香馅包子的朋友的push,不然就不会有这篇教程了,其次要感谢他的建设性误导意见,不然我早写完了。所以,在开始之前,请先把碍事的男人叉出去。

本教程适用于P2P联机的游戏,例如桌游模拟器(Tabletop Simulator, TTS)。至于如何判断你的游戏是不是P2P,靠猜。这种游戏的一项特征通常是以其中一台玩家的电脑作为主机。

不过有人说TTS不是标准的P2P,而是C/S模型,主机不是服务器,只是游戏中具有特殊能力的另一个客户端[10]。总之众说纷纭,但确实有玩家证实了ZeroTier对TTS具有降低延迟的效果[11]。虽然他结果是成功了,但是他配置错了,漏写了端口号。

本方案在阿里云服务器搭建了中转节点,但是没有服务器也可以,因为ZeroTier本身有它的官方服务器,但在海外,加个国内服务器只是为了加强连接的稳定性。没有服务器的小伙伴可以直接去下载它的客户端进行配置。它在全平台都有客户端,包括NAS,所以后期用来做NAS的内网穿透应该也很方便。

另外,不知道是不是长城宽带封锁P2P的原因,朋友的客户端并没有ping通,而我是电信,我的客户端能和服务器端ping通。网上也说有运营商封锁了ZeroTier,所以,本教程并不一定成功,可能还是和运营商有关。

概念解释与思路说明

因为我俩都是小白,所以在第一步选方案的时候就是个糊涂蛋,起初只是想利用服务器实现加速而已,具体怎么实现完全没有思绪。然后就被一团概念搞迷糊了,什么虚拟局域网?VPN?代理?乱七八糟搜到一堆squid、nginx代理的配置教程,后来一寻思这些好像是C/S的应用场景,也可能是B/S,反正好像没有人把它和P2P加速联系起来。

虽然迄今为止我也没有完全搞懂,但我有我的一套解释。下面先解决一连串概念问题。

P2P和C/S的区别?

  • P2P:Peer-to-Peer,点对点,也叫端到端。简言之不需要游戏服务器。
  • C/S:Client-Server,客户端-服务器。简言之,除了玩家之外,有Server这个重磅角色参与调度。
  • B/S:Browser-Server,浏览器-服务器。简言之,还是有Server这个角色参与,只不过客户端是浏览器,感觉和C/S的概念区别不是很大。

内网穿透是什么意思?

这个名字确实搞得挺高深莫测的,但其实就是把局域网里的设备挂载上网,大概就这么个意思吧,这样就可以通过网络远程访问家里的电脑或者存储空间啦。P2P联机的话,大概也是需要把主机玩家内网穿透的,这样另一个玩家才能访问到主机玩家的电脑。我的理解哈,可能有不对的地方。所以,核心思路就变成内网穿透啦。

内网穿透为什么能降低P2P游戏的延迟?

原生的Steam P2P或者游戏厂商官方的P2P可能是绕了太多弯路,然后借助咱自己搭的中转服务,玩家之间能找到一条更直的捷径。

1709831480888.png

内网穿透并不是一定可以优化延迟。两个节点之间的速度,最优的情况一般是P2P直连。 除非两个节点之间直连速度很差,这种情况需要一个对两端线路都友好的中转服务器,只有此时通过中转服务器建立的连接会比直连速度好。

组建虚拟局域网降低延迟的情况是游戏不能自己建立P2P连接,所以需要借助第三方工具完成。在国内网络情况下,组建虚拟局域网的内网穿透工具,都会优先尝试直连,包括UDP打洞、NAT转发、IPV6等办法,也就是帮游戏完成了P2P的工作,此时速度自然是好的。[12]

内网穿透工具有哪些?为什么选ZeroTier?

内网穿透工具超级多的啦,我找到了三款最主流的开源软件对比:[13]

frp

FRP使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。frp内网穿透无需多复杂的配置就可以达到比较好的穿透效果,具有较强的扩展性,支持tcp, udp, http, https 协议,并且 web 服务支持根据域名进行路由转发。此外,FRP 提供了一种新的代理类型 XTCP ,可以在传输大量数据时让流量不经过服务器中转,用于实现点对点穿透,当然,此功能并不能保证在你的网络环境 100% 可用,成功率较低,而且还要求访问端也得运行 FRP 客户端 (目前手机端ios没有frp客户端软件)。由于实现条件较多,所以有文件传输需求的朋友但必须用frp的朋友还是建议买带宽稍大一点的 VPS 会比较省心。frp适合有linux基础的个人,且需要自购一个云主机做中转,企业追求稳定可以考虑其他方式。

ngrok

ngrok是一个反向代理,通过在公共的端点和本地运行的Web服务器之间建立一个安全的通道。ngrok可捕获和分析所有通道上的流量,便于后期分析与响应。主要用途是给网站或者安装开发提供部署环境,但是也同样可以用来进行端口转发。ngrok适合有linux基础的个人,和frp类似,但比frp配置稍复杂,且需要自购一个云主机做中转,企业追求稳定可以考虑其他方式。

zerotier

ZeroTier官方解释为将整个世界转变为单个数据中心或云区域,将所有设备,虚拟机和应用程序联接起来,就像在同一个交换机接入所有设备一样。zerotier类似VPN,为内网服务器所在NAT网络和客户机所在NAT网络各虚拟出一个VLAN,这样俩个VLAN就可以通过ZeroTier建立连接,在通过UDP打洞技术就可以实现内网服务器和内网客户机直接交互数据。目前ZeroTier提供的点对点穿透技术成功率还是比较高的,可以应付大多数网络,国内长城宽带无法点对点穿透。而zerotier因为是国外的项目,官方提供的中转服务器在国外,国内连接延迟高甚至连不上,所以官方给出了moons概念,可以自己搭建中转服务器。另外ZeroTier 支持 Windows、macOS、Linux 三大主流平台,iOS、Android 两大移动平台,以及 QNAP(威连通)、Synology(群晖)、Western Digital MyCloud NAS(西部数据)三个 NAS 平台,还支持 LEDE 开源路由器项目,支持客户端真的很多。zerotier适合有linux基础的个人,一般用于NAS,为了稳定性需要自购一个云主机做中转,服务器和客户机都需要安装zerotier,企业追求稳定可以考虑其他方式。

结论就是ZeroTier地表最强,P2P成功率高且支持的客户端最多。而且看了一个V2EX的帖子[14],更加坚定了我的信心。于是我就闭着眼睛选了ZeroTier,但是万万没想到,朋友的网络还真是长城宽带。。。虽然他组网失败了,但是这不影响我们教程的继续。

内网穿透等于P2P吗?

不等于,因为ngrok这款内网穿透软件就不支持P2P,所以肯定是两个概念。

ZeroTier使用教程

先说一下ZeroTier的一些名词概念:

ZeroTier整的还挺有浪漫主义气质,官方的服务器叫PLANET,用户自己建立的中转服务器叫MOON。

MOON服务器只起到一个握手的作用,在P2P打通后就没有MOON服务器啥事了,因此不用担心MOON服务器的延迟和宽带会影响联机体验,但是MOON服务器务必位于国内,如果服务器位于海外的话,数据经由GFW出口,可能无法顺利打通P2P。[15]

1. 官网注册并创建一个网络

官网地址:ZeroTier Central

创建完后如图。

1709837556154.png

我的NETWORK ID272f5eae16764cfa

2. 服务器端操作(非必须)

如果你的服务器是CentOS系统,作为Linux发行版的一种,可以直接通过SSH运行Linux命令安装ZeroTier的Linux客户端:

curl -s https://install.zerotier.com/ | sudo bash

安装执行完成后,加入zerotier局域网:

zerotier-cli join 272f5eae16764cfa

这里的272f5eae16764cfa换成你自己的NETWORK ID

生成卫星服务器的配置文件moon.json

sudo chmod 777 /var/lib/zerotier-one
cd /var/lib/zerotier-one
sudo zerotier-idtool initmoon identity.public > moon.json

修改moon.json,我是直接用宝塔面板文件管理修改的(建议新开一个标签页,不要关闭SSH)。

文件地址就在/var/lib/zerotier-one

修改内容如下,写上自己服务器的公网IP:

"stableEndpoints": [ "139.224.16.2/9993" ]

其中139.224.16.2换成你自己服务器的公网IP,注意引号"不要漏掉。

之后生成.moon配置文件:

sudo zerotier-idtool genmoon moon.json

新建moons.d文件夹,并将生成的moon配置文件放进去:(也可以通过宝塔面板文件管理操作)

mkdir moons.d
mv 00000050cc09d260.moon moons.d/  

其中00000050cc09d260.moon换成你自己生成的文件名,每个人生成的文件名不一样。这个文件需要下载保存,后面还会用到。

之后重启zerotier就好了:

sudo systemctl restart zerotier-one.service

重启好后,进入zerotier官网的网络配置,可以看到一个未验证设备接入,这个就是我们刚刚配置的moon服务器了,给前面的小框打勾,允许这个设备接入。

1709866662853.png

允许接入后可能要稍微等一段时间才会刷新出物理地址。

3. 客户端操作

凡是进行联机的玩家都需要进行客户端配置,包括你自己和你朋友。

先在官网下载ZeroTier Windows端的安装包。下载安装好后,在Windows开始菜单搜索zerotier启动。

1709866065218.png

然后输入Network ID来加入网络,并且在zerotier官网的网络配置里,允许这台设备的接入。

1709866426561.png

之后进入C:\ProgramData\ZeroTier\One文件夹,新建moons.d文件夹,并将之前生成的00000050cc09d260.moon配置文件丢进去。

1709866955008.png

之后打开任务管理器,转到【服务】选项卡,点击【打开服务】,重启一下zerotier。

1709869308440.png

之后打开命令终端(管理员)查看一下节点列表:

zerotier-cli listpeers
1709867866741.png

出现MOON服务器的IP地址,且不显示-1,即为连接成功。

除此之外可以看到还有四个官方的PLANET服务器也连接成功了。所以MOON服务器并不是必须项,饱和式救援而已。

LEAF是叶子节点,别的玩家会标记为LEAF。

ping一下MOON服务器的延迟(虚拟局域网IP在官网可以找到):

ping 10.147.17.244
1709868463498.png

最短延时是15ms,再次验证了连接成功。如果是三四百毫秒以上且丢包严重,那应该是有问题。

如果ping不通的话,可以关闭Windows的防火墙试试。开始菜单搜索防火墙打开控制面板。

如果不想完全关闭防火墙,可以在防火墙的高级设置-入站规则里启用这几个规则。

1709868852262.png

其他方法

如果ZeroTier失败了,也可以试试其他软件。但我还没有测试过。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往P2P联机游戏加速之ZeroTier方案

]]>
https://crowya.com/3977/feed 6
Matlab求解函数solve、vpasolve和fsolve宠幸谁 https://crowya.com/3887 https://crowya.com/3887#comments Sun, 19 Nov 2023 17:56:34 +0000 https://crowya.com/?p=3887 以经典的PI补偿器求解PI参数为例: $$20 \lg |k_p + \frac{k_i}{j \omega_ […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab求解函数solve、vpasolve和fsolve宠幸谁

]]>
以经典的PI补偿器求解PI参数为例:

$$
20 \lg |k_p + \frac{k_i}{j \omega_c}| = gain\_rise
$$

$$
\frac{k_i}{k_p} = \omega_z
$$

第一个方程限定了补偿器在穿越频率处的增益,第二个方程拟定了零点位置。

(如果不懂涵义也没关系,这篇文章仅讨论针对类似的非线性方程组哪种求解函数最好用。如果想捋清楚各类补偿器的设计方法,后面单独写一篇文章。)

宫斗开始

首先淘汰fzero和roots这两个比较低端的函数,据说只支持单变量求解[16]

决赛圈还剩下solvevpasolvefsolve

  • solve:符号解或数值解,无需初始值,只需把方程等号改为双等号==。用法与vpasolve基本相同,感觉更为智能。
  • vpasolve:符号解或数值解,无需初始值,只需把方程等号改为双等号==。若有符号解时比较准,数值解经常无解或错解,慎用!
  • fsolve:仅数值解,必须给初值,方程组必须以函数句柄方式调用,右端为零。数值解比较准。

注:所谓解析解就是符号解;所谓函数句柄,可以理解为指针地址。

宠幸例子

已知参数:

wc = 2 * pi * 4e3;
gain_rise = 49.7481;
wz = 2 * pi * 100;

solve用例

syms kp ki
eqns = [20*log10(abs(kp + ki/(j*wc))) == gain_rise,
    ki/kp==wz];

[ki kp]=solve(eqns);

kp=double(kp)
ki=double(ki)

结果:

kp =
  307.0926
ki =
   1.9295e+05

vpasolve用例

syms kp ki
eqns = [20*log10(abs(kp + ki/(j*wc))) == gain_rise,
    ki/kp==wz];

[ki kp]=vpasolve(eqns)

结果:

ki =
192891.70190885358092200094503597 + 4821.8329924348312217466650244155i
kp =
306.99667840202430580932484824932 + 7.6741855550958895617299121076886i

fsolve用例

syms kp ki
eq1 = 20*log10(abs(kp + ki/(1i*wc))) - gain_rise;
eq2 = ki/kp - wz;
eqns = [eq1,eq2];

fun = @(vars) double(subs(eqns, [kp, ki], vars));
initial_guess = [1, 1];
sol = fsolve(fun, initial_guess);

kp = sol(1)
ki = sol(2)

结果:

kp =
  307.0924
ki =
   1.9295e+05

冠军加冕

用法上,solvevpasolve都十分简洁,fsolve由于句柄和初值的存在显得稍稍复杂,不过可以求助ChatGPT帮你写呀!

精度上,solvefsolve的结果都可以看作是正确的,vpasolve的复数解我也不知道是什么鬼,就算仅看实部,精度也不如其他两位小主,因此打入冷宫。

速度上,solvefsolve快。但fsolve真真是个很单纯的孩子,从迭代过程来看就是粗暴求解,用以检验会比较安心,而且其他两个无解的时候fsolve可能还会有解。

我宣布,solve是本届Matlab求解函数宫斗冠军。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab求解函数solve、vpasolve和fsolve宠幸谁

]]>
https://crowya.com/3887/feed 3
PCB进阶指南 https://crowya.com/3664 https://crowya.com/3664#comments Mon, 29 May 2023 14:17:50 +0000 https://crowya.com/?p=3664 前置知识:Altium Designer 重拾指南 | 菜鸟救星 – 鸦鸦的巢穴 (crowya.com) 以 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PCB进阶指南

]]>
前置知识:Altium Designer 重拾指南 | 菜鸟救星 – 鸦鸦的巢穴 (crowya.com)

以下经验主要适用于开关电源等既有功率线又有信号线的场景。

多层板布局

以六层板为例,最外两层走功率,次外两层铺地,中间两层走信号。

功率线放在最外层,是因为散热好。

把信号线夹在地层中间,有利于屏蔽外部干扰。

增加或减少层数是在菜单Design-Layer Stack Manager这里操作(快捷键DK)。

右键插入一个新的信号层。

或者,用AD预设的六层板。

个人还是喜欢自己右键插入新板。

这里涉及到一个正片(Signal)和负片(Plane)的概念:

Signal就是走线的地方敷铜,Plane是默认敷铜,走线的地方挖空。

走线宽度

信号线一般10mil或者20mil就可以了,但是涉及驱动、电源的线要适当加粗,比如40mil、50mil[17]

主功率的走线肯定要宽得多,可以用这个算:PCB走线载流计算器

以15A为例,可以看到所需的外层线宽比内层小得多,这也是为什么前面说最外层走功率。

一层线不够宽的话可以分两层走,比如顶层200mil,底层200mil,加起来就够了。

确定了宽度之后可以对功率线单独设置一个走线规则,在菜单Design-Rules这里(快捷键DR)。

网络类别(Class)的设置是在菜单Design-Classes这里(快捷键DC)。

需要注意的是每次从原理图更新PCB时不要把Class删掉。

驱动线、电源线同理。

绝缘间距

首先涉及到两个概念:

  • 爬电距离:表面距离
  • 电气间隙:空间距离

这个比较头大,标准比较杂乱捋不明白。我也不太清楚,就按污染等级2材料组别III来查表吧。

IEC60335-1:2001 表17-基本绝缘的最小爬电距离[18]

还有一种简单粗暴的说法是每100V按1mm来估算,300V大约3mm的样子。

确定了绝缘间距之后就可以为功率线设置一个专属的规则了,同样是在菜单Design-Rules这里(快捷键DR)。

100mil=2.54mm
250mil=6.35mm

过孔直径

还是在菜单Design-Rules这里(快捷键DR)。

一般都是通孔,直径差不多就可以了,大点小点问题不大,比如我这里外径28mil内径14mil。

功率地与信号地

菜鸟曾经搞不清如何接地。甚至忘记焊0Ω电阻,怎么调都不对劲。现在大概知道了。

不隔离的话,一般只有两个地,功率地(PGND)和信号地之间分开铺地,最后通过0Ω电阻相连。

隔离的话,原边两个地,副边两个地,至少就有四个GND了,如下图,两边分别通过0Ω电阻相连。

有时候模拟地(AGND)和数字地(DGND)也会分开,但最终也是要连在一起的。

 功率地和信号地为什么要分开?
减小公共阻抗。你想想功率地线上回流的电流有多大,哪怕导线只有一点点阻抗,也会产生压降,如果这个压降叠加到信号回路里,那就不准了。同样,模拟地和数字地分开也是为了减小公共阻抗。
 那为什么又要用0Ω电阻相连?
提供相同的零电位基准。如果不连,两个回路之间是可能存在电位差的,是“悬浮”的,可能会导致一系列玄学问题。那直接用一根导线相连不就好了吗?还是前面的问题,如果你在原理图里直接用线连接,AD是无法区分出功率地和信号地这两个节点的,但是加一个0Ω电阻,就变成两个节点了,方便画PCB。

总而言之,分开的是路径,连接的是电位。殊途同归。同归于零。

至于控制回路应该和原边共地还是副边共地,怎么方便怎么来。

铺铜

铺铜不是GND的专利哦,有些粗的功率线也可以用铺铜的方式来画。可以理解为画图中的油漆桶工具。

一共有三个工具涉及铺铜,工具条里的Polygon Pour是智能铺铜,有避障功能的,还有一个Fill是绘制方块铜皮,Solid Region是绘制多边形铜皮。选中区域重新铺铜的快捷键是TGR。

一般GND是单独铺整层,因为连接GND的节点很多,毕竟很多模块都需要零电位参考嘛,电源负端也要连GND,所以这个节点是地下水源,很多地方都需要连它,那索性修到家家户户门口嘛,实在够不着打口井(过孔)就能接到地了。

理论上凡是电位稳定的节点都可以铺铜,因为铺铜还有一个附带的好处就是可以屏蔽干扰,但是大多数节点的电位肯定都不如零电位的GND那么稳定,所以铺地是最常见的,其他节点的铺铜就比较少见,除非是为了拓宽走线面积。

快捷键

Ctrl+W 连线

Ctrl+M 测量(比放置尺寸好用)

Shift+S 仅显示单层布线(比小眼睛图标好用)

元件布局

  • SPACE 旋转
  • X 水平翻转
  • Y 垂直翻转

元件对齐(强迫症必会)

  • Ctrl+Shift+L 左对齐
  • Ctrl+Shift+R 右对齐
  • Ctrl+Shift+T 上对齐
  • Ctrl+Shift+B 下对齐
  • Ctrl+Shift+H 水平均分
  • Ctrl+Shift+V 垂直均分

字母键组合(菜单下划线字母)(英文输入法下)

  • DR:Design-Rules 规则设置
  • DC:Design-Classes 类别设置
  • DK:Design-Layer Stack Manager 层管理器
  • TGR:Tools-Polygon Pours-Repour Selected 选中部分重新铺铜

潜规则

  1. 滤波电容布局时靠近芯片引脚
  2. 驱动芯片布局时靠近MOS管
  3. MOS管靠近边缘排布有利于散热结构设计(但是不方便走线)
  4. 尽可能减小环路面积,比如U形回路
  5. 信号线夹在地层中间
  6. 强电、弱电分开布局
  7. 功率地、信号地、数字地、模拟地分开
  8. 放不下的元器件可以放反面

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PCB进阶指南

]]>
https://crowya.com/3664/feed 3
运算放大器&比较器应用指南 https://crowya.com/3580 https://crowya.com/3580#comments Mon, 29 May 2023 06:08:47 +0000 https://crowya.com/?p=3580 前言 关于运放的资料网上很多,但结构不清晰,配图不精致。 为了避免每次遗忘都重新搜索,还是决定自己重写一遍。 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往运算放大器&比较器应用指南

]]>
前言

关于运放的资料网上很多,但结构不清晰,配图不精致。

为了避免每次遗忘都重新搜索,还是决定自己重写一遍。

虚短虚断[19]就不讲了,已经成为每个学过模电的人刻在DNA里的记忆了。

运放有四种基本线性运算:同相放大、反相放大、加法、减法(差分放大);两种基本的非线性运算:积分、微分。既然名字就叫放大器,那就先讲用于放大的三种情况吧。

三种放大电路

同相放大
反相放大
差分放大(减法)

$$V_o=\left(1+\frac{R_f}{R_1}\right)V_i$$

输入接正

$$V_o=-\frac{R_f}{R_1}V_i$$

输入接负

$$V_o=\frac{R_2\left(1+R_1 / R_2\right)}{R_1\left(1+R_3 / R_4\right)} V_{i 2}-\frac{R_2}{R_1} V_{i 1}$$

当R1/R2 = R3/R4

$$V_o=\frac{R_2}{R_1}\left(V_{i 2}-V_{i 1}\right)$$

当R1=R2=R3=R4

$$V_o=V_{i 2}-V_{i 1}$$

两电阻的同相比例放大电路有个问题,只能放大不能缩小,放大倍数只能大于1,因为本质是电阻分压原理,没有负电阻所以没法缩小。为了实现任意放大倍数,还需再加两个电阻,用于分压。即四个电阻的同相比例放大电路可以实现任意放大倍数。

除了图上的两个电阻外,输入端往往还有一个电阻,应该是限流或者阻抗匹配的作用。

加法电路

加法电路

$$V_o=-\left(\frac{R_f}{R_1} V_{\mathrm{i} 1}+\frac{R_f}{R_2} V_{\mathrm{i} 2}+\frac{R_f}{R_3} V_{\mathrm{i} 3}\right)$$

当Rf=R1=R2=R3

$$V_o=-\left(V_{i 1}+V_{\mathrm{i} 2}+V_{\mathrm{i} 3}\right)$$

两种非线性运算

积分电路
微分电路

$$v_o(t)=-\frac{1}{R C} \int v_i(t) \mathrm{d} t$$

$$v_o(t)=-R C \frac{\mathrm{d} v_i(t)}{\mathrm{d} t}$$

跟随器

也叫缓冲器,同相比例放大的一种特殊应用。

电压跟随

$$V_o=V_i$$

 既然增益为1,何必多此一举?
设想一个经典的电阻分压采样场景,前级用了大电阻分压,后级却是个低阻抗的MCU,如果直接相连,分压电阻和MCU的输入阻抗就是并联关系,两个电阻并联,总阻值一定比其中任何一个都小,那采样还采的准吗?所以,电压跟随器的作用主要是为了增大输入阻抗,实现前后级信号的隔离。
没有跟随器,采样点阻抗变小[20]
加入跟随器,后级相当于开路

比较器

比较器可以看作是一种特殊的运算放大器。两者符号也一模一样,那看原理图的时候怎么区分呢?这可能是困扰过许多菜鸟(不会只有我吧)的一个问题。

  • 看连接方式:运放是负反馈,比较器是正反馈。
  • 看型号:比如LM158是运放,LM119、LM293是比较器。
 运放可以当做比较器用吗?
可以,反之不行。但是!不太合适。就好像开宝马送外卖,还不如小电驴快。
首先,运放讲究的是精确,因为工作在线性区嘛,要维持一个稳定的放大倍数,总是小心翼翼的。
比较器就喜欢走极端,我才不管你放大多少倍呢,直接向上下限冲刺,来个高低电平翻转!
所以比较器的速度一般比运放快,更适合用在只需要判断输入大小的场景。术业有专攻。
如果你硬要让运放去走极端的话,应该也不是不行,只不过人家不是专门为这种应用场景设计的。
最实际的一个区别是,比较器的内部输出端一般是集电极开路(OC),外部接个上拉电阻就可以拉到任何所需的电平电压,而运放内部一般是推挽输出。

上拉电阻和下拉电阻

上拉电阻
下拉电阻[21]
 为什么要加上拉电阻?
这里找了一个通俗易懂的YouTube视频,如果看不了的就看截图吧。

 上拉电阻的阻值如何确定?
理论上是要验算一下的,但无脑取10kΩ应该也能满足大多数情况。
具体方法就是分别计算开关打开和关闭两种状态下产生的高低电平电压是多少,是否符合TTL或者CMOS的电平范围标准。比如DSP的高电平范围是2~3.3V,低电平范围是小于0.8V,这个在数据手册里能查到。

运放和比较器的选型

 LM158、LM258、LM358有什么区别?
性能从高到低排序:LM158军品级(-55°C~125°C)>LM258工业级(-25°C~85°C)>LM358商业级(0°C~70°C),如果不在乎那点温度范围和性能差异的话,是可以通用的。

如果从响应速度方面考察,运放的核心指标有 带宽 和 压摆率SR (Slew Rate),都是越大越快;比较器的核心指标是响应时间,显然越小越快。下面给个具体产品的对比:

如此看来,LM258系列的性能就显得很一般了,怪不得大家戏称它叫“垃圾运放”。不过像电压环这种速度本来就很慢的场景,应该也是够用的,电流环对速度要求比较高,应该选个好点的,比如CA3140,不过它是单通道,而且价格贵好多,所以还是要综合考虑一下性能和成本。而且,带宽太大也不见得一定是好事,因为对高频噪声同样敏感。

带宽是个什么玩意儿

前置知识:波特图是个什么玩意儿

带宽在开环和闭环下概念不同。

带宽 = 闭环截止频率(-3dB处) ≈ 开环穿越频率(0dB处)

这两者并非严格等价,只是正相关,带宽越大,响应越快,不管哪种带宽都是这样。
顺便一提,穿越频率和截止频率相等的情况只发生在开环传递函数的相位裕度为90°时。欠阻尼系统的闭环带宽约为开环穿越频率的1.5倍。[22]

 为什么带宽越大响应速度越快?
带宽大的意思就是对高频信号还有很大的增益呗,高频高频,频率越高的信号不就是变化速度越快的信号嘛,幅频特性曲线的横轴都是正弦信号的频率,也就是说,随便给个输入信号,都能分解到横轴上各种频率分量的叠加,输入变化越快,对应的高频分量就越多,如果带宽大,对高频信号响应好,就是对输入变化很快的信号捕捉复现的能力好。可惜啊,高频噪声也被放大了。

轨到轨

所谓“轨”指的就是供电电压上下限,也就是满摆幅的意思。

从电源线的最大电压(VCC)到其最小电压(GND或最小负电压VEE)的整个范围称为轨到轨(Rail-to-Rail)。普通的运放输入电位通常要求高于负电源某一数值,而低于正电源某一数值。 经过特殊设计的运放可以允许输入电位在从负电源到正电源的整个区间变化,甚至稍微高于正电源或稍微低于负电源也被允许。 这种运放称为轨到轨输入。此外还有轨到轨输出、轨到轨输入和输出。

阻抗匹配

先说怎么匹配:从正负输入端分别往回看,使两条回路上的总阻值一致。(输入信号看做短路接地)

 为什么要阻抗匹配?
理想运放的输入端没有电流,但实际上有输入偏置电流。在运放内部,前级一般是像右图这样的差分放大电路,Ra和Rb上实际上流的是两个三极管的基极电流,如果Ra不等于Rb,则在Ra和Rb上的压降就不相等,这样就会导致输入信号没有被差分放大电路等比例放大,从而影响放大电路的精度。[23][24]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往运算放大器&比较器应用指南

]]>
https://crowya.com/3580/feed 4
页面加载速度优化指南 https://crowya.com/3501 https://crowya.com/3501#comments Wed, 17 May 2023 08:17:16 +0000 https://crowya.com/?p=3501 前言 从建站至今一直没有优化过网站访问速度,也有小伙伴反映过我的页面加载速度奇慢,我也是知道的,然而懒癌发作一 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往页面加载速度优化指南

]]>
前言

从建站至今一直没有优化过网站访问速度,也有小伙伴反映过我的页面加载速度奇慢,我也是知道的,然而懒癌发作一直都没有行动,还有什么SEO呀我也是佛系对待,纯属摆烂。直到最近才重新审视这个问题。

如何测速

上面两个都是谷歌家的,生成的报告内容也基本一模一样,区别在于前者是在别的地方模拟访问,后者是你自己的网络环境。

指标最好的一次报告,每次测试相差较大。

测速完成后还会给出很多优化建议,很有参考价值,按照它说的做也能提升不少。

太复杂的操作我也不会,最近小小地折腾了一下,目前了解到的影响访问速度的三大因素是:缓存、CDN、异步或延迟加载JS。

缓存

缓存据说是影响最大、见效最快的因素。

 为什么缓存能加快访问速度?
主要是节省了服务器执行PHP这一步骤。需要执行PHP的是动态页面,不需要执行代码的就是静态页面,静态比动态快。

我目前使用的缓存插件有:

  • WP Super Cache(WordPress插件,页面缓存,存至硬盘)
  • Autoptimize(WordPress插件,JS/CSS压缩和缓存,存至硬盘)
  • 堡塔网站加速(宝塔面板应用,据说和memcached效果差不多,存至内存)
  • opcache(宝塔面板PHP扩展,据说用于加速PHP脚本)

服务器也是一台计算机,理论上内存的读取速度比硬盘快,那么缓存到内存可能比缓存到硬盘快。

WP Super Cache

WP Super Cache的设置我参考了Bensz的这篇教程:Docker系列 WordPress系列 缓存插件WP Super Cache

Autoptimize

Autoptimize的设置不要瞎启用,可能会对主题功能造成一定影响,如果遇到问题,排查到那个设置项然后关闭,其他的只要开着没影响就打开好了。

这个插件起效后查看网页源代码应该是像这样谁也看不懂的压缩后的鬼画符。

堡塔网站加速

这个设置超简单的,点击配置向导选择WordPress专属规则就OK了。

opcache

这个好像不需要设置,在PHP的设置-安装拓展里装上就好了。

CDN

Content Delivery Network,内容分发网络,这个好理解,如果你不用CDN,所有内容都从你自己服务器上传输,压力很大,如果能从多个源头同时获取数据,效率就快了。而且CDN貌似能根据用户网络位置就近分发数据,就好比你网购时总是从最近的仓库发货。

东市买骏马,西市买鞍鞯,南市买辔头,北市买长鞭。

考虑到这一点后,我把站点图标、背景之类的图片以及字体统统上传到OSS了,OSS配置了CDN加速。关于字体这里好像有个小坑,涉及到跨域传输,需要在阿里云设置一下,具体过程我忘记了,根据提示操作就行了。

其他的CDN平台也有,比如很常见的jsDelivr,配合GitHub使用就是免费的CDN,而且不需要任何配置,所有GitHub资源都可以通过https://cdn.jsdelivr.net/gh/用户名/仓库名/路径/文件名直接引用!具体案例可参考这里。怪不得大家都喜欢上传到GitHub,原来配合CDN之后理论上可以当网盘用。

另外,有一些使用率很高的公共库,比如MathJax,有很多现成的CDN,比如BootCDN,可以在这里面搜。其实Argon的主题资源、数学公式也是引用了CDN。

异步或延迟加载JS

页面加载速度里面,JS的加载和执行一般占了大头,因为很多臃肿、花俏、华而不实的东西都是通过JS实现的,而这些东西往往放在页尾脚本里,等到页面加载完再执行,起到锦上添花的作用。

主题的JS有些功能是必备的,一般予以排除。但是有些不太重要的JS可能没有设置异步,就必须执行完再加载后续页面,会造成阻塞。这里主要涉及async和defer两个概念,区别见下图[25]

async和defer的区别

那具体怎么优化呢?我直接用的Async JavaScript插件。这个插件作者和Autoptimize的作者是同一人。虽然插件名字叫Async,但async和defer两种功能都有,可以自己选,我试了下感觉区别不大,可能是因为很多JS本身就声明了async,优化空间不大,具体选哪种随缘,唯一需要注意的是设置里应排除Argon主题,否则有些功能加载不正常,比如左侧栏目录。

值得注意的是,这种方法并没有减少未使用的JavaScript,只是优化了时间顺序,具体如何减少未使用的JavaScript或CSS,甚至按需加载,笔者并没有研究。但按照谷歌测速的报告来看,如果能实现Tex公式的按需加载,应该还能节省一大笔时间。

小结

在缓存、CDN、异步或延迟加载JS这三大因素里,我感觉最有用的还是缓存,因为CDN你本来就或多或少有意识或无意识地在引用,另外很多JS的作者本来就预先声明了async,所以优化空间有限,但缓存真的是从0到1的质变,你自己不搞没人能帮你优化。我之前访问速度超级慢就是完全没设置缓存这些东西,今儿才算搞懂了它的作用。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往页面加载速度优化指南

]]>
https://crowya.com/3501/feed 15
教程 | 将博客朋友圈化——仅展示最近一个月动态 https://crowya.com/1622 https://crowya.com/1622#comments Mon, 08 May 2023 06:22:03 +0000 https://crowya.com/?p=1622 心心念念这个功能好久了,也向主题作者提过需求,不过可能是太小众了,作者大大应该是没有考虑。
那就只好自己动手啦,不过拖延症晚期,趁这段时间板子投出去了有点空闲,终于把这个功能折腾出来了。
本着能用插件就绝不自己写代码的原则,本教程都是傻瓜式操作。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往教程 | 将博客朋友圈化——仅展示最近一个月动态

]]>
前言

心心念念这个功能好久了,也向主题作者提过需求,不过可能是太小众了,作者大大应该是没有考虑。

那就只好自己动手啦,不过拖延症晚期,趁这段时间板子投出去了有点空闲,终于把这个功能折腾出来了。

本着能用插件就绝不自己写代码的原则,本教程都是傻瓜式操作。

工具

  • Telegram
  • IFTTT
  • IFTTT Post Formats & Post Types(WordPress插件)
  • PublishPress Future(WordPress插件)

思路

首先说明一下,这些动态都是基于Argon主题自带的“说说”这一帖子类型(Post Type)存在的,只不过我把“说说”标题改成“脑电波”了,标题是通过JavaScript覆盖的,但这种做法确实不太优雅,还是希望作者大大提供一个自定义标题的设置。所以,脑电波和文章是互不干扰的,只有脑电波是一个月可见,文章还是永久可见。当然,也不一定是一个月,到期时间可以视需求而定。

在手机聊天框发送动态

另一个方面是操作的便捷性,要想获得发朋友圈那样的丝滑体验,WordPress网页版恐怕是无法差强人意的。尤其是在手机上使用WordPress,就更难操作了。解决的方法当然是连接现有app,像发推一样或者聊天一样发送动态。当下最流行的app当然是Telegram和Twitter,Telegram本身有自动删除功能,Twitter好像得开会员吧,而且Twitter限字数。我这里选择的是Telegram,当然你也可以用Twitter,原理是差不多的。

配置自动转发

那么怎么把Telegram连接到WordPress呢?这就用到IFTTT(If This, Then That)了,可以理解为自动触发机器人,它有网页版也有APP,只要设置好就可以不管了,卸了也没关系。免费版bot数量有限,但已经够用了。

唯一需要注意的是右图Categories的填写,务必写为ifttt-posttype-{shuoshuo},因为IFTTT只能以文章的形式转发到博客,需要通过IFTTT Post Formats & Post Types这个插件转换成脑电波类型。

上面的规则只接受文本触发,如果要发送图片需要另外配置一条规则,原理类似,不再赘述。

强迫症额外处理

这样设置完之后应该能从Telegram正常发布到WordPress了,但是每次触发会残留一个名为ifttt-posttype-{shuoshuo}的分类名称,如下图,强迫症看了肯定难受。

好在插件作者也想到了这一点,为我们预留了一个过滤器,不过需要手动将下面的代码添加到主题的functions.php或自建的mu-plugin中。

<?php add_filter( 'ifttt_pfpt_delete_ifttt_cats', '__return_true' ); ?>

添加到主题的functions.php是一种不太优雅的方法,因为每次更新主题都需要重新添加,而自建mu-plugin是一种一劳永逸的方法。我也是最近才听说mu-plugin这个东西,之前只知道用JavaScript修改是一劳永逸的,现在PHP也可以一劳永逸了,而且似乎更优雅,只不过需要自建插件,而且在宝塔面板里编辑。

不要听到“自建插件”就吓跑了,别的插件我不知道,这个插件还是很容易的,它是个全文只有一行代码的.php文件,你可以把它命名为myplugin.php,放在mu-plugins这个文件夹下面就行,mu-plugins文件夹需要自己新建,它的路径是/www/wwwroot/wordpress/wp-content/mu-plugins,如图。

现在你把ifttt-posttype-{shuoshuo}这个分类删掉就再也不会出现了。

设置期限

接下来才是本文的重点,那就是到期自动隐藏。试了很多款插件,PublishPress Future最合适,尽管也有一些bug,但无关痛痒,和我一样设置就行,踩过的坑我在图里都标出了。

设置完简单测试一下基本就大功告成啦!如果你要排查问题,可能会用到下面这个页面。

分隔提示

建议在最后设置一条永不过期的脑电波提示一下到底了。

那么本教程到这里就结束了,现在可以愉快地发脑电波了~

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往教程 | 将博客朋友圈化——仅展示最近一个月动态

]]>
https://crowya.com/1622/feed 12
脑电波仅展示最近一个月动态,看到这条说明已经到底啦! https://crowya.com/shuoshuo/3295 https://crowya.com/shuoshuo/3295#respond Thu, 04 May 2023 07:49:15 +0000 https://crowya.com/?p=3295 “这座镜子之城——或蜃景之城——将在奥雷里亚诺·巴比伦全部译出羊皮卷之时被飓风抹去,从世人记忆中根除,羊皮卷上 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往脑电波仅展示最近一个月动态,看到这条说明已经到底啦!

]]>
“这座镜子之城——或蜃景之城——将在奥雷里亚诺·巴比伦全部译出羊皮卷之时被飓风抹去,从世人记忆中根除,羊皮卷上所载一切自永远至永远不会再重复,因为注定经受百年孤独的家族不会有第二次机会在大地上出现。”

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往脑电波仅展示最近一个月动态,看到这条说明已经到底啦!

]]>
https://crowya.com/shuoshuo/3295/feed 0
PTC Mathcad 8.0 setup.exe 打不开/无反应解决办法 https://crowya.com/3187 https://crowya.com/3187#comments Tue, 13 Dec 2022 14:29:18 +0000 https://crowya.com/?p=3187 2023年1月31日更新 光速解决办法——鼠标点中这个软件,Alt+空格,最大化。 后面的都可以不看了,除非你 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PTC Mathcad 8.0 setup.exe 打不开/无反应解决办法

]]>
2023年1月31日更新

光速解决办法——鼠标点中这个软件,Alt+空格,最大化。

后面的都可以不看了,除非你想重装到8.0版本的话。

事情的起因

Mathcad 7.0 本来一直好好的,直到有一天突然打开无反应,窗口不显示,预览窗口也是一片黑或一片白,搜寻问题无果,遂打算卸载重装。

发现最新版已经更新到Mathcad 8.0,反正都卸了,当然要尝鲜一下啦。

下载的安装包是iso文件,装载光盘映像后,问题又来了,不论是直接双击还是以管理员运行都毫无反应,小圈圈转几下后什么都没有发生。

打开任务管理器,进程下面是找不到的,但是详细信息下面会短暂出现两个setup.exe然后消失不见,或者剩下一个,如果点得频繁可能会出现“请先退出正在运行的安装程序成卸载程序”提示。这个进程权限似乎很高,手动是结束不了的。除非重启,但是重启后还是一样的问题。

于是到处搜解决方案,全是白扯。尝试过的方案包括以下几种:

全英文路径,无效。

先生成许可证后安装,无效。

不装载iso,以解压的方式运行,无效。

关闭火绒、联想电脑管家等杀毒软件,无效。

控制面板>启用或关闭Windows功能,关闭Hyper-V,无效。

……

到底怎么解决的

最后的解决方案竟然是——

使用子目录下的msi文件安装!一下就成功了!

如图所示:ptcsh0>PrimeWixlnstaller 64bit.msi

估计是PTC又在安装包的外面套了一层壳,以展示花俏的安装界面,然而它套的那层壳各种问题,还不如直接用核心安装包!PTC的很多其他软件也有这个通病,比如Creo,搜索的时候有类似的贴子。但是没有一个提到Mathcad!侥幸试了下,居然也可以。

顺便把其他文件的作用也摸索了下:

第一个很有迷惑性的文件夹install里面是诊断工具的安装包,没啥用,可以不装。

第二个pim里面是各种零件,不用管。

第三个ptcsh0里面还有个exe文件需要注意,ndp48-x86-x64-allos-enu.exe,这个是.NET Framework框架,以前安装过的就不用装。不确定的可以装一下,反正它是先检测后安装。

小声嘀咕

真是气死本王了,这么简单的解决方案浪费了半天,PTC应该杀个程序员来祭天。

哦对了,它现在还多了个出口协议。建议大家写论文的时候不要提用什么软件做的了……

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往PTC Mathcad 8.0 setup.exe 打不开/无反应解决办法

]]>
https://crowya.com/3187/feed 1
Word导出PDF图片模糊解决办法 & PPT制作海报导出图片分辨率不够解决办法 https://crowya.com/3159 https://crowya.com/3159#respond Thu, 08 Dec 2022 09:17:03 +0000 https://crowya.com/?p=3159 主要针对学术论文投稿和制作会议海报过程中图片变糊的问题。 Microsoft Word导出PDF图片模糊解决办 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Word导出PDF图片模糊解决办法 & PPT制作海报导出图片分辨率不够解决办法

]]>
主要针对学术论文投稿和制作会议海报过程中图片变糊的问题。

Microsoft Word导出PDF图片模糊解决办法

我知道你不想装Adobe Acrobat,我也不想装,于是把word的设置试了个遍,包括高级选项里的“高保真”,另存为选项里的图片设置(“另存为”比“导出”可设置项更多),但是都失败了,导出的PDF文件大小毫无变化,图片还是一样的糊。这里得出结论,word本身的设置毫无作用,都是摆设,都是假的!

打印到PDF的方式确实略有清晰一点,但还是不够,而且丢失了书签目录信息。

最后老老实实去装Adobe Acrobat了,而且注意,不要装Adobe Acrobat Reader,简化版没有word插件!必须装完整的Adobe Acrobat,创建Adobe PDF的插件是免费的。而且最新版的Adobe Acrobat是可以带上书签目录的。

不过只用它的word插件就好了,不建议作为平时阅读或编辑PDF的主力,因为有比它更好的PDF软件。没错,官方的软件不如第三方的!本人亲测!编辑和阅读都比较卡顿,而且搞不明白它究竟哪些功能要收费,编辑功能可能只有7天免费。本人推荐的软件叫做PDF-XChange Editor,网上有破解版,自己搜!而且注意它也分阅读版和编辑版两个版本,下完整版!可惜PDF-XChange Editor没有word插件,不然一个软件就解决了。

所以兜兜转转最后的解决方案还是装Adobe Acrobat来生成PDF,速度是真的慢,图片是真的清晰!

顺便提一嘴,word是可以插入svg的,所以如果你能保证所有的图片都是svg格式,那么即使用word导出也是无损的矢量图。有些png好像也可以,但这个比较玄学,比如PLECS导出的png是无损的,但是转换到PDF里的时候形状会漂移,很头疼。

PPT制作海报导出图片分辨率不够解决办法

同样的道理,微软office全家关于图片的设置都是无效的,我试过了,更改各种设置导出的图片大小一模一样,直接放弃。最终我选择先生成PDF再通过PDF-XChange Editor转换为图片。很清晰,分辨率可调。如果要求JPG格式,一般质量选75就可以,如果设100会导致文件体积超级大,这个不是4/3倍的线性关系。然后分辨率我选择300dpi。ppi和dpi的区别是什么?记不太清了。当然你用Adobe Acrobat转图片也可以,体积差不多的,但是本人亲测adobe的图片锯齿很多,PDF-XChange Editor是朦胧且光滑的效果,人眼的感受是PDF-XChange Editor的图片更清晰。因为人脑可能会脑补哈哈哈。不过Adobe设置比较多,我可能没探索全,这可能和它的采样算法有关,另一种生成模式的效果可能不一样。但是PDF-XChange Editor设置又简单又清晰,我干嘛还要费劲去探索Adobe呢。

Conclusions

Word/PPT显示清晰度的巅峰就是它自家的编辑器界面或者阅读/演示界面,转换后的图片肯定是不如编辑时清晰的,趁早放弃不装任何其他软件的念头。安装Adobe Acrobat使用它的创建PDF插件,安装PDF-XChange Editor作为PDF阅读、编辑的主力以及使用它的转换为图片功能。当然,以上操作都是为了清晰度,如果你不care这个或者你早就未雨绸缪全部使用矢量图,那么word自带的就很好用。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Word导出PDF图片模糊解决办法 & PPT制作海报导出图片分辨率不够解决办法

]]>
https://crowya.com/3159/feed 0
Microsoft Word 的文艺复兴 https://crowya.com/2865 https://crowya.com/2865#comments Wed, 27 Apr 2022 14:19:09 +0000 https://crowya.com/?p=2865 兜兜转转,发现还是Word最好用,因为只有Word在边写的时候就结构化了,这是所有的碎片化笔记软件所不能比拟的 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Microsoft Word 的文艺复兴

]]>
兜兜转转,发现还是Word最好用,因为只有Word在边写的时候就结构化了,这是所有的碎片化笔记软件所不能比拟的地方,包括Notion,其实Notion只适合写blog类型的文章,而不适合写书,但凡多几个章节就招架不住了,但是当你写完Word基本上一本书就成型了,不需要额外的整理、导出、转换或者任何形式的加工就可以分享了。这就是为什么所有的毕业论文等正规文体都用Word,因为这的确是处理复杂文体和知识结构的唯一可选项(暂时不考虑Latex),没有结构化的东西终究不便于索引,也不会进脑子。我曾经在Notion里做的知识库已经荒废了。

就这么愉快地决定了,我宣布,Word是唯一的生产力!万物皆可Word!

(不过按照我见异思迁的本性,过几天可能又改主意了,谁知道呢。)

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Microsoft Word 的文艺复兴

]]>
https://crowya.com/2865/feed 1
Zotero+阿里云盘WebDAV+公网访问≈无限空间+全平台 https://crowya.com/2809 https://crowya.com/2809#comments Tue, 22 Mar 2022 08:33:05 +0000 https://crowya.com/?p=2809 思路说明 由于阿里云盘没有官方开放的WebDAV接口,需要自建WebDAV服务,这里用到一个GitHub上的开 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Zotero+阿里云盘WebDAV+公网访问≈无限空间+全平台

]]>
思路说明

由于阿里云盘没有官方开放的WebDAV接口,需要自建WebDAV服务,这里用到一个GitHub上的开源项目aliyundrive-webdav,这个工具需要放在电脑上或者服务器上运行,如果是放在电脑上,那就只能电脑局域网访问,不能实现公网访问;如果放在服务器上,就能实现全平台访问。

本教程讲的是后者,所以,你需要一台服务器作为中转。没有服务器的小伙伴可以散场了,或者,你可以瞧瞧别的教程是如何仅在电脑端搭建的。

服务器安装运行

根据GitHub上的介绍,可以用Docker安装。我其实也不太懂Docker和Docker-Compose这些东西,不过我找到了一个宝塔面板能用的方法[26]。本质上也是容器运行。

没错,下面的步骤就是在宝塔面板里操作的,至于哪种方式占用的内存小性能损失小我就不知道了。

先在宝塔面板的软件商店里安装“堡塔Docker模块”,之后在左侧栏会出现一个Docker入口。

然后在SSH(终端)输入下面的代码:

docker pull messense/aliyundrive-webdav
docker run -d --name=aliyundrive-webdav --restart=unless-stopped -p 8080:8080 \
  -v /etc/aliyundrive-webdav/:/etc/aliyundrive-webdav/ \
  -e REFRESH_TOKEN='your refresh token' \
  -e WEBDAV_AUTH_USER=admin \
  -e WEBDAV_AUTH_PASSWORD=admin \
  messense/aliyundrive-webdav

# your refresh token 必改,获取方式见下文
# admin 用户名和密码 可改可不改
# 8080 默认端口 可改可不改 改的话是xxxx:8080

之后打开Docker面板,看到容器列表里面有东西就说明对了。

获取 refreshToken

方法1(已失效)[27]

  1. 浏览器登录阿里云盘后,按F12进入开发者工具箱
  2. 上栏选择Application,左侧选择Localstorage,中间选择token,下方查看refresh-token

方法2(2023年5月17日更新)[28]

Zotero 设置

编辑→首选项→同步

注:服务器IP不是容器IP。端口是容器列表里的对外端口。用户名和密码是创建容器的时候你自己设置的。前缀是http://,至于HTTPS,据说更安全,但我暂时还不会搞。能用就行。

iOS端的Zotero同理。这样设置之后不论何时何地何设备都能通过公网使用阿里云盘同步文献库的附件,而且速度好像比Zotero官方的300M还快。由于服务器长期运行不关机,无需考虑自启。而且我试过,就算服务器重启了容器也会自动运行的。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Zotero+阿里云盘WebDAV+公网访问≈无限空间+全平台

]]>
https://crowya.com/2809/feed 1
Altium Designer 重拾指南 | 菜鸟救星 https://crowya.com/2691 https://crowya.com/2691#comments Fri, 18 Feb 2022 17:45:08 +0000 https://crowya.com/?p=2691 这个软件真是见了鬼了,隔一段时间不用就归零,永远半生不熟。 由于新换了电脑,笔者又从头安装了一遍AD,没有任何 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Altium Designer 重拾指南 | 菜鸟救星

]]>
这个软件真是见了鬼了,隔一段时间不用就归零,永远半生不熟。

由于新换了电脑,笔者又从头安装了一遍AD,没有任何第三方元件库,所以能够较完整地反映本菜鸟的摸索过程。

装哪个版本?

软件越新,安装包就越大,曾经我对安装包大小比较敏感,以为这种软件都和微软的Office一样,随便找个稳定的年份都差不多……

但是幸好这次我任性了一回,直接装了2022年最新版本,被一个叫Manufacture Part Search的面板惊艳到了!有了这玩意,还要啥第三方库啊?它直接就能放置元器件厂商的原理图、封装且含3D模型!另外元件的封装预览可以在2D和3D视图之间切换,非常直观!而我以前用过的2019版本似乎是没有这个功能的。

既然都是搞电的,这玩意装一个最新版不过分吧?

当然了,EDA软件也不是只有AD一家,KiCad还是免费开源的呢,立创那个在线EDA也不错,不是非得在一棵树上吊死!

先建工程还是先建原理图?

一个Project主要就两种文件,Schematic和PCB,顶多再加上各自的元件库。

从零新建的时候还是直接建工程吧。别单个单个建。

首次新建建工程,建完之后可以单个单个添加。缺啥添啥。

顺序搞错了也问题不大,自由文件可以直接拖动到工程里。


原理图篇

第一个元件咋画?

好了,终于要开始画原理图了,不管你画的什么,电阻总是有的吧?

那么问题来了,第一个电阻从哪里找?这直接关系到后面所有电阻的画法。

假设没有第三方元件库,直接从Components面板自带的Miscellaneous Devices库搜res,这样会不会太草率了?

不会,电阻的原理图无非就两种,要么长方形要么尖刺形,难道还能画出花来?

可是封装怎么办,现在不都流行贴片吗?自带的Res1好像是那种又大又粗的直插电阻诶?会显得很LOW吧?

封装可以改的!拖出来之后可以改!或者嫌麻烦的直接用Res3,它是贴片0603封装。

找不到XX面板怎么办?

仔细看右下角有个Panels,绝大多数的面板都可以在这里找到。

封装怎么修改?

双击元件打开元件的Properties属性面板,拉到下面有个Footprint,先把它显示出来,然后点击小笔笔🖊图标,小笔笔是编辑,或者add也可以。

选Any,再点Browse。

库选择Miscellaneous Devices,里面有一些常见的封装,包括贴片的0402、0603等等。

上面的做法只改了单个元件的封装,要是有很多元件都要改怎么办呀?如何批量修改封装?

修改封装的步骤是相同的,只不过需要选中所有同类元件。

如何选中所有同类元件?

以电阻为例,先选中一个元件,右键Find Similar Objects,匹配规则里面把有代表性的特征改为Same就行,至少一个相同特征就行,不必全改,最后记得勾上Select Matching,并且是在整个Project Documents里查找。

贴片封装一般选什么型号?

从小到大排序:0201<0402<0603<0805<1206<1210<1812<2010<2512

现在常用的的电阻、电容、电感、二极管都有贴片封装。贴片封装用四位数字标识,表明了器件的长度和宽度。[29]

贴片电阻封装形式有英制和公制之分,不过业内常以英制表示。实际应用中如果是简单元器件较少的项目中应用相对较多的是0603、0805和1206,因为在绘制完PCB做回板子之后都会有调试的过程,在调试时如果小于0603手工焊接难度大,大于1206浪费板子资源还会使板子尺寸增加,当然如果是对板子尺寸有严格要求,或者项目较为复杂元器件数量多还是封装越小越好,小封装用机器焊接出错率也小。[30]

如果不是做产品,随便画画的话,笔者prefer 0603,因为之前我用过0402画PCB的时候非常小,不放大很难选中,拖放比较麻烦,需要频繁缩放……所以单纯从画图方便角度考虑,下次我选择0603。如果手工焊那就更难了。

Surface-mount technology (SMT) is a method in which the electrical components are mounted directly onto the surface of a printed circuit board (PCB). An electrical component mounted in this manner is referred to as a surface-mount device (SMD).[31]

不想自己画元件有哪些途径白嫖?

电阻是挺容易画的,但是像开关管、放大器、集成芯片那种怎么办呀,不太好弄了吧?

下面介绍几种本人已知的元件库来源。

淘宝闲鱼CSDN那种一大包的第三方库就不说了。那种动辄几个G,下载安装都挺费劲的,关键是你想要的某个元器件型号还不一定有!就像拆盲盒一样。

至于AD官网,好像也挺麻烦的,要邮箱注册什么的。而且更新不一定及时吧,人家厂商新出了个什么器件难道还会向AD通报吗?

下面介绍几种精准搜索单个元器件原理图或封装的方法。

来源1:AD自带的Manufacture Part Search面板(最方便)

这个功能需要登录后才能下载或放置,否则只能查询。

以OPA2140AID为例,直接输型号搜索,有绿色图标的大概就是有模型,右键Place,直接一步到位原理图封装3D模型全搞定,但Place这种操作是一整套捆绑在一起的,后续不能改封装啥的,如果只需要单独使用其中某个部分,就选Download。

另外它还带有筛选功能,左上角那个图标可以筛选参数和元器件厂商。

来源2:从立创EDA导出

以OPA2140AID为例,直接在立创商城里搜型号,点数据手册会显示原理图和封装,找一个看的顺眼的,点立即使用,先在它的在线EDA里面打开。然后分别导出原理图和封装。

导出之后在AD里打开,是个PCB文件,还不能直接用,要先转换为封装库,怎么转?菜单-Design-Make PCB Library。原理图库同理。3D模型好像也是类似的。

来源3:元器件厂商官网

我比较喜欢德州仪器,因为它官网比较简洁,最主要的是有中文……把菜鸟的心理拿捏的死死的。

还是以OPA2140AID为例,先在官网搜型号,进入到具体产品页,找到设计和开发-CAD/CAE符号,点击下载下面的了解详情。

检查原理图错误

菜单Project-Validate PCB Project XXX.PrjPcb,之后会有信息在Messages窗口显示,如果没有这个窗口,右下角Panels里可打开。


PCB篇

如何由原理图生成PCB?

画PCB前应当确保所有元件都指定了正确的封装。如果没有的话后面肯定是要返工的,不过问题不大,多返工几次就熟能生巧了嘛。

先新建一个PCB文档,菜单Design-Import Changes From XXX.PrjPcb

PCB自动布局

想得美,AD好像没有那么智能,关于元器件的摆放,最多只能按矩形排列。菜单Tools-Component Placement-Arrange Within Rectangle。

所以,如果我没有理解错的话,主要还得靠手工排列和对齐。

至于经验的话,我只记住了强弱电要分开,数字模拟要分开,至于为什么,其实我也讲不太清楚,别问,问就是电磁干扰……具体怎么干扰?

名称微分形式积分形式
高斯定律${\displaystyle \nabla \cdot \mathbf {E} ={\frac {\rho }{\varepsilon _{0}}}}$${\displaystyle \oint _{\mathbb {S}}\ \displaystyle \mathbf {E} \cdot \mathrm {d} \mathbf {s} ={\frac {Q}{\varepsilon _{0}}}}$
高斯磁定律${\displaystyle \nabla \cdot \mathbf {B} =0}$${\displaystyle \oint _{\mathbb {S} }\ \displaystyle \mathbf {B} \cdot \mathrm {d} \mathbf {s} =0}$
法拉第电磁感应定律${\displaystyle \nabla \times \mathbf {E} =-{\frac {\partial \mathbf {B} }{\partial t}}}$${\displaystyle \oint _{\mathbb {L} }\ \mathbf {E} \cdot \mathrm {d} {\boldsymbol {\ell }}=-{\frac {\mathrm {d} \Phi _{\mathbf {B} }}{\mathrm {d} t}}}$
安培环路定律${\displaystyle \nabla \times \mathbf {B} =\mu _{0}\mathbf {J} +\mu _{0}\varepsilon _{0}{\frac {\partial \mathbf {E} }{\partial t}}\ }$${\displaystyle \oint _{\mathbb {L} }\ \mathbf {B} \cdot \mathrm {d} {\boldsymbol {\ell }}=\mu _{0}I+\mu _{0}\varepsilon _{0}{\frac {\mathrm {d} \Phi _{\mathbf {E} }}{\mathrm {d} t}}}$
麦克斯韦方程组(真空)

麦克斯韦方程组第三个式子,也就是法拉第电磁感应定律,${\mathcal {E}}=-N{{d\Phi _{B}} \over dt}$,封闭电路中感应电动势的大小,等于穿过这一电路磁通量的变化率;

麦克斯韦方程组第四个式子,也就是安培环路定律,$\oint _{{{\mathbb {L}}}}{\mathbf {B}}\cdot {\mathrm {d}}{\boldsymbol {\ell }}=\mu _{0}I$,$\oint _{{{\mathbb {L}}}}{\mathbf {H}}\cdot {\mathrm {d}}{\boldsymbol {\ell }}=I$,电流在一个曲面上的通量,等于磁场沿着曲面的边缘闭合回路的路径积分。

通俗理解的话,电流越大→磁场越强→磁通越大→磁通量的变化率大→感应电动势大→电磁干扰越强,所以信号线应当远离电源线,因为电源线是大电流;数电的话比较好理解,从0到1的跳变du/dt或者di/dt肯定很大→磁通量的变化率大→感应电动势大→电磁干扰越强,所以数字模拟要分开。

交叉选择模式

对了,在布局的时候,有一个非常实用的功能我不允许你不知道,那就是菜单Tools-Cross Select Mode。

板子规划视图 & 3D视图

布局完成之后,板子大小、形状基本应该确定了,当然也可以一开始就画好外形再布局,实际上是双向调整的过程,没必要分个谁先谁后。

菜单View-Board Planning Mode。第二种视图就是原来的2D视图,平时看到的就是在第二种视图下,调整完了之后也是在这里切回去。值得注意的是,3D视图也在这个菜单下。

菜单Design下有若干选项可对板子外形做调整。调完后如果有强迫症的话可以在Keep-Out层画个边框。

但这种方法调来调去基本都是方形的,如果是异形板要怎么办呢?

如何绘制出任意形状的PCB?

先在Keep-Out层画出你要的形状,比如圆形。

在2D视图下,菜单Design-Board Shape-Define Board Shape from Selected Objects。[32]

如何画出直角?

AD的直线工具很难画出直角,都是45°线,这在布线时很实用,但是画板子外形时简直要了命,建议把磁吸工具全部打开,提高吸附能力,这样在沿着板子外边缘描线时或许可以画得更直一点。

其实还有更靠谱的方法——愚蠢的我刚刚发现了矩形工具……

放置尺寸

切换到Mechanical 1机械层,菜单Place-Dimension-Linear。

放置尺寸时按空格键可旋转尺寸方向。

放置螺丝孔

也是在Keep-Out层画圈,画好后菜单Tools-Convert-Create Board Cutout from Selected Primitives。

这种方法放置的孔洞是没有镀铜的,另外还有一种做法是把焊盘当作螺丝孔,这样做出来的螺丝孔孔壁有铜。

至于螺丝的尺寸,常用的是M3螺钉,M3螺钉本体直径3mm,为了避免螺丝放不进去,至少加0.1mm的余量。即3.1mm的孔径,5mm的外径。也有人说M3螺钉对应3.5mm的孔径。所以3.1~3.5mm之间应该都可以,我比较倾向于3.2mm。

怎么设置螺丝尺寸?双击圆形,跳出属性界面,注意这里的单位是英制的mil(密耳),不是mm。

1 mil = 0.0254 mm
126 mil = 3.2004 mm

其实,只要输入数字的时候带上单位,也会自动转换,不带单位默认mil。

另一个需要注意的是这里的尺寸是半径和线宽,不是内径和外径。半径63mil相当于直径3.2mm。

除了M3以外,还有M2、M2.5、M3、M4、M4.5、M5、M6等螺钉尺寸,M后面的数字代表直径(mm)。

PCB自动布线

这个功能真的是菜鸟救星!菜单Route-Auto Route-All。其他布线方式暂时还没有研究。

滴泪

菜单Tools-Teardrops…

覆铜

在覆铜前应将布线规则中的Clearance改为20mil。

菜单Place-Polygon Pour…

顶层和底层都应该覆铜,且连接到GND,至于是否应该去除死铜,我也不太确定,只知道去除死铜的同时能够去除超出板子边缘的铜,如果画铜层时一不小心超出了板子边缘的话。

覆铜完成后,应将布线规则中的Clearance改回初始值,一般为10mil。

原理图改动之后PCB怎么办?

菜单Design-Import Changes From XXX.PrjPcb。

如果PCB全部变绿,使劲缩小,看整个PCB的左下角是不是有一个Room,删掉即可。

重做布线、滴泪、覆铜。

检查PCB错误

菜单Reports-Board Information,勾选Routing Information。

若还有导线没连接,回到PCB,按Shift+S,就可以查看哪些导线没连接。[33]


尾声

自动生成的乱七八糟的文件能不能删?

保存的核心就是自己建的那几个文件,多余的删了没啥影响。(亲测)

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Altium Designer 重拾指南 | 菜鸟救星

]]>
https://crowya.com/2691/feed 2
Notion也可以有#文内标签# https://crowya.com/2123 https://crowya.com/2123#comments Wed, 14 Apr 2021 20:49:35 +0000 https://crowya.com/?p=2123 flomo有文内标签,而Notion没有,这是一大遗憾(曾经)。但是我现在突然意识到,Notion也完全可以有 […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Notion也可以有#文内标签#

]]>
flomo有文内标签,而Notion没有,这是一大遗憾(曾经)。但是我现在突然意识到,Notion也完全可以有文内标签,只是符号不同。

flomo用#创建标签,Notion用[[或@或+
个人推荐 @

Notion的反向链接就可以作为标签使用。

忘记什么反向链接吧,就把它作为标签。

我真傻,真的,我单知道它是双链笔记,却没想到它可以作为标签使用。

只需在不同的页面中@同一个页面,那么这个被@的页面就是标签页。在这个页面里可以追溯到所有打上标记的内容。

注意,应当是先有内容,再有标签,而不是反过来。

如果你先新建一个标签页,再去手动@各种文章,似乎不是很方便。因为你每次@的文章都不相同。如果说前者是把多个点向一个点集中,后者就是从一个点向外发散。这种逆操作似乎比较反人类。

其实,所谓标签,就是支持多对一和一对多。

多个文章对应一个标签,一个文章可以有多个标签。

只要满足以上条件,理论上就可以作为标签使用。

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Notion也可以有#文内标签#

]]>
https://crowya.com/2123/feed 2
Matlab/Simulink批量运行仿真、参数寻优 https://crowya.com/2101 https://crowya.com/2101#respond Tue, 06 Apr 2021 09:45:36 +0000 https://crowya.com/?p=2101 适用场景 参数寻优、PI调参等。用Matlab脚本代替人工操作。 前提条件 1. 需要改变的参数用变量名代替, […]

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab/Simulink批量运行仿真、参数寻优

]]>
适用场景

参数寻优、PI调参等。用Matlab脚本代替人工操作。

前提条件

1. 需要改变的参数用变量名代替,比如K。这样便于在脚本中修改变量值。

2. 主界面要有outport(输出端口,椭圆形的),这个作为评价指标。注意是最外层的系统,Subsystem貌似不行。

3. 模型设置里勾选Single simulation output。

脚本代码

%% 批量运行仿真
clear;
modelname=bdroot;   %获取当前激活模型名
n=0;
for K=0:0.01:0.2	%需要改变的参数
    n=n+1;
    simOut(n)=sim(modelname);   %这句是关键
    result(n,1)=K;  %第一列记录参数值
    result(n,2)=simOut(n).yout{1}.Values.data(end); %第二列记录模型输出值(终值)
end
plot(result(:,1),result(:,2));

然后就可以愉快地挂机摸鱼,喝茶睡觉玩手机啦~

关于sim()函数的更多用法可参考Matlab官网说明:https://ww2.mathworks.cn/help/simulink/slref/sim.html?requestedDomain=cn

本文发表于鸦鸦的巢穴,感谢您的订阅!如需评论请前往Matlab/Simulink批量运行仿真、参数寻优

]]>
https://crowya.com/2101/feed 0