<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://yingang.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://yingang.github.io/" rel="alternate" type="text/html" /><updated>2025-10-27T03:04:11+00:00</updated><id>https://yingang.github.io/feed.xml</id><title type="html">YG 的零碎笔记</title><subtitle>Love to read, love to code~</subtitle><entry><title type="html">MacOS 新手上路</title><link href="https://yingang.github.io/mac/2025/10/02/new-mac-user.html" rel="alternate" type="text/html" title="MacOS 新手上路" /><published>2025-10-02T08:24:00+00:00</published><updated>2025-10-02T08:24:00+00:00</updated><id>https://yingang.github.io/mac/2025/10/02/new-mac-user</id><content type="html" xml:base="https://yingang.github.io/mac/2025/10/02/new-mac-user.html"><![CDATA[<p>家里唯一一台 Windows 笔记本服役已经超过十年，还是决定在海鲜市场出掉了，这样才能把基本闲置的 Mac mini 4 给用起来，过程中碰到不少问题，找个地方记录下。</p>

<h3 id="键鼠操作">键鼠操作</h3>

<p>因为日常工作还是基于 Windows 环境，所以实在没法接受在两种鼠标键盘操作习惯中来回切换。</p>

<ol>
  <li>
    <p>Ctrl 和 Command 按键的对调。</p>

    <p>具体位置：系统设置 -&gt; 键盘 -&gt; 键盘快捷键 -&gt; 修饰键 -&gt; 选择键盘，然后把 Ctrl 和 Command 的作用分别改为对方就好了，这个是在<a href="https://zhuanlan.zhihu.com/p/613878115">这里</a>学到的。</p>

    <p>同时带来一个后果，本来还算顺手的 Command + Tab 也得改到左边用 Ctrl + Tab 了，两害相权取其轻吧。</p>
  </li>
  <li>
    <p>鼠标的滚动方向。</p>

    <p>具体位置：系统设置 -&gt; 鼠标 -&gt; 自然滚动，取消掉就好了。</p>
  </li>
</ol>

<h3 id="办公软件">办公软件</h3>

<ol>
  <li>
    <p>WORD 和 Excel 文件编辑，免费的 <a href="https://zh-hant.wps.com/download/">WPS Office</a> 就足够了，不需要微软的 Office 套件。</p>
  </li>
  <li>
    <p>压缩文件的处理，7z 似乎没有 Mac 版，没找到合适的替代软件，但无意中发现 WPS 居然还支持 .rar 等压缩文件的解压，令人欣喜的不务正业。</p>

    <blockquote>
      <p>后来发现有个叫 Keka 的软件口碑不错，其<a href="https://www.keka.io/zh-cn/">官网</a>上直接可下载，不一定要去 App Store 下载付费版本。</p>
    </blockquote>
  </li>
  <li>
    <p>系统自带的图书应用对 EPUB 格式的处理很好，至少比之前用过的 SumatraPDF 和微信读书都要好，果然基因不一样。</p>
  </li>
</ol>

<h3 id="影音娱乐">影音娱乐</h3>

<ol>
  <li>
    <p>文件夹下的照片浏览，相比较在 Windows 上用自带的软件就挺方便，Mac 上目前有两个方法，但加一起也只能算是勉强可用吧：</p>

    <ul>
      <li>选中所有想要浏览的照片，双击，就可以在“预览”应用中浏览了。不那么方便，但要同时查看 EXIF 信息的话似乎只能这么操作。</li>
      <li>在任意一张照片上按住空格键别松开，就可以同时用方向键进行浏览了。有点费手，但还算方便，只是又看不了 EXIF 信息了。附带的好处是不止能浏览照片，文档也是可以的！另外感觉这个操作方式就是个 hack，如果是在网格显示方式下，都没法顺序浏览，只能左右来回移，所谓所移即所见。。。</li>
    </ul>
  </li>
  <li>
    <p>本地视频播放，一直在 Mac 上使用的 <a href="https://iina.io/">IINA</a>，最近才发现不支持 Dolby Vision，后面得注意下，另外也在<a href="https://www.zhihu.com/question/470187352/answer/3418773337">这里</a>学习到一招，直接在 IINA 里调节色调也能将就看，但因为是个全局的设定，感觉也不够好用。</p>
  </li>
</ol>

<h3 id="开发套件">开发套件</h3>

<ol>
  <li>
    <p>想要从终端直接运行 <code class="language-plaintext highlighter-rouge">code</code> 来启动 VS Code，需要先在 VS Code 里执行：<code class="language-plaintext highlighter-rouge">Shell Command: Install ‘code’ command in PATH</code>，这个是从<a href="https://zhuanlan.zhihu.com/p/642745004">这里</a>学到的。</p>
  </li>
  <li>
    <p>想要中断终端里的程序执行，<code class="language-plaintext highlighter-rouge">Command + .</code>。</p>
  </li>
</ol>

<h3 id="互联互通">互联互通</h3>

<ol>
  <li>
    <p>网络文件共享，主要用来在家里的电视或其他设备上访问电脑里的视频文件。</p>

    <p>具体位置：系统设置 -&gt; 通用 -&gt; 共享 -&gt; 文件共享，可以按需添加想要共享的文件夹。</p>

    <p>需要注意在同一个地方的“选项”里，针对“Windows文件共享”进行设置。</p>

    <p>然后因为我的 Mac mini 是外接了一个移动硬盘，网络共享里默认是看不到上面的共享文件夹的，需要在“系统设置 -&gt; 隐私与安全性 -&gt; 完全磁盘访问权限”中允许 <code class="language-plaintext highlighter-rouge">smbd</code>，这个是从<a href="https://apple.stackexchange.com/questions/472836/how-to-share-a-folder-stored-on-an-external-usb-drive">这里</a>学到的。</p>
  </li>
  <li>
    <p>BT 下载，之前在 Windows 下用的 qBittorrent 也有 Mac 版，继续用就好了。</p>
  </li>
  <li>
    <p>MTP 传输，先是装了 Commander One，结果没几天发现收费版本才能用到相关的功能，只好先装 Homebrew（参照<a href="https://blog.csdn.net/weixin_63310665/article/details/143313410">这里</a>用下面的命令安装的，也设置了国内的源），再安装里面的 Android 文件传输（<code class="language-plaintext highlighter-rouge">brew install --cask android-file-transfer</code>）。</p>

    <div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
</code></pre></div>    </div>
  </li>
