<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="/scripts/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:h="http://www.w3.org/TR/html4/"><channel><title>CWorld Site</title><description>Stay hungry, stay foolish</description><link>https://cworld0.com</link><item><title>Gravatar Mirror</title><link>https://cworld0.com/blog/gravatar-mirror</link><guid isPermaLink="true">https://cworld0.com/blog/gravatar-mirror</guid><description>解决 Gravatar 在国内访问堪忧的问题</description><pubDate>Wed, 25 Feb 2026 14:52:58 GMT</pubDate><content:encoded>&lt;h2&gt;Internal&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://sep.cc/gravatartx.html&quot;&gt;sep.cc&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://cdn.sep.cc/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://cdn.sep.cc/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 14ms avg&lt;/li&gt;
&lt;li&gt;Note: 境内 Ucloud 和华为云同时提供服务，境外 Cloudflare CDN 提供服务; Gravatar 头像缓存 365 天&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://weavatar.com/&quot;&gt;WeAvatar&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://weavatar.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://weavatar.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 41 ms avg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://cravatar.com/&quot;&gt;Cravatar&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://cravatar.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://cravatar.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 43ms avg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://w3tt.com/&quot;&gt;万维网测试小组&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://gravatar.w3tt.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://gravatar.w3tt.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 54ms avg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.zeruns.com/&quot;&gt;zeruns.tech&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://gravatar.zeruns.tech/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://gravatar.zeruns.tech/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 290ms, 25% loss avg&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Global&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://cdn.ews1.com/&quot;&gt;Ro Public CDN&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://gravatar.ews1.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://gravatar.ews1.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 36ms avg&lt;/li&gt;
&lt;li&gt;Note: Also support Google Fonts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://www.7ed.net/&quot;&gt;7ED&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://use.sevencdn.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://use.sevencdn.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 184ms avg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://sm.ms/&quot;&gt;sm.ms / loli.net&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://gravatar.loli.net/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://gravatar.loli.net/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 236 ms avg&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://webp.se/&quot;&gt;webp.se&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://gravatar.webp.se/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://gravatar.webp.se/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 762ms, 25% loss avg&lt;/li&gt;
&lt;li&gt;Note: Will convert the avatar into webp format, and the size will be greatly compressed.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;[libravatar]:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://seccdn.libravatar.org/gravatarproxy/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://seccdn.libravatar.org/gravatarproxy/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: 259ms avg&lt;/li&gt;
&lt;li&gt;Note: Reject any ping test.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Bad&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.gravatar.com/&quot;&gt;Gravatar&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://www.gravatar.com/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://www.gravatar.com/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: banned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://cdn.v2ex.com/&quot;&gt;V2EX&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://cdn.v2ex.com/gravatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://cdn.v2ex.com/gravatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: banned&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://sdn.geekzu.org/&quot;&gt;极客族&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;API: &lt;code&gt;https://sdn.geekzu.org/avatar/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Test URL: https://sdn.geekzu.org/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=200&lt;/li&gt;
&lt;li&gt;Ping: redirect to gravatar&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;https://luoxx.top/archives/gravatar-mirror-2022&lt;/li&gt;
&lt;li&gt;https://zhuanlan.zhihu.com/p/377149911&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Vim 的一些键位知识</title><link>https://cworld0.com/blog/vim-key</link><guid isPermaLink="true">https://cworld0.com/blog/vim-key</guid><description>用了几年 Vim 有了一些心得，故有此文。</description><pubDate>Fri, 15 Dec 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;从第一次尝试使用 Vim，到现在不管啥环境都要装个 Vim 插件，也差不多有三年多了。正如俗话所说“万事开头难”嘛，我和大多数的 Vim 初学者一样，也遇到了一段别扭且艰难的学习期。不过好在 Vim 已经让我尝到了一些甜头，这最终使我习惯并喜欢上了这套“反人类”的编辑逻辑。所以这一期就来总结一下 Vim 的一些键位知识，也可以当成教程学习学习。&lt;/p&gt;
&lt;p&gt;此外关于我个人的使用上，在用 NeoVim、VSCodeVim 以及 IdeaVim，三家都很好用。不过目前我还只打算开源 NeoVim 的配置，有兴趣的可以看看我的配置仓库：&lt;a href=&quot;https://github.com/cworld1/nvim-config&quot;&gt;CWorld NVim Config - Github&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;最基础的内容&lt;/h2&gt;
&lt;h3&gt;简单的光标移动&lt;/h3&gt;
&lt;p&gt;首先是最基础的光标移动。你可能会发现基础的上下左右还能用，但请保持习惯，除了编辑模式下一般不要去碰它。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;上：&lt;code&gt;k&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;下：&lt;code&gt;j&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;左：&lt;code&gt;h&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;右：&lt;code&gt;l&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;食指作为更加灵活的那个手指，放在下移光标上，能够更频繁敏捷地持续下移光标。&lt;/p&gt;
&lt;h3&gt;简单的开始输入&lt;/h3&gt;
&lt;p&gt;进入输入模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;向光标位置输入：&lt;code&gt;i&lt;/code&gt; (insert mode)&lt;/li&gt;
&lt;li&gt;向光标后一个字符的位置输入：&lt;code&gt;a&lt;/code&gt; (append)&lt;/li&gt;
&lt;li&gt;从这一行开头位置输入：&lt;code&gt;I&lt;/code&gt; (insert at eol)&lt;/li&gt;
&lt;li&gt;从这一行末尾位置输入：&lt;code&gt;A&lt;/code&gt; (append at eol)&lt;/li&gt;
&lt;li&gt;单独向下创建一行输入：&lt;code&gt;o&lt;/code&gt; (open below)&lt;/li&gt;
&lt;li&gt;单独向上创建一行输入：&lt;code&gt;O&lt;/code&gt; (open above)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;还有冷门的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;s&lt;/code&gt; 删除当前字符并进入输入模式（等价于 &lt;code&gt;cl&lt;/code&gt;，l 即 letter）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;S&lt;/code&gt; 删除当前行并进入输入模式（等价于 &lt;code&gt;cc&lt;/code&gt;）&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-insert.BwrDfL_E.webp&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;vim insert&quot;&gt;&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;Esc&lt;/code&gt;（或 &lt;code&gt;c-[&lt;/code&gt;）退出该模式。&lt;/p&gt;
&lt;h3&gt;编辑器的常见操作&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;删除一个字符：&lt;code&gt;x&lt;/code&gt; (delete char)&lt;/li&gt;
&lt;li&gt;删除前一个字符：&lt;code&gt;X&lt;/code&gt; (delete backspace)&lt;/li&gt;
&lt;li&gt;撤销：&lt;code&gt;u&lt;/code&gt; (undo)&lt;/li&gt;
&lt;li&gt;返回撤销操作：&lt;code&gt;c-r&lt;/code&gt; (redo)（意为 Ctrl + r，后同）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;编辑器的文件基本操作&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;保存：&lt;code&gt;:w&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;强制保存：&lt;code&gt;:w!&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;退出当前窗口：&lt;code&gt;:q&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;强制退出：&lt;code&gt;:q!&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;退出所有窗口：&lt;code&gt;:qa&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这样的一个字符命令通常能够连在一起，比如：&lt;code&gt;:wq&lt;/code&gt;、&lt;code&gt;:qa!&lt;/code&gt;。输入完命令后记得按回车执行。&lt;/p&gt;
&lt;h2&gt;Vim 进阶功能&lt;/h2&gt;
&lt;h3&gt;更方便的光标移动&lt;/h3&gt;
&lt;p&gt;行内跳转：&lt;/p&gt;
&lt;p&gt;使用 &lt;code&gt;w&lt;/code&gt; (next word) 或者 &lt;code&gt;e&lt;/code&gt; (end word) 向后移动一个词语，其中 &lt;code&gt;w&lt;/code&gt; 总是会移动到单词开头，&lt;code&gt;e&lt;/code&gt; 总是移动到单词结尾。任何标点字符都会作为分割。&lt;code&gt;b&lt;/code&gt; (prev word) 则可以以同样的方式前移。注意这个跳转能跨行。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;gw&lt;/code&gt; / &lt;code&gt;ge&lt;/code&gt; 也可以实现回跳，但是两个键也太麻烦了。
大写的对应按键也有奇效，但是一般不用，这里不展开。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;前往行首：0 (&quot;hard&quot; bol)&lt;/li&gt;
&lt;li&gt;前往行第一个非空字符：^ (&quot;soft&quot; bol)（你也可以用 0 和 w 配合使用达到同样的效果，优点是不用按住 Shift）&lt;/li&gt;
&lt;li&gt;前往行末：$ (eol)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-move-cursor.B0WSx3cN.webp&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;vim move cursor&quot;&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;从各种括号的一头跳到另一头：&lt;code&gt;%&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;重复执行以便快速移动：数字 + hjkl&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;默认情况下侧栏的行号总是显示相对的，所以在跳转行时可以看一眼侧栏相对行号快速跳转。大多数 IDE 都支持这个设定。以 Vim 配置为例：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-vim&quot;&gt;set number relativenumber
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-set-relative-number.ByrHmzky.webp&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;vim set relative number&quot;&gt;&lt;/p&gt;
&lt;p&gt;此外向下移动光标还有：数字 + 回车。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;行外跳转：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;快速跳转上一个/下一个空行：&lt;code&gt;{&lt;/code&gt; 和 &lt;code&gt;}&lt;/code&gt; 。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下翻 1/2 页：&lt;code&gt;c-d&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;上翻 1/2 页：&lt;code&gt;c-u&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下翻 1/1 页：&lt;code&gt;c-f&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下翻 1/1 页：&lt;code&gt;c-b&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;还有个没啥用的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;下滚动一行：&lt;code&gt;c-e&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;上滚动一行：&lt;code&gt;c-y&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于全文跳转：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;前往整个内容顶部：&lt;code&gt;gg&lt;/code&gt; 或者 &lt;code&gt;[[&lt;/code&gt; 或者 &lt;code&gt;:0&lt;/code&gt; 或者 &lt;code&gt;:1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;前往整个内容底部：&lt;code&gt;G&lt;/code&gt; 或者 &lt;code&gt;]]&lt;/code&gt; 或者 &lt;code&gt;:$&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一个很方便的快捷键：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;将当前编辑行置于视图中间：&lt;code&gt;zz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;快速地选择内容&lt;/h3&gt;
&lt;p&gt;进入选择模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;正常选择（Visual）：&lt;code&gt;v&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;按下时你就已经选择了当前的一个字母。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;行选择（Visual Line）：&lt;code&gt;V&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;按下时你就已经选择了该行。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;块选择（Visual Block）：&lt;code&gt;c-v&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用 Esc 退出该模式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-visual.DZVfdCLU.webp&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;vim visual&quot;&gt;&lt;/p&gt;
&lt;h3&gt;更多样地选择内容&lt;/h3&gt;
&lt;p&gt;进入选择模式后，你可以使用正常的光标移动技巧，以及一些更加灵活的选择方式。这种方式被称作 “文本对象（text object）”，能够让我们不移动光标的情况下来操作一定区域内的内容。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;选择单词（从光标到下一个符号/空格，包括符号）：&lt;code&gt;w&lt;/code&gt; (word)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择当前单词：&lt;code&gt;iw&lt;/code&gt; (in word)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择当前单词（包括下一个符号/空格）：&lt;code&gt;aw&lt;/code&gt; (around word)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;选择到下一个对应字符：&lt;code&gt;f&amp;#x3C;char&gt;&lt;/code&gt; 或 &lt;code&gt;t&amp;#x3C;char&gt;&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;同理，可将 &lt;code&gt;w&lt;/code&gt; 换成别的，比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;字母 &lt;code&gt;l&lt;/code&gt;（letter），使用时需要重写，如 &lt;code&gt;yll&lt;/code&gt;。个人更倾向于使用 &lt;code&gt;vy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;大写单词 &lt;code&gt;W&lt;/code&gt; (WORD)&lt;/li&gt;
&lt;li&gt;以逗号句号感叹号等收尾的句子（没有的话就是全段了）：&lt;code&gt;s&lt;/code&gt; (sentence)&lt;/li&gt;
&lt;li&gt;行：&lt;code&gt;L&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;以空行间隔开的段落：&lt;code&gt;p&lt;/code&gt; (paragraph)&lt;/li&gt;
&lt;li&gt;引号：&lt;code&gt;&apos;&lt;/code&gt;、&lt;code&gt;&quot;&lt;/code&gt;、&quot;``&quot;&lt;/li&gt;
&lt;li&gt;括号：&lt;code&gt;()&lt;/code&gt;、&lt;code&gt;[]&lt;/code&gt;、&lt;code&gt;{}&lt;/code&gt; 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;修改内容&lt;/h3&gt;
&lt;p&gt;仅修改当前光标所在的这一个字符：&lt;code&gt;r&lt;/code&gt; (replace mode)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;进阶玩法：配合选择模式，先选择内容，再使用 r，可以替换选择范围内的所有内容为新字符。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;一些必须要配合的命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;修改选择内容并进入 insert 模式：&lt;code&gt;c&lt;/code&gt; (change)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;可以先选择内容后使用，也可配合选择一起使用，如 &lt;code&gt;ciw&lt;/code&gt;、&lt;code&gt;cap&lt;/code&gt;、&lt;code&gt;c3j&lt;/code&gt; 等。&lt;/p&gt;
&lt;p&gt;修改本行内光标后的所有内容可用 &lt;code&gt;C&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除选择内容：&lt;code&gt;d&lt;/code&gt;（delete）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用方法同上，如 &lt;code&gt;diw&lt;/code&gt;、&lt;code&gt;cap&lt;/code&gt; 等。不过如果是先选择后删除的话，&lt;code&gt;x&lt;/code&gt; 也是一样的（Vim 特色之都可以实现）。&lt;/p&gt;
&lt;p&gt;删除本行内光标后的所有内容可用 &lt;code&gt;D&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;复制选择内容：&lt;code&gt;y&lt;/code&gt; (yank)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;复制本行也可以用 &lt;code&gt;Y&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;缩进选择内容：&lt;code&gt;&gt;&lt;/code&gt; 以及反缩进 &lt;code&gt;&amp;#x3C;&lt;/code&gt;。这个命令可以重复表示缩进/反缩进多少格，如：&lt;code&gt;v3&gt;&lt;/code&gt; 表示当前行缩进一格，&lt;code&gt;&gt;3&gt;&lt;/code&gt; 或 &lt;code&gt;3&gt;&gt;&lt;/code&gt; 表示接下来三行都缩进一格。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外还可以：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;重复输入两次以便快速使用，效果为作用于该行整行，相当于 V + 对应命令。目前已知的命令包括：&lt;code&gt;cc&lt;/code&gt;、&lt;code&gt;dd&lt;/code&gt;、&lt;code&gt;yy&lt;/code&gt;、&lt;code&gt;&gt;&gt;&lt;/code&gt;、&lt;code&gt;&amp;#x3C;&amp;#x3C;&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;搭配数字实现对于多少汗的重复，如 &lt;code&gt;y3y&lt;/code&gt;、&lt;code&gt;3yy&lt;/code&gt;。已知可用的命令同上。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-yank-text-object.CcheaHJ9.webp&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;vim yank text object&quot;&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 class=&quot;language-vim&quot;&gt;set clipboard+=unnamed
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;粘贴命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;当前位置后面粘贴内容：&lt;code&gt;p&lt;/code&gt; (paste after)&lt;/li&gt;
&lt;li&gt;当前位置前面粘贴内容：&lt;code&gt;P&lt;/code&gt; (paste before)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;通常是你在复制整行后，粘贴时注意粘贴位置在前或后会比较方便。&lt;/p&gt;
&lt;p&gt;当你选择了部分内容时，本次粘贴会覆盖选择内容（当然正常编辑器都是这样）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Vim 深入功能&lt;/h2&gt;
&lt;h3&gt;行内跳转&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;跳转到行内下一个字符：&lt;code&gt;f&lt;/code&gt; + 跳转字符 (find char)&lt;/li&gt;
&lt;li&gt;跳转到行内上一个字符：&lt;code&gt;F&lt;/code&gt; + 跳转字符 (&quot;back&quot; find ch)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;以及：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;跳转到行内下一个字符（但是光标往前挪一个）：&lt;code&gt;t&lt;/code&gt; + 跳转字符 (find char)&lt;/li&gt;
&lt;li&gt;跳转到行内上一个字符（但是光标往后挪一个）：&lt;code&gt;T&lt;/code&gt; (&quot;back&quot; find ch)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但是不知道有什么用。？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-move-find.CSXrhP7w.webp&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;vim move find&quot;&gt;&lt;/p&gt;
&lt;p&gt;可配合 &lt;code&gt;c&lt;/code&gt;、&lt;code&gt;d&lt;/code&gt;、&lt;code&gt;y&lt;/code&gt; 命令。使用 &lt;code&gt;;&lt;/code&gt; 可以持续执行上面说的这个跳转操作，只要当前 buffer 没有被关闭就能一直保存跳转字符的记录，随时可用。而 &lt;code&gt;,&lt;/code&gt; 则做相反方向的查找。&lt;/p&gt;
&lt;h3&gt;查找&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;向后优先查找内容：&lt;code&gt;/&lt;/code&gt; + 对应内容。输入回车后启用查找模式。&lt;/li&gt;
&lt;li&gt;向前优先查找内容：&lt;code&gt;?&lt;/code&gt; + 对应内容。&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;一些相关的 Vim 配置：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-vim&quot;&gt;&quot; 在输入搜索时逐步匹配并高亮显示匹配的文本
set incsearch
&quot; 在搜索时忽略大小写
set ignorecase
&quot; 将搜索匹配的文本高亮显示
set hlsearch
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;p&gt;注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;n&lt;/code&gt; (next) 或 &lt;code&gt;N&lt;/code&gt; (prev) 跳转所有匹配项。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用 &lt;code&gt;#&lt;/code&gt; (prev ident) 和 &lt;code&gt;*&lt;/code&gt; (next ident) 跳转要求更严格，要求每次出现的前后为空白字符或标点符号。不过这两个键还担任了一个小功能：选择想要查找的文段，然后按下这两个的一个就可以快速启动查找。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;查找支持正则表达式，例如 &lt;code&gt;/vim$&lt;/code&gt; 匹配行尾的 &quot;vim&quot;。需要查找特殊字符需要转义，例如 &lt;code&gt;/vim\$&lt;/code&gt; 匹配 &quot;vim$&quot;。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你不喜欢默认忽略大小写，但是有时候又想用，可以尝试在查找模式中加入指令：&lt;code&gt;\c&lt;/code&gt; 表示大小写不敏感查找，&lt;code&gt;\C&lt;/code&gt; 表示大小写敏感查找。如：&lt;code&gt;/foo\c&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;高亮显示匹配内容当然很棒！但是取消高亮命令 &lt;code&gt;:nohl&lt;/code&gt; 就很不方便了。我一般的解决方案是：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-vim&quot;&gt;nnoremap &amp;#x3C;Esc&gt; :nohl&amp;#x3C;CR&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;将这个命令映射到 Esc 键。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;替换&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;:s&lt;/code&gt;（substitute）命令用来查找和替换字符串。语法：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;:{作用范围}s/{目标}/{替换}/{替换标志}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;作用范围：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;指定行：如 &lt;code&gt;5s&lt;/code&gt;、&lt;code&gt;+2s&lt;/code&gt;。&lt;code&gt;.s&lt;/code&gt;表示当前行，可省略为&lt;code&gt;s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;指定行到行：如 &lt;code&gt;5,12s&lt;/code&gt;。结合起来使用就可以表示接下来/这之前多少行，如 &lt;code&gt;.,+2s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;全文：&lt;code&gt;%s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;选择模式下选择范围内：&lt;code&gt;&apos;&amp;#x3C;,&apos;&gt;s&lt;/code&gt;（选择模式下 Vim 会帮你补全关键字）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;替换标志：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;不写则只替换第一个。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;全局替换：&lt;code&gt;g&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;手动提示确认：&lt;code&gt;c&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;使用后会有提示：&lt;code&gt;replace with bar (y/n/a/q/l/^E/^Y)?&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;其中 &lt;code&gt;y&lt;/code&gt; 表示替换，&lt;code&gt;n&lt;/code&gt; 表示不替换，&lt;code&gt;a&lt;/code&gt; 表示替换所有，&lt;code&gt;q&lt;/code&gt; 表示退出查找模式，&lt;code&gt;l&lt;/code&gt; 表示替换当前位置并退出。&lt;code&gt;E&lt;/code&gt; 与 &lt;code&gt;Y&lt;/code&gt; 是光标移动快捷键。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;大小写敏感：&lt;code&gt;i&lt;/code&gt; 表示大小写不敏感查找，&lt;code&gt;I&lt;/code&gt; 表示大小写敏感。如：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;:%s/foo/bar/i
# 等效于搜索模式中的\c（不敏感）或\C（敏感）：
# :%s/foo\c/bar
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;上述替换标志可以结合使用，如 &lt;code&gt;:%s/foo/bar/gc&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Vim 特色功能&lt;/h2&gt;
&lt;h3&gt;实用小功能&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;跳转到指定行：&lt;code&gt;:&lt;/code&gt; + 行号&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;或者使用行号 + &lt;code&gt;gg&lt;/code&gt;（Vim 特色之都可以实现）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;转置字母大小写：&lt;code&gt;~&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;也可以通过选择以后按 &lt;code&gt;u&lt;/code&gt; 改为小写、&lt;code&gt;U&lt;/code&gt; 改为大写实现（Vim 特色之都可以实现）&lt;/p&gt;
&lt;p&gt;也可以使用 &lt;code&gt;g&lt;/code&gt; 这个转置，将 &lt;code&gt;gu&lt;/code&gt;、&lt;code&gt;gU&lt;/code&gt; 或者 &lt;code&gt;g~&lt;/code&gt; 与选择操作拼接起来。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;数字增减：自增为 &lt;code&gt;c-a&lt;/code&gt;，自减为 &lt;code&gt;c-x&lt;/code&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;快速生成数列可以使用 &lt;code&gt;:put=range(0,10,2)&lt;/code&gt;，好像语法跟 Python 是一样的。最后一个参数为 1 时可省略。&lt;/p&gt;
&lt;p&gt;此外这个增减不仅可以适用于数字，还可以是八进制、十六进制、bin 和 alpha（我们 Vim 玩家真是增增又减减啊）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;后文还有讲多行递增/递减。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;内容排序：&lt;code&gt;:sort&lt;/code&gt;。反向排序使用 &lt;code&gt;:sort!&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;可以结合作用范围使用：如 &lt;code&gt;:3,16sort&lt;/code&gt;。该功能可能在 CSS 属性排序很好用&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;此外还有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;删除重复行：&lt;code&gt;:sort u&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;仅使用数字排序 &lt;code&gt;:sort n&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多光标：使用 &lt;code&gt;c-v&lt;/code&gt; 进入 Visual Block 模式，将光标选中移动到指定位置后：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;同时在每行选择内容开头插入：&lt;code&gt;I&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同时在每行选择内容末尾追加：&lt;code&gt;A&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同时编辑：&lt;code&gt;c&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同时删除：&lt;code&gt;d&lt;/code&gt; 或者 &lt;code&gt;x&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;同时修改为同一字符：&lt;code&gt;r&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;数字递进自增/自减：先选中数字列，&lt;code&gt;g&lt;/code&gt;，然后 &lt;code&gt;c-a&lt;/code&gt; 或者 &lt;code&gt;c-x&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;合并行，将下一行或者选中行通过空格连接，而不是回车：&lt;code&gt;J&lt;/code&gt; (join)&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你不喜欢空格可以用 &lt;code&gt;gJ&lt;/code&gt; 转置。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;关闭自动换行后的“行内”上下移动光标：&lt;code&gt;gk&lt;/code&gt;、&lt;code&gt;gj&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;删除行：&lt;code&gt;:{作用范围}g/{包含关键词}/d&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;反选删除行：&lt;code&gt;:{作用范围}g!/{关键词}/d&lt;/code&gt; 或 &lt;code&gt;:{作用范围}v/{关键词}/d&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;大部分时候结合正则可能更好用，如：&lt;code&gt;:g/^\s*$/d&lt;/code&gt; 表示删除空白行&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开目录界面新建文件：&lt;code&gt;%&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;实用大功能&lt;/h3&gt;
&lt;p&gt;实在太先进了，极大提高你工作效率的独家秘技，所以我要叫它“大功能”（乐）&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;标记：&lt;code&gt;m&lt;/code&gt; + 自定义字母 (mark)&lt;/p&gt;
&lt;p&gt;之后使用 ` + 自定义字母跳转到标记。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;宏录制：&lt;code&gt;q&lt;/code&gt; + 自定义字母 (record macro)&lt;/p&gt;
&lt;p&gt;再按一次 &lt;code&gt;q&lt;/code&gt; 结束。之后使用 &lt;code&gt;@&lt;/code&gt; + 自定义字母播放录制的操作宏。可配合数字实现重复执行播放。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;最后的话&lt;/h2&gt;
&lt;p&gt;嗯... 文章有亿点长了。如果实在不喜欢记这些东西，并且真的感觉 Vim 很反人类的话，建议停止尝试。适合自己的才是最好的。&lt;/p&gt;
&lt;p&gt;最后给点自己觉得还不错的资料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;http://www.viemu.com/a_vi_vim_graphical_cheat_sheet_tutorial.html&quot;&gt;Graphical vi-vim Cheat Sheet and Tutorial&lt;/a&gt;：Vim 一图流&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvim-cheat-sheet.CnsgbNTg.png&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;vi-vim-cheat-sheet&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/iggredible/Learn-Vim&quot;&gt;Learn Vim (the Smart Way)&lt;/a&gt;：这是一本非常好的开源的 Vim 入门书籍，它会带你从 Vim 的基础操作，到 Vim 的高级操作，再到 Vim 的插件开发&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://vim-adventures.com/&quot;&gt;Vim Adventures&lt;/a&gt;：相对有趣的 Vim 游戏，能不那么枯燥地带你一步步的学习 Vim 的基础操作&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;鸣谢：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://yuexun.blogit.io/the-vim-guide-for-vs-code-users&quot;&gt;Yuexun：写给 VS Code 用户的 Vim 入坑指南&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/thumbnail.DSNVw2nA.jpg"/><enclosure url="/_astro/thumbnail.DSNVw2nA.jpg"/></item><item><title>个人向 Nas 折腾记录</title><link>https://cworld0.com/blog/nas-guide</link><guid isPermaLink="true">https://cworld0.com/blog/nas-guide</guid><description>内含大量纯图一乐的折腾技巧</description><pubDate>Fri, 07 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这篇文章并没有讲很多有关 “我为什么要买 Nas” 或者 “Nas 在我的生活中扮演了什么样的角色”。因为这样的讨论注定会是主观的，因人而异。如你所见，这只是一个平平无奇的记录帖，也希望在你从零开始折腾 Nas 时可以用上这些小技巧。&lt;/p&gt;
&lt;h2&gt;硬件配置&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2025-6-22_16-33-10.D-lmCaZL.png&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;较为简单的穷酸配置。盘是 tb 买的翻新希捷，目前体验良好，晚上噪声忽略不计。系统采用轻量可靠的飞牛 FnOS，体验良好。&lt;/p&gt;
&lt;h2&gt;系统配置&lt;/h2&gt;
&lt;p&gt;飞牛自带的装了这些：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FImg20251107200021404.Bac89kyv.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;Docker方面目前保留了：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Home assistant 无需多言&lt;/li&gt;
&lt;li&gt;Music tag web：速刮削和整理音乐，按需启用&lt;/li&gt;
&lt;li&gt;官方 Chromium 急救用，一般不开&lt;/li&gt;
&lt;li&gt;rdesktop: 由 linuxserver 团队维护，虽然地位一般更新延迟，但架不住底层好，可直接使用微软发布的远程桌面工具（RDP）连接，体验丝滑&lt;/li&gt;
&lt;li&gt;webtop: 比 rdesktop 维护勤快很多，区别主要在于使用浏览器 VNC 访问。由于介质稳定性，移动端体验较差。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;目录&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FImg20251107200900300.Dbrs5Zwn.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于本人很讨厌啥都加复数（如果要追究复数那要加的 s 可就很多了），目录规划也使用缩写名称，有效降低路径长度，方便后续维护。&lt;/p&gt;
&lt;p&gt;部分 Docker 等目录放到固态存储的 &lt;code&gt;sys&lt;/code&gt; 内，这样方便使用机械硬盘休眠功能。电脑侧栏直接设置为 Nas 有关目录，可更无缝体验多端协同和远程存储。&lt;/p&gt;
&lt;h3&gt;影视&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FImg20251107200900367.DnOXuPGf.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;影视库能刮削百度、阿里、夸克等网盘里的电影，但是似乎播放测试还是不太行，可能是我没开会员吧。感觉还是下载下来看更稳定。&lt;/p&gt;
&lt;p&gt;看番推荐 Dandan Play（弹弹 Play），可直接播放来自 Nas 的内容，提供完整的弹幕体验。&lt;/p&gt;
&lt;h3&gt;相册&lt;/h3&gt;
&lt;p&gt;相册按照出行档期按照时间建立文件夹。除了实况必须 mov + heic/仅转换的jpg 外，其他功能使用良好。该有的功能都有。使用期间发现搬迁目录会有残留，还是得卸载相册重装才能解决。笔者这里建议初始安装目录一定要选好，免得后面破事一堆。&lt;/p&gt;
&lt;h3&gt;音乐&lt;/h3&gt;
&lt;p&gt;真希望飞牛音乐能早点到来。目前使用 Navidrome，PC 用 feishin，iOS 用 LMP Music，算是够用，但是新设备听音乐就只能靠上古 Web 界面了。&lt;/p&gt;
&lt;h3&gt;导航&lt;/h3&gt;
&lt;p&gt;笔者开源了 &lt;a href=&quot;https://github.com/cworld1/nas-dashboard&quot;&gt;Nas Dashboard&lt;/a&gt; 项目；但由于最近飞牛官方放开本地安装，推荐使用 &lt;a href=&quot;https://club.fnnas.com/forum.php?mod=viewthread&amp;#x26;tid=41357&quot;&gt;扩展图标管理&lt;/a&gt;，更好兼容移动端（然而移动端测试图标貌似是没法自定义的），体验更原生轻便。&lt;/p&gt;
&lt;h3&gt;备份&lt;/h3&gt;
&lt;p&gt;官方支持了备份到云服务功能。自己按需备份即可。反正你们都是不缺大容量网盘的，是吧。&lt;/p&gt;
&lt;h2&gt;穿透&lt;/h2&gt;
&lt;p&gt;穿透主要渠道：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;流量中转/穿透（FnConnect/Frp/组网软件中转）&lt;/li&gt;
&lt;li&gt;P2P 打洞（穿透 NAT 解决问题）&lt;/li&gt;
&lt;li&gt;直接暴露在公网（暴露服务/流量加密/组网软件P2P模式）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;一般自己准备两条路径就足够了。问题一般不在稳定性而是速度。此外“暴露在公网”和“穿透”模式应注意防护。下面分类展开。&lt;/p&gt;
&lt;p&gt;暴露服务 &amp;#x26; 穿透：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;裸露在公网的 http 流量应使用 TLS 加密（即给链接上 HTTPS）&lt;/li&gt;
&lt;li&gt;SSH 流量是已知最简单安全的加密方式（？），使用 SSH tunneling 进行远程 Web 服务转发不失为一种选择。例如使用 &lt;code&gt;ssh -L 5666:127.0.0.1:5666&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;SMB 流量貌似是加密的，不过一方面是政策原因没法使用默认端口，另一方面也因为安全不建议使用默认端口，导致 Windows 这个只接受默认端口的生物无法很好接纳远程访问这一点。如要使用，更推荐虚拟组网使用。&lt;/li&gt;
&lt;li&gt;ipv6 彻底放开个人认为是个非常危险的方案，可能个人设备防护的还算比较好，但你家的摄像头等智能家居就不好说了。如果被他人入侵并采取操作，后果将不堪设想。嗯，尤其是摄像头。&lt;/li&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;虚拟组网：目前主流虚拟组网方案有 ZeroTier、Tailscale、EasyTier、Wireguard。当然还有一些冷门一点的方案。安全性一般都足够，但大多都具有较为明显的流量特征，不排除受到运营商/公司 IT 管制的风险。&lt;/p&gt;
&lt;h2&gt;无线网卡上网&lt;/h2&gt;
&lt;p&gt;查看有关信息：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;nmcli device status
lspci -k
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;有时候重启系统服务是个不错的决定：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl restart NetworkManager
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;最后使用命令查看上网信息和 IP 分配：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;ip route
default via 10.65.255.1 dev enp1s0 proto static metric 100
10.65.255.1 dev enp1s0 proto static scope link metric 100
172.17.0.0/16 dev br-be1a5d2c2cd4 proto kernel scope link src 172.17.0.1 linkdown
172.31.0.0/16 dev docker0 proto kernel scope link src 172.31.0.1
192.168.1.0/24 dev enp1s0 proto kernel scope link src 192.168.1.1 metric 100
192.168.43.0/24 dev wlx200db*** proto kernel scope link src 192.168.43.203 metric 600
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;网络共享&lt;/h2&gt;
&lt;p&gt;为了对策校园网这种膈应人的产品，我决定将服务器的网络通过网线共享给我的 Windows 电脑，并由此摸索出了这样一套方案：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果你也受困于校园网但是距离毕业尚早，请考虑购入二手路由并学习如何折腾。这会更加方便实用。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;安装 &amp;#x26; 配置静态 IP&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo apt update
sudo apt install iptables dnsmasq
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/network/interfaces&lt;/code&gt; 文件：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo nano /etc/network/interfaces
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;确保 &lt;code&gt;enp1s0&lt;/code&gt; 接口的配置为某个静态 IP：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;auto enp1s0
iface enp1s0 inet static
    address 192.168.1.1
    netmask 255.255.255.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后重启服务以应用它。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl restart networking
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;值得一提的是，上述步骤可以使用飞牛自带的设置里面，使用图形化界面完成。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;配置 DHCP 服务器&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/dnsmasq.conf&lt;/code&gt; 文件配置 DHCP 服务：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;interface=enp1s0
dhcp-range=192.168.1.2,192.168.1.100,255.255.255.0,24h
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这会类似于 DHCP 服务器，为你的电脑分配正确的 IP 地址。当然不要忘记重启 dnsmasq 服务：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo systemctl restart dnsmasq
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置 IP 转发&lt;/h3&gt;
&lt;p&gt;编辑 &lt;code&gt;/etc/sysctl.conf&lt;/code&gt; 文件。不出意外的话你应该能找到注释好的配置。找到并取消注释（或添加）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-plaintext&quot;&gt;net.ipv4.ip_forward=1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后应用更改即可：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo sysctl -p
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;配置防火墙规则&lt;/h3&gt;
&lt;p&gt;使用 &lt;code&gt;iptables&lt;/code&gt; 设置 NAT 规则，以便通过 Wi-Fi 连接到互联网：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo iptables -t nat -A POSTROUTING -o wlx200db0449243 -j MASQUERADE
sudo iptables -A FORWARD -i wlx200db0449243 -o enp1s0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i enp1s0 -o wlx200db0449243 -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Windows 配置&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;将 Windows 电脑通过网线连接到服务器的 &lt;code&gt;enp1s0&lt;/code&gt; 接口。&lt;/li&gt;
&lt;li&gt;理论上 Windows 电脑应该能够获取到一个被分配的 IP 地址（例如 192.168.1.2），并能够访问互联网。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;注意事项&lt;/h3&gt;
&lt;p&gt;有时候电脑的休眠会让服务器触发某些特殊状态（当然也不排除是飞牛的锅），你可能需要在唤醒后手动执行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo ip route del default via 10.65.255.1 dev enp1s0 proto static metric 100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;当然也不一定是 &lt;code&gt;10.65.255.1&lt;/code&gt;，按照 &lt;code&gt;ip route&lt;/code&gt; 自行查看 default 是啥。&lt;/p&gt;
&lt;p&gt;以及一些检查 IP 表的命令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo iptables -L -v -n
sudo iptables -t nat -L -v -n
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;网络共享下的远程&lt;/h3&gt;
&lt;p&gt;这样的流量转发模式下，还想要外网 IP 地址访问 Windows 电脑，就需要在服务器上配置对应的端口转发。&lt;/p&gt;
&lt;h4&gt;Windows 端配置&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;在 Windows 电脑上，右键点击“此电脑”或“我的电脑”，选择“属性”。&lt;/li&gt;
&lt;li&gt;点击“远程设置”。&lt;/li&gt;
&lt;li&gt;在“远程”选项卡中，确保选中“允许远程连接到此计算机”。&lt;/li&gt;
&lt;li&gt;如果有防火墙提示，确保允许远程桌面通过防火墙。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;确保 Windows 防火墙允许 RDP 连接：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打开“控制面板”，选择“系统和安全”。&lt;/li&gt;
&lt;li&gt;点击“Windows 防火墙”。&lt;/li&gt;
&lt;li&gt;在左侧，点击“允许应用通过 Windows 防火墙”。&lt;/li&gt;
&lt;li&gt;确保“远程桌面”选项被勾选。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;打开命令提示符（cmd）或 Pwsh，输入以下命令以获取其 IP 地址：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;ipconfig
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;记下对应的 IP 地址。&lt;/p&gt;
&lt;h4&gt;Debian 服务器配置&lt;/h4&gt;
&lt;p&gt;下面的情况将以这样的配置为例：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Windows 电脑 IP 地址：192.168.1.2&lt;/li&gt;
&lt;li&gt;默认 RDP 端口：3389&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;设立 iptables 转发：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo iptables -t nat -A PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.1.2:3389
sudo iptables -A FORWARD -p tcp -d 192.168.1.2 --dport 3389 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;连接到 Windows 电脑&lt;/h4&gt;
&lt;ol&gt;
&lt;li&gt;远程设备上打开远程桌面连接应用（比如微软官方的 Windows）。&lt;/li&gt;
&lt;li&gt;输入服务器的外网 IP 地址，格式为 &lt;code&gt;外网IP:3389&lt;/code&gt;。然后点击连接开始享用！&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;切换TCP拥塞控制算&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.geekxw.top/3307/&quot;&gt;使用bbr法突破运营商限速&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;启用：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;sudo -i
echo -e &quot;\nnet.core.default_qdisc=fq\nnet.ipv4.tcp_congestion_control=bbr&quot; &gt;&gt; /etc/sysctl.conf &amp;#x26;&amp;#x26; sysctl -p
sysctl net.ipv4.tcp_congestion_control
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;恢复：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;vim /etc/sysctl.conf
# 删除
# net.core.default_qdisc=fq
# net.ipv4.tcp_congestion_control=bbr
# 保存退出

# 再执行这个代码
sysctl -p
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="/_astro/thumbnail.CHisp1k8.jpg"/><enclosure url="/_astro/thumbnail.CHisp1k8.jpg"/></item><item><title>F1 车队汇总</title><link>https://cworld0.com/blog/f1-teams-2025</link><guid isPermaLink="true">https://cworld0.com/blog/f1-teams-2025</guid><description>网上很多这样的资料大都有些老旧，部分甚至跟不上时代了</description><pubDate>Sun, 22 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Timeline } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;p&gt;export function Container({ color, children }) {
return (
&amp;#x3C;div
className=&apos;f1-ct border rounded-xl p-4 flex flex-col gap-4&apos;
style={&lt;code&gt;background-color:${color}15; --team-color:${color}&lt;/code&gt;}
&gt;
{children}
{&apos;.f1-ct p{margin:0};&apos;}

)
}&lt;/p&gt;
&lt;p&gt;export function TeamTable({
link,
name,
nickname,
fullName,
teamChief,
reserve,
year,
podiums,
color,
children
}) {
return (

{children}




{name}

{nickname &amp;#x26;&amp;#x26; nickname !== &apos;&apos; &amp;#x26;&amp;#x26; (

{&apos; &apos;}
[{nickname}]

)}

{fullName &amp;#x26;&amp;#x26; {fullName}}




领队
{teamChief}


预备车手
{reserve || &apos;-&apos;}



{year} / 
{podiums} 次领奖 / 
{color}




)
}&lt;/p&gt;
&lt;p&gt;export function DriversTable({ drivers, children }) {
return (

{children}

{drivers.map((driver, idx) =&gt; (



{driver.abbr}



{driver.name}

{driver.nickname &amp;#x26;&amp;#x26; driver.nickname != &apos;&apos; &amp;#x26;&amp;#x26; (

[{driver.nickname}]

)}



#{driver.num} / 
{new Date().getFullYear() - driver.birth} 岁 / 
{driver.nation} / 
{driver.podiums} 次领奖


))}


)
}&lt;/p&gt;
&lt;p&gt;其实官网本来就有长期在做 &lt;a href=&quot;https://www.formula1.com/en/teams&quot;&gt;F1 Teams 2025&lt;/a&gt;，但是纯英文有时候会不那么对应的上（同样的还有缩写），并且网络大部份资料还较为老旧，这就由此引出了本文。简单声明：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;本文按照官网顺序依次介绍所有车队，确保没有隐性个人倾向。&lt;/li&gt;
&lt;li&gt;领奖（登上领奖台，Podiums）次数是截至 2025 年初的统计数据。&lt;/li&gt;
&lt;li&gt;车手年龄为按照当前年份减去出生年份实时计算。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;那么祝大家查阅愉快。&lt;/p&gt;
&lt;h2&gt;McLaren&lt;/h2&gt;
&lt;h2&gt;Ferrari&lt;/h2&gt;
&lt;h2&gt;Mercedes&lt;/h2&gt;
&lt;h2&gt;Red Bull Racing&lt;/h2&gt;
&lt;h2&gt;Williams&lt;/h2&gt;
&lt;h2&gt;Racing Bulls&lt;/h2&gt;
&lt;h2&gt;Haas&lt;/h2&gt;
&lt;h2&gt;Aston Martin&lt;/h2&gt;
&lt;h2&gt;Kick Sauber&lt;/h2&gt;
&lt;h2&gt;Alpine&lt;/h2&gt;
&lt;h2&gt;Updates&lt;/h2&gt;
&lt;p&gt;&amp;#x3C;Timeline
events={[
{
date: &apos;2025-07-11&apos;,
content: &apos;红牛架构调整，移除 Christian Horner 霍纳&apos;
},
{
date: &apos;2025-11-06&apos;,
content: &apos;追更部分车手外号&apos;
}
]}
/&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.Cg9Kdz9t.jpg"/><enclosure url="/_astro/thumbnail.Cg9Kdz9t.jpg"/></item><item><title>Windows 多余输入法删除</title><link>https://cworld0.com/blog/windows-input-method</link><guid isPermaLink="true">https://cworld0.com/blog/windows-input-method</guid><description>清除多余的输入方式</description><pubDate>Tue, 17 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;注册表路径：&lt;code&gt;Computer\HKEY_CURRENT_USER\Keyboard Layout\Preload&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fimage.DFbQE_Ii.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;00000804&lt;/code&gt; - zh-cn&lt;/li&gt;
&lt;li&gt;&lt;code&gt;00000409&lt;/code&gt; - en-us&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;保留自己需要的即可。比如笔者只用中文拼音内的英文模式，可以以只留 804 模式。&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>双拼真的有那么难吗</title><link>https://cworld0.com/blog/shuangpin</link><guid isPermaLink="true">https://cworld0.com/blog/shuangpin</guid><description>个人向记录学习双拼的过程。说难也难，这东西贵在坚持</description><pubDate>Wed, 30 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;按照我学习的曲折经历来展开后文吧。&lt;/p&gt;
&lt;h2&gt;搜狗双拼&lt;/h2&gt;
&lt;p&gt;搜狗双拼是用定义好的单字母代替较长的多字母韵母或声母来进行输入的一种方式。例如： 如果 &lt;code&gt;T=t&lt;/code&gt;，&lt;code&gt;M=ian&lt;/code&gt;，键入两个字母 &lt;code&gt;TM&lt;/code&gt; 就会输入拼音 &lt;code&gt;tian&lt;/code&gt;。使用双拼可以减少击键次数，但是需要记忆字母对应的键位，但是熟练之后效率会有一定提高。&lt;/p&gt;
&lt;p&gt;官方网站：&lt;a href=&quot;https://pinyin.sogou.com/help.php?list=3&amp;#x26;q=4&quot;&gt;双拼 - 搜狗输入法&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;输入规则&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;声母&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ch=I sh=U zh=V
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;韵母&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;ai=L an=J ang=H ao=K ei=Z en=F eng=G er=R ia=W ian=M iang=D iao=C ie=X in=N ing=; iong=S iu=Q ong=S ou=B ua=W uai=Y uan=R uang=D ue=T ui=V un=P uo=O v=Y ve=T
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;零声母音节的韵母&lt;/strong&gt;：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;a=OA ai=OL an=OJ ang=OH ao=OK e=OE ei=OZ en=OF eng=OG er=OR o=OO ou=OB
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下面只做简单的分类，方便键位的记忆，并不完整。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F86954.B0a9Q7VY.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;键位图&lt;/h3&gt;
&lt;p&gt;下面是搜狗双拼键位排列：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F24978.Doa3hlir.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;记忆口诀&lt;/h3&gt;
&lt;h4&gt;基础版&lt;/h4&gt;
&lt;p&gt;把口诀和键盘结合，可以得到如下记忆标志：&lt;/p&gt;
&lt;p&gt;秋娃丫娥远观月 域外舒驰噢卧云昆&lt;/p&gt;
&lt;p&gt;阿勇送，汪洋分 更航岸靠来&lt;/p&gt;
&lt;p&gt;贼缷邀追 怄您眠&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解释&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;Q 秋 W 娃丫 E 娥 R 远观 T 月 Y 域外 U 舒 I 驰 O 噢卧 P 云昆&lt;/p&gt;
&lt;p&gt;A 阿 S 勇送，D 汪洋 F 分 G 更 H 航 J 岸 K 靠 L 来&lt;/p&gt;
&lt;p&gt;Z 贼 X 缷 C 笑 V 追 B 怄 N 您 M 眠&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;以上文字属于转载，我在寻找记忆键盘的口诀的时候，见到有人贴出的这个口诀操作性很强就拿来试用，效果可观，这样键盘的记忆就变得轻松的多了&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;改进版&lt;/h4&gt;
&lt;p&gt;秋娃丫，额软儿，越域外，书痴我晕；&lt;/p&gt;
&lt;p&gt;阿怂恿，汪洋愤，更航安，考来应；&lt;/p&gt;
&lt;p&gt;贼邪要，追殴您焉。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;解释&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;Q(iu)秋W(ua/ia)娃丫，E(e)额R(uan/er)软儿，T(ve)越Y(v/uai)域外，U(sh/u)书I(ch)痴O(uo/声母空)我P(un)晕；&lt;/p&gt;
&lt;p&gt;A(a)阿S(ong/iong)怂恿，D(uang/iang)汪洋F(en)愤，G(eng)更H(ang)航J(an)安，K(ao)考L(ai)来;(ing)应；&lt;/p&gt;
&lt;p&gt;Z(ei)贼X(ie)邪C(iao)要，V(zh/ui)追B(ou)殴N(in)您M(ian)焉。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;白话赋意：额娘的软弱儿子秋娃跑到域外去了，我晕；都是因为怂恿大愤怒，为了更安全的飞回，只有通过考试应对，小贼要追打您呢。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;小鹤双拼&lt;/h2&gt;
&lt;p&gt;~~因为搜狗双拼不太流行且部分平台支持有限，~~ 学习一段时间后我跳槽到小鹤双拼了。小鹤在左右手平衡上做的较为出色，且按键频率上有所优化，保持较高的均匀度，体验最好。&lt;/p&gt;
&lt;p&gt;官方网站：&lt;a href=&quot;https://flypy.cc/&quot;&gt;小鹤音形&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;以及快速在 Windows 默认输入法上启用：&lt;a href=&quot;https://ifttl.com/add-flypy-to-win10-microsoft-pinyin-and-other-configuration/&quot;&gt;Win10 微软拼音添加小鹤双拼以及其他配置&lt;/a&gt; (Windows 10 亦可)&lt;/p&gt;
&lt;p&gt;这里贴一下代码：&lt;/p&gt;
&lt;p&gt;CMD Ver.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-cmd&quot;&gt;reg add HKCU\Software\Microsoft\InputMethod\Settings\CHS /v UserDefinedDoublePinyinScheme0 /t REG_SZ /d &quot;小鹤双拼*2*^*iuvdjhcwfg^xmlnpbksqszxkrltvyovt&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;PowerShell Ver.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;Set-ItemProperty -LiteralPath &apos;HKCU:\Software\Microsoft\InputMethod\Settings\CHS&apos; -Name &apos;UserDefinedDoublePinyinScheme0&apos; -Type String -Value &apos;小鹤双拼*2*^*iuvdjhcwfg^xmlnpbksqszxkrltvyovt&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;输入规则&lt;/h3&gt;
&lt;p&gt;使用两个字母对汉字进行编码的方案，第一个字母表示声母，第二字母表示韵母，没有声母时用零声母代替 单字母声母韵母键位不变，双字母声母和多字母韵母位置见“双拼键位图”&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;零声母方案&lt;/strong&gt;：&lt;/p&gt;
&lt;p&gt;指全拼中无声母的韵母音节在双拼中的处理方案，用来充当其声母的字母即零声母。本方案以韵母首字母为零声母，即把韵母的首字母当作声母&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;单字母韵母，零声母 + 韵母所在键，如： 啊＝aa 哦=oo 额=ee&lt;/li&gt;
&lt;li&gt;双字母韵母，零声母 + 韵母末字母，如： 爱＝ai 恩=en 欧=ou&lt;/li&gt;
&lt;li&gt;三字母韵母，零声母 + 韵母所在键，如： 昂＝ah&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;简单说：双字母音节保持全拼方式，一三字母音节为首字母加韵母所在键&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;键位图&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fheup.CLzdSgIC.png&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;记忆口诀&lt;/h3&gt;
&lt;p&gt;官方版的就够用了：&lt;/p&gt;
&lt;p&gt;Qiu Wei Ruan T_ue_ve Yun U_shu I_chi&lt;/p&gt;
&lt;p&gt;秋 闱 软 月 云 梳 翅&lt;/p&gt;
&lt;p&gt;Song_iong Dai Fen Geng Hang J_an&lt;/p&gt;
&lt;p&gt;松　拥 黛 粉 更 航 安&lt;/p&gt;
&lt;p&gt;Kuai_ing Liang_uang Zou Xia_ua&lt;/p&gt;
&lt;p&gt;快　莺 两　望 奏 夏　蛙&lt;/p&gt;
&lt;p&gt;Pie Cao V_zhui_v Bin Niao Mian&lt;/p&gt;
&lt;p&gt;撇 草 追　鱼 滨 鸟 眠&lt;/p&gt;
&lt;h2&gt;自然码双拼&lt;/h2&gt;
&lt;p&gt;Y和B按键用得较多，纯双拼情况下打字容易累。故弃坑。&lt;/p&gt;
&lt;h2&gt;练习&lt;/h2&gt;
&lt;p&gt;说来惭愧，学了好几次，一直没能坚持下来。希望这次写文章能激励我坚持下来吧。嗯，贵在坚持。&lt;/p&gt;
&lt;p&gt;一般来说，两小时背下规则，两周熟练打字，一个月恢复甚至超越原来的速度。&lt;/p&gt;
&lt;p&gt;文章后续会继续更新笔者的体验和进度（本篇文章全程使用小鹤双拼码字）。&lt;/p&gt;
&lt;h3&gt;练习网站&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;最好用最好看的：&lt;a href=&quot;https://ninglo.github.io/shuangpin/#/&quot;&gt;纸砚&lt;/a&gt; （顺带一提它还开源，地址就是这个 GitHub 链接）&lt;/li&gt;
&lt;li&gt;可自定义程度最高的：&lt;a href=&quot;https://www.keyspell.top/&quot;&gt;keySpell双拼在线练习&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;记录&lt;/h3&gt;
&lt;p&gt;2025-05-19&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fimage.DQKuAuJE.png&amp;#x26;w=3840&amp;#x26;q=100&quot; alt=&quot;alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;基本恢复正常打字速度了。不容易不容易&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.CbLn0MrR.jpg"/><enclosure url="/_astro/thumbnail.CbLn0MrR.jpg"/></item><item><title>业余无线电B证不完全指南</title><link>https://cworld0.com/blog/amateur-radio-b</link><guid isPermaLink="true">https://cworld0.com/blog/amateur-radio-b</guid><description>B证考试有关错题总结</description><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;听说下一届就要改新题库了，或许这篇帖子不再具备参考性吧。留做自己看看纪念了。&lt;/p&gt;
&lt;h2&gt;在线资料&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;较为全面且个人化的总结：https://les1ie.com/2024/06/01/amateur-radio-b-exam/&lt;/li&gt;
&lt;li&gt;经典题目考察：https://www.jimmytian.com/archives/crac-aro-licence-b-review-guide.html&lt;/li&gt;
&lt;li&gt;题库分析：https://www.liups.one/2024/05/%E4%B8%9A%E4%BD%99%E6%97%A0%E7%BA%BF%E7%94%B5b%E7%B1%BB%E8%80%83%E8%AF%95%E7%AC%94%E8%AE%B0/&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;错题总结&lt;/h2&gt;
&lt;h3&gt;无序随机刷题&lt;/h3&gt;
&lt;p&gt;下列调制得到的信号周期恒定不变：&lt;strong&gt;相位调制PM&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;设备电源拔掉电源线以后，检修时还有什么安全风险？&lt;strong&gt;充满高电压的电容器可能造成电击&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余通信接收机大多带有接收信号强度指示。VHF/UHF频段的最小刻度S1对应于输入信号功率电平-141dBm（50Ω输入电压0.02μV）标为S1，而HF频段的S1则对应于输入信号功率电平-121dBm（0.2μV）。这是因为：&lt;strong&gt;V/UHF频段较寂静而HF频段外界背景噪声电平较高，前者可感知的最小信号电平比后者低约20dB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;偶极天线两臂总长度选取下列电气长度时，在垂直于天线轴线方向的增益达到峰值：&lt;strong&gt;1/2工作波长的奇数倍&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;选择解调部件的主要应考因素是：&lt;strong&gt;尽量忠实地还原原始信号&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;功率为0 dBW的射频信号通过衰减量为 40 dB的衰减器后，输出功率为：&lt;strong&gt;100μW&lt;/strong&gt;&lt;/p&gt;
&lt;h3&gt;顺序刷题库&lt;/h3&gt;
&lt;p&gt;我国对无线电管理术语“业余业务”、“卫星业余业务”和“业余无线电台”做出具体定义的法规文件是&lt;strong&gt;中华人民共和国无线电频率划分规定&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;超出核定范围使用频率或者有其他违反频率管理有关规定的行为的，无线电管理机构可以根据其具体情况给予设置业余无线电台的单位或个人下列处罚：&lt;strong&gt;责令限期改正，可以处警告或者三万元以下的罚款&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;无线电频率的使用必须得到各级无线电管理机构的批准，基本依据是“无线电频谱资源属于国家所有”，出自于下列法律的第二百五十二条：&lt;strong&gt;中华人民共和国民法典&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余电台的无线电发射设备应符国家规定的下列主要技术指标：&lt;strong&gt;符合频率容限、符合杂散发射最大允许功率电平&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;发射类别（class of emission）是指用标准符号标示的某发射的一组特性，例如主载波调制方式，调制信号，被发送信息的类型以及其他适用的信号特性。表示CW报的发射类别是&lt;strong&gt;A1A&lt;/strong&gt;，单边带话是&lt;strong&gt;J3E&lt;/strong&gt;，单边带话传输的RTTY信号是&lt;strong&gt;F2B&lt;/strong&gt;,单边带话传输的PSK31信号是&lt;strong&gt;G2B&lt;/strong&gt;，调频话是&lt;strong&gt;F3E&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我国分配给业余业务和卫星业余业务与其他业务共用、并且业余业务和卫星业余业务作为主要业务之一的30MHz以下频段有：&lt;strong&gt;1.8MHz、3.5MHz、14.25MHz、18.068MHz、24.89MHz频段&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;国际业余无线电界把WARC-76增加分配给业余业务和卫星业余业务的三个HF频段俗称为WARC频段，它们的频率范围是：&lt;strong&gt;10.1-10.15MHz、18.068-18.168MHz、24.89-24.99MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的40米业余波段，其在ITU1、2、3区的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;7.0-7.2MHz、7.0-7.3MHz、7.0-7.2MHz，专用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的160米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;1800-2000kHz，主要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的80米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;3.5-3.9MHz，主要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的20米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;14-14.25MHz为专用，14.25-14.35为主要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的15米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;21-21.45MHz，专用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的10米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;28-29.7MHz，专用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的6米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;50-54MHz，主要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的2米业余波段的频率范围以及我国业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;144-148MHz；其中144-146MHz为唯一主要业务，146-148MHz为与其他业务共同作为主要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;俗称的0.7米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;strong&gt;430-440MHz，次要业务&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不能用于通话的HF业余频段为：&lt;strong&gt;10MHz业余频段&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我国短波业余电台在7MHz频段进行LSB通话时可以实际占用的频率为：&lt;strong&gt;7.030-7.200MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在14MHz频段进行USB通话时可以实际占用的频率为：&lt;strong&gt;14.100-14.350MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在18MHz频段进行USB通话时可以实际占用的频率为：&lt;strong&gt;18.1105-18.168MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在21MHz频段进行USB通话时可以实际占用的频率为：&lt;strong&gt;21.125-21.45MHz，除去21.1495-21.1505&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在24MHz频段进行USB通话时可以实际占用的频率为：&lt;strong&gt;24.9305-24.99MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在29MHz频段进行USB通话时可以实际占用的频率为：&lt;strong&gt;28.3-29.3MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;短波业余电台在29MHz频段进行FM通话时可以实际占用的频率为：&lt;strong&gt;29.51-29.7MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;VHF业余无线电台在144MHz频段进行本地联络时应避免占用的频率为：&lt;strong&gt;144.035-144.053MHz和145.550-145.750MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;UHF业余无线电台在430MHz频段进行本地联络时应避免占用的频率为：&lt;strong&gt;431.9-432.240MHz和435-438MHz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;为划分无线电频率，国际电信联盟《无线电规则》进行了如下的区域划分：&lt;strong&gt;将世界划分为3个区域，中国位于第3区&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我国黄岩岛、东沙岛、钓鱼岛分别属于“CQ分区”的：&lt;strong&gt;27、24、24&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“ITU分区”是IARU的活动计算通信成绩的基础。我国黄岩岛、东沙岛、钓鱼岛分别属于“ITU分区”的：&lt;strong&gt;50、44、44&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;甲偶极天线的增益为6.15dBi，乙偶极天线的增益为1dBd。当两副天线按同样条件架设、用同样功率驱动时、在它们最大发射方向的同一远方地点接收时，两天线产生的信号功率的关系为：&lt;strong&gt;甲天线的信号功率为乙天线的两倍&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我国无线电频率划分表划分给业余业务使用的最低频带为135.7-137.8 kHz，属于无线电频谱的下列频带（波段）：&lt;strong&gt;低频（长波）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我国无线电频率划分表划分给业余业务使用的最接近C波段卫星电视广播频率的频带是5.650-5.850GHz，属于无线电频谱的下列频带（波段）：&lt;strong&gt;超高频（厘米波），SHF&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余电台通信中常用到缩写“SASE”，其意义是：&lt;strong&gt;写好收信人地址的信封&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余电台发起呼叫前应先守听一段时间，如没有听到信号，应再询问“有人使用频率吗”？确认没有应答方能发起呼叫。用CW表达这一询问的方法是：&lt;strong&gt;QRL？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;收发信机面板上的符号ALC代表什么功能？&lt;strong&gt;发信自动电平控制，对射频输出电平进行检测并反馈控制，以维持其在适当限度之内&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;发信机面板上的符号AT代表什么功能？&lt;strong&gt;自动天线调谐，对天线电路的电压驻波比进行检测并进行自动补偿，以维持最小驻波比&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;收发信机面板上的符号ATT代表什么功能？&lt;strong&gt;收信机输入衰减器，在接收大信号时接入，使信号不致过大而使前级电路过载&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;收发信机面板上的符号AGC代表什么功能？&lt;strong&gt;收信机自动增益控制，对中频级信号电平进行检测并反馈控制，防止电路过载&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;收发信机面板上的符号PROC代表什么功能？&lt;strong&gt;发信语音压缩，对音频输入电平进行检测并反馈控制，以提升语音包络幅度较小的部分&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;219/689频移电报技术（frequency-shift telegraphy）是指：电报信号控制载波频率在预定的范围之内变化的调频电报技术。下述业余通信使用的是移频电报技术：&lt;strong&gt;RTTY&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“要我增加功率吗”的业余无线电通信Q简语为：&lt;strong&gt;QRO？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“要我减小功率吗”的业余无线电通信Q简语为：&lt;strong&gt;QRP？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“我的信号有衰落吗”的业余无线电通信Q简语为：&lt;strong&gt;QSB？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“我发报的手法有毛病吗”的业余无线电通信Q简语为：&lt;strong&gt;QSD？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“你正忙着吗”的业余无线电通信Q简语为：&lt;strong&gt;QRL？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“你能传信到×××电台吗”的业余无线电通信Q简语为：&lt;strong&gt;QSP ×××？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“你将在nnnn KHz（或MHz）频率守听×××电台吗”的业余无线电通信Q简语为：&lt;strong&gt;QSX ××× ON nnnn KHz（或MHz）？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“请将频率改到nnnn频率”的业余无线电通信Q简语为：&lt;strong&gt;QSY nnnn KHz（或MHz）&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“我的信号强度如何”的业余无线电通信Q简语为：&lt;strong&gt;QSA？&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余无线电通信常用缩语“AHR”的意思是：&lt;strong&gt;另一个&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“收听”的业余无线电常用缩语是：&lt;strong&gt;KP&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余无线电常用缩语“HST”的意思是：&lt;strong&gt;快速收发报&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;271/689业余无线电CW通信常用缩语“AS”（经常连发在一起）的意思是：&lt;strong&gt;请稍等&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;“QSL卡片管理局”的业余无线电通信常用缩语是：&lt;strong&gt;BURO&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;单元（常用于天线振子）的业余无线电通信常用缩语是：&lt;strong&gt;EL、ELE、ELS&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;284/689业余无线电CW通信常用缩语“ES”的意思是：&lt;strong&gt;和&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;287/689业余无线电通信常用缩语“FR”、“FER”的意思是：&lt;strong&gt;为了，对于&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;291/689“晚上好”的业余无线电通信常用缩语是：&lt;strong&gt;GE&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;318/689业余无线电通信常用缩语“SK”（通常在CW中连在一起拍发）的意思是：&lt;strong&gt;结束通信&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;333/689业余无线电通信常用缩语“XMAS”的意思是：&lt;strong&gt;圣诞节&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余无线电通信常用缩语“XYL”的意思是：&lt;strong&gt;妻子、已婚女子&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;业余无线电通信常用缩语“YL”的意思是：&lt;strong&gt;小姐、女士&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;340/689业余无线电通话常用语“Roger”的用法是：&lt;strong&gt;回答起始语，相当于“明白”，仅在已完全抄收对方刚才发送的信息时使用&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;344/689业余无线电通信中常用的天线种类的缩写BEAM代表：&lt;strong&gt;定向天线&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;347/689业余无线电技术常提到的天线种类的缩写LP代表：&lt;strong&gt;对数周期天线&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;355/689物理量“电阻”描述的是：&lt;strong&gt;电路对电流的阻碍力大小&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;383/689万用电表设在电阻挡，将表笔分别接到尚未连接BALUN和电缆等其它部件的每臂长度均为四分之一波长的偶极天线的中心馈电点两端，读数应为：&lt;strong&gt;无穷大&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;385/689亚音调静噪(CTCSS)是指附加在发射端信号中的一个亚音频控制音调。这个信号的频率范围大致是：&lt;strong&gt;67Hz - 250.3Hz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;409/689一个重复频率为F的非正弦周期信号的频谱包含有：&lt;strong&gt;频率为F的整数倍的无穷多个频率分量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;411/689信号源和负载达到阻抗“匹配”时，信号源内阻损耗的功率为：&lt;strong&gt;与负载得到的输出功率相等&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;415/689某电路输出信号功率是输入信号功率的100万倍，该电路的增益为：&lt;strong&gt;60dB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;某电路输出信号功率是输入信号功率的5倍，该电路的增益约为：&lt;strong&gt;7dB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;信号依次通过增益分别为 x dB、y dB和 z dB的三个电路，总增益为：&lt;strong&gt;（x + y + z）dB&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;功率为0 dBm的射频信号通过增益为 23 dB的电路后，输出功率为：&lt;strong&gt;0.2W&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;438/689“频率失真”是指电路的输出信号波形与输入信号相比，发生了下列变化：&lt;strong&gt;各频率分量的比例发生了改变&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;439/689“非线性失真”是指电路的输出信号波形与输入信号相比，发生了下列变化：&lt;strong&gt;产生了新的频率分量&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;443/689要防止业余HF发射机的杂散发射干扰天线附近的电话机，应该在电话机和电话线之间之间串联：&lt;strong&gt;截止频率不高于1MHz的低通滤波器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;444/689A、B两部HF业余电台相距很近，分别工作在A、B两个频段。为减少B电台受到来自A电台的干扰，可以在B电台与天线之间串联：&lt;strong&gt;中心频率为A的带阻滤波器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;445/689在射频电路分析中，能产生信号频率以外的新频率分量的元器件属于有源元器件，可能成为形成干扰的重要环节。下列元器件中属于有源元器件的有：&lt;strong&gt;半导体二极管&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;在业余收发信机的常见元器件中，标有耐压指标的是：&lt;strong&gt;电容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;450/689在业余收发信机电路中，经常用于隔直流或者给交流信号提供旁路的元件是：&lt;strong&gt;电容&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;468/689在HF业余频段的数据通信段中，用收信机的SSB挡听到一个由两种音调交替组成的信号，这个信号的调制方式最可能属于下述种类：&lt;strong&gt;FSK&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;同样材料、同样直径、同样长度的实心铜线和空心铜管，在交流电路中的发热损耗情况为：&lt;strong&gt;在低频率下实心铜线损耗较小，在高频率下两者损耗一样&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;482/689无线电原理经常用到缩写VFO，它代表：&lt;strong&gt;可变频率振荡器&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;483/689无线电原理经常用到缩写XTAL，它代表：&lt;strong&gt;石英晶体元件&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;485/689某业余通信接收机的中频滤波器带宽有100Hz、400Hz、2.7kHz和6kHz几挡选择。如果要为接收SSB、AM、PSK31和CW方式的信号分别从中选择合适的挡位，应该依次为：&lt;strong&gt;2.7kHz、6kHz、100Hz、400Hz&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;486/689频率为f1、f2的两个正弦交流信号流过一个非线性元件，会发生“混频”。混频产物中属于三阶互调的干扰信号的频率是：&lt;strong&gt;2f1±f2、2f2±f1&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;492/689下列几种图表中，最容易用来表达和解释LC振荡器温度漂移程度的是：&lt;strong&gt;频谱瀑布图&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;结束后&lt;/h2&gt;
&lt;p&gt;可以买短波电台或者重新申请。笔者没钱，遂终。&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Vim 与 VSCode 天衣无缝的配合</title><link>https://cworld0.com/blog/vscode-vim</link><guid isPermaLink="true">https://cworld0.com/blog/vscode-vim</guid><description>众所周知 Vim 是一种码代码习惯，自然也少不了 VScode 的水乳交融。</description><pubDate>Fri, 03 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;export function FunctionTable({ name, desc, vim, rank, children }) {
return (



Setting ID

{name}








{desc}





{vim ?? &apos;Null&apos;}

{children}

推荐指数：
{
// print stars (count rank)
Array.from({ length: rank }, (_) =&gt; (






))
}


)
}&lt;/p&gt;
&lt;p&gt;毕竟 VSCode 现在可是正统的 “宇宙第一 IDE”，Vim 或者 Nvim 在很多方面显然要甘拜下风，很多时候都不得不重新捡起 VSCode 写代码（甚至尤其是 Windows 上糟糕的终端体验）。所以作为 Vim 的第二期教程，就来讲讲在 VSCode 上如何优雅地使用 Vim。&lt;/p&gt;
&lt;p&gt;此外这里也给出了对应的 Vim 插件名称，读者也可以在正常的 Vim 或者 Neovim 上使用这些插件，体验完全一致。&lt;/p&gt;
&lt;h2&gt;插件&lt;/h2&gt;
&lt;p&gt;对于 VSCode，Vim 插件少不了！&lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=vscodevim.vim&quot;&gt;VSCodeVim&lt;/a&gt; 速速装完了再看下文。&lt;/p&gt;
&lt;h3&gt;Input Method&lt;/h3&gt;
&lt;p&gt;对于非英文用户，在退出 Insert 模式后需要切换回英文输入模式，这对于偶尔频繁用非英文输入内容时很烦人（比如我正在输入的这篇文章）。这个配置可以在退出 Insert 模式时自动切换到英文，重新回到 Insert 的时候切换回上次退出时候的输入法，大幅降低你的血压。&lt;/p&gt;
&lt;p&gt;这可能需要 &lt;code&gt;im-select&lt;/code&gt; 或者 &lt;code&gt;fcitx&lt;/code&gt; 等工具的支持。不过对于 Windows 官方的微软输入法，推荐使用 &lt;a href=&quot;https://github.com/A-23187/AIMSwitcher&quot;&gt;AIMSwitcher&lt;/a&gt;。它能在不切换输入法语言的请款下，调用微软拼音输入法的中英文切换。&lt;/p&gt;
&lt;p&gt;配置参考：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;vim.autoSwitchInputMethod.enable&quot;: true,
  &quot;vim.autoSwitchInputMethod.switchIMCmd&quot;: &quot;C:/Users/cworld/.local/bin/AIMSwitcher.exe --imm {im}&quot;,
  &quot;vim.autoSwitchInputMethod.defaultIM&quot;: &quot;0&quot;,
  &quot;vim.autoSwitchInputMethod.obtainIMCmd&quot;: &quot;C:/Users/cworld/.local/bin/AIMSwitcher.exe --imm&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;vim-surround&lt;/h3&gt;
&lt;p&gt;写代码经常碰到外框 &lt;code&gt;&amp;#x3C;&gt;&lt;/code&gt;、&lt;code&gt;&quot;&quot;&lt;/code&gt;、&lt;code&gt;{}&lt;/code&gt; 等？&lt;code&gt;surround.vim&lt;/code&gt; 插件可以帮你快速选择和操作这些外框字符。即使是 &lt;code&gt;&amp;#x3C;p&gt;hello world&amp;#x3C;/p&gt;&lt;/code&gt; 这样选择起来非常麻烦的内容，也可以通过 &lt;code&gt;yit&lt;/code&gt; 来快速选择外框。当然，不只是选择，添加、替换、删除都是一应俱全的。&lt;/p&gt;
&lt;p&gt;| Surround Command           | Description                                              |
| -------------------------- | -------------------------------------------------------- |
| &lt;code&gt;y s &amp;#x3C;motion&gt; &amp;#x3C;desired&gt;&lt;/code&gt;   | Add &lt;code&gt;desired&lt;/code&gt; surround around text defined by &lt;code&gt;&amp;#x3C;motion&gt;&lt;/code&gt; |
| &lt;code&gt;d s &amp;#x3C;existing&gt;&lt;/code&gt;           | Delete &lt;code&gt;existing&lt;/code&gt; surround                               |
| &lt;code&gt;c s &amp;#x3C;existing&gt; &amp;#x3C;desired&gt;&lt;/code&gt; | Change &lt;code&gt;existing&lt;/code&gt; surround to &lt;code&gt;desired&lt;/code&gt;                  |
| &lt;code&gt;S &amp;#x3C;desired&gt;&lt;/code&gt;              | Surround when in visual modes (surrounds full selection) |&lt;/p&gt;
&lt;p&gt;具体玩法 VScode 内部给了快速跳转链接，这里就不展开了。&lt;/p&gt;
&lt;h3&gt;vim-easymotion&lt;/h3&gt;
&lt;p&gt;移动光标确实常常力不从心，从一头跳到另一头可能最快的方法还是鼠标。所以我们有了 &lt;code&gt;easymotion&lt;/code&gt; 插件，快速输入你想要找的字母，然后快速跳转（或者快速跳转到后文的任意单词的开头/结尾）。&lt;/p&gt;
&lt;p&gt;使用指令很多，这里贴官方表：&lt;/p&gt;
&lt;p&gt;| Motion Command                      | Description                                                                                                    |
| ----------------------------------- | -------------------------------------------------------------------------------------------------------------- |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; s &amp;#x3C;char&gt;&lt;/code&gt;         | Search character                                                                                               |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; f &amp;#x3C;char&gt;&lt;/code&gt;         | Find character forwards                                                                                        |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; F &amp;#x3C;char&gt;&lt;/code&gt;         | Find character backwards                                                                                       |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; t &amp;#x3C;char&gt;&lt;/code&gt;         | Til character forwards                                                                                         |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; T &amp;#x3C;char&gt;&lt;/code&gt;         | Til character backwards                                                                                        |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; w&lt;/code&gt;                | Start of word forwards                                                                                         |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; b&lt;/code&gt;                | Start of word backwards                                                                                        |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; l&lt;/code&gt;                | Matches beginning &amp;#x26; ending of word, camelCase, after &lt;code&gt;_&lt;/code&gt;, and after &lt;code&gt;#&lt;/code&gt; forwards                               |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; h&lt;/code&gt;                | Matches beginning &amp;#x26; ending of word, camelCase, after &lt;code&gt;_&lt;/code&gt;, and after &lt;code&gt;#&lt;/code&gt; backwards                              |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; e&lt;/code&gt;                | End of word forwards                                                                                           |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; ge&lt;/code&gt;               | End of word backwards                                                                                          |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; j&lt;/code&gt;                | Start of line forwards                                                                                         |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; k&lt;/code&gt;                | Start of line backwards                                                                                        |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; / &amp;#x3C;char&gt;... &amp;#x3C;CR&gt;&lt;/code&gt; | Search n-character                                                                                             |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; bdt&lt;/code&gt;      | Til character                                                                                                  |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; bdw&lt;/code&gt;      | Start of word                                                                                                  |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; bde&lt;/code&gt;      | End of word                                                                                                    |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; bdjk&lt;/code&gt;     | Start of line                                                                                                  |
| &lt;code&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt;&amp;#x3C;leader&gt; j&lt;/code&gt;        | JumpToAnywhere motion; default behavior matches beginning &amp;#x26; ending of word, camelCase, after &lt;code&gt;_&lt;/code&gt; and after &lt;code&gt;#&lt;/code&gt; |&lt;/p&gt;
&lt;p&gt;缺点大概是要动脑子快速输入对应位置，很多时候其实快速行跳转 + &lt;code&gt;f&lt;/code&gt; 就定位了。这个都是习惯问题，习惯了肯定好用，故更适用于高阶玩家。&lt;/p&gt;
&lt;h3&gt;vim-commentary&lt;/h3&gt;
&lt;p&gt;这玩意被默认启用！使用方法很简单：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;gc&lt;/code&gt; 注释选中行（&lt;code&gt;gcc&lt;/code&gt; 注释当前行，同理 &lt;code&gt;gc2j&lt;/code&gt; 注释当前两行、&lt;code&gt;gcap&lt;/code&gt; 注释当前段落）；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gC&lt;/code&gt; 注释选中段落（同理 &lt;code&gt;gCC&lt;/code&gt;、&lt;code&gt;gC2j&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;vim-sneak&lt;/h3&gt;
&lt;p&gt;这样的描述会很奇怪，我们需要举例说明：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;something.data.set(
  &apos;rounded-t-2xl&apos;,
  inView &amp;#x26;&amp;#x26;
    (this.target.index
      ? !this.headingProgress[this.tocLinks[i - 1]?.slug].inView
      : &apos;rounded-b-2xl&apos;),
  true
)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;假设我想把代码中的 &lt;code&gt;(this.target.index ? ...)&lt;/code&gt; 表达式替换为 &lt;code&gt;(this.target. index &amp;#x26;&amp;#x26; &amp;#x3C;new content&gt;)&lt;/code&gt;，使用传统的查找选择编辑就很是捉襟见肘。但是如果使用了这个插件，我们就可以简化为：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前往关键位置 &lt;code&gt;?&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;输入 &lt;code&gt;cz),&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;后续内容全部被清空，进入编辑模式。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;指令构成其实是 &lt;code&gt;&amp;#x3C;operator&gt;z&amp;#x3C;char&gt;&amp;#x3C;char&gt;&lt;/code&gt;，&lt;code&gt;z&lt;/code&gt; 换 &lt;code&gt;Z&lt;/code&gt; 就是向前查找。&lt;/p&gt;
&lt;p&gt;此外还可以使用 &lt;code&gt;s&amp;#x3C;char&gt;&amp;#x3C;char&gt;&lt;/code&gt; 或 &lt;code&gt;S&amp;#x3C;char&gt;&amp;#x3C;char&gt;&lt;/code&gt; 快速跳转！甚至可以使用 &lt;code&gt;;&lt;/code&gt; 或 &lt;code&gt;,&lt;/code&gt; 重复跳转，可谓是非常便捷了。Vim 还提供了 “把原生的 &lt;code&gt;f&lt;/code&gt; 替换成这个插件的” 以及忽略大小写功能，可以按需开启。&lt;/p&gt;
&lt;h3&gt;vim-textobj-arguments&lt;/h3&gt;
&lt;p&gt;众所周知，Vim 的 Text Object 是其相当强大的特性之一，如 &lt;code&gt;w&lt;/code&gt; 代表 Word, &lt;code&gt;L&lt;/code&gt; 代表 &lt;code&gt;Line&lt;/code&gt;。VSCodeVim 也提供了一些额外的 Text Object 支持，比如：函数作为现代编程的基本单元，参数经常涉及修改。这个插件就能快速选择对应参数：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;foo(a.test.backwards, b, c, d)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;光标放在第一个参数上，&lt;code&gt;daa&lt;/code&gt; 就能删除整个参数（Argument）（含分割逗号），&lt;code&gt;cia&lt;/code&gt; 就能替换整个参数。这个插件还支持 &lt;code&gt;a&lt;/code&gt;、&lt;code&gt;i&lt;/code&gt;、&lt;code&gt;r&lt;/code&gt;、&lt;code&gt;l&lt;/code&gt;、&lt;code&gt;c&lt;/code&gt;、&lt;code&gt;d&lt;/code&gt;、&lt;code&gt;y&lt;/code&gt; 等操作，非常方便。&lt;/p&gt;
&lt;p&gt;后来似乎这个插件做了很多衍生的 Text Object：&lt;/p&gt;
&lt;p&gt;(11(22))&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;2&amp;#x3C;scope&gt;(&lt;/code&gt; 选择当前第二层括号内的内容，如在单词 &lt;code&gt;inside&lt;/code&gt; 位置执行 &lt;code&gt;d2i)&lt;/code&gt; 会将 &lt;code&gt;out(middle (inside))&lt;/code&gt; 清除为 &lt;code&gt;out()&lt;/code&gt;。同理多层&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t&lt;/code&gt; 即 Tag，选择 HTML 标签。修改标签名称操作就应该为 &lt;code&gt;cstt&lt;/code&gt;，意为 Change Surround from Tag to Tag，也就是 「修改围绕的标签为另一个标签」&lt;/li&gt;
&lt;li&gt;&lt;code&gt;q&lt;/code&gt; 即 Quote，选择双引号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;b&lt;/code&gt; 即 Bracket，选择小括号&lt;/li&gt;
&lt;li&gt;&lt;code&gt;B&lt;/code&gt; 即 Bigger Bracket，选择大括号&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;VSCodeVim tricks!&lt;/h2&gt;
&lt;p&gt;这部分内容似乎有点进阶？没事看看就行。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;zc&lt;/code&gt; &lt;code&gt;zo&lt;/code&gt; 可以开关折叠，&lt;code&gt;zR&lt;/code&gt; &lt;code&gt;zM&lt;/code&gt; 可以折叠所有或者展开所有&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gd&lt;/code&gt; - jump to definition.（一键跳注释，很方便吧？）&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gq&lt;/code&gt; - on a visual selection reflow and wordwrap blocks of text, preserving commenting style. Great for formatting documentation comments.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gb&lt;/code&gt; - adds another cursor on the next word it finds which is the same as the word under the cursor.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;af&lt;/code&gt; - visual mode command which selects increasingly large blocks of text. For example, if you had &quot;blah (foo [bar &apos;ba|z&apos;])&quot; then it would select &apos;baz&apos; first. If you pressed &lt;code&gt;af&lt;/code&gt; again, it&apos;d then select [bar &apos;baz&apos;], and if you did it a third time it would select &quot;(foo [bar &apos;baz&apos;])&quot;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;gh&lt;/code&gt; - equivalent to hovering your mouse over wherever the cursor is. Handy for seeing types and error messages without reaching for the mouse!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;资料&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.barbarianmeetscoding.com/boost-your-coding-fu-with-vscode-and-vim&quot;&gt;Boost Your Coding Fu With VSCode and Vim&lt;/a&gt;：你敢信，有人真的为 VSCode + Vim 写了本书。这抽象程度简直就跟这发布网址一样，抽象的域名配合抽象的路径，最后搭配抽象的内容量，绝了（值得一提，排版和标题字号也很抽象）。不过内容详实巨细无遗，值得一读。&lt;/p&gt;
&lt;h3&gt;References&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/613666124&quot;&gt;编辑器进化 VSCode + Vim&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="/_astro/thumbnail.CvG1vLfH.jpg"/><enclosure url="/_astro/thumbnail.CvG1vLfH.jpg"/></item><item><title>自制/手搓麦克森八木天线记录</title><link>https://cworld0.com/blog/yagi</link><guid isPermaLink="true">https://cworld0.com/blog/yagi</guid><description>Moxon-Yagi 麦克森 UV 双段卫星八木天线手动制作记录</description><pubDate>Sun, 13 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前戏&lt;/h2&gt;
&lt;p&gt;那是 10 月 12 日一个风平浪静的下午。在提前查阅卫星 ISS (Zarya) 会按时过境、仰角七十多度后，我准时掏出了我的电脑解码器、手台和那根被寄予厚望的 Rh795 天线，满怀期待地守在顶楼阳台，等待这次 ISS 活动的最后一次良好的 SSTV 窗口期。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2024-10-12.tCccWJzq.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;2024-10-12&quot;&gt;&lt;/p&gt;
&lt;p&gt;那是一次还蛮有趣的 SSTV 接收活动，8 号一直持续到 14 号，而且时间正正好好，我有足够的时间去调整我的设备、位置和多普勒模式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fsstvnew.DULAbIJw.webp&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;ssi sstv activity&quot;&gt;&lt;/p&gt;
&lt;p&gt;然后...就没有然后。多普勒模式 s2，常规模式 s3 杂音，啥也没有接收到。转头看交流群，各大 Ham 早已各显神通，用优良的装备接收到了一张张格外清晰的图片。无奈之下，我又打开了尘封大半个月的淘宝，暗暗下定决定一定要把八木天线手搓出来。隧有此文。&lt;/p&gt;
&lt;h2&gt;理论&lt;/h2&gt;
&lt;p&gt;理论主要就是图了。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbg8bxm-yagi.DuFFZv-D.jpg&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;bg8bxm yagi manual&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbg8lng-yagi.Dl--s7mv.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;bg8lng yagi manual&quot;&gt;&lt;/p&gt;
&lt;p&gt;细节制作建议参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1Un4y1d738/&quot;&gt;自制八木天线系列&lt;/a&gt; 视频，讲的很详细，很多材料都是参考他的。&lt;/p&gt;
&lt;h2&gt;进货&lt;/h2&gt;
&lt;p&gt;选购过程实在是一波三折，这里感谢 BG8LNG 的指导付出。作为学生实在没有什么趁手的现成工具，只能啥都写进清单购买，要是读者有部分零件一定会比笔者这里便宜不少。先给出一个参考：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Ftaobao-materials.BBCbBxq6.png&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;taobao materials&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中核心东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;304 不锈钢棒：3mm 是很多前辈试验出来的比较好的直径。&lt;/li&gt;
&lt;li&gt;螺纹牙棒：固定联轴器 &amp;#x26; 拆分光杆，顺带起到方便拆卸收纳的作用。如果你觉得都可以一根光杆嗦到底也可以省掉。&lt;/li&gt;
&lt;li&gt;SMA 单边连接跳线：老 Ham 指出 1 米长度绰绰有余，自信的话也可以买短一点，不过宽边窄用，个人建议新手买满 1 米（你根本不知道你的需求是什么）&lt;/li&gt;
&lt;li&gt;PVC 管：这里分成两部分，一来是方便收纳，二来是拆分后下半可作为 U1V2 八木天线使用。推荐使用 32mm + 25mm 直径，注意还需购买变径转接头，以及为了美观建议购入两端的堵帽塞头。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;你有的话可以省掉买的东西：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;螺母 &amp;#x26; 铜鼻子：连接牙棒和馈线，需要配合螺纹牙棒使用，否则只能直接紧焊到光杆上。&lt;/li&gt;
&lt;li&gt;电焊笔：焊接馈线。&lt;/li&gt;
&lt;li&gt;热熔胶枪：固定你想固定的东西 &amp;#x26; 馈线裸露部分绝缘处理。&lt;/li&gt;
&lt;li&gt;电工胶布：固定 &amp;#x26; 绝缘。&lt;/li&gt;
&lt;li&gt;美工刀：裁切 &amp;#x26; 给 PVC 管打孔（待证实）。&lt;/li&gt;
&lt;li&gt;断线钳：商家帮忙加工价格甚至轻易超过这位工具本身，老老实实自己买自己搞吧。&lt;/li&gt;
&lt;/ul&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;最后还有天分（天线分析仪/矢量网络分析仪），目前主流是 NanoVNA，一般价格在两百左右，并且有点容易吃灰，建议去其他 Ham 那里借用。&lt;/p&gt;
&lt;h2&gt;制作&lt;/h2&gt;
&lt;p&gt;制作确实挺难一帆风顺...遇到了如下问题 &amp;#x26; 解决方案：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;开孔：起初用剪刀打孔，后来因为过分费力，直接用小电烙下手了。一般一轮只能打一到三个洞，每轮打孔后冷却后需快速清理。总体还算凑合。&lt;/li&gt;
&lt;li&gt;钢丝杆：应该比联轴器小上半毫米，否则插不进去。只能重买（还好这玩意便宜）。&lt;/li&gt;
&lt;li&gt;螺纹杆：下半应该采用尺寸更大的款式。不过好像已买的部分本来就不够。&lt;/li&gt;
&lt;li&gt;固定：下半方框还是挺难固定的...本来是买了螺母，结果发现买成自锁款式了，没法固定，又只能重买...被坑坏了。光螺母内部拧上不一定够用，建议在左右两端间隔处加额外东西固定。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;先不说了，上几张图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2024_10_16_19_29_IMG_0629.DZDjzXtt.jpg&amp;#x26;w=3840&amp;#x26;q=100&quot; alt=&quot;这样才合适的光杆粗细&quot;&gt;&lt;/p&gt;
&lt;p&gt;↑ 这样才合适的光杆粗细&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2024_10_17_19_07_IMG_0636.DENLHAM4.jpg&amp;#x26;w=3840&amp;#x26;q=100&quot; alt=&quot;辛辛苦苦打磨的合适管长、使用纸筒定位两端对应打孔&quot;&gt;&lt;/p&gt;
&lt;p&gt;↑ 辛辛苦苦打磨的合适管长、使用纸筒定位两端对应打孔&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2024_10_17_21_27_IMG_0644.2pqMwwBK.jpg&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;剥掉皮处理后的馈线&quot;&gt;&lt;/p&gt;
&lt;p&gt;↑ 剥掉皮处理后的馈线&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2024_10_17_19_37_IMG_0641.Bd01g_We.jpg&amp;#x26;w=3840&amp;#x26;q=100&quot; alt=&quot;正在制作中混乱的桌面&quot;&gt;&lt;/p&gt;
&lt;p&gt;↑ 正在制作中混乱的桌面&lt;/p&gt;
&lt;h2&gt;结果&lt;/h2&gt;
&lt;p&gt;结果当然是大获全胜了😉&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fimg_182508.xzPzvReY.jpeg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;ISS Activity SSTV Image&quot;&gt;&lt;/p&gt;
&lt;p&gt;已经上传到 &lt;a href=&quot;https://ariss-usa.org/ARISS_SSTV/&quot;&gt;ARISS SSTV 官网&lt;/a&gt;，被永久保存下来了：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2025-1-20.BPND1Vl4.png&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;ARISS SSTV&quot;&gt;&lt;/p&gt;
&lt;p&gt;当然伴随的还有一个还蛮帅的证书：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FDiploma.t6ypWZbd.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;Diploma&quot;&gt;&lt;/p&gt;
&lt;p&gt;（什么？你问我为什么只发了这些？只是因为常住地天台不打开罢了，或者恰好在开活动的时候忙罢了，或者我回老家不方便带回去罢了）&lt;/p&gt;
&lt;p&gt;综上，买材料踩坑不少，希望对读者有所帮助，选购少踩坑~&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.B16Fz8f4.jpg"/><enclosure url="/_astro/thumbnail.B16Fz8f4.jpg"/></item><item><title>rehype-autolink-headings Simple Version</title><link>https://cworld0.com/blog/rehype-autolink-headings</link><guid isPermaLink="true">https://cworld0.com/blog/rehype-autolink-headings</guid><description>关于我看不下去 rehype-autolink-headings 过于复杂这件事</description><pubDate>Tue, 03 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { GithubCard } from &apos;astro-pure/advanced&apos;&lt;/p&gt;
&lt;p&gt;本来 &lt;code&gt;rehype-autolink-headings&lt;/code&gt; 是一个 &lt;code&gt;@unified&lt;/code&gt; 系列的 &lt;code&gt;rehype&lt;/code&gt; 插件，用于给标题添加链接锚点。但是咱也不知道为啥，就这么一个简单的添加链接的插件，却塞了一堆乱七八糟的东西和依赖，所以就...重写了。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://bundlejs.com/?q=rehype-autolink-headings-simple&quot;&gt;&lt;img src=&quot;https://deno.bundlejs.com/?q=rehype-autolink-headings-simple&amp;#x26;badge=detailed&quot; alt=&quot;bundlejs&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;其他用法应该都是兼容旧库的。就这样吧。&lt;/p&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npmjs.com/package/rehype-autolink-headings-simple&quot;&gt;npm package&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Detail&lt;/h2&gt;
&lt;p&gt;A simple version of &lt;a href=&quot;https://github.com/rehypejs/rehype-autolink-headings&quot;&gt;rehype-autolink-headings&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Less dependencies and less useless code. Using typescript to develop.&lt;/p&gt;
&lt;h2&gt;Usage&lt;/h2&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;npm install rehype-autolink-headings-simple
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;import { rehypeAutolinkHeadings } from &apos;rehype-autolink-headings-simple&apos;
import { parse } from &apos;rehype-parse&apos;
import { stringify } from &apos;rehype-stringify&apos;
import { unified } from &apos;unified&apos;

const processor = unified()
  .use(parse)
  .use(rehypeAutolinkHeadings, {
    behavior: &apos;append&apos;,
    properties: {
      behavior: &apos;append&apos;,
      properties: { className: [&apos;anchor&apos;] },
      content: { type: &apos;text&apos;, value: &apos;#&apos; }
    }
  })
  .use(stringify)

const result = processor.processSync(&apos;&amp;#x3C;h1&gt;Heading&amp;#x3C;/h1&gt;&apos;).toString()
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Known issues&lt;/h2&gt;
&lt;p&gt;Astro should change render order manually. See &lt;a href=&quot;https://docs.astro.build/en/guides/markdown-content/#heading-ids-and-plugins&quot;&gt;Astro: Heading IDs and plugins&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;License&lt;/h2&gt;
&lt;p&gt;The MIT License (MIT).&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>业余无线电进阶玩法</title><link>https://cworld0.com/blog/amateur-radio-2</link><guid isPermaLink="true">https://cworld0.com/blog/amateur-radio-2</guid><description>简单呼中继以外的进阶玩法。因为玩法太多，所以单独开一篇文章继续记录</description><pubDate>Mon, 07 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;信号调制模式&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;部分内容摘自 &lt;a href=&quot;https://zhuanlan.zhihu.com/p/461218164&quot;&gt;模拟信号调制解调----AM、FM调制解调原理分析&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;AM 调幅，使载波的振幅随调制信号的变化规律而变化。航空波段（Airband，108Mhz到137Mhz）就是这个（更多航空波段知识可阅读 &lt;a href=&quot;https://zhuanlan.zhihu.com/p/60645454&quot;&gt;航空波段为什么使用调幅制式？&lt;/a&gt;）。&lt;/li&gt;
&lt;li&gt;FM 调频，载波的瞬时频率随调制信号成线性变化的一种调制方式。分为两种：wfm 宽带就是调频广播，nfm 窄带就是业余无线电常用的调制方式。&lt;/li&gt;
&lt;li&gt;CW 等幅波（Continuous Wave），既不调幅也不调频，靠通断实现通信，一般指等幅电报通信。&lt;/li&gt;
&lt;li&gt;DSP 双边带信号，由调制信号和载波信号直接相乘得到的，它只有上下边带分量，没有载波分量。&lt;/li&gt;
&lt;li&gt;SSB 单边带信号，通过滤除双边带信号的一个边带而得到。USB 和 LSB 同属单边带调制波（SSB），一个是上边带调制，一个是下边带调制。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;日志&lt;/h2&gt;
&lt;p&gt;ADIF（Amateur Data Interchange Format，&lt;a href=&quot;https://adif.org/&quot;&gt;官网&lt;/a&gt;）是一种约定俗成的通用日志格式，一般为按照特定格式的纯文本文件，文件后缀为 &lt;code&gt;adi&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;其中你的每一条日志通联信息被称为一条 QSO。&lt;/p&gt;
&lt;p&gt;本地记录程序：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://polo.ham2k.com/&quot;&gt;Ham2K Portable Logger&lt;/a&gt; (&lt;a href=&quot;https://github.com/ham2k/app-polo&quot;&gt;Github&lt;/a&gt;)
&lt;a href=&quot;https://play.google.com/store/apps/details?id=com.ham2k.polo.beta&quot;&gt;Google Play&lt;/a&gt; | &lt;a href=&quot;https://apps.apple.com/app/id6478713938&quot;&gt;AppStore&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;云端存储服务方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://logbook.qrz.com/logbook&quot;&gt;QRZ Logbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://clublog.org/loginform.php&quot;&gt;Clu Log&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://lotw.arrl.org&quot;&gt;LOTW / ARRL&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;相关资料： &lt;a href=&quot;https://forum.hamcq.cn/d/1395&quot;&gt;qrz.com 以及 lotw 的使用以及设置&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;上传工具：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;TQSL 使用教程（还教你了如何注册 LOTW）：&lt;a href=&quot;https://www.bilibili.com/video/BV1294y157pY&quot;&gt;LOTW如何注册？业余无线电lotw通联日志本注册、上传、台站设置保姆级教程&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一个很方便的多平台第三方上传工具：&lt;a href=&quot;https://gitee.com/yuzhenwu/x-qsl-amateur-radio-adif-tool/&quot;&gt;yzwcfhmy/X-QSL业余无线电ADIF工具 - Gitee&lt;/a&gt;（使用讲解视频：&lt;a href=&quot;https://www.bilibili.com/video/BV15r42137EW&quot;&gt;QSO效率翻倍！一句话上传通联日志，一键同步多个平台！&lt;/a&gt;）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;比如下面这个 iframe 就展示了我在 QRZ 上上传的通联日志：&lt;/p&gt;
&lt;h2&gt;通联卫星&lt;/h2&gt;
&lt;h3&gt;数据查找&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/677448421&quot;&gt;常用业余无线电 FM 卫星频率转发表&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;卫星状况查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;AMSAT-NA：https://www.amsat.org/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AMSAT-UK：https://amsat-uk.org/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AMSAT 卫星状态查询：http://www.amsat.org/status/&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;JE9PEL 业余卫星频率表：http://www.ne.jp/asahi/hamradio/je9pel/satslist.htm&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;DK3WN 频率表：www.dk3wn.info/p/?page_id=29535&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.amsat.org/&quot;&gt;AMSAT&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于卫星数据查找：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.n2yo.com/&quot;&gt;N2YO&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.heavens-above.com/AmateurSats.aspx?lat=29.060973&amp;#x26;lng=119.657291&amp;#x26;loc=Unspecified&amp;#x26;alt=0&amp;#x26;tz=ChST&quot;&gt;Heavens Above&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;微信小程序：云端卫星&lt;/li&gt;
&lt;li&gt;Android App: Look4Sat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;短波&lt;/h2&gt;
&lt;p&gt;直接看文章，什么是短波通信、具体通联方式：&lt;a href=&quot;https://mp.weixin.qq.com/s/DhOM2G1NMPohU4gPhCWdiQ&quot;&gt;业余无线电的成长之路——短波篇&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;短波最好是单独架设优质天线。摘自 &lt;a href=&quot;https://zhuanlan.zhihu.com/p/676718325&quot;&gt;城市业余无线电爱好者天线解决方案：“鱼竿”天线 – GP天线的制作&lt;/a&gt;，其文中写的笔者手搓的“鱼竿”天线很有意思，有兴趣的可以阅读。&lt;/p&gt;
&lt;p&gt;短波天线：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;第一类——垂直地网天线（GP天线），这种天线架设形式简单，最易于安装，如果有足够数量的地网增加辐射，效率堪比偶极天线。由于GP天线的发射仰角较低，所以其作为简单有效的DX利器不可或缺。缺点就是噪音大。&lt;/li&gt;
&lt;li&gt;第二类——偶极天线（DP天线），常见的架设形式有倒V、正V、水平等形式，DP天线的效率相对要比GP天线高很多，且噪音要比GP天线低很多，但是占地面积大，单人架设安装不是很方便。&lt;/li&gt;
&lt;li&gt;第三类——指向性天线“八木”（YAGI）。这种天线通常是由一个主振子、一个反射器和多个引向器单元组成。八木天线的效率高、方向性强，依照天线的尺寸，在所指方向拥有较高增益。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;SDR&lt;/h2&gt;
&lt;p&gt;软件无线电，即 Software Defined Radio，SDR。通俗来讲，SDR就是基于通用的硬件平台上用软件来实现各种通信模块。&lt;/p&gt;
&lt;p&gt;概念中有两个关键词，“通用硬件平台”和“软件”。“通用硬件平台”就是说我们能基于这个硬件平台实现各种各样的通信功能，而不是说一个硬件平台只能实现一种通信功能。“软件”来实现通信模块是相对于传统的无线电技术来讲的，传统的无线电通信模块都是用硬件电路来设计，一个通信电路&lt;/p&gt;
&lt;p&gt;只能完成一种通信功能，开发周期长，开发成本高，而且一旦设计好后功能就无法改变。软件化可以加快通信模块的开发速度，降低开发成本，便于调试和维护。&lt;/p&gt;
&lt;p&gt;我们可以用下图来简单看看软件无线电基站与传统的无线电基站的区别。图片左边的是传统的大基站，图片右边的是基于软件无线电的小型化基站。传统的商用基站体积较大，需要设计很多专用的硬件电路；而SDR基站体积较小，大部分通信功能由软件实现。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fsdr.BXXG5E-L.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;sdr&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果你看完上文短波心血来潮想要听听，但是手里设备不支持短波或短波接收效果很差，那这里的在线 SDR 想必能撩动你的心扉。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;一个不知道是啥的 SDR 在线收听站（需要注册，没有尝试过，不知道怎么归类了，先放这里）：&lt;a href=&quot;https://sdr.cqradio.cn/&quot;&gt;SDR在线收听站&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;WebSDR&lt;/h3&gt;
&lt;p&gt;什么是 WebSDR？&lt;/p&gt;
&lt;p&gt;与传统的接收机相比，WebSDR是连接到互联网的软件定义无线电接收器，允许很多接收者独立收听和同时调节接收频率模式等参数。SDR技术使收听者独立调节成为可能，收听不同的信号；与传统的接收机相比已经实现了互联网化。如果想测试不同天线、设备的DX发射效果，可以打开WebSDR页面，选择某个位置的WebSDR作为接收机，调谐到合适的频率，看能否收到自己发射的信号，以对比不同天线、功率的发射效果。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://www.websdr.org&quot;&gt;Web SDR&lt;/a&gt; 给出了世界上各大洲的 WebSDR 接收机的链接地址，其中业余无线电用户比较多的欧洲、美国的WebSDR接收机比较多。&lt;/p&gt;
&lt;p&gt;目前 WebSDR 维护人好像是荷兰的 &lt;a href=&quot;https://www.qrz.com/db/PA3FWM&quot;&gt;PA3FWM&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;还有一些 SDR 网站列表（好像 WebSDR 官网就能查所有活跃的）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;荷兰：&lt;a href=&quot;http://websdr.ewi.utwente.nl:8901&quot;&gt;http://websdr.ewi.utwente.nl:8901&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;美国：&lt;a href=&quot;http://websdr1.kfsdr.com:8901&quot;&gt;http://websdr1.kfsdr.com:8901&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;德国：&lt;a href=&quot;http://kiwisdr.inf.dhbw-ravensburg.de:8073&quot;&gt;http://kiwisdr.inf.dhbw-ravensburg.de:8073&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;俄罗斯：&lt;a href=&quot;http://sdr.r9a.ru&quot;&gt;http://sdr.r9a.ru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;巴西：&lt;a href=&quot;http://appr.org.br:8905&quot;&gt;http://appr.org.br:8905&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;英国：&lt;a href=&quot;https://eshail.batc.org.uk/nb&quot;&gt;https://eshail.batc.org.uk/nb&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;安道尔公国：&lt;a href=&quot;http://sdr.radioandorra.org&quot;&gt;http://sdr.radioandorra.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;俄罗斯：&lt;a href=&quot;http://websdr.srr76.ru&quot;&gt;http://websdr.srr76.ru&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;荷兰：&lt;a href=&quot;http://sdr.websdrmaasbree.nl:8901&quot;&gt;http://sdr.websdrmaasbree.nl:8901&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;美国：&lt;a href=&quot;http://websdr.k3fef.com:8901&quot;&gt;http://websdr.k3fef.com:8901&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;KiwiSDR&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;摘自 &lt;a href=&quot;https://www.hellocq.net/forum/read.php?tid=354420&quot;&gt;推荐一个比WebSDR更好玩的KiwiSDR&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;KiwiSDR 较 WebSDR 的优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;使用 Kiwi 板子，频率均为范围是 0~32MHz，而WebSDR使用各种板子频宽不统一；&lt;/li&gt;
&lt;li&gt;软件Web操作界面友好，体验好，持续维护，而WebSDR体验极差，特别是手机H5页面，作者几乎不维护了；&lt;/li&gt;
&lt;li&gt;硬件开源！可以自行打板，也可以在 eBay 购买。&lt;/li&gt;
&lt;li&gt;预置常用频率（特别是业余段）&lt;/li&gt;
&lt;li&gt;AM广播的音质接近立体声&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;官网：&lt;a href=&quot;http://kiwisdr.com/&quot;&gt;KiwiSDR: Wide-band SDR + GPS cape for the BeagleBone Black&lt;/a&gt; | &lt;a href=&quot;https://github.com/jks-prv/Beagle_SDR_GPS&quot;&gt;Github&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;一些能用的列表：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;美国纽约：&lt;a href=&quot;http://www.jimlill.com:8073/&quot;&gt;http://www.jimlill.com:8073/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;日本：&lt;a href=&quot;http://ja0veu.hopto.org:8073/&quot;&gt;http://ja0veu.hopto.org:8073/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;（懒得写了，官网有 &lt;a href=&quot;http://kiwisdr.com/public/&quot;&gt;可用列表&lt;/a&gt; 以及 &lt;a href=&quot;http://rx.linkfanel.net/&quot;&gt;地图1&lt;/a&gt; | &lt;a href=&quot;https://ve3sun.com/KiwiSDR/index.php&quot;&gt;地图2&lt;/a&gt;）&lt;/p&gt;
&lt;h2&gt;SSTV&lt;/h2&gt;
&lt;p&gt;推荐文章：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.bilibili.com/video/BV1ex1qYSE2y&quot;&gt;BA7LCE的业余无线电基础课——4 业余无线电中的SSTV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/105460358&quot;&gt;用MMSSTV发送和接收图片&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;对于 PC 端的 MMSSTV，因为 SSTV 传输方式的抗干扰普遍很差，所以自己玩建议使用转换软件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;MMV 转 WAV：&lt;a href=&quot;https://hamsoft.ca/pages/extras-add-on/mmv2wav.php&quot;&gt;MMV2WAV&lt;/a&gt;（MMSSTV 作者提供）&lt;/li&gt;
&lt;li&gt;WAV 转 MMV：&lt;a href=&quot;https://github.com/p0dalirius/wav2mmv/&quot;&gt;p0dalirius/wav2mmv - Github&lt;/a&gt; | &lt;a href=&quot;https://gist.github.com/lofaldli/8e46b92bbd9d2fbbaa9f8f2ee70dae55&quot;&gt;Simple gist version&lt;/a&gt;（目前只找到 ShellScript 版本，但是支持 Cygwin 类 unix 终端运行，即 Git bash、msys2 之类的都可以跑，刚需 FFmpeg）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;此外还有一些小工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;虚拟声卡：&lt;a href=&quot;https://vb-audio.com/Cable/index.htm&quot;&gt;VB-Audio Virtual Apps&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;SSTV 各种功能小工具：&lt;a href=&quot;http://dxatlas.com/SstvTools/&quot;&gt;SSTV Tools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;在线 SSTV 生成：&lt;a href=&quot;https://www.vr2woa.com/sstv/&quot;&gt;SSTV Generator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;NOAA&lt;/h2&gt;
&lt;h2&gt;WSPR&lt;/h2&gt;
&lt;p&gt;待补充&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://zhuanlan.zhihu.com/p/31592701&quot;&gt;无线电-短波QRP新玩法-WSPR（弱信号传播报告器）&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;卫星云图 APT&lt;/h2&gt;
&lt;h2&gt;ARPS&lt;/h2&gt;
&lt;h2&gt;摩尔斯电码&lt;/h2&gt;
&lt;p&gt;练习网页：https://morse.youlingxi.cn/#/&lt;/p&gt;
&lt;h2&gt;数字&lt;/h2&gt;
&lt;p&gt;D-Star、DMR、C4FM、APCO P25等数字语音模式&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://tg46023.cn/infor.php&quot;&gt;数字互联46023 (DMR,YSF,P25,D-STAR 互通)&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.chinaham.cn/MMDVM/98.html&quot;&gt;什么是 BrandMeister&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;http://bbs.cqcqcq.com/thread-34008-1-1.html&lt;/p&gt;
&lt;p&gt;https://www.bg7iae.com/?p=127&lt;/p&gt;
&lt;h2&gt;最后&lt;/h2&gt;
&lt;p&gt;一个老 Ham 的网盘资源：&lt;a href=&quot;http://yc-yjwp.ysepan.com/&quot;&gt;BA7LCE的临时仓库&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;[[待补充]]&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.Z2jLvOVU.jpg"/><enclosure url="/_astro/thumbnail.Z2jLvOVU.jpg"/></item><item><title>A 类业余无线电台的那些事</title><link>https://cworld0.com/blog/amateur-radio</link><guid isPermaLink="true">https://cworld0.com/blog/amateur-radio</guid><description>关于 A 类业余无线电台的个人向上手指北</description><pubDate>Mon, 03 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { LinkPreview } from &apos;astro-pure/advanced&apos;
import { Collapse } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;简介&lt;/h2&gt;
&lt;p&gt;引用 &lt;a href=&quot;https://zh.wikipedia.org/zh-hans/%E4%B8%9A%E4%BD%99%E6%97%A0%E7%BA%BF%E7%94%B5&quot;&gt;Wikipedia 的定义&lt;/a&gt;：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;业余无线电（英语：Amateur Radio），也被称作火腿电台（英语：ham radio）是一种供业余无线电爱好者进行相互通信、无线通讯技术实验、自我训练、个人娱乐、无线电运动、竞赛以及应急通信的一项使用无线电频率频谱的无线电业务。其中“业余无线电爱好者”指“经正式批准的、对无线电技术有兴趣的人，其兴趣纯系个人爱好而不涉及谋取利润”。业余无线电与商业广播、安全业务无线电或者其他专业双向无线电业务存在区别，业余无线电并非这些专业无线电业务的业余形式，也不是有关这些业务的业余爱好，而是一项独立的无线电业务。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;业余无线电爱好者中的“业余”，并不是不专业的意思，而是不涉及营利，电台操作需要考取对应的操作证（大部分地区免费考取）、电台执照（无线电管理局核验操作证颁发）。&lt;/p&gt;
&lt;p&gt;提供几个生活中常见的关键词会有一个大概的了解：对讲机、短波电台、摩尔斯电码、卫星通联、国际空间站...&lt;/p&gt;
&lt;p&gt;目前国内的业余无线电爱好者，大约有 20 万人，是一个相对小众的群体，有趣的是，这项爱好可以扩展很多技能点，结交电波上的朋友。&lt;/p&gt;
&lt;p&gt;如果你想深入了解的话，推荐看这个视频：&lt;a href=&quot;https://www.bilibili.com/video/BV1HG4y1j79t&quot;&gt;【不止游戏】一个视频教你取得无线电执照！&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;或者这个文章：&lt;a href=&quot;https://mp.weixin.qq.com/s/C0RA5xUVByLlEJcklNRo5w&quot;&gt;在公园玩业余无线电，我被当成是“间谍” &lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;导航&lt;/h2&gt;
&lt;p&gt;公开社区：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.hamcq.cn/&quot;&gt;HamCQ 社区&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.hellocq.net/&quot;&gt;HelloCQ 论坛&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bbs.cqcqcq.com/&quot;&gt;中国业余无线电论坛&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;QSL 卡片交换：&lt;a href=&quot;https://www.qrz.com/page/qsl.html&quot;&gt;QRZ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Wiki 百科类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.hamcq.cn/&quot;&gt;HamCQ 手册&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.yuque.com/ham/base&quot;&gt;无线电基础&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;微信小程序：业余无线电工具集（中继查询更新非常及时！）&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ham.quickso.cn/&quot;&gt;快点 Ham 工具箱&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://c5r.app/&quot;&gt;CTFever&lt;/a&gt; 工具箱（略硬核）&lt;/li&gt;
&lt;li&gt;中继查询：&lt;a href=&quot;https://forum.hamcq.cn/relay&quot;&gt;1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;梅登黑德网格定位系统：&lt;a href=&quot;https://ham-dev.c5r.app/maidenhead-grid&quot;&gt;1&lt;/a&gt;、&lt;a href=&quot;https://qth.quickso.cn/&quot;&gt;2&lt;/a&gt;、&lt;a href=&quot;https://liunan.github.io/crac/locatecode.html&quot;&gt;3&lt;/a&gt;（论大伙为什么这么喜欢重复造轮子）&lt;/li&gt;
&lt;li&gt;APRS 地图：&lt;a href=&quot;https://aprs.tv/&quot;&gt;1&lt;/a&gt;、&lt;a href=&quot;https://aprs.fi&quot;&gt;2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ham-dev.c5r.app/satellites&quot;&gt;业余无线电卫星数据库&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;书籍 &amp;#x26; 正式文档（非深入学习不推荐）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://huangenet.lanzoub.com/i3hlV17yi3rg&quot;&gt;业余无线电通信（第五版）&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://hamstudy.org/&quot;&gt;HamStudy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;考试&lt;/h2&gt;
&lt;p&gt;既然都有证书一说，那考试是必然少不了的。作为初学者，只能选择 A 类，具体报名参考各省/直辖市的官网或官方公众号。一般会提前一个月在平台上发公告，微信公众号可能会更容易跟进一些。&lt;/p&gt;
&lt;h3&gt;准备资料&lt;/h3&gt;
&lt;p&gt;准备考试推荐从这篇帖子开始：&lt;a href=&quot;https://www.jimmytian.com/archives/crac-aro-licence-a-review-guide.html&quot;&gt;中国 A 类业余无线电台操作证快速复习指北&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然后是这个非常全面的文档：&lt;a href=&quot;https://github.com/jks-liu/zhihu/blob/master/ham-license-type-a.md&quot;&gt;Github - Ham-license-type-a&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果不自信可以看看这个 &lt;a href=&quot;https://ham-dev.c5r.app/crac-question-bank&quot;&gt;考试题库解析&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;学完后可以直接上真题：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.cqid.cn/&quot;&gt;业余无线电模拟考试平台&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.crac.org.cn/News/List?type=6&amp;#x26;y=&quot;&gt;官方题库下载地址&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;智谱APP练习：&lt;a href=&quot;https://apps.apple.com/cn/app/%E6%99%BA%E8%B0%B1/id1448978640&quot;&gt;iOS: App Store&lt;/a&gt; | &lt;a href=&quot;http://82.157.138.16:8091/CRAC/crac/pages/list_files.html&quot;&gt;Android: Offical Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://wxdks.jjxxw.cq.gov.cn/wxdks/main/mockTest.html&quot;&gt;重庆无线电提供的公益考试模拟&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;随便选一种就够了。只要认真花上两三个晚上准备，一般是不会翻车的。&lt;/p&gt;
&lt;p&gt;此外我自己整理了一个可能比较广适用的易错题集，有兴趣的可以点击下面的展开列表看：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;对以不正当手段取得业余无线电台执照的，无线电管理机构可以给予下列处罚：&lt;/p&gt;
&lt;p&gt;责令限期改正，可以处警告或者三万元以下的罚款&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;设备电源拔掉电源线以后，检修时还有什么安全风险？&lt;/p&gt;
&lt;p&gt;充满高电压的电容器可能造成电击&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;接收机灵敏度指标数值大小所反映的意义是：&lt;/p&gt;
&lt;p&gt;灵敏度指标数值越小，接收最小信号的能力越强&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“电台设备”的业余无线电通信常用缩语是：&lt;/p&gt;
&lt;p&gt;RIG&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下列哪种设备可以用来代替普通的扬声器，可在嘈杂的环境中更好地抄收语音信号？&lt;/p&gt;
&lt;p&gt;耳机&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在无线电管理中，将无线电频率或频道规定由一个或多个部门，在指定的区域内供地面或空间无线电通信业务在指定条件下使用，这个过程称为：&lt;/p&gt;
&lt;p&gt;分配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只包含一个频率分量的信号是：&lt;/p&gt;
&lt;p&gt;简单正弦波&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无线电管制是指在下列范围内依法采取的对无线电波的发射、辐射和传播实施的强制性管理：&lt;/p&gt;
&lt;p&gt;在特定时间和特定区域内&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在业余无线电通信中，“驻波比”通常用来衡量：&lt;/p&gt;
&lt;p&gt;负载与传输线的匹配质量&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;430MHz业余频段中留给业余卫星通信使用，话音及其他通信方式不应占用的频率段为：&lt;/p&gt;
&lt;p&gt;435MHz至438MHz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我国分配给业余业务和卫星业余业务与其他业务共用、并且业余业务和卫星业余业务作为唯一主要业务的频段的个数以及在3GHz以下的该类频段分别为：&lt;/p&gt;
&lt;p&gt;3个，144-146MHz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余电台的无线电发射设备应符国家规定的下列主要技术指标：&lt;/p&gt;
&lt;p&gt;符合频率容限、符合杂散发射最大允许功率电平&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;无线电波在自由空间中的传播路径损耗遵循下列规律：&lt;/p&gt;
&lt;p&gt;与距离的平方成正比，与频率的平方成正比&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;多径传播对UHF波段或VHF波段数据通信的影响是：&lt;/p&gt;
&lt;p&gt;可能使误码率增大&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;某商品天线说明书给出的增益指标以dBi为单位。其意义为：&lt;/p&gt;
&lt;p&gt;“相对于无方向性点源天线的增益”，即最大辐射方向上的辐射功率密度与理想点源天线的辐射功率密度之比&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;VHF业余无线电台在144MHz频段进行本地联络时应避免占用的频率为：&lt;/p&gt;
&lt;p&gt;144-144.035MHz和145.8-146MHz&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余电台之间进行通信，必须相互正确发送和接收的信息为：&lt;/p&gt;
&lt;p&gt;本台呼号、对方呼号、信号报告&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;A类业余无线电台允许发射的最大发射功率为不大于：&lt;/p&gt;
&lt;p&gt;25瓦&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余无线电通信中常用的天线种类的缩写DP代表：&lt;/p&gt;
&lt;p&gt;偶极天线&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在无线电管理中，将无线电频率或频道批准给具体的业余无线电台在规定条件下使用，这个过程称为：&lt;/p&gt;
&lt;p&gt;指配&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;个人申请设置具有发信功能的业余无线电台的年龄条件是：&lt;/p&gt;
&lt;p&gt;年满十八周岁&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;国际电联规定的确定发射电台辐射功率的原则为：&lt;/p&gt;
&lt;p&gt;发射电台只应辐射为保证满意服务所必要的功率&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我遇到他台干扰”的业余无线电通信Q简语为：&lt;/p&gt;
&lt;p&gt;QRM&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;我国对无线电管理术语“业余业务”、“卫星业余业务”和“业余无线电台”做出具体定义的法规文件是：&lt;/p&gt;
&lt;p&gt;中华人民共和国无线电频率划分规定&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余无线电普遍使用的同轴电缆的特性阻抗是？&lt;/p&gt;
&lt;p&gt;50欧姆&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;决定超短波视距传播距离极限的主要因素是：&lt;/p&gt;
&lt;p&gt;发射天线和接收天线离地面的相对高度值&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“发信机”的业余无线电通信常用缩语是：&lt;/p&gt;
&lt;p&gt;TX、XMTR&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余无线电通信中常用的天线种类的缩写VER代表：&lt;/p&gt;
&lt;p&gt;垂直天线&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;俗称的6米业余波段的频率范围以及业余业务和卫星业余业务的使用状态分别为：&lt;/p&gt;
&lt;p&gt;50-54MHz，主要业务&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;以dBd为单位的天线增益则是指：&lt;/p&gt;
&lt;p&gt;最大辐射方向辐射功率密度与半波长振子最大辐射方向辐射功率密度之比的dB值&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;某商品天线说明书给出的增益指标以dBi为单位。其意义为：&lt;/p&gt;
&lt;p&gt;“相对于无方向性点源天线的增益”，即最大辐射方向上的辐射功率密度与理想点源天线的辐射功率密度之比&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;只包含一个频率分量的信号是：
简单正弦波&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;“我的电台位置是××××”的业余无线电通信Q简语为：&lt;/p&gt;
&lt;p&gt;QTH　××××&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;频率容限是发射设备的重要指标，通常用下述单位来表示：&lt;/p&gt;
&lt;p&gt;百万分之几（或者赫兹）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;业余无线电通信中常用的天线种类的缩写YAGI代表：&lt;/p&gt;
&lt;p&gt;八木天线&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;某群友 BH8GCJ-OL39FM/DJ 也给出了一个很好记的口诀：&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;li&gt;HVU小到大，单位MHz。&lt;/li&gt;
&lt;li&gt;50，144为主要，唯一主要144。&lt;/li&gt;
&lt;li&gt;430-440为次要，主要业务是定导航。&lt;/li&gt;
&lt;li&gt;145.8-146MHz，435-438MHz两个频段不要占&lt;/li&gt;
&lt;li&gt;公安，三万，五千，顺序选&lt;/li&gt;
&lt;li&gt;QRZ?谁叫我，M他台，N天电。&lt;/li&gt;
&lt;li&gt;QTH是位置，ANT来是天线，频率后面带EQ，电台设备RIG。&lt;/li&gt;
&lt;li&gt;OM是个老朋友，WX来是天气，73致意加祝愿。&lt;/li&gt;
&lt;li&gt;收信发信两个词，收发信机带VR。&lt;/li&gt;
&lt;li&gt;DP偶极，GP接地，BEAM定向，YAGI八木，VER垂直。&lt;/li&gt;
&lt;li&gt;已知北京小于0日期改为前一天，已知UTC大24日期改为后一天。&lt;/li&gt;
&lt;li&gt;EQ分区347，ITU分区有5个。&lt;/li&gt;
&lt;li&gt;安电流，伏电压，欧电阻，瓦功率。&lt;/li&gt;
&lt;li&gt;KMGT369 12mμnp 均为负。&lt;/li&gt;
&lt;li&gt;5W 0.25W 0.4kW一百以内数选大。&lt;/li&gt;
&lt;li&gt;电源电压正到负，欧姆定律正反比。&lt;/li&gt;
&lt;li&gt;峰峰100三十五，峰值100为70，平均电压都为0。&lt;/li&gt;
&lt;li&gt;dB单位无意义，dBi来找理想，dBd来半波长。&lt;/li&gt;
&lt;li&gt;信号强弱0.8。&lt;/li&gt;
&lt;li&gt;同轴电缆50欧，又怕水来又怕潮，使用方便影响小。&lt;/li&gt;
&lt;li&gt;无线电波光速快，3x10^8米/秒，其他介质小于1。&lt;/li&gt;
&lt;li&gt;两个组成电，磁场。频率增长波长短，波长要用300除。&lt;/li&gt;
&lt;li&gt;电池电压1.5，电动势为1.5，碱性电池不能充，失效要用电压档，元件短路电阻档。&lt;/li&gt;
&lt;li&gt;车载电源12V，微波炉用特高频，嘈杂环境用耳机。&lt;/li&gt;
&lt;li&gt;LED二极管，LCD显示器，交变直流整流器，市电变低变压器。&lt;/li&gt;
&lt;li&gt;并电压，串电流，测电阻来欧姆表。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;考试事宜&lt;/h3&gt;
&lt;p&gt;笔者是重庆这边考的，故后文根据重庆展开。当然别的地区也可以作为参考。&lt;/p&gt;
&lt;p&gt;报名官网：&lt;a href=&quot;https://wxdks.jjxxw.cq.gov.cn/wxdks/index.html&quot;&gt;重庆市业余无线电信息服务系统&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;笔者也是花了两次（第一次有事没法参考）成功拿下了。重庆这边是上机考试，并且上文的 “重庆无线电提供的公益考试模拟” 竟然就和真实上机考试一样，仅多了账号登录和考生展示（算是）。&lt;/p&gt;
&lt;p&gt;笔者这里到场后是有人在做无线电相关科普讲座的，后来据行为判断大概率是爱好者做志愿劳动。如果有能力建议提前半小时到场听一些常识性知识，实在不行也能自己刷刷题巩固。&lt;/p&gt;
&lt;p&gt;考试一般做题很快，这边是先进去就先做。我上了厕所后进去才登上系统做了几道就有人交卷了。个人建议最好做完后还是要再检查一遍，一来花不了多少时间，二是失败就要等几个月重考。&lt;/p&gt;
&lt;h3&gt;考试趣闻&lt;/h3&gt;
&lt;p&gt;都提到讲座了，就顺便分享一些内容吧。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;定位梅登黑德网格：对比经纬度模式的网格定位系统，优点在于简略、精准。定位梅登黑德网格仅需6个字符就可表示，同时精确度可以达到公里级别，误差仅在两到三公里以内。讲座人还分享了一个可以快速查询 &lt;a href=&quot;https://liunan.github.io/crac/locatecode.html&quot;&gt;定位梅登黑德网格&lt;/a&gt; 网址。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;QSL 名片：除了重要的呼号外，建议附上日期、时间、频率、模式、信号报告、设备、天线、功率等信息，方便对方联系。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Flecture-qsl.WJcjPeP6.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;lecture-qsl&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;报备准备材料：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fsubmit-application.QiFPZq2M.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;submit application&quot;&gt;&lt;/p&gt;
&lt;p&gt;表格感觉画的怪怪的（能看就行）&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;然后现场还开展了小型线下交流会，大佬们驱车架着硕大的天线互相交流。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Foperating-radio.DQx3cmyp.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;operating radio&quot;&gt;&lt;/p&gt;
&lt;h2&gt;上证&lt;/h2&gt;
&lt;p&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;li&gt;选购心仪的设备&lt;/li&gt;
&lt;li&gt;提交设备申报、申请呼号&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相关组织群聊可以在考试现场找相关爱好者寻求。&lt;/p&gt;
&lt;h3&gt;证书编号&lt;/h3&gt;
&lt;p&gt;考完第二天一般来说就可以前往 &lt;a href=&quot;http://82.157.138.16:8091/CRAC/crac/pages/list_cert.html&quot;&gt;CRAC&lt;/a&gt; 查询自己的证书编号了。&lt;/p&gt;
&lt;h3&gt;操作证电子版&lt;/h3&gt;
&lt;p&gt;电子版仅供说明，即使官方也是使用背景板 + html 拼装的。在地方官方网站的证书电子版出来前，你可以使用模板自己做一个，方便后续申请。这里提供一个 PSD 版本的模板：&lt;a href=&quot;https://cworld.lanzoub.com/b02xdn8mve&quot;&gt;Lanzou&lt;/a&gt; （密码:ai66）&lt;/p&gt;
&lt;h2&gt;取号&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;业余无线电台设置、使用申请表&lt;/li&gt;
&lt;li&gt;身份证（正反面）、业余电合操作证&lt;/li&gt;
&lt;li&gt;含有型号核谁代码、出厂序列号等信息&lt;/li&gt;
&lt;li&gt;原无线电合执照（首次申请不需要）&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;取号要购入设备登记获取。&lt;/p&gt;
&lt;h3&gt;选购设备&lt;/h3&gt;
&lt;p&gt;这个时效性可能比较强，这里就不多推荐。截至到 24-09-24，泉盛的 uv-k5 和 uv-k6 还是很不错的，推荐扩容版，可以刷自己喜欢的，开源或者不开源的固件。&lt;/p&gt;
&lt;p&gt;此外宝峰的不少机型同样值得选购入门。个人建议购入可以刷第三方固件的机型，而其中知名第三方 &lt;a href=&quot;https://www.opengd77.com/index.php&quot;&gt;OpenGD77&lt;/a&gt; 就包揽了 GD-77, GD-77S, DM-1801, DM-1801A, RD-5R, MD-9600/RT-90, MD-UV380/RT-3S, DM-1701/RT-84 and MD2017/RT-82 机型（貌似有部分机型是特易通等其他品牌），读者可比较后挑出最合适的型号按需购入。（从不知名论坛获得一些主观向数据，dm1701、dm1801、dm5r 是宝峰旗下表现相对更综合优秀的数字对讲机）&lt;/p&gt;
&lt;h3&gt;发送申请&lt;/h3&gt;
&lt;p&gt;这个地域性也很强，其他地方可以加地域关键词前往各大媒体平台查询，部分官方也会发推文教学。&lt;/p&gt;
&lt;p&gt;重庆这边是 &lt;a href=&quot;https://mp.weixin.qq.com/s/DgXMYGRNLZJRCfIRUE5v5Q&quot;&gt;官方推文&lt;/a&gt; ，B站也有网友投稿的 &lt;a href=&quot;https://m.bilibili.com/video/BV12Ss8eEE7M&quot;&gt;视频版本&lt;/a&gt; 。建议尽早提交相关申请，避免申请高峰审核较慢，当然也要注意不要误填，审核也是相对蛮严格的。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;申请时一般要求填写对应设备的 S/N 码、照片等，建议咨询卖家客服，卖家承诺能给你提前拍照提供后再购买。毕竟等快递还得好几天不是。&lt;/p&gt;
&lt;p&gt;除此以外的信息可前往 &lt;a href=&quot;https://ythzxfw.miit.gov.cn/resultQuery&quot;&gt;核准代码工信部查询&lt;/a&gt; 获取。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;玩弄设备&lt;/h3&gt;
&lt;p&gt;笔者当前使用的设备为泉盛 UV-K6 扩容版，并且 &lt;a href=&quot;https://cworld0.com/blog/uv-k6&quot;&gt;写了一篇对应的博文&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;空中交流&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;作为HAM，我们首先应该从我做起，自觉的维护良好的空中秩序，自觉的规范通联，自觉的抵制非业余电台的侵入，自觉遵守全世界HAM公认的业余无线电爱好者准则：“体谅、忠诚、进取、友爱、适度、爱国”。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;无线电基本通联规则：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;守听：在发射前，应先守听频率，确保没有其他电台正在进行通信。&lt;/li&gt;
&lt;li&gt;呼叫：进行呼叫时，应使用“CQ”或特定电台呼号，并按照规范的格式报出自己的呼号。例如，&quot;CQ CQ CQ，This is BG1XXX，BRAVO GOLF ONE X-RAY X-RAY X-RAY，BG1XXX calling CQ and standing-by&quot;。&lt;/li&gt;
&lt;li&gt;字母解释法：在呼叫时，必须至少一次使用字母解释法来解释自己的呼号，以避免混淆。&lt;/li&gt;
&lt;li&gt;信号报告：在通联过程中，应提供信号报告，包括可辨度（R）和强度（S），如“59”表示信号强度和可辨度都很好。&lt;/li&gt;
&lt;li&gt;结束语：通联结束时，应使用“73”来表示祝福，然后是“再见”或“OVER”，如“73 and goodbye”。&lt;/li&gt;
&lt;li&gt;插入：如果想加入正在进行的通联，应先请求插入，并在得到允许后加入。&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;
&lt;p&gt;注：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;频率使用：应避免长时间占用频率，以便其他人也能使用。&lt;/li&gt;
&lt;li&gt;礼貌：在通联过程中，应保持礼貌和专业，尊重其他电台。&lt;/li&gt;
&lt;li&gt;遵守法规：确保遵守当地的无线电通信法规和国际电信联盟（ITU）的规定。&lt;/li&gt;
&lt;li&gt;特殊情况：在卫星通联等特殊情况下，可能需要遵守额外的规则，如调整频率以补偿多普勒效应，使用特定的呼叫方式等。&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;日常空中交流用的模板：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;CQ、CQ、CQ。BH8GHG 呼叫。Bravo Hotel Golf Hotel Golf 呼叫，BH8GHG 呼叫。听到请回答。&lt;/li&gt;
&lt;li&gt;Xxx，XXX，Xxx。这里是 BH8GHG。Bravo Hotel Golf Hotel Golf，这里是 BH8GHG。听到请回答。&lt;/li&gt;
&lt;li&gt;插入！Breakin!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;报道点名步骤：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;（等待主控呼叫）&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;回复主控: 主控主控，这里是 BH8xxx（自己呼号），Bravo Hotel Eight xxx，向主控请求参加点名 Over。&lt;/li&gt;
&lt;li&gt;&lt;em&gt;（主控确认呼号）&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;回复主控：主控抄收正确，这里使用的设备是【品牌、型号】，【型号/原装】天线，【功率】瓦发射，U/V 段频率，我的 QTH 是【区域，地名】，抄收主控信号【59/49/39】，请问主控是否抄收 Over。&lt;/li&gt;
&lt;li&gt;&lt;em&gt;（主控回复设备、天线、功率、QTH 信息，并回复信号报告询问抄收是否正确）&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;回复主控：主控抄收完全正确，谢谢主控，【主控点名辛苦/点名顺利】，【也祝友台周末愉快/祝晚间愉快】，我这边就改为守听状态了，73 送上 Over。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;点名开场：CQCQCQ，这里是业余无线电200038频道台网，请各位台友进入南山对讲，房间号200038，现在是2024年（）月（）日星期五，北京时间八点整，每周五晚中继台网例行点名时间，点名时间20:00-21:00，我是今日主控（呼号）我使用的设备是南山链路，QTH（位置），请抄收到中继台网信号的友台有序上台待主控确认后依次报告您的呼号，QTH，抄收主控的信号报告，下面有请第一位友台参加点名。&lt;/p&gt;
&lt;p&gt;点名结束：这里是业余无线电200038频道台网每周五例行点名活动，现在是北京时间21:00，截止目前，中继台网已经通联( )位友台，本次中继台网点名活动到此结束，今晚主控（ ），感谢大家踊跃参与，本次云南HAM台网业余无线电中继台网点名活动圆满结束，本房间恢复自由通联状态，本房间恢复自由通联状态，祝大家周末愉快，73，over&lt;/p&gt;
&lt;p&gt;字母解释法对应转换表格（这个 &lt;a href=&quot;https://ham-dev.c5r.app/&quot;&gt;在线版&lt;/a&gt; 甚至有发音教学）：&lt;/p&gt;
&lt;p&gt;| 字母 - 单词 | 字母 - 单词 | 字母 - 单词  | 字母 - 单词 |
| ----------- | ----------- | ------------ | ----------- |
| A - Alpha   | H - Hotel   | N - November | U - Uniform |
| B - Bravo   | I - India   | O - Oscar    | V - Victor  |
| C - Charlie | J - Juliet  | P - Papa     | W - Whisky  |
| D - Delta   | K - Kilo    | Q - Quebec   | X - X-ray   |
| E - Echo    | L - Lima    | R - Romeo    | Y - Yankee  |
| F - Foxtrot | M - Mike    | S - Sierra   | Z - Zulu    |
| G - Golf    |             | T - Tango    |             |&lt;/p&gt;
&lt;p&gt;一些常见的简语：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;QSO：直接通联&lt;/li&gt;
&lt;li&gt;QSL：抄收（在通讯中已听明白了对方的内容，可以解释为收到、听到，此外还有QSL卡片，是做为确认通联用的。）&lt;/li&gt;
&lt;li&gt;QSY：改变频率&lt;/li&gt;
&lt;li&gt;QSP：代转&lt;/li&gt;
&lt;li&gt;QRT：电台停止工作&lt;/li&gt;
&lt;li&gt;QRM：受到他台干扰&lt;/li&gt;
&lt;li&gt;QRZ：谁在呼叫我&lt;/li&gt;
&lt;li&gt;QTH：电台位置&lt;/li&gt;
&lt;li&gt;73：美好的祝福&lt;/li&gt;
&lt;li&gt;88：爱与吻&lt;/li&gt;
&lt;li&gt;~~QBG：大冤种（&lt;a href=&quot;https://hkems-stmo.top/pages/prank/BD7QBG.html&quot;&gt;源自 BD7QBG 小故事&lt;/a&gt;，Ham 聊天喜欢用）~~&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;抄收记录&lt;/h3&gt;
&lt;p&gt;部分地区会在审发证书的时候寄通讯记录本子，建议提前问老火腿是否提供，如不提供再自己按需打印/购买。这里提一些关于抄收的细节：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;设备&lt;/p&gt;
&lt;p&gt;主流手台厂商：泉盛、宝峰、泉益通（QYT）、摩托罗拉（Motorola）、特易通（TYT）、八重洲（Yetsu）等。（熟悉主流品牌名可以避免在抄收时尴尬地问对方写法）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RST 信号报告&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;摘自 &lt;a href=&quot;https://club.autohome.com.cn/bbs/thread/ccc22b7dad5c62dc/4103298-1.html&quot;&gt;什么叫QSO、QSL、什么叫倒频、抄收、59、73&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;在话方式的通讯中，联络双方要报告对方的信号可辩度R、强度S，其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;R 分为 1、2、3、4、5 档，1 为信号不可辩，5 为信号完全可辩（需要自己主观判断信号质量，一般好的信号在4和5，信号差就3，比3还差你无法判断的话直接回复对方无法抄收就行）；&lt;/li&gt;
&lt;li&gt;设备上的 S 代表场强，S 分为 1、2、3……8、9，分别为信号强度，9 为最强，有些机器上有S表显示，超过9的以+10dB、+20dB等表示（一般设备都会直接展示 S 表直接告诉你）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如：一个很强的本地台用FM话方式做通讯，信号可能是59，或59+，信号弱一点的可以是58、57等；
如果是一个很弱的外地台用SSB话方式，信号可能是53，或者你听他的内容都很困难：33、23等；
如果用电报的方式（CW）还要加上第三位，如599、557等。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;错误用法：
BG**，这里是BG***，QSO？（也许是某人口误，QSL变成QSO，别的初学者也跟着错，我在频率上听得多次了，一次还听到一位BV的电台在苦口婆心地纠正一位BG台。）
BG***，你的信号五十九，很强！（RST不是个位、十位、百位的关系，报五九就可以了，不要报五十九。）
BG***，你的信号599！（在FM或SSB等话方式中，RST只报前面的R和S的值，没有T，T是针对CW的。）&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;QSL 卡片&lt;/h3&gt;
&lt;p&gt;成功获得呼号（Calldign）后可以前往 &lt;a href=&quot;https://www.qrz.com/page/qsl.html&quot;&gt;QRZ&lt;/a&gt; 注册并发布相关内容（笔者的 &lt;a href=&quot;https://www.qrz.com/db/BH8GHG&quot;&gt;QRZ 地址&lt;/a&gt;）。这样的网站主要用于通过呼号查询电子 QSL、通联记录、联系信息等。&lt;/p&gt;
&lt;p&gt;类似的网站还有 &lt;a href=&quot;https://www.hamqth.com/&quot;&gt;HamQTH&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;你可能需要：&lt;a href=&quot;https://www.hellocq.net/forum/read.php?tid=253352&quot;&gt;这才弄明白 CQ zone 和 ITU zone&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;部分更多内容请移步至进阶篇：&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.DKtmBf2r.jpg"/><enclosure url="/_astro/thumbnail.DKtmBf2r.jpg"/></item><item><title>Over the Wire - [01]Bandit (3)</title><link>https://cworld0.com/blog/over-the-wire-bandit-3</link><guid isPermaLink="true">https://cworld0.com/blog/over-the-wire-bandit-3</guid><description>This is the article chapter 03 of the series &quot;Over the Wire - [01]Bandit&quot;.</description><pubDate>Sat, 27 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is the article chapter 02 of the series &quot;Over the Wire - [01]Bandit&quot;. Checkout &lt;a href=&quot;/blog/over-the-wire-bandit-1&quot;&gt;Over the Wire - [01]Bandit (1)&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Level 27&lt;/h2&gt;
&lt;p&gt;Good job getting a shell! Now hurry and grab the password for bandit27!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;./bandit27-do cat /etc/bandit_pass/bandit27
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;upsNCc7vzaRDx6oZ****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 28&lt;/h2&gt;
&lt;p&gt;There is a git repository at ssh://bandit27-git@localhost/home/bandit27-git/repo via the port 2220. The password for the user bandit27-git is the same as for the user bandit27.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
git clone ssh://bandit27-git@localhost:2220/home/bandit27-git/repo
cd ./repo
cat ./README
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;Yz9IpL0sBcCeuG7m****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 29&lt;/h2&gt;
&lt;p&gt;There is a git repository at ssh://bandit28-git@localhost/home/bandit28-git/repo via the port 2220. The password for the user bandit28-git is the same as for the user bandit28.&lt;/p&gt;
&lt;p&gt;Clone the repository and find the password for the next level.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
git clone ssh://bandit28-git@localhost:2220/home/bandit28-git/repo
cd ./repo
cat ./README.md
# # Bandit Notes
# Some notes for level29 of bandit.
#
# ## credentials
#
# - username: bandit29
# - password: xxxxxxxxxx

git log --patch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;4pT1t5DENaYuqnqv****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 30&lt;/h2&gt;
&lt;p&gt;There is a git repository at ssh://bandit29-git@localhost/home/bandit29-git/repo via the port 2220. The password for the user bandit29-git is the same as for the user bandit29.&lt;/p&gt;
&lt;p&gt;Clone the repository and find the password for the next level.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
git clone ssh://bandit29-git@localhost:2220/home/bandit29-git/repo
cd ./repo
cat ./README.md
# # Bandit Notes
# Some notes for bandit30 of bandit.
#
# ## credentials
#
# - username: bandit30
# - password: &amp;#x3C;no passwords in production!&gt;

git branch -avv
git log --all --graph --patch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;qp30ex3VLz5MDG1n****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 31&lt;/h2&gt;
&lt;p&gt;There is a git repository at ssh://bandit30-git@localhost/home/bandit30-git/repo via the port 2220. The password for the user bandit30-git is the same as for the user bandit30.&lt;/p&gt;
&lt;p&gt;Clone the repository and find the password for the next level.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
git clone ssh://bandit30-git@localhost:2220/home/bandit30-git/repo
cd ./repo
cat ./README.md
# just an epmty file... muahaha

git tag
git show secret
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;fb5S2xb7bRyFmAvQ****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 32&lt;/h2&gt;
&lt;p&gt;There is a git repository at ssh://bandit31-git@localhost/home/bandit31-git/repo via the port 2220. The password for the user bandit31-git is the same as for the user bandit31.&lt;/p&gt;
&lt;p&gt;Clone the repository and find the password for the next level.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
git clone ssh://bandit31-git@localhost:2220/home/bandit31-git/repo
cd ./repo
cat ./README.md
# This time your task is to push a file to the remote repository.
#
# Details:
#     File name: key.txt
#     Content: &apos;May I come in?&apos;
#     Branch: master

git branch -avv
cat ./.gitignore
rm ./.gitignore

echo &apos;May I come in?&apos; &gt; key.txt
git status
git add .
git commit -m &quot;feat: add key text&quot;
git push
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;3O9RfhqyAlVBEZpV****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 33&lt;/h2&gt;
&lt;p&gt;After all this git stuff, it’s time for another escape. Good luck!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh bandit31@bandit.labs.overthewire.org -p 2220
cat /etc/passwd | grep 32
# bandit32:x:11032:11032:bandit level 32:/home/bandit32:/home/bandit32/uppershell

# Login 32
# $0 allows you to show what script you are running (if no runs, it echo the shell)
# It is obvious that this uppershell file runs like &apos;sh -c &quot;$0&quot;&apos;
# We can check it as:
$0ABC
# sh: 1: shABC: Permission denied

# The $0 means sh and have a lowercase.
$0
# Looks great

ls -la
# total 36
# drwxr-xr-x  2 root     root      4096 Jun 20 04:07 .
# drwxr-xr-x 70 root     root      4096 Jun 20 04:08 ..
# -rw-r--r--  1 root     root       220 Mar 31 08:41 .bash_logout
# -rw-r--r--  1 root     root      3771 Mar 31 08:41 .bashrc
# -rw-r--r--  1 root     root       807 Mar 31 08:41 .profile
# -rwsr-x---  1 bandit33 bandit32 15136 Jun 20 04:07 uppershell

# The shell binary uppershell has the permission from bandit33
cat /etc/bandit_pass/bandit33
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;tQdtbs5D5i2vJwkO****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 34&lt;/h2&gt;
&lt;p&gt;At this moment, level 34 does not exist yet.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat ./README.txt
# Congratulations on solving the last level of this game!
#
# At this moment, there are no more levels to play in this game. However, we are constantly working
# on new levels and will most likely expand this game with more levels soon.
# Keep an eye out for an announcement on our usual communication channels!
# In the meantime, you could play some of our other wargames.
#
# If you have an idea for an awesome new level, please let us know!
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Passwords&lt;/h2&gt;
&lt;p&gt;All these passwords are encrypted by &lt;code&gt;tr&lt;/code&gt; (13 positions), &lt;code&gt;gzip&lt;/code&gt; and &lt;code&gt;xxd&lt;/code&gt;. All the decrypt actions had appeared on the level solutions. Only when you have problem can you check this. It is updated on 2024-07-10.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;00000000: 1f8b 0808 303f 8e66 0003 7472 2e74 7874  ....0?.f..tr.txt
00000010: 003d d447 12a3 3a14 40d1 79af c24b 2007  .=.G..:.@.y..K .
00000020: cf08 2219 4c34 6946 3098 6072 5efd e777  ..&quot;.L4iF0.`r^..w
00000030: 999e 52a7 5412 f749 c150 0cfb 0dba dfda  ..R.T..I.P......
00000040: 26ea 971c fa13 fcfd 00df 6fda 1aac e211  &amp;#x26;.........o.....
00000050: 1276 51d4 207a b7c8 7b64 1456 63c5 8658  .vQ. z..{d.Vc..X
00000060: 12dc 1d7f 12b9 df10 02f5 1c8f 1b27 8908  .............&apos;..
00000070: f2de 2aa6 5191 e007 87d7 4d87 d087 5dfd  ..*.Q.....M...].
00000080: 247a bf85 cc46 f9cc 0b95 b265 8931 9803  $z...F.....e.1..
00000090: 9215 9b36 978e 55c0 edc2 7149 ec5c 5339  ...6..U...qI.\S9
000000a0: dea6 0d0e cf4d 5197 aba2 e1d9 84ce dc24  .....MQ........$
000000b0: 5062 cf36 ca78 3f89 df6f 58cc ab32 b755  Pb.6.x?..oX..2.U
000000c0: 1acb 5a2c 8b27 a242 c1b6 4ead d45e 3d1c  ..Z,.&apos;.B..N..^=.
000000d0: 892f 7f92 b8df 5e4a 9345 dc9c a7f4 53f6  ./....^J.E....S.
000000e0: 07a8 3f36 0c8f aa1a 81ba 426a 08cb f949  ..?6......Bj...I
000000f0: f27e 3be2 77cb 88e6 2628 c4ea ee52 07d5  .~;.w...&amp;#x26;(...R..
00000100: 07db 874d 10b1 bb2d 3f9b f527 a9fb ad1f  ...M...-?..&apos;....
00000110: cbe2 6bf3 0b76 4850 3932 adcd 0e34 8895  ..k..vHP92...4..
00000120: 6c0b 8389 1cac ee27 e973 9f86 1fce b0e7  l......&apos;.s......
00000130: d270 2bb9 9ac6 3dcc d469 a266 c7aa e239  .p+...=..i.f...9
00000140: 415e 78fd f9b3 85ed 480a beec 81ec bdab  A^x.....H.......
00000150: 07bd 856a 78ec 0c16 4e6d 3286 4b3a d417  ...jx...Nm2.K:..
00000160: 3d2b f539 8049 74d4 fc16 0220 336d c1c9  =+.9.It.... 3m..
00000170: 2604 2851 c2c8 2b9a 82f7 45cf 4c64 0513  &amp;#x26;.(Q..+...E.Ld..
00000180: 0a33 bcdc 0557 3777 56b2 d176 d338 9e22  .3...W7wV..v.8.&quot;
00000190: 49ac 579a c72e 7a76 b259 bc2f edac 83ba  I.W...zv.Y./....
000001a0: b671 9717 3453 1e32 485b 8614 bd68 96cf  .q..4S.2H[...h..
000001b0: e8a2 67a8 50c2 6465 106b 6fa3 001b 8f70  ..g.P.de.ko....p
000001c0: 9a1e 9dce 35c1 4cee a6c1 15c2 45cf 5254  ....5.L.....E.RT
000001d0: 65ac d131 c57e eb04 f3cb 7e6a bb63 e1e2  e..1.~....~j.c..
000001e0: f1c1 4224 f73d 3ebe e899 6a13 b642 4a42  ..B$.=&gt;...j..BJB
000001f0: 9edc 75b5 3642 ccd1 b9c2 2844 581f 1550  ..u.6B....(DX..P
00000200: 43e6 3528 f0d9 ca02 83dc 1403 17d8 afdc  C.5(............
00000210: deed 6c8d d0b9 fe86 7b21 7c84 6707 cc8b  ..l.....{!|.g...
00000220: 9eb1 2a64 0a44 71b5 cb90 9d79 2a56 9836  ..*d.Dq....y*V.6
00000230: 6450 02e1 fd6a 04a9 b3b3 173d 6b75 8e92  dP...j.....=ku..
00000240: 848d ff90 4b53 6226 ee29 7bad a27e 9c97  ....KSb&amp;#x26;.){..~..
00000250: 1cd1 df1d 5da9 6bfa cf5a 50fa 6866 87d2  ....].k..ZP.hf..
00000260: 5656 0e19 da99 3372 6195 cc18 b5fa c14a  VV....3ra......J
00000270: ad7a ad8a 9cb5 ac21 9682 d078 3748 0af5  .z.....!...x7H..
00000280: c2a6 ae38 019b 0f32 838d 44ff b07a 7ed1  ...8...2..D..z~.
00000290: b356 0e9a 0192 469d 2e20 e9db 1a7d 4477  .V....F.. ...}Dw
000002a0: 2a34 f151 9fd1 8e8d 53fc 45cf 5a90 36c2  *4.Q....S.E.Z.6.
000002b0: f012 bb6b 2833 380e af0f d438 84dc 0fd4  ...k(38....8....
000002c0: 74dd 70cc 692e 7ad6 9a5a ca07 c0c8 b2f9  t.p.i.z..Z......
000002d0: a33d 5c28 973e 80a8 13d6 5e17 ad1d 51e7  .=\(.&gt;....^...Q.
000002e0: dfb1 ce5a 8bb1 5044 9e8b 982f 3003 dcbc  ...Z..PD.../0...
000002f0: 0f7f 295b 9e39 7454 f538 34bd c605 396b  ..)[.9tT.84...9k
00000300: 6510 49a2 55b5 6d50 f818 fb94 1d39 20bf  e.I.U.mP.....9 .
00000310: e900 5d3d 5d62 2743 bbe8 59eb 9364 8cd1  ..]=]b&apos;C..Y..d..
00000320: 91c5 b701 6645 c49a 4138 0b20 2c50 0e70  ....fE..A8. ,P.p
00000330: 1897 8e7e d1b3 96fa a5dd 2480 32bd 3386  ...~......$.2.3.
00000340: 8f43 1ef4 87b7 734a 6312 017b 69a0 632e  .C....sJc..{i.c.
00000350: faff dd4a 4438 c74d 8b69 d44f 1aa5 45d3  ...JD8.M.i.O..E.
00000360: ab19 1c5b 181f 18fd 7a78 e4f5 029d b5d2  ...[....zx......
00000370: 0485 860a 9583 2f1e 9a0e 1cd1 b01a 9762  ....../........b
00000380: 81f1 d44e 1aa6 165c f4ac 35b6 b880 542d  ...N...\..5...T-
00000390: d982 da3e 9e05 aff2 8e95 66ed 2cd7 5e3a  ...&gt;......f.,.^:
000003a0: 47e6 750d d1b3 16ca d260 9cd3 fab9 cbba  G.u......`......
000003b0: a525 724b 04aa 9067 b316 a7b1 50e1 fe45  .%rK...g....P..E
000003c0: cf5a 39df e76d 869b f882 145e b9b1 d461  .Z9..m.....^...a
000003d0: d5aa 558b 01b5 7ce3 c183 fefc 0782 807b  ..U...|........{
000003e0: b593 0500 00                             .....
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Over the Wire - [01]Bandit (2)</title><link>https://cworld0.com/blog/over-the-wire-bandit-2</link><guid isPermaLink="true">https://cworld0.com/blog/over-the-wire-bandit-2</guid><description>This is the article chapter 02 of the series &quot;Over the Wire - [01]Bandit&quot;.</description><pubDate>Fri, 26 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is the article chapter 02 of the series &quot;Over the Wire - [01]Bandit&quot;. Checkout &lt;a href=&quot;/blog/over-the-wire-bandit-1&quot;&gt;Over the Wire - [01]Bandit (1)&lt;/a&gt; for more information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;Level 14&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in /etc/bandit_pass/bandit14 and can only be read by user bandit14. For this level, you don’t get the next password, but you get a private SSH key that can be used to log into the next level. Note: localhost is a hostname that refers to the machine you are working on&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh bandit14@localhost -p 2220 -i ./sshkey.private
cat /etc/bandit_pass/bandit14
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;MU4VWeTyJk8ROof1****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 15&lt;/h2&gt;
&lt;p&gt;The password for the next level can be retrieved by submitting the password of the current level to port 30000 on localhost.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;telnet localhost 30000
# MU4VWeTyJk8ROof1****************
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;8xCjnmgoKbGLhHFA****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 16&lt;/h2&gt;
&lt;p&gt;The password for the next level can be retrieved by submitting the password of the current level to port 30001 on localhost using SSL encryption.&lt;/p&gt;
&lt;p&gt;Helpful note: Getting “HEARTBEATING” and “Read R BLOCK”? Use -ign_eof and read the “CONNECTED COMMANDS” section in the manpage. Next to ‘R’ and ‘Q’, the ‘B’ command also works in this version of that command…&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;8xCjnmgoKbGLhHFA****************&quot; | openssl s_client -connect localhost:30001 -ign_eof
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;kSkvUpMQ7lBYyCM4****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 17&lt;/h2&gt;
&lt;p&gt;The credentials for the next level can be retrieved by submitting the password of the current level to a port on localhost in the range 31000 to 32000. First find out which of these ports have a server listening on them. Then find out which of those speak SSL and which don’t. There is only 1 server that will give the next credentials, the others will simply send back to you whatever you send to it.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nmap -p31000-32000 localhost
# PORT      STATE SERVICE
# 31046/tcp open  unknown
# 31518/tcp open  unknown
# 31691/tcp open  unknown
# 31790/tcp open  unknown
# 31960/tcp open  unknown

# Way 1
openssl s_client localhost:31046 # bad
openssl s_client localhost:31518 # good
openssl s_client localhost:31691 # bad
openssl s_client localhost:31790 # good
openssl s_client localhost:31960 # bad

# Way 2
nmap localhost -sV -p 31046,31518,31691,31790,31960

echo &quot;kSkvUpMQ7lBYyCM4****************&quot; | openssl s_client -connect localhost:31518 -ign_eof
# Get the same we sent
echo &quot;kSkvUpMQ7lBYyCM4****************&quot; | openssl s_client -connect localhost:31790 -ign_eof
# Get the credential key

t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
touch sshkey.private
vim ./sshkey.private
# Paste it

chmod 600 ./sshkey.private
ssh bandit17@localhost -p 2220 -i ./sshkey.private
cat /etc/bandit_pass/bandit17
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;EReVavePLFHtFlFs****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 18&lt;/h2&gt;
&lt;p&gt;There are 2 files in the homedirectory: passwords.old and passwords.new. The password for the next level is in passwords.new and is the only line that has been changed between passwords.old and passwords.new&lt;/p&gt;
&lt;p&gt;NOTE: if you have solved this level and see ‘Byebye!’ when trying to log into bandit18, this is related to the next level, bandit19&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;diff passwords.old passwords.new

# Or
vimdiff passwords.old passwords.new
# vim -d passwords.old passwords.new
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;x2gLTTjFwMOhQ8oW****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 19&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a file readme in the homedirectory. Unfortunately, someone has modified .bashrc to log you out when you log in with SSH.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh bandit18@bandit.labs.overthewire.org -p 2220 &quot;cat readme&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;cGWpMaKXVwDUNgPA****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 20&lt;/h2&gt;
&lt;p&gt;To gain access to the next level, you should use the setuid binary in the homedirectory. Execute it without arguments to find out how to use it. The password for this level can be found in the usual place (/etc/bandit_pass), after you have used the setuid binary.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat /etc/bandit_pass/bandit20
# cat: /etc/bandit_pass/bandit20: Permission denied
./bandit20-do cat /etc/bandit_pass/bandit20
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;0qXahG8ZjOVMN9Gh****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 21&lt;/h2&gt;
&lt;p&gt;There is a setuid binary in the homedirectory that does the following: it makes a connection to localhost on the port you specify as a commandline argument. It then reads a line of text from the connection and compares it to the password in the previous level (bandit20). If the password is correct, it will transmit the password for the next level (bandit21).&lt;/p&gt;
&lt;p&gt;NOTE: Try connecting to your own network daemon to see if it works as you think&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;tmux
nc -lvp 12345

# Then split the window using Ctrl+b % / Ctrl+b &quot;
./suconnect 12345

# Return to nc panel using Ctrl+b &amp;#x3C;arrow key&gt; / Ctrl+b ; / Ctrl+b o
# Paste password: 0qXahG8ZjOVMN9Ghs7iOWsCfZyXOUbYO
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;EeoULMCra2q0dSkY****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 22&lt;/h2&gt;
&lt;p&gt;A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /etc/cron.d/
cat ./cronjob_bandit22
cat /usr/bin/cronjob_bandit22.sh
# #!/bin/bash
# chmod 644 /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
# cat /etc/bandit_pass/bandit22 &gt; /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv

cat /tmp/t7O6lds9S0RqQh9aMcz6ShpAoZKF7fgv
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;tRae0UfB9v0UzbCd****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 23&lt;/h2&gt;
&lt;p&gt;A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.&lt;/p&gt;
&lt;p&gt;NOTE: Looking at shell scripts written by other people is a very useful skill. The script for this level is intentionally made easy to read. If you are having problems understanding what it does, try executing it to see the debug information it prints.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /etc/cron.d/
cat ./cronjob_bandit23
cat /usr/bin/cronjob_bandit23.sh
# #!/bin/bash
#
# myname=$(whoami)
# mytarget=$(echo I am user $myname | md5sum | cut -d &apos; &apos; -f 1)
#
# echo &quot;Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget&quot;
#
# cat /etc/bandit_pass/$myname &gt; /tmp/$mytarget
myname=bandit23
mytarget=$(echo I am user $myname | md5sum | cut -d &apos; &apos; -f 1)
echo &quot;Copying passwordfile /etc/bandit_pass/$myname to /tmp/$mytarget&quot;
cat /tmp/8ca319486bfbbc3663ea0fbe81326349
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;0Zf11ioIjMVN551j****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 24&lt;/h2&gt;
&lt;p&gt;A program is running automatically at regular intervals from cron, the time-based job scheduler. Look in /etc/cron.d/ for the configuration and see what command is being executed.&lt;/p&gt;
&lt;p&gt;NOTE: This level requires you to create your own first shell-script. This is a very big step and you should be proud of yourself when you beat this level!&lt;/p&gt;
&lt;p&gt;NOTE 2: Keep in mind that your shell script is removed once executed, so you may want to keep a copy around…&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /etc/cron.d/
cat ./cronjob_bandit24
cat /usr/bin/cronjob_bandit24.sh
# #!/bin/bash
#
# myname=$(whoami)
#
# cd /var/spool/$myname/foo
# echo &quot;Executing and deleting all scripts in /var/spool/$myname/foo:&quot;
# for i in * .*;
# do
#     if [ &quot;$i&quot; != &quot;.&quot; -a &quot;$i&quot; != &quot;..&quot; ];
#     then
#         echo &quot;Handling $i&quot;
#         owner=&quot;$(stat --format &quot;%U&quot; ./$i)&quot;
#         if [ &quot;${owner}&quot; = &quot;bandit23&quot; ]; then
#             timeout -s 9 60 ./$i
#         fi
#         rm -f ./$i
#     fi
# done

cd /var/spool/bandit24/foo

# Way 1
tmux
nc -lvp 12345
# New tab and write script
vim cworld.sh
# #!/bin/bash
#
# cat /etc/bandit_pass/bandit24 | nc localhost 12345
# Don&apos;t forget to give the permission (run it as fast as you can)
chmod +x cworld.sh

# Way 2
tmux
vim cworld.sh
# #!/bin/bash
#
# cat /etc/bandit_pass/bandit24 &gt; /var/spool/bandit24/foo/cworld1
# Don&apos;t forget to give the permission (run it as fast as you can)
chmod +x cworld.sh
# New tab and get answer
cat /var/spool/bandit24/foo/cworld1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;gb8KRRCsshuZXI0t****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 25&lt;/h2&gt;
&lt;p&gt;A daemon is listening on port 30002 and will give you the password for bandit25 if given the password for bandit24 and a secret numeric 4-digit pincode. There is no way to retrieve the pincode except by going through all of the 10000 combinations, called brute-forcing.&lt;/p&gt;
&lt;p&gt;You do not need to create new connections each time&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;
t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t

vim get-code.sh
#!/bin/bash

for i in {0000..9999} ; do
    echo gb8KRRCsshuZXI0tUuR6ypOFjiZbf3G8 $i &gt;&gt; possibilities.txt
done
echo &apos;File generated.&apos;

cat possibilities.txt | nc localhost 30002 &gt; result.txt
echo &apos;Test done.&apos;
sort result.txt | grep -v &quot;Wrong!&quot;

chmod +x ./get-code.sh
./get-code.sh
# Sit back and relax
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;iCi86ttT4KSNe1ar****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 26&lt;/h2&gt;
&lt;p&gt;Logging in to bandit26 from bandit25 should be fairly easy… The shell for user bandit26 is not /bin/bash, but something else. Find out what it is, how it works and how to break out of it.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh bandit26@localhost -p 2220 -i ./bandit26.sshkey
# Bad for this

cat /etc/passwd | grep &quot;bandit26&quot;
# bandit26:x:11026:11026:bandit level 26:/home/bandit26:/usr/bin/showtext

cat /usr/bin/showtext
# #!/bin/sh
#
# export TERM=linux
#
# exec more ~/text.txt
# exit 0

# It use command more, which will show percent if the window size is not enough to show all the text
# Set your terminal window height size very small, only contains 3 to 4 lines
ssh bandit26@localhost -p 2220 -i ./bandit26.sshkey

# As man manual shows:
# !command or :!command
#            Execute command in a subshell.
# v
#            Start up an editor at current line. The editor is taken from the environment variable VISUAL if defined,
#            or EDITOR if VISUAL is not defined, or defaults to vi(1) if neither VISUAL nor EDITOR is defined.

# Go to the vim and
# :e /etc/bandit_pass/bandit26

# Or
# :set shell=/bin/bash
# :shell
cat /etc/bandit_pass/bandit26
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;s0773xxkk0MXfdqO****************&lt;/code&gt;&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Over the Wire - [01]Bandit (1)</title><link>https://cworld0.com/blog/over-the-wire-bandit-1</link><guid isPermaLink="true">https://cworld0.com/blog/over-the-wire-bandit-1</guid><description>The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames.</description><pubDate>Wed, 10 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;Is only has great fun playing it by yourself. I&apos;m here just to write a post recommend you try it and give some good solutions that tell you a new way to solve the problem.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Series content:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;/blog/over-the-wire-bandit-1&quot;&gt;Over the Wire - [01]Bandit (1)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/over-the-wire-bandit-2&quot;&gt;Over the Wire - [01]Bandit (2)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;/blog/over-the-wire-bandit-3&quot;&gt;Over the Wire - [01]Bandit (3)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;You May Need to Know&lt;/h2&gt;
&lt;h3&gt;Wargames&lt;/h3&gt;
&lt;p&gt;The wargames offered by the OverTheWire community can help you to learn and practice security concepts in the form of fun-filled games.&lt;/p&gt;
&lt;h3&gt;Bandit&lt;/h3&gt;
&lt;p&gt;The Bandit wargame is aimed at absolute beginners. It will teach the basics needed to be able to play other wargames.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note for beginners&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This game, like most other games, is organized in levels. You start at Level 0 and try to “beat” or “finish” it. Finishing a level results in information on how to start the next level. The pages on this website for “Level ” contain information on how to start level X from the previous level. E.g. The page for Level 1 has information on how to gain access from Level 0 to Level 1. All levels in this game have a page on this website, and they are all linked to from the side menu on the left of this page.&lt;/p&gt;
&lt;p&gt;You will encounter many situations in which you have no idea what you are supposed to do. Don’t panic! Don’t give up! The purpose of this game is for you to learn the basics. Part of learning the basics, is reading a lot of new information. If you’ve never used the command line before, a good first read is this &lt;a href=&quot;https://man7.org/linux/man-pages/man1/intro.1.html&quot;&gt;introduction to user commands&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;There are several things you can try when you are unsure how to continue:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;First, if you know a command, but don’t know how to use it, try the manual (&lt;a href=&quot;https://en.wikipedia.org/wiki/Man_page&quot;&gt;man page&lt;/a&gt;) by entering man . For example, man ls to learn about the “ls” command. The “man” command also has a manual, try it! When using man, press q to quit (you can also use / and n and N to search).&lt;/p&gt;
&lt;p&gt;Second, if there is no man page, the command might be a shell built-in. In that case use the “help ” command. E.g. help cd&lt;/p&gt;
&lt;p&gt;Also, your favorite search-engine is your friend. Learn how to use it! I recommend &lt;a href=&quot;https://www.google.com/&quot;&gt;Google&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;You’re ready to start! Begin with Level 0, linked at the left of this page. Good luck!&lt;/p&gt;
&lt;p&gt;Note for VMs: You may fail to connect to overthewire.org via SSH with a “broken pipe error” when the network adapter for the VM is configured to use NAT mode. Adding the setting IPQoS throughput to /etc/ssh/ssh_config should resolve the issue. If this does not solve your issue, the only option then is to change the adapter to Bridged mode.&lt;/p&gt;
&lt;h2&gt;Pre&lt;/h2&gt;
&lt;p&gt;--[ Playing the games ]--&lt;/p&gt;
&lt;p&gt;This machine might hold several wargames.
If you are playing &quot;somegame&quot;, then:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* USERNAMES are somegame0, somegame1, ...
* Most LEVELS are stored in /somegame/.
* PASSWORDS for each level are stored in /etc/somegame_pass/.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Write-access to homedirectories is disabled. It is advised to create a
working directory with a hard-to-guess name in /tmp/. You can use the
command &quot;mktemp -d&quot; in order to generate a random and hard to guess
directory in /tmp/. Read-access to both /tmp/ is disabled and to /proc
restricted so that users cannot snoop on each other. Files and directories
with easily guessable or short names will be periodically deleted! The /tmp
directory is regularly wiped.
Please play nice:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* don&apos;t leave orphan processes running
* don&apos;t leave exploit-files laying around
* don&apos;t annoy other players
* don&apos;t post passwords or spoilers
* again, DON&apos;T POST SPOILERS!
  This includes writeups of your solution on your blog or website!
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;--[ Tips ]--&lt;/p&gt;
&lt;p&gt;This machine has a 64bit processor and many security-features enabled
by default, although ASLR has been switched off. The following
compiler flags might be interesting:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;-m32                    compile for 32bit
-fno-stack-protector    disable ProPolice
-Wl,-z,norelro          disable relro
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In addition, the execstack tool can be used to flag the stack as
executable on ELF binaries.&lt;/p&gt;
&lt;p&gt;Finally, network-access is limited for most levels by a local
firewall.&lt;/p&gt;
&lt;p&gt;--[ Tools ]--&lt;/p&gt;
&lt;p&gt;For your convenience we have installed a few useful tools which you can find
in the following locations:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;* gef (https://github.com/hugsy/gef) in /opt/gef/
* pwndbg (https://github.com/pwndbg/pwndbg) in /opt/pwndbg/
* peda (https://github.com/longld/peda.git) in /opt/peda/
* gdbinit (https://github.com/gdbinit/Gdbinit) in /opt/gdbinit/
* pwntools (https://github.com/Gallopsled/pwntools)
* radare2 (http://www.radare.org/)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;--[ More information ]--&lt;/p&gt;
&lt;p&gt;For more information regarding individual wargames, visit
http://www.overthewire.org/wargames/&lt;/p&gt;
&lt;p&gt;For support, questions or comments, contact us on discord or IRC.&lt;/p&gt;
&lt;p&gt;Enjoy your stay!&lt;/p&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;!!! Attention !!!&lt;/p&gt;
&lt;p&gt;!!! Attention !!!&lt;/p&gt;
&lt;p&gt;!!! Attention !!!&lt;/p&gt;
&lt;p&gt;The next part will show you the answer of each level. If you have not tried yourself, it will decrease your interests.&lt;/p&gt;
&lt;p&gt;By the way, the real passwords are at the bottom of the article of the last of this series.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2&gt;Level 0&lt;/h2&gt;
&lt;p&gt;The goal of this level is for you to log into the game using SSH. The host to which you need to connect is bandit.labs.overthewire.org, on port 2220. The username is bandit0 and the password is bandit0. Once logged in, go to the Level 1 page to find out how to beat Level 1.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ssh bandit0@bandit.labs.overthewire.org -p 2220
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: bandit0&lt;/p&gt;
&lt;h2&gt;Level 1&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a file called readme located in the home directory. Use this password to log into bandit1 using SSH. Whenever you find a password for a level, use SSH (on port 2220) to log into that level and continue the game.&lt;/p&gt;
&lt;p&gt;Password: &lt;code&gt;ZjLjTmM6FvvyRnrb****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 2&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a file called - located in the home directory&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat ./-
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;263JGJPfgU6LtdEv****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 3&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a file called spaces in this filename located in the home directory&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat ./spaces\ in\ this\ filename
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;MNk8KNH3Usiio41P****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 4&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a hidden file in the inhere directory.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat ./...Hiding-From-You
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;2WmrDFRmJIq3IPxn****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 5&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the only human-readable file in the inhere directory. Tip: if your terminal is messed up, try the “reset” command.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;find -exec file {} \;
find . -type f -exec sh -c &apos;file &quot;{}&quot; | grep &quot;ASCII&quot; &amp;#x26;&amp;#x26; cat &quot;{}&quot;&apos; \;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;4oQYVPkxZOOEOO5p****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 6&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in a file somewhere under the inhere directory and has all of the following properties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;human-readable&lt;/li&gt;
&lt;li&gt;1033 bytes in size&lt;/li&gt;
&lt;li&gt;not executable&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;find . -type f -size 1033c
find . -type f -size 1033c -exec cat {} \;
find . -type f -size 1033c -exec file {} \; | grep &quot;ASCII&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;HWasnPhtq9AVKe0d****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 7&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored somewhere on the server and has all of the following properties:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;owned by user bandit7&lt;/li&gt;
&lt;li&gt;owned by group bandit6&lt;/li&gt;
&lt;li&gt;33 bytes in size&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;find / -user bandit7 -type f -size 33c
find / -user bandit7 -type f -size 33c 2&gt;/dev/null
find / -user bandit7 -group bandit6 -type f -size 33c 2&gt;/dev/null
find / -user bandit7 -group bandit6 -type f -size 33c 2&gt;/dev/null -exec cat {} \;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;morbNTDkSW6jIlUc****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 8&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt next to the word millionth&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;grep &quot;millionth&quot; data.txt

# Or
vim ./data.txt
# /millionth
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;dfwvzFQi4mU0wfNb****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 9&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt and is the only line of text that occurs only once&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sort ./data.txt | uniq -u
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;4CKMh1JI91bUIZZP****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 10&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt in one of the few human-readable strings, preceded by several ‘=’ characters.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;strings data.txt | grep &quot;==&quot;

# Or
vim ./data.txt
# /====
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;FGUW5ilLVJrxX9kM****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 11&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt, which contains base64 encoded data&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;base64 -d ./data.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;dtR173fZKb0RRsDF****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 12&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt, where all lowercase (a-z) and uppercase (A-Z) letters have been rotated by 13 positions&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat ./data.txt | tr &apos;A-Za-z&apos; &apos;N-ZA-Mn-za-m&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;7x16WNeHIi5YkIhW****************&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;Level 13&lt;/h2&gt;
&lt;p&gt;The password for the next level is stored in the file data.txt, which is a hexdump of a file that has been repeatedly compressed. For this level it may be useful to create a directory under /tmp in which you can work. Use mkdir with a hard to guess directory name. Or better, use the command “mktemp -d”. Then copy the datafile using cp, and rename it using mv (read the manpages!)&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;t=$(mktemp -d) &amp;#x26;&amp;#x26; cd $t
cp ~/data.txt .

# Dump hex to binaries
xxd -r data.txt reverse_data
file ./reverse_data

# Decompress gzip
mv ./reverse_data data-gzip.gz
gzip -dk ./data-gzip.gz
file ./data-gzip

# Decompress bzip2
mv ./data-gzip data-bzip2.bz2
bzip2 -dk ./data-bzip2.bz2
file ./data-bzip2

# Decompress gzip
mv ./data-bzip2 data-gzip-2.gz
gzip -dk ./data-gzip-2.gz
file ./data-gzip-2

# Decompress POSIX tar archive (GNU)
mv ./data-gzip-2 data-tar.tar
tar -xvf ./data-tar.tar
file ./data5.bin

# Decompress POSIX tar archive (GNU)
mv ./data5.bin data-tar-2.tar
tar -xvf ./data-tar-2.tar
file ./data6.bin

# Decompress bzip2
mv ./data6.bin data-bzip2-2.bz2
bzip2 -dk ./data-bzip2-2.bz2
file ./data-bzip2-2

# Decompress POSIX tar archive (GNU)
mv ./data-bzip2-2 data-tar-3.tar
tar -xvf ./data-tar-3.tar
file ./data8.bin

# Decompress gzip
mv ./data8.bin data-gzip-3.gz
gzip -dk ./data-gzip-3.gz
file ./data-gzip-3

# Get answer
cat ./data-gzip-3
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Password: &lt;code&gt;FO5dwFsc0cbaIiH0****************&lt;/code&gt;&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Pure New Tab</title><link>https://cworld0.com/blog/pure-new-tab</link><guid isPermaLink="true">https://cworld0.com/blog/pure-new-tab</guid><description>A open-source, clean and minimalistic ntp extension.</description><pubDate>Sat, 06 Jul 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { GithubCard } from &apos;astro-pure/advanced&apos;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;前要：最近常常再几个主流浏览器之间徘徊偶尔混用，被各家混乱的新标签页烦恼不已（点名批评 Edge，要么占后台要么加载迟缓甚至闪白屏，体验实在是一言难尽）。加之后面有个比赛是与浏览器插件相关的，想熟悉一下工作流程和原理踩踩坑，于是就有了这个拓展/插件。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如果对开发者的碎碎念不感兴趣，可以直接跳到&lt;a href=&quot;#open-source&quot;&gt;文末&lt;/a&gt;。&lt;/p&gt;
&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fintro.B5rgXfvn.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;intro&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Developer Log&lt;/h2&gt;
&lt;p&gt;As the desc of article says, the biggest feature of the extension is its extreme lightweight and high customizability. To achieve this, I only choose vanilla, the most native front-end dynamic language, and give up a series of modern front-end frameworks and libraries as Vue, React, Svelte, Solid, etc. The extension is only 25KB in size (if exclude the font resources), and the loading time is less than 1ms, which is almost negligible.&lt;/p&gt;
&lt;p&gt;But correspondingly, the development difficulty is obviously much higher than expected. Native typescript/javascript requires a lot of code and encapsulation for a simple operation to keep the code as elegant and efficient as possible. Dynamic getter and setter is also very hard for me without lvvm or other advanced compiler support. But I still try my best to make the code as clean and readable as possible and finally make it a reality.&lt;/p&gt;
&lt;p&gt;I also paid a lot of attention to the style of the plugin. I hope to build a modern and tough style (after all, in this era of ui filled with rounded corners, I think it may be cooler), with a little bit of popular creative magazine/poster elements. The colorful and light color scheme can just keep me from getting a headache, and not feel too bland.&lt;/p&gt;
&lt;p&gt;I hope you enjoy it as much as I do. The download link is at the bottom of the article. If you have any suggestions or questions, please feel free to leave a comment below (if you have a Github account, I prefer suggesting you to &lt;a href=&quot;https://github.com/cworld1/pure-new-tab/issues&quot;&gt;create a issue&lt;/a&gt; instead).&lt;/p&gt;
&lt;h2&gt;Develop Progress&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[x] Basic layout&lt;/li&gt;
&lt;li&gt;[x] Sentence&lt;/li&gt;
&lt;li&gt;[x] Clock&lt;/li&gt;
&lt;li&gt;[x] Date&lt;/li&gt;
&lt;li&gt;[x] Basic settings&lt;/li&gt;
&lt;li&gt;[x] Quick links / Fav / Bookmarks&lt;/li&gt;
&lt;li&gt;[ ] Search&lt;/li&gt;
&lt;li&gt;[ ] Weather&lt;/li&gt;
&lt;li&gt;[ ] ...&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Open Source&lt;/h2&gt;
&lt;p&gt;It is open-source and free to use. Check it on &lt;a href=&quot;https://github.com/cworld1/pure-new-tab&quot;&gt;Github&lt;/a&gt;. Don&apos;t forget to give a star if you like it. And don&apos;t hesitate to give me a pull request if you have any good ideas.&lt;/p&gt;
&lt;h2&gt;Download&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Edge: &lt;a href=&quot;https://microsoftedge.microsoft.com/addons/detail/pure-new-tab/fnbdnahaooncnjmjmgfadeoongmofeac&quot;&gt;Edge Add-ons&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;~~(If the version is still in v1.0.0, it is not recommend to install it. Review from M$ is too slow)~~ (It is now updated to v1.2.0)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Chrome-based browsers: &lt;a href=&quot;https://chromewebstore.google.com/detail/pure-new-tab/agnlbedodjakghighoekfbbdnpbebbll&quot;&gt;Chrome Web Store&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Firefox: &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/pure-new-tab/&quot;&gt;Firefox Add-ons&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;If you have problem with the above links, you can also download the extension from &lt;a href=&quot;https://github.com/cworld1/pure-new-tab/releases/latest&quot;&gt;Github Release&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Give rating and feedback on the addon store if you like it.&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.D2vlXNM5.jpg"/><enclosure url="/_astro/thumbnail.D2vlXNM5.jpg"/></item><item><title>Astro Theme Pure 项目</title><link>https://cworld0.com/blog/astro-theme-pure</link><guid isPermaLink="true">https://cworld0.com/blog/astro-theme-pure</guid><description>前段时间写了个前端项目，一时兴起，就顺便把博客也翻新了一遍。</description><pubDate>Fri, 19 Apr 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { GithubCard, LinkPreview } from &apos;astro-pure/advanced&apos;&lt;/p&gt;
&lt;h2&gt;When&lt;/h2&gt;
&lt;p&gt;前段时间写了个前端项目（React + Antd），感叹前端变化太快，开发体验已经比几年前学 Vue 好上不少了。一时兴起 ~~（上瘾）~~ ，就顺便把博客也翻新了一遍。然而过程还蛮曲折的，有些东西要推翻重来，前前后后花了一个多月，也是挺令人感叹的。&lt;/p&gt;
&lt;h2&gt;Why&lt;/h2&gt;
&lt;p&gt;这事倒是早就想做了，因为旧博客问题实在是不少：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;框架为 Hexo，稍有过时，更新不够积极；&lt;/li&gt;
&lt;li&gt;主题大多不是很满意；&lt;/li&gt;
&lt;li&gt;使用的主题已经快3年不更新了（并且没找到别的好看的）；&lt;/li&gt;
&lt;li&gt;使用的主题有一些莫名其妙的 Bug，比如本地预览重复使用导致崩溃；&lt;/li&gt;
&lt;li&gt;使用的主题自定义能力太弱，实现方式不太优雅；&lt;/li&gt;
&lt;li&gt;使用的主题在脚本兼容方面不够友好；&lt;/li&gt;
&lt;li&gt;与我的主域名耦合度不好，很容易造成割裂体验；&lt;/li&gt;
&lt;li&gt;子域名导致的链接较长。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;新的框架使用 Astro，简单体验下来有以下优点：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;大量优质主题（但更新可能不怎么勤快）；&lt;/li&gt;
&lt;li&gt;主题与源码耦合，能够随意拆解、修改主题代码（但更新可能更为困难）；&lt;/li&gt;
&lt;li&gt;对 Typescript 极其友好（可能会有一堆类型报错问题）；&lt;/li&gt;
&lt;li&gt;导入调用体验很好，并且会有针对性优化，不再需要强行塞进 &lt;code&gt;public&lt;/code&gt; 文件夹了&lt;/li&gt;
&lt;li&gt;性能强悍，渲染速度快、访问流畅，懒加载技术立竿见影；&lt;/li&gt;
&lt;li&gt;支持 MDX 语法，文档内也能够自定义组件和内容（暂时用不上。？）；&lt;/li&gt;
&lt;li&gt;支持 Web Component 和文件拆分、Slot，使得源码能够组件话，抽丝剥茧、方便复用；&lt;/li&gt;
&lt;li&gt;框架的说明文档丰富好用；&lt;/li&gt;
&lt;li&gt;生态极其强大，对主流框架/服务平台支持极其完善&lt;/li&gt;
&lt;li&gt;开发模式会有开发者工具栏，调试省心省力，优化建议更是避免了疏漏。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;缺点也在括号里。不过明显是利大于弊了。&lt;/p&gt;
&lt;h2&gt;What&lt;/h2&gt;
&lt;p&gt;好马配好鞍，除了新的框架外，我还配合了一些新的东西：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;基于知名优秀主题 &lt;a href=&quot;https://github.com/chrismwilliams/astro-theme-cactus&quot;&gt;Astro Cactus&lt;/a&gt; 最新改进的 &lt;a href=&quot;https://github.com/srleom/astro-theme-resume?tab=readme-ov-file&quot;&gt;Astro Resume&lt;/a&gt; 主题为基底；&lt;/li&gt;
&lt;li&gt;采用了 &lt;a href=&quot;https://tailwindcss.com&quot;&gt;Tailwind CSS&lt;/a&gt;，帮助我快速搭建组件、布局样式；&lt;/li&gt;
&lt;li&gt;后端改为有服务属性的 Vercel，能够在后端完成渲染。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Where&lt;/h2&gt;
&lt;p&gt;新的框架顺利帮助我完成了主页和博客页面的无缝衔接，顺利成章地合并进主域名，博客页面也就改为了&lt;a href=&quot;https://cworld0.com/blog&quot;&gt;cworld0.com/blog&lt;/a&gt;。希望新博客能让我多一些更新动力吧。&lt;/p&gt;
&lt;h2&gt;Who&lt;/h2&gt;
&lt;p&gt;合并后名称改为了 &lt;code&gt;CWorld Site&lt;/code&gt;，毕竟是主域名嘛。&lt;/p&gt;
&lt;h2&gt;How&lt;/h2&gt;
&lt;p&gt;目前博客的翻新进度：&lt;/p&gt;
&lt;h3&gt;Stage 1: Initial&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 更换框架&lt;/li&gt;
&lt;li&gt;[x] 更换主题&lt;/li&gt;
&lt;li&gt;[x] 修改主页&lt;/li&gt;
&lt;li&gt;[x] 修改关于界面&lt;/li&gt;
&lt;li&gt;[x] 添加折叠组件&lt;/li&gt;
&lt;li&gt;[x] 完善博客列表展示，加入头图预览&lt;/li&gt;
&lt;li&gt;[x] 完善详情页面头图组件&lt;/li&gt;
&lt;li&gt;[x] 对接后端，完成首次部署&lt;/li&gt;
&lt;li&gt;[x] 利用 CI/CD 实现全自动部署&lt;/li&gt;
&lt;li&gt;[x] 添加时间轴组件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stage 2: Fix&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 清洗友链数据&lt;/li&gt;
&lt;li&gt;[x] 添加友链组件&lt;/li&gt;
&lt;li&gt;[x] 清洗评论数据，迁移到新博客&lt;/li&gt;
&lt;li&gt;[x] 添加评论组件&lt;/li&gt;
&lt;li&gt;[x] 完善页脚信息&lt;/li&gt;
&lt;li&gt;[x] 添加浏览数、评论数统计组件 (Tks for project &lt;a href=&quot;https://waline.js.org/guide/features/pageview.html&quot;&gt;Waline&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 关闭旧博客评论区&lt;/li&gt;
&lt;li&gt;[x] 将旧博客地址迁移到 &lt;a href=&quot;https://blogv2.cworld.top/&quot;&gt;blogv2.cworld.top&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[x] 添加旧域名跳转页面，实现文章直接跳转&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stage 3: Update&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 优化手机端顶部导航栏样式（为点击展开菜单式）&lt;/li&gt;
&lt;li&gt;[x] 优化图标存储位置和存储方式&lt;/li&gt;
&lt;li&gt;[x] 为部分内容添加图标，用以替换原有的文本描述&lt;/li&gt;
&lt;li&gt;[x] 添加社交卡片（实时加载粉丝数等）&lt;/li&gt;
&lt;li&gt;[x] 优化 RSS，添加简单样式和完整内容预览&lt;/li&gt;
&lt;li&gt;[x] 完善使用工具组件&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stage 4: Develop&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 添加朋友圈组件&lt;/li&gt;
&lt;li&gt;[x] 添加项目组件，把我写的一些有脸面的项目放进去&lt;/li&gt;
&lt;li&gt;[x] 添加 GPG Key 板块， ~~证明是我写的代码~~&lt;/li&gt;
&lt;li&gt;[x] 添加版权组件&lt;/li&gt;
&lt;li&gt;[x] 添加打赏板块&lt;/li&gt;
&lt;li&gt;[x] 版权组件优化，添加打赏、复制链接、分享等简单功能&lt;/li&gt;
&lt;li&gt;[x] 添加前后文章快速跳转&lt;/li&gt;
&lt;li&gt;[x] 添加文章数统计&lt;/li&gt;
&lt;li&gt;[x] 添加目录指示高亮功能&lt;/li&gt;
&lt;li&gt;[x] 优化回顶按钮显示当前阅读百分比&lt;/li&gt;
&lt;li&gt;[x] 添加按年份归档展示文章功能&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stage 5: Prove&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 绑定内容同步到部分社区/频道&lt;/li&gt;
&lt;li&gt;[x] 添加内容搜索功能 (Tks for code &lt;a href=&quot;https://github.com/markhorn-dev/astro-sphere/blob/main/src/components/Search.tsx&quot;&gt;markhorn-dev/astro-sphere&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 优化顶部导航栏逻辑，实现下滚隐藏、上滚呼出&lt;/li&gt;
&lt;li&gt;[x] 优化文章内容展示样式&lt;/li&gt;
&lt;li&gt;[x] 优化文章内容表格的展示和手机端优化&lt;/li&gt;
&lt;li&gt;[x] 添加图片配色渐变特效&lt;/li&gt;
&lt;li&gt;[x] 完善主页网页小卡片&lt;/li&gt;
&lt;li&gt;[x] 部分组件针对移动端优化&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Stage 6: Optimize&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;[x] 优化版权声明样式 (Tks for theme &lt;a href=&quot;https://hexo.fluid-dev.com/posts/hello-fluid/&quot;&gt;Hexo Theme Fluid&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 解决 RSS 中的图片资源链接问题 (Tks for article &lt;a href=&quot;https://billyle.dev/posts/adding-rss-feed-content-and-fixing-markdown-image-paths-in-astro&quot;&gt;Adding RSS Feed Content and Fixing Markdown Image Paths in Astro&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 优化目录树 (Tks for code &lt;a href=&quot;https://github.com/jw-12138/jw-12138.github.io/blob/main/src/components/toc.jsx&quot;&gt;jw-12138/jw-12138.github.io&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 优化 SEO&lt;/li&gt;
&lt;li&gt;[x] 开启 SPA 路由&lt;/li&gt;
&lt;li&gt;[x] 优化 Transition 性能，减少加载带来的闪烁&lt;/li&gt;
&lt;li&gt;[x] 添加载入渐变动画 (Tks for project &lt;a href=&quot;https://github.com/markhorn-dev/astro-nano&quot;&gt;markhorn-dev/astro-nano&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 添加链接预览/卡片组件 (Tks for project &lt;a href=&quot;https://github.com/delucis/astro-embed&quot;&gt;delucis/astro-embed&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[x] 迁移到新域名 &lt;a href=&quot;https://cworld0.com/&quot;&gt;cworld0.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;[x] 使用 Shiki 优化代码块渲染&lt;/li&gt;
&lt;li&gt;[x] 为 Shiki 添加复制按钮、语言展示等 (Tks for project &lt;a href=&quot;https://github.com/Myphz/shiki-filename-copy-transformers&quot;&gt;Myphz/Myphzshiki-filename-copy-transformers&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;[ ] 通知友链好友们修改信息&lt;/li&gt;
&lt;li&gt;[ ] ...&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;要改的东西真的挺多的。不过样式好看，写起来得心应手，还算是愉快的。展示一下 &lt;a href=&quot;https://pagespeed.web.dev/analysis/https-cworld-top/o229zrt5o4?form_factor=mobile&amp;#x26;hl=en&quot;&gt;PageSpeed Insights Result&lt;/a&gt;：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fpage-speed-insights.BSWba4vT.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;pagespeed insights&quot;&gt;&lt;/p&gt;
&lt;p&gt;~~拜托，满昏超帅的好不好！~~&lt;/p&gt;
&lt;p&gt;同以往一样，博客已开源至 Github，如果喜欢博客，欢迎 Fork 和 Star。&lt;/p&gt;
&lt;p&gt;但是请注意：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不能保留与我有关的原创个人向内容，包括但不限于：我的主页信息、所有博文、项目展示、友链、关于（你的经历跟我又不一样）；&lt;/li&gt;
&lt;li&gt;根据 GPL-3 协议规定，项目应当仍然保持开源；&lt;/li&gt;
&lt;li&gt;可以不保留原仓库指向或文本说明。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;End&lt;/h2&gt;
&lt;p&gt;在好友的帮助下，我创建了一个新的主题仓库~ 目前正在积极维护，希望大家喜欢：&lt;/p&gt;
&lt;p&gt;以及上架到的 Astro 官网的信息：&lt;/p&gt;</content:encoded><h:img src="/_astro/theme-astro-cover.BAsEgN3r.jpg"/><enclosure url="/_astro/theme-astro-cover.BAsEgN3r.jpg"/></item><item><title>Mumu 模拟器国际版优化</title><link>https://cworld0.com/blog/mumu-global</link><guid isPermaLink="true">https://cworld0.com/blog/mumu-global</guid><description>最近重装了系统，发现 Mumu 模拟器的国际版已经跟进国内的进度，来到 Android 12 了。本着尝鲜的原则，打算优化优化作为日常使用。</description><pubDate>Sun, 09 Jun 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;Mumu 国际版地址：&lt;a href=&quot;https://www.mumuplayer.com/index.html&quot;&gt;Mumu Player&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;体验&lt;/h2&gt;
&lt;p&gt;官网好像展示了不少国内手游...不知道是团队没有做本地化还是国内手游崛起了。简单体验下来感觉跟国内版区别不大，该有的功能一个没落下。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_16-23-23.BiaEQ6Vs.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;Mumu player&quot;&gt;&lt;/p&gt;
&lt;p&gt;开机过程无广告。启动后右上角有一块牛皮藓。上方无搜索框。顶栏右侧无消息中心、无软件专区。主页无换装功能，推荐程序换成了 Chrome 和 Amaze。&lt;/p&gt;
&lt;p&gt;应用克隆不确定是不是国际版专属。游戏专区移植来了，但是安静待在箭头小面板里，基本没啥影响。自带的软件商城应该是国际特供专区，仅提供预览功能，有跳转到 Play Store。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_16-29-05.D5yeC29P.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;app center&quot;&gt;&lt;/p&gt;
&lt;p&gt;自带谷歌四件套，但是系统设置内可停用，不用担心后台反复请求失败耗电了，这点算是非常舒适。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_16-31-58.hJ09lhDV.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;disable google service&quot;&gt;&lt;/p&gt;
&lt;p&gt;系统设置可以调中文，模拟器本身不清楚，不过能不能都没啥影响了。模拟器设置与国内版完全保持一致，设置内可一键开启 Root（但是游戏玩家请注意，Root 可能会导致某些游戏触发外挂误封、封号等恶劣影响，慎用）。&lt;/p&gt;
&lt;p&gt;游戏内快捷键动作、案件映射正常使用，Mumu 国内版早期的导出同样被砍，但是 Mumu 国内版的在线分享和在线导入提示无法使用，估计是需要等后续更新。不过好消息是本地导入依然可用，划火柴之类的进阶操作依然可以从网上下载，并且还能本地微调代码。&lt;/p&gt;
&lt;p&gt;与某项目联合的截图增强功能似乎暂时无法使用，公告明确指出 Global 版本不支持，不过这个功能本就是实验性的，大可期待后续更新。&lt;/p&gt;
&lt;p&gt;总的来说更加清爽，缺失的小功能大都无关紧要，整体明显更加轻量化，尤其是当你玩的手游有国际服，能够蹭上一些针对性的特殊优化的话，还是比较推荐。&lt;/p&gt;
&lt;h2&gt;优化&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;首先前往菜单中的问题检测（Problem Diagnosis），你可能需要按提示关闭 Hyper-V。按提示重启后再次检测，应该显示全绿。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_16-55-39.Yzb3tnI6.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;problem diagnosis&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;前往系统的 Windows Security（安全中心），按照图示路径关闭内存隔离，有效提示运行效率。重启生效。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_16-57-53.CBen3ian.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;windows security&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用你喜爱的清理工具清理注册表，残余注册表可能对模拟器运行效率造成一定程度的影响（玄学，但可能有用）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;前往系统设置 - 系统 - 可选功能 - 更多 Windows 功能，使图示两个选项保持关闭状态，避免与 Mumu 发生直接冲突。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-03-54.DjmWmxO9.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;system optional functions&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;前往系统设置 - 系统 - 显示 - 显卡，将 Mumu 添加进去，然后按需设置，不会设置可直接选择高性能。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-09-43.NQGx44Ac.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;system graphic settings&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;加固设定：如果你是 N 卡用户，前往 GeFore Experience / Nvidia App，手动加入到游戏列表，保证一定被 Nvidia 应用优化到。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-13-34.bTxL_XP5.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;nvidia app&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;前往 Mumu 本身设置，拉高配置，也可一定程度缓解卡顿问题。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-05-48.CtMoTRm_.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;mumu settings&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;此外官网也有一些优化指南，如有必要可作参考。&lt;/p&gt;
&lt;p&gt;经过上述一顿操作，重启模拟器，大概已经变得非常丝滑流畅了。设置内帧率显示开启后，除开较为复杂的 3D 场景，应该能稳定保持高帧运转。接下来可能要做一些特殊优化。&lt;/p&gt;
&lt;h2&gt;除藓&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;注：除非你是强迫症，并不是很建议去除广告，这应该是国际版模拟器唯一明显的广告位置了，人家毕竟不是做慈善的，如果去除掉，多少会影响收入来源。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;通过提取启动器安装包后，MT 等工具逆向搜索，可发现类 &lt;code&gt;AppStoreApi&lt;/code&gt; 内含广告 API 接口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-22-47.uiU0L9LQ.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;launcher analysis&quot;&gt;&lt;/p&gt;
&lt;p&gt;易发现链接 API 对应的 IP 基本固定，故屏蔽 IP 即可。通过终端可获取：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-23-43.eT_WKPXs.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;terminal&quot;&gt;&lt;/p&gt;
&lt;p&gt;前往 Windows 防火墙（Firewall Defender），添加如图规则，注意对应程序路径，绿色打勾处默认即可：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-30-40.Cyor3xOK.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;add rule&quot;&gt;&lt;/p&gt;
&lt;p&gt;继续双击规则，在范围选项卡添加对应的拦截远程 IP 地址即可：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPixPin_2024-06-09_17-34-48.DhgK6MJB.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;add block ip&quot;&gt;&lt;/p&gt;
&lt;p&gt;IP 可能有变化，建议大家自行测试确认。测试代码：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;ping api.mumuglobal.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;截至目前发布文章，获取的 IP 地址为：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-log&quot;&gt;2406:da14:e55:92aa:7878:8552:c486:65da
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;当然如果你觉得手动添加 IP 太麻烦，也可以采用命令行添加。注意命令中的程序位置、对应地址，且命令行执行需要管理员权限：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-shell&quot;&gt;netsh advfirewall firewall add rule name=&quot;_阻止 Mumu 国际版获取广告&quot; dir=out action=block program=&quot;%ProgramFiles%\MuMuVMMVbox\Hypervisor\MuMuVMMHeadless.exe&quot; remoteip=&quot;2406:da14:e55:92aa:7878:8552:c486:65da&quot; enable=yes
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
&lt;h2&gt;综述&lt;/h2&gt;
&lt;p&gt;模拟器现在就 Mumu 和雷电两家最好用了，国际版干净高效，推荐尝试。&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>How to Use Git Offline</title><link>https://cworld0.com/blog/using-git-offline</link><guid isPermaLink="true">https://cworld0.com/blog/using-git-offline</guid><description>Sometimes you may need to use Git offline, and build a workflow that works without a central server.</description><pubDate>Fri, 17 May 2024 00:00:00 GMT</pubDate><content:encoded>&lt;blockquote&gt;
&lt;p&gt;This is an article referred from &lt;a href=&quot;https://www.gibbard.me/using_git_offline/&quot;&gt;/james/notes/computers&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Some companies use an isolated network or even the complete lack of a network as a security measure to protect from unauthorized access. Working on these systems can be a struggle but it is still possible, and perhaps even more important, to use a proper version control tool like Git.&lt;/p&gt;
&lt;h2&gt;Working with only one machine&lt;/h2&gt;
&lt;p&gt;By design Git works quite happily with no remote repository. You can branch, stage, and commit files just like normal.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir testRepo
cd testRepo
git init
touch test.txt
git add --all
git commit -m &quot;Initial Commit&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This works great if just a single machine is used for development, but this is often not the case. In the after content, we will look at how to work with multiple machines.&lt;/p&gt;
&lt;h2&gt; Cooperate using a USB memory stick/HDD&lt;/h2&gt;
&lt;p&gt;When security policy allows read/write access to a memory stick or portable hard drive a remote repository can be created on this device.&lt;/p&gt;
&lt;p&gt;On one development machine mount the memory stick.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /path/to/memory/stick
mkdir repoName.git
cd repoName.git
git init --bare
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navigate to the repository that is to be shared, add the remote repository on the memory stick, and push the changes.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /path/to/local/repo/
git remote add origin /path/to/memory/stick/repoName.git
git push origin master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;NB. The remote can be called anything. It doesn’t have to be called “origin”.&lt;/p&gt;
&lt;p&gt;Unmount the memory stick and mount it on another development machine.&lt;/p&gt;
&lt;p&gt;If the development machine does not have a copy of the repository on it already then git clone can be used.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone /path/to/memory/stick/repoName.git
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If there is a copy of the repository already on the machine add the memory stick as a remote and fetch/pull the changes.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /path/to/local/repo/
git remote add origin /path/to/memory/stick/repoName.git
git pull origin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From now on use Git as normal but make sure that whenever a git pull, fetch, or push is performed the memory stick is mounted on the machine.&lt;/p&gt;
&lt;p&gt;Ensure the memory stick is part of your backup routine.&lt;/p&gt;
&lt;h2&gt;Cooperate  using CD/DVDs&lt;/h2&gt;
&lt;p&gt;In locked down development environments memory sticks may be blocked. Using Git is still possible, but a little be more inconvenient.&lt;/p&gt;
&lt;p&gt;Git will happily fetch changes from one copy of a local repository to another. One option then is to simply copy the directory containing the local Git repository to another computer via CD or other media and make changes and commits like normal on both machines. When you want to combine changes select one machine to perform the merge and copy the other repository over to this machine. To pull all the changes into the current branch use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git pull /path/to/other/repo
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternatively you can fetch the changes and create a new branch to store them:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git fetch /path/to/other/repo
git checkout -b new_branch FETCH_HEAD
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At this point create a new copy of the repository complete with merges and move it over to the other machine/s. Pull the latest changes into the other repositories or if desired simply replace the whole repository with the new copy.&lt;/p&gt;
&lt;p&gt;Obviously this is far from optimal. Copying the whole repository directory will include personal settings and files excluded in the .gitignore file. To mitigate this Git clone could be used to duplicate the repository rather than just copying it, but a much better option is to use git bundle.&lt;/p&gt;
&lt;h3&gt;Git bundle&lt;/h3&gt;
&lt;p&gt;A git bundle allows for part or all of a repository to be compressed into a single file in a format that git is able to clone and fetch from.&lt;/p&gt;
&lt;p&gt;The workflow works very similar to before, but instead of copying the whole repository directory a git bundle is created. On the first machine create a bundle using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git bundle create repoName.bundle --all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;-- all&lt;/code&gt; option bundles the entire repository including all branches and tags. Specific branches or tags can be selected using &lt;code&gt;-b branchName&lt;/code&gt; or &lt;code&gt;-t tagName&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Copy the repoName.bundle file to another computer. To clone the repository simply use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone repoName.bundle
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Changes and commits can be made on any of the computers then like before one machine must be selected to perform the merge. On the non-merging machine make sure all changes are committed and create a bundle using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git bundle create repoName.bundle --all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For larger repositories it is a good idea to only bundle part of the repository to avoid transferring more data than needed. For example to only include the last 5 commits on the master branch use:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git bundle create repoName.bundle -5 master
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It is important that there are no gaps between the commits in the bundle and the commits on the repository where the merging will occur or the process will fail.&lt;/p&gt;
&lt;p&gt;Copy the bundle to the computer where the merge will occur and pull the changes using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git pull /path/to/repoName.bundle
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once the merging/rebasing is done create another bundle using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git bundle create repoName.bundle --all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In the above command &lt;code&gt;--all&lt;/code&gt; can be replaced with the desired subset of repos/commits.&lt;/p&gt;
&lt;p&gt;Move the bundle file to the other machine/s and update the changes there using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git pull /path/to/repoName.bundle
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Creating a local remote repository&lt;/h3&gt;
&lt;p&gt;Bundles solve the problem of synchronizing Git repositories without a network, but we are still left with multiple computers all likely to be slightly out of sync with each other. If a new developer joins the team who do they copy the repository from? The best option is to select one development machine that will act as the “server”. A bare Git repository can be created on this development machine in addition to a local clone of the repository where the developer will actually work.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /path/to/store/main/repo
mkdir remoteRepoName.git
cd remoteRepoName.git
git init --bare
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next navigate to the local git repository or create a new one and add the remoteRepoName.git repository as a remote repository.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cd /path/to/local/repo/
git remote add origin /path/to/store/main/repo/remoteRepoName.git
git push origin branchName
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Changes can then be made in the local repository, or pulled from bundles created on other development machines. Whenever changes are made they can be pushed to the remote using:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git push origin branchName
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Summary&lt;/h2&gt;
&lt;p&gt;The distributed nature of Git allows it to work well without a central server. While the options presented will never be as convenient as just pushing to github they certainly beat the alternative of: &lt;code&gt;main_v1_final version_with_bobs_extra_patch final_final_version&lt;/code&gt;.&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>A post of Markdown elements</title><link>https://cworld0.com/blog/markdown-elements</link><guid isPermaLink="true">https://cworld0.com/blog/markdown-elements</guid><description>This post is for testing and listing a number of different markdown elements</description><pubDate>Wed, 10 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;This is a H2 Heading&lt;/h2&gt;
&lt;h3&gt;This is a H3 Heading&lt;/h3&gt;
&lt;h4&gt;This is a H4 Heading&lt;/h4&gt;
&lt;h5&gt;This is a H5 Heading&lt;/h5&gt;
&lt;h6&gt;This is a H6 Heading&lt;/h6&gt;
&lt;h2&gt;Horizontal Rules&lt;/h2&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;hr&gt;
&lt;h2&gt;Emphasis&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;This is bold text&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;This is italic text&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;~~Strikethrough~~&lt;/p&gt;
&lt;h2&gt;Quotes&lt;/h2&gt;
&lt;p&gt;&quot;Double quotes&quot; and &apos;single quotes&apos;&lt;/p&gt;
&lt;h2&gt;Blockquotes&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;Blockquotes can also be nested...&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;...by using additional greater-than signs right next to each other...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/blockquote&gt;
&lt;h2&gt;References&lt;/h2&gt;
&lt;p&gt;An example containing a clickable reference[^1] with a link to the source.&lt;/p&gt;
&lt;p&gt;Second example containing a reference[^2] with a link to the source.&lt;/p&gt;
&lt;p&gt;[^1]: Reference first footnote with a return to content link.&lt;/p&gt;
&lt;p&gt;[^2]: Second reference with a link.&lt;/p&gt;
&lt;p&gt;If you check out this example in &lt;code&gt;src/content/index.md&lt;/code&gt;, you&apos;ll notice that the references and the heading &quot;Footnotes&quot; are added to the bottom of the page via the &lt;a href=&quot;https://github.com/remarkjs/remark-rehype#options&quot;&gt;remark-rehype&lt;/a&gt; plugin.&lt;/p&gt;
&lt;h2&gt;Lists&lt;/h2&gt;
&lt;p&gt;Unordered&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create a list by starting a line with &lt;code&gt;+&lt;/code&gt;, &lt;code&gt;-&lt;/code&gt;, or &lt;code&gt;*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Sub-lists are made by indenting 2 spaces:
&lt;ul&gt;
&lt;li&gt;Marker character change forces new list start:
&lt;ul&gt;
&lt;li&gt;Ac tristique libero volutpat at&lt;/li&gt;
&lt;li&gt;Facilisis in pretium nisl aliquet&lt;/li&gt;
&lt;li&gt;Nulla volutpat aliquam velit&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Very easy!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ordered&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Lorem ipsum dolor sit amet&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Consectetur adipiscing elit&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Integer molestie lorem at massa&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;You can use sequential numbers...&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;...or keep all the numbers as &lt;code&gt;1.&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Start numbering with offset:&lt;/p&gt;
&lt;ol start=&quot;57&quot;&gt;
&lt;li&gt;foo&lt;/li&gt;
&lt;li&gt;bar&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Todo list:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;[ ] This is an incomplete item&lt;/li&gt;
&lt;li&gt;[x] This is a complete item&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Code&lt;/h2&gt;
&lt;p&gt;Inline &lt;code&gt;code&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Indented code&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;// Some comments
line 1 of code
line 2 of code
line 3 of code
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Block code &quot;fences&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Sample text here...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Syntax highlighting&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;var foo = function (bar) {
  return bar++
}

console.log(foo(5))
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Expressive code examples&lt;/h3&gt;
&lt;p&gt;Adding a title&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;console.log(&apos;Title example&apos;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A bash terminal&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &quot;A base terminal example&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Highlighting code lines&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-js&quot;&gt;function demo() {
  console.log(&apos;this line is marked as deleted&apos;)
  // This line and the next one are marked as inserted
  console.log(&apos;this is the second inserted line&apos;)

  return &apos;this line uses the neutral default marker type&apos;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://expressive-code.com/&quot;&gt;Expressive Code&lt;/a&gt; can do a ton more than shown here, and includes a lot of &lt;a href=&quot;https://expressive-code.com/reference/configuration/&quot;&gt;customisation&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Tables&lt;/h2&gt;
&lt;p&gt;| Option | Description                                                               |
| ------ | ------------------------------------------------------------------------- |
| data   | path to data files to supply the data that will be passed into templates. |
| engine | engine to be used for processing templates. Handlebars is the default.    |
| ext    | extension to be used for dest files.                                      |&lt;/p&gt;
&lt;p&gt;Right aligned columns&lt;/p&gt;
&lt;p&gt;| Option |                                                               Description |
| -----: | ------------------------------------------------------------------------: |
|   data | path to data files to supply the data that will be passed into templates. |
| engine |    engine to be used for processing templates. Handlebars is the default. |
|    ext |                                      extension to be used for dest files. |&lt;/p&gt;
&lt;h2&gt;Images&lt;/h2&gt;
&lt;p&gt;Image in the same folder: &lt;code&gt;src/content/logo.png&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Flogo.DMXfm6vf.png&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;Astro theme cactus logo&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Links&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://markdown-it.github.io/&quot;&gt;Content from markdown-it&lt;/a&gt;&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.HAXFr_hw.jpg"/><enclosure url="/_astro/thumbnail.HAXFr_hw.jpg"/></item><item><title>泉盛 UV-K6 上手指南</title><link>https://cworld0.com/blog/uv-k6</link><guid isPermaLink="true">https://cworld0.com/blog/uv-k6</guid><description>解决 UV-K6 买来不会玩 &amp; 拓展玩法</description><pubDate>Sun, 06 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;下文将泉盛 UV-K5/6 简称为泉盛，萝狮虎固件简称 Losehu。&lt;/p&gt;
&lt;h2&gt;魔改版本&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;摘自 &lt;a href=&quot;https://nishikino-maki.com/archives/UV-K6-mod.html&quot;&gt;UV-K6折腾记&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;扩容&lt;/h3&gt;
&lt;p&gt;扩容，就是把64Kbit的改成2Mbit或者4Mbit。&lt;/p&gt;
&lt;p&gt;这个官方的“大内存512K”版本其实也是这么改。单片EEPROM的容量是2Mbit，于是官方串了两片BL24CM2，2Mbit+2Mbit于是4Mbit(512KiB)。但是实际上官方固件还是只用了64Kbit（笑死），不过也有原因下文会说。&lt;/p&gt;
&lt;p&gt;先说扩容，扩容就是为了刷更多功能的自定义固件。
当然官方中文固件其实也足够用了，问题是买K6就是为了折腾，买机不改不如丢下海。&lt;/p&gt;
&lt;p&gt;引用一段萝师虎的版本说明：&lt;/p&gt;
&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;LOSEHUxxx:中文固件，无需扩容，包含MDC1200、频谱、收音机&lt;/li&gt;
&lt;li&gt;LOSEHUxxxK:中文固件，需要1Mib以上Eeprom，包含多普勒模式、MDC1200、频谱、收音机、中文信道名、自定义开机中文字符、开机图片&lt;/li&gt;
&lt;li&gt;LOSEHUxxxH:中文固件，需要2Mib以上Eeprom，包含多普勒模式、中文输入法、频谱、收音机、中文信道名、自定义开机中文字符、开机图片&lt;/li&gt;
&lt;li&gt;LOSEHUxxxHS:中文固件，需要2Mib以上Eeprom，包含SI4732收音机、中文输入法、频谱、中文信道名、自定义开机中文字符、开机图片&lt;/li&gt;
&lt;li&gt;LOSEHUxxxE:英文固件，无需扩容，包含MDC1200、频谱、收音机、短信&lt;/li&gt;
&lt;li&gt;LOSEHUxxxEK:英文固件，需要1Mib以上Eeprom，包含多普勒模式、MDC1200、频谱、收音机、自定义开机字符、开机图片&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;但是这里要泼一个冷水，更早之前就已经比如B站的团长都测试过中文固件会掉灵敏度。而就我的测试是，就算是130版本的版本也一样没有改善。
中文信道名这个功能影响机子的接收灵敏度，大概降6dB（换言之就是比如130和130K/H两台机，130在-126dB就能过静噪有反应，130K/H要去到更高信号强度的-120dB才行，这确实是我用不同后缀同版本固件的K6实测的结果。）。原因是中文信道名需要日常加载中文字库，而中文字库对EEPROM的读取压力导致电磁干扰到K6的接收。（这估计也是为什么官方的中文只显示在不接收信号的工况下比如设置的界面（我猜的&lt;/p&gt;
&lt;p&gt;所以说，扩容没什么问题，但是中文信道名的固件会掉接收灵敏度，二者谁更重要看自己了，我选择灵敏度。&lt;/p&gt;
&lt;h3&gt;短波收音机&lt;/h3&gt;
&lt;p&gt;改收音机芯片接收短波，BK1080换成SI4732A10（一般现在叫4732改装的就是指SI4732A10）。
因为官方的BK1080只能接收FM，而本身即使刷第三方固件无论是IJV（优势在于CW/电码）还是CEC（最早搞定4732功能）又或是LOSEHU(中文区集大成者)，都只能让K6（包括K5）接收到18MHz到1300MHz（实际上能不能我也是存疑），对于低于18MHz的短波还是无能为力，于是就需要SI4732接力解决150kHz到30MHz这一段。&lt;/p&gt;
&lt;p&gt;这个吧，都得拆掉原机BK1080，然后也有两个方案：单天线（沿用本机原有天线线路）和双天线（4732的AM天线独立引出SMA，取代K6自己的LED位置）。&lt;/p&gt;
&lt;p&gt;我先说结论，要不别改，要改就改双天线版本，最好还带信号放大器LNA版本的。如果是手残建议直接买改好的。&lt;/p&gt;
&lt;p&gt;我属于踩坑买了单天线版本的，短波接收效果并不好，导致的原因倒是可以理解：1.可能是我手残焊得不好或者碰到别的元器件了（但是考虑到我改完以后4732的FM接收虽然变差了但也还将就能听，参考朋友那台已经改好的4732的FM也是比我没改的BK1080更差一点，只是AM能接收到而我这个AM接收几乎没有，参考4732的两路天线是独立的证明只有AM这路天线大概是出问题了；2.我买的单天线版本没有信号放大器，原机天线电路估计也没做短波放大优化，遇上我这边短波接收环境也是一个寄，弱弱联合了属于是；
3.K6的原装天线不适合接收短波，原装天线写明了其实也就支持FM/U/V三个段（严格来说是U/V两个段），对于30MHz以下的频率从地球物理来说原机天线根本就没凑上1/4波长，实际上至少都得凑个半米起步的拉杆天线或者磁棒天线（可能用目前说得甜甜圈天线可以改善但是需要阻抗转换）。&lt;/p&gt;
&lt;p&gt;所以说，双天线版本就目前看过的版本都是4732的FM部分走原机天线，AM也就是短波部分独立走LNA或者直接到新加的SMA座到新天线。&lt;/p&gt;
&lt;p&gt;另外考虑到4732无论是自己改还是已经第三方改好基本涨价40以上的情况下，我是觉得如果你愿意图一乐或者只想带一台机出门，那么可以考虑。
不然我更建议比如学我加钱300右转全新PL330，也是口袋机（真的随便裤袋一塞就行）。而且同样环境下经过我和朋友的同地同时实测，4732再改也打不赢专门做收音机的PL330（在流花湖边测试同频FM基本领先20dB，AM更是330轻松接收NHK WORLD-JAPAN，4732就是一个开摆），所以，放弃吧。
专机专用，RX还是交给Receiver，当然如果你更舍得而且口袋更大的话那么我更建议右转更强的PL660/680，还能接收航空波段。不过PL330截至目前我买到的版本是也一样带USB-C充电，而660未知。（至于某SR2xx我不好说，木有SSB，还是Micro-B充电接口，而且这个价格，都有人说等SR3xx了，那么等你个der呢……&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;当然还有一个更歪的路子就是用“上变频器”，经过测试，搭配短波用拉杆天线的情况下能用是能用，但不是很好用。先不说一大坨（SpyVerter需要外接供电），尤其是小心不要按到PTT，不然很可能会让上变频器过载损坏。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;官方功能&lt;/h2&gt;
&lt;p&gt;基础操作推荐 &lt;a href=&quot;https://space.bilibili.com/1014755256/channel/collectiondetail?sid=1864062&quot;&gt;合集·泉盛UV-K6调制视频&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;步进值调节&lt;/h3&gt;
&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV13a4y1S7ap&quot;&gt;https://www.bilibili.com/video/BV13a4y1S7ap&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;联通中继&lt;/h3&gt;
&lt;blockquote&gt;
&lt;p&gt;摘自 &lt;a href=&quot;http://bbs.cqcqcq.com/thread-44-1-1.html&quot;&gt;何谓中继、频率、频差、亚音、直频、倒频&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;由于建筑物/地形等的遮挡，在地面上的2个电台之间的信号可能无法互相传送到。通常5W手台，在市区，2公里以外就无法通连了。为此，人们在高处建立一个天线并设置一台大功率的特殊的收发电台，负责把一个频点上收来的信号（比如434.460）转发到另外一个频点上（比如439.460），于是在它覆盖范围内的电台都可以和它联系，也就是通过它和其他人联系，于是大家就通过中继台达到覆盖更广的通连范围，帮助小功率设备扩大信号的目的。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;中继&lt;/strong&gt;：通常的中继台需要使用一对频点，一个频点用来接收来自使用者手台或车台的信号（上行信号，如434.460），当收到时，在另一个频点上广播出去（下行信号，如439.460）。由于中继台占有比较好的地理位置，同时有比较大的发射功率，所以通过中继台能够联络到更多的人。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;使用中继的人的手台或车台的收发频率要和中继的收发频率相反，才可以打开中继。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;频率&lt;/strong&gt;：通常我们说的频率就是指下行频率。所谓“上行”频率是指电台的发射频率，而对应的“下行”频率，就是中继台发射的频率，也就是电台的接收频率（即守听频率）。因为一般用“下行”频率来标示一个中继的频率，一般也称下行频率为面频，相应的上行频率就称为“底频”。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;频差&lt;/strong&gt;：“下差”，一般使用中继设备通讯的时候，都是是用不同的发射和接受频率，接受频率和发射频率之间的频差称之为“差频”，差频又分为上差和下差，一般我们都使用下差，也就是发射频率低于接收频率，以460中继为例：发射频率是434.460，接受频率是439.460，两者相差5MHz，我们称之为下差5MHz，这是一般业余电台的设置方法，因为有些业余电台差频是被固定的，就是5MHz，当然也有一些地方将差频设置的比较特殊，比如香港有些中继就是设定成9.850MHz。（在泉盛中就是需要设置频差方向和频差频率）&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;亚音&lt;/strong&gt;：哑音是用于在同一频率上有多个电台通讯时，防止与自己不相干的电台干扰的一种方法。哑音有多种，最常用的亚音就是CTCSS（连续音频编码静噪系统），Motorola称为PL，是属于模拟亚音，频率从67.0Hz、69.3Hz、一直到250.3Hz，共39个亚音点（或50个点）。发射时把这个低频的不可听到的信号（因此叫亚音）连续的叠加到频率上发射，对方只有接到这样的同样频率才接收之，用于抗干扰，或者不听不是给自己的信号。&lt;/p&gt;
&lt;p&gt;亚音分发射亚音和接收亚音两种。一般，为了能上中继，都是使用发射亚音，这样才能打开中继。而中继自己采用的就是“接收亚音”，没有亚音的信号就被排斥了。中继下来的信号有的不带亚音但也有带亚音的。&lt;/p&gt;
&lt;p&gt;同样，自己接收时，为了能排斥自己不需要听的信号，也可以同样加上接收亚音。这样，两个电台（或几个电台）之间也可以使用约定的亚音，用于排除外来干扰信号。&lt;/p&gt;
&lt;p&gt;尽管说是亚音，但事实上是可以听到的，尤其是把亚音设置在高限（250Hz附近），或者接收机的低频频响比较好的时候。因此，我们设置亚音的时候，都尽量设置的低一些，以免不必要的干扰。&lt;/p&gt;
&lt;p&gt;另外有一种亚音是DCS（DigitalCoded Squelch），属于数字亚音，Motorola称为DPL，有104个亚音点（DPL少一些），更先进，是在语音前和发射结束前利用数字编码的形式发射。这种亚音只能同时发射和接收（即不能设置只发射而不接收的）。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;误区：发射亚音时，接收方只有设置到亚音接收才能接收。错！事实上正相反。发射亚音时，接收方设置到“非亚音接收状态”一定能接收，设置到“亚音接收状态”时，必须亚音类型一致、同时亚音码一致才能接收。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;调整功率&lt;/h3&gt;
&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1BG41197Sb&quot;&gt;泉盛UV-K6---功率调整&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;VFO / MR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;VFO: 第一种方式是 VFO 或可变频率振荡器。当您处于此模式并按下向上箭头向下箭头按钮时，频率将上升或下降。而在 VFO 模式下，您可以通过数字键盘编辑频率，并将其输入到菜单列表中进行信息编辑。当您在户外没有电脑时，可以快速编辑VFO，实现交流。它就像一个临时的沟通渠道。当然，如果你支持电台，你可以直接将 VFO 保存到频道模式。&lt;/li&gt;
&lt;li&gt;MR: MR代表记忆。在此模式下，您将频率输入到存储通道中。您可以设置许多内存通道。使用时只需转动通道旋钮即可。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;人话：VFO 模式下自由设定频率等参数，而 MR 模式下直接调用或切换存储好的（就是我们常说的“写频”）频率信息。&lt;/p&gt;
&lt;h3&gt;收音机&lt;/h3&gt;
&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1nc411R7en&quot;&gt;泉盛UV-K6--- 收音机功能&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;一键对频&lt;/h3&gt;
&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV11w411K72h&quot;&gt;泉盛UV-K6---一键对频&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;声控功能&lt;/h3&gt;
&lt;p&gt;参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1sz4y1P7kz&quot;&gt;泉盛UV-K6---声控功能&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;倒频&lt;/h3&gt;
&lt;p&gt;倒频（Reverse）功能为将发射频率与接收频率对调。&lt;/p&gt;
&lt;p&gt;对于超短波通讯(U/V段)来说，一般中继的有效覆盖范围在几十公里或稍远一点，怎么才能更远呢？多个中继接力是目前唯一的办法。频率怎么设才能让多个中继实现接力？相邻的中继发射/接收频率对调。假设1号中继发射频率为A，接收频率为B，2号中继发射频率为B，接收频率为A。当你用手台在1号中继覆盖区域时，A接收B发射。当你移动到2号中继覆盖区域时怎么办？利用倒频功能让发射/接收频率对调，B接收A发射，这样你就很容易的上2号中继了。&lt;/p&gt;
&lt;p&gt;具体参考 &lt;a href=&quot;https://www.bilibili.com/video/BV1yu4y187Z6&quot;&gt;泉盛UV-K6--- 导倒频功能&lt;/a&gt;。&lt;/p&gt;
&lt;h3&gt;键盘锁&lt;/h3&gt;
&lt;p&gt;长按 F 触发，同样方式解锁。&lt;/p&gt;
&lt;h3&gt;DTMF&lt;/h3&gt;
&lt;p&gt;DTMF（双音多频）是一种在电话系统中广泛使用的模拟信号协议，用于在音频频率范围内传递数字信息。这种技术在业余无线电中也被广泛应用，它允许用户通过按下一个或多个特定的按键来选择要拨打的号码、启用特殊功能等。泉盛uvk5的DTMF功能可以让您使用电台的话筒按钮或者其他可编程的控制设备发送DTMF信号。这可以用来拨打和控制其他设备的自动应答系统、远程基地站操作、以及许多其他的基于互联网的应用程序。一些现代的对讲机也可以接收和识别这些信号。具体的使用方法可能因设备和配置而异，建议您参考您的对讲机的说明书或者联系制造商以获取更详细的信息和使用指南。&lt;/p&gt;
&lt;h3&gt;DTMF 联系人&lt;/h3&gt;
&lt;p&gt;DTMF 信令：&lt;a href=&quot;https://www.bilibili.com/video/BV1yg411d7Zy&quot;&gt;https://www.bilibili.com/video/BV1yg411d7Zy&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;三方固件&lt;/h2&gt;
&lt;h3&gt;刷机&lt;/h3&gt;
&lt;p&gt;主流好用的在线刷机工具：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://k5.vicicode.com/&quot;&gt;K5Web&lt;/a&gt; | &lt;a href=&quot;https://k5.vicicode.cn/&quot;&gt;国内镜像&lt;/a&gt; (支持自定义 Losehu)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://whosmatt.github.io/uvmod/&quot;&gt;UVMOD&lt;/a&gt; (&lt;a href=&quot;https://github.com/whosmatt/uvmod&quot;&gt;Github&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;主流的固件：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/losehu/uv-k5-firmware-custom&quot;&gt;losehu 萝狮虎&lt;/a&gt; (强力推荐，截至目前最后一次更新为 2024-09-22)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/phdlee/uvk5cec&quot;&gt;uvk5cec&lt;/a&gt; (截至目前最近一次更新为 2024-06-13，特色包含好看的设置菜单、数字通联、APRS、WSPR 支持等，&lt;a href=&quot;http://www.hamskey.com/&quot;&gt;作者博客&lt;/a&gt; 似乎还有一些进阶东西，正常使用方法参考 &lt;a href=&quot;https://zhuanlan.zhihu.com/p/691551012&quot;&gt;泉盛UV-K5(6) CEC固件 HF 0.5版（全频段接收版）介绍&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/fagci/uv-k5-firmware-fagci-mod&quot;&gt;fagci&lt;/a&gt; (截至目前最后一次更新为 2023-10-03，有超过一年了，不建议使用)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://qsfj.com/products/3268&quot;&gt;官方原版&lt;/a&gt; (还附带了一些实用程序、说明书，作为兜底选择)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;写频&lt;/h3&gt;
&lt;p&gt;K5Web 网站有写。&lt;/p&gt;
&lt;h3&gt;信道扫描 / 扫频&lt;/h3&gt;
&lt;p&gt;VFO 模式下按步进频率暴力遍历所有频道；MR 模式下循环遍历所有存储的频道。&lt;/p&gt;
&lt;p&gt;Losehu 长按 * Scan 按键触发，运行时屏幕左上会显示 &lt;code&gt;S&lt;/code&gt;；找到有接收信号的频道会停止，短按 Up 继续查找，或短按 M 将当前结果设定到 VFO 并退出；长按 * Scan 或短按 Exit 退出。&lt;/p&gt;
&lt;h3&gt;MDC 信令&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.douyin.com/video/7378726519192997129&quot;&gt;https://www.douyin.com/video/7378726519192997129&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;多普勒模式&lt;/h3&gt;
&lt;p&gt;目前是 Losehu 提供对应 &lt;a href=&quot;https://github.com/losehu/uv-k5-firmware-custom/tree/main/doc&quot;&gt;教程&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;使用 F + Down 开启；需要提前使用 K5Web 传入对应数据。&lt;/p&gt;
&lt;h3&gt;自定义引导&lt;/h3&gt;
&lt;p&gt;自定义引导即 Bootloader，启动时加载基础引导程序，根据用户需要选择指定的启动系统方式。&lt;/p&gt;
&lt;p&gt;目前是 &lt;a href=&quot;https://github.com/losehu/uv-k5-bootloader-custom&quot;&gt;萝狮虎开发&lt;/a&gt; 及其对应教程。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.CVtj1eKB.jpg"/><enclosure url="/_astro/thumbnail.CVtj1eKB.jpg"/></item><item><title>NodeJS 的一些相关技术</title><link>https://cworld0.com/blog/nodejs</link><guid isPermaLink="true">https://cworld0.com/blog/nodejs</guid><description>Node.js® is an open-source, cross-platform JavaScript runtime environment.</description><pubDate>Wed, 19 Jul 2023 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;nvm&lt;/h2&gt;
&lt;p&gt;无论选择在 Windows 还是在 WSL 上安装，安装 Node.js 时还要作出其他选择。 建议使用版本管理器，因为版本变更速度非常快。 你可能需要根据所使用的不同项目的需求在多个版本的 Node.js 之间进行切换。 Node 版本管理器（通常称为 nvm）是安装多个版本的 Node.js 的最常见方法。 我们将演练安装 nvm 的步骤，然后使用它来安装 Node.js。&lt;/p&gt;
&lt;h3&gt;安装 nvm&lt;/h3&gt;
&lt;p&gt;要安装或更新 nvm，应运行安装脚本。为此，您可以手动下载并运行该脚本，或者使用以下 cURL 或 Wget 命令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.3/install.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;运行上述任一命令都会下载并运行脚本。该脚本将 nvm 仓库克隆到 &lt;code&gt;~/.nvm&lt;/code&gt;，并尝试将以下代码片段中的源代码追加到正确的配置文件（&lt;code&gt;~/.bash_profile&lt;/code&gt;、&lt;code&gt;~/.zshc&lt;/code&gt;、&lt;code&gt;~/.profile&lt;/code&gt; 或 &lt;code&gt;~/.bashrc&lt;/code&gt;）中。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export NVM_DIR=&quot;$HOME/.nvm&quot;
[ -s &quot;$NVM_DIR/nvm.sh&quot; ] &amp;#x26;&amp;#x26; \. &quot;$NVM_DIR/nvm.sh&quot;  # This loads nvm
[ -s &quot;$NVM_DIR/bash_completion&quot; ] &amp;#x26;&amp;#x26; \. &quot;$NVM_DIR/bash_completion&quot;  # This loads nvm bash_completion
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPasted_image_20230129235827.Dl-dV5MW.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;验证 nvm&lt;/h3&gt;
&lt;p&gt;使用命令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;command -v nvm
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者，&lt;code&gt;nvm -v&lt;/code&gt; 也许是个不错的检查方式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPasted_image_20230130000053.Dfsu9LUr.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;在 Linux 上，运行安装脚本后，如果您在键入 &lt;code&gt;command -v nvm&lt;/code&gt; 后收到 &lt;code&gt;nvm: command not found&lt;/code&gt; 或看不到来自终端的反馈，只需关闭当前终端，并重新打开新终端，然后再次尝试验证即可。 或者，您可以在命令行上为不同的 shell 运行以下命令：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;bash&lt;/em&gt;: &lt;code&gt;source ~/.bashrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;zsh&lt;/em&gt;: &lt;code&gt;source ~/.zshrc&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;ksh&lt;/em&gt;: &lt;code&gt;. ~/.profile&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;嗯...希望你能看懂我在说什么。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;nvm 用法&lt;/h3&gt;
&lt;p&gt;想要下载、编译和安装最新版本的 node，你可以直接执行：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm install node # &quot;node&quot; is an alias for the latest version
nvm install --lts # 使用 LTS 版本更适合生产应用程序，避免问题
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;安装一个特定版本的 node：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm install 14.7.0 # or 16.3.0, 12.22.1, etc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你安装的第一个版本会被设置为默认版本。所有新的终端将使用默认版本的 node 作为起始。你也可以使用 &lt;code&gt;nvm default v18.13.0&lt;/code&gt; 切换。卸载对应版本请使用：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm uninstall --version 18.13.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;使用命令 &lt;code&gt;ls-remote&lt;/code&gt; 会列出所有 nvm 能够提供的 node 版本。列表会比较长，你可以使用 &lt;code&gt;vxx&lt;/code&gt; 关键字简单过滤：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm ls-remote v18
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在任何新的 shell 里使用安装的版本：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm use node
nvm use v18.13.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;或者单纯一次性的使用某个版本运行一下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm run node --version
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;以及别忘了 &lt;code&gt;which&lt;/code&gt; 命令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;nvm which 12.22
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPasted_image_20230130001335.b_LChqT3.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;移除 nvm&lt;/h3&gt;
&lt;p&gt;nvm 固然好用，但接下来讲的另外一个工具也许能让你怦然心动，恰巧是 nvm 的优秀替代品。如果你需要换到接下来的工具或者其他工具，也可尝试移除 nvm。&lt;/p&gt;
&lt;p&gt;首先移除整个库（也就是之前提到的 &lt;code&gt;.nvm&lt;/code&gt;）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;rm -rf &quot;$NVM_DIR&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后前往你的配置文件（也就是之前提到的如 &lt;code&gt;.zshrc&lt;/code&gt; 文件），移除对应的环境变量声明文本（大概长下边这样）：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export NVM_DIR=&quot;$HOME/.nvm&quot;
[ -s &quot;$NVM_DIR/nvm.sh&quot; ] &amp;#x26;&amp;#x26; \. &quot;$NVM_DIR/nvm.sh&quot; # This loads nvm
[[ -r $NVM_DIR/bash_completion ]] &amp;#x26;&amp;#x26; \. $NVM_DIR/bash_completion
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;fnm&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/Schniz/fnm&quot;&gt;fnm&lt;/a&gt;（Fast Node Manager）基于 Rust 开发，是不是还没用就感觉到它的快了，哈哈~&lt;br&gt;
同时，它是跨平台的，支持 macOS、Linux、Windows。&lt;/p&gt;
&lt;h3&gt;安装&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://fnm.vercel.app/install | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你像笔者这样报错的话，可能是缺失了 &lt;code&gt;unzip&lt;/code&gt;，直接安装一下即可：&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;sudo apt-get install unzip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPasted_image_20230130003738.BQOkSMMq.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;h3&gt;验证 fnm&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;command -v fnm

# 或者使用这一句
fnm --version
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;fnm 用法&lt;/h3&gt;
&lt;p&gt;Quick start：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 1. 安装最新的 LTS 版本
fnm install --lts
# Installing Node v18.13.0 (arm64)

# 2. 设置为全局默认版本
fnm default 18

# 3. 尽情使用吧～
node -v
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FPasted_image_20230130004314.BkbcHLbW.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;p&gt;一些常用指令：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 安装其他版本
$ fnm install 16

# 在当前 Shell 使用指定版本
$ fnm use 16

# 查看本地已安装的版本
$ fnm ls

# 查看官方已发布的所有版本
$ fnm ls-remote | grep v16

# 速度慢的时候，可以切换到国内源
$ fnm install 16 --node-dist-mirror=https://npmmirror.com/mirrors/node
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>ChatGPT 深度使用与日用方案</title><link>https://cworld0.com/blog/chatgpt</link><guid isPermaLink="true">https://cworld0.com/blog/chatgpt</guid><description>ChatGPT 是一个基于 GPT-3.5-turbo 的聊天机器人，它可以通过简单的 API 调用来实现与人类的对话。</description><pubDate>Mon, 27 Mar 2023 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;import { Steps } from &apos;astro-pure/user&apos;&lt;/p&gt;
&lt;h2&gt;前置准备&lt;/h2&gt;
&lt;p&gt;关于如何注册 OPENAI，网上的方法已经很多了，这里不再赘述。这里简单讲解一下如何拿到 ChatGPT 的 API。&lt;/p&gt;
&lt;p&gt;在 &lt;a href=&quot;https://chatgpt.com/&quot;&gt;ChatGPT&lt;/a&gt; 上注册成功账号后，在 &lt;a href=&quot;https://chatgpt.com/api&quot;&gt;API&lt;/a&gt; 页面中，点击 &lt;code&gt;Get API Key&lt;/code&gt; 按钮，即可获得你的 API Key。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FSnipaste_2023-03-27_15-00-35.eWcijdhJ.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;Get ChatGPT API Key&quot;&gt;&lt;/p&gt;
&lt;h2&gt;其他办法&lt;/h2&gt;
&lt;p&gt;继续深入讲解如何利用你的 API Key 前，先简单讲述一下其他方法：&lt;/p&gt;
&lt;p&gt;通过网站：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://chatbot.theb.ai/#/chat&quot;&gt;BAI Chat&lt;/a&gt; 就是一个干净免费的网站，完全可以直接使用，并且具备速通能力。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://k.kliuu.xyz/index.php/2023/03/19/kliuu/&quot;&gt;Kliuu ChatGPT&lt;/a&gt; 是一个个人搭建的版本，同样有速通能力，但被限制最多输入 30 字符，最多回复 220 字符。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;通过 Telegram：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/littleb_gptBOT&quot;&gt;BAI&lt;/a&gt; 就是上边提到的 BAI Chat 的 Telegram 版本，速度还算快，体验不错。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/TheB_AI_Bot&quot;&gt;BAI White&lt;/a&gt; BAI Chat 的镜像版本。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://t.me/OpenAI_GPT_Chatbot&quot;&gt;ChatGPT OpenAI Bot&lt;/a&gt; 甚至提供语音发送回复，但有 10 秒冷却（等于没有）。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;ChatGPT 与 Telegram&lt;/h2&gt;
&lt;p&gt;如果你对隐私、速度、安全或者单纯自定义有一定的要求，可以尝试自己搭建 Telegram 机器人，拥有更多的灵活度和更快的响应。更多信息详见 Github 项目 &lt;a href=&quot;https://github.com/TBXark/ChatGPT-Telegram-Workers&quot;&gt;TBXark/ChatGPT-Telegram-Workers&lt;/a&gt;，下面也简单讲解一下部署流程。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;创建 Telegram 机器人&lt;/p&gt;
&lt;p&gt;首先，你需要一个 Telegram 账号，然后在 &lt;a href=&quot;https://t.me/BotFather&quot;&gt;BotFather&lt;/a&gt; 上创建一个机器人，按照提示操作即可。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;部署 Workers&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;在 &lt;a href=&quot;https://dash.cloudflare.com/sign-up/workers&quot;&gt;Cloudflare Workers&lt;/a&gt; 上注册账号&lt;/li&gt;
&lt;li&gt;点击右上角的 Create a Service&lt;/li&gt;
&lt;li&gt;进入新建的 workers，选择 Quick Edit，将 &lt;a href=&quot;https://github.com/TBXark/ChatGPT-Telegram-Workers/blob/master/dist/index.js&quot;&gt;../dist/index.js&lt;/a&gt; 代码复制到编辑器中，保存。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2FSnipaste_2023-03-27_15-17-14.n3IFP5bY.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;Alt text&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置环境变量&lt;/p&gt;
&lt;p&gt;前往你的 Workers,点击右上角的 Setting -&gt; Variables，设置下述变量。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;带 * 的为必设置，带 ^ 的为推荐设置&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;| 变量名                      | 简述                        | 默认值               | 特殊说明                                                                                               |
| --------------------------- | --------------------------- | -------------------- | ------------------------------------------------------------------------------------------------------ |
| *API_KEY                   | OpenAI API Key              | &lt;code&gt;null&lt;/code&gt;               |                                                                                                        |
| *TELEGRAM_AVAILABLE_TOKENS | 支持多个 Telegram Bot Token | &lt;code&gt;null&lt;/code&gt;               | 多个 Token 用&lt;code&gt;,&lt;/code&gt;分隔                                                                                   |
| *CHAT_WHITE_LIST           | 聊天 ID 白名单              | &lt;code&gt;null&lt;/code&gt;               | 多个 ID 用&lt;code&gt;,&lt;/code&gt;分隔，不知道 ID，和&lt;a href=&quot;https://t.me/username_to_id_bot&quot;&gt;机器人&lt;/a&gt;聊一句就能返回                |
| I_AM_A_GENEROUS_PERSON      | 关闭白名单，允许所有人访问  | &lt;code&gt;false&lt;/code&gt;              | 鉴于很多人不想设置白名单，或者不知道怎么获取 ID，所以设置这个选项就能允许所有人访问， 值为&lt;code&gt;true&lt;/code&gt;时生效 |
| AUTO_TRIM_HISTORY           | 自动清理历史记录            | &lt;code&gt;true&lt;/code&gt;               | 为了避免 4096 字符限制，将消息删减                                                                     |
| MAX_HISTORY_LENGTH          | 最大历史记录长度            | &lt;code&gt;20&lt;/code&gt;                 | &lt;code&gt;AUTO_TRIM_HISTORY开启后&lt;/code&gt; 为了避免 4096 字符限制，将消息删减                                           |
| CHAT_MODEL                  | open ai 模型选择            | &lt;code&gt;gpt-3.5-turbo&lt;/code&gt;      |                                                                                                        |
| SYSTEM_INIT_MESSAGE         | 系统初始化信息              | &lt;code&gt;你是一个得力的助手&lt;/code&gt; | 默认机器人设定                                                                                         |
| SYSTEM_INIT_MESSAGE_ROLE    | 系统初始化信息角色          | &lt;code&gt;system&lt;/code&gt;             | 默认机器人设定                                                                                         |
| ^ENABLE_USAGE_STATISTICS    | 开启使用统计                | &lt;code&gt;false&lt;/code&gt;              | 开启后，每次调用 API 都会记录到 KV，可以通过&lt;code&gt;/usage&lt;/code&gt;查看                                               |
| HIDE_COMMAND_BUTTONS        | 隐藏指令按钮                | &lt;code&gt;null&lt;/code&gt;               | 把想要隐藏的按钮写入用逗号分开&lt;code&gt;/start,/system&lt;/code&gt;, 记得带上斜杠,修改之后得重新&lt;code&gt;init&lt;/code&gt;                      |
| DEBUG_MODE                  | 调试模式                    | &lt;code&gt;false&lt;/code&gt;              | 目前可以把最新一条消息保存到 KV 方便调试                                                               |
| *WORKERS_DOMAIN            | Workers 域名                | &lt;code&gt;null&lt;/code&gt;               | 例如 workers_name.username.workers.dev                                                                 |&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;配置 KV 数据库&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;前往侧栏的 Workers -&gt; KV，点击右上角的 &lt;code&gt;Create a Namespace&lt;/code&gt;, 名字随便取, 但是绑定的时候必须设定为&lt;code&gt;DATABASE&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击右上角的 Setting -&gt; Variables&lt;/li&gt;
&lt;li&gt;在 &lt;code&gt;KV Namespace Bindings&lt;/code&gt; 中点击 &lt;code&gt;Edit variables&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;点击 &lt;code&gt;Add variable&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;设置名字为&lt;code&gt;DATABASE&lt;/code&gt; 并选择刚刚创建的 KV 数据&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;初始化&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;运行 &lt;code&gt;https://workers_name.username.workers.dev/init&lt;/code&gt; 自动绑定 telegram 的 webhook 和设定所有指令&lt;/li&gt;
&lt;li&gt;开始新对话,使用&lt;code&gt;/new&lt;/code&gt;指令开始,之后每次都会将聊天上下文发送到 ChatGPT&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;/setenv KEY=VALUE&lt;/code&gt;指令修改用户配置,例如&lt;code&gt;SETENV SYSTEM_INIT_MESSAGE=现在开始是喵娘,每句话已喵结尾&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;使用 &lt;code&gt;/role 角色名 SYSTEM_INIT_MESSAGE=现在开始是猫娘，每句话以喵结尾&lt;/code&gt; 可以创建一个新角色，并使用 &lt;code&gt;~角色名 聊天内容&lt;/code&gt; 调用。&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;ChatGPT 与 AMA&lt;/h2&gt;
&lt;p&gt;AMA（Ask Me Anything）原本指一种在线问答形式，这里只是一个 ChatGPT 第三方客户端，支持 Android 和 iOS。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Android: &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.bytemyth.ama&quot;&gt;Google Play Store&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;iOS: &lt;a href=&quot;https://apps.apple.com/cn/app/ama-ask-me-anything/id6446135619&quot;&gt;App Store&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果你还想获得速通能力，可以尝试自己设置 API Server（原理就是反代官方 API 接口）（感谢 &lt;a href=&quot;https://googles.plus/2023/03/24/shi-yong-cloudflare-workers-jie-jue-openai-he-chatgpt-de-api-wu-fa-fang-wen/#!&quot;&gt;sfc9982&apos;s blog&lt;/a&gt; 提供的思路）。&lt;/p&gt;
&lt;p&gt;与上文相同，你需要在 Cloudflare Workers 上部署一个 Worker。相关注册等流程上文讲过这里不再赘述。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;注意部署内容有发生改变，你需要填入以下内容：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;const TELEGRAPH_URL = &apos;https://api.openai.com&apos;

addEventListener(&apos;fetch&apos;, (event) =&gt; {
  event.respondWith(handleRequest(event.request))
})

async function handleRequest(request) {
  const url = new URL(request.url)
  url.host = TELEGRAPH_URL.replace(/^https?:\/\//, &apos;&apos;)

  const modifiedRequest = new Request(url.toString(), {
    headers: request.headers,
    method: request.method,
    body: request.body,
    redirect: &apos;follow&apos;
  })

  const response = await fetch(modifiedRequest)
  const modifiedResponse = new Response(response.body, response)

  // 添加允许跨域访问的响应头
  modifiedResponse.headers.set(&apos;Access-Control-Allow-Origin&apos;, &apos;*&apos;)

  return modifiedResponse
}
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击编辑器右下角的 “Save and deploy” 按钮部署该代码，在弹出的对话框中继续选择 “Save and deploy” 确认部署。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在 Cloudflare Workers 的管理界面中，点击 “Triggers” 选项卡，然后点击 “Custom Domians” 中的 “Add Custom Domain” 按钮以绑定自己的域名（为的是防止免费提供的域名本身被拒绝速通，如果你能用也可以不设置）。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;测试：将官方的 https://api.openai.com/v1/chat/completions 换为自己的域名（如 https://mydomain.com/v1/chat/completions ），如果打开收到结果如：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;error&quot;: {
    &quot;message&quot;: &quot;You didn&apos;t provide an API key. You need to provide your API key in an Authorization header using Bearer auth (i.e. Authorization: Bearer YOUR_KEY), or as the password field (with blank username) if you&apos;re accessing the API from your browser and are prompted for a username and password. You can obtain an API key from https://platform.openai.com/account/api-keys.&quot;,
    &quot;type&quot;: &quot;invalid_request_error&quot;,
    &quot;param&quot;: null,
    &quot;code&quot;: null
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;说明你部署反代成功。只需填入 AMA 的设置中的 API Server 即可。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;ChatGPT 与 PureWriter&lt;/h2&gt;
&lt;p&gt;PureWriter 中文名纯纯写作，是一款优秀的写作工具，支持 Windows、Android 平台（但 Windows 功能比较残缺），这里以 Android 版（也只有这个支持）为例。&lt;/p&gt;
&lt;p&gt;下载：&lt;a href=&quot;https://writer.drakeet.com&quot;&gt;Pure Writer 官网&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在设置中可输入 ChatGPT 的 API Key 即可快速启用。注意纯纯写作不支持自定义 API Server，没有办法速通。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F6129538924557743150_119.BYcDSCT6.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;Pure Writer&quot;&gt;&lt;/p&gt;
&lt;p&gt;除了 “时光机” 界面外，还能在打字界面调用，有效提升写作效率。当然你也可以单纯当作一款 ChatGPT 客户端。&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Alist 自建0成本部署</title><link>https://cworld0.com/blog/deploy-alist</link><guid isPermaLink="true">https://cworld0.com/blog/deploy-alist</guid><description>Alist 是一款支持多种存储的目录文件列表程序，后端基于 `gin`，前端使用 `react`。</description><pubDate>Thu, 15 Dec 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这里提供 Alist 官方的传送门：&lt;a href=&quot;https://github.com/alist-org/alist&quot;&gt;Github&lt;/a&gt; | &lt;a href=&quot;https://pan.nn.ci/&quot;&gt;Demo&lt;/a&gt; | &lt;a href=&quot;https://alist.nn.ci/zh/&quot;&gt;文档&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;不过本节将重点讨论使用 Render 部署 Alist 的方法。&lt;/p&gt;
&lt;h2&gt;Fork 仓库&lt;/h2&gt;
&lt;p&gt;首先，我们需要 Fork 一份 Alist-render 的仓库。（不会的自己使用搜索引擎）&lt;/p&gt;
&lt;p&gt;Alist 仓库地址：&lt;a href=&quot;https://github.com/alist-org/alist-render&quot;&gt;Github&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;修改配置&lt;/h2&gt;
&lt;p&gt;前往 fork 的仓库，修改 render.yaml 内的 &lt;code&gt;repo&lt;/code&gt; 配置为自己的仓库地址。&lt;/p&gt;
&lt;h2&gt;创建数据库&lt;/h2&gt;
&lt;p&gt;Alist 需要一个数据库，可选 sqlite3、mysql、postgres。这里选用提供免费服务的 &lt;a href=&quot;https://www.elephantsql.com/&quot;&gt;ElephantSQL&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;进入官网：&lt;a href=&quot;https://www.elephantsql.com/&quot;&gt;ElephantSQL&lt;/a&gt;，点击位于页面中央的 &lt;code&gt;Get a managed database today&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F62a5ea8d2548b.DWkRS-6k.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择海龟样子的 &lt;code&gt;Free&lt;/code&gt; 计划&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F62a5eab45c34f.Jz84Pyun.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;会进入登陆页面，可以使用 Github 进行授权登陆。之后会来到控制台，我们选择绿色的 &lt;code&gt;Create New Instance&lt;/code&gt; 创建一个新的数据库。名称和 Tag 随意填写，方案是默认的 Free 方案。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F1671194703990.DNitXtLA.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;接下来的地区可以随意选择，优先选择高亮的地区；如我选的 &lt;code&gt;AP-East-1 (Hong Kong)&lt;/code&gt;。这样我们就获得了一个免费的 &lt;code&gt;postgres&lt;/code&gt; 类型的数据库。注意详情页的如下配置，后面会用到。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F1671195753013.VM14-q6W.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Render 部署&lt;/h2&gt;
&lt;p&gt;进入官网：&lt;a href=&quot;https://render.com/&quot;&gt;Render&lt;/a&gt;，点击右上角的 &lt;code&gt;GET STARTED&lt;/code&gt; 注册账号。&lt;/p&gt;
&lt;p&gt;注册完成后，点击右上角的 &lt;code&gt;New +&lt;/code&gt;，选择 &lt;code&gt;Web Service&lt;/code&gt;，并在授权 Github 时连接刚刚 Fork 的 Alist 仓库。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F1671195753256.DXdkM7Xd.png&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;下一步先随便取个名字，然后拉到底部点击 &lt;code&gt;Advanced&lt;/code&gt;，录入需要的环境变量。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F1671196295276.Owof57Jm.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;|  变量参数   |             示例参数             |    数据库详情页对应     |     说明     |
| :---------: | :------------------------------: | :---------------------: | :----------: |
|   DB_HOST   |    queenie.db.elephantsql.com    |         Server          |  数据库地址  |
|   DB_NAME   |              bkqgx               | User &amp;#x26; Default database |  数据库名字  |
|   DB_PASS   | 5CqBjEVZWdaaad2333aadadadadN3Clo |        Password         |  数据库密码  |
|   DB_PORT   |               5432               |                         |  数据库端口  |
| DB_SSL_MODE |             disable              |                         |   SSL 模式   |
|   DB_TYPE   |             postgres             |                         |  数据库类型  |
|   DB_USER   |              bkqgx               | User &amp;#x26; Default database | 数据库用户名 |
|    PORT     |               8080               |                         |     端口     |&lt;/p&gt;
&lt;p&gt;::: collapse 关于 DB_SSL_MODE&lt;/p&gt;
&lt;p&gt;用于给数据连接提供 SSL 加密保护。其中：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;sqlite3 数据库：请忽略该参数&lt;/li&gt;
&lt;li&gt;mysql 数据库：参数有 &lt;code&gt;true&lt;/code&gt;, &lt;code&gt;false&lt;/code&gt;, &lt;code&gt;skip-verify&lt;/code&gt;, &lt;code&gt;preferred&lt;/code&gt;, 选一个填&lt;/li&gt;
&lt;li&gt;postgres 数据库：参数有 &lt;code&gt;disable&lt;/code&gt;，&lt;code&gt;allow&lt;/code&gt;，&lt;code&gt;prefer&lt;/code&gt;，&lt;code&gt;require&lt;/code&gt;，&lt;code&gt;verify-full&lt;/code&gt;，选一个填&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;我用的 postgres 数据库填的是 &lt;code&gt;disable&lt;/code&gt;，也就是没用 SSL；大家按需选择即可。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;注：为了提升访问速度，建议额外配置环境变量 &lt;code&gt;CDN&lt;/code&gt; 为 &lt;code&gt;https://npm.elemecdn.com/alist-web@【NPM官网查到的最新版本号】/dist/&lt;/code&gt;，能一定程度上加快网页打开速度。&lt;/p&gt;
&lt;h2&gt;保持唤醒&lt;/h2&gt;
&lt;p&gt;由于 Render 15 分钟没访问会休眠，所以我们可以注册一个 &lt;a href=&quot;https://uptimerobot.com/&quot;&gt;Uptimerobot&lt;/a&gt; 或 &lt;a href=&quot;https://www.checklyhq.com/&quot;&gt;Checklyhq&lt;/a&gt; 类似的这种监视网站，添加一个监控，24 小时定时访问 render 上的项目，render 就不会休眠了。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Render 原本的免费计划是每月允许总共使用 750 小时，似乎是不计流量的，就部署一个项目来说完全够用。但是 render 官方宣布定价将从 2023 年 1 月 1 日开始更改，从每月使用 750 小时，改为了每月免费带宽 100GB 的流量。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;问题解决&lt;/h2&gt;
&lt;p&gt;由于搭建的人开始变多，Render 官方也开始对 Alist 项目进行限制，导致部分人无法正常部署。解决方案：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;修改自己的仓库名，避免出现 Alist 字眼；&lt;/li&gt;
&lt;li&gt;将 &lt;code&gt;render.yaml&lt;/code&gt; 中的 &lt;code&gt;repo&lt;/code&gt; 配置为自己的仓库地址。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;最后感谢 &lt;a href=&quot;https://www.zxma.top/&quot;&gt;檐牙&lt;/a&gt; 提供的&lt;a href=&quot;https://www.zxma.top/posts/438365eb&quot;&gt;参考&lt;/a&gt;。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.CJtfQBsZ.jpg"/><enclosure url="/_astro/thumbnail.CJtfQBsZ.jpg"/></item><item><title>米哈游自动签到</title><link>https://cworld0.com/blog/mihoyo-helper</link><guid isPermaLink="true">https://cworld0.com/blog/mihoyo-helper</guid><description>这是一个关于原神签到小助手（genshinhelper）的指导教程</description><pubDate>Sun, 17 Apr 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;这是一个关于 &lt;a href=&quot;https://github.com/y1ndan/genshinhelper2&quot;&gt;原神签到小助手&lt;/a&gt; 的指导教程。&lt;/p&gt;
&lt;p&gt;写这个文档，是因为开发者自己写的文档太乱了。我也花了很长时间才彻底看懂。。&lt;/p&gt;
&lt;h2&gt;项目相关&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;genshinhelper 从 v2.0.0 开始，分为 genshinhelper2 和 genshin-checkin-helper 两个项目，同时分离出 onepush 推送包。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;前言&lt;/h3&gt;
&lt;p&gt;原神是少有的游戏本体和签到福利分离的游戏，玩家为了签到还要额外下载米游社 App。&lt;/p&gt;
&lt;p&gt;平心而论，目前的每日签到奖励真的不咋地，都知道是蚊子腿。事实上，你完全可以选择无视签到，不签也没啥大的损失；或者选择手动签到，但这样的话哪天忘记打卡了就很头疼。&lt;/p&gt;
&lt;p&gt;为了原石、摩拉和紫色经验书等签到奖励，这个项目应运而生，可以实现自动每日签到。&lt;/p&gt;
&lt;h3&gt;简介&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;genshinhelper&lt;/code&gt;（原神签到小助手），前身为 &lt;code&gt;genshin-impact-helper&lt;/code&gt;，可以自动化为你获取原神每日福利。&lt;/p&gt;
&lt;h3&gt;功能支持&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;支持订阅推送&lt;/li&gt;
&lt;li&gt;支持多个账号以及一个账号下的多个角色&lt;/li&gt;
&lt;li&gt;米游社原神/崩坏 3 的每日签到&lt;/li&gt;
&lt;li&gt;米游社的米游币获取任务&lt;/li&gt;
&lt;li&gt;原神超话功能 活动监测 + 领兑换码 + 多方推送&lt;/li&gt;
&lt;li&gt;支持原神多种服务器（天空岛/世界树/America/Europe/Asia/SAR）&lt;/li&gt;
&lt;li&gt;原神微信积分商城签到&lt;/li&gt;
&lt;li&gt;云原神时长活动签到&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;源码&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;genshinhelper2（&lt;a href=&quot;https://github.com/y1ndan/genshinhelper2&quot;&gt;Github&lt;/a&gt; | &lt;a href=&quot;https://gitlab.com/y1ndan/genshinhelper2&quot;&gt;Gitlab&lt;/a&gt;）- 签到相关的封装库，不能开箱即用。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://gitlab.com/y1ndan/genshin-checkin-helper&quot;&gt;genshin-checkin-helper&lt;/a&gt; - 签到主程序。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/y1ndan/onepush&quot;&gt;onepush&lt;/a&gt; - 一个简单易用的推送包。&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;运行方式与环境搭建&lt;/h2&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Frunway-choose.DKT5NiRO.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;::: collapse 方案 1 终端运行&lt;/p&gt;
&lt;p&gt;终端运行 &lt;code&gt;genshinhelper&lt;/code&gt; or &lt;code&gt;python -m genshinhelper&lt;/code&gt;可以直接运行签到脚本。&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;::: collapse 方案 2 云函数运行（推荐）&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：&lt;code&gt;v1.5.0+&lt;/code&gt; 版本增加了随机延迟功能，默认为 10-300s。故云函数的&lt;code&gt;执行超时时间&lt;/code&gt;应设置为大于变量中的 &lt;code&gt;MAX_SLEEP_SECS&lt;/code&gt;（最大休眠秒数）。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;这里以腾讯云函数为例。阿里云方法类似。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://wwa.lanzoui.com/b07mk6dla&quot;&gt;云函数版文件下载&lt;/a&gt; 密码：ed03&lt;/p&gt;
&lt;p&gt;前往 &lt;a href=&quot;https://console.cloud.tencent.com/scf/&quot;&gt;云函数 SCF 管理控制台&lt;/a&gt; --&gt;&lt;code&gt;函数服务&lt;/code&gt;--&gt;&lt;code&gt;新建&lt;/code&gt;--&gt;&lt;code&gt;自定义创建&lt;/code&gt;--&gt;&lt;code&gt;基础配置&lt;/code&gt;--&gt;&lt;code&gt;本地上传zip包&lt;/code&gt;--&gt;&lt;code&gt;上传&lt;/code&gt;--&gt;&lt;code&gt;本地上传zip包&lt;/code&gt;--&gt; 选择下载的&lt;code&gt;genshinhelper-xxx-serverless.zip&lt;/code&gt;压缩包--&gt;&lt;code&gt;完成&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fnew-server.BiLos5jK.png&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;前往&lt;code&gt;genshinhelper&lt;/code&gt;--&gt;&lt;code&gt;函数管理&lt;/code&gt;--&gt;&lt;code&gt;函数配置&lt;/code&gt;--&gt;&lt;code&gt;编辑&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fedit-config.ni8m7nRs.png&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;此处可以编辑环境变量。同时建议修改&lt;code&gt;执行超时时间&lt;/code&gt;为&lt;code&gt;600&lt;/code&gt;秒。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fadd-variables.DzW9L1MG.png&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;前往&lt;code&gt;genshinhelper&lt;/code&gt;--&gt;&lt;code&gt;触发管理&lt;/code&gt;--&gt;&lt;code&gt;新建触发器&lt;/code&gt;--&gt; 按下图进行配置。当然你也可以添加一个 &lt;code&gt;API 网关&lt;/code&gt;，方便手动强制执行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Ftriggers.DGZYAY6j.png&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;::: collapse 方案 3 Docker 运行&lt;/p&gt;
&lt;p&gt;使用以下命令拉取镜像：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker pull yindan/genshinhelper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你也可以在 &lt;a href=&quot;https://registry.hub.docker.com/r/yindan/genshinhelper/&quot;&gt;Docker Hub&lt;/a&gt; 上找到该仓库。&lt;/p&gt;
&lt;p&gt;在下列命令中， &lt;code&gt;COOKIE_MIHOYOBBS&lt;/code&gt; 代表环境变量名字， &lt;code&gt;&amp;#x3C;COOKIE_MIHOYOBBS&gt;&lt;/code&gt; 代表 &lt;code&gt;COOKIE_MIHOYOBBS&lt;/code&gt; 对应的值；&lt;code&gt;DISCORD_WEBHOOK&lt;/code&gt; 同理。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;应当注意，这里的 &lt;code&gt;COOKIE_MIHOYOBBS&lt;/code&gt;和 &lt;code&gt;DISCORD_WEBHOOK&lt;/code&gt;只是教程使用的例子，并非必须字段。
如果你是国际服则应该配置 &lt;code&gt;COOKIE_HOYOLAB&lt;/code&gt;而不是 &lt;code&gt;COOKIE_MIHOYOBBS&lt;/code&gt;；不使用 Discord 推送，可以不配置 &lt;code&gt;DISCORD_WEBHOOK&lt;/code&gt;。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;基本使用&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d --name=genshinhelper \
-e COOKIE_MIHOYOBBS=&quot;&amp;#x3C;COOKIE_MIHOYOBBS&gt;&quot; \
-e DISCORD_WEBHOOK=&quot;&amp;#x3C;DISCORD_WEBHOOK&gt;&quot; \
--restart always \
yindan/genshinhelper:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;高级使用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Docker 会在每天早上 &lt;code&gt;6:00&lt;/code&gt; 触发签到任务。可以使用 &lt;code&gt;CRON_SIGNIN&lt;/code&gt; 参数自定义触发时间。&lt;/p&gt;
&lt;p&gt;例如触发时间使用的是北京时间：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d --name=genshinhelper \
-e COOKIE_MIHOYOBBS=&quot;&amp;#x3C;COOKIE_MIHOYOBBS&gt;&quot; \
-e DISCORD_WEBHOOK=&quot;&amp;#x3C;DISCORD_WEBHOOK&gt;&quot; \
-e CRON_SIGNIN=&quot;0 7 * * *&quot; \
--restart always \
yindan/genshinhelper:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;如果你想使用 &lt;code&gt;config.json&lt;/code&gt; 配置文件（这部分会在 &lt;code&gt;配置&lt;/code&gt;章节讲解），则可以使用以下命令映射文件夹。&lt;/p&gt;
&lt;p&gt;假设你的配置文件位于 &lt;code&gt;/etc/genshin/config.json&lt;/code&gt;。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;docker run -d --name=genshinhelper \
-v /etc/genshin:/app/genshincheckinhelper/config \
--restart always \
yindan/genshinhelper:latest
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;常用命令&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# 查看日志
$ docker logs -f genshinhelper --tail 100

# 重启
$ docker restart genshinhelper

# 更新
$ docker pull yindan/genshinhelper
$ docker rm -f genshinhelper
# 之后依据基本使用或高级使用重新部署

# 卸载
$ docker rm -f genshinhelper
$ docker image rm genshinhelper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;p&gt;::: collapse 方案 4 使用 PyPI Package 运行&lt;/p&gt;
&lt;p&gt;使用 &lt;a href=&quot;https://pypi.org/project/genshinhelper/&quot;&gt;pypi 包&lt;/a&gt; 进行安装：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;pip install genshinhelper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你需要先在主机中添加环境变量，或者使用 &lt;code&gt;pip show genshinhelper&lt;/code&gt; 查看包的安装位置，找到并编辑 &lt;code&gt;config.json&lt;/code&gt; 配置文件。&lt;/p&gt;
&lt;p&gt;如果你已经完成前置要求，使用以下命令运行项目:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;python -m genshinhelper
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;
&lt;h2&gt;配置与操作&lt;/h2&gt;
&lt;h3&gt;配置项&lt;/h3&gt;
&lt;p&gt;其实就是云函数里面的环境变量或者其他方式下的 Config 文件。&lt;/p&gt;
&lt;p&gt;下面的配置项并非每一项都要填写，根据需要填即可。&lt;/p&gt;
&lt;p&gt;| 变量名                  | 默认值 | 描述                                                                                                   |
| :---------------------- | :----: | :----------------------------------------------------------------------------------------------------- |
| LANGUAGE                |   en   | 项目语言。目前支持中文(zh)和英文(en)。                                                                 |
| MAX_SLEEP_SECS          |  300   | 最大休眠秒数。自 v1.5.0 添加了运行前随机延迟，设置此参数可自定义延迟，秒数应该＞ 10                    |
| RANDOM_SLEEP_SECS_RANGE | 0-300  | 随机延迟休眠秒数范围。设置成&quot;0-0&quot;为取消延迟                                                            |
| RUN_ENV                 |  prod  | 是否延迟执行。设置为任意非默认值即可跳过随机延迟                                                       |
| CHECK_IN_TIME           |        | （云函数无需配置此项）每日签到时间，只运行环境的时间有关。对于 Docker 可以用 TZ=Asia/Shanghai 设置时区 |
| CHECK_RESIN_SECS        |        | （云函数无需配置此项）原神原粹树脂检测间隔秒数                                                         |
| ONE_PUSH                |        | 设置消息推送                                                                                           |
| COOKIE_MIHOYOBBS        |        | 米游社里原神签到需要的 Cookie 值                                                                       |
| COOKIE_BH3              |        | 崩坏 3 签到需要的 Cookie 值                                                                            |
| COOKIE_MIYOUBI          |        | 米游社执行任务获取米游币需要的 Cookie 值                                                               |
| COOKIE_HOYOLAB          |        | HoYoLAB 里原神签到需要的 Cookie 值                                                                     |
| COOKIE_WEIBO            |        | 微博超话自动签到需要的 Cookie 值，形如 &lt;code&gt;aid=xxx;gsid=xxx;s=xxx;from=xxx&lt;/code&gt;                               |
| COOKIE_KA               |        | 超话活动追踪\获取兑换码需要的 Cookie 值，形如 &lt;code&gt;SUB=xxx;SUBP=xxx&lt;/code&gt;                                       |
| CLOUD_GENSHIN           |        | 云原神签到得时长需要的 Cookie 值                                                                       |
| COOKIE_RESIN_TIMER      |        | 原神原粹树脂检测需要的 Cookie 值                                                                       |
| SHOPTOKEN               |        | 原神微信积分商城的 token 值（通过抓包获取）                                                            |&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Cookie 相关配置项都可以填写多个账号。不同账号的 Cookie 值之间用&lt;code&gt;#&lt;/code&gt;分隔，如：&lt;code&gt;cookie1#cookie2#cookie3&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;配置文件&lt;/h3&gt;
&lt;p&gt;对于云函数就是环境变量，所以无需配置文件。&lt;/p&gt;
&lt;p&gt;例如只配置原神签到福利和 Discord 推送，那么配置文件除了保持完整也可以写成：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;COOKIE_MIHOYOBBS&quot;: &quot;&quot;,
  &quot;DISCORD_WEBHOOK&quot;: &quot;&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;获取 Cookie&lt;/h3&gt;
&lt;p&gt;你可以通过书签法执行 JS 代码。&lt;/p&gt;
&lt;p&gt;JS 代码如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;javascript: (function () {
  let domain = document.domain
  let cookie = document.cookie
  prompt(&apos;Cookies: &apos; + domain, cookie)
})()
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;你可以直接在开发者工具的 Console 面板直接粘贴运行，也可以将下面的链接收藏为书签（电脑拖拽到书签栏，手机需要手动添加）：&lt;/p&gt;
&lt;p&gt;获取 Cookie&lt;/p&gt;
&lt;h2&gt;签到相关详解&lt;/h2&gt;
&lt;h3&gt;原神、崩坏 3、米游社签到&lt;/h3&gt;
&lt;p&gt;对于 &lt;code&gt;COOKIE_MIHOYOBBS&lt;/code&gt;、&lt;code&gt;COOKIE_BH3&lt;/code&gt;、&lt;code&gt;COOKIE_MIYOUBI&lt;/code&gt; 的 Cookie 值抓取，都可以直接前往米游社网站 https://bbs.mihoyo.com/ys/ 或 https://bbs.mihoyo.com/bh3/。&lt;/p&gt;
&lt;p&gt;如果是 HoYoLAB，请前往 https://webstatic-sea.mihoyo.com/ys/event/signin-sea/index.html?act_id=e202102251931481&amp;#x26;lang=en-us 页面抓取并填入 &lt;code&gt;COOKIE_HOYOLAB&lt;/code&gt;。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;上述 Cookie 应包含 &lt;code&gt;account_id&lt;/code&gt; 和 &lt;code&gt;cookie_token&lt;/code&gt; 两个字段。如果没有，建议使用浏览器的无痕/访客/隐私模式重新登陆访问。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;微博超话签到&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;COOKIE_WEIBO&lt;/code&gt; 参数需要在 &lt;strong&gt;微博国际版 APP&lt;/strong&gt; 内抓包取得。抓包时使用微博的搜索功能就能轻松获得相应请求，但请注意抓包地址为 https。&lt;/p&gt;
&lt;p&gt;地址形如：&lt;code&gt;https://api.weibo.cn/2/xxxxxx?aid=xxx&amp;#x26;c=weicoabroad&amp;#x26;from=123&amp;#x26;gsid=_xxx&amp;#x26;i=xxx&amp;#x26;lang=zh_CN&amp;#x26;s=xxx&amp;#x26;ua=iPhone12%2C1_iOS14.0.1_Weibo_intl._4330_cell&amp;#x26;v_p=59&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;在抓包结果请求头（地址 query 参数）里提取出 aid、s、gsid 和 from 参数，组合成形如 &lt;code&gt;&quot;aid=xxx; s=xxx;gsid=xxx;from=xxx&quot;&lt;/code&gt;的形式填入。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;COOKIE_KA&lt;/code&gt; 用来追踪超话活动和自动提取兑换码。事实上会在抓取 &lt;code&gt;COOKIE_WEIBO&lt;/code&gt; 的时候会一起被抓取到。注意 Cookie 需要&lt;code&gt;SUB&lt;/code&gt;和&lt;code&gt;SUBP&lt;/code&gt;两个字段。填写形式同 &lt;code&gt;COOKIE_WEIBO&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;详细抓取教程可参考视频：&lt;a href=&quot;https://b23.tv/3cj7vG&quot;&gt;微博国际版 iOS 抓包教程&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;推送相关详解&lt;/h2&gt;
&lt;p&gt;在配置中，设置 &lt;code&gt;ONEPUSH&lt;/code&gt; 变量开启推送。不支持同时使用多个推送。默认配置/格式如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;notifier&quot;: &quot;&quot;,
  &quot;params&quot;: {
    &quot;markdown&quot;: false
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;实际填写时请浓缩至一行，形如 &lt;code&gt;{&quot;notifier&quot;:&quot;&quot;,&quot;params&quot;:{&quot;markdown&quot;:false}}&lt;/code&gt;。如果是本地配置，请使用单引号包裹。&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ONEPUSH&lt;/code&gt; 根配置：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;notifier：推送名字，如 &lt;code&gt;bark&lt;/code&gt;、&lt;code&gt;dingtalk&lt;/code&gt;、&lt;code&gt;discord&lt;/code&gt;、&lt;code&gt;pushplus&lt;/code&gt;、&lt;code&gt;qmsg&lt;/code&gt;、&lt;code&gt;serverchan&lt;/code&gt;、&lt;code&gt;serverchanturbo&lt;/code&gt;、&lt;code&gt;telegram&lt;/code&gt;、&lt;code&gt;wechatworkapp&lt;/code&gt;、&lt;code&gt;wechatworkbot&lt;/code&gt;、&lt;code&gt;custom&lt;/code&gt; 等。&lt;/li&gt;
&lt;li&gt;params：推送参数，如 &lt;code&gt;markdown&lt;/code&gt;、&lt;code&gt;required&lt;/code&gt;、&lt;code&gt;secret&lt;/code&gt; 等。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如使用 Discord Bot：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;discord&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;webhook&quot;:&quot;https://discord.com/api/webhooks/xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;::: collapse 详细配置说明&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下列参数如果 required 字段包含 &apos;title&apos; 或 &apos;content&apos;，ONEPUSH 变量中都不需要设置。例如 serverchan 不需要设置 &apos;title&apos;。
此外 custom 方式暂时不支持推送签到结果。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;bark&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;bark&quot;,&quot;params&quot;:{&quot;markdown&quot;:false,&quot;key&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;custom&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;该方式比较复杂：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;method&quot;: &quot;post&quot;,
  &quot;url&quot;: &quot;&quot;,
  &quot;data&quot;: {},
  &quot;retcode_key&quot;: &quot;&quot;,
  &quot;retcode_value&quot;: 200,
  &quot;data_type&quot;: &quot;data&quot;,
  &quot;merge_title_and_desp&quot;: false,
  &quot;set_data_title&quot;: &quot;&quot;,
  &quot;set_data_sub_title&quot;: &quot;&quot;,
  &quot;set_data_desp&quot;: &quot;&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;| 配置项               | 描述                                                                                                                                                                                       |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---- | ---------------- |
| method               | 必填，请求方式。默认：post                                                                                                                                                                 |
| url                  | 必填，完整的自定义推送链接                                                                                                                                                                 |
| data                 | 选填，发送的data。默认为空，可自行添加额外参数                                                                                                                                             |
| retcode_key          | 必填，响应体返回的状态码的key                                                                                                                                                              |
| retcode_value        | 必填，响应体返回的状态码的value                                                                                                                                                            |
| data_type            | 选填，发送data的方式，可选params                                                                                                                                                           | json | data，默认：data |
| merge_title_and_desp | 选填，是否将标题（应用名+运行状态）和运行结果合并。默认：false                                                                                                                             |
| set_data_title       | 必填，推送方式data中消息标题的key                                                                                                                                                          |
| set_data_sub_title   | 选填，推送方式data中消息正文的key。有的推送方式正文的key有次级结构，需配合set_data_title构造子级，与set_data_desp互斥。例如：企业微信中，set_data_title填text，set_data_sub_title填content |
| set_data_desp        | 选填，推送方式data中消息正文的key。例如：server酱的为desp，与set_data_sub_title互斥，两者都填则本项不生效                                                                                  |&lt;/p&gt;
&lt;p&gt;例如写一个 ServerChan 的自定义推送。&lt;/p&gt;
&lt;p&gt;查看文档得到 ServerChan 推送所需要的信息：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要的 &lt;code&gt;url&lt;/code&gt;形式为：&lt;code&gt;https://sc.ftqq.com/{SCKEY}.send&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;发送的 &lt;code&gt;data&lt;/code&gt;形式为：&lt;code&gt;{&apos;text&apos;: test&apos;,&apos;desp&apos;:desp}&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;消息发送成功响应体为：&lt;code&gt;{&apos;errno&apos;: 0, &apos;errmsg&apos;: &apos;OK&apos;}&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;自定义推送配置如下：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;{
  &quot;method&quot;: &quot;post&quot;,
  &quot;url&quot;: &quot;https://sc.ftqq.com/{直接填写你的SCKEY}.send&quot;,
  &quot;data&quot;: {},
  &quot;retcode_key&quot;: &quot;errno&quot;,
  &quot;retcode_value&quot;: 0,
  &quot;data_type&quot;: &quot;data&quot;,
  &quot;merge_title_and_desp&quot;: true,
  &quot;set_data_title&quot;: &quot;test&quot;,
  &quot;set_data_sub_title&quot;: &quot;&quot;,
  &quot;set_data_desp&quot;: &quot;desp&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;dingtalk&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;dingtalk&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;token&quot;:&quot;xxxxxx&quot;,secret:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;discord&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;discord&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;webhook&quot;:&quot;https://discord.com/api/webhooks/xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;pushplus&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;pushplus&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;token&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;qmsg&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;qmsg&quot;,&quot;params&quot;:{&quot;markdown&quot;:false,&quot;key&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;serverchan&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;serverchan&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;sckey&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;serverchanturbo&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;serverchanturbo&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;sctkey&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;telegram&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;telegram&quot;,&quot;params&quot;:{&quot;markdown&quot;:false,&quot;token&quot;:&quot;xxxxxx&quot;,&quot;userid&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;wechatworkapp&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;wechatworkapp&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;corpid&quot;:&quot;xxxxxx&quot;,&quot;corpsecret&quot;:&quot;xxxxxx&quot;,&quot;agentid&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;wechatworkbot&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;ONEPUSH={&quot;notifier&quot;:&quot;wechatworkbot&quot;,&quot;params&quot;:{&quot;markdown&quot;:true,&quot;key&quot;:&quot;xxxxxx&quot;}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;:::&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Hexo 主题之 Inside 拓展篇</title><link>https://cworld0.com/blog/hexo-inside</link><guid isPermaLink="true">https://cworld0.com/blog/hexo-inside</guid><description>Inside 是一款采用 SPA 打造的轻量级和功能丰富的 Hexo 主题。</description><pubDate>Mon, 14 Feb 2022 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;a href=&quot;https://github.com/ikeq/hexo-theme-inside&quot;&gt;Inside&lt;/a&gt; 是一款采用 SPA 打造的轻量级和功能丰富的 Hexo 主题。然而整体上作者采用了较为开放的丰富的自定义模式，所以很多功能都需要手动调整。&lt;/p&gt;
&lt;h2&gt;Hexo 内部调整&lt;/h2&gt;
&lt;p&gt;个人建议不要设置时区，因为设置了反而不好用。&lt;/p&gt;
&lt;p&gt;这里给出一些重要的配置项：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;language: zh-Hans # 主题的配置写法
permalink: /post/:title/ # 个人在这里相对喜欢这种简单的格式
skip_render: [&apos;css/*&apos;, &apos;js/*&apos;] # 便于在仓库内置各类文件
deploy:
  type: git
  repository: git@github.com:&amp;#x3C;用户名&gt;/&amp;#x3C;仓库&gt;.git # 这种写法更不容易报错
  branch: &amp;#x3C;分支&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Inside 主题配置&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;想要像我那样侧栏用户名有漂亮的字体，配置应该额外调整：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;appearance:
  # ...
  font:
    url: //fonts.googleapis.com/css?family=Lobster|Baloo+Bhaijaan|Inconsolata|Josefin+Sans|Montserrat
    base: &apos;Josefin Sans&apos;
    logo: &apos;Lobster&apos; # 就是这款字体
    menu: &apos;Baloo Bhaijaan&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;想要在社交按钮栏加上自定义的按钮，需要单独引入 svg 图标。比如添加一个酷安的按钮：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;sns:
  # ...
  - title: 酷安
    url: https://www.coolapk.com/u/1384771
    template: |
      &amp;#x3C;svg t=&quot;1644654153078&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1922 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;1687&quot; data-darkreader-inline-fill=&quot;&quot; width=&quot;18&quot; height=&quot;18&quot;&gt;&amp;#x3C;path d=&quot;M513.810604 0c308.858273 0 602.991192 297.820939 602.991192 297.820939l-132.287657 102.890399S723.386322 178.321089 513.810604 178.321089c-143.391802 0-329.062206 104.787859-329.062206 323.556901 0 213.250375 136.029126 334.594235 330.906216 334.594235C1023.05127 836.485587 1203.216369 0 1363.15081 0c104.787859 0 175.047303 244.772252 297.820938 450.406065 147.06646 246.349014 261.475239 472.814793 261.47524 481.660695 0 49.641277-46.380854 91.919878-79.479494 91.919878S1206.891026 577.255229 1206.891026 577.255229l148.910469-108.462516 189.345061 128.679812L1359.476153 259.230358c-57.912596 57.899234-336.424882 764.769642-834.628215 764.769642C329.970848 1023.986638 0 880.581473 0 500.047343 0 284.952958 162.687093 0 513.810604 0z&quot; p-id=&quot;1688&quot;&gt;&amp;#x3C;/path&gt;&amp;#x3C;/svg&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;在侧栏配置上，名称前面加上 Emoji 看起来会更加美观：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;menu:
🏠 Home: /
🔍 Search: /search
🔗 Link: /link
🧑‍💻 About: /about
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;自动 CI 部署&lt;/h2&gt;
&lt;p&gt;这里采用 Star 数较高的一个自动 &lt;a href=&quot;https://github.com/sma11black/hexo-action&quot;&gt;Github Action&lt;/a&gt; ，提到了整个流程。如果不太懂，也可以参考别人的一些教程。这里提几个点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;运行命令 &lt;code&gt;$ ssh-keygen -t rsa -C &quot;username@example.com&quot;&lt;/code&gt; 时会提示一些选项，建议全部按回车默认选项。这会在你的用户名文件夹根目录下生成一个 &lt;code&gt;.ssh&lt;/code&gt; 文件夹，得到两个文件，其中带.pub 后缀的为公钥，另一个为私钥。两者可以填在同一个仓库不同分支，也可以填在不同的仓库。&lt;/li&gt;
&lt;li&gt;Github Actions 的配置文件应该在项目根目录下的 &lt;code&gt;.github&lt;/code&gt; &gt; &lt;code&gt;workflows&lt;/code&gt; ，默认名称为 &lt;code&gt;main.yml&lt;/code&gt; ，当然你也可以随意命名。将整个项目一起上传上去，Github Actions 会自动执行并生成渲染文件。&lt;/li&gt;
&lt;li&gt;自定义域名应该在项目的 &lt;code&gt;source&lt;/code&gt; 目录中放一个 CNAME 文件。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;评论系统&lt;/h2&gt;
&lt;h3&gt;Waline + Leancloud + Vercel&lt;/h3&gt;
&lt;p&gt;Waline 基于 Valine，是一个干净纯粹但功能丰富的评论系统框架。它支持 Markdown 语法，支持自定义表情、部分文字、配色、精选，以及后台管理、邮件自动发送等功能。&lt;/p&gt;
&lt;h3&gt;文档&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://waline.js.org/&quot;&gt;Waline 官网&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/walinejs/waline&quot;&gt;Waline on Github&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;配置上手&lt;/h3&gt;
&lt;p&gt;除官网给出部分，博客这边配置也非常重要。由于 Inside 主题是直接通过变量达成夜间模式的切换的，所以就宣告着 Waline 自身夜间模式的报废。当然这并不影响夜间模式的效果。下面是我的配置。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;- position: comments
  template: |
    &amp;#x3C;div id=&quot;waline&quot;&gt;评论正在努力加载中...&amp;#x3C;/div&gt;
    &amp;#x3C;script&gt;
      Waline.init({
        el: &apos;#waline&apos;,
        serverURL: &apos;&amp;#x3C;你的Vercel的url&gt;&apos;,
        locale: {placeholder:&apos;欢迎评论~&apos;},
        comment: true,
        pageview: true,
        emoji: [
          &apos;https://blog.cworld.top/src/img/bilibili&apos;,
          &apos;https://blog.cworld.top/src/img/weibo&apos;,
        ],
      });
    &amp;#x3C;/script&gt;
    &amp;#x3C;link href=&quot;/css/comment.min.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其中页面/文章访问数的功能完全仅用于统计数据，暂时不打算做效果呈现。Leancloud 可以轻松查询到。Emoji 则采用了较为经典的微博和 B 站表情。&lt;/p&gt;
&lt;p&gt;评论样式内容较多而且为了方便维护，故单独引用文件。&lt;/p&gt;
&lt;p&gt;文件这里贴一份仅供参考：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;:root {
  --waline-dark-grey: var(--inside-foreground-color);
  --waline-theme-color: var(--inside-accent-color);
  --waline-active-color: var(--inside-accent-color);
  --waline-color: var(--inside-foreground-color);
  --waline-bgcolor: var(--inside-background);
  --waline-bgcolor-light: var(--inside-card-background);
  --waline-bgcolor-hover: var(--inside-card-background);
  --waline-border-color: var(--inside-border-color);
  --waline-disable-bgcolor: var(--inside-card-background);
  --waline-disable-color: var(--inside-foreground-color);
  --waline-code-bgcolor: var(--inside-highlight-00);
  --waline-mobile-avatar-size: calc(var(--waline-avatar-size) * 11 / 13);
  --waline-badge-color: var(--inside-accent-color);
  --waline-info-bgcolor: var(--inside-background);
  --waline-avatar-radius: 50%;
}

#waline .wl-editor {
  width: calc(100% - 2em) !important;
}

#waline pre {
  border-color: var(--inside-highlight-01);
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;自定义小插件&lt;/h2&gt;
&lt;h3&gt;站点访问统计&lt;/h3&gt;
&lt;p&gt;Inside 提供了两个自定义片段位置。由于我的 &lt;code&gt;custom&lt;/code&gt; 还有别的东西要放，这里就只写在 &lt;code&gt;copyright&lt;/code&gt; 里。在主题配置文件修改：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;footer:
  # Set to false to hide.
  copyright: |
    &amp;#x3C;script async src=&quot;https://busuanzi.icodeq.com/busuanzi.pure.mini.js&quot;&gt;&amp;#x3C;/script&gt;
    &amp;#x26;copy;2022 • &amp;#x3C;a href=&quot;&quot;&gt;CWorld&amp;#x3C;/a&gt; • 总访问 &amp;#x3C;span id=&quot;busuanzi_value_site_pv&quot;&gt;&amp;#x3C;/span&gt; 次
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;代码块快捷复制到剪贴板&lt;/h3&gt;
&lt;p&gt;先从 &lt;a href=&quot;https://github.com/zenorocha/clipboard.js/blob/master/dist/clipboard.min.js&quot;&gt;Github&lt;/a&gt; 下载文件并放置好目录&lt;/p&gt;
&lt;p&gt;然后在主题配置文件修改：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yml&quot;&gt;plugins:
  # ...
  - js/clipboard.min.js # 全局引入剪贴板JS文件
  - position: [post, page] # 剪贴板
    template: |
      &amp;#x3C;script&gt;
        var elements = document.querySelectorAll(&quot;.highlight tr&gt;.code&quot;);
        for (var i = 0; i &amp;#x3C; elements.length; i++) { elements[i].innerHTML = &apos;&amp;#x3C;button class=&quot;btn-copy&quot; data-clipboard-snippet=&quot;&quot;&gt;&amp;#x3C;svg t=&quot;1644686763820&quot; class=&quot;icon&quot; viewBox=&quot;0 0 1024 1024&quot; version=&quot;1.1&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; p-id=&quot;2062&quot; data-darkreader-inline-fill=&quot;&quot; width=&quot;16&quot; height=&quot;16&quot;&gt;&amp;#x3C;path d=&quot;M798.4 128h-72v-12.8c0-38.4-33.6-72-72-72h-97.6C555.2 17.6 537.6 0 512 0c-25.6 0-43.2 17.6-43.2 43.2h-97.6c-38.4 0-72 33.6-72 72V128h-72c-30.4 0-56 25.6-56 56v780.8c0 33.6 25.6 59.2 59.2 59.2h568c17.6 0 33.6-8 43.2-20.8 8-12.8 12.8-25.6 12.8-38.4V184C852.8 153.6 827.2 128 798.4 128zM384 128h256v84.8H384V128z m384 811.2H256V212.8h43.2v12.8c0 38.4 33.6 72 72 72h281.6c38.4 0 72-33.6 72-72v-12.8H768v726.4z&quot; p-id=&quot;2063&quot;&gt;&amp;#x3C;/path&gt;&amp;#x3C;/svg&gt;&amp;#x3C;/button&gt;&apos; + elements[i].innerHTML };
        new ClipboardJS(&apos;.btn-copy&apos;, { target: (trigger) =&gt; trigger.nextElementSibling });
      &amp;#x3C;/script&gt;
      &amp;#x3C;style&gt;
        .btn-copy{position:absolute;right:5px;top:5px;border:none;padding:3px 6px;border-radius:3px;background:var(--inside-background);fill:currentColor;opacity:0;transition:.3s}.highlight:hover .btn-copy{opacity:1}
      &amp;#x3C;/style&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其实大部分自定义代码都是在用 SVG 写图标，所以不用担心代码量很大~&lt;/p&gt;
&lt;h2&gt;友链优化&lt;/h2&gt;
&lt;p&gt;这个主题最大的短板就是没有单独的友链支持。所以这里单独对友链介绍一下我的解决方案。&lt;/p&gt;
&lt;p&gt;在友链页面按照如下格式写：&lt;/p&gt;
&lt;p&gt;提前引用 css 样式避免排版错乱&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;#x3C;link href=&quot;/css/link.min.css&quot; rel=&quot;stylesheet&quot;&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;其 CSS 文件也贴出来仅供参考：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;.f &gt; ul {
  display: flex;
  flex-wrap: wrap;
  padding: 0;
}
.f &gt; ul &gt; li {
  transition: 0.3s ease;
  list-style: none;
}
.f &gt; ul &gt; li {
  display: flex;
  margin: 0 10px 10px 0;
  text-decoration: none;
  padding: 10px;
  background-color: var(--inside-background);
  color: var(--inside-accent-color);
  border-radius: 6px;
}
.f &gt; ul &gt; li:hover {
  color: #fff;
  background-color: var(--inside-accent-color);
  box-shadow: 0 2px 4px 1px rgb(0 0 0 / 20%);
  transform: scale(1.03);
}
.f &gt; ul &gt; li:active {
  transform: scale(0.97);
}
.f &gt; ul &gt; li &gt; p {
  margin: 0;
}
.f img {
  border: solid 1px var(--inside-border-color);
  border-radius: 25px;
  width: 50px;
  height: 50px;
  margin: 0 !important;
  max-width: fit-content;
}
.f &gt; ul &gt; li &gt; ul {
  position: relative;
  margin-left: 10px;
  padding: 0;
}
.f &gt; ul &gt; li &gt; ul &gt; li {
  list-style: none;
  text-align: center;
}
.f &gt; ul &gt; li &gt; ul &gt; li:nth-child(1) {
  font-size: 14px;
}
.f &gt; ul &gt; li &gt; ul &gt; li:nth-child(2) {
  font-size: 12px;
  margin-top: 5px;
  max-width: 108px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  opacity: 0.8;
}
.f &gt; ul &gt; li &gt; ul &gt; li:nth-child(3) a {
  position: absolute;
  right: 0;
  top: 0;
  height: 100%;
  width: 100%;
  border: 0;
  color: transparent;
}
@media (max-width: 450px) {
  .f &gt; ul &gt; li {
    margin-left: 0;
    width: 100%;
  }
  .f &gt; ul &gt; li &gt; ul {
    width: 100%;
  }
  .f &gt; ul &gt; li &gt; ul &gt; li {
    text-align: start;
    max-width: 100% !important;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;随后用一个 div 标签将需要优化展示的友链包裹起来即可。这样通过 Markdown 语法写出来的友链，真的是不知道要比手动写 html 标签要高到哪里去了。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-markdown&quot;&gt;&amp;#x3C;div class=&quot;f&quot;&gt;

- ![](https://gravatar.loli.net/avatar/1ffe42aa45a6b1444a786b1f32dfa8aa?s=400)
  - CWorld&apos;s Blog
  - 求知若愚，虚怀若谷
  - [](https://blog.cworld.top)

&amp;#x3C;/div&gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;结尾&lt;/h2&gt;
&lt;p&gt;静态博客能够折腾到这个地步真的已经做的很不错了。希望大家都能把博客折腾成各自喜欢的样子，然后长期坚持把内容写下去，否则，折腾一大圈，也不过是一时热情，只会拖累自己的产物罢了。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.DZynjJbw.jpg"/><enclosure url="/_astro/thumbnail.DZynjJbw.jpg"/></item><item><title>Chrome 小恐龙无敌化</title><link>https://cworld0.com/blog/chrome-dinosaur</link><guid isPermaLink="true">https://cworld0.com/blog/chrome-dinosaur</guid><description>众所周知，Chrome 含有一个彩蛋，画风清奇小恐龙游戏，可以通过断网和直接访问一下网址触发。</description><pubDate>Thu, 18 Feb 2021 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;前言&lt;/h2&gt;
&lt;p&gt;众所周知，谷歌的 Chrome 含有一枚彩蛋，是一个~~画风清奇~~的小恐龙游戏，可以通过断网和直接访问一下网址触发：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;chrome://dino/&quot;&gt;Chrome://dino&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;但是对于这种逐渐加速的小游戏来说，玩到后面就特别容易内心崩溃，于是便有了此文。&lt;/p&gt;
&lt;h2&gt;食用方法&lt;/h2&gt;
&lt;p&gt;来到熟悉的网页，按下罪恶的 F12：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fqyww7vej30vt0l7q40.CDvPdvD6.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;看到控制台的 Console 了吗？点开就对了。&lt;/p&gt;
&lt;p&gt;三行代码，总有你喜欢的：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;让小恐龙无敌：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Runner.instance_.gameOver=function(){}&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;让小恐龙跑得更快（默认是 10，但是你可以手动修改&lt;em&gt;使它更快&lt;/em&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Runner.instance_.setSpeed(20)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;让小恐龙跳得更高（默认是 10，但是你可以手动修改&lt;em&gt;使它更富有弹性&lt;/em&gt;）：&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Runner.instance_.tRex.setJumpVelocity(20)&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;就像这样子：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fra5xeekj30w90lkjsy.4Tb1Wgtg.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;问我最高多少分？我觉得应该是 999999 分。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Frd4cvuej30vg0l43zl.BdlP2GIa.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;本C的随手分数&quot;&gt;&lt;/p&gt;
&lt;h2&gt;后话&lt;/h2&gt;
&lt;p&gt;我觉得，当你无敌后，一种莫名的无聊感觉涌上心头...&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.DN1PcEn1.jpg"/><enclosure url="/_astro/thumbnail.DN1PcEn1.jpg"/></item><item><title>高考随笔 —— 我想</title><link>https://cworld0.com/blog/gaokao-essay</link><guid isPermaLink="true">https://cworld0.com/blog/gaokao-essay</guid><description>博主已经踏入高三的坎了，所以给自己写诗歌随笔来激励自己。</description><pubDate>Sat, 26 Sep 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;博主已经踏入高三的坎了，所以给自己写诗歌随笔来激励自己。&lt;/p&gt;
&lt;p&gt;没有什么原因，
只是突然地，我想。
那时候的我，极像是茅塞顿开一般。&lt;/p&gt;
&lt;p&gt;我想找回一些关于梦开始的东西。
就像深海孤岛般温柔的鲸落，远离世俗、喧嚣，还有残存着原始的粗旷。
我想去看看物种最后的倔强，它慵懒的眼神，清晰地透着孤独又悲伤。
真想。&lt;/p&gt;
&lt;p&gt;我想坐一列并不时髦的旧式火车，那锈迹斑斑的墨绿色铁皮外，一路的绿树高桥。
顺带一夜的樱花流水、、不，那时只剩下江枫烈火。
我想去看旧时的江户风尚、银座、新宿的纸醉金迷的涤荡。
总会有人提及至尊黑道的故事，在细雨弥香的酒吧，昏暗的灯光幽幽地闪烁着香槟一样的金黄。
我想去参拜满是沉香的神社，亲自穿过砖红色的鸟居，然后抿一口茶的芳香。
我想去坐观关于古代神话的歌舞伎，扮演伊邪那美命的男子婉转的舞步和凄厉的歌唱在脑海里回荡，
在尚未荒废的古老剧院，残存着像是古老图腾的浮雕，诸神黄昏的图画伸展在高耸的穹顶上。
我想去大名鼎鼎的秋叶原，在翠色如云的风采里，会不会有披挂十二单的女子，踏着木屐从街角缓缓走过，心底会不会藏着曾经深爱、始终放不下的牛郎。
我想去伫足侧望老人家风旋的古老剑术，去千叶县拜访故交的老友，铁青色的玄关也许插满白色不知名的小花。他会同我缓缓叙旧，领我细品一顿来自北海道新鲜的晚餐，一壶凛冽的清酒，祛除了我一身的寒霜。&lt;/p&gt;
&lt;p&gt;我想… …
不，这并不立足于当下。
从梦中醒来的我惊恐地四下张望。
我想回头，但时间的齿轮已在飞旋中磨得锃亮。
而我只能鼓起勇气，怀揣梦想，打破天窗，
用尽我的全身力气。
也许，命运之门已悄然打开… …&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>酷安 318 事件</title><link>https://cworld0.com/blog/coolapk-318</link><guid isPermaLink="true">https://cworld0.com/blog/coolapk-318</guid><description>迟到一年的文章，本来不准备发出来的，如今发出来，也就算是最后的纪念吧。</description><pubDate>Sun, 22 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;我们暂且用『载入酷安史册』来形容这 7 天的历史。&lt;/p&gt;
&lt;p&gt;（该文章于 2020-03-22 匆成，于 2020-04-04 发布）&lt;/p&gt;
&lt;p&gt;迟到一年的文章，本来不准备发出来的，如今发出来，也就算是最后的纪念吧。&lt;/p&gt;
&lt;h2&gt;起因&lt;/h2&gt;
&lt;p&gt;事情开始于 3.16 。（&lt;a href=&quot;https://www.coolapk.com/feed/17355115?shareKey=YzFmNTQ1NjE5OTQ5NWU3MjMyNzI~&amp;#x26;shareUid=1384771&amp;#x26;shareFrom=com.coolapk.market_10.0.3&quot;&gt;原文章已被删除&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;原文实在找不到了，大概内容可以看下这位用户的回答。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.zhihu.com/question/380038074/answer/1086523661&quot;&gt;半生瓜 BalsamPear 的知乎回答&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;@匿名游客(酷安官方人员) 的说法：&lt;a href=&quot;https://www.zhihu.com/question/380038074/answer/1086114857?utm_source=com.coolapk.market&amp;#x26;utm_medium=social&amp;#x26;utm_oi=968087657482534912&quot;&gt;匿名游客的知乎回答&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;然而，更为过分的是，仅过了 2 天，又有人持续触犯了警戒线。
在这样严峻的情况下，酷安小编最终发出了这样的动态： &lt;a href=&quot;https://www.coolapk.com/feed/17378785?shareKey=NWY4OWZkYzgzNWE0NWU3MjNjY2M~&amp;#x26;shareUid=1384771&amp;#x26;shareFrom=com.coolapk.market_10.0.3&quot;&gt;酷安小编的酷安动态&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;“ 我们鼓励大家多交流，多发优质内容，但我们的红线是涉政涉黄涉恐，特别是很多人喜欢玩一些很危险的梗，还是我们太温柔，我发自内心的一直觉得酷友就像一家人，所以我们很珍惜每一位酷友，但这种宽容有好处也有坏处，还是请各位酷友多多珍惜这种氛围，珍惜自己的账号和设备，因为从此以后我们会非常严格，谢谢支持。”&lt;/p&gt;
&lt;p&gt;黄福林随即表明：这次就是要执行禁止发布任何形式的涉政涉黄涉恐涉暴内容的规则，指明与 3.16 事件无关 （&lt;a href=&quot;https://www.coolapk.com/feed/17390077?shareKey=ZmUwNWVhZDM2ZWQxNWU3MjQ2MTg~&amp;#x26;shareUid=1384771&amp;#x26;shareFrom=com.coolapk.market_10.0.3&quot;&gt;黄福林的酷安动态&lt;/a&gt;） ，但不难想到，这次事情的前提是上述事件同时发生。
匿名游客后来给出了一个更为明确的说法：起因是涉黄的用户被处理，用一张小管家提示图去诱骗那个小圈子的人，说非数码举报必成功，让他们去测试，然后他们就信了。&lt;/p&gt;
&lt;p&gt;于是，酷安也就开始了为期 7 天的整改。&lt;/p&gt;
&lt;h2&gt;思考&lt;/h2&gt;
&lt;p&gt;是的，我们将一同度过这个意义深刻的酷安时刻。
但不必过于悲观，官方所有人员也将与我们一同为这样的 7 天恼火和难过，在当前很多人都在家刷流量的时候，酷安却因此蒙受巨大损失。不必怨天尤人，这样的结果也毕竟是酷友们一手造成的。也不必过于追究酷友的责任，毕竟每个人都有自己的想法，酷安也因众多酷友而有了今天。
酷安也确实有能耐和必要去这样做了。知乎有很多酷友，在为大家耐心解答，3.16 这件事情也在知乎排名最高 22 名。&lt;/p&gt;
&lt;p&gt;在这大数据的背后，我们应该更加深刻地反思自己，不管自己是否参与。我们更应该和谐地与大家相处，珍惜自己摆弄了数天的账号，为酷安这个社区增添一份力。能有这样，酷安也就会真正达到自我净化的目的。我们希望，7 天后的酷安应是一片友善和谐的景象。&lt;/p&gt;
&lt;p&gt;在这 7 天里：我们仍然可以发布和翻阅动态，给自己的看看号收录合适的图文，或是积极参与问答。
我们仍可以在像是知乎等平台，重新给酷安一个全新的认识。是的，无论这 7 天，你到了其他平台，去了其他社区，还请记得及时回头，酷安在这 7 天一直等着你，酷安与你同在。&lt;/p&gt;
&lt;h2&gt;后话&lt;/h2&gt;
&lt;p&gt;我们忘不了在酷安所做的点点滴滴，在酷安结识的新朋友，发现更大的天地，甚至改变自己的生活。我们应该感谢酷安官方们这么多年来，给我们的默默付出。&lt;/p&gt;
&lt;p&gt;我甘愿相信，7 天归来，仍是酷安。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.Bqi6tfLX.jpg"/><enclosure url="/_astro/thumbnail.Bqi6tfLX.jpg"/></item><item><title>钉钉一键点赞（最高 21 亿）</title><link>https://cworld0.com/blog/dingtalk-like</link><guid isPermaLink="true">https://cworld0.com/blog/dingtalk-like</guid><description>想必感兴趣的已经试过了连点器的畅快吧。在玩转这之前，这确实不失为一种强有力的手段。</description><pubDate>Tue, 03 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;想必感兴趣的已经试过了连点器的畅快吧。在玩转这之前，这确实不失为一种强有力的手段。然而如果这样的话，最多也就不过十万。这怎么能让博主折服呢，所以就从钉钉直播下手。在这之前，先对这个套壳钉钉有一个更深入的了解。&lt;/p&gt;
&lt;h2&gt;思路分析&lt;/h2&gt;
&lt;h3&gt;运行逻辑&lt;/h3&gt;
&lt;p&gt;先研究一下点赞的运行逻辑：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fhrtsmcgmj30wu08wwja.C_MiXkZe.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;点赞逻辑&quot;&gt;&lt;/p&gt;
&lt;p&gt;由于钉钉的客户端中的网络通讯加密，点赞数上传也不例外，所以我们从直播间网页上下功夫。&lt;/p&gt;
&lt;p&gt;直播间所用网页：&lt;a href=&quot;https://h5.m.taobao.com/tblive/dingtalk/pc-live-v3.html&quot;&gt;钉钉直播间&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;注意：钉钉加载直播间的弹出窗口实际上是一个浏览器，其网络通讯可以被 Fiddler 获取到，亦可以通过其 Autoresponder 功能替换为本地文件，这就是我们的突破口。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;目标流程&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fhsdqms0bj30w008o42u.CnKsK_yY.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;目标&quot;&gt;&lt;/p&gt;
&lt;p&gt;其中不对 favorCount 进行自增是为了确保赞数确实上传到服务器并进行了累加，这样会导致点击之后到数值显示有一定的延迟，一般在几秒钟。此时我们看到点击一次点赞按钮到一定时间后（源文件中是 1000ms ）将会触发上传操作。&lt;/p&gt;
&lt;h2&gt;具体实现&lt;/h2&gt;
&lt;h3&gt;理论实践&lt;/h3&gt;
&lt;p&gt;首先根据原理准备网页文件，下载直播间代码。&lt;/p&gt;
&lt;p&gt;打开上述网址，&lt;code&gt;Ctrl + S&lt;/code&gt; 保存。注意我们只需要 html 文件。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fhtjjkwiaj30p50973zi.sfuVzDiC.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;搜索 uploadLikesClick 字段，将看到一个函数。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fhtqqvj2uj30gg03jgm6.DeSCGo72.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;注意两个画框的地方，它们就是要修改的核心。&lt;/p&gt;
&lt;p&gt;这样一来就可以直接修改了。将第一个框中的内容改为：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;uploadLikesClick(B, 10000000)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;第二个框中的 1e4 即为上传间隔，赋值为 0 即为清零操作。&lt;/p&gt;
&lt;p&gt;故我们可以做到如下图一般的骚操作：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;uploadLikesClick(B, Math.ceil(10000000 * Math.random() + 1))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至此理论部分结束。如有技术可以自己实现了。经过实验钉钉存赞数的变量为 32 位有符号 int 其最大值约为 21 亿左右，超出后变成负值，直播间会显示为 0 。如果还有人点赞，赞数会增加但是 -21 亿没什么人会点的过来的...除了这样改。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ps. 10000000 好像是最大值了。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Fiddler 修改&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;首先你需要下载并修改好直播间网页并将其保存在本地。&lt;/li&gt;
&lt;li&gt;安装 &lt;a href=&quot;https://www.telerik.com/download/fiddler&quot;&gt;Fiddler&lt;/a&gt; 。&lt;/li&gt;
&lt;li&gt;打开 Fiddler 的 HTTPS 模式，位于 Tools - Options - HTTPS 。&lt;br&gt;
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fiaaqmxk8j30f20a8mxk.CI6nET2-.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/li&gt;
&lt;li&gt;配置 Autoresponder ，即在测试环境中将在线网页强制替换为本地网页。&lt;br&gt;
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fiaf10k3gj30fz08474s.Mh5j-bBl.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/li&gt;
&lt;li&gt;打开清理钉钉的网页缓存，位于%LOCALAPPDATA%\DIngtalk\Cache，删除全部 f 开头的文件。
&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;%LOCALAPPDATA%&lt;/code&gt; 为 &lt;code&gt;C:\Users\你的电脑用户名\AppData\Local&lt;/code&gt;&lt;br&gt;
Ps. 此步骤需在每次 &lt;strong&gt;更改网页文件后和重新打开直播间之前&lt;/strong&gt; 完成，否则会导致替换失败。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;打开钉钉直播间，如果遇到错误没关系，多打开几次，当播放正常之后，点赞吧。&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;效果展示&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fib1q0zv7j31ww0zcgxc.CYvchyvu.jpg&amp;#x26;w=2048&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;注意事项&lt;/h3&gt;
&lt;p&gt;为了避免视频界面缓存问题，我们将大部分缓存都清除了，这会使直播界面甚至其他界面需要重载缓存，因此清理后很多界面需要二次打开才能加载。&lt;/p&gt;
&lt;p&gt;同时需要注意的是，点赞仅供娱乐。请勿过分贪玩，适度为止。&lt;/p&gt;
&lt;h2&gt;主播禁用点赞的问题&lt;/h2&gt;
&lt;p&gt;根据测试，禁用功能应该是最近研发的，而相关代码似乎是直接追加到最后的，所以趁直播界面加载完毕之前，拟好点赞位置猛击，就会发现还是可以卡的出几个赞的。如果你需要更快的点赞方式，建议使用 &lt;a href=&quot;https://www.shudaxia.com/&quot;&gt;鼠大侠&lt;/a&gt; 等软件，帮助你更快地在加载的片刻迅速点赞。&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.BMC7hm0L.jpg"/><enclosure url="/_astro/thumbnail.BMC7hm0L.jpg"/></item><item><title>钉钉云课堂提取视频 &amp; 倍速播放 &amp; 学习进度</title><link>https://cworld0.com/blog/dingtalk-player</link><guid isPermaLink="true">https://cworld0.com/blog/dingtalk-player</guid><description>钉钉的云课堂比较反人类，不仅有水印影响观看体验，而且不支持倍速播放。</description><pubDate>Tue, 03 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;看讲课比较慢的老师的视频，无疑是一种煎熬。过于慢的速度，反而会影响效率。&lt;/p&gt;
&lt;p&gt;教程由简单到难逐渐递增，不过玩法也越来越多，所以还请斟酌着看。&lt;/p&gt;
&lt;h2&gt;利用 IDM 下载&lt;/h2&gt;
&lt;p&gt;来自知乎用户 &lt;a href=&quot;https://www.zhihu.com/question/371593651/answer/1019733992&quot;&gt;cxy&lt;/a&gt;（方法及其简单粗暴，一看便懂。博主测试直播回看界面失效）&lt;/p&gt;
&lt;p&gt;首先，下载一个 IDM（internet download manager），这个软件平时当多核下载器拿来下浏览器里的文件也是非常不错的。百度一下网上都有 IDM 的下载链接，浏览器插件也行。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fuzjvsj3j30k00bvgmj.BFh4EnhO.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;安装完成以后在后台运行，点开你的课堂网址，右上角就会出现这样的标识：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fv06dn82j30v50b676t.DHDOH7W6.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;image&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://cworld0.com/_vercel/image?url=_astro%2Fv14raoxj30k00ap754.DbIun9wR.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;使用 HttpCanary 抓取&lt;/h2&gt;
&lt;p&gt;来自知乎用户 &lt;a href=&quot;https://www.zhihu.com/question/371593651/answer/1015872082&quot;&gt;solstice23&lt;/a&gt;，方法比较中矩，还是有一些参考价值的。&lt;/p&gt;
&lt;p&gt;下载 HttpCanary 软件（这里提供一个&lt;a href=&quot;https://link.zhihu.com/?target=https%3A//www.lanzous.com/i9ff8eb&quot;&gt;下载链接&lt;/a&gt;）&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;进入钉钉，先不要打开云课堂视频。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;打开 HttpCanary，点击右下角的开始捕获按钮。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切回钉钉，打开云课堂视频，播放几秒&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;切回 HttpCanary，点击右下角按钮暂停抓包&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击右上角搜索按钮，选择类别 &quot;视频&quot;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;筛选出来几个数据包，地址都是相同的。随便点进去一个，长按地址复制。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;使用下载器下载该视频（例如 ADM 下载器），并使用支持倍速播放的播放器播放即可。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvbxemrvj32pg1ww1kx.C2Apk6vQ.jpg&amp;#x26;w=3840&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;利用 Fiddler 注入 JS&lt;/h2&gt;
&lt;p&gt;可以说这里开始才是正文。同时也对作者 &lt;a href=&quot;https://www.cnblogs.com/1024th/p/12330849.html&quot;&gt;樱花赞&lt;/a&gt; 表示感谢！&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;PS.他并不是原创，最初原创的是 &lt;a href=&quot;https://solstice23.top/archives/1075&quot;&gt;solstice23&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;思路&lt;/h3&gt;
&lt;p&gt;云课堂的本质是一个（套壳的）网页，可以用抓包软件分析记录学习进度请求，再通过修改这个请求并重发来修改学习进度。&lt;/p&gt;
&lt;h3&gt;提示&lt;/h3&gt;
&lt;p&gt;该方法仅 PC 端可用（其实手机也不是不行）。&lt;/p&gt;
&lt;h3&gt;教程&lt;/h3&gt;
&lt;h4&gt;安装 Fiddler&lt;/h4&gt;
&lt;p&gt;&lt;a href=&quot;https://telerik-fiddler.s3.amazonaws.com/fiddler/FiddlerSetup.exe&quot;&gt;点击这里&lt;/a&gt;下载安装。&lt;/p&gt;
&lt;h4&gt;设置 Fiddler 捕获 HTTPS 流量&lt;/h4&gt;
&lt;p&gt;打开 Fiddler，点击顶栏 “Tools”，在弹出的菜单中点击 “Options…”。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvh9k0nhj30i606e3zo.DdsrMgMi.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;在弹出的窗口中切换到顶部的 “HTTPS” 菜单，勾选 “Capture HTTPS CONNECTs” 和 “Decrypt HTTPS traffic” 复选框，然后点击 OK。&lt;/p&gt;
&lt;p&gt;勾选后会弹出安装证书的窗口，确认即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvhi47apj30iu0csjti.DdsRS9Kb.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;如果出现下面这样的黄条，点击黄条即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvhvlkxjj311y02sweo.BxmAQJK9.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h4&gt;写入脚本&lt;/h4&gt;
&lt;p&gt;在 Fiddler 中按下 &lt;code&gt;Ctrl+R&lt;/code&gt; 。弹出一个代码编辑器窗口。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvkq3jhyj311y0k6abe.C1CG0f0M.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;在代码编辑器窗口按下 &lt;code&gt;Ctrl+F&lt;/code&gt; ，在弹出的窗口中输入 OnBeforeResponse 并按下回车。找到 OnBeforeResponse 函数（下图所示）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvkxu4tuj317c0im0ve.DOhegJrA.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;把图中的下面这段：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s &amp;#x26;&amp;#x26; oSession.responseCode == 304) {
        oSession[&quot;ui-hide&quot;] = &quot;true&quot;;
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;替换成下面的代码，然后按下 &lt;code&gt;Ctrl+S&lt;/code&gt; 来保存。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;下方代码已经整合 &lt;a href=&quot;https://www.cnblogs.com/1024th/p/12317158.html&quot;&gt;【一劳永逸】钉钉云课堂倍速播放教程&lt;/a&gt; 中的代码（看过这篇教程的，可以把原来的代码删掉用下面的）。&lt;br&gt;
以下代码部分来自 &lt;a href=&quot;https://greasyfork.org/users/49622&quot;&gt;HTML5 播放器增强插件&lt;/a&gt;，对原作者深表感谢！&lt;br&gt;
以下代码参考 &lt;a href=&quot;https://www.aneasystone.com/archives/2015/03/reissue-requests-by-conditions-using-fiddlerscript.html&quot;&gt;aneasystone&apos;s blog: 通过 FiddlerScript 实现根据条件重发请求&lt;/a&gt;，对博主深表感谢！&lt;/p&gt;
&lt;/blockquote&gt;
&lt;pre&gt;&lt;code class=&quot;language-typescript&quot;&gt;public static RulesOption(&quot;视频增强插件&quot;)
var m_H5VideoPlayerExtension: boolean = true;
public static RulesOption(&quot;自动学习&quot;)
var m_AutoLearn: boolean = true;
static function OnBeforeResponse(oSession: Session) {
    if (m_Hide304s &amp;#x26;&amp;#x26; oSession.responseCode == 304) {
        oSession[&quot;ui-hide&quot;] = &quot;true&quot;;
    }
    if (m_H5VideoPlayerExtension) {
        var sToInsert = &quot;&amp;#x3C;script src=data:application/javascript;base64,KGZ1bmN0aW9uKCl7dmFyIGh0bWxfcGxheWVyX2VuaGFuY2U9e2ZvbnRTaXplOjIwLHBsYXllcjpmdW5jdGlvbigpe3JldHVybiBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ2aWRlbyIpfSx0aXBzOmZ1bmN0aW9uKHN0cil7dmFyIHN0eWxlPWRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIiNodG1sX3BsYXllcl9lbmhhbmNlX3RpcHMiKS5zdHlsZTtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaHRtbF9wbGF5ZXJfZW5oYW5jZV90aXBzIikuaW5uZXJUZXh0PXN0cjtmb3IodmFyIGk9MDtpPDM7aSsrKXtpZih0aGlzLm9uX29mZltpXSl7Y2xlYXJUaW1lb3V0KHRoaXMub25fb2ZmW2ldKX19c3R5bGUuZGlzcGxheT0iYmxvY2siO3RoaXMub25fb2ZmWzBdPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtzdHlsZS5vcGFjaXR5PTF9LDUwKTt0aGlzLm9uX29mZlsxXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3R5bGUub3BhY2l0eT0wfSwyMDAwKTt0aGlzLm9uX29mZlsyXT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7c3R5bGUuZGlzcGxheT0ibm9uZSJ9LDI4MDApfSxvbl9vZmY6bmV3IEFycmF5KDMpLHJvdGF0ZTowLGZwczozMCxmaWx0ZXI6e2tleTpuZXcgQXJyYXkoNSksc2V0dXA6ZnVuY3Rpb24oKXt2YXIgdmlldz0iYnJpZ2h0bmVzcyh7MH0pIGNvbnRyYXN0KHsxfSkgc2F0dXJhdGUoezJ9KSBodWUtcm90YXRlKHszfWRlZykgYmx1cih7NH1weCkiO2Zvcih2YXIgaT0wO2k8NTtpKyspe3ZpZXc9dmlldy5yZXBsYWNlKCJ7IitpKyJ9IixTdHJpbmcodGhpcy5rZXlbaV0pKTt0aGlzLmtleVtpXT1OdW1iZXIodGhpcy5rZXlbaV0pfWh0bWxfcGxheWVyX2VuaGFuY2UucGxheWVyKCkuc3R5bGUuV2Via2l0RmlsdGVyPXZpZXd9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5rZXlbMF09MTt0aGlzLmtleVsxXT0xO3RoaXMua2V5WzJdPTE7dGhpcy5rZXlbM109MDt0aGlzLmtleVs0XT0wO3RoaXMuc2V0dXAoKX19LHNldHRpcHM6ZnVuY3Rpb24oKXt2YXIgdGlwcz1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTt0aGlzLnBsYXllcigpLnBhcmVudE5vZGUuYXBwZW5kQ2hpbGQodGlwcyk7dGlwcy5zZXRBdHRyaWJ1dGUoImlkIiwiaHRtbF9wbGF5ZXJfZW5oYW5jZV90aXBzIik7dGlwcy5zZXRBdHRyaWJ1dGUoInN0eWxlIiwicG9zaXRpb246IGFic29sdXRlO3otaW5kZXg6IDk5OTk5OTtwYWRkaW5nOiAxMHB4O2JhY2tncm91bmQ6IHJnYmEoMCwwLDAsMC44KTtjb2xvcjp3aGl0ZTt0b3A6IDUwJTtsZWZ0OiA1MCU7dHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwtNTAlKTt0cmFuc2l0aW9uOiBhbGwgNTAwbXMgZWFzZTtvcGFjaXR5OiAwO2Rpc3BsYXk6IG5vbmU7IC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IHN1YnBpeGVsLWFudGlhbGlhc2VkO2ZvbnQtZmFtaWx5OiAnbWljcm9zb2Z0IHlhaGVpJywgVmVyZGFuYSwgR2VuZXZhLCBzYW5zLXNlcmlmOy13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7Iik7aWYodGhpcy5mb250U2l6ZSE9PTApe3RpcHMuc3R5bGUuZm9udFNpemU9dGhpcy5mb250U2l6ZSsicHgifWlmKGxvY2F0aW9uLmhvc3RuYW1lPT09Ind3dy55b3V0dWJlLmNvbSIpe3RoaXMucGxheWVyKCkucGFyZW50Tm9kZS5zdHlsZS5oZWlnaHQ9IjEwMCUifX0sX2lzRm91Y3M6ZmFsc2UsaXNGb3VjczpmdW5jdGlvbigpe3RoaXMucGxheWVyKCkub25tb3VzZW92ZXI9ZnVuY3Rpb24oKXtodG1sX3BsYXllcl9lbmhhbmNlLl9pc0ZvdWNzPXRydWV9O3RoaXMucGxheWVyKCkub25tb3VzZW91dD1mdW5jdGlvbigpe2h0bWxfcGxheWVyX2VuaGFuY2UuX2lzRm91Y3M9ZmFsc2V9fSxidXR0b246ZnVuY3Rpb24oZXZlbnQpe3ZhciBfdGhpcz1odG1sX3BsYXllcl9lbmhhbmNlO2lmKGV2ZW50LmFsdEtleXx8ZXZlbnQuY3RybEtleXx8ZXZlbnQuc2hpZnRLZXkpe3JldHVybn1pZighX3RoaXMuX2lzRm91Y3Mpe3JldHVybn1ldmVudC5zdG9wUHJvcGFnYXRpb24oKTtldmVudC5wcmV2ZW50RGVmYXVsdCgpO2lmKGV2ZW50LmtleUNvZGU9PT0zOSl7X3RoaXMucGxheWVyKCkuY3VycmVudFRpbWUrPTM7X3RoaXMudGlwcygi5b+r6L+b77yaM+enkiIpfWlmKGV2ZW50LmtleUNvZGU9PT0zNyl7X3RoaXMucGxheWVyKCkuY3VycmVudFRpbWUtPTM7X3RoaXMudGlwcygi5ZCO6YCA77yaM+enkiIpfWlmKGV2ZW50LmtleUNvZGU9PT0zOCl7aWYoX3RoaXMucGxheWVyKCkudm9sdW1lPDEpe190aGlzLnBsYXllcigpLnZvbHVtZSs9MC4wMX1fdGhpcy5wbGF5ZXIoKS52b2x1bWU9X3RoaXMucGxheWVyKCkudm9sdW1lLnRvRml4ZWQoMik7X3RoaXMudGlwcygi6Z+z6YeP77yaIitwYXJzZUludChfdGhpcy5wbGF5ZXIoKS52b2x1bWUqMTAwKSsiJSIpfWlmKGV2ZW50LmtleUNvZGU9PT00MCl7aWYoX3RoaXMucGxheWVyKCkudm9sdW1lPjApe190aGlzLnBsYXllcigpLnZvbHVtZS09MC4wMX1fdGhpcy5wbGF5ZXIoKS52b2x1bWU9X3RoaXMucGxheWVyKCkudm9sdW1lLnRvRml4ZWQoMik7X3RoaXMudGlwcygi6Z+z6YeP77yaIitwYXJzZUludChfdGhpcy5wbGF5ZXIoKS52b2x1bWUqMTAwKSsiJSIpfWlmKGV2ZW50LmtleUNvZGU9PT0zMil7aWYoX3RoaXMucGxheWVyKCkucGF1c2VkKXtfdGhpcy5wbGF5ZXIoKS5wbGF5KCk7X3RoaXMudGlwcygi5pKt5pS+Iil9ZWxzZXtfdGhpcy5wbGF5ZXIoKS5wYXVzZSgpO190aGlzLnRpcHMoIuaaguWBnCIpfX1pZihldmVudC5rZXlDb2RlPT09ODgpe2lmKF90aGlzLnBsYXllcigpLnBsYXliYWNrUmF0ZT4wKXtfdGhpcy5wbGF5ZXIoKS5wbGF5YmFja1JhdGUtPTAuMTtfdGhpcy5wbGF5ZXIoKS5wbGF5YmFja1JhdGU9X3RoaXMucGxheWVyKCkucGxheWJhY2tSYXRlLnRvRml4ZWQoMSk7X3RoaXMudGlwcygi5pKt5pS+6YCf5bqm77yaIitfdGhpcy5wbGF5ZXIoKS5wbGF5YmFja1JhdGUrIuWAjSIpfX1pZihldmVudC5rZXlDb2RlPT09Njcpe2lmKF90aGlzLnBsYXllcigpLnBsYXliYWNrUmF0ZTwxNil7X3RoaXMucGxheWVyKCkucGxheWJhY2tSYXRlKz0wLjE7X3RoaXMucGxheWVyKCkucGxheWJhY2tSYXRlPV90aGlzLnBsYXllcigpLnBsYXliYWNrUmF0ZS50b0ZpeGVkKDEpO190aGlzLnRpcHMoIuaSreaUvumAn+W6pu+8miIrX3RoaXMucGxheWVyKCkucGxheWJhY2tSYXRlKyLlgI0iKX19aWYoZXZlbnQua2V5Q29kZT09PTkwKXtfdGhpcy5wbGF5ZXIoKS5wbGF5YmFja1JhdGU9MTtfdGhpcy50aXBzKCLmkq3mlL7pgJ/luqbvvJox5YCNIil9aWYoZXZlbnQua2V5Q29kZT09NzApe2lmKCFfdGhpcy5wbGF5ZXIoKS5wYXVzZWQpe190aGlzLnBsYXllcigpLnBhdXNlKCl9X3RoaXMucGxheWVyKCkuY3VycmVudFRpbWUrPU51bWJlcigxL190aGlzLmZwcyk7X3RoaXMudGlwcygi5a6a5L2N77ya5LiL5LiA5binIil9aWYoZXZlbnQua2V5Q29kZT09Njgpe2lmKCFfdGhpcy5wbGF5ZXIoKS5wYXVzZWQpe190aGlzLnBsYXllcigpLnBhdXNlKCl9X3RoaXMucGxheWVyKCkuY3VycmVudFRpbWUtPU51bWJlcigxL190aGlzLmZwcyk7X3RoaXMudGlwcygi5a6a5L2N77ya5LiK5LiA5binIil9aWYoZXZlbnQua2V5Q29kZT09Njkpe2lmKF90aGlzLmZpbHRlci5rZXlbMF0+MSl7X3RoaXMuZmlsdGVyLmtleVswXSs9MX1lbHNle190aGlzLmZpbHRlci5rZXlbMF0rPTAuMX1fdGhpcy5maWx0ZXIua2V5WzBdPV90aGlzLmZpbHRlci5rZXlbMF0udG9GaXhlZCgyKTtfdGhpcy5maWx0ZXIuc2V0dXAoKTtfdGhpcy50aXBzKCLlm77lg4/kuq7luqblop7liqDvvJoiK3BhcnNlSW50KF90aGlzLmZpbHRlci5rZXlbMF0qMTAwKSsiJSIpfWlmKGV2ZW50LmtleUNvZGU9PTg3KXtpZihfdGhpcy5maWx0ZXIua2V5WzBdPjApe2lmKF90aGlzLmZpbHRlci5rZXlbMF0+MSl7X3RoaXMuZmlsdGVyLmtleVswXS09MX1lbHNle190aGlzLmZpbHRlci5rZXlbMF0tPTAuMX1fdGhpcy5maWx0ZXIua2V5WzBdPV90aGlzLmZpbHRlci5rZXlbMF0udG9GaXhlZCgyKTtfdGhpcy5maWx0ZXIuc2V0dXAoKX1fdGhpcy50aXBzKCLlm77lg4/kuq7luqblh4/lsJHvvJoiK3BhcnNlSW50KF90aGlzLmZpbHRlci5rZXlbMF0qMTAwKSsiJSIpfWlmKGV2ZW50LmtleUNvZGU9PTg0KXtpZihfdGhpcy5maWx0ZXIua2V5WzFdPjEpe190aGlzLmZpbHRlci5rZXlbMV0rPTF9ZWxzZXtfdGhpcy5maWx0ZXIua2V5WzFdKz0wLjF9X3RoaXMuZmlsdGVyLmtleVsxXT1fdGhpcy5maWx0ZXIua2V5WzFdLnRvRml4ZWQoMik7X3RoaXMuZmlsdGVyLnNldHVwKCk7X3RoaXMudGlwcygi5Zu+5YOP5a+55q+U5bqm5aKe5Yqg77yaIitwYXJzZUludChfdGhpcy5maWx0ZXIua2V5WzFdKjEwMCkrIiUiKX1pZihldmVudC5rZXlDb2RlPT04Mil7aWYoX3RoaXMuZmlsdGVyLmtleVsxXT4wKXtpZihfdGhpcy5maWx0ZXIua2V5WzFdPjEpe190aGlzLmZpbHRlci5rZXlbMV0tPTF9ZWxzZXtfdGhpcy5maWx0ZXIua2V5WzFdLT0wLjF9X3RoaXMuZmlsdGVyLmtleVsxXT1fdGhpcy5maWx0ZXIua2V5WzFdLnRvRml4ZWQoMik7X3RoaXMuZmlsdGVyLnNldHVwKCl9X3RoaXMudGlwcygi5Zu+5YOP5a+55q+U5bqm5YeP5bCR77yaIitwYXJzZUludChfdGhpcy5maWx0ZXIua2V5WzFdKjEwMCkrIiUiKX1pZihldmVudC5rZXlDb2RlPT04NSl7aWYoX3RoaXMuZmlsdGVyLmtleVsyXT4xKXtfdGhpcy5maWx0ZXIua2V5WzJdKz0xfWVsc2V7X3RoaXMuZmlsdGVyLmtleVsyXSs9MC4xfV90aGlzLmZpbHRlci5rZXlbMl09X3RoaXMuZmlsdGVyLmtleVsyXS50b0ZpeGVkKDIpO190aGlzLmZpbHRlci5zZXR1cCgpO190aGlzLnRpcHMoIuWbvuWDj+mlseWSjOW6puWinuWKoO+8miIrcGFyc2VJbnQoX3RoaXMuZmlsdGVyLmtleVsyXSoxMDApKyIlIil9aWYoZXZlbnQua2V5Q29kZT09ODkpe2lmKF90aGlzLmZpbHRlci5rZXlbMl0+MCl7aWYoX3RoaXMuZmlsdGVyLmtleVsyXT4xKXtfdGhpcy5maWx0ZXIua2V5WzJdLT0xfWVsc2V7X3RoaXMuZmlsdGVyLmtleVsyXS09MC4xfV90aGlzLmZpbHRlci5rZXlbMl09X3RoaXMuZmlsdGVyLmtleVsyXS50b0ZpeGVkKDIpO190aGlzLmZpbHRlci5zZXR1cCgpfV90aGlzLnRpcHMoIuWbvuWDj+mlseWSjOW6puWHj+Wwke+8miIrcGFyc2VJbnQoX3RoaXMuZmlsdGVyLmtleVsyXSoxMDApKyIlIil9aWYoZXZlbnQua2V5Q29kZT09Nzkpe190aGlzLmZpbHRlci5rZXlbM10rPTE7X3RoaXMuZmlsdGVyLnNldHVwKCk7X3RoaXMudGlwcygi5Zu+5YOP6Imy55u45aKe5Yqg77yaIitfdGhpcy5maWx0ZXIua2V5WzNdKyLluqYiKX1pZihldmVudC5rZXlDb2RlPT03Myl7X3RoaXMuZmlsdGVyLmtleVszXS09MTtfdGhpcy5maWx0ZXIuc2V0dXAoKTtfdGhpcy50aXBzKCLlm77lg4/oibLnm7jlh4/lsJHvvJoiK190aGlzLmZpbHRlci5rZXlbM10rIuW6piIpfWlmKGV2ZW50LmtleUNvZGU9PTc1KXtfdGhpcy5maWx0ZXIua2V5WzRdKz0xO190aGlzLmZpbHRlci5zZXR1cCgpO190aGlzLnRpcHMoIuWbvuWDj+aooeeziuWinuWKoO+8miIrX3RoaXMuZmlsdGVyLmtleVs0XSsiUFgiKX1pZihldmVudC5rZXlDb2RlPT03NCl7aWYoX3RoaXMuZmlsdGVyLmtleVs0XT4wKXtfdGhpcy5maWx0ZXIua2V5WzRdLT0xO190aGlzLmZpbHRlci5zZXR1cCgpfV90aGlzLnRpcHMoIuWbvuWDj+aooeeziuWHj+Wwke+8miIrX3RoaXMuZmlsdGVyLmtleVs0XSsiUFgiKX1pZihldmVudC5rZXlDb2RlPT04MSl7X3RoaXMuZmlsdGVyLnJlc2V0KCk7X3RoaXMudGlwcygi5Zu+5YOP5bGe5oCn77ya5aSN5L2NIil9aWYoZXZlbnQua2V5Q29kZT09ODMpe190aGlzLnJvdGF0ZSs9OTA7aWYoX3RoaXMucm90YXRlJTM2MD09PTApe190aGlzLnJvdGF0ZT0wfV90aGlzLnBsYXllcigpLnN0eWxlLnRyYW5zZm9ybT0icm90YXRlKCIrX3RoaXMucm90YXRlKyJkZWcpIjtfdGhpcy50aXBzKCLnlLvpnaLml4vovazvvJoiK190aGlzLnJvdGF0ZSsi5bqmIil9aWYoZXZlbnQua2V5Q29kZT09MTMpe2lmKGxvY2F0aW9uLmhvc3RuYW1lPT09Ind3dy5iaWxpYmlsaS5jb20iKXtpZihkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXh0PSLov5vlhaXlhajlsY8iXScpKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbZGF0YS10ZXh0PSLov5vlhaXlhajlsY8iXScpLmNsaWNrKCl9fWlmKGxvY2F0aW9uLmhvc3RuYW1lPT09Ind3dy55b3V0dWJlLmNvbSIpe2lmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ1tjbGFzcz0ieXRwLWZ1bGxzY3JlZW4tYnV0dG9uIHl0cC1idXR0b24iXScpKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdbY2xhc3M9Inl0cC1mdWxsc2NyZWVuLWJ1dHRvbiB5dHAtYnV0dG9uIl0nKS5jbGljaygpfX19fSxpbml0OmZ1bmN0aW9uKCl7aWYoZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2h0bWxfcGxheWVyX2VuaGFuY2VfdGlwcyIpLmxlbmd0aD4xKXtkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjaHRtbF9wbGF5ZXJfZW5oYW5jZV90aXBzIikucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCIjaHRtbF9wbGF5ZXJfZW5oYW5jZV90aXBzIilbMV0pfWlmKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoInZpZGVvIikubGVuZ3RoPT09MSYmZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiI2h0bWxfcGxheWVyX2VuaGFuY2VfdGlwcyIpLmxlbmd0aD09PTApe2lmKCF0aGlzLmxvYWQpe3ZhciBfdGhpcz1odG1sX3BsYXllcl9lbmhhbmNlO3RoaXMubG9hZD10cnVlO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjb25zb2xlLmxvZygi5qOA5rWL5YiwSFRNTDXop4bpopHvvIEiKTtjb25zb2xlLmxvZyghX3RoaXMubG9hZCk7X3RoaXMubG9hZD1mYWxzZTtfdGhpcy5maWx0ZXIucmVzZXQoKTtfdGhpcy5zZXR0aXBzKCk7X3RoaXMuaXNGb3VjcygpO2RvY3VtZW50Lm9ua2V5ZG93bj1fdGhpcy5idXR0b259LDEwMDApfX19LGxvYWQ6ZmFsc2V9O2h0bWxfcGxheWVyX2VuaGFuY2UuaW5pdCgpO2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoIkRPTU5vZGVJbnNlcnRlZCIsZnVuY3Rpb24oKXtodG1sX3BsYXllcl9lbmhhbmNlLmluaXQoKX0pfSkoKTs=&gt;&amp;#x3C;/script&gt;&quot;;
        oSession.utilDecodeResponse();
        oSession.utilReplaceOnceInResponse(&apos;&amp;#x3C;/head&gt;&apos;, sToInsert + &apos;&amp;#x3C;/head&gt;&apos;, 0);
    }
    if (m_AutoLearn &amp;#x26;&amp;#x26; !oSession.GetRequestBodyAsString().Contains(&quot;\&quot;courseTime\&quot;:9990,\&quot;learnTime\&quot;:60,\&quot;type\&quot;:2&quot;)
        &amp;#x26;&amp;#x26; oSession.hostname == &quot;saas.daxue.dingtalk.com&quot; &amp;#x26;&amp;#x26; oSession.PathAndQuery == &quot;/dingtalk/course/record.jhtml&quot;){
        var raw = &quot;&quot;;
        var method:String = oSession.RequestMethod;
        var url:String = oSession.fullUrl;
        var protocol = &quot;HTTP/1.1&quot;;
        raw += method + &quot; &quot; + url + &quot; &quot; + protocol + &quot;\r\n&quot;;
        var body = oSession.GetRequestBodyAsString();
        for (var i:int = 0; i &amp;#x3C; oSession.oRequest.headers.Count(); i++) {
            var header = oSession.oRequest.headers[i];
            header = header.ToString()
            if(header.Contains(&quot;Content-Length&quot;)){
                header = &quot;Content-Length: &quot;+(body.Length+4).ToString()
            }
            raw += header + &quot;\r\n&quot;;
        }
        body = body.replace(/&quot;courseTime&quot;:\d+,&quot;learnTime&quot;:\d+,&quot;type&quot;:\d/g,&quot;\&quot;courseTime\&quot;:9990,\&quot;learnTime\&quot;:60,\&quot;type\&quot;:2&quot;);
        raw += &quot;\r\n&quot; + body;
        for (var j:int = 0; j &amp;#x3C; 10; j++) {
            FiddlerObject.utilIssueRequest(raw);
            FiddlerApplication.Log.LogString(&quot;Request has been Send.&quot;);
            System.Threading.Thread.Sleep(1000);
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;看视频&lt;/h4&gt;
&lt;p&gt;看视频的时候，每次刷新页面（包括第一次进入视频页面时的加载）程序会花 10 s 时间给视频增加 10 min 的学习进度。保险起见，请不要频繁刷新。&lt;/p&gt;
&lt;p&gt;Log 选项卡中，每出现一条&lt;code&gt;Resquest has been Send.&lt;/code&gt;说明学习进度增加了 1 min。快速出现大量&lt;code&gt;Resquest has been Send.&lt;/code&gt;时，可能是刷新过于频繁或程序错误，请立刻关闭 Fiddler。如果 Fiddler 未响应，可能是陷入死循环，立刻在任务管理器里结束进程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvq1jr7cj311y0k7gns.BXcs1eWF.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;在 Rules 中可以启用或关闭 &lt;code&gt;视频增强插件&lt;/code&gt; 和 &lt;code&gt;自动学习&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvqev3o5j30kj0js75k.WPv36bP7.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h4&gt;快捷键说明&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvrdyq2aj311y0k8dj5.CSqaUTVi.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h5&gt;播放速度调节&lt;/h5&gt;
&lt;p&gt;按键 C：加速播放 +0.1&lt;br&gt;
按键 X：减速播放 -0.1&lt;br&gt;
按键 Z：正常速度播放&lt;/p&gt;
&lt;h4&gt;播放时间定位&lt;/h4&gt;
&lt;p&gt;方向键右 →：快进 3 秒&lt;br&gt;
方向键左 ←：后退 3 秒&lt;br&gt;
按键 F：下一帧&lt;br&gt;
按键 D：上一帧&lt;/p&gt;
&lt;h4&gt;音量调节&lt;/h4&gt;
&lt;p&gt;方向键上 ↑：音量升高 1%&lt;br&gt;
方向键下 ↓：音量降低 1%&lt;/p&gt;
&lt;h5&gt;图像参数调节&lt;/h5&gt;
&lt;p&gt;按键 E：亮度增加%&lt;br&gt;
按键 W：亮度减少%&lt;br&gt;
按键 T：对比度增加%&lt;br&gt;
按键 R：对比度减少%&lt;br&gt;
按键 U：饱和度增加%&lt;br&gt;
按键 Y：饱和度减少%&lt;br&gt;
按键 O：色相增加 1 度&lt;br&gt;
按键 I：色相减少 1 度&lt;br&gt;
按键 K：模糊增加 1 px&lt;br&gt;
按键 J：模糊减少 1 px&lt;br&gt;
按键 Q：图像复位&lt;/p&gt;
&lt;h5&gt;画面调节&lt;/h5&gt;
&lt;p&gt;按键 S：画面旋转 90 度&lt;br&gt;
按键回车：进入全屏（只支持部分网站 B 站，油管）&lt;/p&gt;
&lt;h5&gt;兼容性问题&lt;/h5&gt;
&lt;p&gt;可以使用组合键临时停用插件，例如 播放/暂停 默认为空格键，那么使用 Ctrl+space(空格键)即可暂停使用一次插件。&lt;/p&gt;
&lt;h2&gt;备用方案&lt;/h2&gt;
&lt;p&gt;与上一个类似。从粘贴代码的一步发生了变化。下面就从那一步开始好了。&lt;/p&gt;
&lt;h3&gt;中间人注入&lt;/h3&gt;
&lt;p&gt;复制下面的代码，并粘贴到下图中的位置，然后按下 &lt;code&gt;Ctrl+S&lt;/code&gt; 来保存。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;var sToInsert =
  &quot;&amp;#x3C;script src=&apos;https://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/vconsole/3.0.0/vconsole.min.js&apos;&gt;&amp;#x3C;/script&gt;&amp;#x3C;script&gt;var vConsole = new VConsole();&amp;#x3C;/script&gt;&quot;
oSession.utilDecodeResponse()
oSession.utilReplaceOnceInResponse(&apos;&amp;#x3C;/head&gt;&apos;, sToInsert + &apos;&amp;#x3C;/head&gt;&apos;, 0)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvyxkvitj30vu091jrp.D3sNY4E_.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvz89e42j30uv05p3yv.DjLyveNG.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;直接在钉钉内倍速播放&lt;/h3&gt;
&lt;p&gt;打开钉钉的云课堂，点开一个视频，可以看到右下角多了一个绿色按钮。点击它。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fvzunz4tj30xf0pddmo.Dvs4ILLl.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw03m4v3j30xf0pdjsn.B1oM09qi.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击之后，弹出了一个菜单。&lt;/p&gt;
&lt;p&gt;将下面的代码粘贴进下图中标明的位置并点击右侧的 “OK” 按钮。&lt;/p&gt;
&lt;p&gt;在点击右下角绿色按钮弹出的控制台按照上一步的方法输入以下代码：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;document.querySelector(&apos;video&apos;).playbackRate = 2.0
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;点击 OK。可以将钉钉内的视频变为二倍速。代码中的 2.0 可以换成其他的数字。&lt;/p&gt;
&lt;h3&gt;获取视频地址和下载视频&lt;/h3&gt;
&lt;p&gt;还是右下角的绿色按钮弹出的菜单，输入下面的代码&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-javascript&quot;&gt;console.log(document.querySelector(&apos;video&apos;).src)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;点击 OK 后，上面的列表出现了一个地址，这个地址就是该云课堂视频的源文件地址。复制这个地址，在浏览器打开即可下载该视频。或者，也可以用 Potplayer 直接打开该地址来倍速播放。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw1tw7bkj30xf0pd75h.Db6TdWUS.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h3&gt;附：使用 Potplayer 倍速观看视频&lt;/h3&gt;
&lt;p&gt;推荐使用 Potplayer 来倍速观看视频。Potplayer 是一款很好用的播放器。&lt;/p&gt;
&lt;p&gt;下载并安装 Potplayer 后，在 Potplayer 的左上角点击如图的菜单，或者直接按下 &lt;code&gt;Ctrl+U&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw2iyuawj30cf04cwef.-rh-RixS.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;在弹出的窗口中粘贴刚才的复制的那个视频链接，点击确定。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw2t03cgj30dd05umx7.fLdz_SJN.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;可以看到，视频已经开始播放。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw36gu36j30qu0hyaaq.CIP0F97n.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;按下 &lt;code&gt;C&lt;/code&gt; 键来加速，按下 &lt;code&gt;X&lt;/code&gt; 键来减速，按下 &lt;code&gt;Z&lt;/code&gt; 键来恢复原速。&lt;/p&gt;
&lt;p&gt;按下按键后在视频左上角可以看到当前的倍速速率。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fw3zf24dj303s0100sm.Dz6zIC8e.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;尾声&lt;/h2&gt;
&lt;p&gt;这里已经推荐了很多钟方法，相信总有一种方法适合你。希望能好好利用工具，做些有利于学习的事，而不是仅仅用来刷分数ヾ(≧▽≦*)o&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>那些好用的前端 CDN 推荐</title><link>https://cworld0.com/blog/free-cdn</link><guid isPermaLink="true">https://cworld0.com/blog/free-cdn</guid><description>最近总感觉自己的网站速度不行，又不想重新搭建（Hexo 的宗旨就是打造响应速度超快的轻量级博客嘛），所以这篇文章也就由此应运而生了。</description><pubDate>Sun, 01 Mar 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;一个功能丰富的博客总是要引用一些优秀的项目代码。因此为了加快响应速度，不妨从 CDN 入手。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Ps. 以下内容的 Ping 均选取平均值，且仅供参考。本文默认以 Ping 延迟排名，各地区和不同运营商网速各有差异，请在使用前自行测试考鉴。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;JSDelivr CDN&lt;/h2&gt;
&lt;p&gt;主要支持 npm ，Github 和 WordPress 的加速。也就是说，你可以把任意你自己的代码存放在 Github 上并用它来加速。重要的是，作为一家国外的 CDN 服务平台，在中国 QUANTIL 公司的赞助下，在大陆也能享受延迟极低的快速。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;http://www.jsdelivr.com/&quot;&gt;JSDelivr&lt;/a&gt;&lt;br&gt;
赞助：Cloudflare，Fastly，StackPath，QUANTIL 和其他服务商&lt;br&gt;
Ping：11ms&lt;br&gt;
推荐：★★★★★&lt;/p&gt;
&lt;h2&gt;Bootstrap 中文网开源项目 CDN 服务&lt;/h2&gt;
&lt;p&gt;致力于为 Bootstrap、jQuery、Angular 一样优秀的开源项目提供稳定、快速的免费 CDN 服务。BootCDN 所收录的开源项目主要同步于 cdnjs 仓库。自 2013 年 10 月 31 日上线以来已经为近万家网站提供了稳定、可靠的 CDN 服务。&lt;br&gt;
根据官网来看，已经支持了 3450+ 开源项目，确实是非常全的。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;http://www.bootcdn.cn/&quot;&gt;BootCDN&lt;/a&gt;&lt;br&gt;
赞助：猫云&lt;br&gt;
Ping：11ms&lt;br&gt;
推荐：★★★★★&lt;/p&gt;
&lt;h2&gt;七牛云静态文件 CDN 服务&lt;/h2&gt;
&lt;p&gt;七牛云的目标是提供这样一个仓库，让它尽可能全面收录优秀的开源库，并免费为之提供 CDN 加速服务，使之有更好的访问速度和稳定的环境。同时，我们也提供开源库源接入的入口，让所有人都可以提交开源库，包括 JS、CSS、image 和 swf 等静态文件。&lt;br&gt;
Ps.点击搜索，才能发现那些隐藏的项目。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://www.staticfile.org/&quot;&gt;七牛云&lt;/a&gt;&lt;br&gt;
赞助：掘金社区&lt;br&gt;
Ping：15ms&lt;br&gt;
推荐：★★★★★&lt;/p&gt;
&lt;h2&gt;字节跳动静态资源公共库&lt;/h2&gt;
&lt;p&gt;字节跳动也是一家非常具有生命力的公司，旗下的抖音和今日头条等产品也可以说是家喻户晓。更有趣的是，CDN 支持项目还非常广泛，可以与 CDNJS 对齐。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;http://cdn.bytedance.com/&quot;&gt;字节跳动&lt;/a&gt;&lt;br&gt;
赞助：无&lt;br&gt;
Ping：25ms&lt;br&gt;
推荐：★★★★★&lt;/p&gt;
&lt;h2&gt;又拍云 JS 库加速服务&lt;/h2&gt;
&lt;p&gt;托管常用的 JavaScript 库。又一个不怎么更新速度却非常快的 CDN 。&lt;br&gt;
Ps.现在只提供 JQUERY、MOOTOOLS、MODERNIZR、DOJO、EMBER.JS 五种了。另，官网没加小绿锁 🔒。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;http://jscdn.upai.com/&quot;&gt;常用 JavaScript 库 CDN 服务&lt;/a&gt;&lt;br&gt;
赞助：SegmentFault&lt;br&gt;
Ping：21ms&lt;br&gt;
推荐：★★★⚝⚝&lt;/p&gt;
&lt;h2&gt;腾讯微信前端通用库 CDN&lt;/h2&gt;
&lt;p&gt;太少了点…说实话不知道这样的站点还留着干嘛。&lt;br&gt;
还有，有点时间没更新了。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://qydev.weixin.qq.com/cdn/cdnjs.html&quot;&gt;前端库 CDN 服务&lt;/a&gt;&lt;br&gt;
赞助：MIG CDN&lt;br&gt;
Ping：34ms&lt;br&gt;
推荐：★⚝⚝⚝⚝&lt;/p&gt;
&lt;h2&gt;75CDN（360 前端静态资源库）&lt;/h2&gt;
&lt;p&gt;来自一个叫做 &lt;a href=&quot;https://www.baomitu.com/&quot;&gt;爆米兔&lt;/a&gt; H5 服务。虽然没有明称是 360 团队的，不过这个 CDN 服务却似乎又暴露了什么。这个 CDN 服务又是叫做 &lt;a href=&quot;https://github.com/75team/&quot;&gt;奇舞团&lt;/a&gt; 的团队负责，而这个团队却是在为 360 做事，以至于 CDN 官网已直接用 “360 前端静态资源库” 暴露了身份。&lt;br&gt;
之前有报道过 360 CDN 已停止支持，不过现在来看支持的还是非常多的。这里更想推荐的是，75CDN 支持 Google 字体库的加速，而且效果非常不错。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://cdn.baomitu.com/&quot;&gt;75CDN&lt;/a&gt;&lt;br&gt;
赞助：360&lt;br&gt;
Ping：36ms&lt;br&gt;
推荐：★★★★★&lt;/p&gt;
&lt;h2&gt;腾讯网静态资源公共库&lt;/h2&gt;
&lt;p&gt;还是太少了点…一样，有点时间没更新了。&lt;br&gt;
Ps.手动改网址，似乎还能获取到最新版的，但 Vue 都没有，也算是半残废吧。另，官网没加小绿锁 🔒。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://libs.qq.com/&quot;&gt;前端库 CDN 服务&lt;/a&gt;&lt;br&gt;
赞助：MIG CDN&lt;br&gt;
Ping：37ms&lt;br&gt;
推荐：★★⚝⚝⚝&lt;/p&gt;
&lt;h2&gt;新浪云计算 CDN 公共库&lt;/h2&gt;
&lt;p&gt;新浪云计算是新浪研发中心下属的部门，主要负责新浪在云计算领域的战略规划，技术研发和平台运营工作。主要产品包括 应用云平台 Sina App Engine（简称 SAE）。&lt;/p&gt;
&lt;p&gt;SAE 的 CDN 节点覆盖全国各大城市的多路（电信、联通、移动、教育）骨干网络，使开发者能够方便的使用高质量的 CDN 服务。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;http://lib.sinaapp.com/&quot;&gt;SAE&lt;/a&gt;&lt;br&gt;
赞助：无&lt;br&gt;
Ping：48ms&lt;br&gt;
推荐：★★⚝⚝⚝&lt;/p&gt;
&lt;h2&gt;中科大 Google Fonts 加速服务&lt;/h2&gt;
&lt;p&gt;针对 Google Fonts 很不错。
Ps.现在 Google Fonts 在国内有服务器了，而且可以直接访问。&lt;br&gt;
但 Google 能用的只有 &lt;code&gt;fonts.googleapis.com&lt;/code&gt;、&lt;code&gt;fonts.gstatic.com&lt;/code&gt; 这两个域名。而 &lt;code&gt;ajax.googleapis.com&lt;/code&gt; 和 &lt;code&gt;themes.googleusercontent.com&lt;/code&gt; 暂时还是没法直接访问，所以还是得依赖中科大。&lt;/p&gt;
&lt;p&gt;地址：https://lug.ustc.edu.cn/wiki/lug/services/googlefonts
赞助：无&lt;br&gt;
Ping：74ms&lt;br&gt;
推荐：★★★★⚝&lt;/p&gt;
&lt;h2&gt;公益项目 loli.net&lt;/h2&gt;
&lt;p&gt;网站提供常用前端公共库 CDN 服务。
这里很多东西都有，Google Fonts、Google 公共库、Gravatar 和 前端库！
唯一麻烦的是，不但取名为英文，而且还没有一个人性化的界面，所以你可能需要善用浏览器的搜索功能了。速度其实还是挺不错的。&lt;br&gt;
Ps.改名为…萝莉？？？库？&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://cdnjs.loli.net/&quot;&gt;loli.net&lt;/a&gt;&lt;br&gt;
赞助：公益&lt;br&gt;
Ping：84ms&lt;br&gt;
推荐：★★★★⚝&lt;/p&gt;
&lt;h2&gt;微软 Ajax CDN 服务&lt;/h2&gt;
&lt;p&gt;估计也用不上，没什么有用的东西。好在速度还可以，应该比较稳定。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://docs.microsoft.com/zh-cn/aspnet/ajax/cdn/overview&quot;&gt;AspnetCDN&lt;/a&gt;&lt;br&gt;
赞助：无&lt;br&gt;
Ping：92ms&lt;br&gt;
推荐：★★★⚝⚝&lt;/p&gt;
&lt;h2&gt;CDNJS.COM&lt;/h2&gt;
&lt;p&gt;CDNJS 提供非常完整的 JavaScript 库，无论是热门或是冷门的一应俱全。若你觉得它们缺少哪些好用的函式库，也可以自行提交到网站里，通过审核后就 CDNJS 就会为你分流 js 文件！这项服务是结合 CloudFlare、Pingdom 与 S3Stat 的，稳定性与速度自然不在话下。&lt;br&gt;
CDNJS 提供的 JavaScript Libraries 全部列在网站首页，使用者可以直接搜索。这些 JS 库都有标示版本编号、标签以及原维护网站链结。&lt;br&gt;
然而根据测试，看了下是 CF 提供的，所以大陆就速度也就一般般了。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://cdnjs.com/&quot;&gt;CDNJS.COM&lt;/a&gt;&lt;br&gt;
赞助：Cloudflare&lt;br&gt;
Ping：288ms&lt;br&gt;
推荐：★★★⚝⚝&lt;/p&gt;
&lt;h2&gt;UNPKG&lt;/h2&gt;
&lt;p&gt;这个网站估计玩过 npm 的都知道。只是不知道用来作 CDN 能否可行。国外的玩意速度都这样子。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://unpkg.com/&quot;&gt;UNPKG&lt;/a&gt;&lt;br&gt;
赞助：CloudFlare&lt;br&gt;
Ping：283ms&lt;br&gt;
推荐：★★⚝⚝⚝&lt;/p&gt;
&lt;h2&gt;CDNJS.NET&lt;/h2&gt;
&lt;p&gt;还是很全的，感觉跟 CDNJS.COM 有什么莫名的关系，网上都说这是个盗版。但不管怎么说是速度却败下阵来，而且有一些虽还算和谐的广告。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://cdnjs.net/&quot;&gt;CDNJS.NET&lt;/a&gt;&lt;br&gt;
赞助：无&lt;br&gt;
Ping：302ms&lt;br&gt;
推荐：★★⚝⚝⚝&lt;/p&gt;
&lt;h2&gt;Google Hosted Libraries&lt;/h2&gt;
&lt;p&gt;来自谷歌的托管库，大天朝看看就行。没法用，除非你的服务器是在非天朝（港澳台还是可以的）。
Ps.前文有大陆使用方法。&lt;/p&gt;
&lt;p&gt;地址：&lt;a href=&quot;https://developers.google.com/speed/libraries&quot;&gt;Google Hosted Libraries&lt;/a&gt;&lt;br&gt;
赞助：无&lt;br&gt;
Ping：+∞
推荐：★⚝⚝⚝⚝&lt;/p&gt;</content:encoded><h:img src="/_astro/thumbnail.H6HwTjSx.png"/><enclosure url="/_astro/thumbnail.H6HwTjSx.png"/></item><item><title>利用腾讯云无服务器云函数搭建 OneDrive 网盘</title><link>https://cworld0.com/blog/onedrive-scf</link><guid isPermaLink="true">https://cworld0.com/blog/onedrive-scf</guid><description>用腾讯云的无服务器云函数配合 API 网关实现，无需自己的服务器</description><pubDate>Thu, 13 Feb 2020 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;零成本搭建，实测运行机器的配置，8 核 16G 内存（可以运行 System 命令链接 Shell 看），因此此方法搭建自己的大型网站完全够用。&lt;/p&gt;
&lt;p&gt;腾讯云无服务器云函数（Serverless Cloud Function，SCF）是腾讯云为企业和开发者们提供的无服务器执行环境，帮助您在无需购买和管理服务器的情况下运行代码。您只需使用平台支持的语言编写核心代码并设置代码运行的条件，即可在腾讯云基础设施上弹性、安全地运行代码。SCF 是实时文件处理和数据处理等场景下理想的计算平台。&lt;/p&gt;
&lt;h2&gt;准备&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;OneDrive SCF 源码&lt;/p&gt;
&lt;p&gt;这里给出仓库地址：&lt;/p&gt;
&lt;p&gt;最初版本 &lt;a href=&quot;https://github.com/Tai7sy/OneDrive_SCF&quot;&gt;OneDrive_SCF&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;第二版本 &lt;a href=&quot;https://github.com/qkqpttgf/OneDrive_SCF&quot;&gt;OneDrive_SCF&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;三合一版本 &lt;a href=&quot;https://github.com/qkqpttgf/OneManager-php&quot;&gt;OneManager-php&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个 OneDrive 账号&lt;/p&gt;
&lt;p&gt;如果你想拥有一个不限量空间，可以尝试在网上找子账号，或者自己申请 &lt;a href=&quot;https://baijiahao.baidu.com/s?id=1655579024801979058&quot;&gt;Office 365 E5 管理&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;一个腾讯云账号&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;提要&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;腾讯云的 API 网关还可以关联上自己的域名，从而脱离本身的随机域名。&lt;/li&gt;
&lt;li&gt;如果你是 Office 365 E5 管理员并准备 90 天续期，或许这个可以帮助你长期保持活跃状态。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;注意事项&lt;/h2&gt;
&lt;p&gt;API 网关从 2019 年 12 月 4 日开始收费。请注意不要超过额度，这意味着最好不要将网站随意告诉他人，以免恶意刷流量。当然腾讯云的免费额度对于个人来说完全够用，超出后收费也非常亲民。所以最好是在腾讯云上充值一块钱，以免意外超额。&lt;/p&gt;
&lt;p&gt;仅调用云函数会收费，因此查看文件的文件本身和下载仅消耗微软的免费服务，因此不会有任何费用产生。&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.tencent.com/document/product/583/12282&quot;&gt;腾讯云免费额度&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.tencent.com/document/product/583/12284&quot;&gt;GBs 单位与费用计算&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://cloud.tencent.com/document/product/583/12281&quot;&gt;超出免费额度收费标准&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果上述内容有些生涩难懂，可以配合 &lt;a href=&quot;https://cloud.tencent.com/document/product/583/12285&quot;&gt;腾讯云函数计费示例&lt;/a&gt; 一同查看。&lt;/p&gt;
&lt;h2&gt;搭建教程&lt;/h2&gt;
&lt;p&gt;开发者也很贴心地制作了视频。&lt;a href=&quot;https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/%E6%97%A0%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%87%BD%E6%95%B0SCF%E6%90%AD%E5%BB%BAOneDrive.mp4?preview&quot;&gt;点击查看&lt;/a&gt; 可以与此教程互相对照。&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;打开进入腾讯云 SCF。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbuiu6ay46j30i2081q37.8OMJSgEG.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;腾讯云 SCF&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;函数服务-新建函数-空白函数&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;后面如果想绑定自定义域名，只能绑定备案域名，所以刚开始新建函数的时候，我们最好选择香港地区，即从下图中的广州改为香港。
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbuivuzqnqj30hl0a6t8v.DWz-af_z.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;新建函数&quot;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;模板选择空白。填写函数名称，注意以后会以这个名称将作网址且难以更改。运行环境选 PHP7.2。
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbukixrkfdj30g70cgdfx.CsK3vv_6.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;模板选择&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;函数配置&lt;/p&gt;
&lt;p&gt;可以修改一下描述，提交方式选择本地上传。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;下载函数源码并上传&lt;/p&gt;
&lt;p&gt;下载源码：&lt;a href=&quot;https://sword.studio/go/aHR0cHM6Ly9naXRodWIuY29tL1RhaTdzeS9PbmVEcml2ZV9TQ0YvYXJjaGl2ZS9tYXN0ZXIuemlw&quot;&gt;点击下载&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbukrik5xxj30i80d4dhn.DeQg2ucY.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;选择&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;博主在上传的时候因为是手机操作，所以先使用了压缩包的形式，结果提示错误。所以这里可能只能选择文件夹上传。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;添加触发方式&lt;/p&gt;
&lt;p&gt;修改触发方式，开启集成响应。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbukx28f6fj30uz0l5n1l.CUuUAd66.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;2020-2-13 10-46-33&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;进入网站，添加 API 密钥&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbul0sz311j30sc0cxq5b.BxkUsmlP.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;2020-2-13 10-49-26&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择中文，开始新建&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbul29qzlgj30jo0ci0ty.CYRQ-3Im.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;2020-2-13 10-49-39&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://cworld0.com/_vercel/image?url=_astro%2Fbul5zj6c3j313t0oagp4.mj0X0YPo.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;2020-2-13 10-55-18&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbul8tl7f4j30om0he405.CN1hUHU5.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;2020-2-13 10-56-53&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;完成配置&lt;/p&gt;
&lt;p&gt;回到之前自己建的网站，如果没有错就可以继续下一步。选择 MS 默认。&lt;/p&gt;
&lt;p&gt;接下来会自动跳转到 OneDrive ，选择登录并继续，即可看到配置成功的界面。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbuli0z99vj31410o7790.B0-2yBC9.jpg&amp;#x26;w=1200&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-6-41&quot;&gt;&lt;/p&gt;
&lt;p&gt;回到函数配置，点击右上角的编辑，环境变量中继续添加：key 为 admin ，value 为你要设置的密码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbuliziisyj30lb0cc0tn.UIobluVu.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-7-54&quot;&gt;&lt;/p&gt;
&lt;p&gt;回到网址，刷新后左上角就可以登录进入后台了。点击更新并在下方进行相应配置。这样就基本完工了！&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;定义域名&lt;/h2&gt;
&lt;p&gt;回到 API 网关，选择自定义域名，新建&lt;/p&gt;
&lt;p&gt;为了得到最简链接，自定义路径设为 &lt;code&gt;/&lt;/code&gt; &lt;code&gt;发布&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbums87xr6j30q30hkjrv.BQ6EHl0L.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-51-2&quot;&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;如果需要 https，点击“点此前往”，然后点击申请免费证书。注意证书和域名自定义都需要添加解析。
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbun91d7xwj31an03kjre.Dt7axAqN.jpg&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;2020-2-13 12-7-30&quot;&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;添加蓝色提示框内的网站为 CNAME 解析。&lt;/p&gt;
&lt;p&gt;访问链接即更换为：https://&lt;code&gt;你自己设置的域名&lt;/code&gt;/&lt;code&gt;函数名&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;进阶域名&lt;/h2&gt;
&lt;p&gt;最近腾讯改进出了更完美的方案，可以将上述的“/&lt;code&gt;函数名&lt;/code&gt;”也去掉了。&lt;/p&gt;
&lt;p&gt;作者发的视频链接：&lt;a href=&quot;https://service-pgxgvop2-1258064400.ap-hongkong.apigateway.myqcloud.com/test/abcdef/%E4%BD%BF%E7%94%A8%E8%87%AA%E5%AE%9A%E4%B9%89%E5%9F%9F%E5%90%8D%E5%8F%8A%E5%85%B6%E5%AE%83%E8%AE%BE%E7%BD%AE.mp4?preview&quot;&gt;使用自定义域名及其它设置&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;找到下图，点击服务名链接。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fc2pstaum5j30al07qgll.DW4WXkvE.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;选择管理 API，点击右侧的编辑。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fc2q19mjq8j318c09udgh.DepnZWRF.jpg&amp;#x26;w=1920&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;将路径改为“/”，点击下一步直到完成即可。然后根据提示点击发布。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fc2raxninpj30dz0adaal.DQMabxok.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fc2rdybj76j30l40d10sr.Dji5iWve.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;（看起来很像 git 代码托管平台的步骤）&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fc2resp4goj30hx0claab.6lZOrJRL.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;p&gt;这时访问链接也终于更换为：https://&lt;code&gt;你自己设置的域名&lt;/code&gt;&lt;/p&gt;
&lt;h2&gt;进阶美化&lt;/h2&gt;
&lt;p&gt;截图：&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbum1csl5aj30or0gzgna.BGEHzP-5.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-23-49&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbum1w8ap7j30g50afaad.j_VPPSCc.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-24-34&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbum28xu35j30ok0ddabj.CI3Lelsh.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-25-11&quot;&gt;&lt;/p&gt;
&lt;p&gt;以下美化仅适用于 classic 主题。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;日志&lt;/strong&gt;
设置界面失效。还未修复。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;腾讯云的函数界面中找到函数代码，下方窗口中选择 theme 文件夹的 classic.php 。找到&lt;code&gt;&amp;#x3C;/head&gt;&lt;/code&gt;前的&lt;code&gt;&amp;#x3C;/style&gt;&lt;/code&gt;，在这行前面追加以下代码。然后点击保存即可。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fbulr9zy8uj30ei0c0aan.D4Z37Jcm.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;2020-2-13 11-15-49&quot;&gt;&lt;/p&gt;
&lt;p&gt;代码：&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;body{background:#DBDBDB !important;color:#000;font-family:Google Sans !important;}font{margin:39.5%;color:#989898;text-align:center;}a.login,body&gt;div&gt;li.operate{transition:.3s;…input#upload_submit{transition:.3s;border:none;border-radius:4px;background:#0000000d;padding:8px 11px;outline:none !important;}input#upload_submit:hover{background:#0088ff2e;color:#08f;}form[method=&quot;post&quot;] table{background:#ffffffb5;border-radius:4px;border:none;padding:10px;border-spacing:10px;margin-bottom:10px;}form[method=&quot;post&quot;] td{border:none;}form[method=&quot;post&quot;] input,form[method=&quot;post&quot;] select{transition:.3s;border:none;border-radius:4px;background:#0000000d;padding:8px 11px;outline:none !important;}form[method=&quot;post&quot;] input[value=&quot;设置&quot;]{background:#0088ff2e;color:#08f;}
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="/_astro/thumbnail.Bm32eMuA.jpg"/><enclosure url="/_astro/thumbnail.Bm32eMuA.jpg"/></item><item><title>iChrome CSS 美化</title><link>https://cworld0.com/blog/ichrome-css</link><guid isPermaLink="true">https://cworld0.com/blog/ichrome-css</guid><description>一个 Chrome 插件 iChrome，功能齐全，但是有广告，所以以下代码就是来美化插件并去除“牛皮藓”。</description><pubDate>Wed, 24 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fichrome.C3jMgwmp.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;iChrome&quot;&gt;&lt;/p&gt;
&lt;h2&gt;使用方法&lt;/h2&gt;
&lt;p&gt;在插件 iChrome 的设置中找到自定义 CSS 片段框，填入下面的内容，已经过浓缩处理。&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-css&quot;&gt;.tab-container .tab &gt; .ad-unit.bottom {
  display: none !important;
}
.store-detail .preview .widget,
.widgets-container .widget {
  background: #fffc;
  backdrop-filter: blur(20px);
}
.store-detail .preview .widget .wtooltip,
.widgets-container .widget .wtooltip {
  display: none !important;
}
header.toolbar.floating .search input {
  background: #fffc;
  backdrop-filter: blur(20px);
  box-shadow: 0 2px 10px 0 #0000005e;
}
.store-detail .preview .widget .wdelete,
.widgets-container .widget .wdelete {
  color: black;
}
.feedback-link .icon {
  display: none !important;
}
.bg-info {
  right: 10px;
  color: #fffc;
}
.add-widget-link {
  color: #fffc;
  position: absolute;
}
.menu-toggle .menu-button:hover {
  background-color: #fff;
}
.menu-toggle .menu-button:before {
  color: black;
}
.menu-toggle .menu-button {
  background-color: #fffc;
}
.add-widget-link .icon {
  text-shadow: 0 0 0 #fff0;
}
button.material.fab {
  background-color: #fffc;
}
.menu-container {
  background: #fffc;
  backdrop-filter: blur(20px);
  box-shadow: 0 0 0 0 #fff0;
}
.app.settings .page header {
  background: #4080fe;
}
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Pure 百度 - 质形色，始方圆</title><link>https://cworld0.com/blog/pure-baidu</link><guid isPermaLink="true">https://cworld0.com/blog/pure-baidu</guid><description>Pure 百度 - 质形色，始方圆。</description><pubDate>Fri, 12 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;介绍&lt;/h2&gt;
&lt;h3&gt;宣传图&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F1.Bqc1mQVV.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;1&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F2.BxkNSiqK.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;2&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F3.D7m7JHIi.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;3&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F4.CJ6rNm74.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;4&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2F5.Dq4KeCjZ.jpg&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;5&quot;&gt;&lt;/p&gt;
&lt;h3&gt;酷安链接&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.coolapk.com/u/1384771&quot;&gt;CWorld&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;写作说明&lt;/h3&gt;
&lt;p&gt;好不好用自己用了才知道，6,266 行，183,413 字符，凝聚了多少个日夜的缠绵。
它涵盖了大量百度的网页，从登录框到按钮，从扁平到质感，升华了多少设计师前沿的灵感。
做出一款不管是强迫症，还是设计师，都能佩服舒心的主题，真的太难。
我曾多次尝试扁平与质感的平衡，大量留白的舒心，用色彩块代替繁琐和带强烈割据感的线条...
在一个被大众所摒弃的拟物化、随处可见的背景直接引用图片来简单模拟质感、改了大框架却连简单的链接、输入框、按钮都没有一丝一毫的修改、到现在都很少用上字体图标、单调到甚至没有任何动画、甚至推广满屏幕的陈旧的百度网页，搭建起一个全新的设计风格，这才是百度所应有的样子，独具一格，简约而现代...
我使用了一些质感但不守旧的配色，轻简的质感阴影和鲜明的色块...
百度的每一款产品都在属于它们本身的独特设计风格上，反复优化统一。&lt;/p&gt;
&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;h2&gt;链接&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://userstyles.org/styles/173673/pure&quot;&gt;&lt;code&gt;电脑版&lt;/code&gt;&lt;/a&gt; &lt;a href=&quot;https://userstyles.org/styles/178663&quot;&gt;&lt;code&gt;手机版&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;使用方法&lt;/h2&gt;
&lt;h3&gt;支持软件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;支持电脑浏览器：&lt;/p&gt;
&lt;p&gt;支持插件的浏览器几乎都能支持&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;支持手机浏览器：&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.coolapk.com/apk/org.mozilla.firefox&quot;&gt;&lt;code&gt;Firefox&lt;/code&gt;&lt;/a&gt;、&lt;a href=&quot;https://www.coolapk.com/apk/com.kiwibrowser.browser&quot;&gt;&lt;code&gt;Kiwi Browser&lt;/code&gt;&lt;/a&gt;、&lt;a href=&quot;https://www.coolapk.com/apk/mark.via&quot;&gt;&lt;code&gt;Via&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;由于 Via 还没有研究好，添加后不生效，所以暂时不介绍这种，如果有会折腾的可以告诉我&lt;/p&gt;
&lt;h3&gt;支持插件&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;UserScript：油猴脚本 TamperMonkey，ODM Sandbox 等&lt;/li&gt;
&lt;li&gt;CSS：Stylish，Stylus 等&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;步骤&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;下载上述插件任意一个，建议 Stylish（方便日后更新）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fdi3ir3hbj30qh06awfg.DKy31cN8.jpg&amp;#x26;w=828&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;点击上述 Pure 百度的网址。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fdi4eg10wj30c2012a9u.CD8jRfGj.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;如果你用的 CSS 类，直接点击蓝色的“Install Style”，即可生效（如果没有看到，说明可能你的第一步没有完成）。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fdi21c2t7j30ld0f80wy.Dly6Ubiq.jpg&amp;#x26;w=750&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;
如果你用的 UserScript 类，网页下翻后点击蓝色小字“Install style as userscript”即可（这种方法甚至可以在不进行第一步的操作下进行）。
&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fdm9ki2afj30bq0elglu.6yg8ype_.jpg&amp;#x26;w=640&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;新增&lt;/h2&gt;
&lt;h3&gt;自定义选项&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://cworld0.com/_vercel/image?url=_astro%2Fh79y767sg30qs0msqd9.zTuzf7cT.gif&amp;#x26;w=1080&amp;#x26;q=100&quot; alt=&quot;image&quot;&gt;&lt;/p&gt;
&lt;h2&gt;推荐&lt;/h2&gt;
&lt;p&gt;感谢一下推荐 Pure 百度的网友们：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.bilibili.com/video/av81381716/&quot;&gt;你从未见过的全新百度！PURE 纯净百度安装教程&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者：&lt;a href=&quot;https://space.bilibili.com/274565604&quot;&gt;彬彬有礼的有礼&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;日期：2019-12-31&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;collapse &lt;a href=&quot;https://www.yijingying.com/592.html&quot;&gt;这样搞百度！我是舒服了,你们随意 Pure 百度主题美化&lt;/a&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;作者：&lt;a href=&quot;https://www.yijingying.com/592&quot;&gt;Healer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;日期：2020-01-05&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;</content:encoded><h:img src="/_astro/thumbnail.CHnQIU5n.jpg"/><enclosure url="/_astro/thumbnail.CHnQIU5n.jpg"/></item><item><title>免费 API 汇总</title><link>https://cworld0.com/blog/free-api</link><guid isPermaLink="true">https://cworld0.com/blog/free-api</guid><description>免费 API 汇总，包括企业、网友、海外等。</description><pubDate>Wed, 10 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;企业&lt;/h2&gt;
&lt;h3&gt;汇总&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://blog.csdn.net/MISTLETOE_WW/article/details/84192185&quot;&gt;csdn&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://segmentfault.com/a/1190000017047048&quot;&gt;segmentfault&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;项目&lt;/h3&gt;
&lt;h3&gt;姬长信 API（稳定推荐）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://api.isoyu.com/&quot;&gt;Api 简介&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;接口太多，不列举了&lt;/p&gt;
&lt;h3&gt;Free Api（全，稳定）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.free-api.com/&quot;&gt;Api 详情&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;网友 木芽&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://api.xygeng.cn/bing/1920.php&quot;&gt;Bing 日图接口&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://api.xygeng.cn/dailywd/api/api.php&quot;&gt;木芽一言接口&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;网友 Xiaohei&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codess-yun.top/&quot;&gt;主站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.codess-yun.top:8756/&quot;&gt;随机接口&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://codess.cc/Bing/Bing.php&quot;&gt;Bing 日图接口&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://pic.codess.cc/&quot;&gt;免费图床&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;开源社区（全，不推荐）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://www.apiopen.top/&quot;&gt;主站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.jianshu.com/p/e6f072839282&quot;&gt;文档介绍&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.apiopen.top/api.html&quot;&gt;接口预览&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;网友 小灵冲&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://pic.tsmp4.net/&quot;&gt;图床&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pic.tsmp4.net/api/fengjing/img.php&quot;&gt;风景随机图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pic.tsmp4.net/api/nvsheng/img.php&quot;&gt;女神随机图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pic.tsmp4.net/api/yingshi/img.php&quot;&gt;影视随机图&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://pic.tsmp4.net/api/erciyuan/img.php&quot;&gt;二次元随机图&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;网友 墨天逸&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://api.mtyqx.cn/&quot;&gt;主站&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://api.mtyqx.cn/api/random.php&quot;&gt;动漫 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://api.mtyqx.cn/tapi/random.php&quot;&gt;动漫 2&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;海外（访问速度较慢）&lt;/h2&gt;
&lt;h3&gt;Unsplash 随机（优质，加载慢）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://source.unsplash.com/&quot;&gt;介绍&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;示例 https://source.unsplash.com/random/1920x1080?wallpapers
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Lorempixel 随机&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://lorempixel.com/&quot;&gt;介绍&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;示例 http://lorempixel.com/1920/1080/
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Lorem Picsum（速度较快，有灰度或模糊功能）&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://picsum.photos/&quot;&gt;介绍&lt;/a&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-html&quot;&gt;示例 https://picsum.photos/1920/1080 https://picsum.photos/1920/1080?blur=10
&lt;/code&gt;&lt;/pre&gt;</content:encoded><h:img src="/_astro/thumbnail.Da_m3qHH.jpg"/><enclosure url="/_astro/thumbnail.Da_m3qHH.jpg"/></item><item><title>各国语言缩写</title><link>https://cworld0.com/blog/national-language</link><guid isPermaLink="true">https://cworld0.com/blog/national-language</guid><description>鉴于经常要用这些，所以写出来，方便自己用。</description><pubDate>Thu, 04 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;鉴于经常要用这些，所以写出来，方便自己用。&lt;/p&gt;
&lt;h2&gt;常见&lt;/h2&gt;
&lt;p&gt;| 缩写  | 语言            |
| ----- | --------------- |
| en    | 英国            |
| en-US | 英国 - 美国     |
| en-AU | 英国 - 澳洲     |
| zh-CN | 中国 - 中国     |
| zh-TW | 中国 - 台湾     |
| zh-HK | 中国 - 香港 SAR |
| zh-MO | 中国 - 澳门 SAR |
| ja    | 日本            |
| ja-JP | 日本 - 日本     |
| ko    | 韩国            |
| ko-KR | 韩国 - 韩国     |
| ru    | 俄国            |
| ru-RU | 俄国 - 俄国     |
| fr    | 法国            |&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;汇总&lt;/h2&gt;
&lt;p&gt;| 缩写       | 语言                                     |
| ---------- | ---------------------------------------- |
| af         | 公用荷兰                                 |
| af-ZA      | 公用荷兰 - 南非                          |
| sq         | 阿尔巴尼亚                               |
| sq-AL      | 阿尔巴尼亚 - 阿尔巴尼亚                  |
| ar         | 阿拉伯                                   |
| ar-DZ      | 阿拉伯 - 阿尔及利亚                      |
| ar-BH      | 阿拉伯 - 巴林                            |
| ar-EG      | 阿拉伯 - 埃及                            |
| ar-IQ      | 阿拉伯 - 伊拉克                          |
| ar-JO      | 阿拉伯 - 约旦                            |
| ar-KW      | 阿拉伯 - 科威特                          |
| ar-LB      | 阿拉伯 - 黎巴嫩                          |
| ar-LY      | 阿拉伯 - 利比亚                          |
| ar-MA      | 阿拉伯 - 摩洛哥                          |
| ar-OM      | 阿拉伯 - 阿曼                            |
| ar-QA      | 阿拉伯 - 卡塔尔                          |
| ar-SA      | 阿拉伯 - 沙特阿拉伯                      |
| ar-SY      | 阿拉伯 - 叙利亚共和国                    |
| ar-TN      | 阿拉伯 - 北非的共和国                    |
| ar-AE      | 阿拉伯 - 阿拉伯联合酋长国                |
| ar-YE      | 阿拉伯 - 也门                            |
| hy         | 亚美尼亚                                 |
| hy-AM      | 亚美尼亚 - 亚美尼亚                      |
| az         | 阿塞拜疆                                 |
| az-AZ-Cyrl | 阿塞拜疆(西里尔字母) - 阿塞拜疆          |
| az-AZ-Latn | 阿塞拜疆(拉丁文) - 阿塞拜疆              |
| eu         | 巴斯克                                   |
| eu-ES      | 巴斯克 - 巴斯克                          |
| be         | 白俄罗斯                                 |
| be-BY      | 白俄罗斯 - 白俄罗斯                      |
| bg         | 保加利亚                                 |
| bg-BG      | 保加利亚 -保加利亚                       |
| ca         | 嘉泰罗尼亚                               |
| ca-ES      | 嘉泰罗尼亚 -嘉泰罗尼亚                   |
| zh-HK      | 中国 - 香港 SAR                          |
| zh-MO      | 中国 - 澳门 SAR                          |
| zh-CN      | 中国 - 中国                              |
| zh-CHS     | 中国 (单一化)                            |
| zh-SG      | 中国 - 新加坡                            |
| zh-TW      | 中国 - 台湾                              |
| zh-CHT     | 中国 (传统)                              |
| hr         | 克罗埃西亚                               |
| hr-HR      | 克罗埃西亚 - 克罗埃西亚                  |
| cs         | 捷克                                     |
| cs-CZ      | 捷克 - 捷克                              |
| da         | 丹麦文                                   |
| da-DK      | 丹麦文 - 丹麦                            |
| div        | 马尔代夫                                 |
| div-MV     | 马尔代夫 - 马尔代夫                      |
| nl         | 荷兰                                     |
| nl-BE      | 荷兰 - 比利时                            |
| nl-NL      | 荷兰 - 荷兰                              |
| en         | 英国                                     |
| en-AU      | 英国 - 澳洲                              |
| en-BZ      | 英国 - 伯利兹                            |
| en-CA      | 英国 - 加拿大                            |
| en-CB      | 英国 - 加勒比海                          |
| en-IE      | 英国 - 爱尔兰                            |
| en-JM      | 英国 - 牙买加                            |
| en-NZ      | 英国 - 新西兰                            |
| en-PH      | 英国 - 菲律宾共和国                      |
| en-ZA      | 英国 - 南非                              |
| en-TT      | 英国 - 千里达托贝哥共和国                |
| en-GB      | 英国 - 英国                              |
| en-US      | 英国 - 美国                              |
| en-ZW      | 英国 - 津巴布韦                          |
| et         | 爱沙尼亚                                 |
| et-EE      | 爱沙尼亚 - 爱沙尼亚                      |
| fo         | 法罗群岛                                 |
| fo-FO      | 法罗群岛- 法罗群岛                       |
| fa         | 波斯                                     |
| fa-IR      | 波斯 - 伊朗王国                          |
| fi         | 芬兰                                     |
| fi-FI      | 芬兰 - 芬兰                              |
| fr         | 法国                                     |
| fr-BE      | 法国 - 比利时                            |
| fr-CA      | 法国 - 加拿大                            |
| fr-FR      | 法国 - 法国                              |
| fr-LU      | 法国 - 卢森堡                            |
| fr-MC      | 法国 - 摩纳哥                            |
| fr-CH      | 法国 - 瑞士                              |
| gl         | 加利西亚                                 |
| gl-ES      | 加利西亚 - 加利西亚                      |
| ka         | 格鲁吉亚州                               |
| ka-GE      | 格鲁吉亚州 - 格鲁吉亚州                  |
| de         | 德国                                     |
| de-AT      | 德国 - 奥地利                            |
| de-DE      | 德国 - 德国                              |
| de-LI      | 德国 - 列支敦士登                        |
| de-LU      | 德国 - 卢森堡                            |
| de-CH      | 德国 - 瑞士                              |
| el         | 希腊                                     |
| el-GR      | 希腊 - 希腊                              |
| gu         | 印度                                     |
| gu-IN      | 印度 - 印度                              |
| he         | 希伯来                                   |
| he-IL      | 希伯来 - 以色列                          |
| hi         | 北印度                                   |
| hi-IN      | 北印度 - 印度                            |
| hu         | 匈牙利                                   |
| hu-HU      | 匈牙利 - 匈牙利                          |
| is         | 冰岛                                     |
| is-IS      | 冰岛的 - 冰岛                            |
| id         | 印尼                                     |
| id-ID      | 印尼 - 印尼                              |
| it         | 意大利                                   |
| it-IT      | 意大利 - 意大利                          |
| it-CH      | 意大利 - 瑞士                            |
| ja         | 日本                                     |
| ja-JP      | 日本 - 日本                              |
| kn         | 卡纳达                                   |
| kn-IN      | 卡纳达 - 印度                            |
| kk         | 哈萨克                                   |
| kk-KZ      | 哈萨克 - 哈萨克                          |
| kok        | 印度                                     |
| kok-IN     | 印度 - 印度                              |
| ko         | 韩国                                     |
| ko-KR      | 韩国 - 韩国                              |
| ky         | 哈萨克                                   |
| ky-KZ      | 哈萨克 - 哈萨克                          |
| lv         | 拉脱维亚                                 |
| lv-LV      | 拉脱维亚 -拉脱维亚                       |
| lt         | 立陶宛                                   |
| lt-LT      | 立陶宛 - 立陶宛                          |
| mk         | 马其顿                                   |
| mk-MK      | 马其顿 - 马其顿                          |
| ms         | 马来                                     |
| ms-BN      | 马来 - 汶莱                              |
| ms-MY      | 马来 - 马来西亚                          |
| mr         | 马拉地                                   |
| mr-IN      | 马拉地 - 印度                            |
| mn         | 蒙古                                     |
| mn-MN      | 蒙古 - 蒙古                              |
| no         | 挪威                                     |
| nb-NO      | 挪威 (Bokm?l) - 挪威                     |
| nn-NO      | 挪威 (Nynorsk)- 挪威                     |
| pl         | 波兰                                     |
| pl-PL      | 波兰 - 波兰                              |
| pt         | 葡萄牙                                   |
| pt-BR      | 葡萄牙 - 巴西                            |
| pt-PT      | 葡萄牙 - 葡萄牙                          |
| pa         | Punjab                                   |
| pa-IN      | Punjab -印度                             |
| ro         | 罗马尼亚                                 |
| ro-RO      | 罗马尼亚 - 罗马尼亚                      |
| ru         | 俄国                                     |
| ru-RU      | 俄国 - 俄国                              |
| sa         | 梵文                                     |
| sa-IN      | 梵文 - 印度                              |
| sr-SP-Cyrl | 塞尔维亚 (西里尔字母的) - 塞尔维亚共和国 |
| sr-SP-Latn | 塞尔维亚 (拉丁文) - 塞尔维亚共和国       |
| sk         | 斯洛伐克                                 |
| sk-SK      | 斯洛伐克 - 斯洛伐克                      |
| sl         | 斯洛文尼亚                               |
| sl-SI      | 斯洛文尼亚 - 斯洛文尼亚                  |
| es         | 西班牙                                   |
| es-AR      | 西班牙 - 阿根廷                          |
| es-BO      | 西班牙 - 玻利维亚                        |
| es-CL      | 西班牙 - 智利                            |
| es-CO      | 西班牙 - 哥伦比亚                        |
| es-CR      | 西班牙 - 哥斯达黎加                      |
| es-DO      | 西班牙 - 多米尼加共和国                  |
| es-EC      | 西班牙 - 厄瓜多尔                        |
| es-SV      | 西班牙 - 萨尔瓦多                        |
| es-GT      | 西班牙 - 危地马拉                        |
| es-HN      | 西班牙 - 洪都拉斯                        |
| es-MX      | 西班牙 - 墨西哥                          |
| es-NI      | 西班牙 - 尼加拉瓜                        |
| es-PA      | 西班牙 - 巴拿马                          |
| es-PY      | 西班牙 - 巴拉圭                          |
| es-PE      | 西班牙 - 秘鲁                            |
| es-PR      | 西班牙 - 波多黎各                        |
| es-ES      | 西班牙 - 西班牙                          |
| es-UY      | 西班牙 - 乌拉圭                          |
| es-VE      | 西班牙 - 委内瑞拉                        |
| sw         | 斯瓦希里                                 |
| sw-KE      | 斯瓦希里 - 肯尼亚                        |
| sv         | 瑞典                                     |
| sv-FI      | 瑞典 - 芬兰                              |
| sv-SE      | 瑞典 - 瑞典                              |
| syr        | 叙利亚                                   |
| syr-SY     | 叙利亚 - 叙利亚共和国                    |
| ta         | 坦米尔                                   |
| ta-IN      | 坦米尔 - 印度                            |
| tt         | 俄国                                     |
| tt-RU      | 俄国 - 俄国                              |
| te         | 泰卢固                                   |
| te-IN      | 泰卢固 - 印度                            |
| th         | 泰国                                     |
| th-TH      | 泰国 - 泰国                              |
| tr         | 土耳其                                   |
| tr-TR      | 土耳其 - 土耳其                          |
| uk         | 乌克兰                                   |
| uk-UA      | 乌克兰 - 乌克兰                          |
| ur         | 乌尔都                                   |
| ur-PK      | 乌尔都 - 巴基斯坦                        |
| uz         | Uzbek                                    |
| uz-UZ-Cyrl | Uzbek(西里尔字母的) - 乌兹别克斯坦       |
| uz-UZ-Latn | Uzbek(拉丁文) - 乌兹别克斯坦             |
| vi         | 越南                                     |
| vi-VN      | 越南 - 越南                              |&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>Xiaomi Redmi 4A (Rolex) 刷机集合</title><link>https://cworld0.com/blog/redmi-4a-list</link><guid isPermaLink="true">https://cworld0.com/blog/redmi-4a-list</guid><description>主要是一些刷机包，也有一些已知的 xda 刷机集合贴</description><pubDate>Wed, 03 Jul 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;主要是一些刷机包，也有一些已知的 xda 刷机集合贴&lt;/p&gt;
&lt;h2&gt;Xda-Developers&lt;/h2&gt;
&lt;h3&gt;Xda 集合&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.xda-developers.com/redmi-4a/how-to/list-redmi-4a-rolex-custom-roms-t3774162&quot;&gt;List of Redmi 4A (Rolex) Custom Roms&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Xda 刷机包&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.xda-developers.com/redmi-4a/development/9-0-resurrection-remix-v7-0-t3899635&quot;&gt;【9.0】【OFFICIAL】Resurrection Remix v7.0 【ROLEX】&lt;/a&gt;
&lt;a href=&quot;https://get.resurrectionremix.com/?dir=rolex&quot;&gt;ROM Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Xda REC&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.xda-developers.com/redmi-4a/development/port-orangefox-recovery-project-t3925400&quot;&gt;【PORT】【TWRP】【TREBLE】 OrangeFox Recovery Project 【R10.0】&lt;/a&gt;
&lt;a href=&quot;https://sourceforge.net/projects/team-tentacles/files/Recovery/OrangeFoxRecoveryProject/&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Xda 内核&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://forum.xda-developers.com/redmi-4a/development/infinity-kernel-v3-2-redmi-4a-rolex-t3775549&quot;&gt;【ROLEX / RIVA】 【KERNEL】 【OREO / NOUGAT】 Infinity Kernel&lt;/a&gt;
&lt;a href=&quot;https://teaminfinity.github.io/&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Android File Host&lt;/h2&gt;
&lt;h3&gt;File 集合&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Downloads for : Xiaomi Redmi 4A
Developed By :AryanPatidar
&lt;a href=&quot;https://androidfilehost.com/?w=files&amp;#x26;flid=244226&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Downloads for : Xiaomi Redmi 4A
Developed By :MacTavishAO
&lt;a href=&quot;https://androidfilehost.com/?w=files&amp;#x26;flid=215006&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;File 刷机包&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;flyme_Redmi-4A_ycjeson_6.7.6.23R.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=817550096634784321&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Flyme6_Nougat_AryanPatidar_BugFree_Final_ROLEX_HM4A_Redmi4A.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=746010030569964162&quot;&gt;Download&lt;/a&gt;
Redme.txt
&lt;a href=&quot;https://androidfilehost.com/?fid=746010030569964158&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RR-N-v5.8.5-20180414-rolex.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=890129502657598005&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RR-O-v6.0.0-20180429-rolex-Unofficial.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=673956719939837762&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;RR-O-v6.1.0-20180625-riva-Unofficial.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=890278863836296667&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Havoc-OS-201808dddd16-rolex-&quot;This post is purely for testing if the css is correct for the title on the page&quot;.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=1322778262903981334&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;AospExtended-v5.8-rolex-20181017-1735-OFFICIAL.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=11410932744536981921&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;File 内核&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;InfinityKernel V5.0.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=962187416754474923&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;InfinityKernel_Unified_V5.1F.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=1322778262904007808&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Xtreme Kernel v3.1.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=890278863836292220&quot;&gt;Download&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;File 海外版（秒解锁 BL）&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;miflash_unlock-en-2.3.803.10.zip
&lt;a href=&quot;https://androidfilehost.com/?fid=673956719939835980&quot;&gt;Download&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item><item><title>我的第一篇 • 个人网站存在的意义</title><link>https://cworld0.com/blog/first-article</link><guid isPermaLink="true">https://cworld0.com/blog/first-article</guid><description>个人网站这个以前很时髦的名词正随着时间慢慢被人忘记，互联网的门槛越来越低，个人网站显然不再成为一个重要的入口。</description><pubDate>Fri, 14 Jun 2019 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;个人网站这个以前很时髦的名词正随着时间慢慢被人忘记，互联网的门槛越来越低，个人网站显然不再成为一个重要的入口。甚至连电脑都已经不是首选的上网平台了。&lt;/p&gt;
&lt;p&gt;那么现在还有必要为自己搭建个人网站吗？&lt;/p&gt;
&lt;h2&gt;不是人人都有料&lt;/h2&gt;
&lt;p&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;因为你不是 Big Boy ，而网上的访问者具有匿名性，他们基本上跟你生活毫无交集，他们也不关心你去了哪些地方，吃了啥东西。这些事情不能成为谈资，所以如果你希望在个人网站分享这类内容，我建议还是朋友圈，QQ 空间之类的地方比较好。起码还可以得到几个赞。&lt;/p&gt;
&lt;h3&gt;专家不是这么好当的&lt;/h3&gt;
&lt;p&gt;除了看看明星八卦，大多数网上的意见领袖都是各方面的专家，他们往往可以一呼百应。&lt;/p&gt;
&lt;p&gt;但我始终坚持认为，就算是伪专家也是有他的过人之处的，更不要说真正的大牛了。很多人喜欢写技术文章，但首先你个人是一个默默无闻的路人，即使突然脑袋开窍撸了一篇可称大神级的文章出来，也会被埋没在信息的海洋里。更何况这种情况出现的概率基本为零，大多数情况下一般人写出来的文章就是没啥料的，不具备可读性。&lt;/p&gt;
&lt;p&gt;而且现在还有各种各样的阅读平台，分享网站，以及垃圾站。你网站上的文章还没被爬到，就被他们抓走了，有点良心的还贴个来源链接，无良的直接连作者名都给你改了。&lt;/p&gt;
&lt;h2&gt;个人网站如何经营&lt;/h2&gt;
&lt;p&gt;这个标题一写出来，网上类似的文章一大把。但我不是从技术角度来讲，我首先要劝一些人放弃，如果你没有啥好写的东西，那还是放弃这个打算把。你把精力投入到微博，微信上可能效果还好些。&lt;/p&gt;
&lt;h3&gt;你一定要有一些别人没有的东西&lt;/h3&gt;
&lt;p&gt;如果你不是在某一方面浸淫多年特别擅长，那么要不然你帅的惊动 D 中央，要不然你特别有钱是个土豪。如果你说，我又没啥特长，长的也一般，也没啥钱，总之就是一个普通的路人，还有希望吗？&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;p&gt;内容的选材也很重要，你需要去了解读者喜欢什么样的内容，既然是公开发表的内容，你就应该照顾别人的想法，这并不是要你埋没个性，相反在内容的组织上展示你的个性才是体现出你闪光点的好办法。&lt;/p&gt;
&lt;p&gt;为什么你看到很多业界大神，总是喜欢写一些普及性的文章。但往往这类文章的点击率是最高的，因为大多数人需要这类文章，而怎么把这类文章写好也是需要挑战性的。深入浅出是一门技术活，很多人写着写着越来越晦涩难懂，不知道怎么样用浅显的道理表达出来。&lt;/p&gt;
&lt;h3&gt;快速分享&lt;/h3&gt;
&lt;p&gt;这一步反而是大多数人做的最好的，各种分享按钮，微博，朋友圈分发。这样非常好，可以为你带来固定的读者群，但对拓宽读者群体没有多大帮助，我个人觉得可以借助一些业内比较有影响力的分享渠道，当然前提是你的文章真的质量过硬，也要给别人带来好处。比如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://v2ex.com&quot;&gt;v2ex.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://segmentfault.com&quot;&gt;segmentfault.com&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;值得注意的是，你不能把他们当成单纯的发广告的地方，这样会很快透支掉你的口碑。你需要用心经营你自己的品牌，多多形成双赢的局面，为别人网站也能带来干货。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;其实我本人并不是擅长此道的专家，但是因为对这一个圈子接触比较多所以有这些感受。我见过太多怀揣着梦想进入个人网站这个圈子的好少年了，但大多数因为没有认清现实而浪费了很多资源。我这片文章的目的并不可能让大家马上牛逼起来，但如果能让大家稍稍认清点现实，也不枉费我这么多口舌了。&lt;/p&gt;
&lt;p&gt;转载自 JoyQi&apos;s Homepage &lt;a href=&quot;https://joyqi.com/develop/how-to-manage-your-personal-website.html&quot;&gt;个人网站存在的意义&lt;/a&gt;&lt;/p&gt;</content:encoded><h:img src="undefined"/><enclosure url="undefined"/></item></channel></rss>