<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>Zhou Hongquan&apos;s Blog</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/" />
    <link rel="self" type="application/atom+xml" href="http://www.zhouhongquan.com/atom.xml" />
    <id>tag:www.zhouhongquan.com,2007-05-01://1</id>
    <updated>2011-03-23T15:04:32Z</updated>
    <subtitle>Reading、thinking and experiencing（about web and my life）</subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type Personal 4.1</generator>

<entry>
    <title>人人网令人惊叹的推荐功能</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2011/03/amazing-renren.html" />
    <id>tag:www.zhouhongquan.com,2011://1.175</id>

    <published>2011-03-23T14:37:03Z</published>
    <updated>2011-03-23T15:04:32Z</updated>

    <summary>今天登录公司邮箱，发现一封人人网的邮件，标题是&quot;未处理的好友请求，请处理&quot;，不禁有些疑惑，之前从未注册过人人网，而且退一步说，即使是注册了，我也绝对不会用公司邮箱注册。打开邮件，更令人惊叹的内容出现了。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Web" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="人人网" label="人人网" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>今天登录公司邮箱，发现一封人人网的邮件，标题是"未处理的好友请求，请处理"，不禁有些疑惑，之前从未注册过人人网，而且退一步说，即使是注册了，我也绝对不会用公司邮箱注册。打开邮件，更令人惊叹的内容出现了。简洁的正文很简洁，内容就是"<span style="FONT-SIZE: 12px">他们在人人网被推荐给你了："，下面列出了三个用户，其中有两个用户正是公司的同事，用户名用的是真名，还有一个不是用的真名，头像也不是人的照片，但从用户名判断也可能是另外一个同事。</span></p>
<p><span style="FONT-SIZE: 12px">接触网络这么久，还没见过怎么厉害的"精准"邀请。为了一探究竟，注册了一个用户，注册过程中，搜索公司名称，发现另外的一个同事。注册成功后，查看上面被推荐的几个同事，因为隐私权限的问题，无法查看到很详尽的信息。难道是他们注册用的公司邮箱地址，但应该也不会直接发到我的公司邮件地址邀请我吧，太令人费解了。</span></p>]]>
        
    </content>
</entry>

<entry>
    <title>阴天的忧郁</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2010/10/sullen-in-cloudy-day.html" />
    <id>tag:www.zhouhongquan.com,2010://1.174</id>

    <published>2010-10-31T07:07:53Z</published>
    <updated>2010-10-31T08:39:09Z</updated>

    <summary>下午,又是一个阴天

周末的我独自在家

听着蔡琴缓慢而悠远的《机遇》</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="My life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="忧郁" label="忧郁" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[下午,又是一个阴天<br /><br />周末的我独自在家<br /><br />听着蔡琴缓慢而悠远的《机遇》<br /><br />坐在电脑面前，不知道自己该干什么<br /><br />早上的一个电话，又再一次印证了我<a href="http://www.zhouhongquan.com/archives/2007/08/information-aesthetics-godfather-poster-drawn-using-movie.html">之前</a>曾经体会到的一种感觉<br /><br />想起了昨晚看过的《The social network》<br /><br />主人公Mark的成功是我从了解网络以后一直的梦想<br /><br />但，这个梦想，也可能只是一种欲望<br /><br />因为，我从来没有为自己所谓的那个梦想而真正付诸实际的努力<br /><br />和Mark一样，我也喜欢比较私密的生活 <br /><br />在一个人独自待着的时候，他会忙着做他自己想做的事情<br /><br />而我，只想就这么呆着，安安静静地<br /><br />而这，似乎就是我从小到大一直以来的一个习惯<br /><br />无论是在家乡，在学校，在异乡......<br /><br />窗外，一直黑猫蜷曲在小平房的屋顶上<br /><br />屋顶平平的地面上，是满地黄黄的落叶<br /><br />也许，这只猫什么也感觉不到，它只是在美美地睡觉<br /><br />而我，却感到了孤寂和忧郁<br /><br />或许，是因为这样阴冷天气，这种静静独处的环境，这样深沉而悠远的音乐<br /><br />因为，以前每当我有这种感觉的时候<br /><br />也是和今天这样<br /><br />但，我应该享受这种感觉<br /><br />对，也许在我内心深处，真的有为这种感觉留下了一块空间<br /><br />此刻，我想到的<br /><br />不仅有我自己<br /><br />还有我至亲至爱的父母和亲人、真诚待我的朋友......<br /><br />还有那一幅幅留在记忆深处，类似的画面<br /><br />我想，每个人都会有这种感觉的时候<br /><br />只是，现实的生活<br /><br />给了我们很多热闹和繁复<br /><br />让我们根本没有时间停留下来<br /><br />静一静......<br /><br />其实，我也期望有更多热闹、繁复<br /><br />但我希望<br /><br />它们能够给我带来更多的意义......<br /> ]]>
        
    </content>
</entry>

<entry>
    <title>解决Zend Studio 7.1 升级到 7.2 后代码提示功能无法使用的问题</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2010/05/codeassist-brakes-in-zend-studio-after-update-from-7-1-to-7-2.html" />
    <id>tag:www.zhouhongquan.com,2010://1.173</id>

    <published>2010-05-23T08:27:50Z</published>
    <updated>2010-05-23T09:52:34Z</updated>

    <summary>Zend Studio 7.1升级到7.2后出现了代码补全提示功能无法使用的情况，通过搜索Zend Forum找到了最终的解决办法--删除 &quot;:\Documents and Settings\\&quot;目录下的&quot;Zend/workspaces//.metadata/.plugins/org.eclipse.core.runtime/.settings/org.eclipse.dltk.ui.prefs&quot; 文件就可以了。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Zend Studio" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="autocomplete" label="Auto Complete" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="codeassist" label="Code Assist" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zendforum" label="Zend Forum" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zendstudio71" label="Zend Studio 7.1" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zendstudio72" label="Zend Studio 7.2" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="代码提示" label="代码提示" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>通过自动更新功能，把Zend Studio 7.1升级到了7.2版本，升级成功后发现了一个严重的问题--Zend Studio针对PHP的代码补全提示功能（Content Assist）无法使用了，不管是当前可用的变量列表提示，还是PHP函数的自动提示都没有了，只有PHP的模板（通过Windows -&gt; Preference-&gt;PHP-&gt;Editor-&gt;Templates 设置）提示。后来在Zend论坛上先后找到了两个遇到同样问题的帖子（<a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=6319">一</a>（Zend Forums • View topic - ZS 7.1 - 7.2 Code Complete Not Working for Native PHP funcs）、<a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=6317">二</a>（Zend Forums • View topic - Autocomplete brakes on 7.2），终于解决了：</p>
<p>首先按照第一个帖子里提到的，我检查了项目文件夹下面的 .project 和 .buildpath文件，它们分别应该包含"&lt;nature&gt;org.eclipse.php.core.PHPNature&lt;/nature&gt;" 和 "<font face="Courier New">&lt;buildpathentry kind="con" path="org.eclipse.php.core.LANGUAGE"/&gt;"，这两个配置文件应该是在创建PHP Project的时候就生成的，检查没有发现问题。</font></p>
<p><font face="Courier New">继续，第二个帖子里有人也提到了检查 .buildpath 文件，还有人回复说他通过删除"&lt;系统盘符&gt;:\Documents and Settings\&lt;当前用户名&gt;\"目录下的"Zend/workspaces/&lt;默认的Workspace名称（一般是Default）&gt;/.metadata/.plugins/org.eclipse.core.runtime/</font><font face="Courier New">.settings/org.eclipse.dltk.ui.prefs" 解决了问题，照他的方法试验了一下，居然成功了。</font></p>
<p><font face="Courier New">具体的原因应该是升级的过程中这个文件被修改了，但是修改的有问题，删除这个文件后，再重启会发现系统又生成了同名的文件。</font></p>
<p><font face="Courier New">PS：Zend Forum真是好地方，这几次遇到的问题都是在上面找到最后的解决办法的，使用Zend 产品的各位同学不妨多关注关注。</p></font>]]>
        
    </content>
</entry>

<entry>
    <title>PHP 5.3 和 Zend Debugger</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2010/05/zend-debugger-and-php-5-3.html" />
    <id>tag:www.zhouhongquan.com,2010://1.172</id>

    <published>2010-05-22T13:47:22Z</published>
    <updated>2010-05-23T13:44:52Z</updated>

    <summary>Zend官方没有打算针对Thread Safe版的PHP 5.3发布相应的Zend Debugger</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php53" label="PHP 5.3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="zenddebugger" label="Zend Debugger" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>自从用上了PHP5.3，问题还真是多，自上次出现<a href="http://www.zhouhongquan.com/archives/2010/05/php-5-3-x-connect-ms-sql-server.html">连接MS SQL Server的问题</a>后,这次在安装 Zend Debugger时又出现了问题。按照Zend官方给出的<a href="http://www.zend.com/topics/Zend-Debugger-Installation-Guide.pdf">Zend Debugger安装步骤</a>，从 <a href="http://www.zend.com/en/products/studio/downloads">这里</a> 下载了最新的 5.2版本的<span>Studio Web Debugger，从解压出的ZendDebugger-v5.2-cygwin_nt-i386\5_3_x_nts_comp目录中复制ZendDebugger.dll 到PHP安装文件夹下的ext目录，然后编辑php.ini文件，在文件最后加入一下三行：</span></p>