</ol>

<h3 id="还没搞定的问题">还没搞定的问题</h3>

<ol>
  <li>
    <p>外接硬盘的文件系统格式</p>

    <p>默认用了 exFat，但会有一个问题是在比如 VS Code 下，编辑任何文件都会生成 <code class="language-plaintext highlighter-rouge">._</code> 开头的文件，<a href="https://www.zhihu.com/question/398260618/answer/3143436699">据说</a>也不是备份文件。考虑下要不要换成 APFS，还不确定 Windows 的可操作性怎么样。</p>
  </li>
  <li>
    <p>GitHub 访问不畅</p>

    <p>之前在 Windows 下一直用的 fastgithub 不好使了，运行就报错，暂时没找到解决方法。</p>
  </li>
</ol>]]></content><author><name></name></author><category term="mac" /><summary type="html"><![CDATA[家里唯一一台 Windows 笔记本服役已经超过十年，还是决定在海鲜市场出掉了，这样才能把基本闲置的 Mac mini 4 给用起来，过程中碰到不少问题，找个地方记录下。]]></summary></entry><entry><title type="html">用 Python 处理 Windows 上的离线文件</title><link href="https://yingang.github.io/python/windows/2025/01/10/offline-file-hanlding-in-python.html" rel="alternate" type="text/html" title="用 Python 处理 Windows 上的离线文件" /><published>2025-01-10T11:38:00+00:00</published><updated>2025-01-10T11:38:00+00:00</updated><id>https://yingang.github.io/python/windows/2025/01/10/offline-file-hanlding-in-python</id><content type="html" xml:base="https://yingang.github.io/python/windows/2025/01/10/offline-file-hanlding-in-python.html"><![CDATA[<h2 id="什么是离线文件">什么是离线文件</h2>

<ul>
  <li>文件图标左下角有个灰色的小叉（Windows 10，不知道 11 上的效果有没有差别）：</li>
</ul>

<p><img src="/images/offline_file_icon.png" alt="" /></p>

<ul>
  <li>
    <p>如果查看这个文件的属性，会看到其实际占用空间远小于文件大小：</p>

    <p><img src="/images/offline_file_size.png" alt="" /></p>
  </li>
  <li>
    <p>如果用 <code class="language-plaintext highlighter-rouge">attrib.exe</code> 查看文件的属性，结果输出里会有一个大写的 <code class="language-plaintext highlighter-rouge">O</code>。</p>
  </li>
</ul>

<h2 id="背景">背景</h2>

<ul>
  <li>个人有习惯定期将本地的文件同步到文件服务器上。</li>
  <li>但公司的文件服务器会定期将不常访问的大文件归档到冷存储上，这时文件图标上就会有个灰色小叉了（我下线了，别来找我！）。</li>
  <li>离线状态不会在访问文件的时候自动解除，应该是要走什么流程申请下才行，没试过。</li>
  <li>如果文件服务器上的文件被归档而处于离线状态，就会导致：
    <ul>
      <li>往服务器的同步可能会报错：
        <ul>
          <li>我之前用 SyncToy <a href="https://yingang.github.io/software/2021/12/10/an-accident-in-file-sync.html">翻过车</a>，离线的文件会被认为不存在了。</li>
          <li>后来改用了 <a href="https://freefilesync.org/">FreeFileSync</a>，至少可以正常同步。</li>
        </ul>
      </li>
      <li>从服务器的下载也会报错，这个会影响到多个机器之间通过文件服务器的同步，比如最近准备更换工作电脑就碰到这个问题。</li>
    </ul>
  </li>
</ul>

<h2 id="想要解决的问题">想要解决的问题</h2>

<p>既然决定不了文件服务器的归档行为，就想要能够比较方便的删除掉文件服务器上被归档的文件，并且重新从本地将原始文件同步上去。</p>

<h2 id="python-上场">Python 上场</h2>

<h3 id="检查是否离线文件">检查是否离线文件</h3>

<p>知道这种文件叫离线文件就已经离成功不远了：</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">os.stat()</code> 可以拿到文件的属性。</li>
  <li>根据<a href="https://docs.python.org/3/library/stat.html">这里</a>的说明，可以对文件属性的 <code class="language-plaintext highlighter-rouge">st_file_attributes</code> 检查是否 <code class="language-plaintext highlighter-rouge">stat.FILE_ATTRIBUTE_OFFLINE</code> 已置位。</li>
</ul>

<h3 id="删除离线文件">删除离线文件</h3>

<ul>
  <li>直接用 <code class="language-plaintext highlighter-rouge">os.remove()</code> 删除不了（已经是管理员权限的命令行窗口），但直接在 Windows 桌面或者在命令行窗口里用 del 命令又都是可以删除掉的，奇怪了。</li>
  <li>上网查有什么 <code class="language-plaintext highlighter-rouge">os.remove()</code> 的替代品，找到了 <code class="language-plaintext highlighter-rouge">os.unlink()</code>，但按网上普遍的说法，这两个在 Windows 上其实没区别。</li>
  <li>死马当活马医，试试看不会死，但。。。居然删除掉了！</li>
</ul>

<h3 id="同步缺失的文件">同步缺失的文件</h3>

<ul>
  <li>这个没啥好说了，写个可以递归调用的方法，在里面用 <code class="language-plaintext highlighter-rouge">os.listdir()</code> 遍历源路径，并根据遍历结果是文件还是目录区分处理就行（文件检查是否需要拷贝，目录就直接递归）。</li>
</ul>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="python" /><category term="windows" /><summary type="html"><![CDATA[什么是离线文件]]></summary></entry><entry><title type="html">联想 ThinkBook 14+ 2024 款锐龙版与戴尔 U2723QX 的不对付</title><link href="https://yingang.github.io/laptop/lenovo/2024/11/07/lenovo-thinkbook-14+-with-dell-u2723qx.html" rel="alternate" type="text/html" title="联想 ThinkBook 14+ 2024 款锐龙版与戴尔 U2723QX 的不对付" /><published>2024-11-07T14:39:00+00:00</published><updated>2024-11-07T14:39:00+00:00</updated><id>https://yingang.github.io/laptop/lenovo/2024/11/07/lenovo-thinkbook-14+-with-dell-u2723qx</id><content type="html" xml:base="https://yingang.github.io/laptop/lenovo/2024/11/07/lenovo-thinkbook-14+-with-dell-u2723qx.html"><![CDATA[<p>在双十一和国补的加持下，准备淘汰掉家里10年前的老笔记本，左挑右选，入手了联想 ThinkBook 14+ 2024 款锐龙版（AMD YES!），其实整体感觉还不错，但碰到一个诡异的问题，记录一下吧。</p>

