红联Linux门户
Linux帮助

基于ubuntu开发了一个项目的心得

发布时间:2007-09-02 11:31:10来源:红联作者:derVdsaea
  此次项目是开发一个Linux平台C/S结构的考试系统。因为个人偏爱C语言,因此采用GTK。

  为提高效率,决定采用anjuta,对于图形界面部分,我是先用glade画出相关界面,在build到源代码,然后参考这些源代码再加入到interface.c里面, 如果直接采用glade+anjuta来开发,到后期要修改界面的话会比较麻烦。

  分几个方便随便聊聊 Smile

  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的教育和普及工作添砖加瓦。
文章评论

共有 2 条评论

  1. whblinux 于 2007-09-04 16:23:58发表:

    有?有比??合入?的?目阿

  2. cui601 于 2007-09-03 13:26:58发表:

    不错的文章