项目

我折腾兴趣项目主要是为了好玩/有用,希望你也会对下面的某些项目有同感。

RoboMasterPy

一篇原理解析 | Github | PyPI | 文档

RoboMasterPy 是一个适用于机甲大师EP(大疆创新的教育机器人)的Python库和编程框架。RoboMasterPy编程框架抽象了视频流、推送和事件的获取,模块之间的信息通讯, 提供了一个高层的逻辑组织方式,期望降低开发者的心智负担,提升开发效率。

结合OpenCV等工具,我做了一些还算有趣的工作这篇文章详细解释了怎么将你的机器人小车训练为一名守门员。

O’RLY动物书封面生成器

点击生成你的动物书封面 | Github | 有趣的例子

O’RLY(不是O’Reilly)封面工厂是一个娱乐性的书籍封面生成器,支持输入多种语言。

O’RLY 基于Golang和Vue.js实现,编写它的初衷有三个:

Bluelox

在浏览器中运行 | Github

BlueLox 是一个基于AST语法树的 Lox 解释器,使用 Golang 实现。

Lox 是 Robert Nystrom 设计的编程语言,在他精辟的书《Crafting Interpreters(手写两个解释器)》中作为实现对象。他在书里实现了一个Java的AST语法树解释器(jlox)和一个C的机器码解释器(clox),附带循循善诱的解释,走心的手绘插图以及满满一袋关于早餐的比喻和笑话。

Tart

Github

基于Firecracker MicroVM的玩具Gitlab CI Runner,通过简明地实现Gitlab Runner功能的一个子集,展示Gitlab Runner的设计和实现方法。

举个例子,蛋挞可以运行自己的CI job,运行自己的测试和编译自己

特色:

  • 折腾;
  • 使用Firecracker/dev/kvm,让每个job在一个两秒内启动的虚拟机中运行,我目前没在公开资料里查到这么做的;
  • 代码量少,大概2000行实现了Gitlab Runner的核心功能:job的获取、执行、环境隔离、日志和结果的上报;
  • 在每个星期四运行job会有特殊效果。

Golang gzip中间件

Github | go.dev

一个了然无趣,适用于Gin和net/http的gzip中间件。

在几乎所有网络框架中,gzip中间件都是一个基础、常见甚至有些无聊的部分。但是这样基础、不起眼的部分下,还是有一些的复杂性值得考虑:

  • 客户端支持解压缩吗?
  • 哪些内容类型需要压缩?判断基于MIME还是扩展名?
  • 数据流是不是已经压缩过?
  • 返回最少要多大才值得压缩?
  • 使用哪一个gzip级别?
  • 流式传输的返回该如何判断返回大小?
  • ……

在实现这个项目时,我学到了不少东西。

Go Etherscan API库

Github | go.dev

Etherscan.io的Golang绑定, 支持几乎所有功能(accounts, transactions, tokens, contracts, blocks, stats), 所有公共网络(Mainnet, Ropsten, Kovan, Rinkby, Tobalaba)。本项目只依赖于官方库。

本项目在Etherscan文档中获得推荐。

更多项目

请参阅Github.