程序员的双手是魔术师的双手,他们把枯燥无味的代码变成了丰富多彩的世界——《疯狂的程序员》绝影 著

尽管一直在各个技术栈间反复横跳,但我从来没敢认为自己能够算得上是个全栈工程师。在无穷无尽且仍在飞速扩张的行业知识面前,渺小的我只能尽全力的奔向未知的领域,并在这个过程中祈祷自己能够积累下更多的技巧,以便让我在未来的旅途中走的更稳当一些。

听时代在召唤

自认为学习计算机还是相对较早的,在2004年还在上高一时,我交付了我人生中的第一个正式的程序——一个用来计算三角形、矩形周长面积的计算器,虽然很粗糙,但也算是帮我正式打开了编程的大门,让我第一次实现了用笔纸以外的方式去解决问题的里程碑。

可惜的是当时未能把代码保留下来,除了QQ群文件里保存的这个exe文件和上传时间能够给我留下一些时代的痕迹外,并没有什么能让我拿来吹牛用的过程性资产。

大学顺水推舟的选择了计算机专业,除了大四最后半年跑到公司实习外,泡在机房写了3年半的代码,别人睡觉我写代码,别人上课我写代码,别人约会我还在写代码。不过好在别人打游戏的时候我跟着也打了不少游戏,要不然这个大学生活真就只剩写代码了,那可就太无趣了。

从后端到前端

高达(注:高达计算机技术(苏州)有限公司)是一家很棒的公司,它伴随着苏州工业园区从无到有、从小到大的过程,稳步发展了30年。领导、同事关系融洽,工作环境也稳定和谐。尽管离开已经快十年了,但我还是会很怀念那时的时光。很感谢老胡给了我机会,让我第一次了解到了——学校外面的人,是怎么写代码的。

客观地说,在日企,尤其是参与那种有着几十年历史的老项目,可能很难接触到时下最新的技术。不过技术是为产品服务的,无论技术是否新潮,只有能够持续且稳定的运行才是检验软件好坏的唯一标准,虽然当我深刻领悟到这句话已经是很多年以后的事了。由于在这里做的大多数银行、证券的项目,我依稀记得做了一个和延迟退休有关的年金项目,大概是让日本人的领退休金的年龄渐进式的递延到65岁,虽然那个时候没想太多,但也是真没想到十几年后,对我们来说该来的都会来。

作为一名后端工程师,在这里写了三年多的 VB.NET,期间甚至还做了一个运行在Excel里的VBA项目,尽管我一直以为我就是一个后端工程师,但到2013年在上海CAC出差期间,在第一次的学会了使用 jQuery 后,我才发现我并不是一定就只能写后端。也就在这个时候,我注册了阿里云的账号,为了无法计算的价值,我买了一台服务器(ECS)后尝试开始搭建自己的个人网站。

历经数次改版,现在它长这样:https://luckystarry.com

从编译到部署

离开高达并非是觉得公司不好,而是在浪潮之下,人真的很容易蠢蠢欲动。幸运的是,这一步我走得也比较顺利。同程在2014年远未达到现在的地位,但对于仍然习惯在PC站买东西的我来说,来到无线事业部所看到的一切都是那么的与众不同。在这里我第一次的在没有详细设计书的前提下直接写代码,第一次联系运维通过拷贝构建产物的方式部署项目(在这里再次感谢我鱼厂顶流运维飞哥 @程飞 十年如一日的帮我运维各种项目),第一次通过看英文官方文档的方式去学习怎么在项目里使用 REDIS …… 一切都很快,但一切又都要求必须非常稳,节奏感满满。

我这个人,可以一时半会不知道、不了解,但我无法接受我一直不会和不了解。怎么办?那就学呗。首先学的就是怎么部署项目。

虽然我在此时已经写了3年多的代码,但怎么通过浏览器使用域名来访问我部署在阿里云上的网站,我是真心不知道。于是从本地开始尝试,把我那个近乎空无一物的博客站点先给跑起来,然后按照同样的目录结构通过远程桌面的形式手动拷贝到IIS目录下,配置应用程序池然后通过IP地址访问,然后再是去申请域名、去学习A记录与CNAME分别是做什么的,到工信部网站申请备案等结果……直到这一系列流程做完,我才真正意识到让一个程序在生产环境跑起来是多么的不容易。多年以后的今天,我通过自己做的构建发布系统仅需点几下鼠标就能实现打包构建、蓝绿发布、版本回滚等操作时,其背后所用到的 Linux、Docker、Jenkins、Nginx …… 等相关的技术,也都是这么一点一点摸索出来的。

现在的织梦者Online,虽然对大家来说仅仅就是一个小小的博客没几个页面,但围绕着其未对外开放的管理系统,已经用上了这些年我所掌握的所有技术。博客是一个传统的 express 项目,利用 ejs 模板引擎渲染页面,而管理系统是一个 malagu 托管的 vue 项目,通过阿里云的 API网关 处理请求和安全,后端大部分 CRUD 是 malagu 后端框架实现的部署在函数计算中的微服务,也有 golang 写的雪花算法ID生成器、python 写的图片处理服务,nginx 负责非www 站的 SLB,白嫖 Cloudflare 的 workers 用来伪造请求抓取数据,Kafka 来收集,ES 来分析,让 authing 帮我完成 PC站的认证,用 coding 来执行构建,把 wow 跑在 docker 里,用 crontab 去清理和备份游戏里的数据 …… 果然还是越折腾,才越有劲。

迟到的小程序

围绕着小程序做了很多年的支持,一直没能下定决心自己做一个,直到错过了微信开发者认证我才后悔莫及。在用 stable diffusion 炼了几个月的丹后,想着还是给好朋友们分享一下现在的图库,于是再次义无反顾踏入了未知的领域。为了防止运营事故,还想尽办法接入了微信内容安全的接口,理论上应该是可以在 15s ~ 5min 内无人值守的情况下完成风险资源的下线。

直接做原生开发效率太低,毕竟只有我一个人也很难同时做出多端,所以这次直接使用了 uni-app 的方案,利用 uni-cloud 的云函数封装请求转发到现有的后端接口真的是干净又卫生,除了 HBuilderX 这么多年过去了还是一如既往的难用之外,但毕竟还是好过微信开发者工具的体验。

两三周的晚上休息时间开发,姑且算不上什么成熟的产品,但毕竟也算是走出了私域运营的第二步(第一步是现在的这篇公众号,话说我都写了那么多了,就算表示鼓励加个关注不过分吧)。除了现在的P站图片分享和一个博客展示外,也许以后还会放进更多的功能,也请给一个独立开发者留点成长的时间,毕竟能用来迭代的时间极为有限。

织梦者Online