<?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; Computer</title>
	<atom:link href="http://www.xmxsuperstar.com/archives/category/computer/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xmxsuperstar.com</link>
	<description>Just Another Thinking</description>
	<lastBuildDate>Sun, 04 Jul 2010 07:59:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>叫水协议</title>
		<link>http://www.xmxsuperstar.com/archives/537/%e5%8f%ab%e6%b0%b4%e5%8d%8f%e8%ae%ae.html</link>
		<comments>http://www.xmxsuperstar.com/archives/537/%e5%8f%ab%e6%b0%b4%e5%8d%8f%e8%ae%ae.html#comments</comments>
		<pubDate>Wed, 19 May 2010 04:31:03 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/archives/537/%e5%8f%ab%e6%b0%b4%e5%8d%8f%e8%ae%ae.html</guid>
		<description><![CDATA[原文：http://www.newsmth.net/bbscon.php?bid=63&#38;id=2359932 那天看老公邮箱里有一封信，标题是叫水协议，好奇，遂点进进入，然后HLL的被雷到了。。。 信是他们实验室一个人给大家的群发，信内容如下： 组里面已经有饮水机了，有两个水桶，希望大家看见一个桶喝完就叫水，这样可以保证水不断。叫水电话@@@@，水卡卡号AAAA，每次让他送一桶”矿泉水“就可以了，水票在饮水机下面的隔间里。为了保证大家不重复叫水，HW和我拍定了一个协议，就是水喝完了之后如果空桶是放在饮水机上的，就表示还没叫水，空桶是放在饮水机旁边的地上的，就表示已经叫水还没有送到。希望大家可以看到一个桶空了之后可以举手之劳，去叫个水，争取不要出现桶放在饮水机上面的情况，：） 以下是实验室中的众人回复信，看完了，真的要Orz一下了 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 这个协议有bug呀。如果实验室里非贵组的人发现水没了，没叫水就把空桶拿下来直接换了有水的桶，咱就都不知道了。。。 所以我觉得最自然的情况（饮水机上的桶是空的，或者空桶放在旁边的地上）都应该表示没叫过水，而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是，拿一张水票放在空桶上表示叫过水（这样送水的来了也省的人给他找水票了）。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 协议1.0还有一个问题是，如果叫水的时候不把另一桶水换上，会导致不断换同一桶水，而另一桶水百年不用。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 这个问题我解释一下，我怀疑你可能不完全了解这个场景。我们现在有一个饮水机，两个水桶。初始时一个水桶在饮水机上，里面有水，另外一个在地上，是满的，这个状态记为状态*。目前的策略是当一桶喝完时换另一桶，同时叫一桶水。这样可以保证实验室始终有水可喝（这里假设送水延迟远远小于喝一桶水的时间）。当下一桶水到达时，送水的师傅会把原来换下的那个空桶带走，回到状态*。如此反复。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 关键是把叫水和换筒做成原子操作。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 万一有大队人马同时干光了两桶水，组里有大号水箱没？…… &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 所以我觉得最自然的情况（饮水机上的桶是空的，或者空桶放在旁边的地上）都应该表示没叫过水，而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是，拿一张水票放在空桶上表示叫过水（这样送水的来了也省的人给他找水票了）。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212; 的确如此，上面建议的这个patch抗干扰性要比v1.0好，建议打上这个patch。不过也有问题：如果水票被风吹掉了…… &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 如果这样的话，协议1.0的bug很容易修啊。把叫水和没叫水的两个状态换一下就可以了（假设空桶放在饮水机上比较不自然，叫过水的就把空桶放在饮水机上，没叫过就放在地上）。这样不明就里的人换水会选择自然把桶放在地上，就表示水没叫过。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 叫水成功 有空桶 &#8212;&#8212;&#8212;&#8212;&#8212;&#62; 把水票放空桶之上&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#124; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#124; 未叫水 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#124; 或叫水失败 &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; &#124; &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 空桶，无水票 这样的协议才是fail-safe的，即不懂协议的人也能按协议正常执行。。。 &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- 赞fail-safe的协议！话说咱们有过v2.0吗？ 以上看完了，我崩溃了，不能写个牌子放在那里，正面已叫水，反面未叫水，挂在饮水机上，谁打过电话，翻动一下不就完了。。。 娃们，你们花点时间干别的吧。。。]]></description>
			<content:encoded><![CDATA[<p>原文：<a href="http://www.newsmth.net/bbscon.php?bid=63&amp;id=2359932">http://www.newsmth.net/bbscon.php?bid=63&amp;id=2359932</a></p>
<p>那天看老公邮箱里有一封信，标题是叫水协议，好奇，遂点进进入，然后HLL的被雷到了。。。    <br />信是他们实验室一个人给大家的群发，信内容如下： </p>
<p>组里面已经有饮水机了，有两个水桶，希望大家看见一个桶喝完就叫水，这样可以保证水不断。叫水电话@@@@，水卡卡号AAAA，每次让他送一桶”矿泉水“就可以了，水票在饮水机下面的隔间里。为了保证大家不重复叫水，HW和我拍定了一个协议，就是水喝完了之后如果空桶是放在饮水机上的，就表示还没叫水，空桶是放在饮水机旁边的地上的，就表示已经叫水还没有送到。希望大家可以看到一个桶空了之后可以举手之劳，去叫个水，争取不要出现桶放在饮水机上面的情况，：） </p>
<p>以下是实验室中的众人回复信，看完了，真的要Orz一下了     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;     <br />这个协议有bug呀。如果实验室里非贵组的人发现水没了，没叫水就把空桶拿下来直接换了有水的桶，咱就都不知道了。。。     <br />所以我觉得最自然的情况（饮水机上的桶是空的，或者空桶放在旁边的地上）都应该表示没叫过水，而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是，拿一张水票放在空桶上表示叫过水（这样送水的来了也省的人给他找水票了）。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-     <br />协议1.0还有一个问题是，如果叫水的时候不把另一桶水换上，会导致不断换同一桶水，而另一桶水百年不用。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-     <br />这个问题我解释一下，我怀疑你可能不完全了解这个场景。我们现在有一个饮水机，两个水桶。初始时一个水桶在饮水机上，里面有水，另外一个在地上，是满的，这个状态记为状态*。目前的策略是当一桶喝完时换另一桶，同时叫一桶水。这样可以保证实验室始终有水可喝（这里假设送水延迟远远小于喝一桶水的时间）。当下一桶水到达时，送水的师傅会把原来换下的那个空桶带走，回到状态*。如此反复。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-     <br />关键是把叫水和换筒做成原子操作。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;     <br />万一有大队人马同时干光了两桶水，组里有大号水箱没？……     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;     <br />所以我觉得最自然的情况（饮水机上的桶是空的，或者空桶放在旁边的地上）都应该表示没叫过水，而用一种特殊的标记表示叫过水了。比如我们宿舍的方法是，拿一张水票放在空桶上表示叫过水（这样送水的来了也省的人给他找水票了）。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;     <br />的确如此，上面建议的这个patch抗干扰性要比v1.0好，建议打上这个patch。不过也有问题：如果水票被风吹掉了……     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-     <br />如果这样的话，协议1.0的bug很容易修啊。把叫水和没叫水的两个状态换一下就可以了（假设空桶放在饮水机上比较不自然，叫过水的就把空桶放在饮水机上，没叫过就放在地上）。这样不明就里的人换水会选择自然把桶放在地上，就表示水没叫过。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 叫水成功     <br />有空桶 &#8212;&#8212;&#8212;&#8212;&#8212;&gt; 把水票放空桶之上&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; | 未叫水     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; | 或叫水失败     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; |     <br />&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; 空桶，无水票     <br />这样的协议才是fail-safe的，即不懂协议的人也能按协议正常执行。。。     <br />&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-     <br />赞fail-safe的协议！话说咱们有过v2.0吗？     <br />以上看完了，我崩溃了，不能写个牌子放在那里，正面已叫水，反面未叫水，挂在饮水机上，谁打过电话，翻动一下不就完了。。。     <br />娃们，你们花点时间干别的吧。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/537/%e5%8f%ab%e6%b0%b4%e5%8d%8f%e8%ae%ae.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Kubuntu 10.04 安装失败</title>
		<link>http://www.xmxsuperstar.com/archives/532/kubuntu-10-04-%e5%ae%89%e8%a3%85%e5%a4%b1%e8%b4%a5.html</link>
		<comments>http://www.xmxsuperstar.com/archives/532/kubuntu-10-04-%e5%ae%89%e8%a3%85%e5%a4%b1%e8%b4%a5.html#comments</comments>
		<pubDate>Wed, 05 May 2010 20:14:00 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/archives/532/kubuntu-10-04-%e5%ae%89%e8%a3%85%e5%a4%b1%e8%b4%a5.html</guid>
		<description><![CDATA[这几天试了试Kubuntu 10.04，结果安装失败，永远的黑屏。怎么改内核启动参数都无济于事。 不得不抱怨ubuntu越做越差，界面越做越丑，硬件兼容越做越差，社区中高手越来越少。]]></description>
			<content:encoded><![CDATA[<p>这几天试了试Kubuntu 10.04，结果安装失败，永远的黑屏。怎么改内核启动参数都无济于事。
</p>
<p>不得不抱怨ubuntu越做越差，界面越做越丑，硬件兼容越做越差，社区中高手越来越少。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/532/kubuntu-10-04-%e5%ae%89%e8%a3%85%e5%a4%b1%e8%b4%a5.html/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>ubuntu 8.04 gnome-terminal 字体渲染问题</title>
		<link>http://www.xmxsuperstar.com/archives/510/ubuntu-8-04-gnome-terminal-%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html</link>
		<comments>http://www.xmxsuperstar.com/archives/510/ubuntu-8-04-gnome-terminal-%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Sat, 30 Jan 2010 13:46:50 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=510</guid>
		<description><![CDATA[在《Ubuntu终端gnome-terminal字体难看的解决办法》提到gnome terminal的字体渲染不受Appearance里字体面板的控制，今天发现在ubuntu 8.04.4里这个bug依旧，其实那篇blog中的解决办法很丑陋，只要在/etc/fonts/conf.d/目录下删掉10-hinting-slight.conf和10-no-sub-pixel.conf，然后重新做两个软链接就可以了： 10-hinting-full.conf -&#62; ../conf.avail/10-hinting-full.conf 10-sub-pixel-rgb.conf -&#62; ../conf.avail/10-sub-pixel-rgb.conf 最后抱怨一下，firefox不接受Appearance里字体面板的控制也就罢了，像gnome-terminal本身就属于gnome的东西都不接受控制实在有些莫名奇妙]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://www.xmxsuperstar.com/archives/313/ubuntu%E7%BB%88%E7%AB%AFgnome-terminal%E5%AD%97%E4%BD%93%E9%9A%BE%E7%9C%8B%E7%9A%84%E8%A7%A3%E5%86%B3%E5%8A%9E%E6%B3%95.html">《Ubuntu终端gnome-terminal字体难看的解决办法》</a>提到gnome terminal的字体渲染不受Appearance里字体面板的控制，今天发现在ubuntu 8.04.4里这个bug依旧，其实那篇blog中的解决办法很丑陋，只要在/etc/fonts/conf.d/目录下删掉10-hinting-slight.conf和10-no-sub-pixel.conf，然后重新做两个软链接就可以了：</p>
<pre class="brush: bash;">
10-hinting-full.conf -&gt; ../conf.avail/10-hinting-full.conf
10-sub-pixel-rgb.conf -&gt; ../conf.avail/10-sub-pixel-rgb.conf
</pre>
<p>最后抱怨一下，<a href="http://www.xmxsuperstar.com/archives/489/ubuntu-8-04-hardy-%e4%bb%8e%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85firefox%e8%a7%a3%e5%86%b3%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html">firefox不接受Appearance里字体面板的控制</a>也就罢了，像gnome-terminal本身就属于gnome的东西都不接受控制实在有些莫名奇妙</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/510/ubuntu-8-04-gnome-terminal-%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Goodbye Sun</title>
		<link>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html</link>
		<comments>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html#comments</comments>
		<pubDate>Fri, 22 Jan 2010 10:11:27 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[sun]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=508</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_509" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.xmxsuperstar.com/wp-content/uploads/2010/01/SunRIP.jpg"><img class="size-full wp-image-509 " title="SunRIP" src="http://www.xmxsuperstar.com/wp-content/uploads/2010/01/SunRIP.jpg" alt="Goodbye Sun" width="480" height="376" /></a><p class="wp-caption-text">Goodbye Sun</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/508/goodbye-sun.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>History of the browser user-agent string</title>
		<link>http://www.xmxsuperstar.com/archives/493/history-of-the-browser-user-agent-string.html</link>
		<comments>http://www.xmxsuperstar.com/archives/493/history-of-the-browser-user-agent-string.html#comments</comments>
		<pubDate>Wed, 16 Dec 2009 12:43:35 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[history]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=493</guid>
		<description><![CDATA[原文：http://webaim.org/blog/user-agent-string-history/ 一直对浏览器的user agent字串的一团浆糊搞不明白，现在终于知道了这段搞笑的历史。 In the beginning there was NCSA Mosaic, and Mosaic called itself NCSA_Mosaic/2.0 (Windows 3.1), and Mosaic displayed pictures along with text, and there was much rejoicing. And behold, then came a new web browser known as “Mozilla”, being short for “Mosaic Killer,” but Mosaic was not amused, so the public name was [...]]]></description>
			<content:encoded><![CDATA[<p>原文：<a title="History of the browser user-agent string " href="http://webaim.org/blog/user-agent-string-history/" target="_blank">http://webaim.org/blog/user-agent-string-history/</a> 一直对浏览器的user agent字串的一团浆糊搞不明白，现在终于知道了这段搞笑的历史。</p>
<p>In the beginning there was <a href="http://archive.ncsa.uiuc.edu/mosaic.html">NCSA Mosaic</a>, and Mosaic called itself <em>NCSA_Mosaic/2.0 (Windows 3.1)</em>, and Mosaic displayed pictures along with text, and there was much rejoicing.</p>
<p><img style="padding: 4px; float: right;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/netscape.jpg" alt="" />And behold, then came a new web browser known as <a href="http://en.wikipedia.org/wiki/Mozilla">“Mozilla”</a>, being short for “Mosaic Killer,” but Mosaic was not amused, so the public name was changed to Netscape, and Netscape called itself <em>Mozilla/1.0 (Win3.1)</em>, and there was more rejoicing. And Netscape supported frames, and frames became popular among the people, but Mosaic did not support frames, and so came “user agent sniffing” and to “Mozilla” webmasters sent frames, but to other browsers they sent not frames.</p>
<p>And Netscape said, let us make fun of Microsoft and refer to Windows as “poorly debugged device drivers,” and Microsoft was angry. And so Microsoft made their own web browser, which they called Internet Explorer, hoping for it to be a “Netscape Killer”. <img style="padding: 4px; float: left;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/ie.png" alt="" />And Internet Explorer supported frames, and yet was not Mozilla, and so was not given frames. And Microsoft grew impatient, and did not wish to wait for webmasters to learn of IE and begin to send it frames, and so Internet Explorer declared that it was “Mozilla compatible” and began to impersonate Netscape, and called itself <em>Mozilla/1.22 (compatible; MSIE 2.0; Windows 95)</em>, and Internet Explorer received frames, and all of Microsoft was happy, but webmasters were confused.</p>
<p>And Microsoft sold IE with Windows, and made it better than Netscape, and the first browser war raged upon the face of the land. <img style="padding: 4px; float: left;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/mozilla.png" alt="" />And behold, Netscape was killed, and there was much rejoicing at Microsoft. But Netscape was reborn as Mozilla, and Mozilla built Gecko, and called itself <em>Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.1) Gecko/20020826</em>, and Gecko was the rendering engine, and Gecko was good. <img style="padding: 4px; float: right;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/firefox.jpg" alt="" /> And Mozilla became Firefox, and called itself <em>Mozilla/5.0 (Windows; U; Windows NT 5.1; sv-SE; rv:1.7.5) Gecko/20041108 Firefox/1.0</em>, and Firefox was very good. And Gecko began to multiply, and other browsers were born that used its code, and they called themselves <em>Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.7.2) Gecko/20040825 Camino/0.8.1</em> the one, and <em>Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.8) Gecko/20071008 SeaMonkey/1.0</em> another, each pretending to be Mozilla, and all of them powered by Gecko.</p>
<p>And Gecko was good, and IE was not, and sniffing was reborn, and Gecko was given good web code, and other browsers were not. <img style="padding: 4px; float: right;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/konqueror.jpg" alt="" />And the followers of Linux were much sorrowed, because they had built Konqueror, whose engine was KHTML, which they thought was as good as Gecko, but it was not Gecko, and so was not given the good pages, and so Konquerer began to pretend to be “like Gecko” to get the good pages, and called itself <em>Mozilla/5.0 (compatible; Konqueror/3.2; FreeBSD) (KHTML, like Gecko)</em> and there was much confusion.</p>
<p><img style="padding: 4px; float: right;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/opera.jpg" alt="" />Then cometh Opera and said, “surely we should allow our users to decide which browser we should impersonate,” and so Opera created a menu item, and Opera called itself <em>Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera 9.51</em>, or <em>Mozilla/5.0 (Windows NT 6.0; U; en; rv:1.8.1) Gecko/20061208 Firefox/2.0.0 Opera 9.51</em>, or <em>Opera/9.51 (Windows NT 5.1; U; en)</em> depending on which option the user selected.</p>
<p><img style="padding: 4px; float: left;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/safari.jpg" alt="" />And Apple built Safari, and used KHTML, but added many features, and forked the project, and called it WebKit, but wanted pages written for KHTML, and so Safari called itself <em>Mozilla/5.0 (Macintosh; U; PPC Mac OS X; de-de) AppleWebKit/85.7 (KHTML, like Gecko) Safari/85.5</em>, and it got worse.</p>
<p>And Microsoft feared Firefox greatly, and Internet Explorer returned, and called itself <em>Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)</em> and it rendered good code, but only if webmasters commanded it to do so.</p>
<p><img style="padding: 4px; float: right;" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/12/chrome.jpg" alt="" />And then Google built <a href="http://www.google.com/chrome">Chrome</a>, and Chrome used Webkit, and it was like Safari, and wanted pages built for Safari, and so pretended to be Safari. And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to be Mozilla, and Chrome called itself <em>Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13</em>, and the user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/493/history-of-the-browser-user-agent-string.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu PGO方式编译Firefox笔记</title>
		<link>http://www.xmxsuperstar.com/archives/491/ubuntu-pgo%e6%96%b9%e5%bc%8f%e7%bc%96%e8%af%91firefox%e7%ac%94%e8%ae%b0.html</link>
		<comments>http://www.xmxsuperstar.com/archives/491/ubuntu-pgo%e6%96%b9%e5%bc%8f%e7%bc%96%e8%af%91firefox%e7%ac%94%e8%ae%b0.html#comments</comments>
		<pubDate>Tue, 10 Nov 2009 11:52:50 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[sourcecode]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=491</guid>
		<description><![CDATA[在上一篇blog里用最简单的方式编译了firefox，今天用PGO方式重新优化编译了一下。 官方的PGO编译文档参考https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization 首先将.mozconfig修改如下： mk_add_options MOZ_CO_PROJECT=browser mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt mk_add_options PROFILE_GEN_SCRIPT=&#34;sh /home/xmx/run-firefox.sh&#34; ac_add_options --enable-application=browser ac_add_options --disable-tests ac_add_options --disable-debug ac_add_options --enable-default-toolkit=cairo-gtk2 --enable-system-cairo ac_add_options --enable-official-branding ac_add_options --enable-optimize=&#34;-O2 -march=native -mtune=native -pipe -fomit-frame-pointer&#34; ac_add_options --enable-jemalloc ac_add_options --enable-strip ac_add_options --enable-install-strip ac_add_options --enable-profile-guided-optimization 其中 ac_add_options &#8211;enable-optimize=&#8221;-O2 -march=native -mtune=native -pipe -fomit-frame-pointer&#8221;, ac_add_options &#8211;enable-jemalloc, ac_add_options &#8211;enable-strip, ac_add_options &#8211;enable-install-strip 这四个选项是优化编译选项。 ac_add_options &#8211;enable-profile-guided-optimization 这个选项表示用PGO方式编译，而 mk_add_options PROFILE_GEN_SCRIPT=&#8221;sh /home/xmx/run-firefox.sh&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>在<a href="http://www.xmxsuperstar.com/archives/489/ubuntu-8-04-hardy-%e4%bb%8e%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85firefox%e8%a7%a3%e5%86%b3%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html">上一篇blog</a>里用最简单的方式编译了firefox，今天用PGO方式重新优化编译了一下。<br />
官方的PGO编译文档参考<a href="https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization">https://developer.mozilla.org/en/Building_with_Profile-Guided_Optimization</a><br />
首先将.mozconfig修改如下：</p>
<pre class="brush: bash;">
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
mk_add_options PROFILE_GEN_SCRIPT=&quot;sh /home/xmx/run-firefox.sh&quot;
ac_add_options --enable-application=browser
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-default-toolkit=cairo-gtk2 --enable-system-cairo
ac_add_options --enable-official-branding
ac_add_options --enable-optimize=&quot;-O2 -march=native -mtune=native -pipe -fomit-frame-pointer&quot;
ac_add_options --enable-jemalloc
ac_add_options --enable-strip
ac_add_options --enable-install-strip
ac_add_options --enable-profile-guided-optimization
</pre>
<p>其中<br />
ac_add_options &#8211;enable-optimize=&#8221;-O2 -march=native -mtune=native -pipe -fomit-frame-pointer&#8221;, ac_add_options &#8211;enable-jemalloc, ac_add_options &#8211;enable-strip, ac_add_options &#8211;enable-install-strip<br />
这四个选项是优化编译选项。<br />
ac_add_options &#8211;enable-profile-guided-optimization 这个选项表示用PGO方式编译，而 mk_add_options PROFILE_GEN_SCRIPT=&#8221;sh /home/xmx/run-firefox.sh&#8221; 这个选项指定了PGO编译第一遍结束后执行的脚本。<br />
而run-firefox.sh的内容如下：</p>
<pre class="brush: bash;">
#!/bin/sh make -f client.mk profiledbuild
export NO_EM_RESTART=1
mkdir $OBJDIR/_profileprofile
$OBJDIR/dist/bin/firefox -no-remote -profile $OBJDIR/_profileprofile
</pre>
<p>配置结束后在源码顶层目录执行：</p>
<pre class="brush: bash;">
make -f client.mk profiledbuild
</pre>
<p>注意执行的是profiledbuild而不是之前简单的build<br />
然后就开第一次编译，等待。。。<br />
第一次编译结束后会自动调用run-firefox.sh脚本，运行刚刚编译完的firefox（第一次编译的时候千万不要运行原来的firefox，以免这里出错）。按照平时的上网习惯看一些网页，然后关掉，第二次编译便自动开始了。第二次编译会以第一次编译后运行产生的profile调优，通常能获得相当不错的性能提升。<br />
第二次编译结束后便和普通编译一样了：</p>
<pre class="brush: bash;">
cd ff-opt
make package
</pre>
<p>在ff-opt/dist下就已经生成了一个打包好的firefox包，解压到任何地方运行就可以了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/491/ubuntu-pgo%e6%96%b9%e5%bc%8f%e7%bc%96%e8%af%91firefox%e7%ac%94%e8%ae%b0.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ubuntu 8.04 hardy 从源码编译安装firefox解决字体渲染问题</title>
		<link>http://www.xmxsuperstar.com/archives/489/ubuntu-8-04-hardy-%e4%bb%8e%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85firefox%e8%a7%a3%e5%86%b3%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html</link>
		<comments>http://www.xmxsuperstar.com/archives/489/ubuntu-8-04-hardy-%e4%bb%8e%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85firefox%e8%a7%a3%e5%86%b3%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html#comments</comments>
		<pubDate>Mon, 09 Nov 2009 06:00:41 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[compile]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[sourcecode]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=489</guid>
		<description><![CDATA[最近发布的ubuntu 9.10 karmic 装在我的笔记本上问题重重，经过一番痛苦的折腾后，彻底放弃，降级回8.04 hardy。 但是hardy的源里面的firefox还是3.0版的，于是去Mozila官网下载最新的3.5.5编译好的包。但是运行后发现字体渲染不受System->Pereference->Appearance->Fonts中渲染设置的控制。 一通Google，在主目录下面放置.fonts.conf文件，如下内容： &#60;?xml version='1.0'?&#62; &#60;match target=&#34;pattern&#34; &#62; &#60;edit mode=&#34;assign&#34; name=&#34;hinting&#34; &#62; &#60;bool&#62;true&#60;/bool&#62; &#60;/edit&#62; &#60;edit mode=&#34;assign&#34; name=&#34;hintstyle&#34; &#62; &#60;const&#62;hintfull&#60;/const&#62; &#60;/edit&#62; &#60;edit mode=&#34;assign&#34; name=&#34;autohint&#34; &#62; &#60;bool&#62;false&#60;/bool&#62; &#60;/edit&#62; &#60;edit mode=&#34;assign&#34; name=&#34;antialias&#34; &#62; &#60;bool&#62;true&#60;/bool&#62; &#60;/edit&#62; &#60;edit mode=&#34;assign&#34; name=&#34;rgba&#34; &#62; &#60;const&#62;rgb&#60;/const&#62; &#60;/edit&#62; &#60;/match&#62; 但是情况依旧。 把hintstyle用hintfull，hintmedium，hintslight尝试，意外的发现hintfull，hintmedium的效果是一样的。再一通Google，猜测Mozilla的官方编译包没有用&#8211;enable-system-cairo选项编译，于是只好自己重新编译。 好在编译firefox不是很复杂，网上相关的文章也多，比如http://gastly.iblogger.org/how-to-compile-firefox-35b4-from-source-with-nice-fonts/ 首先安装必要的工具和相关的库： $ sudo apt-get build-dep firefox-3.0 $ sudo apt-get [...]]]></description>
			<content:encoded><![CDATA[<p>最近发布的ubuntu 9.10 karmic 装在我的笔记本上问题重重，经过一番痛苦的折腾后，彻底放弃，降级回8.04 hardy。<br />
但是hardy的源里面的firefox还是3.0版的，于是去Mozila官网下载最新的3.5.5编译好的包。但是运行后发现字体渲染不受System->Pereference->Appearance->Fonts中渲染设置的控制。<br />
一通Google，在主目录下面放置.fonts.conf文件，如下内容：</p>
<pre class="brush: xml;">
&lt;?xml version='1.0'?&gt;
&lt;match target=&quot;pattern&quot; &gt;
	&lt;edit mode=&quot;assign&quot; name=&quot;hinting&quot; &gt;
		&lt;bool&gt;true&lt;/bool&gt;
	&lt;/edit&gt;
	&lt;edit mode=&quot;assign&quot; name=&quot;hintstyle&quot; &gt;
		&lt;const&gt;hintfull&lt;/const&gt;
	&lt;/edit&gt;
	&lt;edit mode=&quot;assign&quot; name=&quot;autohint&quot; &gt;
		&lt;bool&gt;false&lt;/bool&gt;
	&lt;/edit&gt;
	&lt;edit mode=&quot;assign&quot; name=&quot;antialias&quot; &gt;
		&lt;bool&gt;true&lt;/bool&gt;
	&lt;/edit&gt;
	&lt;edit mode=&quot;assign&quot; name=&quot;rgba&quot; &gt;
		&lt;const&gt;rgb&lt;/const&gt;
	&lt;/edit&gt;
&lt;/match&gt;
</pre>
<p>但是情况依旧。<br />
把hintstyle用hintfull，hintmedium，hintslight尝试，意外的发现hintfull，hintmedium的效果是一样的。再一通Google，猜测Mozilla的官方编译包没有用&#8211;enable-system-cairo选项编译，于是只好自己重新编译。<br />
好在编译firefox不是很复杂，网上相关的文章也多，比如<a href="http://gastly.iblogger.org/how-to-compile-firefox-35b4-from-source-with-nice-fonts/">http://gastly.iblogger.org/how-to-compile-firefox-35b4-from-source-with-nice-fonts/</a><br />
首先安装必要的工具和相关的库：</p>
<pre class="brush: bash;">
$ sudo apt-get build-dep firefox-3.0
$ sudo apt-get install libcairo2 libcairo2-dev libasound2-dev libcurl4-openssl-dev libnotify-dev
</pre>
<p>然后从<a href="http://releases.mozilla.org/pub/mozilla.org/firefox/releases/">http://releases.mozilla.org/pub/mozilla.org/firefox/releases/</a>下载最新的源码<br />
然后解开源码包，进入源码目录，新建一个.mozconfig文件，包含如下内容：</p>
<pre class="brush: bash;">
mk_add_options MOZ_CO_PROJECT=browser
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/ff-opt
ac_add_options --enable-application=browser
ac_add_options --disable-tests
ac_add_options --disable-debug
ac_add_options --enable-default-toolkit=cairo-gtk2 --enable-system-cairo
ac_add_options --enable-optimize=&quot;-O2&quot;
ac_add_options --enable-official-branding
</pre>
<p>这些选项的含义可以在<a href="https://developer.mozilla.org/en/Configuring_Build_Options">https://developer.mozilla.org/en/Configuring_Build_Options</a>查到，其中重要的是：</p>
<pre class="brush: bash;">
ac_add_options --enable-default-toolkit=cairo-gtk2 --enable-system-cairo
</pre>
<p>只有开启了这个选项，firefox才能正确的渲染字体。</p>
<pre class="brush: bash;">
ac_add_options --enable-official-branding
</pre>
<p>这一选项会让编译出的浏览器的userAgent为firefox，使用Mozilla的firefox图标，否则userAgent为Shiretoko，使用的是一个蓝色地球的图标，如果遇上对userAgent检查严格的网站可能会有问题。但是注意Mozilla是不允许分发非官方的构建时使用firefox的名称和图标的。<br />
之后：</p>
<pre class="brush: bash;">
make -f client.mk build
</pre>
<p>开始编译，编译完成后：</p>
<pre class="brush: bash;">
cd ff-opt
make package
</pre>
<p>这里的ff-opt目录就是上面在.mozconfig文件中第二行配置的，执行make package后会在ff-opt/dist/下生成一个类似名如：firefox-3.5.5.en-US.linux-i686.tar.bz2的包，解压运行其中的firefox就可以了。<br />
当然也可以在源码顶层目录中执行</p>
<pre class="brush: bash;">
make -f client.mk install
</pre>
<p>会安装在/usr/local下面。<br />
现在字体可以正常的接受~/.fonts.conf的控制了（但依旧不接受 System->Pereference->Appearance->Fonts 的控制，囧）。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/489/ubuntu-8-04-hardy-%e4%bb%8e%e6%ba%90%e7%a0%81%e7%bc%96%e8%af%91%e5%ae%89%e8%a3%85firefox%e8%a7%a3%e5%86%b3%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>转一篇写得相当好的文章：澄清P问题、NP问题、NPC问题的概念</title>
		<link>http://www.xmxsuperstar.com/archives/480/%e8%bd%ac%e4%b8%80%e7%af%87%e5%86%99%e5%be%97%e7%9b%b8%e5%bd%93%e5%a5%bd%e7%9a%84%e6%96%87%e7%ab%a0%ef%bc%9a%e6%be%84%e6%b8%85p%e9%97%ae%e9%a2%98%e3%80%81np%e9%97%ae%e9%a2%98%e3%80%81npc%e9%97%ae.html</link>
		<comments>http://www.xmxsuperstar.com/archives/480/%e8%bd%ac%e4%b8%80%e7%af%87%e5%86%99%e5%be%97%e7%9b%b8%e5%bd%93%e5%a5%bd%e7%9a%84%e6%96%87%e7%ab%a0%ef%bc%9a%e6%be%84%e6%b8%85p%e9%97%ae%e9%a2%98%e3%80%81np%e9%97%ae%e9%a2%98%e3%80%81npc%e9%97%ae.html#comments</comments>
		<pubDate>Tue, 15 Sep 2009 17:08:22 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[algorithm]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=480</guid>
		<description><![CDATA[转自：http://xxjs.kmip.net/show.aspx?id=238&#038;cid=6 这或许是众多OIer最大的误区之一。 你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题，NPC问题才是。好，行了，基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题，什么是NP问题，什么是NPC问题，你如果不是很感兴趣就可以不看了。接下来你可以看到，把NP问题当成是 NPC问题是一个多大的错误。 还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间，而是当问题规模扩大后，程序需要的时间长度增长得有多快。也就是说，对于高速处理数据的计算机来说，处理某一个特定数据的效率不能衡量一个程序的好坏，而应该看当这个数据的规模变大到数百倍后，程序运行时间是否还是一样，或者也跟着慢了数百倍，或者变慢了数万倍。不管数据有多大，程序处理花的时间始终是那么多的，我们就说这个程序很好，具有O(1)的时间复杂度，也称常数级复杂度；数据规模变得有多大，花的时间也跟着变得有多长，这个程序的时间复杂度就是O(n)，比如找n个数中的最大值；而像冒泡排序、插入排序等，数据扩大2倍，时间变慢4倍的，属于O(n^2)的复杂度。还有一些穷举类的算法，所需时间长度成几何阶数上涨，这就是O(a^n)的指数级复杂度，甚至O(n!)的阶乘级复杂度。不会存在O(2*n^2)的复杂度，因为前面的那个“2”是系数，根本不会影响到整个程序的时间增长。同样地，O(n^3+n^2)的复杂度也就是O(n^3)的复杂度。因此，我们会说，一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低，尽管在n很小的时候，前者优于后者，但后者时间随数据规模增长得慢，最终O(n^3)的复杂度将远远超过O(n^2)。我们也说，O(n^100)的复杂度小于O(1.01^n)的复杂度。 容易看出，前面的几类复杂度被分为两种级别，其中后者的复杂度无论如何都远远大于前者：一种是O(1),O(log(n)),O(n^a)等，我们把它叫做多项式级的复杂度，因为它的规模n出现在底数的位置；另一种是O(a^n)和O(n!)型复杂度，它是非多项式级的，其复杂度计算机往往不能承受。当我们在解决一个问题时，我们选择的算法通常都需要是多项式级的复杂度，非多项式级的复杂度需要的时间太多，往往会超时，除非是数据规模非常小。 自然地，人们会想到一个问题：会不会所有的问题都可以找到复杂度为多项式级的算法呢？很遗憾，答案是否定的。有些问题甚至根本不可能找到一个正确的算法来，这称之为“不可解问题”(Undecidable Decision Problem)。The Halting Problem就是一个著名的不可解问题，在我的MSN Space上有过专门的介绍和证明。再比如，输出从1到n这n个数的全排列。不管你用什么方法，你的复杂度都是阶乘级，因为你总得用阶乘级的时间打印出结果来。有人说，这样的“问题”不是一个“正规”的问题，正规的问题是让程序解决一个问题，输出一个“YES”或“NO”（这被称为判定性问题），或者一个什么什么的最优值（这被称为最优化问题）。那么，根据这个定义，我也能举出一个不大可能会有多项式级算法的问题来：Hamilton回路。问题是这样的：给你一个图，问你能否找到一条经过每个顶点一次且恰好一次（不遗漏也不重复）最后又走回来的路（满足这个条件的路径叫做Hamilton回路）。这个问题现在还没有找到多项式级的算法。事实上，这个问题就是我们后面要说的NPC问题。 下面引入P类问题的概念：如果一个问题可以找到一个能在多项式的时间里解决它的算法，那么这个问题就属于P问题。P是英文单词多项式的第一个字母。哪些问题是P类问题呢？通常NOI和NOIP不会出不属于P类问题的题目。我们常见到的一些信息奥赛的题目都是P问题。道理很简单，一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。 接下来引入NP问题的概念。这个就有点难理解了，或者说容易理解错误。在这里强调（回到我竭力想澄清的误区上），NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是，可以在多项式的时间里猜出一个解的问题。比方说，我RP很好，在程序中需要枚举时，我可以一猜一个准。现在某人拿到了一个求最短路径的问题，问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图，但怎么也算不出来，于是来问我：你看怎么选条路走得最少？我说，我RP很好，肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线，说就这条吧。那人按我指的这条把权值加起来一看，嘿，神了，路径长度98，比100小。于是答案出来了，存在比100小的路径。别人会问他这题怎么做出来的，他就可以说，因为我找到了一个比100 小的解。在这个题中，找一个解很困难，但验证一个解很容易。验证一个解只需要O(n)的时间复杂度，也就是说我可以花O(n)的时间把我猜的路径的长度加出来。那么，只要我RP好，猜得准，我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的，不满足题意的方案也不会来骗我去选它。这就是NP问题。当然有不是NP问题的问题，即你猜到了解但是没用，因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子，它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然，前面所说的Hamilton回路是NP问题，因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样：试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了，因为除非你试过所有的路，否则你不敢断定它“没有Hamilton回路”。 之所以要定义NP问题，是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白，信息学中的号称最困难的问题——“NP问题”，实际上是在探讨NP问题与P类问题的关系。 很显然，所有的P类问题都是NP问题。也就是说，能多项式地解决一个问题，必然能多项式地验证一个问题的解——既然正解都出来了，验证任意给定的解也只需要比较一下就可以了。关键是，人们想知道，是否所有的NP问题都是P类问题。我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中，把所有 NP问题划进另一个集合NP中，那么，显然有P属于NP。现在，所有对NP问题的研究都集中在一个问题上，即究竟是否有P=NP？通常所谓的“NP问题”，其实就一句话：证明或推翻P=NP。 NP问题一直都是信息学的巅峰。巅峰，意即很引人注目但难以解决。在信息学研究中，这是一个耗费了很多时间和精力也没有解决的终极问题，好比物理学中的大统一和数学中的歌德巴赫猜想等。 目前为止这个问题还“啃不动”。但是，一个总的趋势、一个大方向是有的。人们普遍认为，P=NP不成立，也就是说，多数人相信，存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的，就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题，也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在，使人们相信P≠NP。下文将花大量篇幅介绍NPC问题，你从中可以体会到NPC问题使P=NP变得多么不可思议。 为了说明NPC问题，我们先引入一个概念——约化(Reducibility，有的资料上叫“归约”)。 简单地说，一个问题A可以约化为问题B的含义即是，可以用问题B的解法解决问题A，或者说，问题A可以“变成”问题B。《算法导论》上举了这么一个例子。比如说，现在有两个问题：求解一个一元一次方程和求解一个一元二次方程。那么我们说，前者可以约化为后者，意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题，那么我们能找到一个“规则”，按照这个规则把解一元一次方程程序的输入数据变一下，用在解一元二次方程的程序上，两个程序总能得到一样的结果。这个规则即是：两个方程的对应项系数不变，一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题，两个问题就等价了。同样地，我们可以说，Hamilton回路可以约化为TSP问题(Travelling Salesman Problem，旅行商问题)：在Hamilton回路问题中，两点相连即这两点距离为0，两点不直接相连则令其距离为1，于是问题转化为在TSP问题中，是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。 “问题A可约化为问题B”有一个重要的直观意义：B的时间复杂度高于或者等于A的时间复杂度。也就是说，问题A不比问题B难。这很容易理解。既然问题A能用问题B来解决，倘若B的时间复杂度比A的时间复杂度还低了，那A的算法就可以改进为B的算法，两者的时间复杂度还是相同。正如解一元二次方程比解一元一次方程难，因为解决前者的方法可以用来解决后者。 很显然，约化具有一项重要的性质：约化具有传递性。如果问题A可约化为问题B，问题B可约化为问题C，则问题A一定可约化为问题C。这个道理非常简单，就不必阐述了。 现在再来说一下约化的标准概念就不难理解了：如果能找到这样一个变化法则，对任意一个程序A的输入，都能按这个法则变换成程序B的输入，使两程序的输出相同，那么我们说，问题A可约化为问题B。 当然，我们所说的“可约化”是指的可“多项式地”约化(Polynomial-time Reducible)，即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。 好了，从约化的定义中我们看到，一个问题约化为另一个问题，时间复杂度增加了，问题的应用范围也增大了。通过对某些问题的不断约化，我们能够不断寻找复杂度更高，但应用范围更广的算法来代替复杂度虽然低，但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题，联想起约化的传递性，自然地，我们会想问，如果不断地约化上去，不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题，那么最后是否有可能找到一个时间复杂度最高，并且能“通吃”所有的 NP问题的这样一个超级NP问题？答案居然是肯定的。也就是说，存在这样一个NP问题，所有的NP问题都可以约化成它。换句话说，只要解决了这个问题，那么所有的NP问题都解决了。这种问题的存在难以置信，并且更加不可思议的是，这种问题不只一个，它有很多个，它是一类问题。这一类问题就是传说中的NPC 问题，也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信，NPC问题是最复杂的问题。再次回到全文开头，我们可以看到，人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。此时，我的目的终于达到了，我已经把NP问题和NPC问题区别开了。到此为止，本文已经写了近5000字了，我佩服你还能看到这里来，同时也佩服一下自己能写到这里来。 NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先，它得是一个NP问题；然后，所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题，再证明其中一个已知的NPC问题能约化到它（由约化的传递性，则NPC问题定义的第二条也得以满足；至于第一个NPC问题是怎么来的，下文将介绍），这样就可以说它是NPC问题了。 既然所有的NP问题都能约化成NPC问题，那么只要任意一个NPC问题找到了一个多项式的算法，那么所有的NP问题都能用这个算法解决了，NP也就等于P 了。因此，给NPC找一个多项式算法太不可思议了。因此，前文才说，“正是NPC问题的存在，使人们相信P≠NP”。我们可以就此直观地理解，NPC问题目前没有多项式的有效算法，只能用指数级甚至阶乘级复杂度的搜索。 顺便讲一下NP-Hard问题。NP-Hard问题是这样一种问题，它满足NPC问题定义的第二条但不一定要满足第一条（就是说，NP-Hard问题要比 NPC问题的范围广）。NP-Hard问题同样难以找到多项式的算法，但它不列入我们的研究范围，因为它不一定是NP问题。即使NPC问题发现了多项式级的算法，NP-Hard问题有可能仍然无法得到多项式级的算法。事实上，由于NP-Hard放宽了限定条件，它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。 不要以为NPC问题是一纸空谈。NPC问题是存在的。确实有这么一个非常具体的问题属于NPC问题。下文即将介绍它。 下文即将介绍逻辑电路问题。这是第一个NPC问题。其它的NPC问题都是由这个问题约化而来的。因此，逻辑电路问题是NPC类问题的“鼻祖”。 逻辑电路问题是指的这样一个问题：给定一个逻辑电路，问是否存在一种输入使输出为True。 什么叫做逻辑电路呢？一个逻辑电路由若干个输入，一个输出，若干“逻辑门”和密密麻麻的线组成。看下面一例，不需要解释你马上就明白了。 这是个较简单的逻辑电路，当输入1、输入2、输入3分别为True、True、False或False、True、False时，输出为True。 有输出无论如何都不可能为True的逻辑电路吗？有。下面就是一个简单的例子。 上面这个逻辑电路中，无论输入是什么，输出都是False。我们就说，这个逻辑电路不存在使输出为True的一组输入。 回到上文，给定一个逻辑电路，问是否存在一种输入使输出为True，这即逻辑电路问题。 逻辑电路问题属于NPC问题。这是有严格证明的。它显然属于NP问题，并且可以直接证明所有的NP问题都可以约化到它（不要以为NP问题有无穷多个将给证明造成不可逾越的困难）。证明过程相当复杂，其大概意思是说任意一个NP问题的输入和输出都可以转换成逻辑电路的输入和输出（想想计算机内部也不过是一些 0和1的运算），因此对于一个NP问题来说，问题转化为了求出满足结果为True的一个输入（即一个可行解）。 有了第一个NPC问题后，一大堆NPC问题就出现了，因为再证明一个新的NPC问题只需要将一个已知的NPC问题约化到它就行了。后来，Hamilton 回路成了NPC问题，TSP问题也成了NPC问题。现在被证明是NPC问题的有很多，任何一个找到了多项式算法的话所有的NP问题都可以完美解决了。因此说，正是因为NPC问题的存在，P=NP变得难以置信。P=NP问题还有许多有趣的东西，有待大家自己进一步的挖掘。攀登这个信息学的巅峰是我们这一代的终极目标。现在我们需要做的，至少是不要把概念弄混淆了。]]></description>
			<content:encoded><![CDATA[<p>转自：<a href="http://xxjs.kmip.net/show.aspx?id=238&#038;cid=6">http://xxjs.kmip.net/show.aspx?id=238&#038;cid=6</a><br />
这或许是众多OIer最大的误区之一。<br />
你会经常看到网上出现“这怎么做，这不是NP问题吗”、“这个只有搜了，这已经被证明是NP问题了”之类的话。你要知道，大多数人此时所说的NP问题其实都是指的NPC问题。他们没有搞清楚NP问题和NPC问题的概念。NP问题并不是那种“只有搜才行”的问题，NPC问题才是。好，行了，基本上这个误解已经被澄清了。下面的内容都是在讲什么是P问题，什么是NP问题，什么是NPC问题，你如果不是很感兴趣就可以不看了。接下来你可以看到，把NP问题当成是 NPC问题是一个多大的错误。<br />
还是先用几句话简单说明一下时间复杂度。时间复杂度并不是表示一个程序解决问题需要花多少时间，而是当问题规模扩大后，程序需要的时间长度增长得有多快。也就是说，对于高速处理数据的计算机来说，处理某一个特定数据的效率不能衡量一个程序的好坏，而应该看当这个数据的规模变大到数百倍后，程序运行时间是否还是一样，或者也跟着慢了数百倍，或者变慢了数万倍。不管数据有多大，程序处理花的时间始终是那么多的，我们就说这个程序很好，具有O(1)的时间复杂度，也称常数级复杂度；数据规模变得有多大，花的时间也跟着变得有多长，这个程序的时间复杂度就是O(n)，比如找n个数中的最大值；而像冒泡排序、插入排序等，数据扩大2倍，时间变慢4倍的，属于O(n^2)的复杂度。还有一些穷举类的算法，所需时间长度成几何阶数上涨，这就是O(a^n)的指数级复杂度，甚至O(n!)的阶乘级复杂度。不会存在O(2*n^2)的复杂度，因为前面的那个“2”是系数，根本不会影响到整个程序的时间增长。同样地，O(n^3+n^2)的复杂度也就是O(n^3)的复杂度。因此，我们会说，一个O(0.01*n^3)的程序的效率比O(100*n^2)的效率低，尽管在n很小的时候，前者优于后者，但后者时间随数据规模增长得慢，最终O(n^3)的复杂度将远远超过O(n^2)。我们也说，O(n^100)的复杂度小于O(1.01^n)的复杂度。<br />
容易看出，前面的几类复杂度被分为两种级别，其中后者的复杂度无论如何都远远大于前者：一种是O(1),O(log(n)),O(n^a)等，我们把它叫做多项式级的复杂度，因为它的规模n出现在底数的位置；另一种是O(a^n)和O(n!)型复杂度，它是非多项式级的，其复杂度计算机往往不能承受。当我们在解决一个问题时，我们选择的算法通常都需要是多项式级的复杂度，非多项式级的复杂度需要的时间太多，往往会超时，除非是数据规模非常小。<br />
自然地，人们会想到一个问题：会不会所有的问题都可以找到复杂度为多项式级的算法呢？很遗憾，答案是否定的。有些问题甚至根本不可能找到一个正确的算法来，这称之为“不可解问题”(Undecidable Decision Problem)。The Halting Problem就是一个著名的不可解问题，在我的MSN Space上有过专门的介绍和证明。再比如，输出从1到n这n个数的全排列。不管你用什么方法，你的复杂度都是阶乘级，因为你总得用阶乘级的时间打印出结果来。有人说，这样的“问题”不是一个“正规”的问题，正规的问题是让程序解决一个问题，输出一个“YES”或“NO”（这被称为判定性问题），或者一个什么什么的最优值（这被称为最优化问题）。那么，根据这个定义，我也能举出一个不大可能会有多项式级算法的问题来：Hamilton回路。问题是这样的：给你一个图，问你能否找到一条经过每个顶点一次且恰好一次（不遗漏也不重复）最后又走回来的路（满足这个条件的路径叫做Hamilton回路）。这个问题现在还没有找到多项式级的算法。事实上，这个问题就是我们后面要说的NPC问题。<br />
下面引入P类问题的概念：如果一个问题可以找到一个能在多项式的时间里解决它的算法，那么这个问题就属于P问题。P是英文单词多项式的第一个字母。哪些问题是P类问题呢？通常NOI和NOIP不会出不属于P类问题的题目。我们常见到的一些信息奥赛的题目都是P问题。道理很简单，一个用穷举换来的非多项式级时间的超时程序不会涵盖任何有价值的算法。<br />
接下来引入NP问题的概念。这个就有点难理解了，或者说容易理解错误。在这里强调（回到我竭力想澄清的误区上），NP问题不是非P类问题。NP问题是指可以在多项式的时间里验证一个解的问题。NP问题的另一个定义是，可以在多项式的时间里猜出一个解的问题。比方说，我RP很好，在程序中需要枚举时，我可以一猜一个准。现在某人拿到了一个求最短路径的问题，问从起点到终点是否有一条小于100个单位长度的路线。它根据数据画好了图，但怎么也算不出来，于是来问我：你看怎么选条路走得最少？我说，我RP很好，肯定能随便给你指条很短的路出来。然后我就胡乱画了几条线，说就这条吧。那人按我指的这条把权值加起来一看，嘿，神了，路径长度98，比100小。于是答案出来了，存在比100小的路径。别人会问他这题怎么做出来的，他就可以说，因为我找到了一个比100 小的解。在这个题中，找一个解很困难，但验证一个解很容易。验证一个解只需要O(n)的时间复杂度，也就是说我可以花O(n)的时间把我猜的路径的长度加出来。那么，只要我RP好，猜得准，我一定能在多项式的时间里解决这个问题。我猜到的方案总是最优的，不满足题意的方案也不会来骗我去选它。这就是NP问题。当然有不是NP问题的问题，即你猜到了解但是没用，因为你不能在多项式的时间里去验证它。下面我要举的例子是一个经典的例子，它指出了一个目前还没有办法在多项式的时间里验证一个解的问题。很显然，前面所说的Hamilton回路是NP问题，因为验证一条路是否恰好经过了每一个顶点非常容易。但我要把问题换成这样：试问一个图中是否不存在Hamilton回路。这样问题就没法在多项式的时间里进行验证了，因为除非你试过所有的路，否则你不敢断定它“没有Hamilton回路”。<br />
之所以要定义NP问题，是因为通常只有NP问题才可能找到多项式的算法。我们不会指望一个连多项式地验证一个解都不行的问题存在一个解决它的多项式级的算法。相信读者很快明白，信息学中的号称最困难的问题——“NP问题”，实际上是在探讨NP问题与P类问题的关系。<br />
很显然，所有的P类问题都是NP问题。也就是说，能多项式地解决一个问题，必然能多项式地验证一个问题的解——既然正解都出来了，验证任意给定的解也只需要比较一下就可以了。关键是，人们想知道，是否所有的NP问题都是P类问题。我们可以再用集合的观点来说明。如果把所有P类问题归为一个集合P中，把所有 NP问题划进另一个集合NP中，那么，显然有P属于NP。现在，所有对NP问题的研究都集中在一个问题上，即究竟是否有P=NP？通常所谓的“NP问题”，其实就一句话：证明或推翻P=NP。<br />
NP问题一直都是信息学的巅峰。巅峰，意即很引人注目但难以解决。在信息学研究中，这是一个耗费了很多时间和精力也没有解决的终极问题，好比物理学中的大统一和数学中的歌德巴赫猜想等。<br />
目前为止这个问题还“啃不动”。但是，一个总的趋势、一个大方向是有的。人们普遍认为，P=NP不成立，也就是说，多数人相信，存在至少一个不可能有多项式级复杂度的算法的NP问题。人们如此坚信P≠NP是有原因的，就是在研究NP问题的过程中找出了一类非常特殊的NP问题叫做NP-完全问题，也即所谓的 NPC问题。C是英文单词“完全”的第一个字母。正是NPC问题的存在，使人们相信P≠NP。下文将花大量篇幅介绍NPC问题，你从中可以体会到NPC问题使P=NP变得多么不可思议。<br />
为了说明NPC问题，我们先引入一个概念——约化(Reducibility，有的资料上叫“归约”)。<br />
简单地说，一个问题A可以约化为问题B的含义即是，可以用问题B的解法解决问题A，或者说，问题A可以“变成”问题B。《算法导论》上举了这么一个例子。比如说，现在有两个问题：求解一个一元一次方程和求解一个一元二次方程。那么我们说，前者可以约化为后者，意即知道如何解一个一元二次方程那么一定能解出一元一次方程。我们可以写出两个程序分别对应两个问题，那么我们能找到一个“规则”，按照这个规则把解一元一次方程程序的输入数据变一下，用在解一元二次方程的程序上，两个程序总能得到一样的结果。这个规则即是：两个方程的对应项系数不变，一元二次方程的二次项系数为0。按照这个规则把前一个问题转换成后一个问题，两个问题就等价了。同样地，我们可以说，Hamilton回路可以约化为TSP问题(Travelling Salesman Problem，旅行商问题)：在Hamilton回路问题中，两点相连即这两点距离为0，两点不直接相连则令其距离为1，于是问题转化为在TSP问题中，是否存在一条长为0的路径。Hamilton回路存在当且仅当TSP问题中存在长为0的回路。<br />
“问题A可约化为问题B”有一个重要的直观意义：B的时间复杂度高于或者等于A的时间复杂度。也就是说，问题A不比问题B难。这很容易理解。既然问题A能用问题B来解决，倘若B的时间复杂度比A的时间复杂度还低了，那A的算法就可以改进为B的算法，两者的时间复杂度还是相同。正如解一元二次方程比解一元一次方程难，因为解决前者的方法可以用来解决后者。<br />
很显然，约化具有一项重要的性质：约化具有传递性。如果问题A可约化为问题B，问题B可约化为问题C，则问题A一定可约化为问题C。这个道理非常简单，就不必阐述了。<br />
现在再来说一下约化的标准概念就不难理解了：如果能找到这样一个变化法则，对任意一个程序A的输入，都能按这个法则变换成程序B的输入，使两程序的输出相同，那么我们说，问题A可约化为问题B。<br />
当然，我们所说的“可约化”是指的可“多项式地”约化(Polynomial-time Reducible)，即变换输入的方法是能在多项式的时间里完成的。约化的过程只有用多项式的时间完成才有意义。<br />
好了，从约化的定义中我们看到，一个问题约化为另一个问题，时间复杂度增加了，问题的应用范围也增大了。通过对某些问题的不断约化，我们能够不断寻找复杂度更高，但应用范围更广的算法来代替复杂度虽然低，但只能用于很小的一类问题的算法。再回想前面讲的P和NP问题，联想起约化的传递性，自然地，我们会想问，如果不断地约化上去，不断找到能“通吃”若干小NP问题的一个稍复杂的大NP问题，那么最后是否有可能找到一个时间复杂度最高，并且能“通吃”所有的 NP问题的这样一个超级NP问题？答案居然是肯定的。也就是说，存在这样一个NP问题，所有的NP问题都可以约化成它。换句话说，只要解决了这个问题，那么所有的NP问题都解决了。这种问题的存在难以置信，并且更加不可思议的是，这种问题不只一个，它有很多个，它是一类问题。这一类问题就是传说中的NPC 问题，也就是NP-完全问题。NPC问题的出现使整个NP问题的研究得到了飞跃式的发展。我们有理由相信，NPC问题是最复杂的问题。再次回到全文开头，我们可以看到，人们想表达一个问题不存在多项式的高效算法时应该说它“属于NPC问题”。此时，我的目的终于达到了，我已经把NP问题和NPC问题区别开了。到此为止，本文已经写了近5000字了，我佩服你还能看到这里来，同时也佩服一下自己能写到这里来。<br />
NPC问题的定义非常简单。同时满足下面两个条件的问题就是NPC问题。首先，它得是一个NP问题；然后，所有的NP问题都可以约化到它。证明一个问题是 NPC问题也很简单。先证明它至少是一个NP问题，再证明其中一个已知的NPC问题能约化到它（由约化的传递性，则NPC问题定义的第二条也得以满足；至于第一个NPC问题是怎么来的，下文将介绍），这样就可以说它是NPC问题了。<br />
既然所有的NP问题都能约化成NPC问题，那么只要任意一个NPC问题找到了一个多项式的算法，那么所有的NP问题都能用这个算法解决了，NP也就等于P 了。因此，给NPC找一个多项式算法太不可思议了。因此，前文才说，“正是NPC问题的存在，使人们相信P≠NP”。我们可以就此直观地理解，NPC问题目前没有多项式的有效算法，只能用指数级甚至阶乘级复杂度的搜索。<br />
顺便讲一下NP-Hard问题。NP-Hard问题是这样一种问题，它满足NPC问题定义的第二条但不一定要满足第一条（就是说，NP-Hard问题要比 NPC问题的范围广）。NP-Hard问题同样难以找到多项式的算法，但它不列入我们的研究范围，因为它不一定是NP问题。即使NPC问题发现了多项式级的算法，NP-Hard问题有可能仍然无法得到多项式级的算法。事实上，由于NP-Hard放宽了限定条件，它将有可能比所有的NPC问题的时间复杂度更高从而更难以解决。<br />
不要以为NPC问题是一纸空谈。NPC问题是存在的。确实有这么一个非常具体的问题属于NPC问题。下文即将介绍它。<br />
下文即将介绍逻辑电路问题。这是第一个NPC问题。其它的NPC问题都是由这个问题约化而来的。因此，逻辑电路问题是NPC类问题的“鼻祖”。<br />
逻辑电路问题是指的这样一个问题：给定一个逻辑电路，问是否存在一种输入使输出为True。<br />
什么叫做逻辑电路呢？一个逻辑电路由若干个输入，一个输出，若干“逻辑门”和密密麻麻的线组成。看下面一例，不需要解释你马上就明白了。<br />
<img src="http://www.xmxsuperstar.com/wp-content/uploads/2009/09/NPC1.jpg" alt="NPC1" title="NPC1" width="407" height="143" class="aligncenter size-full wp-image-481" /><br />
这是个较简单的逻辑电路，当输入1、输入2、输入3分别为True、True、False或False、True、False时，输出为True。<br />
有输出无论如何都不可能为True的逻辑电路吗？有。下面就是一个简单的例子。<br />
<img src="http://www.xmxsuperstar.com/wp-content/uploads/2009/09/NPC2.jpg" alt="NPC2" title="NPC2" width="379" height="143" class="aligncenter size-full wp-image-482" /><br />
上面这个逻辑电路中，无论输入是什么，输出都是False。我们就说，这个逻辑电路不存在使输出为True的一组输入。<br />
回到上文，给定一个逻辑电路，问是否存在一种输入使输出为True，这即逻辑电路问题。<br />
逻辑电路问题属于NPC问题。这是有严格证明的。它显然属于NP问题，并且可以直接证明所有的NP问题都可以约化到它（不要以为NP问题有无穷多个将给证明造成不可逾越的困难）。证明过程相当复杂，其大概意思是说任意一个NP问题的输入和输出都可以转换成逻辑电路的输入和输出（想想计算机内部也不过是一些 0和1的运算），因此对于一个NP问题来说，问题转化为了求出满足结果为True的一个输入（即一个可行解）。<br />
有了第一个NPC问题后，一大堆NPC问题就出现了，因为再证明一个新的NPC问题只需要将一个已知的NPC问题约化到它就行了。后来，Hamilton 回路成了NPC问题，TSP问题也成了NPC问题。现在被证明是NPC问题的有很多，任何一个找到了多项式算法的话所有的NP问题都可以完美解决了。因此说，正是因为NPC问题的存在，P=NP变得难以置信。P=NP问题还有许多有趣的东西，有待大家自己进一步的挖掘。攀登这个信息学的巅峰是我们这一代的终极目标。现在我们需要做的，至少是不要把概念弄混淆了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/480/%e8%bd%ac%e4%b8%80%e7%af%87%e5%86%99%e5%be%97%e7%9b%b8%e5%bd%93%e5%a5%bd%e7%9a%84%e6%96%87%e7%ab%a0%ef%bc%9a%e6%be%84%e6%b8%85p%e9%97%ae%e9%a2%98%e3%80%81np%e9%97%ae%e9%a2%98%e3%80%81npc%e9%97%ae.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决PPA源的龟速，在Kubuntu9.04中安装kde4.3</title>
		<link>http://www.xmxsuperstar.com/archives/471/%e8%a7%a3%e5%86%b3ppa%e6%ba%90%e7%9a%84%e9%be%9f%e9%80%9f%ef%bc%8c%e5%9c%a8kubuntu9-04%e4%b8%ad%e5%ae%89%e8%a3%85kde4-3.html</link>
		<comments>http://www.xmxsuperstar.com/archives/471/%e8%a7%a3%e5%86%b3ppa%e6%ba%90%e7%9a%84%e9%be%9f%e9%80%9f%ef%bc%8c%e5%9c%a8kubuntu9-04%e4%b8%ad%e5%ae%89%e8%a3%85kde4-3.html#comments</comments>
		<pubDate>Thu, 13 Aug 2009 16:57:42 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[kubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=471</guid>
		<description><![CDATA[想在kubuntu9.04中升级kde到4.3，按照官方网站的说明在/etc/apt/sources.list里添加： deb http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu jaunty main 最好添加到第一行，要不然可能出问题。 但是这个源实在是慢得无法让人忍受，只有不到1k的速度，好的时候也顶多4k，但是kde的包又大又多。。。 国外的虚拟主机连接这个源的速度却奇快无比，那就用国外虚拟主机的ssh做代理来更新速度就会上去了： 首先启动ssh代理： sudo ssh -qTfnN -D 1234 username@hostdomain 就在1234端口上启动了一个socks5代理 但是apt-get不支持socks5，所以要先安装一个工具tsocks sudo apt-get install tsocks 配置tsocks，让它使用我们上面建立的socks5代理，用root权限编辑/etc/tsocks.conf，修改以下几行： server = 127.0.0.1 # Server type defaults to 4 so we need to specify it as 5 for this one server_type = 5 # The port defaults to 1080 but I've stated it [...]]]></description>
			<content:encoded><![CDATA[<p>想在kubuntu9.04中升级kde到4.3，按照官方网站的说明在/etc/apt/sources.list里添加：</p>
<pre class="brush: bash;">
deb http://ppa.launchpad.net/kubuntu-ppa/backports/ubuntu jaunty main
</pre>
<p>最好添加到第一行，要不然可能出问题。<br />
但是这个源实在是慢得无法让人忍受，只有不到1k的速度，好的时候也顶多4k，但是kde的包又大又多。。。<br />
国外的虚拟主机连接这个源的速度却奇快无比，那就用国外虚拟主机的ssh做代理来更新速度就会上去了：<br />
首先启动ssh代理：</p>
<pre class="brush: bash;">
sudo ssh -qTfnN -D 1234 username@hostdomain
</pre>
<p>就在1234端口上启动了一个socks5代理<br />
但是apt-get不支持socks5，所以要先安装一个工具tsocks</p>
<pre class="brush: bash;">
sudo apt-get install tsocks
</pre>
<p>配置tsocks，让它使用我们上面建立的socks5代理，用root权限编辑/etc/tsocks.conf，修改以下几行：</p>
<pre class="brush: bash;">
server = 127.0.0.1
# Server type defaults to 4 so we need to specify it as 5 for this one
server_type = 5
# The port defaults to 1080 but I've stated it here for clarity
server_port = 1234
</pre>
<p>然后用tsocks运行apt-get</p>
<pre class="brush: bash;">
sudo tsocks apt-get update
sudo tsocks apt-get upgrade
</pre>
<p>这时候下载包的速度就几乎是满速了 <img src='http://www.xmxsuperstar.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':grin:' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/471/%e8%a7%a3%e5%86%b3ppa%e6%ba%90%e7%9a%84%e9%be%9f%e9%80%9f%ef%bc%8c%e5%9c%a8kubuntu9-04%e4%b8%ad%e5%ae%89%e8%a3%85kde4-3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Log4j输出格式控制&#8211;log4j的PatternLayout参数含义</title>
		<link>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html</link>
		<comments>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html#comments</comments>
		<pubDate>Fri, 31 Jul 2009 02:40:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[java]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=468</guid>
		<description><![CDATA[转自：http://www.blogjava.net/Unmi/articles/124106.html 做项目被log4j的输出格式化参数搞烦了，索性把API的相关部分大致翻译一下，原文参见http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html 参数 说明 例子 %c 列出logger名字空间的全称，如果加上{&#60;层数&#62;}表示列出从最内层算起的指定层数的名字空间 log4j配置文件参数举例 输出显示媒介 假设当前logger名字空间是&#8221;a.b.c&#8221; %c a.b.c %c{2} b.c %20c （若名字空间长度小于20，则左边用空格填充） %-20c （若名字空间长度小于20，则右边用空格填充） %.30c （若名字空间长度超过30，截去多余字符） %20.30c （若名字空间长度小于20，则左边用空格填充；若名字空间长度超过30，截去多余字符） %-20.30c （若名字空间长度小于20，则右边用空格填充；若名字空间长度超过30，截去多余字符） %C 列出调用logger的类的全名（包含包路径） 假设当前类是&#8221;org.apache.xyz.SomeClass&#8221; %C org.apache.xyz.SomeClass %C{1} SomeClass %d 显示日志记录时间，{&#60;日期格式&#62;}使用ISO8601定义的日期格式 %d{yyyy/MM/dd HH:mm:ss,SSS} 2005/10/12 22:23:30,117 %d{ABSOLUTE} 22:23:30,117 %d{DATE} 12 Oct 2005 22:23:30,117 %d{ISO8601} 2005-10-12 22:23:30,117 %F 显示调用logger的源文件名 %F MyClass.java %l 输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数 %l MyClass.main(MyClass.java:129) [...]]]></description>
			<content:encoded><![CDATA[<p><em>转自：<a href="http://www.blogjava.net/Unmi/articles/124106.html">http://www.blogjava.net/Unmi/articles/124106.html</a></em><br />
做项目被log4j的输出格式化参数搞烦了，索性把API的相关部分大致翻译一下，原文参见<a href="http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html">http://logging.apache.org/log4j/docs/api/org/apache/log4j/PatternLayout.html</a></p>
<table class="data" border="0">
<tbody>
<tr>
<th>参数</th>
<th>说明</th>
<th colspan="2">例子</th>
</tr>
<tr>
<td rowspan="9">
<div>%c</div>
</td>
<td rowspan="9">列出logger名字空间的全称，如果加上{&lt;层数&gt;}表示列出从最内层算起的指定层数的名字空间</td>
<td>
<div>log4j配置文件参数举例</div>
</td>
<td>
<div>输出显示媒介</div>
</td>
</tr>
<tr>
<td colspan="2">假设当前logger名字空间是&#8221;a.b.c&#8221;</td>
</tr>
<tr>
<td>%c</td>
<td>a.b.c</td>
</tr>
<tr>
<td>%c{2}</td>
<td>b.c</td>
</tr>
<tr>
<td>%20c</td>
<td>（若名字空间长度小于20，则左边用空格填充）</td>
</tr>
<tr>
<td>%-20c</td>
<td>（若名字空间长度小于20，则右边用空格填充）</td>
</tr>
<tr>
<td>%.30c</td>
<td>（若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td>%20.30c</td>
<td>（若名字空间长度小于20，则左边用空格填充；若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td>%-20.30c</td>
<td>（若名字空间长度小于20，则右边用空格填充；若名字空间长度超过30，截去多余字符）</td>
</tr>
<tr>
<td rowspan="3">
<div>%C</div>
</td>
<td>列出调用logger的类的全名（包含包路径）</td>
<td>假设当前类是&#8221;org.apache.xyz.SomeClass&#8221;</td>
</tr>
<tr>
<td>%C</td>
<td>org.apache.xyz.SomeClass</td>
</tr>
<tr>
<td>%C{1}</td>
<td>SomeClass</td>
</tr>
<tr>
<td rowspan="4">
<div>%d</div>
</td>
<td rowspan="4">显示日志记录时间，{&lt;日期格式&gt;}使用ISO8601定义的日期格式</td>
<td>%d{yyyy/MM/dd HH:mm:ss,SSS}</td>
<td>2005/10/12 22:23:30,117</td>
</tr>
<tr>
<td>%d{ABSOLUTE}</td>
<td>22:23:30,117</td>
</tr>
<tr>
<td>%d{DATE}</td>
<td>12 Oct 2005 22:23:30,117</td>
</tr>
<tr>
<td>%d{ISO8601}</td>
<td>2005-10-12 22:23:30,117</td>
</tr>
<tr>
<td>
<div>%F</div>
</td>
<td>显示调用logger的源文件名</td>
<td>%F</td>
<td>MyClass.java</td>
</tr>
<tr>
<td>
<div>%l</div>
</td>
<td>输出日志事件的发生位置，包括类目名、发生的线程，以及在代码中的行数</td>
<td>%l</td>
<td>MyClass.main(MyClass.java:129)</td>
</tr>
<tr>
<td>
<div>%L</div>
</td>
<td>显示调用logger的代码行</td>
<td>%L</td>
<td>129</td>
</tr>
<tr>
<td>
<div>%m</div>
</td>
<td>显示输出消息</td>
<td>%m</td>
<td>This is a message for debug.</td>
</tr>
<tr>
<td>
<div>%M</div>
</td>
<td>显示调用logger的方法名</td>
<td>%M</td>
<td>main</td>
</tr>
<tr>
<td>
<div>%n</div>
</td>
<td>当前平台下的换行符</td>
<td>%n</td>
<td>Windows平台下表示rn<br />
UNIX平台下表示n</td>
</tr>
<tr>
<td>
<div>%p</div>
</td>
<td>显示该条日志的优先级</td>
<td>%p</td>
<td>INFO</td>
</tr>
<tr>
<td>
<div>%r</div>
</td>
<td>显示从程序启动时到记录该条日志时已经经过的毫秒数</td>
<td>%r</td>
<td>1215</td>
</tr>
<tr>
<td>
<div>%t</div>
</td>
<td>输出产生该日志事件的线程名</td>
<td>%t</td>
<td>MyClass</td>
</tr>
<tr>
<td rowspan="2">
<div>%x</div>
</td>
<td rowspan="2">按NDC（Nested Diagnostic Context，线程堆栈）顺序输出日志</td>
<td colspan="2">假设某程序调用顺序是MyApp调用com.foo.Bar</td>
</tr>
<tr>
<td>%c %x &#8211; %m%n</td>
<td>MyApp &#8211; Call com.foo.Bar.<br />
com.foo.Bar &#8211; Log in Bar<br />
MyApp &#8211; Return to MyApp.</td>
</tr>
<tr>
<td>
<div>%X</div>
</td>
<td>按MDC（Mapped Diagnostic Context，线程映射表）输出日志。通常用于多个客户端连接同一台服务器，方便服务器区分是那个客户端访问留下来的日志。</td>
<td>%X{5}</td>
<td>（记录代号为5的客户端的日志）</td>
</tr>
<tr>
<td>
<div>%%</div>
</td>
<td>显示一个百分号</td>
<td>%%</td>
<td>%</td>
</tr>
</tbody>
</table>
<p>列了这么多，举几个实际的例子吧，比如log4j.properties的内容为：</p>
<table border="0">
<tbody>
<tr>
<td>#log4j config<br />
log4j.rootLogger=DEBUG,OUTPUT</p>
<p>log4j.appender.OUTPUT.layout=org.apache.log4j.PatternLayout<br />
log4j.appender.OUTPUT.layout.ConversionPattern=%d{DATE} %-4r [%t] %-5p %c %x &#8211; %m%n<br />
……</td>
</tr>
</tbody>
</table>
<p>那么一个可能的输出是：</p>
<table border="0">
<tbody>
<tr>
<td>
12 Oct 2005 22:23:30,117 0 [main] INFO MyApp &#8211; Entering application.<br />
……<br />
12 Oct 2005 22:23:30,162 45 [main] INFO MyApp &#8211; Exiting application.
</td>
</tr>
</tbody>
</table>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/468/log4j%e8%be%93%e5%87%ba%e6%a0%bc%e5%bc%8f%e6%8e%a7%e5%88%b6-log4j%e7%9a%84patternlayout%e5%8f%82%e6%95%b0%e5%90%ab%e4%b9%89.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>很好，邪恶的Google终于被河蟹了</title>
		<link>http://www.xmxsuperstar.com/archives/464/%e5%be%88%e5%a5%bd%ef%bc%8c%e9%82%aa%e6%81%b6%e7%9a%84google%e7%bb%88%e4%ba%8e%e8%a2%ab%e6%b2%b3%e8%9f%b9%e4%ba%86.html</link>
		<comments>http://www.xmxsuperstar.com/archives/464/%e5%be%88%e5%a5%bd%ef%bc%8c%e9%82%aa%e6%81%b6%e7%9a%84google%e7%bb%88%e4%ba%8e%e8%a2%ab%e6%b2%b3%e8%9f%b9%e4%ba%86.html#comments</comments>
		<pubDate>Wed, 24 Jun 2009 14:15:10 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[google]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=464</guid>
		<description><![CDATA[晚上回来习惯性地打开gmail看邮件，竟然死活登不进，怀疑gmail挂了，然后发现reader，document，calendar，photos，sites通通打不开了。拿出ssh连上去，啥问题也没有，于是结论大快人心：传播的色情的低俗Google终于被河蟹了。然后发现Google.cn居然还没有被河蟹，看来工作还不到位，希望明天也被河蟹。现在等明天cnbeta上出新闻，看大家吵架，今天就先洗洗睡了。]]></description>
			<content:encoded><![CDATA[<p>晚上回来习惯性地打开gmail看邮件，竟然死活登不进，怀疑gmail挂了，然后发现reader，document，calendar，photos，sites通通打不开了。拿出ssh连上去，啥问题也没有，于是结论大快人心：传播的色情的低俗Google终于被河蟹了。然后发现Google.cn居然还没有被河蟹，看来工作还不到位，希望明天也被河蟹。现在等明天cnbeta上出新闻，看大家吵架，今天就先洗洗睡了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/464/%e5%be%88%e5%a5%bd%ef%bc%8c%e9%82%aa%e6%81%b6%e7%9a%84google%e7%bb%88%e4%ba%8e%e8%a2%ab%e6%b2%b3%e8%9f%b9%e4%ba%86.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>又换了次主机</title>
		<link>http://www.xmxsuperstar.com/archives/461/%e5%8f%88%e6%8d%a2%e4%ba%86%e6%ac%a1%e4%b8%bb%e6%9c%ba.html</link>
		<comments>http://www.xmxsuperstar.com/archives/461/%e5%8f%88%e6%8d%a2%e4%ba%86%e6%ac%a1%e4%b8%bb%e6%9c%ba.html#comments</comments>
		<pubDate>Thu, 04 Jun 2009 15:48:27 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[host]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=461</guid>
		<description><![CDATA[几天前发现adsl访问这个blog巨慢无比，居然比一个免费的空间还慢，火大，于是换成了某国外著名廉价主机。用ssh把打包的文件传进服务器再解压，比用ftp传输一大堆零碎的小文件快多了。由于没有改域名，整个转移过程不到10分钟就完成了。最后修改dns解析，大功告成。现在速度终于可以接受了，晚上用FileZilla从服务器上拖一个大文件，发现竟有350kb/s]]></description>
			<content:encoded><![CDATA[<p>几天前发现adsl访问这个blog巨慢无比，居然比一个免费的空间还慢，火大，于是换成了某国外著名廉价主机。用ssh把打包的文件传进服务器再解压，比用ftp传输一大堆零碎的小文件快多了。由于没有改域名，整个转移过程不到10分钟就完成了。最后修改dns解析，大功告成。现在速度终于可以接受了，晚上用FileZilla从服务器上拖一个大文件，发现竟有350kb/s <img src='http://www.xmxsuperstar.com/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/461/%e5%8f%88%e6%8d%a2%e4%ba%86%e6%ac%a1%e4%b8%bb%e6%9c%ba.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>如何发垃圾邮件</title>
		<link>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html</link>
		<comments>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html#comments</comments>
		<pubDate>Fri, 29 May 2009 07:22:29 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[mail]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=459</guid>
		<description><![CDATA[比如某天我想干一件十分无聊的事情，我想给一个叫testname@gmail.com的邮件账户发送100封垃圾邮件，当然不能用真实的邮件帐号发，得用一个假的比如：noname@nodomain.com 首先，我们得知道gamil的投递服务器地址，在命令行中输入nslookup命令，然后输入set type=mx，接着输入gmail.com，出来几条记录，最后有一行：gmail-smtp-in.l.google.com internet address = 209.85.222.41，好投递服务器就是它了。 经过以上准备我们就可以写个程序发垃圾邮件了，当然数量可以随便定了，可以设一个很无聊的大数字，直接把对方的邮箱挤爆掉，当然某些投递服务器比较智能，一次投递给同一个帐号的邮件多了会拒绝的 java实现代码如下： import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Mail { private static final String CRLF = &#34;\r\n&#34;; public static void main(String[] args) { // 循环发送邮件 for (int i = 0; i &#60; 100; ++i) { System.out.println(&#34;++++++++++++++&#34; + (i + 1) + &#34;++++++++++++++++++++&#34;); [...]]]></description>
			<content:encoded><![CDATA[<p>比如某天我想干一件十分无聊的事情，我想给一个叫testname@gmail.com的邮件账户发送100封垃圾邮件，当然不能用真实的邮件帐号发，得用一个假的比如：noname@nodomain.com<br />
首先，我们得知道gamil的投递服务器地址，在命令行中输入nslookup命令，然后输入set type=mx，接着输入gmail.com，出来几条记录，最后有一行：gmail-smtp-in.l.google.com      internet address = 209.85.222.41，好投递服务器就是它了。<br />
经过以上准备我们就可以写个程序发垃圾邮件了，当然数量可以随便定了，可以设一个很无聊的大数字，直接把对方的邮箱挤爆掉，当然某些投递服务器比较智能，一次投递给同一个帐号的邮件多了会拒绝的<br />
java实现代码如下：</p>
<pre class="brush: java;">
import java.io.IOException;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Mail {
	private static final String CRLF = &quot;\r\n&quot;;

	public static void main(String[] args) {
		// 循环发送邮件
		for (int i = 0; i &lt; 100; ++i) {
			System.out.println(&quot;++++++++++++++&quot; + (i + 1)
					+ &quot;++++++++++++++++++++&quot;);
			send();
		}

	}

	private static void send() {
		PrintStream out = null;
		Scanner in = null;
		Socket smtpSocket = null;
		try {
			smtpSocket = new Socket(&quot;gmail-smtp-in.l.google.com&quot;, 25);
			out = new PrintStream(smtpSocket.getOutputStream());
			in = new Scanner(smtpSocket.getInputStream());
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		if (out == null || in == null) {
			return;
		}

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;helo nodomain.com&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;mail from: &lt;noname@nodomain.com&gt;&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;rcpt to: &lt;testname@gmail.com&gt;&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;data&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;from: &lt;noname@nodomain.com&gt;&quot; + CRLF);
		out.print(&quot;to: &lt;testname@gmail.com&gt;&quot; + CRLF);
		out.print(&quot;subject: test mail&quot; + CRLF);
		out.print(&quot;&quot; + CRLF);
		out.print(&quot;balabalabalabalabala&quot; + CRLF);
		out.print(&quot;&quot; + CRLF);
		out.print(&quot;.&quot; + CRLF);

		System.out.println(&quot;s:&quot; + in.nextLine());

		out.print(&quot;quit&quot; + CRLF);
		System.out.println(&quot;s:&quot; + in.nextLine());

		in.close();
		out.close();
		try {
			smtpSocket.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/459/%e5%a6%82%e4%bd%95%e5%8f%91%e5%9e%83%e5%9c%be%e9%82%ae%e4%bb%b6.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>换了个主题，改了一堆东西</title>
		<link>http://www.xmxsuperstar.com/archives/458/%e6%8d%a2%e4%ba%86%e4%b8%aa%e4%b8%bb%e9%a2%98%ef%bc%8c%e6%94%b9%e4%ba%86%e4%b8%80%e5%a0%86%e4%b8%9c%e8%a5%bf.html</link>
		<comments>http://www.xmxsuperstar.com/archives/458/%e6%8d%a2%e4%ba%86%e4%b8%aa%e4%b8%bb%e9%a2%98%ef%bc%8c%e6%94%b9%e4%ba%86%e4%b8%80%e5%a0%86%e4%b8%9c%e8%a5%bf.html#comments</comments>
		<pubDate>Sun, 10 May 2009 06:54:14 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=458</guid>
		<description><![CDATA[原先用的NeoEase的iNove主题用的人太多了，时间也长了觉得腻了，于是换成了现在这个Elegant Box，同样是NeoEase同学出品。不得不说NeoEase出品必是精品，几款主题都大合我的口味。 当然自己也改了些东西： 加了一个Twitter模版 改了links模板，使其能按分类显示 修改了blog管理员回复留言的样式，以便与访客的留言区分 添加了blog中用于显示数据的表格样式 这几天在尝试自己做主题，无奈，总是那样丑，还是先用别人的精品再说。]]></description>
			<content:encoded><![CDATA[<p>原先用的NeoEase的<a href="http://www.neoease.com/inove/">iNove</a>主题用的人太多了，时间也长了觉得腻了，于是换成了现在这个<a href="http://www.neoease.com/elegant-box/">Elegant Box</a>，同样是NeoEase同学出品。不得不说NeoEase出品必是精品，几款主题都大合我的口味。<br />
当然自己也改了些东西：</p>
<ul>
<li>加了一个Twitter模版</li>
<li>改了<a href="http://www.xmxsuperstar.com/?p=333">links模板</a>，使其能按分类显示</li>
<li>修改了blog管理员回复留言的样式，以便与访客的留言区分</li>
<li>添加了blog中用于显示数据的表格样式</li>
</ul>
<p>这几天在尝试自己做主题，无奈，总是那样丑，还是先用别人的精品再说。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/458/%e6%8d%a2%e4%ba%86%e4%b8%aa%e4%b8%bb%e9%a2%98%ef%bc%8c%e6%94%b9%e4%ba%86%e4%b8%80%e5%a0%86%e4%b8%9c%e8%a5%bf.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>KUbuntu9.04折腾经过</title>
		<link>http://www.xmxsuperstar.com/archives/450/kubuntu904%e6%8a%98%e8%85%be%e7%bb%8f%e8%bf%87.html</link>
		<comments>http://www.xmxsuperstar.com/archives/450/kubuntu904%e6%8a%98%e8%85%be%e7%bb%8f%e8%bf%87.html#comments</comments>
		<pubDate>Tue, 28 Apr 2009 09:41:47 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=450</guid>
		<description><![CDATA[KUbuntu9.04发布后我在虚拟机里尝试了下，感觉kde4确实已经到了可用的地步。于是直接装在我的笔记本上，没想到装上之后networkmanager怎么也连不上无线网络。没办法，将networkmanager干掉，想装wicd，但此时又没有网络，apt显然用不了，在别人机器上将wicd包下回来，结果一堆的依赖，无语，放弃，手动编辑/etc/network/interfaces： iface wlan0 inet dhcp wireless-essid TP-LINK wireless-key AAAAABBBBB auto waln0 进入桌面后，发现界面总是莫名的死掉，鼠标可以移动，但点击无反应，键盘也不响应，根据这里将intel的显卡驱动降级解决了。 一开始装了ibus输入法，结果就是启动不了。。。最后装了最不愿装的scim居然没有冲突，可用]]></description>
			<content:encoded><![CDATA[<p>KUbuntu9.04发布后我在虚拟机里尝试了下，感觉kde4确实已经到了可用的地步。于是直接装在我的笔记本上，没想到装上之后networkmanager怎么也连不上无线网络。没办法，将networkmanager干掉，想装wicd，但此时又没有网络，apt显然用不了，在别人机器上将wicd包下回来，结果一堆的依赖，无语，放弃，手动编辑/etc/network/interfaces：</p>
<pre class="brush: bash;">
iface wlan0 inet dhcp
wireless-essid TP-LINK
wireless-key AAAAABBBBB
auto waln0
</pre>
<p>进入桌面后，发现界面总是莫名的死掉，鼠标可以移动，但点击无反应，键盘也不响应，根据<a href="https://wiki.ubuntu.com/ReinhardTartler/X/RevertingIntelDriverTo2.4">这里</a>将intel的显卡驱动降级解决了。<br />
一开始装了ibus输入法，结果就是启动不了。。。最后装了最不愿装的scim居然没有冲突，可用 <img src='http://www.xmxsuperstar.com/wp-includes/images/smilies/icon_mrgreen.gif' alt=':mrgreen:' class='wp-smiley' />  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/450/kubuntu904%e6%8a%98%e8%85%be%e7%bb%8f%e8%bf%87.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>折腾</title>
		<link>http://www.xmxsuperstar.com/archives/444/%e6%8a%98%e8%85%be.html</link>
		<comments>http://www.xmxsuperstar.com/archives/444/%e6%8a%98%e8%85%be.html#comments</comments>
		<pubDate>Sat, 11 Apr 2009 15:17:24 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=444</guid>
		<description><![CDATA[迁移blog数据折腾了一下午。今天一上QQ就看到酋长在线，于是叫他帮我把新买空间的主域名换了，然后，迁移数据，纯粹体力活儿啊。期间几个插件让我很郁闷，比如WP-Cumulus的尺寸我一开始在Settings里改，怎么改都没反应，暴怒，突然记起来得在widgets里改，无语，很奇怪设置。当然迁移的过程中顺便升级wordpress到2.7.1，把4个插件自动升级到了最新版本。以前的空间不支持zip解压，自动升级一直用不了，现在爽了。发现升级后的SyntaxHighlighter Evolved相当不错了啊，能够自动换行了，至少解决了以前在firefox下一行过长的问题了。 最麻烦的事情是导入以前保存的Links，用wordpress自带的import blogroll导入以前blog的Links全在一个category下面，郁闷，一个一个手动改过来的，wordpress在做import和export功能的时候为什么不包括Links呢？诡异。。。]]></description>
			<content:encoded><![CDATA[<p>迁移blog数据折腾了一下午。今天一上QQ就看到酋长在线，于是叫他帮我把新买空间的主域名换了，然后，迁移数据，纯粹体力活儿啊。期间几个插件让我很郁闷，比如WP-Cumulus的尺寸我一开始在Settings里改，怎么改都没反应，暴怒，突然记起来得在widgets里改，无语，很奇怪设置。当然迁移的过程中顺便升级wordpress到2.7.1，把4个插件自动升级到了最新版本。以前的空间不支持zip解压，自动升级一直用不了，现在爽了。发现升级后的SyntaxHighlighter Evolved相当不错了啊，能够自动换行了，至少解决了以前在firefox下一行过长的问题了。</p>
<p>最麻烦的事情是导入以前保存的Links，用wordpress自带的import blogroll导入以前blog的Links全在一个category下面，郁闷，一个一个手动改过来的，wordpress在做import和export功能的时候为什么不包括Links呢？诡异。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/444/%e6%8a%98%e8%85%be.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>把iNove主题的Links模板改成了按分类显示</title>
		<link>http://www.xmxsuperstar.com/archives/333/%e6%8a%8ainove%e4%b8%bb%e9%a2%98%e7%9a%84links%e6%a8%a1%e6%9d%bf%e6%94%b9%e6%88%90%e4%ba%86%e6%8c%89%e5%88%86%e7%b1%bb%e6%98%be%e7%a4%ba.html</link>
		<comments>http://www.xmxsuperstar.com/archives/333/%e6%8a%8ainove%e4%b8%bb%e9%a2%98%e7%9a%84links%e6%a8%a1%e6%9d%bf%e6%94%b9%e6%88%90%e4%ba%86%e6%8c%89%e5%88%86%e7%b1%bb%e6%98%be%e7%a4%ba.html#comments</comments>
		<pubDate>Fri, 16 Jan 2009 12:28:37 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=333</guid>
		<description><![CDATA[iNove主题真的很精致，但是它的Links模板却不能按分类显示却让我很不爽，今天搞了搞，终于可以按分类显示了。 改后的links.php： &#60;?php /* Template Name: Links */ ?&#62; &#60;?php get_header(); ?&#62; &#60;?php $options = get_option('inove_options'); ?&#62; &#60;?php if (have_posts()) : the_post(); update_post_caches($posts); ?&#62; &#60;div class=&#34;post&#34; id=&#34;post-&#60;?php the_ID(); ?&#62;&#34;&#62; &#60;h2&#62;&#60;?php the_title(); ?&#62;&#60;/h2&#62; &#60;div class=&#34;info&#34;&#62; &#60;span class=&#34;date&#34;&#62;&#60;?php the_modified_time(__('F jS, Y', 'inove')); ?&#62;&#60;/span&#62; &#60;div class=&#34;act&#34;&#62; &#60;?php if ($comments &#124;&#124; comments_open()) : ?&#62; &#60;span class=&#34;comments&#34;&#62;&#60;a href=&#34;#comments&#34;&#62;&#60;?php _e('Goto comments', [...]]]></description>
			<content:encoded><![CDATA[<p>iNove主题真的很精致，但是它的Links模板却不能按分类显示却让我很不爽，今天搞了搞，终于可以按分类显示了。</p>
<p>改后的links.php：</p>
<pre class="brush: php;">
&lt;?php
/*
Template Name: Links
*/
?&gt;

&lt;?php get_header(); ?&gt;
&lt;?php $options = get_option('inove_options'); ?&gt;

&lt;?php if (have_posts()) : the_post(); update_post_caches($posts); ?&gt;

	&lt;div class=&quot;post&quot; id=&quot;post-&lt;?php the_ID(); ?&gt;&quot;&gt;
		&lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
		&lt;div class=&quot;info&quot;&gt;
			&lt;span class=&quot;date&quot;&gt;&lt;?php the_modified_time(__('F jS, Y', 'inove')); ?&gt;&lt;/span&gt;
			&lt;div class=&quot;act&quot;&gt;
				&lt;?php if ($comments || comments_open()) : ?&gt;
					&lt;span class=&quot;comments&quot;&gt;&lt;a href=&quot;#comments&quot;&gt;&lt;?php _e('Goto comments', 'inove'); ?&gt;&lt;/a&gt;&lt;/span&gt;
					&lt;span class=&quot;addcomment&quot;&gt;&lt;a href=&quot;#respond&quot;&gt;&lt;?php _e('Leave a comment', 'inove'); ?&gt;&lt;/a&gt;&lt;/span&gt;
				&lt;?php endif; ?&gt;
				&lt;?php if ( $user_ID ) : ?&gt;
					&lt;span class=&quot;editlinks&quot;&gt;&lt;a href=&quot;&lt;?php echo get_settings('home'); ?&gt;/wp-admin/link-manager.php&quot;&gt;&lt;?php _e('Edit links', 'inove'); ?&gt;&lt;/a&gt;&lt;/span&gt;
				&lt;?php endif; ?&gt;
				&lt;?php edit_post_link(__('Edit', 'inove'), '&lt;span class=&quot;editpost&quot;&gt;', '&lt;/span&gt;'); ?&gt;
				&lt;div class=&quot;fixed&quot;&gt;&lt;/div&gt;
			&lt;/div&gt;
			&lt;div class=&quot;fixed&quot;&gt;&lt;/div&gt;
		&lt;/div&gt;
		&lt;div class=&quot;content&quot;&gt;
			&lt;?php
				$output = '';
				$cats = get_terms('link_category');
				foreach ( (array) $cats as $cat ) {
					$bookmarks = get_bookmarks(array('category'=&gt;$cat-&gt;term_id));
					if ( empty($bookmarks) )
						continue;
					$catname = apply_filters( &quot;link_category&quot;, $cat-&gt;name );
					$output .= '&lt;div class=&quot;boxcaption&quot;&gt;&lt;h3&gt;';
					$output .= $catname;
					$output .= '&lt;/h3&gt;&lt;/div&gt;';
					$output .= &quot;\n&quot;;
					$output .= '&lt;div class=&quot;box linkcat&quot;&gt;';
					$output .= &quot;\n&quot;;
					$output .= '&lt;ul&gt;';
					$output .= &quot;\n&quot;;
					$output .= _walk_bookmarks($bookmarks);
					$output .= '&lt;/ul&gt;';
					$output .= &quot;\n&quot;;
					$output .= '&lt;div class=&quot;fixed&quot;&gt;&lt;/div&gt;';
					$output .= &quot;\n&quot;;
					$output .= '&lt;/div&gt;';
					$output .= &quot;\n&quot;;
				}
				echo $output;
			?&gt;

			&lt;?php the_content(); ?&gt;
			&lt;div class=&quot;fixed&quot;&gt;&lt;/div&gt;
		&lt;/div&gt;
	&lt;/div&gt;

&lt;?php else : ?&gt;
	&lt;div class=&quot;errorbox&quot;&gt;
		&lt;?php _e('Sorry, no posts matched your criteria.', 'inove'); ?&gt;
	&lt;/div&gt;
&lt;?php endif; ?&gt;

&lt;?php include('templates/comments.php'); ?&gt;

&lt;?php get_footer(); ?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/333/%e6%8a%8ainove%e4%b8%bb%e9%a2%98%e7%9a%84links%e6%a8%a1%e6%9d%bf%e6%94%b9%e6%88%90%e4%ba%86%e6%8c%89%e5%88%86%e7%b1%bb%e6%98%be%e7%a4%ba.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>修改VC6中源代码的字体</title>
		<link>http://www.xmxsuperstar.com/archives/315/%e4%bf%ae%e6%94%b9vc6%e4%b8%ad%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e5%ad%97%e4%bd%93.html</link>
		<comments>http://www.xmxsuperstar.com/archives/315/%e4%bf%ae%e6%94%b9vc6%e4%b8%ad%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e5%ad%97%e4%bd%93.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 15:22:10 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=315</guid>
		<description><![CDATA[最近很无奈的要用VC6环境编程，但是VC6源代码默认使用的Fixedsys字体简直让我抓狂。但是VC6的选项里面可以选择使用的字体只有那么有限的几个，比如Courier New，Consolas就没有，没办法只好改注册表： HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Source Window 下面改掉FontFace就是了。]]></description>
			<content:encoded><![CDATA[<p>最近很无奈的要用VC6环境编程，但是VC6源代码默认使用的Fixedsys字体简直让我抓狂。但是VC6的选项里面可以选择使用的字体只有那么有限的几个，比如Courier New，Consolas就没有，没办法只好改注册表：</p>
<pre>HKEY_CURRENT_USER\Software\Microsoft\DevStudio\6.0\Format\Source Window</pre>
<p>下面改掉FontFace就是了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/315/%e4%bf%ae%e6%94%b9vc6%e4%b8%ad%e6%ba%90%e4%bb%a3%e7%a0%81%e7%9a%84%e5%ad%97%e4%bd%93.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ubuntu终端gnome-terminal字体难看的解决办法</title>
		<link>http://www.xmxsuperstar.com/archives/313/ubuntu%e7%bb%88%e7%ab%afgnome-terminal%e5%ad%97%e4%bd%93%e9%9a%be%e7%9c%8b%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html</link>
		<comments>http://www.xmxsuperstar.com/archives/313/ubuntu%e7%bb%88%e7%ab%afgnome-terminal%e5%ad%97%e4%bd%93%e9%9a%be%e7%9c%8b%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 03:26:40 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=313</guid>
		<description><![CDATA[一开始想用文泉驿的正黑等宽字体做终端字体，但是在gnome-terminal中却是无比的难看，一开始以为是文泉驿的正黑没有hitting信息的原因，后来换成Consolas发现在gnome-terminal和firefox中一样也是差距巨大，在gnome-terminal中就像是根本没有进行次像素平滑一样。后来在这里找到了原因和解决办法： 修改:/etc/fonts/conf.d/10-no-sub-pixel.conf 将 &#60;edit name=&#8221;rgba&#8221; mode=&#8221;assign&#8221;&#62;&#60;const&#62;none&#60;/const&#62;&#60;/edit&#62; 改成： &#60;edit name=&#8221;rgba&#8221; mode=&#8221;assign&#8221;&#62;&#60;const&#62;rgb&#60;/const&#62;&#60;/edit&#62;]]></description>
			<content:encoded><![CDATA[<p>一开始想用文泉驿的正黑等宽字体做终端字体，但是在gnome-terminal中却是无比的难看，一开始以为是文泉驿的正黑没有hitting信息的原因，后来换成Consolas发现在gnome-terminal和firefox中一样也是差距巨大，在gnome-terminal中就像是根本没有进行次像素平滑一样。后来在<a href="https://bugs.launchpad.net/gnome-terminal/+bug/190848/comments/20">这里</a>找到了原因和<strong><span style="color: #ff0000;"><a href="http://www.xmxsuperstar.com/archives/510/ubuntu-8-04-gnome-terminal-%e5%ad%97%e4%bd%93%e6%b8%b2%e6%9f%93%e9%97%ae%e9%a2%98.html">解决办法</a></span></strong>：<br />
<del datetime="2010-01-30T13:48:44+00:00"><br />
修改:/etc/fonts/conf.d/10-no-sub-pixel.conf 将</del><br />
<span style="text-decoration: line-through;">&lt;edit name=&#8221;rgba&#8221; mode=&#8221;assign&#8221;&gt;&lt;const&gt;none&lt;/const&gt;&lt;/edit&gt;</span><del datetime="2010-01-30T13:48:44+00:00"><br />
改成：</del><br />
<span style="text-decoration: line-through;">&lt;edit name=&#8221;rgba&#8221; mode=&#8221;assign&#8221;&gt;&lt;const&gt;rgb&lt;/const&gt;&lt;/edit&gt;</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/313/ubuntu%e7%bb%88%e7%ab%afgnome-terminal%e5%ad%97%e4%bd%93%e9%9a%be%e7%9c%8b%e7%9a%84%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Ubuntu英文环境ibus不能激活输入法解决办法</title>
		<link>http://www.xmxsuperstar.com/archives/309/ubuntu%e8%8b%b1%e6%96%87%e7%8e%af%e5%a2%83ibus%e4%b8%8d%e8%83%bd%e6%bf%80%e6%b4%bb%e8%be%93%e5%85%a5%e6%b3%95%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html</link>
		<comments>http://www.xmxsuperstar.com/archives/309/ubuntu%e8%8b%b1%e6%96%87%e7%8e%af%e5%a2%83ibus%e4%b8%8d%e8%83%bd%e6%bf%80%e6%b4%bb%e8%be%93%e5%85%a5%e6%b3%95%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html#comments</comments>
		<pubDate>Wed, 14 Jan 2009 02:28:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ibus]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=309</guid>
		<description><![CDATA[参考了ubuntu论坛上的一个帖子，不过我没那么麻烦，只要编辑~/.profile文件，在最后添上以下几行： # Start Input Bus export XMODIFIERS=&#34;@im=ibus&#34; export GTK_IM_MODULE=&#34;ibus&#34; export QT_IM_MODULE=&#34;ibus&#34; # qt3 is not supported currently ibus &#38; 保存退出。Log out再Log in就可以了]]></description>
			<content:encoded><![CDATA[<p>参考了<a href="http://forum.ubuntu.org.cn/viewtopic.php?f=8&amp;t=157492">ubuntu论坛上的一个帖子</a>，不过我没那么麻烦，只要编辑~/.profile文件，在最后添上以下几行：</p>
<pre class="brush: bash;">
# Start Input Bus
export XMODIFIERS=&quot;@im=ibus&quot;
export GTK_IM_MODULE=&quot;ibus&quot;
export QT_IM_MODULE=&quot;ibus&quot;      # qt3 is not supported currently
ibus &amp;
</pre>
<p>保存退出。Log out再Log in就可以了</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/309/ubuntu%e8%8b%b1%e6%96%87%e7%8e%af%e5%a2%83ibus%e4%b8%8d%e8%83%bd%e6%bf%80%e6%b4%bb%e8%be%93%e5%85%a5%e6%b3%95%e8%a7%a3%e5%86%b3%e5%8a%9e%e6%b3%95.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Elementary Icons</title>
		<link>http://www.xmxsuperstar.com/archives/287/elementary-icons.html</link>
		<comments>http://www.xmxsuperstar.com/archives/287/elementary-icons.html#comments</comments>
		<pubDate>Fri, 02 Jan 2009 22:48:24 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[icons]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=287</guid>
		<description><![CDATA[原文 Elementary Icons是一款漂亮的Gnome图标主题。elementary Icons的作者是DanRabbit。除了elementary Icons之外。还有一整套的elementary系列。 下载elementary Icons 打包下载整套主题]]></description>
			<content:encoded><![CDATA[<div id="attachment_288" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.xmxsuperstar.com/wp-content/uploads/2009/01/elementary_icons_by_danrabbit.png"><img class="size-full wp-image-288" title="elementary_icons_by_danrabbit" src="http://www.xmxsuperstar.com/wp-content/uploads/2009/01/elementary_icons_by_danrabbit.png" alt="elementary icons by danrabbit" width="480" height="272" /></a><p class="wp-caption-text">elementary icons by danrabbit</p></div>
<p><a href="http://l-wy.cn/2008/12/27/elementary-icons/" target="_blank">原文</a><br />
Elementary Icons是一款漂亮的Gnome图标主题。elementary Icons的作者是<a href="http://danrabbit.deviantart.com/" target="_blank">DanRabbit</a>。除了elementary Icons之外。还有一整套的elementary系列。</p>
<p><a href="http://danrabbit.deviantart.com/art/elementary-Icons-65437279" target="_blank">下载elementary Icons</a></p>
<p><a href="http://dl.getdropbox.com/u/227765/elementary%202.0.7z" target="_blank">打包下载整套主题</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/287/elementary-icons.html/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>opensuse11.1 比kubuntu8.10给我的失望小多了</title>
		<link>http://www.xmxsuperstar.com/archives/272/opensuse111-%e6%af%94kubuntu810%e7%bb%99%e6%88%91%e7%9a%84%e5%a4%b1%e6%9c%9b%e5%b0%8f%e5%a4%9a%e4%ba%86.html</link>
		<comments>http://www.xmxsuperstar.com/archives/272/opensuse111-%e6%af%94kubuntu810%e7%bb%99%e6%88%91%e7%9a%84%e5%a4%b1%e6%9c%9b%e5%b0%8f%e5%a4%9a%e4%ba%86.html#comments</comments>
		<pubDate>Sat, 20 Dec 2008 10:38:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kde]]></category>
		<category><![CDATA[opensuse]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=272</guid>
		<description><![CDATA[昨天把opensuse11.1拖了下来，在虚拟机里试了试，当然是试kde4.1桌面。 官方的特性列表上说这个版本中用的Amarok是刚刚发布的2.0版，但是奇怪的是刚装完系统时里面的Amarok明明是1.4版。好在dvd上就有2.0的包，于是替换掉。界面果然比老版华丽，和预料中一样，mp3的tag都是乱码。 kubuntu8.10在我的笔记本上开始菜单第一次出现的时候总是会花屏，昨天在虚拟机里opensuse貌似没出现这个问题。 好多程序例如yast都是kde3程序，我原本期望像firefox这样的gtk程序能够和kde程序有一致的oxygen风格界面，但是可惜firefox还是gtk样式。 值得称道的是opensuse里的scim无论在gtk程序还是kde程序都可以很好的运行，而kubuntu里怎么搞scim都无法运行。 搞得头疼的是字体设置，配置文件太多了，还没搞明白。。。]]></description>
			<content:encoded><![CDATA[<p>昨天把opensuse11.1拖了下来，在虚拟机里试了试，当然是试kde4.1桌面。</p>
<p>官方的特性列表上说这个版本中用的Amarok是刚刚发布的2.0版，但是奇怪的是刚装完系统时里面的Amarok明明是1.4版。好在dvd上就有2.0的包，于是替换掉。界面果然比老版华丽，和预料中一样，mp3的tag都是乱码。</p>
<p>kubuntu8.10在我的笔记本上开始菜单第一次出现的时候总是会花屏，昨天在虚拟机里opensuse貌似没出现这个问题。</p>
<p>好多程序例如yast都是kde3程序，我原本期望像firefox这样的gtk程序能够和kde程序有一致的oxygen风格界面，但是可惜firefox还是gtk样式。</p>
<p>值得称道的是opensuse里的scim无论在gtk程序还是kde程序都可以很好的运行，而kubuntu里怎么搞scim都无法运行。</p>
<p>搞得头疼的是字体设置，配置文件太多了，还没搞明白。。。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/272/opensuse111-%e6%af%94kubuntu810%e7%bb%99%e6%88%91%e7%9a%84%e5%a4%b1%e6%9c%9b%e5%b0%8f%e5%a4%9a%e4%ba%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>wordpress升级到2.7，一切正常</title>
		<link>http://www.xmxsuperstar.com/archives/234/wordpress%e5%8d%87%e7%ba%a7%e5%88%b027%ef%bc%8c%e4%b8%80%e5%88%87%e6%ad%a3%e5%b8%b8.html</link>
		<comments>http://www.xmxsuperstar.com/archives/234/wordpress%e5%8d%87%e7%ba%a7%e5%88%b027%ef%bc%8c%e4%b8%80%e5%88%87%e6%ad%a3%e5%b8%b8.html#comments</comments>
		<pubDate>Thu, 11 Dec 2008 10:50:57 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=234</guid>
		<description><![CDATA[今天来到软院看的wordpress2.7终于发布了，于是加紧把系统与分析设计的作业做完，下午开始升级。 升级的方式十分的原始，备份数据库、老版本，删除空间里的老版本，上传新版本，把wp-config.php、插件、主题拷回来，再访问/wp-admin/upgrade，到后台设置好几个主题和插件，最后访问blog，一切正常！ 最主要的变化就是后台的界面了，挺cool的啊。 接着发现，新版本已经自带有thread-comment功能了，以前的插件就不需要用了。]]></description>
			<content:encoded><![CDATA[<p>今天来到软院看的wordpress2.7终于发布了，于是加紧把系统与分析设计的作业做完，下午开始升级。</p>
<p>升级的方式十分的原始，备份数据库、老版本，删除空间里的老版本，上传新版本，把wp-config.php、插件、主题拷回来，再访问/wp-admin/upgrade，到后台设置好几个主题和插件，最后访问blog，一切正常！</p>
<p>最主要的变化就是后台的界面了，挺cool的啊。</p>
<p style="text-align: left;"><a href="http://www.xmxsuperstar.com/wp-content/uploads/2008/12/wp27admin.png"><img class="aligncenter size-medium wp-image-235" title="wp27admin" src="http://www.xmxsuperstar.com/wp-content/uploads/2008/12/wp27admin-300x198.png" alt="wp27admin" width="300" height="198" /></a></p>
<p>接着发现，新版本已经自带有thread-comment功能了，以前的插件就不需要用了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/234/wordpress%e5%8d%87%e7%ba%a7%e5%88%b027%ef%bc%8c%e4%b8%80%e5%88%87%e6%ad%a3%e5%b8%b8.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>好吧，如今网络配置只能手动修改配置文件了</title>
		<link>http://www.xmxsuperstar.com/archives/202/%e5%a5%bd%e5%90%a7%ef%bc%8c%e5%a6%82%e4%bb%8a%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae%e5%8f%aa%e8%83%bd%e6%89%8b%e5%8a%a8%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e4%ba%86.html</link>
		<comments>http://www.xmxsuperstar.com/archives/202/%e5%a5%bd%e5%90%a7%ef%bc%8c%e5%a6%82%e4%bb%8a%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae%e5%8f%aa%e8%83%bd%e6%89%8b%e5%8a%a8%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e4%ba%86.html#comments</comments>
		<pubDate>Thu, 27 Nov 2008 08:09:11 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=202</guid>
		<description><![CDATA[1、删除Network Manager。可以用新立得，或命令都行。反正一定要先把它干掉。 代码: #sudo apt-get autoremove network-manager 2、配置网络接口。 执行下面的命令： 代码: #sudo vim /etc/network/interfaces 在弹出的编辑器中输入下面内容： auto eth0 iface eth0 inet static//你是dhcp就dhcp address 192.168.1.2 //IP地址 netmask 255.255.255.0 //子网掩码 gateway 192.168.1.1 //网关 然后保存退出。 3、配置DNS。 执行下面的命令： 代码: #sudo vim /etc/resolv.conf 在弹出的编辑器中输入下面内容： nameserver 192.168.1.1 //这里填入你所在地方的 DNS 服务器的地址 然后保存退出。 4、重启]]></description>
			<content:encoded><![CDATA[<p>1、删除Network Manager。可以用新立得，或命令都行。反正一定要先把它干掉。</p>
<p>代码:</p>
<pre>#sudo apt-get autoremove network-manager</pre>
<p>2、配置网络接口。</p>
<p>执行下面的命令：</p>
<p>代码:</p>
<pre>#sudo vim /etc/network/interfaces</pre>
<p>在弹出的编辑器中输入下面内容：</p>
<pre>auto eth0
iface eth0 inet static//你是dhcp就dhcp
address 192.168.1.2 //IP地址
netmask 255.255.255.0 //子网掩码
gateway 192.168.1.1 //网关</pre>
<p>然后保存退出。</p>
<p>3、配置DNS。</p>
<p>执行下面的命令：</p>
<p>代码:</p>
<pre>#sudo vim /etc/resolv.conf</pre>
<p>在弹出的编辑器中输入下面内容：</p>
<pre>nameserver 192.168.1.1 //这里填入你所在地方的 DNS 服务器的地址</pre>
<p>然后保存退出。</p>
<p>4、重启</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/202/%e5%a5%bd%e5%90%a7%ef%bc%8c%e5%a6%82%e4%bb%8a%e7%bd%91%e7%bb%9c%e9%85%8d%e7%bd%ae%e5%8f%aa%e8%83%bd%e6%89%8b%e5%8a%a8%e4%bf%ae%e6%94%b9%e9%85%8d%e7%bd%ae%e6%96%87%e4%bb%b6%e4%ba%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>kubuntu8.10 scim 终于搞出来了</title>
		<link>http://www.xmxsuperstar.com/archives/217/kubuntu810-scim-%e7%bb%88%e4%ba%8e%e6%90%9e%e5%87%ba%e6%9d%a5%e4%ba%86.html</link>
		<comments>http://www.xmxsuperstar.com/archives/217/kubuntu810-scim-%e7%bb%88%e4%ba%8e%e6%90%9e%e5%87%ba%e6%9d%a5%e4%ba%86.html#comments</comments>
		<pubDate>Wed, 26 Nov 2008 11:49:31 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[scim]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=217</guid>
		<description><![CDATA[原先安装的kubuntu8.10一直没办法调用scim输入法，今天终于搞出来了： $ locale &#124; grep LANG= LANG=en_US.UTF-8 $ im-switch -z en_US.UTF-8 -s scim-bridge en_US.UTF-8换成第一命令查出来的locale值就是了，然后重新登录]]></description>
			<content:encoded><![CDATA[<p>原先安装的kubuntu8.10一直没办法调用scim输入法，今天终于搞出来了：</p>
<pre name="code" class="bash:nocontrols">
$ locale | grep LANG=
LANG=en_US.UTF-8
$ im-switch -z en_US.UTF-8 -s scim-bridge
</pre>
<p>en_US.UTF-8换成第一命令查出来的locale值就是了，然后重新登录</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/217/kubuntu810-scim-%e7%bb%88%e4%ba%8e%e6%90%9e%e5%87%ba%e6%9d%a5%e4%ba%86.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>迅雷美加净工具：去广告、美化图标、美化悬浮窗、专用链、优化配置</title>
		<link>http://www.xmxsuperstar.com/archives/122/%e8%bf%85%e9%9b%b7%e7%be%8e%e5%8a%a0%e5%87%80%e5%b7%a5%e5%85%b7%ef%bc%9a%e5%8e%bb%e5%b9%bf%e5%91%8a%e3%80%81%e7%be%8e%e5%8c%96%e5%9b%be%e6%a0%87%e3%80%81%e7%be%8e%e5%8c%96%e6%82%ac%e6%b5%ae%e7%aa%97.html</link>
		<comments>http://www.xmxsuperstar.com/archives/122/%e8%bf%85%e9%9b%b7%e7%be%8e%e5%8a%a0%e5%87%80%e5%b7%a5%e5%85%b7%ef%bc%9a%e5%8e%bb%e5%b9%bf%e5%91%8a%e3%80%81%e7%be%8e%e5%8c%96%e5%9b%be%e6%a0%87%e3%80%81%e7%be%8e%e5%8c%96%e6%82%ac%e6%b5%ae%e7%aa%97.html#comments</comments>
		<pubDate>Mon, 22 Sep 2008 01:51:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[thunder]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=122</guid>
		<description><![CDATA[转自：精华之家 迅雷美加净工具套装 V1.0海闊天空绿色免费版 软件大小：4.57M 软件类别：国产软件/下载工具 运行环境：win2000.winxp.winvista 软件语言：简体中文 迅雷美加净工具：去广告、美化图标、美化悬浮窗、专用链、优化配置 这个加净包里包含的东西包括 这个补丁由迅雷官方版本5.8.5.595制作，适用于任何迅雷版本，包括安装版，绿色版，应用补丁时请正确选择您的迅雷所在目录 下载地址1 ，下载地址2]]></description>
			<content:encoded><![CDATA[<p>转自：<a title="迅雷美加净工具：去广告、美化图标、美化悬浮窗、专用链、优化配置" href="http://www.jinghua8.com/?p=1671" target="_blank">精华之家</a></p>
<h4>迅雷美加净工具套装 V1.0海闊天空绿色免费版</h4>
<p>软件大小：4.57M<br />
软件类别：国产软件/下载工具<br />
运行环境：win2000.winxp.winvista<br />
软件语言：简体中文</p>
<div class="tpc_content"><img onclick="if(this.width&gt;=800) window.open('http://www.jinghua8.com/wp-content/uploads/2008/09/56e8_78_758076_bbfa5429c06ffe8.jpg');" src="http://www.jinghua8.com/wp-content/uploads/2008/09/56e8_78_758076_bbfa5429c06ffe8.jpg" border="0" alt="" /></div>
<p><span style="text-decoration: underline;"><span style="color: red;">迅雷</span></span>美加净工具：去广告、美化图标、美化悬浮窗、专用链、优化配置<br />
这个加净包里包含的东西包括</p>
<div class="tpc_content"><a href="http://www.jinghua8.com/wp-content/uploads/2008/09/xunlei.jpg"><img class="alignnone size-full wp-image-1673" title="xunlei" src="http://www.jinghua8.com/wp-content/uploads/2008/09/xunlei.jpg" alt="" width="460" height="296" /></a></div>
<p>这个补丁由迅雷官方版本5.8.5.595制作，适用于任何迅雷版本，包括安装版，绿色版，应用补丁时请正确选择您的迅雷所在目录<br />
<a href="http://www.brsbox.com/filebox/down/fc/6410085dc3310f6727d294300a297f7d" target="_blank">下载地址1</a> ，<a href="http://www.rayfile.com/files/40ddde21-8842-11dd-9c2d-0014221b798a/" target="_blank">下载地址2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/122/%e8%bf%85%e9%9b%b7%e7%be%8e%e5%8a%a0%e5%87%80%e5%b7%a5%e5%85%b7%ef%bc%9a%e5%8e%bb%e5%b9%bf%e5%91%8a%e3%80%81%e7%be%8e%e5%8c%96%e5%9b%be%e6%a0%87%e3%80%81%e7%be%8e%e5%8c%96%e6%82%ac%e6%b5%ae%e7%aa%97.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>彻底删除微软拼音</title>
		<link>http://www.xmxsuperstar.com/archives/101/%e5%bd%bb%e5%ba%95%e5%88%a0%e9%99%a4%e5%be%ae%e8%bd%af%e6%8b%bc%e9%9f%b3.html</link>
		<comments>http://www.xmxsuperstar.com/archives/101/%e5%bd%bb%e5%ba%95%e5%88%a0%e9%99%a4%e5%be%ae%e8%bd%af%e6%8b%bc%e9%9f%b3.html#comments</comments>
		<pubDate>Mon, 08 Sep 2008 12:12:01 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[pinyin]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=101</guid>
		<description><![CDATA[习惯了搜狗拼音，google拼音之后实在事不喜欢微软拼音，但是微软拼音总是莫名其妙的跳出来，尤其是打开微软的软件时按ctrl+space总是先跳出这个万恶的微软拼音，于是决定铲除： Regsvr32 /U Msimtf.dll Regsvr32 /U Msctf.dll 把注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY这一主键删除]]></description>
			<content:encoded><![CDATA[<p>习惯了搜狗拼音，google拼音之后实在事不喜欢微软拼音，但是微软拼音总是莫名其妙的跳出来，尤其是打开微软的软件时按ctrl+space总是先跳出这个万恶的微软拼音，于是决定铲除：</p>
<p>Regsvr32 /U Msimtf.dll<br />
Regsvr32 /U Msctf.dll<br />
把注册表中HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\MSSCIPY这一主键删除</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/101/%e5%bd%bb%e5%ba%95%e5%88%a0%e9%99%a4%e5%be%ae%e8%bd%af%e6%8b%bc%e9%9f%b3.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 Most Beautiful Plasma Themes for KDE 4 Desktop</title>
		<link>http://www.xmxsuperstar.com/archives/95/10-most-beautiful-plasma-themes-for-kde-4-desktop.html</link>
		<comments>http://www.xmxsuperstar.com/archives/95/10-most-beautiful-plasma-themes-for-kde-4-desktop.html#comments</comments>
		<pubDate>Fri, 29 Aug 2008 03:01:46 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[kde]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=95</guid>
		<description><![CDATA[原文 : http://www.junauza.com/2008/08/10-most-beautiful-plasma-themes-for-kde.html The latest series of the K Desktop Environment now utilizes Plasma, a new desktop and panel user interface tool that aims for a more functional, user-friendly, and sleek KDE desktop. Plasma also supports Dashboard-like widgets called plasmoids. If you want to further enhance the look of your KDE 4 desktop, I have [...]]]></description>
			<content:encoded><![CDATA[<p>原文 : <a href="http://www.junauza.com/2008/08/10-most-beautiful-plasma-themes-for-kde.html" target="_blank">http://www.junauza.com/2008/08/10-most-beautiful-plasma-themes-for-kde.html</a></p>
<p>The latest series of the K Desktop Environment now utilizes Plasma, a new desktop and panel user interface tool that aims for a more functional, user-friendly, and sleek <a href="http://www.kde.org/">KDE</a> desktop. Plasma also supports Dashboard-like widgets called plasmoids.</p>
<div style="text-align: justify;">If you want to further enhance the look of your KDE 4 desktop, I have here a list of some of the most beautiful Plasma themes available:</div>
<p>1. <span style="font-weight: bold;">Metalized</span></p>
<div style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDqpJcvII/AAAAAAAAE2U/KJhjDj6aiFI/s1600-h/Metalized.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236634866604096642" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDqpJcvII/AAAAAAAAE2U/KJhjDj6aiFI/s400/Metalized.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=83552&amp;id=1&amp;tan=86917218"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>2. <span style="font-weight: bold;">Perla Negra</span></p>
<div style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxHKTI93RI/AAAAAAAAE3U/SACsq-YQpo4/s1600-h/Perla-Negra.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236638708987190546" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxHKTI93RI/AAAAAAAAE3U/SACsq-YQpo4/s400/Perla-Negra.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=78253&amp;id=1&amp;tan=25064836"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>3. <span style="font-weight: bold;">Marysia</span></p>
<div style="text-align: center;"><a href="http://2.bp.blogspot.com/_UqUwVPikChs/SKxDqxwYUtI/AAAAAAAAE2c/lYUKGApGaWQ/s1600-h/Marysia.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236634868914868946" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_UqUwVPikChs/SKxDqxwYUtI/AAAAAAAAE2c/lYUKGApGaWQ/s400/Marysia.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=80239&amp;id=1&amp;tan=77025790"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>4. <span style="font-weight: bold;">Aya</span></p>
<div style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDq4AXLOI/AAAAAAAAE2k/fl1y0uHE5FU/s1600-h/aya.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236634870592515298" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDq4AXLOI/AAAAAAAAE2k/fl1y0uHE5FU/s400/aya.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=76197&amp;id=1&amp;tan=64032071"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>5. <span style="font-weight: bold;">Slim Glow</span></p>
<div style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDrAIyDaI/AAAAAAAAE2s/XiZp9u6m4OM/s1600-h/Slim-Glow.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236634872775314850" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDrAIyDaI/AAAAAAAAE2s/XiZp9u6m4OM/s400/Slim-Glow.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=74329&amp;id=1&amp;tan=16044224"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>6.<span style="font-weight: bold;"> Silicon</span></p>
<div style="text-align: center;"><a href="http://4.bp.blogspot.com/_UqUwVPikChs/SKxHJ0tGzRI/AAAAAAAAE28/lBYaCBa_7xo/s1600-h/Silicon.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236638700817272082" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://4.bp.blogspot.com/_UqUwVPikChs/SKxHJ0tGzRI/AAAAAAAAE28/lBYaCBa_7xo/s400/Silicon.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=77969&amp;id=1&amp;tan=47581147"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>7. <span style="font-weight: bold;">Perfection</span></p>
<div style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDrEf6wpI/AAAAAAAAE20/AqmEXBfh6VQ/s1600-h/Perfection.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236634873946096274" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxDrEf6wpI/AAAAAAAAE20/AqmEXBfh6VQ/s400/Perfection.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=79274&amp;id=1&amp;tan=43462800"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD</span></a></div>
<p>8. <span style="font-weight: bold;">Akoma</span></p>
<div style="text-align: center;"><a href="http://2.bp.blogspot.com/_UqUwVPikChs/SKxHJ6-YLyI/AAAAAAAAE3E/b_EYRj6M_nI/s1600-h/Akoma.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236638702500327202" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://2.bp.blogspot.com/_UqUwVPikChs/SKxHJ6-YLyI/AAAAAAAAE3E/b_EYRj6M_nI/s400/Akoma.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=76587&amp;id=1&amp;tan=31818658"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>9. <span style="font-weight: bold;">Mist</span></p>
<div style="text-align: center;"><a href="http://3.bp.blogspot.com/_UqUwVPikChs/SKxHKGqUumI/AAAAAAAAE3M/hVzfQDpeR9o/s1600-h/Mist.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236638705637440098" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://3.bp.blogspot.com/_UqUwVPikChs/SKxHKGqUumI/AAAAAAAAE3M/hVzfQDpeR9o/s400/Mist.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=82933&amp;id=1&amp;tan=89308908"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></div>
<p>10. <span style="font-weight: bold;">TiComb</span></p>
<p style="text-align: center;"><a href="http://1.bp.blogspot.com/_UqUwVPikChs/SKxHKS7RFwI/AAAAAAAAE3c/z6yjI-du_jE/s1600-h/TiComb.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}"><img id="BLOGGER_PHOTO_ID_5236638708929730306" style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://1.bp.blogspot.com/_UqUwVPikChs/SKxHKS7RFwI/AAAAAAAAE3c/z6yjI-du_jE/s400/TiComb.jpg" border="0" alt="" /></a><a href="http://www.kde-look.org/content/download.php?content=76628&amp;id=1&amp;tan=11395396"><span style="font-size: 85%;">CLICK HERE TO DOWNLOAD </span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/95/10-most-beautiful-plasma-themes-for-kde-4-desktop.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FontCreator 5.6 简体中文汉化版</title>
		<link>http://www.xmxsuperstar.com/archives/88/fontcreator-56-%e7%ae%80%e4%bd%93%e4%b8%ad%e6%96%87%e6%b1%89%e5%8c%96%e7%89%88.html</link>
		<comments>http://www.xmxsuperstar.com/archives/88/fontcreator-56-%e7%ae%80%e4%bd%93%e4%b8%ad%e6%96%87%e6%b1%89%e5%8c%96%e7%89%88.html#comments</comments>
		<pubDate>Thu, 28 Aug 2008 03:19:28 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[font]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=88</guid>
		<description><![CDATA[原文: http://digidea.blogbus.com/logs/25085697.html 下载地址 : http://www.mediafire.com/?jmm24dhlwyj]]></description>
			<content:encoded><![CDATA[<p>原文: <a href="http://digidea.blogbus.com/logs/25085697.html" target="_blank">http://digidea.blogbus.com/logs/25085697.html</a></p>
<p>下载地址 : <a href="http://www.mediafire.com/?jmm24dhlwyj" target="_blank">http://www.mediafire.com/?jmm24dhlwyj</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/88/fontcreator-56-%e7%ae%80%e4%bd%93%e4%b8%ad%e6%96%87%e6%b1%89%e5%8c%96%e7%89%88.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Top 15 Security/Hacking Tools &amp; Utilities</title>
		<link>http://www.xmxsuperstar.com/archives/74/top-15-securityhacking-tools-utilities.html</link>
		<comments>http://www.xmxsuperstar.com/archives/74/top-15-securityhacking-tools-utilities.html#comments</comments>
		<pubDate>Mon, 18 Aug 2008 05:55:40 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[hack]]></category>
		<category><![CDATA[Tools]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=74</guid>
		<description><![CDATA[原文地址http://www.darknet.org.uk/2006/04/top-15-securityhacking-tools-utilities/ 1. Nmap I think everyone has heard of this one, recently evolved into the 4.x series. Nmap (Network Mapper) is a free open source utility for network exploration or security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts. Nmap uses raw IP packets in novel ways [...]]]></description>
			<content:encoded><![CDATA[<p>原文地址<a href="http://www.darknet.org.uk/2006/04/top-15-securityhacking-tools-utilities/" target="_blank">http://www.darknet.org.uk/2006/04/top-15-securityhacking-tools-utilities/</a></p>
<p><strong>1. Nmap</strong></p>
<p>I think everyone has heard of this one, recently evolved into the 4.x series.</p>
<p>Nmap (Network Mapper) is a free open source utility for network exploration or security auditing. It was designed to rapidly scan large networks, although it works fine against single hosts. Nmap uses raw IP packets in novel ways to determine what hosts are available on the network, what services (application name and version) those hosts are offering, what operating systems (and OS versions) they are running, what type of packet filters/firewalls are in use, and dozens of other characteristics. Nmap runs on most types of computers and both console and graphical versions are available. Nmap is free and open source.</p>
<p>Can be used by beginners (-sT) or by pros alike (¨Cpacket_trace). A very versatile tool, once you fully understand the results.</p>
<p><a href="http://www.insecure.org/nmap/download.html">Get Nmap Here</a></p>
<p><strong>2. Nessus Remote Security Scanner</strong></p>
<p>Recently went closed source, but is still essentially free. Works with a client-server framework.</p>
<p>Nessus is the world&#8217;s most popular vulnerability scanner used in over 75,000 organizations world-wide. Many of the world&#8217;s largest organizations are realizing significant cost savings by using Nessus to audit business-critical enterprise devices and applications.</p>
<p><a href="http://www.nessus.org/download/">Get Nessus Here</a></p>
<p><strong>3. John the Ripper</strong></p>
<p>Yes, <a href="http://www.darknet.org.uk/2006/03/jtr-password-cracking-john-the-ripper-17-released-finally/">JTR 1.7 was recently released</a>!</p>
<p>John the Ripper is a fast password cracker, currently available for many flavors of Unix (11 are officially supported, not counting different architectures), DOS, Win32, BeOS, and OpenVMS. Its primary purpose is to detect weak Unix passwords. Besides several crypt(3) password hash types most commonly found on various Unix flavors, supported out of the box are Kerberos AFS and Windows NT/2000/XP/2003 LM hashes, plus several more with contributed patches.</p>
<p><a href="http://www.openwall.com/john/">You can get JTR Here</a></p>
<p><strong>4. Nikto</strong></p>
<p>Nikto is an Open Source (GPL) web server scanner which performs comprehensive tests against web servers for multiple items, including over 3200 potentially dangerous files/CGIs, versions on over 625 servers, and version specific problems on over 230 servers. Scan items and plugins are frequently updated and can be automatically updated (if desired).</p>
<p>Nikto is a good CGI scanner, there are some other tools that go well with Nikto (focus on http fingerprinting or Google hacking/info gathering etc, another article for just those).</p>
<p><a href="http://www.cirt.net/code/nikto.shtml">Get Nikto Here</a></p>
<p><strong>5. SuperScan</strong></p>
<p>Powerful TCP port scanner, pinger, resolver. SuperScan 4 is an update of the highly popular Windows port scanning tool, SuperScan.</p>
<p>If you need an alternative for nmap on Windows with a decent interface, I suggest you check this out, it&#8217;s pretty nice.</p>
<p><a href="http://www.foundstone.com/index.htm?subnav=resources/navigation.htm&amp;subcontent=/resources/proddesc/superscan4.htm">Get SuperScan Here</a></p>
<p><strong>6. p0f</strong></p>
<p>P0f v2 is a versatile passive OS fingerprinting tool. P0f can identify the operating system on:</p>
<p>- machines that connect to your box (SYN mode),<br />
- machines you connect to (SYN+ACK mode),<br />
- machine you cannot connect to (RST+ mode),<br />
- machines whose communications you can observe.</p>
<p>Basically it can fingerprint anything, just by listening, it doesn&#8217;t make <strong>ANY</strong> active connections to the target machine.</p>
<p><a href="http://lcamtuf.coredump.cx/p0f/p0f.shtml">Get p0f Here</a></p>
<p><strong>7. Wireshark (Formely Ethereal)</strong></p>
<p>Wireshark is a GTK+-based network protocol analyzer, or sniffer, that lets you capture and interactively browse the contents of network frames. The goal of the project is to create a commercial-quality analyzer for Unix and to give Wireshark features that are missing from closed-source sniffers.</p>
<p>Works great on both Linux and Windows (with a GUI), easy to use and can reconstruct TCP/IP Streams! Will do a tutorial on Wireshark later.</p>
<p><a href="http://www.wireshark.org/">Get Wireshark Here</a></p>
<p><strong>8. Yersinia</strong></p>
<p>Yersinia is a network tool designed to take advantage of some weakeness in different Layer 2 protocols. It pretends to be a solid framework for analyzing and testing the deployed networks and systems. Currently, the following network protocols are implemented: Spanning Tree Protocol (STP), Cisco Discovery Protocol (CDP), Dynamic Trunking Protocol (DTP), Dynamic Host Configuration Protocol (DHCP), Hot Standby Router Protocol (HSRP), IEEE 802.1q, Inter-Switch Link Protocol (ISL), VLAN Trunking Protocol (VTP).</p>
<p>The best Layer 2 kit there is.</p>
<p><a href="http://yersinia.sourceforge.net/">Get Yersinia Here</a></p>
<p><strong>9. Eraser</strong></p>
<p>Eraser is an advanced security tool (for <em>Windows</em>), which allows you to completely remove sensitive data from your hard drive by overwriting it several times with carefully selected patterns. Works with Windows 95, 98, ME, NT, 2000, XP and DOS. Eraser is Free software and its source code is released under GNU General Public License.</p>
<p>An excellent tool for keeping your data really safe, if you&#8217;ve deleted it..make sure it&#8217;s really gone, you don&#8217;t want it hanging around to bite you in the ass.</p>
<p><a href="http://www.heidi.ie/eraser/download.php">Get Eraser Here.</a></p>
<p><strong>10. PuTTY</strong></p>
<p>PuTTY is a free implementation of Telnet and SSH for Win32 and Unix platforms, along with an xterm terminal emulator. A must have for any h4¡Á0r wanting to telnet or SSH from Windows without having to use the crappy default MS command line clients.</p>
<p><a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/">Get PuTTY Here</a>.</p>
<p><strong>11. LCP</strong></p>
<p>Main purpose of LCP program is user account passwords auditing and recovery in Windows NT/2000/XP/2003. Accounts information import, Passwords recovery, Brute force session distribution, Hashes computing.</p>
<p>A good free alternative to L0phtcrack.</p>
<p>LCP was briefly mentioned in our well read <a href="http://www.darknet.org.uk/2006/02/password-cracking-with-rainbowcrack-and-rainbow-tables/">Rainbow Tables and RainbowCrack</a> article.</p>
<p><a href="http://www.lcpsoft.com/english/download.htm">Get LCP Here</a></p>
<p><strong>12. Cain and Abel</strong></p>
<p>My personal favourite for password cracking of any kind.</p>
<p>Cain &amp; Abel is a password recovery tool for Microsoft Operating Systems. It allows easy recovery of various kind of passwords by sniffing the network, cracking encrypted passwords using Dictionary, Brute-Force and Cryptanalysis attacks, recording VoIP conversations, decoding scrambled passwords, revealing password boxes, uncovering cached passwords and analyzing routing protocols. The program does not exploit any software vulnerabilities or bugs that could not be fixed with little effort.</p>
<p><a href="http://www.oxid.it/cain.html">Get Cain and Abel Here</a></p>
<p><strong>13. Kismet</strong></p>
<p>Kismet is an 802.11 layer2 wireless network detector, sniffer, and intrusion detection system. Kismet will work with any wireless card which supports raw monitoring (rfmon) mode, and can sniff 802.11b, 802.11a, and 802.11g traffic.</p>
<p>A good wireless tool as long as your card supports rfmon (look for an orinocco gold).</p>
<p><a href="http://www.kismetwireless.net/download.shtml">Get Kismet Here</a></p>
<p><strong>14. NetStumbler</strong></p>
<p>Yes a decent wireless tool for Windows! Sadly not as powerful as it&#8217;s Linux counterparts, but it&#8217;s easy to use and has a nice interface, good for the basics of war-driving.</p>
<p>NetStumbler is a tool for Windows that allows you to detect Wireless Local Area Networks (WLANs) using 802.11b, 802.11a and 802.11g. It has many uses:</p>
<ul>
<li>Verify that your network is set up the way you intended.</li>
<li>Find locations with poor coverage in your WLAN.</li>
<li>Detect other networks that may be causing interference on your network.</li>
<li>Detect unauthorized ¡°rogue¡± access points in your workplace.</li>
<li>Help aim directional antennas for long-haul WLAN links.</li>
<li>Use it recreationally for WarDriving.</li>
</ul>
<p><a href="http://www.stumbler.net/">Get NetStumbler Here</a></p>
<p><strong>15. hping</strong></p>
<p>To finish off, something a little more advanced if you want to test your TCP/IP packet monkey skills.</p>
<p>hping is a command-line oriented TCP/IP packet assembler/analyzer. The interface is inspired to the ping unix command, but hping isn&#8217;t only able to send ICMP echo requests. It supports TCP, UDP, ICMP and RAW-IP protocols, has a traceroute mode, the ability to send files between a covered channel, and many other features.</p>
<p><a href="http://www.hping.org/">Get hping Here</a></p>
<p><em>Yah I&#8217;ve stayed away from commercial products in this article, perhaps I&#8217;ll cover those another day.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/74/top-15-securityhacking-tools-utilities.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ibus初探</title>
		<link>http://www.xmxsuperstar.com/archives/71/ibus%e5%88%9d%e6%8e%a2.html</link>
		<comments>http://www.xmxsuperstar.com/archives/71/ibus%e5%88%9d%e6%8e%a2.html#comments</comments>
		<pubDate>Sun, 17 Aug 2008 14:44:09 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[ibus]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=71</guid>
		<description><![CDATA[转自： imtx.cn 事实上我一直希望能够看到一个不像scim那样老是发生冲突的非引擎式的专门的拼音输入法。我认为用户需要的只是一个输入法，要么是拼音要么是五笔或者其他，而不是可以容纳各种输入法的庞大引擎。 那天在Toy上看到下一代输入法框架 ibus，当时没什么感觉，只是觉得名字ibus有点意思。 今天把ibus的代码git下来后一看：原来ibus是一个基于pygtk、dbus的一个输入法引擎！！！兴趣立马大增。 当初还以为是基于Unix Socket的、只提供了Qt的图形接口的C/S输入法引擎。现在一看ibus中的三样核心技术（Python, dbus, gtk）都是目前我学习的方向，因此打算好好研究一下ibus。 —– ibus的全称是input bus，是由scim-python的作者Shawn.P.Huang所开发的。 中文领域还有两个正在开发当中的输入法引擎，分别是scim2和imbus，分别是由胡正和苏哲领导开发。不过进展不明，特别是imbus，最近的commit都是半年前了。 与scim2和imbus基于C/C++所不同的是，ibus是基于Python的。你会说肯定会效率问题怎么解决？我想只要不是打字打到每分钟500个以上，不用管这个问题了吧？ Python开发迅速，加上Shawn.P.Huang的活跃开发，应该有理由相信ibus能很快地成熟起来并得到应用。 废话不多说，初探一下ibus吧！ 先说dbus ibus使用了dbus作为C/S架构的核心部分，这个的应用实在是棒。因为dbus是一个高效、低延时的IPC通讯总线，而且有着完善的Python绑定，俺在Ubuntu Tweak也是用dbus来搞一些系统级的服务调用的。 记得之前遇到过Fitx输入法的作者，Fitx输入法的是基于scim-python的，不过后端的引擎是基于Unix Socket的。这两种通讯管道哪个好呢？这个就没有深入研究了，我只知道dbus是基于注册的服务，提供的接口和语言绑定比较丰富和灵活，这样前端也可 以比较多样化了（现在就有Qt4前端了）。 因为自己也只是初识dbus，Unix Socket更是没用过，这方面也不好多说。希望能从ibus那学习到更多有关dbus的东西。 再说pygtk 说ibus是基于pygtk的，不如说是基于pygobject的，当然底层是glib。 ibus的基类：自定义的Object，就是继承于gobject.GObject。在整个ibus引擎中（特别是在daemon），都广泛用到了 gobject，也就是信号/回调之类。用Python来写定义GObject就是方便，如果用C语言那真是麻烦死了。所以想学pygtk的核心部分的朋 友，去参考一下ibus也不错。 ……&#60;&#60;&#60;&#60;&#60;&#60;&#60;……俺是疯哥线……&#62;&#62;&#62;&#62;&#62;&#62;&#62;…… 不能光看不做，于是打算安装试用一下。折腾了很久，才把ibus安装上去。 因为过程实在是太复杂了，所以这里只讲主要过程。 安装过程是参考这里：http://code.google.com/p/ibus/wiki/ReadMe，只安装了ibus本身和PinYin engine。 ibus默认依赖Qt4，这个倒没关系，不过无论我怎么configure均通过不了。无奈之下，把configure.ac中有关Qt的去掉，然后在Makefile.am和Makeifle.in中也把Qt相关的去掉，终于成功编译了ibus。 编译完后运行ibus，一堆Python错误。一看，Ubuntu 8.04的python-dbus不合乎要求，没有dbus.server这个包，ibus需要0.83，但默认0.82。于是上Index of /releases/dbus-python下载了个0.83的python-dbus安装更新之。 终于可以运行ibus的daemon了，可是执行GTK_IM_MODULE=ibus gedit，在gedit中就是打不开ibus。 再去研究，发现make install时把im相关的东西安装至了/usr/lib/gtk-2.0/immodules，而Ubuntu下默认是集中在/usr/lib /gtk-2.0/2.10.0/immodules这的。于是手动移到那个目录，并手动编辑了：/usr/lib/gtk-2.0/2.10.0 /immodule-files.d/libgtk2.0-0.immodules 这个文件。 重新登录GNOME，呼~ibus终于出现了！ 虽然我不是用拼音的，但是还是硬着头皮试用了一个安装了PinYin的ibus。 用了一会，感觉非常满意！ 界面很漂亮，输入效果也很棒，还支持Fcitx式的直接输英文：这意味着我将来可以非常自然地过渡至使用ibus！ 看下面的截图： 在Leafpad里使用ibus 浮动条，很小巧 PinYin的设置界面，很详细。 [...]]]></description>
			<content:encoded><![CDATA[<p>转自： <a href="http://imtx.cn/archives/527.html" target="_blank">imtx.cn</a><br />
事实上我一直希望能够看到一个不像scim那样老是发生冲突的非引擎式的专门的拼音输入法。我认为用户需要的只是一个输入法，要么是拼音要么是五笔或者其他，而不是可以容纳各种输入法的庞大引擎。</p>
<hr />那天在Toy上看到<a href="http://linuxtoy.org/archives/ibus.html">下一代输入法框架 ibus</a>，当时没什么感觉，只是觉得名字ibus有点意思。</p>
<p>今天把ibus的代码git下来后一看：原来ibus是一个基于pygtk、dbus的一个输入法引擎！！！兴趣立马大增。</p>
<p>当初还以为是基于Unix Socket的、只提供了Qt的图形接口的C/S输入法引擎。现在一看ibus中的三样核心技术（Python, dbus, gtk）都是目前我学习的方向，因此打算好好研究一下ibus。</p>
<p>—–</p>
<p>ibus的全称是input bus，是由scim-python的作者Shawn.P.Huang所开发的。</p>
<p>中文领域还有两个正在开发当中的输入法引擎，分别是scim2和imbus，分别是由胡正和苏哲领导开发。不过进展不明，特别是imbus，最近的commit都是半年前了。</p>
<p>与scim2和imbus基于C/C++所不同的是，ibus是基于Python的。你会说肯定会效率问题怎么解决？我想只要不是打字打到每分钟500个以上，不用管这个问题了吧？</p>
<p>Python开发迅速，加上Shawn.P.Huang的活跃开发，应该有理由相信ibus能很快地成熟起来并得到应用。</p>
<p>废话不多说，初探一下ibus吧！</p>
<p><strong>先说dbus</strong></p>
<p>ibus使用了dbus作为C/S架构的核心部分，这个的应用实在是棒。因为dbus是一个高效、低延时的IPC通讯总线，而且有着完善的Python绑定，俺在Ubuntu Tweak也是用dbus来搞一些系统级的服务调用的。</p>
<p>记得之前遇到过Fitx输入法的作者，Fitx输入法的是基于scim-python的，不过后端的引擎是基于Unix Socket的。这两种通讯管道哪个好呢？这个就没有深入研究了，我只知道dbus是基于注册的服务，提供的接口和语言绑定比较丰富和灵活，这样前端也可 以比较多样化了（现在就有Qt4前端了）。</p>
<p>因为自己也只是初识dbus，Unix Socket更是没用过，这方面也不好多说。希望能从ibus那学习到更多有关dbus的东西。</p>
<p><strong>再说pygtk</strong></p>
<p>说ibus是基于pygtk的，不如说是基于pygobject的，当然底层是glib。</p>
<p>ibus的基类：自定义的Object，就是继承于gobject.GObject。在整个ibus引擎中（特别是在daemon），都广泛用到了 gobject，也就是信号/回调之类。用Python来写定义GObject就是方便，如果用C语言那真是麻烦死了。所以想学pygtk的核心部分的朋 友，去参考一下ibus也不错。</p>
<p>……&lt;&lt;&lt;&lt;&lt;&lt;&lt;……俺是疯哥线……&gt;&gt;&gt;&gt;&gt;&gt;&gt;……</p>
<p>不能光看不做，于是打算安装试用一下。折腾了很久，才把ibus安装上去。</p>
<p>因为过程实在是太复杂了，所以这里只讲主要过程。</p>
<p>安装过程是参考这里：<a href="http://code.google.com/p/ibus/wiki/ReadMe">http://code.google.com/p/ibus/wiki/ReadMe</a>，只安装了ibus本身和PinYin engine。</p>
<p>ibus默认依赖Qt4，这个倒没关系，不过无论我怎么configure均通过不了。无奈之下，把configure.ac中有关Qt的去掉，然后在Makefile.am和Makeifle.in中也把Qt相关的去掉，终于成功编译了ibus。</p>
<p>编译完后运行ibus，一堆Python错误。一看，Ubuntu 8.04的python-dbus不合乎要求，没有dbus.server这个包，ibus需要0.83，但默认0.82。于是上<a href="http://dbus.freedesktop.org/releases/dbus-python/">Index of /releases/dbus-python</a>下载了个0.83的python-dbus安装更新之。</p>
<p>终于可以运行ibus的daemon了，可是执行<a id="Run_gnome_or_kde_applications"><span class="pln">GTK_IM_MODULE</span><span class="pun">=</span><span class="pln">ibus gedit，</span></a>在gedit中就是打不开ibus。</p>
<p>再去研究，发现make install时把im相关的东西安装至了/usr/lib/gtk-2.0/immodules，而Ubuntu下默认是集中在/usr/lib /gtk-2.0/2.10.0/immodules这的。于是手动移到那个目录，并手动编辑了：/usr/lib/gtk-2.0/2.10.0 /immodule-files.d/libgtk2.0-0.immodules 这个文件。</p>
<p>重新登录GNOME，呼~ibus终于出现了！</p>
<p>虽然我不是用拼音的，但是还是硬着头皮试用了一个安装了PinYin的ibus。</p>
<p>用了一会，感觉非常满意！</p>
<p>界面很漂亮，输入效果也很棒，还支持Fcitx式的直接输英文：这意味着我将来可以非常自然地过渡至使用ibus！</p>
<p>看下面的截图：</p>
<p><strong>在Leafpad里使用ibus</strong></p>
<p><a href="http://imtx.cn/wp-content/uploads/2008/08/ibus-1.png"><img class="alignnone size-full wp-image-529" title="ibus-1" src="http://imtx.cn/wp-content/uploads/2008/08/ibus-1.png" alt="" width="509" height="280" /></a></p>
<p><strong>浮动条，很小巧</strong></p>
<p><a href="http://imtx.cn/wp-content/uploads/2008/08/ibus-2.png"><img class="alignnone size-full wp-image-530" title="ibus-2" src="http://imtx.cn/wp-content/uploads/2008/08/ibus-2.png" alt="" width="240" height="85" /></a></p>
<p><strong>PinYin的设置界面，很详细。</strong></p>
<p><a href="http://imtx.cn/wp-content/uploads/2008/08/ibus-3.png"><img class="alignnone size-medium wp-image-531" title="ibus-3" src="http://imtx.cn/wp-content/uploads/2008/08/ibus-3.png" alt="" width="519" height="507" /></a></p>
<p>因为是一个全新的输入法（不像scim-python是基于scim的），所以ibus拥有一些scim不具备的特性，而且输入法正在不断开发当中，我相信ibus一定会成为最牛的输入法的！哈哈。</p>
<p>今天先熟悉下，往后抽出时间来继续看源码，希望能为开发尽一点自己的能力！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/71/ibus%e5%88%9d%e6%8e%a2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SVK：基于 svn 的分布式版本管理系统</title>
		<link>http://www.xmxsuperstar.com/archives/69/svk%ef%bc%9a%e5%9f%ba%e4%ba%8e-svn-%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e7%89%88%e6%9c%ac%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.html</link>
		<comments>http://www.xmxsuperstar.com/archives/69/svk%ef%bc%9a%e5%9f%ba%e4%ba%8e-svn-%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e7%89%88%e6%9c%ac%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.html#comments</comments>
		<pubDate>Sat, 16 Aug 2008 12:58:43 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[svk]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[vcs]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=69</guid>
		<description><![CDATA[原文：http://linuxtoy.org/archives/svk.html [撰文/hmy] SVK 是一个基于 Subversion（svn）的分布式版本管理系统。其优点是基于 svn，命令和 svn 类似，checkout 后没有 .svn 这样的目录浪费空间。 SVK 官方主页：http://svk.bestpractical.com/view/HomePage IBM 上的介绍文章：http://www.ibm.com/developerworks/cn/java/j-lo-svk/index.html 安装 SVK SVK 使用教程 SVK 用法]]></description>
			<content:encoded><![CDATA[<p>原文：<a href="http://linuxtoy.org/archives/svk.html" target="_blank">http://linuxtoy.org/archives/svk.html</a><br />
[撰文/hmy]</p>
<p>SVK 是一个基于 Subversion（svn）的分布式版本管理系统。其优点是基于 svn，命令和 svn 类似，checkout 后没有 .svn 这样的目录浪费空间。</p>
<p><img src="http://linuxtoy.org/img/2008/08/svk.png" alt="SVK" /></p>
<ul>
<li>SVK 官方主页：<a href="http://svk.bestpractical.com/view/HomePage">http://svk.bestpractical.com/view/HomePage</a></li>
<li>IBM 上的介绍文章：<a href="http://www.ibm.com/developerworks/cn/java/j-lo-svk/index.html">http://www.ibm.com/developerworks/cn/java/j-lo-svk/index.html</a></li>
<li><a href="http://svk.bestpractical.com/view/InstallingSVK">安装 SVK</a></li>
<li><a href="http://www.bieberlabs.com/wordpress/svk-tutorials/">SVK 使用教程</a></li>
<li><a href="http://svk.bestpractical.com/view/SVKUsage">SVK 用法</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/69/svk%ef%bc%9a%e5%9f%ba%e4%ba%8e-svn-%e7%9a%84%e5%88%86%e5%b8%83%e5%bc%8f%e7%89%88%e6%9c%ac%e7%ae%a1%e7%90%86%e7%b3%bb%e7%bb%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using XP Styles (From MSDN)</title>
		<link>http://www.xmxsuperstar.com/archives/65/using-xp-styles-from-msdn.html</link>
		<comments>http://www.xmxsuperstar.com/archives/65/using-xp-styles-from-msdn.html#comments</comments>
		<pubDate>Fri, 15 Aug 2008 13:04:09 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[win32 xp sytle]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=65</guid>
		<description><![CDATA[From: http://msdn.microsoft.com/en-us/library/ms997646.aspx Contents Introduction ComCtl32.dll Version 6 Visual Style Tasks Using ComCtl32.dll Version 6 in an Application That Does Not Use Third-Party Extensions Using ComCtl32 Version 6 in an Application That Uses Extensions, Plugins, or a DLL That is Brought into a Process Using ComCtl32 Version 6 in Control Panel or a DLL That is [...]]]></description>
			<content:encoded><![CDATA[<p>From: <a href="http://msdn.microsoft.com/en-us/library/ms997646.aspx" target="_blank">http://msdn.microsoft.com/en-us/library/ms997646.aspx</a></p>
<div>
<h3>Contents</h3>
<p><a href="#xptheming_topic1">Introduction</a></p>
<p><a href="#xptheming_topic2">ComCtl32.dll Version 6</a></p>
<p><a href="#xptheming_topic3">Visual Style Tasks</a></p>
<p><a href="#xptheming_topic4">Using ComCtl32.dll Version 6 in an Application That Does Not Use Third-Party Extensions</a></p>
<p><a href="#xptheming_topic5">Using ComCtl32 Version 6 in an Application That Uses Extensions, Plugins, or a DLL That is Brought into a Process</a></p>
<p><a href="#xptheming_topic6">Using ComCtl32 Version 6 in Control Panel or a DLL That is Run by RunDll32.exe</a></p>
<p><a href="#xptheming_topic7">Using Visual Styles with a Custom Control</a></p>
<p><a href="#xptheming_topic8">Enabling Owner Drawn Controls to Use Visual Styles</a></p>
<p><a href="#xptheming_topic9">Making a Control Appear to Have No Visual Style in a Dialog Box or Window That Has a Visual Style</a></p>
<p><a href="#xptheming_topic10">Using UxTheme Manager to Render a Control Whose Parts Do Not Have a Visual Style</a></p>
<p><a href="#xptheming_topic11">Using Visual Styles with HTML Content</a></p>
<p><a href="#xptheming_topic12">Causing the UxTheme Manager to Ignore Top-Level Windows</a></p>
<p><a href="#xptheming_topic13">Using 32 Bit Anti-Aliased Icons</a></p>
<p><a href="#xptheming_topic14">Shipping Your Application Both on Windows XP and Earlier Versions of Windows</a></p>
<p><a href="#xptheming_topic15">Summary</a></p>
<h3><a name="xptheming_topic1"><br />
<!----><br />
</a>Introduction</h3>
<p>Using Microsoft® Windows® XP, you can now define the visual style or appearance of controls and windows from simple colors to textures and shapes. You can control each defined part of a control as well as each part of the non-client (frame and caption) area of a window. The user can then use the Appearance tab in the Windows Control Panel to switch between the classic visual style and other available styles.</p>
<p>A visual style is included with the Windows XP release. Using helper libraries and application programming interfaces (APIs), you can incorporate the Windows XP visual style into your application with few code changes. For more information, see the Platform SDK documentation in the MSDN Library.</p>
<h3><a name="xptheming_topic2"><br />
<!----><br />
</a>ComCtl32.dll Version 6</h3>
<p>All applications running on the Windows XP operating system have a non-client area, which includes the window frame and non-client scrollbars. A visual style is applied to the non-client area by default. This means that the appearance of the non-client area is specified by the visual style that is currently installed. To apply a visual style to common controls in the client area, you must use ComCtl32.dll version 6 or later. Unlike earlier versions of ComCtl32.dll, version 6 is not redistributable. The only way you can use version 6 of the dynamic-link library (DLL) is to use an operating system that contains it. Windows XP ships with both version 5 and version 6. ComCtl32.dll version 6 contains both the user controls and the common controls. By default, applications use the user controls defined in User32.dll and the common controls defined in ComCtl32.dll version 5.</p>
<p>If you want your application to use visual styles, you must add an application manifest that indicates that ComCtl32.dll version 6 should be used if it is available. Version 6 includes some new controls and new options for other controls, but the biggest change is support for changing the appearance of controls in a window.</p>
<h3><a name="xptheming_topic3"></a></p>
<p><a name="xptheming_topic3"> <!----><br />
</a>Visual Style Tasks</h3>
<p>To add visual styles to your controls, you might need to perform some of the following tasks.</p>
<h3><a name="xptheming_topic4"><br />
<!----><br />
</a>Using ComCtl32.dll Version 6 in an Application That Does Not Use Third-Party Extensions</h3>
<p>The following are examples of applications that do not use third-party extensions.</p>
<ul type="disc">
<li>Calculator</li>
<li>FreeCell</li>
<li>Minesweeper</li>
<li>Notepad</li>
<li>Solitaire</li>
</ul>
<p><strong>To create a manifest and enable your application to use visual styles.</strong></p>
<ol type="1">
<li>Link to ComCtl32.lib and call <strong>InitCommonControls</strong> (see the Platform SDK documentation in the MSDN Library).</li>
<li>Add a file called YourApp.exe.manifest to your source tree that has the following XML format:
<pre class="xml:nocontrols">&lt;?xml version="1.0" encoding="UTF-8" standalone="yes"?&gt;
&lt;assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"&gt;
&lt;assemblyIdentity
version="1.0.0.0"
processorArchitecture="X86"
name="CompanyName.ProductName.YourApp"
type="win32"
/&gt;
&lt;description&gt;Your application description here.&lt;/description&gt;
&lt;dependency&gt;
&lt;dependentAssembly&gt;
&lt;assemblyIdentity
type="win32"
name="Microsoft.Windows.Common-Controls"
version="6.0.0.0"
processorArchitecture="X86"
publicKeyToken="6595b64144ccf1df"
language="*"
/&gt;
&lt;/dependentAssembly&gt;

&lt;/dependency&gt;
&lt;/assembly&gt;</pre>
</li>
<li>Add the manifest to your application&#8217;s resource file as follows:CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST &#8220;YourApp.exe.manifest&#8221;</li>
</ol>
<blockquote><p><strong class="le">Note </strong>When you add the previous entry to the resource you must format it on one line. Alternatively, you can place the XML manifest file in the same directory as your application&#8217;s executable file. The operating system will load the manifest from the file system first, and then check the resource section of the executable. The file system version takes precedence.</p></blockquote>
<h3><a name="xptheming_topic5"><br />
<!----><br />
</a>Using ComCtl32 Version 6 in an Application That Uses Extensions, Plugins, or a DLL That is Brought into a Process</h3>
<p>The following are examples of applications that use extensions.</p>
<ul type="disc">
<li>Microsoft Management Console (Mmc.exe)</li>
<li>Windows Shell</li>
<li>Microsoft® Visual Studio®</li>
</ul>
<p><strong>To create a manifest and enable your application to use visual styles.</strong></p>
<ol type="1">
<li>Use the Windows XP Beta 2 SDK or later.</li>
<li>Include the common controls header file as follows:#include &#8220;commctrl.h&#8221;</li>
<li>Define a compiler variable preprocessor definition as follows:#define SIDEBYSIDE_COMMONCONTROLS 1Add a file called YourApp.manifest to your source tree that has the following XML format:&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; standalone=&#8221;yes&#8221;?&gt;
<p>&lt;assembly xmlns=&#8221;urn:schemas-microsoft-com:asm.v1&#8243; manifestVersion=&#8221;1.0&#8243;&gt;</p>
<p>&lt;assemblyIdentity</p>
<p>version=&#8221;1.0.0.0&#8243;</p>
<p>processorArchitecture=&#8221;X86&#8243;</p>
<p>name=&#8221;CompanyName.ProductName.YourApp&#8221;</p>
<p>type=&#8221;win32&#8243;</p>
<p>/&gt;</p>
<p>&lt;description&gt;Your application description here.&lt;/description&gt;</p>
<p>&lt;dependency&gt;</p>
<p>&lt;dependentAssembly&gt;</p>
<p>&lt;assemblyIdentity</p>
<p>type=&#8221;win32&#8243;</p>
<p>name=&#8221;Microsoft.Windows.Common-Controls&#8221;</p>
<p>version=&#8221;6.0.0.0&#8243;</p>
<p>processorArchitecture=&#8221;X86&#8243;</p>
<p>publicKeyToken=&#8221;6595b64144ccf1df&#8221;</p>
<p>language=&#8221;*&#8221;</p>
<p>/&gt;</p>
<p>&lt;/dependentAssembly&gt;</p>
<p>&lt;/dependency&gt;</p>
<p>&lt;/assembly&gt;</li>
<li>Add the manifest to your application&#8217;s resource file as follows:CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST &#8220;YourApp.manifest&#8221;Winuser.rh includes the following defines:#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
<p>#define CONTROL_PANEL_RESOURCE_ID 123</p>
<p>#define RT_MANIFEST 24</li>
</ol>
<h3><a name="xptheming_topic6"><br />
<!----><br />
</a>Using ComCtl32 Version 6 in Control Panel or a DLL That is Run by RunDll32.exe</h3>
<p><strong>To create a manifest and enable your application to use visual styles.</strong></p>
<ol type="1">
<li>Link to ComCtl32.lib and call <strong>InitCommonControls</strong>.</li>
<li>Add a file called YourApp.cpl.manifest to your source tree that has the following XML format:&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243; standalone=&#8221;yes&#8221;?&gt;&lt;assembly xmlns=&#8221;urn:schemas-microsoft-com:asm.v1&#8243; manifestVersion=&#8221;1.0&#8243;&gt;&lt;assemblyIdentity
<p>version=&#8221;1.0.0.0&#8243;</p>
<p>processorArchitecture=&#8221;X86&#8243;</p>
<p>name=&#8221;CompanyName.ProductName.YourApp&#8221;</p>
<p>type=&#8221;win32&#8243;</p>
<p>/&gt;</p>
<p>&lt;description&gt;Your application description here.&lt;/description&gt;</p>
<p>&lt;dependency&gt;</p>
<p>&lt;dependentAssembly&gt;</p>
<p>&lt;assemblyIdentity</p>
<p>type=&#8221;win32&#8243;</p>
<p>name=&#8221;Microsoft.Windows.Common-Controls&#8221;</p>
<p>version=&#8221;6.0.0.0&#8243;</p>
<p>processorArchitecture=&#8221;X86&#8243;</p>
<p>publicKeyToken=&#8221;6595b64144ccf1df&#8221;</p>
<p>language=&#8221;*&#8221;</p>
<p>/&gt;</p>
<p>&lt;/dependentAssembly&gt;</p>
<p>&lt;/dependency&gt;</p>
<p>&lt;/assembly&gt;</li>
<li>Add the manifest to your application&#8217;s resource file as follows:CONTROL_PANEL_RESOURCE_ID RT_MANIFEST &#8220;YourCpl.manifest&#8221;</li>
</ol>
<blockquote class="dtBlock"><p><strong class="le">Note </strong>When you author a control panel application, place it in the appropriate category. Control Panel now supports categorization of control panel applications. This means that control panel applications can be assigned identifiers and separated into task areas such as Add or Remove Programs, Appearance and Themes, or Date, Time, Language, and Regional Options.</p></blockquote>
<h3><a name="xptheming_topic7"><br />
<!----><br />
</a>Using Visual Styles with a Custom Control</h3>
<p>The UxTheme API referenced in the steps to add visual styles to a control and in the corresponding code examples are defined in the header file, Uxtheme.h. The elements of the API are documented in the Platform SDK. In addition to describing the steps for applying visual styles to a control, this section provides a drawing code sample and tips on drawing controls.</p>
<p><strong>To enable a control to apply visual styles.</strong></p>
<ol type="1">
<li>Call <strong>OpenThemeData</strong> and pass the hwnd of the control you wish to apply visual styles to and a class list that describes the control&#8217;s type. The classes are defined in Tmschema.h. <strong>OpenThemeData</strong> returns an HTHEME handle, but if the visual style manager is disabled or the current visual style does not supply specific information for a given control, the function returns NULL. If the return value is NULL use non-visual style drawing functions.</li>
<li>To draw the control, call <strong>DrawThemeBackground</strong> and pass the following:
<ul type="disc">
<li>Theme handle returned from <strong>OpenThemeData</strong>, the HDC to use for rendering the control.</li>
<li>Part identifier that describes the part of the control to render. See Theme Parts and States for information on control parts and states.</li>
<li>State identifier that describes the current state of the part.</li>
<li>Pointer to the RECT structure that contains the coordinates of the rectangle where the control will be rendered.</li>
</ul>
</li>
<li>Some parts can be partially transparent. You can determine this by calling <strong>IsThemeBackgroundPartiallyTransparent</strong> with the theme handle, a control part, and a control state.</li>
<li>If your control draws text, position the text within the content rectangle of the control and select a font.
<ul type="disc">
<li>To determine the location of the content rectangle call <strong>GetThemeBackgroundContentRect</strong></li>
<li>Add your desired font to the device context (DC) then call <strong>DrawThemeText</strong>. This function enables visual effects such as shadowed text in some controls.</li>
</ul>
</li>
<li>When your control receives a WM_THEMECHANGED message, it should do the following:
<ul type="disc">
<li>Call <strong>CloseThemeData</strong> to close the existing theme handle.</li>
<li>Call <strong>OpenThemeData</strong> to get the theme handle for the newly loaded visual style.</li>
<li>This code sample illustrates the two calls.
<div id="ctl00_mainContentContainer_ctl01_">
<pre class="cpp:nocontrols">case WM_THEMECHANGED:
   CloseThemeData (hTheme);
   hTheme = OpenThemeData (hwnd, L"MyClassName");</pre>
</div>
</li>
</ul>
</li>
<li>When your control receives a WM_DESTROY message, call <strong>CloseThemeData</strong> to release the theme handle that was returned when you called <strong>OpenThemeData</strong>.</li>
</ol>
<h3>Example of Drawing Code</h3>
<p>The following code sample demonstrates how to draw a button control.</p>
<div id="ctl00_mainContentContainer_ctl02_">
<pre class="cpp:nocontrols">HTHEME hTheme = NULL;
hTheme = OpenThemeData(hwndButton, "Button");
...
DrawMyControl(hDC, hwndButton, hTheme, iState);
...
if (hTheme)
{
    CloseTheme(hTheme);
}

void DrawMyControl(HDC hDC, HWND hwndButton, HTHEME hTheme, int iState)
{
    RECT rc, rcContent;
    TCHAR szButtonText[255];
    HRESULT hr;

    GetWindowRect(hwndButton, &amp;rc);
    GetWindowText(hwndButton, szButtonText,
                 ARRAYSIZE(szButtonText));

    if (hTheme)
    {
        hr = DrawThemeBackground(hTheme, hDC, BP_BUTTON,
                iState, &amp;rc, 0);
        // Always check your result codes.

        hr = GetThemeBackgroundContentRect(hTheme,
                BP_BUTTON, iState, &amp;rc, &amp;rcContent);
        hr = DrawThemeText(hTheme, hDC, BP_BUTTON, iState,
                szButtonText, lstrlen(szButtonText),
                DT_CENTER | DT_VCENTER | DT_SINGLELINE,
                0, &amp;rcContent);
    }
    else
    {
        // Draw the control without using visual styles.
    }
}</pre>
</div>
<h3><a name="xptheming_topic8"><br />
<!----><br />
</a>Enabling Owner Drawn Controls to Use Visual Styles</h3>
<p>With Windows XP controls no longer have to consist only of lines and color fills. Now they include rich textures and patterns that can vary according to the state of the control. This means that you cannot use already existing programming elements to describe owner-drawn controls that have the look and feel of controls that have a visual style applied. If you have code that already has owner-drawn controls, you have the following options.</p>
<ul type="disc">
<li>You can call <strong>SetWindowTheme</strong> to turn off theming on the control.
<div id="ctl00_mainContentContainer_ctl03_">
<pre class="cpp:nocontrols">SetWindowTheme (hwndButton, TEXT (" "), TEXT (" "));</pre>
</div>
<p>The control will render as it did in earlier versions of Windows.</li>
<li>You can continue to use the owner-drawn methods in controls, but some of the properties will be ignored. For example, if you change the background color of a button, the button is drawn like a button with a visual style applied but the background color is not the color you specified. However if you change the font, the button is drawn with the specified font.</li>
</ul>
<h3><a name="xptheming_topic9"><br />
<!----><br />
</a>Making a Control Appear to Have No Visual Style in a Dialog Box or Window That Has a Visual Style</h3>
<p>In some cases, applications have custom-drawn controls that should not use a visual style, even when the other controls in the window do have a visual style applied. If you want to mark any custom-drawn control as having no visual style, you must call <strong>SetWindowTheme</strong> and pass in the window handle for the control and an empty string for both the <em>pszSubAppName</em> and <em>pszSubIdList</em> parameters. Calling the <strong>SetWindowTheme</strong> function with empty strings causes the control to render without a visual style appearance. The following code snippet shows how to create a button control and then call <strong>SetWindowTheme</strong> to remove the visual style from the button.</p>
<div id="ctl00_mainContentContainer_ctl04_">
<pre class="cpp:nocontrols">HWND hwndButton;

hwndButton = CreateWindow (TEXT ("button"), ...);
if (hwndButton)
{
   SetWindowTheme (hwndButton, TEXT (" "), TEXT (" "));
}</pre>
</div>
<blockquote class="dtBlock"><p><strong class="le">Note </strong>If you decide to have the control change at run time to a visual style control you can call <strong>SetWindowTheme</strong> but pass NULL for the two string parameters.</p></blockquote>
<h3><a name="xptheming_topic10"><br />
<!----><br />
</a>Using UxTheme Manager to Render a Control Whose Parts Do Not Have a Visual Style</h3>
<p>If you have a control that is not one of the common controls and you want it to look appropriate on a computer that has visual style files installed, you can take one of the following approaches.</p>
<ul type="disc">
<li>The basic approach is to use the system metric colors. Most system metric colors are set when a visual style file is applied.</li>
<li>You can use parts from other controls and render each part separately. For example, for a calendar control that consists of a grid, you can treat each square formed by the grid as a toolbar button. Do the following to program the squares as toolbar buttons.Call <strong>OpenThemeData</strong> as follows:
<div id="ctl00_mainContentContainer_ctl05_">
<pre class="cpp:nocontrols">OpenThemeData (hwnd, "Toolbar");</pre>
</div>
<p>Use the returned theme handle to render each of the squares on the calendar.</li>
<li>You can mix and match control parts by calling <strong>OpenThemeData</strong> multiple times for a given control and using the appropriate theme handle to draw different parts. In some visual styles, however, certain parts might not be compatible with other parts.</li>
<li>Some specialized applications that need to match the Windows XP look above the control level might need to detect the currently loaded visual style and have custom renderings designed to match the look. This can be useful for applications that provide visual style architecture.</li>
</ul>
<h3><a name="xptheming_topic11"><br />
<!----></a></p>
<p><a name="xptheming_topic11"> </a>Using Visual Styles with HTML Content</h3>
<p>There are many applications, written in HTML and deployed as an HTML Application (HTA) or a Win32 application, that use HTML or host the WebObject in their UI elements. When running on Windows XP, these applications can have the same look that is consistent with Win32-based applications running on the same operating system. The following are some considerations when applying visual styles to HTML content.</p>
<ul type="disc">
<li>Visual styles in relation to HTML content applies only to Intrinsic HTML Controls such as buttons, scrollbars, and select controls. The Windows XP visual style is applied automatically to controls on HTML pages. If you do not want your page to have a visual style applied, use the META tag with its attribute set to NO. The META tag is documented in a following section.</li>
<li>HTML pages that modify the Cascading Style Sheets (CSS) properties such as background or border do not have a visual style applied to them. They display the specified CSS attribute.</li>
<li>When specified as part of the content, most CSS properties do apply to elements that have visual styles applied.</li>
<li>You must add a metatag to the &lt;head&gt; section of your pages. You need to add this tag only once; visual styles apply it to all the page content. This also applies to content packaged as HTAs. The metatag must be as follows:
<div id="ctl00_mainContentContainer_ctl06_">
<pre class="cpp:nocontrols">&lt;META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes"&gt;</pre>
</div>
</li>
<li>Be aware that visual styles might change the layout of your content. Also, if you set certain attributes on Intrinsic HTML Controls, such as the width of a button, you might find that the label on the button is unreadable under certain visual styles.</li>
<li>You must thoroughly test your content using visual styles to determine whether applying visual styles has an adverse impact on your content and layout. Make any changes required to make your content work successfully.</li>
</ul>
<h3><a name="xptheming_topic12"><br />
<!----><br />
</a>Causing the UxTheme Manager to Ignore Top-Level Windows</h3>
<p>To avoid applying the new visual style to a top-level window, consider the following:</p>
<ul type="disc">
<li>If a window has a region applied to it, the UxTheme Manager assumes that this is a specialized window and the window will not use visual styles throughout its life. Child windows associated with a non-visual style top-level window may still apply visual styles even though the parent does not.</li>
<li>If you apply a region to a top-level window and later remove the region, a visual style is not automatically applied to the window. To apply a visual style to the window, you must create a new window.</li>
<li>If you want to disable the use of visual styles for all top-level windows in your application, call <strong>SetThemeAppProperties</strong> and do not pass the STAP_ALLOW_NONCLIENT flag.</li>
<li>If an application does not call <strong>SetThemeAppProperties</strong>, the assumed flag values are STAP_ALLOW_NONCLIENT | STAP_ALLOW_CONTROLS | STAP_ALLOW_WEBCONTENT. The assumed values cause the non-client area, the controls, and Web content to have a visual style applied.</li>
</ul>
<h3><a name="xptheming_topic13"><br />
<!----><br />
</a>Using 32 Bit Anti-Aliased Icons</h3>
<p>Windows XP imagelists, which are collections of images used with certain controls such as list-view controls, support the use of 32-bit anti-aliased icons and bitmaps. Color values use 24 bits, and 8 bits are used as an alpha channel on the icons. To create an imagelist that can handle a 32-bits-per-pixel (bpp) image, call the ImageList_Create function passing in an ILC_COLOR32 flag.</p>
<p>The following graphic shows that the icon format has not changed, but the way in which you author these icons has changed.</p>
<p class="fig"><img src="http://i.msdn.microsoft.com/ms997646.xptheming1(en-us,MSDN.10).gif" border="0" alt="" /></p>
<h3>Icon Format</h3>
<p>To author 32-bit icons correctly, do the following:</p>
<ul type="disc">
<li>Author multiple images for each icon. The following graphic shows this.
<p class="fig1"><img src="http://i.msdn.microsoft.com/ms997646.xptheming2(en-us,MSDN.10).gif" border="0" alt="" /></p>
</li>
</ul>
<h3>Multiple Images of the Same Icon</h3>
<ul type="disc">
<li>In the previous graphic the first three images are in 16-color mode for use in safe mode.</li>
<li>The next three icons are used in Windows XP 256-color mode.</li>
<li>The last three icons have the alpha channel and can be used only in Windows XP or future operating systems running 24-bit color or higher.</li>
<li>The order of images in the icon format does matter. If the order is wrong, older versions of Windows function poorly when extracting the icons. Extracting the icons incorrectly can cause memory corruption and improper rendering.</li>
<li>Previous versions of Windows had a 10-icon resource limit, but Windows XP supports thousands of icon resources.</li>
</ul>
<blockquote class="dtBlock"><p><strong class="le">Note </strong>You can use third-party tools to generate icon files and bitmaps that contain an alpha channel.</p></blockquote>
<h3><a name="xptheming_topic14"><br />
<!----></a></p>
<p><a name="xptheming_topic14"> </a>Shipping Your Application Both on Windows XP and Earlier Versions of Windows</h3>
<p>Much of the Windows XP visual style architecture is designed to make it simple to continue to ship your product on earlier versions of Windows that do not support changing the appearance of controls. When shipping an application for more than one operating system, be aware of the following:</p>
<ul type="disc">
<li>Installing your application&#8217;s manifest in earlier versions will not affect the rendering of controls.</li>
<li>You must test your application to make sure you are not relying on features of ComCtl32.dll version 6 without first checking for the current version.</li>
<li>Do not link directly to the UxTheme.lib. If you use the UxTheme API to add visual styles to custom controls, load the library on demand.</li>
<li>Write error-handling code for instances when visual styles do not work as expected.</li>
<li>If you use the features in ComCtl32.dll version 6, such as the tile-view or link control, you must handle the case where those controls are not available on your user&#8217;s computer. ComCtl32.dll version 6 is not redistributable.</li>
</ul>
<h3><a name="xptheming_topic15"><br />
<!----><br />
</a>Summary</h3>
<p>This document described tasks that are necessary to apply visual styles to your applications. The document does not include all the tasks you may need to perform but rather discusses some of the more common ones.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/65/using-xp-styles-from-msdn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>23个不同风格 Ubuntu Linux 主题</title>
		<link>http://www.xmxsuperstar.com/archives/49/49.html</link>
		<comments>http://www.xmxsuperstar.com/archives/49/49.html#comments</comments>
		<pubDate>Sun, 10 Aug 2008 14:22:30 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[gnome]]></category>
		<category><![CDATA[theme]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=49</guid>
		<description><![CDATA[转自ownlinux Ubuntu 默认的主题一直是大家一个争议的话题，很多 Ubuntu 用户对 Ubuntu 主色调为黄色的主题并不感冒，也许这就是所谓的众口难调吧。其实稍微动动手就可以让你的 Ubuntu 以一个新的面貌展现在你的面前。刚刚在sizzledcore.com上看到适用于 Ubuntu Linux 的23个不同风格的主题，感觉相当不错，便立即和大家分享。当然你也可以把他们用的采用 GNOME 桌面的别的 Linux 发行版上。 Murrina Triomphe Download Hardy Theme 2.0 Download Bamboo Zen Download Lux Theme Download Burnt Orange Ice Download Creamy Download Glow Download Moomex Download Roy (Windows Royale) Download Clearlooks Metallico Download Aqua Dreams Download Linux Mint Download Real Minimal Download [...]]]></description>
			<content:encoded><![CDATA[<p>转自<a href="http://www.ownlinux.cn/2008/08/10/23-ubuntu-themes/" target="_blank">ownlinux</a></p>
<hr />
Ubuntu 默认的主题一直是大家一个争议的话题，很多 Ubuntu 用户对 Ubuntu 主色调为黄色的主题并不感冒，也许这就是所谓的众口难调吧。其实稍微动动手就可以让你的 Ubuntu 以一个新的面貌展现在你的面前。刚刚在<a href="http://www.sizzledcore.com/2008/08/09/ubuntu-themes-awesome-themes-for-linux/" target="_blank">sizzledcore.com</a>上看到适用于 Ubuntu Linux 的23个不同风格的主题，感觉相当不错，便立即和大家分享。当然你也可以把他们用的采用 GNOME 桌面的别的 Linux 发行版上。</p>
<h2>Murrina Triomphe</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1607" title="ubuntu-murrina-triomphe" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-murrina-triomphe-400x300.jpg" alt="Ubuntu Theme Murrina Triomphe" width="400" height="300" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=83183&amp;id=1&amp;tan=67175514" target="_blank">Download</a></strong></p>
<h2>Hardy Theme 2.0</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1603" title="ubuntu-hardy-theme-2" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-hardy-theme-2-400x250.jpg" alt="Ubuntu Theme Hardy" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=74045&amp;id=1&amp;tan=86815695" target="_blank">Download</a></strong></p>
<h2>Bamboo Zen</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1596" title="ubuntu-bamboo-zen" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-bamboo-zen-400x250.jpg" alt="Ubuntu Theme Bamboo Zen" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=85860&amp;id=1&amp;tan=64882764" target="_blank">Download</a></strong></p>
<h2>Lux Theme</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1605" title="ubuntu-lux" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-lux-400x272.jpg" alt="Ubuntu Theme Lux" width="400" height="272" /></a></p>
<p><strong><a href="http://szerencsefia.webs.com/files/LUX.tar.gz" target="_blank">Download</a></strong></p>
<h2>Burnt Orange Ice</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1597" title="ubuntu-burnt-orangeice" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-burnt-orangeice-400x250.jpg" alt="Ubuntu Theme Burnt Orange Ice" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=70717&amp;id=1&amp;tan=42932972" target="_blank">Download</a></strong></p>
<h2>Creamy</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1599" title="ubuntu-creamy" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-creamy-400x250.jpg" alt="Ubuntu Theme Creamy" width="400" height="250" /></a></p>
<p><strong><a href="http://xfce-look.org/content/download.php?content=69315&amp;id=1&amp;tan=44085142" target="_blank">Download</a></strong></p>
<h2>Glow</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1602" title="ubuntu-glow" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-glow-400x250.jpg" alt="Ubuntu Theme Glow" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=85996&amp;id=1&amp;tan=177758" target="_blank">Download</a></strong></p>
<h2>Moomex</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1606" title="ubuntu-moomex" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-moomex-400x250.jpg" alt="Ubuntu Theme Moomex" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=57063&amp;id=1&amp;tan=66294688&amp;PHPSESSID=39b7cae93ac114612bfb03b507dba35d" target="_blank">Download</a></strong></p>
<h2>Roy (Windows Royale)</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1609" title="ubuntu-roy" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-roy-400x240.jpg" alt="Ubuntu Theme Roy" width="400" height="240" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=76081&amp;id=1&amp;tan=48556439" target="_blank">Download</a></strong></p>
<h2>Clearlooks Metallico</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1598" title="ubuntu-clearlooks-mettalico" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-clearlooks-mettalico-400x250.jpg" alt="Ubuntu Theme Clearlooks Metalico" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=70264&amp;id=1&amp;tan=85716622" target="_blank">Download</a></strong></p>
<h2>Aqua Dreams</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1595" title="ubuntu-aqua-dreams" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-aqua-dreams-400x300.jpg" alt="Ubuntu Theme Aqua Dreams" width="400" height="300" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=72997&amp;id=1&amp;tan=6578997" target="_blank">Download</a></strong></p>
<h2>Linux Mint</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1604" title="ubuntu-linux-mint" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-linux-mint-400x250.jpg" alt="Ubuntu Theme Linux Mint" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=71728&amp;id=1&amp;tan=80216145" target="_blank">Download</a></strong></p>
<h2>Real Minimal</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1611" title="ubuntu-real-minimal" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-real-minimal-400x250.jpg" alt="Ubuntu Theme Real Minimal" width="400" height="250" /></a></p>
<p><strong><a href="http://www.deviantart.com/download/51131618/Real_Minimal_Widgets_Style_2_by_szerencsefia.gz" target="_blank">Download</a></strong></p>
<h2>Root Green</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1608" title="ubuntu-root-green" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-root-green-400x300.jpg" alt="Ubuntu Theme Root Green" width="400" height="300" /></a></p>
<p><strong><a href="http://gnome-look.org/content/download.php?content=45670&amp;id=1&amp;tan=237194" target="_blank">Download</a></strong></p>
<h2>Light Coffee</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1612" title="ubuntu-light-coffee" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-light-coffee-400x250.jpg" alt="Ubuntu Theme Light Coffee" width="400" height="250" /></a></p>
<p><strong><a href="http://www.deviantart.com/download/76461827/Light_Coffee_3___OFF_ROAD_by_szerencsefia.bz2" target="_blank">Download</a></strong></p>
<h2>Slickness Black</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1628" title="ubuntu-slickness-black" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-slickness-black-400x250.jpg" alt="Ubuntu Theme Slickness Black" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Slickness+Black?content=73210" target="_blank">Download</a></strong></p>
<h2>Murrina Aero</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1627" title="ubuntu-murrina-aero" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-murrina-aero-400x250.jpg" alt="Ubuntu Theme Murrina Aero" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Murrina+Aero?content=54573" target="_blank">Download</a></strong></p>
<h2>Tigris</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1622" title="ubuntu-tigris" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-tigris-400x300.jpg" alt="Ubuntu Theme Tigris" width="400" height="300" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Tigris?content=75276" target="_blank">Download</a></strong></p>
<h2>Sofice</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1629" title="ubuntu-soffice" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-soffice-400x320.jpg" alt="Ubuntu Theme Sofice" width="400" height="320" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Soffice?content=67854" target="_blank">Download</a></strong></p>
<h2>Blue Joy</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1623" title="ubuntu-blue-joy" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-blue-joy-400x250.png" alt="Ubuntu Theme Blue Joy" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Blue-Joy?content=73387" target="_blank">Download</a></strong></p>
<h2>Gaia Nova</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1626" title="ubuntu-gaia-nova" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-gaia-nova-400x300.jpg" alt="Ubuntu Theme Gaia Nova" width="400" height="300" /></a></p>
<p><a href="http://gnome-look.org/content/show.php/Gaia+Nova?content=75930" target="_blank">Download</a></p>
<h2>Elegant Brit</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1625" title="ubuntu-elegant-brit" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-elegant-brit-400x250.jpg" alt="Ubuntu Theme Elegant Brit" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Elegant+Brit?content=74553" target="_blank">Download</a></strong></p>
<h2>Darker Ice Murrina</h2>
<p><a href="http://www.ownlinux.cn/" target="_blank"><img class="alignnone size-medium wp-image-1624" title="ubuntu-darker-ice-murrina" src="http://www.ownlinux.cn/wp-content/uploads/2008/08/ubuntu-darker-ice-murrina-400x250.jpg" alt="Ubuntu Theme Darker Ice Murrina" width="400" height="250" /></a></p>
<p><strong><a href="http://gnome-look.org/content/show.php/Darker+Ice+Murrina?content=72357">Download<br />
</a></strong></p>
<hr />
<a href="http://www.sizzledcore.com/2008/08/09/ubuntu-themes-awesome-themes-for-linux/" target="_blank">英文原文</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/49/49.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>10 icons sets to customize your GNU/Linux desktop</title>
		<link>http://www.xmxsuperstar.com/archives/22/10-icons-sets-to-customize-your-gnulinux-desktop.html</link>
		<comments>http://www.xmxsuperstar.com/archives/22/10-icons-sets-to-customize-your-gnulinux-desktop.html#comments</comments>
		<pubDate>Mon, 04 Aug 2008 14:37:04 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[ZZ]]></category>
		<category><![CDATA[icons]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=22</guid>
		<description><![CDATA[原文地址 Some days ago, I wrote a post about 30 gnome themes to enhance your Ubuntu desktop. In order to make one more step in Linux desktop customization, here is a list of 10 very cool icons sets for your Linux desktop. BWS_Icons Tango mine gOS icons Mac_OS_X_Leopard_for_Debian Adrix KDEmod icomity Yellow crystal clear iOS [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.catswhocode.com/blog/os/gnu-linux/10-icons-sets-to-customize-your-gnulinux-desktop-160" target="_blank">原文地址</a></p>
<hr />Some days ago, I wrote a post about 30 gnome themes to enhance your Ubuntu desktop. In order to make one more step in Linux desktop customization, here is a list of 10 very cool icons sets for your Linux desktop.</p>
<h2>BWS_Icons</h2>
<p><a href="http://gnome-look.org/content/show.php/BWS_Icons?content=83610"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/bws.jpg" alt="" /></a></p>
<h2 style="margin-top: 50px;">Tango mine</h2>
<p><a href="http://gnome-look.org/content/show.php/Tango+mine?content=76316"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/tango-mine.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">gOS icons</h2>
<p><a href="http://gnome-look.org/content/show.php/gOS+Icons?content=80351"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/gos.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">Mac_OS_X_Leopard_for_Debian</h2>
<p><a href="http://gnome-look.org/content/show.php/Mac_OS_X_Leopard_for_Debian?content=74892"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/macosx.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">Adrix</h2>
<p><a href="http://kde-look.org/content/show.php/AdriX+KDE+Icon+Theme?content=84261"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/adrix.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">KDEmod</h2>
<p><a href="http://kde-look.org/content/show.php/KDEmod+icon+theme+for+Kubuntu?content=85197"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/kdemod.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">icomity</h2>
<p><a href="http://xfce-look.org/content/show.php/iComity+%28alpha+1%29?content=54242"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/icomity.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">Yellow crystal clear</h2>
<p><a href="http://kde-look.org/content/show.php/yellow+crystal+clear+icons+by+8siem?content=81095"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/yellow-crystal-clear.png" alt="" /></a></p>
<h2 style="margin-top: 50px;">iOS</h2>
<p><a href="http://kde-look.org/content/show.php/iOS+-+FileSystem+Icons?content=77285"><img src="http://www.catswhocode.com/blog/wp-content/uploads/2008/07/ios.png" alt="" /></a></p>
<p>Any icon set you’d like to see here? Don’t hesitate to share!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/22/10-icons-sets-to-customize-your-gnulinux-desktop.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>升级WP到2.6</title>
		<link>http://www.xmxsuperstar.com/archives/20/%e5%8d%87%e7%ba%a7wp%e5%88%b026.html</link>
		<comments>http://www.xmxsuperstar.com/archives/20/%e5%8d%87%e7%ba%a7wp%e5%88%b026.html#comments</comments>
		<pubDate>Sun, 03 Aug 2008 14:41:34 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.com/?p=20</guid>
		<description><![CDATA[WP2.6刚发布的时候就想升级的，主要是想迫切的体验一下版本管理的功能，不过看到网上那么多人更新失败，就一直忍着没更新。今天终于忍不住了，结果人品超好，啥问题也没有啊，呵呵。也许是我插件用得少的缘故吧。]]></description>
			<content:encoded><![CDATA[<p>WP2.6刚发布的时候就想升级的，主要是想迫切的体验一下版本管理的功能，不过看到网上那么多人更新失败，就一直忍着没更新。今天终于忍不住了，结果人品超好，啥问题也没有啊，呵呵。也许是我插件用得少的缘故吧。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/20/%e5%8d%87%e7%ba%a7wp%e5%88%b026.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Firefox3.0怎样在XP上使用Vista主题</title>
		<link>http://www.xmxsuperstar.com/archives/8/firefox30%e6%80%8e%e6%a0%b7%e5%9c%a8xp%e4%b8%8a%e4%bd%bf%e7%94%a8vista%e4%b8%bb%e9%a2%98.html</link>
		<comments>http://www.xmxsuperstar.com/archives/8/firefox30%e6%80%8e%e6%a0%b7%e5%9c%a8xp%e4%b8%8a%e4%bd%bf%e7%94%a8vista%e4%b8%bb%e9%a2%98.html#comments</comments>
		<pubDate>Wed, 18 Jun 2008 00:55:17 +0000</pubDate>
		<dc:creator>邪恶的小星星</dc:creator>
				<category><![CDATA[Computer]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.xmxsuperstar.cn/jaws/index.php/blog/show/Firefox3.0怎样在XP上使用Vista主题.html</guid>
		<description><![CDATA[Firefox3.0的主题是自动根据操作系统切换的，如果要在xp上强制使用Vista的主题，可以编辑安装目录下的“chrome\classic.manifest”文件，把里面的“6”全部改成“5”就是了。（图标和配色稍有不同而已）]]></description>
			<content:encoded><![CDATA[<p>Firefox3.0的主题是自动根据操作系统切换的，如果要在xp上强制使用Vista的主题，可以编辑安装目录下的“chrome\classic.manifest”文件，把里面的“6”全部改成“5”就是了。（图标和配色稍有不同而已）</p></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xmxsuperstar.com/archives/8/firefox30%e6%80%8e%e6%a0%b7%e5%9c%a8xp%e4%b8%8a%e4%bd%bf%e7%94%a8vista%e4%b8%bb%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed! -->