完全基于ubuntu开发了一个项目,谈谈心得

软件和网站开发以及相关技术探讨
sanool
帖子: 26
注册时间: 2005-08-21 10:31
联系:

完全基于ubuntu开发了一个项目,谈谈心得

#1

帖子 sanool » 2006-11-14 21:59

此次项目是开发一个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
http://www.lupaworld.com
LUPA开源社区
头像
juanzhewudi
帖子: 1114
注册时间: 2006-01-19 11:55
来自: HUST
联系:

路过,赞一个

#2

帖子 juanzhewudi » 2006-11-14 22:12

路过,赞一个。
sokv
帖子: 61
注册时间: 2006-07-22 18:44

#3

帖子 sokv » 2006-11-24 13:10

不错~~
qiziyh
帖子: 89
注册时间: 2006-05-31 1:52

#4

帖子 qiziyh » 2006-12-03 17:15

偶太弱,尽管看不懂,但是支持楼主一下吧。努力
quantumfang
帖子: 74
注册时间: 2006-11-14 10:44

#5

帖子 quantumfang » 2006-12-05 15:45

董存瑞路过也会顶
senosy
帖子: 13
注册时间: 2006-12-03 14:33

赞一个,以后请多指教!

#6

帖子 senosy » 2006-12-12 12:48

我也可能需要在Linux下开发一些程序的。
高手多多指教!
s
if
帖子: 62
注册时间: 2006-09-12 1:25

#7

帖子 if » 2006-12-14 10:59

zan
头像
猛将兄
帖子: 2052
注册时间: 2005-10-19 17:33

#8

帖子 猛将兄 » 2006-12-21 22:21

这东西直接用B/S做一个,搞点ajax效果也很好
GTK+做这种太大材小用了。感觉楼主还是在教育系统里面待着,不太考虑开发的经济性和产品的可维护性哦
perryhau
帖子: 34
注册时间: 2006-11-20 11:56
来自: 北京
联系:

#9

帖子 perryhau » 2006-12-28 11:12


顶一把
mcspring
帖子: 6
注册时间: 2006-12-26 10:51
来自: ND

太强了

#10

帖子 mcspring » 2006-12-30 21:59

支持,我看那界面就羡慕
楼主是在是强阿
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#11

帖子 xiechy » 2006-12-31 8:45

最好还是qt或者wxwidgets吧,gtk的夸平台能力不强阿,c/s结构最好还是能够夸平台比较好吧。虽然楼主的程序确实不需要linux之外的平台……
xiechy
帖子: 1074
注册时间: 2006-01-18 15:01

#12

帖子 xiechy » 2006-12-31 8:48

对unicode的支持似乎wxwidgets好一点,几个很方便的宏,对翻译什么的国际化也先天的就准备的很好。除了对那些连左右顺序都反过来的语言~~而且新的2.8对这个也有加强。
lillian
帖子: 35
注册时间: 2007-03-03 15:09
来自: 厦门大学

#13

帖子 lillian » 2007-03-10 0:09

高手很多... ...
头像
huangjiahua
帖子: 3294
注册时间: 2005-03-30 0:27
联系:

#14

帖子 huangjiahua » 2007-03-10 1:07

楼主这样不太符合国际化要求,
一般是使用 gettext , 将中文写在 .po 里。

既然楼主都已经分离了中文,干脆就标准点了。




另, WxWidget 在 Linux 上是包装 Gtk+ 的,楼上某位不要觉得如何。
Qt 当然跨平台更好,但是楼主的程序是在 Ubuntu Gnome 下的。
跃过无数的时间断层,只为了在
头像
titainium
帖子: 689
注册时间: 2006-12-02 12:25

#15

帖子 titainium » 2007-03-10 14:28

B/S
Titainium
回复