PHP

一道关于PHP的代码题

我们公司招聘PHP开发人员的时候,电话面试之前会有一个笔试。也就是说,给应聘者几道PHP语言和MySQL数据库开发方面相关的问题,再给他一个晚上的时间来回答这些问题;第二天早上之前应聘者需将答案通过电子邮件发回来,随后公司的核心开发人员会根据其回答问题的情况来决定是否需要进行下一阶段的面试(电话面试或当面面试)。

设计比较好一点的技术方面的问题是比较困难的,因此公司常常也会让新来的开发人员设计几道问题以供参考。

2007年12月4日(周二),我在编写程序生成两份数据报告的时候,根据程序调试过程中出现的问题总结了如下一道问题。这个问题着重考察对PHP中变量引用(variable reference,相当于C里面的指针)、数组遍历这两方面的掌握,需要对相关知识有清晰的理解才能回答准确。这类问题并不一定适合在面试的时候用,不过,用这个问题来温习一下PHP中的一些技术要点还是有些意思的,因此我一直把这个问题收录着。

<?php
$data = array('a', 'b', 'c');

foreach ($data as $key => $val) {
    $val = &$data[$key];
}
?>


问题1: 程序执行时,每一次循环结束后变量$data的值是什么?请解释。
问题2: 程序执行完以后,变量$data的值是什么?请解释。

补充说明:本文草稿完成于2008-10-21。

标签:

类别:

浅谈Magento

最近一个月开始深入研究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框架而言,有两款可能是最知名的:FleaPHPThinkPHP。可惜的是我并不研究或使用中文PHP框架,因此无法对其作出具体评价。

标签:

类别:

谈PHP——(2)其他方面

* PHP的前途

使用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] 本文举的例子不是最佳例子。

标签:

类别:

2006年第45周杂事

2006-11-01 (周三)

曾说过,写本书是我的未来理想之一;我也曾说过,2007年我的计划之一就是写本自娱自乐的书。

这天晚上,首次安装CTeX,一个关于文字排版工具LaTeX的中文套装软件,并初步开始写书的草稿。书名还没想好,章节还未划分清楚,也还没想好找谁作序……简而言之:一切还未正式开始。

在此之前的一个星期,顾东东同学有意邀我参与写一本书中的一小部分。我对他说,“我把写书看成一个严肃的事情”。我也是这么着看待我未来将出炉的这本书的,虽然只是玩玩而已。我有句个人口号常挂在心里,就是“做最专业的菜鸟”。我对很多事情感兴趣,不可能每样都做得很好。但只要我用心去做,在我能力、精力范围之内,我就要尽量做得比一般人更专业、更好。

至少,我要能感受到在这个过程中(学习)的乐趣所在。

2006-11-02 (周四)

有些无聊,于是,下午买了一箱啤酒。结果一天半的时间里喝了10余瓶。

于是再次感觉自己很没品位。

关于品位这个话题,等以后我有品位了再详细讨论。

2006-11-03 (周五)

虽然在此之前的几天初次阅读了CakePHP的在线手册,但直到这天晚上才下载、安装、测试CakePHP。按照在线手册的说明,建了一个简单的网志(blog)程序来尝试CakePHP的一些特性。随后第二天(周六)中午又看了几部CakePHP的视频教程。

去年,在谈到Ruby on Rails的时候,我曾经用“震撼”一词来形容该技术给我的冲击力。现在,我想再次用“震撼”一词来形容CakePHP给我的感受。

除了在语言编码方面还有明显需要改进的地方外,CakePHP正是我目前想要的那种东西。

类别:

PHP框架(framework)大观

我在TOM工作期间,曾考虑编制一个PHP框架,用于提高PHP开发效率。后来去掌通公司工作后,这个思路得以初步实现,并具体地运用在“NEC Dream”这个手机服务网站中。

随后,我便长时间地脱离PHP代码编写第一线。在随后的日子里,我有时像个品酒师,评测别人写的程序;有时候则像个小学生,从别人的程序中学习新方法、新思路、新观点。

最近,我打算动手用PHP做些东西,需要有一套省心的PHP框架。

显然,我不打算从头开始写起,写一套自己的PHP框架;我也不打算借用自己过去的一些程序,因为那些程序现在看来有各种不足。

因此,我打算找一个开源的PHP框架,或者借鉴某一成功PHP程序的框架,在此基础上开发自己需要的PHP系统。

照套某一成功PHP程序(例如Serendipity等)的框架是比较困难的。因为这些PHP程序的需求都是非常特定的,其框架欠缺足够的灵活性,不一定适合我的需要。

因此,比较可行的方法还是找一个现成的PHP框架。

这个PHP框架至少需要有如下几个鲜明特点:性能出色、使用模版引擎、支持Ajax、架构清晰、使用简单、较为完美的多编码支持等等。