<p>将电脑通过 USB-C 接口与家里的戴尔 U2723QX 显示器连接，显示器不显示，而且菜单像是死机了一样，无法做任何操作，而电脑端看上去像是正常检测到了显示器，除了可以从显示器供电，也能看到显示器的型号啥的，鼠标操作也是能感觉到外接显示器是在的（比如在扩展模式下的鼠标可移动范围），但显示器上就是啥没都有。</p>

<p>同一个显示器，试过家里其他的笔记本（长期使用的 M1 款的 MBP，以及工作用的惠普 ProBook 430 G7，都是 USB-C 连接），都能正常显示，所以感觉像是联想笔记本的问题。</p>

<p>第一天，应该先是网上搜索了下，看到有人说的一些方法（断开所有外部连接，进入 BIOS，临时禁用电池，然后常按开机键一段时间，再重新接上 USB-C），试了下没有效果。后来电话联系了客服，给了个地址，让下载安装显卡驱动试试，因为这个笔记本10月才出厂的，所以显卡驱动已经是那个版本了，装了也就没有效果了。</p>

<p>第二天，微信上联系的在线技术支持，确认我干过的事情后，建议将系统里的设备加密（应该就是 Bitlocker）关掉再试试断电大法，晚上回家试了下，仍然没有效果。然后网上也看了一些帖子，各种加强版本的断电大法都尝试了下（比如显示器那一端的线也要拨掉，甚至整个断电之类的），仍然没有效果。</p>

<p>第三天，直接带着新电脑上班，继续微信上联系在线技术支持，这次是让更新下 AMD 官网上的最新显卡驱动（之前第一天那个是联想官网上，稍微没那么新），装完后直接在公司同事的显示器（也是戴尔，型号是 P2723QE，也用 USB-C 连接）上试了下，居然可以正常显示！但晚上回到家继续试家里的 U2723QX 还是不行，郁闷了。</p>

<p>第四天，继续微信上联系在线技术支持，说可能硬件或接口哪里有问题了，建议直接换货试试，我问还有没有什么招可以试，反馈说可以试着还原下系统。于是白天在公司抽空试了下，还原后还是可以正常连接同事的显示器，但看显卡驱动版本又没变（系统还原不还原驱动程序的？），就手工卸载并重装了联想官网稍微旧一点的那个驱动，仍然可以正常显示，但回到家就不行了。看来昨天试的结果是有问题的，显卡驱动升级没产生任何效果（行的一直行，不行的一直不行）。晚上有点怀疑是不是家里的显示器哪里有问题，就上戴尔官网找到了显卡的<a href="https://www.dell.com/support/home/zh-cn/product-support/product/u2723qx-monitor/drivers">固件升级</a>，两个版本都试了下（人生第一次给显示器升级固件！需要通过 USB-C 连接才行），依然没有效果。另外也详细对比了 U2723QX 和 P2723QE 的参数，没发现什么明显差异。</p>

<p>第五天，从公司带了个华为的笔记本（G540 Gen2）试了下，不出意外，也是可以和家里的显示器配合工作的。不知道还能怎么试了，换货的话担心换过来的还会是一样的问题（不太相信自己运气这么好正好挑到一个有问题的笔记本），所以想想还是直接退货吧，哎，折腾快一周，回到原点。</p>

<p>总结下问题现象：</p>
<ul>
  <li>家里的戴尔 U2723QX 显示器，可以通过 USB-C 与手上能拿到的苹果、惠普、华为这三个品牌的笔记本一起工作，但就是与新买的 Thinkbook 14+ 2024 款锐龙版 配合不起来，从这个角度看，不像是显示器的问题。</li>
  <li>但这个新买的 Thinkbook 14+  2024 款锐龙版又可以通过 USB-C 与公司的戴尔 P2723QE 显示器配合工作（样本有限，没有更多显示器可以试了，大部分只有 HDMI 接口），从这个角度看，又不完全像是笔记本的问题。</li>
  <li>家里显示器不显示的时候，菜单像是死了一样，感觉像是协议角度和电脑的握手没握上。</li>
</ul>

<p>最后，下次换新笔记本，先别折腾电脑里的系统和软件啥的，第一个先试能不能 USB-C 连接显示器！</p>

<hr />

<p>2024/12/29 更新：</p>
<ul>
  <li>近两个月后赶在国补过期前，再次勇敢地尝试下了一单，结果还是一样的现象，虽然中间 AMD 官网的驱动又有一次更新，但依然没有效果，最后还是直接退货了，哎。</li>
  <li>这次在网上搜索到<a href="https://answers.microsoft.com/zh-hans/windows/forum/all/win11%E7%AC%94%E8%AE%B0%E6%9C%AC%E5%A4%96%E6%8E%A5/64f8c4ef-bd27-4309-ae71-1fd5e9d8b9f0">这个帖子</a>，看上去有点相像，但也没有解决方案。</li>
  <li>新电脑关机再开机时，Lenovo 的 Logo 还是可以在外接屏上正常显示的，但开始进入 Windows 后，外接屏就啥也不显示了。</li>
</ul>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="laptop" /><category term="lenovo" /><summary type="html"><![CDATA[在双十一和国补的加持下，准备淘汰掉家里10年前的老笔记本，左挑右选，入手了联想 ThinkBook 14+ 2024 款锐龙版（AMD YES!），其实整体感觉还不错，但碰到一个诡异的问题，记录一下吧。]]></summary></entry><entry><title type="html">Computer Organization and Design: THE HARDWARE / SOFTWARE INTERFACE</title><link href="https://yingang.github.io/book/2024/09/11/computer-organization-and-design-books.html" rel="alternate" type="text/html" title="Computer Organization and Design: THE HARDWARE / SOFTWARE INTERFACE" /><published>2024-09-11T11:44:00+00:00</published><updated>2024-09-11T11:44:00+00:00</updated><id>https://yingang.github.io/book/2024/09/11/computer-organization-and-design-books</id><content type="html" xml:base="https://yingang.github.io/book/2024/09/11/computer-organization-and-design-books.html"><![CDATA[<p>2018 年出版的 RISC-V Edition，应该同时还有 ARMv8 版和 MIPS 版，但在该书籍的整个系列中，同属于第 5 个版本，前言里也说自己是第 5 版。</p>

