如何写一个 certbot 的插件

目前白嫖 HTTPS 的主流途径依旧是 LetsEncrpyt,certbot 似乎是官方主要推荐的一个申请方式,关于用途和用法,这里不多介绍,总之,是一个品种齐全,种类多样的 cli 工具:https://certbot.eff.org/

这里由于我的 NAS 希望签 HTTPS,但是电信开外网是不允许开 80 和 443 端口的,所以无法用 HTTP 协议去校验,只能选择 DNS,如果没有 DNS 插件,那么只能用 Manual 的方式,非常麻烦。

于是,我开始了面向源代码编程——

- 阅读剩余部分 -

群晖 Docker 服务使用心得

这次趁着换新电脑折腾了一波,于是把 NAS 里的服务都容器化了,去掉了虚拟机,大概也就释放了 2-3G 的内存(一本满足)。

之前一直觉得群晖的 Docker 不太好用,其实目前我还是这个态度,不过总的来说……又不是不能用。

群晖 Docker 最大的缺点是:除了 Hub 安装镜像的方式,所谓的自己上传镜像到底应该上传什么,至少我 Google 了半天都没有搜到,将 Dockerfile 和 image save 之后的文件包都进行了一波上传操作,结果都是不支持的文件格式。

- 阅读剩余部分 -

WebSocket 限流的研究

关于 WebSocket,在四年前做实验室习题时第一次接触,当时基本上没怎么介绍 WebSocket,只贴了一份链接,而恰巧这次做了一些 WebSocket 上的工作,所以会从头开始介绍一下 WebSocket。

WebSocket 的原理

在 WebSocket 以前,Web 工作人员已经探索过好多种方法了,由于我没有生在那个时代,所以除了 ajax 轮询之外的方法,我完全都没有记住,不过 WebSocket 确实是站在了巨人的肩膀上,终于成为了一套事实方案,而其维护成本和原理也比 TCP 的 socket 链接要简单不少。

- 阅读剩余部分 -

如何构造一些有意义的测试

好久都没更新博客了,难得有时间,还是水一篇好了……

在此之前,我从来没有聊过测试相关的话题,这是因为——平时根本没有时间去写单元测试!最多只有 lib 级别的东西不得不写测试才会有时间去写。不过这次由于业务的关系,补了一大堆单元测试,对于开发而言,整个流程其实还是挺简单的,但是正要构造起测试用例来确很麻烦,因为单元测试和开发会有一些区别——

- 阅读剩余部分 -

魔鬼时间:探究各邮件兼容性

(自从学日语之后每天光日语就竭尽全力了(而且还要追星不是)所以一直没更新,但是这个必须写一下……)

在探究邮件兼容性之前,先友情提示:请在防盗链白名单里加上各邮箱供应方的域名,以防图片 block。

这几周老板交给了我一个伟大而光荣的任务:

15648402520372.jpg

- 阅读剩余部分 -

前端与数据归一化

其实无论前端还是后端,在非常多场景下你都会遇到类似于这样的一个实现:
15536054800140.jpg

假定最大值为 100% 高度,我们怎么样把值映射成一个图表的形式,从数学的角度来说,我们很容易想到,这就是把 [a, b] 映射到 [0, 1] 的过程。当然,a 不一定是 0,有可能是 [0.2, 1],这是由具体需求来决定的,方法都一样。

先从简单的数学题开始吧,我们经常会使用 Math.random() 得到一个 [0, 1) 的值,然后扩大 x 倍,取整,得到了 [0, x) 的值,最后加上 offset,就得到了 [a, x + a) 的值。

- 阅读剩余部分 -

前端规范化 Lint tools 推荐

说起 Lint tools,其实不如说是 Vue 的 Lint tools 推荐,在过去我对 Vue.js 的 Lint 感受的不够深刻,由于 Vue.js 是由 .vue 的后缀名组成的 template file,那样 Lint 其实是不好做的,但是万万没想到,这年头 Lint 工具超发达的,什么都有——

eslint

lint 界元老,也是最基本的一个 lint 工具,即使别的你什么都不配,相信你也至少会使用 eslint 来管理你的项目。

- 阅读剩余部分 -

RabbitMQ 入门知识

我们在项目里用到了 MQ,但是之前我们发现了很多 MQ 的问题:比如消费者挂了,消费内容堆积,消费者重复循环死亡等情况,之前我对于 MQ 一无所知,这些问题都无法回答——我们的代码看上去很标准,也很简单,似乎没有什么问题。但是实际上从开发时就是由一群对 MQ 没有概念的人进行的,因此才出现了这么多问题。

公司的 MQ 是单独定制的,基于 AMQP 0-9-1 去开发的,而实际在使用过程中,其实就是一个 RabbitMQ 的封装版,因此还是以 Rabbit MQ 为主来讲下学习的内容。

- 阅读剩余部分 -