<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>KK&#39;s Blog</title>
  
  
  <link href="https://kk.sb/feed/atom.xml" rel="self"/>
  
  <link href="https://kk.sb/"/>
  <updated>2023-01-29T10:30:54.647Z</updated>
  <id>https://kk.sb/</id>
  
  <author>
    <name>kookxiang</name>
    
  </author>
  
  <generator uri="https://hexo.io/">Hexo</generator>
  
  <entry>
    <title>使用 Jellyfin 搭建二次元媒体库</title>
    <link href="https://kk.sb/2023/use-jellyfin-to-organize-anime-library.htm"/>
    <id>https://kk.sb/2023/use-jellyfin-to-organize-anime-library.htm</id>
    <published>2023-01-29T08:06:06.000Z</published>
    <updated>2023-01-29T10:30:54.647Z</updated>
    
    <content type="html"><![CDATA[<p>10 年前，叔叔开始购买版权，打开屑站就能随时随地同步追番。</p><p>10 年后，即使你“游泳”到港澳台地区，你也只能看到少量蜜汁和谐过的内容。</p><p>至于大冤种会员？哦，他们只能看三体动画</p><h1 id="为什么用-Jellyfin"><a href="#为什么用-Jellyfin" class="headerlink" title="为什么用 Jellyfin"></a>为什么用 Jellyfin</h1><p>其实最开始垃圾瓢虫安利的是 <a href="https://emby.media/">Emby</a>，但是这公司似乎是掉到钱眼里面了：</p><ul><li>在不同的设备上播放都需要内购</li><li>下载文件到本地离线播放需要内购</li><li>硬件解码也需要内购</li></ul><p>就很离谱，不想每个平台都买？那你得订阅 Premiere（我现在还不能理解为何这点功能能卖 $54 一年）</p><p>为了恰烂钱，甚至<strong>把他们的代码闭源了</strong></p><p>而 <a href="https://jellyfin.org/">Jellyfin</a> 是 Emby 3.5.2 版本的一个开源 Fork，自由且免费。</p><blockquote><p>Jellyfin seeks to continue development of the original Emby project with a Free Software ethos. It is committed to bringing all its users access to the best possible Media System, developed entirely by a community of volunteers who contribute code, documentation, translations, and support to the project.<br>《<a href="https://jellyfin.org/docs/general/about">About Jellyfin</a>》</p></blockquote><p>Jellyfin 安装很简单，可以用 Docker，可以直接下载运行，而我的选择更简单——<a href="https://aur.archlinux.org/packages/jellyfin-bin">AUR</a><br>毕竟是 .NET 开发的软件，对运行环境没有依赖，直接交给 systemd 管理即可</p><span id="more"></span><h1 id="搭建媒体库"><a href="#搭建媒体库" class="headerlink" title="搭建媒体库"></a>搭建媒体库</h1><p>由于 NAS 本身数据都在 ZFS 上，就直接开了一个 Jellyfin 的 Data Set，关闭了压缩和去重。</p><p>官方给的目录结构要求：<a href="https://jellyfin.org/docs/general/server/media/shows">https://jellyfin.org/docs/general/server/media/shows</a></p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br></pre></td><td class="code"><pre><span class="line">Shows</span><br><span class="line">├── Series (2010)</span><br><span class="line">│   ├── Season 00</span><br><span class="line">│   │   ├── Some Special.mkv</span><br><span class="line">│   │   ├── Episode S00E01.mkv</span><br><span class="line">│   │   └── Episode S00E02.mkv</span><br><span class="line">│   ├── Season 01</span><br><span class="line">│   │   ├── Episode S01E01-E02.mkv</span><br><span class="line">│   │   ├── Episode S01E03.mkv</span><br><span class="line">│   │   └── Episode S01E04.mkv</span><br><span class="line">│   └── Season 02</span><br><span class="line">│       ├── Episode S02E01.mkv</span><br><span class="line">│       └── Episode S02E02.mkv</span><br><span class="line">└── Series (2018)</span><br><span class="line">    ├── Episode S01E01.mkv</span><br><span class="line">    ├── Episode S01E02.mkv</span><br><span class="line">    ├── Episode S02E01-E02.mkv</span><br><span class="line">    └── Episode S02E03.mkv</span><br></pre></td></tr></table></figure><p>这类个人推荐使用 <code>Root &gt; (Series) &gt; (Season) &gt; (Episode).xxx</code> 的结构，可以降低元数据拉取的难度。</p><p>动漫的来源主要有 3 类：</p><ol><li>新番订阅类，个人比较常用的是 <a href="https://mikanani.me/">mikanani.me</a></li><li>BT &#x2F; 离线下载，主要是下载一些压制好的老番，甚至准备了一个专门运行这类奇怪下载器的服务 <a href="https://apps.kookxiang.cloud/">apps.kookxiang.cloud</a> (限内网)</li><li>一部分 PT 站下载的内容</li></ol><p>其中 1 2 比较简单，直接配置下载目录到媒体库中，或者下载后移动过来即可<br>3 的话略微麻烦一点，需要保留一份原始结构用于挂种，之前我用的 ZFS 自动去重，现在更推荐走软连接</p><h1 id="拉取番剧的元数据"><a href="#拉取番剧的元数据" class="headerlink" title="拉取番剧的元数据"></a>拉取番剧的元数据</h1><p><del>Jellyfin 最大的问题是内置的几个数据源对动漫支持非常差，基本上只有像名侦探柯南这种才可能有元数据。</del><br>其实也还行，不过搜索的时候最好用日文名去搜，我现在是 Bangumi + TMDB 双持了</p><p>好在 C# 我也会一点，于是整了个 <a href="https://bgm.tv/">bgm.tv</a> 的数据源插件：<br><a href="https://github.com/kookxiang/jellyfin-plugin-bangumi">https://github.com/kookxiang/jellyfin-plugin-bangumi</a></p><p>安装后在媒体库设置中勾选 Bangumi 这个数据源就能用上。</p><p>这个插件核心功能之一是自动识别集号，还记得官方的命名要求吗？文件名得有 <code>[E01]</code> <code>[S01E01]</code> 这样的内容才行。</p><p>实际上国内字幕组在命名的时候五花八门，有 <code>番剧名 - 01</code>，有 <code>[番剧名][01]</code>……<br>而且还会在文件名里带上奇怪的内容，比如 <code>[1080P]</code> <code>[10bit]</code> <code>[h264]</code> 还有部份文件名带了 CRC32 Hash 的。</p><p>直接带来的问题就是在默认情况下 Jellyfin 会识别成第 1080 集等奇怪的集数，一个个重命名过于麻烦，且对于 RSS 这类自动下载文件名的需要手动修改就更麻烦了。<br>所以插件内内置了几个常见的正则，涵盖了上面的几种情况，可以自动识别出正确的集号返回给 Jellyfin。</p><p>此外插件还会使用 bgm 上的评分和标签数据，这样界面上显示的评分和推荐视频会更科学。<br>别忘了登录授权下，这样能自动推送观看进度<del>（自动点格子）</del></p><p><img src="/2023/use-jellyfin-to-organize-anime-library/library.png" alt="我的媒体库" loading="lazy"></p><h1 id="在各种设备上观看"><a href="#在各种设备上观看" class="headerlink" title="在各种设备上观看"></a>在各种设备上观看</h1><p>搭建好 Jellyfin 以后就可以直接在网页版看了，不过受限于浏览器，能够硬解的内容实在少得可怜，还是更推荐使用客户端看。</p><p>另外为了提升服务端上转码效率，我给 NAS 插上了矿潮时斥巨资 ¥450 购买的半高 GeForce GTX 1050 Ti</p><p>装上 nvidia-dkms 以后重启服务器，后台启用 NVENC 转码即可</p><p>如果还想折腾，可以打下破解补丁，解除消费级显卡上的 NVENC 数量限制<br><a href="https://github.com/keylase/nvidia-patch/">https://github.com/keylase/nvidia-patch/</a></p><h2 id="MPV-Anime4K-SVP4"><a href="#MPV-Anime4K-SVP4" class="headerlink" title="MPV + Anime4K + SVP4"></a>MPV + Anime4K + SVP4</h2><p>这里必须安利 <a href="https://github.com/jellyfin/jellyfin-mpv-shim">jellyfin-mpv-shim</a> 这个官方项目。</p><p>它的原理十分简单，在 Jellyfin 上选择投屏到它播放后，它就会自动调用 MPV 进行播放。<br>由于是走的投屏，可以使用手机登录 Jellyfin 进行远程控制，我这种床头吊显示器的用户表示爽翻了。</p><p>jellyfin-mpv-shim 自带的 MPV 已经内置了 Anime4K 的支持，按回车键进入菜单后选择对应的 Profile 即可。</p><p>MPV 也是能够用上 SVP 的插帧能力的，不过 jellyfin-mpv-shim 已经内置了支持，参考 readme 打开开关并配置使用 SVP 安装目录下的 MPV 就行了。</p><p>PS：这套方案我也在 macOS 上跑通了，但是 Macbook Pro 的性能…… 此外还要占用一个 SVP 授权，咕咕咕了</p><h2 id="Infuse"><a href="#Infuse" class="headerlink" title="Infuse"></a>Infuse</h2><p>之所以这几个放在一起说，是因为 Infuse 时苹果生态中最好用的媒体库软件，我的 iPhone &#x2F; iPad &#x2F; Apple TV 都用它。<br>如果你看的内容不涉及 4K HDR 以上的话理论上是不需要订阅的，不过它是在我 Apple TV 上唯一能正常播放杜比全家桶 Demo 还非常流畅的。</p><p>使用非常简单：新增文件来源中点击最下面的添加，菜单中直接可以添加 Jellyfin。</p><h1 id="体验"><a href="#体验" class="headerlink" title="体验"></a>体验</h1><p>访问我的媒体库主要有 3 种方式：</p><ol><li>如果你能收到 10.8.1.0&#x2F;24 路由，那么你可以内网直接访问</li><li>可以通过 Cloudflare 中继访问，需自备梯子</li><li>可以通过腾讯云服务器中转，目前只有 5M 带宽，可能会卡</li></ol><p>如果你想体验一下，可以联系我获取地址</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;10 年前，叔叔开始购买版权，打开屑站就能随时随地同步追番。&lt;/p&gt;
&lt;p&gt;10 年后，即使你“游泳”到港澳台地区，你也只能看到少量蜜汁和谐过的内容。&lt;/p&gt;
&lt;p&gt;至于大冤种会员？哦，他们只能看三体动画&lt;/p&gt;
&lt;h1 id=&quot;为什么用-Jellyfin&quot;&gt;&lt;a href=&quot;#为什么用-Jellyfin&quot; class=&quot;headerlink&quot; title=&quot;为什么用 Jellyfin&quot;&gt;&lt;/a&gt;为什么用 Jellyfin&lt;/h1&gt;&lt;p&gt;其实最开始垃圾瓢虫安利的是 &lt;a href=&quot;https://emby.media/&quot;&gt;Emby&lt;/a&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;就很离谱，不想每个平台都买？那你得订阅 Premiere（我现在还不能理解为何这点功能能卖 $54 一年）&lt;/p&gt;
&lt;p&gt;为了恰烂钱，甚至&lt;strong&gt;把他们的代码闭源了&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;而 &lt;a href=&quot;https://jellyfin.org/&quot;&gt;Jellyfin&lt;/a&gt; 是 Emby 3.5.2 版本的一个开源 Fork，自由且免费。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Jellyfin seeks to continue development of the original Emby project with a Free Software ethos. It is committed to bringing all its users access to the best possible Media System, developed entirely by a community of volunteers who contribute code, documentation, translations, and support to the project.&lt;br&gt;《&lt;a href=&quot;https://jellyfin.org/docs/general/about&quot;&gt;About Jellyfin&lt;/a&gt;》&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Jellyfin 安装很简单，可以用 Docker，可以直接下载运行，而我的选择更简单——&lt;a href=&quot;https://aur.archlinux.org/packages/jellyfin-bin&quot;&gt;AUR&lt;/a&gt;&lt;br&gt;毕竟是 .NET 开发的软件，对运行环境没有依赖，直接交给 systemd 管理即可&lt;/p&gt;</summary>
    
    
    
    <category term="Anime" scheme="https://kk.sb/categories/Anime/"/>
    
    
    <category term="Jellyfin" scheme="https://kk.sb/tags/Jellyfin/"/>
    
  </entry>
  
  <entry>
    <title>又开始写博客了</title>
    <link href="https://kk.sb/2022/writing-blogs-again.htm"/>
    <id>https://kk.sb/2022/writing-blogs-again.htm</id>
    <published>2022-04-23T16:00:00.000Z</published>
    <updated>2023-01-29T10:30:54.659Z</updated>
    
    <content type="html"><![CDATA[<p>也许你会好奇，为什么在 2018-08-14 后我的博客就再也没有更新了。</p><p>呃，这个事情怎么解释呢… 也不是故意要咕…</p><p>主要吧… 工作这种东西就很忙…</p><p>而且我又不擅长写作，一写起内容来跟便秘似的</p><p><del>才不是嫌原来那个博客太丑，然后想自己或者找人设计一个新主题最后放弃</del></p><p>总之现在终于弄了个新的博客，用上了之前买了很久的域名 kk.sb</p><p>用 Hexo 的目标也非常简单，希望新的博客能专注于内容，不整那些花里胡哨的东西</p><p>不知道有没有人看，剩下的内容就吐槽下之前考虑使用的博客系统 <del>锐评各大博客系统</del></p><span id="more"></span><h2 id="Typecho"><a href="#Typecho" class="headerlink" title="Typecho"></a>Typecho</h2><p>老博客用的就是 Typecho</p><p>优点</p><ul><li>还算轻量？</li><li>文章默认用的 markdown</li><li>之前弄了一些小插件（虽然有些已经挂了）</li></ul><p>当然也有缺点</p><ul><li>开发组比我还能咕（今年突然宣布诈尸了，也不知道为啥）</li><li>用的人太少，自然也没什么人去做主题插件</li><li>有一说一，现在感觉服务器上搭 php 环境不如其他语言简单方便（要配挺多东西）</li></ul><h2 id="WordPress"><a href="#WordPress" class="headerlink" title="WordPress"></a>WordPress</h2><p>同属 PHP 系的博客系统，应该是目前用户量最大的</p><p>优点：</p><ul><li>完善的第三方主题&#x2F;插件，甚至有成熟的付费和定制化市场</li><li>像我这种套 cloudflare 的还有对应的优化插件</li><li>持续维护中</li></ul><p>缺点：</p><ul><li>没找到合适的主题，主题市场热销大多是把 WordPress 改造成商城之类的，要不就是列表强依赖图片，像我这种不配图的文章就特别丑</li><li>老生常谈的性能问题</li><li>哪怕我不用 WordPress，nginx log 里面都一堆 wp-login.php 和 wp-admin 的请求，需要保持更新</li></ul><h2 id="Ghost"><a href="#Ghost" class="headerlink" title="Ghost"></a>Ghost</h2><p>基于 node.js 的博客系统</p><p>优点：</p><ul><li>默认主题颜值还行</li><li>所见即所得编辑器</li><li>AMP 支持</li><li>对第三方模块嵌入支持很好</li></ul><p>缺点：</p><ul><li>默认主题虽然好看，感觉还是需要文章配图才能看</li><li>几乎没找到啥第三方插件，官方甚至叫 integrations 而不是 plugins</li></ul><h2 id="Medium"><a href="#Medium" class="headerlink" title="Medium"></a>Medium</h2><p>Medium 是我看到最理想的博客系统了，其实我原本是打算直接用它的，甚至里面草稿箱还有半篇文章</p><p>优点：</p><ul><li>所见即所得的编辑器</li><li>阅读页设计单纯，对于文字和代码的展示都不错</li><li>有官方持续维护，不需要自己维护</li><li>文章阅读可以带来收入</li><li>可以绑定自定义域名（需要开会员）</li></ul><p>缺点：</p><ul><li>墙了</li><li>主题能够自定义的内容很少</li><li>付费制度，免费用户能看的文章有限，不知道还会不会有人看</li><li>英文网站，如果写中文默认字体丑出翔（直接劝退）</li></ul><h2 id="语雀"><a href="#语雀" class="headerlink" title="语雀"></a>语雀</h2><p>嗯… 公司弄的东西…<br>其实准确的说是 Alipay Inc. 的东西</p><p>优点：</p><ul><li>编辑器简单好用</li><li>界面清爽好看</li></ul><p>缺点：</p><ul><li>不能自定义域名挂在自己网站（虽然可以自己反代）</li><li>完全没有自定义主题&#x2F;插件能力</li><li>因为公司在用总有一种在加班的感觉（</li></ul><h2 id="Hexo"><a href="#Hexo" class="headerlink" title="Hexo"></a>Hexo</h2><p>因为可以静态化部署所以出名，</p><p>优点：</p><ul><li>静态化部署，可以直接丢 OSS 或者 CDN 上面，理论性能最快</li><li>相对还算丰富的第三方插件</li><li>直接解析 markdown 文章，方便导入也方便导出</li></ul><p>缺点：</p><ul><li>官网的<a href="https://hexo.io/themes/">第三方主题</a>很多粗制滥造的主题（并不是想喷这些作者，只是觉得官方需要筛选一些好的放在自己的页面上）</li><li>奇怪的模板引擎，虽然可能只是我没见识过</li></ul><hr><p>嗯，最后选了 Hexo 先用着，如果后续有更好的选择也能方便地迁移过去</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;也许你会好奇，为什么在 2018-08-14 后我的博客就再也没有更新了。&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;del&gt;才不是嫌原来那个博客太丑，然后想自己或者找人设计一个新主题最后放弃&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;总之现在终于弄了个新的博客，用上了之前买了很久的域名 kk.sb&lt;/p&gt;
&lt;p&gt;用 Hexo 的目标也非常简单，希望新的博客能专注于内容，不整那些花里胡哨的东西&lt;/p&gt;
&lt;p&gt;不知道有没有人看，剩下的内容就吐槽下之前考虑使用的博客系统 &lt;del&gt;锐评各大博客系统&lt;/del&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
  </entry>
  
  <entry>
    <title>在 Ryzen 平台上安装 macOS High Sierra</title>
    <link href="https://kk.sb/2018/install-hackintosh-high-sierra-on-ryzen.htm"/>
    <id>https://kk.sb/2018/install-hackintosh-high-sierra-on-ryzen.htm</id>
    <published>2018-03-28T16:30:00.000Z</published>
    <updated>2018-03-28T16:30:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>首先简单扔下目前电脑配置吧：</p><blockquote><p>CPU：<a href="https://www.amd.com/en/products/cpu/amd-ryzen-5-1600x">AMD Ryzen 5 1600X Processor</a></p><p>主板：<a href="https://www.asus.com/Motherboards/PRIME-B350M-A/">ASUS PRIME B350M-A</a></p><p>内存：<a href="https://www.gskill.com/en/product/f4-3000c16d-16grrb">G.SKILL Ripjaws V Series 16GB (2 x 8GB) DDR4 Memory</a></p><p>硬盘：<a href="http://www.samsung.com/semiconductor/ssd/client-ssd/MZVLW256HEHP/">Samsung MZVLW256HEHP (PM961) 256GB SSD</a></p><p>硬盘：<a href="https://www.sandisk.com/home/ssd/ultra-3d-ssd">SanDisk 250GB Ultra 3D NAND SATA3 SSD</a></p><p>显卡：<a href="https://www.asus.com/Graphics-Cards/STRIXGTX970DC2OC4GD5/">ASUS Strix GEFORCE GTX 970</a></p></blockquote><p>基本配置就是这些，当然，SanDisk 的 SSD 是为了这次安装黑苹果系统新买的。因为不想影响原有的 Windows 的分区结构。</p><p>首先第一步是下载最新的 High Sierra 镜像，并写入到 U 盘（我用的是 SanDisk CZ80，现在最新升级款是 <a href="https://www.sandisk.com/home/usb-flash/extremepro-usb">CZ880</a>）。</p><p>其实装黑苹果并不是没有苹果设备，相反我手边就有一台 MacBook Pro。黑苹果最诱惑的地方在于它的性能，比如我的 Ryzen 如果拿来日常开发的话构建编译速度绝对比 Intel 的移动 CPU 好得多。</p><p>而且，装 High Sierra 首先你需要一台 Mac。</p><span id="more"></span><p>先下载最新的系统镜像：打开 App Store，搜索 High Sierra；等到下载完成后不要点击继续，直接 <kbd><kbd>cmd</kbd> + <kbd>Q</kbd></kbd> 退出安装程序。</p><p>首先将 U 盘改成 GPT 格式并格式化成 HFS+：</p><p><img src="/2018/install-hackintosh-high-sierra-on-ryzen/diskutil.png" alt="屏幕快照" loading="lazy"></p><p>然后打开终端，使用命令将安装程序写入 U 盘：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">sudo /Applications/Install\ macOS\ High\ Sierra.app/Contents/Resources/createinstallmedia --applicationpath /Applications/Install\ macOS\ High\ Sierra.app  --volume /Volumes/kookxiang/</span><br></pre></td></tr></table></figure><p>U 盘写好了以后不要急着推出，下载 <a href="https://mega.nz/#!5DhyEIyB!7gsIIySHfxpsv43YrM8Dp_5mw_Gi6qjzliO1yH01hIg">Ryzen 内核补丁</a> 解压</p><p>用 Finder 打开 U 盘，按下 <kbd><kbd>cmd</kbd> + <kbd>shift</kbd> + <kbd>.</kbd></kbd> 显示隐藏文件。</p><p>复制压缩包中的 <code>Ryzen_Kernel_10.13/PreInstall/Prelinkedkernel/prelinkedkernel</code> <strong>文件</strong> 到下面的两个目录覆盖：</p><ul><li>&#x2F;Volumes&#x2F;Install macOS High Sierra&#x2F;.IABootFiles&#x2F;</li><li>&#x2F;Volumes&#x2F;Install macOS High Sierra&#x2F;System&#x2F;Library&#x2F;PrelinkedKernels&#x2F;</li></ul><p>顺便将 <code>PreInstall</code> 和 <code>PostInstall</code> 两个文件夹放进 U 盘备用。</p><p>下载 <a href="http://mackie100projects.altervista.org/download-clover-configurator/">Clover 配置工具</a> 运行，找到左侧的 Mount EFI，挂载 U 盘的 EFI 分区，使用 <a href="/2018/install-hackintosh-high-sierra-on-ryzen/Ryzen_High_Sierra_10.13_EFI.zip">Ryzen_High_Sierra_10.13_EFI.zip</a> 解压覆盖。</p><p>确定你的 BIOS 没有开启奇怪的配置，或者直接重置一下，关闭 CSM 模块，这样 Clover 和 Windows 10 开机画面分辨率可以变成 native 的。开启 EHCI 和 XHCI Hands-off，确保 USB 能够正常工作。串口并口这种 20 年前的端口顺便就关了吧，就算开了你也没有对应设备的… HPET 建议打开，由于早期 Ryzen 官方超频软件依赖这个功能我就提前打开了。</p><p>需要注意的是直到 Clover 安装完成前硬盘都是没办法启动的，建议在 BIOS 中选择首选启动方式为 U 盘，使用 U 盘中的 Clover 启动安装程序或安装好的系统。</p><p>如果你像我这样比较慌，可以把 M.2 SSD 拆了，拔掉其他硬盘的 SATA 线，避免手滑一时爽。</p><p>接下来就可以使用 U 盘启动了，在 Clover 画面中选择 U 盘，稍等片刻就可以进入安装界面。如果出现禁止符号，别慌，这是玄学问题，洗洗脸重启几次就好了。</p><p>进入安装界面以后，点击上面的实用工具 - 磁盘工具。分区并格式化这里应该就不用说了，<strong>但是需要记住磁盘的名字</strong>，比如我这里用的 <code>Hackintosh</code>，中间不要空格。完成后退出回到主界面，接下来就跟白苹果一样一路下一步了。</p><p>安装完成后会自动重启，但是不要进入系统！</p><p>还记得我们的 PreInstall 和 PostInstall 吗？选择从安装 U 盘启动，打开终端，执行 <code>/Volumes/Image\ Volume/PreInstall/pre</code>，填写上一步中的磁盘名称。如果磁盘名称有空格或者其他特殊字符的，自己改脚本吧…</p><p>这一步的主要目的是复制补丁文件并替换系统内核为 Ryzen 修改版。</p><p>如果没有报错，重启电脑，选择从 Hackintosh 启动，会开始走进度条，其实这才是真正的系统安装过程。</p><p>等待进度条走完后再次选择从安装盘启动，打开终端，执行 <code>/Volumes/Image\ Volume/PostInstall/post </code> 替换内核。</p><p>替换好后重启，选择从 Hackintosh 盘启动，配置系统并创建账号。<br>这里不推荐绑定 iCloud，进了系统在绑都不迟。</p><p>系统部分基本就 OK 了，接下来需要安装 Clover，可以下载之前提到的 <a href="http://mackie100projects.altervista.org/download-clover-configurator/">Clover 配置工具</a>，同时挂载 U 盘和系统盘的 EFI 分区，将 U 盘的 EFI 文件夹复制到系统盘上，出现覆盖提示时选择”合并“。</p><p>接下来可以删除一些安装程序用的兼容组件，推出 U 盘，打开 <code>/Volumes/EFI/EFI/Clover/kexts/Other</code> 文件夹，删除 <code>DummyUSBXHCIPCI.kext</code>、<code>DummyUSBEHCIPCI.kext</code>、<code>GenericUSBXHCI.kext</code> 三个补丁。</p><p>为了让 Ryzen 在 macOS 下全速运行，使用 Clover 配置工具 打开 clover.plist，在启动参数中增加 <code>busratio=xx</code>，其中 xx 为倍频。例如我这块 1600X 日常超频到了 3.8G，那么这里就写成 <code>busratio=38</code>，因为 Ryzen 超频基本都是超倍频，外频默认都是 100MHz，如果你改了外频的自己慢慢算吧。</p><p>GTX 970 驱动还是比较简单的，首先到 Clover 配置工具 中点击安装驱动，点击安装 <code>EmuVariableUefi</code>，到 NVIDIA 下载 <a href="https://images.nvidia.com/mac/pkg/387/WebDriver-387.10.10.10.25.156.pkg">最新的 Web Driver</a> 安装即可。</p><p>由于苹果本身配的显卡就是 ATI 的，所以 A 卡用户基本可以免驱动跑，有问题再搜吧。</p><p>确认基本 OK 后，重启，这回终于可以脱离 U 盘开机了，确认各功能都正常就告一段落了。</p><p>最后晒图：</p><p><img src="/2018/install-hackintosh-high-sierra-on-ryzen/snapshot1.png" alt="屏幕快照" loading="lazy"></p><p><img src="/2018/install-hackintosh-high-sierra-on-ryzen/snapshot2.png" alt="屏幕快照" loading="lazy"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;首先简单扔下目前电脑配置吧：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;CPU：&lt;a href=&quot;https://www.amd.com/en/products/cpu/amd-ryzen-5-1600x&quot;&gt;AMD Ryzen 5 1600X Processor&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;主板：&lt;a href=&quot;https://www.asus.com/Motherboards/PRIME-B350M-A/&quot;&gt;ASUS PRIME B350M-A&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;内存：&lt;a href=&quot;https://www.gskill.com/en/product/f4-3000c16d-16grrb&quot;&gt;G.SKILL Ripjaws V Series 16GB (2 x 8GB) DDR4 Memory&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;硬盘：&lt;a href=&quot;http://www.samsung.com/semiconductor/ssd/client-ssd/MZVLW256HEHP/&quot;&gt;Samsung MZVLW256HEHP (PM961) 256GB SSD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;硬盘：&lt;a href=&quot;https://www.sandisk.com/home/ssd/ultra-3d-ssd&quot;&gt;SanDisk 250GB Ultra 3D NAND SATA3 SSD&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;显卡：&lt;a href=&quot;https://www.asus.com/Graphics-Cards/STRIXGTX970DC2OC4GD5/&quot;&gt;ASUS Strix GEFORCE GTX 970&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;基本配置就是这些，当然，SanDisk 的 SSD 是为了这次安装黑苹果系统新买的。因为不想影响原有的 Windows 的分区结构。&lt;/p&gt;
&lt;p&gt;首先第一步是下载最新的 High Sierra 镜像，并写入到 U 盘（我用的是 SanDisk CZ80，现在最新升级款是 &lt;a href=&quot;https://www.sandisk.com/home/usb-flash/extremepro-usb&quot;&gt;CZ880&lt;/a&gt;）。&lt;/p&gt;
&lt;p&gt;其实装黑苹果并不是没有苹果设备，相反我手边就有一台 MacBook Pro。黑苹果最诱惑的地方在于它的性能，比如我的 Ryzen 如果拿来日常开发的话构建编译速度绝对比 Intel 的移动 CPU 好得多。&lt;/p&gt;
&lt;p&gt;而且，装 High Sierra 首先你需要一台 Mac。&lt;/p&gt;</summary>
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
    <category term="macOS" scheme="https://kk.sb/tags/macOS/"/>
    
    <category term="Hackintosh" scheme="https://kk.sb/tags/Hackintosh/"/>
    
  </entry>
  
  <entry>
    <title>装了一台游戏 PC</title>
    <link href="https://kk.sb/2017/new-game-pc.htm"/>
    <id>https://kk.sb/2017/new-game-pc.htm</id>
    <published>2017-03-27T16:29:00.000Z</published>
    <updated>2017-03-27T16:29:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>来深圳已经有4个多月了，平时手边只有一台公司发的 Macbook Pro，<del>根本不能愉快的游戏</del></p><p>加上之前用树莓派来做 NAS，百兆的网口和 USB 2.0 的速度根本不能满足需求…</p><p>所以一开始准备组一个 NAS，本来准备组个 J1900 啥的，结果因为偶尔还想撸撸 World of Warshits，所以干脆还是加钱上了 i3<del>（i3 默秒全）</del></p><p>配置方面的话，用的最辣鸡的 <a href="https://ark.intel.com/products/97455/Intel-Core-i3-7100-Processor-3M-Cache-3_90-GHz">7 代酷睿 i3 7100</a>，默频高达 3.9G，简直就是 excited 啊！<br>主板方面自然是选得 B250 芯片组，因为个人对技嘉比较有好感，最后选的是 <a href="http://www.gigabyte.cn/Motherboard/GA-B250M-D3H-rev-10">B250M-D3H</a> 这款。一方面由于准备上 Micro-ATX 的机箱，所以只能挑小板；加上之前买的傻多戴 <a href="https://item.jd.com/2316993.html">U2417H</a>，最后发现这显示器只有 HDMI 和 DP（含 MiniDP） 两种接口，所以主板方面选了款带 DP &#x2F; HDMI 输出的先用着。<br>内存方面在二手东上随便选了个 8G * 2 的套装（结果一直蓝屏，最后发现有一根抽了，联系京东上门换货，不得不说下二手东这个服务…简直了）<br>机箱的话选了一款铝制的 <a href="http://www.jonsbo.com/products_24_4.html">乔思伯 C3</a>，还有喜闻乐见的大侧透（毕竟主板说他带了灯，感觉不上测透也浪费嘛），这款机箱虽然是 ITX &#x2F; Micro-ATX 的，却可以使用标准 ATX 电源，这样方便了不少。<br>电源考虑到加显卡以及带多硬盘的需要，选了安钛克的 <a href="http://www.antec.com/product.php?id=707077&fid=5022038&lan=nz">Neo ECO 550</a>，毕竟之前也在用，接口够用，关键是不会爆炸。<br>另外因为主板有 M.2 接口，直接就上了块 256G 的爆炸星 <a href="http://www.samsung.com/semiconductor/products/flash-storage/client-ssd/MZVLW256HEHP">PM961</a>，插到主板上就行，不需要占机箱空间，毕竟现在装机 SSD 还是标配嘛。<br>最后把树莓派挂的那块 3T 的硬盘接了上去。</p><p>用了几个星期之后，偶尔打了把战舰世界，发现即使是低画质帧率也没法看。<br>唉，没办法，谁叫我们是辣鸡集显呢，于是权衡了下老黄的 1060 和偷电大师 RX 480，最后还是支持了农企，毕竟手头上想玩的游戏比如大光头一直是 N 卡负优化。</p><p>最后整机下来大致花了 4500 左右，各类游戏基本最高画质都没啥压力。<br>目前只发现 GTA 5 好像会掉帧… 谁叫咱是假 4 核呢，把画质调到高来玩咯，CPU 感觉还是不太需要升级……毕竟大部分时间不需要他满负荷。</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;来深圳已经有4个多月了，平时手边只有一台公司发的 Macbook Pro，&lt;del&gt;根本不能愉快的游戏&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;加上之前用树莓派来做 NAS，百兆的网口和 USB 2.0 的速度根本不能满足需求…&lt;/p&gt;
&lt;p&gt;所以一开始准备组一个 NAS，本来准备组个 </summary>
      
    
    
    
    <category term="Hardware" scheme="https://kk.sb/categories/Hardware/"/>
    
    
    <category term="PC" scheme="https://kk.sb/tags/PC/"/>
    
  </entry>
  
  <entry>
    <title>战舰世界 自动签到</title>
    <link href="https://kk.sb/2016/wows-auto-sign.htm"/>
    <id>https://kk.sb/2016/wows-auto-sign.htm</id>
    <published>2016-09-11T03:32:00.000Z</published>
    <updated>2016-09-11T03:32:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>其实这个坑已经挖了很久了…</p><p>最早挖坑的时候主要是为了<a href="http://wows.kongzhong.com/ztm/fleet/">这个活动</a>的自动签到，然而现在这个所谓永久活动也结束了…</p><p>最早用 Go 实现了验证码的自动识别，这回跟着 dalao 用 python 重写了一遍，然后修改了下验证码的学习算法，让获得的样本更准确（现在验证码识别率居然近似到 100% 了）</p><p>因为 python 的脚本改起来比较容易，如果有新活动的话加个配置就可以实现，目前主要签到的是<a href="http://wows.kongzhong.com/ztm/unitpc/index.html">陆海双雄</a>的活动，等新活动出来加就是了</p><p>研究了下傻逼空中网的接口，现在签到的时候会自动检测是否已签到</p><p>用到了 PIL 来读取图片像素，然后用 requests 包发请求</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;其实这个坑已经挖了很久了…&lt;/p&gt;
&lt;p&gt;最早挖坑的时候主要是为了&lt;a href=&quot;http://wows.kongzhong.com/ztm/fleet/&quot;&gt;这个活动&lt;/a&gt;的自动签到，然而现在这个所谓永久活动也结束了…&lt;/p&gt;
&lt;p&gt;最早用 Go 实现了验证码的自动识别</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
  </entry>
  
  <entry>
    <title>动手生产一个超级精简版的手机 QQ（Android 限定）</title>
    <link href="https://kk.sb/2016/fuck-qq-android.htm"/>
    <id>https://kk.sb/2016/fuck-qq-android.htm</id>
    <published>2016-07-28T11:14:00.000Z</published>
    <updated>2016-07-28T11:14:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>手机 QQ 越来越慢怎么办？<br>轻聊版、国际版功能不全怎么办？</p><p>通过这个脚本，可以轻松精简 Android QQ，仅保留基础的聊天相关功能。</p><p>使用方法：</p><ul><li>传输到手机中</li><li>用 root 权限执行</li></ul><p>PS：详细步骤请见注释<br>PSS：脚本需要 Root 权限<br>PSSS：不用 Root 权限也能进行部分精简（无法操作 data 分区），如有需要自行修改脚本执行即可</p><span id="more"></span><p>脚本地址：（请自备梯子）<br><a href="https://gist.github.com/kookxiang/1104e898f270c9a7a0784f70979ec532">https://gist.github.com/kookxiang/1104e898f270c9a7a0784f70979ec532</a></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;手机 QQ 越来越慢怎么办？&lt;br&gt;轻聊版、国际版功能不全怎么办？&lt;/p&gt;
&lt;p&gt;通过这个脚本，可以轻松精简 Android QQ，仅保留基础的聊天相关功能。&lt;/p&gt;
&lt;p&gt;使用方法：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;传输到手机中&lt;/li&gt;
&lt;li&gt;用 root 权限执行&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;PS：详细步骤请见注释&lt;br&gt;PSS：脚本需要 Root 权限&lt;br&gt;PSSS：不用 Root 权限也能进行部分精简（无法操作 data 分区），如有需要自行修改脚本执行即可&lt;/p&gt;</summary>
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Android" scheme="https://kk.sb/tags/Android/"/>
    
    <category term="QQ" scheme="https://kk.sb/tags/QQ/"/>
    
  </entry>
  
  <entry>
    <title>当 贴吧签到助手 遇上 Go 语言</title>
    <link href="https://kk.sb/2016/tiebasign-with-go-backend.htm"/>
    <id>https://kk.sb/2016/tiebasign-with-go-backend.htm</id>
    <published>2016-06-26T14:06:00.000Z</published>
    <updated>2016-06-26T14:06:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>在贴吧签到助手正式出炉的 3 年后的这个夏天<br>在开发停止 2 年后的今天<br>终于有了一次重大更新</p><p>花了 2 天的时间，重写了相关代码<br>主要是针对 PHP 7.0 的兼容处理，使代码能在 PHP 7.0 下运行</p><p>其次，把签到部分改用 Go 语言实现，多线程签到实测高峰期 CPU 占用率约 0.3%，内存占用 4MB<br>可以大大减少签到对服务器资源的消耗，可以与其他服务同时部署</p><p>由于 3 年间百度登录接口变化，原有登录接口已被废弃无法使用，故本次重写了 BDUSS 的 Chrome 获取扩展<br>可以通过 <a href="https://api.ikk.me/reborn/proxy.htm">https://api.ikk.me/reborn/proxy.htm</a> 页面向扩展请求获取 Cookie</p><p>另外由于签到部分（Go）已经实现和主程序的分离，现在可以实现签到端与网页端分开部署。<br>个人建议将数据库放在签到端保障系统稳定，网页端通过远程连接到数据库进行管理操作。</p><p>目前新版正在进行封闭测试，两位数的用户可以在 2 分钟内完成所有用户签到<br>现在正在考虑进行更多用户的测试，如果我认识你，相信你已经收到邀请码了，如果没有，可以私下找我联系</p><p>New：<a href="https://telegram.me/tiebasign">加入 Telegram 群</a>，不定期发送邀请</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;在贴吧签到助手正式出炉的 3 年后的这个夏天&lt;br&gt;在开发停止 2 年后的今天&lt;br&gt;终于有了一次重大更新&lt;/p&gt;
&lt;p&gt;花了 2 天的时间，重写了相关代码&lt;br&gt;主要是针对 PHP 7.0 的兼容处理，使代码能在 PHP 7.0 下运行&lt;/p&gt;
&lt;p&gt;其次，把签到部分改用</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
  </entry>
  
  <entry>
    <title>解决 Audio 元素 currentTime 属性不准确的问题</title>
    <link href="https://kk.sb/2015/fix-inaccurate-value-of-currentTime-property-in-a-audio-element.htm"/>
    <id>https://kk.sb/2015/fix-inaccurate-value-of-currentTime-property-in-a-audio-element.htm</id>
    <published>2015-10-12T04:11:00.000Z</published>
    <updated>2015-10-12T04:11:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>之前的 KK Player 有一个问题，就是在 Internet Explorer &#x2F; Microsoft Edge 下如果拖动进度条播放时间会很诡异。<br>日前又发现 Firefox 下也有问题，点击跳转到 2 分钟，虽然显示是到了，但是实际上只有 1 分 50 秒多的样子</p><p>这个问题其实很早就知道了，只是当时以为是微软的 bug，然后加上 IE 用户不算多，就暂时放置了。</p><p>这个问题怎么看怎么像浏览器的问题，于是准备到 stackoverflow 提问的，偶然看到系统推荐的<a href="http://stackoverflow.com/a/25468932/2670266">一条类似问题</a></p><p>大致解释下，MP3 是有损压缩格式，浏览器没办法根据时间找到对应的文件流位置(然而并不知道 Chrome 是怎么做到的)，所以会出现如此鬼畜的时间。<br>解决办法只有换用 OGG 格式的无损音频</p><p>然而这下问题更大了，IE &#x2F; Edge 压根不支持这格式… 可以<a href="http://caniuse.com/#feat=ogg-vorbis">点击这里查看 OGG 的浏览器兼容情况</a></p><p>根据浏览器兼容性报告，似乎只有 MP3 格式兼容性最好…<br>直到后来找到了 AAC 格式，兼容性报告在<a href="http://caniuse.com/#feat=aac">这里</a><br>而且 ACC 格式的 currentTime 也没有问题</p><p>于是目前就先用 ACC 格式存放歌曲，待浏览器兼容性改善再考虑用 OGG</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;之前的 KK Player 有一个问题，就是在 Internet Explorer &amp;#x2F; Microsoft Edge 下如果拖动进度条播放时间会很诡异。&lt;br&gt;日前又发现 Firefox 下也有问题，点击跳转到 2 分钟，虽然显示是到了，但是实际上只有 1 分 5</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="HTML5" scheme="https://kk.sb/tags/HTML5/"/>
    
  </entry>
  
  <entry>
    <title>CentOS 7 恢复网络记</title>
    <link href="https://kk.sb/2015/restore-network-on-centos-7.htm"/>
    <id>https://kk.sb/2015/restore-network-on-centos-7.htm</id>
    <published>2015-09-15T11:51:00.000Z</published>
    <updated>2015-09-15T11:51:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>今天出门<a href="http://www.gdrsks.gov.cn/ksxx/kszc_show.asp?id=2858">办点事</a>，回家路上 <a href="https://www.loacg.com/">不愿意透露姓名的 Sendya</a> 这傻逼一直在骚扰我：</p><blockquote><p>[15:31] 刚刚<br>[15:31] 开firewalld 端口扫描都有开起来，但是就是不通<br>[15:31] 搞了一两小时没搞定<br>[15:31] 火一大 -y remove iptables<br>[15:31] ……..<br>[15:31] network没了<br>[15:31] 233<br><img src="/2015/restore-network-on-centos-7/photo_2015-09-15_20-01-16.jpg" loading="lazy"><br>[15:32] 我在想。<br>[15:32] 数据库怎么办<br>[15:35] 终端能进<br>[15:36] 但是没 network 啊 &#x3D; &#x3D;<br>[15:36] 我是不是大傻逼<br>[15:36] NetworkManager<br>[15:36] 没了<br>[15:36] 只有 127.0.0.1</p></blockquote><span id="more"></span><p>言归正传，那么如何修复 CentOS 的网络连接呢？<br>参考了 <a href="http://askubuntu.com/questions/422928/how-to-reinstall-network-manager-without-internet-access">AskUbuntu</a> 上的解决办法<br>首先我们需要通过光盘启动，然后在网络连通的情况下挂载磁盘，chroot 进根目录，然后通过 yum 安装<br>于是要了 Conoha 的后台账号密码，连上终端</p><p>因为是 VPS，加载光盘不是问题<br>载入光盘后重启，选择 Troubleshooting -&gt; Rescue a CentOS system<br>这逼居然帮你自动挂载好了分区……好吧<br>ping 8.8.8.8 发现不通<br>ifconfig 发现网卡正常，但没有有效 IP 地址<br>没有的话我们就手动添加嘛 <code>ifconfig eth0 163.44.*.* netmask 255.255.254.0</code> （隐去后 16 位 IP 地址）<br>然后 ping 8.8.8.8 发现还不通……<br>突然反应过来好像还有个默认网关没配……<br>于是乎又 <code>route add default gw 163.44.*.* eth0</code><br>ping 8.8.8.8 通了，接下来就好办了</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">chroot /mnt/sysimage/</span><br><span class="line">yum update -y</span><br><span class="line">yum install -y NetworkManager</span><br><span class="line">vi /etc/sysconfig/network-scripts/ifcfg-eth0</span><br><span class="line">reboot</span><br></pre></td></tr></table></figure><p>重启后登录服务器，ping 8.8.8.8 正常，问题解决</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;今天出门&lt;a href=&quot;http://www.gdrsks.gov.cn/ksxx/kszc_show.asp?id=2858&quot;&gt;办点事&lt;/a&gt;，回家路上 &lt;a href=&quot;https://www.loacg.com/&quot;&gt;不愿意透露姓名的 Sendya&lt;/a&gt; 这傻逼一直在骚扰我：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;[15:31] 刚刚&lt;br&gt;[15:31] 开firewalld 端口扫描都有开起来，但是就是不通&lt;br&gt;[15:31] 搞了一两小时没搞定&lt;br&gt;[15:31] 火一大 -y remove iptables&lt;br&gt;[15:31] ……..&lt;br&gt;[15:31] network没了&lt;br&gt;[15:31] 233&lt;br&gt;&lt;img src=&quot;/2015/restore-network-on-centos-7/photo_2015-09-15_20-01-16.jpg&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;[15:32] 我在想。&lt;br&gt;[15:32] 数据库怎么办&lt;br&gt;[15:35] 终端能进&lt;br&gt;[15:36] 但是没 network 啊 &amp;#x3D; &amp;#x3D;&lt;br&gt;[15:36] 我是不是大傻逼&lt;br&gt;[15:36] NetworkManager&lt;br&gt;[15:36] 没了&lt;br&gt;[15:36] 只有 127.0.0.1&lt;/p&gt;
&lt;/blockquote&gt;</summary>
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
    <category term="CentOS" scheme="https://kk.sb/tags/CentOS/"/>
    
    <category term="Linux" scheme="https://kk.sb/tags/Linux/"/>
    
  </entry>
  
  <entry>
    <title>Windows 版的 Time Machine - 文件历史记录</title>
    <link href="https://kk.sb/2015/file-history-windows.htm"/>
    <id>https://kk.sb/2015/file-history-windows.htm</id>
    <published>2015-06-22T06:36:00.000Z</published>
    <updated>2015-06-22T06:36:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>文件历史记录是一个备份应用程序，它会持续保护存储在库、桌面、收藏夹和联系人文件夹中的个人文件。它定期扫描（默认情况下每小时一次）文件系统中的更改并将更改的文件复制到另一位置。每当您的任何个人文件发生更改时，其副本都将存储在您选择的专用外部存储设备上。随着时间的推移，文件历史记录将会建立对任何个人文件所做更改的完整历史记录。</p><p>这是 Windows 8+ 中推出的一项新功能，可为消费者提供一种保护文件的新方式。它将取代 Windows 7 中现有的 Windows 备份和还原功能。</p><p>最重要的一点，它是增量备份的，不用担心上千个备份会占用大量磁盘空间</p><p>配置方式非常简单，在控制面板中点击“文件历史记录”，设置好备份的磁盘启用就行</p><p>要添加自定义目录，可以新建一个库，例如代码库，然后将要包含的文件夹（例如E:\Workspace）加到库中，那么里面的文件将会自动备份</p><span id="more"></span><p>来自微软的视频介绍：</p><p><video src="//media.ch9.ms/ch9/c493/935cb61b-383e-4b2b-aeba-8522337ac493/ProtectingUserFileswFileHistory_high.mp4" controls></video></p><p>你可以对库中任意文件右键，选择“还原以前的版本”进行还原：<br><img src="/2015/file-history-windows/%E6%97%A0%E6%A0%87%E9%A2%98.png" alt="无标题.png" loading="lazy"></p>]]></content>
    
    
    <summary type="html">&lt;p&gt;文件历史记录是一个备份应用程序，它会持续保护存储在库、桌面、收藏夹和联系人文件夹中的个人文件。它定期扫描（默认情况下每小时一次）文件系统中的更改并将更改的文件复制到另一位置。每当您的任何个人文件发生更改时，其副本都将存储在您选择的专用外部存储设备上。随着时间的推移，文件历史记录将会建立对任何个人文件所做更改的完整历史记录。&lt;/p&gt;
&lt;p&gt;这是 Windows 8+ 中推出的一项新功能，可为消费者提供一种保护文件的新方式。它将取代 Windows 7 中现有的 Windows 备份和还原功能。&lt;/p&gt;
&lt;p&gt;最重要的一点，它是增量备份的，不用担心上千个备份会占用大量磁盘空间&lt;/p&gt;
&lt;p&gt;配置方式非常简单，在控制面板中点击“文件历史记录”，设置好备份的磁盘启用就行&lt;/p&gt;
&lt;p&gt;要添加自定义目录，可以新建一个库，例如代码库，然后将要包含的文件夹（例如E:\Workspace）加到库中，那么里面的文件将会自动备份&lt;/p&gt;</summary>
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
    <category term="Windows" scheme="https://kk.sb/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>四月是你的谎言 补完纪念</title>
    <link href="https://kk.sb/2015/shigatsu-wa-kimi-no-uso.htm"/>
    <id>https://kk.sb/2015/shigatsu-wa-kimi-no-uso.htm</id>
    <published>2015-02-07T16:24:00.000Z</published>
    <updated>2015-02-07T16:24:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>十月新番 四月是你的谎言 (<del>四月是你的遗言</del>) 漫画版已经完结了</p><p>看完最新一集实在忍不住去补漫画了</p><p>好像是第二次等不下去动漫直接翻的漫画（第一次是<a href="http://bgm.tv/subject/1428">FA</a>）</p><p>这番剧情真心虐，贴一下结局好了</p><p><em><strong>以下内容涉及剧透，自己看着办吧</strong></em></p><span id="more"></span><figure class="highlight text"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br><span class="line">39</span><br><span class="line">40</span><br></pre></td><td class="code"><pre><span class="line">被我用权宜之计带来的你，和想象中不同。</span><br><span class="line">比想的要更加，更加阴暗，更加自卑，固执，是一个纠缠不休的偷拍狂；</span><br><span class="line">比想的要更加声音低，比想的要更加男孩子气。</span><br><span class="line">但却和想象中一样，是一个温柔的人。</span><br><span class="line"></span><br><span class="line">从度胸桥上跳进的河流，冰冷却舒服；</span><br><span class="line">和电车赛跑，觉得自己真的赢了；</span><br><span class="line">偷看着音乐教室的满月，像是包子一样美味；</span><br><span class="line">两个人在自行车上唱的小星星，音程偏移了好多，歌声有些绝望呢。</span><br><span class="line"></span><br><span class="line">夜晚的学校，绝对有什么吧。</span><br><span class="line">雪，和樱花的花瓣很相似呢。</span><br><span class="line"></span><br><span class="line">明明是演奏家，舞台之外的东西却充满了内心，是不是很奇怪啊。</span><br><span class="line">忘不掉的风景，都是这么细微的事物，真的很奇怪呢。</span><br><span class="line"></span><br><span class="line">你，会怎么做呢？</span><br><span class="line">我能够在谁的心里驻足呢？</span><br><span class="line">我啊，能够住在你心里吗。</span><br><span class="line">我可是没脱鞋子就拼命地挣扎到现在哦。</span><br><span class="line">就算只是一点也好，你会想起我吗——</span><br><span class="line">如果忘了——</span><br><span class="line">明明都要变成幽灵了——</span><br><span class="line"></span><br><span class="line">Reset什么的才不要呢。</span><br><span class="line">不要忘了哦。</span><br><span class="line">说好了哦。</span><br><span class="line">果然，是你的话太好了。</span><br><span class="line"></span><br><span class="line">传达到了吗。传达到了就好了。有马公生君。</span><br><span class="line">我喜欢你，喜欢你，喜欢你。</span><br><span class="line"></span><br><span class="line">卡纳蕾（一种法式蛋糕）没办法全部吃光了，对不起。</span><br><span class="line">打了你很多次，对不起。</span><br><span class="line">净是那么任性，对不起。</span><br><span class="line">好多，好多的，对不起。</span><br><span class="line"></span><br><span class="line">谢谢你——</span><br><span class="line">P.S. 我的宝物也一起放在信封里。 我不在之后就请撕了扔掉吧。</span><br><span class="line">宫园薰</span><br></pre></td></tr></table></figure>]]></content>
    
    
    <summary type="html">&lt;p&gt;十月新番 四月是你的谎言 (&lt;del&gt;四月是你的遗言&lt;/del&gt;) 漫画版已经完结了&lt;/p&gt;