<p><img src="/images/computer-organization-and-design-risc-v-edition.jpg" alt="" /></p>

<p>2020 年出版的《计算机组成与设计：硬件/软件接口（原书第5版）》，翻译的版本是 2018 年的 RISC-V Edition。</p>

<p><img src="/images/computer-organization-and-design-risc-v-edition-zh.jpg" alt="" /></p>

<p>2021 年出版了 RISC-V Edition 的 2nd Edition，前言里也不再说自己是什么第 5 版或第 6 版了。</p>

<p><img src="/images/computer-organization-and-design-risc-v-edition-2nd-edition.jpg" alt="" /></p>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="book" /><summary type="html"><![CDATA[2018 年出版的 RISC-V Edition，应该同时还有 ARMv8 版和 MIPS 版，但在该书籍的整个系列中，同属于第 5 个版本，前言里也说自己是第 5 版。]]></summary></entry><entry><title type="html">干净重装系统才能解决的 iPhone 故障</title><link href="https://yingang.github.io/life/digital/2024/09/01/wierd-ios-issue.html" rel="alternate" type="text/html" title="干净重装系统才能解决的 iPhone 故障" /><published>2024-09-01T09:53:00+00:00</published><updated>2024-09-01T09:53:00+00:00</updated><id>https://yingang.github.io/life/digital/2024/09/01/wierd-ios-issue</id><content type="html" xml:base="https://yingang.github.io/life/digital/2024/09/01/wierd-ios-issue.html"><![CDATA[<p>几个月前，手机（iPhone 14 Pro，iOS 17.x）存在如下的故障现象，主要体现在微信上：</p>
<ul>
  <li>进入订阅号的时候，会卡住，然后就黑屏了</li>
  <li>如果回到桌面才重新切到微信（只是界面切换，没有重启微信），还是可以正常看到订阅号页面的内容</li>
  <li>但如果微信重启了（比如因为运行其他应用导致微信退出了），会在启动后不久提示：“系统环境可能存在异常，为确保微信正常使用，建议重启手机后再试。”</li>
</ul>

<p><img src="/images/ios_wechat_issue.png" alt="" /></p>

<p>如果这时重启整个手机，确实可以短暂解决问题，但重启后不久，问题又会出现。</p>

<p>尝试过重装微信以及其他一些网上能看到的方法，但都没有解决问题。最后是在家人建议下（也是碰到了类似的问题），直接抹掉整个系统，并且不要从之前的备份中进行还原，才算解决问题（至少已经超过两个月了，没有再发生）。</p>

<p>整个看上去像是从历史备份还原导致的问题（我的备份大概是从 iOS 12 或更早的版本开始的），和<a href="https://yingang.github.io/software/browser/2024/04/10/refresh-firefox.html">之前碰到的 Firefox 问题</a>可能有点像。</p>

<p>另外，虽然问题主要是体现在微信上，其他应用也有一些可能相关的问题，主要发生在手机网络不好的时候。比如之前去平谭岛的火车上，就碰到过闲鱼 App 里的部分页面白屏而且重启应用都没用的情况，包括高德地图的定位功能也不工作了，目前这些问题都没有再发生过。</p>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="life" /><category term="digital" /><summary type="html"><![CDATA[几个月前，手机（iPhone 14 Pro，iOS 17.x）存在如下的故障现象，主要体现在微信上： 进入订阅号的时候，会卡住，然后就黑屏了 如果回到桌面才重新切到微信（只是界面切换，没有重启微信），还是可以正常看到订阅号页面的内容 但如果微信重启了（比如因为运行其他应用导致微信退出了），会在启动后不久提示：“系统环境可能存在异常，为确保微信正常使用，建议重启手机后再试。”]]></summary></entry><entry><title type="html">Python 虚拟环境中的 PyInstaller 打包</title><link href="https://yingang.github.io/python/pyinstaller/2024/05/09/pyinstaller-with-venv.html" rel="alternate" type="text/html" title="Python 虚拟环境中的 PyInstaller 打包" /><published>2024-05-09T13:15:00+00:00</published><updated>2024-05-09T13:15:00+00:00</updated><id>https://yingang.github.io/python/pyinstaller/2024/05/09/pyinstaller-with-venv</id><content type="html" xml:base="https://yingang.github.io/python/pyinstaller/2024/05/09/pyinstaller-with-venv.html"><![CDATA[<p>这几天给手头一个小工具增加了解析 Excel 文件的功能，然后 <code class="language-plaintext highlighter-rouge">PyInstaller</code> 打包一看，输出文件直接从 20+MB 变成 70+MB 了，而且里面出现了明显不太对劲的内容，比如这个工具里没有用到的 <code class="language-plaintext highlighter-rouge">numpy</code> 等，实在对不起“小工具”这个名称。。。</p>

<p>后来折腾了一会儿才将输出文件再变成原来的大小，甚至比原来还小一丢丢~</p>

<p>简单记录下：</p>
<ul>
  <li>系统全局有一个 Python 环境，其中也安装了大量的 Python 库，包括 <code class="language-plaintext highlighter-rouge">PyInstaller</code> 和 <code class="language-plaintext highlighter-rouge">numpy</code> 这些都在其中</li>
  <li>而工具项目使用了自己的虚拟环境，该虚拟环境中默认只安装了项目本身需要使用的 Python 库，比如 <code class="language-plaintext highlighter-rouge">openpyxl</code>，但没有安装 <code class="language-plaintext highlighter-rouge">PyInstaller</code>
    <ul>
      <li>之前打包都是直接在虚拟环境中运行的，但实际运行的其实是全局 Python 环境中的 <code class="language-plaintext highlighter-rouge">PyInstaller</code>（其中从打包的运行日志中也能看出来，之前没往深处去想）</li>
      <li>之前打包的结果其实还挺正常，但这次不知为啥，多了一堆东西</li>
    </ul>
  </li>
  <li>先尝试将全局 Python 环境中的所有库都删除（<code class="language-plaintext highlighter-rouge">pip freeze &gt; req.txt</code> + <code class="language-plaintext highlighter-rouge">pip uninstall -r req.txt -y</code>）
    <ul>
      <li>并仍然在全局 Python 环境安装 <code class="language-plaintext highlighter-rouge">PyInstaller</code></li>
      <li>再次在虚拟环境中打包，结果很小，小到不能正常运行。。。看来不能这么用</li>
    </ul>
  </li>
  <li>然后尝试在虚拟环境中安装 <code class="language-plaintext highlighter-rouge">PyInstaller</code>（再次删除了全局 Python 环境中的所有库，免得互相干扰）
    <ul>
      <li>这次打包的结果对了，可以正常运行，体积也正常，从打包的运行日志也能看出来都是使用的虚拟环境中的信息</li>
    </ul>
  </li>
