<?xml version="1.0" encoding="utf-8"?>
<!-- generator="tamcn.cn" -->
<?xml-stylesheet href="" type="text/xsl"?>
<rss version="2.0">
    <channel>
        <title>第九街博客</title>
        <description>PHP技术,PHP学习教程.</description>
        <link>http://www.9streets.cn/</link>
        <lastBuildDate>Sat, 19 May 2012 19:41:13 +800</lastBuildDate>
        <generator>tamcn.cn</generator>
        <language>zh-CN</language>
        <copyright>Copyright PHP网站 Some Rights Reserved.</copyright>
        <item>
            <title>PHP招聘（有意向者可以详细了解下）</title>
            <link>http://www.9streets.cn/art-php-530.html</link>
            <description>&lt;p&gt;帮公司宣传一下，有意向的朋友可以详细了解下：&lt;br /&gt;
工作描述：&lt;br /&gt;
公司主要方向是电子商务平台，项目筹备的差不多了，现进入招人开发阶段了.还有一个辅助业务线腾讯外包，这个已进入开发状态。&lt;br /&gt;
朋友&lt;br /&gt;
如果你是高手，电子商务平台是你展示能力的一个平台&lt;br /&gt;
如果你是菜鸟级别，腾讯外包业务是助你踏入前辈行列的阶梯&lt;br /&gt;
如果你属于中级者，电子商务平台也将是你未来发展方向&lt;br /&gt;
如果不属于其列，那就路过！&lt;br /&gt;
如果你做为一个PHPER，还在发愁未来的发展那就加入我们吧，我相信你会找到你想要的！&lt;br /&gt;
PS:至于待遇方面，看能力拿钱，只要你能力可以都可以拿到你想的,QQ 455342107&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Tue, 15 May 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>所谓坚持和放弃</title>
            <link>http://www.9streets.cn/art-php-529.html</link>
            <description>&lt;p&gt;某某：为啥不跟着公司一直干下去？&lt;br /&gt;
我：找不到自己的方向，在瞎折腾，不知道自己在干嘛，渐渐失去了斗志，这是一件可怕的事情。与其在迷失方向，还不如花时间出去找方向的。&lt;br /&gt;
自我分析：&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 1. 这不是一个肯不肯问题，这是个人的职业发展问题，到任何一家公司都肯埋头苦干，肯担当，前提自己能找到属于自己的方向。到目前为止，在公司已完全失去了职业方向，上个星期公司还分享了以&amp;ldquo;坚持&amp;rdquo;为话题的分享会，看到同事们都说出坚持精神各种好处，目的和源由。我在这里不是否定坚持的好，前提是自己要有一个明确的目标，无论是乍样的一个结果都不要后悔，假如认为你有自己不坚持下去，以后会后悔的，那就坚持吧，不要给自己的后悔的机会。如果你在迷失，或只是一个跟风者，那就无谓坚持和放弃了，因为你随时会后悔现在所做的决定。坚持一下自己方向，折腾折腾一下自己，不想给自己后悔的机会。&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 2.生活的是现实的，有的人把事业放在第一位，有的人把家庭放在第一位，这本身就是一个中性问题，在于个人目标和追求，所以谈不上对或错。对一个男人来说，在家庭里面本就应该多担当点，事业重要，家庭同样重要，两者兼之才是我一直追求的工作方式。&amp;nbsp; &lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 3.出来三年多了，不想一直处于打酱油阶段，如果处于酱油阶段，还不如坚持自己的兴趣和特长（不是钱多与少问题，也不是怕累不怕累问题，而是兴趣问题，坚持没斗志的工作状态给公司，个人带来只是一个负面影响，而不是增加质的资本）&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 4.而对于公司的股份赠与，很感谢公司，至少在这公司快两年的奋斗努力中，公司对自己能力的认可，自己也心中默默曾想在未来工作中更努力去奋斗来回报公司，用行动去证明，但目前已处于游离状态，原因上面已提过，不想因为股份的原因而自己一直处于迷失方向。感谢公司，感谢曾经在一起奋斗的兄弟姐妹！&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Thu, 10 May 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>window下安装sphinx实例</title>
            <link>http://www.9streets.cn/art-php-528.html</link>
            <description>&lt;p&gt;今天研究了一下window下安装sphinx，终于是把sphinx服务安装了（只限CMD端），至于如何在用PHP查询还在研究中，就说说一下如何在window下安装sphinx服务端大概流程:&lt;br /&gt;