&lt;p&gt;看完最新一集实在忍不住去补漫画了&lt;/p&gt;
&lt;p&gt;好像是第二次等不下去动漫直接翻的漫画（第一次是&lt;a href=&quot;http://bgm.tv/subject/1428&quot;&gt;FA&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;这番剧情真心虐，贴一下结局好了&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;以下内容涉及剧透，自己看着办吧&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</summary>
    
    
    
    <category term="Anime" scheme="https://kk.sb/categories/Anime/"/>
    
    
  </entry>
  
  <entry>
    <title>同步本地 / 服务器代码 - Git 篇</title>
    <link href="https://kk.sb/2015/sync-local-and-server-code-by-git.htm"/>
    <id>https://kk.sb/2015/sync-local-and-server-code-by-git.htm</id>
    <published>2015-02-04T02:03:00.000Z</published>
    <updated>2015-02-04T02:03:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>已经习惯用 Git 进行开发了，不得不说 Git 的确是个很好用的开发工具</p><p>有的时候经常会需要一边维护一个 Git 库，一边将代码部署到服务器上<br>例如团队共同进行开发，希望 commit 后自动部署到团队的测试服务器上，就可以采用下面的办法</p><p>首先先在服务器上创建一个 Git 库</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">git init --bare</span><br></pre></td></tr></table></figure><p>然后打开 .git 文件夹，找到 hooks 文件夹，创建一个 post-receive 文件</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line"><span class="meta">#!/bin/sh</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># An example hook script to prepare a packed repository for use over</span></span><br><span class="line"><span class="comment"># dumb transports.</span></span><br><span class="line"><span class="comment">#</span></span><br><span class="line"><span class="comment"># To enable this hook, rename this file to &quot;post-update&quot;.</span></span><br><span class="line"></span><br><span class="line"><span class="comment">#exec git update-server-info</span></span><br><span class="line"></span><br><span class="line"><span class="built_in">cd</span> /var/www/buildbot.ikk.me/snapshot/KanColleTranslation/</span><br><span class="line"></span><br><span class="line"><span class="built_in">env</span> -i git pull</span><br></pre></td></tr></table></figure><p>然后给这个文件赋予执行权限即可</p><p>由于我提前在网站上 git clone 过，于是直接 Pull 就行了<br>由于这是开放的库，就没有限制 .git 文件夹，如果需要限制可以在上面加 rm 命令，或是 nginx 屏蔽<br>当然想简单的话个人推荐把 git pull 换成 cp 简单粗暴</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;已经习惯用 Git 进行开发了，不得不说 Git 的确是个很好用的开发工具&lt;/p&gt;
