一名33岁业余程序员对编程的热爱与追求

2,284 阅读8分钟

我是一名业余程序爱好者,写代码给我带来了快乐,回顾回顾我的一年都做了哪些事。

~简要回顾

记得第一次接触编程还是在高中,第一门学的语言是VB,当时学了非常非常基础的东西,好像是一个个控件的组合使用,当时我就对编程有了浓厚的兴趣,到了大学,我学了C语言,最后拿了优秀,编程这东西我一直比较喜欢,可惜了大学时代打了4年Dota,没有好好深入,到头来也只是略懂皮毛,后来2012年我毕业工作了,因为特殊情况,我没法选择成为一名程序员,而是干起了别的行业工作,一干已经10年了。

从去年开始,我戒了游戏,重新拾起了对编程的兴趣,想做一些自己感兴趣自己热爱的事情,去年一年,我学了java那一套的开发路线,主要是在B站上学,从动力节点的老杜java课程开始,后来陆陆续续看了尚硅谷、黑马等的课程,把前后端基本的技术栈都梭了一遍,去年的学习还是比较充实的,也为我今年的深入学习打下了坚实的基础。 image-20221212111528139 上面是去年的光辉形象,一个好学的灵魂,哈哈。 今年也是我成长最快的一年,我对编程有了全新的认识,我还记得之前一直在纠结到底学哪一门编程语言,现在看来这并不是我应该考虑的问题,主要还是看自己想做什么,每一门语言都有其优缺点和适用场景,要在合适的地方选用合适的方法才是最重要的。今年,我广泛涉猎了多个领域的知识,在各位程序员大佬眼里可能我学到的都是皮毛,渣渣,但是对我来说,在完成自身实际工作的同时,用业余时间来学习我觉得还是收获蛮多的,也还是挺有成就感的。下面就我今年新学到的知识做一个小结。

一、大数据初探

年初,听说大数据很火,我涉猎了大数据一些基本知识,动手实操了hadoop集群部署,学习了flink/spark两个不同的框架,整合了zookeeper、kafka等,还学习了scala这门语言,不得不说,scala在做数据聚合处理的时候写的代码是真的简洁,一连串的链式调用就可以解决战斗。当时我也查过到底用java还是scala,我本着学习为乐的初衷,多学一点东西总不是坏的,所以就学了scala,后来一些数据处理又要用到python,又跟着廖雪峰老师的python教程走了一遍。下面是学习大数据时记录的一些笔记(来自obsidian). image-20221212112354831 不过比较遗憾的是,大数据这块我没有做什么实际的项目,都是一些demo,也因为没有什么数据,不知道研究方向就搁置了,没有继续。

二、Rust

Rust绝对是我今年度认真学习研究的一个重头戏 首先是对这门语言本身的深入学习,我之前没有接触过过c++,很多人说学过C++的学Rust会相对容易一些,确实它的学习曲线很陡,不过我也努力攀登高峰,看不同的教材学了3遍,也写了大量的笔记。

image-20221212114047231

image-20221212113900148

下面介绍自己做个几个rust小项目:

1. 图片隐写术 pngme

该项目受picklenerd.github.io/pngme_book/…启发而制作,这是我写的第一个rust小项目,将信息隐藏在png图片中,可以实现编解码。目前3个Star,哈哈。

image-20221212114339115

项目地址:lijing-2008/pngme: hide secret message into png (github.com)

2. 命令行密码管理工具 rupass

通过命令行的方式来管理密码,可以实现增加、删除、搜索、更新密码的功能,有兴趣的可以尝试一下,目前9个Star。

image.png

项目地址:lijing-2008/rupass: command line and geek style password manager written in rust (github.com)

3. 结合Near的区块链项目

