<?xml version="1.0" encoding="UTF-8"?><rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>adiovo/blogs Issues</title><link>https://github.com/adiovo/blogs/issues</link><atom:link href="http://rsshub.umzzz.com/github/issue/adiovo/blogs" rel="self" type="application/rss+xml"></atom:link><description>adiovo/blogs Issues - Powered by RSSHub</description><generator>RSSHub</generator><webMaster>contact@rsshub.app (RSSHub)</webMaster><language>en</language><lastBuildDate>Sun, 12 Apr 2026 23:32:18 GMT</lastBuildDate><ttl>5</ttl><item><title>菜市场里的生意经</title><description>&lt;h3&gt;老规矩，上背景&lt;/h3&gt;
&lt;p&gt;七八月份时家里那位想要来一口黄皮排骨汤，于是跑了趟菜市场精挑细选了一波黄皮。当时本以为这也就是个普通的不能再普通的买菜过程，结果，在市场内，愣是翻了两家的门店，最后是在菜市场正门口摆在路边一个很面善的阿婆手上买到，超新鲜！超优惠！
而这个过程，也让我对菜市场里的这些档口对于做生意这个事，也是多了点了解。&lt;/p&gt;
&lt;h3&gt;档口一&lt;/h3&gt;
&lt;p&gt;本着人懒且社恐的节奏，尽量能菜市场近门口解决的基本上都在门口的摊子来搞定，能不进菜市场中心位置就不进的那种，所以一进后门左侧的档口就瞟到摆了几大扎的黄皮。路过以往经常买菜的阿姨阿叔档口时跟他们微笑点了个头，然后继续往黄皮档口的方向走去，在远看时，并没有发现啥大问题，结果越走越近，越发感觉不对，靠前一看，他这每一扎都是快要坏掉的样子，但不至于不能吃，甚至想着这样应该会更优惠些？
便开口问了一手老板：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;“老板，这个黄皮怎么卖的呀？”

“11块。”
老板回。

“擦！？”
我心想。

“这个看着是有点不那么新鲜喔，而且有点快要坏掉的样子，你看这几颗。”
我手拿起其中一扎，晃了下给他看。

“这个黄皮是这样的，别看它这样，但味道还是在的。”

“确实。”

“不对，被PUA了，要不是我知道这边的价格，老板是真把我当日本鬼子来宰啊！（此处需要一个表情包：你小子.jpg）”
我心里继续嘀咕，同时准备放下，往下一家走。
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;PS：这里交代一下黄皮这个小果子在我们这的买卖行情：因为我们当地是生产黄皮这种小果子，所以基本上价格不会超过7-8块，只会低于该价，所以也就为什么这家听完价格后扭头就走。好，行情清楚了，那就继续走下一家了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;往下一家走的路上在想，为啥都那么差，还报这么高的价格呢，看着也没啥人来买，都不会尽早低价出掉吗……？&lt;/p&gt;
&lt;h3&gt;档口二&lt;/h3&gt;
&lt;p&gt;没办法，实在没看到其他家的档口上有这个东西卖，只能穿过菜市场中心地段，到靠近正门口的这一边来看看了，快要到门口的时候发现一家有！走前是老板娘，但是这里一来就有一个让我觉得掉分甚至劝退我的问题，因为她家是专卖卖水果的，可能囤了挺多的水果，很多可能都没有及时卖完，导致很多水果都有点时间，也引得苍蝇比较多，她家居然把苍蝇贴就放在这些水果靠近黄皮的纸箱旁，而且还占满苍蝇的那种！（你们想象下那画面捂脸哭~🤦‍♂️）
行！这些都不是事，主要是黄皮好就行～
确实，表面的那几颗还不错，万万没想到，一拿起来，底下有五六成也是烂掉的（黄皮这个东西，如果不保鲜放好，两三天时间就没法保证味道），也是在那一会，底下一堆那种小苍蝇（果蝇）飞起来，直接让我没有想法……于是左看右望的，想看看还有没有其他家，但确实好像没了（因为水果类的就这几档口，她隔壁的档口都有些啥一眼扫得到）。&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;“老板娘这个看着不是那么的新鲜喔，价格多少呀？”
借助她这个黄皮不新鲜的理由，尝试压低价。
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;实际上，她这个最多最多都可以3-5块都可以打包出掉了，但是我没法全包，所以价格大概接受在5块左右就差不多？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;本着只能接受她最高6块的想法，谁知她冒出了句：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;“这个黄皮是这样的喔，你要的话十块钱咯，平时都是15的。”
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;我语塞。&lt;/strong&gt;
但还是装模做样再看了下，内心在想：反正都出来了，要不就再走走看看吧！&lt;/p&gt;
&lt;p&gt;放下手中的烂黄皮，往正门口的方向看去，然后脚步也跟着踏往那个方向。
不多留一句话。&lt;/p&gt;
&lt;h3&gt;买菜，还得看阿婆&lt;/h3&gt;
&lt;p&gt;就在我想着还想要走一段到另外一边有专门阿婆摆卖的那边路段而苦恼的时候，发现门口就有个阿婆在小板凳上坐着，旁边散落几个红白色袋子和像是黄皮颜色的几颗小果子，难道说？！！
还真是！&lt;/p&gt;
&lt;p&gt;超！新！鲜！的黄皮！&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;“下午刚在树上捎下来的。”
阿婆说。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确实，没有歪瓜裂枣，没有一个是久放过的样子！&lt;/p&gt;
&lt;p&gt;不犹豫，连吃带拿，拾起旁边一个散落的红袋子，掂量差不多有一斤多的样子放进去，问了嘴阿婆价格：&lt;strong&gt;5块/斤&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;🤯&lt;/p&gt;
&lt;p&gt;差不多是这个表情，震了会之后不多说，让阿婆给我一斤多点就行了。
“一斤二两多点，六块就行了。”&lt;/p&gt;
&lt;p&gt;扫了十块给阿婆，阿婆笑了笑，还硬要塞多几扎给我，我拒绝：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;“我不用这么多阿婆，就随便吃几颗，剩下都是来煲汤的。”