&lt;p&gt;有的时候经常会需要一边维护一个 Git 库，一边将代码部署到服务器上&lt;br&gt;例如团队共同进行开发，希望 commit 后自动部署到团队的测试服务器上，就可以采用下面的办法&lt;/p&gt;
&lt;p</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Git" scheme="https://kk.sb/tags/Git/"/>
    
  </entry>
  
  <entry>
    <title>给 Typecho 添加双因素认证支持</title>
    <link href="https://kk.sb/2015/add-two-factor-authentication-for-typecho.htm"/>
    <id>https://kk.sb/2015/add-two-factor-authentication-for-typecho.htm</id>
    <published>2015-01-04T03:17:00.000Z</published>
    <updated>2015-01-04T03:17:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>不得不说双因素认证的确是一种保护账号安全的有效方法，Google、GitHub和众多网站纷纷支持双因素认证保护账号，这次我把双因素认证移植到了 typecho 上</p><p>首先不得不说下，typecho 并没有给登录预留插件接口，只有登录成功和登录失败的处理接口，登陆界面也没有可以插入的地方，所以这回直接对 Typecho 源代码下手了</p><p>首先下载修改后的 Typecho 分支：<br><a href="https://github.com/kookxiang/typecho">https://github.com/kookxiang/typecho</a></p><p>然后执行 SQL：</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">ALTER</span> <span class="keyword">TABLE</span> `typecho_users` <span class="keyword">ADD</span> <span class="keyword">COLUMN</span> `twoFactorAuthKey` <span class="type">varchar</span>(<span class="number">18</span>) <span class="keyword">NOT</span> <span class="keyword">NULL</span>;</span><br></pre></td></tr></table></figure><p>（本来可以放到 Typecho 更新程序中自动执行的，考虑到日后升级问题，就没有放过去）</p><p>登录到后台，点击<code>控制台</code> <code>个人设置</code>，最下方可以看到“双因素认证”，有随机生成的一组 Key，手动添加到 Google Authenticator 或者 Authy 中就可以使用了。当然也可以通过二维码方式添加，不过考虑到 Google API 在国内的可用率还是建议开着梯子访问。</p><p>添加到手机之后将当前验证码填写到确认框中点击启用即可启用。此后每次登录后台不论密码是否正确都将要求输入动态密码（增加暴力破解难度）</p><p>如需取消，可以登录后台输入动态密码取消。<br>如果无法登录后台，可以到数据库中清空对应用户的 <code>twoFactorAuthKey</code> 字段</p><p>就是这样~</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;不得不说双因素认证的确是一种保护账号安全的有效方法，Google、GitHub和众多网站纷纷支持双因素认证保护账号，这次我把双因素认证移植到了 typecho 上&lt;/p&gt;
