2023-09-16: 没有成行的钓鱼
有一个漂亮的湖,湖水里经常有会飞的野鸭子出没,你明明看到在某一处有一只野鸭子,一转眼它已不见了身影。你开始睁大眼睛四处找寻,过来好一会儿,终于在几十米开外的地方突然发现有一个鸭子头从水里钻出来。
湖边是绿油油的草坪,这里几乎没有人,你可以肆意的进去踩一踩松软的草坪,甚至坐一坐,或者打个滚,丝毫不会影响小草的生长。
湖边的树木也是经过精心设计的艺术,一大株一小株相间排列,品种各样。小鸟禁不住诱惑,高兴地在树丛间飞来飞去,叽叽喳喳似乎在向同伴述说自己的意外发现。
有一次,我和家里人在湖边散步,看到有几个年长的人在钓鱼。他们不紧不慢,悠闲的坐在湖边,水里面的线很长时间也没有动一下。但是他们不在乎,好像只是在等着那些愿意上钩的鱼儿。这让我想起了儿时钓鱼的场景,那会儿钓鱼可是我们几个小朋友最大的爱好。
我说,我也要找个机会来钓鱼。
第二次,看到类似这样的场景,我说,一定要找个机会来钓鱼。
第三次,我也这么说过。
现在,时间已经过去了一年有余,钓鱼终也没有成行。也许再也不愿意花几个小时安安静静坐在湖边了。
2023-09-15: 一个管理命令行工具的工具
开发人员在开发阶段常常需要执行很多自动化的shell命令,以帮助完成测试和调试工作。
虽然执行命令已经很快了,但还是免不了需要手动输入命令名称以及命令参数。特别是在命令和参数非常多的时候,记忆负担变得更重了。
我们实现的开发工作台(data-workbench.com)引入了这样一些方法来解决这个问题:
-
提供一种方式将这些常用的命令分组并添加描述
-
提供多种访问和执行这些命令的入口,如网页版搜索、ide插件版快捷键等功能
-
在上述这些入口中,提供自动参数校验,参数历史记录等便于使用的功能
有了这些功能,不仅记忆负担大大降低,而且方便了团队里面大家共享这些命令行工具。团队效率得到极大提升。
2023-09-14: 一个开发者工具的出现
为了能及时获得开发反馈,我们开发了一个工具,将easysql编写的etl转换为impala可执行的sql代码。它给我们带来了极大的便利,定位olap引擎的impala可以非常及时的告诉我们代码是否有问题。
但是,改进似乎是没有尽头的。工具虽然好用,但是是以命令行的形式调用的。于是,为了能获得这样的开发反馈,总是需要手动的执行命令,拷贝代码,然后粘贴到impala的sql执行工具中执行一下。每改一行代码都需要重复这个工作。总是感觉很繁琐。
然后,我们又在酝酿下一次工具的迭代升级。思路非常简单,把之前需要手动完成的操作进一步自动化,使得开发者可以一键获取反馈,或者更进一步,自动在后台给我们提供开发反馈。
道家说,道生一,一生二,二生三,三生万物。回过头来看这样的工具演进路线,一个之前完全不存在的工具,似乎正在变得越来越丰富和完善。这可能是软件的发展之道。
2023-09-13: etl代码静态检查
作为数据开发的专用dsl–sql,它与其他编程语言存在着一个显著差异:其正确性严重依赖于外部环境。这带来了一些问题:
-
无法在编码时静态检查字段有没有写错。一个字段在当前没有,不代表后续建表的时候不会重新加上;一个当前已存在的字段也可能在运行时被删除了。
-
无法检查潜在的类型转换问题。比如,当你在按照数字类型处理数据时,如果实际上该类型为字符串,就可能由于类型隐式转换导致大量空置。
这些基本的错误常常在代码执行时才暴露出来,反馈循环太长,开发人员因此效率低下。
因此,数据开发迫切需要一个能实时连接元数据库进行静态代码检查的集成开发环境。目前有很多数据库专用开发工具可以给到这样的开发体验,比如Oracle提供的sql developer。但支持spark或hive这类大数据引擎的目前还比较少。
一个简单的实现思路是:
-
将sql代码转换为基于cte的一条查询语句
-
在最后添加一个用于输出结果的占位语句,如select 1
-
在查询引擎上面执行这个查询,并分析报错结果,然后映射回对应的代码行
2023-09-12: 想念
一位很久没有打电话问候的奶奶,突然入梦,慈祥的脸上还是洋溢着那般笑容。
她不愿意到城市里面和我们一起生活,一个人在农村老家待得自在。
上次回去,家里显得空空的,大大的堂屋里面只有一张陈旧的小桌子和两张长条凳。但是,她一个人在家,也要收拾得干干净净,桌凳上、地上、墙壁上没有一点灰尘。
上次回家带上一岁儿子一起,一开始,小孙子还认生,不愿意跟太奶奶亲近。太奶奶很想和小孙子抱一抱,张开双臂,嘴里温和的念叨着要抱一抱,还比着手势。小孩子纠结了好一会儿,最后笑着投入太奶奶的怀抱。
在老家,有人气的家里就会受燕子的青睐,上次回去,墙壁上又筑好了两个燕子巢。
2023-09-11: 影响
跑步,总是能碰到跑在我前面的。遇到实力差不多的,总是忍不住想要跟上去,从而不自觉地加快脚步。
图书馆,看到满座都是捧起书津津有味吸取知识精华的人,总是忍不住也伸手拿起一本,沉下心来,享受阅读的乐趣。
景区,附近一个停车的地方,一位当地的老乡说,这是他们自己家修的,不收费。附近的几处停车的地方也没有收费。
景区,你随手捡起地上的塑料垃圾,准备收集起来处理掉,避免污染环境。旁边也有人效仿你开始捡起其他的垃圾。
泰戈尔说:把自己活成一道光,因为你不知道,谁会借着你的光,走出了黑暗;请保持心中的善良,因为你不知道,谁会借着你的善良,走出了绝望。
这就是影响的力量!