keng42.com 创建记录

拖延了几个月,终于,在今天完成了把博客迁移到 keng42.com 的工作 😄

[译] Apple NetworkExtension 框架

iOS 9 以后,苹果开放了 NetworkExtension 框架,用于定制和扩展核心网络功能。

最近在解决一些 Shadowsocks iOS 客户端的问题,涉及到 NE 框架,而网上又没什么中文资料,只能啃官方文档。 英文看着太慢太累,索性翻译成中文。这里只翻译了一部分开发 SS iOS 客户端需要用到的部分。

一个连接号引发的血案

最近有人直接从 macOS Mojava 升级到 Catalina 出现各种黑屏、卡死的问题。 问我,我只能说我从 beta9 用到现在都没出现过这些问题,因为每次大版本更新我都是从 U 盘全新安装的。 长期使用的系统,难免会隐藏着各种坑,虽然平时保持着一种微妙的和谐,但大版本更新之后这种和谐就必然被破坏。 于是,就协助他使用 U 盘全新安装。原来只需要几个步骤就能完成的事,硬生生浪费了几个小时,罪魁祸首居然是一个连接号...

ESLint 找不到插件

重装系统之后,配置开发环境的时候发现不管是全局安装还是在项目目录下安装都无法使 eslint 正常工作。其实这个问题以前就遇到过,但浪费了大量的时间之后莫名其妙的就可以工作了,也就没有去深究。现在,问题重现,一方面疯狂吐槽 js 开发,自由同时混乱。不管是格式化还是代码检查的规则,高度定制化的同时就是你用你的我用我的搞得白白浪费很多时间。

外网访问部署在内网计算机上的服务

或出于开发测试的便利、或出于数据安全的考虑,经常需要在日常的电脑上部署一些服务,网站、NAS、监控等供其他机器访问,局域网内可以直接访问,然而一般情况下,电信是不会主动给你分配公网IP的,也就是说必须使用类似 frp、ngrok 之类的内网穿透工具来暴露电脑上服务,性能堪忧不再使用。现在我们就来解决这个问题...

持续集成和持续部署

持续集成指的是,频繁地(一天多次)将代码集成到主干,主要是为了快速发现错误和防止大幅度偏离主干分支。 持续部署指的是,频繁地将软件的新版本,交付给质量团队或者用户,代码通过评审以后,自动部署到生产环境。

让 docker 向 UFW 低头

默认情况下,创建容器如果绑定了端口,则 docker 会自动修改 iptables 打开这个端口。然而 UFW 并不会显示这个规则,这就导致了不管使用 UFW 做什么限制,docker 绑定的这个端口都是开放的。

2017年5月 Android 开发遇到的问题

2017年5月,挺久没写 Android 应用了,技术都落后了,感觉像是重新开始学 Android 开发一样。记录一些期间遇到的问题。