&lt;p&gt;首先不得不说下，typecho 并没有给登录预留插件接口，只有登录成功和登录失败的处理接口，登陆</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Typecho" scheme="https://kk.sb/tags/Typecho/"/>
    
  </entry>
  
  <entry>
    <title>干掉狗日的 XLServicePlatform</title>
    <link href="https://kk.sb/2014/fuck-thunder-service-xlserviceplatform.htm"/>
    <id>https://kk.sb/2014/fuck-thunder-service-xlserviceplatform.htm</id>
    <published>2014-12-30T13:46:00.000Z</published>
    <updated>2014-12-30T13:46:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>国产流氓软件真是让人受不了<del>（毕竟狗改不了吃屎嘛）</del></p><p>迅雷这骚逼现在学会自动修复 XLServicePlatform 服务了，如果你关闭了这个服务，那么他就会悄悄设置成自动启动模式，没有任何提示</p><p>这回直接用 Windows 的权限控制来治一治这骚货</p><ol><li>首先把你的迅雷退了</li><li>打开注册表编辑器，定位到 <code>HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\XLServicePlatform</code></li><li>右边修改 <code>Start</code> 为 4 （禁用）</li><li>修改 <code>ImagePath</code>，比如我用的是 <code>Xunlei.com/AssHole</code>，防止它自动启动</li><li>左边找到 <code>Parameters</code> 子项，删除 <code>ServiceDll</code></li><li>心情好可以改改 <code>Description</code>，我就懒得写脏话了</li><li>右击 <code>XLServicePlatform</code> 选择 <code>权限</code></li><li>依次点击 <code>高级</code> <code>添加</code> <code>选择主体</code> <code>高级...</code> <code>立即查找</code> 选择 <code>Everyone</code>，点击 <code>确定</code>*2</li><li><code>显示高级权限</code>，勾选 <code>删除</code> <code>设置数值</code> <code>创建子项</code>，然后将上方类型修改为 <code>拒绝</code>，确定</li><li>点击 <code>使用可从此对象继承的权限项目替换所有子对象的权限项目</code> <code>确定</code>*N</li></ol><p>PS：Windows 会弹出关于权限的提示，无视就好<br>PSS：要是迅雷将来学会修改权限了，就干脆把整个项的所有权限都禁了，既然这么贱就大家都别都写了</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;国产流氓软件真是让人受不了&lt;del&gt;（毕竟狗改不了吃屎嘛）&lt;/del&gt;&lt;/p&gt;