<blockquote style="margin-right: 0px;" dir="ltr">
<p><span>zend_extension = "d:/php/ext/ZendDebugger.dll"<br />zend_debugger.allow_hosts=&nbsp;127.0.0.1<br />zend_debugger.expose_remotely=always</span></p></blockquote>
<p dir="ltr"><span>然后把dummy.php文件复制到apached的 "DocumentRoot"目录（在http.conf文件中设定），可重启Apache服务后 用phpinfo()显示的页面中并没有Zend Debugger，很明显，安装没有成功。</span></p>
<p dir="ltr"><span>回过头再仔细看Zend的安装步骤介绍，发现zend_extension这项配置有两种，除了zend_extension以外，还有设置为zend_extension_ts的，分别适用于Non-Thread-Safe和Thread-Safe版的PHP，而我安装的PHP是Thread-Safe版的（通过phpinfo() 页面的Thread Safety选项可以查看到），所以应该用zend_extension_ts,但是我下载的<span>Studio Web Debugger 针对php 5.3版的只有nts版的ZendDebugger.dll (从文件夹名称可以看出-5_3_x_nts_comp).</span></span></p>
<p dir="ltr"><span><span>仔细搜了一下，终于找到了答案，在Zend 论坛里一位Zend 员工<a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=2279">明确地回复</a>："目前还没有针对 Thread-Safe 的PHP 5.3发布相应的Zend Debugger的计划"，<a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=1742">这个帖子</a>&nbsp;里，另一位Zend员工针对用户在Thread Safe 版PHP 5.3 安装 Zend Debugger失败的原因做了更详细的解释：</span></span></p>
<blockquote style="margin-right: 0px;" dir="ltr">
<p dir="ltr"><span><span>&nbsp;Zend stopped supporting the thread safe architecture when Microsoft also decided to implement its PHP engine with the fast-cgi architecture which means non-thread-safe.<br /></span></span></p></blockquote>
<p dir="ltr"><span>他建议用户用安装Zend Server（目前已经支持PHP 5.3）--&nbsp; Zend Server包含的是Non Thread Safe 版的PHP.</span></p>
<p dir="ltr"><span></span> <span>相关链接：</span></p>
<p dir="ltr"><span>Zend论坛 - 安装Zend Debugger 的非常详细的教程： <a href="http://forums.zend.com/viewtopic.php?f=59&amp;t=962">Zend Forums • View topic - Sticky Notes Setting Up Zend Debugger</a></span></p>
<p dir="ltr"><span>针对不同平台的<a href="http://downloads.zend.com/pdt/server-debugger/">最新Zend Debugger&nbsp;下载列表 </a></span></p>]]>
        
    </content>
</entry>

<entry>
    <title>PHP 5.3.X 连接MS SQL Server</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2010/05/php-5-3-x-connect-ms-sql-server.html" />
    <id>tag:www.zhouhongquan.com,2010://1.171</id>

    <published>2010-05-09T05:21:14Z</published>
    <updated>2010-05-09T09:57:57Z</updated>

    <summary>从PHP 5.3 .2开始，PHP官方不再提供MS SQL Server的扩展和库文件，可以拷贝5.3.1的扩展文件来实现。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="PHP" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php53" label="PHP 5.3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="phpextension" label="php extension" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sqlserver" label="SQL Server" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>最近做的一个项目需要用PHP连接到MS <span class="caps"><span class="caps">SQL</span></span> Server，在公司安装的PHP是5.2版的，Windows平台的PHP Zip安装包解压后的扩展目录（ext）里有自带连接到SQL Server的驱动文件-php_mssql.dll，只需先将PHP目录的ntwdblib.dll拷贝到系统盘下windows/system32，然后修改php.ini，取消；extension=php_mssql.dll 前面的;，重启Apache服务器就可以了。</p><p>但是家里用的是WAMP集成安装包，PHP版本是5.3.2，扩展目录里没有php_mssql.dll，而且连ntwdblib.dll也没有，从PHP 5.2分别拷贝这两个文件到扩展目录和系统目录，重启Apache，提示mssql模块和php编译版本不匹配（如下图）：</p><p><br /></p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="php-mssql-mismatch.PNG" src="http://www.zhouhongquan.com/upload/img/php-mssql-mismatch.PNG" class="mt-image-none" style="" height="157" width="288" /></span><p><br /></p><p>在网上搜索了一下PHP 5.3.X 连接SQL Server的办法，有人也遇到了这个问题 （<a href="http://jimmyli.net/2009/03/php-unable-to-connect-to-mssql/"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Arial; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; font-size: medium;"><span class="Apple-style-span" style="font-family: monospace; white-space: pre-wrap;"><span class="caps"></span></span></span></a><a href="http://jimmyli.net/2009/03/php-unable-to-connect-to-mssql/">PHP Unable to Connect to MSSQL</a>），原来PHP 团队在PHP 5.3 中移除了SQL Server的驱动和库，而微软自己开发了针对PHP的SQL驱动（<a href="http://www.microsoft.com/sqlserver/2005/en/us/PHP-Driver.aspx"><span class="caps">SQL</span> Server Driver for <span class="caps">PHP</span></a>），但是1.0版的不支持 <span class="caps">PHP</span> 5.3，1.1版本才支持，但即使用这种办法，也不是官方推荐的原生的支持，如果要用直接支持的办法，可以用ODBC来连接。这位作者对PHP 5.3连接 <span class="caps">SQL</span> Server的问题颇有研究，发了一系列的文章来说明问题的来龙去脉（<a href="http://jimmyli.net/2009/08/no-sql-server-library-for-php-5-3-just-yet/">No <span class="caps">SQL</span> Server Library for <span class="caps">PHP</span> 5.3 Just Yet</a>，<a href="http://jimmyli.net/2009/07/installing-php-53-on-microsoft-iis/">Installing <span class="caps">PHP</span> 5.3 on Microsoft <span class="caps">IIS</span></a>，<a href="http://jimmyli.net/2009/09/finally-a-working-sql-server-driver-for-php-5-3/">Finally a working <span class="caps">SQL</span> Server Driver for <span class="caps">PHP</span> 5.3</a>，<a href="http://jimmyli.net/2010/02/installing-fastcgi-and-php-for-iis-6-0/">Installing FastCGI and <span class="caps">PHP </span>for <span class="caps">IIS</span> 6.0</a>）。 <a href="http://jimmyli.net/2009/09/finally-a-working-sql-server-driver-for-php-5-3/">Finally
 a working <span class="caps">SQL</span> Server Driver for <span class="caps">PHP</span> 5.3</a> 这篇文章的留言中有人给出了 他自己编译的PHP 5.3.0 连接 MS SQL Server所需的 php_mssql.dll 文件，但是这个文件之能用于VC9 PHP（何为VC9 PHP，请看补充内容）。</p><p>在<a href="http://www.phwinfo.com/forum/comp-lang-php/390854-sql-server-php-5-3-a.html"><span class="caps">SQL</span> Server in <span class="caps">PHP</span> 5.3&nbsp;</a> 这篇帖子的回复里，有人提到PHP 5.3.1里面有 php_mssql.dll，于是到PHP 官方网站，却只提供PHP 5.2和最新的PHP 5.3.2下载，最后还是在WAMP网站提供的 <a href="http://downloads.sourceforge.net/wampserver/WampServer2-PHP531.exe?download">PHP Addon</a>中找到了PHP 5.3.1，拷贝mssql扩展文件到WAMP 的PHP扩展目录，问题解决！</p><p>补充：<b>关于VC9 和VC6 版本的PHP</b></p><blockquote><p>If you are using PHP with Apache 1 or Apache2 
				    from apache.org you need to use the VC6 versions of PHP</p><p>If you are using PHP with IIS you should use the VC9 versions
 of PHP</p><p>VC6 Versions are compiled with the legacy Visual Studio 6 
compiler</p><p>VC9 Versions are compiled with the Visual Studio 2008 
compiler and 
				    have improvements in performance and stability. The VC9 versions
 
				    require you to have the <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=9B2DA534-3E03-4391-8A4D-074B9F2BC1BF">Microsoft
 2008 C++ Runtime (x86) </a> or the <a href="http://www.microsoft.com/downloads/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6&amp;displaylang=en">Microsoft
 2008 C++ Runtime (x64) </a>  installed</p><p>Do <b>NOT</b> use VC9 version with apache.org binaries
	

                                </p></blockquote>
				    
				    
				    
				    
				    
				    
				    <p><br /></p><p>相关链接：</p><p><a href="http://www.phwinfo.com/forum/comp-lang-php/390854-sql-server-php-5-3-a.html"><span class="caps">SQL</span> Server in <span class="caps">PHP</span> 5.3&nbsp;</a>&nbsp;</p><p><a href="http://php.net/manual/en/install.windows.extensions.php">PHP: Installation of extensions on Windows - Manual</a></p><br />]]>
        
    </content>
