告别 NPM Token:迁移到 Trusted Publishing 全记录

<h2 id="发生了什么">发生了什么?</h2> <p>2025 年 12 月 9 日,npm 正式<strong>永久撤销了所有 Classic Token</strong>。与此同时,npm 引入了基于会话的认证(2 小时有效期)和新的 CLI Token 管理方式。这意味着:</p> <ul> <li>所有 Classic Token 立即失效,无法恢复</li> <li><code>npm login</code> 现在只发放 2 小时的短期会话令牌</li> <li>CI/CD 场景推荐使用 <strong>Granular Access Token</strong> 或 <strong>OIDC Trusted Publishing</strong></li> </ul> <p>我的 GitHub 项目 CI 工作流自然也挂了 —— 因为 Secrets 里存的还是那个已被吊销的 Classic Token。</p>

2026/2/15
阅读更多

Sing-box:IPv6 优先出站与 Netflix 强制 IPv6 分流

<p>很多 VPS 的 IPv4 出口因为被滥用、共享 NAT 或者 IP 段&quot;脏&quot;,导致访问某些服务时体验不佳。相比之下,<strong>IPv6 出口往往更干净</strong>——毕竟 IPv6 地址段大、用的人少、很多服务商对 IPv6 的风控也没那么严格。</p> <p>本文记录如何在 sing-box 上实现:</p>

2026/1/16
阅读更多

[All In One] HomeLab 虚拟化 iKuai + Mihomo - IPv6 支持

<p>本文是 <a href="https://wayjam.me/posts/allinone-2025-transparent-gateway">All In One HomeLab 虚拟化 iKuai + Mihomo</a> 的 IPv6 扩展配置,介绍如何在现有的透明网关(Debian/LXC 作为 Clash/Mihomo 透明网关)架构中启用 IPv6 支持。</p> <p>本文默认目标:<strong>只让透明网关本机具备 IPv6 出口能力</strong>,内网终端不强制获取公网 IPv6;如果希望终端也能拿到公网 IPv6,通常还需要额外处理 <strong>NDP</strong> 或 <strong>前缀下发(DHCPv6-PD)</strong> 等问题,正文相关步骤会顺带提示。</p>

2026/1/15
阅读更多

[All In One] HomeLab 虚拟化 iKuai + Mihomo

<p>本文思路基本遵循 <a href="https://www.jackiewu.top/article/best-alternative-solution-for-transparent-gateway">iKuai与Openwrt的有机结合:传统旁路由方案的完美替代</a>,主要差异点如下:</p> <ul> <li><strong>虚拟化平台</strong>: unRaid 替换为 Proxmox VE (PVE)</li> <li><strong>透明网关</strong>: OpenWRT 替换为 Debian + Mihomo</li> <li><strong>DNS 服务</strong>: paopaodns 替换为 AdGuard Home + Mihomo DNS + SmartDNS 组合</li> </ul> <h3 id="网络拓扑">网络拓扑</h3> <p>为方便描述,下文统一将处理出站流量的虚拟机称为<strong>透明网关 (gateway)</strong>。</p> <blockquote> <p><strong>架构核心思想</strong></p> <p>本方案采用“主路由 + 透明网关”的模式。iKuai 作为主路由,以其出色的稳定性、多线负载和流控能力负责整体网络的 DHCP、NAT 和流量调度。透明网关则是一个专职处理特定流量(如国际流量)的“处理器”。iKuai 通过策略路由(PBR)将特定流量“扔”给透明网关处理,处理完毕后再由透明网关“扔”回给 iKuai,由 iKuai 统一出口。这种架构实现了功能解耦,稳定性和灵活性兼得。</p>

2025/8/23
阅读更多

LiteLLM 多模型 API 中转

<h2 id="前言">前言</h2> <p>随着大语言模型(LLM)应用场景的不断扩展,管理和统一调用多个 AI 模型接口的需求日益突出。目前市面上有多种解决方案,每个都有其独特的优势和适用场景:</p> <ul> <li><strong><a href="https://github.com/songquanpeng/one-api">one-api</a>/<a href="https://github.com/Calcium-Ion/new-api">new-api</a></strong>: 这类项目提供完整的 Web UI 界面,支持多用户管理、使用量统计等功能,适合团队或小型组织使用。</li> <li><strong><a href="https://github.com/yym68686/uni-api">uni-api</a></strong>: 采用 Provider-First 的配置思路,通过简单的配置文件启动,特别适合个人用户快速配置多个模型服务。</li> <li><strong><a href="https://openrouter.ai">openrouter</a></strong>: 作为一个集中式的 AI 模型网关,支持多个主流服务商,但对某些区域性服务(如国内的 siliconflow)支持有限,且无法配置同一服务商的多个账号。</li> <li><strong><a href="https://docs.litellm.ai/">LiteLLM</a></strong>: 既可作为 SDK 使用,也可作为独立的 LLM Gateway 部署。采用 Model-First 的配置方式,虽然在多模型配置上略显繁琐,但提供了更细粒度的模型控制能力,而且代码质量也比 uni-api 更好。</li> </ul> <p>所以我使用了一段时间的 new-api 和 uni-api 之后,现在切换到 LiteLLM。本文将介绍 LiteLLM 的部署方案和一些实用的配置技巧。</p>

2025/2/3
阅读更多

MacOS Bootstrp with Nix

<p>最近更换了 M4 Pro 的 MacBook Pro,面临着重新配置开发环境的挑战。虽然我之前已经在 dotfiles 项目中维护了 tmux、alacritty 和 neovim 等工具的配置,但实际上还有许多其他组件需要重新设置。起初我考虑编写一个 setup 脚本来自动化这个过程,但在研究过程中接触到了 Nix 这个声明式的包管理器,它的设计理念让我眼前一亮。</p>

2025/1/29
阅读更多

Fluency Support Full Rss

<p>最近 Follow 这个内容浏览器十分热门, 我把自己博客添加进去后发现 Hugo 的 RSS 默认并没有全文输出.</p> <p>所以给当前在用的 <a href="https://github.com/wayjam/hugo-theme-fluency">Fluency</a> 主题增加了一个可选配置,可以开启全文 RSS 输出.</p> <p>又水一篇.</p> <p>This message is used to verify that this feed (feedId:55671961817022580) belongs to me (userId:67409085208279040). Join me in enjoying the next generation information browser <a href="https://follow.is">https://follow.is</a>.</p>

2024/10/27
阅读更多

[All In One] PVE 中 OpenWrt LXC 重启问题

<p>从去年开始,我的 OpenWrt 是安装在 PVE 中的 LXC 容器中,但一直以来都有一个问题,OpenWrt 关机后就无法再次启动了。</p> <p>我是将 enp6s0(有线网卡)、wlp2s0(无线网卡)硬件直通给 LXC 容器:</p> <pre tabindex="0"><code class="language-conf" data-lang="conf">lxc.net.0.type: phys lxc.net.0.link: enp6s0 lxc.net.0.flags: up lxc.net.1.type: phys lxc.net.1.link: wlp2s0 lxc.net.1.flags: up </code></pre><p>查看 LXC 的启动日志发现网卡重命名失败:</p>

2024/8/18
阅读更多

Tabby 终端配置以及配置全平台同步

<p>自从有了 Windows 的个人电脑之后,经常在不同平台的环境中切换。每个平台都有一个终端软件,SSH 配置成了一个大难题。</p> <p>一开始用的是全平台的 Termius,基础功能基本满足需求,并且也有 iOS 客户端,后来发现它的多端同步需要 Pro 订阅,价格十分昂贵。我在 macOS 上用的其实是 Alacritty,基础配置也通过了 Github 同步,但是 SSH 配置的同步则无能为力。</p>

2024/3/11
阅读更多

Cloudflare Tunnel + Nginx Proxy Manager:服务穿透

<h3 id="nginx-proxy-manager">Nginx Proxy Manager</h3> <p>Nginx Proxy Manager 是一个 Nginx 的可视化代理管理器,自带面板,操作极其简单,非常适合配合 Docker 搭建的应用使用。</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">version</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;3.8&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="nt">name</span><span class="p">:</span><span class="w"> </span><span class="l">proxy</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="nt">services</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nginx</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">image</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;jc21/nginx-proxy-manager:latest&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">restart</span><span class="p">:</span><span class="w"> </span><span class="l">unless-stopped</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">container_name</span><span class="p">:</span><span class="w"> </span><span class="l">nginx</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ports</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="s1">&#39;80:80&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="s1">&#39;81:81&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="s1">&#39;443:443&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">volumes</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/data/docker/nginx:/data</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">/data/docker/letsencrypt:/etc/letsencrypt</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="nt">networks</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">appnet</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">external</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span></code></pre></div><p>其他需要被 Nginx 反代的服务理论上不需要配置 <code>ports</code> 暴露端口,只需要都加入同一个 docker 网络,在 Nginx 配置的使用域名指向即可。</p>

2024/3/10
阅读更多

PVE 7 升级 8 笔记

