<?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>开源小站 &#187; php</title>
	<atom:link href="http://www.litrin.net/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.litrin.net</link>
	<description>It is Cool to OpenSource</description>
	<lastBuildDate>Fri, 23 Jul 2010 02:29:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=5012</generator>
		<item>
		<title>WordPress google-syntax-highlighter 插件的问题</title>
		<link>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-google-syntax-highlighter-%25e6%258f%2592%25e4%25bb%25b6%25e7%259a%2584%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Sat, 12 Jun 2010 09:16:08 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">/?p=1251</guid>
		<description><![CDATA[<!-- Easy AdSense V6.64 -->
<!-- Post[count: 3] -->
<div class="ezAdsense adsense adsense-leadin" style="float:right;margin:12px;" ><script type="text/javascript"><!--
google_ad_client = "pub-9603680922905816";
/* 250x250, 创建于 10-4-29 */
google_ad_slot = "3814271827";
google_ad_width = 250;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></div>小站上一直使用Google Syntax Highlighter for WordPress 插件实现代码高亮，就在上一篇文章发布之后，我发现了这个插件中存在的一个bug：windows + IE 8无法正常加亮python代码。 查阅了官方网站，发掘Google Syntax Highlighter for WordPress插件用的1.5版已经停止更新，只能使用2.0以上的版本，但2.0版本和之前的版本又存在兼容的问题，直接替换是不行的。不想每篇文章的修改&#60;pre&#62;标记，那就改插件喽。 下载最新版本的Syntax Highlighter，解压。 将原来/wp-content/plugins/google-syntax-highlighter目录下的Scripts和Styles目录清空后，分别用新版本的对应路径中的文件替换，注意大小写方式请不要变动。 修改google_syntax_highlighter.php文件，我用了minify的插件，这里就直接调用了。 &#60;?php function insert_header() {  $current_path = get_option('siteurl') .'/wp-content/plugins/' . basename(dirname(__FILE__)) .'/';  ?&#62;  &#60;link href="&#60;?php echo $current_path; ?&#62;Styles/shCore.css" type="text/css" rel="stylesheet" /&#62;  //可根据自己的需要选择不同的Styles &#60;link href="&#60;?php echo $current_path; ?&#62;Styles/shThemeEclipse.css" type="text/css" rel="stylesheet" /&#62;  &#60;?php } function insert_footer(){ $current_path = 'wp-content/plugins/' . [...]]]></description>
			<content:encoded><![CDATA[<p>小站上一直使用Google Syntax Highlighter for WordPress 插件实现代码高亮，就在上一篇文章发布之后，我发现了这个插件中存在的一个bug：windows + IE 8无法正常加亮python代码。</p>
<p>查阅了官方网站，发掘Google Syntax Highlighter for WordPress插件用的1.5版已经停止更新，只能使用2.0以上的版本，但2.0版本和之前的版本又存在兼容的问题，直接替换是不行的。不想每篇文章的修改&lt;pre&gt;标记，那就改插件喽。</p>
<p><span id="more-1251"></span></p>
<ol>
<li>下载<a rel="nofollow" target="_blank" href="http://alexgorbatchev.com/downloads/grab.php?name=sh" target="_blank">最新版本的Syntax Highlighter</a>，解压。</li>
<li>将原来/wp-content/plugins/google-syntax-highlighter目录下的Scripts和Styles目录清空后，分别用新版本的对应路径中的文件替换，注意大小写方式请不要变动。</li>
<li>修改google_syntax_highlighter.php文件，我用了minify的插件，这里就直接调用了。</li>
</ol>
<pre class="php" name='code'>&lt;?php
function insert_header() {
 $current_path = get_option('siteurl') .'/wp-content/plugins/' . basename(dirname(__FILE__)) .'/';
 ?&gt;
 &lt;link href="&lt;?php echo $current_path; ?&gt;Styles/shCore.css" type="text/css" rel="stylesheet" /&gt;
 //可根据自己的需要选择不同的Styles
 &lt;link href="&lt;?php echo $current_path; ?&gt;Styles/shThemeEclipse.css" type="text/css" rel="stylesheet" /&gt;
 &lt;?php
}
function insert_footer(){
$current_path = 'wp-content/plugins/' . basename(dirname(__FILE__)) .'/';
 ?&gt;
&lt;?php
/*
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shCore.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shLegacy.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCSharp.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushPhp.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushJScript.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushJava.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushVb.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushSql.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushXml.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushDelphi.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushPython.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushRuby.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCss.js"&gt;&lt;/script&gt;
&lt;script src="&lt;?php echo $current_path; ?&gt;Scripts/shBrushCpp.js"&gt;&lt;/script&gt;
*/
&lt;script src="/wp-content/plugins/wp-minify/min/?b=&lt;?php echo $current_path; ?&gt;Scripts&amp;f=shCore.js,shLegacy.js,shBrushPhp.js,shBrushSql.js,shBrushPython.js"&gt;&lt;/script&gt;
&lt;script&gt;
dp.SyntaxHighlighter.ClipboardSwf = '&lt;?php echo $current_path; ?&gt;Scripts/clipboard.swf';
SyntaxHighlighter.all();
dp.SyntaxHighlighter.HighlightAll('code');
&lt;/script&gt;
&lt;?php
}
add_action('wp_head','insert_header');
add_action('wp_footer','insert_footer');
?&gt;</pre>
<p>测试，通过！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2010/06/12/wordpress-google-syntax-highlighter-%e6%8f%92%e4%bb%b6%e7%9a%84%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>配置Ubuntu的php支持OCI8</title>
		<link>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e9%2585%258d%25e7%25bd%25aeubuntu%25e7%259a%2584php%25e6%2594%25af%25e6%258c%2581oci8</link>
		<comments>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 09:48:03 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[www]]></category>
		<category><![CDATA[数据库应用]]></category>
		<category><![CDATA[oracle]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ubuntu]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1085</guid>
		<description><![CDATA[PHP的OCI模块支持Oracle总是比较让人头痛。这趟弄个ubuntu的安装文档。 通过ubuntu-server安装盘安装LAMP。当然，正常情况下，建议安装好openssh服务器，免得麻烦。 虽然ubuntu的server支持root直接登录，既然是ubutu，还是遵循它的sudo吧。 安装结束后，启动server。 首先，经典的更新 #sudo apt-get update; sudo apt-get upgrade 添加所需的包 #sudo apt-get install php5-dev build-essential php-pear libaio1 差点忘了，要装unzip： #sudo apt-get install unzip 按照oracle官方网站的要求http://www.oracle.com/technology/tech/oci/instantclient/index.html 下载Instant Client ，我老老实实的下载了basic和sdk两个包，理论上下载basic-lit和sdk就可以。 设立目录，解压缩： #sudo mkdir /opt/oracle #sudo cp ~/*.zip /opt/oracle #cd /opt/oracle #sudo unzip ./*.zip #sudo mv instantclient_11_1 instantclient 设置instantclient： #sudo ln –s libclntsh.so.11.1 libclntsh.so #sudo ln –s libocci.so.11.1 libocci.so [...]]]></description>
			<content:encoded><![CDATA[<p>PHP的OCI模块支持Oracle总是比较让人头痛。这趟弄个ubuntu的安装文档。</p>
<p>通过ubuntu-server安装盘安装LAMP。当然，正常情况下，建议安装好openssh服务器，免得麻烦。</p>
<p>虽然ubuntu的server支持root直接登录，既然是ubutu，还是遵循它的sudo吧。</p>
<p>安装结束后，启动server。</p>
<p>首先，经典的更新<br />
#sudo apt-get update; sudo apt-get upgrade</p>
<p><span id="more-1085"></span></p>
<p>添加所需的包<br />
#sudo apt-get install php5-dev build-essential php-pear libaio1</p>
<p>差点忘了，要装unzip：<br />
#sudo apt-get install unzip</p>
<p>按照oracle官方网站的要求<a rel="nofollow" target="_blank" href="http://www.oracle.com/technology/tech/oci/instantclient/index.html">http://www.oracle.com/technology/tech/oci/instantclient/index.html</a> 下载<span>Instant Client ，我老老实实的下载了basic和sdk两个包，理论上下载basic-lit和sdk就可以。</span></p>
<p>设立目录，解压缩：<br />
#sudo mkdir /opt/oracle<br />
#sudo cp ~/*.zip /opt/oracle<br />
#cd /opt/oracle<br />
#sudo unzip ./*.zip<br />
#sudo mv instantclient_11_1 instantclient</p>
<p>设置instantclient：<br />
#sudo ln –s libclntsh.so.11.1 libclntsh.so<br />
#sudo ln –s libocci.so.11.1 libocci.so<br />
#sudo export ORACLE_HOME=/opt/oracle/instantclien</p>
<p>添加lib库位置：<br />
#cd /etc/ld.so.conf.d<br />
#sudo nano liboci.conf  //添加一行：/opt/oracle/instantclient<br />
#sudo ldconfig</p>
<p>准备OCI8库：<br />
#sudo mkdir /tmp/src<br />
#cd /tmp/src<br />
#sudo pecl download oci8<br />
#sudo tar vzxf oci8-1.3.5.tgz //我下载的版本是135<br />
#cd oci8-1.3.5</p>
<p>编译OCI8：<br />
#sudo phpize //比较容易出错的地方，如果报错，你可能没有安装php5-dev包<br />
#sudo ./configure &#8211;with-oci8=share,instantclient,$ORACLE_HOME<br />
#sudo make; sudo make install</p>
<p>设置php5支持：<br />
正常情况下编译完成后会有提示：Installing shared extensions:     /usr/lib/php5/20060613/<br />
到此目录下确认是否存在oci8.so<br />
#cd /etc/php5/conf.d<br />
#sudo nano oci8.ini //添加一行：extension=oci8.so<br />
#sudo apache2ctl restart</p>
<p>经过上述步骤，oci8模块就会成功安装，可以通过phpinfo页面确认是否存在oci8模块</p>
<h2><a name="module_oci8">oci8</a></h2>
<table border="0" cellpadding="3" width="600">
<tbody>
<tr>
<td>OCI8 Support</td>
<td>enabled</td>
</tr>
<tr>
<td>Version</td>
<td>1.3.5</td>
</tr>
<tr>
<td>Revision</td>
<td>$Revision: 1.269.2.16.2.38.2.32 $</td>
</tr>
<tr>
<td>Active Persistent Connections</td>
<td>0</td>
</tr>
<tr>
<td>Active Connections</td>
<td>0</td>
</tr>
<tr>
<td>Oracle Instant Client Version</td>
<td>11.1</td>
</tr>
<tr>
<td>Temporary Lob support</td>
<td>enabled</td>
</tr>
<tr>
<td>Collections support</td>
<td>enabled</td>
</tr>
</tbody>
</table>
<p> </p>
<table border="0" cellpadding="3" width="600">
<tbody>
<tr>
<th>Directive</th>
<th>Local Value</th>
<th>Master Value</th>
</tr>
<tr>
<td>oci8.connection_class</td>
<td><em>no value</em></td>
<td><em>no value</em></td>
</tr>
<tr>
<td>oci8.default_prefetch</td>
<td>100</td>
<td>100</td>
</tr>
<tr>
<td>oci8.events</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.max_persistent</td>
<td>-1</td>
<td>-1</td>
</tr>
<tr>
<td>oci8.old_oci_close_semantics</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.persistent_timeout</td>
<td>-1</td>
<td>-1</td>
</tr>
<tr>
<td>oci8.ping_interval</td>
<td>60</td>
<td>60</td>
</tr>
<tr>
<td>oci8.privileged_connect</td>
<td>Off</td>
<td>Off</td>
</tr>
<tr>
<td>oci8.statement_cache_size</td>
<td>20</td>
<td>20</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/09/15/%e9%85%8d%e7%bd%aeubuntu%e7%9a%84php%e6%94%af%e6%8c%81oci8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>说说“专业”</title>
		<link>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e8%25af%25b4%25e8%25af%25b4%25e2%2580%259c%25e4%25b8%2593%25e4%25b8%259a%25e2%2580%259d</link>
		<comments>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/#comments</comments>
		<pubDate>Fri, 11 Sep 2009 10:12:24 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[网络和安全]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[业界话题]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1081</guid>
		<description><![CDATA[暂且不提中文里说你不专业是什么语气，至少来说，在英语语系里说一个人或者一家公司是“不专业的”，不管什么语境，总归是句很重的话。 公司的一家子公司，由于人少财弱，没有专职的网站开发人员。于是找了一个现在比较知名的免费网店全站程序。用的久了，不够用了，联系了那家公司进行开发。这本身也是符合免费软件生存法则的，没有什么不对。对方很专业的报价350块/小时。很是吓人的价钱。周瑜打黄盖，一个愿打一个愿挨。认了，付钱，问题才刚刚开始。 作为服务器的管理员，首先他们问我要root帐号，要知道，这台主机的网站差不多有几十个，谁会给？然后他们很发了顿牢骚。不得已，开了一个用户给他们，竟然蒙混过去，他们竟然以为得到了root，汗。 然后又是说ftp连不上，我很客气的说ftp没开，又是牢骚：“人家的linux都开ftp的，为什么？”我建议他们用sftp上传就OK，“不会用。”。又晕！嫌烦，现装了proftpd应付过去，又被人说密码太长太难记，彻底无语！ 大约一个礼拜左右（350块/小时，赚了不少吧？）我得知他们已经完成了网站的定制开发。OK，停ftp，删帐户。程序照旧是加密的php，一个根目录下的php.php引起了我的注意，好家伙！&#60;? phpinfo(); ?&#62; 嫌我的站点太安全了不成？仔细查找了一下发现根目录下还有一个data.zip文件，全是打包的程序文件，当然包括数据库配置的用户名和密码。一个“白版页面”只有一个文本栏和一个submit按钮，顺手输入了一句sql，很幸运的发现了这竟然是数据库的接口——甚至可以直接drop table。文件名，就叫做sql.php，当然还是在根目录下。 如果说他们是在测试机下，新手来做，我们可以理解，可要知道生产环境下的服务器，调试程序都会要了命。 如他们所说“以专业的功能、领先的技术以及快速的价值体现，获得了45万用户的肯定。”我只能说，最近黑客们的效率确实很低。如此厂商如何评价？]]></description>
			<content:encoded><![CDATA[<p>暂且不提中文里说你不专业是什么语气，至少来说，在英语语系里说一个人或者一家公司是“不专业的”，不管什么语境，总归是句很重的话。</p>
<p>公司的一家子公司，由于人少财弱，没有专职的网站开发人员。于是找了一个现在比较知名的免费网店全站程序。用的久了，不够用了，联系了那家公司进行开发。这本身也是符合免费软件生存法则的，没有什么不对。对方很专业的报价350块/小时。很是吓人的价钱。周瑜打黄盖，一个愿打一个愿挨。认了，付钱，问题才刚刚开始。</p>
<p><span id="more-1081"></span></p>
<p>作为服务器的管理员，首先他们问我要root帐号，要知道，这台主机的网站差不多有几十个，谁会给？然后他们很发了顿牢骚。不得已，开了一个用户给他们，竟然蒙混过去，他们竟然以为得到了root，汗。</p>
<p>然后又是说ftp连不上，我很客气的说ftp没开，又是牢骚：“人家的linux都开ftp的，为什么？”我建议他们用sftp上传就OK，“不会用。”。又晕！嫌烦，现装了proftpd应付过去，又被人说密码太长太难记，彻底无语！</p>
<p>大约一个礼拜左右（350块/小时，赚了不少吧？）我得知他们已经完成了网站的定制开发。OK，停ftp，删帐户。程序照旧是加密的php，一个根目录下的php.php引起了我的注意，好家伙！&lt;? phpinfo(); ?&gt; 嫌我的站点太安全了不成？仔细查找了一下发现根目录下还有一个data.zip文件，全是打包的程序文件，当然包括数据库配置的用户名和密码。一个“白版页面”只有一个文本栏和一个submit按钮，顺手输入了一句sql，很幸运的发现了这竟然是数据库的接口——甚至可以直接drop table。文件名，就叫做sql.php，当然还是在根目录下。</p>
<p>如果说他们是在测试机下，新手来做，我们可以理解，可要知道生产环境下的服务器，调试程序都会要了命。</p>
<p>如他们所说“以专业的功能、领先的技术以及快速的价值体现，获得了45万用户的肯定。”我只能说，最近黑客们的效率确实很低。如此厂商如何评价？</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/09/11/%e8%af%b4%e8%af%b4%e2%80%9c%e4%b8%93%e4%b8%9a%e2%80%9d/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>wordpress2.8的一个问题</title>
		<link>http://www.litrin.net/2009/07/15/wordpress2-8%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress2-8%25e7%259a%2584%25e4%25b8%2580%25e4%25b8%25aa%25e9%2597%25ae%25e9%25a2%2598</link>
		<comments>http://www.litrin.net/2009/07/15/wordpress2-8%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 05:37:25 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=1037</guid>
		<description><![CDATA[前一段时间把小站的wordpress升级到了2.8。升级结束后，发觉后台的特效全部出了问题。文章编辑栏也坏掉了。 搜索了google，很多人报类似的错误。说是google某个插件的lib和系统冲突。多次禁用全部的插件依然无果。 以为是php版本太低，升级了php，照旧。 反复折腾中2.81正式release了,更新，再度失望。 搭建了一套测试环境，整个系统搬过去却奇迹的解决了问题。OK，至少错误定位了，开始检查php.ini。 反复调试后，总算找到了问题所在：很不起眼的magic_quotes_gpc设置成了On，修改成了Off,一切解决！ 比较令人不解的是，这个不起眼的设置怎么会影响到JS的故障，很是郁闷。 PS:其实unreal写的那个Easy AdSense真的是很垃圾，强行插入链接，满屏的paypal“捐助请求”，又是替换你的广告代码——少赚广告费倒是算了，被怀疑作弊就麻烦大了。几乎一天一个版本的更新，真的是很“敬业”。只能自己重新写了一个。有想要的可以直接告诉我。]]></description>
			<content:encoded><![CDATA[<p>前一段时间把小站的wordpress升级到了2.8。升级结束后，发觉后台的特效全部出了问题。文章编辑栏也坏掉了。</p>
<p>搜索了google，很多人报类似的错误。说是google某个插件的lib和系统冲突。多次禁用全部的插件依然无果。</p>
<p>以为是php版本太低，升级了php，照旧。</p>
<p><span id="more-1037"></span>反复折腾中2.81正式release了,更新，再度失望。</p>
<p>搭建了一套测试环境，整个系统搬过去却奇迹的解决了问题。OK，至少错误定位了，开始检查php.ini。</p>
<p>反复调试后，总算找到了问题所在：很不起眼的magic_quotes_gpc设置成了On，修改成了Off,一切解决！</p>
<p>比较令人不解的是，这个不起眼的设置怎么会影响到JS的故障，很是郁闷。</p>
<p>PS:其实unreal写的那个Easy AdSense真的是很垃圾，强行插入链接，满屏的paypal“捐助请求”，又是替换你的广告代码——少赚广告费倒是算了，被怀疑作弊就麻烦大了。几乎一天一个版本的更新，真的是很“敬业”。只能自己重新写了一个。有想要的可以直接告诉我。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/07/15/wordpress2-8%e7%9a%84%e4%b8%80%e4%b8%aa%e9%97%ae%e9%a2%98/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>说说WordPress和Drupal</title>
		<link>http://www.litrin.net/2009/05/05/%e8%af%b4%e8%af%b4wordpress%e5%92%8cdrupal/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e8%25af%25b4%25e8%25af%25b4wordpress%25e5%2592%258cdrupal</link>
		<comments>http://www.litrin.net/2009/05/05/%e8%af%b4%e8%af%b4wordpress%e5%92%8cdrupal/#comments</comments>
		<pubDate>Tue, 05 May 2009 06:14:26 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=980</guid>
		<description><![CDATA[上次就想把Wordpress和Drupal做一个对比，这次补上。 WordPress和Drupal都是目前比较流行的开源CMS，用户数量也比较多。以下将从比较常用的几个方面进行比较。 平台支持 作为典型的LAMP结构的应用软件，WP仅支持Mysql，而DP支持mysql和Pgsql两种数据库。从某种虽然像本站这样从pgsql迁移到mysql的平台几乎很少，而且国内很少有Pgsql的空间，作为一个开源项目，提供多个备选数据库还是不错的。 从响应时间上看，同样采用了Mysql的数据库，DP的响应速度快了WP不少，但换成了Pgsql之后，速度慢了整整一个数量级——这跟Pgsql本身有关。故可以认为同等数量下，DP的硬件要求相对较低。 数据结构 看了WP的数据结构，了了10张表，感觉很干净。每个表的字段命名方式也足够清晰。初学者不需要多少时间就能理解整个数据流程。而且默认会在表名前添加wp_前缀，方便那些虚拟主机用户添加别的系统。 DP的数据结构比较复杂，40几个表的数量相对比较惊人。冗余度很高表名，字段名，重复的很多，也有很多缩写，初学者很容易给吓住。默认没有前缀，虽然可以设置前缀，但相对比较麻烦。 逻辑结构 WP的逻辑结构是一个内核程序已经可以完成大部分的功能，其他的功能通过plugin的方式实现。DP的逻辑是整个程序是由若干个Module实现，每块的功能都可以通过设置进行开关设置。相对灵活性比较好，但设置自然而然的复杂了很多。 安装步骤 WP的安装步骤相对较多，很详细的流程向导。WP的安装只要设置好数据库就OK，但不够清晰，特别是管理员添加采用的方式，很容易让人迷糊，同时不注意的话，默认注册用户就会有管理员权限。 本地化实现 WP的本地化通过.mo文件实现，等于是基于内核的实现，速度几乎不受影响。DP的本地化基于Module实现，每出现一个词组就需要一次数据库查询，相对效率低下。 主题开发 由于DP特有的逻辑，主题方面本身也是一个Module，可以通过扩展的方式支持各种同样的模板引擎，很适合于大团队进行主题的开发。WP相对主题开发比较困难，默认不支持页面引擎扩展，主题制作需要一定的PHP基础。 插件开发 DP的插件相对比较复杂，涉及到很多内容，需要对整个系统有一定的了解才能完成。WP的插件相对比较简单，对于简单的插件只要明确“在什么地方出现什么”就可以完成，甚至默认还提供了一个Hello Dolly伪插件作为范例。 管理界面 DP的管理界面与用户界面高度统一，同时提供了详尽的日志方便查阅。WP采用独立的管理控制台，可查阅的内容不多。 其他 默认状况下，WP提供了一个反垃圾插件很是有效。 个人觉得，两个系统都各有所长： WP方便简单，很适合于个人网站的快速部署。DP功能很强，同时支持企业级的Pgsql，适合具有一定规模的网站。 WP很容易开发出一些小插件，但界面开发有一定难度，最好找个主题自己修改。DP可以很容易的进行大规模的模块、主题HACK且不会对系统做成太大影响，前提是你要对他有足够的了解。]]></description>
			<content:encoded><![CDATA[<p>上次就想把Wordpress和Drupal做一个对比，这次补上。</p>
<p>WordPress和Drupal都是目前比较流行的开源CMS，用户数量也比较多。以下将从比较常用的几个方面进行比较。</p>
<ol>
<li>平台支持<br />
作为典型的LAMP结构的应用软件，WP仅支持Mysql，而DP支持mysql和Pgsql两种数据库。从某种虽然像本站这样从pgsql迁移到mysql的平台几乎很少，而且国内很少有Pgsql的空间，作为一个开源项目，提供多个备选数据库还是不错的。<span id="more-980"></span><br />
从响应时间上看，同样采用了Mysql的数据库，DP的响应速度快了WP不少，但换成了Pgsql之后，速度慢了整整一个数量级——这跟Pgsql本身有关。故可以认为同等数量下，DP的硬件要求相对较低。</li>
<li>数据结构<br />
看了WP的数据结构，了了10张表，感觉很干净。每个表的字段命名方式也足够清晰。初学者不需要多少时间就能理解整个数据流程。而且默认会在表名前添加wp_前缀，方便那些虚拟主机用户添加别的系统。<br />
DP的数据结构比较复杂，40几个表的数量相对比较惊人。冗余度很高表名，字段名，重复的很多，也有很多缩写，初学者很容易给吓住。默认没有前缀，虽然可以设置前缀，但相对比较麻烦。</li>
<li>逻辑结构<br />
WP的逻辑结构是一个内核程序已经可以完成大部分的功能，其他的功能通过plugin的方式实现。DP的逻辑是整个程序是由若干个Module实现，每块的功能都可以通过设置进行开关设置。相对灵活性比较好，但设置自然而然的复杂了很多。</li>
<li>安装步骤<br />
WP的安装步骤相对较多，很详细的流程向导。WP的安装只要设置好数据库就OK，但不够清晰，特别是管理员添加采用的方式，很容易让人迷糊，同时不注意的话，默认注册用户就会有管理员权限。</li>
<li>本地化实现<br />
WP的本地化通过.mo文件实现，等于是基于内核的实现，速度几乎不受影响。DP的本地化基于Module实现，每出现一个词组就需要一次数据库查询，相对效率低下。</li>
<li>主题开发<br />
由于DP特有的逻辑，主题方面本身也是一个Module，可以通过扩展的方式支持各种同样的模板引擎，很适合于大团队进行主题的开发。WP相对主题开发比较困难，默认不支持页面引擎扩展，主题制作需要一定的PHP基础。</li>
<li>插件开发<br />
DP的插件相对比较复杂，涉及到很多内容，需要对整个系统有一定的了解才能完成。WP的插件相对比较简单，对于简单的插件只要明确“在什么地方出现什么”就可以完成，甚至默认还提供了一个Hello Dolly伪插件作为范例。</li>
<li>管理界面<br />
DP的管理界面与用户界面高度统一，同时提供了详尽的日志方便查阅。WP采用独立的管理控制台，可查阅的内容不多。</li>
<li>其他<br />
默认状况下，WP提供了一个反垃圾插件很是有效。</li>
</ol>
<p>个人觉得，两个系统都各有所长：</p>
<ul>
<li>WP方便简单，很适合于个人网站的快速部署。DP功能很强，同时支持企业级的Pgsql，适合具有一定规模的网站。</li>
<li>WP很容易开发出一些小插件，但界面开发有一定难度，最好找个主题自己修改。DP可以很容易的进行大规模的模块、主题HACK且不会对系统做成太大影响，前提是你要对他有足够的了解。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/05/05/%e8%af%b4%e8%af%b4wordpress%e5%92%8cdrupal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress的家</title>
		<link>http://www.litrin.net/2009/03/17/wordpress%e7%9a%84%e5%ae%b6/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress%25e7%259a%2584%25e5%25ae%25b6</link>
		<comments>http://www.litrin.net/2009/03/17/wordpress%e7%9a%84%e5%ae%b6/#comments</comments>
		<pubDate>Tue, 17 Mar 2009 05:50:59 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[站长的blog]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=558</guid>
		<description><![CDATA[几次思想斗争以后，总算下了狠心将小站迁移到了wordpress。 迁移的大致成绩如下： 所有文章页全部迁移成功，文章标签只能后续手工做。 评论迁移了大部分，部分评论由于格式问题无法被迁移。 网站模板全部丢弃。 其余的数据全部丢弃。 原先的链接全部碎掉，需要小幅的hack。 之前的小站使用drupal，由于系统的数据库仅支持postgresql，Drupal似乎是唯一的选择。等到网站上线后，忽然间发觉再要移植数据库几乎是不可能的。postgresql并不是那么普遍，只是至少在国内没有几家能够提供这个平台，兼容性成了问题。 wordpress可以说是最近发展最快的系统，对于Ajax和SEO也支持的绝佳，种种优势不言而喻。 litrin本人经过这一段时间，CSS和PHP的功力大幅下降——糟糕的页面布局就是最好的例证:-) 最后，奉上转移脚本，希望能够给同样困扰的朋友些许帮助。 &#60;?php //Wordpress的URL路径 $wpURL = ‘http://www.litrin.net/’; //目标数据库(mysql)设置 $mysqlServer = ‘localhost’; $mysqlUser = ”; $mysqlPasswd = ”; $mysqlDB = ”; //源数据库(pgsql)设置 $pgsqlServer = ‘localhost’; $pgsqlUser = ”; $pgsqlPasswd = ”; $pgsqlDB = ”; $mysql = mysql_connect($mysqlServer, $mysqlUser, $mysqlPasswd); mysql_select_db($mysqlDB); $pgsql = pg_connect(“host=”.$pgsqlServer.” port=5432 dbname=”.$pgsqlDB.” user=”.$pgsqlUser.” password=”.$pgsqlPasswd); [...]]]></description>
			<content:encoded><![CDATA[<pre>几次思想斗争以后，总算下了狠心将小站迁移到了<a rel="nofollow" target="_blank" href="http://wordpress.org" target="_blank">wordpress</a>。</pre>
<p>迁移的大致成绩如下：</p>
<ul>
<li>所有文章页全部迁移成功，文章标签只能后续手工做。</li>
<li>评论迁移了大部分，部分评论由于格式问题无法被迁移。</li>
<li>网站模板全部丢弃。</li>
<li>其余的数据全部丢弃。</li>
<li>原先的链接全部碎掉，需要小幅的hack。</li>
</ul>
<p>之前的小站使用drupal，由于系统的数据库仅支持postgresql，Drupal似乎是唯一的选择。等到网站上线后，忽然间发觉再要移植数据库几乎是不可能的。postgresql并不是那么普遍，只是至少在国内没有几家能够提供这个平台，兼容性成了问题。</p>
<p>wordpress可以说是最近发展最快的系统，对于Ajax和SEO也支持的绝佳，种种优势不言而喻。</p>
<p>litrin本人经过这一段时间，CSS和PHP的功力大幅下降——糟糕的页面布局就是最好的例证:-)</p>
<p>最后，奉上转移脚本，希望能够给同样困扰的朋友些许帮助。<br />
<span id="more-558"></span></p>
<div>
<pre name=code class=php>
&lt;?php
//Wordpress的URL路径
$wpURL = ‘http://www.litrin.net/’;
//目标数据库(<a title="mysql" href="http://www.litrin.net/tag/mysql/">mysql</a>)设置
$mysqlServer = ‘localhost’;
$mysqlUser = ”;
$mysqlPasswd = ”;
$mysqlDB = ”;
//源数据库(pgsql)设置
$pgsqlServer = ‘localhost’;
$pgsqlUser = ”;
$pgsqlPasswd = ”;
$pgsqlDB = ”;
$mysql = mysql_connect($mysqlServer, $mysqlUser, $mysqlPasswd);
mysql_select_db($mysqlDB);
$pgsql = pg_connect(“host=”.$pgsqlServer.” port=5432 dbname=”.$pgsqlDB.” user=”.$pgsqlUser.” password=”.$pgsqlPasswd);
//先期准备
echo ‘Start import…n’;
mysql_query(‘SET NAME UTF8′);
mysql_query(‘TRUNCATE `wp_posts`’);
mysql_query(‘TRUNCATE `wp_comments`’);
//文章导入
echo ‘Start import node…n’;
$SQL = “SELECT nid, title, body, created, changed FROM node ORDER BY nid “;
$result = pg_query($pgsql, $SQL);
while ( $arr = pg_fetch_array($result, NULL, PGSQL_ASSOC) ){
 $title = $arr[title];
 $body = $arr[body];
 $createDate = date(DATE_ATOM, $arr[created]);
 $createDate_gmt = date(DATE_ATOM, $arr[created] – 8 * 3600);
 $changedDate = date(DATE_ATOM, $arr[changed]);
 $changedDate_gmt = date(DATE_ATOM, $arr[changed] – 8 * 3600);
 $id = $arr[nid];
 $postType = $wpURL . “?p=” . $id ;
 
 $sqlIns = “INSERT INTO `wp_posts`
    (`ID`,`post_author`, `post_date`, `post_date_gmt`, `post_content`,
    `post_title`, `post_category`, `post_excerpt`, `post_status`, `comment_status`,
    `ping_status`, `post_password`, `post_name`, `to_ping`, `pinged`, `post_modified`,
    `post_modified_gmt`, `post_content_filtered`, `post_parent`, `guid`, `menu_order`,
    `post_type`, `post_mime_type`, `comment_count`)
   VALUES (
         ”.$id.”,1, ‘”.$createDate.”‘, ‘”.$createDate_gmt.”‘, ‘”.$body.”‘,
    ’”.$title.”‘, 0, ”, ‘publish’, ‘open’, ‘open’,
    ”, ‘”.$title.”‘, ”, ”, ‘”.$changedDate.”‘, ‘”.$changedDate_gmt.”‘,
    ”, 0, ‘”.$postType.”‘, 0, ‘post’, ”, 0)”;
 
 $query = mysql_query($sqlIns);
 
}
//评论导入
echo ‘Start import comment… n ‘;
$SQL= “SELECT cid, nid, name, homepage, timestamp, comment FROM comments ORDER BY cid”;
$result = pg_query($pgsql, $SQL);
while ( $arr = pg_fetch_array($result, NULL, PGSQL_ASSOC) ){
 $sqlIns= “INSERT INTO `wp_comments`
    (`comment_ID`, `comment_post_ID`, `comment_author`, `comment_author_email`,
    `comment_author_url`, `comment_author_IP`, `comment_date`, `comment_date_gmt`,
    `comment_content`, `comment_karma`, `comment_approved`, `comment_agent`,
    `comment_type`, `comment_parent`, `user_id`)
   VALUES (“.$arr[cid].”, “.$arr[nid].”, ‘”.$arr[name].”‘, ”, ‘”.$arr[homepage].”‘,
    ”, ‘”.date(DATE_ATOM, $arr[timestamp]).”‘, ‘”.date(DATE_ATOM, $arr[timestamp] – 8 * 3600).”‘,
    ’”.$arr[comment].”‘, 0, ‘1′, ”, ”, 0, “.$arr[uid].”)”;
 
 $query = mysql_query($sqlIns); 
 
}
//评论整理
echo ‘Start arrage comment… n’;
$SQL= “SELECT comment_post_ID, count( `comment_ID` ) AS count FROM `wp_comments` GROUP BY `comment_post_ID` “;
$query = mysql_query($SQL);
while ($arr = mysql_fetch_array($query)){
 $sqlUp = “update wp_posts set comment_count = “.$arr[count].” where ID =”.$arr[comment_post_ID].”";
 mysql_query ($sqlUp);
}
mysql_close($mysql);
pg_close($pgsql);
echo ‘All finished! n’;
?&gt;
</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2009/03/17/wordpress%e7%9a%84%e5%ae%b6/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>再谈PHP</title>
		<link>http://www.litrin.net/2007/10/04/%e5%86%8d%e8%b0%88php/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2586%258d%25e8%25b0%2588php</link>
		<comments>http://www.litrin.net/2007/10/04/%e5%86%8d%e8%b0%88php/#comments</comments>
		<pubDate>Thu, 04 Oct 2007 01:19:38 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=464</guid>
		<description><![CDATA[说起来用PHP做程序开发已经将近7年多了，从php3一直到php5，开发工具也从记事本一直到了Zend Stdio。php的优点自然不必说，随便哪个PHP技术论坛上一抓一把，可这么多项目做完了，总感觉上缺点什么。我不是&#8220;种族主义者&#8221;，只是谈一下作为开发人员或者项目管理人员最渴望PHP的功能。 内置函数不统一，PHP的内置函数命名可谓是乱得可以了，大写的、小写的、驼峰的、并列的、AtoB的、下划的&#8230;&#8230;几乎每种命名方式都能在php的内置函数中找到，够得上一个&#8220;函数命名方式博览会&#8221;的了 。很不利于开发人员记忆。 环境差异，看似PHP只存在版本差异，其实如果你在IDC那边的虚拟主机上部署PHP你就会发现，开不开Safe_mode就够弄半天的了，还有引用的这个库那个库的，如果是pear这样的库也就罢了，大不了自己重新include;拿GD库来讲，根本没有办法通过其他方法来代用。如果同时又有幸使用了Zend加密过的php代码&#8230;&#8230; 模板问题，现在用的最多的就属smarty了，可smarty的功能实在太强，里面的循环、判断和自动转换格式的部分，真不知道是给美工做还是给开发人员做更合适。如果不用模板，直接把php嵌入html中，同样的问题。 数据库访问，有很多数据库的访问接口，但始终无法摆脱fetch的命运，不论怎么封包，复杂的SQL语句总归要成了程序开发中的重点和系统运行中的瓶颈。 对象访问，php的对象在不断的增强，但还是有待增强。虽然不会把php当作java来用。 层次，企业环境开发，最希望的是能把系统访问和应用访问分开，界面和程序分开（即MVC），这一点PHP需要很大的工作量才可以做到，于是大多开发人员不得不选择了不分开。所有的代码集中到了一起，逻辑上很乱，也没有办法实现代码重用。 调试环境，相比java的调试环境，Zend Studio还远远不够。 框架，市面上流行的几个PHP框架，例如ZF，无一例外的都是模仿了Struct或者.net，没有真正表现出PHP自己的特色，这似乎成了一个怪圈&#8212;&#8212;如果别人用框架觉得好就可能从php转到struct或者.net，用得不好反而会得出php很烂的结论，从而转到其他语言。 总之，上面的牢骚只是希望php有所改善，并非是挑php的骨头。 &#160;]]></description>
			<content:encoded><![CDATA[<p>说起来用PHP做程序开发已经将近7年多了，从php3一直到php5，开发工具也从记事本一直到了Zend Stdio。php的优点自然不必说，随便哪个PHP技术论坛上一抓一把，可这么多项目做完了，总感觉上缺点什么。我不是&ldquo;种族主义者&rdquo;，只是谈一下作为开发人员或者项目管理人员最渴望PHP的功能。</p>
<p>内置函数不统一，PHP的内置函数命名可谓是乱得可以了，大写的、小写的、驼峰的、并列的、AtoB的、下划的&hellip;&hellip;几乎每种命名方式都能在php的内置函数中找到，够得上一个&ldquo;函数命名方式博览会&rdquo;的了 。很不利于开发人员记忆。</p>
<p>环境差异，看似PHP只存在版本差异，其实如果你在IDC那边的虚拟主机上部署PHP你就会发现，开不开Safe_mode就够弄半天的了，还有引用的这个库那个库的，如果是pear这样的库也就罢了，大不了自己重新include;拿GD库来讲，根本没有办法通过其他方法来代用。如果同时又有幸使用了Zend加密过的php代码&hellip;&hellip;</p>
<p>模板问题，现在用的最多的就属smarty了，可smarty的功能实在太强，里面的循环、判断和自动转换格式的部分，真不知道是给美工做还是给开发人员做更合适。如果不用模板，直接把php嵌入html中，同样的问题。</p>
<p>数据库访问，有很多数据库的访问接口，但始终无法摆脱fetch的命运，不论怎么封包，复杂的SQL语句总归要成了程序开发中的重点和系统运行中的瓶颈。</p>
<p>对象访问，php的对象在不断的增强，但还是有待增强。虽然不会把php当作java来用。</p>
<p>层次，企业环境开发，最希望的是能把系统访问和应用访问分开，界面和程序分开（即MVC），这一点PHP需要很大的工作量才可以做到，于是大多开发人员不得不选择了不分开。所有的代码集中到了一起，逻辑上很乱，也没有办法实现代码重用。</p>
<p>调试环境，相比java的调试环境，Zend Studio还远远不够。</p>
<p>框架，市面上流行的几个PHP框架，例如ZF，无一例外的都是模仿了Struct或者.net，没有真正表现出PHP自己的特色，这似乎成了一个怪圈&mdash;&mdash;如果别人用框架觉得好就可能从php转到struct或者.net，用得不好反而会得出php很烂的结论，从而转到其他语言。</p>
<p>总之，上面的牢骚只是希望php有所改善，并非是挑php的骨头。</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/10/04/%e5%86%8d%e8%b0%88php/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>用FreeBSD的ports安装apache+php+mysql·改</title>
		<link>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e7%2594%25a8freebsd%25e7%259a%2584ports%25e5%25ae%2589%25e8%25a3%2585apachephpmysql%25c2%25b7%25e6%2594%25b9</link>
		<comments>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 01:10:17 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[FreeBSD]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=459</guid>
		<description><![CDATA[ 正如我一贯习惯于规律性的工作和生活一样，昨天，我按照惯例在以往的时间，用电脑里的outlook软件收信——天热，纵然室内空调的温度已经远远低于官方标准的26度，人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲，也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外，我收到了一封网友的E-mail。出乎意料的是，不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论，这次却是发了mail。既然如此，我觉得mail一定是重要的，至少体现了相当一部分访客的心情吧。 那篇E-mail不长，在我的电脑上显示下来仅仅只有三行不到的样子，大抵的内容无非是说本站如何如何的帮了忙，我不免沾沾自喜起来——正如往常的沾沾自喜一样，mail的结尾处指出了小站的几个问题，最重要的是说很多文章过于流程化了，没有一点文字上的修饰和润色，言外之意是字里行间缺乏应有的优雅和细致。要指明的是，所谓优雅和细致，正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表，我想村上春树的小说（或者说林少华翻译的日本小说）、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我，从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架，也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致，字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试，既然有这样的需求，按照目前常说的一句话似乎叫做“需求第一”吧，我决定润色并重写本站访问量最高的那篇文章……   以上，正如以往话剧前面总有一个人上来讲述故事背景一样，是本文的开场白，别急，正剧马上就要开始了，当然希望您读的时候也要用优雅而细致的语调默默的朗读。 那时大概在前年的下班年，我一个正处在技术大崩溃边缘的技术人员，为了给自己制作一个技术性的网站（正如您现在看到的那样，就是本站了），要用FreeBSD平台的操作系统build一个万维网系统。 在此之前，看了网上很多安装apache php以及mysql的文章，唯独可惜是，其中大多都是用在林纳克斯的OS中的，不知为何，大多是用源代码编译的步骤教程，而其余的，Rpm（redhat programs manager )又占去了绝大部分。几乎寻觅不到FreeBSD平台下有关于Ports安装的一点讯息。于是我决定写一篇这样的东西，以免让大家舍近求远。 需要在所有的工作开始之前confirm的是，将您的主机连接到互联网之上且网路配置吻合，虽然这是句笑话，但似乎很多人都在这里遇到了坎坷。 连接好控制台，轻击键盘，键入命令： cvsup -h cvsup.freebsd.org /usr/share/example/cvsup/ports-supfile 这条命令的大体意思是从互联网上同步一下ports，以防止后续的工作中出现不必要的麻烦。 接下来的步骤就是要安装database了，Mysql纵然在严酷而恶劣下的环境还可以迅即的完成数据检索，为此Mysql成了我的首选。我的手指轻轻滑过键盘，屏幕出现了： cd /usr/ports/databases/mysql50-server/ make install clean ;rehash 不知过了多久，在我回忆了我虚度的童年时光之后——也许吧，可能时光流逝的还要慢一点，总之，一阵漫长的时光度过之后，Mysql已经成为了电脑中的一分子。接下来呢？配置mysql吧：cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf 可见我电脑中资源少的可怜，我仅仅只有权力使用小内存模式启动mysql，如果条件允许您这样做的话，您可以尝试 my-big.cnf 甚至于 my-huge.cnf mysql_install_db -u mysql ; mysqld_safe -u mysql &#38; 看看mysql是否已经能够start]]></description>
			<content:encoded><![CDATA[<p> 正如我一贯习惯于规律性的工作和生活一样，昨天，我按照惯例在以往的时间，用电脑里的outlook软件收信——天热，纵然室内空调的温度已经远远低于官方标准的26度，人毕竟还是没有冷天来的那么清醒。如果从心理学的角度上讲，也许那时的我正处在“意识朦胧状态”。除了正如以往枯燥的工作E-mail之外，我收到了一封网友的E-mail。出乎意料的是，不同于往常访客在浏览了我的个人网页以后会在文章后面发表评论，这次却是发了mail。既然如此，我觉得mail一定是重要的，至少体现了相当一部分访客的心情吧。</p>
<p>那篇E-mail不长，在我的电脑上显示下来仅仅只有三行不到的样子，大抵的内容无非是说本站如何如何的帮了忙，我不免沾沾自喜起来——正如往常的沾沾自喜一样，mail的结尾处指出了小站的几个问题，最重要的是说很多文章过于流程化了，没有一点文字上的修饰和润色，言外之意是字里行间缺乏应有的优雅和细致。要指明的是，所谓优雅和细致，正是目前白领文学或者说白领文化所擅长的。说到白领文化的代表，我想村上春树的小说（或者说林少华翻译的日本小说）、伍佰的歌词、汪家卫的台词、小女人的blog绝对可以作为代表。作为我，从来没有当作自己是白领的一员——乏味的代码、吵闹的机房、灰尘遍布的机架，也许能跟这些词句联系上的只有“体力劳动”一个词了。我固然写不出优雅和细致，字里行间唯独只有王朔依稀的身影。于是我决定做一个尝试，既然有这样的需求，按照目前常说的一句话似乎叫做“需求第一”吧，我决定润色并重写本站访问量最高的<a href="http://www.litrin.net/2005/11/09/%E7%94%A8freebsd%E7%9A%84ports%E5%AE%89%E8%A3%85apachephpmysql/" target="_blank">那篇文章……</a></p>
<p> <span id="more-459"></span></p>
<p>以上，正如以往话剧前面总有一个人上来讲述故事背景一样，是本文的开场白，别急，正剧马上就要开始了，当然希望您读的时候也要用优雅而细致的语调默默的朗读。</p>
<p>那时大概在前年的下班年，我一个正处在技术大崩溃边缘的技术人员，为了给自己制作一个技术性的网站（正如您现在看到的那样，就是本站了），要用FreeBSD平台的操作系统build一个万维网系统。</p>
<p>在此之前，看了网上很多安装apache php以及mysql的文章，唯独可惜是，其中大多都是用在林纳克斯的OS中的，不知为何，大多是用源代码编译的步骤教程，而其余的，Rpm（redhat programs manager )又占去了绝大部分。几乎寻觅不到FreeBSD平台下有关于Ports安装的一点讯息。于是我决定写一篇这样的东西，以免让大家舍近求远。</p>
<p>需要在所有的工作开始之前confirm的是，将您的主机连接到互联网之上且网路配置吻合，虽然这是句笑话，但似乎很多人都在这里遇到了坎坷。</p>
<p>连接好控制台，轻击键盘，键入命令：<br />
cvsup -h cvsup.freebsd.org /usr/share/example/cvsup/ports-supfile<br />
这条命令的大体意思是从互联网上同步一下ports，以防止后续的工作中出现不必要的麻烦。</p>
<p>接下来的步骤就是要安装database了，Mysql纵然在严酷而恶劣下的环境还可以迅即的完成数据检索，为此Mysql成了我的首选。我的手指轻轻滑过键盘，屏幕出现了：<br />
cd /usr/ports/databases/mysql50-server/<br />
make install clean ;rehash<br />
不知过了多久，在我回忆了我虚度的童年时光之后——也许吧，可能时光流逝的还要慢一点，总之，一阵漫长的时光度过之后，Mysql已经成为了电脑中的一分子。接下来呢？配置mysql吧：cp /usr/local/share/mysql/my-small.cnf /etc/my.cnf<br />
可见我电脑中资源少的可怜，我仅仅只有权力使用小内存模式启动mysql，如果条件允许您这样做的话，您可以尝试 my-big.cnf 甚至于 my-huge.cnf<br />
mysql_install_db -u mysql ; mysqld_safe -u mysql &amp;<br />
看看mysql是否已经能够start</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2007/08/01/%e7%94%a8freebsd%e7%9a%84ports%e5%ae%89%e8%a3%85apachephpmysql%c2%b7%e6%94%b9/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>PHP问题请教（Not Found）</title>
		<link>http://www.litrin.net/2006/10/31/php%e9%97%ae%e9%a2%98%e8%af%b7%e6%95%99%ef%bc%88not-found%ef%bc%89/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=php%25e9%2597%25ae%25e9%25a2%2598%25e8%25af%25b7%25e6%2595%2599%25ef%25bc%2588not-found%25ef%25bc%2589</link>
		<comments>http://www.litrin.net/2006/10/31/php%e9%97%ae%e9%a2%98%e8%af%b7%e6%95%99%ef%bc%88not-found%ef%bc%89/#comments</comments>
		<pubDate>Tue, 31 Oct 2006 09:09:58 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=411</guid>
		<description><![CDATA[我在Linux下安装并配置了apache2 tomcat5 mysql4.1.12 然后测试http://localhost 成功，但http://localhost/test.php Not Found the requested URL /test.php was not found on this server. Apache/2.0.52(Red Hat)Server at localhost Port 80 查了资料，说是卸载旧版本，我也照做了，可是也不行。请各位高手指点一下。谢谢！]]></description>
			<content:encoded><![CDATA[<p> 我在Linux下安装并配置了apache2 tomcat5 mysql4.1.12<br />
然后测试http://localhost 成功，但http://localhost/test.php<br />
Not Found<br />
the requested URL /test.php was not found on this server.<br />
Apache/2.0.52(Red Hat)Server at localhost Port 80<br />
查了资料，说是卸载旧版本，我也照做了，可是也不行。请各位高手指点一下。谢谢！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/10/31/php%e9%97%ae%e9%a2%98%e8%af%b7%e6%95%99%ef%bc%88not-found%ef%bc%89/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>写了一个验证身份证的class</title>
		<link>http://www.litrin.net/2006/09/13/%e5%86%99%e4%ba%86%e4%b8%80%e4%b8%aa%e9%aa%8c%e8%af%81%e8%ba%ab%e4%bb%bd%e8%af%81%e7%9a%84class/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%2586%2599%25e4%25ba%2586%25e4%25b8%2580%25e4%25b8%25aa%25e9%25aa%258c%25e8%25af%2581%25e8%25ba%25ab%25e4%25bb%25bd%25e8%25af%2581%25e7%259a%2584class</link>
		<comments>http://www.litrin.net/2006/09/13/%e5%86%99%e4%ba%86%e4%b8%80%e4%b8%aa%e9%aa%8c%e8%af%81%e8%ba%ab%e4%bb%bd%e8%af%81%e7%9a%84class/#comments</comments>
		<pubDate>Wed, 13 Sep 2006 02:02:30 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=397</guid>
		<description><![CDATA[PHP做的，支持从身份证中获得出生日期和性别，以及新、旧版本的互换，更重要的是支持验证新版本的身份证号码。]]></description>
			<content:encoded><![CDATA[<p>PHP做的，支持从身份证中获得出生日期和性别，以及新、旧版本的互换，更重要的是支持验证新版本的身份证号码。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/09/13/%e5%86%99%e4%ba%86%e4%b8%80%e4%b8%aa%e9%aa%8c%e8%af%81%e8%ba%ab%e4%bb%bd%e8%af%81%e7%9a%84class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IP到实际地址的查询接口</title>
		<link>http://www.litrin.net/2006/08/14/ip%e5%88%b0%e5%ae%9e%e9%99%85%e5%9c%b0%e5%9d%80%e7%9a%84%e6%9f%a5%e8%af%a2%e6%8e%a5%e5%8f%a3/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ip%25e5%2588%25b0%25e5%25ae%259e%25e9%2599%2585%25e5%259c%25b0%25e5%259d%2580%25e7%259a%2584%25e6%259f%25a5%25e8%25af%25a2%25e6%258e%25a5%25e5%258f%25a3</link>
		<comments>http://www.litrin.net/2006/08/14/ip%e5%88%b0%e5%ae%9e%e9%99%85%e5%9c%b0%e5%9d%80%e7%9a%84%e6%9f%a5%e8%af%a2%e6%8e%a5%e5%8f%a3/#comments</comments>
		<pubDate>Mon, 14 Aug 2006 07:21:13 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=382</guid>
		<description><![CDATA[上次曾经做过一个从IP到实际物理地址的PHP页面，现在我做了一个PHP的Class把这个接口开放。 其实也没有什么大的难度，大家可以看我附带的那个example.php 当然还希望大家不要太过分的调用。那边的服务器只是一个单CPU的Xeon2.8，每秒也只能查询700次以]]></description>
			<content:encoded><![CDATA[<p>上次曾经做过一个从IP到实际物理地址的PHP页面，现在我做了一个PHP的Class把这个接口开放。</p>
<p>其实也没有什么大的难度，大家可以看我附带的那个example.php</p>
<p>当然还希望大家不要太过分的调用。那边的服务器只是一个单CPU的Xeon2.8，每秒也只能查询700次以<img src="/modules/fckeditor/lib/editor/images/smiley/msn/tounge_smile.gif" alt="" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/08/14/ip%e5%88%b0%e5%ae%9e%e9%99%85%e5%9c%b0%e5%9d%80%e7%9a%84%e6%9f%a5%e8%af%a2%e6%8e%a5%e5%8f%a3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于虚拟主机的PHP配置</title>
		<link>http://www.litrin.net/2006/04/26/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84php%e9%85%8d%e7%bd%ae/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%259f%25ba%25e4%25ba%258e%25e8%2599%259a%25e6%258b%259f%25e4%25b8%25bb%25e6%259c%25ba%25e7%259a%2584php%25e9%2585%258d%25e7%25bd%25ae</link>
		<comments>http://www.litrin.net/2006/04/26/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84php%e9%85%8d%e7%bd%ae/#comments</comments>
		<pubDate>Wed, 26 Apr 2006 05:45:49 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=307</guid>
		<description><![CDATA[有个朋友想在我的主机上安置一个站点，PHP的。安置了以后才发现，他的系统默认是session.auto_start的。正好与我这个站点的设置有冲突，使用统一个PHP设置不太可能了。查看了官方的手册，找到了解决方案： 我用PHP5配置为： 打开服务器的AllowOverride 权限 AllowOverride All &#60;IfModule mod_php5.c&#62; php_value include_path &#34;.:/usr/local/lib/php&#34; php_admin_flag safe_mode on&#60;/IfModule&#62; PHP4的： &#60;IfModule mod_php4.c&#62; php_value include_path &#34;.:/usr/local/lib/php&#34; php_admin_flag safe_mode on&#60;/IfModule&#62; 文物级的PHP3：&#60;IfModule mod_php3.c&#62; php3_include_path &#34;.:/usr/local/lib/php&#34; php3_safe_mode on&#60;/IfModule&#62; 找到PHP.ini中的配置选项后替换掉上面例子中的配置就可以了。其中，php_admin_flag使用与&#8220;是非型&#8221;、&#8220;整数型&#8221;以及&#8220;浮点数型&#8221;的php配置；而php_value则对应了&#8220;字符型&#8221;。放置在&#60;VirtualHost &#62;之间就可以实现为每个虚拟主机设置不同的配置了。 最后还是提醒PHP的广大开发者：尽量使用PHP的默认配置作为基础环境，如果必须修改相关的设置参数，可以使用php的ini_set()函数来实现。]]></description>
			<content:encoded><![CDATA[<p>有个朋友想在我的主机上安置一个站点，PHP的。安置了以后才发现，他的系统默认是session.auto_start的。正好与我这个站点的设置有冲突，使用统一个PHP设置不太可能了。查看了官方的手册，找到了解决方案：</p>
<p>我用PHP5配置为：</p>
<p>打开服务器的AllowOverride 权限 <br />AllowOverride All</p>
<pre class="ini">&lt;IfModule mod_php5.c&gt;  php_value include_path &quot;.:/usr/local/lib/php&quot;   php_admin_flag safe_mode on&lt;/IfModule&gt;
PHP4的：
&lt;IfModule mod_php4.c&gt;  php_value include_path &quot;.:/usr/local/lib/php&quot;  php_admin_flag safe_mode on&lt;/IfModule&gt;
文物级的PHP3：&lt;IfModule mod_php3.c&gt;  php3_include_path &quot;.:/usr/local/lib/php&quot;  php3_safe_mode on&lt;/IfModule&gt;</pre>
<p>找到PHP.ini中的配置选项后替换掉上面例子中的配置就可以了。其中，php_admin_flag使用与&ldquo;是非型&rdquo;、&ldquo;整数型&rdquo;以及&ldquo;浮点数型&rdquo;的php配置；而php_value则对应了&ldquo;字符型&rdquo;。放置在&lt;VirtualHost &gt;之间就可以实现为每个虚拟主机设置不同的配置了。</p>
<p>最后还是提醒PHP的广大开发者：尽量使用PHP的默认配置作为基础环境，如果必须修改相关的设置参数，可以使用php的ini_set()函数来实现。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/04/26/%e5%9f%ba%e4%ba%8e%e8%99%9a%e6%8b%9f%e4%b8%bb%e6%9c%ba%e7%9a%84php%e9%85%8d%e7%bd%ae/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>加固PHP环境</title>
		<link>http://www.litrin.net/2006/03/15/%e5%8a%a0%e5%9b%baphp%e7%8e%af%e5%a2%83/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e5%258a%25a0%25e5%259b%25baphp%25e7%258e%25af%25e5%25a2%2583</link>
		<comments>http://www.litrin.net/2006/03/15/%e5%8a%a0%e5%9b%baphp%e7%8e%af%e5%a2%83/#comments</comments>
		<pubDate>Wed, 15 Mar 2006 06:10:36 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[服务器]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=275</guid>
		<description><![CDATA[　　PHP作为Apache的模块运行时，Apache本身的安全起主导作用，因此如果配置正确的话，PHP应该是一个十分安全的环境，但是如果PHP是以CGI方式来运行的话，就没有这么安全了。 　　本文中提到的操作，对Unix和Windows都适用。 　　一、作为Apache模块来运行 　　因为一般说来，Apache会以&#8220;nobody&#8221;或者&#8220;www&#8221;来运行，所以，PHP作为模块是十分安全的。 　　如果PHP在虚拟主机环境下，可能会产生用户能浏览其他用户文件的危险。一个简单的脚本如下： 　　 　　// 假定文档根位于 /usr/local/websites/mydomain 　　&#8194;$location = ../; // 到上一级目录 　　&#8194;$parent = dir(&#8194;$location); 　　// 显示当前目录: /usr/local/websites 　　while(&#8194;$entry = &#8194;$parent-&#62;read()) { 　　echo &#8194;$entry . ; 　　} 　　&#8194;$parent-&#62;close(); 　　?&#62; 　　这样，只要修改&#8194;$location，用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险，我们需要看一下php.ini ，修改其中的safe_mode, doc_root和usr_dir 参数，把用户限制在他自己的虚拟主机环境下： 　　safe_mode = On 　　doc_root = /usr/local/apache/htdocs 　　user_dir = /home/albertxu/htdocs 　　二、作为CGI 　　把PHP以CGI方式运行需要十分小心，可能会泄露你不想让人知道的信息。 　　第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如/usr/local/bin，因此所有的CGI文件开头必须带有： 　　#!/usr/local/bin/php 　　防止用户直接调用CGI的办法是在Apache中强迫CGI重定向： 　　Action php-script /cgi-bin/php.cgi 　　AddHandler php-script .php [...]]]></description>
			<content:encoded><![CDATA[<p><span id="xydwtext" class="pg"> 　　PHP作为Apache的模块运行时，Apache本身的安全起主导作用，因此如果配置正确的话，PHP应该是一个十分安全的环境，但是如果PHP是以CGI方式来运行的话，就没有这么安全了。 </p>
<p>　　本文中提到的操作，对Unix和Windows都适用。 </p>
<p>　　一、作为Apache模块来运行 </p>
<p>　　因为一般说来，Apache会以&ldquo;nobody&rdquo;或者&ldquo;www&rdquo;来运行，所以，PHP作为模块是十分安全的。 </p>
<p>　　如果PHP在虚拟主机环境下，可能会产生用户能浏览其他用户文件的危险。一个简单的脚本如下： </p>
<p>　　 <br />　　// 假定文档根位于 /usr/local/websites/mydomain </p>
<p>　　&ensp;$location = ../; // 到上一级目录 <br />　　&ensp;$parent = dir(&ensp;$location); </p>
<p>　　// 显示当前目录: /usr/local/websites <br />　　while(&ensp;$entry = &ensp;$parent-&gt;read()) { <br />　　echo &ensp;$entry . <br />; <br />　　} <br />　　&ensp;$parent-&gt;close(); <br />　　?&gt; </p>
<p>　　这样，只要修改&ensp;$location，用户就可以浏览虚拟主机上所有其他用户的文件了。为了减少这样的危险，我们需要看一下php.ini ，修改其中的safe_mode, doc_root和usr_dir 参数，把用户限制在他自己的虚拟主机环境下： </p>
<p>　　safe_mode = On <br />　　doc_root = /usr/local/apache/htdocs <br />　　user_dir = /home/albertxu/htdocs </p>
<p>　　二、作为CGI </p>
<p>　　把PHP以CGI方式运行需要十分小心，可能会泄露你不想让人知道的信息。 </p>
<p>　　第一件事情要注意的就是一定要把执行文件放到文档根目录以外的地方。例如/usr/local/bin，因此所有的CGI文件开头必须带有： </p>
<p>　　#!/usr/local/bin/php </p>
<p>　　防止用户直接调用CGI的办法是在Apache中强迫CGI重定向： </p>
<p>　　Action php-script /cgi-bin/php.cgi <br />　　AddHandler php-script .php </p>
<p>　　这会把下面的URL </p>
<p>　　<a rel="nofollow" target="_blank" target="_blank" href="http://example.com/mywebdir/test.htm">http://example.com/mywebdir/test.htm</a> </p>
<p>　　转换为： </p>
<p>　　<a rel="nofollow" target="_blank" target="_blank" href="http://example.com/cgi-bin/php/mywebdir/test.htm">http://example.com/cgi-bin/php/mywebdir/test.htm</a> </p>
<p>　　在以CGI方式编译PHP时，最好采用下面的选项： </p>
<p>　　&#8211;enable-force-cgi-redirect </span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/03/15/%e5%8a%a0%e5%9b%baphp%e7%8e%af%e5%a2%83/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GMT与UTC</title>
		<link>http://www.litrin.net/2006/01/04/gmt%e4%b8%8eutc/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=gmt%25e4%25b8%258eutc</link>
		<comments>http://www.litrin.net/2006/01/04/gmt%e4%b8%8eutc/#comments</comments>
		<pubDate>Wed, 04 Jan 2006 05:13:27 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[开源7788]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=193</guid>
		<description><![CDATA[0.时标 时标意指一种将时间分配到事件的制度。现时有两类时间标准广泛被采用。一种是基于天文学，另一种则以原子振动的频率作为依据。 1.视太阳时 视太阳时是一种源于太阳所见位置的时间标准。日晷可直接显示视太阳时。 2.UT0 由 于地球轨道并非圆形，其运行速度又随着地球与太阳的距离改变而出现变化，因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度 所影响。为着要纠正上述的不均匀性，天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平 太阳时称为世界时(UT0)，又叫格林尼治平时(GMT)。 3.UT1 UT1 与 UT2 是两种较 UT0 均匀的时标。随着较为精确的时钟面世，天文学家发现在不同地点量度的世界时出现差别。这种差别是由于地轴摆动而引起的。各地天文台详细测量了地轴摆动的影响后，制定了一种称为 UT1 的新时标将这种影响删除。 4.UT2 在时钟的精确度进一步改进后，又发现 UT1 具有周期性变化。这种变化是由地球自转率的季节性变动引起的。上述影响经修正后，得到一种更加均匀的时标称为 UT2。 5.国际原子时(TAI): 1967年的第13届国际度量衡会议上通过了一项决议，采纳以下定义代替秒的天文定义：一秒为铯-133原子基态两个超精细能级间跃迁辐射9,192,631,770周所持续的时间。国际原子时是根据以上秒的定义的一种国际参照时标，属国际单位制(SI)。 国际原子时标是一种连续性时标，由1958年1月1日0时0分0秒起，以日、时、分、秒计算。原子时标的准确度为每日数纳秒，而世界时的准确度则只为数毫秒。 6.协调世界时(UTC)： 一 种称为协调世界时的折衷时标于1972年面世。为了确保协调世界时与世界时(UT1)相差不会超过0.9秒，有需要时便会在协调世界时内加上正或负闰秒。 因此协调世界时与国际原子时(TAI)之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局(IERS)负责决定何时加入闰秒。]]></description>
			<content:encoded><![CDATA[<p>0.时标 </p>
<p>时标意指一种将时间分配到事件的制度。现时有两类时间标准广泛被采用。一种是基于天文学，另一种则以原子振动的频率作为依据。 </p>
<p>1.视太阳时 </p>
<p>视太阳时是一种源于太阳所见位置的时间标准。日晷可直接显示视太阳时。 </p>
<p>2.UT0 <br />由 于地球轨道并非圆形，其运行速度又随着地球与太阳的距离改变而出现变化，因此视太阳时欠缺均匀性。视太阳日的长度同时亦受到地球自转轴相对轨道面的倾斜度 所影响。为着要纠正上述的不均匀性，天文学家计算地球非圆形轨迹与极轴倾斜对视太阳时的效应。平太阳时就是指经修订后的视太阳时。在格林尼治子午线上的平 太阳时称为世界时(UT0)，又叫格林尼治平时(GMT)。 </p>
<p>3.UT1 <br />UT1 与 UT2 是两种较 UT0 均匀的时标。随着较为精确的时钟面世，天文学家发现在不同地点量度的世界时出现差别。这种差别是由于地轴摆动而引起的。各地天文台详细测量了地轴摆动的影响后，制定了一种称为 UT1 的新时标将这种影响删除。 </p>
<p>4.UT2 <br />在时钟的精确度进一步改进后，又发现 UT1 具有周期性变化。这种变化是由地球自转率的季节性变动引起的。上述影响经修正后，得到一种更加均匀的时标称为 UT2。 </p>
<p>5.国际原子时(TAI): </p>
<p>1967年的第13届国际度量衡会议上通过了一项决议，采纳以下定义代替秒的天文定义：一秒为铯-133原子基态两个超精细能级间跃迁辐射9,192,631,770周所持续的时间。国际原子时是根据以上秒的定义的一种国际参照时标，属国际单位制(SI)。 </p>
<p>国际原子时标是一种连续性时标，由1958年1月1日0时0分0秒起，以日、时、分、秒计算。原子时标的准确度为每日数纳秒，而世界时的准确度则只为数毫秒。 </p>
<p>6.协调世界时(UTC)： <br />一 种称为协调世界时的折衷时标于1972年面世。为了确保协调世界时与世界时(UT1)相差不会超过0.9秒，有需要时便会在协调世界时内加上正或负闰秒。 因此协调世界时与国际原子时(TAI)之间会出现若干整数秒的差别。位于巴黎的国际地球自转事务中央局(IERS)负责决定何时加入闰秒。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2006/01/04/gmt%e4%b8%8eutc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>drupal简介</title>
		<link>http://www.litrin.net/2005/12/14/drupal%e7%ae%80%e4%bb%8b/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=drupal%25e7%25ae%2580%25e4%25bb%258b</link>
		<comments>http://www.litrin.net/2005/12/14/drupal%e7%ae%80%e4%bb%8b/#comments</comments>
		<pubDate>Wed, 14 Dec 2005 05:51:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=149</guid>
		<description><![CDATA[随着PHP技术的飞速发展，搭建一个专业网站已经变得越来越容易。特别是各种优秀CMS(内容管理系统)的出现，使得网站的开发不需要编程，你所做的主要工作就是下载一些已有模块，下载一些主题风格，定制一些模块，定制一些主题风格，一个专业的网站就建好了。 优秀的CMS系统包括：Drupal、Typo3、XOOPS、TikiWiki、Mambo、PHP-Nuke等，具体见： http://www.opensourcecms.com/ 目前国内比较流行的CMS包括Mambo和XOOPS，他们的国内社区见： http://www.mambochina.net/ http://xoops.org.cn/ Drupal是一个新的CMS系统，它虽然没有Manbo流行，也没有XOOPS强大，但却是一个非常易用的内容管理系统，可做为个人或大型网站发布、管理、组织不同内容的平台，包含了广为人知的weblog、论坛、投票、新闻聚合、站内搜索、电子商务等功能。 Drupal应该翻译成什么呢?呵呵，觉得还是翻译为&#8220;水滴&#8221;比较好。Drupal这个词其实是荷兰语Druppel的英语发音，而Druppel在荷兰 语里面是Drop也就是水滴的意思。Drupal的编写者最初选择这个词实在是意外，他本来想注册一个名为&#8220;Dorp&#8221;的域名，Dorp在荷兰语里是&#8220;小 村庄&#8221;的意思，英语里其实也有这个名词，但是他一不小心犯了个错误，于是就注册成了Drop，于是也就有了后来的 Drupal。呵呵，所以汉语翻译成&#8220;水滴&#8221;还是蛮贴切的，听起来也不错了。 有的人把Drupal当作是blog系统，我一开始也是 这样认为的，其实这只是Drupal的一方面的应用，Drupal是一个功能强大的content manage system（cms），在功能设计上它仿照了phpnuke,xoops等的模块化方式，界面上仿照了blog模式。这个程序以极少的代码实现了非常强 大的功能。很多人用&#8220;神奇&#8221; 两个字来形容它，它是一个完全开放源代码的程序，所以吸引了众多PHP爱好者的目光，很多PHP高手参与了它的开发行列中来了，开发速度非常块，几乎两个 月出一个新版本，modules和skins也越来越多。从官方站点有时上千人的在线情况就可以看出它的受欢迎程度。 在这里可以下载Drupal： http://drupal.org/]]></description>
			<content:encoded><![CDATA[<p>随着PHP技术的飞速发展，搭建一个专业网站已经变得越来越容易。特别是各种优秀CMS(内容管理系统)的出现，使得网站的开发不需要编程，你所做的主要工作就是下载一些已有模块，下载一些主题风格，定制一些模块，定制一些主题风格，一个专业的网站就建好了。</p>
<p> 优秀的CMS系统包括：Drupal、Typo3、XOOPS、TikiWiki、Mambo、PHP-Nuke等，具体见：<br /> <a rel="nofollow" target="_blank" target="_blank" href="http://www.opensourcecms.com/">http://www.opensourcecms.com/</a></p>
<p> 目前国内比较流行的CMS包括Mambo和XOOPS，他们的国内社区见：<br /> <a rel="nofollow" target="_blank" target="_blank" href="http://www.mambochina.net/">http://www.mambochina.net/</a><br /> <a rel="nofollow" target="_blank" target="_blank" href="http://xoops.org.cn/">http://xoops.org.cn/</a></p>
<p> Drupal是一个新的CMS系统，它虽然没有Manbo流行，也没有XOOPS强大，但却是一个非常易用的内容管理系统，可做为个人或大型网站发布、管理、组织不同内容的平台，包含了广为人知的weblog、论坛、投票、新闻聚合、站内搜索、电子商务等功能。</p>
<p> Drupal应该翻译成什么呢?呵呵，觉得还是翻译为&ldquo;水滴&rdquo;比较好。Drupal这个词其实是荷兰语Druppel的英语发音，而Druppel在荷兰 语里面是Drop也就是水滴的意思。Drupal的编写者最初选择这个词实在是意外，他本来想注册一个名为&ldquo;Dorp&rdquo;的域名，Dorp在荷兰语里是&ldquo;小 村庄&rdquo;的意思，英语里其实也有这个名词，但是他一不小心犯了个错误，于是就注册成了Drop，于是也就有了后来的 Drupal。呵呵，所以汉语翻译成&ldquo;水滴&rdquo;还是蛮贴切的，听起来也不错了。</p>
<p> 有的人把Drupal当作是blog系统，我一开始也是 这样认为的，其实这只是Drupal的一方面的应用，Drupal是一个功能强大的content manage system（cms），在功能设计上它仿照了phpnuke,xoops等的模块化方式，界面上仿照了blog模式。这个程序以极少的代码实现了非常强 大的功能。很多人用&ldquo;神奇&rdquo; 两个字来形容它，它是一个完全开放源代码的程序，所以吸引了众多PHP爱好者的目光，很多PHP高手参与了它的开发行列中来了，开发速度非常块，几乎两个 月出一个新版本，modules和skins也越来越多。从官方站点有时上千人的在线情况就可以看出它的受欢迎程度。</p>
<p> 在这里可以下载Drupal：<br /> <a rel="nofollow" target="_blank" target="_blank" href="http://drupal.org/">http://drupal.org/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/12/14/drupal%e7%ae%80%e4%bb%8b/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>apache2.2 PHP5.1.1 release</title>
		<link>http://www.litrin.net/2005/12/13/apache22-php511-release/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=apache22-php511-release</link>
		<comments>http://www.litrin.net/2005/12/13/apache22-php511-release/#comments</comments>
		<pubDate>Tue, 13 Dec 2005 04:54:19 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=146</guid>
		<description><![CDATA[前一段一直没有注意apache的消息，今天在更新ports时发现，PHP已经升级为5.1.1； 原先的www/apache2改成了www/apache20，而新加的www/apache22格外醒目。 新的版本主要重写了认证、缓冲以及大文件支持等多个子系统的代码，看起来似乎不错，还在使用2.1版本的用户该是更新的时候了。 PHP5的升级主要是在安全上，毕竟XML_RPC的漏洞弄得人心惶惶。但是有一个&#8220;很要命&#8221;的升级可能会影响到很多利用PHP+静态模版转制成动态网站的用户（本站就是一个比较典型的例子）： 取消了原先的&#34;{&#34; &#34;}&#34;的表达方式，变成了直接的 &#8220;{ &#8221; 和 &#8220;}&#8221;。]]></description>
			<content:encoded><![CDATA[<p>前一段一直没有注意apache的消息，今天在更新ports时发现，PHP已经升级为5.1.1； 原先的www/apache2改成了www/apache20，而新加的www/apache22格外醒目。</p>
<p>新的版本主要重写了认证、缓冲以及大文件支持等多个子系统的代码，看起来似乎不错，还在使用2.1版本的用户该是更新的时候了。</p>
<p>PHP5的升级主要是在安全上，毕竟XML_RPC的漏洞弄得人心惶惶。但是有一个&ldquo;很要命&rdquo;的升级可能会影响到很多利用PHP+静态模版转制成动态网站的用户（本站就是一个比较典型的例子）：</p>
<p>取消了原先的&quot;{&quot; &quot;}&quot;的表达方式，变成了直接的 &ldquo;{ &rdquo; 和 &ldquo;}&rdquo;。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/12/13/apache22-php511-release/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用PHP生成Google sitemap</title>
		<link>http://www.litrin.net/2005/12/12/%e7%94%a8php%e7%94%9f%e6%88%90google-sitemap/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e7%2594%25a8php%25e7%2594%259f%25e6%2588%2590google-sitemap</link>
		<comments>http://www.litrin.net/2005/12/12/%e7%94%a8php%e7%94%9f%e6%88%90google-sitemap/#comments</comments>
		<pubDate>Mon, 12 Dec 2005 04:26:21 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=143</guid>
		<description><![CDATA[Google Sitemaps 是帮助改善您的网站在 Google 索引中的覆盖面的一种便捷方法。 这是一个能够让您直接与 Google 交流的协助式抓取系统。您可以向 Google 提供有关您所有网页的具体信息，如网页的最新修改时间或网页的更改频率，而获得更为智能的抓取。 链接地址 ：https://www.google.com/webmasters/sitemaps/siteoverview?hl=zh_CN 该class的原作者为一个保加利亚人，我做了部分的修改，以便其能够支持使用gz压缩文件，节省传输速度。]]></description>
			<content:encoded><![CDATA[<p><font size="-1"> Google Sitemaps 是帮助改善您的网站在 Google 索引中的覆盖面的一种便捷方法。 这是一个能够让您直接与 Google 交流的协助式抓取系统。您可以向 Google 提供有关您所有网页的具体信息，如网页的最新修改时间或网页的更改频率，而获得更为智能的抓取。 </p>
<p>链接地址 ：<a rel="nofollow" target="_blank" href="https://www.google.com/webmasters/sitemaps/siteoverview?hl=zh_CN">https://www.google.com/webmasters/sitemaps/siteoverview?hl=zh_CN</a></p>
<p>该class的原作者为一个保加利亚人，我做了部分的修改，以便其能够支持使用gz压缩文件，节省传输速度。<br /></font></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/12/12/%e7%94%a8php%e7%94%9f%e6%88%90google-sitemap/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>用PHP生成RSS2.0格式的XML</title>
		<link>http://www.litrin.net/2005/12/06/%e7%94%a8php%e7%94%9f%e6%88%90rss20%e6%a0%bc%e5%bc%8f%e7%9a%84xml/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e7%2594%25a8php%25e7%2594%259f%25e6%2588%2590rss20%25e6%25a0%25bc%25e5%25bc%258f%25e7%259a%2584xml</link>
		<comments>http://www.litrin.net/2005/12/06/%e7%94%a8php%e7%94%9f%e6%88%90rss20%e6%a0%bc%e5%bc%8f%e7%9a%84xml/#comments</comments>
		<pubDate>Tue, 06 Dec 2005 09:00:27 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=127</guid>
		<description><![CDATA[上次贴出过一个生成RSS的php class 可以生成RSS1.0格式的XML，经过我修改后，制作了这个生成RSS2.0版本的。&#160;用法没有改变，可以实现平滑过渡。]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.litrin.net/?q=node/62" target="_blank">上次贴出过一个生成RSS的php class</a> 可以生成RSS1.0格式的XML，经过我修改后，制作了这个生成RSS2.0版本的。<br />&nbsp;<br />用法没有改变，可以实现平滑过渡。</p>
<p><a href="http://www.litrin.net/?q=node/62" target="_blank"> </a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/12/06/%e7%94%a8php%e7%94%9f%e6%88%90rss20%e6%a0%bc%e5%bc%8f%e7%9a%84xml/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>PHP编程精华</title>
		<link>http://www.litrin.net/2005/11/21/php%e7%bc%96%e7%a8%8b%e7%b2%be%e5%8d%8e/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=php%25e7%25bc%2596%25e7%25a8%258b%25e7%25b2%25be%25e5%258d%258e</link>
		<comments>http://www.litrin.net/2005/11/21/php%e7%bc%96%e7%a8%8b%e7%b2%be%e5%8d%8e/#comments</comments>
		<pubDate>Mon, 21 Nov 2005 02:17:46 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=83</guid>
		<description><![CDATA[原先看过的一本电子书，里面的实录不错的，涵盖了一般情况下的PHP页面开发。 7-zip压缩]]></description>
			<content:encoded><![CDATA[<p>原先看过的一本电子书，里面的实录不错的，涵盖了一般情况下的PHP页面开发。</p>
<p>7-zip压缩</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/11/21/php%e7%bc%96%e7%a8%8b%e7%b2%be%e5%8d%8e/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一个生成RSS文件的php class</title>
		<link>http://www.litrin.net/2005/11/15/%e4%b8%80%e4%b8%aa%e7%94%9f%e6%88%90rss%e6%96%87%e4%bb%b6%e7%9a%84php-class/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=%25e4%25b8%2580%25e4%25b8%25aa%25e7%2594%259f%25e6%2588%2590rss%25e6%2596%2587%25e4%25bb%25b6%25e7%259a%2584php-class</link>
		<comments>http://www.litrin.net/2005/11/15/%e4%b8%80%e4%b8%aa%e7%94%9f%e6%88%90rss%e6%96%87%e4%bb%b6%e7%9a%84php-class/#comments</comments>
		<pubDate>Tue, 15 Nov 2005 03:27:43 +0000</pubDate>
		<dc:creator>Litrin</dc:creator>
				<category><![CDATA[www]]></category>
		<category><![CDATA[php]]></category>
		<guid isPermaLink="false">http://www.litrin.net/?p=62</guid>
		<description><![CDATA[我在原先RSSFeed的基础上增加了 releaseHtml 和 releaseFile两个函数点击下载文件 使用时如使用 releaseFile，请注意目录权限至少要666以上。]]></description>
			<content:encoded><![CDATA[<p>我在原先RSSFeed的基础上增加了 releaseHtml 和 releaseFile两个函数<br /><a rel="nofollow" target="_blank" href="http://www.litrin.net/UserFiles/File/RSS_CLASS.7z">点击下载文件</a></p>
<p>使用时如使用 releaseFile，请注意目录权限至少要666以上。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.litrin.net/2005/11/15/%e4%b8%80%e4%b8%aa%e7%94%9f%e6%88%90rss%e6%96%87%e4%bb%b6%e7%9a%84php-class/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
