目的:
为自己开发一款windows/linux下都能用的个人知识管理工具,同时学习linux的编程。因为很多时候在windows下使用,所以一般用MFC做开发比较好,但为了学习linux开发,就做成跨平台的,GUI使用GTK,数据处理使用linux c。
功能:
1、知识点的增删改搜索
2、知识点分类管理
3、知识点编辑要支持文本基本编辑、文本颜色和字体、插入图片
4、多人共享知识点
5、通信录的增删改搜索
6、行程计划管理,需要采用图形进行显示
基本设计思路:
windows上使用cygwin可能编译linux下的代码,但gtk等图形界面依赖于XFree,显示效果很差。可以使用GTK写界面,GTK的代码可以在windows上直接用mingw直接编译。界面和数据处理部件采用socket进行通信,采用TCP协议。数据部件直接使用linux下的代码,到cygwin下编译,而界面的通信代码部分,采用winsock编写。
数据处理部件需要完成的功能:
1、知识点、通信录、行程计划等数据的管理,单机版使用时,不应该额外部署数据库,所以采用sqlite作为本地数据库。
2、数据处理部件要能同时作为服务器和客户端,服务器负责所有用户数据的同步和存储,客户端负责数据同步和查询
3、为了便于后续利用此框架开发其他程序,需要将通信部分独立作为一个模块开发。
4、数据处理部分要支持日志,以便于后续问题定位实用。
5、多用户管理,用户名可以自行定义,但当同步到服务器上时,会自动检测是否重复,如果重复就要求输入密码,如果密码不对,会提示修改用户名以便以新的用户存入数据。
6、GUI连接本部件,可以在不认证的情况下,查询用户名,最多返回10个用户名,不再这10个中的,需要手工输入。
7、为了考虑性能问题,数据处理部件必须支持本地运行,而非做为服务器使用。
通信模块设计思路:
1、采用TCP方式
2、采用多线程结构,主线程负责客户端接入,其余线程负责单个客户端的具体通信。
3、服务器和本地数据处理采用同一种结构,但需要通过标识区分。