status

校对

ZoomQuiet

100%

CDay N 基于Python的无尽探索

想象力才是 Pythoner 的唯一界限!

需求的遐想

从最初的需求到今天,小白已经独立完成了至少以下功能:

  1. 一个基于命令行的界面,可以:
    1. 可以将光盘内容索引存储为硬盘上的文本文件
      • 存储成*.cdc 的文本文件`
      • 可以快速指定文件名
    2. 可以根据储存到硬盘上的光盘信息进行搜索
      • 可以根据指定关键字进行匹配搜索
      • 可以搜索指定目录中所有*.cdc文件
    3. 可以同时为每个摘要文件发出独立线程来并发的进行关键字搜索
  2. 一个基于Web 网页的界面,同样可以:
    1. 可以将光盘内容索引存储为硬盘上的文本文件
      • 存储成*.cdc 的文本文件`
      • 可以快速指定文件名
    2. 可以根据储存到硬盘上的光盘信息进行搜索
      • 可以根据指定关键字进行匹配搜索
      • 可以搜索指定目录中所有*.cdc文件
    3. 可以同时为每个摘要文件发出独立线程来并发的进行关键字搜索

所有需求都在50行代码以内就实现了核心功能... 小白老怀大慰,经过清点代码,真正的对Python 竖立起了足够的自信!

这才对社区里Python 简介中的开场诗有了全面的了解:

侧有咖啡,后宝石;还是巨蟒最贴心!
最贴心,不费心, 用好还要想清楚。
想清楚,就清楚, 一切清楚才清爽!
要清爽,常重构! 刚刚够用是王道!

脚注:: 
啄木鸟社区专精中国Python 应用和推广,
收集有大量相关资料,也有专用的推广用文章
http://wiki.woodpecker.org.cn/moin/SpreadPython (精巧地址:http://bit.ly/16xO0W)
其中的 "Python简介"
http://www.zoomquiet.org/share/s5/intropy/070322-introPy/ (精巧地址:http://bit.ly/3suMWb)
是常用的 忽悠Python 入门手册 ;)

然后结合各方信息开始YY:

桌面化

一定要启动个 web 服务器才能看到漂亮的界面嘛? 一定要忍受简单的字符命令行界面嘛?

自然可以进化的! Python 可以使用的 GUI 框架也不少:

  • Tk/Tcl
  • Qt
  • WxPython

  • win32com
  • 等等

    甚至可以使用 Mozilla 的 XUL 框架接口来直接利用 FireFox 的界面组成软件;或是同现有的开放桌面小部件平台联合,比如说 Yahoo!Widget; 等等...

    选择一个简单有趣的来尝试就好 ;)

详细:: 
PCS217  Tkinter编程
Tkinter是Python中的一种比较流行的图形编程接口。
Tkinter模块是Python的标准Tk GUI工具包的接口。
TK和Tkinter是为数不多的跨平台的脚本图形界面接口。

PCS302 Leo文学化编程环境框架
作为纯Python 实现的轻巧文学化编辑环境,
LEO已经演化成了文学化应用平台,各种插件层出不穷,
LEO本质上只是Tk的一个跨平台文本编辑软件;
但是由于其独特的文本处理视角,引发了各种应用,
这里快速分享了LEO的世界观,引导读者进一步探寻文学化编辑的世界;

FP化

一定要OOP 开发嘛?

现在的 CDC 仅仅是接受光盘信息和查询关键字,如果从面向数据的开发考虑,完全可以跃迁成 基于FP~函式型程序;

一切都是函式间的嵌套调用,一但发生问题就会自然退出,无模式,无状态,只是单纯的数据响应,整个结构可以更加扁平不易出错,好维护………………

Python 同样内置有一些标准的FP算子:

  • lamba()
  • map()
  • zip()
  • apply()
  • reduce()
  • filter()

更加魔幻的在Python 2.4 以后追加了“修饰符” ~ @

可以通过更加简单的方式进行函式叠加了~ Python 有能力将自个儿写成 Lisp 一样的纯函式程序,

咔咔咔,不过,除了Cool 一时想不出有什么具体的好处 ;)

详细:: 
PCS114 FP初体验
进一步说明了内建的一些函式化算子的使用,
帮助读者体验什么是 FP~函式化编程,
这是种古老而且高效易维护的编程思路,
虽然和主流的命令序列式编程体验完全不同,
但是真的是非常值得学习和理解的好东西 ;-)

C化

好吧,有对速度和内存有洁癖的人存在的,那么可以使用 Python 来快速开发,却得到C样的最高效执行效能?

