NAS 群晖 Hyper Backup 总是自动暂停的解决办法 在群晖生态中,官方备份组件 Hyper Backup 大概是很多玩家做备份的第一选择。然而我实测发现备份过程中经常出现自动暂停的情况。在检查了错误发生的原因之后,我尝试使用浏览器自动化工具,进行暂停状态的监听和恢复。
网络 使用 WireGuard 搭建 VPN 访问家庭内网 不知道从什么时候开始,B 站博主和什么值得买的值友都开始纷纷带货 NAS 了。看了很多人推荐,于是自己也买了一台群晖 NAS 来玩玩。由于 NAS 部署在家中,出门的时候要访问文件就非常不方便。传统的做法是使用群晖的 QuickConnect 或者 DDNS。然而,前者(据说)速度很慢,后者将设备暴露在公网上,安全性又存在一些疑虑。因此我决定试一试组网工具 WireGuard。
Go 语言 为什么 []MyType 不是 []interface{} 的子类型? 在一个平凡的工作日,我尝试将一个自定义类型的 slice([]MyType)赋值给一个接收 []interface{} 类型参数的函数。然而 IDE 却告诉我不能这样使用。乍一看,interface{} 是 MyType 的父类型,那么 []interface{} 自然也应该是 []MyType 的父类型,合情合理。那么问题在哪呢?
运维 升级服务器上的 helm 和 tiller 最近使用 helm 的时候遇到了些问题,本着“遇到bug先升级最新版本”的原则,准备升级 helm 和 tiller。其实升级本来不麻烦,但是因为服务器在国内受到 GFW 的影响,所以变得麻烦了,在此记录一下折腾的过程。
工具 解除 Telegram iOS 群组频道封禁限制 因为 App Store 的内容审核政策,Telegram iOS 很多群组(尤其 NSFW 群组)都无法进入,部分正常的群也遭到屏蔽,而安卓和 PC/Mac 端不受影响,这还是带来了一些不方便。鉴于 telegram 的代码是开源的,于是我尝试通过修改代码的方式来绕过限制。
Docker 在 macOS 上运行 Docker GUI(X Window)程序 一般我们认为在 Docker 运行的程序好像都是没有图形界面的,但其实通过一些特殊的方法是可以实现在宿主上显示图形界面的。最近由于一些需要尝试在 macOS 上运行 Docker GUI 程序,看了网上的好多篇教程都没有清楚的说明步骤导致无法成功,于是在自己成功之后写一篇博客来记录一下。
Web 开发 说一说 Flask-session 的坑 在几个月之前,我将每课 server 的 session 存储位置从 Flask 默认的客户端迁移到了服务器端,使用到的是 Flask-session 这个包,后端存储选用的是 MongoDB。近些日子以来,网站打开速度越来越慢,通过 APM 的报表中可以看到写入 session 这一步最多的时候竟然需要花费 40 秒之巨!看来需要一点措施来解决问题了。
Web 开发 搭建代理防止 Google Analytics 代码被客户端屏蔽 每课(我创立的开源项目)前端一直使用的是 CNZZ 的网站统计服务(现在叫友盟了),前段时间因为做表单验证的需要开始使用谷歌的 ReCaptcha,突然想到谷歌的 Analytics 是不是也可以在国内正常使用呢?毕竟广告是谷歌的发动机,在网站统计、用户画像这方面谷歌应该还是非常专业的。于是决定开始尝试使用 Google Analytics。
C/C++ 为什么 while (*s++ = *t++); 的作用是复制字符串? 今天在网上看到一个问题:为什么 while (*s++ = *t++); 的作用是复制字符串?因为自己 C 语言功底不好,所以也经过了一番搜索才得到答案。在这里记录一下。
Python 我如何对 uWSGI 进行性能调优(3):使用协程 在上一篇文章中,我们谈到了不能随意设置 uWSGI worker 数量的原因,并通过实验大致推算出了在 CPU-bound 的程序中 worker 的最佳数量。然而真实的环境中并不总是 CPU-bound 的,因此今天我们将使用协程( coroutine )来优化 IO-bound 时的情况。
Python Python Web 内存调优,以及 Python 中的 Copy-on-Write 最近把所有服务迁移到 Kubernetes 之后,终于可以直观地通过可视化面板观察容器的资源使用情况了。在看的时候发现自己写的 Python Web 项目一启动就要占用 250MB 左右内存,感觉有点偏高,于是尝试优化。这篇文章牵涉到 Linux 的 CoW 在 Python 中的处理方式,目前中文互联网上没有什么资料,于是我顺便填补一下这个空白。
Python Sentry SDK 导致 Python 出现段异常 最近在每课服务器端内存优化的时候更改了 fork () 函数执行的位置,然而修改之后却导致程序在运行时出现段异常。对于 Python 开发者来说,段异常这类底层的异常并不多见,因此调试过程也值得记录一下。
Python 我如何对 uWSGI 进行性能调优(2):设定 worker 数量 在上一篇文章中,我们谈到了不能随意设置 uWSGI worker 数量的原因,并通过实验大致推算出了在 CPU-bound 的程序中 worker 的最佳数量。然而真实的环境中并不总是 CPU-bound 的,因此今天我们将使用协程( coroutine )来优化 IO-bound 时的情况。
Python 我如何对 uWSGI 进行性能调优(1):快速参数调整 uWSGI 是 Python Web 世界里广泛采用的应用服务器。它的配置非常复杂,如果要用于生产环境,有很多东西值得细细了解。本篇文章作为自己进行性能调优的记录。
安全 SSL/TLS 配置优化的若干建议 “如果你配置 SSL 只是为了网站的网址前有一把锁的标志,那不如直接送你把锁好了”。别想了,这句话不是哪个安全专家说的,是我说的(逃)今天写一篇文章记录一下自己 SSL 的配置优化过程。
杂谈 记一次浏览器开发者工具提示Javascript写入失败的经历 偶然一次在调试自己的网站的时候打开Chrome自带的开发者工具,发现居然提示一个来自51.la的统计代码尝试在我的网站上写入文本但是被浏览器拒绝。我的第一反应是被吓了一跳,因为我从来没有使用各种访问统计工具的习惯。自己的网站怎么会被别人挂了51.la的代码?
运维 Mac安装XAMPP并调试WordPress 之前在Windows下一直用的phpStudy来配置本地PHP环境,phpStudy由中国人开发,操作十分简便,控制面板一目了然。然而后来转投Mac阵营之后却没有找到满意的本地PHP调试环境,一直是用远程服务器直接调试。虽然XAMPP也是相当知名的,但网上关于Mac上使用XAMPP的文章并不多,我在配置环境中遇到了一定困难,于是今天写下这篇文章以方便后人。