<h2 id="升级前准备">升级前准备</h2> <ol> <li>磁盘空间检查 <code>df -h</code></li> <li>备份重要文件</li> <li>当前 PVE7 是最新的小版本,执行此命令更新 <code>apt update &amp;&amp; apt upgrade &amp;&amp; apt dist-upgrade</code></li> <li>进行升级检测,执行 <code>pve7to8</code> 命令</li> </ol> <h3 id="升级检测">升级检测</h3> <p>此步骤需确认执行结果FAILURES: 0,WARNINGS部分也要查看是否存在关键的影响。</p> <blockquote> <p><code>resolved node ip not configured or active for 'pve'</code> 错误 可能是修改过安装 PVE 时候的网段,<code>cat /etc/hosts</code> 查看,修改到匹配当前 PVE 的默认IP 地址即可.</p>

2024/2/25
阅读更多

PVE 安装 Android x86 & 安装 Magisk

<h2 id="下载镜像">下载镜像</h2> <p>首先选择镜像,我一开始尝试的是成 CM 的 7.0 镜像但由于是全虚拟的系统,这个版本的系统开启 ADB 后,虽然可以开启网络端口监听,但无法首次就用网络连接(无法 auth)。PrimeOS 也是遇到同样的问题甚至无法直接开启网络 ADB。后来换用 Android x86 9.0 版本,自带 root 权限,默认开启 ADB 且支持首次网络连接。</p>

2023/6/11
阅读更多

Fly.io 部署 Artalk 评论系统

<p>最近写了几篇博客,发现博客原来使用的 Valine 评论系统已经年久失修,被 LeanCloud 冻结停止服务了,于是在多个评论系统中选中了 Artalk 重新部署博客评论系统。</p> <p>Artalk 支持 Docker 形式部署,故需要部署在 CVM 上或者支持 Docker 的 PaaS 上,而我的 CVM 基本是实验环境,经常重建,不太适合评论系统此类需要稳定部署的应用,另外老牌的 Heroku 要下线免费套餐,之前看到网上有推荐 fly.io ,提供有限的免费额度,跑小博客的评论系统完全足够了。</p>

2023/6/2
阅读更多

[All In One] HomeLab 2023 搭建总结

<p><img src="https://img.wayjam.me/2023/05/347f3c6076952f27dfbc96e9648ed2b3.png" alt=""></p> <p>上个月由于搬家+宽带升级,所以就想将自己原来的传家宝 N1 旁路由方案升级一下,既然硬件升级了,那就要承载更多的应用。</p> <blockquote> <p>&ldquo;All-in-One&rdquo;(一体机)是指一台设备包含了多个功能模块的电子产品。这些设备通常把所有的功能集成到一个单一的、紧凑的设备中,包括计算机、显示器、摄像头、扬声器、输入设备等等。All-in-One产品可用于各种场合,特别是在Office、教育、医疗和娱乐等领域,由于其一体化的设计和简单易用的操作,深受消费者的欢迎。 Homelab(个人实验室)是一个IT专业人士用来测试、研究、学习、模拟企业环境的地方,通常由个人在家中或小型办公室中自行搭建,其中包括了不同类型的计算机、网络设备、虚拟化软件、存储设备等。Homelab和NAS的概念有些相似,都是为了满足个人或小型组织的需求而搭建的私有化的计算机和存储环境。</p>

2023/5/25
阅读更多

[All In One] 轻量的文件 & 媒体服务器配置

<p>我的 All In One 里面的 NAS 需求比较轻量,所以不选择安装完备的 NAS 系统(黑群晖、Unraid等),直接按需选择子应用以 Docker 形式部署在 PVE 下的 Debian LXC 容器内。</p> <h2 id="前置工作---用户权限">前置工作 - 用户权限</h2> <blockquote> <p>以下全文环境为 PVE 7.4</p> </blockquote> <p>LXC 同样是容器技术,基于 Linux 的 namespace 和 cgroups。LXC 非特权容器通过 uidmap 将容器内的用户和宿主机的用户进行映射,提高了 LXC 的安全性。但对于我们文件共享来说,对权限管理造成了麻烦,但还是有方案来处理。</p>

2023/5/22
阅读更多

[All In One] R71s 主机散热改造

<p>购买之前就看网上评论 N5105 的发热很厉害,虽然我这台是 N6000 的 CPU,但毕竟是 24x7 的 All In One 主机,还是预先做好散热改造吧。</p> <p><img src="https://img.wayjam.me/2023/05/647fb035512a56197d012b0fc512a212.jpeg" alt=""></p> <h2 id="更换硅脂">更换硅脂</h2> <p>这是主机原有的硅脂,黏度还是不错的。我买了信越的7921硅脂,果然是水泥手感,但是用一次性塑胶手套还是相对好涂抹。要将CPU和导热块的两边都重新涂抹,但导热铜块由于原来的硅脂黏度太好费了好大劲才拆出来更换。</p>

2023/5/17
阅读更多

[All In One] PVE LXC 安装 OpenWrt 软路由以及网络规划

<p>作为 All in One 里面最重要的一环,软路由的安装和配置是最为重要的操作。这里我选择纯软路由,且无硬 AP 的拓扑。如果有多拨需求,可以选择 iKuai 主路由 + OpenWrt 旁路由的方案,我觉得我的场景已经真的 All In Boom 了,就不再改光猫桥接,在真的 boom 的时候还方便一点直接接光猫救急,所以这里我只选用 OpenWrt 作为主路由。路由的部署方式可以使用 VM 或者 LXC,在上一篇也提到了 Intel 11 代 CPU 的潜在虚拟化问题后,我这里部署方式选择为 PVE 下 LXC 容器。</p>

2023/5/13
阅读更多

[All In One] 安装 Proxmox VE 7.4

<p>最近将 N1 升级成 R71S 小主机,记录一下安装 PVE 的步骤与问题。</p> <blockquote> <p>Proxmox Virtual Environment(PVE)是一款开源的服务器虚拟化管理平台,可以让用户轻松管理和监控大量的虚拟化和容器化服务器。PVE支持KVM和LXC虚拟化技术,提供了一个易于使用的Web界面,可以让用户创建、管理、备份和恢复虚拟主机、容器和存储。 PVE采用了分布式架构,可以轻松管理多个远程服务器,并提供了高可用性、容错和负载均衡的功能。此外,PVE还支持各种虚拟存储技术,如网络文件系统(NFS)、本地存储和iSCSI卷,可以便捷地存储虚拟机的镜像、容器和数据。</p>

2023/5/8
阅读更多

从零开始配置Rime - 2023

<h2 id="第一步安装鼠须管">第一步:安装鼠须管</h2> <p>在MacOS上,可以使用<a href="https://brew.sh/">Homebrew</a>安装“鼠须管”的输入法引擎,只需要在终端中运行以下命令:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">brew install --cask squirrel </span></span></code></pre></div><h2 id="第二步下载東風破">第二步:下载東風破</h2> <p>在输入法引擎安装完毕后,下一步就是安装输入法方案。Rime使用基于Lua脚本的方案,您可以使用<a href="https://github.com/rime/home/wiki">Rime中文输入法维基</a>中提供的方案,也可以自己编写方案。但是,我们建议通过東風破来快速安装您喜欢的输入法方案。</p> <p>打开终端并运行以下命令,将東風破克隆到本地:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone https://github.com/rime/plum.git </span></span></code></pre></div><h2 id="第三步安装输入法方案">第三步:安装输入法方案</h2> <p>以安装雾凇拼音为例,运行以下命令:</p>

2023/4/29
阅读更多

Self Hosted Bitwarden + Cloudfare HTTPS

<h3 id="配置">配置</h3> <p>bitwarden_rs 是一个用于本地搭建 Bitwarden 服务器的第三方开源 Docker 项目,目前bitwarden_rs 已经更名为 vaultwarden。</p> <p>Docker 启动实例:首次启动允许注册,注册完自己的帐号之后禁用新帐号注册:</p> <pre tabindex="0"><code>docker run -d --name vaultwarden \ -e SIGNUPS_ALLOWED=false \ -e WEBSOCKET_ENABLED=true \ -v $(pwd)/vw-data/:/data/ \ -p 8080:80 -p 9090:3012 \ vaultwarden/server:latest </code></pre><p>启动之后只有 HTTP 的话,桌面客户端能连接使用,但手机客户端必须使用 HTTP。这里介绍使用 cloudfare 配置 HTTPS。在 cloudfare 切换到 SSL/TLS 下找到“源服务器”然后创建证书(可以使用自己的私钥和CSR或者由 cloudfare 生成)。</p>

2021/8/14
阅读更多

Debian NFS Server 以及 MacOS Client