我曾在《"Ruby on Rails"技术观后感 (2)》一文中列出了去年5个主要的"PHP on Rails"技术。1年后再看看文中提到的这几个PHP框架,Biscuit、TaniPHP的开发目前似乎陷于停滞状态,似乎只有PHP on TRAX、CakePHP、Symfony这三个还可以考虑。其中,CakePHP、Symfony受到的追捧明显高于别的框架。在明年第一季度,将各有一本分别针对这2个PHP框架的书出版。1

到底哪一个PHP框架对我最合适呢?

2006年3月,Dennis Pallett写了一篇文字《Taking a look at ten different PHP frameworks》(瞅瞅10个不同的PHP框架)。文中对10个PHP框架作了比较,并附了图表分析和个人评价,有相当的参考价值。Dennis认为,CakePHP没有明显的缺点;Symfony融合了好些别的开源项目,功能强大,但好些任务(例如分页)处理起来比较复杂;Seagull是另外一个功能强大的PHP框架,但欠缺官方的Ajax支持……

Fabien Potencier是CakePHP的爱好者。2006年5月,他写了一篇文字《Rails-inspired PHP frameworks》(源于Rails的PHP框架),对主流的一些“PHP on Rails”框架作了比较,并对每个框架都有他个人的点评,同样具有相当的参考价值。在他看来,CakePHP虽然没有官方的国际化支持,也没有发挥PHP5的全部潜力,但相当简单易用;Symfony功能过于强大,而且结构过于复杂;PHP on Trax特点不鲜明,基本上只是照本宣科复制Ruby on Rails的概念而已……

CodeScripts网站的“PHP Framework”网页提供了对各种PHP框架的打分。从中可以看出,CakePHP和Symfony分别得到6.6和6.5的高分,而且二者受到众多读者的关注,分别有172和103个读者对其打分。2

最终,我认为:CakePHP最符合我的需要。需要提醒的一点是:符合我目前胃口的东东不一定适合你。

[注1] 具体出版信息可从Amazon.com上查到。

[注2] 此处打分统计时间截止于2006-10-30 18:14:25。

标签:

类别:

PHP创始人所欣赏的7套PHP产品

FLOSS Weekly是一个创办于今年4月的播客节目,每周播出。其主要内容是和一些媒介产品创始人、创造者(尤其是来自开源社区的人们)讨论媒介最新进展和趋势。

Rasmus Lerdorf是PHP语言的创始人。在2000年以前,他有相当部分的时间都在加拿大多伦多地区学习、工作。上周五他应邀参与了该节目。在节目中,他提到了他所欣赏的7套与PHP相关的产品。作为PHP语言的创始人,他对PHP产品的讨论自然应该受到重视:
  • Moodle: 一套面向教育界的课程管理系统。我没研究过,只是在昨天提到Packt出版社今年出版了一本关于Moodle使用方面的书籍。

  • Sahana(萨哈拉):一套灾难管理系统。这是一项曾获人道主义奖项、并获得过SourceForge“本月之星”(Project of the Month,此处意译)称号、相当受关注的产品,但我没关注过。

  • Gallery:一套照片库系统。本站使用了这套系统作为本站的照片库程序。我目前对这套产品唯一明显不满的地方在于:它的某些功能过于强大了,另外,语言编码支持方面仍有潜在的bug。

  • Serendipity:一套网志系统。本站使用了这套系统作为本站的网志程序。我目前对这套产品的使用手感是:非常满意。

  • Drupal:一套内容管理系统。我没仔细研究过。Apress出版社去年底出版过一本书《Building Online Communities With Drupal phpBB and WordPress》(使用Drupal、phpBB和WordPress搭建在线社区),Packt出版社今年4月份也出了一本关于Drupal的书,由此可见,这套内容管理系统还是有明显可取之处的,虽然不一定尽善尽美。

  • Fudforum:一套论坛系统。我没研究过。我一直对phpBB 3的开发进度感到失望,好在前天phpBB 3.0 Beta 2已经发布了,离phpBB 3正式发布的日期终于不远了(只是不知道其中文汉化部分是否已经有人做了)。

  • APC:一个关于缓存的PHP扩展。我没研究过。memcache是另外一个关于缓存的PHP扩展。

[补充说明1] 本文信息源从阅读昨天Garvin写的网志“Rasmus Lerdorf loves Serendipity”得到。

标签:

类别:

从播客等技术谈起

说过,“所谓播客(podcast),简单的理解就是用语音、视频的方式(和朋友)分享自己的感受、体会等,就像广播一样”。该解释也许过于简单了,那么你可以读读“Podcasting--播客,你玩了么?”这篇文章,以获取对“播客”这个概念更好的理解。总之,播客概念是web 2.0概念中的一个重要的具体应用。

本文并不在于要明晰某些网络新概念,而是试图探讨这些概念所依赖的技术基础,以及相关的一些思考。

一、基于PHP的播客程序

sf.net网站上,可以发现有好几个PHP写的播客程序,其中以下3个相对好一点点。

1. podadmin-0.3.1.tgz
这套程序很简单,其中用了个第三方函数库getid3用以从mp3文件中提取相关的媒体信息。

2. phppodcaster-0.6.tar.gz
这套程序需要PEAL的相关支持,也很简单。

