<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Peaceful mind</title>
	<atom:link href="http://lizhili.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://lizhili.com</link>
	<description>Where there is a will, there is a way!</description>
	<lastBuildDate>Fri, 03 Sep 2010 06:03:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>php command line</title>
		<link>http://lizhili.com/?p=373</link>
		<comments>http://lizhili.com/?p=373#comments</comments>
		<pubDate>Fri, 03 Sep 2010 06:03:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=373</guid>
		<description><![CDATA[从php4.3.0开始，php提供了一个称为cli的服务器应用接口sapi(Server Application Programming Interface)。在linux编译php时，如果--with-apxs或者--disable-cgi的话，最后安装的php就是cli方式，如果指明--enable-cgi并且没指定--with-apxs编译指令，最后安装的php就是cgi方式。因为默认情况下cli和cgi都是默认支持的。而这二种方式有什么用呢？就是可以在命令行下不依赖诸如apache等服务器从而单独执行php程序。而在php4的window版本中的安装中，cli/php.exe就是cli方式的，主安装目录下的php.exe是cgi方式的。这种方式在php5的window版本有了改变，在 window下主目录下有php_cgi.exe（cgi方式）和php.exe(cli方式），接下来告诉你如何查看自己的php处于哪种方式 linux环境中，用/usr/local/php4/bin/php -v 返回cli/cgi,或者 /usr/local/php4/bin/php -r 'echo php_sapi_name();echo PHP_SAPI;' window环境中，用cli/php -v （cli方式) php -v(返回cgi_fcgi) 通过页面执行时获得的都是apache/apache2Handler 也就是PHP_SAPI常量目前比较常用的就是cli，cgi，apache/apache2Handler 下面介绍不利用web服务器（比如apache，IIS）如何执行/调试php程序？说白了也就是我们常说的php的cli模式 记得我们每次安装完php查看php的相关信息是如何查看的吗？用phpinfo函数，好主意。但我们怎么在命令行下查看呢？用php -i就可以了。 还有一个就是我们在编译扩展库的时候经常要用到的，我怎么知道用phpize编译的扩展库是否编译进php了呢？写程序当然可以，，太麻烦，本人比较懒，其实用php -m查看下就可以了。那些编译进去了，那些没有编译进去，一目了然了。 下面再介绍个重量级的，那就是php -f了，这可是我们在命令行下调试php的必备哦。比如你有个php程序test (呵呵，其实这个和php -i是一个效果), 我们用php -f test.php;就可以看到你想要的结果了。如果你还想偷懒的话，可以把-f省掉也是可以的，当然还有一个更简单的方法 就是在test文件的开头加上 #！/usr/local/php4/bin/php -q ,然后chmod +x;使test能像shell/Perl脚本那样直接运行了。这里的-q其实就是向下兼容以前老的cgi程序。 可能有人要问了。如果test.php有语法错误或者存在不定义的函数调用我怎么知道呢？实际上，经过本人试验，用-f参数执行test.php时，即使文件中有错误或者存在非法调用时，命令行下没有任何输出，郁闷，写了都不知道错在哪？幸好php不会这么笨。。我们可以利用下面的方法查看是否正确。。 使用php -l test.php检查是否存在错误，如果存在错误，再利用 php -c /usr/local/php4/lib/php.ini test.php 或者 php -d display_error=on -f test.php查看错误的具体信息 如果懒的写文件，就直接在命令行下写 php -r "phpinfo();" [...]]]></description>
			<content:encoded><![CDATA[<p>从php4.3.0开始，php提供了一个称为cli的服务器应用接口sapi(Server Application Programming Interface)。在linux编译php时，如果--with-apxs或者--disable-cgi的话，最后安装的php就是cli方式，如果指明--enable-cgi并且没指定--with-apxs编译指令，最后安装的php就是cgi方式。因为默认情况下cli和cgi都是默认支持的。而这二种方式有什么用呢？就是可以在命令行下不依赖诸如apache等服务器从而单独执行php程序。而在php4的window版本中的安装中，cli/php.exe就是cli方式的，主安装目录下的php.exe是cgi方式的。这种方式在php5的window版本有了改变，在 window下主目录下有php_cgi.exe（cgi方式）和php.exe(cli方式），接下来告诉你如何查看自己的php处于哪种方式<br />
linux环境中，用/usr/local/php4/bin/php -v 返回cli/cgi,或者<br />
/usr/local/php4/bin/php -r 'echo php_sapi_name();echo PHP_SAPI;'<br />
window环境中，用cli/php -v （cli方式) php -v(返回cgi_fcgi)<br />
通过页面执行时获得的都是apache/apache2Handler<br />
也就是PHP_SAPI常量目前比较常用的就是cli，cgi，apache/apache2Handler</p>
<p>下面介绍不利用web服务器（比如apache，IIS）如何执行/调试php程序？说白了也就是我们常说的php的cli模式<br />
记得我们每次安装完php查看php的相关信息是如何查看的吗？用phpinfo函数，好主意。但我们怎么在命令行下查看呢？用php -i就可以了。<br />
还有一个就是我们在编译扩展库的时候经常要用到的，我怎么知道用phpize编译的扩展库是否编译进php了呢？写程序当然可以，，太麻烦，本人比较懒，其实用php -m查看下就可以了。那些编译进去了，那些没有编译进去，一目了然了。<br />
下面再介绍个重量级的，那就是php -f了，这可是我们在命令行下调试php的必备哦。比如你有个php程序test<br />
<?php phpinfo();?> (呵呵，其实这个和php -i是一个效果),<br />
我们用php -f  test.php;就可以看到你想要的结果了。如果你还想偷懒的话，可以把-f省掉也是可以的，当然还有一个更简单的方法<br />
就是在test文件的开头加上<br />
#！/usr/local/php4/bin/php -q ,然后chmod +x;使test能像shell/Perl脚本那样直接运行了。这里的-q其实就是向下兼容以前老的cgi程序。</p>
<p>可能有人要问了。如果test.php有语法错误或者存在不定义的函数调用我怎么知道呢？实际上，经过本人试验，用-f参数执行test.php时，即使文件中有错误或者存在非法调用时，命令行下没有任何输出，郁闷，写了都不知道错在哪？幸好php不会这么笨。。我们可以利用下面的方法查看是否正确。。<br />
使用php -l test.php检查是否存在错误，如果存在错误，再利用<br />
php -c /usr/local/php4/lib/php.ini test.php<br />
或者 php -d display_error=on -f test.php查看错误的具体信息</p>
<p>如果懒的写文件，就直接在命令行下写 php -r "phpinfo();" ;php -r "get_defined_constants();"等</p>
<p>至于其它的参数有啥子意思，由于平时用的少。就不介绍了。感兴趣的用php -h就可以查看到了。</p>
<p>更复杂的可以参考IBM上面的一篇文章：http://www.ibm.com/developerworks/cn/opensource/os-php-command/</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=373</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>hospital</title>
		<link>http://lizhili.com/?p=340</link>
		<comments>http://lizhili.com/?p=340#comments</comments>
		<pubDate>Mon, 23 Aug 2010 03:01:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[diary]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=340</guid>
		<description><![CDATA[最近耳朵越来越不适，于是打算专门跑医院一趟。哪知道刚跨进医院门口，就有病人家属在哪挂横幅：黑社会医院，还我孙儿右臂。。触目惊心，本想转身就走，但偶一想，既来之，则安之，龙潭虎穴也得闯一闯。更何况自认为病应该没什么大碍，我倒要看看你怎么个医法。。于是上二楼找医生。一看招牌，都是副主任医师，随便找了个坐进去。医生也没看我，问:"哪里有问题"，答曰:耳朵最近洗澡后很痒，而且有时候会有脓出来。。那医生拿起一个器械，插进我耳朵，探个眼睛瞄了二下，然后就开始在电脑上打药方了，我暗想，不错啊，医院都这么先进了，啥都用上打印机了（怪只怪我好久没去过医院，以前我记得医生都是手写的啊)，我拿起一看，一个清洗项目和２个检查项目，才29.5的，我心想，都说医院黑，我觉得还可以啊。不到30就把咋耳朵治好了。。于是跑去划价。然后到治疗室治疗。。治疗室的医生照例用一个工具在我耳朵里捣腾了不到10分钟，说好了，效率不是一般的高。２个检查也不知道做了没，就搞了个清洗，还说咱这个耳朵比较难清洗，弄的痛死了，谁让咱是鱼肉呢。。也不好说什么，你想怎么宰就怎么宰吧。弄完后又跑去找刚才看病的副主任，副主任又拿起刚才那个器械，又仔细端详了半天说：你这估计是中耳炎，要开点药吃。于是又用电脑打药方，刷刷几下。我一看药方，我靠，又花了60多，看来30块搞定俺耳朵的想法是多么的天真，居然药方里面还有滴眼液。。我这时的心情是无比复杂，最后一咬牙，算了，还是缴费买了再说。。结果回家后，除了滴眼液我再用之外，其它的药我都不敢用，因为说明书上写的跟我耳朵基本上没关系，不知道因为我是病盲，还是因为医生水平太高超，但我也不想随便吃药。是药三分毒啊。我还是想等等，如果没好转，再去大医院复查下。。顺便咨询下那药能不能吃。。]]></description>
			<content:encoded><![CDATA[<p>最近耳朵越来越不适，于是打算专门跑医院一趟。哪知道刚跨进医院门口，就有病人家属在哪挂横幅：黑社会医院，还我孙儿右臂。。触目惊心，本想转身就走，但偶一想，既来之，则安之，龙潭虎穴也得闯一闯。更何况自认为病应该没什么大碍，我倒要看看你怎么个医法。。于是上二楼找医生。一看招牌，都是副主任医师，随便找了个坐进去。医生也没看我，问:"哪里有问题"，答曰:耳朵最近洗澡后很痒，而且有时候会有脓出来。。那医生拿起一个器械，插进我耳朵，探个眼睛瞄了二下，然后就开始在电脑上打药方了，我暗想，不错啊，医院都这么先进了，啥都用上打印机了（怪只怪我好久没去过医院，以前我记得医生都是手写的啊)，我拿起一看，一个清洗项目和２个检查项目，才29.5的，我心想，都说医院黑，我觉得还可以啊。不到30就把咋耳朵治好了。。于是跑去划价。然后到治疗室治疗。。治疗室的医生照例用一个工具在我耳朵里捣腾了不到10分钟，说好了，效率不是一般的高。２个检查也不知道做了没，就搞了个清洗，还说咱这个耳朵比较难清洗，弄的痛死了，谁让咱是鱼肉呢。。也不好说什么，你想怎么宰就怎么宰吧。弄完后又跑去找刚才看病的副主任，副主任又拿起刚才那个器械，又仔细端详了半天说：你这估计是中耳炎，要开点药吃。于是又用电脑打药方，刷刷几下。我一看药方，我靠，又花了60多，看来30块搞定俺耳朵的想法是多么的天真，居然药方里面还有滴眼液。。我这时的心情是无比复杂，最后一咬牙，算了，还是缴费买了再说。。结果回家后，除了滴眼液我再用之外，其它的药我都不敢用，因为说明书上写的跟我耳朵基本上没关系，不知道因为我是病盲，还是因为医生水平太高超，但我也不想随便吃药。是药三分毒啊。我还是想等等，如果没好转，再去大医院复查下。。顺便咨询下那药能不能吃。。</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=340</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>myisam vs innodb(reprint)</title>
		<link>http://lizhili.com/?p=308</link>
		<comments>http://lizhili.com/?p=308#comments</comments>
		<pubDate>Mon, 16 Aug 2010 01:36:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[database]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=308</guid>
		<description><![CDATA[1.InnoDB支持事务，而MyISAM非也 2.InnoDB行锁(row-level)，MyISam表锁（table-level），但InnoDb的行锁不是绝对的，也可以转换为表锁 3.InnoDB不支持fulltext索引 4.delete操作InnoDB一行一行删除 5.select操作InnoDB扫描整个表 6.AUTO_INCREMENT列在InnoDB中必须建索引（该索引只包含这列），myisam可以建多列索引（包含该列即可)]]></description>
			<content:encoded><![CDATA[<p>1.InnoDB支持事务，而MyISAM非也</p>
<p>2.InnoDB行锁(row-level)，MyISam表锁（table-level），但InnoDb的行锁不是绝对的，也可以转换为表锁</p>
<p>3.InnoDB不支持fulltext索引</p>
<p>4.delete操作InnoDB一行一行删除</p>
<p>5.select操作InnoDB扫描整个表</p>
<p>6.AUTO_INCREMENT列在InnoDB中必须建索引（该索引只包含这列），myisam可以建多列索引（包含该列即可)</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=308</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php&#8217;s header function</title>
		<link>http://lizhili.com/?p=304</link>
		<comments>http://lizhili.com/?p=304#comments</comments>
		<pubDate>Sun, 15 Aug 2010 01:30:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[header]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=304</guid>
		<description><![CDATA[用这个header指令来解决URL重写产生的404 header # header('HTTP/1.1 200 OK'); # # // 页面没找到 # header('HTTP/1.1 404 Not Found'); # # // 访问受限 # header('HTTP/1.1 403 Forbidden'); # # // The page moved permanently should be used for # // all redrictions, because search engines know # // what's going on and can easily update their urls. # //页面被永久删除，可以告诉搜索引擎更新它们的urls [...]]]></description>
			<content:encoded><![CDATA[<p>用这个header指令来解决URL重写产生的404 header<br />
# header('HTTP/1.1 200 OK');<br />
#</p>
<p># // 页面没找到<br />
# header('HTTP/1.1 404 Not Found');<br />
#</p>
<p># // 访问受限<br />
# header('HTTP/1.1 403 Forbidden');<br />
#</p>
<p># // The page moved permanently should be used for<br />
# // all redrictions, because search engines know<br />
# // what's going on and can easily update their urls.<br />
# //页面被永久删除，可以告诉搜索引擎更新它们的urls<br />
# //PS:第一次碰到这个指令，不知道能不能用来把自己的站点从搜索引擎中删除呢？<br />
# header('HTTP/1.1 301 Moved Permanently');<br />
#</p>
<p># // 服务器错误<br />
# header('HTTP/1.1 500 Internal Server Error');<br />
#</p>
<p># // 重定向到一个新的位置<br />
# header('Location: http://www.example.org/');<br />
#</p>
<p># // 延迟一段时间后重定向<br />
# header('Refresh: 10; url=http://www.example.org/');<br />
# print 'You will be redirected in 10 seconds';<br />
#</p>
<p># // 也可以使用HTML语法来实现延迟<br />
# // http://www.example.org/ /><br />
#</p>
<p># // 覆盖 X-Powered-By value<br />
# header('X-Powered-By: PHP/4.4.0');<br />
# header('X-Powered-By: Brain/0.6b');<br />
#</p>
<p># // 内容语言 (en = English)<br />
# header('Content-language: en');<br />
#</p>
<p># // 最后修改时间(在缓存的时候可以用到)<br />
# $time = time() - 60; // or filemtime($fn), etc<br />
# header('Last-Modified: '.gmdate('D, d M Y H:i:s', $time).' GMT');<br />
#</p>
<p># // 告诉浏览器要获取的内容还没有更新<br />
# header('HTTP/1.1 304 Not Modified');<br />
#</p>
<p># // 设置内容的长度 (缓存的时候可以用到):<br />
# header('Content-Length: 1234');<br />
#</p>
<p># // 用来下载文件:<br />
# header('Content-Type: application/octet-stream');<br />
# header('Content-Disposition: attachment; filename="example.zip"');<br />
# header('Content-Transfer-Encoding: binary');<br />
# // 加载要下载的文件:<br />
# readfile('example.zip');<br />
#</p>
<p># // 禁止缓存当前文档:<br />
# header('Cache-Control: no-cache, no-store, max-age=0, must-revalidate');<br />
# header('Expires: Mon, 26 Jul 1997 05:00:00 GMT'); // Date in the past<br />
# header('Pragma: no-cache');<br />
#</p>
<p># // 设置内容类型:<br />
# header('Content-Type: text/html; charset=iso-8859-1');<br />
# header('Content-Type: text/html; charset=utf-8');<br />
# header('Content-Type: text/plain'); // plain text file<br />
# header('Content-Type: image/jpeg'); // JPG picture<br />
# header('Content-Type: application/zip'); // ZIP file<br />
# header('Content-Type: application/pdf'); // PDF file<br />
# header('Content-Type: audio/mpeg'); // Audio MPEG (MP3,...) file<br />
# header('Content-Type: application/x-shockwave-flash'); // Flash animation<br />
#</p>
<p># // 显示登录对话框，可以用来进行HTTP认证<br />
# header('HTTP/1.1 401 Unauthorized');<br />
# header('WWW-Authenticate: Basic realm="Top Secret"');<br />
# print 'Text that will be displayed if the user hits cancel or ';<br />
# print 'enters wrong login data'; </p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=304</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cgi</title>
		<link>http://lizhili.com/?p=310</link>
		<comments>http://lizhili.com/?p=310#comments</comments>
		<pubDate>Sat, 14 Aug 2010 01:40:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[cgi]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=310</guid>
		<description><![CDATA[cgi只是一个标准，可以用任何一种语言编写。在linux下一般使用perl，bash shell，php等编写；在window平台下一般使用c/c++来编写，一个典型的用php编写cgi程序如下： #!/usr/local/php_cgi/bin/php 修改apache配置文件httpd.conf即可。和cgi有关的指令 ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/" AllowOverride None Options None Order allow,deny Allow from all AddHandler cgi-script .cgi //默认是关闭的，打开即可 使用http://192.168.115.118/~lizl/cgi-bin/cgi-test可以测试是否支持cgi程序，一般需使用 chmod 755 cgi-test修改该文件权限，否则提示没有权限访问。 实际上，我们有时候]]></description>
			<content:encoded><![CDATA[<p>cgi只是一个标准，可以用任何一种语言编写。在linux下一般使用perl，bash shell，php等编写；在window平台下一般使用c/c++来编写，一个典型的用php编写cgi程序如下：<br />
#!/usr/local/php_cgi/bin/php<br />
<?php<br />
phpinfo(); #这里可以用任何符合php语法的程序<br />
?></p>
<p>修改apache配置文件httpd.conf即可。和cgi有关的指令</p>
<pre class='brush:bash'>
    ScriptAlias /cgi-bin/ "/usr/local/apache/cgi-bin/"
    <Directory "/usr/local/apache/cgi-bin">
        AllowOverride None
        Options None
        Order allow,deny
        Allow from all
    </Directory>
    AddHandler cgi-script .cgi   //默认是关闭的，打开即可
</pre>
<p>使用http://192.168.115.118/~lizl/cgi-bin/cgi-test可以测试是否支持cgi程序，一般需使用 chmod 755 cgi-test修改该文件权限，否则提示没有权限访问。</p>
<p>实际上，我们有时候</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=310</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>how to regulate vps time</title>
		<link>http://lizhili.com/?p=290</link>
		<comments>http://lizhili.com/?p=290#comments</comments>
		<pubDate>Wed, 11 Aug 2010 06:24:55 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[vps]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=290</guid>
		<description><![CDATA[[root@srv html]# rm -rf /etc/localtime [root@srv html]# date Wed Aug 11 06:23:09 UTC 2010 [root@srv html]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime [root@srv html]# date Wed Aug 11 14:23:27 CST 2010]]></description>
			<content:encoded><![CDATA[<pre class='brush:bash;'>
[root@srv html]# rm -rf /etc/localtime
[root@srv html]# date
Wed Aug 11 06:23:09 UTC 2010
[root@srv html]# ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@srv html]# date
Wed Aug 11 14:23:27 CST 2010
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=290</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>派遣证</title>
		<link>http://lizhili.com/?p=260</link>
		<comments>http://lizhili.com/?p=260#comments</comments>
		<pubDate>Mon, 09 Aug 2010 02:35:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[diary]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=260</guid>
		<description><![CDATA[最近为调户口的事情搞的焦头烂额，我不明白是那个环节上出了问题，我的派遣证居然丢了，抑或压根学校就没给我发。。。 派遣证，美其名曰干部身份，其实什么用都没有！！！而且居然没有别的办法补救，人才市场说２年就不能补办。 这几天一直打电话，学校就业指导中心一直没人接，想找个人问问也找不到。同学帮忙问一次，就不想帮忙了，也很烦。。说让我问清楚。。我也想啊。。但我问公司，公司说可以办，结果办到现在全部都是瞎忙活。真操蛋有关部门，哪怕你早点告诉我不能办我也死了这条心啊。 网上不断的查资料，反正是没有一点心情工作了。。老哥请人家吃饭也白吃了，大清早打电话说我的不是，没搞清楚瞎弄。。难道是我故意不想弄好？好像都是我的错。说什么饭都吃了，事情又不办。。我难道不想一次弄好。。最后总结下来，也只能怪自己了。。怪自己读的是专升本。。一切都过去了。现在还能怎样？]]></description>
			<content:encoded><![CDATA[<p>最近为调户口的事情搞的焦头烂额，我不明白是那个环节上出了问题，我的派遣证居然丢了，抑或压根学校就没给我发。。。</p>
<p>派遣证，美其名曰干部身份，其实什么用都没有！！！而且居然没有别的办法补救，人才市场说２年就不能补办。</p>
<p>这几天一直打电话，学校就业指导中心一直没人接，想找个人问问也找不到。同学帮忙问一次，就不想帮忙了，也很烦。。说让我问清楚。。我也想啊。。但我问公司，公司说可以办，结果办到现在全部都是瞎忙活。真操蛋有关部门，哪怕你早点告诉我不能办我也死了这条心啊。</p>
<p>网上不断的查资料，反正是没有一点心情工作了。。老哥请人家吃饭也白吃了，大清早打电话说我的不是，没搞清楚瞎弄。。难道是我故意不想弄好？好像都是我的错。说什么饭都吃了，事情又不办。。我难道不想一次弄好。。最后总结下来，也只能怪自己了。。怪自己读的是专升本。。一切都过去了。现在还能怎样？</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=260</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Name&amp;id</title>
		<link>http://lizhili.com/?p=48</link>
		<comments>http://lizhili.com/?p=48#comments</comments>
		<pubDate>Mon, 30 Nov 2009 08:50:05 +0000</pubDate>
		<dc:creator>ycaihappy</dc:creator>
				<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=48</guid>
		<description><![CDATA[下午在用select的时候，突然发现一个很怪的问题，无论name和id如何指定，调用的时候都可以混用，在name和id不同的情况下，使用getElementById和getElementsByName 用name和id都可以达到目标，比如下面这段测试代码：  function dispSel(opvalue) { if(opvalue == 1){hidiv.style.display="";} if(opvalue == 2){hidiv.style.display="none";} } //增加一个option项 function addSel_1() { //var oOption = document.createElement("OPTION"); var oOption = document.createElement("option"); oOption.text="显示"; oOption.value="1"; //document.getElementsByName('oSelect').oSelect.add(oOption); //document.getElementsByName('isHide').oSelect.add(oOption); //document.getElementsByName('isHide').isHide.add(oOption); //document.getElementsByName('oSelect').isHide.add(oOption); //document.getElementById('isHide').add(oOption); //document.getElementById('oSelect').add(oOption); //document.all.f_test.oSelect.add(oOption); //document.all.oSelect.add(oOption); //document.f_test.oSelect.add(oOption); //f_test.oSelect.add(oOption); } function addSel_2() { var option = window.Option; //document.getElementsByName('isHide').oSelect.options.add(option.create("隐藏","2")); //document.getElementsByName('oSelect').isHide.options.add(option.create("隐藏","2")); //document.getElementsByName('isHide').isHide.options.add(option.create("隐藏","2")); //document.getElementsByName('oSelect').oSelect.options.add(option.create("隐藏","2")); //document.getElementById("oSelect").options.add(option.create("隐藏","2")); //document.getElementById("isHide").options.add(option.create("隐藏","2")); //document.all.f_test.oSelect.options.add(option.create("隐藏","2")); //document.f_test.oSelect.options.add(option.create("隐藏","2")); //document.all.oSelect.options.add(option.create("隐藏","2")); //f_test.oSelect.options.add(option.create("隐藏","2")); } [...]]]></description>
			<content:encoded><![CDATA[<p>下午在用select的时候，突然发现一个很怪的问题，无论name和id如何指定，调用的时候都可以混用，在name和id不同的情况下，使用getElementById和getElementsByName 用name和id都可以达到目标，比如下面这段测试代码： </p>
<pre class="brush: js; html-script: false">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<link href="iserver.css" rel="stylesheet" type="text/css">

</head>
<script language="javascript"> 

function dispSel(opvalue)
{
  if(opvalue == 1){hidiv.style.display="";}
  if(opvalue == 2){hidiv.style.display="none";}
}

//增加一个option项
function addSel_1()
{
    //var oOption = document.createElement("OPTION");
    var oOption = document.createElement("option");
    oOption.text="显示";
    oOption.value="1";
    //document.getElementsByName('oSelect').oSelect.add(oOption);
    //document.getElementsByName('isHide').oSelect.add(oOption);
    //document.getElementsByName('isHide').isHide.add(oOption);
    //document.getElementsByName('oSelect').isHide.add(oOption);
    //document.getElementById('isHide').add(oOption);
    //document.getElementById('oSelect').add(oOption);
    //document.all.f_test.oSelect.add(oOption);
    //document.all.oSelect.add(oOption);
    //document.f_test.oSelect.add(oOption);    
    //f_test.oSelect.add(oOption);
}

function addSel_2()
{
    var option = window.Option;

    //document.getElementsByName('isHide').oSelect.options.add(option.create("隐藏","2"));
    //document.getElementsByName('oSelect').isHide.options.add(option.create("隐藏","2"));
    //document.getElementsByName('isHide').isHide.options.add(option.create("隐藏","2"));
    //document.getElementsByName('oSelect').oSelect.options.add(option.create("隐藏","2"));
    //document.getElementById("oSelect").options.add(option.create("隐藏","2"));
    //document.getElementById("isHide").options.add(option.create("隐藏","2"));
    //document.all.f_test.oSelect.options.add(option.create("隐藏","2"));
    //document.f_test.oSelect.options.add(option.create("隐藏","2"));
    //document.all.oSelect.options.add(option.create("隐藏","2"));
    //f_test.oSelect.options.add(option.create("隐藏","2"));
}

window.attachEvent('onload',addSel_1);
window.attachEvent('onload',addSel_2);

</script>
<body>
<form method="post" name="f_test">
<table class="table" width="100%">
<tr>
<td>
<select id="oSelect" name="isHide" onChange="dispSel(this.value)">
<option value="1">显示</option>
<option value="2">隐藏</option>
</select>

<span id="hidiv">this is test</span>
</td>
</tr>
</table>
</form>

</body>
</html>
</pre>
<p>注意其中getElementsByName和getElementById的调用，当name传给getElementById，id传给getElementsByName都是可以的。于是上网查找原因，大致有下面几种看法：<br />
1。表单元素(form  input  textarea  select)与框架元素(iframe  frame)用name  <br />
      这些元素都与表单(框架元素作用于form的target)提交有关,  在表单的接收页面只 接收有name的元素,  赋ID的元素通过表单是接收不到值的 <br />
      当然上述元素也可以赋ID值,具体调用看上面的例子<br />
2。只能赋ID不能赋name的元素:(除去与表单相关的元素都只能赋ID)  body  li  a  table  tr  td  th  p  div  span  pre  dl  dt  dd  font  b  等等<br />
3。id一般用在客户端编程;name则是在服务器使用<br />
4。对某些元素，如div,span等，设置了name也没用，只能用id访问，<br />
5。name可以相同，id唯一</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=48</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在centos5.2 (i386) 上安装xen虚拟机（转载）</title>
		<link>http://lizhili.com/?p=176</link>
		<comments>http://lizhili.com/?p=176#comments</comments>
		<pubDate>Thu, 29 Oct 2009 11:10:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[centos]]></category>
		<category><![CDATA[xen]]></category>

		<guid isPermaLink="false">http://blog.lizhili.com/?p=176</guid>
		<description><![CDATA[有兴趣的可以查看英文原版：http://www.howtoforge.com/installing-xen-on-centos-5.2-i386 如果是全新安装。最好能单独生成用于保存虚拟机的分区 如果只是做测试用.随便指定保存虚拟机的分区即可。但必须有足够的空间 step1:修改/etc/sysconfig/selinux文件中 "SELINUX=disabled" step2: reboot step3:yum install kernel-xen xen(在网络连接正常情况下） step4：查看/boot/grub/menu.lst配置 step5：reboot step6：uname -r查看内核版本是否带xen标志 step7：xm list step8：使用向导virt-install安装（必须要求内存大于512M,否则总是提示失败） step9：cat /etc/xen/vm01 常用命令： xm create -c /path/to/config - Start a virtual machine. xm shutdown &#60;name&#62; - Stop a virtual machine. xm destroy &#60;name&#62; - Stop a virtual machine immediately without shutting it down. It's as if you switch [...]]]></description>
			<content:encoded><![CDATA[<p>有兴趣的可以查看英文原版：http://www.howtoforge.com/installing-xen-on-centos-5.2-i386</p>
<p>如果是全新安装。最好能单独生成用于保存虚拟机的分区</p>
<p>如果只是做测试用.随便指定保存虚拟机的分区即可。但必须有足够的空间</p>
<p>step1:修改/etc/sysconfig/selinux文件中 "SELINUX=disabled"</p>
<p>step2: reboot</p>
<p>step3:yum install kernel-xen xen(在网络连接正常情况下）</p>
<p>step4：查看/boot/grub/menu.lst配置</p>
<p>step5：reboot</p>
<p>step6：uname -r查看内核版本是否带xen标志</p>
<p>step7：xm list</p>
<p>step8：使用向导virt-install安装（必须要求内存大于512M,否则总是提示失败）</p>
<p>step9：cat /etc/xen/vm01</p>
<p>常用命令：</p>
<pre class="brush: bash;">
xm create -c /path/to/config - Start a virtual machine.
xm shutdown &lt;name&gt; - Stop a virtual machine.
xm destroy &lt;name&gt; - Stop a virtual machine immediately without shutting it down. It's as if you switch off the power button.
xm list - List all running systems.
xm console &lt;name&gt; - Log in on a virtual machine.
xm help - List of all commands.
</pre>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=176</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>exec的返回值</title>
		<link>http://lizhili.com/?p=27</link>
		<comments>http://lizhili.com/?p=27#comments</comments>
		<pubDate>Fri, 24 Apr 2009 15:33:41 +0000</pubDate>
		<dc:creator>ycaihappy</dc:creator>
				<category><![CDATA[php]]></category>
		<category><![CDATA[exec]]></category>

		<guid isPermaLink="false">http://lizhili.com/?p=27</guid>
		<description><![CDATA[php手册上讲的太简单了。例子也说的不是很详细，特别是如果不结合c++理解，非常容易搞错。我们结合一个简单的c++程序来看看，exec究竟是如何返回值的。 #include &#60;iostream&#62; using namespace std; int main() { cout &#60;&#60; "first output\n"; cout &#60;&#60; "second output\n"; #printf等输入也是一样的效果 return 0; } 编译该程序g++ -o test test.cpp;在php中使用$retValue = exec("test",$arr,$ret);调用获得如下结果： $retValue = "second output"; //返回输出的最后一行 $arr = array(0=>"first output",1=>"second output"); //获得所有的输出（以行为单位）并用数组保存 $ret = 0; //真正的返回值。 看到这些返回值应该明白exec是如何返回的了吧。很奇怪的是很多程序员都不用$ret判断程序是否执行成功，而是使用$retValue来判断，由于某些程序会报一些系统错误信息并输出，因此非常容易出错。在很多c++程序中，如果要返回多个值时，都是用类似cout/printf进行输出给php程序返回的。 提到exec，当然不能不提下它的兄弟shell_exec了。虽然和exec的返回值都是string类型，exec是返回最后一行的输出，而shell_exec输出所有输出。并按原有格式打印。比如 shell_exec('ls -al')和在命令行下执行"ls -al"是一个效果，就是获取屏幕输出。。比较完毕！]]></description>
			<content:encoded><![CDATA[<p>php手册上讲的太简单了。例子也说的不是很详细，特别是如果不结合c++理解，非常容易搞错。我们结合一个简单的c++程序来看看，exec究竟是如何返回值的。</p>
<p><span style="color: #000000;">#include &lt;iostream&gt;<br />
using namespace std</span><span style="color: #008000;">;<br />
</span><span style="color: #000000;">int main()<br />
{<br />
cout &lt;&lt; </span><span style="color: #000000;">"</span><span style="color: #000000;">first output\n</span><span style="color: #000000;">"</span><span style="color: #008000;">;<br />
</span><span style="color: #000000;">cout &lt;&lt; </span><span style="color: #000000;">"</span><span style="color: #000000;">second output\n</span><span style="color: #000000;">"</span><span style="color: #008000;">; #printf等输入也是一样的效果</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">return </span><span style="color: #000000;">0</span><span style="color: #008000;">;<br />
</span><span style="color: #000000;">}</span></p>
<p>编译该程序g++ -o test test.cpp;在php中使用$retValue = exec("test",$arr,$ret);调用获得如下结果：<br />
$retValue = "second output";  //返回输出的最后一行<br />
$arr = array(0=>"first output",1=>"second output"); //获得所有的输出（以行为单位）并用数组保存<br />
$ret = 0; //真正的返回值。<br />
看到这些返回值应该明白exec是如何返回的了吧。很奇怪的是很多程序员都不用$ret判断程序是否执行成功，而是使用$retValue来判断，由于某些程序会报一些系统错误信息并输出，因此非常容易出错。在很多c++程序中，如果要返回多个值时，都是用类似cout/printf进行输出给php程序返回的。<br />
提到exec，当然不能不提下它的兄弟shell_exec了。虽然和exec的返回值都是string类型，exec是返回最后一行的输出，而shell_exec输出所有输出。并按原有格式打印。比如 shell_exec('ls -al')和在命令行下执行"ls -al"是一个效果，就是获取屏幕输出。。比较完毕！</p>
]]></content:encoded>
			<wfw:commentRss>http://lizhili.com/?feed=rss2&amp;p=27</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
