作者:鲁棒棒
写于:20240322
正文
上一篇写到了我的第一个工作所面对的需求,以及使用的框架,今天来详细记录一下我当时做研发所面对的一些问题和一些困惑。当时因为是使用了 openresty 这个框架,这个框架貌似是用在爬虫里的,我近期又研究了一下这个框架,这个框架貌似不太适合把比较复杂的业务放在里面,所以我仔细考虑之后,也没太弄明白为什么非要让我用这个框架去做。
当然这个抽取数据并放到 web 页面中的功能本身也不复杂,放在 nginx 里,也不能说不行,但是可用的替代方案实在是太多了,为什么偏要用 lua 这套东西呢?我到现在也没有十分清楚,同时我的上级也不跟我讲为什么,跟我对接的说辞就是
“我们公司现在在用的一个东西是 openresty,你看一下,之后你要用这个东西来写代码,这个是 lua 的,你看下 lua,今天就开始写吧”
然后我就吭哧吭哧满头大汗的开始搞了,我认为不外乎几点原因,但是都是我自己的推测,除非我去问一下我当时的领导。首先就是公司技术栈的适应问题,现在公司的项目有一部分是基于 openresty 的,让我用这个东西来写业务,可能也是出于适应公司文化上的考虑。
其次还有一个原因就是我面试的时候所面的职位是 “Python 程序员” 当时不让我做 python 方面的工作,可能是想在实习期,给我一个比较全面的测试,比如学习技术的速度,对业务的理解,抗压能力等等。我认为这个理由可能比较靠谱,当然在一般情况下,面试的岗位和工作的岗位不同,是经常有这种情况的,尤其是在不太成熟的小微企业,这种情况没必要过多解释,因为不管面试什么职位都是 “打杂职位”,和大型科技巨头的 “一个萝卜一个坑” 是非常不同的,纯属个人瞎猜,不用较真。
因为当时有更快的方案去实现整个业务,但是我不能用,没有选择权,比如用 django 或者用 flask,都是我比较熟悉的 web 框架,用起来也是比较顺手,同时我觉得 openresty 内嵌的 lua,不太好用,比较适合做一些流量转发,权限校验等需要在网关层面做的业务,增删改查用这个东西来做,可能有些牵强,我当时其实就这么想的,只是苦于不敢跟领导说。
其实还是自己的心态不够强大,其次也是多年所受的教育就叫我要 “逆来顺受”,人家让你干嘛你就干嘛,这也是老祖宗教我的,现在我不打算这么干了,所以我选择成为一名艺术家,我现在行为基本是反过来的。不是 “人家让你干嘛你干嘛” 而是 “我想干嘛就干嘛” 当然仅限于在干活上。生活中我选择多参加点娱乐活动,这样可以身心放松一点。
明白了业务,明白了需要用的技术,然后我就开始工作了,费尽千辛万苦把框架搭建起来之后,终于把 “Hello World” 跑通了,跑通之后我就需要去学习使用 lua 处理 http 请求了。
关于 lua 我的印象很深刻,公司当时给我扔过来一本很厚的书,叫做 “Lua 程序设计” 这本书是 lua 的作者写的,现在已经有了第四版,而我当时看的不是第四版,而是黄色书皮的那个版本,因为要尽快开始写代码,我也没有去翻看这本书,而是打算晚上的时候带回住处,慢慢看。
而在公司里,肯定不能让别人看到你整个下午抱着书看了,而是慢慢的一点一点从 demo 中复制代码过来,然后慢慢改着,测试运行,虽然并不十分清楚每一行代码的用处,但是比如处理字符串,处理 table,还有获取 http 请求,从 http 请求中获取参数等,都是一些 web 框架的常见的功能。
不外乎使用什么技术,什么语言,协议是如此的,那么就肯定要处理各种 http 中的参数,比如 query string 之类的等等。当时我比较着急,所以觉得心情有些焦躁,心态把控的不是很好,总觉得催命一样的感觉,总之就是很不舒服,也不知道该如何缓解,很郁闷。
就这样一边琢磨,一边研究,一边心慌的终于把 http 请求处理这部分跑通了,然后成功的在网页上打印出了 “Hello World” 不过我对其中的原理还是一知半解的。之后便很快又遇到了另一个问题,那就是 lua 的模板语言我看不懂,不会用,这就更着急了。
当时的程序还不是前后端分离啥的,可能现在参加培训之后上岗的程序员朋友,没听说过模板渲染,原理和现在流行的 nodejs 里的那个 server side render 差不多,都可以说是一种服务端渲染,反正 html 代码都是服务器上拼装上去的,连同 js 代码, css 代码,有时候也是需要在服务器端拼装的。
但是拼装的时候,比如需要把某个变量的值,直接传输到某个页面里,如果没有模板引擎,就只能自己去用读文件的方法 fopen 这个 html 文件,用字符串读出来,然后找到 token,最后将 token 替换成变量的值。
而有了模板引擎就不需要这样做了,因为模板引擎做的工作就是代换变量值和进行计算的工作,而公司大佬写的这个框架,一开始是没有模板引擎的,让我着急了好一阵子,因为我自己弄不明白,我只会用 django 里的模板引擎。
无论如何我都解决不了模板的问题,而且前端页面的代码量也比较大,很多功能都得自己写 html 和 js 才行,我跟领导说了,领导说自己研究研究,我跟写框架的大佬说,他说回头给你整个模板引擎,不过我估计他给我整模板引擎整的就把我整下岗了。
所以我很着急啊,接着我磨蹭了大佬好久,大佬终于把一个开源的 lua 模板引擎加上去了,不过也是 bug 很多,其实他可以告诉我的,我可以自己搞搞试试,但是我不知道模板引擎还能用开源的,我以为必须自己写。
这也算是我的一个经验不足的问题吧,现在代码跑通了,模板引擎也有了,接下来就开始开发业务。今天就写到这里,明天继续吧。
晚安!