Cobra —— 迈进Ajax时代

来源:互联网 发布:逆波兰式c语言 编辑:程序博客网 时间:2024/05/02 02:44

公司目前正在积累Web2.0的相关技术,正好就拿Cobra来练练手。以后的Cobra将放弃基于wxPython的GUI方式,而是改用基于DHTML+Ajax的技术。在GUI上做出动态的视觉效果实在是一件很繁琐的工作,但是利用Javascript + DOM就能很容易地做到。目前仅仅将显示反编译结果的GUI空间进行了Web化,其中在视觉效果方面,生产力的提高还是很容易就能感受到的。

目前后端是基于Django实现的,实际上,在Cobra这个项目中,没有与database打交道,所以Django的使用还是相对简单的,这个web后端更多地是作为web前端与python server的一个中转站。

下图是初始的界面,选择需要反汇编的源代码文件,点击“提交”按钮:

 

“提交”之后,通过Ajax技术连接后端的web server,完成对源文件的反汇编,然后反馈结果,并显示反汇编的结果,如下图所示

 

在上一篇文章中,我们在GUI控件中看到了基于path选择某一行代码的能力,同样,Web化后的Cobra也支持这样的能力,在代码区域下方的编辑框中输入path,点击“goto”按钮,就会高亮显示path对应的那一行代码,如下图所示:

 

Cobra的web化对我来说,已经体现出了生产力上的解放,因为Cobra的目的是可视化Python虚拟机,既然是可视化,那主要的工作在于GUI部分。老实说,对于GUI编程,我是下过一番功夫的,学生时代发起一个基于WTL的WUI开源项目,其中包括了多个当时“时髦”的UI风格的控件,虽然最后无疾而终,但是在Windows GUI方面,还是有相当的经验的。即便如此,我最深的感受就是桌面的GUI编程太繁琐了,当然,如果使用GUI库,会节省一部分精力,但是工作量依然会非常巨大,尤其是当你需要相当炫的UI效果时。

举个例子,对于选中代码行的高亮,在GUI控件中,我仅仅简单地将那一行选中,以区别正常行,但是在Web化后的Cobra中,通过动态地改变element的class,我可以立即做出非常美观的高亮效果,这种效果要在GUI中实现,简直就是噩梦。

在UI方面,Web已经成熟到可以有所作为的时代了。尽管cross browser依然是一个比较艰难的话题,不过目前诞生的各个javascript框架在这方面已经能节省很多精力了。另一方面,wxPython是一个相对狭窄的技术,而web就不同了,这样似乎对于吸引更多的人参与到Cobra中来也大有裨益 :)