Freewind @ Thoughtworks scala java javascript dart 工具 编程实践 月结 math python english [comments admin] [feed]

(2012-02-19) 使用Python实现“信息更新上传工具”(1)

广告: 云梯:翻墙vpn (省10元) 土行孙:科研用户翻墙http proxy (有优惠)

我正在动手做一个技术群网站,其中有一个功能,可以把QQ群里的聊天记录上传到网站上,以方便查看搜索。同时因为每个人的聊天记录都可能是不完整的,所以我打算提供一个功能:可以让不同的人上传记录,将信息合并在一起,组成一个完整的记录。开始没打算做什么工具,直接在网站上搞定,但是很快发现了一个大问题:QQ只能导出全部聊天记录,而不能分时段导出。一个大点的记录就有几十M,每次上传这么多,岂不是要人命?最终决定做一个GUI工具,可以在本地导入数据,最后将新增的数据上传到服务器上,这样让操作简单很多。

该工具的功能有:

  1. 输入网站上注册的用户名和密码,登录
  2. 获取用户加入的所有组,让用户选择一个处理
  3. 下载该组已有的全部信息(只下载文本,以减少数据量)
  4. 导入QQ聊天记录文件
  5. 自动判断,以找出“新增的”和“修改的”
  6. 上传“新增和修改”的数据

我应该用什么语言和工具来实现呢?

1. Java

对于我来说,Java是第一考虑的语言。虽然有必须安装JVM的不便,我还是打算先用swing来做。在Swing Builder的帮助下,界面很快画出来了,但是在表格的处理上遇到了很多麻烦。比如我想调整表格列的宽度,对着例子调了半天也没调好。在认真看完table相关的文档后,我不得不承认,swing真是太复杂了。拿table这块来说,一个table,有TableModel,有ColumnModel,还有什么View,代码繁琐,让人无比头大。上网看了一下,果然发现很多人都在抱怨说swing的设计在现在来说已经相当落伍了,落伍与否我不是很关心,但是编写起来太繁琐,就让人无法忍受了。

GUI是Java的弱项,也是我的弱项。我一直想学一门能脱离JVM的语言来编写GUI程序,所以打算以此为机会,学习一门新的技术。

2. C/C++

我一直想重新拾起c,再学学c++,毕竟做GUI程序,c++可谓是最常见的选择,我们常用的各软件基本上都是用C++做出来的。我先看了一本“用实例学习C语言”的书,发现C语言太底层了,大部分的代码都用来实现一些最基本的功能,真正用来实现功能的代码反而不多,开发效率很低,对于开发非系统程序并不是一个好选择。而C++,在某论坛中看到一些很多人对它的吐槽,说没有十年都不能算掌握c++。它功能强大,性能很好,但里面有太多的陷阱,不是短时间内能学好的。虽然买了本《C++ GUI QT4 编程》,看起来不难,但估计一旦深入,就会头疼了。经过考虑,我想还是先放过它吧。

3. Python

最后想到了Python,觉得它才是最适合我的,赶紧捡起来。QT/wxWidgets都提供了Python的绑定,我们可以用Python来调用它们的库,编写GUI程序。同时python是跨平台的,而且可以与程序打包在一起,这表示可以弄成绿色版的,客户端不用安装什么。现在唯一的担心就是,打包后的程序会比较大。我打算先使用QT,如果打包后的程序在20M以内,就可接受,否则要换用wxWidgets,或者其它的了。 今天开始用Python来实现该工具,同时记录下开发过程中遇到的问题。

comments powered by Disqus