技术思考
保护你的网络隐私 (1)
类别:
在未名空间上关于Drupal内容管理系统的一些回复
最近开始泡mitbbs(未名空间)。
我上网一般不主动发贴,基本上只回帖。基于我上网发贴/回帖“不误导别人,不废话,不灌水。”的准则(这一准则写在了我的mitbbs发贴签名档里面),当每次我回答别人一些我熟知领域内的问题的时候,态度是比较端正的,回复是比较详细的,措辞是比较客观的。
遗憾的是各类网站新开张的新开张的,说关闭的就关闭。有时候我发现我在别的网站写下的文字说不定什么时候就没有了,于是决定把我在别的网站写下的文字(主要是回帖)整理整理,放在我自己的网站上,权当备份。
本文整理的是这两天我在mitbbs有关Drupal这一内容管理系统的有关回复。需要特别说明的是,后面比较长的一段时间内我也许还会断断续续写下其他一些关于Drupal这一强大的网站建站系统及内容管理系统的方方面面。
下面转贴中仅对文字拼写错误和排版作必要修正。所述内容均为个人观点,仅供参考。
问题一
发信人: cplus2009 (mac), 信区: StartUp
标 题: question about open source software
发信站: BBS 未名空间站 (Wed Jun 16 13:05:28 2010, 美东)
我在考虑改写某些开源软件后推销出去...一般情况下大家是怎么做这个的?我需要购买授权许可证吗?通常需要多少钱?1 (I am thinking of to use some open source software, to enhance it and marketing it... normally how people do this? Do I need to license the open source and normally how much is the cost....)
回答
发信人: deminy (deminy), 信区: StartUp
标 题: Re: question about open source software
发信站: BBS 未名空间站 (Wed Jun 16 22:48:41 2010, 美东)
比较常见的做法,也许是基于某一个开源软件提供服务(service),当然,首要条件是这个开源软件要好。事实上这样的开源软件是比较多的。
例如,Drupal,也许是当今最好的免费内容管理系统(根据某些标准来评判),好些公司都基于它来做服务。它的创始人开办了一家公司acquia.com,提供基于Drupal的各种网站建设、搜索引擎优化等服务。另外一家公司volacci.com,则专门做基于Drupal的搜索引擎优化(它还开发了一个最好的Drupal SEO流程插件)。这两家公司至少表面上看都比较成功,至于其他大大小小的基于Drupal的网站建设、网站托管公司,那就更多了。
中国人当中,内容管理系统做出了点名堂的是XOOPS (xoops.org.cn),是一个Montreal的中国博士生牵头维护的一个开源系统,成立了自己的公司。
因此,你的思路是可行的,而且事实上很多人在做。
问题二
发信人: XiHuaYuan (美不胜收), 信区: StartUp
标 题: Re: question about open source software
发信站: BBS 未名空间站 (Thu Jun 17 19:21:37 2010, 美东)
谢谢大侠的贴子,很好很好。 那个 PHPChina/Discuz 也是中国人做的,还有PHPwind,PHP168等等. 做中文站,是不是这些比Drupal更好一些呢?
谢谢大侠指点哦。
回答
发信人: deminy (deminy), 信区: StartUp
标 题: Re: question about open source software
发信站: BBS 未名空间站 (Thu Jun 17 20:31:30 2010, 美东)
谢谢你的夸奖。
首先,我个人很倾向于Drupal,这是根据我个人喜好、以及多年来在相关技术和行业方面的经验作出来的选择。和绝大部分国产或海外的内容管理系统比起来,Drupal都有着明显的、长足的优势。
制作和维护中文网站,Drupal比较明显的缺点有2个:1. 中文信息方面不够,大量的有关技术和维护信息(文档和讨论)都是英文的;2. 可能在中文插件(modules)上有所不足(从插件数量到插件维护状态)。如果你的网站不特别强调使用某些中国的第三方服务(例如集成taobao的某些功能等),那么Drupal依然是很好的选择。
中文的内容管理系统近些年做得比较努力,也不错,但我个人从来不采用(XOOPS是个例外,但是我比较后悔曾经采用过它一次,希望其开发者不要介意),也很少测试。个中原因,我就不细说了,纯属个人喜好和看法而已。我只能说,中文的某些产品在安全性(易受攻击程度、以及漏洞修复速度)、软件产品升级维护、功能丰富程度等方面,也许有待改进。
另外,如果做英文网站,综合多方评测的结果、包括我个人的使用体验来看,通常最好的是应该是Drupal。当然,Joomla也是很不错的有竞争力的一个产品。如果所建网站是多语言版本的(同时有多种语言支持的)、或者是重视搜索引擎优化效果的、或者是数量较多的网站,Drupal是当然的首选。
问题三
发信人: tianbao999 (天宝), 信区: StartUp
标 题: Re: question about open source software
发信站: BBS 未名空间站 (Fri Jun 18 13:30:22 2010, 美东)
对wordpress比较熟悉。
Wordpress和drupal相比,有什么差异呢?
您对wordpress怎么看呢?
回答
发信人: deminy (deminy), 信区: StartUp
标 题: Re: question about open source software
发信站: BBS 未名空间站 (Fri Jun 18 17:15:45 2010, 美东)
WordPress应该是最流行的blog软件产品。这是有历史原因的(因为起步早等等),但并不一定代表它是最好的该类产品。不过,由于它确实很流行,因此用户使用它可以得到更多的一些便利:更容易在网上得到技术支持;更容易找到相应的网站托管服务;更多的(付费的或免费的)theme(页面样式选择);更多的公开的或私有的插件等等。
对于一般的blog用户,选择WordPress应该是个不错的选择,但绝不是唯一的选择,也不一定是最好的选择。另外,它起步于blog这一单一功能需求,虽然可以将它归类于CMS(内容管理系统),它依然算不上一个功能强大、功能完善、扩展性好的CMS系统。
Drupal和WordPress的部分主要差异在于:
1. Drupal可以比较轻松地胜任多种不同类型网站的需要:论坛、blog、电子商务、新闻等等;WordPress在这方面不是其所擅长的;
2. 一个基于WordPress开发的(支持多用户的)blog网站,要拓展其功能、转型成为一种功能比较齐全、类似某些门户或论坛等性质的网站的话,比较困难;而一个基于Drupal开发的类似网站,则不存在这样的问题。
3. Drupal(加上相关插件)可以做到绝大部分WordPress所具有的功能;反过来则不行:Drupal有一些特别的功能(甚至是很好的功能)WordPress是做不到的、或者是比较吃力的。
不同用户有不同的需要。简而言之,通常而言,在更广泛的范围内Drupal功能明显更强大、更灵活;而如果仅仅就blog或者类似功能而言,WordPress始终是一个不错甚至挺好的选择。
另外,功能强大的,不一定是最适合你需要的。如果你仅仅是需要一个简单的blog,使用Drupal不一定是你最好的选择:对于大多数人而言,即便有利器在手,如果这个利器很沉,玩起来也许是更吃力的。
补充说明1: 此段“问题一”中的中文部分是根据最初问题(英文)翻译过来的,非发问者原文。
类别:
浅谈Magento
Magento这套开源网上商店系统非常非常非常非常出色。其基于经典的PEAR架构和Zend Framework架构,使用EAV(实体-属性-值)模型,设计完美,扩展性极好。明显超越phpMyAdmin、Smarty等众多著名的PHP开源系统,是PHP开源系统中惊艳、典范、登峰造极之作,是未来网上电子商务站点的首选。
Magento应该是当今开源电子商务系统的翘楚,能跟其在同一档次的同类系统应该没有。和Magento比起来,osCommerce……不堪入目。
Magento瑕疵很少,很难得。我想起来《笑傲江湖》里面好像说过,练武不仅仅是武功高的问题,而且还有如何减少自己武功中的瑕疵和漏洞的问题;瑕疵、漏洞越少,才能更立于不败之地(例如武当掌门用滴水不漏的剑法将自身武功的漏洞雪藏其中,让外人不易识破、很难攻入)。就像早先的phpBB3,万众期待,结果居然对UTF-8的支持颇为糟糕,引来一片非议,最终phpBB3还是决定完善地支持UTF-8编码了。Magento在不断减少自身漏洞、缺点方面做得很好。(这段描述只是说Magento在设计上很合理,即便有bug也往往能很快修补;但并不是说Magento没有什么bug)。
使用Zend Studio for Eclipse (仅限于v6.0.1或以上)这款IDE来管理、开发Magento,是最完美搭配。
Magento的缺点:
* 功能很好很强大,在没有专人指导的情况下用户不太容易直接上手,虽然它的易用性其实很不错。
* 二次开发或对其作修改的话,需要有较好的计算机编程知识、PHP编程水平以及web编程水平,最好对Zend Framework这套框架比较了解。对于程序员而言,这不是一个入门级的开源产品可以随便轻易上手的。
其他的就不深入展开了,太花时间。谢绝讨论细节,抱歉。
类别:
PHP的前途
我原来想给这篇文字起的名字是《PHP大有前途》,后来觉得还是不要这么煽情的比较好,于是就把文章的名字改成了现在这样子。
本文的目的是总结最近半年内PHP技术方面的一些重要进步,并基于此来谈谈PHP技术应用的前途。我自己不会详细叙述每个细节,也不会把每个提到的事件、术语给出具体的出处(相关事件或术语可在google搜索到),但会把所要谈到地方大体讲清楚。
我个人认为最近半年内PHP最重要的三项进步是:Zend Framework v1.0.0的正式发布;Zend Studio for Eclipse (Neon beta)这款集成编辑环境(IDE)工具的推出;命名空间(name spaces)和后期绑定(late binding)将成为PHP 5.3/PHP 6的一部分。
== Zend Framework v1.0.0的正式发布 ==
从PHP Framekwork(框架)而言,有将近十个左右明显出色的框架1,其中最出色的可能有5、6个左右,这包括Zend Framework, CakePHP和Symfony这三款最知名的。Symfony功能相当强大,但CakePHP在易用性等方面更胜一筹。我个人曾优先推荐使用CakePHP。
最近一个来月我开始在公司和家里使用Zend Framework。我的使用感觉是,Zend Framework的设计特别出色,其编程设计所具有的美感可以和Smarty相媲美(Smarty是我特别欣赏的一套PHP程序)。我认为Zend Framework将是未来大型PHP项目开发的重要框架(我个人认为它应该是首选框架)。
我认为选择Zend Framework有如下几条主要原因:
- Zend Framework是面向企业级开发的框架(抱歉,这个论述是别人可能曾经说过的,但目前我找不到出处)。
- Zend Framework代码本身的优化和在服务器端的优化是有保障的(抱歉,这个论述是别人可能曾经说过的,但目前我找不到出处)。
- Zend Framework本身的设计哲学遵循PHP的设计哲学: 简单、易用、易于扩展!(当然,首先你要比较熟悉它,才会觉得它简单、易用)
- Zend Framework有着Zend公司的专业性和强大技术保证。Zend Framework不是草莽英雄型、昙花一现型的开源软件,而是由最专业的、最权威的PHP公司组织下开发的框架。
(就我个人而言,我会优先使用Zend Framework, PEAR和Smarty这套组合作为开发工具,另外还要加上PHPUnit, Subversion等。至于Ajax,我个人会选择Dojo这款Ajax引擎。)
Zend Framework目前的缺点是:该框架似乎依然在作一些比较明显的调整(例如从v1.0.0到v1.0.3之间所作的调整),但可以接受;官方文档比较丰富,但是都是化整为零式的描述,缺乏基于完整项目的好的实例;可用于参考的、与时俱进的实例代码有限(不过你还是可以从Google代码搜索中找到个别完整的基于Zend Framework的开源项目代码)。
== Zend Studio for Eclipse这款IDE的推出 ==
我在今年秋天之前使用Zend Studio作为PHP的编辑软件,大概自十月份Zend Studio for Eclipse推出后就改用了Zend Studio for Eclipse。Zend Studio for Eclipse(不免费)与Eclipse with PDT(免费)相当类似,但有着一些额外的不免费的功能。
一直以来我个人最推崇的IDE是JBuilder企业版(Visual Studio近几年没深入用过,因此无法评价)。Zend Studio for Eclipse目前所能达到的高度虽然(明显)不及JBuilder,但是我已经相当满意了。
Zend Studio for Eclipse依然处于beta状态,依然有着一些缺点(例如界面颜色样式设置不方便、在building projects时可能停止响应等),但就Zend Studio for Eclipse相对于以前的Zend Stuido的改进来讲,我认为这款IDE的前途是光明的。(和Zend Studio for Eclipse比起来,Zend Studio就显得挺傻。)
Zend Studio for Eclipse在管理庞大代码库的时候,其所具有的优势是相当明显的。因此,Zend Studio for Eclipse应是大型PHP项目开发的重要工具。
== 命名空间和后期绑定将成为PHP 5.3/PHP 6的一部分 ==
命名空间的出现便于组织规模庞大的代码系统,便于在不同系统中共享代码。后期绑定将使得PHP与Java的面向对象的风格更接近一步,使得PHP编成的灵活性大大增加,并且将会明显丰富PHP的设计模式(目前PHP可用于实践的设计模式还是很有限的)。
PHP对命名空间的引入在过去的一两周引起较大的讨论。我个人认为命名空间的引入是无需有太多争议的。PHP超强的编程灵活性并不意味着命名空间是可有可无的。没有命名空间,PHP将始终被Java、 .NET开发者们视为小打小敲型的工具而已,难登大雅之堂;没有命名空间,PHP离企业级开发始终有那么一些距离,始终还只是更像是一把瑞士军刀,而不具有航空母舰的气质。
== 结尾 ==
以上三点重要进步为PHP未来进一步扩大应用范围提供了重要的技术保障,但是PHP在企业级开发中被更大范围地接受还是需要一定时间的。首先是因为PHP 5.3和PHP 6的推出及其稳定性依然有待时间考验,其次是在新的技术手段下依然需要一定时间进行技术积累。
如果互联网在未来2到3年还是如今天一般景气的话,那么PHP在未来三年后将应比现在更上一层楼。
[注1] 就国产中文PHP框架而言,有两款可能是最知名的:FleaPHP和ThinkPHP。可惜的是我并不研究或使用中文PHP框架,因此无法对其作出具体评价。
类别:
关于Serendipity网志系统的中文翻译
== 背景介绍 ==
在PHP编写的网志(blog,也常被称为博客)程序中,和WordPress比起来,Serendipity的名气要小一些(可能甚至小很多)。但是,在技术等方面,Serendipity是公认的最出色的网志程序。这体现在多个方面。就我自己使用过程中所涉及到的而言,Serendipity在国际化支持、反垃圾回复(评论)、插件(plugin)开发和部署等方面非常出色。具体的可参考我前两年写的一些相关文字。
但是Serendipity的中文化进程却一直不尽如人意:其中文语言包长期处于残缺不全的状态、部分(重要)条目的翻译存在谬误之处、其中文有关设置缺乏中文特色等等。
在今年7月初,Serendipity的负责人给我发了一条消息,希望我能对一份他人最新提供的中文语言包提些看法。我在8月中下旬大体检查了一遍该中文语言包的翻译,觉得这份中文语言包虽然翻译得不容易,但不宜采用。在表达了自己的看法的同时,我也向该负责人承诺未来我会尽量提供一份中文语言包。
我之所以答应提供这么一份语言包,一是因为我自己的网志需要它,但更主要的原因是这么久以来居然没有人为这么一个出色的开源程序提供一份准确的、让开发者和使用者都放心的中文翻译,这让我感觉挺不舒服。
== 此份中文语言包的特点 ==
- 此中文语言包基于其英文语言包(因为英文语言包是Serendipity最全的、最官方的语言包)。所有在英文语言包中出现的条目都被翻译了,并且我也逐条检查并翻译了所有条目。
- 在这个语言包中,大约80%到90%以上的条目都被重新翻译过。中文语言包中的条目的相关描述可能比英文语言包更丰富、更易懂。
- 中文语言包的语言及区域设置更加具有中国特色。这大概体现在以下几点:
- 数字中间是没有逗号的。例如1000就是1000,而不是1,000。
- 尽量使用中国人习惯的日期格式。以前,默认情况下中文界面的日期格式是“星期三, 十一月 14. 2007”,而现在,我已将它改成“2007年11月14日, 星期三”。
- 补充了所见即所得(WYSISYG)编辑器的中文语言包。文章编辑时采用的所见即所得(WYSISYG)编辑器的提示信息(当鼠标移动到编辑器工具栏某一图标时会显示其提示信息)是英文的,现在已经改成中文提示了。
- 尽量追求翻译的精确化。当前部分条目的中文翻译不是最佳的,但其意思的准确性是相当高的。这里举几个例子。
- 在翻译blog一词的时候,几经斟酌后我决定优先使用“网志”一词而非“博客”一词。
- 这不仅仅是我个人的喜好,也是对中文语言的尊重。因为blog翻译成为中文的原意就应该是“网志”,“博客”这一翻译是blog一词音译的变体。“博客”这一翻译是以娱乐的方式在玩弄语言之间的翻译。娱乐是可以接受的,但现在的问题是整个社会的娱乐已经过头了。
- blog作为一个时代出现的一种现象,是不大可能长久的,因此“博客”一词迟早是要退出历史舞台的。200年以后,当提到网志的时候,我们的后辈可能还能从字面上知道网志大概是个什么玩意;但是提到“博客”的话,他们可能就不知所云了。
- 这年头,“博客”一词被各大所谓的最知名门户网站等搞得已经越来越缺乏足够的严肃性(这也是各大所谓的最知名门户网站最擅长的:尽其所能地糟蹋中文和中文词语)。“对艺人冠以老师的称谓”让人感觉庸俗,“说某人在写博客”也快让人有差不多的感受了。
- 在对plugin一词翻译的时候,我选择使用“插件”这一译法,而非“外挂”。
- 在对login一词翻译的时候,我选择使用“登录”这一译法,而非“登陆”。关于这一点我曾在网上做过简单的调研,觉得使用“登录”使更妥当的译法。
- 在对feature一词翻译的时候,我认可《Feature是"特性"吗?》一文的看法,将其翻译为“功能部件”。
- 经过斟酌我决定将permalink一词翻译为“永久链接”,而非“静态链接”或“固定链接”。
- 在选择使用“发布文章”还是“发表文章”的时候,我决定采用前者。因为使用网志系统而公布的文章并不一定是添加文章的人自己写的,不一定是其发表的,而只是其发布的而已。
- 在翻译blog一词的时候,几经斟酌后我决定优先使用“网志”一词而非“博客”一词。
== PHP(开源)项目的中文化和国际化问题 ==
我已经在这次翻译语言包的过程,整理了一份提纲草稿,未来可能就PHP(开源)项目的国际化方面阐述些个人看法:例如在语言文件命名的标准化方面、在自然语言的自动甄别方面、在多字节支持方面等(我在某张草稿纸上大概写了六点但现在只能记得这三点,也许是因为我能谈得比较好的也就是这三点)。这几个方面是好些开源项目的通病。Serendipity在大部分方面做得不错,但在个别方面依然存在不足,例如在语言文件命名的标准化方面(Serendipity的中文语言文件的命名是不标准的,不管是简体的还是繁体的)。
== 补充信息 ==
目前本站已经在使用这个中文语言包了。需要该中文语言包的用户可以
估计过2天Serendipity官方就会将这个中文语言包加入到其每日更新的Serendipity程序包之中。
虽然我已尽力而为,但此中文语言包不可能尽善尽美,同时也可能存在一些不足。如果你在使用该语言包的过程中发现翻译方面的错误等,请通过email、留言或网志回复等方式告诉我,我会尽快对其进行检测。如果你有意为Serendipity翻译其插件的中文语言包,我也乐意在自己有时间的情况下提供技术方面的协助。
[补充说明1] 原文中给出的中文语言包下载路径是错误的,目前已经作出修改。特此更正。2007-12-02 16:02:08
类别:
谈PHP——(2)其他方面
使用PHP者,大体有2类目的。一是当成饭碗,二是当成兴趣爱好。如果是拿PHP当饭碗,只能说PHP程序员可以拿到一份相对不错的薪水,但可能一般不会太高;如果是把PHP当成兴趣爱好,那又何必管拿钱多拿钱少呢?
我把PHP当成兴趣爱好之一,但同时它也是我目前的谋生工具。
PHP的前途,不暗淡,但也不超级阳光。短时期内,不会走下坡,也不大可能走上坡。就最近几年的趋势,PHP在全球编程语言中按流行程度比较处于第4、第5的位置(前三位依次是Java、C、C++,第四位是(Visual )Basic或PHP。详细排行信息参考此处)。
* PHP技术方面
技术这个问题涉及到太多方方面面的细节。我只提我比较关心的几点细节。我觉得一个PHP程序员需要在如下几点有一定或相当的了解。
以下描述主要针对PHP新手。
- HTTP协议
PHP主要还是用于基于HTTP协议的web编程。我一直都怀疑好些PHP程序员对于HTTP协议还不是很清晰。另外,PHP中session的具体工作机制最好理解清楚。
- LAMP
LAMP可以理解成Linux/Apache/MySQL/PHP组合的缩写。我个人倾向于使用Ubuntu + Apache2 + PHP5 + MySQL5。
使用PHP要和Linux/Apache结合起来。在Windows上跑商业PHP程序,那是在糟踏PHP。
推荐个人可使用如下两种Linux操作系统:Ubuntu或Gentoo。
- Web service
我上个星期从UNLV大学图书馆借了一本书《Professional PHP Web Services》,还没看,但翻了一下目录,感觉值得翻一翻。我想应该可以从网上找到这本书的电子版。可以认为所有web/PHP相关的技术都不高深,web service也不例外。
- 正则表达式
一句话:学好正则表达式很重要。我觉得正则表达式是编程思想的重要组成部分之一。
- MySQL
使用PHP要和MySQL结合起来。也许你不一定需要买一本关于PHP编程的书,但最好买一本关于MySQL使用的书,并且好好读读。
- JavaScript及Ajax
虽然我不想提JavaScript(因为它毕竟只是客户端脚本程序),但作为一个web程序员,懂JavaScript是必须的。不过JavaScript精通起来不大容易。
至于Ajax,虽然看上去时髦,但其实也没有那么复杂。Ajax引擎我个人推荐使用Dojo(关于这一点我是经过仔细斟酌的)。
* PHP资源
我自己一般主要访问如下5个PHP相关资源网站。
- php.net英文版文档
英文版PHP文档是最好的PHP教程和资源库。
- PEAR
PEAR,经典PHP类库。很值得参考。
- phpclasses.org
此处有大量的PHP函数库。非常推荐下载、浏览此处的源代码。
我个人不提倡使用中国程序员写的代码,尤其是各种“站长网站”提供的各种代码。原因在于其中很多个人写的代码编程习惯较差或技术含量太低。使用中国程序员的代码大部分时候无益于提高自己的编程修养。
- SourceForge.net
经典开源项目网站,拥有众多最著名的PHP开源项目。
- google
任何时候把google列为“推荐网站”之一都是明智的举措。另外也可参考一个源代码搜索引擎koders.com。
我个人不常访问其他关于PHP的资源。
* 关于PHP和其他程序语言的比较
个人觉得PHP没有必要非要和其他编程语言作比较。文人相轻不是一种好习惯。
* 其他个人看法
- 大公司、小公司
如果个人意愿在于提高自己的技术,我倒建议不要在只有个别开发人员的小公司工作,其主要原因在于小公司缺乏足够的技术交流机会。在稍微大点的开发团队里面,由于开发人员较多,可以从不同的开发人员身上学到不同的知识,有利于提升自己的技术眼光和能力。
- 关于阅读技术类网志(博客)
我自己不订阅任何讨论技术细节的网志。我觉得订阅那些成天公开讨论、记录技术细节的网志是一件无聊的事情。我觉得如果一个网志津津乐道于讨论技术细节,那就不是网志,那纯粹只是一个个人学习笔记本。这类网志的回忆价值、历史价值随着时间的流逝将逐步消失。所以,像blog.csdn.net这种(含有浮躁的)技术类博客群我几乎不访问。
类别:
谈PHP——(1)人文方面
* PHP是编程语言中的令狐冲
PHP功能强大、可用于多个方面、程序写法自由飘逸。
功能强大,是指PHP拥有超多内置函数和扩展函数(通过安装像GD库这样的扩展来扩充函数数量)。
可用于多个方面,是指作为web编程语言,PHP可以作为CGI脚本语言(类似C、perl等)或动态服务器端脚本语言(类似ASP、JSP等)。另外,PHP还可以像bash等一样作shell脚本语言用。PHP还可以用于图形应用(这方面我从来没测试过)。
程序写法自由飘逸,是指PHP兼容多种其他语言的编程习惯和书写方式,例如,PHP有多种注释代码的手段(但和ASP、Visual Basic等代码注释方式有差异)。另外,PHP既具有(较)全面的面向对象编程语言(例如Java)的特点,又可以按照传统的过程式语言(procedural programming languages,例如C)的方式来书写。
就拿数组处理举例。和绝大多数编程语言相比,PHP也许拥有最丰富的数组处理函数。浏览一遍这些数组函数,你就发现PHP的数组处理函数简直就是程序员手中的瑞士军刀,尤其是把这些数组函数和其他一些PHP函数(例如create_function函数等)结合起来使用的时候。细节我就不举例了。
因为PHP程序写法高度兼容其他语言(主要指Java、C等)的编程习惯,因此使得其他语言的程序员学习PHP的门槛大大降低。
另外,PHP是老少咸宜的一种编程语言:新手可以很快上手,但老手可以写得更飘逸。
* PHP程序员的基本修养
此处套用周星驰的《演员的基本修养》名字,觉得比较有趣而已。
也许还有很多其他关于编程修养、技术修养的要求,我只谈我最关心的几点。
英语
如果只谈PHP的话,那么我们就要鼓励崇洋媚外,坚持学习英语、使用英语。
我可以武断地下一个结论:一个不懂英文的程序员不是一个好程序员,一个不学好英文的程序员不是最好的程序员之一。这个论断至少对PHP程序员适用。
当然,学好英文不容易。对于一个程序员而言,听说读写这四项,只要能读就行了,而且只要能读懂技术文章就行了,别的三个方面可以暂时忽略。
尽信书则不如无书
在书店买或者翻阅好些技术书是一个好习惯,但要记住的两点是:1. 你没有那么多的时间去认真读那么多的书;2. 大部分技术书的大部分内容都是废话。
要逐步养成简洁的编程习惯
我有个大学校友(相关网站),做形象设计的。他强调要做“简洁的”整体品牌形象设计。这个观点我觉得很好。
我觉得,简洁(清晰)就是力量。在开发中,卖弄编程技巧没有太多意义。越简洁的产品,才是越是体现编程技巧的产品。这方面最典型的例子之一就是google的众多web产品了。
举个简单的例子,在PHP中把一个全部由字符串组成的数组给大写化了。至少可以有2种写法:
foreach ($arr as $key => $val) { $arr[$key] = strtoupper($val); }
array_walk($arr, create_function('&$val', '$val = strtoupper($val);'));
我认为从思路上来讲,后者比前者简洁,应该是更好的一种书写习惯。
效率问题
要养成不写垃圾程序的习惯。我觉得任何时候都要注意效率问题,这是程序员的素质要求,是一种习惯、一种修养。
PHP可以说非常强大,例如在文件读写方面,有多种文件读写手段,使用起来可谓超级方便。但越方便的时候越容易被滥用,也出现问题。
举例而言,就下面这2种文件写入的写法(实现了同样的目的)而言,
for (...;...;...) { file_put_contents($filename, $data); }
for (...;...;...) { $data .= $str; }
file_put_contents($filename, $data);
我觉得后者明显比前者更友好些,因为后者明显减少了文件(或文件流)读写次数(也就减少了硬盘读写次数)。
[补充说明1] 本文举的例子不是最佳例子。
类别:
增加tracker URL以提高BT下载速度
提高BT下载速度的方式有很多,例如增加操作系统和BT客户端软件的并发网络连接数量等等。但是,在BT源(BT种子和BT当前下载者)有限的情况下,再怎么提高“并发网络连接数量”也于事无补的。如果能够有效地提高BT源的数量,则可以使得BT下载更高速、更可靠地完成。
两个BT用户之间建立初始连接时是靠“tracker服务器”上面的“tracker URL”进行的。“tracker服务器”决定了BT下载者能够和哪些别的BT源建立联系、并从这些BT源进行下载。
一般来讲,一个BT种子文件往往只和某一个BT网站的“tracker服务器”关联起来,也就是说,该BT种子文件内置只有一个“tracker URL”。但事实上,同一个BT种子文件可能在多个网站被重复发布了,区别仅仅在于其内置的“tracker URL”不同。
因此,当我们下载(大的)BT文件的时候,如果在其BT种子文件中多加几条“tracker URL”,则极可能可以增加BT源数量、提高下载速度(毕竟有很多好事者喜欢转载种子)。
BT下载软件Azureus中可以对BT种子添加多条“tracker URL”。
我自己基本上只使用国外的BT站点。在下载大文件、并且下载速度慢的情况下,我会考虑增加如下几个“tracker URL”到BT种子里面以增加BT下载源和BT下载速度:
http://inferno.demonoid.com:3395/announce
http://tpb.tracker.thepiratebay.org/announce
http://daffodil.ath.cx:2007/announce
http://inferno.demonoid.com:3396/announce
http://tracker.prq.to/announce
本文所述方法我今天简单测试过,结果证明对于通过BT下载那些BT源少的大文件是明显有效的。当然,这个方法不能保证每次100%有效的。
我曾写过一篇文字《从BT技术看魔道之争》,其中简略提到如何在内部BT站点提高个人的BT共享率。那篇文章所使用的技术思路和本文所使用的技术思路极其相似。
类别:
从VoIP新进展谈起
最近几年来VoIP一直是互联网领域一个比较热门的话题。今年以来,国外VoIP市场(主要指美国)的VoIP应用五花八门、层出不穷。这方面例子很多,我很难举全,也不愿浪费很多时间去搜集资料。大体讲几个:提供传统电话互通服务的Jajah、提供手机语音留言服务的Pinger、能通过手机直接给Skype用户打电话的TalkPlus、一个号码分流不同电话的GrandCentral、加上众多的VoIP通话服务商……
老美确实厉害,一个技术发展点往往就能产生五花八门的应用,就能造就众多新兴公司,就能造就新的行业。这些VoIP应用涵盖了VoIP、手机通讯等的方方面面,可以讲,很多我们头脑中偶尔想到的某些VoIP现实需求都有相应的服务商在研究、在做。当然,这些服务商所提供的服务好些目前不适合我,但是其所体现出来的思路之广有时候都把我看傻了:这些老外真是什么都能想、什么都能做啊!
去年第二次网络热潮(web 2.0)的时候,国内有很多模仿国外web 2.0的网站冒出来,很是热闹了一番,为此有些国人还自我感觉挺得意:你老外能够搞web 2.0,我们中国人也可以在中国市场搞web 2.0,咱与世界同步接轨……
这次,VoIP应用在海外热起来的时候,中国IT技术人员、IT市场人员却傻眼了:只有傻看的份,连体验的机会往往都没有,更别说复制、模仿了。
无法复制和模仿,技术实力方面是一个因素,但主要因素还是政策方面和自身的创新能力不足。政策就不谈了,咱没权干预,就说创新能力吧。中国人模仿的能力很强,但创新能力不足,导致每次往往只能跟在人家屁股后面走。这次更离谱,连模仿VoIP应用的先天环境(政策)都没有,于是大伙就只能傻看老外在VoIP应用这方面的表演了。
看了老外的这些VoIP应用后,我的结论就是:中国缺乏足够好的信息技术发展所需要的土壤,目前还看不到中国信息技术未来发展有能够被世界值得一提的希望。
顺便说一下最近看到的两条让我有点耿耿于怀的、比较耻辱的技术新闻。一是11月30日的新闻《中国已经制定3项互联网国际标准》,二是12月04日的新闻《中国研制成功银河麒麟操作系统 已用于国防》。前者往自己脸上贴金,制定的所谓国际标准重要性相对来讲太低,不值一提;后者则纯粹是公然剽窃老外的技术、丢国家科研能力的脸。国防科技大学搞计算机的不能无耻到这个地步。
类别:
网站建设的可持续发展 (1)
那时候,有一件特别让我感到愤懑的事情是:在北京东直门附近,一栋建了才15年的20层居民楼因为轻轨列车项目的需要而要炸掉!我们的主流媒体在报道这件事情的时候,提的往往多是“中国高层居民楼第一爆工程”这一荣耀头衔,而不去追究、不去探讨这种建设浪费现象产生的原因、责任。我当时心想,20层的大楼,放在别的很多城市怎么着也是一栋比较重要的、花了不少钱的楼,怎么能这么说炸就炸呢?这样严重的资金浪费的事情难道不该追究责任人的责任吗?难道就任由某些不负责任的指令和规划的实施而浪费纳税人的钱吗??
不在规划和设计上更好地注意未来发展的需要、不注意节约是中国城市建设的重要毛病之一。这些城市建设、城市规划中的短视行为在中国大地上到处都可以看到,所造成的浪费很让人痛心。
有些人说西方国家富裕、有钱,但事实并不一定完全是这样。三年多前,我刚来加拿大的第二天,我在多伦多的朋友就跟我说:其实加拿大穷人比较多,但这个国家是怎么就看上去富裕呢?因为他们节省、廉洁!
的确如此,加拿大人一个房子、一个项目完工后,用上几十年一般是毫无问题的。我所在的城市很多房子、很多基础设施都是几十年前的,到现在依然能正常地被使用着。离我住所不远处的大使桥(见右图),完工于1929年,是北美贸易量最繁忙的国际通道:“超过25%的美加贸易是通过这座大桥传送的”1。到现在,77年过去了,这座大桥目前依然运作正常,没有要退役的迹象。
我在媒体上经常看到,加拿大开工一个项目之初,项目论证、项目预算都是做得非常清楚、详细的。如果项目不合理、或者项目实施时多花纳税人的钱,很容易引起民众和反对派的质疑。在这样一种情形下,大多数建造的项目都不会出现(过度)资金浪费的行为,也经得起时间和历史的考验。
富裕,很重要的一点来源于节省。我们在羡慕老外富裕的时候,也应该学习老外节约的精神:不浪费不必要的钱,做好前期准备、论证、设计工作。
回过头来再看看国内,那些我们曾经引以为荣的好些项目,一再地被历史证实为是政绩工程、是垃圾、甚至是祸害!例如葛洲坝。那么,我们现在引以为荣的那些在建、已建项目:三峡、国家大剧院、高速铁路等……是否能够经得起历史的考验?
当然,本文主要讨论的并不是这些问题。上述话题只是我在写下面一段文字时候顺便想到的问题,于是就顺手写下来了。有时痛心也是无益,只好管好自己和身边的事情就行了。
下面开始正题:“网站建设的可持续发展 (2)”。
[注1] 此数据出自维基百科相关说明。
[补充说明1] 本文及其后续文字初稿于2006-06-15 11:57:17左右。