这次需要做一个小工具,用来审阅别人标的数据。由于要处理千万级的数据,本次的工具有这样几个特点:1、需要是用http服务来读取图片;2、标定结果与图片信息存在数据库中;3、标定结果存在数据库中。这里有我两个不太熟悉的东西,一个是搭建基于http的图片服务器,一个是数据库的操作。
图片服务
之前的图片服务是搭着WindowsServer上的,winServer还是很强大的,通过域控制器、DNS、DFS可以很好的解决图片权限控制,访问、备份与物理存储位置隐藏等功能。当图片量达到一定量级的时候,这种向外共享的方式就比较吃力了,不管是新用户的增加、权限的修改等等都需要大量的时间消耗。这时候,将这个小型的服务器集群彻底转为图片服务器集群,去掉他的文件服务功能,是个理智的选择。WindowsServer有自己的http服务,但是一直没有配置成功,这时候轻量级的nginx(nginx.org/)成为最佳的选择。在图片集群上建一个命名空间,将所有有效的图片目录都链接在命名空间中。将命名空间的根目录最为nginx的输入目录,并打开指定的端口,便可以通过http访问到图片了。
界面与数据库比较熟悉的界面工具是MFC,但c++的开发周期较长,而且与mysql数据库的交互之前没有积累,因此选择了pyqt+python来实现。qt之前没有接触过,我用的python是Anaconda2的,对应的应该是PyQt4-4.11,界面的开发的是qtcreator。注意,对应pyQT4的应该是qtcreator-3.0.1版本。还需要安装mysql的python支持包MySQL-python-1.2.5.win32-py2.7。python的mysql数据库连接比较简单,省去了Oracle繁琐的环境配置。
只需要小半天时间,界面就搞定啦。。。
图片服务
之前的图片服务是搭着WindowsServer上的,winServer还是很强大的,通过域控制器、DNS、DFS可以很好的解决图片权限控制,访问、备份与物理存储位置隐藏等功能。当图片量达到一定量级的时候,这种向外共享的方式就比较吃力了,不管是新用户的增加、权限的修改等等都需要大量的时间消耗。这时候,将这个小型的服务器集群彻底转为图片服务器集群,去掉他的文件服务功能,是个理智的选择。WindowsServer有自己的http服务,但是一直没有配置成功,这时候轻量级的nginx(nginx.org/)成为最佳的选择。在图片集群上建一个命名空间,将所有有效的图片目录都链接在命名空间中。将命名空间的根目录最为nginx的输入目录,并打开指定的端口,便可以通过http访问到图片了。
界面与数据库比较熟悉的界面工具是MFC,但c++的开发周期较长,而且与mysql数据库的交互之前没有积累,因此选择了pyqt+python来实现。qt之前没有接触过,我用的python是Anaconda2的,对应的应该是PyQt4-4.11,界面的开发的是qtcreator。注意,对应pyQT4的应该是qtcreator-3.0.1版本。还需要安装mysql的python支持包MySQL-python-1.2.5.win32-py2.7。python的mysql数据库连接比较简单,省去了Oracle繁琐的环境配置。
conn= MySQLdb.connect(
host='',
port = '',
user='',
passwd='',
db ='',
charset='utf8'
)
界面
在界面以及相关逻辑的开发中,我用qtcreator设计好界面,再用pyuic4.exe将生成的.ui文件转换成对应的python代码。当然qtcreator中也有不少设计按键相应的方法,我不会用。。所以最终所有的逻辑关系都是在python代码里实现的。还有一点要注意的是,exe生成的py代码并不完整,需要添加__main__入口,并且import os。
完成代码后,进行调试,发现除了ui界面,还有一个控制台界面在运行,这样当然无法交付别人使用。这里需要将python代码编译成exe,我使用的工具是pyinstaller。在编译的过程中,需要保证py代码所在的路径为纯英文的,不然可能出现编译失败的情况。只需要小半天时间,界面就搞定啦。。。