近日我学校终于开始试运行 IPv6 了,而我在配置路由器的过程中发现了一些由于上游配置不规范导致的各种问题(如下游客户端可获取 v6 地址但无法 ping 通外网等),于是就有了本文,希望能够普及相关知识以及帮助遇到类似问题的人。本文主要针对常见的高校 IPv6 配置,即连入校园网、认证(可选)后路 ...
How to Setup Clash Premium on Linux
DEPRECATED!!! 本文内容已经并不推荐使用,推荐参考更方便&完备的安装脚本: https://github.com/Kr328/clash-premium-installer。近期发布的 Clash Premium 版加入了 TUN 模式,可以方便得实现透明代理。本文介绍如何在各种 ...
Custom NAT Gateway and DNS for VMware Fusion
由于电脑使用了 Surge 并开启了 Enhanced Mode 来做全局透明代理,现在希望 VMware Fusion 的虚拟机也自动使用这个代理。其实打开 Enhanced Mode 之后无需配置虚拟机即可直接享受透明代理的。但是这样在 Surge Dashboard 中看到的所有连接都是来源于 ...
How to Obtain a Moss Account
这学期在做助教的时候需要做代码查重,于是找到了斯坦福提供的 Moss 来做。根据官网的指示,我们需要向 moss@moss.stanford.edu 发送一封特定格式的邮件来获取一个账号:registerusermail abc@def.gh然而我使用 macOS 自带的 Mail.app 发送却发 ...
Install Wireless Drivers on Windows Server
最近在 Windows Server 2019 环境安装 Intel Wireless 8260 无线网卡的驱动时遇到了下面的错误:A service installation section in this inf is invalid.折腾了半天我发现 Windows Server 默认是禁止多 ...
Locking in Linux Kernel
spinlock 和 mutex 是在 linux kernel 中广泛地使用地两种锁,这两种锁可以覆盖内核中大部分同步需求。
spinlock 即简单地自旋锁,如果暂时获取不到锁,则会一直重试(忙等待);而 mutex 则在获取不到锁地时候主动放弃 CPU(进行 sleep)。虽然 spinlock 很简单,但是其上锁/解锁地接口就有 spin_lock_lock/unlock
, spin_lock_irq/unlock_irq
, spin_lock_bh/unlock_bh
, spin_lock_irqsave/unlock_irqrestore
等,本文即试图总结应该如何正确地选择这些接口。如果读者对 kernel 中四种上下文还不熟悉,可以参考这篇文章。
Contexts in Linux Kernel
本文将简单介绍一下 linux 内核中三种主要的上下文(context)。Players on CPU在系统启动后的任何时候,CPU 都处于下述四种状态之一:处理硬件中断,此时没有与之关联的进程;处理软中断(包括 timer,tasklet 等),此时没有与之关联的进程;用户上下文(user con ...
Force grep Line Buffered
有时候我们需要在 shell 中执行类似 some-cmd | grep keyword | tee filtered.log 的命令,如果管道的起始命令输出的东西不够多,那么 grep 会攒够一定长度的输出才进行 flush 操作。这个行为会导致若提前使用 ^C 来结束管道,则会丢失很大一部分本应 ...
Connect acme.sh via IFTTT
acme.sh 是一个使用纯 posix shell 实现的 ACME 协议,经常被用来自动申请更新 tls 证书。在最近的更新中 acme.sh 新增了 notify 特性,该功能可以将每次定时任务的(成功更新、跳过、失败等)状态通过指定的方式发送通知。目前可用的的通知方式以及使用方式可见该项目的 ...
Replace DMG with Sparse Bundle Image
在前面的文章中介绍了使用大小写不敏感的磁盘镜像为 Steam 开辟一个存储区。但是这有一个弊端,即一旦 DMG 文件建立好,其占用的硬盘空间就固定了,即使没有占满 DMG 内部的空间。为此,我们可以用 macOS 提供的一种动态增长的 Image 结构来替换前文的 DMG 文件,即 Sparse B ...