3. parchive_1.0.1.tar.gz
这套程序稍微复杂一点点,但看上去文件组织凌乱,让人感觉不舒服。

总体而言,这些程序没有什么特别的技术含量,设计等方面明显有待提高。因此,不推荐优先考虑使用这几个程序。

二、和web 2.0相关的一些web技术

和web 2.0相关的一些web技术主要有如下几个:SOAP、XML(含RSS、OWL等)、Ajax等。

SOAP和XML的技术在所谓的web 1.0的时代就已经成熟了,只是当时并没有像现在这样广泛地在web上使用,因为当时没有很大的这类需求。这里面,只有Ajax是比较新的一个技术。

因此,在我看来,web 2.0所讨论的变革应该主要是思想上、观念上的变革,而不是技术上的变革。

三、web2.0关程序员什么事?

某君曾在“web2.0关程序员什么事?”一文1中说,“不久前,当我试图说服一 位Web程序员深入研究 Web2.0时,失败了。失败的原因在于对方认为Web2.0是一个被人为炒起来的虚幻名词。这并非少数人的想法。很多程序员认为,他们需要的是实在的利益和做法,只有具体的技术才能引起足够的兴趣并深入钻研,而像Web2.0这样的思想没有必要去深入了解。

我认为上文中“web2.0带给程序员的机遇和挑战”一节是纸上谈兵。2让程序员(从技术的角度)去深入研究web2.0,搞笑!

这里,我只想重复一下该文作者的标题:web2.0关程序员什么事?

[注1] 此文太长,因此Deminy没有细读。Deminy目前不赞同该文作者观点。

[注2] 技术不是想象的那么简单的。Ruby on Rails等技术的出现虽然能够加快相关的开发步伐,但并不代表有了想法就能很快用相应的技术去实现。Ruby on Rails是重大变革,但并不意味着技术从此变得简单易用了。Ruby on Rails是web技术重要组成部分之一,但不是web技术的全部。以为以Ruby on Rails为代表的快速开发技术能够释放技术人员在项目开发中的思维,让他们更多地去思考业务,这是一种妄想。

[补充说明3] 本文初稿于2006-03-26 22:31。

类别:

杂谈书籍

上上个星期五1跟导师见过面后,去学校图书馆逛了一圈,借了大概6本技术方面的新书回来,不过还没怎么翻翻。

今天2下午又去图书馆逛了逛,比较幸运的是:发现有2、3本前2个星期还没有进入流通环节的技术方面的新书已经可以借了。于是马上出手,又借了5本书回来。

这5本书都是O'Reilly出版的。在我看来,O'Reilly是计算机应用领域书籍出版的权威(俗称“大拿”)。O'Reilly好像极少出理论研究性质的技术书籍(至少我很少看到),但却热衷发行跟踪最新技术应用的书籍。大体上来讲,一个普通计算机技术人员在公司工作所需要运用到的技术,都能够从O'Reilly找到对应的书籍。我觉得O'Reilly的市场突破点选择得比较好:理论书籍销量差,而热门应用技术书籍的销量要好很多,所以O'Reilly就卖应用技术书籍。

如果光靠选题(选择热门的、流行的应用技术),还不足以让O'Reilly成为IT技术书籍出版方面的权威。实际上,O'Reilly出版的每一本技术书籍都在相应的领域具有相当的可读性、实用性、甚至权威性。简而言之,就是O'Reilly的技术书籍质量的确(很)高。

言归正传,回过头来说说我借的这几本书。《Regular Expression》(正则表达式)、《Java and SOAP》这两本书没什么特别的好说的,老技术、老书,拿来翻翻而已;《Learning PHP 5》也没什么好说的,我对PHP 5有过相应的个人思考,借这本书也就是拿来细化一下有关概念和具体应用。这里主要说说另外2本。

《Podcasting Hacks》(深入播客)这本书写得太厚了,所以也就没细看了,当作课后读物吧。从我的理解来看,从技术的角度而言,播客技术没什么新鲜的地方:信息发布、传播使用XML/RSS等;媒体文件使用MP3、RM等;(流媒体)服务器技术也普及了好几年了。可见,播客所需要的所有具体技术都是成熟的、过去的技术。因此,播客概念是个噱头,新瓶装旧酒而已。

《Essential PHP Security》(PHP安全要点)是一本很新的书,去年10月份出版的。去年春天我写过一篇文字“写一本梦想中的书”,其中提到曾因为PHP安全技术的学习而激发自己想写书的欲望。现在,有人已经写了这么一本专门谈PHP安全的书了。这本书很薄,谈论的细节话题比较广,但没有特别高的技术难度,只适合当床头读物翻翻。PHP是一个非常好的编程语言工具,但却是个大俗的工具,因此也许关于PHP的书籍的确无法写得很经典。这本书虽然不可能经典,但还是比较实用的。

[注1] 指3月17日。

[注2] 指3月26日。

[补充说明3] 本文初稿于2006-03-26 23:10:05。

类别:

页面