</ul>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="python" /><category term="pyinstaller" /><summary type="html"><![CDATA[这几天给手头一个小工具增加了解析 Excel 文件的功能，然后 PyInstaller 打包一看，输出文件直接从 20+MB 变成 70+MB 了，而且里面出现了明显不太对劲的内容，比如这个工具里没有用到的 numpy 等，实在对不起“小工具”这个名称。。。]]></summary></entry><entry><title type="html">Refresh Firefox</title><link href="https://yingang.github.io/software/browser/2024/04/10/refresh-firefox.html" rel="alternate" type="text/html" title="Refresh Firefox" /><published>2024-04-10T14:10:00+00:00</published><updated>2024-04-10T14:10:00+00:00</updated><id>https://yingang.github.io/software/browser/2024/04/10/refresh-firefox</id><content type="html" xml:base="https://yingang.github.io/software/browser/2024/04/10/refresh-firefox.html"><![CDATA[<p>最近几天家里笔记本电脑上的 Firefox 出问题了（自从<a href="https://yingang.github.io/software/browser/2022/11/22/browser-headache.html">公司的 Firefox 退役</a>之后，这是仅存的独苗了），现象是在初次启动的时候闪现一下界面后就没了，但任务管理器里看进程都还在，而且也在持续消耗少量的 CPU 等系统资源，难受。</p>

<p>如果完全不管后台那些僵尸进程，可以继续启动一个新的，新进程可以正常起来也能正常退出（但僵尸不会退）。但如果把僵尸强杀了，再启动新的 Firefox，就又还是一样的问题现象。</p>

<p>今天有点不能忍，就尝试搜索了下，好像没有比较近的帖子讲这个的，隐约看到一些说重装一下试试啥的，想着要不就试试吧。然后还没开始真正卸载，就看到 Firefox 卸载界面上的提示了，嘿，这不正是我想要的吗：</p>

<p><img src="/images/firefox_refresh.png" alt="" /></p>

<p>过程还算快，因为之前使用了 Firefox 自带的账户同步功能，所以 Refresh 后很快就把类似历史记录、书签之类的都恢复了，但也有一些需要手工修改的东西，比如：</p>

<ul>
  <li>是否允许网页自动播放视频和音频（可能变成了默认的设置，仅不允许自动播放音频）</li>
  <li>主界面布局（比如工具栏的各种按钮啥的，得重新摆一下）</li>
  <li>默认使用的搜索引擎（某度给我走开）</li>
  <li>屏蔽广告的插件 uBlock Origin 不见了（据说是<a href="https://www.zhihu.com/question/523163432">被迫在国内下架</a>了，可以直接去 <a href="https://github.com/gorhill/uBlock/releases/">Github</a> 上下载安装，找名字是 uBlock_<em>**</em>.firefox.signed.xpi 的就行）</li>
  <li><code class="language-plaintext highlighter-rouge">about:config</code> 里的设置也复原了（比如一直用的 <code class="language-plaintext highlighter-rouge">closeWindowWithLastTab = false</code>）</li>
</ul>

<p>但最重要的，Refresh 后确实我一开始的问题解决了！估计还是无数历史版本一路升级上来，保留了越来越多不那么兼容的配置吧。</p>

<p>Refresh 这个功能的出现位置挺好，卸载再重装总还是更麻烦一些的，虽然说如果能一开始就避免这样的问题就更好了吧。</p>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="software" /><category term="browser" /><summary type="html"><![CDATA[最近几天家里笔记本电脑上的 Firefox 出问题了（自从公司的 Firefox 退役之后，这是仅存的独苗了），现象是在初次启动的时候闪现一下界面后就没了，但任务管理器里看进程都还在，而且也在持续消耗少量的 CPU 等系统资源，难受。]]></summary></entry><entry><title type="html">龙年新春快乐</title><link href="https://yingang.github.io/life/digital/2024/02/16/happy-new-year-of-the-dragon.html" rel="alternate" type="text/html" title="龙年新春快乐" /><published>2024-02-16T10:36:00+00:00</published><updated>2024-02-16T10:36:00+00:00</updated><id>https://yingang.github.io/life/digital/2024/02/16/happy-new-year-of-the-dragon</id><content type="html" xml:base="https://yingang.github.io/life/digital/2024/02/16/happy-new-year-of-the-dragon.html"><![CDATA[<p>正月初七，假期没剩几天了，前面回老家呆了近一周，匆匆忙忙，稍微记录下技术人没搞定的一些事情。</p>

<h3 id="网络检修">网络检修</h3>

<p>无意中发现<a href="https://yingang.github.io/life/digital/2022/02/07/happy-new-year-of-the-tiger.html">两年前装上的无线路由器</a>不知道什么时候开始已经没在工作了，但因为爸妈的手机还保留了原来那个猫的无线设置，所以没及时发现。</p>

<p>老爸用沉甸甸的指针式万用表测了下发现是路由器的电源有问题，没有正常的 9V 输出，然后我才发现这个还不是路由器原配的电源，可能是之前搬家的时候弄混了，不知道是不是因为功率不匹配用坏的（标称 1A，但路由器要求的是 1.5A）。</p>

<p>再然后第二天我才刚起床，发现老爸已经用家里现成的配件手搓了一个电源出来，用的是据说小区里捡来的一个装饰灯上的电源，配上老爸之前自己买的电源插头，赞，不然大过年的网上能买到的也都不能很快送货。</p>

<p><strong>未解之谜1</strong>：旧路由器的不足在用笔记本电脑上网的时候感觉特别明显，用手机的时候倒不怎么觉得，不知道是什么原因。</p>

<h3 id="微信表情包">微信表情包</h3>

<p>有次大家在家庭群里发消息的时候，我姐说怎么还没看到老爸发的专属表情包，才反应过来老爸一直有个技能点，是能发出有定制文字的表情。</p>