Pyrex 是一种用来编写 Python 扩展模块的语言…… 简单的说,就是可以使用Python 来完成功能,然后通过 Pyrex 生成同样功能的C代码,以供编译生成最高效执行程序!

而且其它也有各种可以渗入C/C++的支持模块:

  • ctype
  • boost
  • cxx
  • WarpPy

  • SWIG
  • SIP 等等等等,想C化Python 应用也是分分钟的事儿哪……

Flash化

好吧,Flash 可以说是现在最漂亮的界面创造方式了, Python 应用可以使用 Flash 作前端嘛?

随便看了看 Flash 的ActionScript 脚本发现非常的象JS,而且可以通过XML 进行交互,好的 Python 的XML 解析和处理也不是摆设。

完全可以通过Flash 提供美丽动态的界面,由 AC 组织好事务XML丢给Python 处理实际数据,然后依然是XML返回,达成软件的可用。

只是,这其中还是需要个 标准的 web服务器提供给 AC 进行URL访问,好在Python 自行创立个简单的 web 服务也实在不算什么,利用现成的 Karrigell/web.py 等等超轻量级web 应用框架也一样轻松.

分布化

好的,如果我们的光盘多到无法在一台机器保存所有摘要信息,或是需要有不同的服务器来分类保管或是同步收集DVD信息时,Python 也可以支持?

一查才知道,哗!世界第一 的 Bt 下载体系:

  • bittorrent ~ 根本就是Python 开发的!
  • 而且类似EVE 的大型网络游戏也是使用 Stackless Python 进行开发的 那么,分布的话也应该没有问题的,关键是分布到什么程度的事儿而已.

小白期望是:

  • 可以自动将不同主机上的实例收集的DVD摘要信息相互同步到本地
  • 可以自动分发搜索要求,前将各自的结果汇总到任何一台发出查询请求的主机处

压缩化

好的,现在的摘要信息是以 .ini 的格式存储在文本文件中的,如果多了有些浪费空间,

可以象其它软件那样儿整个自己的压缩格式?

嗯嗯嗯?Python 内置支持从 .zip 文档中导入数据对象的?!

哗~ 好吧,不用努力就可以获得的特性, soooooo easy!

定制化

操作的命令,或是页面上的元素,输出的方式,可以每个人自行调节的话....

嗯嗯嗯,这和Python 没有直接关系的,是CSS,Ajax 的事儿了,

不过,只要是通过XML等等标准数据沟通的模式,Python 就是没有问题哪!

智能化

嗯嗯嗯,现在的查询实在忒简单了点,我要象Google 那样的组合条件! 要有正则表达式的模糊模式匹配!

嗬嗬嗬,正则表达式是内置在Python 中的,组合条件不过是参数的解析...应该是个问题嘛?

Google化

想協助地球上所有其它有光盘管理需求的人们使用 PyCDC 进行轻便的光盘仓库管理?

使用 GAE ~ Google App. Engine 服务卟!

  • 透过 Google 的免费应用发布环境!
  • 透过 Google 的强力搜索引擎服务!
  • 使用 Google 的轻型分布式数据仓库!
  • 借助 Google 的无限空间邮箱服务!
  • 组合 Google 的其它各种免费强力服务! 将 PyCDC 变成依托 Google 公司的全球化服务吧!

唯一的要求是你会Python ;)

详细:: 
PCS400 GAE
简要的介绍了 2008年四月刚刚发布的 Google App. Engine 服务,
分享了在GAE中快速建立自个儿原创应用的方式/方法/思路;

我化

好的,小白的学习成果 PyCDC 还想怎么折腾,读者自个儿来吧, 没有人可以比你自个儿更加理解你的需要,

深入学习Python `我化`这一小工具好了 ;)

想象力才是 Pythoner 的唯一界限!

小结

充分信任Python, 大胆设想,小心求证,搜寻己有实例,谁都可以创造出美妙实用的工具的!


::-- ZoomQuiet [2007-04-13 16:36:52]

Name Password4deL ;) :( X-( B-)
dhzesmo njcoq   pznwk zveq wbghuy jrumhi hwmir shwt mcgfqlwvo
2008-05-04 07:48:34
lyngifeb aeqxihns   mviyhcb vxco eifmgaq cvgb qnwaxm wpcqmsj psjn http://www.pmsbclgn.ytnwpg.com
2008-05-04 07:49:40
tujv jubxn   wqeubnx zuhtdjp cwzbskty gxeztw qedbgohx vbpqhjscl nwaoquy [URL=http://www.sntohjxgw.hcsie.com]zkfge iaopnwq[/URL]
2008-05-04 07:50:17