&lt;p&gt;迅雷这骚逼现在学会自动修复 XLServicePlatform 服务了，如果你关闭了这个服务，那么他就会悄悄设置成自动启动模式，没有任何提示&lt;/p&gt;
&lt;p&gt;这回直接用 Windows 的权</summary>
      
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
    <category term="迅雷" scheme="https://kk.sb/tags/%E8%BF%85%E9%9B%B7/"/>
    
  </entry>
  
  <entry>
    <title>让 Discuz 支持 MariaDB</title>
    <link href="https://kk.sb/2014/use-discuz-with-mariadb.htm"/>
    <id>https://kk.sb/2014/use-discuz-with-mariadb.htm</id>
    <published>2014-04-09T05:45:00.000Z</published>
    <updated>2014-04-09T05:45:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>昨晚把博客和论坛搬回国内了；博客在搬的过程中倒还挺轻松，只是 Discuz 搬迁后出现水土不服，提示</p><pre><code>Illegal mix of collations (gbk chinese ci,IMPLICIT) and (latin1_swedish_ci,COERCIBLE) for operation &#39;=&#39;</code></pre><p>搜索后大概意思是说数据库编码不对。<br>我就郁闷了，数据库是 GBK 的，字段是 GBK 的，程序也是 GBK 的，怎么会编码有问题呢？<br>绕过计划任务进入论坛，发现论坛中文全部乱码了。<br>难道是我导入数据的时候有问题？于是乎我又重新用 GB2312 导出一份，上传到服务器，依然不行。<br>反反复复折腾一个小时之后，一个偶然的机会下发现 Discuz 下数据库被设置为 lantin 编码，这和 phpmyadmin 看到的不一样啊！<br>然后又研究了许久 Discuz 的数据库类，明明有设置为 GBK 的，难道没设置成功？<br>在程序中加入 DB::query() 设置编码，发现居然可以了，这是什么道理？？表示不服<br>难道用 mysql_query() 就不行么？可是 DB::query() 又是调用 mysql_query() 的啊<br>偶然调节代码顺序的时候，发现移动到 if($this-&gt;version() &gt; ‘4.1’) 外侧竟然执行成功了<br>尼玛原来你才是罪魁祸首<br>可是这句话有问题么？输出下</p><pre><code>10.0.9-MariaDB</code></pre><p>尼玛我瞬间就明白了，这是一个字符串，“4.1”也是一个字符串，字符串比较是逐一比较各字符，先判断 1 &lt; 4，然后得出 10.0.9-MariaDB &lt; 4.1<br>我 QNMLGB，害我倒腾两个小时……</p><p>解决办法：<br>修改 version 方法，return ‘9.9.9’;</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;昨晚把博客和论坛搬回国内了；博客在搬的过程中倒还挺轻松，只是 Discuz 搬迁后出现水土不服，提示&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Illegal mix of collations (gbk chinese ci,IMPLICIT) and (latin1_swedish</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Discuz" scheme="https://kk.sb/tags/Discuz/"/>
    
  </entry>
  
  <entry>
    <title>让 Discuz! 帖子列表支持倒序排序</title>
    <link href="https://kk.sb/2014/add-parameter-to-sort-threads-in-discuz.htm"/>
    <id>https://kk.sb/2014/add-parameter-to-sort-threads-in-discuz.htm</id>
    <published>2014-04-08T05:42:00.000Z</published>
    <updated>2014-04-08T05:42:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>Discuz! 虽然能够在后台修改帖子的排序方式，但却不能选择是倒序还是顺序排序。</p><p>为解决这个问题，可采用以下修改办法：<br>修改文件 source&#x2F;module&#x2F;forum&#x2F;forum_forumdisplay.php，找到 457 行：</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line"><span class="variable">$_GET</span>[<span class="string">&#x27;ascdesc&#x27;</span>] = <span class="keyword">isset</span>(<span class="variable">$_G</span>[<span class="string">&#x27;cache&#x27;</span>][<span class="string">&#x27;forums&#x27;</span>][<span class="variable">$_G</span>[<span class="string">&#x27;fid&#x27;</span>]][<span class="string">&#x27;ascdesc&#x27;</span>]) ? <span class="variable">$_G</span>[<span class="string">&#x27;cache&#x27;</span>][<span class="string">&#x27;forums&#x27;</span>][<span class="variable">$_G</span>[<span class="string">&#x27;fid&#x27;</span>]][<span class="string">&#x27;ascdesc&#x27;</span>] : <span class="string">&#x27;DESC&#x27;</span>;</span><br></pre></td></tr></table></figure><p>在下方加入：</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// Modified by kookxiang @ 2014-4-8 13:05:07</span></span><br><span class="line"><span class="keyword">if</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;forceasc&#x27;</span>]) <span class="variable">$_GET</span>[<span class="string">&#x27;ascdesc&#x27;</span>] = <span class="string">&#x27;ASC&#x27;</span>;</span><br><span class="line"><span class="keyword">if</span>(<span class="variable">$_GET</span>[<span class="string">&#x27;forcedesc&#x27;</span>]) <span class="variable">$_GET</span>[<span class="string">&#x27;ascdesc&#x27;</span>] = <span class="string">&#x27;DESC&#x27;</span>;</span><br><span class="line"><span class="comment">// Ending of modification</span></span><br></pre></td></tr></table></figure><p>这样便能通过 URL 参数 forceasc 和 forcedesc 控制排序了</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;Discuz! 虽然能够在后台修改帖子的排序方式，但却不能选择是倒序还是顺序排序。&lt;/p&gt;