<p>正好老爸就兴冲冲地来和我说这个功能是怎么回事，以及不知道为啥老妈的手机就没这个功能。</p>

<p>一开始我还以为是输入法的功能，后来才明白原来就是微信自带的功能，正式名称叫“合成表情”，在表情发送界面，使用“搜索表情”的功能即可看到相关的入口。或者如果收到别人发来的类似表情，直接点击也可看到相关的说明。</p>

<p><strong>未解之谜2</strong>：老妈的手机上确实没有这个功能，同样最新的微信版本，怀疑可能是对手机处理器有要求，虽然价格没差多少，但老爸手机的处理器是高通的，而老妈手机的处理器是联发科的，不知道是不是这个原因，没找到比较官方的解释或说明。</p>

<p><strong>未解之谜3</strong>：老爸老妈的手机有个公共的问题，我们发在群里的一些能产生全屏动画效果的消息（今年是康师傅的？），在他们的手机上除了显示正常的消息没有任何反应（但微信自带的一些表情效果，比如爱心啥的，是有反应的），也没找到什么比较官方的解释或说明。</p>

<h3 id="视频通话">视频通话</h3>

<p>每周固定时间和爸妈视频的时候，偶尔会碰到他们没接听的情况，一般以为只是爸妈正好没听到，也没太在意。</p>

<p>这次在家的时候，正好有次亲戚发来的视频通话也没接听，而且我当时就在旁边，完全没有听到，这才仔细看了下老爸手机里微信的应用设置，尝试修改了几个通知（不要设置为不重要通知）和耗电（比如允许唤醒和开机自启动之类的，但还没有打开允许后台运行，据说会比较耗电）相关的设置，后面再观察观察效果。</p>

<blockquote>
  <p>一个月后：结果还是不行。。。得尝试改下允许后台运行了。</p>
</blockquote>

<blockquote>
  <p>三个月后：又尝试了允许完全后台行为，关闭待机优化（默认是平衡模式），关闭耗电异常优化（对微信），包括按网上说的，也确认了应用锁定早就已经对且仅对微信设置了，结果还是不行。。。对 Android 系统杀后台的行为真是没招了，具体型号分别是 realme 的 GT 大师探索版 和 GT Neo，都是 8GB 运存，系统分别是 realme UI 5.0 和 4.0（分别基于 Android 14 和 13）。</p>
</blockquote>

<h3 id="语音助手">语音助手</h3>

<p>老爸教我做微信的表情包，我教老爸用手机的语音助手，老爸说有意思，回头仔细研究研究！</p>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="life" /><category term="digital" /><summary type="html"><![CDATA[正月初七，假期没剩几天了，前面回老家呆了近一周，匆匆忙忙，稍微记录下技术人没搞定的一些事情。]]></summary></entry><entry><title type="html">python-docx 读取大表格速度很慢的问题</title><link href="https://yingang.github.io/python/docx/2024/01/06/python-docx-slow-table-parsing.html" rel="alternate" type="text/html" title="python-docx 读取大表格速度很慢的问题" /><published>2024-01-06T08:36:00+00:00</published><updated>2024-01-06T08:36:00+00:00</updated><id>https://yingang.github.io/python/docx/2024/01/06/python-docx-slow-table-parsing</id><content type="html" xml:base="https://yingang.github.io/python/docx/2024/01/06/python-docx-slow-table-parsing.html"><![CDATA[<p>尝试写个小 Python 脚本来提取 Word 需求文档里的内容，结果发现读取文档里的表格性能有点差，特别是在读取行数比较多（几百）的表格时，速度非常慢。</p>

<p>使用了比较标准的方式来读取表格，类似于：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">docx</span> <span class="kn">import</span> <span class="n">Document</span>
<span class="n">doc</span> <span class="o">=</span> <span class="n">Document</span><span class="p">(</span><span class="n">filepath</span><span class="p">)</span>
<span class="k">for</span> <span class="n">tbl</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">.</span><span class="n">tables</span><span class="p">:</span>
  <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="n">tbl</span><span class="p">.</span><span class="n">rows</span><span class="p">:</span>
    <span class="n">value</span> <span class="o">=</span> <span class="n">row</span><span class="p">.</span><span class="n">cells</span><span class="p">[</span><span class="mi">0</span><span class="p">].</span><span class="n">text</span>
    <span class="p">...</span>
</code></pre></div></div>

<p>结果对于一个大概 800 多行的表格，需要花费十几分钟才能解析完，从表格一开始大概半秒一行到后来一秒多一行，完全不能理解为啥会这么慢！</p>

<p>然后先写了个更简单的脚本，仅进行表格内容的遍历，可以基本确定性能瓶颈不在表格读取之外的那些处理逻辑上。再然后尝试在网上做了些检索，也没找到合适的答案。</p>

<p>再后来去翻看了 python-docx 的官方文档，想着也许有什么我不知道的接口可能更适合我的使用场景，然后在<a href="https://python-docx.readthedocs.io/en/latest/_modules/docx/table.html">这里</a>就看到比较奇怪的东西了：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">_Row</span><span class="p">(</span><span class="n">Parented</span><span class="p">):</span>
    <span class="s">"""Table row."""</span>

    <span class="o">@</span><span class="nb">property</span>
    <span class="k">def</span> <span class="nf">cells</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">Tuple</span><span class="p">[</span><span class="n">_Cell</span><span class="p">]:</span>
        <span class="s">"""Sequence of |_Cell| instances corresponding to cells in this row."""</span>
        <span class="k">return</span> <span class="nb">tuple</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">table</span><span class="p">.</span><span class="n">row_cells</span><span class="p">(</span><span class="bp">self</span><span class="p">.</span><span class="n">_index</span><span class="p">))</span>
</code></pre></div></div>