今年我涉猎了区块链的知识,学习了Near公链,参加并取得了Near开发者认证,还发了100Near的奖励,当时做的项目是一个NFT抽奖系统,抽的都是又酷又帅的赛车,我自己感觉这个项目做的还是很养眼的,前端使用的是react,我那会刚接触react算是第一个练手项目,因为在区块链领域,几乎所有的前端都是react,主要还是区块链主要还是在国外发展,嘿嘿!后端使用纯rust编写。多上几个图,我之前玩狂野飙车8的时候特别喜欢赛车,这次做这个项目,也是有这方面的情节在,想当年也是拿过世界第一的选手,哈哈。

mintNFT.png

项目地址:lijing-2008/raffle-gifts (github.com)

这是获得Near开发者认证的NFT证书和奖励

image-20221212120728295

顺便回忆一下年轻时候的我,那还是2015年。

image-20221212121153303

三、深入前端

我一直对前端比较感兴趣,我开始进行了系统的学习,之前已经深入学习过JavaScript,这回主要是补一补CSS,重点功课一下React框架,我之前一直是用Vue做前端开发,这次换了React也别有一番风味,还是挺喜欢的,不能说谁好谁坏,两个都用,两个都好用!学完了React,刚好我单位上给我派了一个任务,说我比较懂计算机,让我去保障一个系统,说白了就是当一个系统操作员,结果搞了半天系统还没见到,因为疫情,拿不到系统了,在别人手上,被隔离了,没法上网传,我灵机一动,要不自己做一个吧!顺便练练手,这是一个评审打分系统,经过初步的考虑设计,我有了整体想法并迅速付诸实践!前端选了React,后端我觉得java&springboot太重了,我调了一个很轻量级的框架Koa!我也没学过Koa,用了一个晚上时间,学习了一下,我的需求很简单,就是连接数据库简单实现几个接口就行了,为了应急,没有考虑其他东西,最后花了一个星期完成了前后端所有的开发和测试,部署运行起来也比较顺畅,后来保障过程中使用了自己做的系统,评委们第一次见这系统,纷纷评价比以前的系统好用多了,我也得到了极大的安慰,我感觉到了自己价值得到了体现,哈哈。我会再接再厉的!

这个系统没有上传github,因为涉及到一些内部敏感信息,

大概界面长这样,评委的界面增加了一个打分栏,最后统计出每个参评对象的分数

image-20221212122130207

在做这个系统的时候,我需要实现一个功能就是,当我点击切换答辩对象和抽题的时候,所有评委的客户端也需要同步切换,需要实现多个客户端同步,学了并使用了WebSocket技术,当时时间紧急,没有增加后台管理功能,题库和参评人员的导入都是通过脚本来实现。

后来保障任务结束后,我决定对系统进行重构和升级!这时我接触到了Nestjs,我又开始学习它,我准备最后使用它来进行项目重构,因为它和我之前写spring的时候真的很像,学起来还是挺快的,也写了一些Nestjs学习笔记,都是我的学习心得,有一篇笔记讲的是如何对Nestjs+Prisma+Mysql进行打包,可以说是我的自主学习研究的成果,还是很有成就感的,有兴趣的可以去我的主页去看看。

最近刚重构完成,增加了后台管理,包括excel导入题库和人员信息的功能,后期可以再完善一下日志系统。

image-20221212122641396

四、总结与展望

作为一名程序爱好者,虽然不是我的本业,但是我觉得写代码真是一件很享受的事,我想在自己力所能及,自己精力有所剩余的情况下追求自己喜欢的事,以前我总喜欢打游戏度日,喜欢游戏里的五杀、超神、爆头,但当我敲起代码的时候,我会有别样的快乐,超过了游戏带给我的快乐,今年一整年,我看了很多学习视频课程,看了JavaScript的好几本经典书籍,我学到了很多东西,自己感觉很满足!虽然我老了,但是我的心依然年轻,我依然可以追求自己喜欢的东西,我觉得人生就应该多做一些自己感兴趣的事,有想法就付诸实践!感恩家人和同事对我的关心和支持,明年我会继续努力,争取更大的进步和收获!

「回顾2022,展望2023,我正在参与2022年终总结征文大赛活动