完全基于ubuntu开发了一个项目,谈谈心得
-
- 帖子: 26
- 注册时间: 2005-08-21 10:31
- 联系:
完全基于ubuntu开发了一个项目,谈谈心得
此次项目是开发一个Linux平台C/S结构的考试系统。
因为个人偏爱C语言,因此采用GTK。
为提高效率,决定采用anjuta,对于图形界面部分,我是先用glade画出相关界面,在build到源代码,然后参考这些源代码再加入到interface.c里面, 如果直接采用glade+anjuta来开发,到后期要修改界面的话会比较麻烦。
分几个方便随便聊聊
1、中文内容显示
GTK显示中文要求是utf8编码。考虑到本程序客户端的界面内容比较简单,所以直接嵌入代码中。但是在 make dist时,却无论如何同不过(因为需要制作rpm包),于是将所有中文UTF-8部分分离出来,新建一个msg_cn.c文件,将所有中文内容采用 #define 来处理,于是make dist 顺利通过。(也不知道是为什么)。另外本系统的服务端有一个选题功能,是从mysql里获取题目内容,为支持utf-8,所以mysql采用4.1以上版本。默认情况下从mysql里获取的编码还是latin1的( mysql编码是个很繁琐的问题),后来发现mysql4.1里的编码分四个层次来配置的,如果要获取utf-8编码的内容需要在连接之前执行"set names utf8",将数据连接定义为utf8才行。
2、开发过程
对于GTK控件我也是边查手册边解决,也经常向alpher(Linux下的连连看作者)请教。其实用GTK做界面感觉和HTML里的表单差不多,遇到有些属性不知道如何处理时,我就干脆用glade拉出相关控件,再寻找属性或者信号。
3、Linux下的注册表?
因为这个考试系统涉及到对linux本身的一些属性的修改,例如修改桌面,修改字体等。刚开始我还以为在.gnome文件里有相关配置文件,后来baidu上找到gconf,原来用命令打开 gconf-edit 之后,里面保存着一系列gnome的相关属性数值,和windows里的注册表几乎一样,于是再查资料找到gconf的开发接口,用起来还是比较方便的。
4、OpenOffice开发接口?
本考试系统涉及到对odt文档的修改,在评分过程中需要对考生的操作结果进行判断,当时还想进行全文匹配,后来发现openoffice的所有文件都是zip包(例如将foo.odt改成 foo.zip 就可以直接进行解压缩了),压缩包里是一系列的XML文件,这才突然想起odf协议,呵呵。那么就只要对 XML的属性内容进行判断即可。
5、关于anjuta
由于对automake的配置文件不熟悉,很多涉及到源代码意外的文件安装就不知道如何通过anjuta来处理了,例如我需要将log文件夹安装到某位置,就只能采用shell脚本来实现了。通过修改makefile.am来执行这个脚本。anjuta应该还可以继续完善,希望今后版本能更加强大。anjuta2.0相比上版本有了不少变化,对project.anjuta文件也进行了更换。但默认情况还是没有采用libglade来处理图形界面部分。
基本想到这些。
本项目包括服务端,客户端和阅卷程序,将作为今后计算机等级考试系统的linux版。首先在浙江省实施。
我独立开发的,代码约两万行,开发时间持续了一个月,因为平时还得管理LUPA社区,但希望今后能有更多的人给予帮助。为linux的教育和普及工作添砖加瓦。
附:界面
http://blog.lupaworld.com/attachment/Ty ... cc3039.png
http://blog.lupaworld.com/attachment/Ty ... 0f7daf.png
SaNoOl
Gtalk & MSN & Email: sanool@gmail.com
因为个人偏爱C语言,因此采用GTK。
为提高效率,决定采用anjuta,对于图形界面部分,我是先用glade画出相关界面,在build到源代码,然后参考这些源代码再加入到interface.c里面, 如果直接采用glade+anjuta来开发,到后期要修改界面的话会比较麻烦。
分几个方便随便聊聊
1、中文内容显示
GTK显示中文要求是utf8编码。考虑到本程序客户端的界面内容比较简单,所以直接嵌入代码中。但是在 make dist时,却无论如何同不过(因为需要制作rpm包),于是将所有中文UTF-8部分分离出来,新建一个msg_cn.c文件,将所有中文内容采用 #define 来处理,于是make dist 顺利通过。(也不知道是为什么)。另外本系统的服务端有一个选题功能,是从mysql里获取题目内容,为支持utf-8,所以mysql采用4.1以上版本。默认情况下从mysql里获取的编码还是latin1的( mysql编码是个很繁琐的问题),后来发现mysql4.1里的编码分四个层次来配置的,如果要获取utf-8编码的内容需要在连接之前执行"set names utf8",将数据连接定义为utf8才行。
2、开发过程
对于GTK控件我也是边查手册边解决,也经常向alpher(Linux下的连连看作者)请教。其实用GTK做界面感觉和HTML里的表单差不多,遇到有些属性不知道如何处理时,我就干脆用glade拉出相关控件,再寻找属性或者信号。
3、Linux下的注册表?
因为这个考试系统涉及到对linux本身的一些属性的修改,例如修改桌面,修改字体等。刚开始我还以为在.gnome文件里有相关配置文件,后来baidu上找到gconf,原来用命令打开 gconf-edit 之后,里面保存着一系列gnome的相关属性数值,和windows里的注册表几乎一样,于是再查资料找到gconf的开发接口,用起来还是比较方便的。
4、OpenOffice开发接口?
本考试系统涉及到对odt文档的修改,在评分过程中需要对考生的操作结果进行判断,当时还想进行全文匹配,后来发现openoffice的所有文件都是zip包(例如将foo.odt改成 foo.zip 就可以直接进行解压缩了),压缩包里是一系列的XML文件,这才突然想起odf协议,呵呵。那么就只要对 XML的属性内容进行判断即可。
5、关于anjuta
由于对automake的配置文件不熟悉,很多涉及到源代码意外的文件安装就不知道如何通过anjuta来处理了,例如我需要将log文件夹安装到某位置,就只能采用shell脚本来实现了。通过修改makefile.am来执行这个脚本。anjuta应该还可以继续完善,希望今后版本能更加强大。anjuta2.0相比上版本有了不少变化,对project.anjuta文件也进行了更换。但默认情况还是没有采用libglade来处理图形界面部分。
基本想到这些。
本项目包括服务端,客户端和阅卷程序,将作为今后计算机等级考试系统的linux版。首先在浙江省实施。
我独立开发的,代码约两万行,开发时间持续了一个月,因为平时还得管理LUPA社区,但希望今后能有更多的人给予帮助。为linux的教育和普及工作添砖加瓦。
附:界面
http://blog.lupaworld.com/attachment/Ty ... cc3039.png
http://blog.lupaworld.com/attachment/Ty ... 0f7daf.png
SaNoOl
Gtalk & MSN & Email: sanool@gmail.com
http://www.lupaworld.com
LUPA开源社区
LUPA开源社区
- juanzhewudi
- 帖子: 1114
- 注册时间: 2006-01-19 11:55
- 来自: HUST
- 联系:
-
- 帖子: 74
- 注册时间: 2006-11-14 10:44
-
- 帖子: 13
- 注册时间: 2006-12-03 14:33
赞一个,以后请多指教!
我也可能需要在Linux下开发一些程序的。
高手多多指教!
s
高手多多指教!
s
- 猛将兄
- 帖子: 2052
- 注册时间: 2005-10-19 17:33
-
- 帖子: 34
- 注册时间: 2006-11-20 11:56
- 来自: 北京
- 联系:
-
- 帖子: 1074
- 注册时间: 2006-01-18 15:01
-
- 帖子: 1074
- 注册时间: 2006-01-18 15:01
- huangjiahua
- 帖子: 3294
- 注册时间: 2005-03-30 0:27
- 联系: