• 2010-05-07

    开发搜索引擎 – PHP中文分词

    Views: 30787 | No Comments

    对于中文搜索引擎来说, 中文分词是整个系统最基础的部分之一, 因为目前基于单字的中文搜索算法并不是太好. 当然, 本文不是要对中文搜索引擎做研究, 而是分享如果用 PHP 做一个站内搜索引擎. 本文是这个系统中的一篇.

    我使用的分词工具是中科院计算所的开源版本的 ICTCLAS. 另外还有开源的 Bamboo, 我随后也会对该工具进行调研.

    从 ICTCLAS 出发是个不错的选择, 因为其算法传播比较广泛, 有公开的学术文档, 并且编译简单, 库依赖少. 但目前只提供了 C/C++, Java 和 C# 版本的代码, 并没有 PHP 版本的代码. 怎么办呢? 也许可以学习它的 C/C++ 源码和学术文档中, 然后再开发一个 PHP 版本出来. 不过, 我要使用进程间通信, 在 PHP 代码里调用 C/C++ 版本的可执行文件.

    Continue reading »

    Posted by ideawu at 2010-05-07 08:30:07 Tags: ,
  • 2010-05-05

    链接包含”%2F”导致mod_rewrite失效

    Views: 28083 | 1 Comment

    IT牛人博客聚合网站(www.udpwork.com)用到了 Apache 的 mod_rewrite 模块进行 URL 重写. 但是, 在使用过程中曾经出现过一个比较诡异的问题. 开始认为是重写规则设置得不对, 后来才发现, 是"%2F"导致 Apache 直接返回 404 错误.

    比如浏览查看某个标签下的文章列表的链接为

    
    http://www.udpwork.com/tag/Linux
    
    

    在重写之前的链接是

    
    http://www.udpwork.com/?tag=Linux
    
    

    Continue reading »

    Posted by ideawu at 2010-05-05 10:05:09 Tags: ,
  • 2010-04-28

    PHP和百度招聘

    Views: 29560 | 18 Comments

    作为在百度(www.baidu.com)公司里做PHP开发的一员, 我深知PHP对于百度的重要性. 当然, 我不会直接说百度的哪些产品是用PHP语言开发的, 甚至很多的产品不仅仅是用PHP, 而是用了多种语言的结合, 但只要你登录百度的招聘网站, 查看职位的要求时, 你就知道百度用PHP来做什么.

    我常常听到同事喊:"我们还需要5个PHP开发者!", "我们还要10个, 15个!", 叫羊肉串也很少有超过5个的. 同时又感叹:"现在招个会php的应届生为什么这么难?!".

    我见过一些Java和C做的不错的朋友, 甚至是Java Web做得不错的, 可就是没写过一行PHP代码. 其实, 我的劝告是, 如果真想做Web开发, PHP是应该学习的. 当然, 前面提到的用Java做Web的朋友, 如果用的是PHP, 那么他们肯定是能得到面试机会的, 毫无疑问. 工作适合不适合, 应聘都适合不适合, 那是面试的时候再说了.

    当然, 要求相对不高的职位可能没有要求更高的职位更有吸引力, 但这种级别的职位, 也是很多人希望的.

    老板, 来一串PHP程序员!

    Posted by ideawu at 2010-04-28 19:26:24 Tags:
  • 2010-04-20

    我们丢失了Model层

    Views: 25944 | 18 Comments

    我在百度参与的一个最重要的项目, 项目设计的第一步就是数据库设计. 是的, 因为是重构, 所以没有人觉得这样做的问题所在. 在找出业务对象之前, 在分析出实体-关系之前, 在整理出功能列表之前, ... 在所有这些之前, 我们做了两件事: 一件是非常抽象的业务无关的系统(程序)的层次划分, 另一件是过于细枝末节的数据库表设计.

    再加上我们使用了一种所谓的ActiveRecord的东西, 于是, 虽然大部分功能都已实现, 系统正常上线运行, 又过了一段时间, 我们突然意识到, 我们自认为掌握了MVC, 我们自认为理解了Web系统开发, 但是, 我们丢失了Model层!

    Continue reading »

    Posted by ideawu at 2010-04-20 10:11:43 Tags:
  • 2010-04-09

    最简单的PHP缓存方案 – Zend_Cache

    Views: 19323 | No Comments

    Zend Framework的各个模块大多能单独使用, 抽取出来的最简单的缓存模块Zend_Cache只有8个文件, 包括目录目录一个11个, 如下:

    Zend/
    Zend/Cache
    Zend/Cache/Backend
    Zend/Cache/Backend/ExtendedInterface.php
    Zend/Cache/Backend/File.php
    Zend/Cache/Backend/Interface.php
    Zend/Cache/Backend.php
    Zend/Cache/Core.php
    Zend/Cache/Exception.php
    Zend/Cache.php
    Zend/Exception.php
    

    我曾经看过不少PHP开发者向人推销自己的PHP框架, 其中一般都包含他们最引以为豪的的文件缓存方案. 不过, 真正通用和流行的PHP缓存方案没有几个. Zend_Cache是非常简单的, 除了可以使用文件缓存, 还可以使用闻名遐尔的memcached, 也仅仅是往上面的列表中加入一个文件Memcached.php. 文件缓存的应用限制还是很大, 因为磁盘IO很容易成为瓶颈, 高并发的时候, 还是使用memcached.

    Zend_Cache的主要接口是load()和save(), 使用方法见以前的文章: Zend Framework 的缓存模块 Zend_Cache 使用(http://www.ideawu.net/blog/archives/320.html)

    在IT牛人博客聚合网站(www.udpwork.com)的RSS抓取程序中, 应用了Zend_Cache, 以避免过于频繁地抓取博客的RSS, 造成博客负载过重.

    Posted by ideawu at 2010-04-09 19:20:40 Tags:
  • 2010-03-15

    用PHP去除重复图片文件

    Views: 17578 | 6 Comments

    因为整理图标, 所以需要去除重复图片的功能. 通过md5来判断是否重复. 最开始, 我用md5sum工具求md5, 然后再用PHP读取结果去重. 后来一想, 为什么不完全用PHP来做呢? 可以节省大量进程开销. 简单几行代码, 就实现了这个功能.

    文件数: 80510, 大小: 452,496,873 字节

    只查找不删除的速度:
    第一次耗时: 122s
    第二次耗时: 44s
    第三次耗时: 44s

    在查找多次之后, 立即查找并删除的速度:
    耗时: 83秒, 删除了54406个文件
    Continue reading »

    Posted by ideawu at 2010-03-15 04:09:18
|<<<123456789>>>| 5/10 Pages, 55 Results.