20131112
- 安装Fedora、MariaDB
- 配置MariaDB的远程连接
- 配置phpMyAdmin,以便远程操作数据库
- 写相关文档
20131113
- 在 http://202.11.12.186/ 上用nginx架了个简单的http服务器,存放我写的文档。
- 与孙亚清将现有的mysql数据库各张表导入到mariadb里。
- 改客户端配置,连接到mariadb上的数据库,测试添加、删除操作,确认兼容性。
- 测试中发现昨天做的打开3306(mysql)端口的iptables配置,重启后会失效,重新查资料发现Fedora 17起,默认通过firewalld而非iptables服务管理端口。用firewall-cmd配置后,测试重启后端口成功处于开放状态。昨天的文档已经更新了这部分。
- 安装GCC/G++和LLVM/Clang,并安装Eclipse作为Linux上的IDE。
20131114
- 在 202.11.12.186 上搭建GitLab服务。(更新:服务器现在移到202.11.11.201)
- 服务器搭建过程以及用到的信息已经更新到如下文档
- 将gitlab做成系统服务,在系统启动之后自动开始运行服务。
- 查阅资料,了解如何使用gnu autotools给项目自动生成makefile。
- 建立一个helloworld项目,实现自动makefile。项目在 http://202.11.11.201/qingpei/makefile-example
遇到的问题如下:
- 无法发送系统通知邮件到@sansi.com的内网邮箱。
- 目前用一个gmail账号发送系统邮件,可以发送到@sansitech.com的邮箱。
- 非核心功能,不影响版本控制的使用,我想搁置这个问题。
- 如果没有外网邮箱的话,也可以由admin账号新建用户,设好初始密码告诉用户。用户首次登陆的时候会被要求更改密码。之后就可以正常使用了。
- 刚才给孙亚清建的用户已经能用了。
- 如果项目用到第三方库,现在还不会写configure.ac和Makefile.am。需要查一下。
20131115
- 安装Qt
- Qt自带了一个IDE叫Qt Creator,有Design界面方便设计应用程序的窗口。
- Qt默认使用qmake,比GNU Make方便。所以昨天提到的Eclipse+autotools plugin的方案可以用Qt Creator+qmake取代。
- 参照文档写了个简单的Qt程序。在 http://202.11.11.201/qingpei/qt-widget
- 在服务器上新建了一个Group叫SkyEye,把Qt程序迁移到这个组了。
- 组成员目前有三个:zhangqian, sunyaqing & qingpei
- 三个组成员都有权限修改代码。
- 现在这个项目的地址是 http://202.11.11.201/skyeye/qt-widget
遇到的问题如下:
- Qt Creator建的项目默认没有Makefile,我估计把相关信息全都写在一个xml格式的项目描述文件里了。需要查查怎么在不依赖Qt Creator的条件下,直接调用qmake来编译项目。
20131116
- 编译Qt的MySQL driver
- 写一个Qt程序连接MySQL数据库 项目在 http://202.11.11.201/qingpei/qt-sql-example
- 现在程序能够成功连接MySQL数据库,并显示数据库中的table名字列表。
- 将Qt编程遇到的问题和解决办法写在 http://qingpei.me/sansi-book/skyeye.html#qt_programming
20131118
- 在周六连接上SQL数据库的基础上,把数据库和里面的表用TreeView显示在GUI上。
- 在TreeView中双击表,可以将表的内容用TableView显示出来。
- 输入SQL query之后,可以将执行结果用TableView显示。以上1-3的代码已经提交到 http://202.11.11.201/qingpei/qt-sql-example
- 查阅Qt文档的QNetwork部分。
- 实验QT中TCP Server和TCP Socket的用法。现在Server可以向Client发送String。
遇到的问题如下:
- 服务器的IP地址之前是自动分配的,我改成手动设置成 202.11.12.186 来固定,这可能会产生冲突。我的Windows机器之前的IP是 202.11.20.244 ,现在已经变成 202.11.20.150 了,此前邮件里发送的文档链接就失效了,每次分配到新的地址都需要改一次。
20131119
- Server端支持与多个Client通信。
- Qt的TCPServer会保持一个pendingConnections队列,可以用nextPendingConnection() 调出下一个连接进行处理。
- 现在是一个TCPServer对象监听端口,每次有连接请求的时候,会发出signal,由预设的callback函数来处理请求。多个client的连接请求可以从上面提到的队列中逐一拿到。
- 下一步我想把这个server放到新建的线程里去,不要跟GUI在一起,以免通信过程某个函数执行时间长了界面无响应。
20131120
- 看boost.asio文档的tutorial
- 看StackOverflow上的讨论说Qt Network的性能在连接数多的时候下降不少。所以推荐用boost.asio或者POCO库来做网络连接。
- 依照文档学习boost.asio的用法
20131121
- 参与讨论SkyEye的设计
- 写SkyEye Server的一部分类定义。 http://202.11.11.201/skyeye/skyeye-server/tree/master
- 脱离Qt的Databas Driver,使用MariaDB自己的C connector。在Fedora 19上,可以通过安装
mariadb-devel
包获得。
遇到的问题如下:
- 用于数据库操作的类成员函数的参数列表需要根据数据库的字段定义来写。
- 用于和客户端GUI互动的类成员函数参数需要我和孙亚清确定任务列表的必需属性。
20131122
- 在202.11.12.186上搭建NFS服务器。搭建过程和Windows连接方法见文档 http://202.11.11.201/skyeye/skyeye-server/blob/master/doc/nfs-setup.md
- 配合孙亚清,实现C++程序用Windows API访问NFS共享。
- 在qmake的项目文件中,调用系统命令
mysql_config
自动配置include path和lib path。 - 继续实现SkyEye-Server中的
maria_db_operator
类。
遇到的问题有:
- NFS服务启动之后,本地可以访问,Windows无法访问。
- 防火墙开启了NFS的端口。将防火墙完全关闭后可以访问,所以一定有端口没开放。用
rpcinfo -p
查看用到的全部端口,一一打开后连接成功。
- 防火墙开启了NFS的端口。将防火墙完全关闭后可以访问,所以一定有端口没开放。用
- Boost 库的include path和lib path仍然是事先写在项目文件中的,目前没有脚本来自动寻找它们的位置。
20131123
- 实现从数据库读取
task_todo
表并存放在一个任务队列vector
中。
20131125
- 把
task_todo
从vector
改成map
。这样添加和删除任务都用task_id
作为key,写起来方便。 - 读到的任务,根据类型,分别调用不同的handler处理。
- handler返回处理结果后,将任务和结果写到
task_done
表,附上当前时间。将任务从task_todo
表删除。 - 把之前用
#define
定义的常量改成const
常量,以免类型不匹配。 - 把所有常量定义放到
namespace skyeye
中。 - 头文件加注释
遇到的问题如下:
- 现在所有任务的handler都是dummy,光打印自己做什么,实际上什么都不做。因为涉及到数据库操作,需要先把数据库的表和字段确定下来。
20131126
- 给已经写好的cpp文件加注释。
- 生成代码文档。
- 开启MariaDB的general query log,供孙亚清调试展示程序使用。
- 生成孙亚清此前写的Java通信程序文档,结合文档与代码了解通信方法。
20131127
- 读孙亚清的Java通信代码
- 学习CMake的使用(server可以不用Qt,server GUI可以另写,借助数据库显示server状态。用qmake作为buildtool的话,安装server必须先装一个很大的Qt SDK;而CMake的预编译版本在大多数linux发行版的软件库里都有。)
- 整理此前写的全部文档
20131128
- 写
skyeye_server
的CMakeList.txt。- 现在可以实现自动寻找MySQL C Connector以及Boost库的位置,添加对应的include path和lib path了。
- 现在编译项目可以用常见的
./configure make make install
- 写
tcp_server
类的成员
20131129
- 根据_显示屏无线监控系统_协议文档,确定
tcp_server
和tcp_connection
类的功能划分 - 再读孙亚清的 SkyEye数据库结构 文档,标注我的意见和新需求
- 读37Signals关于如何开发项目的书 Getting Real
20131130