Diu.notes

开源项目维护指北 —— 写于 1k Followers 有感

可能了解我面试习惯的朋友们知道,我的最后一问一定是: 介绍三个你最喜欢的开源库。 问的是面试者对于开源的敏感度与学习的热情度。根据回答的内容(是否常见/关注理由),我能大致了解对方的学习偏好作为一个比较重要的参考。 我算是个比较狂热的开源爱好者。一直以来就想写一篇关于开源的文章,但一直找不到好的机会。恰巧最近,我的 GitHub 关注者突破了 1k,并且进入了中国区 top500,于是我觉得是时候写点什么了。 仅为个人的经历和想法,可能不太成熟,欢迎提出指正。对了,如果看到这里,欢迎顺便关注我的 GitHub 配合阅读:https://github.com/ddiu8081。 开源是什么,贡献是什么? 请允许我先唠叨几句,从概念开始讲起。顾名思义,开源就是开放源代码,它可以允许任何人几乎出于任何目的查看、修改和分发源代码。而贡献,就是指为开源项目做出有价值提升的行为。 不管是提交代码,还是简单的提交 issue,都属于为项目做出贡献,都能为开源项目壮大力量。 创建项目的契机:从玩具到 7k star

开发

认识 WebSocket

即时通讯之路:WebSocket 的诞生2005年,随着 AJAX 技术的诞生和应用,由网页向服务端请求数据并动态渲染页面已经成为可能。那么由服务端向网页推送数据是否可行?HTTP 是一种只能由客户端发送的单向传输协议,要获取连续实时的信息确实很难。人们开始了这种花式实时获取信息技术的探索。 依靠 HTTP 协议,比较广泛的方式是轮询。客户端定时不断地发送请求,服务端把最新的数据返回。轮询时间越短,消息就越实时。这种方式弊端很明显。由于 HTTP 是无状态的,每一次请求都是完整的 HTTP 请求,大量轮询会不断携带无用的 Header,浪费资源。此外,如果服务器的消息不太多,那么大部分轰炸式的轮询请求其实都是无用的,效率很低。在实时对战游戏等一些要求低延时的场景,这种定时请求的设计也是没办法满足要求的。 轮询另一种技术是长轮询,这是对前面短轮询方案的一种改进。在长轮询技术中,客户端发送 HTTP 请求到服务端,服务端收到并保持此次连接。等到服务端有新的数据时再返回。接着客户端发起下一次请求,重新与服务器发起连接。 长轮询此外,还有其他一些更加 Hack 的方案,

开发

也来试试 Caddy Server

2020注:Caddy更新了2.0版本,本篇内容可能不再适用。2.0博主尝试过变化较大但依然比较好用,有空会在本文更新。 用过比较长时间的 Nginx,总感觉那种复杂的配置文件很不舒服,每次要去实现一个反代一个转发都要去搜索教程。在没有找到好用的图形化管理工具的条件下还是比较困难。 正巧找到了一个基于 Golang 的 Web 服务器 Caddy 。相比 nginx.conf,Caddy 的配置文件相当简洁,多站点配置、反向代理等功能可以全部在一个 Caddyfile 文件里配置。官方有一个 28秒创建一个 HTTPS 服务器。 除此之外,Caddy 还有很多 优点: 单文件,无依赖 默认支持 https,支持自动签发 Let’s Encrypt 证书 默认支持 HTTP/2 丰富的插件系统,可以快速配置缓存、CORS、