越过 Mac,走向 Windows

服役已久的 2015 年款 13 寸 MacBook Pro 当前运行起来实在有点吃力了,因此换电脑的计划逐渐提上日程。考虑到毒瘤的 Apple T2 这一因素,以及现在的 Mac 价格越来越高,我开始考虑其它品牌的笔记本。
大概从去年开始,我就通过 Windows To Go 体验了一下现在的 Windows 10。不得不说和 2015 年的 Windows 10 有了巨大的提升,更加适合开发使用了。经过数个月的考察,时机已经成熟。
恰逢 Surface Book 3 发布,于是通过一些渠道,我成功以大约官网一半的价格得到了一台 15 寸顶配 16GB 内存与 1TB 硬盘的 Surface Book 2 作为主力机使用。
终于,我找回了 2015 年看 Surface Book 发布会时的尖叫。
Surface 截图
(从这张截图的时间和发布的时间就可以知道我咕咕咕了多久

找回熟悉的体验

首先,Mac 上诸多人性化的设计,是我们在 Windows 上首先需要找回的。 继续阅读 »

巧用反弹 shell 将两个异地的 TTY 同步

我们常常会遇到需要远程帮别人协助修复服务器等场景,这种时候经常会有一些信息需要对方输入,比如敏感的 API Key 或者密码等。
如果只是简单地连接对方的 SSH 服务器,则很不方便让对方进行操作,需要要求对方通过聊天工具发送这些敏感信息,这既不安全也不方便。
而且,这种方式对方也看不到我们在干什么,添加公钥的操作也比较敏感。
最好的方法,就是能够建立一个虚拟终端,对双方同步,双方都可以对这个终端进行操作。这样所有的操作对双方都非常透明。尤其是当我们在进行终端操作的教学时,优点尤其突出,因为对方可以看到整个操作过程。

思路

我们可以巧妙运用反弹 shell 的方法,再通过 screen 命令 spawn 出一个完整的 pty。然后让位于异地的两个 TTY 都作为这个 pty 的输入输出端,这样两个 TTY 就同步了。 继续阅读 »

2020 哔哩哔哩拜年祭 SP 《铁心博弈》视频 CID

今年拜年祭艾叶老师执导的 SP 《铁心博弈》着实好看。但每次都在 B 站上也不方便自己跳结局,而且互动视频的形式对想下载它的朋友也不怎么友好。(就是我想下载的啊摔!)

所以今天晚上写了一波脚本抓出来了视频的 CID。CID 如下: 继续阅读 »

在非 Windows 平台上使用 Canon MF3200 Series 打印机

咕了三个月,总算写完了。
手里有一台年代略有些久远的 Canon ImageClass MF3222 打印机,但其打印质量还十分不错,因此打算将其利用起来。但是非常令人难过的是 MF3200 系列使用的都是 CARPS 而不是 CUPS,因此无法在非 Windows 平台直接使用。
一种折中的方法是,每次连接打印机时启动 Windows 虚拟机,但这并不是一种优雅的方法。而且,我还希望实现远程打印。
鉴于家中有一台 24 小时开机的 Linux 服务器,我决定通过 Windows 虚拟机构建一个打印服务器。

虚拟机准备

因为手里有 Windows Server 2008 的正版,而且 Windows Server 2008 有内建的 IPP 服务器,因此最终选择使用 Windows Server 2008 64-bit。CPU 建议分配 2 核,内存分配 1024 MB 即可。
如果你的服务器没有太多历史包袱,可以重装为 VMware ESXi 或 Proxmox VE 等虚拟机平台,但我的服务器已经部署了很多服务并且资源也有限,因此最终选择使用 VirtualBox + KVM 加速。
建议虚拟机网卡模式设置为桥接,这样方便在内网中部署 Bonjour 打印机以及 AirPrint,而不需要每次部署服务都进行端口映射。 继续阅读 »

使用 Phicomm N1 作为路由器

最近咕力十足,新高三狗也确实比以前忙了很多,都咕了两篇 blog 了,不过刚刚搞的这个绝对不能咕!
之前买了个 Phicomm N1,但是因为家里有服务器所以一直吃灰,近期之前的家里小米路由器 3 越来越不撑了,也不能充分利用那边的校园网资源。于是我萌生了拿 Phicomm N1 作为路由器的打算。
说干就干,于是我拿着刷了 Debian 9 stretch 的 Phicomm N1 过去了。
设备: 入户线 (静态公网 IP,无 DHCP),刷有 Debian 9 stretch 的 N1,小米路由器 3,一根网线。这里设 N1 连接的小米路由器上的 LAN 口为 LAN 1。

配置 VLAN

切入正题,首先 Phicomm N1 只有一个以太网口,虽然也许我们可以插 USB 网卡,但是不知道为什么我的多个型号的 USB 网卡都不能工作,看起来是内核驱动出了问题,而内核又一直是我的知识盲区。那么这个口就需要同时承担 LAN 和 WAN 的功能。这里我们就需要引入 VLAN。对于 VLAN 的定义不再赘述,它的功能就是在一个 interface 上划分出不同的虚拟 LAN,起到分割广播域 (广播域的定义不再赘述) 的作用。
小米路由器刷了 NATCAP 移植的 OpenWRT,因此支持 VLAN 交换。
我们的思路是,通过使用不同的 VLAN tag,使得小米路由器的 LAN 口、Wi-Fi 和 N1 处于一个广播域中,使得小米路由器的 WAN 口和 N1 处于一个广播域中,这样 N1 上的虚拟 WAN 口就可以和运营商路由器处于一个广播域中,从而互相访问。 继续阅读 »