<?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; 软件介绍</title>
	<atom:link href="http://qixinglu.com/category/software/feed" rel="self" type="application/rss+xml" />
	<link>http://qixinglu.com</link>
	<description>潜心修炼，早日成仙。GNU/Linux、Ubuntu、Firefox、LiveCD、游戏MOD。</description>
	<lastBuildDate>Tue, 27 Jul 2010 11:38:08 +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>Google Image Proxy的WordPress插件</title>
		<link>http://qixinglu.com/archives/google_image_proxy_wordpress_plugin?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=google_image_proxy_wordpress_plugin</link>
		<comments>http://qixinglu.com/archives/google_image_proxy_wordpress_plugin#comments</comments>
		<pubDate>Thu, 22 Jul 2010 00:10:36 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2693</guid>
		<description><![CDATA[又是Google Image Proxy，这次是WordPress插件。 把JS加入一个Text Widget来让用户浏览器来执行改写有不足之处，一是禁用了JS就无效，二是RSS输出也是原始地址的，那么在阅读器中就看不到了，除非用户手动调用脚本。不爽了，因此最好是WordPress直接输出。花了点时间学习一下WordPress开发，没想象中的难，10行有效代码就搞定。 说明 插件改写操作是以filter来执行，也就是不会修改数据库中的内容，当在预览、发布和输出RSS时才改成代理地址。所以在编辑器中依然是原来的地址，不会看长长讨厌的代理地址。禁用插件就恢复原来地址，效果安全。 下载和安装 已经发布到WordPress插件页面中，下载zip文件，解压，上传“google-image-proxy.php”到WordPress的“wp-content/plugins/”目录下。或者你在后台添加插件处直接搜索“Google Image Proxy”安装，最后在插件页面启动就行了 方公公你的母亲目前好吗？]]></description>
			<content:encoded><![CDATA[<p>又是<a href="http://qixinglu.com/archives/google_image_proxy">Google Image Proxy</a>，这次是WordPress插件。</p>
<p>把JS加入一个Text Widget来让用户浏览器来执行改写有不足之处，一是禁用了JS就无效，二是RSS输出也是原始地址的，那么在阅读器中就看不到了，除非用户手动调用脚本。不爽了，因此最好是WordPress直接输出。花了点时间学习一下WordPress开发，没想象中的难，10行有效代码就搞定。<span id="more-2693"></span></p>
<h3>说明</h3>
<p>插件改写操作是以filter来执行，也就是不会修改数据库中的内容，当在预览、发布和输出RSS时才改成代理地址。所以在编辑器中依然是原来的地址，不会看长长讨厌的代理地址。禁用插件就恢复原来地址，效果安全。</p>
<h3>下载和安装</h3>
<p>已经发布到<a href="http://wordpress.org/extend/plugins/google-image-proxy/">WordPress插件页面</a>中，下载zip文件，解压，上传“google-image-proxy.php”到WordPress的“wp-content/plugins/”目录下。或者你在后台添加插件处直接搜索“Google Image Proxy”安装，最后在插件页面启动就行了</p>
<p>方公公你的母亲目前好吗？</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/google_image_proxy_wordpress_plugin/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>多合一小型Linux光盘201007版</title>
		<link>http://qixinglu.com/archives/release_nin1linuxcd_201007?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=release_nin1linuxcd_201007</link>
		<comments>http://qixinglu.com/archives/release_nin1linuxcd_201007#comments</comments>
		<pubDate>Tue, 06 Jul 2010 23:56:23 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[LiveCD]]></category>
		<category><![CDATA[Nin1LinuxCD]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2639</guid>
		<description><![CDATA[距离上一次发布的200903版都一年有多了吧，那时还叫RC，说要写文档，结果没写成，我是很懒的，尽情鄙视我吧。一年来我都没有怎么研究过的，我研究这方面技术主要是想整合一个维护盘（尤其是PE和GHOST），刻了张盘，一年来被各种问题电脑磨损到报废程度，所以例行更新一下。 依然采用grub4dos，Linuxtoy也曾经介绍过一个MultiCD的脚本，试了一下，用的是isolinux，合并每个镜像为一个菜单，个人还是喜欢grub4dos多个菜单，据说grub4dos支持png的背景了，但是还是没怎么研究，简单依然是王道。不过改写isolinux菜单为grub4dos菜单还是要花点功夫的，也写个小程序来自动完成，不过写得不太完善，放弃了。 下载 原本使用的是UbuntuCN的FTP空间，UbuntuCN被出国后，FTP空间取消了，我就转到Dropbox，结果又外链流量超标了，帐号被挂起，我放到电驴上，又有人说很难连上，唉。所以我这次就不放整盘了。估计下载都是研究多重引导的吧，直接包含linux文件没怎么必要了，只给基本需要的文件做镜像。 现在放到我的Google Code上，才7M多点。 更新 我又把所支持的linux换回英文了，移除了Prayaya，添加了个比较精致的Tiny Core Liunx。因为不打算包含发行版的文件，所以是不是采用国内爱好者汉化过的集成版没什么所谓了，只要汉化版不是改动了目录结构，它们的引导菜单都是通用了，本镜像只是提供一个思路，鼓励自己修改和定制。 基本的文件更新如下： grub4dos更新为0.4.4，2009-3-31版。 更新了引导菜单和背景，并重新整理了“grub”文件夹。 freedos镜像中的testdisk和photorec更新为6.11.3。 虚拟磁盘memdisk更新为4.01。 内存检测工具memtest86+更新为4.10。 Super Grub Disk更新为1.30。 添加Linux Linux的文件需要你自己添加，基本镜像已经包含必要文件，简单用法就是解压镜像，修改后就运行解压后的镜像文件夹里的”tools/make_iso/make_iso.sh”（windows是“make_iso.bat”），这就自动打包修改后的镜像为可引导镜像，详细方法可以看这篇文章。 下面的“测试镜像”是指我制作这版本所用的linux镜像，一般来说，小版本号更新都会适用的。“cd_root”是指Nin1LinuxCD基本镜像解压后的文件夹名称，当你完成添加后，需要重新打包。添加DOS、PE、GHOST依然如之前的方法。 Parted Magic 测试镜像为“pmagic-4.11.iso”，把镜像里的“boot”文件夹移动到“pmagic”里，然后把“pmagic”复制到“cd_root”目录下。 提示：Parted Magic4.1版后已经有中文字体了，很实用。 Geexbox 也可以选我汉化的中文版，测试文件为“geexbox-1.2.4-custom-zh_CN.i386.iso”，这个比较麻烦点，还需要下载“GeeXboX Win32 Installer”，使用这个安装器在windows下安装到C盘， 把“C:\GEEXBOX”复制到“cd_root”目录下。 因为直接复制光盘镜像的那个“GEEXBOX”文件夹启动失败，或许是光盘标签改变了，引导脚本找不到所需文件，而那个安装器不知做了什么修改，所创建的“GEEXBOX”却没有问题。 CDLinux 测试镜像为“CDlinux-0.9.6.1.iso”，直接把镜像的“CDLinux”复制到到“cd_root”目录下即可。 Slax 测试镜像为“slax-6.1.2.iso”，把镜像里的“boot”文件夹移动到“slax”里，然后把“slax”复制到“cd_root”目录下。 Puppy 测试镜像为“lupu-501.iso”，把镜像中的“lupu-501.sfs“复制到”cd_root”目录下，并在“cd_root”里新建一个“puppy”文件夹，把镜像其余文件都放进“puppy”里面。 Slitaz &#8230; <a href="http://qixinglu.com/archives/release_nin1linuxcd_201007">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>距离上一次发布的<a href="http://qixinglu.com/archives/nin1linux_0903">200903版</a>都一年有多了吧，那时还叫RC，说要写文档，结果没写成，我是很懒的，尽情鄙视我吧。一年来我都没有怎么研究过的，我研究这方面技术主要是想整合一个维护盘（尤其是PE和GHOST），刻了张盘，一年来被各种问题电脑磨损到报废程度，所以例行更新一下。</p>
<p><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2F2010%2Frelease_nin1linuxcd_201007.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" alt="引导菜单截图" /><span id="more-2639"></span></p>
<p>依然采用grub4dos，Linuxtoy也曾经介绍过一个<a href="http://linuxtoy.org/archives/multicd.html">MultiCD的脚本</a>，试了一下，用的是isolinux，合并每个镜像为一个菜单，个人还是喜欢grub4dos多个菜单，据说grub4dos支持png的背景了，但是还是没怎么研究，简单依然是王道。不过改写isolinux菜单为grub4dos菜单还是要花点功夫的，也写个<a href="http://qixinglu.com/archives/release_iso2grub">小程序</a>来自动完成，不过写得不太完善，放弃了。</p>
<h3>下载</h3>
<p>原本使用的是UbuntuCN的FTP空间，UbuntuCN被出国后，FTP空间取消了，我就转到Dropbox，结果又外链流量超标了，帐号被挂起，我放到电驴上，又有人说很难连上，唉。所以我这次就不放整盘了。估计下载都是研究多重引导的吧，直接包含linux文件没怎么必要了，只给基本需要的文件做镜像。</p>
<p>现在放到我的<a href="http://code.google.com/p/muzuiget-toolbox/downloads/detail?name=Nin1LinuxCD_201007.7z">Google Code上</a>，才7M多点。</p>
<h3>更新</h3>
<p>我又把所支持的linux换回英文了，移除了Prayaya，添加了个比较精致的Tiny Core Liunx。因为不打算包含发行版的文件，所以是不是采用国内爱好者汉化过的集成版没什么所谓了，只要汉化版不是改动了目录结构，它们的引导菜单都是通用了，本镜像只是提供一个思路，鼓励自己修改和定制。</p>
<p>基本的文件更新如下：</p>
<ul>
<li>grub4dos更新为0.4.4，2009-3-31版。</li>
<li>更新了引导菜单和背景，并重新整理了“grub”文件夹。</li>
<li><a href="http://qixinglu.com/archives/share_a_freedos_image">freedos镜像</a>中的testdisk和photorec更新为6.11.3。</li>
<li>虚拟磁盘memdisk更新为4.01。</li>
<li>内存检测工具memtest86+更新为4.10。</li>
<li>Super Grub Disk更新为1.30。</li>
</ul>
<h3>添加Linux</h3>
<p>Linux的文件需要你自己添加，基本镜像已经包含必要文件，简单用法就是解压镜像，修改后就运行解压后的镜像文件夹里的”tools/make_iso/make_iso.sh”（windows是“make_iso.bat”），这就自动打包修改后的镜像为可引导镜像，详细方法可以看<a href="http://qixinglu.com/archives/rebuild_nin1linuxcd_iso">这篇文章</a>。</p>
<p>下面的“测试镜像”是指我制作这版本所用的linux镜像，一般来说，小版本号更新都会适用的。“cd_root”是指Nin1LinuxCD基本镜像解压后的文件夹名称，当你完成添加后，需要重新打包。添加DOS、PE、GHOST依然如<a href="http://qixinglu.com/archives/nin1linuxcd_add_dos_winpe_ghost">之前的方法</a>。</p>
<ul>
<li><a href="http://partedmagic.com/">Parted Magic</a></li>
<p>测试镜像为“pmagic-4.11.iso”，把镜像里的“boot”文件夹移动到“pmagic”里，然后把“pmagic”复制到“cd_root”目录下。</p>
<p>提示：Parted Magic4.1版后已经有中文字体了，很实用。</p>
<li><a href="http://www.geexbox.org/">Geexbox</a></li>
<p>也可以选我汉化的<a href="https://code.google.com/p/geexbox-chinese/">中文版</a>，测试文件为“geexbox-1.2.4-custom-zh_CN.i386.iso”，这个比较麻烦点，还需要下载“<a href="http://www.geexbox.org/download/">GeeXboX Win32 Installer</a>”，使用这个安装器在windows下安装到C盘，<br />
把“C:\GEEXBOX”复制到“cd_root”目录下。</p>
<p>因为直接复制光盘镜像的那个“GEEXBOX”文件夹启动失败，或许是光盘标签改变了，引导脚本找不到所需文件，而那个安装器不知做了什么修改，所创建的“GEEXBOX”却没有问题。</p>
<li><a href="http://www.cdlinux.info/wiki/doku.php">CDLinux</a></li>
<p>测试镜像为“CDlinux-0.9.6.1.iso”，直接把镜像的“CDLinux”复制到到“cd_root”目录下即可。</p>
<li><a href="http://www.slax.org/">Slax</a></li>
<p>测试镜像为“slax-6.1.2.iso”，把镜像里的“boot”文件夹移动到“slax”里，然后把“slax”复制到“cd_root”目录下。</p>
<li><a href="http://www.puppylinux.com/index.html">Puppy</a></li>
<p>测试镜像为“lupu-501.iso”，把镜像中的“lupu-501.sfs“复制到”cd_root”目录下，并在“cd_root”里新建一个“puppy”文件夹，把镜像其余文件都放进“puppy”里面。</p>
<li><a href="http://www.slitaz.org/">Slitaz</a></li>
<p>测试镜像为“slitaz-3.0.iso”，在“cd_root”里新建一个“slitaz”文件夹，把镜像所有文件都放进“slitaz”里面。</p>
<li><a href="http://tinycorelinux.com/">TinyCore</a></li>
<p>测试镜像为“tinycore_2.11.6.iso”，在“cd_root”里新建一个“tinycore”文件夹，把镜像所有文件都放进“tinycore”里面。
</ul>
<p>当添加完成后执行“make_iso.sh”来创建光盘镜像，当然建议刻碟之前先用虚拟机测试一下。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/release_nin1linuxcd_201007/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>发布个支持谷歌音乐的exaile插件</title>
		<link>http://qixinglu.com/archives/release_exaile-plugin-gmbox?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=release_exaile-plugin-gmbox</link>
		<comments>http://qixinglu.com/archives/release_exaile-plugin-gmbox#comments</comments>
		<pubDate>Fri, 11 Jun 2010 18:29:05 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[exaile]]></category>
		<category><![CDATA[gmbox]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=2544</guid>
		<description><![CDATA[我偶然去谷歌音乐找点歌来听，但是那个flash播放器实在太恶心了，长期挂着不知道哪个时候把我的Firefox给崩了。还有歌词显示太渣，如果要浮动显示歌词，那得把播放器页面移出为新窗口，缩小到窗口到歌词区域，然后置顶，总之体验太差。 你说可以下载啊，但一个个下载又太麻烦，我是听到好歌值得反复听才下载，特别好听的就去电驴找高质量的，整个专辑拖下来。我知道批量下载可以用gmbox，但是下载后还的手动添加到播放器，当然骨头他还在慢慢重新发明轮子，实现播放和歌词显示功能。 其实我觉得，Linux的音频播放器已经有很多了，歌词也有OSD Lyrics，我非常喜欢这个软件，支持多个播放器，不是通过插件形式，而是使用Linux的机制和接口(dbus)来跟播放器通信，这样很能体现Unix的哲学，各个程序专注自己的领域，通过系统提供的统一的接口互相配合来实现所需功能。 所以我认为：下载器＋播放器＋歌词显示程序是个最佳组合。但我目前的水平还不能让gmbox像OSD Lyrics通过dbus来各种播放器同信，我常用的exaile，就先支持exaile吧。 我发现exaile的好几个插件已经实现类似的功能，通过一个新侧边栏来查找音乐网站的歌曲，并添加到播放列表，不是我正好想要的吗？把gmbox塞进去就OK了。有了现成代码供参考和使用，开发难度大大降低。 我花了两天时间写了个插件，已经实现基本功能了，于是在Google Code建立了exiale-plugin-gmbox项目，下载和安装方法都在那里。运行效果如下图 协议解析就是使用了gmbox项目的代码，核心代码和界面代码分离，很好，我只需要核心代码就行了，做了点修改就可以用了。 目前支持音轨和专辑查找，翻页和批量添加，其它功能以后慢慢加了吧，有什么bug或问题或建议可以去项目页页发贴。 更新：项目已经迁移到gmbox]]></description>
			<content:encoded><![CDATA[<p>我偶然去<a href="http://www.google.cn/music/homepage">谷歌音乐</a>找点歌来听，但是那个flash播放器实在太恶心了，长期挂着不知道哪个时候把我的Firefox给崩了。还有歌词显示太渣，如果要浮动显示歌词，那得把播放器页面移出为新窗口，缩小到窗口到歌词区域，然后置顶，总之体验太差。</p>
<p>你说可以下载啊，但一个个下载又太麻烦，我是听到好歌值得反复听才下载，特别好听的就去电驴找高质量的，整个专辑拖下来。我知道批量下载可以用<a href="http://code.google.com/p/gmbox/">gmbox</a>，但是下载后还的手动添加到播放器，当然<a href="http://li2z.cn/">骨头</a>他还在慢慢重新发明轮子，实现播放和歌词显示功能。<span id="more-2544"></span></p>
<p>其实我觉得，Linux的音频播放器已经有很多了，歌词也有<a href="http://code.google.com/p/osd-lyrics/">OSD Lyrics</a>，我非常喜欢这个软件，支持多个播放器，不是通过插件形式，而是使用Linux的机制和接口(dbus)来跟播放器通信，这样很能体现Unix的哲学，各个程序专注自己的领域，通过系统提供的统一的接口互相配合来实现所需功能。</p>
<p>所以我认为：下载器＋播放器＋歌词显示程序是个最佳组合。但我目前的水平还不能让gmbox像OSD Lyrics通过dbus来各种播放器同信，我常用的exaile，就先支持exaile吧。</p>
<p>我发现exaile的好几个插件已经实现类似的功能，通过一个新侧边栏来查找音乐网站的歌曲，并添加到播放列表，不是我正好想要的吗？把gmbox塞进去就OK了。有了现成代码供参考和使用，开发难度大大降低。</p>
<p>我花了两天时间写了个插件，已经实现基本功能了，于是在Google Code建立了<a href="http://code.google.com/p/exaile-plugin-gmbox/">exiale-plugin-gmbox</a>项目，下载和安装方法都在那里。运行效果如下图</p>
<p><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2F2010%2Frelease_exaile_gmbox_plugin.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" alt="exaile-plugin-gmbox运行界面" style="width: 620px" /></p>
<p>协议解析就是使用了gmbox项目的代码，核心代码和界面代码分离，很好，我只需要核心代码就行了，做了点修改就可以用了。</p>
<p>目前支持音轨和专辑查找，翻页和批量添加，其它功能以后慢慢加了吧，有什么bug或问题或建议可以去项目页页发贴。</p>
<p><strong>更新：</strong>项目已经迁移到<a href="http://code.google.com/p/gmbox/">gmbox</a></p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/release_exaile-plugin-gmbox/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>几个处理Java的class文件的工具</title>
		<link>http://qixinglu.com/archives/some_handle_java_class_file_tools?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=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="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fsome_handle_java_class_file_tools.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" 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="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fsome_handle_java_class_file_tools_1.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" alt="" /></p>
<li><a href="http://www.cs.ioc.ee/~ando/jbe/">Java Bytecode Editor</a></li>
<p>简称JBE，这个就是上面的修改版，就是多加一个编辑功能，免去查指令代码的痛苦。非常使用，不需要用到jclasslib库的下载这个好了。</p>
<p><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fsome_handle_java_class_file_tools_2.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" alt="" /></p>
<li><a href="http://classeditor.sourceforge.net/">Java Class File Editor</a></li>
<p>虽然版本有点古老，但是还是个功能非常强大的修改器，能修改class的方方面面，最常用的是修改常量，比如字符串，用法比较简单，相信程序员也会用。也可以改字段、方法的属性，很强悍。</p>
<p><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fsome_handle_java_class_file_tools_3.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" alt="" /></p>
<p>也有字节码查看功能，虽然可编辑的，但不知道为什么保存不了。</p>
<p><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Fdl.dropbox.com%2Fu%2F2992664%2Fblog%2Fsome_handle_java_class_file_tools_4.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" 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>用Glade给iso2grub弄了个界面</title>
		<link>http://qixinglu.com/archives/use_glade_create_iso2grub_ui?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=use_glade_create_iso2grub_ui</link>
		<comments>http://qixinglu.com/archives/use_glade_create_iso2grub_ui#comments</comments>
		<pubDate>Wed, 18 Nov 2009 14:45:53 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[glade]]></category>
		<category><![CDATA[iso2grub]]></category>

		<guid isPermaLink="false">http://qixinglu.com/?p=1960</guid>
		<description><![CDATA[iso2grub是我很早之前初学python时写的练手程序，用途就是把linux光盘里isolinux菜单文件如“isolinux.cfg”转换成grub4dos的菜单文件“menu.lst”格式。 开始在python一大堆GUI库前徘徊了好久，最终决定用wxpython写一个。 后来又想了解一下gtk，又写了一份pygtk版本，文档看个大概就开写了，觉得没传说中的难啊，反而很合我口味，界面只跟wxpython的有少少差别。 今天又花了点时间研究一下Glade3.6新支持的GtkBuilder，用Glade来建立界面，再写一份，我只能说很爽很爽，只有几十行代码，信号处理直接用回之前的pygtk的代码，还不需要改动。效果跟第二张图是一样的。 如果你搜进来找wxpython和pygtk的优劣的话，可对比一下这3个文件的界面代码量，界面代码都在&#8217;__init__&#8221;函数里 wxpython pygtk pygtk+glade 虽然wxpython也有它的wxGlade，但还不成熟，用得我很抓狂，不过官方的示例代码和文档真的很丰富很完善。而pygtk却相反，官方示例代码和文档都简单得可怜，但glade很强大，而linux里自带的程序就是现成的例子。我目前比较喜欢pygtk。]]></description>
			<content:encoded><![CDATA[<p>iso2grub是我很早之前<a href="http://qixinglu.com/archives/release_iso2grub">初学python时写的练手程序</a>，用途就是把linux光盘里isolinux菜单文件如“isolinux.cfg”转换成grub4dos的菜单文件“menu.lst”格式。</p>
<p>开始在python一大堆GUI库前徘徊了好久，最终决定用wxpython写一个。<span id="more-1960"></span></p>
<p><a href="http://www.flickr.com/photos/muzuiget/4115097808/" title="use_glade_create_iso2grub_ui by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2679%2F4115097808_c2b495a016_o.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="646" height="506" alt="use_glade_create_iso2grub_ui" /></a></p>
<p>后来又想了解一下gtk，又写了一份pygtk版本，文档看个大概就开写了，觉得没传说中的难啊，反而很合我口味，界面只跟wxpython的有少少差别。</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4115097810/" title="use_glade_create_iso2grub_ui_1 by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2583%2F4115097810_22f15b09c0_o.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="646" height="506" alt="use_glade_create_iso2grub_ui_1" /></a></p>
<p>今天又花了点时间研究一下Glade3.6新支持的GtkBuilder，用Glade来建立界面，再写一份，我只能说很爽很爽，只有几十行代码，信号处理直接用回之前的pygtk的代码，还不需要改动。效果跟第二张图是一样的。</p>
<p>如果你搜进来找wxpython和pygtk的优劣的话，可对比一下这3个文件的界面代码量，界面代码都在&#8217;__init__&#8221;函数里</p>
<ol>
<li><a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/iso2grub/iso2grub_gui_wx.py">wxpython</a></li>
<li><a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/iso2grub/iso2grub_gui.py">pygtk</a></li>
<li><a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/iso2grub/iso2grub_gui_glade.py">pygtk</a>+<a href="http://code.google.com/p/muzuiget-toolbox/source/browse/trunk/iso2grub/iso2grub.glade">glade</a></li>
</ol>
<p>虽然wxpython也有它的wxGlade，但还不成熟，用得我很抓狂，不过官方的示例代码和文档真的很丰富很完善。而pygtk却相反，官方示例代码和文档都简单得可怜，但glade很强大，而linux里自带的程序就是现成的例子。我目前比较喜欢pygtk。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/use_glade_create_iso2grub_ui/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>让Firefox也用Ubuntu的新通知机制</title>
		<link>http://qixinglu.com/archives/ubuntu_firefoxnotify?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ubuntu_firefoxnotify</link>
		<comments>http://qixinglu.com/archives/ubuntu_firefoxnotify#comments</comments>
		<pubDate>Sat, 23 May 2009 19:56:11 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[Firefox]]></category>

		<guid isPermaLink="false">http://muzuiget.blog.ubuntu.org.cn/?p=1559</guid>
		<description><![CDATA[LDCN曾经介绍过Ubuntu 9.04的新通知机制，效果很酷。今天在这里发现有个扩展也能让Firefox使用Ubuntu这个漂亮的通知机制了，爽吧。 安装 这个扩展叫FirefoxNotify，还处于实验阶段，所以需要先登录才能下载，安装过程与一般扩展无区别，重启Firefox后，随便下载个文件，好运的话就看到下效果了。 FirefoxNotify下载页面的还有些注意信息，需要下面几个包，不过我一装好这个扩展就能使用了。 Python DBus Galago compliant notification daemon (libnotify) python的“pynotify”包。 在debian库里应该是 apt://python-notify 还有一些可选依赖 xdg-utils (支持在通知窗口里打开文件) 如果你使用Ubuntu，你或许不需要“python-dbus”这个包 修复同时提示问题 使用这个扩展后，还发现如果把下载窗口关闭后，当下载完成，Firefox还是会弹出自己的通知窗口，解决方法是在“about:config”找“browser.download.manager.showAlertOnComplete”这个键值并设置为“false”。 其他发行版 据我所知有两位童鞋把Ubuntu这个通知机制搞到别的发行版里去 Iven童鞋的《让 Arch Linux 也使用 Ubuntu 9.04 的新通知机制》，经我测试，archlinux也能使用咯！ TX童鞋的《Yeah! 我的Gentoo支持Ubuntu的Notification啰！》，呃，没玩过。 类似扩展 写这篇文章时还发现两个Thunderbird扩展，Ubuntu Notify，Mozilla Notification Extensions，当收到邮件就用Ubuntu的通知机制通知你。]]></description>
			<content:encoded><![CDATA[<p>LDCN曾经介绍过<a href="http://linuxdesktop.cn/2009/02/19/ubuntu-notification.html">Ubuntu 9.04的新通知机制</a>，效果很酷。今天在<a href="http://d0od.blogspot.com/2009/05/firefox-use-notification-jaunty.html">这里</a>发现有个扩展也能让Firefox使用Ubuntu这个漂亮的通知机制了，爽吧。</p>
<h3>安装</h3>
<p>这个扩展叫<a href="https://addons.mozilla.org/en-US/firefox/addon/9622">FirefoxNotify</a>，还处于实验阶段，<span style="text-decoration: line-through">所以需要先登录才能下载</span>，安装过程与一般扩展无区别，重启Firefox后，随便下载个文件，好运的话就看到下效果了。</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4070890319/" title="ubuntu_firefoxnotify by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2737%2F4070890319_3982d66c60_o.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="436" height="189" alt="ubuntu_firefoxnotify" /></a><span id="more-1559"></span></p>
<p>FirefoxNotify下载页面的还有些注意信息，需要下面几个包，不过我一装好这个扩展就能使用了。</p>
<ul>
<li>Python</li>
<li>DBus</li>
<li>Galago compliant notification daemon (libnotify)</li>
<li>python的“pynotify”包。 在debian库里应该是 apt://python-notify</li>
</ul>
<p>还有一些可选依赖</p>
<ul>
<li>xdg-utils (支持在通知窗口里打开文件)</li>
<li>如果你使用Ubuntu，你或许不需要“python-dbus”这个包</li>
</ul>
<h3>修复同时提示问题</h3>
<p>使用这个扩展后，还发现如果把下载窗口关闭后，当下载完成，Firefox还是会弹出自己的通知窗口，解决方法是在“about:config”找“browser.download.manager.showAlertOnComplete”这个键值并设置为“false”。</p>
<h3>其他发行版</h3>
<p>据我所知有两位童鞋把Ubuntu这个通知机制搞到别的发行版里去</p>
<ul>
<li> Iven童鞋的<a href="http://www.kissuki.com/2009/04/arch-linux-ubuntu-904.html">《让 Arch Linux 也使用 Ubuntu 9.04 的新通知机制》</a>，经我测试，archlinux也能使用咯！</li>
<li>TX童鞋的<a href="http://imtx.cn/archives/1217.html">《Yeah! 我的Gentoo支持Ubuntu的Notification啰！》</a>，呃，没玩过。</li>
</ul>
<h3>类似扩展</h3>
<p>写这篇文章时还发现两个Thunderbird扩展，<a href="https://addons.mozilla.org/en-US/thunderbird/addon/11340">Ubuntu Notify</a>，<a href="https://addons.mozilla.org/en-US/thunderbird/addon/11530">Mozilla Notification Extensions</a>，当收到邮件就用Ubuntu的通知机制通知你。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/ubuntu_firefoxnotify/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>发布isolinux转grub4dos脚本iso2grub0.1</title>
		<link>http://qixinglu.com/archives/release_iso2grub?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=release_iso2grub</link>
		<comments>http://qixinglu.com/archives/release_iso2grub#comments</comments>
		<pubDate>Sat, 18 Apr 2009 20:53:05 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[Grub]]></category>
		<category><![CDATA[iso2grub]]></category>
		<category><![CDATA[isolinux]]></category>

		<guid isPermaLink="false">http://muzuiget.blog.ubuntu.org.cn/?p=1423</guid>
		<description><![CDATA[近两个月都在学Python，打算用写点实际的的东西，就写一个简单的isolinux转换grub4dos的脚本吧，之前介绍过一个脚本，不过不太合我要求，所以自己写一个。 本来想写简单点的，花了几天搞定基本语句的转换，一段小小脚本，打算发布时又想：不如再支持一个特殊语句吧，这个又解决后，又想：不如再多支持一个吧，不如……所以代码原来越来越长长，当命令行的差不多搞定后，又想不如再写个gui吧，然后就去学wxPython，所以到现在才放出来。完善了一下代码，放到Google Code上面，Google Code上发现ESR金句“Release early, release often”，显然我的行为是违反了这句话，哈哈。 简介 除了支持基本转换语句外，有如下特征 支持转换帮助文本，还是不会断词换行 同时转换背景图像到grub4dos的格式 每个菜单项前加序号 重定向每个条目的文件路径 添加自定义字符串为菜单标题 来个图 转换后的slax菜单截图 前端 前端名叫”iso2grub-gui“，是用wxPython写的，所以要装wx库才能运行 版本从0.1起跳，或许以后可以再添加一点功能，比如直接把iso转换。因为Python时跨平台运行的，所以这两个个脚本也能运行在Windows下，已经测试过了。 下载地址]]></description>
			<content:encoded><![CDATA[<p>近两个月都在学Python，打算用写点实际的的东西，就写一个简单的isolinux转换grub4dos的脚本吧，之前<a href="http://qixinglu.com/archives/isolinux-to-grub-menu-auto-convert">介绍过一个脚本</a>，不过不太合我要求，所以自己写一个。</p>
<p>本来想写简单点的，花了几天搞定基本语句的转换，一段小小脚本，打算发布时又想：不如再支持一个特殊语句吧，这个又解决后，又想：不如再多支持一个吧，不如……所以代码原来越来越长长，当命令行的差不多搞定后，又想不如再写个gui吧，然后就去学wxPython，所以到现在才放出来。完善了一下代码，放到Google Code上面，Google Code上发现ESR金句“Release early, release often”，显然我的行为是违反了这句话，哈哈。<span id="more-1423"></span></p>
<h3>简介</h3>
<p>除了支持基本转换语句外，有如下特征</p>
<ul>
<li>支持转换帮助文本，还是不会断词换行</li>
<li>同时转换背景图像到grub4dos的格式</li>
<li>每个菜单项前加序号</li>
<li>重定向每个条目的文件路径</li>
<li>添加自定义字符串为菜单标题</li>
</ul>
<p>来个图</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4071641632/" title="release_iso2grub by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2751%2F4071641632_3ebfe0395a_o.png&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="640" height="480" alt="release_iso2grub" /></a><br />
<em>转换后的slax菜单截图</em></p>
<h3>前端</h3>
<p>前端名叫”iso2grub-gui“，是用wxPython写的，所以要装wx库才能运行</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4071641634/" title="release_iso2grub_1 by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2745%2F4071641634_46d4eabe85.jpg&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="500" height="392" alt="release_iso2grub_1" /></a></p>
<p>版本从0.1起跳，或许以后可以再添加一点功能，比如直接把iso转换。因为Python时跨平台运行的，所以这两个个脚本也能运行在Windows下，已经测试过了。</p>
<p><a href="http://code.google.com/p/muzuiget-toolbox/downloads/list">下载地址</a></p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/release_iso2grub/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Ubuntu 8.10默认壁纸蓝色版</title>
		<link>http://qixinglu.com/archives/bule_style_intrepid_ibex_wallpaper?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=bule_style_intrepid_ibex_wallpaper</link>
		<comments>http://qixinglu.com/archives/bule_style_intrepid_ibex_wallpaper#comments</comments>
		<pubDate>Sun, 30 Nov 2008 21:54:58 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[壁纸]]></category>

		<guid isPermaLink="false">http://muzuiget.blog.ubuntu.org.cn/?p=455</guid>
		<description><![CDATA[Ubuntu 8.10都出了快一个月了，不过我还没有装，因为8.04很稳定，8.10没什么新特色能吸引我，还有近来没空折腾，学校课程实验好几个程序要写，这个月目前才写了一篇文章。昨晚有空决定升级，这次是直升，不是格盘重装，按照官方升级指南，提示要下载2G多的包啊，主要是我装几个大游戏，不管了，让它慢慢下载，关掉显示器睡觉去，第二天起来就下载好了，安装包，用了差不多40分钟，期间被问是否保留配置若干次。安装后重启，搞定。 默认桌面壁纸依然是经典的屎黄色，不爽，于是像之前一样，搞了个蓝色。 Ubuntu 8.10的开发代号是Intrepid Ibex，无畏的北部高地山羊，所以桌面壁纸是一张抽象的山羊画，看上去还不错，挺有魄力。不过我见过更无畏的，猛击这里看图，在那一刻Ubuntu精神灵魂附体，继续猛击这里，和这里]]></description>
			<content:encoded><![CDATA[<p>Ubuntu 8.10都出了快一个月了，不过我还没有装，因为8.04很稳定，8.10没什么新特色能吸引我，还有近来没空折腾，学校课程实验好几个程序要写，这个月目前才写了一篇文章。昨晚有空决定升级，这次是直升，不是格盘重装，按照<a href="http://www.ubuntu.com/getubuntu/upgrading">官方升级指南</a>，提示要下载2G多的包啊，主要是我装几个大游戏，不管了，让它慢慢下载，关掉显示器睡觉去，第二天起来就下载好了，安装包，用了差不多40分钟，期间被问是否保留配置若干次。安装后重启，搞定。<span id="more-455"></span></p>
<p>默认桌面壁纸依然是经典的屎黄色，不爽，于是<a href="http://qixinglu.com/2008/09/07/%e6%8a%8aubuntu-804%e7%9a%84%e9%bb%98%e8%ae%a4%e5%a3%81%e7%ba%b8%e5%bc%84%e6%88%90%e8%93%9d%e8%89%b2/">像之前一样</a>，搞了个蓝色。</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4070740903/" title="bule_style_intrepid_ibex_wallpaper by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm4.static.flickr.com%2F3536%2F4070740903_e29797099e.jpg&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="500" height="313" alt="bule_style_intrepid_ibex_wallpaper" /></a></p>
<p>Ubuntu 8.10的开发代号是Intrepid Ibex，无畏的北部高地山羊，所以桌面壁纸是一张抽象的山羊画，看上去还不错，挺有魄力。不过我见过更无畏的，猛击<a href="http://jandan.net/2008/11/02/tightrope.html">这里</a>看图，在那一刻Ubuntu精神灵魂附体，继续猛击<a href="http://jandan.net/2008/11/25/goat.html">这里</a>，和<a href="http://jandan.net/2008/11/26/crazy-goat.html">这里</a></p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/bule_style_intrepid_ibex_wallpaper/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>再次推荐RSS阅读器Newsfox</title>
		<link>http://qixinglu.com/archives/recommand_newsfox_again?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=recommand_newsfox_again</link>
		<comments>http://qixinglu.com/archives/recommand_newsfox_again#comments</comments>
		<pubDate>Thu, 30 Oct 2008 19:11:07 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[Newsfox]]></category>

		<guid isPermaLink="false">http://muzuiget.blog.ubuntu.org.cn/?p=398</guid>
		<description><![CDATA[Newsfox是我的首选RSS阅读器，是Firefox的扩展，用了一年多了，在Firefox里大半时间都耗在里面，接近300条feed了，每天800条未读，我也患信息强迫症，信息恐惧。前几天去无意中拉回了一个使用者，所以再推荐一下Newsfox吧。首先说我是Firefox的重度使用者，属于中毒上瘾那种，在1.5版本时候在开始使用了，陈年往事之前已经写过了。 在不知道RSS/Feed是什么东西之前，我见到好博客，比如善用佳软，小众软件等，唯一表示关注的做法就是加入书签，然后隔三五差打开看看有什么文章更新，结果见到好博客越来越多，每次打开又要看看哪些是新文章，有时候没见到新文章又失望，效率实在低下，浪费精力时间。在博客上几乎都看到地“订阅”、“阅读器”、“RSS”、“Feed”之类的关键字，了解到这些是什么东西后，我就开始找个阅读器了。去看一些测评文章，试用了各种阅读器。 选择原因 收费的不考虑，基于IE的不考虑，Windows Only也的不考虑。要免费，最好基于Firefox，一定要跨平台。 一是在线网页的，开始只试用过抓虾，不过用得不爽，用了一阵就放弃。 二就是Firefox无所不能的扩展了。 为什么选择Firefox扩展？Firefox几乎所有扩展都是免费的，还有是开源的，能跟Firefox一起跨平台，安全，快速。能配合Firefox其它的扩展，这个很重要，扩展的强悍功能比如广告过滤、JavaScript和cookie控制、自动选择代理、抓取网页、快速滚动，鼠标手势，文字拖曳，自定义搜索等等，都能好好配搭使用，我能保持我的浏览习惯，这是其它离线阅读器难以做到的。很多事都能在Firefox里搞定，不需要额外在打开一个程序切换来切换去（特别在不输出全文的情况下，额外打开浏览器查看原文），内存占用太多？如果能使我观看每篇文章在操作上少1秒钟而多用1M内存，那也值了，别说1M，10M我也觉得值了。在内存都白菜价和信息过载的年代，电脑的内存和用户的时间那个更宝贵？ 去搜一下相关扩展，也有好几个，折腾来折腾去就是Newsfox了。界面简洁，支持3栏式布局，我是用宽屏的，空间充分利用，看起来非常舒服，阅读器的基本功能都有了，比如快速添加feed、导入智能书签、标记、搜索、储存、加密、分组、标签、自动刷新、文章排序、快捷键。随着版本更新，不少使用功能陆续被添加进来，比如关键字高亮提示、过滤网页以全文输出（杀手级功能）、统计排序等等。 和Google Reader相比的不足 GR有统计功能，Newsfox也有这重要性统计功能，只不过没那么厉害，不过够用了。 GR刷新速度快，Newsfox是逐个feed刷新的，不过没什么关系，反正总能在你读完所有未读文章前更新完毕。 GR的增强扩展和脚本样式也不少，Newsfox也有几个，自带的功能够用了。 GR的扩展视图和历史文章追加Newsfox倒没有。 Google Reader的确非常牛逼没错，作为我的候选阅读器。不用GR作首选是我不习惯GR的布局，我喜欢3栏布局，一栏feed名称，一栏标题，一栏正文。GR页面上边还有一大片空白，用Stylish整了半天都不满意。 一年下来目睹了Newsfox的进步，我也订阅了Newsfox的更新日志（本来自带），开发者非常负责，每次都是长长的更新日志，包括对新功能的说明。用了这么久积累了几个技巧，迟点我再写文分享一下技巧，对目前的阅读器不爽朋友不妨试用一下哦。 链接：Newsfox安装，开发主页，文档，论坛。]]></description>
			<content:encoded><![CDATA[<p><a href="http://newsfox.mozdev.org/">Newsfox</a>是我的首选RSS阅读器，是Firefox的扩展，用了一年多了，在Firefox里大半时间都耗在里面，接近300条feed了，每天800条未读，我也患<a href="http://www.kenengba.com/post/370.html">信息强迫症</a>，<a href="http://www.kenengba.com/post/482.html">信息恐惧</a>。前几天去无意中拉回了一个使用者，所以再推荐一下Newsfox吧。首先说我是Firefox的重度使用者，属于中毒上瘾那种，在1.5版本时候在开始使用了，陈年往事之前<a href="http://qixinglu.com/2008/03/04/firefox%E6%9E%AA%E6%96%87%E4%B8%80%E7%AF%87/">已经写过</a>了。<span id="more-398"></span></p>
<p>在不知道RSS/Feed是什么东西之前，我见到好博客，比如<a href="http://xbeta.info/">善用佳软</a>，<a href="http://www.appinn.com/">小众软件</a>等，唯一表示关注的做法就是加入书签，然后隔三五差打开看看有什么文章更新，结果见到好博客越来越多，每次打开又要看看哪些是新文章，有时候没见到新文章又失望，效率实在低下，浪费精力时间。在博客上几乎都看到地“订阅”、“阅读器”、“RSS”、“Feed”之类的关键字，了解到<a href="http://www.kenengba.com/post/471.html">这些是什么东西</a>后，我就开始找个阅读器了。去看一些测评文章，试用了各种阅读器。</p>
<p><strong>选择原因</strong><br />
收费的不考虑，基于IE的不考虑，Windows Only也的不考虑。要免费，最好基于Firefox，一定要跨平台。</p>
<ol>
<li> 一是在线网页的，开始只试用过抓虾，不过用得不爽，用了一阵就放弃。</li>
<li> 二就是Firefox无所不能的扩展了。</li>
</ol>
<p>为什么选择Firefox扩展？Firefox几乎所有扩展都是免费的，还有是开源的，能跟Firefox一起跨平台，安全，快速。能配合<a href="http://qixinglu.com/2008/03/04/%E6%88%91%E7%9A%84firefox%E6%89%A9%E5%B1%95%E5%88%97%E8%A1%A8/">Firefox其它的扩展</a>，这个很重要，扩展的强悍功能比如广告过滤、JavaScript和cookie控制、自动选择代理、抓取网页、快速滚动，鼠标手势，文字拖曳，自定义搜索等等，都能好好配搭使用，我能保持我的浏览习惯，这是其它离线阅读器难以做到的。很多事都能在Firefox里搞定，不需要额外在打开一个程序切换来切换去（特别在不输出全文的情况下，额外打开浏览器查看原文），内存占用太多？如果能使我观看每篇文章在操作上少1秒钟而多用1M内存，那也值了，别说1M，10M我也觉得值了。在内存都白菜价和<a href="http://www.kenengba.com/post/392.html">信息过载</a>的年代，电脑的内存和用户的时间那个更宝贵？</p>
<p>去搜一下相关扩展，<a href="http://parandroid.com/firefox-rss-extensions/">也有好几个</a>，折腾来折腾去就是Newsfox了。界面简洁，支持3栏式布局，我是用宽屏的，空间充分利用，看起来非常舒服，阅读器的基本功能都有了，比如快速添加feed、导入智能书签、标记、搜索、储存、加密、分组、标签、自动刷新、文章排序、快捷键。随着版本更新，不少使用功能陆续被添加进来，比如关键字高亮提示、<a href="http://qixinglu.com/2008/08/15/newsfox%E6%90%9E%E5%AE%9Arss%E5%85%A8%E6%96%87%E8%BE%93%E5%87%BA/">过滤网页以全文输出</a>（杀手级功能）、统计排序等等。</p>
<p><strong>和Google Reader相比的不足</strong></p>
<ul>
<li> GR有统计功能，Newsfox也有这重要性统计功能，只不过没那么厉害，不过够用了。</li>
<li>GR刷新速度快，Newsfox是逐个feed刷新的，不过没什么关系，反正总能在你读完所有未读文章前更新完毕。</li>
<li>GR的增强扩展和脚本样式也不少，Newsfox也有几个，自带的功能够用了。</li>
<li>GR的扩展视图和历史文章追加Newsfox倒没有。</li>
</ul>
<p>Google Reader的确非常牛逼没错，作为我的候选阅读器。不用GR作首选是我不习惯GR的布局，我喜欢3栏布局，一栏feed名称，一栏标题，一栏正文。GR页面上边还有一大片空白，用Stylish整了半天都不满意。</p>
<p>一年下来目睹了Newsfox的进步，我也订阅了<a href="http://newsfox.mozdev.org/rss/rss.xml">Newsfox的更新日志</a>（本来自带），开发者非常负责，每次都是长长的更新日志，包括对新功能的说明。用了这么久积累了几个技巧，迟点我再写文分享一下技巧，对目前的阅读器不爽朋友不妨试用一下哦。</p>
<p>链接：<a href="https://addons.mozilla.org/en-US/firefox/addon/629">Newsfox安装</a>，<a href="http://newsfox.mozdev.org/">开发主页</a>，<a href="http://newsfox.mozdev.org/drupal/wiki">文档</a>，<a href="http://newsfox.mozdev.org/drupal">论坛</a>。</p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/recommand_newsfox_again/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>把Ubuntu 8.04的默认壁纸弄成蓝色</title>
		<link>http://qixinglu.com/archives/blue_style_hardy_heron_wallpaper?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=blue_style_hardy_heron_wallpaper</link>
		<comments>http://qixinglu.com/archives/blue_style_hardy_heron_wallpaper#comments</comments>
		<pubDate>Sun, 07 Sep 2008 22:16:15 +0000</pubDate>
		<dc:creator>muzuiget</dc:creator>
				<category><![CDATA[软件介绍]]></category>
		<category><![CDATA[壁纸]]></category>

		<guid isPermaLink="false">http://muzuiget.blog.ubuntu.org.cn/2008/09/07/%e6%8a%8aubuntu-804%e7%9a%84%e9%bb%98%e8%ae%a4%e5%a3%81%e7%ba%b8%e5%bc%84%e6%88%90%e8%93%9d%e8%89%b2/</guid>
		<description><![CDATA[不少人的Ubuntu默认的主题颜色不满意，还认为那是屎黄色，我也觉得黄色不好看，还是喜欢KDE的蓝色，Ubuntu这个名字来自非洲黄土地，用黄色没什么不妥的，官方不改就自己改吧。 在Youtube里发现有人把默认的壁纸弄成蓝色，觉得很好看，于是去搜索，结果没找到，不过制作方法到找到了，原文见这里。 方法很简单，用GIMP两三步就搞定了。Ubunut的默认壁纸放在 /usr/share/backgrounds 里面还有几张太空图，8成是Ubuntu的老板照的。 复制那三张黄色的出来，用GIMP打开。 选择菜单上的“颜色”，“反相”，这就变了蓝色了，真简单。 个人觉得这个蓝色太浅了，菜单“颜色”，“曲线”，找个点，向下拉一点，把颜色弄深一点。 用“颜色”菜单里的选项弄成其他颜色风格也是很容易的。 搞定就保存。 效果如下，不喜欢自己搞的就自行拿去使，另外一张比较大，转换后效果又不太好，就不发上来了。]]></description>
			<content:encoded><![CDATA[<p>不少人的Ubuntu默认的主题颜色不满意，还认为那是屎黄色，我也觉得黄色不好看，还是喜欢KDE的蓝色，Ubuntu这个名字来自非洲黄土地，用黄色没什么不妥的，官方不改就自己改吧。</p>
<p>在Youtube里发现有人把默认的壁纸弄成蓝色，觉得很好看，于是去搜索，结果没找到，不过制作方法到找到了，原文见<a href="http://digg.com/linux_unix/A_blue_ubuntu_with_heron_pic">这里</a>。<span id="more-359"></span></p>
<p>方法很简单，用GIMP两三步就搞定了。Ubunut的默认壁纸放在</p>
<p><code>/usr/share/backgrounds</code></p>
<p>里面还有几张太空图，8成是Ubuntu的老板照的。</p>
<ol>
<li>复制那三张黄色的出来，用GIMP打开。</li>
<li>选择菜单上的“颜色”，“反相”，这就变了蓝色了，真简单。</li>
<li>个人觉得这个蓝色太浅了，菜单“颜色”，“曲线”，找个点，向下拉一点，把颜色弄深一点。</li>
<li>用“颜色”菜单里的选项弄成其他颜色风格也是很容易的。</li>
<li>搞定就保存。</li>
</ol>
<p>效果如下，不喜欢自己搞的就自行拿去使，另外一张比较大，转换后效果又不太好，就不发上来了。</p>
<p><a href="http://www.flickr.com/photos/muzuiget/4071469880/" title="blue_style_hardy_heron_wallpaper by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2523%2F4071469880_342109949f.jpg&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="500" height="375" alt="blue_style_hardy_heron_wallpaper" /></a></p>
<p><a href="http://www.flickr.com/photos/muzuiget/4071469884/" title="blue_style_hardy_heron_wallpaper_1 by muzuiget, on Flickr"><img src="https://images2-focus-opensocial.googleusercontent.com/gadgets/proxy?url=http%3A%2F%2Ffarm3.static.flickr.com%2F2716%2F4071469884_015a6af9ca.jpg&container=focus&gadget=a&no_expand=1&resize_h=0&rewriteMime=image%2F*" width="500" height="375" alt="blue_style_hardy_heron_wallpaper_1" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://qixinglu.com/archives/blue_style_hardy_heron_wallpaper/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