&lt;p&gt;为解决这个问题，可采用以下修改办法：&lt;br&gt;修改文件 source&amp;#x2F;module&amp;#x2F;forum&amp;#x2F;forum_forumdisplay.php，找到 </summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Discuz" scheme="https://kk.sb/tags/Discuz/"/>
    
  </entry>
  
  <entry>
    <title>离开 WiFi 范围自动禁用 WiFi</title>
    <link href="https://kk.sb/2014/android-auto-wifi.htm"/>
    <id>https://kk.sb/2014/android-auto-wifi.htm</id>
    <published>2014-04-03T12:53:00.000Z</published>
    <updated>2014-04-03T12:53:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>学生党表示宿舍长期开着WiFi，出去上课的时候总是不记得关。</p><p>本着能省一点是一点的精神，希望离开WiFi范围的时候能自动关掉，于是自己动手写了个。</p><p>程序本身不占用任何资源，没有后台进程。自动注册一个网络状态监听器，当WiFi断开一段时间之后关闭WiFi。</p><p>值得注意的是，由于 Android 4.0 以上版本的限制，要注册监听器必须至少启动过一次程序，所以<strong>装好后需要手动点一下图标</strong>。<br>启动后程序自动隐藏程序图标（因为你点进去也没用 →_→）</p><p>之后可能会考虑加个连接充电器的时候自动扫描WiFi，放在无线充电板上爽歪歪（笑</p><p>下载在这里：<a href="/2014/android-auto-wifi/KK%20Auto%20Wifi.apk">KK Auto Wifi.apk</a></p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;学生党表示宿舍长期开着WiFi，出去上课的时候总是不记得关。&lt;/p&gt;
