一道关于PHP的代码题2008年11月03日, 星期一
我们公司招聘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。 未曾真正拥有过的权利——选举权2008年10月04日, 星期六
== 事情前后 ==
周三(10月1日)晚上,用电脑整理个人资料。按照以前自己拟定的修改加拿大住址的细则在修改住址的时候,看到加拿大选举的网站,于是想起来马上加拿大要换届选举了。本来投票选举国家领导人对我而言是无所谓轻重缓急的,何况我不在加拿大已经快2年了,但是转而一想:作为一名新的加拿大公民,在好些方面表现好一点对未来也许会更有利(例如以后办理亲属团聚移民等);而且,本来就对加拿大颇有感情的我也想做个模范公民。于是乎,我填了一份海外公民申请在大选中投票的表格,并很积极地请在多伦多的同学帮忙将申请表格传真到政府相关部门。 第二天(周四)中午乘公司午餐时间去办汽车保险。办完后回公司的路上,在手机上看到一个来自加拿大首都渥太华的未接电话(之所以我一看到613的区号就知道是渥太华打来的的,是因为我有个很熟悉的高中师弟在渥太华生活)。我以为是高中师弟打来的,所以并未在意(当然,如果是师弟打来的话,我当然希望他能有些好的消息和我分享)。下午上班的时候,我拿出电话来看看,才注意到还有一个语音留言。听了那个语音留言后,我才明白原来中午那个未接电话是加拿大政府机构工作人员从首都渥太华打来的。工作人员在留言中告诉我说收到了我注册参加选举的申请,但还需要我提交护照等文件。 我的好些个人证件、重要收据等都已经扫描成PDF文档,以备不时之需。晚上回家后,把加拿大护照、公民证等合并成PDF文档,通过FaxZero网站把这些文档传真到加拿大政府机构。 当天夜里入睡前,想起加拿大政府工作人员给我打电话这一事情,不由得回想起来我在大陆国内的那些岁月。想起来20世纪末、21世纪初的时候,不论是我在成都工作、还是在北京工作的时候,不论我的工作表面上看上去怎么光鲜,我还是得乖乖地去有关政府部门申请一份暂住证,还是得低三下四地被相关部门在暂住证上写下一些自己觉得郁闷的文字,甚至我在成都的暂住证还要在同学的母亲帮忙下才得以顺利办成。于是,入睡前的我脑海中浮现出来一句话:未曾真正拥有过的权利!我感觉到我的某些权利受到了尊重,为此,我感谢加拿大。 第三天(周五)中午的时候,又接到来自渥太华的电话。原来是加拿大政府机构的工作人员没有注意到我前一天晚上补发的身份证明材料,于是又打过来就此事和我联系。我告诉她我前一天晚上已经把身份证明文件传真过去了。工作人员说她才注意到电脑系统里面有新的更新信息,如果还有问题的话,她会回头再和我联系。 == 感想 == 有些权利(不是权力)我父母未曾真正拥有过,我也未曾真正拥有过。现在,我拥有了点原本属于我的权利。也许这权利还是虚无缥缈、还是微不足道,但至少,加拿大政府至少在表面上认真对待我的申请、并尊重我作为这个国家一分子的基本权利。 == 补充说明1 == 我并非完全谴责国内某些现状。我从小到现在,包括以后相当一段时间内,都始终如一地支持中共对中国的绝对领导地位(国情使然),并始终认为中共的领导是最符合中国国情、最符合中国需要、最能保证中国稳定发展的。但是,在这种国情下,个体的权利在国内常常得不到应有的尊重。 == 补充说明2:关于在北美免费收发传真 == 在北美(指美国和加拿大),如果需要传真收发服务的话,在对传真服务要求有限的情况下,可通过eFax提供的免费传真接收号码收传真,通过FaxZero提供的免费传真发送服务发传真。 如果需要测试的话,可以在eFax注册一个传真号码,然后通过FaxZero给自己在eFax的号码发一个传真。关于网络传真,还可参阅我的文字《Skype和网络传真》。 不知所云 (1)2008年07月24日, 星期四
== 前言 ==
大概两年前我曾在jiaoyou8网站(北美的一个华人交友、征婚网站)上看到一个女孩说过这么一句话(可能是在她的自我介绍上看到的)。她说(大意):“如果男方还是留学生的话,她可以不在乎他的经济情况;但是如果男方已经35岁了却还没房没车的话(deminy注:这里所说的有房有车是指在美国的生活),她就要问:这些年你都在干嘛了?”我觉得这个女孩对男方所说的要求是颇为合理的。 == 乱谈 == 最近两三年我都把gmail作为自己主要的email账号,很多个人事务(包括日程提醒等)都是通过gmail来提醒、管理和处理的。我的gmail邮箱中,已经处理完毕的email我都会从“收件夹”中移出放到其他文件夹中。因此,我的gmail邮箱里面“收件夹”中的邮件数量往往代表当前我的生活状态。 2007年的绝大部分时间里我都能把gmail“收件夹”中的邮件数量保持在个位数以内,也就是说,当时我都能够比较及时地处理掉生活中遇到的事情,个人时间还相对比较宽裕。在2008年上半年,曾有一次“收件夹”中的邮件数量逼近100份,随后被我快刀斩乱麻清理到只剩40余封email。但不久之后,我的gmail邮箱“收件夹”中的邮件数量又开始不断增加,目前已经达到了138份。我暂时还没有准备清理这些邮件的打算。 这些未清理的邮件(或者说未处理的邮件)表明我目前有好些计划中的事情没有能按照预定计划处理完毕。比如说,很多银行的电子帐单没有按时从网上下载并归类存档(我在北美的银行和信用卡帐单都有电子存档)、个人百科中的有关文字没有及时更新(我个人2008年的年鉴已经好久没更新了)、有些计划中的网志文字没有按计划编写(例如我曾计划每隔几年就回答一次的《我的普鲁斯特问卷》就还没有按照计划写今年的答案)、应该给国内个别亲友拨打的电话没有按时拨打等等…… 目前,我个人平时工作比较忙,而且我现在在尽量集中工作之余的精力起步开始建立自己的在线电子业务。建立自己的在线电子业务是我在美国生活、工作一年多之后对自己以后所作出的发展计划。因此,目前我没有很多时间顾及自己的网上生活,而且,我把生活中的一些其他计划给推迟了,例如考MySQL的工程师证书、例如重新找份工作和搬到加州等等。 == 总结 == 在美国一年多的生活和工作中,我有很多很多感想(但没时间写下来),也对个人的发展有一些明确的认识,而我现在就在想尽量把自己的一些想法付诸实践。简而言之,就是很多问题要靠经济能力说话。生活让我得出的结论之一就是:现在要努力挣钱,以后再享受生活。 当然,除了挣钱,以后我想做的事情(包括有意义的事情)还很多很多很多很多,一辈子都忙不完。估计我这辈子最不缺的就是有事做。 == 尾巴 == 最近写了几次网志草稿,现在发现自己文字越写越差了,写写就半途而废了。以后要坚持写完。哪怕写的是涂鸦,那也至少是自己真实想的。 浅谈Magento2008年07月05日, 星期六
最近一个月开始深入研究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这套框架比较了解。对于程序员而言,这不是一个入门级的开源产品可以随便轻易上手的。 其他的就不深入展开了,太花时间。谢绝讨论细节,抱歉。 南京师大附中95届高三(2)班北美同学2008聚会方案2008年02月24日, 星期日
南京师大附中95届高三(2)班北美同学2008聚会方案 最后修订日期:2008年2月24日 一、前言 二、聚会地点 三、聚会时间和内容 四、聚会人员 · 陈某某(上海。来美国休假) · 冯某(北卡) · 高某(北卡) · 汪某某(迈阿密,佛罗里达) · 王某某(多伦多,安大略,加拿大) · 许某某(新泽西) · 叶某(圣迭戈,加州) · 殷德敏(拉斯维加斯,内华达) · 朱某某(俄亥俄) · 朱某(新泽西)
五、费用 六、其他事项 关于电影《上甘岭》2008年01月31日, 星期四
《上甘岭》是上个世纪中国著名的战争影片。我对某些历史比较感兴趣,尤其是抗美援朝战争。在我看来,抗美援朝战争是中国军队第一次有信心、有决心、有能力正面对抗外族威胁、对抗世界最强大军事集团,洗血了百年外战耻辱。我曾读过作家周明写的纪实文学《上甘岭战役》不下10遍,我还读过不少其它关于上甘岭战役的文学作品,因此对于上甘岭战役的前因后果、过程进展等,还是比较熟悉的。
我觉得抗美援朝战争在心理上具有重大意义。其意义就像刘翔夺得奥运会直道比赛冠军、就像姚明在NBA成为巨星、就像罗纳尔多在对日本的比赛中独中两员、就像1994年阿根廷失去了马拉多纳。 昨晚在文学城看到一篇文章《红色音乐经典之<我的祖国>》(参考网址:1,2,3,4),文章介绍了影片《上甘岭》中的插曲《我的祖国》的词作者、著名词作家乔羽老师创作《我的祖国》歌词的经过。 《我的祖国》是一首非常动听、富有感情的歌曲,于是在读完该文后,我去百度下载了郭兰英原唱的《我的祖国》,反复听。并且,我还去eMule,下载电影《上甘岭》,想再看看。后来MSN上有亲戚告诉我,“……上线就看到了你在播的音乐~ 我在线搜索了一下也听了~而且是电影中的原有版本~不知怎么的就想‘家’了~……”。 一直等到夜里2点多那部电影才下载完成,然后我马上看完了这部2个多小时的电影。 记得以前有人比较中国画和西方绘画艺术的区别,提到中国画强调写意,而西方强调写实。这一点放在电影作品中也可以看得出来, 和美国的那些描写战争的影片比起来, 写实的成分不够。 限于历史局限性,这些缺点都是不可避免的。但是,《上甘岭》和《英雄儿女》这些影片的重要意义是不可低估的。这些影片在当时的影响力,远大于现在所谓的大片的影响力。 2006-06-27 14:43:53 [补充说明1] 如果今天(2008-01-31)我不在午夜12点前写点什么出来,那么将创下一项不好的个人记录:自2003年7月以来首次在某个月份里面一篇网志文字都没写。因此翻出一篇以前的草稿文字贴出来。 此次贴出来时没有对原始文字(包括文字标题)做任何修改。另外请注意的是,此篇文字写于2006-06-27 14:43:53,而非今日。 PHP的前途2007年12月17日, 星期一
== 前言 ==
我原来想给这篇文字起的名字是《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, 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框架,因此无法对其作出具体评价。 2007年感恩节的感谢2007年12月02日, 星期日
== 背景介绍 ==
过去4年来,每年在感恩节的时候,我都会写一份感谢信发布在自己的网站上,感谢那些在过去的一年中给予自己关心、帮助的个人或团体。 在2007年美国感恩节(11月22日,星期四)到来之前的2个月,我时常在想,在2007这一年里,有哪些个人或团体是我应该向其表示感谢的。 起初的时候,我总是想不起来需要感谢谁。这也许是因为整个2007年,我大部分时候都处于一个人生活的状态(至少在精神上是这样),大部分事情都是自己一个人解决,常常连个可以商量的人都没有。既然什么事情几乎都是我自己来处理的话,那么又有谁值得我去感谢呢? 临近感恩节的时候,我才想起来,还是有那么一些朋友在2007年里面真心实意地帮助过我的。这些朋友在帮助我的时候,并没有指望图什么私利,只是出于他们自己的一份热心和对朋友的关心而帮助我的。我需要对他们表示感谢。 2007年感恩节的时候,我忙于琐事,无暇及时写下我这一年度的感谢信。因此,在这里补上。 == 感谢信 == 在2007年感恩节,我想对以下个人或团体表示感谢:
[补充说明1] 关于曾让我特别感谢的个人和团体的列表,请参考《曾让我特别感谢的……》一文。 2006年第44周周末琐事2007年11月15日, 星期四
最近杂事比较多,也比较忙,以至于连写文字的情绪都没有。
有些事如果不及时写下来的话,时间一久就忘了。因此,我还是督促自己写下这段文字,来记录上周末的琐事。 言归正传。 2006-10-28 (周六) 2006-10-29 (周日) 今天是冬时制的第一天。 今天是Luo乔迁新居的日子。有好几个朋友帮他搬家,其中有他的同事、邻居、朋友等等。在南温莎的新居,大概8年新的房子,相当不错。 2000年10月3日,我和高中同学周建栋在大厂扬子小聚,他跟我是完全不同类型的人1。他当时跟我说过一段话,我一直记着。他说,当你看到比你好的人,你就更有动力2。我感觉他这句话说得非常对。 烫死了。养懒人。3这就是为什么我要离开成都、离开加拿大。我不是一个特别奋进的人,把我丢在成都那种安逸的地方,只能让我像个青蛙一样最终被同化4。 我说过5毕业后我想去美国发展。我第一次去参观郭红6的家,顿时让我对美国产生了好感。想想看,一对结婚不久的夫妻,一位刚从大学毕业不到1年的MBA学生(虽然老公已工作多年),就能够买这么好的一栋房子,怎能不激发自己的欲望? 温莎的房价的确很便宜,20万左右就可以买一栋很不错的房子了。 总之,看到朋友乔迁新居后,首先要祝福他们;其次,要鼓励自己,相信自己。道路是曲折的,前途是光明的。 [注1] 周是那种很注意气质、仪表的人,因此“跟我是完全不同类型的人”。 [注2] 周当时跟我在饭馆吃饭聊天的时候,所说内容的主要意思并非完全如本文中所述,而是这样的:“你要想更上一层楼,做得越来越好,就应该跟那些比自己更有能力、更有成绩/成就的人多交往,而不要老是跟做得没你好的人在一起。当你看到那些做得比你好的人所取得的成绩,你就更有动力。”。 [注3] 此处草稿文字应是仓促间写下的思路片断,其所要表达的意思应该是:温水煮青蛙,最终会把青蛙给烫死、给葬送;一个人长期在不适合自己发展的环境中最终会被同化,消磨掉自己的冲劲,葬送掉自己的未来;成都这个城市过于悠闲,年轻人缺乏足够的冲劲和上进心。 [注4] 此处应补充一句话:进而消磨掉自己冲劲、葬送掉自己的未来。 [注5] 此处链接为公开发布时添加。 [注6] 郭红是我在温莎的前房东。其在美国上班,毕业后不到1年即和老公购买了一套很棒的房子。我第一次参观郭红的家是在2005-09-03。 [补充说明1] 此文一年前以草稿形式(未公开)于2006-11-05 20:48保存于本站。此次发布出来,未对原始草稿文字作任何修改,但会以补充说明、备注形式对原文含糊不清之处加以说明。
(第 1 页,总共 106 页,总共 1058 篇文章)
» 下一页
|
Deminy用Google搜索本站最新文章一道关于PHP的代码题
2008-11-03 16:27:46 未曾真正拥有过的权利——选举权 2008-10-04 06:56:00 不知所云 (1) 2008-07-24 01:21:00 浅谈Magento 2008-07-05 22:27:39 南京师大附中95届高三(2)班北美同学2008聚会方案 2008-02-24 20:39:11 网志文字类别近日个人动态最近在忙些什么: 最近在听些什么: 最近在研究什么: 最近在看些什么: |
最新评论
2008-11-19 22:10:35
学习了,谢谢
2008-11-14 11:46:15
url=request.ServerVariables("H TTP_REFERER") [...]
2008-11-05 21:54:24
Thank you,学习了,现在对这一 块的原理就比较 [...]
2008-11-05 18:20:46
需要acrobat6
2008-11-04 11:00:14
blueManta说得很对。 举例说 明变量引用(refe [...]
2008-11-04 03:22:54
我的猜测,$val是在$data外面临 时开辟的内存空 [...]
2008-11-03 22:13:04
关注一下,为什么呢
2008-10-22 03:03:31
按照我文中所提到的方法,在国内 应该可以免费接 [...]