2017 年,我挖的那些开源软件坑
造轮子,是一个程序员的基本装逼技能。这些轮子可以的来源可以是:
- 我们日常工作中遇到的一些问题,提出的解决方案。
- 使用某个开源软件的过程中,发现它不能满足我们的需求
- 我想开发一个工具,来帮助其它人
- 无聊,我就是想造个轮子
日子过得很快,作为一个 markdown 程序员,在这一年,我造了一些有意思的轮子;还有一些 markdown 工具。如果你已经很了解我了,那么你可能都已经在 GitHub 上 follow 我了,那么这一年造了什么,你可能也很清楚。
图上的颜色深度,实际上也表明了哪段时间轮子造得比较频繁。比如:
- 三月份的 Stepping
- 五月份的 Growth 3.0
- 十月份的 Serverless 系列
- 十一月份的 ADR
- 十二月份的 Dore
那么,就让我来愉快地回顾一下,这一年我做了些什么。
Growth 3.0
GitHub: https://github.com/phodal/growth
Growth 3.0 在现在看来,算是一个 “失败” 的版本,主要的原因是:功能太多,导致多而不精。并且由于开发人手的不足,导致了很多功能难以按时完成。
在这个版本里引入了:
- LeetCode 试题,适合于地铁思考模式
- 算法动画学习工具
- 正则表达式练习
- 设计模式简介
- 内置 VS Code 的编辑器
但是核心的内容没有发生多少变动。但是考虑到仍然有大量的用户在使用 Growth,如果能招集到一定的开发人员,那么就会开发下一个版本:
感谢 @travelgeezer、@airt、@chinesedfan、@zld、@entronad 在这个过程中帮忙填坑。
Stepping
GitHub:https://github.com/phodal/stepping
我在 Stepping 项目上花费了大量的时间,它最初是为了解决我在学习领域驱动设计中的 “事件风暴” 而产生的框架。最初其设计思想是通过 DSL 来生成领域模型:
后来,我的脑洞又大开了。我在里面添加了数据库 Schema:
detail: 商品 model: product - id: int (long, md5) - name: string (64) - number: string (64) - manufacturers: string (128)
计划用来对接 Swagger 的 API 生成库,可以直接用来生成对应的代码:
{ "count": 1, "next": null, "previous": null, "results": [ { "id": 0, "name": "name", "number": 0, "manufacturers": "manufacturers" } ]}
造着,造着,我就弃坑了。
我终于知道为什么产品经理,每天会有那么 SB 的需求。我的需求看上去一点也不聪明,也很 SB。
Serverless 系列
在我学习 Serverless 的时候,我顺手造了一堆轮子,估计大家都用不到:
- 基于 Serverless 的微信公共平台: https://github.com/phodal/mp
- Serverless 事件和错误日志系统: https://github.com/phodal/molog
- Serverless 表单系统:https://github.com/phodal/moform
- Serverless 短链服务:https://github.com/phodal/shorter
你可以在我的博客上,或者公众号的历史找到相关的记录。
ADR
ADR 可能是我今年把需求控制得最好的项目了——没有额外的功能。不对,还是有一些多余的需求,但是我 “觉得” 还是很有必要的。
ADR 是一个轻量级架构决策记录工具,简单的来说就是使用 Markdown 来记录架构决策记录。
GitHub:https://github.com/phodal/adr
它使用 TypeScript 编写,支持 Windows, GNU/Linux, Mac OS、生成 HTML 报表、国际化支持、状态查询 blabla。
在提交了 300+ 次之后,我终于控制自己不再往里面加需求了。我就是一个万恶的产品经理,对自己太残忍了。
Dore
作为年底的最后一个大项目,Dore 是一个使用 React Native 实现的 WebView 容器,可以让你在 WebView 调用 React Native 组件。
它算是对我今年工作的一个总结,其初衷是作为迁移 Cordova 的 WebView 应用到 React Native 的 WebView 的基础设施。
GitHub:https://github.com/phodal/dore
在实现 Dore 的这两星期里,在 @travelgeezer 的帮助下(每次需要填坑的时候,我都想到了 @travelgeezer),已经嫁接了二十几个插件。中间,我还写了一些 Objective-C 和 Java 的原生代码。
尽管这个项目不会很成功(我的意思是有很多 star),但是我对它非常满意。
明年,我会造更多的坑。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Intel OpenCL 之 Pipeline(二)For循环的执行机制
- Intel OpenCL 之 Pipeline(三)不能pipeline的可能情况
- Intel OpenCL 之 Pipeline(四):Pipeline不理想的几种情况
- Python数据分析之NumPy(基础篇)
- Python数据分析之NumPy(运算篇)
- Python数据分析之NumPy(高级篇)
- Python数据分析之Pandas(数据结构)
- Python数据分析之Pandas(数据操作)
- Python数据分析之Seaborn(样式风格)
- Python数据分析之Seaborn(配色方案)
- Python数据分析之Seaborn(变量分析绘图)
- Python数据分析之Seaborn(回归分析绘图)
- Python数据分析之Seaborn(分类分析绘图 )
- Python数据分析之Seaborn(热图绘制)
- Python数据分析之matplotlib(3D绘图)