<h2 id="server-side">Server Side</h2> <p>安装必要依赖:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">apt install nfs-kernel-server nfs-common </span></span></code></pre></div><p>编辑配置文件: <code>vi /etc/exports</code></p> <pre tabindex="0"><code>/media/share *(ro,sync,no_root_squash,no_subtree_check,insecure) </code></pre><table> <thead> <tr> <th>字段</th> <th></th> </tr> </thead> <tbody> <tr> <td><code>/media/share</code></td> <td>要共享的目录</td> </tr> <tr> <td><code>*</code></td> <td>指定可访问的IP,<!-- raw HTML omitted -->*表示全部来源<!-- raw HTML omitted -->特定网段:192.168.123.0/24<!-- raw HTML omitted -->特定IP:192.168.123.2</td> </tr> <tr> <td><code>rw</code> / <code>ro</code></td> <td>读写</td> </tr> <tr> <td><code>sync</code> / <code>async</code></td> <td>文件同步写入到内存与硬盘中 / 文件会先暂存于内存中</td> </tr> <tr> <td><code>root_squash</code> / <code>no_root_squash</code></td> <td>- 当NFS客户端以root用户身份访问时,映射为NFS服务器的nfs nobody用户<!-- raw HTML omitted -->- 当NFS客户端以root身份访问时,映射为NFS服务器的root用户</td> </tr> <tr> <td><code>subtree_check</code> / <code>no_subtree_check</code></td> <td>是否强制检查父目录权限</td> </tr> <tr> <td><code>secure</code> / <code>insecure</code></td> <td>是否允许客户端从大于1024的tcp/ip端口连接服务器(Finder出现“找不到服务器“的错误可以设置为<code>insecure</code></td> </tr> <tr> <td><code>anonuid</code> 、<code>anongid</code></td> <td>将远程访问的所有用户都映射为匿名用户,并指定该用户为本地用户和用户组</td> </tr> </tbody> </table> <p>每次修改完 <code>exportfs</code> 文件,都需要应用并导出分享:<code>exportfs -ra</code>。</p>

2021/4/24
阅读更多

AdguardHome 和 Clash 透明代理配合使用

<p><img src="https://img.wayjam.me/2021/04/6d77a185526efa66025ed60a47e695e1.png" alt="image-20210417112325830"></p> <h3 id="配置">配置</h3> <p>我的方案如上图是 Adguard 作为 Clash 的上游 DNS。然后将路由的 DHCP 配置的 DNS 服务器改为 Clash 的 DNS 地址即可。</p> <p>首先启动 Adguard:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">docker run -d <span class="se">\ </span></span></span><span class="line"><span class="cl">--name adguard <span class="se">\ </span></span></span><span class="line"><span class="cl">--restart unless-stopped <span class="se">\ </span></span></span><span class="line"><span class="cl">--log-opt max-size<span class="o">=</span>1m <span class="se">\ </span></span></span><span class="line"><span class="cl">-v /root/adguard/work:/opt/adguardhome/work <span class="se">\ </span></span></span><span class="line"><span class="cl">-v /root/adguard/conf:/opt/adguardhome/conf <span class="se">\ </span></span></span><span class="line"><span class="cl">-p 5656:53/tcp <span class="se">\ </span></span></span><span class="line"><span class="cl">-p 5656:53/udp <span class="se">\ </span></span></span><span class="line"><span class="cl">-p 3000:3000 <span class="se">\ </span></span></span><span class="line"><span class="cl">-p 3001:80 <span class="se">\ </span></span></span><span class="line"><span class="cl">adguard/adguardhome </span></span></code></pre></div><p>然后 Clash 配置入口 DNS 为 <code>5353</code> 端口,然后设置 <code>nameserver</code> 上游 DNS 为 Adguard 地址。</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="nt">dns</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">enable</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">listen</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;0.0.0.0:5353&#34;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ipv6</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">nameserver</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="s2">&#34;127.0.0.1:5656&#34;</span><span class="w"> </span></span></span></code></pre></div><p>然后使用 iptables 将 53 端口流量转发到实际的 5353 端口:</p>

2021/4/17
阅读更多

使用 Kind 部署 Prow 手记