“那谢谢靓仔了啊！”
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;喜笑颜开，提袋回家。&lt;/p&gt;
&lt;h3&gt;何为生意？&lt;/h3&gt;
&lt;p&gt;在这之前，家里面的长辈有稍稍聊过这个，&lt;strong&gt;在菜市场买那种较日常少见的菜品时&lt;/strong&gt;得需要点心理博弈的准备，就是要么自己本身跟他们在前期建立过良好的买卖交易，彼此已经互相信任，那在这种情况下，他们基本都会&lt;strong&gt;以保本或少赚的心理视角去对待这个客户&lt;/strong&gt;，而不是直接就开宰。如果本身没有提前去熟悉了解过你要买的这些菜品的市场价格，那进去这里面买菜的话那大概率就是挨宰的份（因为以前就挨过😭）&lt;/p&gt;
&lt;p&gt;为什么菜市场里面的小商贩都不会灵活一点，对自己的生意买卖多点变通呢？就是很固执咬死这个“黄皮”这普遍的市场价格呢？甚至都高于市场价，就是为了厚利吗？那薄利多销的理你说他们不明白吗？不，我猜他们知道的，但是就存在那么一个侥幸的心理，他们赌我：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;可能不懂这个水果的市场价，就是个一次性买卖的小伙子；&lt;/li&gt;
&lt;li&gt;可能以为我们当地盛产的这个“黄皮”会跟其他地区一样的价格来买卖；&lt;/li&gt;
&lt;li&gt;可能以为我就会将就，不会再考虑去走几步路看看其他家的情况；
……&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你的果子好点，这些还可以侥幸。
如果你的果子环境质量给人能下得去手的话，那这些也可以侥幸。
那凭什么这两者都并不兼具的情况下，还能如此侥幸呢？还是就是要赌？&lt;/p&gt;
&lt;p&gt;如果不是存在&lt;strong&gt;大多数情况下，还是要相信，一分钱，一分货这么个理&lt;/strong&gt;的话，那我可能真就将就了吧。&lt;/p&gt;
&lt;p&gt;咱也不是个合格的生意人或许不太理解这些吧，所以我可能才是固执的那个，固执到就一定要淘到好果子，非要走了那几步路，非要破了这个信息差，才知道原来生意不是这么做的。&lt;/p&gt;
&lt;p&gt;&lt;em&gt;阿婆家的黄皮&lt;/em&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/6eec57fe-b029-4acc-ad29-480bd57b8317&quot; alt=&quot;阿婆家的黄皮&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h3&gt;拜拜&lt;/h3&gt;
&lt;p&gt;祝大家吃嘛嘛香，生活鱼块~
有啥任何问题，可以留言哦，有空就回，知无不言~&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://adiovo.cc/posts/17&quot;&gt;欢迎大家来我的博客阅读本文&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/17</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/17</guid><pubDate>Sat, 13 Sep 2025 08:31:34 GMT</pubDate><author>adiovo</author></item><item><title>抽风的Spotify为何在播放到八九秒时突然静音但是进度条仍在读条？</title><description>&lt;h3&gt;背景交代下&lt;/h3&gt;
&lt;p&gt;这几年一直在续着企鹅家的Q音绿钻，也一直感觉挺不错的，但是从不知道哪个时间节点开始，冒出了个QQ音乐的超级会员，起初并没有去看这里面的特权与绿钻的区别，直到前几个月想听听GD的新歌，结果弹出了个：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/beaeb8d2-3ad6-4eb8-8edc-52c043b5fa8a&quot; alt=&quot;Image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;好嘛好嘛~&lt;/p&gt;
&lt;p&gt;去年的这个时间点左右（&lt;strong&gt;貌似&lt;/strong&gt;）他们就干了个&lt;strong&gt;绿钻/超级会员也限制登录设备数量&lt;/strong&gt;的事，没记错的话，小弟在19年左右就开始投资他们家的绿钻，现在不高不低也是V7，中间看着他一步步还推出了QQ音乐的超会，还开了两年~为了彰显尊贵的VIP身份~，后面发现对我来说跟绿钻好像没差便没续咯~穷~（可能对那些需要超前听的或者打榜自己喜欢歌手的小伙鸡们更合适吧，但至少是没有被割这么惨的🤣）
回到前面那个绿钻/超会也限制登录设备数量这个事，那让我拥有&lt;s&gt;多个&lt;/s&gt;8+设备的人改怎么办？（企鹅音限制5台）&lt;/p&gt;
&lt;p&gt;总之味道上来说，对比之前的企鹅是长大了，该完善的也完善了，大部分听的歌也有版权了，&lt;s&gt;所以翅膀也硬了吧&lt;/s&gt;（不是&lt;/p&gt;
&lt;p&gt;再回到现在的时间线，就单纯没￥啦，由于工作的缘故，各种消费降级一波，各种换平台，最终就选择到Spotify（俗称：声破天）。&lt;/p&gt;
&lt;h3&gt;开始很顺利&lt;/h3&gt;
&lt;p&gt;在上个月便将部分歌单及一些中意的歌都慢慢迁到声破天上，开始是挺顺利在各端的声破天App内听，但是过了没几天就不想打开他的应用（笔电），只想在&lt;a href=&quot;https://open.spotify.com/&quot;&gt;Spotify Web端的播放器&lt;/a&gt;听，不过你别说，声破天这个BS架构的Web端交互设计和听歌的体验，是真的吊打国内的全音乐平台，没错，吊打！（不是恶心的一踩一捧，就是该夸的，该评价的。其实也没啥评价的，因为国内的这些平台压根就是没有计划上Web端的动静，但就是给一些需要褒贬的评价，让他们内在的发生竞技关系，才会让他们变得更好）&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;但是，我就听了九秒！他就给我断了，直接没有一点声音，但进度条仍在往前推进。甚至有些（大部分）歌是直接无法播放，什么“当前无法播放此内容”！当场就慌了，一顿查，有什么地区限制说法的，什么浏览器配置说法的，各种排查……&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;突然想起，前几天在应用内播放的不是好好的呢吗
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后又打开了桌面版应用，播放！
便出现了：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;- 同样的歌，Web Player无法播放，桌面应用可以
- 同样的歌，Web Player只能播放到8、9秒，桌面应用听整首毫无问题
- 基于上面的条件，只出现在Google Chrome，因为我跑到Microsoft Edge打开了https://open.spotify.com登录后听歌没有任何问题
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这样的现象，便开始各种确认排查：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[x] 确定了自己的Spotify号不是黑号&lt;/li&gt;
&lt;li&gt;[x] 确定了账号与🌐地区是对应的&lt;/li&gt;
&lt;li&gt;[x] 确定了播放的歌曲是没有任何限制的，随便听，无需Premium&lt;/li&gt;
&lt;li&gt;[x] 确定了Chrome是打开了什么允许流媒体播放的权限&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;真的是奇了个大怪，记得之前全平台无论哪个端都是随便听的，过了这么个时间，~Spotify又双叒叕搞了啥幺蛾子升级啊！~Chrome还直接听不了了，就在一筹莫展时，我也不知道为啥突然就想到了这个浏览器版本的问题上，然后一看：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/b0916515-7d54-432f-8ced-32f0e00fe0d8&quot; alt=&quot;Image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
小弟这个119版（查了下，2023.10月份发版的）都稳定使用两年多了，一直没有啥幺蛾子，也确实一直没更，想起之前的这篇&lt;a href=&quot;https://github.com/doydi/blogs/issues/11&quot;&gt;禁止各大浏览器自动更新和版本回退（Google Chrome/Firefox/Microsoft Edge）&lt;/a&gt;，莫非自己挖的坑现在来事了？&lt;/p&gt;
&lt;h3&gt;事不迟疑，立即验证&lt;/h3&gt;
&lt;p&gt;转手跑到另外一台新电脑上，为了让我更彻底的死心，还是最开始装了跟上图同版本的浏览器，各种安装好之后，一打开&lt;a href=&quot;https://open.spotify.com/&quot;&gt;Spotify - Web Player&lt;/a&gt;，果然！跟上面一样的死动静，那行，直接Chrome Update一波，直接搞到了最新版！
接下来就是满心期待的验证结果……播放！&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;😭(≧▽≦)/😭&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不跳歌了，也不弹啥无法播放了，也不会在8、9秒左右停了，想怎么听就怎么听了，呜呜呜~😭😭😭&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;Google Chrome Update&lt;/h3&gt;
&lt;p&gt;看来接下来需要对所有的设备进行浏览器进行一波小小升级了，因为小弟所有的设备浏览器都统一在119版本上，且都关掉了自动升级，所以接下来会找一个合适的版本进行升级，并实验是否可以&lt;strong&gt;达到Spotify Web Player的播放要求&lt;/strong&gt;，不能够必须要求最新版的吧？&lt;/p&gt;
&lt;p&gt;OK，后续更新到一个版本可行后，会在后面补充所使用的稳定版本。&lt;/p&gt;
&lt;h3&gt;拜拜&lt;/h3&gt;
&lt;p&gt;有啥任何问题，可以留言哦，有空就回，知无不言~🌹&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS：如果你也有一模一样的或者很类似的问题，可以尝试是否同样为浏览器的版本问题导致的。若仍不能解决，请看下面热友的经验包👇👇👇&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;感谢下面热友提供的踩坑经验包（虽然不是我所碰到的问题根因，但还是感谢你们🙏）&lt;/h3&gt;
&lt;p&gt;1、&lt;a href=&quot;https://www.reddit.com/r/surfaceprox/comments/sn15ot/did_spotify_web_player_stop_working_for_you/?tl=zh-hans&quot;&gt;你的Spotify网页播放器也用不了了吗？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2、&lt;a href=&quot;https://www.reddit.com/r/spotify/comments/o0k71l/on_my_win10_pc_in_chrome_updated_the_spotify_web/?tl=zh-hans&quot;&gt;在我的 Win10 电脑上的 Chrome 浏览器（已更新）里，Spotify 网页播放器无法使用。当我登录时，它显示如下内容，即使在隐身模式下也是如此。有什么想法吗？我确认按照链接里的说明，一切都正确：1) 在你的浏览器地址栏里输入：chrome://settings/content。2) 在“受保护的内容”下，m&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3、&lt;a href=&quot;https://www.reddit.com/r/spotify/comments/mlcpxk/music_stopping_after_about_10_seconds/?tl=zh-hans&quot;&gt;音乐大概10秒后就停了？&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4、&lt;a href=&quot;https://www.reddit.com/r/spotify/comments/mw7wkr/spotify_pausing_after_9_seconds_ive_found_the/?tl=zh-hant&quot;&gt;Spotify 播了 9 秒就停？我找到兇手了！別用 DNS 1.1.1.1&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://adiovo.cc/posts/16&quot;&gt;欢迎大家来我的博客阅读本文&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/16</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/16</guid><pubDate>Thu, 03 Jul 2025 16:31:29 GMT</pubDate><author>adiovo</author></item><item><title>Windows Terminal · 调教</title><description>&lt;h3&gt;安装Windows Terminal（简版）&lt;/h3&gt;
&lt;p&gt;今天带大家一起来玩玩终端，是的，就是：&lt;a href=&quot;https://github.com/microsoft/terminal&quot;&gt;Windows Terminal&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;这个绝对好玩，比一般的终端体验确实强很多，配置了美化的效果后，感觉每次开一波电脑的时候这个WT都得跟随开启哪怕一个Command都不键入，也得观赏一下。
但是今天先不讲太深的美化教程，只走个流程一把梭无脑配置就完事了好吧！（如果需要具体的美化教程，可以看&lt;a href=&quot;https://github.com/dosicker/terminal-beautify&quot;&gt;这里：个人使用的一个终端美化器配置，基于M365Princess&lt;/a&gt;）&lt;/p&gt;
&lt;h4&gt;第一步：先下个Windows Terminal（简称：wt）&lt;/h4&gt;
&lt;p&gt;官方给了好几种下载安装方式，这里小弟推荐，如果没有很强烈的其他顾虑或者因素，就按照推荐的方案，走&lt;a href=&quot;https://apps.microsoft.com/detail/9n0dx20hk701&quot;&gt;微软商店&lt;/a&gt;来安装（占不了多大空间）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731660005067-7fe4246a-9625-4ab2-b42a-a92e73776c92.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;完成安装之后，那就把Windows Terminal先放一下，然后…&lt;/p&gt;
&lt;h4&gt;第二步：下载个JetBrains Mono和终端适用的字体&lt;/h4&gt;
&lt;p&gt;普通字体里面，小弟就在这里安利一波&lt;a href=&quot;https://www.jetbrains.com/zh-cn/lp/mono/&quot;&gt;JetBrains Mono&lt;/a&gt;！！！无他！是真的好看好吧~&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731679966040-6a1f3923-4164-435c-adac-d8365cc5222c.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;因为终端侧后续会有图标等展示，需要兼容到这种效果的展示就需要NF的字体，这里就推大家用&lt;a href=&quot;https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/JetBrainsMono.zip&quot;&gt;JetBrainsMono Nerd Font（点我直接下载）&lt;/a&gt;，要是对这个不满意，也可以看看&lt;a href=&quot;https://www.nerdfonts.com/font-downloads&quot;&gt;其他的Nerd Font&lt;/a&gt;，任你选择，但得用这页面的一种才行哦~不然后续美化终端的时候，图标的显示是有问题的！！！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731660905387-b3a7ea69-6568-47e1-8428-65ff450b80be.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;第三步：安装JetBrains Mono + Nerd Font&lt;/h4&gt;
&lt;p&gt;下载，解压，打开文件夹，然后Ctrl + A：&lt;strong&gt;为所有用户安装（&lt;strong&gt;点&lt;/strong&gt;安装&lt;/strong&gt;也行，&lt;strong&gt;差异就是在其他用户登录这台Windows后就没有这个字体）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731680041987-5efcfc7e-3ded-4167-b318-aadcd43d1a6c.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;JetBrainsMono Nerd Font同理：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731661044798-af7f95ab-d9e3-46b3-b88c-30079f3e2d64.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK，字体已经安装完毕~&lt;/p&gt;
&lt;h4&gt;第四步：修改Windows Terminal配置为自己特调版（配置自己顺手的点和使用习惯）&lt;/h4&gt;
&lt;p&gt;打开第一步安装好的wt，然后可以看到一个顶部有个向下的箭头图标，点它，弹出一堆选项，其中一个设置，点它！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731661489378-5096acb0-0061-4991-b966-939be191a134.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里就不针对每一个配置去说了，直接左下角打开JSON配置文件，根据鄙人的习惯，需要调整的有项有以下几个：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;initialRows&quot;: 40,//启动 &amp;gt; 启动大小 &amp;gt; 行: 40（建议16寸及以上显示器设置40，14寸设置36，以此类推）
  &quot;centerOnLaunch&quot;: true,//启动 &amp;gt; 启动参数 &amp;gt; 在启动时居中：true =&amp;gt; 开启
  &quot;theme&quot;: &quot;system&quot;,// 外观 &amp;gt; 应用程序主题：system =&amp;gt; 使用Windows主题
  &quot;useAcrylicInTabRow&quot;: true,//外观 &amp;gt; 在选项卡行中使用亚克力材料：true =&amp;gt; 开启

  // 下面配置对应在：profiles &amp;gt; defaults属性节点中：
  &quot;colorScheme&quot;: 
  {
      &quot;dark&quot;: &quot;Tango Dark&quot;,
      &quot;light&quot;: &quot;One Half Dark&quot;
  },
  &quot;font&quot;: 
  {
      &quot;face&quot;: &quot;JetBrains Mono&quot;
  }

  // 下面配置对应在：profiles &amp;gt; list属性节点中的name为Windows PowerShell同级：
  &quot;font&quot;: 
  {
      &quot;face&quot;: &quot;JetBrainsMono Nerd Font&quot;
  },

  // 下面配置对应在：profiles &amp;gt; list属性节点内追加到list列表的最后一项（添加自定义Shell）：
  {
      &quot;altGrAliasing&quot;: true,
      &quot;antialiasingMode&quot;: &quot;grayscale&quot;,
      &quot;closeOnExit&quot;: &quot;automatic&quot;,
      &quot;commandline&quot;: &quot;cmd /c chcp 65001&amp;amp;&amp;amp;plink -ssh 服务器公网ip -l root -pw 连接密码&quot;,
      &quot;cursorShape&quot;: &quot;bar&quot;,
      &quot;font&quot;: 
      {
          &quot;face&quot;: &quot;JetBrainsMono Nerd Font&quot;,
          &quot;size&quot;: 12.0
      },
      &quot;guid&quot;: &quot;{7530bed3-9deb-45dd-b91a-fbbfd0b1c8da}&quot;,
      &quot;hidden&quot;: false,
      &quot;historySize&quot;: 9001,
      &quot;icon&quot;: &quot;ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png&quot;,
      &quot;name&quot;: &quot;root@服务器公网ip&quot;,
      &quot;padding&quot;: &quot;8, 8, 8, 8&quot;,
      &quot;snapOnInput&quot;: true,
      &quot;startingDirectory&quot;: &quot;%USERPROFILE%&quot;,
      &quot;useAcrylic&quot;: false
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好了，到这就已经结束了wt的配置，基本符合了鄙人习惯的操作，接下来，再给这个wt加点花，让它不仅好用，还好看。&lt;/p&gt;
&lt;h3&gt;基于&lt;a href=&quot;https://ohmyposh.dev/&quot;&gt;Oh My Posh&lt;/a&gt;终端美化篇（简版）&lt;/h3&gt;
&lt;p&gt;在&lt;a href=&quot;https://github.com/adiovo/blogs/issues/13#Windows%20Terminal&quot;&gt;上面&lt;/a&gt;前记有说到，可以详细看鄙人另外记录&lt;a href=&quot;https://github.com/dosicker/terminal-beautify&quot;&gt;完整版的美化教程&lt;/a&gt;，macOS和Windows的都有：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731677497969-25f3f94a-759d-4381-b4d1-556e870016bd.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;第一步：先下个Oh My Posh&lt;/h4&gt;
&lt;p&gt;按照官方的意思，第一个给的下载安装的方式是走微软商店&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731678627858-1b37d61c-bd44-44f7-a2a0-332ad0fbfbfc.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是鄙人的建议是走独立安装包，因为自行安装的时候是可以选择指定安装路径滴~&lt;/p&gt;
&lt;p&gt;在&lt;a href=&quot;https://github.com/JanDeDobbeleer/oh-my-posh/releases&quot;&gt;Release页可以下载独立安装包&lt;/a&gt;：&lt;a href=&quot;https://github.com/JanDeDobbeleer/oh-my-posh/releases&quot;&gt;https://github.com/JanDeDobbeleer/oh-my-posh/releases&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;下载完成后&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731679464353-bea28be8-d95c-4462-996c-b404fd77de26.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;同样鄙人这里建议Install for all users（为所有用户进行安装），搞掂！&lt;/p&gt;
&lt;h4&gt;第二步：开始美化Windows Terminal&lt;/h4&gt;
&lt;p&gt;按照oh my posh的指示，我们可以配置omp为shell的主题，以达到美化的效果：&lt;a href=&quot;https://ohmyposh.dev/docs/installation/prompt&quot;&gt;Change your prompt | Oh My Posh&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731680904512-cba090c4-7ea6-4e1c-9478-208e3398349a.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果之前你们都没有来捣鼓这个东西，按正常来说，本地都是不存在Microsoft.PowerShell_profile.ps1这个文件的，那就需要&lt;strong&gt;先打开前面安装好的Windows Terminal&lt;/strong&gt;，然后执行这一串：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# 创建配置文件：Microsoft.PowerShell_profile.ps1
New-Item -Path $PROFILE -Type File -Force
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;得到：&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731681571737-2b74bd26-c2d4-4559-a171-299b1c5a6c49.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;前往这个目录，你就会看到配置文件，打开编辑：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;oh-my-posh init pwsh | Invoke-Expression
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存，再去wt输入：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;. $PROFILE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;噔噔噔~（官方默认主题效果）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731681840099-125975d4-4381-497e-aa6e-8394c071b612.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;贡献小弟定制版美化主题&lt;/h4&gt;
&lt;p&gt;那我来炫一下小弟的定制化主题，基于&lt;a href=&quot;https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/themes/M365Princess.omp.json&quot;&gt;M365Princess&lt;/a&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;oh-my-posh init pwsh --config &quot;https://raw.githubusercontent.com/dosicker/terminal-beautify/main/config/agxm.omp.json&quot; | Invoke-Expression
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;保存，再去wt输入：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;. $PROFILE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;噔噔噔~（小弟调教版主题效果）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731694245162-02e3150e-c5f7-4e5d-b568-c32ac739a90e.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;下面贴上完整的鄙人定制版吧，不过使其生效前得先提前安装几个powershell的模块包，在wt或powershell中管理员模式打开，执行下面几段命令，来提前下载拉好本地的模块，否则会报错（&lt;strong&gt;一段段执行&lt;/strong&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# 安装：posh-git
Install-Module -Name posh-git -Scope AllUsers
# 安装：npm-completion
Install-Module -Name npm-completion -Scope AllUsers
# 安装：Get-ChildItemColor
Install-Module -Name Get-ChildItemColor -Scope AllUsers

# 最后这一个可能是部分网友会碰到的，就是部分的cmdlet冲突或Set-PSReadLine函数异常/无法正常写入快捷键绑定使用
# 这个原因大概率是由于PSReadLine这个模块包的版本低了，或者本地没有装，需要装一下：
Install-Module PSReadLine -RequiredVersion 2.3.6 -Force
# 若还不行，强制安装最新版
Install-Module PSReadLine -Force
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这些就是小弟的定制版前置工作，都装好后，开始食用：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# 执行 oh-my-posh 应用（更新）
function ApplyPoshTheme {
oh-my-posh init pwsh --config &quot;https://raw.githubusercontent.com/dosicker/terminal-beautify/main/config/agxm.omp.json&quot; | Invoke-Expression
}

function Switch-PoshTheme {
# 获取存储在注册表中当前系统的应用外观模式：1 =&amp;gt; Light；0 =&amp;gt; Dark
$appsTheme=Get-ItemPropertyValue -Path &quot;HKCU:\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize&quot; -Name &quot;AppsUseLightTheme&quot;

if ($appsTheme -eq 1) {
$Env:APPEARANCE_MODE=&#39;light&#39;
} else {
$Env:APPEARANCE_MODE=&#39;dark&#39;
}

    ApplyPoshTheme
}

# 相关模块导入
Import-Module posh-git
Import-Module npm-completion
Import-Module Get-ChildItemColor

# $Env:APPEARANCE_MODE=$mode

# Theme BEGIN oh-my-posh beautify
# oh-my-posh init pwsh --config &quot;$env:POSH_THEMES_PATH\agxm.omp.json&quot; | Invoke-Expression
# 执行
if ($PSVersionTable.Platform -eq &#39;Unix&#39;) {
ApplyPoshTheme
} else {
# ps-read-line
Import-Module PSReadLine
Switch-PoshTheme
}


# 设置命令历史提示
Set-PSReadLineOption -PredictionSource History
# 配置Tab自动补全
Set-PSReadLineKeyHandler -Key Tab -Function MenuComplete
# 上下方向键，历史补全
Set-PSReadLineKeyHandler -Key UpArrow -Function HistorySearchBackward
Set-PSReadLineKeyHandler -Key DownArrow -Function HistorySearchForward
# 设置 Ctrl+z 为撤销
Set-PSReadLineKeyHandler -Key &quot;Ctrl+z&quot; -Function Undo

# 使用 ls 和 ll 查看目录
function ListDirectory {
    (Get-ChildItem).Name
    Write-Host(&quot;&quot;)
}
# Set-Alias -Name ls -Value ListDirectory
Set-Alias -Name ll -Value ListDirectory
Set-Alias -Name list -Value Get-ChildItem
# PowerShell 5.1及以下版本无法设置ls的cmdlet，因为它的scope为AllScope选项，会出现（WriteError: (ls:String) [Set-Alias], SessionStateUnauthorizedAccessException）错误
# 而它自身的ls cmdlet命令相等于Get-ChildItem/dir，所以调整ll的cmdlet为(Get-ChildItem).Name形式

# set which cmdlet
function WhichCmdlet {
    $(Get-Command $args[0]).Source
}
Set-Alias -Name which -Value WhichCmdlet

# set touch cmdlet
function touch {
    param (
        [string]$path
    )
    if (!(Test-Path $path)) {
        New-Item -ItemType File -Path $path
    } else {
        (Get-Item $path).LastWriteTime = Get-Date
    }
}
# 设置命令历史列表提示
# Set-PSReadLineOption -PredictionViewStyle ListView
# 每次回溯输入历史，光标定位于输入内容末尾
Set-PSReadLineOption -HistorySearchCursorMovesToEnd
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后，不要忘了使其生效：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;. $PROFILE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;关于完整版的终端美化的详细食用介绍传送门➡️🚪：&lt;a href=&quot;https://github.com/dosicker/terminal-beautify&quot;&gt;GitHub - dosicker/terminal-beautify: 只是一个终端的美化配置啦~&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;OK，本期折腾记结束，老样子，有啥疑问欢迎评论，来探讨，多沟流~&lt;/p&gt;
&lt;p&gt;拜拜~👋&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/13</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/13</guid><pubDate>Fri, 15 Nov 2024 20:45:18 GMT</pubDate><author>adiovo</author></item><item><title>禁止各大浏览器自动更新和版本回退（Google Chrome/Firefox/Microsoft Edge）</title><description>&lt;h4&gt;先扯一下有的没的相关背景吧~&lt;/h4&gt;
&lt;p&gt;不知道各位对于浏览器或者什么软件的使用有没有一个这样的小癖好，就是不想让他自动更新……&lt;br&gt;
对于我来说就是，不仅仅是浏览器这样，很多软件都不会说一昧的更新，当我在使用这个软件或程序时，发现一个很明显的bug时，或者用着某个功能很不顺手反而整体不如以前时，会去看当前版本是否为最新版本，若不是就会跑去官网查看最新版的差异调整，以及更新日志，像微信这个傻x，从来都是：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plain&quot;&gt;该版本主要更新如下：
- 修复了一些已知问题。

or

最近更新：
- 更新了若干功能。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;承认你是个世纪软件，够顶流的产品，但还是一码归一码，该吐槽还是吐槽你一下，就为啥不公开一下每次迭代的日志呢？小版本如此可以理解，大版本为何也不说明呢？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;好了，背景过完了，&lt;s&gt;吐也吐爽了&lt;/s&gt;，说白了就想着任何软件每次新版本发布的时候&lt;strong&gt;能不能看得到有没有修复优化的点&lt;/strong&gt;，若基本都是新增的新功能，用户是不是可以自主考虑考虑是否要升级该版本，因为很多时候犹豫软件迭代而导致用户端出现各种异常幺蛾子的事件也是时有发生，这样避规风险的机会是不是大大可以增大，同时也给了用户更多的自主选择？&lt;/p&gt;
&lt;hr&gt;
&lt;h3&gt;PC端各大浏览器如何去彻底的禁止掉他们的自动更新？&lt;/h3&gt;
&lt;p&gt;就对这几个家伙做手脚：Google Chrome/Firefox/Microsoft Edge，在我使用的Windows系统内，所有的浏览器版本都只停留在119这一版⬇️⬇️⬇️&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731426912373-308712d7-63aa-4208-bbbe-140c4c3dd8e8.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731426967871-13e002ea-aadc-4291-93b2-2d56e7d94749.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;上面说的几个货，可能Firefox还好，其他两个几乎一年365日，52个周，更新52个版本~虽然几乎更新的时候不会有很大的问题出现，但是右上角的提示更新有点恼火……其中好像还有几次升级后，部分项目环境和原生api等支持有些许小调整（大版本那种），导致线上的项目爆了个小雷，需要临时打补丁。&lt;/p&gt;
&lt;p&gt;&lt;s&gt;所以，小小折腾一下，&lt;/s&gt; 啰哩啰嗦，开搞！&lt;/p&gt;
&lt;h4&gt;得先下载对应版本的浏览器安装包吧？&lt;/h4&gt;
&lt;p&gt;在开始前，是不是得先准备好自己需要的对应版本的浏览器安装包？这先给各位&lt;strong&gt;资源站点&lt;/strong&gt;自己动手去捞了好吧，不需要我手把手给你找到你自己需要的版本吧？&lt;/p&gt;
&lt;p&gt;一般我会在下面几个网站去挖（包括Firefox、Edge等等都可以来下面列举的前三个站点去找所需的版本，第四个则是专门为Google Chrome做历史版本保留的一个网站，后面的也可以去看看，在这些站点里面，是绝对可以满足你能找到所需要的浏览器版本！！！）：&lt;/p&gt;
&lt;p&gt;1、&lt;a href=&quot;https://cn.uptodown.com/windows&quot;&gt;Uptodown&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730993853966-0636313b-218b-4bf1-a1a5-6193c37346f3.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;2、&lt;a href=&quot;https://downzen.com/en/windows/&quot;&gt;downzen.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730994064221-13be0fc2-5a9e-4dda-b4a5-aef74d1062db.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;3、&lt;a href=&quot;https://filehippo.com/zh/&quot;&gt;Filehippo&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730994713046-a686dcf6-f35a-466a-894b-f59e4083b7a4.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730994741685-265b67d6-f718-4cc4-9caa-c945ea66ab89.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;4、&lt;a href=&quot;https://vikyd.github.io/download-chromium-history-version/#/&quot;&gt;https://vikyd.github.io/download-chromium-history-version/#/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730994187625-c1980b55-d917-4341-a1e3-a62c3351dffd.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;5、&lt;a href=&quot;https://softwaredownload.co.in/&quot;&gt;softwaredownload&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;6、&lt;a href=&quot;https://www.filepuma.com/&quot;&gt;filepuma&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;7、&lt;a href=&quot;https://www.catalog.update.microsoft.com/Search.aspx?q=microsoft%20edge%20119&quot;&gt;Microsoft Edge专属资源站（默认搜索119版本，修改右上角搜索框的版本或地址栏链接参数即可）&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731427227745-74ff5a06-e198-4b81-9a76-8e7a816b8f19.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK，以上，可以得到一个你自己下载好的需要回退或者安装的旧版本浏览器安装包了，那么接下来⬇️⬇️⬇️&lt;/p&gt;
&lt;h4&gt;禁用Google Chrome自动更新（Windows/macOS）：&lt;/h4&gt;
&lt;h5&gt;Windows篇：&lt;/h5&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1730965836604-2010916f-dd3a-4280-ac81-8b2933884f1f.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;之前找了很多的方案，&lt;strong&gt;有禁用服务项，删除任务计划，删除或改掉Google Chrome的升级主程序&lt;/strong&gt;，说实话，在老版本是可以走得通的，但是现在Google那边也见招拆招，直至演变到目前的方式：&lt;/p&gt;
&lt;p&gt;1、&lt;a href=&quot;https://blog.csdn.net/weixin_40959890/article/details/135487027&quot;&gt;禁止谷歌浏览器 Google Chrome 自动更新_阻止谷歌浏览器更新-CSDN博客&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2、&lt;a href=&quot;https://suxibo.com/blog/disable-chrome-automatic-updates.html&quot;&gt;禁止Chrome自动更新 - 苏锡波的异世仙府&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3、&lt;a href=&quot;https://blog.csdn.net/weixin_65228312/article/details/141724054&quot;&gt;关闭chrome自动更新的4种方式_chrome关闭自动更新-CSDN博客&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;4、&lt;a href=&quot;https://www.cnblogs.com/chenxiaomeng/p/17676090.html&quot;&gt;彻底关闭谷歌浏览器自动更新方法分享 取消chrome自动更新 - 陈晓猛 - 博客园&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;没错，&lt;strong&gt;有动用到注册表层面的、改hosts测底封禁升级请求的、改升级文件权限组的等等~&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;小弟综合了一波最佳方案，取上面这些佬已经总结出来的经验而走：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1&lt;/strong&gt;、禁用services.msc中的Google升级程序（一般为两个），什么？你还不知道怎么操作？上面链接中的第一个佬的方案：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731428438089-65f23567-6359-4caf-990d-ec48fc199aa3.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;直接看方法二操作一遍就行~&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;、删除Google Chrome的计划任务，这个怎么操作呢？上面第3链接佬的方案：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731428667293-9ce3b12b-1d00-43f0-bac2-5403e2352afa.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;中的这一个步骤，如果这里未找到相关的程序，再Win+R键：&lt;strong&gt;taskschd.msc&lt;/strong&gt;，打开任务计划程序窗口，看有没有这两个东西：&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731428786213-9a505d4c-81e1-4903-9b14-5284f4d71289.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GoogleUpdateTaskMachinexxx&lt;/strong&gt;类似命名的程序，右击之，&lt;strong&gt;“结束之，禁用之”&lt;/strong&gt; ，结束。&lt;/p&gt;
&lt;p&gt;3、最后，回到上一步或第一步，其中的程序服务项会指向某一个具体的执行文件（程序），如这样：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731429423576-d0ee0711-17c5-4c16-828c-49a2de06694e.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;这个地址就是指向等会你要去操作的路径，复制，Win+E键，打开Windows资源管理器，地址栏Ctrl+V进入（还不明白的话，看这个吧 &lt;a href=&quot;https://blog.csdn.net/wyd_333/article/details/134980296&quot;&gt;禁用Google Chrome自动更新，怎么找到Update目录？&lt;/a&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731429553549-46cb83e3-4fee-4d99-b78c-f09e2a1898bb.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;看到这个Update文件夹了吧，然后就可以无脑对这个文件夹以上面第4个链接佬的第2大步骤操作即可：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731429910739-de2e3be9-a527-4f9d-b8be-24979ed97682.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;或者这篇始祖版本佬的方案&lt;a href=&quot;https://blog.csdn.net/u013992330/article/details/118710651&quot;&gt;彻底阻止、禁用google chrome浏览器自动更新、升级_谷歌浏览器禁止更新插件-CSDN博客&lt;/a&gt;的最后一步操作：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430039474-33c11978-5a93-4cf0-aac9-70ab5f2117f4.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;完成之后，打开&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430117167-e0770747-84c2-4ff6-80e5-e2de55b6eeea.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;，再打开设置 &amp;gt; 帮助 &amp;gt; 关于Google Chrome，&lt;strong&gt;如果是下面这幅模样&lt;/strong&gt;，那么我就恭喜，已经搞掂晒，可以开心冲浪啦~&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430195641-ebdc22ef-f605-404a-867c-f2cb96658e84.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;以上综合各位前辈佬的方案配置安装就行，&lt;strong&gt;保证你不更新，这个Chrome永久就这么大&lt;/strong&gt;，说到后面要更新怎么办，这里我给各位说一下，&lt;strong&gt;注意听！注意听！注意听！&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
&lt;strong&gt;需要将上诉步骤中的第三步，Update文件夹权限组给配置回来，我说个大概的吧，知道的大概看一下就明白，不知道的我再推荐第二个方式：&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;P1：右击Update文件夹，切到安全选项卡，点高级 &amp;gt; 更改&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430627172-d2187eb4-e4e3-4f54-98a5-8fb13ec8406f.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430719577-9d3865b1-0512-438f-a38a-ea8b127cb99c.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;上面什么都不要改，在这个红色的红框里输入你当前的系统用户名，如：admin，输入完之后，点一下右侧的&lt;strong&gt;检查名称，然后点确定，回到这个页面，勾上：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731430901133-e0ee9ae0-2a4c-4c0c-ae83-0b65f85fc900.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;右下角应用，需要等应用完那些文件的权限组，如果弹窗需要啥的话点确定就行，完了之后再点右下角的确定，回到右击Update的属性页，再点确定，然后把这个Update文件夹删除掉，再去关于Google Chrome里更新或者手动安装更新就行，如果不这样操作，安装会失败的哦~&lt;/p&gt;
&lt;p&gt;P2：是不是感觉P1很麻烦？来，简单粗暴的来了，下载一个火绒安全，然后右击Update文件夹，使用火绒安全粉碎文件 &amp;gt; 粉碎文件，再去关于Google Chrome里更新或者手动安装更新，搞掂。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;OK，上面就是小弟完整的禁用自动更新的折腾记…除了最后一步的权限组配置可能稍稍费事了点，其他的槽点确实也么有，已经用这个方式跑了大半个年头的玩法咯~&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;其实还有一个，就是这个佬（&lt;a href=&quot;https://blog.csdn.net/weixin_65228312/article/details/141724054&quot;&gt;关闭chrome自动更新的4种方式&lt;/a&gt;）的注册表方案：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731431315520-6d10eab9-4d69-4c7e-aaec-0d1fd4f60781.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;我是没试过这个方案，要是有其他的小伙伴也有这样的折腾日记，可以考虑这个方案试试，完全可行的话，可以评论区举个手，后面我也转这种方式来更便捷了！！！&lt;/p&gt;
&lt;p&gt;至此，Google Chrome · Windows篇Done！&lt;/p&gt;
&lt;h5&gt;macOS篇：&lt;/h5&gt;
&lt;p&gt;老样子，先看看前面的佬都是怎么个禁掉的方式：&lt;br&gt;
1、❌&lt;a href=&quot;https://blog.csdn.net/weixin_44027937/article/details/128396190&quot;&gt;&lt;s&gt;mac下关闭Chrome浏览器自动更新&lt;/s&gt;&lt;/a&gt;&lt;br&gt;
2、❌&lt;a href=&quot;https://blog.csdn.net/CHENYUFENG1991/article/details/78568919&quot;&gt;&lt;s&gt;Mac Chrome浏览器取消自动升级（看这一篇就够了）&lt;/s&gt;&lt;/a&gt;&lt;br&gt;
3、✅&lt;a href=&quot;https://zorchp.github.io/MacOS-google-chrome-%E7%A6%81%E7%94%A8%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E7%9A%84%E6%96%B9%E6%B3%95/&quot;&gt;Macos Google Chrome 禁用自动更新的方法&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;结合了这些热佬的实践来看，其实能感觉得到，相对于Windows而言，macOS的禁用好似更简便一点，因为它完整的一个操作流程就只需要两个命令搞掂，在安装完所需要的版本后，最好不要急着打开（打开了也没事，但千万不要随意点右上角的重启更新按钮就好），所以，只需要：&lt;/p&gt;
&lt;p&gt;1、前往Google Chrome的升级文件目录，macOS一般都是在：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;/Library/Google/GoogleSoftwareUpdate

or（下面xxx为自己的设备name）

/Users/xxx/Library/Google/GoogleSoftwareUpdate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还不明白？看上面✅的那条（第三条），点进去：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/08b34eef-e232-43dd-ac8c-0451f51d06d9&quot; alt=&quot;Image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;2、删掉该目录下&lt;strong&gt;GoogleSoftwareUpdate.bundle&lt;/strong&gt;文件，然后返回到上一层目录（即与GoogleSoftwareUpdate目录同级下），执行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;chown root:wheel GoogleSoftwareUpdate
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;3、打开Google Chrome，帮助 &amp;gt; 关于Google Chrome，你会看到下面的：&lt;/p&gt;
&lt;img width=&quot;1120&quot; alt=&quot;Image&quot; src=&quot;https://github.com/user-attachments/assets/56dfecf1-0e2b-456c-b103-b13875d8521f&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;p&gt;&lt;em&gt;这样的美好景象～&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;所以，这下可以说macOS是比Windows处理起来更干净利落了吧🐶～
那有人问了，我后面又想要恢复更新了，那怎么搞呢？看下面：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/f69f47d5-faa8-486d-a680-a2355762d740&quot; alt=&quot;Image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;至此，Google Chrome All Done！&lt;/p&gt;
&lt;hr&gt;
&lt;h4&gt;禁用Microsoft Edge自动更新（Windows/macOS）：&lt;/h4&gt;
&lt;h5&gt;Windows篇：&lt;/h5&gt;
&lt;h5&gt;在开始Windows的Edge禁用自动更新前，小弟需要提前说一下以下事项：⬇️⬇️⬇️&lt;/h5&gt;
&lt;blockquote&gt;
&lt;p&gt;[!WARNING]
⚠️⚠️⚠️提前说明点⚠️⚠️⚠️
由于Edge这个浏览器在Windows里面属于亲儿子的缘故，所以这里有一个恶心的问题是你是无法正常卸载掉系统内的Edge（也不是完全无法卸载，反正就很费事），所以，咱这里的方式是直接通过降级覆盖安装的法子来实现一个强制安装，然后变相回退版本的一个操作，小弟这里也大概描述一下，怎么去变相回退，实现旧版本的Edge安装。
所以，可以先看看这几篇关于回退版本的操作后，再直接往下走：&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h5&gt;关于在Windows上进行Edge版本回退的操作资料教程查阅：&lt;br&gt;&lt;/h5&gt;
&lt;p&gt;· &lt;a href=&quot;https://blog.csdn.net/m0_63748493/article/details/133039677&quot;&gt;Edge 浏览器『版本回退』和『关闭更新』&lt;/a&gt;&lt;br&gt;
· &lt;a href=&quot;https://www.bilibili.com/opus/776468226909405187&quot;&gt;如何将 Microsoft Edge 回退到以前的版本&lt;/a&gt;&lt;br&gt;
· &lt;a href=&quot;https://www.bilibili.com/opus/798946548191854630&quot;&gt;Edge/微软浏览器回退老版本降级以及禁用自动更新教程&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;因为小弟相信，当你在看到这里的时候那就说明你就是有这个“如何给Edge版本降级安装/禁止Edge自动更新”这样需求的啦哈哈~（开始正题）：&lt;/p&gt;
&lt;p&gt;1、下载获取到Edge的指定版本的离线安装包；&lt;/p&gt;
&lt;p&gt;2、Win+X，打开Windows Powershell（管理员）；&lt;/p&gt;
&lt;p&gt;3、键入下面的代码段，其中“Edge安装包文件”名称根据你实际的名称填入，而“安装日志打印方便调试查看问题所在的文件”可以自由命名（如：edge-install-log）以.txt后缀：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;msiexec /I &quot;Edge安装包文件.msi&quot; /l* &quot;安装日志打印方便调试查看问题所在的文件.txt&quot; allowdowngrade=1
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;[!TIP]
下面这一步骤是对整个操作作一个阐述解释的意思吧&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;4、执行（安装）过程中会给日志文件（上面.txt文件）写入过程日志，最终的结果如下图所示，则表示你已经降级（指定版本）安装成功啦！&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731440427779-c80244ad-f633-4f8e-86cb-2880aeb7393a.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果以上步骤操作完，仍然安装旧（指定）版本不成功，那么可以直接参考下面文章尝试：&lt;/p&gt;
&lt;p&gt;1、&lt;a href=&quot;https://www.bilibili.com/opus/798946548191854630&quot;&gt;Edge/微软浏览器回退老版本降级以及禁用自动更新教程 - 哔哩哔哩&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2、&lt;a href=&quot;https://forum.gamer.com.tw/C.php?bsn=60030&amp;amp;snA=621392&quot;&gt;https://forum.gamer.com.tw/C.php?bsn=60030&amp;amp;snA=621392&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;3、&lt;a href=&quot;https://airnan.cn/2024/10/31/PL8Ny2lL&quot;&gt;Chrome、Edge浏览器离线安装包下载 - 码农阿楠&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;自行结合一下各位佬的解决方案，最终绝对能降级成功滴~&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;OK，当已经成功降级安装完成后，就会想着不想让Edge自动升级，那么⬇️⬇️⬇️&lt;/p&gt;
&lt;h5&gt;操作过程跟Chrome如法炮制：&lt;/h5&gt;
&lt;p&gt;不过对于Microsoft Edge，实际的程序服务项要换成Edge的来禁用：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731431761433-7d4d7340-66c9-4b3f-8c8c-40fab47f3870.png&quot; alt=&quot;第一项的你们也要禁用，这里显示为自动(延迟启动)是因为我先禁用修改了权限组，导致没法再禁用了，再去禁用的使用提示目标程序被拒绝，所以你们直接都选择禁用就行&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;第二步的任务计划项则换成：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731431825413-ad03ffac-bc18-4250-8157-1b09df273434.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;即可。&lt;/p&gt;
&lt;p&gt;最后一步同理，查找到路径进入，通常为如下结构命名文件夹等：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.nlark.com/yuque/0/2024/png/1550026/1731432058248-e7ea8940-b859-4f73-aec9-99ea844c7fa0.png&quot; alt=&quot;&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;针对EdgeUpdate这个文件夹，做跟Google Chrome第三步同样的操作即可，若要恢复更新时，亦如Chrome同理。&lt;/p&gt;
&lt;h5&gt;macOS篇：&lt;/h5&gt;
&lt;p&gt;当然，Edge在Windows是亲儿子，那在macOS内的你就是别人家的孩子了对吧！
所以玩它跟玩Chrome是一样的（Edge基于Chrome的内核版本改造的），所以，&lt;strong&gt;全部过程直接抄上面Google Chrome的macOS篇即可&lt;/strong&gt;！
不过路径上有差异就是啦：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;/Library/Microsoft/EdgeUpdater

or

/Library/Application Support/Microsoft/MAU2.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;剩下就是同理macOS的Google Chrome操作啦～&lt;/p&gt;
&lt;p&gt;同样，给大家看看热佬们的方案：&lt;br&gt;
1、&lt;a href=&quot;https://sysin.org/blog/disable-edge-auto-update/#Microsoft-Edge-for-Mac&quot;&gt;如何禁用 Microsoft Edge 自动更新 (Windows, Linux, macOS)&lt;/a&gt;&lt;br&gt;
2、&lt;a href=&quot;https://zorchp.github.io/MacOS-google-chrome-%E7%A6%81%E7%94%A8%E8%87%AA%E5%8A%A8%E6%9B%B4%E6%96%B0%E7%9A%84%E6%96%B9%E6%B3%95/#edge-%E7%9A%84%E6%93%8D%E4%BD%9C&quot;&gt;edge 的操作&lt;/a&gt;&lt;br&gt;
3、&lt;a href=&quot;https://learn.microsoft.com/zh-cn/deployedge/edge-learnmore-edgeupdater-for-macos#update-configuration-example&quot;&gt;你敢信？微软居然有官文放出给方案如何在macOS中禁用喔？&lt;/a&gt;&lt;br&gt;
4、&lt;a href=&quot;https://www.itfanr.cc/2021/05/03/disable-automatic-update-for-edge-on-macos/&quot;&gt;MacOS下禁用新版 Microsoft Edge 自动更新&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h4&gt;最后一个，禁用Firefox自动更新（Windows/macOS）：&lt;/h4&gt;
&lt;p&gt;这个Firefox就真的太痛快了，直接加个配置就完事，而且几种方式都很简单：&lt;/p&gt;
&lt;h5&gt;Windows篇：&lt;/h5&gt;
&lt;h6&gt;方式一：&lt;/h6&gt;
&lt;p&gt;1、创建策略文件 &amp;lt;Firefox 安装目录&amp;gt;\distribution\policies.json；&lt;/p&gt;
&lt;p&gt;2、打开该文件policies.json并写入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;{
  &quot;policies&quot;: {
    &quot;DisableAppUpdate&quot;: true
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h6&gt;方式二：&lt;/h6&gt;
&lt;p&gt;操作步骤：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;1、浏览到 “HKEY_LOCAL_MACHINE\Software\Policies” 创建项 “Mozilla”，在创建项 “Firefox”，创建完毕即 “HKEY_LOCAL_MACHINE\Software\Policies\Mozilla\Firefox”；
2、在上述路径，右键点击空白处 (sysin)，新建一个 DWORD (32-Bit) Value，名称为 “DisableAppUpdate”；
3、双击创建的 “DisableAppUpdate”，将值修改为 “1”。；
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;需重启系统哦~&lt;/p&gt;
&lt;h6&gt;方式三：&lt;/h6&gt;
&lt;p&gt;1、新建个disabledAutoUpgrade.reg文件，写入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox]
&quot;DisableAppUpdate&quot;=dword:00000001
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、保存后，双击写入注册表即可（需重启）；&lt;/p&gt;
&lt;h6&gt;方式四：&lt;/h6&gt;
&lt;p&gt;直接使用CMD（推荐，最便捷）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;reg add &quot;HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Mozilla\Firefox&quot; /v DisableAppUpdate /t REG_DWORD /d 1 /f
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;在Windows里以上四种方式都可以顺利很快速的成功禁用Firefox的自动更新&lt;/p&gt;
&lt;h5&gt;macOS篇：&lt;/h5&gt;
&lt;h6&gt;方式一：&lt;/h6&gt;
&lt;p&gt;1、进入包内容以下路径（基本进入到Resource下即可，新建文件夹“distribution”，再进入该文件夹内新建“policies.json”文件）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;/Applications/Firefox.app/Contents/Resources/distribution/policies.json
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;2、打开该文件policies.json并写入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;{
  &quot;policies&quot;: {
    &quot;DisableAppUpdate&quot;: true
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h6&gt;方式二：&lt;/h6&gt;
&lt;p&gt;1、打开终端，直接以方式一的方式写入，执行以下命令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;# 创建目录 (sysin)
mkdir /Applications/Firefox.app/Contents/Resources/distribution
echo &#39;
{
  &quot;policies&quot;: {
    &quot;DisableAppUpdate&quot;: true
  }
}
&#39; &amp;gt; /Applications/Firefox.app/Contents/Resources/distribution/policies.json
&lt;/code&gt;&lt;/pre&gt;
&lt;h6&gt;方式三：&lt;/h6&gt;
&lt;p&gt;1、使用plist策略，配置org.mozilla.firefox.plist内容：&lt;br&gt;
启用自动更新：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo defaults write /Library/Preferences/org.mozilla.firefox EnterprisePoliciesEnabled -bool TRUE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;禁用自动更新：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo defaults write /Library/Preferences/org.mozilla.firefox DisableAppUpdate -bool TRUE
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上无论是Win还是macOS，执行完这些方式的禁用操作后，打开火狐的选项中的“Firefox 更新”会提示：“&lt;strong&gt;更新已被系统管理员禁用&lt;/strong&gt;”，而“关于 Firefox”弹窗中也可以看到“&lt;strong&gt;更新已被系统管理员禁用&lt;/strong&gt;”的时候恭喜你！成功搞掂！训觉~&lt;/p&gt;
&lt;h3&gt;拜拜&lt;/h3&gt;
&lt;p&gt;有啥任何问题，可以留言哦，有空就回，知无不言~🌹&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://adiovo.cc/posts/11&quot;&gt;欢迎大家来我的博客阅读本文&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/11</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/11</guid><pubDate>Tue, 12 Nov 2024 20:27:34 GMT</pubDate><author>adiovo</author></item><item><title>NPM Binary 镜像配置</title><description>&lt;h4&gt;Windows：在C:\Users\xxx.npmrc文件内添加所对应的二进制包镜像源&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/2ce314d0-cefe-4836-9c31-95b3ffe6915e&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;macOS：复制以下配置至 .bashrc 或 .zshrc 中，使用npmmirror.com提供的二进制镜像&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;# === NPM BINARY CHINA ===
# https://github.com/cnpm/binary-mirror-config/blob/master/package.json#L53
export NODEJS_ORG_MIRROR=&quot;https://cdn.npmmirror.com/binaries/node&quot;
export NVM_NODEJS_ORG_MIRROR=&quot;https://cdn.npmmirror.com/binaries/node&quot;
export PHANTOMJS_CDNURL=&quot;https://cdn.npmmirror.com/binaries/phantomjs&quot;
export CHROMEDRIVER_CDNURL=&quot;https://cdn.npmmirror.com/binaries/chromedriver&quot;
export OPERADRIVER_CDNURL=&quot;https://cdn.npmmirror.com/binaries/operadriver&quot;
export ELECTRON_MIRROR=&quot;https://cdn.npmmirror.com/binaries/electron/&quot;
export ELECTRON_BUILDER_BINARIES_MIRROR=&quot;https://cdn.npmmirror.com/binaries/electron-builder-binaries/&quot;
export SASS_BINARY_SITE=&quot;https://cdn.npmmirror.com/binaries/node-sass&quot;
export SWC_BINARY_SITE=&quot;https://cdn.npmmirror.com/binaries/node-swc&quot;
export NWJS_URLBASE=&quot;https://cdn.npmmirror.com/binaries/nwjs/v&quot;
export PUPPETEER_DOWNLOAD_HOST=&quot;https://cdn.npmmirror.com/binaries&quot;
export SENTRYCLI_CDNURL=&quot;https://cdn.npmmirror.com/binaries/sentry-cli&quot;
export SAUCECTL_INSTALL_BINARY_MIRROR=&quot;https://cdn.npmmirror.com/binaries/saucectl&quot;
export npm_config_sharp_binary_host=&quot;https://cdn.npmmirror.com/binaries/sharp&quot;
export npm_config_sharp_libvips_binary_host=&quot;https://cdn.npmmirror.com/binaries/sharp-libvips&quot;
export npm_config_robotjs_binary_host=&quot;https://cdn.npmmirror.com/binaries/robotj&quot;
# For Cypress &amp;gt;=10.6.0, https://docs.cypress.io/guides/references/changelog#10-6-0
export CYPRESS_DOWNLOAD_PATH_TEMPLATE=&#39;https://cdn.npmmirror.com/binaries/cypress/${version}/${platform}-${arch}/cypress.zip&#39;
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;或手动添加所需：&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;&amp;lt;!-- npm 总镜像淘宝源配置  --&amp;gt;
npm config set registry https://registry.npmmirror.com/

&amp;lt;!-- 1、node-sass 二进制包镜像 sass_binary_site --&amp;gt;
npm config set sass_binary_site https://registry.npmmirror.com/-/binary/node-sass

&amp;lt;!-- 2、electron 二进制包镜像 electron_mirror --&amp;gt;
npm config set electron_mirror https://registry.npmmirror.com/-/binary/electron

&amp;lt;!-- 3、puppeteer 二进制包镜像 puppeteer_download_host --&amp;gt;
npm config set puppeteer_download_host https://registry.npmmirror.com/-/binary

&amp;lt;!-- 4、chromedriver 二进制包镜像 chromedriver_cdnurl --&amp;gt;
npm config set chromedriver_cdnurl https://registry.npmmirror.com/-/binary/chromedriver

&amp;lt;!-- 5、operadriver 二进制包镜像 operadriver_cdnurl --&amp;gt;
npm config set operadriver_cdnurl https://registry.npmmirror.com/-/binary/operadriver

&amp;lt;!-- 6、phantomjs 二进制包镜像 phantomjs_cdnurl --&amp;gt;
npm config set phantomjs_cdnurl https://registry.npmmirror.com/-/binary/phantomjs

&amp;lt;!-- 7、selenium 二进制包镜像 selenium_cdnurl --&amp;gt;
npm config set selenium_cdnurl https://registry.npmmirror.com/-/binary/selenium

&amp;lt;!-- 8、node-inspector 二进制包镜像 node_inspector_cdnurl --&amp;gt;
npm config set node_inspector_cdnurl https://registry.npmmirror.com/-/binary/node-inspector

&amp;lt;!-- 9、sentry-cli 二进制包镜像 sentrycli_cdnurl --&amp;gt;
npm config set sentrycli_cdnurl https://registry.npmmirror.com/-/binary/sentry-cli

&amp;lt;!-- 10、sqlite3 二进制包镜像 sqlite3_binary_site --&amp;gt;
npm config set sqlite3_binary_site https://registry.npmmirror.com/-/binary/sqlite3

&amp;lt;!-- 11、python 二进制包镜像 python_mirror --&amp;gt;
npm config set python_mirror https://registry.npmmirror.com/-/binary/python
&lt;/code&gt;&lt;/pre&gt;
</description><link>https://github.com/adiovo/blogs/issues/10</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/10</guid><pubDate>Mon, 21 Oct 2024 08:19:23 GMT</pubDate><author>adiovo</author></item><item><title>npm与nrm协助共进</title><description>&lt;h4&gt;&lt;em&gt;前沿，我们介绍了一波 &lt;a href=&quot;https://agxm.fun/posts/5&quot;&gt;Node与NVM的约会&lt;/a&gt;，这次再来看看npm内的源管理与如何给我们带来更便捷的多项目时依赖切换&lt;/em&gt;&lt;/h4&gt;
&lt;h4&gt;NRM，官方是这样说的：&lt;strong&gt;（NPM registry manager）是 npm 的镜像源管理工具，使用它可以快速切换 npm 源。&lt;/strong&gt;&lt;/h4&gt;
&lt;p&gt;什么是npm的镜像源呢？其实我们之前也有介绍过的 &lt;a href=&quot;https://agxm.fun/posts/2&quot;&gt;说一下安装依赖包时所遇到常见问题的快速处理方式&lt;/a&gt; ，其中若我们未进行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npm config set registry xxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;等操作时，该registry（&lt;strong&gt;即为npm镜像源，可以理解为npm包依赖获取地址仓库&lt;/strong&gt;）的默认源是node官方提供的源地址：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;https://registry.npmjs.org/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可以看到，上面的&lt;em&gt;&lt;strong&gt;&lt;a href=&quot;https://registry.npmjs.org/&quot;&gt;https://registry.npmjs.org/&lt;/a&gt;&lt;/strong&gt;&lt;/em&gt; 就是所谓的镜像源，其实无非就是&lt;strong&gt;依赖仓库中心，所有的依赖插件都在此进行搜down下来（理解maven的家人们，可以对应为maven异曲同工）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;但是呢，由于国内的网络环境问题，导致官方的默认源是有点难访问成功的，大部分依赖拉取成功的概率五五开...再少一点吧...不信么？那接着造，看一下，如果我们以正常的国内地址去跟他握个手，看看会有多&lt;s&gt;fuck蛋&lt;/s&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/6a95abdc-78f9-4d5c-bb75-4d36656cd8de&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
这样一看，&lt;s&gt;wo cao&lt;/s&gt;...&lt;/p&gt;
&lt;h5&gt;那看到了，怎么说？简单，几个方式：&lt;/h5&gt;
&lt;ol&gt;
&lt;li&gt;挂 V X N，走国外代理，懂得都懂；&lt;/li&gt;
&lt;li&gt;不用npm，走cnpm；&lt;/li&gt;
&lt;li&gt;给npm挂代理，使其走国内的某些大厂的源地址；（&lt;strong&gt;推荐&lt;/strong&gt;）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;呐，方式都给出来，这里我给大家走推荐的方式，即为：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npm config set registry xxxxx
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;没错，这个就是给npm挂代理，使其走国内源（文末提供阿D所知道的国内大厂源），或其他私有源，比如大名鼎盛的 &lt;a href=&quot;https://www.npmmirror.com/&quot;&gt;taobao 阿里源&lt;/a&gt;，给各位看官看下区别：
&lt;img src=&quot;https://github.com/user-attachments/assets/9b46f617-e1c7-406f-99d7-f18347963cd9&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h3&gt;......&lt;/h3&gt;
&lt;p&gt;阿D无语...&lt;/p&gt;
&lt;p&gt;竟然知道了关于源代理的设置，那OK，完事~&lt;/p&gt;
&lt;p&gt;别别，别急着走嘛帅哥~
再给各位帅哥靓女安利个好东西，回归本主题，当多项目使用时，我们难道一直要这样敲来敲去，npm config set regxxxxxxxx......吗？&lt;/p&gt;
&lt;p&gt;那显然很烦人，nrm给我们带来了极大的便利，若果后期地址源一长，你还愿意去记么？&lt;/p&gt;
&lt;p&gt;废话少说，开冲：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&amp;lt;!-- 1、全局安装（你别跟我说npm怎么装好吧） --&amp;gt;
npm i nrm -g

&amp;lt;!-- 2、检测是否安装完成 --&amp;gt;
nrm -v     -- 成功输出版本号，如：1.x.x，即代表安装成功

&amp;lt;!-- 3、如何使用 --&amp;gt;
nrm -- 查看所有命令配置方式

其中：
nrm ls（查看当前nrm所有已配置源，且当前正在使用的源前面会标有*号，具体看下图展示）；
nrm current（当前所使用的源名称）；
nrm use &amp;lt;源名称&amp;gt;（*使用指定源，如：nrm use taobao）；
nrm add &amp;lt;源名称&amp;gt; &amp;lt;源地址&amp;gt;（添加第三方源或添加私有源，如：nrm add taobao https://registry.npmmirror.com/）；
nrm del &amp;lt;源名称&amp;gt;（删除指定源，如：nrm del taobao）；
nrm set-scope &amp;lt;依赖的scopeName&amp;gt; &amp;lt;源地址&amp;gt;（设置部分依赖走指定源，如：nrm set-scope xdd@xxx taobao，标识xdd范围的依赖，直走这个源）；
nrm del-scope &amp;lt;依赖的scopeName&amp;gt;（删除部分依赖走指定源配置，如：nrm del-scope xdd@xxx）
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;ps：注意下各位，最新版（1.2.5及以上）的nrm由于内部open版本依赖包模块没有锁，用的是最新版本，而最新版本的open依赖用的是esm规范，所以需要对nrm的依赖open做一下降级操作：&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npm i nrm -g open@8.4.2 --save
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;否则会出现以下这种：&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/efb67987-ed0d-4cc4-ad67-a7e7ecb45e3b&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;处理好以上问题后，正常显示如下：&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/fe718f49-f060-4d58-a01d-fed623cbc88b&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;这里面，nrm给我们做了什么事情呢？其实关键的就是 nrm use的步骤，给我们省去了npm config set registry xxxxxx等一大段的键盘工程，这也是一个简化操作，简化即为效率，OK，这一期的安排就到此结束吧~&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;&lt;em&gt;其他大厂公开源补充：&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. &lt;a href=&quot;https://registry.npmmirror.com/binary.html&quot;&gt;淘宝源（https://registry.npmmirror.com/）&lt;/a&gt;
2. &lt;a href=&quot;https://mirrors.cloud.tencent.com/&quot;&gt;腾讯源（https://mirrors.cloud.tencent.com/npm/）&lt;/a&gt;
3. &lt;a href=&quot;https://mirrors.huaweicloud.com/home&quot;&gt;华为云源（https://repo.huaweicloud.com/repository/npm/）&lt;/a&gt;
4. &lt;a href=&quot;https://mirrors.ustc.edu.cn/help/npm.html&quot;&gt;中科大源（https://npmreg.proxy.ustclug.org/）&lt;/a&gt;
5. &lt;s&gt;&lt;a href=&quot;https://mirrors.tuna.tsinghua.edu.cn/&quot;&gt;清华大学源（npm源已挂，其他源可详看）&lt;/a&gt;&lt;/s&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS：给各位再补录一个坑，如果当前项目下使用了.npmrc文件的话，并且里面配置了默认的registry，那么当前项目下nrm use xxx是无法生效的，他是只会以.npmrc文件中配置的registry为作用使用（因为该配置的方式为最高权限，权重最大）&lt;/strong&gt;&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/7</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/7</guid><pubDate>Sun, 22 Sep 2024 16:58:48 GMT</pubDate><author>adiovo</author></item><item><title>VSCode插件篇 · shalldie.background</title><description>&lt;h4&gt;好久之前就听说了这个插件：&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=shalldie.background&quot;&gt;background&lt;/a&gt;，好久之前就用上了，开始过程真的是各种（赏）幺（心）蛾（悦）子（目）不（巴）断（适），自从不知道哪一个版本后，最大的一两个问题就是：每次更新后，然后重新打开Visual Studio Code时就会在右下角冷冰冰飘来一句：“xxx似乎已损坏，请重新安装”，而作者佬也是&lt;strong&gt;冷冰冰&lt;/strong&gt;的给出了一个比较官方的解决方案：&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/8064e743-0cf3-4c3d-b366-81999c45ca62&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;阿西吧~&lt;/h4&gt;
&lt;h4&gt;好一个：[never show again]... 小弟当场也是......傻眼&lt;/h4&gt;
&lt;h4&gt;很明显，佬这种方式个人感觉是有点治标没治到本的，没办法，强迫症犯了，还是得自己去一顿查，看别人有没有遇到相同的这个问题，巧啊~ 真有人也喜欢这样捣鼓的。这不：&lt;a href=&quot;https://blog.csdn.net/qq_29339467/article/details/104738160&quot;&gt;VSCode提示安装似乎损坏，请重新安装（亲测完美解决）&lt;/a&gt;，就有个&lt;s&gt;倒霉蛋&lt;/s&gt;小可爱也遇到这样的问题了，随自己也跟着这个小可爱的方式走了一波，确实是可行的，但是！这里有个问题，可能是里面有些人一样也试了，但是无效的，自己又捣鼓了一番，测多端（mac、window）都可以适用的方案：&lt;/h4&gt;
&lt;p&gt;安装上文博主提供的插件，无需卸载background插件，ctrl + shift + p 执行 “Fix Checksums：apply” 后重新启动，再次提示“xxx已损坏，请重新安装”，别方，先关掉vscode，再桌面图标右键，管理员（sudo）模式打开，之后就over~
&lt;img src=&quot;https://github.com/user-attachments/assets/70475d41-9688-44d5-8e35-2c1986c96444&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;ol&gt;
&lt;li&gt;先安装&lt;a href=&quot;https://github.com/lehni/vscode-fix-checksums&quot;&gt;Fix VSCode Checksums&lt;/a&gt;；&lt;/li&gt;
&lt;li&gt;第一步完了之后，再以管理员（sudo）模式打开VSCode（macOS用户需要在终端以sudo模式打开...算了，直接给大伙copy吧：&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;&amp;lt;!-- 这段shell在上面的Fix VSCode Checksums链接点进去github官方文档可以看到 --&amp;gt;
sudo &quot;/Applications/Visual Studio Code.app/Contents/MacOS/Electron&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;），然后Ctrl（command）+ Shift + P ， 输入Fix Checksums执行；
3. 右下角会提示需要restart vscode，这时候就可以关掉，然后重新打开就基本OK了&lt;/p&gt;
&lt;h4&gt;这里面其实重要的步骤就是第二步，以管理员模式打开VSCode，再执行命令。再细一点，关键的就是要管理员模式打开vscode，让background有权限去第一次初始化点东西？（否则background内部执行的时候会权限不足，偶尔无法成功，也就导致了部分人走了这个命令但是无效的问题出现了？）&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/3a66a080-95c1-403d-955d-f7b7207b0e0b&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;strong&gt;如果大家安装完之后，并执行了命令还是有问题，别方，再跑一遍上面的步骤，如果还是有问题，那就这样吧（来砍我！）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;PS：background插件/vscode版本更新之后大概率都会出现的提示，重复以上步骤即可解决（个人建议是，先查看该插件是否功能更新还是bug fix更新，若是bug fix更新直接更，若是功能更新请麻烦细看是新增了什么功能再酌情结合自身是否需要新增的功能，若不需要可以考虑直接忽略该插件更新）&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/6</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/6</guid><pubDate>Wed, 18 Sep 2024 12:35:09 GMT</pubDate><author>adiovo</author></item><item><title>node与nvm的约会</title><description>&lt;blockquote&gt;
&lt;p&gt;[!CAUTION]&lt;/p&gt;
&lt;h3&gt;&quot;ExperimentalWarning: The fs.promises API is experimental&quot;&lt;/h3&gt;
&lt;/blockquote&gt;
&lt;h4&gt;喵的一开始查遍资料，发现这个fs.promises玩意从低版本的npm / node编译环境里面就是个未投入生产的接口，而导致此次引发的血案，竟然是因为...&lt;/h4&gt;
&lt;br&gt;
&lt;h6&gt;当前node的环境版本配置确实可能眼花缭乱（至少对于多项目管理或与其他业务公司驻场开发时的版本环境来说），各种不同的版本都有可能需要，无论高低来说都有可能，但新版本的话就不同，很少敢尝试使用最新的版本（主要还是怕埋雷，一不小心就是那个小白鼠...），为此，小弟经常固定几个版本使用：&lt;/h6&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&amp;lt;!-- 常用版本1 --&amp;gt;
node_v12.x@latest：https://registry.npmmirror.com/binary.html?path=node/latest-v12.x/
&amp;lt;!-- 常用版本2：该版本为适应兼容需要高npm依赖库版本而用，目前正转为主力版本使用测试中，截止当前仍是无任何异常，也向下兼容大数版本库（推荐） --&amp;gt;
node_v14.x@latest：https://registry.npmmirror.com/binary.html?path=node/latest-v14.x/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;这时候有人就要说了，唉~那我同时都有需要这两个版本的node环境，那咋整？
别慌，这时候，&lt;a href=&quot;https://github.com/coreybutler/nvm-windows/releases&quot;&gt;他来了&lt;/a&gt;（建议使用安装版，自动适配加入环境变量）！&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;他是干啥作用的呢？他集：
&lt;strong&gt;1、安装切换多版本nodeJs于当前的系统中，提供多项目需要不同node版本；
2、快速便捷的无缝切换所需版本，只需一行命令即可；
3、提供：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&amp;lt;!-- 列出nvm所有命令 --&amp;gt;
1. nvm

&amp;lt;!-- 查看所有的node版本以及当前正在使用的node版本 --&amp;gt;
2. nvm list

&amp;lt;!-- 查看node所有可安装版本 --&amp;gt;
3. nvm list available

&amp;lt;!-- 设置nvm install node镜像地址（例：https://registry.npmmirror.com/node/14.19.1） [！！！截止2022.05.01，经小弟测试使用多轮，目前只支持默认nodejs官方仓库地址下载安装node，也就是说我们可能使用不上这项配置了...小弟估约由于国内大部分镜像仓库都开启了防异常流量的安全网关规则的原因导致此项配置属性几乎已失效，或者也有可能是小弟的食用姿势不对？]--&amp;gt;
4. nvm node_mirror

&amp;lt;!-- 设置npm链接镜像地址（例：https://registry.npmmirror.com/npm/版本号，此条貌似无效果，也有可能我的食用姿势不正确...）[！！！此属性同上node_mirror异常] --&amp;gt;
5. nvm npm_mirror

&amp;lt;!-- 安装指定版本node（例：nvm install 10.16.0）--&amp;gt;
6. nvm install

&amp;lt;!-- 食用指定版本node（例：nvm use 10.16.0）--&amp;gt;
7. nvm use

&amp;lt;!-- 卸载指定node版本（例：nvm uninstall 10.16.0）--&amp;gt;
8. nvm uninstall

&amp;lt;!-- 启 / 禁用node版本管理 --&amp;gt;
9. nvm on / nvm off

&amp;lt;!-- 设置nvm管理的不同版本的node的目录。如果未设置path，将显示当前根目录 --&amp;gt;
10. nvm root path

&amp;lt;!-- 设置用于下载的代理。 将url留空以查看当前代理。将url设置为“none”以删除代理（！！！此配置使用方式过于捣腾，而且同样存在node_mirror/npm_mirror的类似异常情况，不建议再折腾使用） --&amp;gt;
11. nvm proxy url
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以上命令皆已知晓后，便可以下载第二版本node包，下载通常无需再下载安装文件类型的node，只需要解压包即可，例：&lt;a href=&quot;https://registry.npmmirror.com/binary.html?path=node/v16.11.1/&quot;&gt;https://registry.npmmirror.com/binary.html?path=node/v16.11.1/&lt;/a&gt; 进入此页面后：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://github.com/user-attachments/assets/b93aa548-0fce-4009-a227-187496a5da06&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择自己所需对应的node压缩包，下载完成后，解压至刚刚安装nvm的安装根目录下，并将解压出文件夹名称统一为v版本号格式，如下图：
&lt;img src=&quot;https://github.com/user-attachments/assets/5a809195-65bd-47c8-8ff0-2d704d004da8&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;后，执行：nvm list...
&lt;img src=&quot;https://github.com/user-attachments/assets/628e422b-dd37-4c71-a9b3-b8f9cdd142b7&quot; alt=&quot;nvm list 查看当前设备所有node版本与当前设备所使用的版本&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PS：切换版本时需注意，打开终端需以管理员模式打开，否则切换会出现 exit status 1的错误提示！&lt;/strong&gt;
&lt;img src=&quot;https://github.com/user-attachments/assets/17a96016-8801-4157-b174-3c0460049f7c&quot; alt=&quot;image&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h4&gt;回到文章开头（不好意思，是我标题党了...）：&lt;/h4&gt;
&lt;blockquote&gt;
&lt;p&gt;[!CAUTION]
==ExperimentalWarning: The fs.promises API is experimental==&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;其实这一段报错并不会造成多大影响，也不会对已在生产的项目造成威胁，仅仅是个人在项目开发依赖编译启动过程中发现此警告，而追溯的一个原因...&lt;/strong&gt;&lt;/p&gt;
&lt;h4&gt;另扩展一波关于npm全局依赖安装的路径配置及.npmrc相关：&lt;/h4&gt;
&lt;p&gt;1、&lt;a href=&quot;https://moeci.com/posts/%E5%88%86%E7%B1%BB-Web/npm%E4%BF%AE%E6%94%B9%E5%85%A8%E5%B1%80%E5%8C%85%E4%BD%8D%E7%BD%AE/&quot;&gt;&lt;strong&gt;npm修改全局包位置&lt;/strong&gt;&lt;/a&gt;
2、&lt;a href=&quot;https://kaffa.im/config-nodejs-path-in-windows.html&quot;&gt;&lt;strong&gt;Windows 下 Node 的路径配置&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/5</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/5</guid><pubDate>Mon, 09 Sep 2024 02:55:28 GMT</pubDate><author>adiovo</author></item><item><title>“windows-build-tools”的成与败~</title><description>&lt;p&gt;&lt;strong&gt;PS：本文的情况仅发生在Windows的环境中，非Win用户请自行选择食用~&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这几天下来了几个工程，其中有两三个是node项目，对node的食用并不能达到行云流水般的操作，一边啃着文档和相关的学习资料一边跑，然鹅...
刚拉下仓库没多久，准备打上依赖跑一道，就出现了：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;----------------------------- Python ----------------------------- 
Successfully installed Python 2.x/x.x

or

----------------------------- Python ----------------------------- 
Python 2.x.xx is already installed, not installing again.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;还是绿色的~（跟你说是安装成功了的意思）&lt;br&gt;
然后他就在这个位置卡死了...&lt;/p&gt;
&lt;p&gt;到这里，我们先熟悉下这个windows-build-tools（以下简称：wbt）是用来作甚的，那又为何到此就执行不下去了呢？&lt;br&gt;&lt;/p&gt;
&lt;p&gt;1、关于wbt，我个人的理解是算作很底层的一个编译器，而且仅发生在window环境内。
比如进行项目编译时，应用程序构建时，以及我最最最难以接受为啥前端的一个npm install/run build都会涉及到这个玩意...&lt;br&gt;
其实不然，因为这个东西就连&lt;strong&gt;图片压缩&lt;/strong&gt;的时候都会被牵扯进来用作底层的一个依赖库，而这个东西本身并不是在第三方发起，它就在于windows系统的本身提供了这样的一套完整的构建工具，导致产生了wbt这么个npm，玩C的小伙伴应该更熟悉一点，他在windows内部是构建工具链中一个非常关键的一环，没错，他就是C++的Build Tools；&lt;br&gt;
有看我之前的文章的人应该有知道，很多时候装一个npm会出现乱七八糟的问题，其中&lt;a href=&quot;https://juejin.cn/post/7224149297951408185&quot;&gt;pngquant、libpng-dev、windows-build-tools（三个人的电影）&lt;/a&gt;说过这个玩意的难缠点，但是现在回头来看，好像并不能覆盖百分百的成功率，而加上本篇的方案来走，几乎99.99%是没有问题的吧~
好，关于wbt的了解不知道各位有没有一个浅浅的认识（总之，他就是&lt;strong&gt;一个非常非常底层的构建工具，然后被各种前端中间件的作者利用，打通连接到window内C++编译工具的使用或编译链接了C++的原生api&lt;/strong&gt;，大概就是这么回事了吧...&lt;a href=&quot;https://www.npmjs.com/package/windows-build-tools&quot;&gt;官方详细说明&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;2、关于windows安装出现的问题，综合了多篇文章及源码的查看，这个应该是作者写的一个bug。为何如此判断？在install后，各种环境依赖确实也完成了，但是在判断是否安装构建工具成功时的条件属性 BUILD_TOOLS.version 即构建工具版本时，是依据不同的版本里面包含不同的log日志，其中就有关键的：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Closing installer. Return code: 3010.

-----------------或-----------------

Closing installer. Return code: 0.

-----------------或-----------------

Closing the installer with exit code 0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这么三个条件值即可以满足安装成功的条件；&lt;s&gt;下面的两图就是根据条件值检索到的逻辑块，至于后续的一个执行，我理解应该到图二的时候就被stop掉了，导致后续的代码没有被继续执行到；&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1e471216e7c493686ecf17ae5ecd89a~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=3024&amp;amp;h=1548&amp;amp;s=533144&amp;amp;e=png&amp;amp;b=0d1117&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/46b06417c59044e9819a1b52fe89fe43~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=3024&amp;amp;h=1536&amp;amp;s=497739&amp;amp;e=png&amp;amp;b=0e1218&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;但是实际上并非这样，根据该大佬的&lt;a href=&quot;https://github.com/felixrieseberg/windows-build-tools/issues/244#issuecomment-824213136&quot;&gt;解释&lt;/a&gt;
&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/77fdac55342a4a24833261d492882807~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=1848&amp;amp;h=1840&amp;amp;s=520368&amp;amp;e=png&amp;amp;b=0e1116&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
原来，&lt;strong&gt;作者是根据日志文件的内容，来决定里面的判断值是否命中（成功安装所需的环境和依赖）&lt;/strong&gt;，也是泪目了~&lt;/p&gt;
&lt;p&gt;再综合几条文章来看：&lt;br&gt;
1、&lt;a href=&quot;https://stackoverflow.com/questions/66782103/installation-hangs-after-successfully-installed-python-2-7-while-installing-pr&quot;&gt;installation-hangs-after-successfully-installed-python-2-7-while-installing-pr&lt;/a&gt;；&lt;br&gt;
2、&lt;a href=&quot;https://blog.csdn.net/wen673448067/article/details/120407303&quot;&gt;npm安装windows-build-tools时卡在Python 2.7 is already installed, not installing again.&lt;/a&gt;；&lt;br&gt;
3、&lt;a href=&quot;https://blog.csdn.net/m0_54854484/article/details/123257014&quot;&gt;npm install --global --production windows-build-tools卡在Successfully installed Python 2.7不动&lt;/a&gt;；&lt;/p&gt;
&lt;p&gt;以上，前1、2条指向的都是本文阐述的一个比较赞同的原因，而第三条在经过实操并调整简便的操作后一样可以解决：&lt;br&gt;&lt;strong&gt;（推荐！！！）①、在安装前，确认本地是否已安装python，若已安装，可以先卸载本地的python，再：&lt;br&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npm i -g windows-build-tools --registry=https://registry.npmjs.org/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;②、本地若已安装python，可以去系统环境变量中移除掉python的环境变量，再：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;npm i -g windows-build-tools --registry=https://registry.npmjs.org/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;祝：各老板2024万事顺意~&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/4</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/4</guid><pubDate>Sat, 07 Sep 2024 18:51:48 GMT</pubDate><author>adiovo</author></item><item><title>今天聊一下时间里面的setTimeOut or setInterval + .getTime() or .parse()</title><description>&lt;p&gt;这两天搞了点对于时间的精度处理的模块功能，大家一起来看看&lt;s&gt;笑话&lt;/s&gt;吧：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;/**
 *  这是一套关于计算时间差函数的部分代码
 *  而这里注释掉的.getTime()部分，即是这次的入坑案(⊙_⊙)...
 */
 
// 获取当前时间
// let nowDateTime = new Date();
// let nowTime = nowDateTime.getTime();
let nowTime = Date.parse(new Date());

// 获取截止时间
// let endDateTime = new Date(deadline);
// let endTime = endDateTime.getTime();
let endTime = Date.parse(deadline);

// 计算时间差
let leftTime = parseInt(endTime - nowTime);

// 定义天、小时、分钟、秒
let d, h, m, s;
if (leftTime &amp;gt;= 0) {
  d = Math.floor(leftTime / 1000 / 60 / 60 / 24);
  h = Math.floor(leftTime / 1000 / 60 / 60 % 24);
  m = Math.floor(leftTime / 1000 / 60 % 60);
  s = Math.floor(leftTime / 1000 % 60);
} else return &#39;00:00:00&#39;;

// 将0-9的数字前面加上0，例1变为01
d = checkTime(d);
h = checkTime(h);
m = checkTime(m);
s = checkTime(s);

function checkTime(i) {
  return i &amp;lt; 10 ? &quot;0&quot; + i : i;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;好，大家都见笑了，那就解释一下：Date.parse() 与 Date.getTime() 这两兄弟&lt;s&gt;狗东西&lt;/s&gt;，来看他&lt;a href=&quot;https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Date&quot;&gt;家长&lt;/a&gt;是怎么说它们的：&lt;/p&gt;
&lt;h3&gt;.getTime()&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/80aa8722394a4f148c139ce434fb8a80~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.getTime()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/13af923f8d6c46aa9132ede57e6f096d~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.getTime()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;OK，原来这就是一个获取&lt;strong&gt;毫秒级&lt;/strong&gt;时间戳的Date函数：
&lt;img src=&quot;https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/c8b22924acfd4af488ae051b884a78c4~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.getTime() 时间戳&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;再看下一个：&lt;/p&gt;
&lt;h3&gt;.parse()&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b415752fba084e018f145e83601632e3~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.parse()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/47219b3098b342a4b2fe28391beb5104~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.parse()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;好嘛，原来都没差，不都是搞 “&lt;strong&gt;毫秒级&lt;/strong&gt;” 的时间戳函数吗？（&lt;strong&gt;其实当时写的时候是理解有误的，Date.parse()是只能获取到秒级&lt;/strong&gt;）
&lt;img src=&quot;https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/44d3b40b55704c759bbd19e47cbe484d~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.parse()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h3&gt;真的没差吗？&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/386bc614d4ae4e96b5aa56968db8cabc~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;懂？&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/a00df0c169904d0c9c9562b9ce97ce38~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;明白？&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h3&gt;懂？&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;没错！他喵的就是这转换的鬼精度问题，导致在配合食用setTimeOut/setInterval时会发生很微妙的变化，比如：&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;&amp;lt;!-- 此时正常（即.parse()）倒计时显示： --&amp;gt;
02:00
01:59
01:58
01:57
...

&amp;lt;!-- 而高精度（.getTime()）时，你会发现： --&amp;gt;
02:00
01:59
01:57
01:56
01:54
01:53
...
或
02:00
01:58
01:57
01:56
01:55
01:54
...
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;......&lt;/h3&gt;
&lt;p&gt;这他喵的为啥呀...&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;按理来说，我们用高精度 &lt;strong&gt;.getTime()&lt;/strong&gt; 的反而应该才会准确读秒，而低精度的 &lt;strong&gt;.parse()&lt;/strong&gt; 才会异常吧？不！这里刚好恰恰相反。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;上面说到，在配合食用setTimeOut/setInterval时，食用精度高的.getTime()反而会出现跳秒，而精度低的.parse()却正常。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;br&gt;
&lt;h3&gt;由于在网上查找的相关问题的资料甚少，几乎可以说没有相关的记录，下面这一段说明，为小弟反复测试对比而做出的无责任猜想小结论：&lt;/h3&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;strong&gt;setTimeOut/setInterval + .getTime()：setTimeOut/setInterval本身读秒时，并不是以毫秒级时间戳的单位进行推进时间，而是以秒级的时间戳单位，即我们以为的是1652282191590，实际上却是1652282191000，那么他自己本身在定时器的作用下是正常的表现。当.getTime()和他同时在作用处理一段时间的计算差值时，.getTime()的高精度时间戳干扰了setTimeOut/setInterval的低精度时间戳，或者说有可能污染/阻塞了1000-2000毫秒的时间推进，但同时setTimeOut/setInterval的作用还是存在的，只是线程被阻断了1000-2000毫秒，所以，即会出现上面的跳1-2秒状况，最多也只会跳2秒&lt;/strong&gt;&lt;/h4&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;h4&gt;&lt;strong&gt;setTimeOut/setInterval + .parse()：前者说setTimeOut/setInterval本身读秒时，并不是以毫秒级时间戳的单位进行推进时间，而是以秒级的时间戳单位，即我们以为的是1652282191590，实际上却是1652282191000。所以，在.parse()的搭配使用时，.parse()的时间精度同样也是1652282191000低时间精度，故与定时器的时间推进率相吻合，不会出现跳秒的异常情况。&lt;/strong&gt;&lt;/h4&gt;
&lt;/blockquote&gt;
&lt;h5&gt;说到这里，开始反思之前在项目上不少用了.getTime()...不过，并不是跟此业务一样搭配了setTimeOut/setInterval去写的...&lt;/h5&gt;
&lt;br&gt;
&lt;p&gt;&lt;strong&gt;港真，多少还是有点加深了毫秒级时间戳的一个处理方案，注重使用场景，那此次的掉坑案来说也长进了对DateObj的印象，但也是万万没想到竟会出现这种...小弟猜测这估计是JavaScript的一个bug，在setTimeOut/setInterval中，不应该是以低精度的时间戳去推进时间的，而是以绝对的高精度去推进才更佳吧...至少从目前普遍对时间对象的扩展使用来说...&lt;/strong&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h6&gt;扩展多一个：.valueOf() 也是个获取&lt;strong&gt;毫秒级&lt;/strong&gt;时间戳（&lt;strong&gt;高精度&lt;/strong&gt;）...&lt;/h6&gt;
&lt;p&gt;&lt;img src=&quot;https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/15d19e2cd0a54003bd1938a4e826c40b~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;...&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/caabb1e6abe14fd6b1586f24fdcce882~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.valueOf()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/fcccf934615a4e50a23e4209e48f2188~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;.valueOf()&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;好了，就都散了吧o(╥﹏╥)o...&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/3</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/3</guid><pubDate>Fri, 06 Sep 2024 02:16:47 GMT</pubDate><author>adiovo</author></item><item><title>说一下安装依赖包时所遇到常见问题的快速处理方式</title><description>&lt;h4&gt;在新项目或者设备未曾配置过node/node-sass安装源及代理源时，直接执行npm install可能会出现一堆乱七八糟的报错，那这篇文章希望能带来对应的解决方案：&lt;/h4&gt;
&lt;h5&gt;&lt;strong&gt;1. python 未安装导致：&lt;/strong&gt;&lt;/h5&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;&amp;lt;!-- 提示xxx could not find &quot;python&quot;. checking python launcher xxx...
或xxx could not find &quot;python&quot;. guessing location xxx...
或xxx Can&#39;t find Python executable &quot;python&quot;, you can set the PYTHON env variable. xxx...等等
只要提示说无法找到python相关的时候，那就是当前缺少python的环境变量，那很简单：--&amp;gt;

先搞一手Python（看同时看终端输出是否缺少python环境，缺少的是多少版本，然后对症下药）：
https://registry.npmmirror.com/binary.html?path=python/2.7.9/

安装完成之后，删除package-lock.json文件，并执行:
npm cache clean --force

OK~，别急~，往下看 ↓ ↓ ↓
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;可能这一顿操作之后，你想尝试npm install一波，果然！又会出现其他乱七八糟的鬼，那...&lt;/p&gt;
&lt;h5&gt;&lt;strong&gt;2. npm ERR! xxxx node_modules\node-sass... xxx sh*ft !!&lt;/strong&gt;&lt;/h5&gt;
&lt;p&gt;遇到这种情况，别慌：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;1、先单独设置一波npm registry的国内镜像代理源：
&amp;lt;!-- 此方式为永久切换镜像代理源，后续若要需要切换回官方代理源，可以看下面Tips.内容。通常来说都无需切换回去，除非机子上挂有V*N代理可以直接使用官方源down下依赖库，或采用下面的临时源使用方式①② --&amp;gt;
npm config set registry https://registry.npmmirror.com

&amp;lt;!-- ①、临时使用方式 项目根目录式install --&amp;gt;
npm --registry https://registry.npmmirror.com install
&amp;lt;!-- ②、临时使用方式 单独针对某个库install --&amp;gt;
npm --registry https://registry.npmmirror.com install node-sass@x.xx.xx

2、再设置一波node-sass的国内镜像代理源：
# npm config set sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass
npm config set sass_binary_site https://registry.npmmirror.com/-/binary/node-sass

3、删除package-lock.json文件，并执行:
npm cache clean --force

OK~
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;到这里可能又有人顶不住了，我要：npm i ！！！
别急~，你可能执行了，又出现：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;事故1：“xxx\node_modules\node-sass\build\binding.sln”（默认目标）（1）-&amp;gt; ||  “xxx\node_modules\node-sass\build\binding.vcxproj.metaproj”（默认目标）（2）-&amp;gt; ||  “xxx\node_modules\node-sass\build\binding.vcxproj”（默认目标）（4）

事故2：文件无效或损坏: 无法在 0x353D17 处读取 [D:\admin\node_modules\node-sass\build\binding.vcxproj]

事故3：error MSB4019：未找到导入的项目“x:\Microsoft.Cpp.Default.props”。请确认&amp;lt;Import&amp;gt;声明中的路径正确，且磁盘上存在该文件。
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/28ed1c40b42b4a03991b89df73ac4734~tplv-k3u1fbpfcp-watermark.image#?w=2560&amp;amp;h=1539&amp;amp;s=354278&amp;amp;e=png&amp;amp;b=0c0c0c&quot; alt=&quot;事故1&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ca4603d2e5634bf082aa6f9008e72ac5~tplv-k3u1fbpfcp-watermark.image#?w=2560&amp;amp;h=1539&amp;amp;s=303722&amp;amp;e=png&amp;amp;b=0d0d0d&quot; alt=&quot;事故1&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/e9160ab30f2144e4add0bb6867fe9c02~tplv-k3u1fbpfcp-watermark.image#?w=2560&amp;amp;h=1539&amp;amp;s=361929&amp;amp;e=png&amp;amp;b=0d0d0d&quot; alt=&quot;事故1&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/f1fd16635436493cb7c0c9c3ea92dcb3~tplv-k3u1fbpfcp-watermark.image#?w=2560&amp;amp;h=1539&amp;amp;s=355519&amp;amp;e=png&amp;amp;b=0c0c0c&quot; alt=&quot;事故2&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;img src=&quot;https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/b33384c08827453db1007095a30d5af0~tplv-k3u1fbpfcp-watermark.image#?w=2560&amp;amp;h=1539&amp;amp;s=392394&amp;amp;e=png&amp;amp;b=0c0c0c&quot; alt=&quot;事故3&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
......&lt;/p&gt;
&lt;p&gt;等等以上事故的，看下这个图：
&lt;img src=&quot;https://p9-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/eac7d8c080ce4325a04f16479a81cad9~tplv-k3u1fbpfcp-watermark.image#?w=1920&amp;amp;h=902&amp;amp;s=113925&amp;amp;e=png&amp;amp;b=0e1218&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;strong&gt;靠！&lt;/strong&gt; 一顿操作发现居然是被占用搞了个不完整错误的node-gyp依赖包，导致这一堆的什么鬼...&lt;br&gt;
废话少说，直冲C盘用户根目录下找到隐藏文件夹.node-gyp，选中，shift + del，再见~ &lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;至此，基本该出现该排查的都在以上步骤出现了，那你可以：npm install 了~&lt;/strong&gt;&lt;/p&gt;
&lt;h5&gt;&lt;em&gt;（其实这里面并非玄学的东西或者说运气，而是自己的环境问题导致，又或者侥幸你以为的执行了一半的，就Ctrl+C给人家取消掉了，那这时候就是后面尿性事件的开端...就是一步错，全盘崩的情况，只有一步步重新来，并且重新开始前，把之前拉的东西记得一定清理完整，然后再以步骤走一遍）&lt;/em&gt;&lt;/h5&gt;
&lt;br&gt;
&lt;h5&gt;&lt;strong&gt;Tips. 再扩展一波相关的命令&lt;/strong&gt;&lt;/h5&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt; &amp;lt;!-- npm 抽风或者有些包没法正常down下来，或者需要代理靠*墙来down的，那就需要认真看下这一条的内容咯 --&amp;gt;

// 临时使用 例：
npm --registry https://registry.npmmirror.com install node-sass

// 永久使用
npm config set registry https://registry.npmmirror.com

// 使用CNPM（实质npm走的还是本身registry，而cnpm走的则为代理）
npm install -g cnpm --registry=https://registry.npmmirror.com

// 重置回官方源
npm config set registry https://registry.npmjs.org
&lt;/code&gt;&lt;/pre&gt;
</description><link>https://github.com/adiovo/blogs/issues/2</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/2</guid><pubDate>Wed, 04 Sep 2024 17:28:12 GMT</pubDate><author>adiovo</author></item><item><title>pngquant、libpng-dev、windows-build-tools（三个人的电影）</title><description>&lt;p&gt;此次事件的开端是由安装新依赖：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;imagemin-pngquant
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;上面依赖基于：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;pngquant-bin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后又搞出了个：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;libpng-dev
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后拖家带口出：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;windows-build-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;s&gt;MD，全家都是沙雕玩意...&lt;/s&gt;&lt;/p&gt;
&lt;p&gt;这一系列连锁反应牵引而出，经过一般苦战，算是摸清了这全家桶的安装模式流程及各个相关依赖的安装方式，同时这个问题可能仅出现在Window环境的兄弟们，其他的平台要是同样亦出现该情况，可以尝试按照本文的解决方案来走下试试...&lt;/p&gt;
&lt;p&gt;别的不说，开捶！&lt;/p&gt;
&lt;p&gt;先上个图：&lt;br&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/496e7894e8774db2bc582e12d4fdf452~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;p&gt;看到这个一串红的人都傻了...
不过，别慌，先来看一串错误：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;Error: pngquant failed to build, make sure that libpng-dev is installed
at Promise.all.then.arr (W:\WorkSpace\WxApp\WePY\Auditor\node_modules\bin-build\node_modules\execa\index.js:231:11)
at process._tickCallback (internal/process/next_tick.js:68:7)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这里一段可以看出当前&#39;pngquant&#39;依赖并非无法安装，而是缺少一个叫&#39;libpng-dev&#39;的东西来构建安装&#39;pngquant&#39;，所以导致安装程序执行抛出了红色...&lt;/p&gt;
&lt;p&gt;那么这个 &lt;strong&gt;libpng-dev&lt;/strong&gt; 又是啥玩意呢？他该怎么安装呢？&lt;/p&gt;
&lt;p&gt;首先：&lt;br&gt;
1、libpng-dev：它是图片压缩工具pngquant这个依赖包必备的一个基础二进制可执行程序.exe文件，用来构建成pngquant依赖包的，通常开发及普通都基本用不上，但是不排除部分&lt;s&gt;沙雕项目或者接盘过来的&lt;/s&gt;...咳咳，说远了，总之，它就是一个必备的基础依赖文件；&lt;br&gt;
2、有人会说，那安装一下 libpng-dev 不就万事大吉了吗？那你看图：
&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9cf8840c52014495811db39871c7b2c1~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;
&lt;br&gt;
怎么说？绝望么？压根就没有这个包给你下哦~&lt;/p&gt;
&lt;p&gt;在经过一番折腾之后，查阅了些许资料，又被引导至一个叫 &lt;strong&gt;windows-build-tools&lt;/strong&gt; 的东西上面去了，先看下相关资料的说明好吧？&lt;/p&gt;
&lt;h2&gt;相关资料查阅：&lt;/h2&gt;
&lt;p&gt;1、&lt;a href=&quot;https://www.baobangdong.cn/resolve-pngquant-install-failed/&quot;&gt;一次 node_modules 安装失败的排查之旅&lt;/a&gt; （这个同仁他排查的问题点基本是在网络上面，而我的排查过程发现并不存在这方面的问题，文章里面他有详细写到，关于 &lt;strong&gt;pngquant-bin&lt;/strong&gt; 这个依赖包一系列执行过程及同 &lt;strong&gt;libpng-dev&lt;/strong&gt; 的底层连接源码剖析部分，而我缺失的也并不在这一块，但是所说的执行流程确实是这么个意思）&lt;/p&gt;
&lt;p&gt;2、&lt;a href=&quot;https://github.com/imagemin/imagemin-pngquant/issues/46&quot;&gt;npm install is broken by pngquant-bin dependency #46（imagemin-pngquant GitHub官方的问题帖下有位外国友人贴出来说：看下图）&lt;/a&gt;
&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/bb58313b463f47d19cca741c633c6625~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install imagemin-pngquant@5.0.1 --save
npm install pngquant-bin@3.1.1 --save```
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;（虽然但是，就不再浪费兄弟们的时间去试了，这个坑我帮在座的各位已经踩完了，压根就不是版本或者加了 pngquant-bin 这个依赖去安装的原因，至少对我这边来说绝不是...同时这几个：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/imagemin/imagemin-pngquant/issues/46&quot;&gt;①、issues #46&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/51278961/reactjs-pngquant-failed-to-build-make-sure-that-libpng-dev-is-installed&quot;&gt;②、ReactJS: Pngquant failed to build, make sure that libpng-dev is installed&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://stackoverflow.com/questions/49308545/error-with-npm-update-pngquant-binary-does-not-seem-to-work-correctly&quot;&gt;③、Error with npm update: pngquant binary does not seem to work correctly&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;他们在说的所有相关问题都不用再去浪费时间看了，都帮家人们试过了...o(╥﹏╥)o）&lt;/p&gt;
&lt;br&gt;
&lt;h2&gt;最后，我他喵终于发现了盲点：&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.techgrow.cn/posts/b53b9a77.html&quot;&gt;1、解决 Windows 系统使用 NPM 时遇到的各种问题&lt;/a&gt;&lt;br&gt;
&lt;a href=&quot;https://blog.csdn.net/qq_44985319/article/details/122329241&quot;&gt;2、pngquant failed to build, make sure that libpng-dev is installed 问题&lt;/a&gt; 以及&lt;br&gt;
&lt;a href=&quot;https://zhuanlan.zhihu.com/p/415696317&quot;&gt;3、pngquant failed to build, make sure that libpng-dev is installed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;~这几篇文章后，发现一个叫 windows-build-tools 的东西要装，直接：&lt;br&gt;
&lt;strong&gt;（切记！切记！切记！在此操作之前，检查一遍设备的代理‘VxN是否挂载、网络是否顺畅’，因为他可能会连接海外服务器，及下载几个G的文件）&lt;/strong&gt;~&lt;/p&gt;
&lt;br&gt;
&lt;h3&gt;打住，打住，此处更新一波，更新时间：2023.11.07，关于这个windows-build-tools的安装过程，并非如此简单，需要详看：来执行本文的后续操作，或者无需其他操作...&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.baidu.com/&quot;&gt;点我跳转查看该处理方式&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm install -g windows-build-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行之后，终端显示出绿色的：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;----------------------------- Python ----------------------------- 
Successfully installed Python 2.7/x.x
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;时，&lt;strong&gt;他就会卡在那里，但你先不要急着 Ctrl+C&amp;amp;Y，再等个一分钟，然后再 Ctrl+C&amp;amp;Y&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;此时按电脑Win键，你可能会看到：&lt;br&gt;
&lt;img src=&quot;https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/9b126a89d7eb4053bd86af27db613550~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h2&gt;没错！这就是到成功路上99.99%进度的标识啦~！&lt;/h2&gt;
&lt;p&gt;然后，回去再重新执行：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm i imagemin-pngquant
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/671191ac20134615ac6282b7e7b3b8bd~tplv-k3u1fbpfcp-watermark.image?&quot; alt=&quot;image.png&quot; referrerpolicy=&quot;no-referrer&quot;&gt;&lt;/p&gt;
&lt;h2&gt;开饭，上菜！&lt;/h2&gt;
&lt;p&gt;其实有人会发现，这个中间人 libpng-dev 同样也装好了？&lt;br&gt;&lt;/p&gt;
&lt;p&gt;是的没错！在执行 &lt;em&gt;npm install -g windows-build-tools&lt;/em&gt; 时，一并给安装上了，并且 libpng-dev 依赖所需的构建/执行支持就是 windows-build-tools 这个鬼东西提供，也就是说，这里面 pngquant-bin 也好、imagemin-pngquant 也罢，大多数的问题点，都基本浮动该依赖的基础上，所以把这个安装好了，其相关的也能好装很多~&lt;/p&gt;
&lt;p&gt;PS：个人建议文中的几个依赖&lt;br&gt;
1、imagemin-pngquant&lt;br&gt;
2、pngquant-bin&lt;br&gt;
3、libpng-dev&lt;br&gt;
全部给扔进.gitignore忽略列表去（但这样子做是真的很鸡肋~最好的做法还是少用这几个玩意为妙，至此也是：听我说，谢谢你，因为有你，~wepy~），避免全员踩坑！&lt;/p&gt;
</description><link>https://github.com/adiovo/blogs/issues/1</link><guid isPermaLink="false">https://github.com/adiovo/blogs/issues/1</guid><pubDate>Sat, 31 Aug 2024 22:46:39 GMT</pubDate><author>adiovo</author></item></channel></rss>