分享一个宏哥的整体软件开发平台依赖

宏哥 发布于 2012/10/25 16:56
阅读 671
收藏 8

最近正好完成了整个产品的开发发布. 分享一下开发当中所依赖的组件:


php 5.3.16+ : web统一开发语言. php 5.3 提供了动态的fpm管理, 因此锁定此版本. 但不使用任何namespace等高级特性. 不使用curl 等库

php 框架: 采纳CI利用正则和auto_load进行方法定位的Best practice, 不使用任何外部,类似smarty的玩意. 模板以正则为基础, 预编译为目标. 数据库访问, 用自定义类, 只使用 navtive API. 为Postgresql 量身定做.

C + libevent 2.x + cJSON(2011/10/10+) : 需要内存直接访问的地方, 利用libevent发布成为接口, 以JSON为数据交换格式. cJSON 2011/10/10+ 提供无缝UTF8, 之前的版本对UTF8支持不够, 只能用urlencode的方式交换数据. libevent 1.4.x某些版本有内存泄露. 不允许,不提供任何对C++程序的支持.

Postgresql + Plpython: 数据库统一到Postgres, 不对任何其他数据库进行支持. 利用pl/python可以访问外部接口. 继续评估 pg9.2是否适应生产环境的部署. 有待确认. 目前所有的开发,都兼容pg9.1

Python 3.2.2 +Tkinter +pywin32: 需要UI以及本地程序的地方, 严格限制UI只支持win, 并利用pywin32提供的win32api访问, 实现本地访问. Tkinter本地的UI显示, 在winxp以上版本, 尤其是win7下,非常漂亮. 严格限制python3,是为了避免unicode带来的困扰. 不采纳任何跨平台的UI库,类似pyqt, pygtk等. 尽管 Tkinter也能提供linux的支持. UI的目标, 锁定windows.

Sqlite: 本地程序, 允许使用sqlite.

posix msg: 对需要队列的地方, 严格限制, 只使用 posix 消息队列

tokyocabinet + tokyotyrant:  Persistent Key Value access.

eastwood: Chart 组件, 兼容google chart, 不提供外部访问, 通过php代理进行访问. 和tomcat整体打包, 不使用, 不对任何java其他的组件以及应用进行开发.

---------------------------------------------------------------------------------------------------

以上的基础技术,可以完整的对Web已经大多 应用业务的win本地程序,提供足够的技术支撑.

---------------------------------------------------------------------------------------------------

严格限制,以及抛弃任何未经验证的东西, 是为了简化技术, 更集中注意力在业务实现上.

不采纳Java, C++是为了避免语言本身带来的复杂性, 以及可测试性, 并提高开发效率.

说到做到

言行如一


加载中
0
一千年前的人
一千年前的人

还是挺多东西的....

这是工作中用的, 还是个人的事情用的呢.....

宏哥
宏哥
工作嘛...... 只是工作
0
一千年前的人
一千年前的人

回复 @宏哥 : 很不错, 能自主决策。 我这边 主要选择、必须选择  笨重的方案为主, 企业级嘛,JSR 168 Portal,dojo 之类的。 Portal这样的神器你见过没....  

我总结的root cause 就是非核心业务系统...

0
乌龟壳
乌龟壳
当时觉得tkinter控件少,比如表格、树形控件什么的,所以转向了pyside,不知宏哥在这方面有没有什么tkinter的解决方案呢?毕竟用python自带的库会更方便一些。(ps:今天提了好多问题了:P)
0
宏哥
宏哥

引用来自“郭煜”的答案

当时觉得tkinter控件少,比如表格、树形控件什么的,所以转向了pyside,不知宏哥在这方面有没有什么tkinter的解决方案呢?毕竟用python自带的库会更方便一些。(ps:今天提了好多问题了:P)

我觉得除非你找到明确的理由, tkinter不能满足你的要求, 你可以次选其他如pyside. 

如果你需要成熟的控件, 我到建议你首选C#. 当然你如果上了贼船, 就只能看成本行事.

UI程序, 不用考虑跨平台.

