我的春节返乡清单

2020 年的开场,多少让大家有点失望,武汉肺炎,还有今天 (2019-10-27) 的科比(虽然对篮球不感冒),不过我还是相信国家机器的运转效率的,这场灾难总会过去。

今年回家,给自己安排了几个任务,主要是为了提升父母的生活幸福感。

阅读全文

网络测速工具 iperf

在我们日常的网络相关实践中,有个常见的需求便是,测试网速。

如果只是为了测试自己所在位置的网速,那么,我们可以直接打开网页,直接开始测试即可,比如著名的 SpeedTest

阅读全文

2019年总结:柔软的三十岁

xiaohua

为什么说三十是柔软的呢?

柔软这个词,大概是我与小花(图中的猫)的关系开始缓和的时候开始意识到的,之前会一直挑逗它,摸它的肚子与屁股,所以总是被挠被咬,然后我就打它,所以它跟我关系一直不是很好。直到某一天,我开始只摸它的头与下巴,然后给它买吃的,我们俩关系就变得好多了。

阅读全文

网页视频播放:方案篇

上篇我们说到,直播协议的介绍,简单回顾下几个技术点:

阅读全文

网页视频播放:协议篇

最近一两周折腾了监控视频的方案,现在把过程中涉及到的知识总结一下,希望对后来的你有帮助。

前言

起初是为了客户端可以跨平台使用,但是我们又不想折腾不同平台的 UI 库,Qt 之类的跨平台库虽然不错,只是它的设计太丑,无法入我法眼。这时候 Electron 方案走进了我们的视线:可以用 Web UI,而 Web UI 的设计又有非常多可供挑选,于是,我们就选了它,然后,问题来了:如何在网页上播放视频。

阅读全文

你得颈椎病了吗

这几周做的东西也比较杂,没有总结什么实质的内容,颈椎病这时候却找上门了,就此机会,来说说这个与技术无关,『轻松一点』的话题。

说起颈椎病,大家应该都不陌生,有个段子说的就是颈椎病是所有工程师的最高级别,是终极归宿,还有的说《颈椎病康复指南》是大家在技术生涯里读的最后一本书,而我就比较厉害了,直接跳过几级,直接修炼到程序员的顶级了。

阅读全文

Docker multi-stage builds

今天来介绍一个 Docker build 很有用的特性:Multi-stage builds,即多阶段打包。

前言

这个特性很早之前,在 2017 年初的时候就可以使用了。如果你没有用到,很有可能你不需要编译语言,就比如 C/C++/Golang/Java 之类的语言。

阅读全文

如何用 PXE 在一小时内安装完 10 台以上的操作系统

上周折腾了一件事,让我觉得还是有必要把过程记录下来的,方便大家之后也要做这件事的时候,可以节约不少时间。

这件事就是:如何在一小时内装完 10 台以上的操作系统?

阅读全文

大清王朝最后的领航者:曾国藩

《曾国藩传》这本书放在书架上挺久了,现在终于有时间看了,我用了差不多一周的时间,不快也不慢,一旦我看到感兴趣的内容,都放下节奏慢慢品味,因为,越看才越觉得,曾国藩太牛了。

我看完之后,还在一直回味,这本书本身的写作水平好坏先不论,各种评论中也有人吐槽作者的写作风格,我看到里面居然有星座这个说法的时候也是很懵:这是写历史人物的,用这样不严谨的文字略显低下了。只是整体上还是可以看的,毕竟传记本身的人物才是重点。

阅读全文

如何实现一个安全的 SaaS/PaaS 服务

这篇文章是接着上篇 SSL 界中 Linux:Let’s Encrypt 写的。(是的,这周灵感不够 🙈 )

阅读全文

SSL 界中 Linux:Let's Encrypt

今天我们来说说造福人类的 Let’s Encrypt(以下简称 LE)。为什么说它造福人类?因为免费。

阅读全文

Golang 中饱受争议的 context

今天来说说 Go 中,一个存在争议的包:context。官方在博客中给了一个例子,说的是在 Go 实现的服务中,对于每一个请求,都会有一个 goroutine 去处理,然后这些处理的地方,又会启动一些额外的 goroutine,去请求数据库,或者其他 RPC 服务,这些请求的过程中,它们会携带一些与单个请求相关的数据,如截止时间、认证信息,而当超时或者被客户端取消的时候,goroutine 应该快速释放它所占用的资源,好让其它请求去使用。1

做过微服务的同学们,听起来有点熟悉对不?这说的不就是微服务的那套东西么:比较明显就是分布式追踪(忘了的同学可以看看我之前写的)以及熔断,几乎每个微服务都会用到,而 Golang 实现这些东西的基础,便是 context。

阅读全文

项目质量的前哨部队:Git hooks

我在之前持续交付的实践与思考中提到过,为了提高项目的内建质量,我们需要尽可能早地发现以及解决问题,这对于任何一个开发团队来说,都是非常重要的事情,尽管它不紧急。目前我们在开源世界中有了各种各样的工具来帮助我们减少错误、提高项目代码的质量,利用它们,可以让你把这件事情真正做好。

阅读全文

面试大招之系统设计

在我们团队经常进行的面试中,往往会用关于算法、数据库与架构设计之类的问题来考察候选人的能力。不过我一般不会直接问,而是将这些问题安排在系统设计里面,或者也可以叫做情景题。

阅读全文

Golang 中的异步任务队列

在一些常见的场景中,如果遇到了某些请求特别耗时间,为了不影响其它用户的请求以及节约服务器资源,我们通常会考虑使用异步任务队列去解决,这样可以快速地处理请求、只返回给用户任务创建结果,等待任务完成之后,我们再告知用户任务的完成情况。

对于 Golang,我们可以通过 Worker pool 异步处理任务,在大多数情况下,如果不在意数据丢失以及服务器性能足够,我们就没有必要考虑别的方案,毕竟这样实现非常简单。

接下来我们先来说说如何用 Worker pool 解决异步任务的问题。

阅读全文