</entry>

<entry>
    <title>鼠年最后一天</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2009/01/the-last-day-of-the-year-of-rat.html" />
    <id>tag:www.zhouhongquan.com,2009://1.158</id>

    <published>2009-01-25T12:08:17Z</published>
    <updated>2009-01-25T12:29:49Z</updated>

    <summary>一个人的年夜饭

一个人看春节联欢晚会

一个人的鼠年岁末除夕

一个人在成都过新年

祝福家乡的亲人、朋友春节快乐

牛年是本命年，好好过
</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="My life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="春节，牛年" label="春节，牛年" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>一个人的年夜饭</p>
<p>一个人看春节联欢晚会</p>
<p>一个人的鼠年岁末除夕</p>
<p>一个人在成都过新年</p>
<p>祝福家乡的亲人、朋友春节快乐</p>
<p>牛年是本命年，好好过</p>]]>
        
    </content>
</entry>

<entry>
    <title>用PHP和Javascript实现登陆验证</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/10/validate-login-using-php-and-javascript.html" />
    <id>tag:www.zhouhongquan.com,2008://1.157</id>

    <published>2008-10-18T06:00:15Z</published>
    <updated>2008-10-18T06:10:46Z</updated>

    <summary>登陆验证应该是Web程序员必须掌握的最基本的东西了，乍看起来似乎很简单，但随着学习相关技术的深入，考虑到安全性，用户体验等方面的要求，其实不简单，下面就以我做的一个小项目（回味乐食品网站）后台登陆页面为例来说明。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="javascript" label="Javascript" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="php" label="PHP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web开发" label="Web开发" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>登陆验证应该是Web程序员必须掌握的最基本的东西了，乍看起来似乎很简单，但随着学习相关技术的深入，考虑到安全性，用户体验等方面的要求，其实不简单，下面就以我做的一个小项目（回味乐食品网站）后台登陆页面为例来说明。</p>
<p>简单的登陆页面：</p>
<div style="background: rgb(204, 204, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<pre>&lt;html&gt;
&lt;head&gt;
&lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" /&gt;<br />&lt;link rel="stylesheet" href="../css/stylesheet.css" type="text/css" media="screen,print"&gt;
&lt;title&gt;回味乐食品厂-用户登录&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;
&lt;form name="login" action="" method="post" style="margin-top:80px"&gt;<br />    &lt;table align="center"&gt;<br />            &lt;tr&gt;<br />              &lt;td&gt;用户名:&lt;/td&gt;<br />              &lt;td&gt;&lt;input type="text" name="user" id="user"&gt;&lt;/td&gt;
              &lt;td class="resetMsg" id="userMsg" /&gt;&lt;/td&gt;<br />            &lt;/tr&gt;<br />            &lt;tr&gt;<br />              &lt;td&gt;密码:&lt;/td&gt;<br />              &lt;td&gt;&lt;input type="password" name="password" id="password"&gt;&lt;/td&gt;
              &lt;td class="resetMsg" id="psdMsg" /&gt;&lt;/td&gt;<br />            &lt;/tr&gt;<br />            &lt;tr&gt;<br />              &lt;td&gt;&lt;/td&gt;<br />              &lt;td&gt;&lt;input type="submit" name="login" id="login" value="登陆" align="left"  
			          style="width:60"  onClick="javascript:return CheckTxt();" /&gt;&lt;/td&gt;
            &lt;/tr&gt;<br />          &lt;/table&gt;<br />&lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;</pre>
