日本旅行攻略 – 上网篇

结论前置,结合近几年在日本旅行期间的使用经验,目前比较推荐以下两种:

  • 漫游超人 随身 Wi-Fi: 不限流量,网速不错,可以多人共用;但携带、充电比较麻烦。
  • IIJ/DOCOMO 预付费卡: 有流量限制,网速不错,实测 iPhone 可以双卡、开热点;但是需要设置 APN。

同时需要避免使用各类漫游上网卡(慢)、在当地购买上网卡(贵)。中国大陆的手机号码建议在旅行前开启漫游通话和上网,但由于不能使用 Google Maps,只作为紧急手段使用。

以下是这几种卡的详细评测。

继续阅读“日本旅行攻略 – 上网篇”

迁移 WordPress 站点并安排容器化与 CDN

由于之前使用的主机节点抽风比较严重,周末狠了狠心决定切换至新的供应商上,并且套它一层 CDN。最早的部署方案是在 16 年左右设计的,那时候还比较年轻,docker 之类的技术也没那么流行,就直接照着百度出来的过时 Blog 拉了一套 LAMP 起来;后来大概在 17 年时需要迁移站点,捯饬了半天搞不定 Apache 的多站点 SSL 配置,干脆把它换成了 Nginx + php-fpm 。像 CDN 啥的也没整,直接源站就在这之后又经过了数次迁移,节点也搞挂过许多次,博客也一度停更了许久,不过数据倒是奇迹般的一点都没丢。

然而现在已经是 2022 年了,是时候整一点新鲜的花活了!所以在部署新的站点时,我采用了容器化和 Cloudflare CDN。这篇文章主要介绍迁移时遇到的坑,包括:

  1. 迁移 DB 与部署 phpMyAdmin;
  2. 整合旧 WordPress 站点与官方的 Docker Images;
  3. 配置 Cloudflare CDN 并验证回源请求。
继续阅读“迁移 WordPress 站点并安排容器化与 CDN”

为 Headless Linux 安装 Virtual Camera + Microphone

最近在研究 WebRTC,但由于本地环境不具有 Camara 和 Microphone,测试就变得不是很方便。再加上我把开发环境塞进了的 VM 中,Chrome 会阻止在非 HTTPS 页面上启动相关服务,因此考虑直接在 VM 中进行一些通话测试。

视 OS 不同,虚拟设备的实现方案会有所不同。其中 Windows 和 MacOS 是比较简单的:OBS 搞定 Camera 和视频源,VB-CABLE 搞定 Microphone,一个能选择输出设备的音乐播放器 (例如 QQ 音乐) 和音频源。

Linux 的情况则有所不同。虽然 OBS 也有 Linux 版本,但实践下来安装时会存在各种依赖问题,并不怎么好用;另外也还是需要单独的方案来实现 Virtual Microphone。因此我采用了下述方案:

  • tigervnc + x11 + xfce4 + chromium – 提供远程操作、调试环境;
  • v4l2loopback 内核模块 – 用于创建一个视频的回环设备;
  • pulseaudio module-pipe-source 模块 – 用于创建一个音频的 pipe source;
  • ffmpeg – 解码媒体文件,重编码音视频流并输出到设备。
继续阅读“为 Headless Linux 安装 Virtual Camera + Microphone”

Debian 折腾小记

由于近日武汉肺炎疫情严重,学校严禁提前返校,因此原本 2/5 左右回学校写论文的计划不得不取消,只好窝在家里看文献(划水)。看着看着眼睛就开始疼了,最开始觉得是笔电上没配置 MacType 的问题,结果配置了半天也折腾不好,想了想不如干脆直接上 Linux 得了(才不是因为 Mac 买不起)

想了想 openSUSE + KDE 用过蛮久的了,除了略有卡顿倒是没什么不好;RetHat 系碰过觉得也就那样;Ubuntu 碰都不想碰,Debian 在服务器上用的挺多的;Arch 不敢造次。考虑到国内发包都以 Ubuntu 的 deb 为主,我也不太喜欢衍生发行版,干脆试试 Debian + Gnome3。试过之后发现 Gnome3 咋用咋不爽,比如 Telegram Desktop 的那个图标莫名其妙点不下去,Application Menu 弄不到顶部去,Dock 想放到下面都要装插件……

算了,重装上 KDE!于是有了这篇记录,主要涉及以下内容:

  • 系统安装
  • KDE 简单定制
  • 显示配置与 Gamma(ThinkPad 系瞎眼屏用)
  • 应用程序音量控制
  • 蓝牙耳机及 aptX 编码器
  • vanilla texlive 与 Debian 集成
继续阅读“Debian 折腾小记”

说说 github.com/pkg/sftp 与 TCP stall

好久没写过东西了,最近一直在折腾 Golang,今天难得想起来了,就稍微写一点。

最近有个需求,要通过 SFTP 把文件传到指定服务器上,于是就用了 github.com/pkg/sftp 这么一个库。然而,这个库存是存在一些坑的,比如某个版本 sftp.File.Write 写超过 4MiB 的文件时,Kill 远程 sshd 后会导致 Close 时死锁;又比如更新代码后,Kill 了远端之后有时 ReadFrom 返回 Writer EOF,有时返回 nil;再比如模拟弱网时发生了 TCP Stall,传输就永远的卡死了,如果此时对端认为 TCP 超时,则该 TCP 将永远不会被释放。

继续阅读“说说 github.com/pkg/sftp 与 TCP stall”

调整Linux磁盘分区大小

装系统的时候脑子疼,给了56GB的根分区,40GB的home,24GB的opt。现在发现,home和opt快满了,根分区剩了一大堆,只好调整一下了。

好在,我的根分区是btrfs,opt是ext4,home是xfs,都能够支持缩放。这次的主要目的是缩小根分区,扩大opt分区,home就不动了,改天把Android SDK丢到opt应该就没事了。

继续阅读“调整Linux磁盘分区大小”

解决Linux首次登陆无法打开应用程序,与注销后再次登陆无声音的问题

实验室的台式机一直有点毛病,开机后首次登陆,桌面本身能够打开,KDE上次登出前保留的那些窗口也能打开,但无法打开新窗口。在上次登出时保留的那个Konsole中启动xclock,得到错误如下:

Xlib: Invalid MIT-MAGIC-COOKIE-1 balabalabala

另外,只有第一次登陆声音是正常的,再次登陆后就会出现音频服务未启动。我本来以为是Linux对双显+HDMI音频支持的不好,再加上也不是很频繁,就一直没仔细看。然而这周问题出的却相当频繁,所以我觉得有必要处理一下了。

继续阅读“解决Linux首次登陆无法打开应用程序,与注销后再次登陆无声音的问题”