害,聊这干啥,自己找没趣,简单记录一下吧。
整个项目其实没啥技术可言,过程中遇到的一些坑也都是自己技术能力太菜。
不过,我一个产品经理,计较技术这种事情干啥。
文件解析
最开始做的时候,其实就一个 py 文件,读一个文件,对笔记文本进行解析,返回结构化数据。
使用 Python 是因为数据处理这样的任务,没有比 Python 更适合的了。
虽然自己对 Python 的掌握程度还停留在语法层面,不过对于 Python 来说,似乎并不重要,这也是这个语言神奇的地方,只要知道实现原理,离功能实现就差不多了。
CSV 文件的解析没啥可说的,就是纯文本一行一行读,从中截取有效数据;HTML 文件的解析用好 BeautifulSoul
这个库就行了,查看下官方文档,也没啥难度。
服务端
最开始是想直接把 py 文件打包成可执行的脚本,提供下载,用户在本地运行脚本就可以了。
想了想,放弃了这种方式,作为产品经理,对用户体验还是有一些敏感的,这种使用方式太别扭了。
所以,我压根就没去了解 py 文件怎么打包的事,而是直接开始学习 Python 的 Web 框架了,针对这么简单的项目,Flask
是首选。
要实现 Web API 的服务,就需要一些技术基础了,恰好之前有做过 Web 的项目,对于传参请求这些内容还是有一些了解的。所以,使用 Flask 框架做成 Web 服务,对我来说,还是语法使用的问题,看看 Flask 的文档,照着示例代码练习一下,应该就差不多了。
对了,先实现的服务端,必须要有接口测试工具的辅助,我一直在用的是 Talend API Tester
。
前端界面
有了服务端,还要提供一个简单界面,对我来说,自然是首选 Web,其他的也不会啊。
Web 前端可选择的技术就太多了,由于需求很简单,不想要太复杂,一个单页就可以了,用的是 ElementUI
创建的一个单页面,页面中 CSS 和 JS 文件的引用,都使用在线 CDN UNPKG 的地址。
这样的好处是,一个 HTML 文件就可以当作独立的应用到处访问了,还不用下载安装。到时候部署到线上,也就是一个静态页面,简单方便。
即便后面有一些功能特性的更新,直接更新这个 HTML 文件就可以了。
线上部署
这是我历史最悠久的爱好,早在学生时代,就喜欢鼓捣电脑,给电脑安装各种操作系统,Linux 一直是玩具般的存在。
毕业之后,虽然不鼓捣电脑了,但也一直保留着一台云服务器供自己玩耍。
不过 Python 的环境也是第一次搭建,线上部署 Python 项目也是第一次,总的来说,还算顺利,找篇文档,按照步骤一步一步下来,倒也没遇到特别棘手的问题。
Python 项目的线上部署,大概就是以下几步:
- 安装 Python3 相关软件(服务器端一般直接是源码编译)
- 给项目创建虚拟环境(Python项目)
- 安装项目依赖包
- 运行项目
- 配置 Nginx 反向代理
我的服务器是 CentOS 7,部署的过程主要参考了这篇文章:CentOS7部署Flask项目,过程并非一帆风顺,遇到的两个问题,搜索一下,也很快就解决了。
- python 编译报错 Could not import runpy module 解决方案
- Nginx: Job for nginx.service failed because the control process exited
域名配置
域名跟服务器一样,都是现成的,既然有云服务器,自然有域名与之对应。
域名的配置比服务器要简单太多了,直接在对应的域名服务商网站,设置域名解析就可以了,也就是设置用什么网址来访问该服务。
总结
对该项目技术的总结,就是一句话:麻雀虽小,五脏俱全。内容虽多,但都不深。
不过,我关心的从来都不是实现某个功能所需技术的深浅,我一直在探寻的是,做某个产品,需求质量的高低。
好了,这个项目到这就先告一段落了。
最后通知一则消息,Kindle2flomo 被收录到了 flomo 学院了,中间还有一些小故事,可以点击原文链接查看哦。