<?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>MoontoC Inc. &#187; Lab</title>
	<atom:link href="http://moontoc.com/category/blog/lab/feed/" rel="self" type="application/rss+xml" />
	<link>http://moontoc.com</link>
	<description></description>
	<lastBuildDate>Wed, 01 Feb 2012 05:29:16 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>E_ALL &amp; ~E_NOTICE 与 E_ALL ^ E_NOTICE</title>
		<link>http://moontoc.com/blog/e_all-and-not-e_notice-and-e_all-xor-e_notice/</link>
		<comments>http://moontoc.com/blog/e_all-and-not-e_notice-and-e_all-xor-e_notice/#comments</comments>
		<pubDate>Mon, 26 Jul 2010 03:50:17 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[Lab]]></category>

		<guid isPermaLink="false">http://moontoc.com/none/</guid>
		<description><![CDATA[在某个论坛上发现了三年前的有趣话题, 哈哈哈哈哈哈, 希望它们看过"数据结构"教科书,也许它们上学时有这本, 也许它们至今还珍藏并且从未看过 我觉得这话题, 的确会有一部分人会理解, 但是我希望给不理解的那部分人看的, 也许这问题本身就很粗浅, 但是我们都高估了计算机专业科班出身的那群孩子的专业知识 error_reporting(E_ALL &#38; ~E_NOTICE); error_reporting(E_ALL ^ E_NOTICE); 要理解这个问题, 得从位运算的基础说起 PHP中, 整形为32个位, 换句话说, 1 = 00000000000000000000000000000001 ~1 = 11111111111111111111111111111110 其实对于 E_NOTICE 使用 &#38; ~ 或者 ^ 的结果, 出现问题的几率是0, 因为 E_NOTICE 的确是包含在 E_ALL 中 &#8230; <a href="http://moontoc.com/blog/e_all-and-not-e_notice-and-e_all-xor-e_notice/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>在某个论坛上发现了三年前的有趣话题, 哈哈哈哈哈哈, 希望它们看过"数据结构"教科书,也许它们上学时有这本, 也许它们至今还珍藏并且从未看过</p>
<p>我觉得这话题, 的确会有一部分人会理解, 但是我希望给不理解的那部分人看的, 也许这问题本身就很粗浅, 但是我们都高估了计算机专业科班出身的那群孩子的专业知识</p>
<p>error_reporting(E_ALL &amp; ~E_NOTICE);<br />
error_reporting(E_ALL ^ E_NOTICE);</p>
<p>要理解这个问题, 得从位运算的基础说起</p>
<p>PHP中, 整形为32个位, 换句话说,</p>
<pre> 1 = 00000000000000000000000000000001
~1 = 11111111111111111111111111111110</pre>
<p>其实对于 E_NOTICE 使用 &amp; ~ 或者 ^ 的结果, 出现问题的几率是0, 因为 E_NOTICE 的确是包含在 E_ALL 中<br />
那我们换个常量来用看看, E_STRICT 在 PHP 5.0 中被定义, 而它的特殊性, 导致它并没有被定义在 E_ALL 中,</p>
<p>假设某个童鞋写了一个程序, 而我们的程序作者同学对 E_STRICT 不包含在 E_ALL 中并不知情<br />
error_reporting(E_ALL ^ E_STRICT);<br />
这时问题就出现了, 假定当前PHP版本为5.2, 这时</p>
<pre>E_ALL    = 6143 = 00000000000000000001<span style="color: #ff0000;"><span style="text-decoration: underline;">0</span></span>11111111111
E_STRICT = 2048 = 00000000000000000000<span style="text-decoration: underline;"><span style="color: #ff0000;">1</span></span>00000000000</pre>
<p>这里可以看出来, 6143的第12位为0, 而2048为1,<br />
<span style="color: #666699;">###########################################</span><br />
我们来说^是什么, ^的作用是: 当 操作数A 和 操作数B 中当前位不同时, 返回结果的当前位设为1, 反过来理解就是, 当 A或B 中当前位相同时, 返回的结果的当前位为0</p>
<p>而我们的作者童鞋正是希望它的反向结果,也就是由于A/B中当前位相同,所以得到0,相当于去掉这个2048,事与愿违的是,,</p>
<p>由于6143中不包含2048, 所以6143和2048的每一位都不同, 所以我们的6143被填上了第12位的1, 变成了8191, 而不是预期的去掉第12位的1, 而作者的意图很明显的是希望去掉它, 很遗憾的是作者并不知道它本来就不在其中<br />
程序运行的结果就是所有的E_STRICT错误被展示给所有访问者欣赏<br />
<span style="color: #666699;">###########################################</span><br />
那么我们再看 &amp; ~的结果<br />
首先说, &amp;的含义是 将 A 和 B 中当前位都为1的位设为1, 反过来就是 A 或 B 中任意一个的当前位不为1, 当前位的结果都是 0<br />
而~的含义是将操作数种所有的位翻转过来, 以前是1的变成0, 以前是0的变成1, 所以:</p>
<pre>~2048 = 11111111111111111111<span style="color: #ff0000;"><span style="text-decoration: underline;">0</span></span>11111111111</pre>
<p>那么接下来由于 6143 的第12位为0, 被翻转的2048中第12位也为0, 而 &amp; 只有在 A 和 B 的当前位皆为1时才将结果范围为1,其他皆为0, 那么第12位仍然保持0, 其他位不同的为0, 此时~2048中除第12位其他皆为1, 在6143中原有的为1的位保持不变,其他不同的变成了0,得到的结果仍然是6143<br />
<span style="color: #666699;">###########################################</span><br />
至此我们得到一个结论</p>
<p>使用 A^B 希望将B排除在外, 希望这个条件成立, 只有在A中绝对包含B的情况下才能实现,而A中不包含B的情况下,相当于A加上B, 也就是说 ^ 在A中有B时去掉B,在A中没有B时加上B,是这么个作用</p>
<p>而使用 A&amp;~B可以在无论是否已知A中是否包含B的情况下都可以无条件的让结果中不包含B, 等于说安全的从A中去掉B<br />
<span style="color: #666699;">###########################################</span><br />
捎带介绍下 | , 它的作用是 A 和 B 中任意一个当前位为1的情况下, 结果的当前位即为1 , 这相当于 无论中 A中是否存在B, 都可以安全的添加B,不会让结果溢出<br />
<span style="color: #666699;">###########################################</span><br />
简易理解方式:</p>
<pre>使用 A ^ B  : A中有B就去掉, A中没有B就加上
使用 A &amp; B  : 返回双方都包含的部分, 可用于判断某个或某些位是否存在
使用 A &amp; ~B : A中有没有B都去掉B,不影响其他位
使用 A | B  : A中有没有B都加上B, 不影响其他位</pre>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/e_all-and-not-e_notice-and-e_all-xor-e_notice/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpMyAdmin Hack: Add change field order function</title>
		<link>http://moontoc.com/blog/pma-hack-add-change-field-order/</link>
		<comments>http://moontoc.com/blog/pma-hack-add-change-field-order/#comments</comments>
		<pubDate>Tue, 15 Jun 2010 18:52:24 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=70</guid>
		<description><![CDATA[Only PMA 3.3.3 首先我没有太多空闲可以用来随时维护这个我自己偶尔要用的小功能,其次我并没有义务去做各种版本的兼容性/安全性测试,本功能仅适用于PMA和PHP的高级用户,我个人完全不保障该功能的安全性和兼容性,所以如果你坚持想用它,请自己保证服务器和数据的安全,我个人仅在PMA当前3.3.3版本上突然需要这个功能而做出来的,过分期待不要 如果我自己使用了新版PMA,并且我有空做这种事,我可能会提供兼容新版PMA的方法,在此之前,如果你先用了新版,如果它不兼容,请自行修改,如何修改,电子产品的说明书上都有说过:有请专业人士 修改方法: 1, 将以下链接文本中的两段代码分别复制到 PMA 333指定的行尾,该行当前版本应为空行 2, success 使用方法: 5, 点不点保存别问我]]></description>
			<content:encoded><![CDATA[<p><span style="color: #ff0000;"><strong>Only PMA 3.3.3</strong></span></p>
<p><span style="color: #ff0000;"><strong>首先我没有太多空闲可以用来随时维护这个我自己偶尔要用的小功能,其次我并没有义务去做各种版本的兼容性/安全性测试,本功能仅适用于PMA和PHP的高级用户,我个人完全不保障该功能的安全性和兼容性,所以如果你坚持想用它,请自己保证服务器和数据的安全,我个人仅在PMA当前3.3.3版本上突然需要这个功能而做出来的,过分期待不要<br />
</strong></span></p>
<p><span style="color: #ff0000;"><strong>如果我自己使用了新版PMA,并且我有空做这种事,我可能会提供兼容新版PMA的方法,在此之前,如果你先用了新版,如果它不兼容,请自行修改,如何修改,电子产品的说明书上都有说过:有请专业人士</strong></span></p>
<h1>修改方法:</h1>
<p>1, 将以下链接文本中的两段代码分别复制到 PMA 333指定的行尾,该行当前版本应为空行</p>

<p ><a href="http://moontoc.com/download/pmahack_change_field_order_function/pmahack.txt">Download</a> / pmahack.txt / 1.61 KB</p>

<p>2, success</p>
<h1><strong> 使用方法:</strong></h1>

<p><a href="http://moontoc.com/download/pmahack_change_field_order_function/1.png" title="单击查看"><img src="http://moontoc.com/download/pmahack_change_field_order_function/1.png" alt="单击查看" /></a></p>


<p><a href="http://moontoc.com/download/pmahack_change_field_order_function/2.png" title="单击查看"><img src="http://moontoc.com/download/pmahack_change_field_order_function/2.png" alt="单击查看" /></a></p>

<p>5, 点不点保存别问我</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/pma-hack-add-change-field-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>QQ2009 第一个非官方皮肤</title>
		<link>http://moontoc.com/blog/qq2009-first-unofficial-theme/</link>
		<comments>http://moontoc.com/blog/qq2009-first-unofficial-theme/#comments</comments>
		<pubDate>Thu, 16 Apr 2009 09:25:20 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[Lab]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=62</guid>
		<description><![CDATA[标题很光辉吧!! 我是标题党!! 其实我也不算标题党的, 因为我的确是发布QQ2009非官方皮肤主题第一人 首先我首发的这个并不是网上流传已久的修改QQ2009自带文件的修改玩法,而是像QQ2009以前的那种自制皮肤, 独立文件包, 不需要修改QQ自身 说下使用前提, 前提就是你要用QQ2009, 废话对吗? 绝对不是! QQ2009到底有多少个版本了你知道吗-_-!! 这里的要求是QQ2009正式版, 几天前刚刚放出来的, 现在还是QQVip优先体验版, 更新:刚刚已经正式发布了,不需要会员权限-_ 下载之后,你要做的就是双击-_-, 演示: 对于使用者的介绍到此为止, 接下来发布QQ2009皮肤制作第一个教程, 连官方都没出呢-___- QQ2009的主题制作很简单, 首先你需要一个CAB打包工具, 我想XP可以胜任, 具体如何打包不在本文讨论范围, 菜鸟问题请去电脑之家, 驱动之家, PC之家等等家里研究... 接着, 你需要一个编辑器, 我想记事本可以胜任-_-,别再问我怎么用了-_ 再然后,你需要QQ2009正式版,接下来,你可以打开QQ系统设置,在皮肤设置里,已经有两个皮肤可选,一个默认,也就是完全塞进QQ资源文件只能拆解修改的版本,立个另外一个是需要下载的个性海滩皮肤,当你点它之后,会要你下载,它会存放在 系统盘:\Documents and Settings\你的当前用户名\Application Data\Tencent\QQ\Themes\Download,是一个扩展名为kipx的文件, 它是一个cab的包,解压方法自己考虑 下面开始列表讲解:其中有一个themeconfig.xml是必需品,打开它,怎么打开我不说了,之后也不再说类似问题了-_- &#60;theme-config PackPreview="这是显示在皮肤管理中的皮肤图标,默认preview.jpg" &#8230; <a href="http://moontoc.com/blog/qq2009-first-unofficial-theme/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>标题很光辉吧!! 我是标题党!!</p>
<p>其实我也不算标题党的, 因为我的确是发布QQ2009非官方皮肤主题第一人</p>
<p>首先我首发的这个并不是网上流传已久的修改QQ2009自带文件的修改玩法,而是像QQ2009以前的那种自制皮肤, 独立文件包, 不需要修改QQ自身</p>
<p>说下使用前提, 前提就是你要用QQ2009, 废话对吗? 绝对不是! QQ2009到底有多少个版本了你知道吗-_-!!  这里的要求是QQ2009正式版, 几天前刚刚放出来的, 现在还是QQVip优先体验版, <strong>更新:刚刚已经正式发布了,不需要会员权限-_</strong></p>
<p>下载之后,你要做的就是双击-_-,</p>
<p>演示:<br />

<p><a href="http://moontoc.com/download/qq2009themes/mc1.png" title="单击查看"><img src="http://moontoc.com/download/qq2009themes/mc1.png" alt="单击查看" /></a></p>
<br />

<p><a href="http://moontoc.com/download/qq2009themes/mc2.png" title="单击查看"><img src="http://moontoc.com/download/qq2009themes/mc2.png" alt="单击查看" /></a></p>
</p>
<p>对于使用者的介绍到此为止, 接下来发布QQ2009皮肤制作第一个教程, 连官方都没出呢-___-</p>
<p>QQ2009的主题制作很简单, 首先你需要一个CAB打包工具, 我想XP可以胜任, 具体如何打包不在本文讨论范围, 菜鸟问题请去电脑之家, 驱动之家, PC之家等等家里研究...</p>
<p>接着, 你需要一个编辑器, 我想记事本可以胜任-_-,别再问我怎么用了-_</p>
<p>再然后,你需要QQ2009正式版,接下来,你可以打开QQ系统设置,在皮肤设置里,已经有两个皮肤可选,一个默认,也就是完全塞进QQ资源文件只能拆解修改的版本,立个另外一个是需要下载的个性海滩皮肤,当你点它之后,会要你下载,它会存放在<br />
系统盘:\Documents and Settings\你的当前用户名\Application Data\Tencent\QQ\Themes\Download,是一个扩展名为kipx的文件,</p>
<p>它是一个cab的包,解压方法自己考虑</p>
<p>下面开始列表讲解:其中有一个themeconfig.xml是必需品,打开它,怎么打开我不说了,之后也不再说类似问题了-_-</p>
<p><code><br />
&lt;theme-config PackPreview="这是显示在皮肤管理中的皮肤图标,默认preview.jpg" PackName="皮肤名称" PackMinVer="1695" PackVersion="1.0" PackID="皮肤ID,用来识别,默认是什么不重要,写上一串6位HEX范围的数字就好,比如B5AE1A"&gt;	&lt;extcontrol&gt;		&lt;adjustcolor enable="false"/&gt;<br />
&lt;/extcontrol&gt;<br />
&lt;titlecontrol&gt;<br />
&lt;titlevisible enable="false"/&gt;<br />
&lt;/titlecontrol&gt;<br />
&lt;colorlist&gt;<br />
&lt;color value="63599e"/&gt;<br />
加上上面下面这两个,一共可以定义8个颜色,这是qq2009皮肤的功能,让皮肤作者指定8个不同皮肤色调,显示在调色栏<br />
&lt;color value="526f9f"/&gt;<br />
&lt;/colorlist&gt;<br />
&lt;backgroundlist&gt;<br />
&lt;background preview="底纹的预览图标,png图片" maintopfile="QQ主面板上方底纹,png图片" mainbottomfile="QQ主面板下面的底纹,png图片" chattopfile="聊天窗口上方底纹,png图片" color="指定该底纹颜色"/&gt;<br />
加上上下两个,一共可以显示9个皮肤底纹,<br />
&lt;background preview="bg_preview_x.png" maintopfile="main_up_empty.png" mainbottomfile="main_down_x.png" chattopfile="aio_up_empty.png" color="63599e"/&gt;<br />
&lt;/backgroundlist&gt;<br />
&lt;configlist&gt;<br />
&lt;themeconfig file="main.png" anchor="topright" position="0" offset="-2,-14"/&gt;这是QQ主面板上方的主纹理,上面的底纹部分,其实是显示在这个主底纹的上层<br />
&lt;themeconfig file="aio.png" anchor="topright" position="1" offset="-2,0"/&gt;这是QQ聊天窗口上面的主底纹,概念同上<br />
&lt;/configlist&gt;<br />
&lt;/theme-config&gt;<br />
</code></p>
<p>我想这个讲解可以给部分想做QQ皮肤的人以帮助,至于想自制皮肤的电脑白痴,这里没办法再出一份30万字的傻瓜教程了,等有缘人出吧-_-</p>

<p ><a href="http://moontoc.com/download/qq2009themes/qq2009-themes.7z">Download</a> / qq2009-themes.7z / 264 KB</p>

<p>包里一个MC.kipx是我做的皮肤,一个A752E7.kipx是官方版,研究一下图片对应的位置和xml里的书写就能明白怎么做QQ2009皮肤了,还是很简单的</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/qq2009-first-unofficial-theme/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress Cookies Expires</title>
		<link>http://moontoc.com/blog/wordpress-cookies-expires/</link>
		<comments>http://moontoc.com/blog/wordpress-cookies-expires/#comments</comments>
		<pubDate>Mon, 02 Mar 2009 12:27:36 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=57</guid>
		<description><![CDATA[WordPress 有个特点, 饼干保质期(我在假扮自动翻译软件)很短很短, 最短 两天 最长 两周 本来就没多大一件事, 多余的话不多说了, 以 2.7.1 为例 wp-includes/pluggable.php:623 if ( $remember ) { $expiration = $expire = time() + 1209600; 修改最后结尾的数字为你需要的,这里1209600是14天*24小时*60分*60秒 你可以考虑180*24*60*60,或者360*24*60*60,或者874!]]></description>
			<content:encoded><![CDATA[<p>WordPress 有个特点, 饼干保质期(我在假扮自动翻译软件)很短很短, 最短 两天 最长 两周</p>
<p>本来就没多大一件事, 多余的话不多说了,</p>
<p>以 2.7.1 为例</p>
<p>wp-includes/pluggable.php:623</p>
<p><code>	if ( $remember ) {<br />
		$expiration = $expire = time() + 1209600;</code></p>
<p>修改最后结尾的数字为你需要的,这里1209600是14天*24小时*60分*60秒</p>
<p>你可以考虑180*24*60*60,或者360*24*60*60,或者874!</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/wordpress-cookies-expires/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordPress Administration Panels Lite</title>
		<link>http://moontoc.com/blog/wordpress-administration-panels-lite/</link>
		<comments>http://moontoc.com/blog/wordpress-administration-panels-lite/#comments</comments>
		<pubDate>Sun, 11 May 2008 04:32:00 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=40</guid>
		<description><![CDATA[当前版本: 1.4 更新记录和下载地址在最下面 嗯,这是个无聊插件, 确切的说, 它不过是我写的一个wp插件的框架模板, 用于填充, 作它纯粹为了设计一个良好的扩展模板, 比如说它只需要一个数组来保存, 为了整洁的数据库我希望所有插件都这样作-_-, 但是没几个人这么好心的, 大多数都会写成满数据库都是它的同个插件数据, 哪怕卸载了仍然如此-_- 那来说下这个插件吧, 你用IE进后台是不是会看到右下角有个让你觉得诈一看还算长的能看下去, 点了之后发现它很龌龊的东西, 对对, 就是它-_- 这个插件的第一个功能就是它, 接下来是一些特定人群专用东西, 比如我从不用tag, 所以管理文章的页面不需要显示一个全空白的tag栏目, 另外某些blog是完全不需要有人回复的, 所以tb和评论全关的blog自然也不需要在管理文章和管理页面的面板上显示评论数量 另外一些偏执到分类都不需要的人也可以隐藏掉分类-_- 另外还有个我估计大多数人用的着的, 不显示作者栏, 还是说后台那个管理文章和管理页面两个面板上的纵列啊, 这插件你看名字就知道和前台半点关系都没的 最后还有个功能是关掉后台首页的那些widget, 想关哪个都是单独的 其实都些小功能, 如果你有其他需求, 可以回帖, 这个是AP Lite, 只会加入新的删除wp原有功能的功能, 而且是针对wp后台的, 稍后还会有AP Plus, &#8230; <a href="http://moontoc.com/blog/wordpress-administration-panels-lite/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong><span style="color: #ff6600;">当前版本: 1.4</span></strong> 更新记录和下载地址在最下面</p>
<p>嗯,这是个无聊插件, 确切的说, 它不过是我写的一个wp插件的框架模板, 用于填充, 作它纯粹为了设计一个良好的扩展模板, 比如说它只需要一个数组来保存, 为了整洁的数据库我希望所有插件都这样作-_-, 但是没几个人这么好心的, 大多数都会写成满数据库都是它的同个插件数据, 哪怕卸载了仍然如此-_-</p>
<p>那来说下这个插件吧, 你用IE进后台是不是会看到右下角有个让你觉得诈一看还算长的能看下去, 点了之后发现它很龌龊的东西, 对对, 就是它-_-</p>
<p>这个插件的第一个功能就是它,</p>
<p>接下来是一些特定人群专用东西, 比如我从不用tag, 所以管理文章的页面不需要显示一个全空白的tag栏目, 另外某些blog是完全不需要有人回复的, 所以tb和评论全关的blog自然也不需要在管理文章和管理页面的面板上显示评论数量</p>
<p>另外一些偏执到分类都不需要的人也可以隐藏掉分类-_-</p>
<p>另外还有个我估计大多数人用的着的, 不显示作者栏, 还是说后台那个管理文章和管理页面两个面板上的纵列啊, 这插件你看名字就知道和前台半点关系都没的</p>
<p>最后还有个功能是关掉后台首页的那些widget, 想关哪个都是单独的</p>
<p>其实都些小功能, 如果你有其他需求, 可以回帖, 这个是AP Lite, 只会加入新的删除wp原有功能的功能, 而且是针对wp后台的, 稍后还会有AP Plus, 是专门添加各种wp没有的部分</p>
<p>PS:只支持2.5+</p>
<p>更新记录:<br />
<span id="more-40"></span><br />
1.0 -- 2008.05.11</p>
<blockquote><p>首发,这必然</p></blockquote>
<p>1.1 -- 2008.05.17</p>
<blockquote><p>更新内部机制, 完善内部结构,<br />
安装和删除都在激活和反激活插件时直接进行,<br />
添加选项更新时的提示信息,<br />
未添加或删除任何功能, 也没有修复任何bug, 太简单的插件哪来bug-_-,<br />
除了打算用本插件作为wp插件研究之用的话, 基本没必要下载</p></blockquote>
<p>1.2 -- 2008.05.17</p>
<blockquote><p>继续更新内部结构, 加强对本地化的支持, 虽然功能还非常少, 本地化意义不大<br />
+ 编写文章/页面时, 标签栏的可选显示选项</p></blockquote>
<p>1.3 -- 2008.05.18</p>
<blockquote><p>继续维护内部结构, 改动显示文本<br />
+ 编写文章/页面时, Excerpt, Trackbacks, Custom Fields栏的可选显示选项</p></blockquote>
<p>1.4 -- 2008.07.26</p>
<blockquote><p>跟进wp2.6<br />
+ 隐藏文章/页面编辑页面的所有框框...(应S变态的要求..)<br />
+ 隐藏管理链接页面的Categories,rel,Visible三栏的选项<br />
+ 隐藏编辑/添加链接页面的Categories,Target,XFN,Advanced四栏的选项</p></blockquote>

<p ><a href="http://moontoc.com/download/WordPress/ap-.7z">Download</a> / ap-.7z / 3.00 KB</p>

]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/wordpress-administration-panels-lite/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>WordPress vs CMS</title>
		<link>http://moontoc.com/blog/wordpress-vs-cms/</link>
		<comments>http://moontoc.com/blog/wordpress-vs-cms/#comments</comments>
		<pubDate>Wed, 07 May 2008 23:30:42 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=39</guid>
		<description><![CDATA[简单说这是一篇WP杂文, 闲聊下WP作为CMS的潜质 我想很多人都考虑过像我这样把WP作为整站程序, 这时候有几个问题让我很闹心 WP的定制性能, 这基本上对于blog来说它已经超越了, 但是对于网站的统一风格来说, 它的性能很弱了, 听我给你娓娓道来一下-_- WP的前台的地址大部分来说都很随意, 没有什么限制, 没有什么章法, 比如你想访问一篇文章, 那么直接访问index可以做到, 如果打开了rewrite, 你可以用/分类/文章名/ 或者 /日期/文章名/ 或者 /文章名/ 等等各种玩法, 几乎什么地址变动都不被WP限制, 而即便2.3开始WP可以记录旧的文章名slug, 并记录在数据库中, 如果遇到会自动跳转, 但是这仅仅是救活了一批死链而已 对于随意的 WP 地址, 导致了一个WP建立起来的网站SEO问题很严重, 一个网站的重复内容太多, 即便你的地址可以限制, 但你网站改了文章位置, 而在其他站上的你的反向链接并没有更改, 而WP无论什么样都能显示东西, 根本不会自动跳转, 比如你给文章换成了分类/文章名,而之前你是用日期的, 这时搜索引擎可以正常访问到它, 而并不会被跳转, 而我觉得最基础的方法就是你既然找到了真正的文章内容, &#8230; <a href="http://moontoc.com/blog/wordpress-vs-cms/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>简单说这是一篇WP杂文, 闲聊下WP作为CMS的潜质</p>
<p>我想很多人都考虑过像我这样把WP作为整站程序, 这时候有几个问题让我很闹心</p>
<p>WP的定制性能, 这基本上对于blog来说它已经超越了, 但是对于网站的统一风格来说, 它的性能很弱了, 听我给你娓娓道来一下-_-</p>
<p><span id="more-39"></span></p>
<p>WP的前台的地址大部分来说都很随意, 没有什么限制, 没有什么章法,</p>
<p>比如你想访问一篇文章, 那么直接访问index可以做到, 如果打开了rewrite, 你可以用/分类/文章名/ 或者 /日期/文章名/ 或者 /文章名/ 等等各种玩法, 几乎什么地址变动都不被WP限制, 而即便2.3开始WP可以记录旧的文章名slug, 并记录在数据库中, 如果遇到会自动跳转, 但是这仅仅是救活了一批死链而已</p>
<p>对于随意的 WP 地址, 导致了一个WP建立起来的网站SEO问题很严重, 一个网站的重复内容太多, 即便你的地址可以限制, 但你网站改了文章位置, 而在其他站上的你的反向链接并没有更改, 而WP无论什么样都能显示东西, 根本不会自动跳转, 比如你给文章换成了分类/文章名,而之前你是用日期的, 这时搜索引擎可以正常访问到它, 而并不会被跳转, 而我觉得最基础的方法就是你既然找到了真正的文章内容, 并确定是它, 就应该把它再一次的引导用户或SE到它唯一的或者说被限制好的地址</p>
<p>当然说了这么多, 其实这点上它还是有办法定制的, 毕竟WP的成功就是它的插件功劳, 在WP上写插件定制它是一件很轻松的事情, 当然不会事事尽如人意, 所以下面要说的话和这里有了极端的冲突...</p>
<p>大家用WP的话, 都会发现WP对于注册和登录, 与其他功能都不同, 应该说很特殊, 当然也许它们是在安全和可用性方面来作的这种考虑, 但我觉得对于界面表现, 完全没理由影响到安全</p>
<p>首先注册,登录,登出3个功能不再是WP一贯的前台地址风格, 而是直接使用wp-login.php, 还有个很多余的wp-register.php, 我几乎找不到它的存在意义, 既然WP对rewrite那么钟情, 为什么这些基础功能比如让人看到wp字样, 其实CMS表现的优秀, 一方面就是要和网站整体融合, 做到忍者一样的隐藏自己气息, 让人觉得它就是这个网站, 而不是这个网站用了WP建了CMS, 在这点上, 还好,我们可以绕很多的圈, 甚至直接修改.htaccess来作到一部分功能, 但是没办法, 我们要的是全部</p>
<p>那么全部是什么呢, WP所有的页面几乎都是可以定制的, 却有个功能介于前台和后台之间, 那就是注册/登录以及用户的个人信息修改, 这点上我很难理解</p>
<p>为什么属于前台功能的登录不被定制, 而且是完全一个php解决, 插件完全触及不到它, 这让我很恼火, 如果我希望它作到我要的风格统一, 我必须主动修改它, 而还有一个更可恶的部分, 那就是用户的个人信息修改, 完全依赖后台功能, 多作一份你会死啊?</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/wordpress-vs-cms/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WordPress的Feed</title>
		<link>http://moontoc.com/blog/wordpress-feed/</link>
		<comments>http://moontoc.com/blog/wordpress-feed/#comments</comments>
		<pubDate>Sun, 04 May 2008 23:58:56 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/?p=38</guid>
		<description><![CDATA[本篇文章并不是用来介绍WP的Feed的新手教程,更不会是歌颂WP的优秀功能,而是批判WP对Feed的近乎可憎的'优秀'易用程度 简单的说,WP用户都多少会发现WP的Feed遍布任何角落,附件,文章,页面,分类,链接分类,标签,每个东西都有一个Feed,而我并不希望它存在,确切的说,它很让我反感,因为无论你希望用户订阅你哪一个固定的Feed,你都没办法阻止,你都没办法统计到底有多少用户订阅了哪些不该订阅的,在统计外的Feed,这很讨厌,所以我决定砍死它,结果发现砍死它的结果无论你希望砍死哪一只,你都会让它全军覆没,从此不再提供Feed功能给你 WP对Feed的支持真的是够彻底,而且彻底到让我恨它,因为我没有任何办法定制它,首先说如果你希望打开一个WPblog的Feed有这样几个办法 /post&#124;page&#124;cat&#124;tag&#124;att&#124;/feed/ /post&#124;page&#124;cat&#124;tag&#124;att&#124;/feed/feed&#124;rdf&#124;rss&#124;rss2&#124;atom/ /wp-commentsrss2.php /wp-atom.php /wp-feed.php /wp-rss.php /wp-rss2.php /wp-rdf.php 当然还有最重要的,/index.php?********&#38;feed= 最后这个可以让你在任何单个feed文件被删除,rewrite被屏蔽或破坏的情况下,任意的显示你想要的feed 然后我考虑一件事,如何迫使用户订阅我希望的Feed?! 之后我尝试过了,最后发现我尝试了一个没可能性的方向.. WP对Feed请求的处理过程是由rewrite.php匹配最后决定要输出什么内容的,我想文章看到这里,除了第一天用WP的都知道/任意内容/feed/可以显示一个feed内容,而这个feed四个字母,是WP内定的,不允许更改,它是$WP_Rewrite-&#62;$feed_base, 唯一的定制方式是在插件中载入$WP_Rewrite来修改它, 而对于分类,你却可以在后台随意定制, 但即便你载入了$WP_Rewrite, 并且修改了它, 但你还需要让这份新规则被添加到数据库中-_-, 必须先清空数据库里的规则才能生效 接着, 即便把/post/feed/feed灭了,/post/rss&#124;rss2&#124;rdf&#124;feed/都可以完好的显示, 原来还有个$WP_Rewrite-&#62;feeds, 最后我真的败了, 我发现即便我改了这些, 最终, 用户是可以用index.php访问一切的... 完全没有任何定制可言, 我真的很无奈, 最终, 我选择从核心破坏feed, 让所有人都看不到它, 而不是改变成我想要的路径或结构, 然后选择一个白名单来输出feed内容, 再交给我自己的程序来选择性的输出特定的feed给用户 接下来的事情就是让用户来考虑是否订阅这个网站的新feed地址了 Update: 2008.05.06 &#8230; <a href="http://moontoc.com/blog/wordpress-feed/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>本篇文章并不是用来介绍WP的Feed的新手教程,更不会是歌颂WP的优秀功能,而是批判WP对Feed的近乎可憎的'优秀'易用程度</p>
<p>简单的说,WP用户都多少会发现WP的Feed遍布任何角落,附件,文章,页面,分类,链接分类,标签,每个东西都有一个Feed,而我并不希望它存在,确切的说,它很让我反感,因为无论你希望用户订阅你哪一个固定的Feed,你都没办法阻止,你都没办法统计到底有多少用户订阅了哪些不该订阅的,在统计外的Feed,这很讨厌,所以我决定砍死它,结果发现砍死它的结果无论你希望砍死哪一只,你都会让它全军覆没,从此不再提供Feed功能给你</p>
<p><span id="more-38"></span></p>
<p>WP对Feed的支持真的是够彻底,而且彻底到让我恨它,因为我没有任何办法定制它,首先说如果你希望打开一个WPblog的Feed有这样几个办法</p>
<p>/post|page|cat|tag|att|/feed/<br />
/post|page|cat|tag|att|/feed/feed|rdf|rss|rss2|atom/<br />
/wp-commentsrss2.php<br />
/wp-atom.php<br />
/wp-feed.php<br />
/wp-rss.php<br />
/wp-rss2.php<br />
/wp-rdf.php<br />
当然还有最重要的,/index.php?********&amp;feed=<br />
最后这个可以让你在任何单个feed文件被删除,rewrite被屏蔽或破坏的情况下,任意的显示你想要的feed</p>
<p>然后我考虑一件事,如何迫使用户订阅我希望的Feed?!</p>
<p>之后我尝试过了,最后发现我尝试了一个没可能性的方向..</p>
<p>WP对Feed请求的处理过程是由rewrite.php匹配最后决定要输出什么内容的,我想文章看到这里,除了第一天用WP的都知道/任意内容/feed/可以显示一个feed内容,而这个feed四个字母,是WP内定的,不允许更改,它是$WP_Rewrite-&gt;$feed_base, 唯一的定制方式是在插件中载入$WP_Rewrite来修改它, 而对于分类,你却可以在后台随意定制, 但即便你载入了$WP_Rewrite, 并且修改了它, 但你还需要让这份新规则被添加到数据库中-_-, 必须先清空数据库里的规则才能生效</p>
<p>接着, 即便把/post/feed/feed灭了,/post/rss|rss2|rdf|feed/都可以完好的显示, 原来还有个$WP_Rewrite-&gt;feeds, 最后我真的败了, 我发现即便我改了这些, 最终, 用户是可以用index.php访问一切的...</p>
<p>完全没有任何定制可言, 我真的很无奈, 最终, 我选择从核心破坏feed, 让所有人都看不到它, 而不是改变成我想要的路径或结构, 然后选择一个白名单来输出feed内容, 再交给我自己的程序来选择性的输出特定的feed给用户</p>
<p>接下来的事情就是让用户来考虑是否订阅这个网站的新feed地址了</p>
<p>Update: 2008.05.06</p>
<p>也许的确是我要求太苛刻了, WP提供了generate_rewrite_rules和一个rewrite_rules_array</p>
<p>前一个用于用户自己添加新的URL地址规则,第二个用于定制现有规则,但由于定制好的规则是一个大面积的数组,而这个东西我觉得更应该提供一个片段的修改能力,所以一直没碰它, 今天尝试了处理它, 最后把自己搞烦了, 把大把的规则自己重写, 还不如全删-_-, 但无论如何, 最终我都无法阻止index.php直接访问到feed, 所以还是放弃了这个玩法, 转而从feed的模板载入这个阶段添加filter, 限制来访的人, 除了特定ip/ua之外, 都被跳转到特定地址</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/wordpress-feed/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Convert Movable Type Basename and Tags to WordPress</title>
		<link>http://moontoc.com/blog/convert-movable-type-basename-and-tags-to-wordpress/</link>
		<comments>http://moontoc.com/blog/convert-movable-type-basename-and-tags-to-wordpress/#comments</comments>
		<pubDate>Wed, 02 Jan 2008 13:49:36 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/blog/convert-movable-type-33x-and-40x-to-wordpress-23x/</guid>
		<description><![CDATA[因为和blog有关,也和我用的wp有关, 所以这篇写出来最后决定塞进blog里, 虽然我不太喜欢在blog里讲技术上的事, 规矩就是拿来破例的... 其实这是个很遗憾的话题,MT是非常优秀的程序,但CGI的效率是可怕的,MT的效率是可怕的,综合起来就一个结果,空间商是可怕的,所以我想被迫从MT转WP的人并不会只有我的两个朋友而已... 切入主题,实际上wp有mt的导入程序,mt有导出程序,看起来很简单,但是MT3的导出并不输出文件名和TAGS,而WP继承了这点,WP的导入程序并不考虑MT的文件名和TAGS,所以才有了这篇文章,只为能帮上一点小忙... MT4.0开始,导出程序已经开始正常导出文件名和TAGS了,所以这里不再考虑它的自身问题,让它安心导出就可以,而MT3.3.x是我用的开始用MT的时候,此时的MT虽然有TAGS功能,但并不能正常导出,所以需要替换文件 我在提供的文件中提供了3.3.x通用的ImportExport.pm, 用于替换你的lib\MT\ImportExport.pm 我想你这么聪明一定知道它在哪对吧,MT4.0以上不需要替换任何文件,可以直接导出,接下来是WP的改造部分: wp方面我提供了mt.php, 你需要把它替换下你的wp-admin/import/mt.php, 我仅提供了2.5.0版本的mt.php, 2.5.0开始, WP居然混淆视听的想用MT导出的文章关键字当作tags导入, 这真是没话说, 骗人水平很烂, 而且很弱智, 也很懒, 其实MT的tags变成wp的, 没几行代码, 但是wp官方如此之xx真是.. 至此,修改就结束了,之后你可以正常的导出MT内容到WP正常导入了 另外要说的是, 其实本文最初提供了2.3的导入修改, 但我觉得既然要换程序, 自然是选最新的不是吗, 而且2.5版开始, wp对tags的支持变的好了很多, 至少可以列出所有tags让你编辑了... 有一点要说的,就是WP其实很弱智的,特别是它的优秀编辑器,变态到无语,如果不是你的MT被spam打击到无语请不要转到使用上很无奈的WP来 另外对于喜欢写列表流的超过500行还不肯结尾的列表项目,WP很难适应的,恐怕会输出空白内容,原因未知,MT转WP请四思!!]]></description>
			<content:encoded><![CDATA[<p>因为和blog有关,也和我用的wp有关, 所以这篇写出来最后决定塞进blog里, 虽然我不太喜欢在blog里讲技术上的事, 规矩就是拿来破例的...</p>
<p>其实这是个很遗憾的话题,MT是非常优秀的程序,但CGI的效率是可怕的,MT的效率是可怕的,综合起来就一个结果,空间商是可怕的,所以我想被迫从MT转WP的人并不会只有我的两个朋友而已...</p>
<p>切入主题,实际上wp有mt的导入程序,mt有导出程序,看起来很简单,但是MT3的导出并不输出文件名和TAGS,而WP继承了这点,WP的导入程序并不考虑MT的文件名和TAGS,所以才有了这篇文章,只为能帮上一点小忙...</p>
<p><span id="more-23"></span></p>
<p>MT4.0开始,导出程序已经开始正常导出文件名和TAGS了,所以这里不再考虑它的自身问题,让它安心导出就可以,而MT3.3.x是我用的开始用MT的时候,此时的MT虽然有TAGS功能,但并不能正常导出,所以需要替换文件</p>
<p>我在提供的文件中提供了3.3.x通用的<strong>ImportExport.pm</strong>, 用于替换你的<strong>lib\MT\ImportExport.pm</strong></p>
<p>我想你这么聪明一定知道它在哪对吧,MT4.0以上不需要替换任何文件,可以直接导出,接下来是WP的改造部分:</p>
<p>wp方面我提供了mt.php, 你需要把它替换下你的<strong>wp-admin/import/mt.php</strong>, 我仅提供了2.5.0版本的mt.php, 2.5.0开始, WP居然混淆视听的想用MT导出的文章关键字当作tags导入, 这真是没话说, 骗人水平很烂, 而且很弱智, 也很懒, 其实MT的tags变成wp的, 没几行代码, 但是wp官方如此之xx真是..</p>
<p>至此,修改就结束了,之后你可以正常的导出MT内容到WP正常导入了</p>
<p>另外要说的是, 其实本文最初提供了2.3的导入修改, 但我觉得既然要换程序, 自然是选最新的不是吗, 而且2.5版开始, wp对tags的支持变的好了很多, 至少可以列出所有tags让你编辑了...</p>
<p>有一点要说的,就是WP其实很弱智的,特别是它的优秀编辑器,变态到无语,如果不是你的MT被spam打击到无语请不要转到使用上很无奈的WP来</p>
<p>另外对于喜欢写列表流的超过500行还不肯结尾的列表项目,WP很难适应的,恐怕会输出空白内容,原因未知,MT转WP请四思!!</p>

<p ><a href="http://moontoc.com/download/WordPress/mt2wp.7z">Download</a> / mt2wp.7z / 9.81 KB</p>

]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/convert-movable-type-basename-and-tags-to-wordpress/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>You do not have sufficient permissions to access this page.</title>
		<link>http://moontoc.com/blog/you-do-not-have-sufficient-permissions-to-access-this-page/</link>
		<comments>http://moontoc.com/blog/you-do-not-have-sufficient-permissions-to-access-this-page/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 12:34:58 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://moontoc.com/blog/you-do-not-have-sufficient-permissions-to-access-this-page/</guid>
		<description><![CDATA[想看到这个提示很简单 方法如下: 默认的wordpress的数据库表前缀是wp_ 你的也可能是把wp-config.php里的wp_改成其他,比如blog_吧 然后,手动把wp的10个表的前缀都改成cc_, 并且把wp-config.php中的也改成cc_ 嗯,不错吧,你现在进后台就可以看到标题里那句很酷的话了! 照理说, 所有的内容都对上号了, 为什么会这样呢? 因为没有用户权限,为啥? 看下面... 哦,忘记说了,以上方法只是为了还原问题, 所造成的进不去后台问题本人概不负责! 应观众朋友们的热烈要求(虚构), 本人决定不仅提供实现方法, 并决定附送修复办法 我觉得大概wp希望一个库+多个前缀的同一份数据库可以用来共享给很多份wp, 比如WPMU, 但是貌似wp大多数人用不上这个功能, 所以它变成了多余的事情, 当然, 也许你希望把wp和其他什么论坛之类的整合, 那样的话另当别论, 它会变成一个有意义的功能, 因为wp允许指定 两个用户相关表名, 嗯, 在 wp-config 中, 它们的名字是CUSTOM_USER_TABLE 和 CUSTOM_USER_META_TABLE, 如果你有兴趣这么作的话, 也许该去官方逛逛文档 这个问题的出现,很简单,wp很有智慧(同样可理解为缺智慧),当建立wp新数据库时,它会生成所有的选项的默认数据,其中就包括用户的等级数据,比如13是管理员,这个东西是在数据库的 前缀_options 里, option_name &#8230; <a href="http://moontoc.com/blog/you-do-not-have-sufficient-permissions-to-access-this-page/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>想看到这个提示很简单</p>
<p>方法如下:</p>
<p>默认的wordpress的数据库表前缀是wp_</p>
<p>你的也可能是把wp-config.php里的wp_改成其他,比如blog_吧</p>
<p>然后,手动把wp的10个表的前缀都改成cc_, 并且把wp-config.php中的也改成cc_</p>
<p>嗯,不错吧,你现在进后台就可以看到标题里那句很酷的话了!</p>
<p>照理说, 所有的内容都对上号了, 为什么会这样呢? 因为没有用户权限,为啥? 看下面...</p>
<p>哦,忘记说了,以上方法只是为了还原问题, 所造成的进不去后台问题本人概不负责!</p>
<p>应观众朋友们的热烈要求(虚构), 本人决定不仅提供实现方法, 并决定附送修复办法</p>
<p><span id="more-17"></span></p>
<p>我觉得大概wp希望一个库+多个前缀的同一份数据库可以用来共享给很多份wp, 比如WPMU, 但是貌似wp大多数人用不上这个功能, 所以它变成了多余的事情, 当然, 也许你希望把wp和其他什么论坛之类的整合, 那样的话另当别论, 它会变成一个有意义的功能, 因为wp允许指定 两个用户相关表名, 嗯, 在 wp-config 中, 它们的名字是CUSTOM_USER_TABLE 和 CUSTOM_USER_META_TABLE, 如果你有兴趣这么作的话, 也许该去官方逛逛文档</p>
<p>这个问题的出现,很简单,wp很有智慧(同样可理解为缺智慧),当建立wp新数据库时,它会生成所有的选项的默认数据,其中就包括用户的等级数据,比如13是管理员,这个东西是在数据库的 <strong>前缀_options</strong> 里, <strong>option_name </strong>字段名叫做 <strong>前缀_user_roles</strong> 的选项, 你需要把这个前缀也修改成和你的wp-config中一致的前缀才可以</p>
<p>另外它还会在 <strong>前缀_usermeta</strong> <strong>表</strong>中,把配置用户等级的部分,也加上前缀,在 <strong>前缀_usermeta</strong> 中,每个用户至少要占至少4行内容, 每个选项的名字是在叫做<strong>meta_key</strong>的字段中的, 包括nickname,rich_editing,<strong>前缀_capabilities</strong>,<strong>前缀_user_level</strong>, 2.5增加到了8行, 其中还包括了<strong>前缀_autosave_draft_ids</strong>, 这三个meta_key字段内容你都需要修改</p>
<p>没错,就像你看到的,如果你按照第一部分,还原了这个问题,那么你需要修改每个用户的至少两个前缀或2.5开始的三个字段内容, 另外别忘记前面提到的 <strong>前缀_options </strong>中字段名是 <strong>option_name </strong>的 <strong>前缀_user_roles</strong></p>
<p>PS2:请不要偷懒,把导出的数据库文件直接在文本编辑器里全部替换,你会后悔的!</p>
<p>嗯,实际上这个问题的出现只是因为我想修改数据库前缀,原来它的前缀会遍布在wp的角落里</p>
<p>PS3:如果你看到了某个php的输出警告,比如capabilities.php的31号出现循环参数错误,那么,,我想你需要一份正确的 <strong>前缀_user_roles</strong></p>
<p>为什么没有ps one?!</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/you-do-not-have-sufficient-permissions-to-access-this-page/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>SEO detail</title>
		<link>http://moontoc.com/blog/seo-detail/</link>
		<comments>http://moontoc.com/blog/seo-detail/#comments</comments>
		<pubDate>Mon, 27 Nov 2006 20:15:30 +0000</pubDate>
		<dc:creator>MoontoC</dc:creator>
				<category><![CDATA[Lab]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[最近发现SEO中有些东西满有趣,当然这并不表示我要作什么SEO站之类的,也没打算让我的内容非常少的网站做什么面向搜索引擎的优化,仅仅是一些细碎的关键词:细节\乐趣\吸引 有找过专门的软件和工具,以及一些测试方法,发现SEO还是满简单的一件事,其实如果网站够大,都是可以忽略的小细节罢了,而我喜欢细节的刻画 其实要说的事情很简单,通过对我自己网站的连接的测试以及内容的反复修改 我发现很多小细节容易被人忽视 这要归功于服务器端iis/apache等,因为他们把我们没有作的细节都补上了 看起来还没有进入主题,那么现在开始 1:隐含的自制301 像我网站首页上,有一个http://moontoc.com/music/, 我在html中写的是简单的href="music",但实际上,服务器端是把它当作根域下的一个名为music的文件来查找的,如果没有的情况下,服务器将生成一个301重定向,指向music/这个目录,而这时候搜索引擎是不吭声的,浏览器也不会,而只是自动转过去了,但这样的小细节,说来也没什么,只是多了一步罢了,搜索引擎不讨厌301,但发现这个细节后我把网站上的连接都重新定义了一次,将所有的目录指向都从 ** 改成了 **/ ,为什么要多一步呢?我不喜欢罢了,如果网速慢,来回跳转,将非常烦琐,其实这个细节并不对什么有影响的,如果你不在意,它就只是,废话, 2:消灭无关痛痒的404 这件事说简单真的很简单,那就是把被你遗忘的404了的东西补上 比如这两个: /robots.txt /favicon.ico robots.txt常被人遗忘,因为自己的网站几乎没有不希望人访问的内容,所以忽略它,但它会生成天文数字的404次数,因为每个搜索引擎都会先搜索它,当然,robots不存在并不会被google认为是一般的404而被认为是错误,因为它只是搜索引擎才需要的东西,如果你真的没东西不可以让人看,那么为什么不放一个空的robots.txt给你的网站,而让它输出几k的404页面来占用网络带宽呢 而favicon.ico则同样如此,也许大家都习惯了ie6对它的无敌支持,认为它可有可无,但现在ie7的出现将在未来的日子改变这一切,因为ie7不久将被纳入自动更新的行列,届时,ie/ff/sf/opera/mt等,应该说,到ie7普及的时候,那么世界上所有的浏览器都将先访问你的favicon.ico再访问页面,如果你的网站足够大,想像一下你的网站需要生成多少次404页面给浏览器,实际上这些页面404页面都是不输出给你看的,但它将被浏览器每次都重新读取并且保留下来来占用可怜的网络带宽 3: Http Status Code 的生成 作网站最初的时候,我也搞不清楚为什么404和403之外的http状态码有存在意义,并且从1.0保留到1.1,而且还增加了, 实际上所有的状态码对我们几乎都有用,但大部分都是给浏览器看的,我们很少看到,多数常能见到的集中在3**/4**,而5**,基本上是权限设置错误,或是服务器执行出错/服务器基本瘫痪了, 哦,跑题了,我想说的是如何生成对搜索引擎和用户浏览器都友好的状态提示, 举例说,比如你的文件被你删除了,你预设了404的页面来提示找不到它,是不是真的就了事了呢, 另外,当你的一个目录不希望被用户浏览,是不是403是最好的方式呢, 在google的管理员工具中,我发现网站上很多访问错误都是一些一年甚至两年前的已失效文件,这和很多网站以及google的帮助所说的,搜索引擎将停止索引这些内容的话并不一致,确切的说,google的爬行几乎是找茬的方式在进行的,一方面它说404,403等将不再索引,一方面又给我列出早在一两年前就停止的本身就不是正式位置的moontoc.com/bbs和/blog,而从头到现在,我的404,403的提示仅仅给用户有用,而对google的抓取根本停止不了, 404是找不到文件,这是我们都清楚的解释,而我查了http/1.1的标准文档,我发现404的解释里,语意很大程度上是在说管理员的失职,而不是用于提示用户文件被转移或删除了, 我最后决定对大型网站的类似事情作测试,RP够强又和google肯定完全无关的自然是MS,我发现在MS上采用的方式是先301再404的方式,这真的有些让人哑口无言,一方面301是永久转向,而404是给用户提示, MS让搜索引擎认为文件转向了,之后再404告诉用户文件不存在,而这个404的浏览器页面将给你详细的MS地图让你继续在MS的网站打转,而绝不希望你走出这个网站, 这样作之后,引擎对它的收录是这样的, 引擎先抓取到的是301,因为是301,所以它本身地址不被保留,而引擎会把它当作一个旧索引保留,它只是转向了,而之后再404,这个404的路径是301而来的,它有自己的新地址,因为它来自永久转向301,它不像直接生成的404是没有自己地址的,因为是301转来,所以它有自己的地址,而这错误的地址被保留下来并索引进数据库,重复几次之后,那么下次引擎到这里就不再继续抓取,因为这个404的地址是全站一致的,它早已进了引擎的数据库,以至于MS上完全没有失效文件... 如果上面的话,你看懂了,那么我想你应该知道怎么让自己的网站没有抓取错误,实际上正常情况下,我们不必要在意这样的混蛋细节,如果你的一个目录或文件真的放在了其他地方,请保留你的上一个目录,文件不需要存两份而是301统一转去就好,而如果你确定要删除某个文件,一种方式是你可以滑头的301转到类似网站地图或是类似连接,或者干脆410告诉所有用户或搜索引擎,你的文件不存在,而不是找不到 另外,我在MS上完全找不到403的迹象,其实这是非常好的做法,好的网站不需要403,你不需要人浏览的位置,可以设置一个index.html或301,不应该让用户认为你的网站上存在不能让它看的东西,google管理员工具里,我的所有403都被视为网络错误,这比404对搜索引擎的抓取影响更让人讨厌, 简单说,我短期内没想过作有盈利的网站,就算盈利,也不会是http://moontoc.com/以及它子域名的一切,但我相信无论盈利与非盈利或纯个人网站,你给用户和搜索引擎留一个好印象,它自然会给你一份回报,短期长期不好说,但至少,会的 UP &#8230; <a href="http://moontoc.com/blog/seo-detail/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>最近发现SEO中有些东西满有趣,当然这并不表示我要作什么SEO站之类的,也没打算让我的内容非常少的网站做什么面向搜索引擎的优化,仅仅是一些细碎的关键词:细节\乐趣\吸引</p>
<p>有找过专门的软件和工具,以及一些测试方法,发现SEO还是满简单的一件事,其实如果网站够大,都是可以忽略的小细节罢了,而我喜欢细节的刻画</p>
<p>其实要说的事情很简单,通过对我自己网站的连接的测试以及内容的反复修改</p>
<p>我发现很多小细节容易被人忽视</p>
<p>这要归功于服务器端iis/apache等,因为他们把我们没有作的细节都补上了</p>
<p>看起来还没有进入主题,那么现在开始</p>
<p><span id="more-11"></span></p>
<p>1:隐含的自制301</p>
<p>像我网站首页上,有一个<a href="http://moontoc.com/music/">http://moontoc.com/music/</a>, 我在html中写的是简单的href="music",但实际上,服务器端是把它当作根域下的一个名为music的文件来查找的,如果没有的情况下,服务器将生成一个301重定向,指向music/这个目录,而这时候搜索引擎是不吭声的,浏览器也不会,而只是自动转过去了,但这样的小细节,说来也没什么,只是多了一步罢了,搜索引擎不讨厌301,但发现这个细节后我把网站上的连接都重新定义了一次,将所有的目录指向都从 ** 改成了 **/ ,为什么要多一步呢?我不喜欢罢了,如果网速慢,来回跳转,将非常烦琐,其实这个细节并不对什么有影响的,如果你不在意,它就只是,废话,</p>
<p>2:消灭无关痛痒的404</p>
<p>这件事说简单真的很简单,那就是把被你遗忘的404了的东西补上</p>
<p>比如这两个:<br />
/robots.txt<br />
/favicon.ico</p>
<p>robots.txt常被人遗忘,因为自己的网站几乎没有不希望人访问的内容,所以忽略它,但它会生成天文数字的404次数,因为每个搜索引擎都会先搜索它,当然,robots不存在并不会被google认为是一般的404而被认为是错误,因为它只是搜索引擎才需要的东西,如果你真的没东西不可以让人看,那么为什么不放一个空的robots.txt给你的网站,而让它输出几k的404页面来占用网络带宽呢</p>
<p>而favicon.ico则同样如此,也许大家都习惯了ie6对它的无敌支持,认为它可有可无,但现在ie7的出现将在未来的日子改变这一切,因为ie7不久将被纳入自动更新的行列,届时,ie/ff/sf/opera/mt等,应该说,到ie7普及的时候,那么世界上所有的浏览器都将先访问你的favicon.ico再访问页面,如果你的网站足够大,想像一下你的网站需要生成多少次404页面给浏览器,实际上这些页面404页面都是不输出给你看的,但它将被浏览器每次都重新读取并且保留下来来占用可怜的网络带宽</p>
<p>3: Http Status Code 的生成</p>
<p>作网站最初的时候,我也搞不清楚为什么404和403之外的http状态码有存在意义,并且从1.0保留到1.1,而且还增加了,</p>
<p>实际上所有的状态码对我们几乎都有用,但大部分都是给浏览器看的,我们很少看到,多数常能见到的集中在3**/4**,而5**,基本上是权限设置错误,或是服务器执行出错/服务器基本瘫痪了,</p>
<p>哦,跑题了,我想说的是如何生成对搜索引擎和用户浏览器都友好的状态提示,</p>
<p>举例说,比如你的文件被你删除了,你预设了404的页面来提示找不到它,是不是真的就了事了呢,</p>
<p>另外,当你的一个目录不希望被用户浏览,是不是403是最好的方式呢,</p>
<p>在google的管理员工具中,我发现网站上很多访问错误都是一些一年甚至两年前的已失效文件,这和很多网站以及google的帮助所说的,搜索引擎将停止索引这些内容的话并不一致,确切的说,google的爬行几乎是找茬的方式在进行的,一方面它说404,403等将不再索引,一方面又给我列出早在一两年前就停止的本身就不是正式位置的moontoc.com/bbs和/blog,而从头到现在,我的404,403的提示仅仅给用户有用,而对google的抓取根本停止不了,</p>
<p>404是找不到文件,这是我们都清楚的解释,而我查了http/1.1的标准文档,我发现404的解释里,语意很大程度上是在说管理员的失职,而不是用于提示用户文件被转移或删除了,</p>
<p>我最后决定对大型网站的类似事情作测试,RP够强又和google肯定完全无关的自然是MS,我发现在MS上采用的方式是先301再404的方式,这真的有些让人哑口无言,一方面301是永久转向,而404是给用户提示,</p>
<p>MS让搜索引擎认为文件转向了,之后再404告诉用户文件不存在,而这个404的浏览器页面将给你详细的MS地图让你继续在MS的网站打转,而绝不希望你走出这个网站,</p>
<p>这样作之后,引擎对它的收录是这样的,<br />
引擎先抓取到的是301,因为是301,所以它本身地址不被保留,而引擎会把它当作一个旧索引保留,它只是转向了,而之后再404,这个404的路径是301而来的,它有自己的新地址,因为它来自永久转向301,它不像直接生成的404是没有自己地址的,因为是301转来,所以它有自己的地址,而这错误的地址被保留下来并索引进数据库,重复几次之后,那么下次引擎到这里就不再继续抓取,因为这个404的地址是全站一致的,它早已进了引擎的数据库,以至于MS上完全没有失效文件...</p>
<p>如果上面的话,你看懂了,那么我想你应该知道怎么让自己的网站没有抓取错误,实际上正常情况下,我们不必要在意这样的混蛋细节,如果你的一个目录或文件真的放在了其他地方,请保留你的上一个目录,文件不需要存两份而是301统一转去就好,而如果你确定要删除某个文件,一种方式是你可以滑头的301转到类似网站地图或是类似连接,或者干脆410告诉所有用户或搜索引擎,你的文件不存在,而不是找不到</p>
<p>另外,我在MS上完全找不到403的迹象,其实这是非常好的做法,好的网站不需要403,你不需要人浏览的位置,可以设置一个index.html或301,不应该让用户认为你的网站上存在不能让它看的东西,google管理员工具里,我的所有403都被视为网络错误,这比404对搜索引擎的抓取影响更让人讨厌,</p>
<p>简单说,我短期内没想过作有盈利的网站,就算盈利,也不会是<a href="http://moontoc.com/">http://moontoc.com/</a>以及它子域名的一切,但我相信无论盈利与非盈利或纯个人网站,你给用户和搜索引擎留一个好印象,它自然会给你一份回报,短期长期不好说,但至少,会的</p>
<p>UP 2006.12.9</p>
]]></content:encoded>
			<wfw:commentRss>http://moontoc.com/blog/seo-detail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