</div>
<p>页面的表单有两个输入框，分别输入用户名和密码，id为"login"的提交按钮在提交时触发Javascript方法CheckTxt()验证用户输入。由于Javascript方法是在客户端实现，所以验证仅限于对输入内容是否为空的判断，为了更好的用户体验，出错提示不采用弹出对话框的方式，而是把提示内容输出到输入框右边的&lt;td&gt;内容框当中（id分别为userMsg和psdMsg）。下面是列出了所有可能的情况和出错时输出的提示：</p>
<ol>
<li>user为空，password也为空：userMsg和psdMsg分别给出"缺少用户名"和"缺少密码"的提示；</li>
<li>user为空，password不为空：userMsg给出"缺少用户名"的提示，同时psdMsg的提示为空；</li>
<li>user不为空，password为空：userMsg的提示为空，psdMsg给出"缺少密码" 的提示；</li>
<li>user和password均不为空：userMsg和psdMsg的提示都为空。</li>
</ol>
<p>为了让验证更高效，在程序具体实现的时候要先考虑出错的情况，也就是前面三种，出现错误就立即终止并返回false，这样就不必再往下执行判断了。</p>
<p>Javascript方法CheckTxt()：</p>
<div style="background: rgb(204, 204, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<pre>&lt;script type="text/javascript"&gt;<br />	function CheckTxt()<br />	{<br />		var user = document.getElementById("user").value<br />		var password = document.getElementById("password").value<br />		if( user == "") //用户名为空 <br />		{<br />			document.getElementById("userMsg").innerHTML ="缺少用户名";<br />			document.getElementById("user").focus();<br />			if(password == "") //用户名为空且密码为空 <br />			{<br />				document.getElementById("psdMsg").innerHTML = "缺少密码"; <br />			} else //用户名为空，密码不为空 <br />			{<br />				document.getElementById("password").value ="";<br />				document.getElementById("psdMsg").innerHTML ="";<br />			}<br />			return false;<br />		} else if(password == "") //用户名不为空，密码为空<br />		{<br />			document.getElementById("userMsg").innerHTML ="";<br />			document.getElementById("psdMsg").innerHTML = "缺少密码";<br />			document.getElementById("password").focus();<br />			return false;<br />		}<br />		else //用户名和密码都不为空<br />		{<br />			return true;<br />		}<br />	}<br />&lt;/script&gt;
</pre>
</div>
<p>上面提到，在出错一旦发生，就需要给出出错提示从方法中返回，再看上面代码，为什么在用户名为空的情况，没有立即返回false，还需要再判断密码是否为空呢？仔细想一下就会清楚，如果在只判断了用户名为空的情况下就立即返回false，那么在用户名和密码都为空的情况下页面只会提示"缺少用户名"，不够全面和准确。如果你再仔细看看<a href="http://member1.taobao.com/member/login.jhtml" target="_blank">淘宝网</a>和<a href="https://www.google.com/accounts/ServiceLoginAuth?service=mail" target="_blank">Gmail</a>的登陆页面，就会更明白了。</p>
<p>还要注意的一个细节是在判断为空后应该设置焦点，以方便用户输入。</p>
<p>完成了客户端的验证，下面就要在服务器端进行验证了。为了更准确地给出出错信息，在查询MySQL数据库中的记录时，查询条件可以只指定用户名，这样就能够判断数据库中是否有用户输入的用户，如果没有，就给出"没有此用户"的提示，如果有，则进一步把用户输入密码和数据库中的记录进行对比。为了防止SQL注入攻击，在查询和比对的时候需要用mysql_real_escape_string()方法对表单提交的字段的内容中的特殊字符进行转义。</p>
<p>PHP验证代码清单：</p>
<p></p><div style="background: rgb(204, 204, 204) none repeat scroll 0% 0%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial;">
<pre>&lt;?php<br />	<br />	//处理未登陆时访问此页面的情况<br />	if(is_null($_SESSION['login'])){<br />	 <br />		//处理表单提交后的情况<br />		if(isset($_POST["user"])){<br />			$user = $_POST["user"];<br />			$password = $_POST["password"];	<br />			require("../include/dbconnect.txt");<br />			db_connect();<br />			//用mysql_real_escape_string() 函数对用户输入进行转义，防止SQL注入攻击<br />		   $queryUser = "select * from users where user ='"
                       .mysql_real_escape_string($user)."'";<br />			$result = mysql_query($queryUser);<br />			$row = mysql_fetch_array($result);<br />			if(!$row) { //如果用户名不存在<br />				print '&lt;script type="text/javascript"&gt;';<br />				print "document.getElementById('userMsg').innerHTML
					   ='用户名不存在'\n";<br />				print "document.getElementById('user').focus()";<br />				print '&lt;/script&gt;';<br />			} else { //如果存在，对比数据库中的密码和用户输入的密码（先进行转义 ）<br />				if($row["password"] == mysql_real_escape_string($password)) { <br />					if(is_null($_SESSION["url"])) {<br />						print '&lt;script type="text/javascript"&gt;';<br />						print 'self.location.href= "index.php"';<br />						print '&lt;/script&gt;';						<br />					} else {				  							     
                 //未登陆的情况下从"其他页面"redirect到此登陆页面，
                   登陆成功后页面直接跳转到"其他页面"，而不是index.php<br />						print '&lt;script type="text/javascript"&gt;';<br />						print "self.location.href='".$_SESSION["url"]."'";<br />						print '&lt;/script&gt;';<br />					}<br />					$_SESSION["login"] = 1;<br />				} else {<br />					print '&lt;script type="text/javascript"&gt;';<br />					print "document.getElementById('psdMsg').innerHTML =
				   '密码不匹配'\n"<br />					print "document.getElementById('user').value ='".$user."'\n";<br />					print "document.getElementById('password').focus()";<br />			    	print '&lt;/script&gt;';<br />				}<br />			}<br />			mysql_close();<br />			<br />		} 	<br />	} else {  <br />		print '&lt;script type="text/javascript"&gt;';<br />		print "window.onload = function()\n";<br />		print "{";<br />		print "document.getElementById('user').focus()\n";<br />		print "}";<br />		print '&lt;/script&gt;';	<br />		//登陆后再访问此页面的情况，清除会话$_SESSION['login']<br />		unset($_SESSION['login']);<br />		unset($_SESSION['url']);<br />	}<br />?&gt;</pre>
</div>
<p>这个例子是整个网站的一部分，所以以上这段代码有几处需要注意的地方：is_null($_SESSION['login'])是对SESSION变量$_SESSION['login']进行判断，如果用户在未登陆的情况下访问此页面（听着似乎有些矛盾，呵呵），则值为Null。用户在已登录的情况下再访问登陆页面，会清除会话$_SESSION['login']。</p>
<p>另外，在PHP代码中当中调用Javascript需注意如果Javascript代码语句有多行， 在每行结束时要加上\n，而且要被包含在""中，因为''在PHP不能对\n进行转义。</p>
<p>实例在这里：<a href="http://www.zhouhongquan.com/projects/hwlsp/admin/login.php" target="_blank">http://www.zhouhongquan.com/projects/hwlsp/admin/login.php</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>关于北京奥运会开幕式不得不说的事</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/08/say-somthing-about-2008-beijing-olympics.html" />
    <id>tag:www.zhouhongquan.com,2008://1.155</id>

    <published>2008-08-13T14:48:33Z</published>
    <updated>2010-05-23T13:42:02Z</updated>

    <summary>8月8日，北京第29届奥运会开幕式当天，真的有种过年般高兴的感觉，也很期待当晚的开幕式。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="My life" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="2008" label="2008" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="北京" label="北京" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="奥运会" label="奥运会" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<div id="kruz">8月8日，北京第29届奥运会开幕式当天，真的有种过年般高兴的感觉，也很期待当晚的开幕式，下午4点多开始就守在电视旁，因为奥运开始前的文艺演出在5点45就开始了，可惜等到接近6点，却没有一个频道直播。<br /><br id="qsqj" goog_docs_charindex="118" />接近晚上8点，开幕式直播开始，介绍领导人的时候镜头中还出现了前任国家主席Jiang 
Zemin，不过毕竟申奥成功还是在他任内实现的，出席开幕式也是理所当然。声光电构成的特殊的倒计时过程让人印象深刻，特别是加入了中国元素的10-1的倒数。接下来首先让我非常感动的是小女孩林秒可演唱的《歌唱祖国》，这首歌经过"演绎后"的歌唱效果给人一种特别舒服的感觉，情感的舒展更为缓慢和悠远，沁人心扉，在听歌曲和升国旗的过程中，激动的几乎要落泪，和上次纪念5.12地震的默哀仪式时殇痛的流泪不同，这次我心中有种强烈的自豪感，为身为中国人，身为中华民族一份子。<br /><br id="g3tk" goog_docs_charindex="389" />表演的整个前半段突出了中华文化的灿烂和文明，四大发明，击缶、京剧、武术等等都囊括其中，其中又以那副既古代，又现代的"卷轴画"最让我印象深刻，从远古到后面各个历史时期的许多中华文化的代表在极为绚丽和出色的现代声光电效果下一一呈现，但在观看的过程中不知怎的，总觉得场景的表现差了那么一点，切远景的时候角度不是多方位的，而有的场景又只用了近景，看不到长景的画面。后面表现中国现代的部分和前面相比，要稍逊一些，没有特别有代表性的内容。最后李宁手拿火炬往上升和在鸟巢顶部的画卷上奔跑的时候，从画面上看火炬的火焰几度消失和减小到很小的样子，就像要熄灭了一样，看着真叫人揪心，还好后来火焰又燃起，也顺利地点燃了主火炬。另外，李宁在奔跑的过程中曾在中间半段的时候跑在了画卷的前面，应该是一个失误吧。</div>-------------------------------------------------------------------------------<br />开幕式结束后看张艺谋在新闻发布会上也谈到说寻找一个中国当代、今天的文化符号几乎很难，所以表现现代的部分并不像前面展现古代的文化一样那么具体。<br /><br />
<div id="wtad1">在中央电视台播放的开幕式幕后的镜头中，李宁在点完火炬下来后说由于风太大，为了不让火炬熄灭，他还在奔跑的时候不断地用手转动，也着实担心了一把。<br /><br /></div>
<div id="dpy5">上网的时候，首先从GoogleReader里看到说还有BBC和NBC版的开幕式直播，画面和CCTV的还不一样，之前我还一直以为其他电视台的信号源都采用的是CCTV的呢。后来又看到天涯上讨论开幕式的导播问题，说很多画面在CCTV当中都没出现（也印证了我那天的感觉），NBC版才真正表现出了开幕式恢宏、绚丽的场景。到底是怎么回事，现在似乎还没有一个非常准确地说法。到今天，才终于把BBC和NBC两个版本的开幕式都下载下来，地址是<a id="zbuu" title="The Olympic Games 2008 Opening Ceremony (8th August 2008)[WS PDTV(Xvid)] Tiggzz xtremespeeds.net : TV Shows &gt; Sports related - Mininova" href="http://www.mininova.org/tor/1676926">这里</a> 和<a id="u1yn" title="Beijing Olympics 2008 Opening Ceremony 720p HDTV x264-ORENJi : TV Shows &gt; Other - Mininova" href="http://www.mininova.org/tor/1679166">这里</a>，大小分别是2.54G和4.92G，NBC的是高清晰版，但有些遗憾的是由于电脑的配置比较低（特别是CPU），播放的时候声音和画面出现了不同步的现象，但画面效果的确非常好，场面也相当震撼，的确比央视版的要好很多。从我看到的这两个版本的开幕式来看，NBC和BBC在鸟巢内都应该有自己的机位，BOB（BOB是由北京奥组委和国际奥委会所属的奥林匹克广播服务公司共同组建，是一家中外合作经营性质、专事于奥运会电视转播业务的企业，在北京2008年奥运会和残奥会期间，它将负责制作和提供用于为世界各国广播电视台播出的有关奥运会赛事和重要活动的国际电视与广播公共信号，并建设、运营国际广播中心和其他场馆的转播设施，为奥运会转播权持有者提供与转播事项有关的服务等）也应该为他们提供了大部分信号，但肯定也有他们自己编辑的内容，而CCTV版之所以遭到骂声，也就是因为加入了太多"自己"的内容。关于这方面的内容，搜索一下"NBC版开幕式"就会有很多介绍。但要指出的是，论坛中贴出的有些"没看到的画面"很多是用相机在现场静态拍摄的，并非电视直播的画面，NBC和其他除CCTV以外其他电视台的画面中也是没有的。<br /><br /></div>
<div id="ou.7">这两天又报道出了两个造假事件，一个是开幕式当天那29个"脚印"焰火，直播的时候前28个用的是事先就合成和制作好的效果图。第二件是小女孩林妙可的假唱，声音还是另外一个女孩儿。焰火"造假"确有客观原因，而"假唱"确实有些不应该。</div> ]]>
        
    </content>
</entry>

<entry>
    <title>在Fedora上搭建LAMP系统（二）：安装XAMPP</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/07/install-lamp-on-fedora-part-two-install-xampp.html" />
    <id>tag:www.zhouhongquan.com,2008://1.154</id>

    <published>2008-07-13T13:35:38Z</published>
    <updated>2008-07-14T03:19:54Z</updated>

    <summary>在虚拟机上安装好Fedora后，就进入搭建LAMP系统（IBM developerWorks 中国 网站上有关于LAMP的介绍）的核心阶段：安装XAMPP。从apache friends上下载适用于Linux系统的XAMPP的发行版 ，安装过程在网站上有详细介绍 ，很明了，但在安装的过程中还是出现了意外。。。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="lamp" label="LAMP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="web20" label="Web 2.0" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[在虚拟机上安装好Fedora后，就进入搭建LAMP系统（<a id="j.2o" title="IBM developerWorks 中国" href="http://www.ibm.com/developerworks/cn/" target="_blank">IBM developerWorks 中国</a> 网站上有关于LAMP的<a id="m.en" title="介绍" href="http://www.ibm.com/developerworks/cn/edu/wa-dw-wa-lamp-i.html" target="_blank">介绍</a>）的核心阶段：安装XAMPP。从<a id="dgd." title="apache friends" href="http://www.apachefriends.org/zh_cn/xampp.html" target="_blank">apache friends</a>上下载适用于<a id="oqvi" title="Linux系统的XAMPP的发行版" href="http://www.apachefriends.org/zh_cn/xampp-linux.html" target="_blank">Linux系统的XAMPP的发行版</a> ，安装过程在网站上有<a id="zzmw" title="详细介绍" href="http://www.apachefriends.org/zh_cn/xampp-linux.html" target="_blank">详细介绍</a> ，很明了，但在安装的过程中还是出现了意外：当使用 <font id="z4nf" face="Courier New">/opt/lampp/lampp start 运行XAMPP时，出现如下提示：</font><br /><br />