1.首先查看服务器mysql 的版本,找对应的数据库版本对应SphinxSE下载,下载两个文件：mysql-5.0.45-sphinxse-0.9.8-win32.zip和sphinx-0.9.8.1-win32.zip，下载地址：&lt;a href=&quot;http://sphinxsearch.com/downloads/archive/&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;http://sphinxsearch.com/downloads/archive/&lt;/span&gt;&lt;/a&gt;，查看服务器mysql版本可能用status命令查看：如图&lt;br /&gt;
&lt;img width=&quot;584&quot; height=&quot;394&quot; src=&quot;/userfiles/mysql+status.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;img width=&quot;663&quot; height=&quot;164&quot; src=&quot;/userfiles/sphinx+mysql.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
2.如果服务器处于启状态，可以先关闭mysql服务器&lt;br /&gt;
3.解压mysql-5.0.45-sphinxse-0.9.8-win32.zip，将里面bin与share目录覆盖掉你的mysql安装目录下的相应目录 ，解压sphinx-0.9.8.1-win32.zip压缩包文件到d:\web\sphinx 因为wamp服务器所有文件都放在web下，这里为了管理方便就统一放在web下。&lt;br /&gt;
4.下面就弄sphinx配置了，在sphinx目录下sphinx-min.conf.in拷贝一份重命名后缀名为.conf 的文件，这里我命名为sphinx-doc.conf&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_6176')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_6176&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;#&amp;nbsp;Minimal&amp;nbsp;Sphinx&amp;nbsp;configuration&amp;nbsp;sample&amp;nbsp;(clean,&amp;nbsp;simple,&amp;nbsp;functional)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;type----------------------------------------数据库类型，目前支持&amp;nbsp;mysql&amp;nbsp;与&amp;nbsp;pgsql&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;strip_html--------------------------------是否去掉html&amp;nbsp;标签&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;sql_host----------------------------------数据库主机地址&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;sql_user----------------------------------数据库用户名&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;sql_pass----------------------------------数据库密码&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;sql_db-------------------------------------数据库名称&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;sql_port-----------------------------------数据库采用的端口&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;sql_query_pre--------------------------执行sql前要设置的字符集，用utf8必须SET&amp;nbsp;NAMES&amp;nbsp;utf8&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;sql_query---------------------------------全文检索要显示的内容，在这里尽可能不使用where或&amp;nbsp;group&amp;nbsp;by，将&amp;nbsp;where&amp;nbsp;与&amp;nbsp;groupby&amp;nbsp;的内容交给&amp;nbsp;sphinx，由&amp;nbsp;sphinx&amp;nbsp;进行条件过滤与&amp;nbsp;groupby&amp;nbsp;效率会更高&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;注意:&amp;nbsp;select&amp;nbsp;出来的字段必须至少包括一个唯一主键&amp;nbsp;(ARTICLESID)&amp;nbsp;以及要全文检索的字段，你计划原本在&amp;nbsp;where&amp;nbsp;中要用到的字段也要&amp;nbsp;select&amp;nbsp;出来&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;这里不用使用orderby&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;sql_attr_&amp;nbsp;开头的表示一些属性字段，你原计划要用在&amp;nbsp;where,&amp;nbsp;orderby,&amp;nbsp;groupby&amp;nbsp;中的字段要在这里定义(#&amp;nbsp;为自己添加的注释内容)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#source&amp;nbsp;数据源名:&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;source&amp;nbsp;documents&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;mysql&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_host&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;localhost&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;sql_user&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;root&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_pass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;sql_db&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;DB_9streets&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;3306&amp;nbsp;#&amp;nbsp;optional,&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;default&lt;/span&gt;&lt;span&gt;&amp;nbsp;is&amp;nbsp;3306&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_query_pre&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;SET&amp;nbsp;NAMES&amp;nbsp;utf8&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;sql_query&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;\&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;SELECT&amp;nbsp;id,&amp;nbsp;group_id,&amp;nbsp;UNIX_TIMESTAMP(date_added)&amp;nbsp;AS&amp;nbsp;date_added,&amp;nbsp;title,&amp;nbsp;content&amp;nbsp;\&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;FROM&amp;nbsp;documents&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;sql_attr_uint&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;group_id&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_attr_timestamp&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;date_added&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;sql_query_info&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;SELECT&amp;nbsp;*&amp;nbsp;FROM&amp;nbsp;documents&amp;nbsp;WHERE&amp;nbsp;id=&lt;span class=&quot;vars&quot;&gt;$id&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;index&amp;nbsp;documents&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;source&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;documents&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#path&amp;nbsp;&amp;nbsp;&amp;nbsp;索引记录存放目录，如&amp;nbsp;d:/sphinx/data/cgfinal&amp;nbsp;,实际存放时会存放在&amp;nbsp;d:/sphinx/data&amp;nbsp;目录，然后创建多个&amp;nbsp;cgfinal&amp;nbsp;名称，不同扩展名的索引文件。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;path&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;d:/web/sphinx/doc&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;docinfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;extern&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;enable_star&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;1&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;min_word_len&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;3&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;min_prefix_len&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;0&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;min_infix_len&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;3&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;charset_type&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;sbcs&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;其他的配置如&amp;nbsp;min_word_len,&amp;nbsp;charset_type,&amp;nbsp;charset_table,&amp;nbsp;ngrams_chars,&amp;nbsp;ngram_len&amp;nbsp;这些则是支持中文检索需要设置的内容。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;如果检索的不是中文，则&amp;nbsp;charset_table,&amp;nbsp;ngrams_chars,&amp;nbsp;min_word_len&amp;nbsp;就要设置不同的内容，具体官方网站的论坛中有很多，大家可以去搜索看看。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;mem_limit&amp;nbsp;索引使用内存最大限制，根据机器情况而定，默认是32M，太小的会影响索引的性能。&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;indexer&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;mem_limit&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;32M&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;搜索的守护进程配置&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;在进行全文检索过程中，searchd要先开启，mysql在全文检索时才能连接到sphinx，由sphinx进行全文检索，再将结果返回给mysql&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;#&amp;nbsp;address&amp;nbsp;侦听请求的地址，不设置则侦听所有地址&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#&amp;nbsp;port&amp;nbsp;侦听端口&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;searchd&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;port&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;3312&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=d:/web/sphinx/logs/searched_doc.log&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;query_log&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;d:/web/sphinx/logs/query_doc.log&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;read_timeout&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;5&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;max_children&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;30&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;pid_file&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;d:/web/sphinx/logs/searched-doc.pid&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;max_matches&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;1000&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;seamless_rotate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;0&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;preopen_indexes&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;0&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;unlink_old&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;=&amp;nbsp;1&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;注意哦：配置要根据具体的服务器环境去设置,然后再copy一份到sphinx\bin目录下,命名和刚才重命名文件一样为sphinx-doc.conf&lt;/span&gt;&lt;br /&gt;
5.导入sphinx包下example.sql，自带sql文件数据库为test，或修改自带sql数据库名，也可以根据自身数据库导入:&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_2920')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_2920&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;CREATE&amp;nbsp;TABLE&amp;nbsp;`documents`&amp;nbsp;(&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;`id`&amp;nbsp;int(11)&amp;nbsp;NOT&amp;nbsp;NULL&amp;nbsp;auto_increment,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;`group_id`&amp;nbsp;int(11)&amp;nbsp;NOT&amp;nbsp;NULL,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;`group_id2`&amp;nbsp;int(11)&amp;nbsp;NOT&amp;nbsp;NULL,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;`date_added`&amp;nbsp;datetime&amp;nbsp;NOT&amp;nbsp;NULL,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;`title`&amp;nbsp;varchar(255)&amp;nbsp;NOT&amp;nbsp;NULL,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;`content`&amp;nbsp;text&amp;nbsp;NOT&amp;nbsp;NULL,&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;PRIMARY&amp;nbsp;KEY&amp;nbsp;(`id`)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;)&amp;nbsp;ENGINE=InnoDB&amp;nbsp;AUTO_INCREMENT=5;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;INSERT&amp;nbsp;INTO&amp;nbsp;`documents`&amp;nbsp;VALUES&amp;nbsp;(&lt;span class=&quot;string&quot;&gt;'1'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'1'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'5'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2008-09-13&amp;nbsp;21:37:47'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'test&amp;nbsp;one'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'this&amp;nbsp;is&amp;nbsp;my&amp;nbsp;test&amp;nbsp;document&amp;nbsp;number&amp;nbsp;one.&amp;nbsp;also&amp;nbsp;checking&amp;nbsp;search&amp;nbsp;within&amp;nbsp;phrases.'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;INSERT&amp;nbsp;INTO&amp;nbsp;`documents`&amp;nbsp;VALUES&amp;nbsp;(&lt;span class=&quot;string&quot;&gt;'2'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'1'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'6'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2008-09-13&amp;nbsp;21:37:47'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'test&amp;nbsp;two'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'this&amp;nbsp;is&amp;nbsp;my&amp;nbsp;test&amp;nbsp;document&amp;nbsp;number&amp;nbsp;two'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;INSERT&amp;nbsp;INTO&amp;nbsp;`documents`&amp;nbsp;VALUES&amp;nbsp;(&lt;span class=&quot;string&quot;&gt;'3'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'7'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2008-09-13&amp;nbsp;21:37:47'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'another&amp;nbsp;doc'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'this&amp;nbsp;is&amp;nbsp;another&amp;nbsp;group'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;INSERT&amp;nbsp;INTO&amp;nbsp;`documents`&amp;nbsp;VALUES&amp;nbsp;(&lt;span class=&quot;string&quot;&gt;'4'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'8'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'2008-09-13&amp;nbsp;21:37:47'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'doc&amp;nbsp;number&amp;nbsp;four'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'this&amp;nbsp;is&amp;nbsp;to&amp;nbsp;test&amp;nbsp;groups'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;6.在 cmd 模式下(不了解CMD下操作，可以进入相关了解了解),在sphinx/bin目录下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_4198')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_4198&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;indexer.exe&amp;nbsp;--config&amp;nbsp;d:/web/sphinx/bin/sphinx-doc.conf&amp;nbsp;documents&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img width=&quot;564&quot; height=&quot;179&quot; src=&quot;/userfiles/dos+indexer.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
7.运行检索守护进程 searchd.exe（注：如要把&lt;span style=&quot;font-family: 华文细黑; font-size: small;&quot;&gt;&lt;span style=&quot;font-size: small;&quot;&gt;&lt;span&gt;phinx&lt;/span&gt;安装成系统服务，在后台运行，可用&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;span&gt;searchd.exe&amp;nbsp;--config&amp;nbsp;d:/web/sphinx/bin/sphinx-doc.conf&amp;nbsp; --install&lt;/span&gt;&lt;/span&gt;）：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_2905')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_2905&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;searchd.exe&amp;nbsp;--config&amp;nbsp;d:/web/sphinx/bin/sphinx-doc.conf&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img src=&quot;/userfiles/dos+searched.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
8. 查找关键词search.exe this is m&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_4544')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_4544&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;search.exe&amp;nbsp;-c&amp;nbsp;sphinx-doc.conf&amp;nbsp;this&amp;nbsp;is&amp;nbsp;m&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img src=&quot;/userfiles/dos+search.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
运行了出现警告，（暂未找到原因，先忽略），说明我们的 Sphinx 已经正常运行了！&lt;br /&gt;
ps:PHP乍么连接起来还在研究中?找不到在window下对应的sphinx模块，有好方案的同学们，欢迎交流&lt;img src=&quot;/fckeditor/editor/images/smiley/qq2007/0.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;---------------------------------------------window下安装sphinx实例华丽分割线-----------------------------------------------------&lt;br /&gt;
下面是PHP调用方法实例：&lt;br /&gt;
1.把sphinx/api目录拷贝到服务器某个项目中，在项目api文件夹里面建一个index.php的文件 ，写入以下代码：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span class=&quot;copyCodeText&quot; style=&quot;cursor:pointer&quot; onclick=&quot;copyIdText('code_1492')&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_1492&quot;&gt;
&lt;ol class=&quot;dp-c&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;require&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;sphinxapi.php&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$host&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;dwz.com&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$port&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;3312;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$sc&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt;&lt;span&gt;&amp;nbsp;SphinxClient();&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;实例化Api&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$sc&lt;/span&gt;&lt;span&gt;-&amp;gt;setServer(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'dwz.com'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;3312);&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;设置服务端，第一个参数sphinx服务器地址，第二个sphinx监听端口&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$res&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$sc&lt;/span&gt;&lt;span&gt;-&amp;gt;query(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'test'&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'documents'&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;执行查询，第一个参数查询的关键字，第二个查询的索引名&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;vars&quot;&gt;$ids&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;join(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;','&lt;/span&gt;&lt;span&gt;,&lt;/span&gt;&lt;span class=&quot;func&quot;&gt;array_keys&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$res&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;'matches'&lt;/span&gt;&lt;span&gt;]));&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;print_r(&lt;span class=&quot;vars&quot;&gt;$ids&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;comment&quot;&gt;//&amp;nbsp;获取主键&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;?&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;运行结果下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span class=&quot;copyCodeText&quot; style=&quot;cursor:pointer&quot; onclick=&quot;copyIdText('code_5321')&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_5321&quot;&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;1,2,4&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp; 这里说明PHP调用sphinx成功了，剩下的就是php调用sphinx具体用法的深入研究了&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 07 May 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>Sphinx增量索引实例</title>
            <link>http://www.9streets.cn/art-php-527.html</link>
            <description>&lt;p&gt;在实际应用中往往有这么一种情况，数据库数据很大，比如我们的歌曲表，如果我们每次都去更新整个表的索引，对系统得开销将非常大，显然这是不合适， 这时我 们会发现，每天我们需要更新的数据相比较而言较少，在这种情况下我们就需要使用&amp;ldquo;主索引+增量索引&amp;rdquo;的模式来实现实时更新的功能。&lt;/p&gt;
&lt;p&gt;这个模式实现的基本原理是设置两个数据源和两个索引，为那些基本不更新的数据建立主索引，而对于那些新增的数据建立增量索引。主索引的更新频率我们   可以设置的长一些(可以设置在每天的午夜进行更新)，而增量索引的更新频率，我们可以将时间设置的很短(几分钟左右)，这样在用户搜索的时候，我们可以同  时查询这两个索引的数据。&lt;/p&gt;
&lt;p&gt;下面，我们通过一个简单的例子来描述一下怎样实现这种模式（大家可以根据服务器环境百度一下sphinx安装包,在这里只是收藏一下网络上原文做为下面项目开展应用，window下sphinx的安装应用可以参考&lt;a href=&quot;http://www.xingdonghai.cn/sphinx-2-0-3-windows-install-and-instructions/&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;http://www.xingdonghai.cn/sphinx-2-0-3-windows-install-and-instructions/&lt;/span&gt;&lt;/a&gt;）&lt;/p&gt;
&lt;p&gt;以sphinx.conf中默认的数据为例:&lt;/p&gt;
&lt;p&gt;1.先在mysql中插入一个计数表和两个索引表&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sph_counter&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;counter_id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;PRIMARY&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;KEY&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;max_doc_id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INTEGER&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;//主索引使用(确认之前是否已经建立过该表，如果已经建立，这里就不需要重新建了)&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;CREATE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;TABLE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;weight&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;int&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;varchar&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Maroon;&quot;&gt;255&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;CATALOGID&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;EDITUSERID&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;HITS&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ADDTIME&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NOT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;KEY&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Query&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;Query&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;ENGINE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;SPHINX&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;DEFAULT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;CHARSET&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;utf8&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;CONNECTION&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;sphinx://localhost:3312/test1&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;//增量索引使用&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;CREATE TABLE `sphinx1` (&lt;/li&gt;
    &lt;li&gt;`id` int(11) NOT NULL,&lt;/li&gt;
    &lt;li&gt;`weight` int(11) NOT NULL,&lt;/li&gt;
    &lt;li&gt;`query` varchar(255) NOT NULL,&lt;/li&gt;
    &lt;li&gt;`CATALOGID` INT NOT NULL,&lt;/li&gt;
    &lt;li&gt;`EDITUSERID` INT NOT NULL,&lt;/li&gt;
    &lt;li&gt;`HITS` INT NULL,&lt;/li&gt;
    &lt;li&gt;`ADDTIME` INT NOT NULL,&amp;nbsp; &amp;nbsp;KEY&lt;/li&gt;
    &lt;li&gt;`Query` (`Query`)&lt;/li&gt;
    &lt;li&gt;)ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://localhost:3312/ test1stemmed '&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;2.修改sphinx.conf&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;source src1&lt;/li&gt;
    &lt;li&gt;{&lt;/li&gt;
    &lt;li&gt;sql_query_pre			= SET NAMES utf8&lt;/li&gt;
    &lt;li&gt;sql_query_pre			= SET SESSION query_cache_type=OFF&lt;/li&gt;
    &lt;li&gt;sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents&lt;/li&gt;
    &lt;li&gt;sql_query	= SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents \&lt;/li&gt;
    &lt;li&gt;WHERE id&amp;lt;=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )&lt;/li&gt;
    &lt;li&gt;... //其他可以默认&lt;/li&gt;
    &lt;li&gt;}&lt;/li&gt;
    &lt;li&gt;// 注意：sql_query_pre的个数需和src1对应，否则可能搜索不出相应结果&lt;/li&gt;
    &lt;li&gt;source src1throttled : src1&lt;/li&gt;
    &lt;li&gt;{&lt;/li&gt;
    &lt;li&gt;sql_ranged_throttle = 100&lt;/li&gt;
    &lt;li&gt;sql_query_pre			= SET NAMES utf8&lt;/li&gt;
    &lt;li&gt;sql_query_pre			= SET SESSION query_cache_type=OFF&lt;/li&gt;
    &lt;li&gt;sql_query_pre =&lt;/li&gt;
    &lt;li&gt;sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents \&lt;/li&gt;
    &lt;li&gt;WHERE id&amp;gt;( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )&lt;/li&gt;
    &lt;li&gt;}&lt;/li&gt;
    &lt;li&gt;index test1	//主索引&lt;/li&gt;
    &lt;li&gt;{&lt;/li&gt;
    &lt;li&gt;source	= src1&lt;/li&gt;
    &lt;li&gt;...&lt;/li&gt;
    &lt;li&gt;}&lt;/li&gt;
    &lt;li&gt;index test1stemmed : test1	//增量索引&lt;/li&gt;
    &lt;li&gt;{&lt;/li&gt;
    &lt;li&gt;source = src1throttled&lt;/li&gt;
    &lt;li&gt;...&lt;/li&gt;
    &lt;li&gt;}&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;3.重建索引&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;/usr/local/sphinx/bin/searchd --stop&lt;/li&gt;
    &lt;li&gt;/usr/local/sphinx/bin/indexer --config /usr/local/sphinx/etc/sphinx.conf --all&lt;/li&gt;
    &lt;li&gt;/usr/local/sphinx/bin/searchd --config /usr/local/sphinx/etc/sphinx.conf&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;插入测试数据&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;INSERT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;INTO&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;test&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;documents&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;group_id&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;group_id2&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;date_added&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;title&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; ,&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;content&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;`&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;VALUES&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;NULL&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; , &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;3&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;11&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;NOW&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; , &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;索引合并&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;, &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;合  并两个已有的索引比重新对所有数据做索引更有效率，而且有时候必须这样做（例如在&amp;ldquo;  主索引＋增量索引&amp;rdquo;分区模式中应合并主索引和增量索引，而不是简单地重新索引&amp;ldquo;主索引对应的数据）。因此indexer有这个选项。合并索引一般比重新索   引快，但在大型索引上仍然不是一蹴而就。基本上，待合并的两个索引都会被读入内存一次，而合并后的内容需要写入磁盘一次。例如，合并100GB和1GB的  两个索引将导致202GB的IO操作（但很可能还是比重新索引少）&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;执行&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; . *&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;documents&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;JOIN&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;ON&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;WHERE&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; = &lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;索引&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;你会发现你刚添加的数据没有被检索出来&lt;br /&gt;
然后执行：&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.* &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;documents&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;索引&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;你会发现数据是空的，这时我们就需要来更新增量索引了。&lt;/p&gt;
&lt;p&gt;通过执行：&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;/usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf test1stemmed&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;命令来更新增量索引(正式使用时，我们可以将该命令配置到系统计划任务中，每隔几分钟执行一次)&lt;br /&gt;
--rotate: 该参数可以使我们在不需要停止searchd的情况下，直接加载索引&lt;br /&gt;
执行完命令该命令后，我们再来查看一下增量索引的数据&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.* &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;documents&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx1&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;索引&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;你会发现新添加的数据被检索出来的。&lt;/p&gt;
&lt;p&gt;主索引的更新：&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;/usr/local/sphinx/bin/indexer --rotate --config /usr/local/sphinx/etc/sphinx.conf test1&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;collected 997 docs, 1.4 MB&lt;/li&gt;
    &lt;li&gt;sorted 0.3 Mhits, 100.0% done&lt;/li&gt;
    &lt;li&gt;total 997 docs, 1430054 bytes&lt;/li&gt;
    &lt;li&gt;total 1.428 sec, 1001459.38 bytes/sec, 698.19 docs/sec&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;(我们可以设置成每天的午夜执行)&lt;/p&gt;
&lt;p&gt;只有在更新了主索引后，结果才会被更新&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;&lt;span style=&quot;color: Green;&quot;&gt;SELECT&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.* &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;FROM&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;documents&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;join&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;on&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;(&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;doc&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;sphinx&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;.&lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;id&lt;/span&gt;&lt;span style=&quot;color: Olive;&quot;&gt;)&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Green;&quot;&gt;where&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;color: Blue;&quot;&gt;query&lt;/span&gt;&lt;span style=&quot;color: Gray;&quot;&gt;=&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;span style=&quot;color: Red;&quot;&gt;索引&lt;/span&gt;&lt;span style=&quot;color: #8b0000;&quot;&gt;'&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;我们也可以通过合并索引的方式使主索引的数据保持更新&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;/usr/local/sphinx/bin/indexer --merge test1 test1stemmed&amp;nbsp; --rotate&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;可以将增量索引test1stemmed合并到主索引test1中去&lt;/p&gt;
&lt;p&gt;为创建2个shell脚本，一个用来创建主索引、一个用来创建增量索引（此步可以省略）&lt;/p&gt;
&lt;p&gt;1.创建主索引脚本build_main_index.sh&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;#!/bin/sh&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/searchd --stop&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/indexer test1 --config /usr/local/sphinx/etc/sphinx.conf &amp;gt;&amp;gt; /var/log/sphinx/mainindexlog(更新主索引)&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/searchd&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;2.创建增量索引脚本build_delta_index.sh&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;#!/bin/sh&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/searchd --stop&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/indexer test1stemmed&amp;nbsp; --config  /usr/local/sphinx/etc/sphinx.conf --rotate&amp;gt;&amp;gt;  /var/log/sphinx/deltaindexlog (更新增量索引)&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/indexer --merge test1 test1stemmed --config  /usr/local/sphinx/etc/sphinx.conf --rotate &amp;gt;&amp;gt;  /var/log/sphinx/deltaindexlog (合并增量索引)&lt;/li&gt;
    &lt;li&gt;#/usr/local/sphinx/bin/searchd&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;每隔5分钟进行索引增量合并，每天2：30重建索引&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;*/5 * * * * /bin/sh /opt/shell/build_delta_index.sh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/li&gt;
    &lt;li&gt;30 2* * * /bin/sh /opt/shell/build_main_index.sh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;每周一至周六上早6点增量合并，同日重建索引&lt;/p&gt;
&lt;div&gt;
&lt;ol title=&quot;Double click to hide line number.&quot;&gt;
    &lt;li&gt;1 6 * * 1-6 /bin/sh /opt/shell/build_delta_index.sh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/li&gt;
    &lt;li&gt;1 6 * * 7 /bin/sh /opt/shell/build_main_index.sh &amp;gt; /dev/null 2&amp;gt;&amp;amp;1&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;p&gt;参考：&lt;a href=&quot;/userfiles/sphinx_doc_zhcn_0_9.pdf&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;sphinx_doc_zhcn_0.9.pdf&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;a href=&quot;http://www.21andy.com/blog/20100928/1973.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;&lt;span style=&quot;text-decoration: underline;&quot;&gt;PHP实现实例值得参考&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/a&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; 转摘自---&lt;a href=&quot;/userfiles/sphinx_doc_zhcn_0_9.pdf&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;http://blog.haohtml.com/archives/2526&lt;br /&gt;
&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Sun, 06 May 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>(转摘)这些年的项目管理心得 </title>
            <link>http://www.9streets.cn/art-php-526.html</link>
            <description>&lt;div id=&quot;__ss_12697204&quot; style=&quot;line-height:23px; font-size:15px; text-align:left; width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#项目经理应该有这样的认识：&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;互 联网项目，会定一个计划发布日期，然而这个项目有个隐藏的实际合理发布日期。因为软件开发并不是一个直接添加资源就可以加快速度的过程，所以这个实际合理 发布日期是在现实资源合理利用前提下一个客观存在的最可能早的完成时间。项目进展的过程，其实也是发现这个隐藏的合理发布日期的过程。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;从 管理的角度来讲，当然是尽可能的赶上计划的发布时间，或者尽可能快的完成项目。但是因为多方面因素的影响，项目管理是一个欲速则不达的过程。如果这个计划 发布日期早于这个实际合理发布日期，那你越往这个不合理的日期赶，工期内积累的问题就越多导致后期收尾的时候爆发，结果反而可能连合理发布日期都赶不上。 借用《让子弹飞》里面的一句话，步子迈得太大了，容易扯着蛋。给项目组定一个个合理的看得见的小目标，步步为营，一步一步朝着看得见的并且合理的每一个小 目标前行，每一个小目标的积累，才能最终走向项目的成功。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;所以务实的项目经理应该认识到如下几点：&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;1.项目组可以以快节奏的步伐在前行，但是项目经理本身一定要清晰的认识到，我们明面上是在赶那个计划发布日期，但是项目组实际的目标应该是那个客观存在的合理发布时间。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;2.随 着项目的进行，那个客观存在的合理发布时间会逐渐明朗。它与计划发布时间的差异也逐渐显示出来。此时有些项目经理往往会通过加资源的方法来尝试缩短这个合 理发布时间。但是真实的情况是，除非你前期的资源配置不合理，不然在这种情况下加资源，对项目帮助不大。这个地方无须多说，有疑问的人，去看一下《人月神 话》就知道了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;3.项 目经理必须有一些坚持。领导或者业务部门经常会有一些压力下来，要求赶那个计划发布时间，同时要求你想尽任何办法去赶上这个计划发布时间。而现实状况下， 如果你能够调整一些需求的范围，你还是有戏。不然，你要嘛此时报喜，后期报忧，要嘛此时报忧，后期不忧。掩盖问题往往可以让人开心，但是不代表问题不存 在。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;4.项目经理能做好的其实就5点：&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;blockquote style=&quot;line-height:23px; font-size:15px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:40px; text-align:left; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;a.控制好了需求；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;b.及早的发现问题，报告出来并解决；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;c.不出现资源空闲的状态；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;d.利用好每个资源去做擅长的事，快速有效的推进各种任务；&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;e.不浪费资源去做一些对项目目标总体没有帮助的工作，或者一些后期会推翻的需求。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;div style=&quot;line-height:23px; font-size:15px; text-align:left; width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;基于这样的认识下，本文有如下几个要点：&amp;nbsp;&lt;/span&gt;&lt;/span&gt;
&lt;div&gt;&lt;img src=&quot;http://my.csdn.net/uploads/201204/27/1335509647_2659.png&quot; alt=&quot;&quot; /&gt;&lt;/div&gt;
&amp;nbsp;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#项目责任感&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理应该有这个的责任感，你要为这个项目的任何一件事情负责，因为这个事情会影响到整个项目的工期，而你为整个工期负责。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;一个例子，我发现现在的项目有一个紧急的问题需要项目组外的人帮忙解决。于是我把邮件发出去，通知Wendy赶紧处理这件事情。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;几天过去了，Wendy还没有处理。我想，我已经把问题说出去了，接下去就是Wendy的事情。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;那个问题还是没有解决，我的整个工期受影响了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;事后追究起来，我说，我已经发出邮件了，是Wendy没有及时处理。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;Wendy说，我事情那么多，我怎么知道这件事情这么急。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目工期受影响了，谁的责任？Wendy吗？不，是我自己。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;作为一个对整个项目负责的项目经理，没有人会比你更在意项目的进展。让一个不负具体负责的人去帮你推进你的项目，远远不如你自己用心推进来得有效。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#项目经理是打杂的&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目组里面的每个专业成员，他们都有擅长的领域，做他们擅长的事情是他们的快乐。而不属于他们擅长的事情，对他们来说就算是杂事一般。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理一定要有一个这样的意识：&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理就是打杂的，帮助项目组成员把杂事处理掉，让他们可以专心的做他们擅长的事情，这样对项目组来说才是高效的。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;一个简单的例子，测试人员Tracy在测试某个功能的时候，突然发现她需要一个账号，同时开通这个账号的某些特定的权限，同时她需要一些服务器的信息，比如主机名，某些功能文件夹存放的路径。但是她不清楚这个账号和权限要找谁开通，这些服务器的信息谁有。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;Tracy是个喜欢做测试的人，但是她不喜欢跟项目组外的人沟通，特别是还要到其他部门去找人问人。这些对她来说就是杂事，而且她对其他部门的人也不熟，一个一个问明显效率不高。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;你可以自己去帮她找到需要的信息，也可以找一个对这方面比较熟的人去解决，但是你绝对不能让她自己去做。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&amp;ldquo;为什么我的手下不能解决这么简单的问题？如果连这种事情都要我来帮忙的话，那我这个项目经理做来干什么？她当项目经理得了。&amp;ldquo;这种想法千万是不可取的。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;你当这个项目经理的目的并不是管人，指使这人做什么那人做什么。你的目标只是把项目快速推进完成。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#控制需求&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;在所有因素当中，需求对项目的影响力，至少占50%以上。能够控制好需求，项目就成功了一半。控制需求，有如下几点：&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;1.必须有人能够当好产品经理这个角色&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;一 个项目组当中，其实人人都可以影响需求。但是管理需求的，是产品经理这个岗位。如果你的项目组当中已经有一个很好的产品经理，恭喜你，项目经理可以轻松很 多。但是世间事不会如此幸运，因为现实生活中，并不是所有的产品经理都这么棒。作为一个对项目完成负责的项目经理，当你们组没有一个好的产品经理的时候， 你必须意识到，你至少要扮演好一半的产品经理，除非你本身对项目的完成也没什么责任感。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;2.管理需求的人要平衡工期和功能友好程度&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;需求其实有两个极端，一个是尽善尽美，尽可能的让功能更友好，用户体验更佳；一个是尽早交付，一切改善性的需求都可以牺牲。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;只满足前者，项目工期可能会不断的拖延，因为很多功能的工作量其实是在细节的优化，而不是主要流程的完成。只满足后者，很可能会出现一个让用户很不满意的产品。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;一个有经验或者产品意识很好的产品经理，可以很好的平衡好这两点。如果产品经理不能平衡好，那只好依赖项目经理来平衡。这点，如果产品经理或项目经理不是天才的话，只能通过经验来学习。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;比 如我们在做一个注册的页面，里面有个城市的输入框。城市的输入框可以做得很友好。如果要项目尽早完成，那么这个输入框我们只要让用户自己输入就行。一个比 较好的设计就是两个下拉环框，一个选择省份，然后再选择城市。但是一个更好的设计是让用户既可以选择，也可以自由的在这个输入框里面输入拼音首字母，汉 字，然后系统就会自己显示相匹配的城市让用户选择。后两者的改进肯定会花时间，但是如果这两种改进都不做，让用户只是自由输入的话，后期维护的时候就会出 现用户输入不标准的城市数据，如果我们需要用户的城市数据做一些其他功能，就会有错误数据的风险。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;3.懂得对不重要的需求说不&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;如 果你不能平衡好工期跟功能改进的话，有一点你一定要意识好，就是你一定要懂得对不重要的需求说不。这很简单，你对一个需求说不，只要这个需求不是一个会造 成其他功能依赖的核心需求，就算这个需求后面发现必须实现，你可以补上，总体工作量并没有增加。但是如果你花资源去完成了这个需求，后面却发现这个需求是 不重要的或者可以简化的，那你已经浪费了一些工作量。两者的代价相比，明显前者的代价比较小。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;4.理好需求优先级&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;需求的优先级应该满足如下几点：&lt;/span&gt;&lt;/div&gt;
&lt;blockquote style=&quot;line-height:23px; font-size:15px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:40px; text-align:left; border-top-style:none; border-right-style:none; border-bottom-style:none; border-left-style:none; border-width:initial; border-color:initial; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px&quot;&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;a.确定不变的需求应该先完成，如果项目组去完成了一些功能，结果后面发现需求要改，那前期的一些工作量已经浪费了。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;b.被其他需求依赖的需求应该先完成，只有这样，才能不挡住依赖它的需求的开发。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;比如登录功能，很多登录后的页面都需要当前登录的用户信息。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;c.主流程，或者核心需求应该先完成，改善性的需求应该后完成。&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div style=&quot;width:668px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;比如信息列表页面，很多功能需要用户在信息列表里面选择要操作的记录。因此信息列表是核心需求。而在信息列表页里面一个列显示格式的美化，这属于改善性需求。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#风险管控&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;风 险管控是项目经理一个非常重要的技能。一个好的项目经理应该尽量在早期把所有的风险都列出来，一个一个解决。一个流畅的项目，从前期到后期风险点应该是倒 三角形的，就是前期风险很多，后期风险越来越少。而项目管理不畅的，则是一个正三角形，上面风险少，到后期风险就多了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理应该尽可能的找出所有的风险点。假设有一个点，你不确定他是不是有风险的，那即使我们把早期把它当做一个风险点重视起来，带来的代价也远远小于在后期等它爆发出来的时候再处理。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我们现实中就有一个很适合的例子。我们有一个功能是SSO，让合作方去调用我们的接口实现免登录直接从他们的站点跳转到我们的站点继续使用。因为关系到第三方，所以我们前期就有些担心到时候这一块会不会出现什么东西不可控。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;不过大家也就是想想而已，没有太在意。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;在 项目后期的时候，需要跟第三方站点联调，通过他们的站点来测试我们的SSO接口和接下去的流程是不是可用的。结果这时候发现，因为第三方安全管控很严格， 外部人员无法访问他们的站点。于是我们的测试工作就停滞在那边。后面弄得鸡飞狗跳，两个公司的IT以及架构组的人讨论来讨论去看这个问题怎么解决。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;发布时间最终还是因为这一点拖延了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#外部依赖最不可控&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;风 险管控还有个要点要记住，项目组能处理的问题，算是小问题。需要项目组外的人员处理的，才是大问题。因为项目组外的人员不受你调配，他应承你的时间不一定 是你满意的时间；即使是你满意的时间，也不一定真的就能确保在那个时间完成；就算真的完成了，也不一定就达到你想要的效果。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#必要的时候，任务要步步紧跟&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理并不是把任务简单分出去就可以不管的。如果你的开发人员不是很有经验，或者技术实力很强，思维很缜密，那你应该紧紧的跟进你分发出去的任务。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;1.你应该经常去看一下他们的任务开发到了什么程度，可以的话，让他运行给你看一下。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;2.问一下有没有什么问题，有什么可以帮助他的。因为很有可能他就有个问题在纠结，而其实你因为经验或者了解更多的背景，很简单就为他指出简单的解决方案。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;3.你在检查的过程当中，也会有可能发现一些他可能还没发现的问题，或者跟这个任务相关联的问题。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;任务的完成进度和完成质量，是影响项目进展的一个重要因素。项目经理的一个主要职能，就是帮助每个任务的快速推进。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#做当前，看后续&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;当我们把当前的做的迭代的需求，流程，依赖以及其他的疑问理清楚，让项目组可以顺利推进的时候，项目经理不应该再专注在当前的迭代，而是要开始想整理下一个迭代的事情，让大家在完成当前迭代的时候，不需要暂停在那边，去等待梳理下一个迭代的问题。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;举一个例子，当前的迭代我们在做用户登录的功能，做完这个迭代，接下去我们就要做登录完的首页展示。开发组在做登录的时候，项目经理也跟着在那边捣腾登录的细节。等下一个迭代开始的时候，项目组才发现首页展示只有原型图，UI  跟HTML都还没做出来，而其他功能更没有准备。于是项目组就只好花两三天的在那边等UI和HTML。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#固定的项目组成员&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;这是一个很简单的要求，但是并不是所有的人都会重视。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;正如随便加一个开发人员进来并不能够立刻让整个项目进展加快，换一个人的话，整个进展肯定也会受影响。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#组员潜力&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;每 一个程序员，测试人员，美工，产品经理，都比你想像的要聪明。如果你没有对你组员的能力有个清晰的认识，那你可以尝试给他的任务增加一些难度，超过你原来 的预期一点点。他能完成，你以后可以再增加一些难度。直到他直接跟你说他搞不定。如果你觉得你已经有个清晰的认识了，那你也应该记得，只是你觉得。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我们有一个项目，里面有个很棒的程序员Joy，平常是个很低调的人。项目经理分任务的时候，就给他几个特定的模块让他完成。他也坚守岗位，做好他份内的事。项目因为种种原因，不断的拖延。但是Joy还是很诚实的做好他的本分。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;后来有人跟Joy讲，你以后要把自己当dev  lead看，所有开发的事情你统筹。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;Joy还是一个很低调的人，他继续做他本分的事情，只不过这次的本分就是统筹负责所有的开发问题。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;接下去就是项目的问题一个接一个的被快速解决掉，其他程序员也得到强有力的帮助，快速处理到自己手头中的bug。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目进展很快赶上了原来的计划。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;你真的很好的发挥了你组员的潜力了吗？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#人人看到全盘&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目经理能够很好的分配好任务，让各个组员可以较独立的工作，这是不错，但也不见得就是好事。因为软件开发是一个团体的工作，各个人做的事情之间都有交叉。我做的功能，接下去就要调用你的接口。你做的页面，接下去就要跳转到我的。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;Bruce做一个功能，是要显示公司人员信息的列表。里面有个操作，选择一个人员计算出勤率。这个操作不是Bruce完成了，他只要直接调用Lisa的页面，Lisa的页面会直接计算出勤率并显示出来。Bruce认识，他只要简单传一个人员的ID过去就可以了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;Lisa做这个出勤率的页面，因为这个人员是属于业务人员，经常要在分公司跑，所以只能计算他在某一个分公司的出勤情况。她以为大家都知道。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;等大家都完成了，QA在测试的时候，发现在人员信息列表里面点进去，显示不了出勤页面。整个流程都走不通了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;后来才发现有2个问题没解决好，一个人员信息跳转到出勤页面前要传递当前的分公司信息，一个是出勤页面还要增加选择分公司的功能。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;这2个问题一个是QA测出Bug，一个是需求还有不足。而这本来是应该在开发周期内就可以发现并解决的问题。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;根源就在于，Bruce跟Lisa在做手头任务的时候，都没有去考虑跟其他人的关联。而他们2个人都没有去考虑的话，其他人更不会去考虑了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;如果Bruce或者Lida在做任务的时候，去想想他们彼此怎么串联起来，这问题本身就很简单了。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目组的每个人，可以重点在自己手头的任务，但是思路必须是在全盘，大家脑子里面都要经常去想想，整个系统是什么样子的，我的功能前后的依赖是什么样的。项目经理平常要引导大家这样想。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#一定要分成每一个小迭代&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;步 伐迈得太大了，你就不知道你迈得对不对，迈得够不够快。项目是不可能一步到位的。把一个大目标分解成每一个小目标，整个项目工期分成若干个短迭代，一个一 个的完成。每一个完成的小目标都能帮助你理清整个项目的进度，方向，帮助你审核一下目前的思路是对的还是错的，出错了，也能够及时的调整。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#不做一半的功能&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;如果我们做了2个功能，但是我们每个功能都做了一半没全部完成，那目前为止我们总计完成了多少个功能？1个？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;不是的，完成了0个。一个功能除非真正完成并且通过产品经理的检查，不然你永远不能确定这个功能是不是还有一些遗漏的地方。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;100个完成度为90%的功能合起来，完成的功能还是0个。你很兴奋你的程序里面有很多功能，但是你试了一个又一个，结果发现每个功能都是半成品，没有一个功能可以正确解决你的问题。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;对于半成品的功能：&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;1.你其实并不知道你还剩多少工作量，因为已经&amp;ldquo;完成&amp;ldquo;的工作不能验证说是真正完成的。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;2.你没法给业务部门或者客户做演示，因为这些功能没做完。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;3.如果业务部门让你暂停一下，就先按照目前已有的功能去让客户测试一下，你会哑巴吃黄莲，有苦说不出。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;所以我们做功能的时候，要确保我们在做的功能已经是真正完成了，我们再去接着做下一个功能。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#不让细节影响你的目标&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;项目组的人很容易沉浸在功能的细节当中，为一些友好美观的显示，炫丽的功能或者很酷的设计浪费大把的时间，忘记了这个项目的最终目标是什么。其他人可以投入，但是项目经理一定要能够抽身事外，专注在项目的全局。沉浸在细节当中很容易让人忘记工期，忘记项目的最终目标。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我这个提示信息的颜色会不会太淡了？要不要再调深一些？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我这个按钮是不是可以往左边移10像素，这样更好看？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;这个地方要不要来一个自动提示，这样会更友好一点？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我这个面板的显示要不要使用渐变的？1秒内渐变完成会不会太快？用户会不会还没看够？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;你先把功能完成再说好吗？以后有的是大把的时间美化这些。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#正确的里程碑要点&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;我们碰过一个项目，项目经理的报告说，目前的状态是开发完成。结果一看，这样说的依据是分配到所有开发人员的任务，开发人员都认定为完成了。于是大家就认为目前是开发完成，进入QA测试的阶段。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;结果QA报怨测试不下去，流程都走不通。产品经理进去看了一下，也说很多地方功能缺失。根本不能认定为开发完成。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;1.一个项目，或者一个短迭代，应该先列出一个所有人都认同的里程碑列表。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;比如，分为框架设计完成；分解出来的需求已经可用于开发；子任务划分完成；子任务已经分配并预估完成；各子任务完成；开发人员整合测试完成；产品经理检查通过；QA测试通过。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;2.每个里程碑的完成要有大家都认同的验证方式&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;比如如何判断开发人员整合测试完成，是不是开发人员坐在一起或者开发组长把所有流程都走过一遍，然后发现没有什么大的问题？&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;&lt;strong&gt;#自我管理&lt;/strong&gt;&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;前面讲了这么多，弄得好像项目经理很重要，缺了这个项目经理整个项目就不转了。如果项目经理的手下是固定的，只不过做的项目不一样，那我建议项目经理在完成项目的基础上，一定要考虑这样一个目标：&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;建立一套流程，一套大家都熟悉并且会遵守的流程。这个流程可以保证整个项目组在项目经理不在的情形下，也可以运转得很好。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;目 前项目处在什么阶段，这个阶段大家要做什么，下一个阶段是什么；这个阶段有什么任务要做；每个阶段碰到问题要怎么处理；每种任务或者问题由谁来处理。这些 并不是很难学会的东西。项目的成员经历过几次，很容易就可以理解要怎么做。项目经理除了推进项目以外，还要在项目的过程中把流程的思路，解决各种问题的思 路教给大家，同时明确每个人的职责，达到项目组可以自我管理的程度。&lt;/span&gt;&lt;span style=&quot;display:block; margin-top:12px; margin-right:0px; margin-bottom:4px; margin-left:0px&quot;&gt;一个可以自我管理的项目组，才是一个稳定高效的项目组。项目经理才可以抽身出来，同时去做一些其他的对部门，对公司同时也对自己有利的事情。&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; --------转摘自&lt;a href=&quot;http://blog.csdn.net/wingel/article/details/7517385&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;Wingel的专栏&lt;/span&gt;&lt;/a&gt; http://blog.csdn.net/wingel/article/details/7517385&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Fri, 27 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>利用流来提高图片在服务器响应时间</title>
            <link>http://www.9streets.cn/art-php-525.html</link>
            <description>&lt;p&gt;前面谈过&lt;a href=&quot;http://www.9streets.cn/art-php-455.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;如何巧用外部资源，尽可能减低服务器负载&lt;/span&gt;&lt;/a&gt;,CSS 通过合并压缩，JS进行压缩小文件大小来加快服务器的响应的时间,在网站看到一篇用流的形式来加载图片，速度快上好几倍， 采用MXHR技术，MXHR全称为Multipart  XMLHttpRequest。它允许客户端只用一个HTTP请求就可以从服务端向客户端传送多个资源。这样就能节省大量的时间,因为HTTP请求是很花 时间的。在本例中所有的图片只进行了一次HTTP请求,并不是每张图片一次请求。所以理论上能提高3-5倍的加载速度。对于上一次纯HTML和JS的代 码,本次在后台还使用了PHP。利用PHP读取图片,并将其转为base64编码。这里要说明的是对于img标签的src它不仅支持直接写图片路径,还可 以用这样的方式：&lt;br /&gt;
&lt;img width=&quot;891&quot; height=&quot;244&quot; src=&quot;/userfiles/MXHR.jpg&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Mxhr的却减少了HTTP请求的数量，但是也有浏览器自身的限制，由于IE6,7中的xmlhttp请求不支持readyState为3的情况，而且不支持图片的：&lt;/p&gt;
&lt;p&gt;img.src = 'data:image/png;base64,' + imageData;&lt;br /&gt;
下面是网上的一个实例，如何利用JS+PHP实流加载图片，&lt;a href=&quot;/userfiles/MXHR.rar&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;MXHR PHP版实例&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Fri, 27 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>jquery可拖动DIV自定义保存到数据</title>
            <link>http://www.9streets.cn/art-php-524.html</link>
            <description>&lt;p&gt;看到一个不错的jquery插件，可拖动DIV，顺序可保存到数据库的一个实例：这里就以其中PHP实例简单说明一下：&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_9265')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_9265&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;lt;?php&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//post到后台的数据&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$_POST&lt;/span&gt;&lt;span&gt;)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$ids&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$_POST&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;ids&amp;quot;&lt;/span&gt;&lt;span&gt;];&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;func&quot;&gt;count&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$ids&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;+=1)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$id&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$ids&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;];&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$ordinal&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;//...&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;?&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;!DOCTYPE&amp;nbsp;html&amp;nbsp;PUBLIC&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;-//W3C//DTD&amp;nbsp;XHTML&amp;nbsp;1.0&amp;nbsp;Transitional//EN&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;html&amp;nbsp;xmlns=&lt;span class=&quot;string&quot;&gt;&amp;quot;http://www.w3.org/1999/xhtml&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;lt;head&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;style&amp;nbsp;type=&lt;span class=&quot;string&quot;&gt;&amp;quot;text/css&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;body&amp;nbsp;{&amp;nbsp;font-family:Arial;&amp;nbsp;font-size:12pt;&amp;nbsp;padding:20px;&amp;nbsp;width:&amp;nbsp;800px;&amp;nbsp;margin:20px&amp;nbsp;auto;&amp;nbsp;border:solid&amp;nbsp;1px&amp;nbsp;black;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h1&amp;nbsp;{&amp;nbsp;font-size:16pt;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;h2&amp;nbsp;{&amp;nbsp;font-size:13pt;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ul&amp;nbsp;{&amp;nbsp;width:350px;&amp;nbsp;list-style-type:&amp;nbsp;none;&amp;nbsp;margin:0px;&amp;nbsp;padding:0px;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;li&amp;nbsp;{&amp;nbsp;float:left;&amp;nbsp;padding:5px;&amp;nbsp;width:100px;&amp;nbsp;height:100px;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;li&amp;nbsp;div&amp;nbsp;{&amp;nbsp;width:90px;&amp;nbsp;height:50px;&amp;nbsp;border:solid&amp;nbsp;1px&amp;nbsp;black;&amp;nbsp;background-color:#E0E0E0;&amp;nbsp;text-align:center;&amp;nbsp;padding-top:40px;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;.placeHolder&amp;nbsp;div&amp;nbsp;{&amp;nbsp;background-color:white!important;&amp;nbsp;border:dashed&amp;nbsp;1px&amp;nbsp;gray&amp;nbsp;!important;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/style&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;lt;/head&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;body&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;type=&lt;span class=&quot;string&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;src=&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h1&amp;gt;jQuery&amp;nbsp;List&amp;nbsp;DragSort&amp;nbsp;PHP&amp;nbsp;Example&amp;lt;/h1&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;a&amp;nbsp;href=&lt;span class=&quot;string&quot;&gt;&amp;quot;http://dragsort.codeplex.com/&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;Homepage&amp;lt;/a&amp;gt;&amp;lt;br/&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;br/&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;h2&amp;gt;Save&amp;nbsp;list&amp;nbsp;order&amp;nbsp;with&amp;nbsp;ajax:&amp;lt;/h2&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;ul&amp;nbsp;id=&lt;span class=&quot;string&quot;&gt;&amp;quot;gallery&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;?php&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$list&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;array&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;blue&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;orange&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;brown&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;red&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;yellow&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;green&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;black&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;white&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;purple&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt;&lt;span&gt;&amp;nbsp;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;0;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;lt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;func&quot;&gt;count&lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$list&lt;/span&gt;&lt;span&gt;);&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;+=1)&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;func&quot;&gt;echo&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;lt;li&amp;nbsp;data-itemid='&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;'&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;func&quot;&gt;echo&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;lt;div&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$list&lt;/span&gt;&lt;span&gt;[&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$idx&lt;/span&gt;&lt;span&gt;]&amp;nbsp;.&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;lt;/div&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;func&quot;&gt;echo&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;?&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/ul&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;type=&lt;span class=&quot;string&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;src=&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;jquery.dragsort-0.5.1.min.js&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;script&amp;nbsp;type=&lt;span class=&quot;string&quot;&gt;&amp;quot;text/javascript&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;comment&quot;&gt;//saveOrder为回调函数&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$(&lt;span class=&quot;string&quot;&gt;&amp;quot;#gallery&amp;quot;&lt;/span&gt;&lt;span&gt;).dragsort({&amp;nbsp;dragSelector:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;div&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;dragEnd:&amp;nbsp;saveOrder,&amp;nbsp;placeHolderTemplate:&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;lt;li&amp;nbsp;class='placeHolder'&amp;gt;&amp;lt;div&amp;gt;&amp;lt;/div&amp;gt;&amp;lt;/li&amp;gt;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span&gt;&amp;nbsp;saveOrder()&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt;&lt;span&gt;&amp;nbsp;data&amp;nbsp;=&amp;nbsp;$(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;#gallery&amp;nbsp;li&amp;quot;&lt;/span&gt;&lt;span&gt;).map(&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;function&lt;/span&gt;&lt;span&gt;()&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt;&lt;span&gt;&amp;nbsp;$(this).data(&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;itemid&amp;quot;&lt;/span&gt;&lt;span&gt;);&amp;nbsp;}).get();&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;comment&quot;&gt;//通过ajax模拟post的方式,post格式形式为：[0,&amp;nbsp;1,&amp;nbsp;2,&amp;nbsp;5,&amp;nbsp;4,&amp;nbsp;3,&amp;nbsp;8,&amp;nbsp;6,&amp;nbsp;7]&amp;nbsp;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;$.post(&lt;span class=&quot;string&quot;&gt;&amp;quot;example.php&amp;quot;&lt;/span&gt;&lt;span&gt;,&amp;nbsp;{&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;ids[]&amp;quot;&lt;/span&gt;&lt;span&gt;:&amp;nbsp;data&amp;nbsp;});&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/script&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div&amp;nbsp;style=&lt;span class=&quot;string&quot;&gt;&amp;quot;clear:both;&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;gt;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;/body&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;lt;/html&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;下面是组件的下载地址：&lt;a href=&quot;/userfiles/dragsort-0_5_1.zip&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;jquery可拖动DIV自定义保存到数据插件&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Sun, 22 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>Safari自带调试工具</title>
            <link>http://www.9streets.cn/art-php-523.html</link>
            <description>&lt;p&gt;需要在safari&lt;a href=&quot;http://www.9streets.cn/art-php-486.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;浏览器上调试&lt;/span&gt;&lt;/a&gt;项目兼容性，习惯了firebug，没有用起来总不习惯，百度搜了一下，原来safari自带了像chrom的调试工具，只是隐藏的比较深而已。&lt;br /&gt;
打开调试工具方法：菜单栏-&amp;gt;编辑-&amp;gt;偏好设置-&amp;gt;高级-&amp;gt;勾上在菜单栏显示&amp;quot;开发&amp;quot;菜单&lt;br /&gt;
&lt;img width=&quot;734&quot; height=&quot;348&quot; alt=&quot;&quot; src=&quot;/userfiles/safari.gif&quot; /&gt;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Sun, 15 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>mysql取某个分组前几条数据</title>
            <link>http://www.9streets.cn/art-php-522.html</link>
            <description>&lt;p&gt;需求：在一个总表里查询每天票数前3名的作品(&lt;span&gt;&lt;span&gt;Tbl_ScoreDetail&lt;/span&gt;&lt;/span&gt;),刚开始就叭啦写了一个group by语句，但查询出为的结果并不是自己想的:&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_7442')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_7442&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-sql&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;select&lt;/span&gt;&lt;span&gt;&amp;nbsp;*&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt;&lt;span&gt;&amp;nbsp;Tbl_ScoreDetail&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;GROUP&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;BY&lt;/span&gt;&lt;span&gt;&amp;nbsp;FDate&amp;nbsp;limit&amp;nbsp;3&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&lt;img width=&quot;759&quot; height=&quot;361&quot; src=&quot;/userfiles/group+by+limit.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
只查出了三条每天一条的数据，意识到sql问题了,用limit本身只会显示ilimit条数，想想用group by达不到需求，百度了一下，找到达到同样此需求的，采用是一个寻找位置的原理：&lt;br /&gt;
先查出当前票数，再查找比大于当前票数的条数，如果小于3，说明此条数据是在前3条以内，达到想要的需求，2说明是在排行第三，1排行第二，0排队行第1&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;SQL Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_2140')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_2140&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-sql&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;select&lt;/span&gt;&lt;span&gt;&amp;nbsp;FDesQQ,FScore,FDate&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt;&lt;span&gt;&amp;nbsp;Tbl_ScoreDetail&amp;nbsp;a&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;where&lt;/span&gt;&lt;span&gt;&amp;nbsp;3&amp;nbsp;&amp;gt;&amp;nbsp;(&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;select&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;func&quot;&gt;count&lt;/span&gt;&lt;span&gt;(*)&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;from&lt;/span&gt;&lt;span&gt;&amp;nbsp;Tbl_ScoreDetail&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;where&lt;/span&gt;&lt;span&gt;&amp;nbsp;FDate&amp;nbsp;=&amp;nbsp;a.FDate&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;op&quot;&gt;and&lt;/span&gt;&lt;span&gt;&amp;nbsp;FScore&amp;gt;&amp;nbsp;a.FScore&amp;nbsp;)&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;img width=&quot;898&quot; height=&quot;439&quot; src=&quot;/userfiles/fscore.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时候显示的数据和需求想要的很接近了，为什么说接近，仔细看会发现有的数据是4条有的数据只有3条，因为有的票数可能会有相同性：&lt;br /&gt;
下面是根据每种情况做了一张图，为了让大家要看了这张图理解更深一点：&lt;br /&gt;
&lt;img src=&quot;/userfiles/compare+count.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
如果只要求显示3条，可以再根据需要的条件加个group by一下就可以了，有好的方法各位童鞋也可以贴一下，欢迎交流&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Thu, 12 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>what should i do</title>
            <link>http://www.9streets.cn/art-php-521.html</link>
            <description>&lt;p&gt;是没耐心，还是自己沉不住气，自己跟自己说了N遍：淡定，淡定&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;有点乱&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;都说平和性格的人包容性很大&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;今天都快沉不住了，有点想发飙了&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;是自尊还放得不够低，还是自己不服气，还是缺失了反抗的意志&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;想成为什么样的人，就到什么人的旁边&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;所以选择了坚持&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;坚持在迷失和坚定徘徊着。。。。&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;连神都救不了自己的年代&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;靠别人不如靠自己，自己动手丰衣足食&lt;/p&gt;
&lt;br /&gt;
&lt;p&gt;跟自己说的句话：孩子学会淡定吧！除了淡定还是淡定&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Tue, 10 Apr 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>centOS安装flash play</title>
            <link>http://www.9streets.cn/art-php-520.html</link>
            <description>&lt;p&gt;首先下载一个linux flash play安装包，gz后缀的安装包,tar -zxvf 安装包&amp;nbsp; 得到一个libflashplayer.so文件,查找火狐安装插件文件所在位置,一般默认是在/usr/lib/火狐名字/&amp;nbsp; 不同的linux版本后面文件夹位置有点不同然后里面有一个plugins文件夹,拷贝到插件文件便可，示例：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;XML/HTML Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_2439')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_2439&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;[root@localhost&amp;nbsp;plugins]#&amp;nbsp;cp&amp;nbsp;/home/franklin/下载/libflashplayer.so&amp;nbsp;/usr/lib/mozilla/plugins/&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;重启火狐，便可看到flash了&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Wed, 28 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>centOS时间差8个小时</title>
            <link>http://www.9streets.cn/art-php-519.html</link>
            <description>&lt;p&gt;前面说了&lt;a href=&quot;http://www.9streets.cn/art-php-518.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;安装虚拟工具&lt;/span&gt;&lt;/a&gt;，centOS时间差8个小时，在安装centOS系统时候，linux系统默认了某一个国家地区时间，时间和本地时间不同步。点击-&amp;gt;右上角时间-&amp;gt;编辑-&amp;gt;选择中国+8时间-&amp;gt;设置输入root密码便可,如图:&lt;br /&gt;
&lt;img width=&quot;560&quot; height=&quot;437&quot; src=&quot;/userfiles/linuxtime.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&lt;img width=&quot;334&quot; height=&quot;347&quot; src=&quot;/userfiles/linuxtimeset.jpg&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Wed, 28 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>CentOS安装中文语言包</title>
            <link>http://www.9streets.cn/art-php-518.html</link>
            <description>&lt;p&gt;其中通过yum方式安装的最简单快速，主要连网直接可以更新:&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;XML/HTML Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_1751')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_1751&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;yum&amp;nbsp;groupinstall&amp;nbsp;&amp;quot;Chinese&amp;nbsp;Support&amp;quot;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;装完中文语言包之后,它不会自己变成中文,得修改文件/etc/sysconfing/i18n,没有的话创建！内容改成如下:&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;XML/HTML Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_4356')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_4356&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;LANG&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;zh_CN.utf8&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;SUPPORTED&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;zh_CN.UTF-8:zh_CN:&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;attribute&quot;&gt;SYSFONT&lt;/span&gt;&lt;span&gt;=&lt;/span&gt;&lt;span class=&quot;attribute-value&quot;&gt;&amp;quot;latarcyrheb-sun16&amp;quot;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
然后reboot重新登陆一下,显示的就是中文了.&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Wed, 28 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>在虚拟机centos 6.2版安装VMware tool同时共享文件</title>
            <link>http://www.9streets.cn/art-php-517.html</link>
            <description>&lt;p&gt;先共享本地主机文件夹&lt;br /&gt;
在未启动虚拟机的情况下，如图：点击centOS-&amp;gt;编辑虚拟机设置-&amp;gt;选项-&amp;gt;共享文件夹-&amp;gt;选择总是启用-&amp;gt;点击添加-&amp;gt;选择要共享的文件夹&lt;br /&gt;
&lt;img src=&quot;/userfiles/vmwareshare.gif&quot; alt=&quot;&quot; /&gt;&lt;br /&gt;
安装虚拟机工具|&lt;br /&gt;
1.在centos启动情况下，虚拟机菜单-&amp;gt;虚拟机-&amp;gt;安装VMware tool 点击之后会在centos桌面弹出一个DVD的光盘，里面有 VMwareTools-8.8.2-590212.tar.gz安装包,把它解压到其他目录（或先拷贝过去再解压，因为当前目录相当于是光驱，只读的），解压后得到一个 vmware-tools-distrib/文件夹，运行里面&amp;nbsp; vmware-install.pl脚本文件&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span class=&quot;copyCodeText&quot; style=&quot;cursor:pointer&quot; onclick=&quot;copyIdText('code_2757')&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_2757&quot;&gt;
&lt;ol class=&quot;dp-xml&quot; start=&quot;1&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;cd&amp;nbsp;/media/VMware\&amp;nbsp;Tools\&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;cp&amp;nbsp;&amp;nbsp;VMwareTools-8.8.2-590212.tar.gz&amp;nbsp;/home/franklin/&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;cd&amp;nbsp;/home/franklin/&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;tar&amp;nbsp;-zxvf&amp;nbsp;&amp;nbsp;VMwareTools-8.8.2-590212.tar.gz&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;cd&amp;nbsp;vmware-tools-distrib&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;./vmware-install.pl&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
一路enter和输入y就可以了&lt;br /&gt;
安装成功后,重新启动CentOS，你就会发现新的萤幕解析度出现，并且鼠标不需再切换，且可使用拖曳的方式传档。同时 cd /mnt/hgfs/共享名字 就看共享的内容了&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Tue, 27 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>Determining IP information for eth0</title>
            <link>http://www.9streets.cn/art-php-516.html</link>
            <description>&lt;p&gt;在VM虚拟机中，如果是新安装 的LINUX，在加载网络时，有可能会出现&amp;ldquo;Determining IP information for eth0...failed;no link present. Check cable?&amp;rdquo;提出，并且不能加载网卡。 &lt;br /&gt;
解决方法：&lt;br /&gt;
1、关闭当前正在运行的Linux&lt;br /&gt;
2、重新启动主机&lt;br /&gt;
3、进入 VMWARRE WORKSTATION，打开&amp;ldquo;虚拟网络设置&amp;rdquo;，删除VMNET1和VMNET8虚拟网卡，单击&amp;ldquo;确定&amp;rdquo;按钮，退出VM&lt;br /&gt;
4、再次进入VM ，再次打开&amp;ldquo;虚拟网络设置&amp;rdquo;，添加VMNET1 和VMNET8虚拟网卡&lt;br /&gt;
5、再次进入LINUX，这样就可以了。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 26 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>现在的我</title>
            <link>http://www.9streets.cn/art-php-515.html</link>
            <description>&lt;p&gt;在几段时间跟部门老大劲哥见中海龙客户路途中，劲哥问我：你是适合搞技术的人员吗？我答不上来：对新技术知识的亢奋，对未知探索根本，对业务表达能力不够，跟别人的谈判能力，骨子里的不服输.以前在同学眼中，是一个傻不拉叽，没头没脑的家伙，现在多了几分淡定和迷失,给自己做了SWOT分析一下：&lt;br /&gt;
strength（优势)&lt;br /&gt;
喜欢摸索,每遇到一个新知识点的时候，足够让我兴奋好几天，全心投入总要摸清是个啥玩意.在PHP技术行业摸滚打爬了快三年，主要以MVC开发为主，自己能独立开发，能快速进入二次开发状态，对memcache能熟悉应用，能分表，简单优化数据库，对SEO，项目标准化流都有相关了解，会整理一些文档性资料，能很快&lt;a href=&quot;http://www.9streets.cn/art-php-485.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;发觉自身不足&lt;/span&gt;&lt;/a&gt;，并进入调节阶段，学习能力比较强。在做腾讯外包项目中，学会了细心，担当，抗压性强&lt;br /&gt;
weakness（弱势）&lt;br /&gt;
在业务上，没有实际大型网站应用开发过，这两年主要是以开发中小型网站为主，对电子商务平台一直处于围观边缘，对技术还没达到痴迷状态，对网站架构方面知识有所欠缺，&lt;a href=&quot;http://www.9streets.cn/art-php-494.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;典型一个2B挨踢男&lt;/span&gt;&lt;/a&gt;。在业务上表达能力，跟别人的谈判能力不足，在说话、待人处事上不够展现自己的能力，常常打个半折。（一直想跟在工作，生活上不给面子指点的老大一直走下去，不知道自己是太过于谦虚，人家下不了手，还是自己能力不够，还是不够诚心，还在纠结中...)&lt;br /&gt;
opportunity（机会）&lt;br /&gt;
很容易进入一家开发型的公司，但这不是自己想要的，自己一直要走的路子是：半技术半业务的趋向管理的路线。能辅助项目经理做助理性工作（很需要这样的工作，希望在团队建设，项目如何开展和推进方面多多学习）.&lt;br /&gt;
threat（威胁）&lt;br /&gt;
对linux这块一直处理浅尝辄止状态，只会简单的编辑，复制（这段时间正在恶补linux方面的知识）。服务器，架构方面,数据高级优化是最近要从中级转到高级IT开发的一个坎，无实际操作这个坎永远跨不出去,这将是下面的学习近期目标.&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 26 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>如何在window让apache下支持perl</title>
            <link>http://www.9streets.cn/art-php-514.html</link>
            <description>&lt;p&gt;首先可以下载一个perl语言解释器，下载以.msi为后缀文件(自己上网load一个安装包)，鼠标双击运行便可，这是一个WindowsInstaller Packge格式的安装包,&lt;br /&gt;
一路next下去就可以了。下面重点说的如何在apache里面支持perl：&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 1.进入APACHE的CONF目录下，以文本方式打开HTTPD.CONF文件。&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 2.查找ServerName,把前面的＃去掉，后面改为你的主机名（一般用localhost)。当然有的版本已经设置好了，那么你就不要动了。&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 3.查找 #ScriptAlias /cgi-bin/ &amp;quot;D:/web/apache/cgi-bin/&amp;quot;，把前面的 # 号去掉(至于安装路径每个apache版本安装路径稍稍有点不同,路径根据自个儿情况设置)。&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 4.查找 AddHandler cgi-script .cgi，在后面加上一个空格和 .pl。 即 AddHandler cgi-script .cgi .pl&lt;br /&gt;
&amp;nbsp;&amp;nbsp; 5.查找 &amp;lt;Directory &amp;quot;D:/web/apache/cgi-bin&amp;quot;&amp;gt;，下面有一句 AllowOverride, 把后面的参数去掉,改为 All。&lt;br /&gt;
即：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;&lt;span onclick=&quot;copyIdText('code_8195')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;
&lt;div id=&quot;code_8195&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-xml&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;Directory&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;quot;D:/web/apache/cgi-bin&amp;quot;&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;AllowOverride&amp;nbsp;All&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Options&amp;nbsp;None&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Order&amp;nbsp;allow,deny&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Allow&amp;nbsp;from&amp;nbsp;all&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&quot;tag-name&quot;&gt;Directory&lt;/span&gt;&lt;span class=&quot;tag&quot;&gt;&amp;gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp; 查找：Options Indexes FollowSymLinks&amp;nbsp;&amp;nbsp;&amp;nbsp; 修改为 Options Indexes FollowSymLinks ExecCGI&lt;br /&gt;
为了让Apache能够处理Server Side Include，在 httpd.conf 中加入：&lt;br /&gt;
AddType text/html .shtml&lt;br /&gt;
AddHandler server-parsed .shtml &lt;br /&gt;
&lt;br /&gt;
5.　为了让以上修改生效，需要重新启动Apache&lt;br /&gt;
把下面代码&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;PHP Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_6296')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_6296&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;#!c:/Perl/bin/perl.exe&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;##&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;##&amp;nbsp;&amp;nbsp;printenv&amp;nbsp;--&amp;nbsp;demo&amp;nbsp;CGI&amp;nbsp;program&amp;nbsp;which&amp;nbsp;just&amp;nbsp;prints&amp;nbsp;its&amp;nbsp;environment&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;##&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;print&amp;nbsp;&lt;span class=&quot;string&quot;&gt;&amp;quot;Content-type:&amp;nbsp;text/plain;&amp;nbsp;charset=iso-8859-1\n\n&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;keyword&quot;&gt;foreach&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$var&lt;/span&gt;&lt;span&gt;&amp;nbsp;(sort(keys(%ENV)))&amp;nbsp;{&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$val&lt;/span&gt;&lt;span&gt;&amp;nbsp;=&amp;nbsp;&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$ENV&lt;/span&gt;&lt;span&gt;{&lt;/span&gt;&lt;span class=&quot;vars&quot;&gt;$var&lt;/span&gt;&lt;span&gt;};&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$val&lt;/span&gt;&lt;span&gt;&amp;nbsp;=~&amp;nbsp;s|\n|\\n|g;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span class=&quot;vars&quot;&gt;$val&lt;/span&gt;&lt;span&gt;&amp;nbsp;=~&amp;nbsp;s|&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;|\\&amp;quot;|g;&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span class=&quot;string&quot;&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print&amp;nbsp;&amp;quot;&lt;/span&gt;&lt;span&gt;${&lt;/span&gt;&lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt;&lt;span&gt;}=\&lt;/span&gt;&lt;span class=&quot;string&quot;&gt;&amp;quot;${val}\&amp;quot;\n&amp;quot;&lt;/span&gt;&lt;span&gt;;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;}&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
另存为 test.pl文件放到根目录运行，显示出系统相关信息，看到这说明你装成功了,此时系统属性-&amp;gt;环境变量中PATH中有Perl的路径&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Thu, 22 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>如何更改访问局域网共享用户名和密码</title>
            <link>http://www.9streets.cn/art-php-513.html</link>
            <description>&lt;p&gt;经常遇到这样的情况：访问局域网中其它机器时输入用户名和密码，不论密码是否正确，下次重新连接时会默认使用相同的用户和密码。那么如何改变连接的用户名和密码呢？这时我们可以利用net命令来进行用户和密码的修改。&lt;br /&gt;
在cmd窗口下使用net命令：&lt;br /&gt;
1，先使用 net use 查看当前网络连接。（例如我们查到的资源为：\\192.168.1.201\IPC$）&lt;br /&gt;
2，利用net use \\192.168.1.201\IPC$ /del 删除需要更改密码的连接。(这里的路径根据上面查看到的网络连接输入，有可能有多个)&lt;br /&gt;
3，利用net use \\192.168.1.201 user:新的用户名 建立新的连接。在建立连接后会要求输入密码，直接输入就可以了。&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 19 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>在本地解析不了二级域名解决方法</title>
            <link>http://www.9streets.cn/art-php-512.html</link>
            <description>&lt;p&gt;这段时间想试玩一下discuz系统，准备改造成&lt;a href=&quot;http://www.9streets.cn&quot;&gt;九街博客&lt;/a&gt;的频道，在本地配了一个二级域名baike.9streets.cn，如下：&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;PHP Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_3581')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_3581&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;#################################################&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;####百科九街&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;################################################&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;lt;VirtualHost&amp;nbsp;*:80&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;ServerName&amp;nbsp;baike.9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;DocumentRoot&amp;nbsp;/web/www/baike.9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;/VirtualHost&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;访问了下没有效果,解析不了二级域名,在网上找到一篇相关文章，找到了根本原因：&lt;br /&gt;
1. 如果在本地同时配了顶级域名，顶级域名应该是泛域名，才可以不通过DNS自行设置二级、多级域名&lt;br /&gt;
2. 如果不配顶级域名直接按上面配置就可以。&lt;br /&gt;
下面是我在本地配置，在ServerAlias 解析别名里面，不是泛域名，导致&lt;a href=&quot;http://www.9streets.cn/art-php-354.html&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;二级域名解析&lt;/span&gt;&lt;/a&gt;不了,直接把&lt;span&gt;ServerAlias&amp;nbsp;9streets.cn&amp;nbsp;*.9streets.cn 这行去掉，重启apache便可正常访问了&lt;br /&gt;
&lt;/span&gt;&lt;/p&gt;
&lt;div class=&quot;codeText&quot;&gt;
&lt;div class=&quot;codeHead&quot;&gt;&lt;span class=&quot;lantxt&quot;&gt;PHP Code&lt;/span&gt;&lt;span onclick=&quot;copyIdText('code_7013')&quot; style=&quot;cursor:pointer&quot; class=&quot;copyCodeText&quot;&gt;复制内容到剪贴板&lt;/span&gt;&lt;/div&gt;
&lt;div id=&quot;code_7013&quot;&gt;
&lt;ol start=&quot;1&quot; class=&quot;dp-c&quot;&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&lt;span&gt;&amp;lt;VirtualHost&amp;nbsp;*:80&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;ServerName&amp;nbsp;&amp;nbsp;9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;ServerAlias&amp;nbsp;9streets.cn&amp;nbsp;*.9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;DocumentRoot&amp;nbsp;/web/www/9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;/VirtualHost&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;#################################################&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;####百科九街&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;################################################&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;&amp;lt;VirtualHost&amp;nbsp;*:80&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;ServerName&amp;nbsp;baike.9streets.com&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li class=&quot;alt&quot;&gt;&lt;span&gt;DocumentRoot&amp;nbsp;/web/www/baike.9streets.cn&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
    &lt;li&gt;&lt;span&gt;&amp;lt;/VirtualHost&amp;gt;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;
&amp;nbsp;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 19 Mar 2012 16:00:00 +800</pubDate>
        </item>
        <item>
            <title>我在淘宝这7年</title>
            <link>http://www.9streets.cn/art-php-511.html</link>
            <description>&lt;p&gt;今天有同事恭喜我，我才知道自己在淘宝已经七周年了。很多人第一句话就是七年痒不痒，老实说，也曾经痒过，但往往都是一痒而过，又投入到水深火热的工作中去。回家之后就想这七年我到底收获了什么，且不论成败与否，这7年的经历，是我人生的宝贵财富。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-1.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-1.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;@ 正牌七公 曾经说过，要是写一本淘宝的历史书，一定很多人感兴趣，其实我也很想写写这样一本书。2004年12月8日入职的时候，我和@衲子如幻    一起进来，迎接我的是骆冰和@岳旭强 ，骆冰是百阿的班主任，@岳旭强    是我的师父。当时还没有百淘，先参加了百阿，百阿给我发了一本书叫《完美商店》，讲的是ebay的故事，看的时候我就想什么时候我也写一本淘宝的故事来。&lt;/p&gt;
&lt;p&gt;我 进淘宝非常偶然，当时只是看到这个网站做的不错，自己也不想继续做对日外包的工作了，就过来面试了一把。进来的时候我被震撼到了，跟传统的企业非  常不一样，到处都是生机勃勃的样子。还有前台的@香香的好朋友笑的很亲切，原来公司的前台都冷冰冰的。@武当三丰    给我两张笔试题，我估计做的很烂，但是居然通过了。财神面试我的时候，问我为什么到这里来，我说很欣赏这家企业发展这么快，这么快的企业里面一定有很多高  手，跟高手在一起一定成长很快。我每说一句，他点头&amp;ldquo;嗯哼&amp;rdquo;一下，以至于后来我跟老婆形容公司的CEO的时候，她只记得那个喜欢&amp;ldquo;嗯哼&amp;rdquo;的人。&lt;/p&gt;
&lt;p&gt;来 淘宝做的事情是Java开发，但是之前我只做过3个月的Java项目，连eclipse都不熟（但我来之前恶补了一下快捷键的操作）。一开始做事  是在@岳旭强    的手把手的指导下做的，当时非常依赖旁边的几个老员工，多隆、正风、进宝、我行、不同、范禹、天川。做的事情也没有一个成熟的流程，常常是大家在论坛看到   有人叫需要什么功能，我们问问PD是不是需要做，然后就写代码，提交测试（给自在、郭芙、宝驹），然后就让青青打包，让剑英发布。还很清楚的记得做的第一   个需求是，有卖家说不想把货卖给一个心以下的买家、有卖家不想卖给某个省市的买家，于是就给卖家一个工具，他可以限制某些买家不能买。于是我就在发布商品   的流程和生成订单的流程中，找到合适的地方，加了几个合适的参数，写了几段合适的代码，就发布上去了。但是这个功能一直没敢启用，估计是怕买家要叫。直到  3年之后，08年要拆分denali的时候，这段代码都在，但都没有发挥作用。&lt;/p&gt;
&lt;p&gt;做完第一个需求，感觉好牛叉，自己写的代码在系统上运行了，一下子有了信心。当时HR成立了百淘的项目，我先去百淘二期玩了几天（本来要我参加一期的，但当时忙，延迟到了二期，胖胡斐是我百淘同学，现在百淘已经过一百期了），回来就投入到一个更牛叉的项目&amp;mdash;&amp;mdash;支付宝。&lt;/p&gt;
&lt;p&gt;支 付宝一开始生存在淘宝系统上，但到04年底的时候老马已经有眼光看到支付宝的未来了。当时请了sun的一帮人在把淘宝的第一个PHP版本变成  Java版，之后，就让他们做独立的支付宝系统了。我跟天川被从淘宝派出来做支付宝跟淘宝相关的业务，当时除了sun的人，淘宝的人，也来了一位标志性的  人物@fenng    ，他是这个项目的DBA，记得他那时侯刚来杭州，家里装宽带，运营商服务不周到，被他骂了好久。后来（2010年）他在微博上大战中国电信，已经相当有经   验了。项目组里面还有另外几个我非常佩服的人，鲁肃、苗人凤，二人后来成了支付宝的首席系统架构师和业务架构师。就这么跟着这样一伙牛人，鼓捣了3个月，  支付宝在五一节的时候上线了。还记得几个DBA在做数据迁移时候的囧样，数据结构已经面目全非了，@正牌七公、    @fenng、多隆、鲁肃这几个苦逼的家伙愣是搞了3天3夜。我们熬夜的时候还有杭州的卖家跑来看我们，有一位是@淘宝璧君 ，后来直接加入了淘宝。&lt;/p&gt;
&lt;p&gt;当时是多么一派热火朝天的苦逼岁月啊，我三天三夜没回家的时候，老婆还打电话过来问&amp;ldquo;你到底还爱不爱我了？&amp;rdquo;怎么会不爱呢。&lt;/p&gt;
&lt;p&gt;第一年进来是P1，现在已经没有P1了，后来调整过，我当时进来应该是算P3的样子，记得年底的时候三丰给了我4分的评价（超出期望），然后升级为P4了，那是我成长最快的一段岁月。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-2.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-2.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;做 完支付宝，公司给弄了硕大的庆祝仪式，带我们一帮人去了千岛湖。玩的很爽，但我有有点不安，因为我跟这帮人混了3个月，实际上只做了3个功能，一  个是创建支付宝交易的接口、一个是接收支付宝订单状态的接口、一个是绑定和解绑支付宝账号的功能，而另外的牛人们，搞出了那么巨大的一个系统，我处于深深  的拜服中。半年之后，淘宝网的outing又去了千岛湖，后来另外两个项目的庆祝，也去了千岛湖，到后面我都认得那边的道路了。&lt;/p&gt;
&lt;p&gt;从千岛湖 回来，真正苦逼的日子开始了，我很长一段时间都在做擦屁股的工作，擦的就是支付宝系统里面的一些问题。由于支付宝和淘宝是两个独立的系统，  系统之间的通信是一个大问题，而银行跟支付宝也需要通信，于是问题就经常出现：用户在银行付款了，未必能通知到支付宝，支付宝收到通知了，未必能通知到淘   宝，于是用户的钱没了，淘宝的系统上却显示未付款，很让人崩溃。我和鲁肃尝试了很多种办法，一开始用MQ，但并发量上来之后老丢消息，消息的时间顺序也会   错，后来他做了一个消息中间件系统，这个就是淘宝的notify的雏形，现在notify一天能发送几个亿的消息通知，能保证通知到、能保证不重复通知、  能保证消息有次序，相当不容易。&lt;/p&gt;
&lt;p&gt;三丰看我好像在支付宝做了很多事情，而且跟鲁肃他们合作的这么好，还以为我水平大有长进，于是在维护着支 付宝接口的同时，我开始了PM（项目经理）  的生涯。据说我是淘宝的第一个PM，这让我很爽，我在做PM的过程中跟SQA一起整理出了《项目管理流程》、《PM工作手册》、《系统设计模板》等等开创   性的工作，有些东西沿用到了现在。但后来某一日有人提出敏捷的概念的时候，我又在反思，我是不是误导了淘宝的项目开发模式很多年？后来想想，反正当时大家  都不懂，谁说的明白听谁的。&lt;/p&gt;
&lt;p&gt;我的PM生涯从2005年持续到2008年，这三年又大致分为两个阶段，一个是&amp;ldquo;新手上路&amp;rdquo;阶段，自己摸索着 做了【商品详情拆分】、【收藏夹改造】、【支付宝认证】几个项目；另外一个是&amp;ldquo;死去活来&amp;rdquo;阶段，做了【我的淘宝ajax版】、【招财进宝】、【淘宝旅 行】，为什么死去活来，因为后面这3个 项目死了2个，活了1个。&lt;/p&gt;
&lt;p&gt;【商品详情拆分】是在2005年的时候开始做的，三丰说让我当项目经理， 我看到经理两个字吓的半死，但后来知道项目里面就我和拖雷两个人。要做的事  情非常简单，淘宝商品信息表一开始就是一张表，商品的所有信息都在这张表里面，包括商品的详情，用一个clob字段存储的。大家应该知道商品的详情是一个   多么恐怖的字段，据说淘宝商品详情页面如果打印出来平均大概有5米长，当时没这么长，但也很恐怖了，跟其他信息放在一块，严重影响数据的读写性能。于是我   新建一张表，存储商品详情，普通的商品查询不会用到这张表，只在商品详情（detail）页面才会用到，做完之后性能一下子好了很多，我又骄傲了很久。再  后来我知道商品的详情已经不能存数据库了，放到了文件系统上。&lt;/p&gt;
&lt;p&gt;【收藏夹改造】是一个稍微再大点的系统，最早淘宝的收藏夹只能收藏商品，我 跟万剑、领军几个人把收藏夹改造成能收藏店铺、能收藏搜索、能把收藏的内 容分类处理，当时的UI设计可能是@sharkUI    做的，看他一个像素一个像素的扣，才发现他比我们写代码的更苦逼。这个项目算是一个比较完整的项目过程了，我除了写代码，也做些计划之类的东东，所以后来  就开始写项目管理的文档了。&lt;/p&gt;
&lt;p&gt;【支付宝认证】是淘宝的一个创新，淘宝在成立之初就要求卖家实名认证，最早的认证方式是让用户上传身份证照 片，我们去连接公安系统的网站来核对信 息，核对一个要交5块钱，成本相当高。后来浅雪@面我    过来当PD了，提出了一个新的认证方式：我们认为银行里面一定有用户的身份信息，而支付宝又跟银行有合作，那就可以通过银行的用户信息来验证身份了。所以   支付宝认证的原理就是：用户提交身份信息和银行账户，我们往这个账户里面打钱，打进去之后用户填写收到了多少钱（我们号称打过去的是1块钱以内的金额，实   际上只有几分钱），用户填写的跟我们打出的是一致的，那这个人的身份就是对的。这不仅降低了认证的成本，也使认证的效率由原来的一周左右变成一天以内即可  完成。由于我跟支付宝比较熟，又做过PM，就理所当然的做起了这个项目的PM。据说这个项目后来申请了专利，这的确是一个很大的创新。&lt;/p&gt;
&lt;p&gt;这三个项目我做的很顺利，认为自己已经能称得上是&lt;a target=&quot;_blank&quot; href=&quot;http://lusongsong.com/yulu/t/20111204137.html&quot;&gt;项目经理&lt;/a&gt;了，但巨大的失败在后面等着我，由于后面那些想起来太伤心了，先写到这里吧。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-3.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-3.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;2005年年底的时候，我结婚了，跟老婆匆匆领了证就往公司跑，因为当时我负责了一个更大的项目，重构&amp;ldquo;我的淘宝&amp;rdquo;。由于太匆忙，结婚证掉在了半路上，后来有人送到了民政局，结果一天去民政局领了两次结婚证。&lt;/p&gt;
&lt;p&gt;【我 的淘宝】是给会员管理自己的商品、交易、收货地址、评价、投诉的地方，这个地方由于登录之后才能看到，所以风格跟外面完全不一样，很长时间都没  有优化过，样子丑，用户操作也不方便，如果一个人有很多商品，上下架还需要一个一个的操作，非常麻烦。这时候一个重要人物登场了，承志@SharkUI      ，他给我们演示了最牛叉的前端交互技术，就是Gmail上那种ajax的交互方式，可以拖动、可以用右键、可以组合键选择、操作完毕不刷新页面，管理商品  如有神助。除了承志，还有个牛人加入了项目组，一灯@喻策    ，这是他作为PD的第一个项目。再拉上万剑和一伙工程师我们就开搞了，我给这个项目取名alps，就是阿尔卑斯山，淘宝的前台项目叫denali，后台叫   meckley，都是名山，咱这个要更有名。项目的过程中我把电脑桌面换成巍峨的阿尔卑斯山，加班的时候给兄弟们买阿尔卑斯糖，大家干的热火朝天。快要完   成的时候，老马不知道怎么回事突然出现在我身后，看我操作了一遍新版【我的淘宝】之后，问我这是不是客户端软件，我说是网页，他抓狂了，说这跟客户端软件  一样，链接底下连线都木有，上下架用文件夹表示，我都不知道怎么操作了，卖家肯定也不会玩。被他这么一说，我们虽然不服，但也留了个心眼，于是做了一个  beta版的发布，在老的版本之外让一部分用户先体验新的版本。&lt;/p&gt;
&lt;p&gt;接下来淘宝历史上第一个群体性事件爆发了，试用完新版本的【我的淘宝】之 后，很多卖家愤怒了，说不会玩，一灯就和承志一起商量怎么把页面改得像个网  页一点，改了半个月，愤怒依然没有平息，我很无奈地看着这两个人在那里坚持，然后跟老板们商量怎么办。后来我们用了一个很挫的方法给自己一个台阶，到论坛   上让大家投票要不要使用新版【我的淘宝】，投票结果是一半以上的反对。于是这么十来个人做了3个月的系统被杀掉了。我当时只感觉对不起这帮兄弟们，也对不  起自己领的这3个月的薪水，走路都抬不起头来。但这还不是最痛苦的，最痛苦的是我们下线之后，另外一拨卖家不满了，说这么好的功能怎么没有了？&lt;/p&gt;
&lt;p&gt;虽 然【我的淘宝ajax版】挂了，但老板们也没说我什么，我自己诚惶诚恐的总结出了项目过程中的几大罪过，发给大家，警示后人，缓解一下内心的歉  意。到2006年五一的时候，另一个划时代的项目启动了，就是【招财进宝】（我苦逼的连续失去了两个五一节）。财神说要用最好的项目阵容，我被选中了，这   一下子让我觉得我能划分到最好的员工之类，原来正受伤的心又痊愈了。这是一个商品P4P的系统，就是按成交付费。我们认为已经有很多卖家有钱了，但淘宝上   这么多的商品，他们很难被找到，他们愿意花钱让商品排在前面。我们允许卖家购买广告位，把他的商品按一定算法给个排名（类似于百度的竞价排名，但不仅仅看  他出了多少钱，还有信用、成交量、被收藏数量等等，这个算法搞的巨复杂）。这是一个多么牛叉的盈利模式啊！在这个豪华的阵容里面，乔峰@王煜磊    是业务方，浅雪是PD，开发有黄裳、进宝、晓锋、长空，测试有自在、非烟，UED是青桐和@sharkUI，架构师是行癫，DBA是叶开。&lt;/p&gt;
&lt;p&gt;在 我们开发的过程中，乔峰大侠踢球断了腿，于是他soho办公，经常在网络的另一头给我们打气。我当时第一次听说soho这个词，只是别人so的是  home，他so的是hospital。这个系统进行的很顺利，但发布的时候，更大的群体性事件出来了，买家们质疑：你们不是承诺3年不收费么？收广告费   不是收费么？&amp;hellip;&amp;hellip;后来巴拉巴拉很多事，由于有内幕，此处省略500字，以后发到阿里味&amp;hellip;&amp;hellip;然后，这个项目又悲剧了。项目下线的那一天，乔峰先哭了，财神说   男子汉大丈夫要拿得起放得下，晚上去虚竹家请大家吃个饭，算是项目结项了。饭桌上他才喝了两杯，就挂了，我看大家都吃不下去，也不敢多吃。结束的时候我和  小宝送他回家，小宝力气大，背着他，我在旁边撑着伞，路灯下雾蒙蒙的，小雨一直下。&lt;/p&gt;
&lt;p&gt;有人说这个项目的失败，让中国电子商务的成熟延迟了N年，但那些背后的人，你们真的损人也没有利己。&lt;/p&gt;
&lt;p&gt;接连两个项目都挂了，我反倒不怎么悲伤了，已经被老板悲伤完了，心态反倒轻松了许多，很多东西，不是你努力就能成功的，也许应了那句话，谋事在人成事在天。&lt;/p&gt;
&lt;p&gt;这 期间也做了很多日常性的需求，印象最深刻的是胖胡斐@赝小乙    有一次给我提了个需求，年底了要做个抽奖的系统，要求在抽奖人数能预估的情况下，系统能够即时开奖，发奖数量要均匀分布在一天的时间内，发出去的奖品不能   超过预设的值，也不能有奖品没发出。真会难为人，我想了很久搞出一个算法，用随机数来做抽奖的种子，数字在某一个区间的时候算中某一等的奖，每个小时发几   个奖有限额，发完之后在这个小时内的数字即便在中奖区间也不算中，如果前面一个小时很快就有人中奖，减小后面一个小时的中奖区间。这个算法后来被应用到多  次抽奖活动中。&lt;/p&gt;
&lt;p&gt;好吧，心碎的第三年就这么过去了，那时候已经是P5了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-4.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-4.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 &amp;ldquo;招财进宝&amp;rdquo;项目中有一个技术的细节值得拿出来说说，淘宝商品详情页面每天的流量在10亿以上，里面的内容都是放在缓存里的，做&amp;ldquo;招财进宝&amp;rdquo;的时  候，我们要给卖家显示他的商品被浏览的次数，这个数字必须实时更新，而用缓存的话一般都是异步更新的。于是商品表里面增加了这样一个字段，每增加一个PV   这个字段就要更新一次。发布上去一个小时数据库就挂掉了，撑不住这么高的update。数据库撑不住怎么办？一般的缓存策略是不支持实时更新的，这时候多   隆大神想了个办法，在apache上面写了一个模块，这个数字根本不经过下层的web容器（只经过apache）就写入一个集中式的缓存区了，这个缓存区  的数据再异步更新到数据库。好像什么问题，到了多隆手里，总能迎刃而解。&lt;/p&gt;
&lt;p&gt;那一年发生了很多事情，多到我都记不住了，我只模糊的记得项目结 束之后，组织结构有过一些调整，也来了很多牛人，尤其是UED的人。例如@XX的三 通    （他和我都是一灯的四个门徒之一）还有@赵小马、语凝、圆心他们。那个时候UED开始分交互、设计、用户研究、前端等等工种，以前都是一两个人搞定所有。  下面那个项目中，我们有了深入的合作，UED的这种分工，对于PM来说，让我觉得项目周期更长了。&lt;/p&gt;
&lt;p&gt;悲催的一年过得很慢，但是年底我却升到了P6.&lt;/p&gt;
&lt;p&gt;2007 年春天，老婆回老家生孩子去了，我在公司开始生我的孩子，就是下一个项目&amp;ldquo;淘宝旅行&amp;rdquo;。这个项目之所以我觉得像是自己生的，是因为我从最早  期的商务调研就跟进了。我们想做一个集团版本的旅行服务，可以接入淘宝、支付宝，也可以接入B2B的系统，于是后来我们做出来的第一个版本的&amp;ldquo;淘宝旅行&amp;rdquo;   是用支付宝账号登录的，跟现在的一淘接入的用户系统是一样的，当时很多人会觉得很奇怪，怎么不用淘宝的用户信息。老板们看我闲着，合作方也是我比较熟的支  付宝，于是我阔别2年之后，又一次跟支付宝合作了。&lt;/p&gt;
&lt;p&gt;我跟着支付宝的BD们（孙权、夏波波）去拜访一家家的航空公司，谈合作方式和分成模 式，我第一次坐在谈判桌上跟这么牛叉的国企谈判，只在他们问我能  不能实现的时候做一下技术分析。国企中有不少有眼光的人才，他们希望做点创新的事情来，但整个体制太重了，谈了半年，没有结果。于是我们又转向跟代理商谈   判，这些商人嗅觉非常灵敏，他们意识到有淘宝这么多的用户接入进来，是一个很大的市场。他们都很积极，于是很快&amp;ldquo;淘宝旅行&amp;rdquo;的模式就做成代理商作为商家的  服务平台，代理商赚钱了给我们分成（分多少？不告诉你）。&lt;/p&gt;
&lt;p&gt;艰苦的商务谈判完成之后，更艰苦的项目开发跟进，老婆不在杭州，也不问&amp;ldquo;你还爱 不爱我&amp;rdquo;了，我专心的投入进去，    2007年年底的时候，淘宝旅行上线了。上线的时候我问老板们用什么域名，语嫣姐姐说，用最土最好记的吧，于是jipiao.taobao.com就发布   了。这个平台上产生的第一笔交易是一个代理商的老板给自己买的机票，按照分成规则，我们赚了几块钱。那天下午，财神和语嫣带了一波运营的同事，敲锣打鼓的   给我们发金币巧克力，告诉大家这是淘宝第一笔收入。当时我被一拨人推着走，拍的合影也没人发我一份。这个项目的PD是小玉、运营支持是叶青和文纨，交互设   计是语凝，从那个时候开始，我跟更多的女同事结下了深厚的情谊，所以我开玩笑说打算写一篇外传《我生命中最重要的十二个女人》，呵呵。开发团队的是震北、  空望、清虚、腾翼、王喆等，他们是《我生命中最重要的十二个男人》之一。&lt;/p&gt;
&lt;p&gt;当时国内机票市场的老大是携程、老二是艺龙，我们的平台上线之后很长时间内，用户还是习惯打电话去找他们来&lt;a target=&quot;_blank&quot; href=&quot;http://lusongsong.com/reed/416.html&quot;&gt;订票&lt;/a&gt;， 而不是到网站上来用支付宝付款买机  票，&amp;ldquo;淘宝旅行&amp;rdquo;的发展速度其实是很慢的。我自己还写了一篇软文《淘宝旅行，下一个携程？》被很多网站转载。另外一方面，为了获取更加实时的航班信息，我  们必须获得中航信的支持，而中航信当时正急于推广他们的酒店系统。于是在接下来的半年时间内，我们用中航信的酒店系统做了&amp;ldquo;淘宝酒店&amp;rdquo;，跟机票一起纳入  &amp;ldquo;淘宝旅行&amp;rdquo;，中航信也把IBE（Internet  Booking    Engine）接口给了我们。我和运营的姑娘们整天盯着有谁在我们这里订了机票，有谁订了酒店。如果有同学同事或亲朋好友要旅行，我们去给他们推销自己的  系统。记得到2008年年底的时候，机票销量才几百张。&lt;/p&gt;
&lt;p&gt;坐在我们旁边的是&amp;ldquo;淘宝彩票&amp;rdquo;的团队，哲别是PM，一灯是项目经理，经过了&amp;ldquo;我的 淘宝ajax版&amp;rdquo;之后，一灯技术水平精进，跟彩票公司谈合作的时候  大谈ajax和用户体验，唬的人家一愣一愣的。这个项目真是天时地利，用户只需要两块钱就可以买一注，用支付宝下注非常方便，上线之后销量猛增，到年底的  时候有两注彩票都中了500万，一时之间，风光无限。苦逼的机票团队在一边只有羡慕的份。&lt;/p&gt;
&lt;p&gt;看着这个孩子在慢慢长大，这个过程中我们做了零 零星星的一些日常需求，实际上工作量不大。因为我们都是土鳖，又挖了几个机票行业的人过来，一个是处  端，一个是从艺龙挖来的老板。当时另外一拨人被关进了湖畔花园，做了&amp;ldquo;淘宝商城&amp;rdquo;，他们从湖畔花园回来之后，&amp;ldquo;淘宝旅行&amp;rdquo;这个垂直市场的项目被划分进了商   城，然后我们团队被并入商城的技术团队。但每次跟行癫开周会的时候，他们讲商城的种种事情，我都插不进话。到了年底，商城蓬勃发展，但机票的业务没有太大  起色，这一年我也不务正业啥都干过，在技术上没有多大进步，被打了个3.25分，P6不变。&lt;/p&gt;
&lt;p&gt;这时候有人来挖我了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第五年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-5.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-5.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;有 人担心，写到后面会不会变太监了。其实越往后面就真的越难写，一方面是那些人就在你旁边，你要顾及他们的感受；而那些事，也才刚刚过去或者正在进  行中，身在其中很难有个客观的描述。不过既然都写了这么多，那就继续写下去吧，后面的事情比较近，也不太有名，估计感兴趣的人不多了。&lt;/p&gt;
&lt;p&gt;我曾 经写过一篇博文，是对于&amp;ldquo;小黑屋&amp;rdquo;的描述，淘宝有个传统，牛叉的项目都要在小黑屋中进行，当年我们做［我的淘宝］和［招财进宝］的时候，有人羡  慕我被关在一个小黑屋里面。到了08年的时候，我开始羡慕别的关在小黑屋里面的人了。这样的人有两拨，一拨人做了传说中的［淘宝商城］，一拨人做了传说中  的［淘宝系统3.0］。做淘宝商城的那拨人暂且不说，淘宝主站系统在那个时候经历了一次翻天覆地的变化。&lt;/p&gt;
&lt;p&gt;因为发展实在太快，淘宝的系统一 直处于变化之中，但大的版本变迁，大概有两次，一次是把最初那个LAMP架构的系统迁移到java平台上，一次是把  集中的java系统拆分成多层的分布式系统。从php到java在04年就迁移完毕了，我去的时候正赶上迁移完成后那帮sun的工程师开始做支付宝，所以  我错过了。从集中的java平台拆分成多层的分布式系统的时候，我在做［淘宝旅行］，又错过了。&lt;/p&gt;
&lt;p&gt;我一直相信像［淘宝旅行］这样的垂直市场 才是最好的业务模式，不可能所有的商品用同一种展示方式，也不可能所有的交易用同一个流程。但在主站拆分之  前，要做垂直市场只能重新做一个系统，拆分之后，只需要在业务逻辑层重组一下就可以了。所以这次网站的拆分，不仅撑住了不断上涨的流量，也支持了后续几年   新的业务的发展。在拆分的过程中有很多技术的创新，我们从使用技术到了创造技术的阶段。记得有一次我们跟腾讯的工程师交流，大家提起了那个时候各自做了一  个文件存储系统，仿照GFS，淘宝做了一个TFS（taobao  file system），腾讯做了一个TFS（tencent file    system），在GFS的理论基础上各自有不同的创新。除此之外还有Key－value的缓存系统、消息中间件、java中间件、海量数据的存储和计算  等等。一个系统发展到10亿流量的级别，你不得不做技术创新。&lt;/p&gt;
&lt;p&gt;这些我都错过了。&lt;/p&gt;
&lt;p&gt;但［淘宝旅行］最初两年的发展非常缓慢，商城在做业务的创新，主站在做技术的创新，我们这个团队游离于商城和淘宝主站之外。这个时候，有人来挖我了。&lt;/p&gt;
&lt;p&gt;我 总是容易被女人说动，尤其是漂亮的女人，而郭芙就是这样的女人。她问我淘宝主站拆分之后，对测试有什么挑战？我说系统分层多了，出错的几率大了，  但功能测试无法探测到下层。她问有没有办法深入到代码级别来测试？我说有但很难做。她说难才找你的嘛，有什么办法来作？我说做单元测试，但单元测试最好让  工程师自己做，我们做再往上一层接口的测试。然后她说英雄所见略同，我已经有几个人在做了，你愿不愿意一起把这事做大？这时候发现她挖了一个坑给我跳。  （^_^）    不过这是淘宝项目开发中的一项很大的变化，做好的话将对系统的稳定性有很大保障，而我也觉得每天在那里卖机票有点乏味了，那就搞点没人搞过的事情吧。&lt;/p&gt;
&lt;p&gt;我 做过开发，做过PM，兼职做过PD，还像SQA一样搞过几个流程，在08年底，我又开始了测试工程师的生涯。进到测试团队之后我发现以前对测试的  认识都太肤浅了，尤其是淘宝的测试团队，其测试技能和测试方法是业内顶尖的，我要做的就是招募一个能写java代码的有测试思路的团队，但后来发现没有这   样的人。于是招募能写代码的，然后给他们培训测试方法，另外也吸收能做测试的，给他们培训写代码的技能。在2009年的上半年，我大半的精力都放在了招人  和培养人上面，团队从4个人增加到19个。我记得跟铁花一起做接口测试工程师的培训，有个外号叫老鸨的，给我们取了个名字&amp;mdash;&amp;mdash;&amp;ldquo;花柳组合&amp;rdquo;。&lt;/p&gt;
&lt;p&gt;接 口测试的思路很简单，就是用测试代码来验证系统代码的逻辑是否正确。但做起来很困难，最大的困难就是被测代码太&amp;ldquo;拥抱变化&amp;rdquo;了，三天两头的变，测  试代码经常会失效；另外一个问题就是要验证一个业务逻辑，也许要用10倍的测试代码才能覆盖，所以这事儿也是一个体力活。我们发现系统里面越往下层，变动   越小，逻辑越简单，于是我们就从最底层的IC／TC／UIC这些开始测试。测试代码写完之后放入持续集成的环境中，一旦被测代码提交SVN，测试代码就回   归一遍，把错误信息发布出来。09年是这个团队异常艰难的一年，我们把最底下一层的代码都做了接口测试，有些还有性能的测试。我记得做UIC接口测试的时   候，模拟了10亿以上的请求量，结果发现了JDK里面的bug，后来提交给了sun。做这些事情的过程中我们也对常用的测试方法做了一个抽象，弄了一个测  试的框架，写了一本《接口测试白皮书》。&lt;/p&gt;
&lt;p&gt;我跟郭芙说既然我们做了这么多事情，有这样的实力，就可以高调一点，向外传播我们的影响力，于是 我们提出了一个愿景：&amp;ldquo;做测试的行业标准&amp;rdquo;。她任命  我们&amp;ldquo;花柳组合&amp;rdquo;一方面去维护qa.taobao.com这个博客，一方面对内开展大量的学习和培训，我们叫它&amp;ldquo;3T交流会&amp;rdquo;（taobao  test   technology 或者 taobao test team 或者 taobao test training 都行）。&lt;/p&gt;
&lt;p&gt;在测试团 队做的很开心，也有机会跟更多可爱的女孩子共事。但从很多人的眼光来看，一个开发的人员去做测试好像有点奇怪，我也常常思索自己这么跳来跳  去到底好不好。直到前面一段时间，网上流行3种青年，我也把工程师大致分了一下类别：普通工程师跟着业务跑，来啥需求做啥事；文艺工程师专注于自己的领  域，研究的非常精深；2B工程师跳来跳去，啥都干，啥都浅尝辄止；还有一种工程师叫牛B工程师，啥都能干，啥都精通（这种人在工程师心中叫&amp;ldquo;神&amp;rdquo;）。而我  应该属于第三种，不过我幸运的是，淘宝里面机会太多了，我做的都是自己喜欢的事情。&lt;/p&gt;
&lt;p&gt;08年的年底，我被提升到了M1.没有看错，当时从P6到M1是升级了，悲剧的是过了一年之后，公司更加重视专业能力，M1==P6 了。&lt;/p&gt;
&lt;p&gt;也许是看我在测试团队把培训做的风生水起，09年底的时候，又有人来找我了。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第六年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-6.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-6.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;作 为一个2B工程师，渐渐的开始不务正业，到了09年就很少写代码了，做些上通下达、资源协调、关系处理、甩手掌柜之类的事情，完成了一个P到  M的转变（从另外一种意义上来说：这个码农废了）。但做了M之后，才知道管理真的是一门艺术，尤其是管理一群女孩子的时候，简直是处于艺术殿堂的巅峰。那   时候从一位大侠那里听到一个理论，作为M，就不可能做到让所有人都喜欢你。这对于一贯喜欢做好人的我来说，很有难度。但做了2年M之后，有位同学说我是个  &amp;ldquo;老好人&amp;rdquo;，这真是一个很大的打击，说明我这个M没有做好。&lt;/p&gt;
&lt;p&gt;据说是因为有人推荐，09年底的时候，老板的老板的老板来找我，我以为出啥大 事了，原来是他们发现团队大了，壁垒也大了，知识的传播和传承有很  大障碍，需要一个专业的技术培训团队。而我，啥都干过，又喜欢张罗些培训和交流的事情，似乎挺合适的。我认为团队的成长是M的第二等大事（第一等是干好  活），那跟带一个小团队来比，支持整个大部门的成长似乎更能发挥我的余热。但这个我一手建立起来的团队，大部分人都是我找了无数简历、打了无数电话才找到   的，我投入了太多的感情，实在不舍。思前想后，心理斗争了很久，明白大家都能独当一面了，我离开对他们没啥损失。于是挥一挥衣袖，我走了，不过还是没忍住  眼泪。&lt;/p&gt;
&lt;p&gt;这一年的测试生涯，我仿佛又处于最初的创业时期，理论、方法、技能、团队都是从无到有，跟测试团队的其他人员的配合也是从生疏到默 契，所有的事  情都是摸索着来。这一年我技术和管理水平没多大提升，却犯了很多错误。团队成员之间出现问题的时候后知后觉，处理人员关系的问题简单粗暴，工作的安排像是  甩手掌柜。但这一切过后我收获的是心态变了，慌乱之后开始变的从容。&lt;/p&gt;
&lt;p&gt;接下来我们新的团队成立了，@展堂 @早安薇薇安 @奇怪的伟大  是最早入伙的。我们取了一个很霸气的名字&amp;ldquo;@淘宝技术大学&amp;rdquo;，还有英文名Taobao University of  Technology。定位是做一个企业大学，像惠普商学院和摩托罗拉大学那样，但是要做什么其实也不知道。我们看每年都有几百个应届生入职，而很多技术 都是外面学不到的，那要先给他们来培训吧。&lt;/p&gt;
&lt;p&gt;于是淘宝技术大学旗下第一个项目开始启动了，我们叫它&amp;ldquo;逐浪堂&amp;rdquo;，取长江后浪推前浪之意。我们收 集研发部里面所有的业务、框架、规范、流程、工  作方法，教给这帮同学们。这些东西收集上来之后我们发现需要有两个月的时间才能培训完，于是逐浪堂前面几期的同学接受了我们两个月的知识灌输。然后我们去   访谈他们的意见，发现一个最大的问题，就是东西太多了，如同把天山童姥的功力传输给一个路人甲一样，他会崩溃的。当然这些同学们也有不少是像虚竹这样的，  本身天资聪慧，可以接受这些东西，成长很多。&lt;/p&gt;
&lt;p&gt;2010年我们把主要精力都投入到了应届生的培训，&amp;ldquo;逐浪堂&amp;rdquo;项目几经修改，我们对知识分门 别类，对课程精益求精，最终成型到了现在的样子：应  届生接受2周的&amp;ldquo;逐浪堂&amp;rdquo;脱产培训，内容是通用技能；进阶版的技能我们放入在职培训，叫做&amp;ldquo;追风堂&amp;rdquo;；经验分享和大师交流我们叫做&amp;ldquo;百家讲坛&amp;rdquo;；还有一拨   社会招聘的员工，他们参加3天的脱产培训，叫做&amp;ldquo;飞云堂&amp;rdquo;，主要传授淘宝特有的技术和框架。支撑这些项目开展的是一个讲师管理机制，一个课程管理机制，还  有一个在线报名的培训平台。&lt;/p&gt;
&lt;p&gt;在工作开展的过程中，我们也有不少创新。兄弟公司的培训管理员曾经说过一个事情，他们找培训公司给他们采购一 个数据库的课程，人家说&amp;ldquo;最好的  DBA都在你们这里了，你让我到哪里去找？&amp;rdquo;我们发现其实很多业内顶尖的人才都在公司内部，去外面找都找不到。那我们能不能像采购外面的课程一样从内部讲  师这里采购课程呢？在得到老板们支持之后，我们开始重金在内部悬赏这样的课程，把某项技术讲透，需要8个小时以上的时间，需要有良好的课程设计和授课技   能。悬赏发出之后一下子挖出了十来门这样的课程。说是重金，其实比他们去外面讲的价格还是要低很多的，而且这样一整天以上的课程，对讲师来说是工作之外一  个很大的投入，给些激励也是应该的。于是他们讲过几堂课之后，拿着我们发的iPad，既感觉荣耀，又帮技术大学做了很好的广告。&lt;/p&gt;
&lt;p&gt;在工作迅 速开展的过程中，团队也不断壮大，这时候又来了@唐甜cr   @风云咧咧嘴，中间也有几个实习生走来换去，其中一位的真名被我们注册成班主任的小二帐号，到现在都成了花名。另外还有一个兄弟团队需要提一下，因为我们   之间的关系比较亲密，我们做内部的培训，他们做外部的交流。迄今为止他们已经成功举办了两届@velocityChinaWeb性能和运维大会，也举办了   D2、iData、iTest、aDev等很多交流会。他们主外，我们主内。这个团队的负责人是@灵小珊，一个简洁利索的姑娘，我以前去集团办事的时候跟  她打过交道，对她印象深刻，她却否认见过我。&lt;/p&gt;
&lt;p&gt;2009年刚从测试到技术大学，没有晋升，我也觉得的确不够资格。在2010年底的时  候，我充满信心。那时候淘宝的晋升机制变了，需要给一个晋升委员会去做汇报，很多人从述职面试回来都深受打击，我也是其中一个。老板们问了我一个问题&amp;ldquo;你  觉得培训的本质是什么？&amp;rdquo;我说这是一个好问题&amp;hellip;&amp;hellip;然后我继续留在M1的级别上。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第七年：&lt;/strong&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://lusongsong.com/info/upload/100-7.jpg&quot;&gt;&lt;img src=&quot;http://lusongsong.com/info/upload/100-7.jpg&quot; alt=&quot;我在淘宝这7年&quot; title=&quot;我在淘宝这7年&quot; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;在 2011年队伍壮大了这么多，能做的事情也多了起来，年初我们做了需求调研，针对核心系统和底层产品开发出了一系列课程，有《云计算系列》  《海量存储系列》《Oracle系列》《MySQL系列》《操作系统系列》《小众语言系列》《JVM系列》《Java内存调优》《搜索技术系列》《广告技 术系列》等等。也根据这两年的公司的技术战略的几个关键词：稳定、性能、成本、用户体验，开发出了《稳定性系列》《性能优化系列》《用户体验系列》课程。  还根据日常的热门技术做出了《秒杀系统的设计和优化》《双十一背后的技术体系》等等课程。做出了一道又一道技术大餐。&lt;/p&gt;
&lt;p&gt;在这里也有必要提一 下，这两年淘宝的技术团队飞速发展，我对几位老板们也有了敬佩之情。技术团队成立了&amp;ldquo;技术委员会&amp;rdquo;执掌技术的发展方向和人才  的评估，成立了性能、稳定、成本、用户体验等各个小组，招募了专业能力非常强大的人才，分管各重要指标，使整个网站系统的发展越来越健康。这两年淘宝的技   术也逐渐走向开放，有了面向开发者的开放平台，也把自己的核心架构和中间件都开放出去了，甚至把我们做的低功耗服务器的硬件结构都变成了开源的。淘宝前些  年从开源社区获得了不少技术，现在我们真心实意的开始回报社区了。&lt;/p&gt;
&lt;p&gt;同时我们也向前延伸我们的触角，跟着公司HR一起走进学校，在浙江大学 成立了浙大淘宝俱乐部、在大连理工成立了大工淘宝俱乐部，并送去了不少优  秀课程，也给同学们做了我们提出的实验性项目。我们也跟着集团，与ACM中国区组委会一起举办了夏季论坛和预选赛。让学生亲近了企业，也让我们的研发部门  亲近了优秀的学生。&lt;/p&gt;
&lt;p&gt;今年上半年我还纠结在&amp;ldquo;培训的本质是什么&amp;rdquo;这样的问题，想的多了，做的少了。主要是姑娘们在干活，她们发挥了强大的能 量，组织了四百多次培训，  反馈和辅导的讲师也有三百多名。给我们研发部每个工程师提供了差不多人均14个小时的培训。我从《ASTD美国培训和发展论坛2009年度报告》中了解  到，美国培训做的比较好的企业中，人均培训时长在19个左右，而天朝的企业中被统计到的有培训的那些，平均不到5个小时。而从培训管理员人均产出量来看，  我们超过了美国2009年的数据。&lt;/p&gt;
&lt;p&gt;在我讲概念和数据的时候，姑娘们已经开始在研究细节了，研究桌椅怎么摆放比较合理、学员怎么邀约会有比 较高的出席率、讲师在课堂上容易出现哪几  类问题、PPT的字号多大在后排能看得清&amp;hellip;&amp;hellip;她们把培训的工种逐步细化，每个环节都作出了操作指南，也有了很多知识的沉淀和经验的总结。姑娘们，你们很  棒！&lt;/p&gt;
&lt;p&gt;那么培训的本质到底是什么呢？经过老板提点，我们认为培训的本质是：&amp;ldquo;通过知识的流转，促进员工的成长，进而推动公司业绩的提升。&amp;rdquo;那 又有老板  问了&amp;ldquo;你们怎么证明自己的工作提高了公司的业绩？&amp;rdquo;这个，是个好问题，呵呵&amp;hellip;&amp;hellip;有一天我听到农夫山泉的一个广告，说&amp;ldquo;我们不生产水，我们是大自然的搬运  工&amp;rdquo;，我灵光一闪、再闪&amp;hellip;&amp;hellip;&amp;ldquo;我们不生产知识，我们是知识的搬运工&amp;rdquo;。我们搬的越多，别人接收的越多，我们的价值就越大。我不知道我这瓶水是拯救了饥渴的  生命还是呛到了谁的肺，但我知道他一定有价值。&lt;/p&gt;
&lt;p&gt;随着理论的补充和姑娘们的努力（@奇怪的伟大&amp;nbsp;别介意，我们把你当姑娘了），在年中特殊晋升的机会中，我升了一级，变成了M2。&lt;/p&gt;
&lt;p&gt;老 马说过，&amp;ldquo;唯一的不变就是变化&amp;rdquo;，年中晋升之后，公司有了翻天覆地的变化。淘宝一拆四，变成了淘宝网、一淘网、淘宝商场和共享业务平台，我变  成了共享业务平台的人，然后共享业务平台又拆分了，我变成了集团的人。跟我们一起变的还有成立不久的&amp;ldquo;产品大学&amp;rdquo;和&amp;ldquo;运营大学&amp;rdquo;，三个大学顺理成章的统一   了，变成了&amp;ldquo;淘宝学院&amp;rdquo;，以前的校长成了院长，我就荣升为技术大学的校长。人多了，可以集中资源办大事，但层级不需要这么多，而我做的这事，说是P或者M  都可以，而且一个被人说是&amp;ldquo;老好人&amp;rdquo;的M估计也没大前途。于是我转了，变成了P7。头衔是&amp;ldquo;培训专家&amp;rdquo;，属于专家教授的级别了。&lt;/p&gt;
&lt;p&gt;7年了，我的头发越来越少，化学博士同事推荐的施华蔻也不管用。付出了7年的青春，也得到了不少，除了钱之外，最珍贵的就是认识了一帮牛人，结交了几个老友，有了一段足以吹牛逼的经历。&lt;/p&gt;
&lt;p&gt;今天是我结婚6周年的纪念日，这几篇文章送给老婆。&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 摘自：&lt;a href=&quot;http://blog.sina.com.cn/s/blog_633219970100vz44.html&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: rgb(255, 0, 0);&quot;&gt;赵超的博客&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;</description>
            <author>linhaiquan1@126.com(9streets)</author>
            <pubDate>Mon, 19 Mar 2012 16:00:00 +800</pubDate>
        </item>
    </channel>
</rss>