<p>Prow 是 Kubernetes 使用的云原生 CI/CD 系统(<a href="https://github.com/kubernetes/test-infra/tree/master/prow">https://github.com/kubernetes/test-infra/tree/master/prow</a>),用于管理 Kubernetes 的 Issue 和 PullRequest 以支持开源协同。Prow 通过 GitHub 事件触发 job,通过处理事件状态实现自动化的 ChatOps。</p> <blockquote> <p>实验环境:</p> <p>Linux VM-16-11-debian 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u2 (2019-11-11) x86_64 GNU/Linux Docker Version 20.10.1</p> </blockquote> <h3 id="install-kubectl">Install kubectl</h3> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl"><span class="c1"># 下载 kubectl</span> </span></span><span class="line"><span class="cl">curl -LO <span class="s2">&#34;https://dl.k8s.io/release/</span><span class="k">$(</span>curl -L -s https://dl.k8s.io/release/stable.txt<span class="k">)</span><span class="s2">/bin/linux/amd64/kubectl&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1"># 下载 kubectl.sha256</span> </span></span><span class="line"><span class="cl">curl -LO <span class="s2">&#34;https://dl.k8s.io/</span><span class="k">$(</span>curl -L -s https://dl.k8s.io/release/stable.txt<span class="k">)</span><span class="s2">/bin/linux/amd64/kubectl.sha256&#34;</span> </span></span><span class="line"><span class="cl"><span class="c1"># 校验</span> </span></span><span class="line"><span class="cl"><span class="nb">echo</span> <span class="s2">&#34;</span><span class="k">$(</span>&lt;kubectl.sha256<span class="k">)</span><span class="s2"> kubectl&#34;</span> <span class="p">|</span> sha256sum --check </span></span><span class="line"><span class="cl"><span class="c1"># sudo 安装</span> </span></span><span class="line"><span class="cl">sudo install -o root -g root -m <span class="m">0755</span> kubectl /usr/local/bin/kubectl </span></span></code></pre></div><p>或者用户安装</p>

2021/2/28
阅读更多

BackBlaze B2 + Cloudfare Worker 图床

<p>虽然国内的 OSS 存储速度快,且资费便宜,但基本上都取消了测试域名,绑定自定义域名需要域名已备案。 第三方的图床则迁移麻烦。BackBlaze B2 在大厂的对象存储里面是非常便宜的,且有一定的免费额度,加上与 Cloudfare 都在带宽联盟内,他们之间并不会消耗流量,所以用来做图床是个非常好的选择。</p>

2021/2/19
阅读更多

PicGo Amazon S3 插件

<p>picgo-plugin-s3 是一个支持上传到 Amazon S3 兼容 API 的PicGo 插件,支持自定义上传路径、生成 URL 前缀等配置。</p> <ul> <li>Amazon S3</li> <li>BackBlaze B2</li> <li>minio</li> </ul> <p><img src="https://img.wayjam.me/2021/02/fc3850a70b167ad484446b697970803c.png" alt="image-20210218211528210"></p> <h3 id="安装">安装</h3> <p><em>首先确保已安装 PicGo-Core 或 PicGo</em></p> <p><strong>Core(CLI)</strong>:<code>picgo add s3</code></p> <p><strong>GUI</strong>:直接搜索 <code>s3</code> 下载安装即可</p> <h3 id="配置">配置</h3> <p>设置为默认 Uploader:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">picgo use aws-s3 </span></span></code></pre></div><p>GUI 版直接在程序界面配置即可,CLI 版则执行以下命令进入交互配置</p>

2021/2/18
阅读更多

自动给模板生成 Inline-Svg

<p>在写 Hugo/Hexo 等主题的时候,如果需要使用 inline svg,则经常要手工从官方文档 copy 或者下载 collection 再自行拆分。于是有了这个项目,自动从模板中提取需要使用的 icon,生成 svg 到独立的模板文件内,模板编写者不再需要考虑 HTML 与图标来源,只需要写好模板,然后执行这个 cli 工具即可。</p>

2021/1/24
阅读更多

Hugo Theme WeUI 发布!

<p><img src="https://img.wayjam.me/2021/02/22a51b2c2a3cf388127f84a9dc63deb4.png" alt="screenshot"></p> <p>随手用微信的 WeUI 写了一款 Hugo 主题,十分简单,感兴趣的朋友可以使用,欢迎给本项目点个 ⭐。由于博客类网站的交互比较简单,所以暂时没有用到更多的交互组件,如果有朋友感兴趣可以给本项目提 PR。</p> <ul> <li>GitHub: <a href="https://github.com/wayjam/hugo-theme-weui">https://github.com/wayjam/hugo-theme-weui</a></li> <li>Demo:<a href="https://hugo-weui-demo.netlify.app/">https://hugo-weui-demo.netlify.app/</a></li> </ul>

2021/1/23
阅读更多

Hugo Theme Fluency 发布!

<p><img src="https://img.wayjam.me/2021/02/c1c0c07a2ef1dbcef632aa8217444799.png" alt="screenshot"></p> <p>在上一款主题发布的时候就说要写一款新主题,现在终于把拖欠的工作完成。目前已经提交官方主题商店,待审核中。</p> <h4 id="功能">功能</h4> <ul> <li>Archives</li> <li>文章目录</li> <li>分页样式 <ul> <li>根据页面类型自定义 Page Size</li> </ul> </li> <li>深色模式</li> <li>可配置任意第三方评论系统</li> <li>代码高亮</li> <li>原生 JavaScript</li> <li>SASS/SCSS &amp; inline svg</li> <li>Latex Math 支持</li> <li>社交分享</li> <li>可配置的头部、底部菜单</li> <li>&hellip;</li> </ul> <h4 id="使用">使用</h4> <p>如果你想开始使用 Fluency 主题,可以阅读 <a href="https://github.com/wayjam/hugo-theme-fluency/wiki/Getting-Started">Getting Started</a>。</p>

2021/1/18
阅读更多

Docker Clash 和 透明代理

<h2 id="docker-clash">Docker Clash</h2> <p>在适当目录新建 <code>clash-config</code> 文件夹,然后在里面新建 <code>config.yaml</code>,如果是订阅链接则直接下载链接命名为 <code>config.yaml</code> 即可。</p> <p>以下例子 Docker 容器启动直接使用 <code>Host</code> 模式,您也可以选择只将有用端口暴露到宿主机。</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">docker run -d <span class="se">\ </span></span></span><span class="line"><span class="cl">--name clash <span class="se">\ </span></span></span><span class="line"><span class="cl">--restart unless-stopped <span class="se">\ </span></span></span><span class="line"><span class="cl">--log-opt max-size<span class="o">=</span>1m <span class="se">\ </span></span></span><span class="line"><span class="cl">--network host <span class="se">\ </span></span></span><span class="line"><span class="cl">-v <span class="k">$(</span><span class="nb">pwd</span><span class="k">)</span>/clash-config:/root/.config/clash <span class="se">\ </span></span></span><span class="line"><span class="cl">dreamacro/clash </span></span></code></pre></div><h2 id="web-ui">Web UI</h2> <p>如果系统已经有 Nginx,则直接下载 <a href="https://github.com/haishanh/yacd/archive/gh-pages.zip">https://github.com/haishanh/yacd/archive/gh-pages.zip</a> 到 Nginx 的 www 目录解压即可,另外也可以使用<a href="https://hub.docker.com/r/haishanh/yacd"> Docker 镜像</a>启动:</p>

2020/10/7
阅读更多

有限状态机与分布式熔断器

<h2 id="前言">前言</h2> <p>在微服务框架或者网关设计当中,为保证整体系统的可用性,避免某些服务出现问题后,服务间调用出现阻塞,耗尽资源,导致系统瘫痪,通常会实现熔断器模式,避免整个系统发生雪崩。</p> <p>在分布式系统设计时候要使用一定的降级策略,来保证当服务提供方服务不可用时候,服务调用方可以切换到降级后的策略进行执行。</p>

2020/9/12
阅读更多

「家庭娱乐」N1刷 EmuELEC 做游戏盒子

<p><img src="https://img.wayjam.me/2021/02/9de44f8b3617322cb2605314edced1c8.jpg" alt="emuelec"></p> <h2 id="前情">前情</h2> <p><a href="https://wayjam.me/posts/n1%E5%88%B7%E5%85%A5armbian/">https://wayjam.me/posts/n1%E5%88%B7%E5%85%A5armbian/</a></p> <h2 id="下载">下载</h2> <p>我采用B站大佬人中日月的整合包:<a href="https://www.bilibili.com/video/BV1DJ411H7Nb">https://www.bilibili.com/video/BV1DJ411H7Nb</a>(以下所说网盘内容都在这个视频简介内)。由于之前已经装上 Armbian 了,那当然要利用好(使用 YAAW for Chrome 导出到 Aira2 下载百度网盘)。</p> <blockquote> <p>以下操作均在 N1 with Armbian 中操作</p> </blockquote> <p><img src="https://img.wayjam.me/2021/02/710c9a5e9bf38927bef893660b3ad0df.png" alt="下载整合包"></p> <h4 id="解压">解压</h4> <p>所有分卷下载完成后,解压出 IMG</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl">apt-get install unrar </span></span><span class="line"><span class="cl">unrar e any-one-of-the-rar-file <span class="c1"># 任意一分卷,所有分卷在同一目录</span> </span></span></code></pre></div><p>如果系统语言没有设置好,解压完成可能会有错误:</p>

2020/8/18
阅读更多

「家庭娱乐」N1刷 Armbian 做家庭服务器

<h2 id="前言">前言</h2> <p>由于想找点有趣的事情做,而且一直想玩玩家庭服务器,所以捡了一台 N1 做家庭服务器。由于卖家已经刷过 CoreELEC 了,所以不用再做降低等操作。</p> <p>N1 作为去年矿渣的优秀代表,其硬件素质是非常过硬。N1 所用的 SOC 方案是晶晨 S905D,机器运行内存 2G,内置闪存 8G,相对于普通的 S905M,增加了 4K 60Hz 输出、VP9 硬解、HDR 以及千兆网卡。只是 USB 口都是 2.0,有点拉跨。并且在大神们的挖掘下玩法非常多样,既有传统 Armbian、也有专项应用系统:下载专用Linux 小钢炮、影音 CoreELEC、游戏 EmuELEC。玩家可以根据自己的喜好刷入对应的系统。</p>

2020/8/16
阅读更多

分布式限流器之令牌桶实现

<p>分布式限流器实现一般有计数器、滑动窗口、漏桶、令牌桶等实现算法。以下是 Go 的一些实现:</p> <ul> <li>漏桶:<a href="https://github.com/uber-go/ratelimit">https://github.com/uber-go/ratelimit</a></li> <li>令牌桶:<a href="https://github.com/golang/time/tree/master/rate">golang.org/x/time/rate</a></li> </ul> <h3 id="令牌桶">令牌桶</h3> <p><img src="https://img.wayjam.me/2021/02/7fa0d1766b77d555ccef6a9aeb5a1e40.png" alt="ratelimit-令牌桶"></p> <p>令牌桶按照一定速率将令牌放入桶中,桶有最大容量,桶满时,不再新增令牌。如果桶中令牌少于申请的令牌数量,则会被限流,否则申请令牌成功。令牌桶限制的是平均流入速率(允许突发请求,只要有令牌就可以处理,支持一次拿 N 个令牌),并允许一定程度突发流量。</p>

2020/5/22
阅读更多

Kustomize 管理 Kubernetes 集群

<h2 id="对比">对比</h2> <p>在维护 Kubernetes 过程中,一开始是直接使用 <code>kubectl</code> 编辑集群资源,但毕竟需要归档编排,那么就需要一个配置管理工具。一开始尝试使用 Helm,但尝试过后发现我的使用场景并不适合 Helm。后来发现 Kustomize,那么先对比一下两款工具:</p>

2020/5/21
阅读更多

Mixedpaper 主题发布到 Hugo 官方仓库

<p>最近将博客迁移到 Hugo,同时也将原来的主题移植到 Hugo。这次也提交到了 Hugo Themes。</p> <ul> <li>Themes: <a href="https://themes.gohugo.io/hugo-theme-mixedpaper/">https://themes.gohugo.io/hugo-theme-mixedpaper/</a></li> <li>GitHub: <a href="https://github.com/wayjam/hugo-theme-mixedpaper">https://github.com/wayjam/hugo-theme-mixedpaper</a></li> </ul> <p>但是这个主题也用了很久了,是时候开始写新的了。</p> <p><a href="https://github.com/wayjam/hugo-theme-fluency">https://github.com/wayjam/hugo-theme-fluency</a></p>

2020/5/12
阅读更多

About

<h2 id="profile">Profile</h2> <p>👨‍💻 Hi, I am WayJam So.</p> <h2 id="contact">Contact</h2> <ul> <li>Email: <img src="https://img.wayjam.me/2021/02/5c33071f82f4438c0b0df75489c51436.png" alt=""></li> <li>Github: <a href="https://github.com/wayjam">https://github.com/wayjam</a></li> <li>GitLab: <a href="https://gitlab.com/wayjam">https://gitlab.com/wayjam</a></li> </ul> <h2 id="support--donate">Support / Donate</h2> <ul> <li><!-- raw HTML omitted -->爱发电<!-- raw HTML omitted --></li> <li><!-- raw HTML omitted -->LikeCoin<!-- raw HTML omitted --></li> </ul> <!-- raw HTML omitted --> <h2 id="license">License</h2> <p><!-- raw HTML omitted --><!-- raw HTML omitted --><!-- raw HTML omitted --></p> <p>本站采用 <!-- raw HTML omitted -->知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议<!-- raw HTML omitted --> 进行许可。本许可协议授权之外的使用权限可以从 <!-- raw HTML omitted --><a href="https://wayjam.me">https://wayjam.me</a><!-- raw HTML omitted --> 处获得。</p>

2020/5/10
阅读更多

优化 Docker 构建时间

<h3 id="问题描述">问题描述</h3> <p>今天看了一下我的一个 Go 的两个服务的构建时间,觉得不是非常满意。这两个服务分别为 <code>server</code> 端 和 <code>worker</code> 端,在使用了多阶段构建的情况下,每次全量编译出两个镜像需要 2.5min,由于两个服务基本属于通过代码结构可以共用代码的形式,只有 <code>entrypoint</code> 稍有不同,所以镜像的构建步骤只有略有不同。观察 docker 镜像的构建日志发现,即便是相同构建命令的 commit 也并没有 <code>use-cache</code>,于是感觉还是有优化空间的。</p>

2020/4/8
阅读更多

解决 etcd 与 grpc 不兼容问题

<p>今天遇到了一个 Golang 的依赖问题,在一个使用了 Protobuf 的项目,引入了 Prometheus 的 Package 之后编译时发现 etcd 报错:</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-sh" data-lang="sh"><span class="line"><span class="cl"><span class="c1"># github.com/coreos/etcd/clientv3/balancer/resolver/endpoint</span> </span></span><span class="line"><span class="cl">../../go/pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:114:78: undefined: resolver.BuildOption </span></span><span class="line"><span class="cl">../../go/pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/resolver/endpoint/endpoint.go:182:31: undefined: resolver.ResolveNowOption </span></span><span class="line"><span class="cl"><span class="c1"># github.com/coreos/etcd/clientv3/balancer/picker</span> </span></span><span class="line"><span class="cl">../../go/pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/picker/err.go:37:44: undefined: balancer.PickOptions </span></span><span class="line"><span class="cl">../../go/pkg/mod/github.com/coreos/etcd@v3.3.18+incompatible/clientv3/balancer/picker/roundrobin_balanced.go:55:54: undefined: balancer.PickOptions </span></span></code></pre></div><p>根据问题搜索到 issue:<a href="%5Bhttps://github.com/etcd-io/etcd/issues/11563%5D(https://github.com/etcd-io/etcd/issues/11563)">clientv3: grpc-go (v1.27.0) made API changes to balancer / resolver. #11563</a>,依据里面的方法将 grpc 降级到 v1.2.6.0</p>

2020/3/30
阅读更多

Kubernetes 部署 ElasticSearch7 集群

<h3 id="组建-es-集群">组建 ES 集群</h3> <p>在 Kubernetes 集群上部署 ElasticSearch 的时候,我先按照网上的经验指南,发现 ES 节点之间无法互相发现,不能够组成集群。</p> <p>对比后发现,我使用的 ES 版本是<code>7.2</code>,而目前我参照的大部分网页都是 <code>6.8</code>的。在 <code>7.0</code> 之前的协调方式是配置<code>discovery.zen.minimum_master_nodes</code>,让集群自行选举为指定数量的 master 节点。</p>

2019/7/28
阅读更多

从零开始配置Rime - 2019

<p>本文是个人配置,仅供方法参考。</p> <h3 id="步骤一---安装">步骤一 - 安装</h3> <p>首先下载安装 Rime。</p> <h5 id="通过官网下载安装">通过官网下载安装</h5> <pre tabindex="0"><code>https://bintray.com/rime/squirrel/release </code></pre><h5 id="通过-homebrew">通过 <code>Homebrew</code></h5> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">brew cask install squirrel </span></span></code></pre></div><h3 id="步骤二---配置">步骤二 - 配置</h3> <h4 id="东风破">东风破</h4> <blockquote> <p><strong>東風破</strong> 是 <a href="https://rime.im/">中州韻輸入法引擎</a> 的配置管理工具。</p> </blockquote> <p>克隆仓库</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">git clone --depth <span class="m">1</span> https://github.com/rime/plum.git </span></span><span class="line"><span class="cl"><span class="nb">cd</span> plum </span></span></code></pre></div><p>生成配置模板</p> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">bash rime-install prelude luna-pinyin double-pinyin </span></span></code></pre></div><h3 id="步骤三">步骤三</h3> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># squirrel.custom.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="nt">patch</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">us_keyboard_layout</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># 鍵盤選項:應用美式鍵盤佈局</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">show_notifications_when</span><span class="p">:</span><span class="w"> </span><span class="l">growl_is_running</span><span class="w"> </span><span class="c"># 狀態通知,默認裝有Growl時顯示,也可設爲全開(always)全關(never)</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">style</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">color_scheme</span><span class="p">:</span><span class="w"> </span><span class="l">psionics</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">horizontal</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span><span class="c"># 水平/竖直显示</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">inline_preedit</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span><span class="c"># 非內嵌編碼行</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">border_color_width</span><span class="p">:</span><span class="w"> </span><span class="m">0</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">border_height</span><span class="p">:</span><span class="w"> </span><span class="m">6</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">border_width</span><span class="p">:</span><span class="w"> </span><span class="m">6</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">candidate_format</span><span class="p">:</span><span class="w"> </span><span class="s1">&#39;%c %@&#39;</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">corner_radius</span><span class="p">:</span><span class="w"> </span><span class="m">5</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">font_face</span><span class="p">:</span><span class="w"> </span><span class="l">PingFangSC</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">font_point</span><span class="p">:</span><span class="w"> </span><span class="m">16</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">hilited_corner_radius</span><span class="p">:</span><span class="w"> </span><span class="m">3</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">label_font_point</span><span class="p">:</span><span class="w"> </span><span class="m">14</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">&#39;com.apple.Finder/ascii_mode&#39;</span><span class="p">:</span><span class="w"> </span><span class="kc">true</span><span class="w"> </span></span></span></code></pre></div><div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="cl"><span class="c"># default.custom.yaml</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 中西文切換鍵的默認設置寫在 default.yaml 裏面</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 以下的 default.custom.yaml 在全局範圍重定義該組快速鍵</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 可用的按鍵有 Caps_Lock, Shift_L, Shift_R, Control_L, control_R</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># Mac 系統上的鼠鬚管不能區分左、右,因此只有對 Shift_L, Control_L 的設定起作用</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 已輸入編碼時按切換鍵,可以進一步設定輸入法中西文切換的形式。</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 可選的臨時切換策略有三:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># inline_ascii 在輸入法的臨時西文編輯區內輸入字母、數字、符號、空格等,回車上屏後自動復位到中文</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># commit_text 已輸入的候選文字上屏並切換至西文輸入模式</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># commit_code 已輸入的編碼字符上屏並切換至西文輸入模式</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 設爲 noop,屏蔽該切換鍵</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c">#</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 如果要把 Caps Lock 設爲只改變字母的大小寫而不做中西文切換,可將 Caps_Lock 對應的切換方式設爲 noop</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 如果要以 Caps Lock 切換到西文模式,默認輸出小寫字母,請置 ascii_composer/good_old_caps_lock: false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="c"># 如果要以 Caps Lock 切換到西文模式,默認輸出大寫字母,請使用以下設置:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="nt">patch</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">schema_list</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">schema</span><span class="p">:</span><span class="w"> </span><span class="l">double_pinyin_flypy</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="nt">schema</span><span class="p">:</span><span class="w"> </span><span class="l">luna_pinyin_simp</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">switcher/hotkeys</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">F4</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">switcher/save_options</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">full_shape</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">ascii_punct</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">simplification</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">zh_hans</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- <span class="l">emoji_suggestion</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">menu/page_size</span><span class="p">:</span><span class="w"> </span><span class="m">8</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ascii_composer/good_old_caps_lock</span><span class="p">:</span><span class="w"> </span><span class="kc">false</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">ascii_composer/switch_key</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Caps_Lock</span><span class="p">:</span><span class="w"> </span><span class="l">noop</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Shift_L</span><span class="p">:</span><span class="w"> </span><span class="l">commit_code</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Shift_R</span><span class="p">:</span><span class="w"> </span><span class="l">commit_code</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Control_L</span><span class="p">:</span><span class="w"> </span><span class="l">noop</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">Control_R</span><span class="p">:</span><span class="w"> </span><span class="l">noop</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="nt">key_binder/bindings</span><span class="p">:</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+p&#39;, send: Up, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+n&#39;, send: Down, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+b&#39;, send: Left, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+f&#39;, send: Right, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+a&#39;, send: Home, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+e&#39;, send: End, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+d&#39;, send: Delete, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+k&#39;, send: &#39;Shift+Delete&#39;, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+h&#39;, send: BackSpace, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+g&#39;, send: Escape, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+bracketleft&#39;, send: Escape, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Alt+v&#39;, send: Page_Up, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Control+v&#39;, send: Page_Down, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span><span class="c"># - {accept: ISO_Left_Tab, send: &#34;Shift+Left&#34;, when: composing}</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: &#39;Shift+Tab&#39;, send: Page_Up, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: Tab, send: Page_Down, when</span><span class="p">:</span><span class="w"> </span><span class="l">composing }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: minus, send: Page_Up, when</span><span class="p">:</span><span class="w"> </span><span class="l">has_menu }</span><span class="w"> </span></span></span><span class="line"><span class="cl"><span class="w"> </span>- {<span class="w"> </span><span class="nt">accept: equal, send: Page_Down, when</span><span class="p">:</span><span class="w"> </span><span class="l">has_menu }</span><span class="w"> </span></span></span></code></pre></div><h3 id="步骤四---emoji">步骤四 - Emoji</h3> <div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="cl">bash rime-install emoji </span></span><span class="line"><span class="cl">bash rime-install emoji:customize:schema<span class="o">=</span>luna_pinyin </span></span><span class="line"><span class="cl">bash rime-install emoji:customize:schema<span class="o">=</span>double_pinyin </span></span></code></pre></div><h3 id="步骤五---扩充词库">步骤五 - 扩充词库</h3> <pre tabindex="0"><code>git clone https://github.com/rime-aca/dictionaries.git </code></pre><p>将<code>luna_pinyin.dict/</code>下的以下文件拷贝到<code>~/Library/Rime</code></p>

2019/7/14
阅读更多

转移域名,更换评论系统,更换图床

<h3 id="一域名从阿里云转移到-porkbun">一、域名从阿里云转移到 Porkbun</h3> <p>原来域名是在阿里云上,续费价格为¥89,这样的价格对于 <code>ME</code> 这种活动很少的域名来说已经是比较实惠了。找了一圈也并没有发现有什么特别实惠的注册商。但是想尝试一下其他域名服务商,就选择了 Porkbun,续费价格为$12.48,其实只比阿里云便宜¥3。</p>

2019/6/1
阅读更多

搭建 NPM Proxy 之预编译包

<h3 id="背景">背景</h3> <p>上一篇 <a href="https://wayjam.me/post/internal-try-proxy.md">搭建 NPM Proxy</a> 成功搭建了一个 NPM 代理,但很快就又遇到问题了:<a href="https://github.com/sass/node-sass">node-sass</a> 这种典型的有预编译包,而且需要到 GitHub 下载的 Package,安装就会失败。</p> <h3 id="寻找原因">寻找原因</h3> <p>我们的 NPM Proxy 已经将所有包重定向至 taobao registry,tarball(源码包)也完全是从 taobao 源下载的,然后我根据 cnpm 的首页例子尝试:</p>

2019/3/10
阅读更多

搭建 NPM Proxy

<blockquote> <p>工欲善其事,必先利其器</p> </blockquote> <p>背景是公司内部服务器是网络隔离的, 但是要做自动化构建、测试等,通常都需要从外部拉取依赖。所以,我又要搭建内部的镜像源了。(为什么说又呢。。。)</p> <p>毫无疑问,是要用到一个服务器专门做镜像源的服务器,它有特殊的网络策略,内网的服务器可以和它连通,用作内外网的转发,以下假设使用 <code>Nginx</code> 做反向代理。</p>

2019/2/25
阅读更多

美区Apple ID终于绑定PayPal成功

<blockquote> <p>此文作记录,可以参考。不是教程。</p> </blockquote> <h3 id="一">一</h3> <p>一开始以为自己的PayPal是美区的(因为是在贝宝出现之前注册的)绑定了招行MasterCard,然后直接绑iTunes,卒!</p> <h3 id="二">二</h3> <ol> <li>解绑招行MasterCard,新注册了美区PayPal,绑定卡,然后去绑定iTunes,卒。</li> <li>尝试购买<a href="https://www.paypal.com/us/gifts/all">gift card</a>,卒!(估计是同一张卡,更骚的是,两个账号我用一样的密码,美区PP的账号是用的国区解绑下来的邮箱)</li> <li>发了邮件给PayPal,估计石沉大海,没有任何回应。</li> </ol> <h3 id="三">三</h3> <ol> <li>隔了几天登录PayPal,说我账号安全风险,然后改了密码(这回和国区不一样了)</li> <li>然后发现 <a href="https://www.paypal.com/mem-number">https://www.paypal.com/mem-number</a> 这里还能验证一遍信用卡,于是验证。按照网页提示操作,然后PayPal会发起交易$1.95,看到银行的交易提醒信息交易商户为 <code>PP*0000CODE...</code> 这 <code>0000</code> 就是认证码。</li> <li>然后去绑定Itunes,提示需要电话或短信验证,实际上两个都会提示“Sorry, we couldn ’ t confirm it ’ s you”。</li> <li>然后维基百科 <strong><a href="https://donate.wikimedia.org/wiki/Ways_to_Give">捐</a></strong> 了$1,过了一会儿,再尝试绑定,成功了!</li> </ol> <p>前后过程一周多。</p>

2019/1/8
阅读更多

无可奈何的页面增强方案

<blockquote> <p>如果有一个大型的 Web 程序,需要对其进行一些使用上的改进,但有时候又需要跟踪上游的更新;需要保持其稳定性,不能频繁地部署;更重要的是,没有足够的时间、人员资源去进行二次开发。 如果说只是更改页面的样式或者体验性增强,可以通过浏览器插件来做到类似客户端的效果,而且有更大的权限去做更多的事情,但是可能没有办法去令到每个人安装这样的插件,特别是Chrome收紧了安全策略之后。 该怎么做呢?</p>

2018/7/14
阅读更多

LogStash的调试

<p>在用LogStash做日志处理的时候,几乎都需要进行许多的调试,主要是针对Filter。而LogStash是运行在Jvm上,意味着每一次的启动都需要耗费大量的时间,许多教程文章都说推荐使用<code>stdin/stdout</code>,从 <em>command line</em> 输入,然后将输出打印到控制台来输出。LogStash也提供了配置文件重载功能,期望场景是:从命令行输入,然后观察输出是否符合预期,如不符合则修改DSL的配置,然后再重复前步骤。但问题是,<code>stdin</code>方式不支持配置重载。</p>

2018/7/4
阅读更多

GitLab Shell如何通过SSH工作

<h3 id="gitlab访问git仓库">GitLab访问Git仓库</h3> <p>首先回顾GitLab的Git仓库四种访问方式:</p> <ol> <li>git pull over http -&gt; gitlab-rails (Authorization) -&gt; accept or decline -&gt; execute git command</li> <li>git push over http -&gt; gitlab-rails (git command is not executed yet) -&gt; execute git command -&gt; gitlab-shell pre-receive hook -&gt; API call to gitlab-rails (authorization) -&gt; accept or decline push</li> <li>git pull over ssh -&gt; gitlab-shell -&gt; API call to gitlab-rails (Authorization) -&gt; accept or decline -&gt; execute git command</li> <li>git push over ssh -&gt; gitlab-shell (git command is not executed yet) -&gt; execute git command -&gt; gitlab-shell pre-receive hook -&gt; API call to gitlab-rails (authorization) -&gt; accept or decline push</li> </ol> <p>四种方式都有GitLab Shell的参与,但不同过程GitLab Shell发挥了不同的作用,并且它并不是一个整体的服务,而是由一些子命令组合而成。HTTP方式的Git操作,经gitlab workhorse直接交由Rails应用处理,然后通过HTTP协议交换数据,对于git的操作有三条路径:Gem包Rugged、Raw Git命令或者Gitaly,<code>push/pull</code>一般只跟后两种有关,GitLab Shell充当的作用仅仅是git hook的作用。</p>

2018/7/1
阅读更多

Python打开类

<p>Ruby可以直接打开一个已定义的类(模块),打开与定义与其他语句没有本质区别,第二次使用<code>class</code>关键字之后,之后的语句就是进入这个类的封闭作用域内进行一些操作。</p> <p>在Python中,类只允许一次有效定义,每使用一次<code>class</code>关键字,都作为一个独立的定义类操作。</p>

2018/6/27
阅读更多

荒原

<p>前几天把域名又续费了一年,算算有博客已经许多年了,可能我这里应该要有一些什么感慨,但是我想不出有什么可以感慨的。</p> <p>时间真是个可怕的东西,博客也好,其他的什么事物也好,消亡或者破落都可能只是生命中的一部分。有时候遗忘是一个好选择,有时候留下是一个好选择。留下的是什么,遗忘的又是什么呢?其实最后,发现最初坚持留下的东西可能就是一个瘤,腐烂在生活。</p>

2018/6/10
阅读更多

[Theme] Bitcron主题Mixedpaper发布!

<p>上星期收到了 Farbox 的创始人的邮件,邀请使用接替产品 Bitcron 的使用。那就趁着这几天有空将博客迁移到 Bitcron 上,并且修改了原来使用的 Theme 以适配 Bitcron 。</p> <p>而且值得一提的是, Bitcron 自带HTTPS(自动为绑定的域名部署 Let&rsquo;s Encrypt )、SmartPage 等有趣又有用的特性。</p>

2017/5/30
阅读更多

Ngrok端口转发

<pre><code>问题描述:手机(或者其他设备)与开启抓包工具的机器不在同一个网关下,导致手机(或者其他设备)无法通过设置代理(局域网代理)来抓包。 </code></pre> <h3 id="go编译环境">Go编译环境</h3> <h4 id="源码安装">源码安装</h4> <ol> <li><a href="http://www.golangtc.com/download">http://www.golangtc.com/download</a></li> <li>将其解压到/usr/local目录下:<code>tar -C /usr/local -xzf go1.7.linux-amd64.tar.gz</code></li> <li>设置环境变量</li> </ol> <pre tabindex="0"><code>mkdir $HOME/go echo &#39;export GOROOT=/usr/local/go&#39;&gt;&gt; ~/.bashrc echo &#39;export GOPATH=$HOME/go&#39;&gt;&gt; ~/.bashrc echo &#39;export PATH=$PATH:$GOROOT/bin&#39;&gt;&gt; ~/.bashrc source $HOME/.bashrc </code></pre><h4 id="包管理器安装">包管理器安装</h4> <p>Go从1.5版本开始跨平台交叉编译变得简单,不再必须通过源码安装。</p>

2016/8/25
阅读更多

故事之五 - 柠檬茶

<p><img src="https://img.wayjam.me/2021/02/c3f7231821a5974fdd28b98f1d1a461d.jpg" alt="柠檬茶"></p> <p>“哎,老板,来一瓶柠檬茶”,我走进一家陈旧的杂货铺喊道。</p> <p>“要什么味儿的?”漂亮得有些过分的老板娘头也不抬地说。</p> <p>“什么?”我忍不住瞪大眼睛一拍帐台朝她吼道,她显然被我吓了一跳,下意识向后躲去,双手作出防卫的动作。我意识到自己的失态,对一位美丽的女子大声吼叫实在是太不绅士了,长舒一口气,缓了一缓问:“现在已经出了多口味了啊?!”</p>

2016/6/9
阅读更多

故事之四 - 我是天才

<p><img src="https://img.wayjam.me/2021/02/1e16e49a15e2d53cafe82c68726ca6e3.jpg" alt="我是天才"></p> <p>那年,屈原在不断投江并发出“举世皆浊我独清,世人皆醉我独醒”的《天问》。 那年,司马迁在受尽宫刑并著成“史家之绝唱,无韵之《离骚》”。 那年,曹操在受尽学子唾骂临江赤壁低低沉吟“周公吐哺,天下归心”。</p> <p>那时候,我还忘不了,忘不了苏轼“西北望,射天狼”的苍劲;忘不了项羽横刀吻剑于江畔的悲凉;忘不了梵高画中的那团烈火;忘不了&hellip;&hellip; 那时候,我无须出门便已神游在赛纳河畔触摸时尚典雅的巴黎,在大英博物馆感受厚实又绚烂的伦敦,在银座街头领略忧郁而华丽的东京,在歌剧院倾听悠闲自然的悉尼&hellip;&hellip; 那时候,我与但丁齐奏《神曲》,与老人出海吊大鱼,与方鸿渐共筑《围城》,与唐·吉诃德牵匹瘦马走天涯&hellip;&hellip;</p>

2016/6/7
阅读更多

故事之一

<p><img src="https://img.wayjam.me/2021/02/902926f5026be747ffb1389745fb6b70.jpg" alt="他"></p> <p>他环顾周围,在这个徘徊独步过无数次的房间,说是徘徊也很是奇怪,因为这里几近无立足之地,他能住在这里已经够勉强的了。</p> <p>说到哪儿了?哦,对了。</p> <p>如果说有什么让他留恋,那就是那满地散落却又完全覆盖了地板的从未发表的手稿了。有那么一天,他心血来潮,把四周墙壁与天花板也用他那些手稿给糊上了。假若有那么一天,什么人会走进这个破落的房间,会不会&hellip;大概还是会觉得厌烦罢,他想。或许那时早该融化了吧,他又想。</p>

2016/4/13
阅读更多

Arch滚挂了怎么办?

<h3 id="经历">经历</h3> <p>有时间我就随手一句<code>pacman -Syu</code>,果然,今天早上开机发现SDDM登录之后,Plasma无法启动了。滚挂了!</p> <p>切换到另外一个tty,执行<code>startkde</code>提示<code>$DISPLAY is not set or cannot connect to x server</code>,那么问题就在Xorg、Intel驱动和Kde本身之间了。昨天我记得Xorg和Intel驱动都没有升级,而升级了<code>plasma-desktop</code>和<code>plasma-framework</code>这两个plasma的关键包,另外还有<code>mesa</code>和<code>mesa-libgl</code>,因为Intel驱动部分是依赖他们俩的。</p>

2016/1/18
阅读更多

OpenWrt内网IPv6之二

<p>路由器上内网IPV6地址的分配已经困扰我许久了,昨天看《我歌4》要看电视直播(各大学的IPV6电视直播通道),才决心要折腾一下。 以前用OpenWrt AA的时候,<a href="https://wayjam.me/post/internal-netwrok-allocate-ipv6-addresses.md">6relayd非常的好用</a>。 而OpenWrt BB之后官方用odhcpd替代了6relayd,从某个版本的BB之后6relayd就失效了,而odhcpd也并没有那么好用。</p>

2016/1/16
阅读更多

某次更新后Primusrun不能启动Dota2

<p>昨天滚完系统发现Dota2不能启动了,去除启动命令的<code>vblank_mode=0 primusrun %command% </code>之后发现竟然可以启动,当然只能用集成显卡启动了。 原来的启动命令为:</p> <pre tabindex="0"><code>vblank_mode=0 primusrun %command% -novid -perfectworld </code></pre><p>Google一番之后发现<a href="https://bbs.archlinux.org/viewtopic.php?id=206068">Primusrun doesn&rsquo;t work for a few games after yesterdays update - ArchLinux Forum</a>这个贴子。 只要用系统的<code>libstdc++.so.6</code>共享库替换steam原来的运行库即可。此方法可以解决Steam中要用Primusrun启动的游戏不能启动的问题。</p>

2015/12/24
阅读更多

OpenWrt的DNS智能解析方案

<p>由于ChinaDns的一个<a href="https://github.com/aa65535/openwrt-chinadns/issues/21">问题</a>,经常无法正常解析,甚至无响应。于是寻找替代方案。 目前我是用dnsmasq-china-list分流国内外站点域名的DNS解析,而本地DNS服务器可以使用pdnsd或ss转发。</p> <h3 id="方式一使用pdnsd通过tcp方式进行dns查询">方式一:使用pdnsd通过TCP方式进行DNS查询</h3> <p>修改<code>/etc/pdnsd.conf</code>配置</p> <pre tabindex="0"><code>glocal{ #... server_port = 54; #本地端口 query_method=tcp_only; #查询方式TCP #... } #.... server{ #... ip = 8.8.4.4 port = 53 #... } </code></pre><p><code>/etc/init.d/pdnsd enable</code></p>

2015/12/8
阅读更多

替换Google CDN库

<h3 id="googleplacer">googleplacer</h3> <p>gooreplacer是浏览器插件,目前有Firefox版与Chrome版。 gooreplacer = a replacer for Google fonts/apis/themes&hellip; 如英文描述,gooreplacer在你打开网页时,检测是否引用了google fonts/apis/themes这些墙外的东西,如果有,进行重定向,重定向到科大为google提供的国内替换库。替换规则如下:</p>

2015/11/9
阅读更多

使用Privoxy将socks代理转化为http代理

<h3 id="安装privoxy">安装Privoxy</h3> <p><code>sudo pacman -S privoxy</code> 配置<code>/etc/privoxy/config</code> 比如我将socks5代理转化为http代理,我可以这样设置。</p> <pre tabindex="0"><code>listen-address localhost:8118 forward-socks5 / 127.0.0.1:1080 . </code></pre><p>然后<code>privoxy /etc/privoxy/config</code>启动即可,这样本地端口的8118端口就是http代理端口。 除此之外privoxy还可以屏蔽网站、去广告等功能,诸位各自摸索罢。</p>

2015/7/18
阅读更多

ArchLinux之软件篇

<p>###浏览器### <code>sudo pacman -S chromium</code> 现在我使用的是Vivaldi(漂亮~)。 KDE下使用FF的话可以用这个版本<code>yaourt -S firefox-kde-opensuse</code></p> <p>###显卡### 我的笔记本是双显卡的(Nvidia GT750M DDR3 + Intel HD4600),双显卡切换自然是要用<a href="https://wiki.archlinux.org/index.php/Bumblebee">Bumblebee</a>,跟着wiki走就是了,并没有发现什么障碍。</p>

2015/7/17
阅读更多

再次安装ArchLinux手记

<h3 id="基本安装">基本安装</h3> <p>WIKI上的步骤不再记录 <a href="https://wiki.archlinux.org/index.php/Beginners%27_guide">Beginners&rsquo; guide - ArchWiki</a> <a href="https://bbs.archlinuxcn.org/viewtopic.php?id=1037">ArchLinuxCN BBS Install Guide</a></p> <h3 id="kde5plasma5">KDE5/Plasma5</h3> <p>首先保证X Server已经安装完成再安装<a href="https://wiki.archlinux.org/index.php/KDE">KDE - ArchWiki</a>, <code>pacman -S plasma-framework plasma</code> 安装KDE软件 <code>pacman -S kde-applications</code> 安装中文包 <code>pacman -S kde-l10n-zh_cn</code> Plasma5推荐使用<a href="https://wiki.archlinux.org/index.php/SDDM">SDDM - ArchWiki</a>作为Display Manager而不是原来的KDM。</p>

2015/6/18
阅读更多

博客再次重生

<p>前两个月域名到期的时候没有续费,我没有续费,结果是两个月的域名收回期,直到几天前我才再次买回这个域名。期间我也想过买其他的域名,.IM、.SO、.ORG等后缀, 但是思前想后,总是喜欢.ME。</p> <p>现在都是2015年中了,看了看上一篇日志都是上一年的了,真实惭愧。不管怎样,博客是复活了。</p>

2015/6/18
阅读更多

搞了个Minecraft服务器

<p><img src="https://img.wayjam.me/2021/02/cb429e5ed6d18513d88df2a03774f664.jpg" alt="Image Title"> 舍友用亚克力板做了个机箱(太丑了QAQ),然后他有闲置的主板、CPU、RAM、电源。。。 <img src="https://img.wayjam.me/2021/02/c16a50ec78b50e7decc8d92ff5e69e46.jpg" alt="Image Title"> 于是,我们就有了一个MINECRAFT服务器了,哇咔咔! <img src="https://img.wayjam.me/2021/02/e4c8a17d8a417fdea2a2a06a749479a7.jpg" alt="Image Title"></p>

2014/10/2
阅读更多

【LnV工作室荣誉出品】小苹果MV华农大版

<p>华南农业大学【LnV工作室】倾情奉献,拍摄于2014年7月初。</p> <!-- raw HTML omitted --> <p>欢迎弹幕轰炸 <a href="http://www.bilibili.com/video/av1284734/">http://www.bilibili.com/video/av1284734/</a></p>

2014/7/14
阅读更多

雨梦

<p>这段时间的天气本来古怪,隔三差五地落下雨来,这雨也是忽大忽小,那边晴这边阴,这下晴忽而阴。想到这天也像是个小女孩,心思复杂,阴晴不定,时而放出猛烈的阳光,时而挤出几滴眼泪,更让人难受的是,忽然之间自个儿伤心起来,这雨也是突然倾盆泻下,让行人猝不及防。</p>

2014/5/16
阅读更多

醉臥石中笑人間

<p><img src="https://img.wayjam.me/2021/02/14b6f037e2d46465a1c87b87d3288450.jpg" alt="石中貓王"></p> <p>前幾天傳來石中貓王與世長辭的惡耗,內心似乎有什麼被觸動了。現在大家都叫你[加菲],但是,我還是習慣叫你[阿波]吧,[阿波]是當初英豪哥隨意叫過,雖然後來他也不這麼叫了,並不是我故意搞特殊,而是我覺得,相比[阿波],[加菲]顯得洋氣,我竊以爲這與你的生活態度與精神世界不符,你應該是完全中國化的,西洋可沒有這種人。</p>

2014/3/30
阅读更多

路由器内网IPV6地址分配

<p><strong>适用环境</strong></p> <ul> <li>路由OpenWrt固件有IPV6模块</li> <li>原生IPV6环境</li> </ul> <h3 id="方案">方案</h3> <p>我采用的是<a href="http://wiki.openwrt.org/doc/uci/6relayd">6relayd</a>,这也是相对方便的方案。</p> <blockquote> <p>6relayd is a daemon for serving and relaying IPv6 management protocols to configure clients and downstream routers. 6relayd provides server services for RA, stateless and stateful DHCPv6, DHCPv6-PD and can be used to relay RA, DHCPv6 and NDP between routed (non-bridged) interfaces in case no delegated prefixes are provided by the upstream router.</p> </blockquote> <p>当然还有其他的方案,如<a href="http://www.openwrt.org.cn/bbs/forum.php?mod=viewthread&amp;tid=7116">openwrt下的ipv6单一地址做网关(附mentohust、njitclient) </a>。</p>

2014/3/22
阅读更多

OPENWRT安装软件的两个问题

<h3 id="一安装的软件与路由cpu芯片架构不匹配">一、安装的软件与路由CPU芯片架构不匹配</h3> <p>用了非默认的PACKAGES源安装软件或者<code>opkg update</code>的时候会出现</p> <p><code>Package XXX version XXXX has no valid architecture, ignoring.</code></p> <p><strong>解决办法:</strong> 在OPKG的配置里面加入</p> <pre tabindex="0"><code>arch all 100 arch noarch 200 arch ralink 300 arch ramips_24kec 400 </code></pre><h3 id="二出现md5summismatch不匹配提示">二、出现md5sum+mismatch不匹配提示</h3> <p>在安装本地上传的IPK的时候,经常会出现md5sum+mismatch不匹配提示。这是因为原有的PACKAGES源与你下载回来的IPK版本不一致,一般是下载回来的版本比较新。 在OPKG的配置里面注释掉PACKAGES源(在最前面加上#),如</p>

2014/3/13
阅读更多

路由器上进行锐捷认证

<p>宿舍的网络方案定为一个校园网+和隔壁宿舍合装的10M铁通(只能装铁通)。因为SCAU的本科生是12点钟断网的,我们宿舍的人说,12点之后不能断网,所以需要一个铁通,况且校园网收费较贵。</p> <p>校园网账号当然有许多优势,比如说教育网IPV6(下PT)和图书馆资源(各种文献资料的免费检索和查阅)。</p>

2014/3/4
阅读更多

改了BIOS的LOGO

<p>因为我用的这个机型有点问题,官方提供了新的BIOS。那么既然要刷新BIOS,那我就干脆把开机LOGO也改一下吧,用到的工具只有ChangeLogo和画图工具。</p> <p><img src="https://img.wayjam.me/2021/02/b686ff60b4c6d2bb75df76a8488d0f28.jpg" alt="改了BIOS的LOGO"></p>

2014/2/19
阅读更多

Windows下搭建我的C/C++的开发环境

<p>##一、搭建编译环境##</p> <h3 id="1安装tdm-gcc">1.安装TDM-GCC</h3> <p>本来想的是安装<a href="http://www.mingw.org/">MinGW</a>64,但是发现mingw的Online Setup只能安装MinGW,所以索性用<a href="http://tdm-gcc.tdragon.net/">TDM-GCC</a>算了,方便省心。</p> <blockquote> <p>Bundle installer for the TDM64 MinGW-w64 edition. Includes C, C++, and OpenMP support, SEH/SJLJ exception handling, other GNU toolchain programs (binutils), Windows API libraries (mingw-w64), GNU make (mingw32-make), and the GNU debugger (GDB).</p> </blockquote> <p><em>CodeBlock和Codelite用的也是这货</em></p> <h3 id="2查看gcc版本信息">2.查看GCC版本信息</h3> <p>TDM-GCC不用像MinGW那样要手工添加环境变量,安装的时候就已经添加好安装路径到PATH(如<code>C:\TDM-GCC-64\bin</code>)。 开始运行,输入CMD,回车并运行,输入gcc -v查看编译器版本。</p>

2014/1/29
阅读更多

Linux下用Mentohust认证校园网

<h3 id="part1-安装mentohust">Part.1 安装Mentohust</h3> <p><strong>Fedora发行版</strong> 到项目主页下载最新的RPM软件包,然后切换至对应目录,在命令行中输入以下命令 <code>rpm -ivh &quot;rpm包文件名&quot;</code> <strong>Ubuntu发行版</strong> 到项目主页下载最新的DEB软件包,双击deb包即可安装。 如果无法双击安装,可使用命令行操作 <code>sudo dpkg -i &quot;deb包文件名&quot; </code> <strong>ArchLinux发行版</strong> 目前,ArchLinux发行版的用户可以在AUR中搜索mentohust-bin软件包来进行安装。 <code>yaourt -S mentohust-bin </code> 注意: AUR中还有mentohust,但其版本过低,且不支持使用 systemctl 管理,不推荐使用。 <strong>手工编译安装</strong> <a href="https://code.google.com/p/mentohust/wiki/Install">参照这里</a> (下面以Arch环境为例)</p>

2014/1/15
阅读更多

Archlinux+Windows 双系统安装手记(UEFI+GPT)

<h2 id="安装archlinux">安装ArchLinux</h2> <p>基本参照</p> <ul> <li><a href="http://bbs.archlinuxcn.org/viewtopic.php?id=1037">ArchLinux安装指南,中文bbs</a></li> <li>[Beginners&rsquo; Guide (简体中文),Wiki](<a href="https://wiki.archlinux.org/index.php/Beginners%27_Guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)">https://wiki.archlinux.org/index.php/Beginners%27_Guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)</a></li> <li>[Installation Guide (简体中文),Wiki](<a href="https://wiki.archlinux.org/index.php/Installation_Guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)">https://wiki.archlinux.org/index.php/Installation_Guide_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)</a></li> </ul> <h3 id="准备工作">准备工作</h3> <ol> <li>下载ArchLinux的镜像iso</li> <li>我在Windows下用Win32 Disk Imager将镜像写入U盘</li> <li>在BIOS开启UEFI</li> <li>uefi引导U盘启动进入ArchLinux LiveCD(选择X86_64 UEFI CD)</li> </ol> <h3 id="分区方案">分区方案</h3> <p>分区问题让我纠结了很久 最终决定如下 NAME FSTYPE SIZE MOUNTPOINT sda 500G ├─sda1 vfat 512M /boot/EFI ├─sda2 ext4 80G / ├─sda3 ext4 80G /home ├─sda4 ext4 15G /var └─sda5 ntfs 15G /data</p>

2013/12/11
阅读更多

Google-code-prettify代码高亮

<p>这段时间一直在纠结于代码高亮与Wordpress编辑器的矛盾,然后就到处是搜索更好的代码高亮插件。 google-code-prettify是 一款非常轻量的语法高亮js库,加载了大小大约是17kb,算是比较轻量级的。使用方法也很简单。</p>

2010/11/7
阅读更多

《末世迷踪》

<p>前几日,得到一本2006年出版的《末世迷踪》,一直读到深夜,却似饥渴。先前,我并没有看过此书的任何介绍,发现它的时候也并没有特地深究其内容,到底知不值得一读,仅仅是看了其书名。我是喜欢科幻悬疑类的,正如地球末日等是百看不厌,再者,近况也无聊,借此一阅,不亦说乎?</p>

2010/7/31
阅读更多

Hello Net World!

<p>又到 Hello World 时。</p> <p>你好。</p>

2010/6/29
阅读更多