我是一名PHP程序员。最近对go语言产生了兴趣,一直在寻找机会学习和实践这门有趣的语言。正好有一个用PHP写的账号密码管理小工具。决定用go重构这个小工具,开始用go语言进行web场景开发。同时也希望我的实践和学习过程能给其他和我一样对go语言感兴趣的人带来一些帮助。虽然工程不大,但还是希望有个计划去完成。所以这将是一个系列文章。目前我计划的步骤如下:项目规划及开发环境搭建实现前端界面实现数据表创建方法实现随机密码生成方法实现项目安装命令实现登录功能实现密码项管理功能部署上线本文将介绍小项目的需求和规划。除了可以让自己重新梳理一下功能,也可以让看到这里的大家对这个项目有个大概的了解和印象。有人可能会问,为什么不用像1Password这样的成熟的密码管理解决方案。现在市面上的密码管理软件确实够用了,而且还可以和登录网站甚至APP无缝对接,用起来确实比较方便。但我仍然认为应该有自己的密码管理解决方案,没有人知道的那种。所以这只是个人的衡量和考虑,我也推荐大家使用这些成熟的软件和方案。回到项目本身。之前用PHP制作的版本一直在自己的电脑上运行。当我想使用它时,我运行php-Slocalhost:8000。启动后在浏览器中访问,用完结束命令。所以它在使用上有一点安全性。但是这种方式仍然存在一些问题。例如,我必须时刻记得备份我的数据库文件。在多机环境下使用时,总是要反复复制数据库文件,而且没有自动生成随机密码的功能。作为最后的手段,我写了一个生成随机密码的shell。脚本一起使用。不过就算这么难用,我也是从2013年开始用的。所以这个项目对我自己来说还是比较实用的。期间也想过重构,但每次想做,都觉得意义不大,结果一无所获。Go语言为我重新点燃了这把火。对go语言了解比较早,但一直没有想过要学。究其原因,无非就是不知道这个有什么用。PHP在网络世界中已经足够好了。对我来说,go语言最吸引人的地方在于编译后的二进制文件可以复制到同一系统直接运行。这对于一些不经常变化的项目来说是非常有吸引力的,尤其是微服务架构的项目,这也是我目前非常渴望学习这门语言的原因。PHP做微服务,做过的人都懂。关于本codebook项目的重构需求,我目前整理如下:支持跨平台。也就是说,主流的系统或设备应该是可用的。支持密码生成。我之前的php版本缺少这个功能,自己凑个随机数感觉不太好。信息加密。这是必须的,我要保证密码数据被窃取,真实内容无法得知。添加、删除、修改和检查密码项。基本功能。使用主密码登录。我只需要记住这一个密码。部署简单方便。越简单越好,最好在PHP部署前没有一系列的环境准备。资源占用小。资源足迹小意味着成本低。根据以上需求,我对应的技术选型是:采用B/S架构。web是我目前比较熟悉的领域,能最快解决跨平台和设备问题。使用golang语言。这没什么好说的,这次是针对这门语言的。而且go语言本身的特性也满足了资源占用和部署的要求。使用SQLite数据库。对于这个项目来说绰绰有余。项目的功能比较简单,画了一个简单的流程图如下:这是项目的介绍,喜欢就点个赞吧,欢迎评论交流。下一篇文章将开始go开发环境的搭建,敬请期待。