<blockquote id="k0.v" dir="ltr" style="margin-right: 0px;">
<div id="k0.v0">cat: error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory</div>
<div id="k0.v1">/bin/sh: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v2">Starting XAMPP for <span class="t_tag" id="k0.v3" href="http://linuxdiyf.com/bbs/tag.php?name=Linux">Linux</span> ...</div>
<div id="k0.v4">/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v5">/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v6">/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v7">/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v8">/bin/bash: error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory</div>
<div id="k0.v9">XAMPP for Linux started. </div></blockquote>
<div id="ja5f">在Firefox中访问http://localhost 的时候也无法看到XAMPP的开始页面，千辛万苦在网上找到遇到<a id="h2w." title="同样错误并解决了的方法" href="http://linuxdiyf.com/bbs/thread-94974-1-1.html" target="_blank">同样错误并解决了的方法</a> ：</div>
<blockquote id="dz:d" dir="ltr" style="margin-right: 0px;">
<div id="dz:d0">&nbsp;vi /opt/lampp/lampp<br id="dz:d1" />找到：export LD_ASSUME_KERNEL=2.2.5<br id="dz:d2" />改为：export LD_ASSUME_KERNEL=2.8.0</div></blockquote>vi 编辑器有其特殊的使用方法，<a id="gtwn" title="这里" href="http://linux.chinaitlab.com/command/38016.html" target="_blank">这里</a>有比较详尽的介绍，就不再赘述。 事实证明，前面的办法还真行，但具体是什么原因就不清楚了。<br /><br />现在，就可以通过http://localhost 来访问XAMPP的起始页面了，LAMP系统也就搭建成功了 ]]>
        
    </content>
</entry>

<entry>
    <title>在Fedora上搭建LAMP系统（一）：在VMware上安装Fedora</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/07/install-lamp-on-fedora-part-one-install-fedora-on-vmware.html" />
    <id>tag:www.zhouhongquan.com,2008://1.153</id>

    <published>2008-07-02T11:01:44Z</published>
    <updated>2008-07-02T11:07:54Z</updated>

    <summary>最近开始熟悉LAMP（即Linux-Apache-MySQL-PHP）WEB开发框架，从安装Fedora开始，先从Fedora Project 下载最新的Fedora 9安装DVD的 ISO镜像文件 。为了方便起见，我选择在虚拟机中安装Fedora。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="虚拟机" label="虚拟机" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="fedora" label="Fedora" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="lamp" label="LAMP" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="linux" label="Linux" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="vmwareworkstation" label="VMware Workstation" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p id="bj7c" goog_docs_charindex="1">最近开始熟悉LAMP（即Linux-Apache-MySQL-PHP）WEB开发框架，从安装Fedora开始，先从<a id="ivf1" title="Fedora Project" href="http://fedoraproject.org/" target="_blank" goog_docs_charindex="96">Fedora Project</a> 下载最新的Fedora 9安装DVD的 <a id="l4p7" title="ISO镜像文件" href="http://download.fedoraproject.org/pub/fedora/linux/releases/9/Fedora/i386/iso/Fedora-9-i386-DVD.iso" target="_blank" goog_docs_charindex="133">ISO镜像文件</a> 。为了方便起见，我选择在虚拟机中安装Fedora，最著名的两大虚拟机软件就是微软的<a id="gox:" title="Microsoft Virtual PC" href="http://www.microsoft.com/windows/products/winfamily/virtualpc/default.mspx" target="_blank" goog_docs_charindex="185">Microsoft Virtual PC</a> （最新版2007，另外SP1补丁竟然比主程序的安装文件还略大，微软的补丁真可谓是补到家了，呵呵）和<a id="fs43" title="VMware" href="http://www.vmware.com/" target="_blank" goog_docs_charindex="257">VMware</a> ，其实Virtual PC 最开始并不是微软自己的项目，而是出自一个叫做Connectix的公司，后来<a id="q0xj" title="微软收购了它" href="http://www.microsoft.com/china/windowsserver2003/evaluation/faqs/virtualizationfaq.mspx" target="_blank" goog_docs_charindex="317">微软收购了它</a> 。以前听微软TechNet的课时经常看到讲师在演示操作的时候用到Virtual PC，看着挺不错的，现在轮到自己尝试，发现简单得有些简陋，在创建虚拟机的时候可以选择安装的客户机操作系统（guest operating system）类型，提供的选项都是微软阵营的，有Win98、Win2000、WinXP、Win2003 等，在虚拟的BIOS中选择从光驱启动，把安装光盘放进光驱，或者在Virtual PC的"CD"菜单的"Capture ISO Image"选择要安装的操作系统的ISO文件，按照提示，就和平时在PC上安装系统一样。可惜的是它对Linux 的支持一点也不好，在安装Unbuntu的过程中，我就遇到了显示的问题，后来在网上搜索，看到有很多人也遇到同样的问题，但解决起来似乎不容易，且版本不同也有细微差别，后来还是放弃了，把目光投向VMware。<br id="ec5k1" goog_docs_charindex="706" /><br id="v0k1" goog_docs_charindex="707" />和Virtual PC 2007不同，VMware Workstation的安装文件就有300多M，最新版的VMware 6.0.4 build:93057，从官方网站也只能下载到试用版的。VMware对Linux的支持不错，在新建虚拟机的过程中有Microsoft Windows、Linux、Novell Netware、Sun Solaris多个选项可供选择，这些大项下面还有许多更为细致的小项可供选择。对虚拟机占用的内存和硬盘空间应根据实际情况做合理设置，我要安装的Fedora 9 由于是最新版的桌面系统，对内存大小和硬盘空间都有比较高的要求，所以我设置的值分别是512M和10G。在虚拟机的属性中把CD-ROM设置为"Using ISO image"，选择要安装的操作系统的ISO文件。安装过程比较顺利，即使以前没用过Linux也能够比较轻松的进行，设置的东西不多，按提示来就可以了。<br id="jhdq" goog_docs_charindex="1106" /><br id="jhdq0" goog_docs_charindex="1107" />系统安装好了，不过有两个地方让人感觉不太好：每次从Fedora切换回Windows时都要按Ctrl+Alt，比较麻烦；显示分辨率只能设置为800*600，将虚拟机全屏时内容只占据屏幕正中央的大部分，四边还离屏幕周边还有些距离，就像EeePC的屏幕。原本只是因为在安装好的Fedora客户机和宿主机（WinXP SP3）之间无法复制文件而安装VMware Tools，没想到安装好VMware Tools之后上面两个问题都得到解决，的确是意外的惊喜：鼠标在Fedora用户界面和WindowsXP宿主机之间可以自由"出入"，在Fedora中在窗口在最大化后所有界面充满了整个屏幕，就像在本机真实安装的一样。</p>
<p id="bj7c0" goog_docs_charindex="1">安装VMware Tools的过程我也是在网上搜到的，具体过程如下：</p>
<ol id="bl_i0" goog_docs_charindex="1364">
<li id="bl_i1" goog_docs_charindex="1365">
<div id="mavp" goog_docs_charindex="1366">安装虚拟机的时候网卡设置为本机的物理网卡。</div>
<li id="a.zq" goog_docs_charindex="1390">
<div id="a.zq0" goog_docs_charindex="1391">启动虚拟机，选择VMware Tools的VM菜单的Install VMware Tools选项，注意状态栏的提示。</div>
<li id="c9sp" goog_docs_charindex="1452">
<div id="c9sp0" goog_docs_charindex="1453">选择VMware Tools的VM菜单的Removable Devices子项中的CD-ROM项，点击Edit，在Use ISO image下点击Browse，在打开的对话框中选择VMware程序文件目录下的Linux.iso。</div>
<li id="p3n3" goog_docs_charindex="1544">
<div id="p3n30" goog_docs_charindex="1545">进入Fedora命令行模式（纯命令行模式我也不知道咋进，我是在用户界面下的终端模式里输入命令的，另：一定要用root身份登陆），输入 mount /dev/cdrom /mnt/cdrom，然后输入 cd/mnt/cdrom。</div>
<li id="he3t" goog_docs_charindex="1646">
<div id="he3t0" goog_docs_charindex="1647">打开cdrom文件夹，这时应该可以看到有两个文件，一个是VMwareTools*.rpm（*部分根据VMware的版本不同而有所差异，我用的是VMware 6.0.4 build93057，在这里文件名为VMwareTools-6.0.4-93507.i386.rpm），在终端中输入rpm -ivh VMwareTools*.rpm；还有一个文件是VMwareTools*.tar.gz （和前面的文件名类似），依次输入以下命令 cp VMwareTools*.tar.gz /tmp、 cd /tmp、 tar xzvf VMware－tools*.tar.gz、cd vmware－tools-distrib，打开vmware-tools-distrib文件夹，里面会有一个vmware-install.pl 文件，输入./vmware-install.pl，在接下来安装过程中的提示中一直按回车。</div>
<li id="kah0" goog_docs_charindex="1646">
<div id="kah00" goog_docs_charindex="1647">在 /mnt文件夹下，会发现此时多了一个hgfs的文件夹，表明VMware Tools安装成功了。</div>
<li id="uibz" goog_docs_charindex="1646">
<div id="uibz0" style="TEXT-ALIGN: left" goog_docs_charindex="1647">最后一步，设置文件夹共享，VM菜单里进行，选择Setting子项，再选择Options，在窗体的左半部分有一个Shared Folders选项，默认情况下是Disabled，选择Always enabled，在下面的Folders中添加要共享的文件夹目录，这样，客户机（Fedora）和宿主机（WinXP）都可以访问共享目录下的文件了，可以用在Windows中拷贝相应文件到Fedora。最后，用umount /mnt/cdrom卸载光驱。</div></li></ol>]]>
        
    </content>
