使用配置进行你的开发

在开发中,我很经常的将很多功能设置成可配置的,这里不仅仅说的是应急的开关,而是包括了一些文本在内的信息。这篇文章也就是说说为什么我要这么做,以及这么做到底有什么好处。

从最简单的说起:配置开关

最简单,大家也最常用的是在后台配置一些开关,这些开关不用发布,只需要轻轻一点就能切换某些功能的状态,这也是大家通常会做的「基于配置」的开发的处理,毕竟发版的时间实在太漫长了,因此大部分后端都有有意识的将一些开关放在后台而不是开发写的配置文件中。

- 阅读剩余部分 -

GraphQL 从入门到入土

在入职之后用了很久的 GraphQL,之前总是得其形而不得其神,在这次 API 设计失误之后,我总算领悟到了一点 GraphQL 的设计思想,所以来随便的总结一下。

GraphQL 到底是什么

GraphQL 是一个用于 API 的查询语言,是一个使用基于类型系统来执行查询的服务端运行时(类型系统由你的数据定义)。GraphQL 并没有和任何特定数据库或者存储引擎绑定,而是依靠你现有的代码和数据支撑。
——官方说明

- 阅读剩余部分 -

Dark Mode 开发与 Debug 指南

Dark Mode 的判断

media 中有一个属性 prefers-color-scheme ,用 matchMedia() 来检测 (prefers-color-scheme: dark) 是否存在就可以了。

Dark Mode Debug

截止2019年11月15日,目前经过测试可以直接 Debug DarkMode 的浏览器(以最新版为准):

  • Safari
  • Chrome 金丝雀版

其中 Firefox 可以通过安装插件实现 Dark Mode Debug(兼容性不是很好)。

- 阅读剩余部分 -

从 Django Allauth 中进行登录改造小结

大概来介绍一下 Django Allauth 改造的期间遇到的一些问题和改造方法,在此之前我只想说——Django Allauth 是屑。

为什么我说 Django Allauth 是屑

入职之初我就接到了一些第三方登录的任务,然而 Django Allauth 将内部封装的太好,暴露的 API 不足,更新又慢,issue 和 PR 很少有人处理,当你需要扩展时,很多情况下你只能用一些 hack 的手段去解决问题,非常蛋疼,所以当时就决定慢慢的切到自己的一套 Auth 体系中。

- 阅读剩余部分 -

知识迁移——工程师多向发展的优势

From:「GDG DevFest 2019」
这是由演讲 PPT 汇集而成的内容,可能与演讲内容有所差异,并非演讲稿,望悉知。

知识迁移?

首先得提出一个问题,到底什么是知识迁移,在 wiki 上有这样一段解释。

在一个地方所学的技能、知识与态度对另一个学习的影响,它可以加快学习的速度。
——艾尔德

- 阅读剩余部分 -

如何写一个 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 链接要简单不少。

- 阅读剩余部分 -