&lt;p&gt;本着能省一点是一点的精神，希望离开WiFi范围的时候能自动关掉，于是自己动手写了个。&lt;/p&gt;
&lt;p&gt;程序本身不占用任何资源，没有后台进程。自动注册一个网络状态监听器，当WiFi断开一段时间之后关闭W</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Android" scheme="https://kk.sb/tags/Android/"/>
    
  </entry>
  
  <entry>
    <title>在 Ryzen 平台上安装 macOS High Sierra</title>
    <link href="https://kk.sb/2013/hp-envy4-bios-set-hdd-mode.htm"/>
    <id>https://kk.sb/2013/hp-envy4-bios-set-hdd-mode.htm</id>
    <published>2013-09-20T15:15:00.000Z</published>
    <updated>2013-09-20T15:15:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>写在前面：</p><blockquote><p>千万别买 HP 的笔记本了……<br>真把自己当老大了？还锁 BIOS……<br>就那几个选项你也好意思叫做BIOS？</p></blockquote><p>如何修改硬盘工作模式：</p><ol><li><p>确保已经开启 UEFI 模式</p></li><li><p>准备一个 FAT32 格式的 U 盘</p></li><li><p>下载并解压 <a href="/2013/hp-envy4-bios-set-hdd-mode/BOOTX64.zip">BOOTX64.zip</a>，扔到 U 盘根目录和 <code>/EFI/BOOT/</code> 下</p></li><li><p>重启电脑，按 F9 选 U 盘启动</p></li><li><p>键入命令：</p><figure class="highlight shell"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">setup_var 0x39 0x01</span><br></pre></td></tr></table></figure></li><li><p>按 <kbd>Ctrl</kbd> <kbd>Alt</kbd> <kbd>Del</kbd> 键重启，工作模式切换完毕</p></li></ol><p>附各模式和值的对照表：</p><table><thead><tr><th>command</th><th>offset</th><th>value</th><th></th></tr></thead><tbody><tr><td>setup_var</td><td>0x39</td><td>0x00</td><td>IDE 兼容模式</td></tr><tr><td>setup_var</td><td>0x39</td><td>0x01</td><td>AHCI 模式</td></tr><tr><td>setup_var</td><td>0x39</td><td>0x02</td><td>RAID 模式</td></tr></tbody></table>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;写在前面：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;千万别买 HP 的笔记本了……&lt;br&gt;真把自己当老大了？还锁 BIOS……&lt;br&gt;就那几个选项你也好意思叫做BIOS？&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;如何修改硬盘工作模式：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;确保</summary>
      
    
    
    
    <category term="Diary" scheme="https://kk.sb/categories/diary/"/>
    
    
  </entry>
  
  <entry>
    <title>将 QoS“限制可保留带宽”设置为 0% 真的能为网络提速吗？</title>
    <link href="https://kk.sb/2013/force-qos-restricting-reserved-bandwidth-to-0-can-really-increase-network-speed.htm"/>
    <id>https://kk.sb/2013/force-qos-restricting-reserved-bandwidth-to-0-can-really-increase-network-speed.htm</id>
    <published>2013-01-14T09:35:00.000Z</published>
    <updated>2013-01-14T09:35:00.000Z</updated>
    
    <content type="html"><![CDATA[<p><img src="/2013/force-qos-restricting-reserved-bandwidth-to-0-can-really-increase-network-speed/QQ%E6%88%AA%E5%9B%BE20130114172716.png" loading="lazy"></p><p>很多关于系统优化的文章都提到过 QoS “限制可保留带宽”这个设置项。<br>系统的默认值是 20%，很多人将它修改为 0%，认为这能起到提升带宽的作用，可是这种修改方法真的有效吗？</p><p>我们可以在微软的<a href="http://support.microsoft.com/kb/316666/zh-cn">这篇文章</a>中找到关于这项功能的说明：</p><blockquote><p>像在 Windows 2000 中一样，程序可以通过 Windows XP 中的 QoS API 利用 QoS。所有程序可以共享百分之百的网络带宽，除非有某一程序特别要求带宽优先权。其他程序也可以使用此“保留”的带宽，但请求此带宽的程序正在发送数据时除外。默认情况下，程序在终端计算机的每一个接口上可以预留基本链接速度的 20% 的聚合带宽。如果保留带宽的程序发送的数据量没有完全用完带宽，则保留带宽的未用部分可用于同一主机上的其他数据流。</p></blockquote><p>显然，修改此设定完全不可能实现网络加速，反倒会使某些程序无法获得较高的网络优先级。</p><p>所以在这里建议大家不要将这个数值修改为 0%，可以设置为 10% 或是 5%（具体根据你的网络带宽而定），或是直接使用默认的 20%。这个选项对提高网络带宽真的没啥用……</p>]]></content>
    
    
      
      
    <summary type="html">&lt;p&gt;&lt;img src=&quot;/2013/force-qos-restricting-reserved-bandwidth-to-0-can-really-increase-network-speed/QQ%E6%88%AA%E5%9B%BE20130114172716.png&quot; l</summary>
      
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Windows" scheme="https://kk.sb/tags/Windows/"/>
    
  </entry>
  
  <entry>
    <title>Typecho 修改固定链接后的SEO技巧</title>
    <link href="https://kk.sb/2011/seo-before-typecho-change-permalink.htm"/>
    <id>https://kk.sb/2011/seo-before-typecho-change-permalink.htm</id>
    <published>2011-11-12T11:47:00.000Z</published>
    <updated>2011-11-12T11:47:00.000Z</updated>
    
    <content type="html"><![CDATA[<p>前两天将博客固定链接中最后的那个 id 换成了文章的缩略名，这下可惨了，搜索引擎们都得重新抓取一遍，我可懒得等他，当然，也怕给谷歌百度神马的降权了，于是有了这篇文章：</p><p>首先我的思路是通过 PHP 插入一段代码，识别到链接中最后一个参数为数字 id 则自动到数据库中查询并 301 到新地址。</p><p>于是问了问 Google 大哥，PHP 怎么获得伪静态的地址，这点问题对谷歌来说毫无压力——<code>$_SERVER[&#39;ORIG_PATH_INFO&#39;]</code>——就是他，然后便轮到正则了，由于是数字，这部分也很简单：<code>.+\/([0-9]+)\.html</code></p><p>完成了，接下来的步骤便是用 PHP 将这堆东西整理起来：</p><span id="more"></span><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/* KK&#x27;s 301 */</span></span><br><span class="line"><span class="title function_ invoke__">preg_match</span>(<span class="string">&#x27;/.+\/([0-9]+)\.html/i&#x27;</span>, <span class="variable">$_SERVER</span>[<span class="string">&#x27;ORIG_PATH_INFO&#x27;</span>], <span class="variable">$matches</span>);</span><br><span class="line"><span class="keyword">if</span>(<span class="variable">$matches</span>[<span class="number">1</span>])&#123;</span><br><span class="line"><span class="variable">$post_id</span> = <span class="variable">$matches</span>[<span class="number">1</span>];</span><br><span class="line"><span class="variable">$query</span> = <span class="variable">$db</span>-&gt;<span class="title function_ invoke__">sql</span>()-&gt;<span class="title function_ invoke__">select</span>(<span class="string">&#x27;slug&#x27;</span>)-&gt;<span class="keyword">from</span>(<span class="string">&#x27;table.contents&#x27;</span>)-&gt;<span class="title function_ invoke__">where</span>(<span class="string">&#x27;cid = ?&#x27;</span>, <span class="variable">$post_id</span>);</span><br><span class="line"><span class="variable">$result</span> = <span class="variable">$db</span>-&gt;<span class="title function_ invoke__">fetchRow</span>(<span class="variable">$query</span>);</span><br><span class="line"><span class="variable">$url</span> = <span class="title function_ invoke__">str_replace</span>(<span class="variable">$post_id</span>, <span class="title function_ invoke__">urlencode</span>(<span class="variable">$result</span>[<span class="string">&#x27;slug&#x27;</span>]), <span class="variable">$_SERVER</span>[<span class="string">&#x27;ORIG_PATH_INFO&#x27;</span>]);</span><br><span class="line"><span class="title function_ invoke__">header</span>(<span class="string">&#x27;HTTP/1.1 301 Moved Permanently&#x27;</span>);</span><br><span class="line"><span class="title function_ invoke__">header</span>(<span class="string">&quot;Location: <span class="subst">&#123;$url&#125;</span>&quot;</span>);</span><br><span class="line"><span class="keyword">exit</span>();</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>然后——最后一步当然是找个地方放这段代码啦，根据我对 Typecho 的一些了解，应该放在 index.php 中，这是 Typecho 的核心，所有页面都会被伪静态到这个 PHP 中。</p><p>因为我们这里用到了 Typecho 的数据库类，所以代码应该放在 <code>include config.inc.php</code> 的后面（这个 config 文件初始化了数据库类） 其次留意到 Typecho 注释：</p><figure class="highlight php"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">/** 开始路由分发 */</span></span><br><span class="line"><span class="title class_">Typecho_Router</span>::<span class="title function_ invoke__">dispatch</span>();</span><br></pre></td></tr></table></figure><p>显然，我们的代码应该放在它前面，不然系统会比你先输出个 404 页面。</p><p>好了，我们再打开个以“文章id.html”结尾的页面，看看代码是否正常即可。<br>（PS：由于我忘了更新CDN缓存，还以为代码错了⊙﹏⊙b）</p>]]></content>
    
    
    <summary type="html">&lt;p&gt;前两天将博客固定链接中最后的那个 id 换成了文章的缩略名，这下可惨了，搜索引擎们都得重新抓取一遍，我可懒得等他，当然，也怕给谷歌百度神马的降权了，于是有了这篇文章：&lt;/p&gt;
&lt;p&gt;首先我的思路是通过 PHP 插入一段代码，识别到链接中最后一个参数为数字 id 则自动到数据库中查询并 301 到新地址。&lt;/p&gt;
&lt;p&gt;于是问了问 Google 大哥，PHP 怎么获得伪静态的地址，这点问题对谷歌来说毫无压力——&lt;code&gt;$_SERVER[&amp;#39;ORIG_PATH_INFO&amp;#39;]&lt;/code&gt;——就是他，然后便轮到正则了，由于是数字，这部分也很简单：&lt;code&gt;.+\/([0-9]+)\.html&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;完成了，接下来的步骤便是用 PHP 将这堆东西整理起来：&lt;/p&gt;</summary>
    
    
    
    <category term="Development" scheme="https://kk.sb/categories/develop/"/>
    
    
    <category term="Typecho" scheme="https://kk.sb/tags/Typecho/"/>
    
  </entry>
  
</feed>