<p>行的 <code class="language-plaintext highlighter-rouge">cells</code> 方法实际是调用了表格的 <code class="language-plaintext highlighter-rouge">row_cells</code> 方法，而表格的 <code class="language-plaintext highlighter-rouge">row_cells</code> 方法又是这么定义的：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="k">class</span> <span class="nc">Table</span><span class="p">(</span><span class="n">Parented</span><span class="p">):</span>
    <span class="s">"""Proxy class for a WordprocessingML ``&lt;w:tbl&gt;`` element."""</span>

    <span class="k">def</span> <span class="nf">row_cells</span><span class="p">(</span><span class="bp">self</span><span class="p">,</span> <span class="n">row_idx</span><span class="p">:</span> <span class="nb">int</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">_Cell</span><span class="p">]:</span>
        <span class="s">"""Sequence of cells in the row at `row_idx` in this table."""</span>
        <span class="n">column_count</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">_column_count</span>
        <span class="n">start</span> <span class="o">=</span> <span class="n">row_idx</span> <span class="o">*</span> <span class="n">column_count</span>
        <span class="n">end</span> <span class="o">=</span> <span class="n">start</span> <span class="o">+</span> <span class="n">column_count</span>
        <span class="k">return</span> <span class="bp">self</span><span class="p">.</span><span class="n">_cells</span><span class="p">[</span><span class="n">start</span><span class="p">:</span><span class="n">end</span><span class="p">]</span>

    <span class="o">@</span><span class="nb">property</span>
    <span class="k">def</span> <span class="nf">_cells</span><span class="p">(</span><span class="bp">self</span><span class="p">)</span> <span class="o">-&gt;</span> <span class="n">List</span><span class="p">[</span><span class="n">_Cell</span><span class="p">]:</span>
        <span class="s">"""A sequence of |_Cell| objects, one for each cell of the layout grid.

        If the table contains a span, one or more |_Cell| object references are
        repeated.
        """</span>
        <span class="n">col_count</span> <span class="o">=</span> <span class="bp">self</span><span class="p">.</span><span class="n">_column_count</span>
        <span class="n">cells</span> <span class="o">=</span> <span class="p">[]</span>
        <span class="k">for</span> <span class="n">tc</span> <span class="ow">in</span> <span class="bp">self</span><span class="p">.</span><span class="n">_tbl</span><span class="p">.</span><span class="n">iter_tcs</span><span class="p">():</span>
            <span class="k">for</span> <span class="n">grid_span_idx</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="n">tc</span><span class="p">.</span><span class="n">grid_span</span><span class="p">):</span>
                <span class="k">if</span> <span class="n">tc</span><span class="p">.</span><span class="n">vMerge</span> <span class="o">==</span> <span class="n">ST_Merge</span><span class="p">.</span><span class="n">CONTINUE</span><span class="p">:</span>
                    <span class="n">cells</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">cells</span><span class="p">[</span><span class="o">-</span><span class="n">col_count</span><span class="p">])</span>
                <span class="k">elif</span> <span class="n">grid_span_idx</span> <span class="o">&gt;</span> <span class="mi">0</span><span class="p">:</span>
                    <span class="n">cells</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">cells</span><span class="p">[</span><span class="o">-</span><span class="mi">1</span><span class="p">])</span>
                <span class="k">else</span><span class="p">:</span>
                    <span class="n">cells</span><span class="p">.</span><span class="n">append</span><span class="p">(</span><span class="n">_Cell</span><span class="p">(</span><span class="n">tc</span><span class="p">,</span> <span class="bp">self</span><span class="p">))</span>
        <span class="k">return</span> <span class="n">cells</span>
</code></pre></div></div>

<p>也就是说，<code class="language-plaintext highlighter-rouge">row_cells</code> 引用的 <code class="language-plaintext highlighter-rouge">_cells</code> 看上去每次被调用时都在重新构建一个新的列表？？？</p>

<p>不确定是否完全理解这些代码及其目的，尝试在自己的代码直接拿到 <code class="language-plaintext highlighter-rouge">_cells</code>，然后基于行列坐标自己去访问想要读取的 <code class="language-plaintext highlighter-rouge">cell</code>，结果对于上面说的那个 800 多行的表格，不到一秒就访问完了！差不多三个数量级的性能提升？</p>

<p>示例代码如下，供参考：</p>

<div class="language-python highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="kn">from</span> <span class="nn">docx</span> <span class="kn">import</span> <span class="n">Document</span>
<span class="n">doc</span> <span class="o">=</span> <span class="n">Document</span><span class="p">(</span><span class="n">filepath</span><span class="p">)</span>
<span class="k">for</span> <span class="n">tbl</span> <span class="ow">in</span> <span class="n">doc</span><span class="p">.</span><span class="n">tables</span><span class="p">:</span>
  <span class="n">cells</span> <span class="o">=</span> <span class="n">tbl</span><span class="p">.</span><span class="n">_cells</span>
  <span class="n">row_count</span> <span class="o">=</span> <span class="nb">len</span><span class="p">(</span><span class="n">tbl</span><span class="p">.</span><span class="n">rows</span><span class="p">)</span>
  <span class="n">col_count</span> <span class="o">=</span> <span class="n">tbl</span><span class="p">.</span><span class="n">_column_count</span>
  <span class="k">for</span> <span class="n">row</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">row_count</span><span class="p">):</span>
    <span class="n">value</span> <span class="o">=</span> <span class="n">cells</span><span class="p">[</span><span class="n">row</span> <span class="o">*</span> <span class="n">col_count</span><span class="p">].</span><span class="n">text</span>
    <span class="p">...</span>
</code></pre></div></div>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="python" /><category term="docx" /><summary type="html"><![CDATA[尝试写个小 Python 脚本来提取 Word 需求文档里的内容，结果发现读取文档里的表格性能有点差，特别是在读取行数比较多（几百）的表格时，速度非常慢。]]></summary></entry><entry><title type="html">升级下家里的无线路由器</title><link href="https://yingang.github.io/life/digital/2023/10/13/wireless-router-upgrade.html" rel="alternate" type="text/html" title="升级下家里的无线路由器" /><published>2023-10-13T12:00:00+00:00</published><updated>2023-10-13T12:00:00+00:00</updated><id>https://yingang.github.io/life/digital/2023/10/13/wireless-router-upgrade</id><content type="html" xml:base="https://yingang.github.io/life/digital/2023/10/13/wireless-router-upgrade.html"><![CDATA[<p>家里的路由器还是不知道哪年入手的极路由 4 增强版，听说最近都出 WiFi7 了，想着要不咱先升级个 WiFi6？正好看看家里偶尔出现的 B 站视频播放卡顿问题和这个有没有关系。</p>

<p>普通家用的倒不贵，但技术宅可不能随随便便买一个，于是国庆最后一天和接下来的几天花了不少时间，但却也没看出太大的门道。。。知乎在这个过程中没起到太好的作用，主要参考的还是 B 站一个家电 Up 主（<a href="https://space.bilibili.com/67991584">知电晓春哥</a>）的<a href="https://www.bilibili.com/video/BV1bu411n7d5/?share_source=copy_web&amp;vd_source=7431b2fb51b130454e747e1b91d62156">视频</a>和他家的<a href="https://qvx4sysgyw.feishu.cn/wiki/ZpScwhT1MijNGQkSYFNcc4Gjnhi">测评文档</a>，然后基本收敛到这几个选择：</p>

