我是一名 PHP 程序员。最近对 go 语言有了兴趣,一直想找一个机会学习并实践这门有趣的语言。手头刚好有一个之前用 PHP 写的账号密码管理小工具,我决定用 go 重构这个小工具来入门 go 语言的 web 场景开发。同时我也希望自己这个实践和学习的过程能给其他向我一样,也就是对 go 语言有兴趣的人带来一些帮助。
虽然项目不大,但我还是希望有计划的来完成它。所以这将会是一个系列文章,目前我规划的步骤如下:
今天我会介绍一下小项目的需求和规划。这除了是让自己对功能再进行一次梳理,也是让看到这里的各位对这个项目有个大致的了解和印象。
有人可能会问为什么不用成熟的密码管理方案,比如 1Password。目前市面上的密码管理功能的确已经足够好了,还能和登录网站, 甚至是 app 实现了无缝对接,使用起来的确更加方便。但我还是觉得应该有一个属于自己的密码管理方案,无人知道的那种。所以这只是个人的衡量和考虑,大部分情况下我也推荐使用成熟的软件和方案。
用 PHP 做的版本一直放在我自己的电脑上,用的使用就是 php -S localhost:800
来启动后,在浏览器中访问,用完了就结束命令。所以从使用形式上具备了一点安全性。但这个还是存在一些问题。比如我要随时记得备份我的数据库文件,现在在多个电脑上使用时,总是要反复的复制数据库文件,也没有自动生成随机密码的功能,不得已我又写了个随机密码生成的 shell 脚本配合使用。但即便是这么难用,我也还是一直从 2013 年沿用至今。所以这个项目对我自己来说是有实用意义的。期间我也想过重构,但感觉意义也不大,所以也没动手。go 语言让我重新燃起了这团火。
go 语言知道的比较早,但一直没有太大心思去学。原因无外乎不知道用这个来干嘛。web 领域 php 已经足够好了。go 语言对我来说,最受吸引的就是编译后的二进制文件可以复制到相同系统下直接运行。对一些修改不频繁的项目,这很有吸引力,特别是搭配微服务架构,这也是我目前迫切想要学习这门语言的原因。PHP 做微服务,做过的人都懂。
关于这个密码本项目的重构要求,我目前整理如下:
按照上面的要求,我相应的技术选型如下:
项目功能也比较简单,画了一个简单的流程图如下:
关于项目的介绍就到这里了,喜欢就请点个赞,也欢迎评论交流。下一篇将开始 go 开发环境的搭建,敬请关注。
原文:https://www.cnblogs.com/zzxworld/p/13432504.html