<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" version="2.0">

<channel>
	<title>七星庐</title>
	
	<link>http://qixinglu.com</link>
	<description>潜心修炼，早日成仙。GNU/Linux、Ubuntu、Firefox、LiveCD、游戏MOD。</description>
	<lastBuildDate>Mon, 08 Mar 2010 13:56:54 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/qixinglu" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="qixinglu" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>调用Tineye的鼠标手势</title>
		<link>http://qixinglu.com/archives/firegestures_tineye_image_search</link>
		<comments>http://qixinglu.com/archives/firegestures_tineye_image_search#comments</comments>
		<pubDate>Fri, 05 Mar 2010 13:29:08 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[FireGuestures]]></category>
		<category><![CDATA[Tineye]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2258</guid>
		<description><![CDATA[Tineye是一个反向图片搜索引擎，是个很有趣的网站，上传一张图片或者提交图片的地址，它替搜索出包含你提交图片的网页，连和大叔用过都说好。
而使用这个搜索引擎，需要右键复制图片地址，新建标签页，打开Tineye的网站，粘贴地址，点击“搜索按钮”，等待结果，这几个步骤用多了比较麻烦，所以找个捷径。
Tineye官方是提供浏览器扩展的，使用右键菜单打开选择图片，也有Bookmarklet书签，不过是提交网页，Tineye分析网页上的图片给你选择。
而我不想多装一个扩展，而用Bookmarklet不在Noscipt白名单上的话就失效，所以也写一个Firegestures脚本。
初看Tineye的搜索地址，是“http://www.tineye.com/search/图片的sha1值”，看来要构造这个地址会有点麻烦，需要事先计算出图片的sha1值，而它的API是收费的，不过我后来看了扩展和Bookmarklet的代码，发现也可以用“http://www.tineye.com/search/?url=图片地址”来调用，这样代码就容易写了。
代码地址点击这里，默认行为是选择鼠标手势的起点，如果手势起点不是图片，则使用手势终点，如果也不是图片，则使用当前网址，搜索结果页在新标签页打开。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.tineye.com">Tineye</a>是一个反向图片搜索引擎，是个很有趣的网站，上传一张图片或者提交图片的地址，它替搜索出包含你提交图片的网页，连<a href="http://www.hecaitou.net/?p=6842">和大叔用过都说好</a>。</p>
<p>而使用这个搜索引擎，需要右键复制图片地址，新建标签页，打开Tineye的网站，粘贴地址，点击“搜索按钮”，等待结果，这几个步骤用多了比较麻烦，所以找个捷径。</p>
<p>Tineye官方是提供<a href="http://www.tineye.com/plugin">浏览器扩展</a>的，使用右键菜单打开选择图片，也有<a href="http://www.tineye.com/bookmarklet">Bookmarklet书签</a>，不过是提交网页，Tineye分析网页上的图片给你选择。<span id="more-2258"></span></p>
<p>而我不想多装一个扩展，而用Bookmarklet不在Noscipt白名单上的话就失效，所以也写一个Firegestures脚本。</p>
<p>初看Tineye的搜索地址，是“http://www.tineye.com/search/图片的sha1值”，看来要构造这个地址会有点麻烦，需要事先计算出图片的sha1值，而它的API是收费的，不过我后来看了扩展和Bookmarklet的代码，发现也可以用“http://www.tineye.com/search/?url=图片地址”来调用，这样代码就容易写了。</p>
<p>代码地址<a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/firegestures/tineye_image_search.js">点击这里</a>，默认行为是选择鼠标手势的起点，如果手势起点不是图片，则使用手势终点，如果也不是图片，则使用当前网址，搜索结果页在新标签页打开。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/firegestures_tineye_image_search/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>固定Firefox状态栏图标顺序</title>
		<link>http://qixinglu.com/archives/fixup_firefox_status_bar_icon_order</link>
		<comments>http://qixinglu.com/archives/fixup_firefox_status_bar_icon_order#comments</comments>
		<pubDate>Mon, 01 Mar 2010 09:29:39 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2244</guid>
		<description><![CDATA[我之前写过《手动修改Firefox状态栏图标顺序》，通过修改“extensions.ini”文件，把Echonfon的图标弄回靠右的位置，但那个方法有一个问题，就是当你添加、删除、更新、启用和禁用过扩展后，图标顺序就打回原形了，得再修改一次，很烦，于是我就研究一下怎么永久固定它。
排序原因
经我研究，“extensions.ini”文件里的顺序就是按照扩展的名称的字母来排序的，扩展面板里也是这样。对于状态栏图标，从左边开始排序， 即名称的字母越靠前，图标就越靠左。但也有特例的，我装的“CS Lite”这个扩展就在最左边，可能它的代码特别指定了位置。
所以这就能解释为什么之前“Twitterfox”会在右边第二位置，在我安装的扩展中，名称排在它后面的只有“Yet Another Smooth Scrolling”，“而改成了“Echofon”后，就排在其它扩展前面了。所以把名称改回“Twitterfox”就行了，&#8221;Echofon”这名字实在太失败了。
修改方法
用文本编辑器打开“你的Firefox配置文件夹/extensions/twitternotifier@naan.net/install.rdf”这个文件，开头如下代码

&#60;em:id&#62;twitternotifier@naan.net&#60;/em:id&#62;
&#60;em:name&#62;Echofon&#60;/em:name&#62;
&#60;em:version&#62;1.9.5.1&#60;/em:version&#62;

把中间那行“Echofon”改回“Twitterfox”就行了。接下来就是让Firefox重新读取这个扩展信息，有两个方法

反复启用/禁用Echofon，重启Firefox若干次，直到名称和状态栏图标位置改变。我也找不到规律，总之反复重启几次就行了。
或者干脆点先卸载再重新安装，在“twitternotifier@naan.net”目录里，全选，把所有文件打包为zip，再改扩展名为”xpi“，然后在扩展面板里卸载掉Echofon，重启Firefox，再拉进这个xpi文件来安装。

]]></description>
			<content:encoded><![CDATA[<p>我之前写过<a href="/archives/manually_change_firefox_status_bar_icon_order">《手动修改Firefox状态栏图标顺序》</a>，通过修改“extensions.ini”文件，把Echonfon的图标弄回靠右的位置，但那个方法有一个问题，就是当你添加、删除、更新、启用和禁用过扩展后，图标顺序就打回原形了，得再修改一次，很烦，于是我就研究一下怎么永久固定它。</p>
<h3>排序原因</h3>
<p>经我研究，“extensions.ini”文件里的顺序就是按照扩展的名称的字母来排序的，扩展面板里也是这样。对于状态栏图标，从左边开始排序， 即名称的字母越靠前，图标就越靠左。但也有特例的，我装的“CS Lite”这个扩展就在最左边，可能它的代码特别指定了位置。<span id="more-2244"></span></p>
<p>所以这就能解释为什么之前“Twitterfox”会在右边第二位置，在我安装的扩展中，名称排在它后面的只有“Yet Another Smooth Scrolling”，“而改成了“Echofon”后，就排在其它扩展前面了。所以把名称改回“Twitterfox”就行了，&#8221;Echofon”这名字实在太失败了。</p>
<h3>修改方法</h3>
<p>用文本编辑器打开“你的Firefox配置文件夹/extensions/twitternotifier@naan.net/install.rdf”这个文件，开头如下代码</p>

<div class="wp_syntax"><div class="code"><pre class="xml" style="font-family:monospace;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;em:id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>twitternotifier@naan.net<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/em:id<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;em:name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>Echofon<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/em:name<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>
<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;em:version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span>1.9.5.1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/em:version<span style="color: #000000; font-weight: bold;">&gt;</span></span></span></pre></div></div>

<p>把中间那行“Echofon”改回“Twitterfox”就行了。接下来就是让Firefox重新读取这个扩展信息，有两个方法</p>
<ul>
<li>反复启用/禁用Echofon，重启Firefox若干次，直到名称和状态栏图标位置改变。我也找不到规律，总之反复重启几次就行了。</li>
<li>或者干脆点先卸载再重新安装，在“twitternotifier@naan.net”目录里，全选，把所有文件打包为zip，再改扩展名为”xpi“，然后在扩展面板里卸载掉Echofon，重启Firefox，再拉进这个xpi文件来安装。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/fixup_firefox_status_bar_icon_order/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>重置Vimperator的状态栏为默认风格</title>
		<link>http://qixinglu.com/archives/reset_vimperator_statusbar_style</link>
		<comments>http://qixinglu.com/archives/reset_vimperator_statusbar_style#comments</comments>
		<pubDate>Sun, 28 Feb 2010 08:53:41 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[stylish]]></category>
		<category><![CDATA[Vimperator]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2234</guid>
		<description><![CDATA[Vimperator这个装逼扩展被我启用又禁用，原因是我对它修改状态栏的配色充满怨念，改成黑色还要加粗，严重破坏了我的桌面风格河蟹度。在笔记本上不插鼠标时这个扩展非常实用，但我也是鼠标流，有鼠标时禁用掉。

最后还是Do some hackings，修改它的配色为默认风格，写了个Stylish的CSS样式，整回了默认颜色，顺便把命令栏隐藏起来，按“:”输入时才弹出，这下可顺眼好多了。

依然扔到了userstyle上，到这个页面安装。
用了这个唯一问题是是浏览https链接是不会变色，虽然可以用stylish的url匹配来解决，但我不在意这个问题，不折腾了。其实我倒是想把命令栏放到状态栏的上方，因为显示命令结果时状态栏上移很不爽，尤其是打开了Echofon的窗口的时候。
]]></description>
			<content:encoded><![CDATA[<p><a href="http://vimperator.org/">Vimperator</a>这个装逼扩展被我启用又禁用，原因是我对它修改状态栏的配色充满怨念，改成黑色还要加粗，严重破坏了我的桌面风格河蟹度。在笔记本上不插鼠标时这个扩展非常实用，但我也是<a href="/tag/firegestures">鼠标流</a>，有鼠标时禁用掉。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/reset_vimperator_statusbar_style.png" alt="Vimperator原来的效果" /></p>
<p>最后还是Do some hackings，修改它的配色为默认风格，写了个Stylish的CSS样式，整回了默认颜色，顺便把命令栏隐藏起来，按“:”输入时才弹出，这下可顺眼好多了。<span id="more-2234"></span></p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/reset_vimperator_statusbar_style_1.png" alt="应用Stylish样式后的效果" /></p>
<p>依然扔到了userstyle上，到<a href="http://userstyles.org/styles/25738">这个页面</a>安装。</p>
<p>用了这个唯一问题是是浏览https链接是不会变色，虽然可以用stylish的url匹配来解决，但我不在意这个问题，不折腾了。其实我倒是想把命令栏放到状态栏的上方，因为显示命令结果时状态栏上移很不爽，尤其是打开了Echofon的窗口的时候。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/reset_vimperator_statusbar_style/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google的图片代理</title>
		<link>http://qixinglu.com/archives/google_image_proxy</link>
		<comments>http://qixinglu.com/archives/google_image_proxy#comments</comments>
		<pubDate>Fri, 12 Feb 2010 13:52:37 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[Bookmarklet]]></category>
		<category><![CDATA[FireGestures]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[代理]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2181</guid>
		<description><![CDATA[前天Google Buzz开通了，发现它会把Google Reader的文章都显示出来，折叠起来的话，文章里的图片会缩小，无聊看了一下地址，就是我上篇文章里的Ghost图片，发现地址如下
https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fcod6_ghost.jpg&#38;container=focus&#038;gadget=a&#038;no_expand=1&#038;resize_h=120&#038;rewriteMime=image%2F*
并非用图片的原始地址，也不是用CSS来缩小的，也就是Google自己去原始地址抓取后，缩放一下再传过来。看到地址里有两个参数值得注意

一个是“url”，看样子原始图片地址了，我随便找其它的图片地址替换一下，结果提示下载“p.txt”的文件，保存，改扩展名为“jpg”，果然是张图片。
还有把“resize_h”，看来是缩放图片的宽度，改为0试试，再下载，果然表示不缩放，对比一下原始图片的md5，一样的。

哈哈，这下有得玩了，可以利用这个功能来做个图片代理，Google的高速服务器，不需要用户验证，还支持https的，爽！方法就是写个脚本，把网页里面的图片地址全部改写一下，几行代码而已，不过这方法不支持在css里引用的图片。实现了3种脚本，各有优劣，按需使用吧。
Greasemonkey
最先想到就用Greasemonkey来实现，上传到userscript了，安装页面猛击这里。匹配启用网页比较粗暴地写成“http://*”，改成你需要的网址，或者你手动来启用。注
Bookmarklet
也可以弄成书签，需要时点击一下就行了，不用刷新，随叫随用。新建一个书签，名称为“Google图片代理“，粘贴下面代码到地址一栏。

javascript:&#40;function&#40;&#41;&#123;prefix = &#34;https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=&#34;; suffix = &#34;&#38;container=focus&#38;gadget=a&#38;no_expand=1&#38;resize_h=0&#38;rewriteMime=image%2F*&#34;; images = document.getElementsByTagName&#40;&#34;img&#34;&#41;; for &#40;var i = 0; i &#60; images.length; i++&#41; &#123; if &#40;images&#91;i&#93;.src.indexOf&#40;prefix&#41; == -1&#41; &#123; images&#91;i&#93;.src = prefix + encodeURIComponent&#40;images&#91;i&#93;.src&#41; + suffix; &#125; &#125;&#125;&#41;&#40;&#41;;

FireGestures
也写一个FireGestures脚本，猛击这里看代码，复制粘贴为新脚本就可以了。因为我也使用了Noscript这个扩展，如果没把网站加进白名单的话，Bookmarklet是无效的，所以改用FireGestures。
秒掉Opera Turbo的方法就是把脚本中的地址参数“resize_h”后面的值改成你想要的图片宽度，Google服务器会替你缩放图片。用这方法能对付放在Picasa上的图片，或者干脆在服务端添加改写代码，应该也不难。
注：原来我以为Greasemonkey的脚本是在网页加载完成后才执行的，就是原始地址图片都显示出来后，再用代理下载一次，重复浪费资源了。这说法不正确，脚本应该是DOMContentLoaded事件后执行，即HTML代码已经解析好，Firefox同时执行脚本和加载图片（这时地址还未改变）。脚本很快就执行完，地址已经被改变，Firefox就发现图片地址改变了，就放弃加载原始地址，改加载新地址，即Firefox刚下载了页面前几张的图片的一小段数据就放弃下载，所以不算是重复下载的。
]]></description>
			<content:encoded><![CDATA[<p>前天Google Buzz开通了，发现它会把Google Reader的文章都显示出来，折叠起来的话，文章里的图片会缩小，无聊看了一下地址，就是我上篇文章里的Ghost图片，发现地址如下</p>
<blockquote><p>https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fcod6_ghost.jpg&amp;container=focus&#038;gadget=a&#038;no_expand=1&#038;resize_h=120&#038;rewriteMime=image%2F*</p></blockquote>
<p>并非用图片的原始地址，也不是用CSS来缩小的，也就是Google自己去原始地址抓取后，缩放一下再传过来。看到地址里有两个参数值得注意<span id="more-2181"></span></p>
<ul>
<li>一个是“url”，看样子原始图片地址了，我随便找其它的图片地址替换一下，结果提示下载“p.txt”的文件，保存，改扩展名为“jpg”，果然是张图片。</li>
<li>还有把“resize_h”，看来是缩放图片的宽度，改为0试试，再下载，果然表示不缩放，对比一下原始图片的md5，一样的。</li>
</ul>
<p>哈哈，这下有得玩了，可以利用这个功能来做个图片代理，Google的高速服务器，不需要用户验证，还支持https的，爽！方法就是写个脚本，把网页里面的图片地址全部改写一下，几行代码而已，不过这方法不支持在css里引用的图片。实现了3种脚本，各有优劣，按需使用吧。</p>
<h3>Greasemonkey</h3>
<p>最先想到就用Greasemonkey来实现，上传到userscript了，安装页面<a href="http://userscripts.org/scripts/show/68761">猛击这里</a>。匹配启用网页比较粗暴地写成“http://*”，改成你需要的网址，或者你手动来启用。<strong>注</strong></p>
<h3>Bookmarklet</h3>
<p>也可以弄成书签，需要时点击一下就行了，不用刷新，随叫随用。新建一个书签，名称为“Google图片代理“，粘贴下面代码到地址一栏。</p>

<div class="wp_syntax"><div class="code"><pre class="javascript" style="font-family:monospace;">javascript<span style="color: #339933;">:</span><span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#123;</span>prefix <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=&quot;</span><span style="color: #339933;">;</span> suffix <span style="color: #339933;">=</span> <span style="color: #3366CC;">&quot;&amp;container=focus&amp;gadget=a&amp;no_expand=1&amp;resize_h=0&amp;rewriteMime=image%2F*&quot;</span><span style="color: #339933;">;</span> images <span style="color: #339933;">=</span> document.<span style="color: #660066;">getElementsByTagName</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;img&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000066; font-weight: bold;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #003366; font-weight: bold;">var</span> i <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span> i <span style="color: #339933;">&lt;</span> images.<span style="color: #660066;">length</span><span style="color: #339933;">;</span> i<span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>images<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">src</span>.<span style="color: #660066;">indexOf</span><span style="color: #009900;">&#40;</span>prefix<span style="color: #009900;">&#41;</span> <span style="color: #339933;">==</span> <span style="color: #339933;">-</span><span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> images<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">src</span> <span style="color: #339933;">=</span> prefix <span style="color: #339933;">+</span> encodeURIComponent<span style="color: #009900;">&#40;</span>images<span style="color: #009900;">&#91;</span>i<span style="color: #009900;">&#93;</span>.<span style="color: #660066;">src</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">+</span> suffix<span style="color: #339933;">;</span> <span style="color: #009900;">&#125;</span> <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<h3>FireGestures</h3>
<p>也写一个FireGestures脚本，<a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/firegestures/google_image_proxy.js">猛击这里</a>看代码，复制粘贴为新脚本就可以了。因为我也使用了Noscript这个扩展，如果没把网站加进白名单的话，Bookmarklet是无效的，所以改用FireGestures。</p>
<p>秒掉Opera Turbo的方法就是把脚本中的地址参数“resize_h”后面的值改成你想要的图片宽度，Google服务器会替你缩放图片。用这方法能对付放在Picasa上的图片，或者干脆在服务端添加改写代码，应该也不难。</p>
<p><strong>注：</strong>原来我以为Greasemonkey的脚本是在网页加载完成后才执行的，就是原始地址图片都显示出来后，再用代理下载一次，重复浪费资源了。这说法不正确，脚本应该是DOMContentLoaded事件后执行，即HTML代码已经解析好，Firefox同时执行脚本和加载图片（这时地址还未改变）。脚本很快就执行完，地址已经被改变，Firefox就发现图片地址改变了，就放弃加载原始地址，改加载新地址，即Firefox刚下载了页面前几张的图片的一小段数据就放弃下载，所以不算是重复下载的。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/google_image_proxy/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>COD6里Ghost的一点八卦</title>
		<link>http://qixinglu.com/archives/cod6_ghost</link>
		<comments>http://qixinglu.com/archives/cod6_ghost#comments</comments>
		<pubDate>Wed, 10 Feb 2010 08:08:20 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[游戏]]></category>
		<category><![CDATA[使命召唤]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2157</guid>
		<description><![CDATA[其实我最近才爆了使命召唤6，前一作太经典了，所以我非得找个好心情好电脑才来玩，第一次玩当然一如既往的爽，剧情还没细细研究，Price没死当然值得高兴，这一作有个经典难忘的角色——Ghost。
Ghost的首次登场是在“TakeDown”关卡，跟着Soap追捕军火商Rojas时，Ghost就在旁边跑出来，华丽登场鸟，射倒Rojas。把Rojas抓到仓库里准备拷问，这是Ghost在玩蓄电池，Rojas被绑在椅子一面惊恐状，画面很有喜感，后来Soap关上卷帘门，里面的事就靠大家脑内补完。

接下来几关都是Ghost和小强同学一同上阵，出生入死，最后在检查Makarov的安全屋后，复制完资料，一大批老毛子涌了上来，整个小队就死剩小强和Ghost同学，然后大家就一起跑路了，差不多上飞机时，小强同学又不幸中标了，还好Ghost拉了一把，躺在地上再拿AK扫几个。当Sheperd将军从飞机上走下来，想必救星到了，将军问了句DMS拿到了吗？回答拿到了，谁知将军抽出枪来一枪打在小强身上，Ghost马上拿枪反击，还是被将军快了一步，卧槽啊，将军这叛徒。我想Ghost和小强同学中了枪应该还死不了，因为大家都信春哥！可是将军这个变态，赤果果的反人类，居然还挖了个坑，把小强和Ghost都扔进去（扔Ghost时还有慢动作，看起来多么绝望），然后就淋汽油，扔下烟，最后Ghost和小强同学在烈火中永生鸟！

Ghost这个角色令我想起了四代的Gaz，跟主角出生入死，最后一样杯具的命运，而且声音也很相似，但一直戴着拉风的头套和太阳眼镜，于是我就去Google一下，我靠，居然那么多人都有相同的想法，国外和国内都是。还有不少人列出证据，我搜集一下，大概有这几个

配音都是同一个人，配音都是Craig Fairbrass。
有人说他们的眼部贴图相似，还有人说Ghost的模型是修改自Gaz。
他们主要武器都是M4A1，在游戏中作用相同。

看来是四代Gaz挂掉后，开发组弄出类似的角色Ghost来安抚Fans受伤的心灵，我们都在四代结局里看到Gaz被Zakhaev爆头，更雷人的理由来了，有考据癖的Fans采用作弊方式来回顾四代结局，开启自由视角和红光瞄准，看清楚到底Gaz是否被爆头了。我搬上了优酷，猛击这里观看。

看到吧，根据加上的红色光线判断，Zakhaev的枪口只指着Gaz的后脑的边缘，并非天灵盖正中，所以大家可以YY了：根据战队成员每次上阵前必拜春哥的传统，Gaz没死透，给救过来了，只不过进行一场大手术，导致面部毁容，为了不吓着小朋友，出场时必须带个面罩。
其实我还觉得不太可能，老毛子当时爆头用的可是鼎鼎大名的沙漠之鹰啊，传说此枪威力十分凶猛，擦着也得挂掉。另外动视说会发行一个以Ghost为主题的漫画，虽然我还没看，但是看简介得知Ghost的原名是Simon Riley。

另外在wikia上还有ghost的百科，Trivia一段还有不少八卦，条目很长，翻译几条有意思的，渣翻译自重。

没有人会知道Ghost是怎么使用水中呼吸器，在海上油井那关他一直戴着头套，当然他可以在头套上割一个口子来呼吸。
在军事术语中，“ghost”表示那些无法觉察和无法跟踪的人。
在战场上，Ghost从未被人看过真正面目。
在游戏开发团队Infinity Ward的网站，Ghost被投票为最受欢迎的角色。
在Task Force 141团队里，除了Price外，Ghost是唯一一个人会叫MacTavish的绰号“Soap”。
由于过去在S.A.S任职，而他也叫MacTavish旧时的绰号，所以他可能在加入Task Force 141之前就在Soap左右工作，甚至也认识Gaz和Price。
Ghost不同时候戴有不同的头套，有不同的颜色，但面上的骷髅图案总是一样的。
传说有人偷听到两个突击队员的谈话，说Ghost完成训练课程只用了18.28秒，还只用了一把M1911，这成绩远远超过其它队员。
Ghost在Task Force 141中被称为“沉默的杀手“（silent killer），但他有时也有很多话，比如在“The Gulag”那一关还喋喋不休。
在IGN的采访中，Robert Bowling中被问道Ghost会不会还有活命的希望，他答道“Ghost……是不会死的……你迟点就知道我的意思了”。也就是说在“Loose Ends”关卡后还有Ghost出场的游戏，或者解释一下“Loose Ends”结尾之后发生的事。那可能是真的，如果你看真点那关结尾，将军的手下是把整桶汽油都淋在小强身上而Ghost貌似没沾了多少。说不定Ghost死前还有故事创作游戏。又或者，会不会有其它S.A.S的队员继承了“Ghost”的称号来执行任务来纪念他。
Ghost也可能是一名电脑黑客，在The Gulag一关中，是他入侵了监狱的系统来帮助Soap来拯救Price。
在关卡“The Only Easy Day was Yesterda”，中，你会看到Ghost身上有把刀刻着&#8221;Titanium&#8221;的字样。
Ghost总是戴着太阳眼镜，无论在水下还是黑暗的地方。


原文和更多条目到那个页面看吧，那个wikia的logo也很有意思，“call of duty &#8211; no one edits alone”，哈哈，开源社区也可以搞个，“GNU/Linux &#8211; no one codes alone”。
这么人气的角色IW不出个外传真是浪费。
]]></description>
			<content:encoded><![CDATA[<p>其实我最近才爆了使命召唤6，前一作太经典了，所以我非得找个好心情好电脑才来玩，第一次玩当然一如既往的爽，剧情还没细细研究，Price没死当然值得高兴，这一作有个经典难忘的角色——Ghost。</p>
<p>Ghost的首次登场是在“TakeDown”关卡，跟着Soap追捕军火商Rojas时，Ghost就在旁边跑出来，华丽登场鸟，射倒Rojas。把Rojas抓到仓库里准备拷问，这是Ghost在玩蓄电池，Rojas被绑在椅子一面惊恐状，画面很有喜感，后来Soap关上卷帘门，里面的事就靠大家脑内补完。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/cod6_ghost.jpg" alt="" /><span id="more-2157"></span></p>
<p>接下来几关都是Ghost和小强同学一同上阵，出生入死，最后在检查Makarov的安全屋后，复制完资料，一大批老毛子涌了上来，整个小队就死剩小强和Ghost同学，然后大家就一起跑路了，差不多上飞机时，小强同学又不幸中标了，还好Ghost拉了一把，躺在地上再拿AK扫几个。当Sheperd将军从飞机上走下来，想必救星到了，将军问了句DMS拿到了吗？回答拿到了，谁知将军抽出枪来一枪打在小强身上，Ghost马上拿枪反击，还是被将军快了一步，卧槽啊，将军这叛徒。我想Ghost和小强同学中了枪应该还死不了，因为大家都信春哥！可是将军这个变态，赤果果的反人类，居然还挖了个坑，把小强和Ghost都扔进去（扔Ghost时还有慢动作，看起来多么绝望），然后就淋汽油，扔下烟，最后Ghost和小强同学在烈火中永生鸟！</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/cod6_ghost_1.jpg" alt="" /></p>
<p>Ghost这个角色令我想起了四代的Gaz，跟主角出生入死，最后一样杯具的命运，而且声音也很相似，但一直戴着拉风的头套和太阳眼镜，于是我就去Google一下，我靠，居然那么多人都有相同的想法，<a href="http://www.google.com/search?q=Ghost%20Gaz&#038;hl=zh-CN">国</a>外和<a href="http://www.google.com/search?q=Ghost%20Gaz&#038;hl=zh-CN&#038;newwindow=1&#038;lr=lang_zh-CN|lang_zh-TW&#038;aq=f&#038;oq=&#038;nxpt=20.618002323860547577230">国内</a>都是。还有不少人列出证据，我搜集一下，大概有这几个</p>
<ul>
<li>配音都是同一个人，配音都是Craig Fairbrass。</li>
<li>有人说他们的眼部贴图相似，还有人说Ghost的模型是修改自Gaz。</li>
<li>他们主要武器都是M4A1，在游戏中作用相同。</li>
</ul>
<p>看来是四代Gaz挂掉后，开发组弄出类似的角色Ghost来安抚Fans受伤的心灵，我们都在四代结局里看到Gaz被Zakhaev爆头，更雷人的理由来了，有考据癖的Fans采用作弊方式来回顾四代结局，开启自由视角和红光瞄准，看清楚到底Gaz是否被爆头了。我搬上了优酷，<a href="http://v.youku.com/v_show/id_XMTUxNDQxNTc2.html">猛击这里</a>观看。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/cod6_ghost_2.jpg" alt="" /></p>
<p>看到吧，根据加上的红色光线判断，Zakhaev的枪口只指着Gaz的后脑的边缘，并非天灵盖正中，所以大家可以YY了：根据战队成员每次上阵前必拜春哥的传统，Gaz没死透，给救过来了，只不过进行一场大手术，导致面部毁容，为了不吓着小朋友，出场时必须带个面罩。</p>
<p>其实我还觉得不太可能，老毛子当时爆头用的可是鼎鼎大名的沙漠之鹰啊，传说此枪威力十分凶猛，擦着也得挂掉。另外动视说会发行一个以Ghost为主题的漫画，虽然我还没看，但是看简介得知Ghost的原名是Simon Riley。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/cod6_ghost_3.jpg" alt="" /></p>
<p>另外在wikia上还有<a href="http://callofduty.wikia.com/wiki/Simon_%22Ghost%22_Riley">ghost的百科</a>，Trivia一段还有不少八卦，条目很长，翻译几条有意思的，渣翻译自重。</p>
<ul>
<li>没有人会知道Ghost是怎么使用水中呼吸器，在海上油井那关他一直戴着头套，当然他可以在头套上割一个口子来呼吸。</li>
<li>在军事术语中，“ghost”表示那些无法觉察和无法跟踪的人。</li>
<li>在战场上，Ghost从未被人看过真正面目。</li>
<li>在游戏开发团队Infinity Ward的网站，Ghost被投票为最受欢迎的角色。</li>
<li>在Task Force 141团队里，除了Price外，Ghost是唯一一个人会叫MacTavish的绰号“Soap”。</li>
<li>由于过去在S.A.S任职，而他也叫MacTavish旧时的绰号，所以他可能在加入Task Force 141之前就在Soap左右工作，甚至也认识Gaz和Price。</li>
<li>Ghost不同时候戴有不同的头套，有不同的颜色，但面上的骷髅图案总是一样的。</li>
<li>传说有人偷听到两个突击队员的谈话，说Ghost完成训练课程只用了18.28秒，还只用了一把M1911，这成绩远远超过其它队员。</li>
<li>Ghost在Task Force 141中被称为“沉默的杀手“（silent killer），但他有时也有很多话，比如在“The Gulag”那一关还喋喋不休。</li>
<li>在IGN的采访中，Robert Bowling中被问道Ghost会不会还有活命的希望，他答道“Ghost……是不会死的……你迟点就知道我的意思了”。也就是说在“Loose Ends”关卡后还有Ghost出场的游戏，或者解释一下“Loose Ends”结尾之后发生的事。那可能是真的，如果你看真点那关结尾，将军的手下是把整桶汽油都淋在小强身上而Ghost貌似没沾了多少。说不定Ghost死前还有故事创作游戏。又或者，会不会有其它S.A.S的队员继承了“Ghost”的称号来执行任务来纪念他。</li>
<li>Ghost也可能是一名电脑黑客，在The Gulag一关中，是他入侵了监狱的系统来帮助Soap来拯救Price。</li>
<li>在关卡“The Only Easy Day was Yesterda”，中，你会看到Ghost身上有把刀刻着&#8221;Titanium&#8221;的字样。</li>
<li>Ghost总是戴着太阳眼镜，无论在水下还是黑暗的地方。</li>
</ul>
<p><img src="http://dl.dropbox.com/u/2992664/blog/cod6_ghost_4.jpg" alt="" /></p>
<p>原文和更多条目到那个页面看吧，那个wikia的logo也很有意思，“call of duty &#8211; no one edits alone”，哈哈，开源社区也可以搞个，“GNU/Linux &#8211; no one codes alone”。</p>
<p>这么人气的角色IW不出个外传真是浪费。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/cod6_ghost/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>几个处理Java的class文件的工具</title>
		<link>http://qixinglu.com/archives/some_handle_java_class_file_tools</link>
		<comments>http://qixinglu.com/archives/some_handle_java_class_file_tools#comments</comments>
		<pubDate>Tue, 02 Feb 2010 05:16:14 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[Java]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2127</guid>
		<description><![CDATA[关注我的Twitter的同学基本上都知道我最近干的好事，这里总结一下用过的处理Java字节码（bytecode）的工具，供以后参考。
一般来说手动修改二进制文件是件苦差事，有源码在手不如直接修改重新编译。但有些软件是不开源的，又想修改它的功能以便更好使用，就想反编译，但很多代码都是混淆过的，反编译后几乎不能阅读，如果要改的的地方不是很多，比如最常做的是反转条件和替换字符串，这还能直接从字节码下手。
反编译器

JD Java Decompiler
试了几个，觉得这个最好用，反编译首选。可惜是闭源的，但非商用免费，版本也比较新。用C++写成的，有GUI，用的是wxWidgets，所以跨平台，独立程序，就一个文件，速度还很快。支持直接打开jar文件，批量保存，代码高亮，多标签，字符串查找。还有Eclipse的插件版本。

JAD Java Decompiler
这个比较老牌编译器了，命令行的，这个也是闭源的，非商用免费，很多编译器都是都是它的一个前端而已，会命令的话直接用它好了，选项也很丰富，尤其是输出格式。但对新版的Java特性不如JD，所以候选。它也有开源的Eclipse插件JadClipse。

开源也有jode，但是太古老了，不推荐了，反正我是上面两个配合用，都反编译一份，以JD为首选，对于个别错误的地方参考JAD的结果，然后手工收复，试过把microemulator的demo反编译然后重新编译，运行通过。
字节码处理

javap
这个命令是，jdk自带的，作用就是输出字节码，偶然配合grep来看看也好。
jclasslib bytecode viewer
jclasslib是修改class文件的java库，可是我还不会用，但它自带了一个字节码查看器，可以说是javap的GUI。分门别类显示class里面的元素，还带点击跳转链接。不带编辑功能，还得用十六进制编译器参照JVM的指令代码来修改。

Java Bytecode Editor
简称JBE，这个就是上面的修改版，就是多加一个编辑功能，免去查指令代码的痛苦。非常使用，不需要用到jclasslib库的下载这个好了。

Java Class File Editor
虽然版本有点古老，但是还是个功能非常强大的修改器，能修改class的方方面面，最常用的是修改常量，比如字符串，用法比较简单，相信程序员也会用。也可以改字段、方法的属性，很强悍。

也有字节码查看功能，虽然可编辑的，但不知道为什么保存不了。


上面几个各有优缺点，配合来用互补，对于混淆过的代码反编译后难以阅读，更不用说编译回去，但起码能参考一下，方便定位要改的地方，改好后在反编译一次，diff结果，看看影响到那些代码。
最后顺便纪念一下逝去的Sun，这个伟大的公司。
]]></description>
			<content:encoded><![CDATA[<p>关注我的Twitter的同学基本上都知道我最近<a href="http://code.google.com/p/opm-server-mirror/w/list">干的好事</a>，这里总结一下用过的处理Java字节码（bytecode）的工具，供以后参考。</p>
<p>一般来说手动修改二进制文件是件苦差事，有源码在手不如直接修改重新编译。但有些软件是不开源的，又想修改它的功能以便更好使用，就想反编译，但很多代码都是混淆过的，反编译后几乎不能阅读，如果要改的的地方不是很多，比如最常做的是反转条件和替换字符串，这还能直接从字节码下手。<span id="more-2127"></span></p>
<h3>反编译器</h3>
<ul>
<li><a href="http://java.decompiler.free.fr/">JD Java Decompiler</a></li>
<p>试了几个，觉得这个最好用，反编译首选。可惜是闭源的，但非商用免费，版本也比较新。用C++写成的，有GUI，用的是wxWidgets，所以跨平台，独立程序，就一个文件，速度还很快。支持直接打开jar文件，批量保存，代码高亮，多标签，字符串查找。还有Eclipse的插件版本。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/some_handle_java_class_file_tools.png" alt="" /></p>
<li><a href="http://www.varaneckas.com/jad">JAD Java Decompiler</a></li>
<p>这个比较老牌编译器了，命令行的，这个也是闭源的，非商用免费，很多编译器都是都是它的一个前端而已，会命令的话直接用它好了，选项也很丰富，尤其是输出格式。但对新版的Java特性不如JD，所以候选。它也有开源的Eclipse插件<a href="http://jadclipse.sourceforge.net/">JadClipse</a>。
</ul>
<p>开源也有<a href="http://jode.sourceforge.net/">jode</a>，但是太古老了，不推荐了，反正我是上面两个配合用，都反编译一份，以JD为首选，对于个别错误的地方参考JAD的结果，然后手工收复，试过把microemulator的demo反编译然后重新编译，运行通过。</p>
<h3>字节码处理</h3>
<ul>
<li><a href="http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javap.html">javap</a></li>
<p>这个命令是，jdk自带的，作用就是输出字节码，偶然配合grep来看看也好。</p>
<li><a href="http://www.ej-technologies.com/products/jclasslib/overview.html">jclasslib bytecode viewer</a></li>
<p>jclasslib是修改class文件的java库，可是我还不会用，但它自带了一个字节码查看器，可以说是javap的GUI。分门别类显示class里面的元素，还带点击跳转链接。不带编辑功能，还得用十六进制编译器参照JVM的指令代码来修改。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/some_handle_java_class_file_tools_1.png" alt="" /></p>
<li><a href="http://www.cs.ioc.ee/~ando/jbe/">Java Bytecode Editor</a></li>
<p>简称JBE，这个就是上面的修改版，就是多加一个编辑功能，免去查指令代码的痛苦。非常使用，不需要用到jclasslib库的下载这个好了。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/some_handle_java_class_file_tools_2.png" alt="" /></p>
<li><a href="http://classeditor.sourceforge.net/">Java Class File Editor</a></li>
<p>虽然版本有点古老，但是还是个功能非常强大的修改器，能修改class的方方面面，最常用的是修改常量，比如字符串，用法比较简单，相信程序员也会用。也可以改字段、方法的属性，很强悍。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/some_handle_java_class_file_tools_3.png" alt="" /></p>
<p>也有字节码查看功能，虽然可编辑的，但不知道为什么保存不了。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/some_handle_java_class_file_tools_4.png" alt="" /></p>
</ul>
<p>上面几个各有优缺点，配合来用互补，对于混淆过的代码反编译后难以阅读，更不用说编译回去，但起码能参考一下，方便定位要改的地方，改好后在反编译一次，diff结果，看看影响到那些代码。</p>
<p>最后顺便纪念一下逝去的Sun，这个伟大的公司。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/some_handle_java_class_file_tools/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>解决Firefox滚动到边缘出现灰色区域问题</title>
		<link>http://qixinglu.com/archives/firefox_scrolling_bouncy_edge</link>
		<comments>http://qixinglu.com/archives/firefox_scrolling_bouncy_edge#comments</comments>
		<pubDate>Thu, 21 Jan 2010 23:05:30 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2123</guid>
		<description><![CDATA[刚才发现Firefox发布了3.6，Ubuntu仓库总是慢半拍，所以直接到Mozilla下载，安装后发现只有两个扩展不兼容，顺手更新了扩展，重启后就出现了怪事。
就是页面出现滚动条时，当用滚动到页面顶部或底部，再向上或下滚动的话，会出现几十像素的灰色区域，然后自动平滑地收缩回去。
这问题搞得我很不爽，还以为是3.6的bug，都测试了这么久了，还出现这种问题太不应该了，于是退回3.5，发现在3.5也是一样，靠，看来是更新过的扩展问题了。
经测试发现是Yet Another Smooth Scrolling这个扩展搞的鬼，禁用后就没问题了，但没有平滑滚动又不爽，最后发现它的设置多了个“Bouncy Edge”选项，改为“Off”就OK了。怎么会默认为启用呢？我就讨厌这种效果。
]]></description>
			<content:encoded><![CDATA[<p>刚才发现Firefox发布了3.6，Ubuntu仓库总是慢半拍，所以直接到Mozilla下载，安装后发现只有两个扩展不兼容，顺手更新了扩展，重启后就出现了怪事。</p>
<p>就是页面出现滚动条时，当用滚动到页面顶部或底部，再向上或下滚动的话，会出现几十像素的灰色区域，然后自动平滑地收缩回去。</p>
<p>这问题搞得我很不爽，还以为是3.6的bug，都测试了这么久了，还出现这种问题太不应该了，于是退回3.5，发现在3.5也是一样，靠，看来是更新过的扩展问题了。<span id="more-2123"></span></p>
<p>经测试发现是Yet Another Smooth Scrolling这个扩展搞的鬼，禁用后就没问题了，但没有平滑滚动又不爽，最后发现它的设置多了个“Bouncy Edge”选项，改为“Off”就OK了。怎么会默认为启用呢？我就讨厌这种效果。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/firefox_scrolling_bouncy_edge/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Vim也是个播放器</title>
		<link>http://qixinglu.com/archives/vim_is_ascii_player</link>
		<comments>http://qixinglu.com/archives/vim_is_ascii_player#comments</comments>
		<pubDate>Fri, 08 Jan 2010 07:59:34 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[经验技巧]]></category>
		<category><![CDATA[ascii-art]]></category>
		<category><![CDATA[aview]]></category>
		<category><![CDATA[mplayer]]></category>
		<category><![CDATA[Vim]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2075</guid>
		<description><![CDATA[昨天清理Google Reader未读，看到这篇文章，类似的效果我看过Word，Excel版，不过用记事本是第一次看到，有点意思，当然记事本没有宏功能，它的翻页功能肯定使用其它程序控制的。
连Windows那个简陋的记事本也能放动画了，作为“编辑器之神”的Vim不可能不行吧，于是我蛋疼起来就折腾一下，做了个Vim版，猛击这个链接来看视频。

MPlayer来播放
其实把电影当成字符来播放根本就不是什么新玩意，mplayer早就有这个功能

mplayer -vo aa -monitorpixelaspect 0.5 filename

因为aa输出驱动不能保持正确比例（mplayer的“-aspect”参数），改用“-monitorpixelaspect 0.5”后比例比较正常。它也有一些快捷键

1、2键为控制对比度
3、4键控制亮度
5键切换快速渲染
6键切换抖动方式
7键反转效果
a键则是切换回mplayer控制方式

把“aa”换成“caca”就是彩色输出。不过Ubuntu 9.10自带的mplayer没有把这个“aa”视频输出驱动编译进去，medibuntu的版本就有，搞错，应该是smlplayer作者编译的版本。用ubuntu-tweak添加个第三方源更新下mplayer就行，最版版本中名为“Mplayer”的源好像又被移除了，手动添加ppa源页面。

mplayer使用的是aa-project项目的aalib库(在Ubuntu名字改成“libaa”)，看看更新历史，1998年3月10日第一版，最后更新2001年4月25日，这东西是非常非常古老的，那个年代的hacker玩ascii-art真是想多变态就能玩多变态。这玩意是Linuxer装逼必备的，各位装逼犯们，有兴趣想知道怎么做继续看下去。
注意：下面的写的都是在Linux下完成的，只用到mplayer、aview和一些linux命令，windows用户需要自找代替工具，但原理是一样的。额外使用的工具、代码和最终结果文本可以猛击这里下载。
更新：留言中的jiazhoulvke同学写了个shell脚本，自动完成下文的一系列操作，使用简单，不想理解原理来折腾的可以下载来看看，里面有使用说明。
Vim来播放
mplayer的播放原理不难理解，mplayer解码视频，把每一帧传给libaa来生成ascii文本，再把ascii文本转换成图像传给X显示出来。现在不用mplayer转换图像来播放了，把libaa转换过后的ascii文本弄出来，用Vim来播放。
可是想通过mplayer把这些字符提取出来没那么简单，因为它没有提供直接输出文本的选项，所以得换个思路，如下

先用mplayer来把视频的每一帧保存为图像，mplayer支持png和jpg输出，经过测试，png不压缩体积巨大，压缩速度又慢，反正这里的视频本来就是黑白的，不用那么高要求，jpg就够了，体积也很理想。
然后再用其它工具来把图像转换ascii文本，这里找到一个，是LDCN介绍过aview，通过manpage，发现也是用libaa库，连选项都是跟mplayer的一样。
再把转换后的文本合并为一个。
用Vim来打开合并后文件，编写脚本实现自动翻页。



准备工作

先建立一个空的临时文件夹，把flv文件复制进去，源视频用flashgot从这个页面抓下来的，用smplayer看一下flv的信息

文件名：“bad_apple.flv”
大小：6m
分辨率：448&#215;336
帧速：15fps

文件不算大，还是黑白的，更方便转成ascii了。接下来的都是终端操作了，先建立几个工作目录。

mkdir jpg pgm txt


提取图像

执行下面的命令，所有帧都会输出为jpg放到“jpg”目录下

cd jpg
mplayer -vo jpeg ../bad_apple.flv

转换也很快，不过最好不要打开文件管理器来看啊哈，几千文件在里面。转换后3283个文件共20.6 MB。

转换为pgm

把图像转换为ascii文本的工具是aview，就在“aview”这个包里，在安装（这时还不需要安装）后用asciiview来查看图像。
为什么不是用“aview”呢？那是因为aview只支持pnm、pgm、pbm、ppm的格式，对于常见的png和jpg不支持，怎么办呢？转换一下咯，所以就有了asciiview这个脚本，它的作用就是先把图像转换成pgm格式再调用aview来显示。它用的是imagemagick的convert命令，但这里不用asciiview了，直接自己先转换好了。继续在“jpg”目录下执行

for i in *.jpg; do convert -colorspace gray $i ../pgm/${i%.jpg}.pgm; done

经过漫长的等待后，在“pgm”目录出现一堆pgm文件了，图像变成灰阶图形，体积增大至471.3MB。

转换成ascii

这时候就能把pgm转换成ascii文本了，郁闷的是aview不支持直接在命令行直接输出结果，我翻遍它的文档都找不到相应的选项，所以如果你想保存结果，得用aview打开，按“s”键，然后答几个问题，如保存高宽度啊，字体啊，文件名啊这些问题。娘啊，我可是有3千多个要转换啊，手动保存得何年何月啊？
下面两个方法选一个
旧方法：修改aview源码重新编译
这里省略千字的折腾过程，最后我是下载源码来修改aview来实现这个功能的，改过的aview命名为“aview-mod”。用aview-mod来把pgm转换为txt，执行下面命令

cd ../pgm
for i in *.pgm; do aview-mod -driver stdout -contrast 32 $i &#124; sed '$d' &#62; ../txt/${i%.pgm}.txt; done

新方法：脚本处理，推荐
其实aview也支持命令行输出，只不过用法比较诡异，而不是直接输出单张结果，而是一个空白页和2张ascii页面，所以要配合再sed处理一下，截取其中一张

cd ../pgm
for i in *.pgm; do echo q &#124; aview -driver stdout [...]]]></description>
			<content:encoded><![CDATA[<p>昨天清理Google Reader未读，看到<a href="http://kisshi.com/2009/12/30/zi-fu-di/">这篇文章</a>，类似的效果我看过Word，Excel版，不过用记事本是第一次看到，有点意思，当然记事本没有宏功能，它的翻页功能肯定使用其它程序控制的。</p>
<p>连Windows那个简陋的记事本也能放动画了，作为“编辑器之神”的Vim不可能不行吧，于是我蛋疼起来就折腾一下，做了个Vim版，猛击<a href="http://v.youku.com/v_show/id_XMTQ0MjM4Nzg4.html">这个链接</a>来看视频。<span id="more-2075"></span></p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/vim_is_ascii_player.png" alt="" /></p>
<h3>MPlayer来播放</h3>
<p>其实把电影当成字符来播放根本就不是什么新玩意，mplayer早就有这个功能</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-vo</span> aa <span style="color: #660033;">-monitorpixelaspect</span> <span style="color: #000000;">0.5</span> filename</pre></div></div>

<p>因为aa输出驱动不能保持正确比例（mplayer的“-aspect”参数），改用“-monitorpixelaspect 0.5”后比例比较正常。它也有一些快捷键</p>
<ul>
<li>1、2键为控制对比度</li>
<li>3、4键控制亮度</li>
<li>5键切换快速渲染</li>
<li>6键切换抖动方式</li>
<li>7键反转效果</li>
<li>a键则是切换回mplayer控制方式</li>
</ul>
<p>把“aa”换成“caca”就是彩色输出。不过Ubuntu 9.10自带的mplayer没有把这个“aa”视频输出驱动编译进去，<del datetime="2010-02-26T13:21:16+00:00">medibuntu的版本就有</del>，搞错，应该是smlplayer作者编译的版本。<del datetime="2010-02-26T13:23:00+00:00">用ubuntu-tweak添加个第三方源更新下mplayer就行</del>，最版版本中名为“Mplayer”的源好像又被移除了，手动添加<a href="https://launchpad.net/~rvm/+archive/mplayer">ppa源页面</a>。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/vim_is_ascii_player_1.png" alt="" /></p>
<p>mplayer使用的是<a href="http://aa-project.sourceforge.net/">aa-project项目</a>的aalib库(在Ubuntu名字改成“libaa”)，看看更新历史，1998年3月10日第一版，最后更新2001年4月25日，这东西是非常非常古老的，那个年代的hacker玩ascii-art真是想多变态就能玩多变态。这玩意是Linuxer装逼必备的，各位装逼犯们，有兴趣想知道怎么做继续看下去。</p>
<p><strong>注意：</strong>下面的写的都是在Linux下完成的，只用到mplayer、aview和一些linux命令，windows用户需要自找代替工具，但原理是一样的。额外使用的工具、代码和最终结果文本可以<a href="http://muzuiget-toolbox.googlecode.com/files/vim_ascii_player.zip">猛击这里</a>下载。</p>
<p><strong>更新</strong>：留言中的<a href="http://qixinglu.com/archives/vim_is_ascii_player#comment-545">jiazhoulvke同学</a>写了个shell脚本，自动完成下文的一系列操作，使用简单，不想理解原理来折腾的可以下载来看看，里面有使用说明。</p>
<h3>Vim来播放</h3>
<p>mplayer的播放原理不难理解，mplayer解码视频，把每一帧传给libaa来生成ascii文本，再把ascii文本转换成图像传给X显示出来。现在不用mplayer转换图像来播放了，把libaa转换过后的ascii文本弄出来，用Vim来播放。</p>
<p>可是想通过mplayer把这些字符提取出来没那么简单，因为它没有提供直接输出文本的选项，所以得换个思路，如下</p>
<ol>
<li>先用mplayer来把视频的每一帧保存为图像，mplayer支持png和jpg输出，经过测试，png不压缩体积巨大，压缩速度又慢，反正这里的视频本来就是黑白的，不用那么高要求，jpg就够了，体积也很理想。</li>
<li>然后再用其它工具来把图像转换ascii文本，这里找到一个，是LDCN<a href="http://linuxdesktop.cn/2007/12/01/convert-image-to-ascii.html">介绍过aview</a>，通过manpage，发现也是用libaa库，连选项都是跟mplayer的一样。</li>
<li>再把转换后的文本合并为一个。</li>
<li>用Vim来打开合并后文件，编写脚本实现自动翻页。</li>
</ol>
<ol>
<li>
<h4>准备工作</h4>
</li>
<p>先建立一个空的临时文件夹，把flv文件复制进去，源视频用flashgot从<a href="http://v.youku.com/v_show/id_XMTMzNzQ5NzQ4.html">这个页面</a>抓下来的，用smplayer看一下flv的信息</p>
<ul>
<li>文件名：“bad_apple.flv”</li>
<li>大小：6m</li>
<li>分辨率：448&#215;336</li>
<li>帧速：15fps</li>
</ul>
<p>文件不算大，还是黑白的，更方便转成ascii了。接下来的都是终端操作了，先建立几个工作目录。</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">mkdir</span> jpg pgm txt</pre></div></div>

<li>
<h4>提取图像</h4>
</li>
<p>执行下面的命令，所有帧都会输出为jpg放到“jpg”目录下</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> jpg
<span style="color: #c20cb9; font-weight: bold;">mplayer</span> <span style="color: #660033;">-vo</span> jpeg ..<span style="color: #000000; font-weight: bold;">/</span>bad_apple.flv</pre></div></div>

<p>转换也很快，不过最好不要打开文件管理器来看啊哈，几千文件在里面。转换后3283个文件共20.6 MB。</p>
<li>
<h4>转换为pgm</h4>
</li>
<p>把图像转换为ascii文本的工具是aview，就在“aview”这个包里，在安装（这时还不需要安装）后用asciiview来查看图像。</p>
<p>为什么不是用“aview”呢？那是因为aview只支持pnm、pgm、pbm、ppm的格式，对于常见的png和jpg不支持，怎么办呢？转换一下咯，所以就有了asciiview这个脚本，它的作用就是先把图像转换成pgm格式再调用aview来显示。它用的是imagemagick的convert命令，但这里不用asciiview了，直接自己先转换好了。继续在“jpg”目录下执行</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">*</span>.jpg; <span style="color: #000000; font-weight: bold;">do</span> convert <span style="color: #660033;">-colorspace</span> gray <span style="color: #007800;">$i</span> ..<span style="color: #000000; font-weight: bold;">/</span>pgm<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${i%.jpg}</span>.pgm; <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>经过漫长的等待后，在“pgm”目录出现一堆pgm文件了，图像变成灰阶图形，体积增大至471.3MB。</p>
<li>
<h4>转换成ascii</h4>
</li>
<p>这时候就能把pgm转换成ascii文本了，郁闷的是aview不支持直接在命令行直接输出结果，我翻遍它的文档都找不到相应的选项，所以如果你想保存结果，得用aview打开，按“s”键，然后答几个问题，如保存高宽度啊，字体啊，文件名啊这些问题。娘啊，我可是有3千多个要转换啊，手动保存得何年何月啊？</p>
<p>下面两个方法选一个</p>
<p><strong>旧方法</strong>：修改aview源码重新编译<br />
这里省略千字的折腾过程，最后我是下载源码来修改aview来实现这个功能的，改过的aview命名为“aview-mod”。用aview-mod来把pgm转换为txt，执行下面命令</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>pgm
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">*</span>.pgm; <span style="color: #000000; font-weight: bold;">do</span> aview-mod <span style="color: #660033;">-driver</span> stdout <span style="color: #660033;">-contrast</span> <span style="color: #000000;">32</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #ff0000;">'$d'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ..<span style="color: #000000; font-weight: bold;">/</span>txt<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${i%.pgm}</span>.txt; <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p><strong>新方法</strong>：脚本处理，推荐<br />
其实aview也支持命令行输出，只不过用法比较诡异，而不是直接输出单张结果，而是一个空白页和2张ascii页面，所以要配合再sed处理一下，截取其中一张</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>pgm
<span style="color: #000000; font-weight: bold;">for</span> i <span style="color: #000000; font-weight: bold;">in</span> <span style="color: #000000; font-weight: bold;">*</span>.pgm; <span style="color: #000000; font-weight: bold;">do</span> <span style="color: #7a0874; font-weight: bold;">echo</span> q <span style="color: #000000; font-weight: bold;">|</span> aview <span style="color: #660033;">-driver</span> stdout <span style="color: #660033;">-kbddriver</span> stdin <span style="color: #660033;">-contrast</span> <span style="color: #000000;">32</span> <span style="color: #007800;">$i</span> <span style="color: #000000; font-weight: bold;">|</span> <span style="color: #c20cb9; font-weight: bold;">sed</span> <span style="color: #660033;">-n</span> <span style="color: #ff0000;">'27,+24p'</span> <span style="color: #000000; font-weight: bold;">&gt;</span> ..<span style="color: #000000; font-weight: bold;">/</span>txt<span style="color: #000000; font-weight: bold;">/</span><span style="color: #800000;">${i%.pgm}</span>.txt; <span style="color: #000000; font-weight: bold;">done</span></pre></div></div>

<p>那堆txt齐刷刷地放到“txt”文件夹下，一共6.3 MB。</p>
<li>
<h4>合并文本</h4>
</li>
<p>无难度</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">cd</span> ..<span style="color: #000000; font-weight: bold;">/</span>txt
<span style="color: #c20cb9; font-weight: bold;">cat</span> <span style="color: #000000; font-weight: bold;">*</span>.txt <span style="color: #000000; font-weight: bold;">&gt;</span> ..<span style="color: #000000; font-weight: bold;">/</span>bad_apple.txt</pre></div></div>

<li>
<h4>Vim翻页脚本</h4>
</li>
<p>需要写一个脚本来实现自动翻页，在Vim的丰富文档帮助下，不用研究多久就写出来了。每隔67毫秒向下移动25行，因为1000ms/15fps=67，一共有3283个txt。脚本名为“ascii_player.vim”。</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #804040;">function</span><span style="color: #000000;">!</span> AsciiPlayer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span>
    set nowrap
    set scrolloff=<span style="color: #000000; font-weight:bold;">0</span>
    set columns=<span style="color: #000000; font-weight:bold;">80</span>        
    set lines=<span style="color: #000000; font-weight:bold;">26</span>           
    normal gg
    <span style="color: #804040;">let</span> i = <span style="color: #000000; font-weight:bold;">1</span>
    <span style="color: #804040;">while</span> i <span style="color: #000000;">&lt;</span> <span style="color: #000000; font-weight:bold;">3283</span>
        <span style="color: #804040;">execute</span> <span style="color: #C5A22D;">&quot;normal 25<span style="">\&lt;</span>CR&gt;zt&quot;</span>
        redraw
        <span style="color: #804040;">let</span> i = i <span style="color: #000000;">+</span> <span style="color: #000000; font-weight:bold;">1</span>
        sleep 67m
    <span style="color: #804040;">endwhile</span>
endfunction
<span style="color: #668080;">command</span><span style="color: #000000;">!</span> AsciiPlayer <span style="color: #804040;">call</span> AsciiPlayer<span style="color: #000000;">&#40;</span><span style="color: #000000;">&#41;</span></pre></div></div>

<li>
<h4>运行脚本</h4>
</li>
<p>用vim打开“bad_apple.txt”，执行两条ex命令</p>

<div class="wp_syntax"><div class="code"><pre class="vim" style="font-family:monospace;"><span style="color: #000000;">:</span>source ascii_player<span style="color: #000000;">.</span>vim
<span style="color: #000000;">:</span>AsciiPlayer</pre></div></div>

<p>就可以欣赏了，哇哈哈哈，一种无法抵挡装逼感油然而生。
</ol>
<h3>一些补充</h3>
<ul>
<li>当然你也可以用gvim来看，可惜刷新太慢，像放幻灯片。而在终端下vim翻页可是嗖嗖的，非常流畅。</li>
<li>其实也不一定用vim来看，也可以是其它程序，只要它能实现定时自动翻页，刷新够流畅就可以。</li>
<li>这里用的是终端默认大小，即80&#215;25，当然也可以更大，但你的硬盘也得够大，libaa也有不少参数可选。</li>
<li>这里用的例子视频默认是黑白的，如果是彩色的，有个东西叫<a href="http://zh.wikipedia.org/wiki/%E4%BA%8C%E5%80%BC%E5%8C%96">二值化</a>，GIMP有这个功能，把彩色图像换成失真度较低的黑白图像是个体力活。</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/vim_is_ascii_player/feed</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>建立Twitterfox的功夫网</title>
		<link>http://qixinglu.com/archives/build_twitterfox_gfw</link>
		<comments>http://qixinglu.com/archives/build_twitterfox_gfw#comments</comments>
		<pubDate>Tue, 05 Jan 2010 15:58:42 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[浏览器]]></category>
		<category><![CDATA[stylish]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2062</guid>
		<description><![CDATA[Twitter是个好东西，但有种情况令人十分不爽，还防不胜防的，那就剧透，确是有那么一小撮人，看过最新大片后喜欢在Twitter发表自己的高见，无论有意还是无意，那些还没看的有就郁闷了，特别是最近的《阿凡达》。

所以必须弄个Twitterfox的功夫网，按关键字墙掉剧透推。最初的想法接修改Twitterfox，加入javascript过滤代码。后来灵感爆发，发现用CSS也可以搞定。
于是打开Stylish，新建名为“TwitterFox GFW”样式，编写如下代码

@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);
&#160;
.twitternotifier-status&#91;text*=&#34;阿凡达&#34;&#93;, .twitternotifier-status&#91;text*=&#34;Avatar&#34;&#93; &#123;
    color: gray !important;
    background: gray !important;
&#125;

保存，这样，Twitterfox上一切包含关键字“&#8221;阿凡达”和“Avatar”的推字体和背景都变成灰色，让剧透推见鬼去吧！

用CSS来实现我想是最简单的方法，切换和修改都很方便，你可以为不同的关键字建立使用不同的颜色。当然，不足是连自己的推都墙掉了。用其它网页客户端时这方法也应该有效，不过手机上的浏览器能不能自定义CSS就不好说啦。

最后还得向Twitter上剧透的人致以最高的鄙视。
]]></description>
			<content:encoded><![CDATA[<p>Twitter是个好东西，但有种情况令人十分不爽，还防不胜防的，那就剧透，确是有那么一小撮人，看过最新大片后喜欢在Twitter发表自己的高见，无论有意还是无意，那些还没看的有就郁闷了，特别是最近的《阿凡达》。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/build_twitterfox_gfw.png" alt="" /></p>
<p>所以必须弄个Twitterfox的功夫网，按关键字墙掉剧透推。最初的想法接修改Twitterfox，加入javascript过滤代码。后来灵感爆发，发现用CSS也可以搞定。<span id="more-2062"></span></p>
<p>于是打开Stylish，新建名为“TwitterFox GFW”样式，编写如下代码</p>

<div class="wp_syntax"><div class="code"><pre class="css" style="font-family:monospace;"><span style="color: #a1a100;">@namespace url(http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul);</span>
&nbsp;
.twitternotifier-status<span style="color: #00AA00;">&#91;</span><span style="color: #993333;">text</span><span style="color: #00AA00;">*=</span><span style="color: #ff0000;">&quot;阿凡达&quot;</span><span style="color: #00AA00;">&#93;</span><span style="color: #00AA00;">,</span> .twitternotifier-status<span style="color: #00AA00;">&#91;</span><span style="color: #993333;">text</span><span style="color: #00AA00;">*=</span><span style="color: #ff0000;">&quot;Avatar&quot;</span><span style="color: #00AA00;">&#93;</span> <span style="color: #00AA00;">&#123;</span>
    <span style="color: #000000; font-weight: bold;">color</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">gray</span> !important<span style="color: #00AA00;">;</span>
    <span style="color: #000000; font-weight: bold;">background</span><span style="color: #00AA00;">:</span> <span style="color: #993333;">gray</span> !important<span style="color: #00AA00;">;</span>
<span style="color: #00AA00;">&#125;</span></pre></div></div>

<p>保存，这样，Twitterfox上一切包含关键字“&#8221;阿凡达”和“Avatar”的推字体和背景都变成灰色，让剧透推见鬼去吧！</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/build_twitterfox_gfw_1.png" alt="" /></p>
<p>用CSS来实现我想是最简单的方法，切换和修改都很方便，你可以为不同的关键字建立使用不同的颜色。当然，不足是连自己的推都墙掉了。用其它网页客户端时这方法也应该有效，不过手机上的浏览器能不能自定义CSS就不好说啦。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/build_twitterfox_gfw_2.png" alt="" /></p>
<p>最后还得向Twitter上剧透的人致以最高的鄙视。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/build_twitterfox_gfw/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>2009年总结</title>
		<link>http://qixinglu.com/archives/2009_summary</link>
		<comments>http://qixinglu.com/archives/2009_summary#comments</comments>
		<pubDate>Thu, 31 Dec 2009 13:02:52 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[流水帐]]></category>
		<category><![CDATA[总结]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2052</guid>
		<description><![CDATA[一年又这么过去，往事不堪回首太阳中。
最值提的是我用上了Twitter，沉迷其中，Twitter记录我的生活点点滴滴，对我的思想和生活规律都影响很大。懒得码字回顾，直接看这一年的推就行了。也因此另一方面也因此冷落了博客，减少了写作动力。

我现在已经不喜欢写博客浏览统计，最高兴最难忘的事之类了，也没什么好写。还是看看我上一年的目标完成得怎样

学会怎么使用项目管理软件，使用SourceForce，Google Code。
还可以啦，项目管理软件基本搞定subversion，SourceForce没怎么碰，Google Code倒经常用，建几个不痛不痒的项目。
加入一个中文Linux发行版团队，比如Fanx或Hiweed等。
这个完败，Hiweed都改名了，现在用Linux基本自得其乐，也很少去UbuntuCN提问和解答问题，甚至换成英文环境后，连去参与翻译都懒了。
编写一个拿得出手的自由软件，当然能在Linux下运行啦。
认真想想，除了写个几个脚本外，还真没弄过拿的出手的程序，不过这个现在进行当中。
自己做一个LFS版本。
靠，太高估自己的水平了，等折腾过genntoo后再说吧。
继续满足虚荣心，注意PR，向牛人们申请友情连接，多到别人博客评论。让别人有知道地球上还有我这一号人物。
因为有Twitter，这个算完成。
好好整理旧文，学习一下排版，新文章依然是求质不求量的。
基本没整理过，唉。

真操蛋啊，老觉得我的技术进步很慢，时间也浪费不少，今年最大的收获大概就是学会Python吧，还有一点GTK，复习一下Java，看点Javascript，没了。

至于2010年的目标，不想太多了，免得又是“讲就天下无敌，做就有心无力”。就那么一个

找一份工作，养活自己

是以为记，望与诸君共勉。
]]></description>
			<content:encoded><![CDATA[<p>一年又这么过去，往事不堪回首太阳中。</p>
<p>最值提的是我用上了Twitter，沉迷其中，Twitter记录我的生活点点滴滴，对我的思想和生活规律都影响很大。懒得码字回顾，直接看这一年的推就行了。也因此另一方面也因此冷落了博客，减少了写作动力。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/2009_summary.jpg" alt="" /></p>
<p>我现在已经不喜欢写博客浏览统计，最高兴最难忘的事之类了，也没什么好写。还是看看我上一年的目标完成得怎样<span id="more-2052"></span></p>
<ul>
<li>学会怎么使用项目管理软件，使用SourceForce，Google Code。</li>
<p>还可以啦，项目管理软件基本搞定subversion，SourceForce没怎么碰，Google Code倒经常用，建几个不痛不痒的项目。</p>
<li>加入一个中文Linux发行版团队，比如Fanx或Hiweed等。</li>
<p>这个完败，Hiweed都改名了，现在用Linux基本自得其乐，也很少去UbuntuCN提问和解答问题，甚至换成英文环境后，连去参与翻译都懒了。</p>
<li>编写一个拿得出手的自由软件，当然能在Linux下运行啦。</li>
<p>认真想想，除了写个几个脚本外，还真没弄过拿的出手的程序，不过这个现在进行当中。</p>
<li>自己做一个LFS版本。</li>
<p>靠，太高估自己的水平了，等折腾过genntoo后再说吧。</p>
<li>继续满足虚荣心，注意PR，向牛人们申请友情连接，多到别人博客评论。让别人有知道地球上还有我这一号人物。</li>
<p>因为有Twitter，这个算完成。</p>
<li>好好整理旧文，学习一下排版，新文章依然是求质不求量的。</li>
<p>基本没整理过，唉。
</ul>
<p>真操蛋啊，老觉得我的技术进步很慢，时间也浪费不少，今年最大的收获大概就是学会Python吧，还有一点GTK，复习一下Java，看点Javascript，没了。</p>
<p><img src="http://dl.dropbox.com/u/2992664/blog/2009_summary_1.jpg" alt="" /></p>
<p>至于2010年的目标，不想太多了，免得又是“讲就天下无敌，做就有心无力”。就那么一个</p>
<ul>
<li>找一份工作，养活自己</li>
</ul>
<p>是以为记，望与诸君共勉。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/2009_summary/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
	</channel>
</rss>