</entry>

<entry>
    <title>使用Windows Installer服务时出现&quot;C:\Windows\Installer\xxxxxxx.ipi &quot;错误的解决办法</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/06/how-to-fix-windows-installer-error.html" />
    <id>tag:www.zhouhongquan.com,2008://1.152</id>

    <published>2008-06-05T14:49:15Z</published>
    <updated>2008-07-02T11:34:29Z</updated>

    <summary>今天在安装Silverlight和微软拼音输入法2007 的时候，出现安装错误的提示，在安装其他使用Windows Install服务的程序时候也是如此。打开控制面板的事件查看器，在&quot;应用程序&quot;的出错记录是</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="windowsinstaller" label="WIndows Installer" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p id="irzc0" goog_docs_charindex="1">今天在安装Silverlight和<a id="cq6w" title="微软拼音输入法2007" href="http://www.microsoft.com/china/windows/products/ime/MSPY2007.mspx" target="_blank">微软拼音输入法2007</a> 的时候，出现安装错误的提示，在安装其他使用Windows Installer服务的程序时候也是如此。打开控制面板的事件查看器，在"应用程序"的出错记录是</p>
<blockquote id="zanx0" dir="ltr" style="MARGIN-RIGHT: 0px">
<p id="qu7b0" goog_docs_charindex="1">"产品: 微软拼音输入法2007 -- 安装程序在安装此软件包时遇到一个错误。这可能表示此软件包有错。错误码是 2203。参数是: C:\WINDOWS\Installer\3deaa.ipi, -2147287035,"</p>
<p id="qu7b1" goog_docs_charindex="1">"Product: Microsoft Silverlight -- The installer has encountered an unexpected error installing this package. This may indicate a problem with this package. The error code is 2203. The arguments are: C:\WINDOWS\Installer\442279.ipi, -2147287035, "</p></blockquote>
<p id="jgfi0">可以看到，出错原因的描述是类似的，前面部分说程序遇到错误，可能表示软件包有错，后面解释详细情况："错误码为xxxx。参数是：C：\WINDOWS\Installer\xxxxx.ipi,-xxxxxxxxxx,"。先来分析，安装文件本身是没有问题的，都是完整的，而Windows Installer服务也是正确安装了的，版本是3.1，服务也在运行状态。在网上G了一下Windows Installer出错的解决办法，但大部分是由于Windows Installer服务本身的问题造成的，出错情况和上面也不一样。搜索"C:\WINDOWS\Installer ipi"，终于找到了<a id="gnaz" title="解决办法" href="http://blog.csdn.net/carolbaby/archive/2006/12/13/1440733.aspx" target="_blank">解决办法</a> ，作者给出了几种可能的原因：</p>
<ol id="jgfi1">
<li id="jgfi2">当前登录用户的用户环境变量必须包括 <strong id="tf210">TEMP:%USERPROFILE%\Local Settings\Temp 和 TEM：%USERPROFILE%\Local Settings\Temp</strong> （其中，%USERPROFILE%是当前登录用户的配置文件路径，如当前登录用户为Admin，则其对应的%USERPROFILE%为C:\Documents and Settings\Admin）</li>
<li id="tf211">当前登录用户应该有管理权限，即，当前用户应该属于Administrator或者Power Users用户组。</li>
<li id="aj.e0">确保"<strong id="l1q:0">计算机名\SYSTEM</strong>"用户拥有对"<strong id="l1q:1">C:\Documents and Settings\&lt;当前登录用户名&gt;\Local Settings\Temp</strong>"文件夹的绝对控制权。</li>
<li id="bap50">对于某些软件，可能还需要"<strong id="l1q:0">计算机名\SYSTEM</strong>"用户拥有对"<strong id="da030">C:\Documents and Settings\&lt;当前登录用户名&gt;\Local Settings\Application Data</strong>"文件夹的绝对控制权。</li></ol>
<p id="y:zi0">经实验，我遇到的问题是上述原因中的第三种造成的，把SYSTEM用户添加到Temp文件夹"属性"-〉"安全"设置里并赋予其完全控制的权限就可以了（必须是NFTS系统才支持文件夹的安全属性）。</p>]]>
        
    </content>
</entry>

<entry>
    <title>无法更改IE7临时文件存放位置的解决办法</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/06/the-solution-of-cannot-change-the-location-of-ie-temporary-internet-files.html" />
    <id>tag:www.zhouhongquan.com,2008://1.151</id>

    <published>2008-06-03T14:44:41Z</published>
    <updated>2008-07-02T11:39:41Z</updated>

    <summary>前两天遇到一件怪事，由于系统中毒（还是安装了SP3和卡巴斯基杀毒软件的系统，网络真的没有绝对的安全），在卡巴斯基杀完毒后重启进系统，提示&quot;没有找到mfc40u.dll&quot;的错误，标题是&quot;lsass.exe 无法找到组件&quot;，lsass.exe是系统运行时的一个重要进程，无法运行的话连系统登陆界面都进不了，点确定后屏幕背景一片黑，只能看到鼠标箭头。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="ie7" label="IE7" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="sp3" label="SP3" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="Windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>前两天遇到一件怪事，由于系统中毒（还是安装了SP3和卡巴斯基杀毒软件的系统，网络真的没有绝对的安全），在卡巴斯基杀完毒后重启进系统，提示"没有找到mfc40u.dll"的错误，标题是"lsass.exe 无法找到组件"，lsass.exe是系统运行时的一个重要进程，无法运行的话连系统登陆界面都进不了，点确定后屏幕背景一片黑，只能看到鼠标箭头。手动重启，在开机自检后按F8出现启动高级菜单，选择"最后一次正确的配置"，顺利进入系统，但病毒依旧存在，卡巴斯基再次杀毒，重启后又遇到刚才连登陆界面都没出现的状况，没办法，只有重装系统（准确说是还原，之前我做过备份）。&nbsp;</p>
<p>由于备份的时候就已经把IE7的临时文件夹更改到非系统分区，所以还原后也没有留意它。还原后第一件事情----安装SP3补丁，虽然之前即使安装了补丁也被病毒感染，但肯定的是，如果不安装，更可能被感染。接着把卡巴斯基和其他必备的软件安装好了，一切正常。过了几天，在用Windows自带的磁盘清理工具对系统盘进行清理的时候发现在"要删除的文件："列表下有"Internet临时文件"和"脱机文件"，文件还比较大，临时文件不是已经设置到了非系统盘吗？怎么还会在系统盘中有这么大的文件呢？打开IE7 的"Internet 属性"-》"浏览历史记录"-》"设置"的"Internet临时文件和历史记录设置"对话框，惊奇的发现"当前位置"是"C:\Document and Settings\Admin\Local Settings\Temporary Internet Files"（其中Admin是当前登陆的用户名），这个是系统的默认设置，但我确信在做系统备份之前就把位置改到了E盘，也就是文件应该存放在"E:\Internet 临时文件"，而这次系统还原后我也没有对IE的临时文件设置进行过改动，想想真是蹊跷。&nbsp;</p>
<p>既然临时文件夹现在的位置是默认的，那就改回来吧，在"Internet临时文件和历史记录设置"当中选择移动文件夹，在弹出的窗口中选择E盘，点击确定后系统会注销以更改设置，再次进入系统，再次打开"Internet临时文件和历史记录设置"，很奇怪的，发现"当前位置"仍然是默认设置，即"C:\Document and Settings\Admin\Local Settings\Temporary Internet Files"，很明显，更改没有起作用，重新以上操作，还是不行，包括注销后重启都没能把位置从默认位置改到E盘。打开E盘，发现"Internet 临时文件"还存在，但是文件夹不是隐藏的。&nbsp;</p>
<p>从网上搜索到的一些相关信息来判断，可能和系统盘的临时文件夹下面的文件有关，而当前登陆用户是无法删除系统盘的Internet临时文件夹的，最后采取的解决办法就是：先重复上面的操作，把临时文件位置改到"E:\Internet 临时文件"，注销后按两次Ctrl+Alt+Del键，出现经典的登陆对话窗口，"用户名"输入计算机管理员Administrator（不同于刚才登陆用的Admin用户），输入密码，现在就可以删除"C:\Document and Settings\Admin\Local Settings\Temporary Internet Files"了，注销Administrator，用Admin登陆，再看现在IE的临时文件存放位置，成功地改为了"E:\Internet 临时文件"。</p>]]>
        
    </content>
