我折腾兴趣项目主要是为了好玩/有用,希望你也会对下面的某些项目有同感。
RoboMasterPy
RoboMasterPy 是一个适用于机甲大师EP(大疆创新的教育机器人)的Python库和编程框架。RoboMasterPy编程框架抽象了视频流、推送和事件的获取,模块之间的信息通讯, 提供了一个高层的逻辑组织方式,期望降低开发者的心智负担,提升开发效率。
结合OpenCV等工具,我做了一些还算有趣的工作,这篇文章详细解释了怎么将你的机器人小车训练为一名守门员。
O’RLY动物书封面生成器
点击生成你的动物书封面 | Github | 有趣的例子
O’RLY(不是O’Reilly)封面工厂是一个娱乐性的书籍封面生成器,支持输入多种语言。
O’RLY 基于Golang和Vue.js实现,编写它的初衷有三个:
- 好玩;
- dev.to上的O RLY Cover Generator不支持英文以外的语言;
- Golang关于图形类、字体类的应用比较少见,值得尝试。
Bluelox
BlueLox 是一个基于AST语法树的 Lox 解释器,使用 Golang 实现。
Lox 是 Robert Nystrom 设计的编程语言,在他精辟的书《Crafting Interpreters(手写两个解释器)》中作为实现对象。他在书里实现了一个Java的AST语法树解释器(jlox)和一个C的机器码解释器(clox),附带循循善诱的解释,走心的手绘插图以及满满一袋关于早餐的比喻和笑话。
Tart
基于Firecracker MicroVM的玩具Gitlab CI Runner,通过简明地实现Gitlab Runner功能的一个子集,展示Gitlab Runner的设计和实现方法。
举个例子,蛋挞可以运行自己的CI job,运行自己的测试和编译自己。
特色:
- 折腾;
- 使用Firecracker和
/dev/kvm
,让每个job在一个两秒内启动的虚拟机中运行,我目前没在公开资料里查到这么做的; - 代码量少,大概2000行实现了Gitlab Runner的核心功能:job的获取、执行、环境隔离、日志和结果的上报;
- 在每个星期四运行job会有特殊效果。
Golang gzip中间件
一个了然无趣,适用于Gin和net/http的gzip中间件。
在几乎所有网络框架中,gzip中间件都是一个基础、常见甚至有些无聊的部分。但是这样基础、不起眼的部分下,还是有一些的复杂性值得考虑:
- 客户端支持解压缩吗?
- 哪些内容类型需要压缩?判断基于MIME还是扩展名?
- 数据流是不是已经压缩过?
- 返回最少要多大才值得压缩?
- 使用哪一个gzip级别?
- 流式传输的返回该如何判断返回大小?
- ……
在实现这个项目时,我学到了不少东西。
Go Etherscan API库
Etherscan.io的Golang绑定, 支持几乎所有功能(accounts, transactions, tokens, contracts, blocks, stats), 所有公共网络(Mainnet, Ropsten, Kovan, Rinkby, Tobalaba)。本项目只依赖于官方库。
本项目在Etherscan文档中获得推荐。
更多项目
请参阅Github.