<ul>
  <li>
    <p>华为 <a href="https://u.jd.com/PzJay3I">AX3</a> / <a href="https://u.jd.com/PiJ8r8g">AX3 Pro</a>（2021 年）</p>

    <p>知电不是太推荐，没明显亮点的缺点，性价比一般。AX3 的具体评测报告是说信号还可以，但负载处理能力一般。没看到 AX3 Pro 的评测报告，但这两款前几年应该都有过被迫换芯的处理，早期 Pro 版本的发热问题应该是好很多了，但其它方面不清楚。</p>

    <p>价格正常，也比较好买/好卖。</p>

    <p>抱着没有太多期望、能用就行的态度差点下单，后来是看到 B 站另一家的<a href="https://www.bilibili.com/video/BV1ah4y1v7nV/?share_source=copy_web&amp;vd_source=7431b2fb51b130454e747e1b91d62156">测评</a>，提到这款过热后降速的测试结果，综合考虑了下就基本放弃了，江湖上有说法是华为的无线路由向来做得不怎么样，不知真假。</p>
  </li>
  <li>
    <p>红米 AX6S（2021 年）</p>

    <p>知电推荐，看上去没有明显的短板，但能买到的价格似乎不便宜（近 300），不知道是不是要退市了，感觉不划算，然后内心深处有点对米家产品质量的不是太放心，后来就没怎么考虑了。</p>

    <p>另外，相对华为和中兴分别用的高通和自研芯片方案，这个选择的潜在优点之一是应该可以刷第三方固件吧。</p>
  </li>
  <li>
    <p>中兴 AX3000 <a href="https://u.jd.com/P8JOOiJ">巡天</a>（2022 年）/ <a href="https://u.jd.com/PsJQoBz">晴天</a>（2023 年）</p>

    <p>知电倒是很推荐，但从评测报告来看几乎是华为 AX3 的反义词，负载处理能力强，但信号一般（无外置独立 FEM，内置的），感觉上知电的测评更侧重负载，信号的问题更多建议通过类似于有线 Mesh 的方案来解决。</p>

    <p>考虑到自己的应用场景，其实一开始是不倾向于这个选择的，家里不会有大的负载（参考知电的评测报告，场景应该还是超出了大部分家用的场景），信号的作用应该要大得多。</p>

    <p>但同样是前面提到的另一家的测评，看到这款的信号好像也没有很差的样子，纠结好一会儿之后就还是选择了中兴，并且选择了颜值更高的晴天版墙面路由。晴天的评测报告中基本都认为和巡天的配置是一样的，不知道为啥知电的评测结果会稍微好一点（仅游戏稳定带机数量从 20 降到了 11，和华为 AX3 相当），希望是有一些内部看不见的优化吧。</p>

    <p>内心的打算是想着只要能满足当前的使用就行，以后如果房子大了，真有信号覆盖不好的话，再加个同品牌的路由器来组网。</p>
  </li>
</ul>

<p>既然是新路由，就得好好整整：</p>

<ol>
  <li>家里的宽带是电信的 200 兆，但从路由器后台看到的 WAN 口的接口速度还是百兆，刚开始怀疑家里埋的线质量不高，就把路由器直接接到弱电箱的光猫出口，果然就变成千兆了！</li>
  <li>然后在千兆的接口速度下做了下测试，用笔记本电脑进行 BT 下载，至少可以爬到 12-14MB/s 的速度吧（应该和具体种子相关），但测试过程中没过多久就突然之间就掉下来变成 1-2MB/s 了，咋回事？</li>
  <li>还是从路由器的后台看到，这台电脑的无线连接信号已经从 5GHz 自动切换成 2.4GHz 了，难怪！之前极路由 4 的时候就有类似的双频合一功能，但我没有使用。然后这次虽然也在网上看到有人说建议不要使用双频合一，但我抱着试试看的想法，就还是在初始设置时选择了双频合一，至少从这个测试结果来看，不是我想要的效果，就还是关闭这个功能了，不然自己完全无法控制实际连接的是哪个。家里除了天猫精灵和一个无线插座，以及有一点点年头的 Apple Watch SE，其它的都是支持 5GHz 信号的了，能用 5GHz 的就尽量用吧。</li>
  <li>再回到一开始的问题，也不知道是家里埋的线不好，还是墙上接出来的这一段网线不好（还是原来那根，没有用中兴自带的那根，后者稍微有点短，和我的摆放位置相关），就找了根替换的网线，结果看 WAN 口的接口速度居然也是千兆了！仔细看了下换下来的网线线头，虽然也是商品线看着质量还行，但实际只有 4 根线芯，好吧，小丑竟是我自己。。。</li>
</ol>

<p>总体来说，还是满意的，有点担心的无线信号覆盖方面完全没有碰到问题，主观上感觉刷 B 站偶发的卡顿也似乎是变少了，也感觉下载软件里接近上限的上传速度曲线似乎比之前更平整了，不知道是不是心理作用，哈哈。</p>

<blockquote>
  <p>一个月后：好吧，内网无线互连的速度明显比原来快多了，比如在 iPad 上通过 SMB 播放笔记本电脑上的视频文件。</p>
</blockquote>

<p>突然觉得换下来的极路由 4 也挺好的，这么多年的产品了，信号覆盖挺好，WAN 口也已经是千兆（可惜被我的烂网线耽误了），运行也挺稳定，甚至外观的品位也还不错，只能感叹<a href="https://zhuanlan.zhihu.com/p/55339170">小厂商做智能硬件真不容易</a>。</p>

<script src="https://utteranc.es/client.js" repo="yingang/yingang.github.io" issue-term="pathname" label="Comment" theme="github-light" crossorigin="anonymous" async="">
</script>]]></content><author><name></name></author><category term="life" /><category term="digital" /><summary type="html"><![CDATA[家里的路由器还是不知道哪年入手的极路由 4 增强版，听说最近都出 WiFi7 了，想着要不咱先升级个 WiFi6？正好看看家里偶尔出现的 B 站视频播放卡顿问题和这个有没有关系。]]></summary></entry></feed>