</entry>

<entry>
    <title>把Blogger上的日志存档迁移到此Blog并升级Blog至MT4.1</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/03/move-archives-from-blogger-and-upgrade-to-mt41.html" />
    <id>tag:www.zhouhongquan.com,2008://1.149</id>

    <published>2008-03-30T15:18:43Z</published>
    <updated>2008-03-30T16:52:28Z</updated>

    <summary>前段时间花了比较大的精力把存放在Blogger上的日志存档迁移到这个Blog，存档的时间跨度从06年4月到06年底，共大概80篇日志。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="This site" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="blog" label="Blog" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="blogger" label="Blogger" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="bloggercom" label="Blogger.com" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype" label="MovableType" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="movabletype41" label="MovableType4.1" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>前段时间花了比较大的精力把存放在<a href="http://www.blogger.com/"><font color="#3d7b22">Blogger</font></a>上的日志存档迁移到这个Blog，存档的时间跨度从06年4月到06年底，共大概80篇日志。</p>
<p>最早接触Blog是05年的上半年，当时还在学校，上网不是很方便（学校的网络曾一度中断数学期之久，也没有更多的时间去校外上网），直到那年暑假，借着在外面租房子的朋友那里能上网的便利，对Blog有了更多的了解。那段时间也是Blog刚比较火的时候，我经常看的《电脑爱好者》也有很多关于Blog的介绍，在她的指引下，我在Donews建了第一个Blog（<a href="http://blog.donews.com/hongquanzhou"><font color="#3d7b22">http://blog.donews.com/hongquanzhou</font></a>），因为那是我就对IT业界比较关注，特别是WEB方面，所以Blog的内容大多都是从IT业界的新闻中发掘出的比较新颖的东西，或新的产品、或比较比较有趣的事情，不一而足。过了一段时间，似乎也没有那么多东西可以让我挖掘的，所以转而翻译一些IT新闻站点的文章，至今还记得那时来源最多的就是<a title="BetaNews | Inside Information; Unreleased Products" href="http://www.betanews.com/"><font color="#3d7b22">Betanews</font></a>和<a title="WinBeta.org Beta News and Reviews" href="http://www.winbeta.org/"><font color="#3d7b22">winbeta</font></a>，关注的焦点一般都是四巨头--Apple、Yahoo、Microsoft和Google。后来大概是嫌用户名过长（hongquanchow）别人不好记忆，就在Donews又新建了一个Blog <a href="http://blog.donews.com/hongquan"><font color="#3d7b22">http://blog.donews.com/hongquan</font></a>，很可惜，原来的Blog存档在我删除Blog的时候也随之被删除了。</p>
<p>最开始考虑在Donews开博除了受到杂志介绍的影响，也和那时就已经很有名气的IT Blogger <a href="http://blog.donews.com/keso"><font color="#3d7b22">Keso</font></a> 有些"关系"，我第一个真正关注的就是他的Blog，而他的Blog就在Donews。后来，一个更好的Blog服务吸引了我的目光，那就是被Google收购的<a href="http://www.blogger.com/"><font color="#3d7b22">Blogger</font></a>，本来Blogger有自己的托管服务，即Blogspot，但我不想用申请的zhouhongquan.cn这个域名做URL的转向，所以就用Blogger自带的FTP发布功能发布到我申请的免费空间上，因为不太稳定和各种原因，期间还换了好几个，后来使用Keso<a title="圣诞快乐 - 对牛乱弹琴 | Playin' with IT" href="http://blog.donews.com/keso/archive/2005/12/24/669585.aspx"><font color="#3d7b22">推荐</font></a>的SiteSled，但接<a title="SiteSled又上不去了 - Zhou Hongquan's Blog" href="http://www.zhouhongquan.com/archives/2006/05/cant-connect-sitesled-again.html"><font color="#3d7b22">二</font></a>连<a title="无语 - Zhou Hongquan's Blog" href="http://www.zhouhongquan.com/archives/2006/05/nothing-to-say.html"><font color="#3d7b22">三</font></a>的罢工让我心灰意冷，让我又换回到Blogger自身的Blogspot托管，但还是摆脱不了被<a href="http://www.zhouhongquan.com/tag/GFW"><font color="#3d7b22">GFW</font></a>阻尼的命运，实在是受不了这个折磨，找了一个<a title="从Blogger迁移到MovalbeType" href="http://www.zhouhongquan.com/archives/2007/01/from-blogger-to-movabletype.html"><font color="#3d7b22">Dreamhost的空间</font></a>，并用MovalbeType建立了独立Blog，但原来Blogger上的存档依然留在Blogger，<a title="本站启用新域名" href="http://www.zhouhongquan.com/archives/2007/04/new-domain-for-this-site.html"><font color="#3d7b22">更换域名</font></a>后，一直都想把这些存档迁移过来，但对于近80篇，其中有很多还插有图片的日志，要把每篇日志按照现有的规则（日志标题的永久链接名为标题内容对应的英文名，把日志归类，设定关键字、Tag、摘要）重建，确实是比较麻烦的一件事，遂一直拖到现在，直到前段时间在清理多余的网络服务（主要是邮箱）注册信息时，忘记了日志中的图片大多是存放在Flick上的，结果误删了这个存放图片的"多余"的Flickr帐号，可能是因为完全删除还要有段时间吧，日志中的图片都还可以访问，赶紧把所有的日志迁移到了这个Blog，图片也全部存放在Yupoo上。迁移的时候，免不了对格式、标题等进行修改和校正，重温以前的旧文，发现有两个怪异的特点：</p>
<ol>
<li>很多日志文章的标题都是问句的形式，有的还加上了问号。</li>
<li>除以上提到的用问句做标题的日志，很多文章都仅仅是提出问题，并没有给出解决的办法，即使后来弄懂了这个问题。</li></ol>
<p>日志迁移的过程中由于使用的是另外一台机器，IE是6.0版本，发现导航菜单（是自己加上去的）和右边侧栏的Mybloglog Widget 显示不正常，怀疑和MT模板有关，升级到最新的<a title="Download For Personal Use" href="http://www.movabletype.com/download/personal-use.html"><font color="#3d7b22">MTP 4.1</font></a>,升级过程和方法和上次<a title="Blog平台升级到Movable Type 4.01" href="http://www.zhouhongquan.com/archives/2008/01/upgrade-to-movabletype-401.html"><font color="#3d7b22">升级到4.01</font></a>是一样的，升级后发现MT 4.1与前一版本的几点不同：</p>
<ol>
<li>后台编辑器把 Publishing、Categories、Feedback等选项放到了右边</li>
<li>Tag 标签云（Tag Cloud）的显示方式和以前有所不同</li></ol>]]>
        
    </content>
</entry>

<entry>
    <title>WPS Office 和文件关联的相关问题</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/03/wps-office-and-file-associations.html" />
    <id>tag:www.zhouhongquan.com,2008://1.64</id>

    <published>2008-03-11T16:08:36Z</published>
    <updated>2008-03-11T16:13:46Z</updated>

    <summary>由于平常要用到的软件比较多，在考虑安装办公软件的时候就选择了免费的WPS Office 2007，和微软Office办公套件安装光盘600多M 的庞大体积相比，WPS的安装文件着实很Mini，仅有23M（其实WPS Office 2007 安装后也要占据110M的空间），但是在使用的过程中，也遇到一个不大不小的问题。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="microsoft" label="Microsoft" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="wpsoffice2007" label="WPS Office 2007" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="文件关联" label="文件关联" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>由于平常要用到的软件比较多，在考虑安装办公软件的时候就选择了免费的<a title="免费正版WPS Office 2007完整版下载,23M超Mini的Office,WPS2007正式版免费下载" href="http://wps.kingsoft.com/down/" target="_blank">WPS Office 2007</a>，和微软Office办公套件安装光盘600多M 的庞大体积相比，WPS的安装文件着实很Mini，仅有23M（其实WPS Office 2007 安装后也要占据110M的空间），但是在使用的过程中，也遇到一个不大不小的问题。</p>