0
0
乌龟壳
乌龟壳

引用来自“宏哥”的答案

引用来自“郭煜”的答案

当时觉得tkinter控件少,比如表格、树形控件什么的,所以转向了pyside,不知宏哥在这方面有没有什么tkinter的解决方案呢?毕竟用python自带的库会更方便一些。(ps:今天提了好多问题了:P)

我觉得除非你找到明确的理由, tkinter不能满足你的要求, 你可以次选其他如pyside. 

如果你需要成熟的控件, 我到建议你首选C#. 当然你如果上了贼船, 就只能看成本行事.

UI程序, 不用考虑跨平台.

谢谢。我这确实有跨平台UI的需要,还有表格控件是肯定要有的。但公司主要是关注网页方面,网页天然跨平台,其次才是本地应用程序。

tkinter的一个好处(swing也是同样的实现机制)是可以摆放很多很多很多控件,实现表格效果,因为tkinter的控件是自绘的,不占用系统句柄资源,winform就受到了系统句柄的限制。有些动态效果的界面tkinter会比c#的winform好,不过c#的WPF也是程序自绘的。

跨平台的需求主要是产品转型Linux系统,一些工具需要在windows下和linux下都有,如果天然跨平台的库自然不用重复过多的开发,当然底层还是要重复一下。不过很多界面可以用python做一个简单的网页服务器去在浏览器呈现界面和实现功能而不用写本地程序了。

0
宏哥
宏哥

引用来自“郭煜”的答案

引用来自“宏哥”的答案

引用来自“郭煜”的答案

当时觉得tkinter控件少,比如表格、树形控件什么的,所以转向了pyside,不知宏哥在这方面有没有什么tkinter的解决方案呢?毕竟用python自带的库会更方便一些。(ps:今天提了好多问题了:P)

我觉得除非你找到明确的理由, tkinter不能满足你的要求, 你可以次选其他如pyside. 

如果你需要成熟的控件, 我到建议你首选C#. 当然你如果上了贼船, 就只能看成本行事.

UI程序, 不用考虑跨平台.

谢谢。我这确实有跨平台UI的需要,还有表格控件是肯定要有的。但公司主要是关注网页方面,网页天然跨平台,其次才是本地应用程序。

tkinter的一个好处(swing也是同样的实现机制)是可以摆放很多很多很多控件,实现表格效果,因为tkinter的控件是自绘的,不占用系统句柄资源,winform就受到了系统句柄的限制。有些动态效果的界面tkinter会比c#的winform好,不过c#的WPF也是程序自绘的。

跨平台的需求主要是产品转型Linux系统,一些工具需要在windows下和linux下都有,如果天然跨平台的库自然不用重复过多的开发,当然底层还是要重复一下。不过很多界面可以用python做一个简单的网页服务器去在浏览器呈现界面和实现功能而不用写本地程序了。

如果仅从windows UI开放来说(一般我自己是认为如果需要UI, 就不考虑linux了).

QT并不是好的approach. 仅从它的尺寸就可以看出来. 至少, 它使用"X"的思想, 去做win ui. 而且用C++很难控制质量, 你甚至很难找到win平台可靠的基于QT实现的东西.

甚至 wxwiget都比QT要更好.

WIN UI应该是以组件为主, 能够直接处理数据,并监听事件的家伙.

从路径来说, 我认为Tkinter的approach 更佳.

系统句柄, 你不用担心占用资源, 因为任何的simulation, 都不可能绕过 元 实现, 这点上, QT不可能更节约资源. 而且win 自己绘制的效率是极高的.

以你的情况,我建议web为主,Tkinter为辅. 就是说,大多数, 只做web实现, 少数需要做本地的, 用tkinter.

Tkinter的组件, 并不丰富, 但是基本能应付. 关键是, 非常稳定, API(TCL/TK)几十年没有变化.

0
0xFE
0xFE
查看了python的doc,新版ttk里面已经有treeview,而tix里面也有table list可以用了啊,还是在不断扩充的嘛

返回顶部
顶部