Author Archives: James Tang

About James Tang

Web Developer, focusing on web application architecture and development.

MongoDB入门(PHP)

MongoDB是目前一款比较流行的文档数据(document-oriented database), 类似的还有Apache CouchDB等。 安装 MongoDB安装非常简单,在http://www.mongodb.org下载对应版本(如Linux 32bit/64bit),解压即可。 PHP需要安装Mongo扩展(MongoDB driver for PHP),通过pecl或在http://pecl.php.net/package/mongo下载编译即可。 MongoDB服务启动/停止 例如: ./mongod –port 10001 \ –logpath=/var/logs/mongodb/mongod.log \ –dbpath=/var/data/db/ \ –pidfilepath /var/run/mongod.pid \ –directoryperdb 很多其它参数参考: ./mongod –help | less 停止服务,直接Ctrl+C或者kill `cat /var/run/mongod.pid`即可。 另外先提一下MongoDB提供的Shell客户端:./mongo, 很多操作需要使用它,例如数据管理配置等。 ./mongo 默认连接到localhost:27017/test ./mongo 192.168.0.33:10001/blog 连接到192.168.0.33的服务器,端口为10001, … Continue reading

Posted in PHP | Tagged , | Leave a comment

PHP5.4新特性小结

PHP5.4似乎很受关注,今天看了一些PHP5.4主要特性相关文章,因此在这里小结一下。 昨天(2011-10-26)官网发布PHP5.4.0beta2,其中好几点更新是由Laruence贡献的!本文部分内容也是源自Laruence的博客。 1. Buid-in web server PHP5.4内置了一个简单的Web服务器,这样在做一些简单程序就方便多了,省去了环境配置的工作,特别对于初学者来说。 把当前目录作为Root Document只需要这条命令即可: $ php -S localhost:3300 也可以指定其它路径: $ php -S localhost:3300 -t /path/to/root 还可以指定路由: $ php -S localhost:3300 router.php 参考:PHP: Build-in web server 2. Traits Traits提供了一种灵活的代码重用机制,即不像interface一样只能定义方法但不能实现,又不能像class一样只能单继承。至于在实践中怎样使用,还需要深入思考。 官网的一个例子: trait SayWorld { public function sayHello() … Continue reading

Posted in PHP | Tagged | 3 Comments

项目中遇到的问题

总结一下在项目中遇到的问题,我发现大部分问题都是可以避免的。 1. 管理问题 我并不懂管理,只是基于个人理解来总结一些问题: 项目进度安排不合理甚至没有明确的进度安排,阶段目标不明确,有的管理者喜欢说“尽快完成”,尽快到底是多快!? 人员安排不恰当,招人的时候分了中高级程序员(或者工程师,我很混淆这两个概念,工程师听起来似乎高级一点,但事实上…),但在实际工作似乎没有体现出来。另外就是经常让另一个开发人员修复其他开发人员程序中的Bug,没有正确认识bug的严重程度,没有意识到修复bug可能会引入新的bug,特别是在对整个项目没有全局把握的情况下。当然,如果原开发人员已经离职就另当别论了。 管理者不懂技术、或者出于其它目的,总之无论客户提出什么需求都统统揽下,返回第一点 最后,管理者不以身作则,只知道让程序员去做事情,自己很官僚。 2. 文档问题 其实文档也应该属于管理的问题,但我觉得这个问题很重要。 对于文档问题主要体现在: 没有文档,完成任务很需要想像力(很恐怖吧)。 文档混乱,不知道这个文档是需求文档,还是设计文档。 文档不规范,用语就像在写散文,用词不严谨,太多假设和歧义。 3. 规范问题 这里特指编码规范,要么没有编码规范,各自用自己的方式写代码,如果是注重代码重量的程序员还好,如果遇到连缩进都不用的程序员简直让人发疯。要么就是有规范,但没有人遵守,其实跟没有一样。 4. 态度问题 很多人写代码好像从来不好好测试一下自己的代码,因为我经常在修复别人的bug的时候发现是些非常愚蠢的问题。 另一个问题就是有人为了快速解决问题完全不考虑效率和优化问题,用一些令人费解而笨拙的方式来解决问题。虽说不要过早考虑优化,但至少不能过度不优化,也不能不考虑基本的扩展性、稳定性、安全性…

Posted in Essay | Leave a comment

程序员该做的事

今天在车上一直在思考什么是真正的程序员,程序员应该做的是什么,在我看来程序员主要应该专注于三个方面: 1. 参与实现完整的系统,大部分工作应该是通过编码来实现算法与业务逻辑 2. 项目管理,像项目经理之类的工作,不仅要是一个合格的程序员,还需要熟悉业务流程和项目管理 3. 系统架构,构建系统的蓝图 作为程序员最基本的应该是对计算机系统和软件工程有足够的理解,否则不能算是程序员。 现在很多所谓的程序员所做的工作其实根本不算真正的程序员,比如只是做简单的二次开发,利用开源或者其它已有程序进行简单的整合,作一些简单的修改和配置,而对整个程序的实现没有较为深入的常识,这样的“程序员”最多算是一个计算机高级用户。

Posted in Essay | Tagged | Leave a comment

phpmemecahed扩展编译的问题

PHP有两个memcached的扩展,其中一个较新的扩展也叫做memcached,跟memcached服务程序同名,所以有些混淆。 今天下载最新的扩展memcached-2.0.0b2.tgz, 编译的时候出现错误,问题是php_memcached.c中MEMCACHED_BEHAVIOR_TCP_KEEPALIVE没有定义。经google发现是MEMCACHED_BEHAVIOR_TCP_KEEPALIVE应该是在libmemcached中定义的,但在libmemcached的头文件中并也没有找到该常量。 最后发现原来是系统安装的libmemcached版本太老了,该版本是通过yum安装的。因此只有下载新的libmemcached,我下载的是 libmemcached-0.50,而不是最新的0.51,因为最新版有一个bug而无法编译完成。 至于php-memcached和memcache差别,参考memcache v.s. memcached

Posted in PHP | Tagged , , | Leave a comment