20140102
- 做个Qt设备状态查看界面的草样
- 连接数据库
- 显示device id列表(按last_connected排序)
- 显示选中device的device表内容和playlist内容
- 显示选中device的status表内容
- 显示选中device的event表内容
20140103
- 把
constants.h
中可能会变的参数移到json配置文件里,启动时用cppjson库解析 - 把
sql_statements.h
中的SQL 语句移到json配置文件里,启动时用cppjson库解析 - 清理不必要的
#include
20140104
- 调整Qt界面, 设备列表显示当前状态
20140106
- 测试 sms modem 串口通信代码
- 波特率设置成115200
- 部署时需要在
config.json
中指定连接的串口设备名,现在写的是/dev/ttyS0
具体要看到时连接的是哪个口 - Fedora开发机上短信发送成功
- 清除全部using directives
20140107
- 清除头文件中全部using declaration
- 检查各处container成员访问是否可能越界
- 清除函数参数中的const pass-by-value写法
- 检查函数返回值是否有本地变量引用
遇到的问题如下:
- Fedora开发机改成固定IP之后,之前搭建的gitlab服务器出问题了。现在把所有的repository备份出来了,重新配置服务器。
20140108
- 配置ubuntu 13.10开发机,节省fedora上从源码编译安装gcc和libboost的耗时
- 202.11.11.162上部署测试用数据库
20140109
- 从Qt官网安装 Qt 5.2.0 (Ubuntu官方源的Qt Creator显示有问题,会弹出一些无响应的空窗口,原因不明。官网安装的版本就没问题。)
- 修正SkyEye-Monitor设备列表添加状态字段后,信息tab内容不显示的bug。
- sql语句构建过程中用到设备列表项目的text()方法,现在该方法返回的不仅是device_id了。需要提取id。
- 调整SkyEye-Monitor设备列表排序
- 先按设备状态排序:在线→一般故障→……→离线
- 再按最后连接时间排序:最近连接的排在最前
20140110
- 把成员变量中的指针用shared_ptr替换
- 解决keepalive_timer会不断触发频繁调用handler的bug
- 当cancel这个timer的时候,handler会被调用一次,传入参数为error,内容是operation canceled。之前的handler函数不理会传入参数,所以这次调用也会发送keepalive包,并且重置timer。
- 修正后的handler检查error,如果意外触发,打印error直接退出handler,不发送keepalive,也不重置timer。
- 把async操作的handler都用
boost::strand
序列化 - 解决串口访问permission denied
- 把用户加到dialout组
- 三楼机房服务器安装ubuntu server
- 202.11.20.83
遇到的问题如下:
- tcp_connection断开后,close和析构函数的调用有bug,待跟踪
- 尝试重用socket (连接数超过最大可打开文件数限制时,如何应对传入连接)
20140111
- 配置Version Control System服务器
- 固定IP 202.11.11.201
- OpenSSH Server
- redis-server
- ruby
- mysql-server
- gitlab
相关文档见 http://qingpei.me/sansi-book/git/gitlab_server.html
20140113
- 配置Version Control System服务器
- GitLab Email配置,系统通知用
[email protected]
帐号发邮件 - 每天早上5点自动备份数据库和代码库,备份保留一周
- 添加Group: SkyEye和LED-Calibration
- 添加User: zhangqian ouwenli sunyaqing qingpei
- 添加Project: 此前备份的全部project,包括我和孙亚清的代码
- GitLab Email配置,系统通知用
20140114
- 重写关闭连接 (用户发起或读到
EOF
)逻辑,避免socket没有close或者close两次的bug。 - 测试多线程运行服务器
- 用
boost::asio::io_service::strand::wrap
将异步handler隐式加锁之后,多线程运行服务器不会遇到race condition了 - 最大同时连接数(最大打开文件数)为100X (1024-依赖的动态链接库等文件的数量-正在写入的log文件数量等等)
- 测试了Release版性能,结果 记在了README里
- 用
- 通过API获取服务器公网IP (客户端能连接的IP地址)
- 解决最大文件数限制
- 消除两处内存泄露
20140115
- 整理一份 git使用指南
20140116
- 修正
CMakeLists.txt
对Clang编译器的C++11 Flag设置 - 修改
CMakeLists.txt
,增加googletest
库 - 为以下模块写单元测试
toolkit
config
packet
遇到的问题如下:
- 网络和数据库相关的测试不好写
- 各个对象起初设计的时候耦合度就高,成员函数的参数多为之前一系列函数操作后的结果;内部也常需要调用外部的资源。
- 比如查询状态需要一个socket连接
- 比如发送一个登陆成功应答,要查询数据库得到手机号
- 比如
tcp_connection
调用tcp_server
的函数
- 于是生产函数需要的传入参数对象很难
- 另外,函数的执行结果大多不是通过返回值来传递的。
- 收报文的函数A把任务交给报文分类的函数B
- B又将报文转给某一类报文的处理函数C
- C再调用数据库和网络通信的一些函数来响应收到的报文,但却很难用一个成功/失败的标志作为返回值
- 尤其是对异步函数的调用,设好callback之后就直接返回了,这时候成功或失败还无法判定
- 所以目前只为离线的工具函数写了测试
- 各个对象起初设计的时候耦合度就高,成员函数的参数多为之前一系列函数操作后的结果;内部也常需要调用外部的资源。
20140117
20140118
- Wikipedia上搜集色彩校正相关材料 PDF
- 读libgphoto2的sample,了解如何操作相机
20140120
- 读专利文档:LED显示屏非均匀性在线校正系统和校正方法。了解其校正系统读构成和校正流程。
- 读昨天搜集到的资料,了解色彩校正的一些概念和技术,写 摘要
20140121
- 测试
gphoto2
与 Olympus E-520 的兼容性- 可以auto-detect,可以list-files,可以get-all-files
- 不可以capture-image
- 测试
gphoto2
与 Canon EOS 7D 的兼容性- 可以auto-detect,可以list-files,可以get-all-files
- 可以capture-image
- 更新 [Image Capture文档](http://qingpei.me/sansi-book/led_calibration/image_capture.html
20140122
- 写
gphoto2
安装脚本 - 继续读校正相关资料
20140123
- 读校正相关资料,更新 文档
- 搜索raw decoder相关信息,目前看来以下两种途径可行
- 调用ImageMagick或dcraw进程处理raw文件,读取处理结果
- 链接libraw库,直接读取raw图像
考虑实现复杂程度的话,调用外部程序读raw的方式,开发时会更方便做实验比较。把处理好的raw写成16bit的tiff,也让后续处理时库的选择几乎不会再遇到格式支持问题。
20140124
- 读校正相关资料,更新 文档
20140125
- 浏览 Color Appearance Models by Mark D. Fairchild
- 写实验框架,把各个步骤要完成的核心任务列出来,规定各步骤的输出
- 添加lib目录(目前有opencv)
20140126
- 安装imagemagick
- 熟悉imagemagick的python bindings
- 安装libraw
- 安装dcraw