天亮之后说再见
网上看到的一篇文章
虽然有政治热情,但我一直很反感国内很多的所谓强国论坛——充斥着无聊幼稚的争论和狭隘的爱国情结。但寝室里一个室友就喜欢上,并看到了一篇我认为分析比较理性客观的文章,由于已经分不清是哪转载哪的了,Google搜一下就可以找到。搜不到的话点这下载吧。
MovableType(MT) 3.0 变收费软件
MT因其前卫的功能,静态内容发布,已经最为流行的个人网站的Blog系统。
但是刚收到MovableType.org寄来的Mail,大致意思是感谢参与3.0版本的测试(我只是提交过想参加Beta测试的表单,但后来并没有回应了)……然后兴匆匆到官方网站上想下载3.0体验一下,却被满页的$吓住了……原来的movabletype.org/download.shtml也转到了Six Apart销售MT的页面,连原先的免费版本都找不到了……还好自己机器上有存档,否则,哎。
想想也是,现在随便一个服务器提供商都能提供MT的安装环境,甚至帮你全部安装配制好,实在没道理使用Six Apart的TypePad。Six Apart是.com,不是有大把$养着的open source社区。
看来偶的2.661已经是Final Version了。
初识Python
记得第一次看到 Python 这个词是 Dash 跟我说编 BT 的语言号称是和 C# 一样完美的,当时也没注意,上个月看《Thinking in Java》,Bruce Eckel 也是大力推荐,昨天在找CMS时发现一个很好用的系统:Plone ,也是Python编的。于是花了两天时间捉摸着入门,发现还是很让人吃惊的。
Python.cn 上是这样介绍的:
- 是一种解释性的,面向对象的,具有动态语义的程序设计语言
- 适合快速开发
- 代码具有优秀的可读性
- 具有模块和包的概念
- 支持各种主流平台,并具有很好的跨平台性
- 可以很容易地包装C/C++的代码供Python使用
经过短暂实践,我个人总结了以下几点,仅供参考:
- Python是支持带类和多继承的面向对象程序设计。虽然面向对象,但是和C++/Java的概念不太一样。在Python中“对象”这个词不一定指类实例。Python中并非所有的类型都是类(而Java几乎可以这么认为),然而,所有的Python类型在语义上都有一点相同之处:描述它们的最贴切词语不是“类”,是“对象”。
- 代码格式及其前卫,完全抛弃了C系列,包括Java使用的花括号{},改用空格(Space)或制表符(Tab)控制封装块。比如
def buildConnectionString(params):
代码块(函数,if 语句,for 循环,等等)通过它们的缩排来定义。缩排表示块的开始,非缩排表示结束,不存在明显的括号,大括号,或关键字。这就意味着空白是有意义的,并且要一致。在这个例子中,函数代码(包括文档字符串)缩近了4个空格。不一定非要是4个,只要一致就可以了。第一行没有缩近,则不算在函数内。经过一段时间的适应,你将会心平气和地对待它,开始理解它的好处。一个主要的好处是,所有的Python程序看上去差不多,因为缩排是语言的要求而不是风格问题。这样就更容易阅读和理解他人的Python代码。因此Python赢得了最优美代码、最强的可读性的称号。用Phthon做程序设计,你甚至可以不太考虑你的程序的可维护性很差。
"""Build a connection string from a dictionary of parameters.
Returns string."""
return ";".join(["%s=%s" % (k, params[k]) for k in params.keys()]) - 基本的数据类型有变量:数字型(整型,浮点型,复数,无限制长整型),指针(ASCII码和Unicode码),表,字典。
别人总结的其他几点:
- 代码可以被集成为模板和包。
- 这种语言支持异常处理追踪并能够列出比较清晰详细的错误提示。
- 数据类型非常的强大,而且是动态的。混合的数据类型(例如试图将指针与数相加)将被编译器提出一个异常情况信息。
- Python包含了一些高级的程序设计特性,例如代码生成器和解释器。自动垃圾收集功能使你从内存管理的争战中解脱出来。
庞大的标准库支持很多一般的程序设计任务,比如与网络服务器连接,正则表达式,文件操作。 - Python的交互式模式使得调试小段的程序非常便捷。当然,处理大型的程序他还具备一个捆绑式的开发环境,叫做IDLE。
- Python编译器是很容易扩展的,我们可以将C或者C++编译后的模板作为新的模板加入到其中。
- 编译器也可以被嵌入到另外一个应用程序中以提供一个可编程的界面。
Python可以在很多不同种类的计算机和操作系统上运行:比如Windows, MacOS, OS/2,以及很多作为Unix分支的操作系统。
参考站点:
- 官方主页:http://www.python.org/
- 中文社区:http://python.cn/
- 中蟒编成语言站点:http://www.chinesepython.org/cgi_bin/cgb.cgi/home.html
- 深入Python:http://cn.diveintopython.org/
- v2.3参考手册:http://python.cn/contents/python2.3tut/tut/
- 常见问题集:http://python.cn/contents/PythonFaq.html
- Jython(Python in Java):http://www.jython.org/
- IBM - Python编程系列:http://www-900.ibm.com/developerWorks/cn/linux/theme/special/#python
- Python初学(英文):http://www.python.org/topics/learn/
- Python Library Reference(英文):http://www.python.org/doc/lib/lib.html
- ActivePython(Win32环境下的Python安装及IDE):http://www.activestate.com/Products/ActivePython/
PHP之MVC
前段时间在学习Java,顺水推舟得学了MVC构架。在网上查阅相关资料的时候,发现对于PHP是否以及怎样套用MVC构架,已经有相当多的探讨。以下给出几个链接:
这几篇文章(以及相关的评论)几乎包含了所有PHPer对于MVC构架的认识和疑惑。在我实践使用MVC构造了一个站点之后,可以说对于PHP中的MVC有了自己的一些认识:
MVC是面向对象思想的集中体现。特别是模块(Model)的封装、抽象,运用得好就能将OO的封装、多态性表现得淋漓尽致。至少Web应用上,MVC肯定是先进的,甚至我个人认为小型的PHP站点也应采用MVC的构架。
中大型站点一定需要MVC架构。PHP在企业级应用上如此至少,除去商业界和开原界在意识形态上有巨大分歧外,PHP本身的极弱面面向对象的缺陷也是最大的原因。道理很简单,不是高度面向对象的项目,越是大型,维护成本越是成几何级数上升。
那到底该怎么运用MVC呢?应该说对于不同类型,不同规模,不同开发周期,不同维护费用预算,都可以有不同的具体实现。但是有一点是肯定的:并不像《PHP:MVC迷思》所说的“把业务逻辑并入M中,这其实是MVC的思想背道而驰的。”——业务逻辑绝对应该是Model部分的核心,而这篇文章的作者所指出的类似于JSP中Java Beans的作用,只是Model部分最底层的抽象,如果就此理解,那MVC的确不应该应用于PHP了(相信作者肯定没使用过structs)。实际上,判断MVC是否强壮,就是看业务逻辑部分的抽象和封装是否到位。Smarty模版引擎的最大特点就是将业务逻辑从视图中分离,因此说他的思想是最前卫的。以我的看法,Smarty就是在PHP中最大程度地实现JSP的自定义标签库(Custom Taglib),当然,两者还是有很大不同的,这个也只是我个人的理解。如果还不能理解业务逻辑为什么是属于Model部分,那还是先看看一些面向对象的教科书吧。
BTW:4月25日PHP5出了第二个Candidate版本,虽然对于PHP的前景,尤其是php5大量借鉴Java的特点还有很大的争论,但是我认为PHP5无疑会大大延长其寿命,至少让我在做项目的时候会犹豫到底是JSP还是PHP……PHP5也体现了绝大多数程序员对于PHP的最大需求——面向对象。