<p>双击.doc、.xls和.ppt文件时，经常会出现“无法找到******”，让你“检查文件名的拼写，并检查文件位置是否正确”,还说“如果你正试图从“文件”菜单中最近使用的文件列表中打开文件，请确认文件未被重命名、移动或删除”，点确定后还会继续提示几次，除了“******”有变化，其余部分是相同的。如下图：</p>
<p><a href="http://pic.yupoo.com/zhouhongquan/78115539f5dc/p3sg2dsq.jpg" target="_blank"><img alt="无法找到“E:\Various\Visual”" src="http://pic.yupoo.com/zhouhongquan/78115539f5dc/medium.jpg" /></a>&nbsp; （<a href="http://pic.yupoo.com/zhouhongquan/78115539f5dc/p3sg2dsq.jpg" target="_blank">点击</a>看大图）</p>
<p><img alt="无法找到“E:\Various\C#”" src="http://pic.yupoo.com/zhouhongquan/93875539f5dc/medium.jpg" /> （<a href="http://pic.yupoo.com/zhouhongquan/93875539f5dc/ckho81yf.jpg" target="_blank">点击</a>看大图）</p>
<p><a href="http://pic.yupoo.com/zhouhongquan/69025539f5dd/mb5wdt8x.jpg" target="_blank"><img alt="无法找到“E:\Various\2005”" src="http://pic.yupoo.com/zhouhongquan/69025539f5dd/medium.jpg" /></a> （<a href="http://pic.yupoo.com/zhouhongquan/69025539f5dd/mb5wdt8x.jpg" target="_blank">点击</a>看大图）</p>
<p>&nbsp;<img alt="无法找到“E:\Various\使用详解.doc”" src="http://pic.yupoo.com/zhouhongquan/7322353a0ba9/medium.jpg" /> （<a href="http://pic.yupoo.com/zhouhongquan/7322353a0ba9/30kf7cj8.jpg" target="_blank">点击</a>看大图）</p>
<p>当点完确定不再提示后，文件当然还是未被打开，最开始的时候我还怀疑是不是文件不完整造成的，但后来发现通过菜单“文件”—》“打开”，再选择这些文件，都能够顺利地打开，所以可以排除是文件不完整的原因。</p>
<p>先从提示找找线索，上文当中的4幅截图就是我在双击本地磁盘上"E:\Various\"目录下的“<strong>Visual C# 2005 使用详解.doc</strong>”这个文件时接连出现的四个提示对话框，让我们仔细看看提示的内容（很遗憾的是之前遇到这个问题很多次却一直没有留意这个），上文提到过，除了“<strong>无法找到******</strong>”的内容不一样外，其余的内容都是相同的。提示的"<strong>E:\Various\Visual</strong>"、"<strong>E:\Various\C#</strong>"、"<strong>E:\Various\2005</strong>"、"<strong>E:\Various\使用详解</strong>.doc"这几个目录和文件是不存在的，当然WPS会给出无法找到的提示。再仔细看，原来"<strong>Visual"</strong>、"<strong>C#"</strong>、"<strong>2005"</strong>、"<strong>使用详解.doc"</strong>正好就是真正文件名的四个部分，而这四部分中间恰好有空格，是否是空格的原因呢？验证一下，把文件名当中的空格去掉，改为“<strong>VisualC#2005使用详解.doc</strong>”，双击文件，果然能打开了。但是不可能每次碰到这种有空格的文件名都去手动改啊，看来问题还没有从根本上解决。</p>
<p>再来分析，现在可以确认双击打不开就是因为文件名当中有空格引起的，但是即使文件名当中有空格，为什么用文件菜单的打开命令就可以呢？双击和用文件菜单的打开命令有什么区别呢？双击的时候调用的是与文件类型相关联的程序，在我的电脑上，.doc文件默认就是用WPS 文字程序打开的，是否和“文件关联”的设置有关呢？我对文件关联有些了解，曾经在一本电脑杂志上看到过一个文件关联的小技巧，就是可以手动建立任何扩展名所对应的打开方式——通过资源管理器窗口的“工具”—》“文件夹选项”—》“新建”，还可以更改文件类型对应的图标、定义操作等。如下图：</p>
<p><a href="http://pic.yupoo.com/zhouhongquan/0730253a1a85/mpb4gg7t.jpg" target="_blank"><img src="http://pic.yupoo.com/zhouhongquan/0730253a1a85/medium.jpg" /></a> （<a href="http://pic.yupoo.com/zhouhongquan/0730253a1a85/mpb4gg7t.jpg" target="_blank">点击</a>看大图）</p>
<p>这种方法在重装系统后某些软件（特别是绿色软件）还能正常使用的情况下非常有用，WPS虽然不是绿色软件，但只要先前是安装在非系统盘，重装系统后不用重新安装程序，程序照样可以使用，找到其中的程序可执行文件"wps.exe"、"et.exe"、"wpp.exe"就可以分别打开文档、表格和演示文稿了。但是在双击.doc、.xls、.ppt文件的时候会弹出“Windows 不能打开此文件”的提示（出现这个对话框就是因为所双击的文件类型还没有在系统中注册），可以使用选择“使用 Web 服务寻找适当的程序（<u>W</u>）”，也可以“从列表中选择适当的程序（<u>S</u>）”，通常选择后者，通过“打开方式”里提供的程序进行选择，如果勾选了“始终使用选择的程序打开这种文件（<u>A</u>）”，下次再双击的时候就可以直接打开了。另外一种方式就是前面提到的直接通过新建的方式手动地编辑文件类型。回到现在的情况，WPS是在系统安装后才安装的，但是仍然可以对.doc、.xls、.ppt的文件类型进行设置，打开“编辑文件类型”设置的“Open”操作的编辑选项，“用于执行操作的应用程序（<u>L</u>）”这一项的设置是""<strong>D:\Kingsoft\WPS Office 2005\office6\wps.exe" %1"(不包括最外面的一对引号)</strong>，</p>
<p><img src="http://pic.yupoo.com/zhouhongquan/2033953a2217/9dm7l4hl.jpg" /> </p>
<p>再对比了一下PDF文件类型的设置，发现了问题，pdf的“Open”操作的“用于执行操作的应用程序（<u>L</u>）”这一项在程序位置地址后的%1是有双引号的，而.doc、.xls、.ppt都没有，给%1加上双引号，问题解决！</p>
<p>附：（微软网站上关于文件关联的两篇文章）</p>
<ol>
<li><a href="http://support.microsoft.com/kb/122787/zh-cn" target="_blank">SAMPLE： FileAsso.exe 演示如何使用文件关联</a></li>
<li><a href="http://support.microsoft.com/kb/307859/zh-cn" target="_blank">如何在 Windows XP 中更改双击文件时启动的程序</a></li></ol>]]>
        

    </content>
</entry>

<entry>
    <title>安装Microsoft Visual Studio 2005后多出的“ON”和“OFF”</title>
    <link rel="alternate" type="text/html" href="http://www.zhouhongquan.com/archives/2008/03/the-more-on-and-off-after-installing-microsoftvisualstudio2005.html" />
    <id>tag:www.zhouhongquan.com,2008://1.63</id>

    <published>2008-03-07T14:10:27Z</published>
    <updated>2008-03-07T14:23:06Z</updated>

    <summary>前两天安装了Microsoft Visual Studio 2005 Professional Edition后，这两天发现了一个奇怪的问题—系统的某些选项设置后面多出了“ON”和“OFF”。</summary>
    <author>
        <name>Hongquan</name>
        <uri>http://www.zhouhongquan.com</uri>
    </author>
    
        <category term="Tech memo" scheme="http://www.sixapart.com/ns/types#category" />
    
    <category term="visualstudio2005" label="VisualStudio2005" scheme="http://www.sixapart.com/ns/types#tag" />
    <category term="windows" label="Windows" scheme="http://www.sixapart.com/ns/types#tag" />
    
    <content type="html" xml:lang="en" xml:base="http://www.zhouhongquan.com/">
        <![CDATA[<p>前两天安装了Microsoft Visual Studio 2005 Professional Edition后，这两天发现了一个奇怪的问题—系统的某些选项设置后面多出了“ON”和“OFF”。</p>

<p>首先发现的是在IE属性的“安全”—》“自定义级别”选项里，如下图：</p>

<p><img src="http://pic.yupoo.com/zhouhongquan/56809534bef2/bku294zb.jpg" /> </p>

<p>可以看到，“禁用”、“提示”和“允许”这三种选项中的任一个，如果处于被选中的状态，则后面显示为“ON”，而在未选中的情况下后面则显示为“OFF”。而在IE属性的“高级”选项设置里，既有复选框也有单选框，规则和前面的一样，只要选中了那个选项，则后面显示为“ON”，未勾选的则显示为“OFF”。</p>

<p><img src="http://pic.yupoo.com/zhouhongquan/51898534bef3/o8nkfx2r.jpg" /> </p>

<p>后来又在“工具”—》“文件夹选项”—》“查看”的设置里看到的同样的情况：</p>

<p>&nbsp;<img src="http://pic.yupoo.com/zhouhongquan/43890534bef2/9shcg4pl.jpg" /> </p>

<p>不知道安装过VS2005的朋友们有没有遇到同样的问题。</p>]]>
        
    </content>
</entry>

</feed>

