乐趣区

关于开源:九流-程序员的-GIthub-贡献之路

背景

自己是个一线码农,专科毕业,且非计算机专业毕业,后端辣鸡程序猿,公司我的项目须要一个前端解析 MySQL 语句的性能,然而前端不相熟 MySQL,所以应用了正则去匹配,简略的语句的确没有问题,然而简单的语句,正则就很吃力了。所以,前端不行就后端凑,因为性能是前端交互,所以,我 GitHub 找到了一个 150 star 的前端库(其实这么多外面只有这个库满足咱们的大部分要求)。

代码奉献之路

原本这个在后期的确没故障,很多简单的 SQL 都能解析,然而当应用了到了 SQL 工夫单位的时候,我的项目无奈解析,最开是的思路其实还是通过更换 npm 包的形式,看看有没有其余适合的包能够解决这个问题,毕竟有轮子,谁 TM 闲的去造轮子,试了好几个 npm 包的时候,都是解析谬误,说切实的,我过后解体了(T_T),于是我尝试去看一下代码,心愿我能批改代码,增加我须要的性能,然而,我发现我干不动,关上源码,发现只有三个文件。

两个 js 和一个 jison,眨眼一看,认为是 json,当我点开 jison 文件的时候我傻眼了,别说百度,google 对于 jison 的材料也不多,前面通过看了几篇文章,终于晓得,原来 jison 是编译原理前端库,好了,我一 “ 九流 ” 程序猿也没有学过这玩意啊,然而工作的确须要,没方法,而后开始了本人的作死之路了。

学习编译原理

为了实现工作,就算是刀山也要上啊,最开始,被各种概念给整懵逼了:

  • 词法剖析
  • 语法分析
  • 形象语法树
  • 动态单赋值
  • ….

而后简略的入门了一下编译原理,便开始了魔改之路了,我不敢说我当初真的会编译原理,然而通过学习编译原理,发现作为一个 “ 九流 ” 程序猿,要走的路还很长。

通过一直的试错,终于看懂了源码,而后联合了 MySQL 的语法,欠缺了性能,并依照作者的要求,写了测试代码,提了 PR,说切实的,我也没有想到我的代码也能合到 master,毕竟第一次提 PR。

本次共提了两个 PR,一个是 bug,一个是 feature,仅此记录一下我的第一次代码奉献之路。

总结

通过这次经验,播种了太多第一次了,有些许的兴奋,冲动。
播种教训:

  • 不论你是 “ 三流 ”,还是 “ 九流 ” 程序猿,不必不可一世,做本人感兴趣的事件。
  • 敢于尝试,很多人都说想要奉献本人的代码,却始终说不晓得怎么奉献代码,其实,凡事都有第一步,怯懦的踏出这一步吧。
  • 通过这次经验,发现须要学习的货色还有很多很多,共勉吧。

最初,感激一下作者的 JavaScriptor/js-sql-parser 的库,让我保住了饭碗 (T_T)。。。。

退出移动版