<?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>Fwolf's Blog &#187; Tools - Fwolf's Blog</title>
	<atom:link href="http://www.fwolf.com/blog/post/tag/tools/feed" rel="self" type="application/rss+xml" />
	<link>http://www.fwolf.com/blog</link>
	<description>随心·随意·随缘·努力～</description>
	<lastBuildDate>Sun, 29 Aug 2010 14:52:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>小巧的编辑器Geany</title>
		<link>http://www.fwolf.com/blog/post/439</link>
		<comments>http://www.fwolf.com/blog/post/439#comments</comments>
		<pubDate>Mon, 20 Apr 2009 11:05:20 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[editor]]></category>
		<category><![CDATA[geany]]></category>
		<category><![CDATA[gtk]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/439</guid>
		<description><![CDATA[我对PHP编辑器的要求不高，不过很多软件却不合我意： 首先，最好是免费的，所以挺好用的Zend Studio落选了。并且我发现似乎Zend Studio与ibus或者ubuntu jaunty有点冲突，有时候中文就出不来了。 其次，小巧，java的最好不要，所以Eclipse也落选了。 最后，最小功能集：语法高亮（废话）以及类函数列表（可以帮助我快速定位）。就这两项功能，淘汰了gedit（支持得不好）、vim（无法列出类函数）等工具。 当然，隐含要求，支持中文输入法，所以gphpedit也不能用，正好也不喜欢它的颜色高亮模式（色彩搭配）。 所以，选来选去，今天才算碰到一个比较满意的────Geany，ubuntu源中有，目前版本0.14，看来开发历史并不长。使用gtk2，操作流畅。除了类函数列表以外，还有一些贴心的小功能，比如自动补齐文件末尾的空行、保存时自动删除行尾空格等。 默认的，Geany的快捷键Complete Word与中文输入法冲突，还好，可以通过设置删掉：双击--&#62;Del--&#62;回车。 可怜的gphpedit也是这种快捷键冲突，不过我没找到设置方法。 其实Geany不仅能够处理PHP文件，还能够编辑多种脚本文件，新建文件时有内置模板可选，能够自动生成文件头的copyright及GPL声明。 总之，到目前的感觉，挺好用的。 Update @ 2009-12-29 ubuntu 中 geany 的版本更新较慢，喜欢追新的可以自行添加它的 PPA源。 Tags: editor, geany, gtk, PHP, Tools Related posts 选择Eclipse PHP Development Tools(PDT)作为PHP开发工具 (8) 针对$_SERVER['PHP_SELF']的跨站脚本攻击（XSS） (3) 配置安全的共享web服务器（抛砖引玉） (4) 让phpmailer支持中文名称的附件 (5) 终于能够通过phpmailer使用gmail账号发送邮件了 (50)]]></description>
			<content:encoded><![CDATA[<p>我对PHP编辑器的要求不高，不过很多软件却不合我意：</p>

<p>首先，最好是免费的，所以挺好用的Zend Studio落选了。并且我发现似乎Zend Studio与ibus或者ubuntu jaunty有点冲突，有时候中文就出不来了。</p>

<p>其次，小巧，java的最好不要，所以Eclipse也落选了。</p>

<p>最后，最小功能集：语法高亮（废话）以及类函数列表（可以帮助我快速定位）。就这两项功能，淘汰了gedit（支持得不好）、vim（无法列出类函数）等工具。</p>

<p>当然，隐含要求，支持中文输入法，所以gphpedit也不能用，正好也不喜欢它的颜色高亮模式（色彩搭配）。</p>

<p>所以，选来选去，今天才算碰到一个比较满意的────<a href="http://www.geany.org/">Geany</a>，ubuntu源中有，目前版本0.14，看来开发历史并不长。使用gtk2，操作流畅。除了类函数列表以外，还有一些贴心的小功能，比如自动补齐文件末尾的空行、保存时自动删除行尾空格等。</p>

<p><a href="http://www.flickr.com/photos/fwolf/3458410611/" title="geany screenshot by fwolf, on Flickr"><img src="http://farm4.static.flickr.com/3577/3458410611_da81400fef_m.jpg" width="240" height="204" alt="geany screenshot" /></a></p>

<p>默认的，Geany的快捷键<code>Complete Word</code>与中文输入法冲突，还好，可以通过设置删掉：<code>双击--&gt;Del--&gt;回车</code>。</p>

<p><a href="http://www.flickr.com/photos/fwolf/3458399643/" title="geany-solve-conflict-with-input-method by fwolf, on Flickr"><img src="http://farm4.static.flickr.com/3645/3458399643_e4b4ac046e_m.jpg" width="240" height="234" alt="geany-solve-conflict-with-input-method" /></a></p>

<p>可怜的gphpedit也是这种快捷键冲突，不过我没找到设置方法。</p>

<p>其实Geany不仅能够处理PHP文件，还能够编辑多种脚本文件，新建文件时有内置模板可选，能够自动生成文件头的copyright及GPL声明。</p>

<p>总之，到目前的感觉，挺好用的。</p>

<h4>Update @ 2009-12-29</h4>

<p>ubuntu 中 geany 的版本更新较慢，喜欢追新的可以自行添加它的 <a href="https://launchpad.net/~geany-dev/+archive/ppa">PPA源</a>。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/editor" title="editor" rel="tag">editor</a>, <a href="http://www.fwolf.com/blog/post/tag/geany" title="geany" rel="tag">geany</a>, <a href="http://www.fwolf.com/blog/post/tag/gtk" title="gtk" rel="tag">gtk</a>, <a href="http://www.fwolf.com/blog/post/tag/php" title="PHP" rel="tag">PHP</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/400" title="选择Eclipse PHP Development Tools(PDT)作为PHP开发工具 (2008-05-03)">选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</a> (8)</li>
	<li><a href="http://www.fwolf.com/blog/post/300" title="针对$_SERVER['PHP_SELF']的跨站脚本攻击（XSS） (2007-03-18)">针对$_SERVER['PHP_SELF']的跨站脚本攻击（XSS）</a> (3)</li>
	<li><a href="http://www.fwolf.com/blog/post/443" title="配置安全的共享web服务器（抛砖引玉） (2009-06-09)">配置安全的共享web服务器（抛砖引玉）</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/176" title="让phpmailer支持中文名称的附件 (2006-05-23)">让phpmailer支持中文名称的附件</a> (5)</li>
	<li><a href="http://www.fwolf.com/blog/post/155" title="终于能够通过phpmailer使用gmail账号发送邮件了 (2006-04-14)">终于能够通过phpmailer使用gmail账号发送邮件了</a> (50)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/439/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>好玩有趣又有用的Mockups</title>
		<link>http://www.fwolf.com/blog/post/433</link>
		<comments>http://www.fwolf.com/blog/post/433#comments</comments>
		<pubDate>Mon, 02 Mar 2009 09:50:51 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[graph]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=433</guid>
		<description><![CDATA[见过flash游戏中，鼠标画个圆就是球，画个方块就能站住，画条线就能成跑道（这个很经典了，滑雪橇的游戏），也见过一个视频，老师讲课的时候画个斜块、小车、轮子就能够产生物理动作，看到Mockups以后，就也有类似的感觉，不过这个是用来设计软件界面的。 以前设计界面的时候用什么？想过但用的相对比较少，笨办法就是文字描述，左边放什么，右边上面放什么，右边下面放什么等等，高手会用ps画，只要不嫌累，还有画在纸、黑板上的，这些手段都有个共同的缺点────不方便管理和变更。现在不易管理、不可变更的工具用起来太累了，Mockups正是很好的解决了这个问题。 就像上面这张图片一样，在Mockups里，提供了很多用户界面设计元素，拖过来调整、搭配就能形成一张设计示意图，在设计阶段、持续变更阶段应该都是很好的表达工具，毕竟一图胜千言嘛。风格上是手绘的草稿风格，让人感觉和在纸上没区标，估计打印出来蒙人也没问题。技术实现上，依赖Adobe AIR环境，所以也是跨平台的。从图上也能看到，只要选中了菜单里的View -&#62; Use System Fonts，中文支持还是可以的，好像不能选字体，不过够用了。 缺点首先是没有我想像中的“手工画线”，毕竟直接画和使用预制物件的感觉和灵活性还是有区别；第二就是速度，2006年买的电脑用起来都不算十分流畅；第三就是技术平台，个人对AIR不感冒，当然这个也没得改了，呵呵。 Tags: AIR, design, graph, Tools, UI Related posts 我的email客户端软件选择历程 (7) 小巧的编辑器Geany (6) 发现fcitx也很不错嘛 (6) 保存网页为单个文件/Save webpages All-in-one file (3) 为ThinkingRock报表添加字体 (1)]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/fwolf/3322054088/" title="Balsamiq Mockups For Desktop by fwolf, on Flickr"><img src="http://farm4.static.flickr.com/3551/3322054088_379001654e_m.jpg" width="240" height="219" alt="Balsamiq Mockups For Desktop" style="float:left;padding:0 20px 20px 0;border:0" /></a></p>

<p>见过flash游戏中，鼠标画个圆就是球，画个方块就能站住，画条线就能成跑道（这个很经典了，滑雪橇的游戏），也见过一个视频，老师讲课的时候画个斜块、小车、轮子就能够产生物理动作，看到<a href="http://www.balsamiq.com/products/mockups/desktop">Mockups</a>以后，就也有类似的感觉，不过这个是用来设计软件界面的。</p>

<p>以前设计界面的时候用什么？想过但用的相对比较少，笨办法就是文字描述，左边放什么，右边上面放什么，右边下面放什么等等，高手会用ps画，只要不嫌累，还有画在纸、黑板上的，这些手段都有个共同的缺点────不方便管理和变更。现在不易管理、不可变更的工具用起来太累了，<a href="http://www.balsamiq.com/products/mockups/desktop">Mockups</a>正是很好的解决了这个问题。</p>

<p>就像上面这张图片一样，在<a href="http://www.balsamiq.com/products/mockups/desktop">Mockups</a>里，提供了很多用户界面设计元素，拖过来调整、搭配就能形成一张设计示意图，在设计阶段、持续变更阶段应该都是很好的表达工具，毕竟一图胜千言嘛。风格上是手绘的草稿风格，让人感觉和在纸上没区标，估计打印出来蒙人也没问题。技术实现上，依赖Adobe AIR环境，所以也是跨平台的。从图上也能看到，只要选中了菜单里的<code>View -&gt; Use System Fonts</code>，中文支持还是可以的，好像不能选字体，不过够用了。</p>

<p>缺点首先是没有我想像中的“手工画线”，毕竟直接画和使用预制物件的感觉和灵活性还是有区别；第二就是速度，2006年买的电脑用起来都不算十分流畅；第三就是技术平台，个人对AIR不感冒，当然这个也没得改了，呵呵。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/air" title="AIR" rel="tag">AIR</a>, <a href="http://www.fwolf.com/blog/post/tag/design" title="design" rel="tag">design</a>, <a href="http://www.fwolf.com/blog/post/tag/graph" title="graph" rel="tag">graph</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a>, <a href="http://www.fwolf.com/blog/post/tag/ui" title="UI" rel="tag">UI</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/17" title="我的email客户端软件选择历程 (2005-05-23)">我的email客户端软件选择历程</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/338" title="发现fcitx也很不错嘛 (2007-07-08)">发现fcitx也很不错嘛</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/298" title="保存网页为单个文件/Save webpages All-in-one file (2007-06-26)">保存网页为单个文件/Save webpages All-in-one file</a> (3)</li>
	<li><a href="http://www.fwolf.com/blog/post/419" title="为ThinkingRock报表添加字体 (2008-08-01)">为ThinkingRock报表添加字体</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/433/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>为ThinkingRock报表添加字体</title>
		<link>http://www.fwolf.com/blog/post/419</link>
		<comments>http://www.fwolf.com/blog/post/419#comments</comments>
		<pubDate>Fri, 01 Aug 2008 07:59:08 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Tools]]></category>
		<category><![CDATA[font]]></category>
		<category><![CDATA[fop]]></category>
		<category><![CDATA[GTD]]></category>
		<category><![CDATA[ThinkingRock]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/?p=419</guid>
		<description><![CDATA[ThinkingRock是一款用Java编写的跨平台的GTD工具，我试用过很多GTD工具，在线的、单机的、自架服务器的，转了好几个圈，最后又转回来用它了，主要理由就是方便，该复杂的功能就要复杂，该简单的功能就要简单，可以用Project/Action来组织复杂事务，支持任务分配（当然只是给自己看的，没有协作功能），还算方便够用的报表功能。说到报表就到本文的主题了，软件自带的几个字体都无法显示中文，生成pdf报表之后里面的中文都会变成井字号#，所以需要自己安装中文字体。 参照官方的字体安装说明，核心意思是该软件的字体读取使用了FOP，而这个FOP需要Font Metrics文件才能工作。FOP是Apache中的一个项目，我没有深入去研究，不过网站上也有一篇比较清楚的文章教人如何生成这个Font Metrics文件。 但文章中的例子，使用库文件的位置和形式有点小问题，-cp后面是各个库文件，要能访问到才行，文中的路径显然不合适；文中各个库文件之间是用分号;间隔，这是在Windows中的写法，放nix下就错了，可以换成冒号:。所以，命令就变成了这个样子，注意所在路径的变化和相对路径： $ cd /big2/tools/tr-2.0.1/tr/resource/fop $ ln -s /big2/fonts/xpfonts/simsun.ttf $ java -cp ../../modules/ext/fop-0.93.jar:../../modules/ext/avalon-framework-4.2.0.jar:../../modules/ext/commons-logging-1.0.4.jar:../../modules/ext/commons-io-1.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttf simsun.xml 如果字体文件中包含多个字体，而你指定了错误的字体名称，系统会给出提示： TTF Reader for Apache FOP 0.93 Parsing font... Reading simsun.ttf... This is a TrueType collection file with 2 fonts Containing the following fonts: SimSun NSimSun Error while building XML font metrics file. java.io.IOException: [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.thinkingrock.com.au/">ThinkingRock</a>是一款用Java编写的跨平台的GTD工具，我试用过很多GTD工具，在线的、单机的、自架服务器的，转了好几个圈，最后又转回来用它了，主要理由就是方便，该复杂的功能就要复杂，该简单的功能就要简单，可以用Project/Action来组织复杂事务，支持任务分配（当然只是给自己看的，没有协作功能），还算方便够用的报表功能。说到报表就到本文的主题了，软件自带的几个字体都无法显示中文，生成pdf报表之后里面的中文都会变成井字号<code>#</code>，所以需要自己安装中文字体。</p>

<p>参照<a href="http://www.thinkingrock.com.au/faq.php#faq6">官方的字体安装说明</a>，核心意思是该软件的字体读取使用了FOP，而这个FOP需要Font Metrics文件才能工作。FOP是Apache中的一个项目，我没有深入去研究，不过网站上也有<a href="http://xmlgraphics.apache.org/fop/0.94/fonts.html#custom">一篇比较清楚的文章教人如何生成这个Font Metrics文件</a>。</p>

<p>但文章中的例子，使用库文件的位置和形式有点小问题，<code>-cp</code>后面是各个库文件，要能访问到才行，文中的路径显然不合适；文中各个库文件之间是用分号<code>;</code>间隔，这是在Windows中的写法，放nix下就错了，可以换成冒号<code>:</code>。所以，命令就变成了这个样子，注意所在路径的变化和相对路径：</p>

<pre><code>$ cd /big2/tools/tr-2.0.1/tr/resource/fop
$ ln -s /big2/fonts/xpfonts/simsun.ttf
$ java -cp ../../modules/ext/fop-0.93.jar:../../modules/ext/avalon-framework-4.2.0.jar:../../modules/ext/commons-logging-1.0.4.jar:../../modules/ext/commons-io-1.1.jar org.apache.fop.fonts.apps.TTFReader -ttcname "SimSun" simsun.ttf simsun.xml
</code></pre>

<p>如果字体文件中包含多个字体，而你指定了错误的字体名称，系统会给出提示：</p>

<pre><code>TTF Reader for Apache FOP 0.93

Parsing font...
Reading simsun.ttf...
This is a TrueType collection file with 2 fonts
Containing the following fonts: 
SimSun
NSimSun
Error while building XML font metrics file.
java.io.IOException: Name does not exist in the TrueType collection: Simsun
</code></pre>

<p>看到没，SimSun和NSimSun俨然就是宋体和新宋体啊。生成成功之后，simsun.xml就是我们得到的Font Metrics文件，所以接下来只需要再修改一下<code>fop.xconf</code>，把新字体的设置加进去就可以了：</p>

<pre><code>&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="normal" weight="normal"/&gt;
&lt;/font&gt;
&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="normal" weight="bold"/&gt;
&lt;/font&gt;
&lt;font metrics-url="simsun.xml" kerning="yes" embed-url="simsun.ttf"&gt;
  &lt;font-triplet name="SimSun" style="italic" weight="normal"/&gt;
&lt;/font&gt;
</code></pre>

<p>好了，现在ThinkingRock的Tools -&gt; Options -&gt; Miscellaneous -&gt; Action Screens中，就可以选择中文字体SimSun了，各种报表pdf中的中文也都会正常显示。</p>

<h4>参考</h4>

<ul>
<li><a href="http://www.fallleaf.net/content/view/148/9/">为ThinkingRock的REPORT添加中文字体</a></li>
<li><a href="http://www.mifengtd.cn/articles/add_fonts_for_thinkingrock_reports.html">ThinkingRock Hacks:让Report输出中文</a></li>
</ul>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/font" title="font" rel="tag">font</a>, <a href="http://www.fwolf.com/blog/post/tag/fop" title="fop" rel="tag">fop</a>, <a href="http://www.fwolf.com/blog/post/tag/gtd" title="GTD" rel="tag">GTD</a>, <a href="http://www.fwolf.com/blog/post/tag/thinkingrock" title="ThinkingRock" rel="tag">ThinkingRock</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/400" title="选择Eclipse PHP Development Tools(PDT)作为PHP开发工具 (2008-05-03)">选择Eclipse PHP Development Tools(PDT)作为PHP开发工具</a> (8)</li>
	<li><a href="http://www.fwolf.com/blog/post/17" title="我的email客户端软件选择历程 (2005-05-23)">我的email客户端软件选择历程</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/433" title="好玩有趣又有用的Mockups (2009-03-02)">好玩有趣又有用的Mockups</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/434" title="在GLPI中输出中文PDF文件 (2009-04-02)">在GLPI中输出中文PDF文件</a> (2)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/419/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>发现fcitx也很不错嘛</title>
		<link>http://www.fwolf.com/blog/post/338</link>
		<comments>http://www.fwolf.com/blog/post/338#comments</comments>
		<pubDate>Sun, 08 Jul 2007 12:26:12 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[chinese]]></category>
		<category><![CDATA[fcitx]]></category>
		<category><![CDATA[input]]></category>
		<category><![CDATA[lang]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/338</guid>
		<description><![CDATA[scim使用了很长时间了，虽然其中有时候有些麻烦，总体来说也是不错的。不过我只用自然码风格的双拼，scim那丰富的输入法类型对我来说没用，今天心血来潮换fcitx用用，发现居然也是很不错的，比我刚开始在ubuntu 5.10下使用的感觉好多了。 我是直接安装源中的版本，apt安装即可，版本是1:3.4.3-1，输入法选字条上显示的版本是“GirlDog 3.4.3（新年版）”，更换输入法的时候，除了使用im-switch -s fcitx之外，还把/etc/X11/Xsession.d/95input的内容改成了下面这样： export LC_CTYPE=zh_CN.UTF-8 export XMODIFIERS=@im=fcitx export XIM=fcitx export XIM_PROGRAM=fcitx fcitx 然后重启X就能正常启动fcitx了。 fcitx的主要配置文件是$HOME/.fcitx/config，不过这个文件的编码是gb2312的，所以编辑之前要先更改一下shell环境的字符集（注意文件编码不能改，不然设置无效）： export LANG=zh_CN.utf-8 gedit config 更改设置之后，想立即生效就kill掉fcitx再重启（或者按Ctrl_5也行）： pkill -9 fcitx;fcitx 在我的安装中，或许是ubuntu改装的原因，反查拼音、删除拼音用户词组等快捷键好像无法使用，不过还好，自造词挺省事，直接编辑QuickPhrase.mb就可以了，不过这个文件也必须是gb2312编码才行。 总体fcitx给我的感觉是小巧、快速、够用，不过配置略微麻烦了一点点，需要修改配置文件，而不是像scim那样有图形界面的配置功能；另外就是很多地方，比如配置文件，使用gb2312内码，对于现在大多数utf8编码的linux来说，略微麻烦了一点点。 推荐大家看看fcitx官方网站上的中文PDF文档，挺不错的。 另外还有一个我不知道的问题，比如输入ubuntu，没按回车出英文，而是按空格出了个“手刹虐杀”的中文，以后就记住了，像这种“自造词”如何删除？Ctrl+Del不起作用呀。 Update @ 2007-07-11 刚换过来没几天，作者就由于别人的打击要放弃这个项目，真让人郁闷，Yuking一定要顶住恶势力的攻击啊~~ Tags: chinese, fcitx, input, lang, Tools Related posts 安装ibus输入法 (3) 让phpmailer支持中文名称的附件 (5) 截取固定长度的中文字符串 (2) 我的email客户端软件选择历程 (7) 小巧的编辑器Geany (6)]]></description>
			<content:encoded><![CDATA[<p>scim使用了很长时间了，虽然其中有时候有些麻烦，总体来说也是不错的。不过我只用自然码风格的双拼，scim那丰富的输入法类型对我来说没用，今天心血来潮换fcitx用用，发现居然也是很不错的，比我刚开始在ubuntu 5.10下使用的感觉好多了。</p>

<p>我是直接安装源中的版本，apt安装即可，版本是1:3.4.3-1，输入法选字条上显示的版本是“GirlDog 3.4.3（新年版）”，更换输入法的时候，除了使用<code>im-switch -s fcitx</code>之外，还把<code>/etc/X11/Xsession.d/95input</code>的内容改成了下面这样：</p>

<pre><code>export LC_CTYPE=zh_CN.UTF-8
export XMODIFIERS=@im=fcitx
export XIM=fcitx
export XIM_PROGRAM=fcitx
fcitx
</code></pre>

<p>然后重启X就能正常启动fcitx了。</p>

<p>fcitx的主要配置文件是<code>$HOME/.fcitx/config</code>，不过这个文件的编码是gb2312的，所以编辑之前要先更改一下shell环境的字符集（注意文件编码不能改，不然设置无效）：</p>

<pre><code>export LANG=zh_CN.utf-8
gedit config
</code></pre>

<p>更改设置之后，想立即生效就kill掉fcitx再重启（或者按Ctrl_5也行）：</p>

<pre><code>pkill -9 fcitx;fcitx
</code></pre>

<p>在我的安装中，或许是ubuntu改装的原因，反查拼音、删除拼音用户词组等快捷键好像无法使用，不过还好，自造词挺省事，直接编辑<code>QuickPhrase.mb</code>就可以了，不过这个文件也必须是gb2312编码才行。</p>

<p>总体fcitx给我的感觉是小巧、快速、够用，不过配置略微麻烦了一点点，需要修改配置文件，而不是像scim那样有图形界面的配置功能；另外就是很多地方，比如配置文件，使用gb2312内码，对于现在大多数utf8编码的linux来说，略微麻烦了一点点。</p>

<p>推荐大家看看<a href="http://www.fcitx.org/">fcitx官方网站</a>上的<a href="http://www.fcitx.org/download/fcitx3.pdf">中文PDF文档</a>，挺不错的。</p>

<p>另外还有一个我不知道的问题，比如输入ubuntu，没按回车出英文，而是按空格出了个“手刹虐杀”的中文，以后就记住了，像这种“自造词”如何删除？Ctrl+Del不起作用呀。</p>

<h4>Update @ 2007-07-11</h4>

<p>刚换过来没几天，作者就<a href="http://www.fcitx.org/main/?q=node/123">由于别人的打击要放弃这个项目</a>，真让人郁闷，Yuking一定要顶住恶势力的攻击啊~~</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/chinese" title="chinese" rel="tag">chinese</a>, <a href="http://www.fwolf.com/blog/post/tag/fcitx" title="fcitx" rel="tag">fcitx</a>, <a href="http://www.fwolf.com/blog/post/tag/input" title="input" rel="tag">input</a>, <a href="http://www.fwolf.com/blog/post/tag/lang" title="lang" rel="tag">lang</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/437" title="安装ibus输入法 (2009-04-06)">安装ibus输入法</a> (3)</li>
	<li><a href="http://www.fwolf.com/blog/post/176" title="让phpmailer支持中文名称的附件 (2006-05-23)">让phpmailer支持中文名称的附件</a> (5)</li>
	<li><a href="http://www.fwolf.com/blog/post/133" title="截取固定长度的中文字符串 (2006-02-06)">截取固定长度的中文字符串</a> (2)</li>
	<li><a href="http://www.fwolf.com/blog/post/17" title="我的email客户端软件选择历程 (2005-05-23)">我的email客户端软件选择历程</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/338/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>保存网页为单个文件/Save webpages All-in-one file</title>
		<link>http://www.fwolf.com/blog/post/298</link>
		<comments>http://www.fwolf.com/blog/post/298#comments</comments>
		<pubDate>Tue, 26 Jun 2007 13:56:43 +0000</pubDate>
		<dc:creator>Fwolf</dc:creator>
				<category><![CDATA[Internet]]></category>
		<category><![CDATA[Tools]]></category>
		<category><![CDATA[data:URI]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[mht]]></category>

		<guid isPermaLink="false">http://www.fwolf.com/blog/post/298</guid>
		<description><![CDATA[看到好的网页需要保存到本地的时候，有几种保存方式可选择，保存为网页文件（仅网页）的话，会得到一个html，但是不包含所有的图片等附加文件，保存为网页文件（全部）的话，会得到一个html文件和一个目录，图片等所有附加文件都在目录中，但是要想保存为一个文件并且所有的图片等附加文件还都完整的话，目前只有ie可以实现，那就是保存为mht文件，那么这个mht文件到底是什么呢？ mht其实是一种MHTML文件，MHTML是MIME HTML (Multipurpose Internet Mail Extension HTML)的简称，它的初衷是在邮件中嵌入HTML内容，RFC2557详细描述了文档定义。ie保存的mht文件、html格式的电子邮件、甚至chm文件都采用了MHTML或者相似的技术。 遗憾的是，不同的浏览器对mhtml的支持程度不尽相同，并且不同的浏览器保存的mhtml文件也不一定兼容（本部分内容主要参考自wikipedia）： IE: 自从1999年的ie5就支持保存为mht格式了，但在保存一些复杂页面的时候会出错。 Opera: 自从opera 9.0(build 8264, 发布于2006-3-10)起支持保存mhtml文件。 Firefox: mozilla、firefox系列浏览器到目前为止仍然不直接支持保存mhtml文件功能，虽然个人非常喜欢firefox，但是这的确是个缺点，甚至早在1999年就有人在Bugzilla上提出了这个问题，但没有得到开发人员的足够重视。不过倒是有个插件Mozilla Archive Format（地址二）填补了这一空白，但是目前只支持到ff1.5，针对ff2只有一个非官方的build。据说MAF生成的mht文件和微软系列不全兼容。 Safari: 自动2005年4月29日的2.0版本，苹果上的safari支持保存网页为mhtml文件，但是却不支持显示mhtml文件。 由于浏览器对mhtml的支持相当的不统一，mhtml的使用受到了很大的限制，就我个人的感觉，还是以微软系列的mht为主流，甚至kde上还有一款kmhtConvert软件，可以把微软的mht格式转换为kde的mhtml格式——war文件。 由于mhtml的原理，所有支持mhtml的浏览器或插件采用的方式大多是变相的文件打包的方式，也就是相当于把网页完整保存下来，然后把html文件和目录下的图片等其他文件通过某种方法进行大包，并更改html文件中的链接，通过特殊的链接格式引用包中的资源文件。其实，除了mhtml以外，我们还有另外一个选择，那就是data: URI scheme。 data: URI scheme和mhtml的不同之处在于，mhtml解决问题的方式是对多个文件打包，而data: URI则是直接把文件的内容包含在地址当中。比如我引用了一个图片文件http://www.fwolf.com/favorite.ico，mhtml的做法是把这个ico文件打包进去，而data: URI则是直接把地址http://www.fwolf.com/favorite.ico替换为诸如data: image/png; base64, iVBORw0KG&#8230;..这样的代码，从而实现所有的内容都在一个文件中的目的。 data: URI被大多数浏览器支持，并且语法由RFC2397定义，不同浏览器的处理效果基本一致，当然，和往常一样，不被ie系列支持。不过从我个人来讲，不管是windows平台还是linux平台，我都会选择firefox浏览器，所以可以无视掉ie。 当然data: URI也不是万能药水，它也有自己的优缺点：（本部分参考自wikipedia） 优点： 增加了web访问的请求次数，比如一个包含2个图片引用的网页文件，一共会产生3次web请求——一次是文件本身，另外两次分别是那两个图片。这样会节省一些网络资源，因为http协议是无状态协议，每次请求都一定的系统开销。 一般的浏览器默认配置都是最多同时使用2个连接访问服务器，所以请求次数的减少也节省了连接资源。有些web服务器从服务端也可以作类似的配置。 浏览器缓存中的文件数目减少了。 在一些访问受限制的场合可以使用，比如一个web界面的超文本编辑器，就可以通过这种方式在编辑区中插入图片。（不明白它在说什么） 我想这同样适用于需要隐藏图片地址的场合，因为图片的地址就是它的数据，而不是到你服务器上某个文件的链接，所以这一点对付图片盗链者来说简直太有效了。 可以避免页面采用https连接，图片等文件采用普通http连接所产生的“本页即包括安全内容，又包含不安全的内容”这样的情况。 最重要的一点，通过它可以实现把网页保存为一个单独的文件 。 缺点： 嵌入的内容在客户端要重新进行编码和显示，增加了一点点客户端系统开销。 如果同一项资源被多次引用，也只能重复嵌入它的数据，没有“重复利用”这一说，如果网页中同一个图片被显示了100次的话，数据量的增加是惊人的。 浏览器对URI长度通常都有限制，比如opera限制为4k，不过这只影响你把date: URI写到地址栏或者&#60;a&#62;标记中的情况。 不支持数据压缩，采用base64编码的数据体积会增加1/3，采用url-encode编码的数据体积会增加2倍。不过如果web服务器启用了压缩，这一点的影响就可以抵消了。 不被微软的IE支持。 data: [...]]]></description>
			<content:encoded><![CDATA[<p>看到好的网页需要保存到本地的时候，有几种保存方式可选择，保存为网页文件（仅网页）的话，会得到一个html，但是不包含所有的图片等附加文件，保存为网页文件（全部）的话，会得到一个html文件和一个目录，图片等所有附加文件都在目录中，但是要想保存为一个文件并且所有的图片等附加文件还都完整的话，目前只有ie可以实现，那就是保存为mht文件，那么这个mht文件到底是什么呢？</p>

<p>mht其实是一种MHTML文件，MHTML是<a href="http://en.wikipedia.org/wiki/MHTML">MIME HTML (Multipurpose Internet Mail Extension HTML)</a>的简称，它的初衷是在邮件中嵌入HTML内容，<a href="http://www.ietf.org/rfc/rfc2557.txt">RFC2557</a>详细描述了文档定义。ie保存的mht文件、html格式的电子邮件、甚至chm文件都采用了MHTML或者相似的技术。</p>

<p>遗憾的是，不同的浏览器对mhtml的支持程度不尽相同，并且不同的浏览器保存的mhtml文件也不一定兼容（本部分内容主要参考自<a href="http://en.wikipedia.org/wiki/MHTML">wikipedia</a>）：</p>

<p><strong>IE: </strong>自从1999年的ie5就支持保存为mht格式了，但在保存一些复杂页面的时候会出错。
<strong>Opera: </strong>自从opera 9.0(build 8264, 发布于2006-3-10)起支持保存mhtml文件。
<strong>Firefox: </strong>mozilla、firefox系列浏览器到目前为止仍然不直接支持保存mhtml文件功能，虽然个人非常喜欢firefox，但是这的确是个缺点，甚至<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=18764">早在1999年就有人在Bugzilla上提出了这个问题</a>，但没有得到开发人员的足够重视。不过倒是有个插件<a href="http://maf.mozdev.org/">Mozilla Archive Format</a>（<a href="https://addons.mozilla.org/firefox/212/">地址二</a>）填补了这一空白，但是目前只支持到ff1.5，针对ff2只有一个<a href="http://www.mediafire.com/?fgn3zx4ktzd">非官方的build</a>。据说MAF生成的mht文件和微软系列不全兼容。
<strong>Safari: </strong>自动2005年4月29日的2.0版本，苹果上的safari支持保存网页为mhtml文件，但是却不支持显示mhtml文件。</p>

<p>由于浏览器对mhtml的支持相当的不统一，mhtml的使用受到了很大的限制，就我个人的感觉，还是以微软系列的mht为主流，甚至kde上还有一款<a href="http://www.kde-apps.org/content/show.php?content=14315">kmhtConvert</a>软件，可以把微软的mht格式转换为kde的mhtml格式——war文件。</p>

<p>由于mhtml的原理，所有支持mhtml的浏览器或插件采用的方式大多是变相的文件打包的方式，也就是相当于把网页完整保存下来，然后把html文件和目录下的图片等其他文件通过某种方法进行大包，并更改html文件中的链接，通过特殊的链接格式引用包中的资源文件。其实，除了mhtml以外，我们还有另外一个选择，那就是<a href="http://en.wikipedia.org/wiki/Data:_URI_scheme">data: URI scheme</a>。</p>

<hr />

<p><a href="http://en.wikipedia.org/wiki/Data:_URI_scheme">data: URI scheme</a>和mhtml的不同之处在于，mhtml解决问题的方式是对多个文件打包，而data: URI则是直接把文件的内容包含在地址当中。比如我引用了一个图片文件http://www.fwolf.com/favorite.ico，mhtml的做法是把这个ico文件打包进去，而data: URI则是直接把地址http://www.fwolf.com/favorite.ico替换为诸如data: image/png; base64, iVBORw0KG&#8230;..这样的代码，从而实现所有的内容都在一个文件中的目的。</p>

<p>data: URI被大多数浏览器支持，并且语法由<a href="http://tools.ietf.org/html/rfc2397">RFC2397</a>定义，不同浏览器的处理效果基本一致，当然，和往常一样，不被ie系列支持。不过从我个人来讲，不管是windows平台还是linux平台，我都会选择firefox浏览器，所以可以无视掉ie。</p>

<p>当然data: URI也不是万能药水，它也有自己的优缺点：（本部分参考自<a href="http://en.wikipedia.org/wiki/Data:_URI_scheme">wikipedia</a>）
<strong>优点：</strong></p>

<ul>
    <li>增加了web访问的请求次数，比如一个包含2个图片引用的网页文件，一共会产生3次web请求——一次是文件本身，另外两次分别是那两个图片。这样会节省一些网络资源，因为http协议是无状态协议，每次请求都一定的系统开销。</li>
    <li>一般的浏览器默认配置都是最多同时使用2个连接访问服务器，所以请求次数的减少也节省了连接资源。有些web服务器从服务端也可以作类似的配置。</li>
    <li>浏览器缓存中的文件数目减少了。</li>
    <li>在一些访问受限制的场合可以使用，比如一个web界面的超文本编辑器，就可以通过这种方式在编辑区中插入图片。（不明白它在说什么）</li>
    <li>我想这同样适用于需要隐藏图片地址的场合，因为图片的地址就是它的数据，而不是到你服务器上某个文件的链接，所以这一点对付图片盗链者来说简直太有效了。</li>
    <li>可以避免页面采用https连接，图片等文件采用普通http连接所产生的“本页即包括安全内容，又包含不安全的内容”这样的情况。</li>
    <li>最重要的一点，通过它可以实现把网页保存为一个单独的文件 <img src='http://www.fwolf.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 。</li>
</ul>

<p><strong>缺点：</strong></p>

<ul>
    <li>嵌入的内容在客户端要重新进行编码和显示，增加了一点点客户端系统开销。</li>
    <li>如果同一项资源被多次引用，也只能重复嵌入它的数据，没有“重复利用”这一说，如果网页中同一个图片被显示了100次的话，数据量的增加是惊人的。</li>
    <li>浏览器对URI长度通常都有限制，比如opera限制为4k，不过这只影响你把date: URI写到地址栏或者&lt;a&gt;标记中的情况。</li>
    <li>不支持数据压缩，采用base64编码的数据体积会增加1/3，采用url-encode编码的数据体积会增加2倍。不过如果<a href="299">web服务器启用了压缩</a>，这一点的影响就可以抵消了。</li>
    <li>不被微软的IE支持。</li>
</ul>

<p>data: URI的基本使用格式如下：</p>

<div class="code">
data:[&lt;MIME-type&gt;][;base64|charset=some_charset],&lt;data&gt;
</div>

<p>mime-type是嵌入数据的mime类型，比如png图片就是image/png。
如果后面跟base64，说明后面的data是采用base64方式进行编码的，毕竟数据都需要编码以免和其他的网页内容相冲突。所以如果不采用base64编码，就必须使用urlencode把数据进行转换，在这种情况下可以使用charset=来指定内容的字符集。</p>

<p>下面贴几个data: URI实际应用的例子，先看效果，再贴源码，注意我贴的源码中英文引号会被WP替换为中文引号，另外为了显示方便会增加一些回车换行，如果要复制到本地实验的话最好直接查看本页面的源代码。</p>

<p>首先是一个图片的例子，我的图片也许大了些，不过用来作qq自定义表情发给朋友还是不错滴。
<img src="data:image/gif;base64,R0lGODlhIwGVAPecAHmCwQAA/yBKv+P1//z+/7zo/6De/9Hv/1FOhMbj+I2x7SBd1IGAlur4//7//0hGh9Tw/+by/HiX3Vh4y3iW28nt/5/e/zVjzUJruzVmzyA9ryA5qzhSteb2//X8//f8/93z/6jh/yAfjbTm/8ns/9fx/2aV6NXr+/T7//n9/7Tf/Ljf+dXw/5O04sPN6zs/naDB8NLw/2Rwt77i+0lNpGNtr0yD4UhHiIuq38Hi+ari/4Gf1igwmYWUzSBRxnnR/zNixzphxO71/cfb+uny/Hih6Cgul8LG3brH51pzvOHu/K/j/y0vkfH2/aS86y0ukKq86L3M7CgymyAikJTa/5Gl1idg0vv9/0Vsusrt/7fm/8Dp/6i/5tnt/Pr9/y87oPL7/z953ydf0C85nSddzjpWtyBFub/h+FBzvfH6/0hmwSAUgabZ+omd1ygslZ3e/3Sr6en3/6rZ+IKh49/0/5K06Do/nDRu2dHw//D6/+b3/7jn/73h+ufx/CASfiAvoKbC8Mbs/1eD3GNusCZi1LXH6UB634/S+5bb/4WTzCAsnP3+/3ig5+z5/9zn+M3u/7nn/4Gm3YHU/3CFwomb1am+5MDP7zRv2iBXzsHq/0lOj////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAX0AZwALAAAAAAjAZUAAAj/ADcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXLxndsULmAoWDi44wOOLI0ZEjVY64YFBpEcyjSJMqZajAEKA+YBqdqBOEUsEjCP4h6OnoyiJHDLQeubK0rNmzKhXYIOJFyIIFSkDMUJNo4KKwDDbl5Dl2U1gEaAMLHrwxTIQrDoYIEOBEzyM+HAgyyLupyc+fAycT3sy5s8IiMDwQqGxCkKMGMfZEGjTQEZFNjiw3mc0TtiPPuHNvvtQFBQEHczD5sBTngI4VXwb+DPtvJ1atDHw2EbgIwEDrm7BrF2gdO/XtCgGI//fOvfz18+bRp0dP3mB7guTfP5Q/vr789e51SyREJ0+KRVAIYEYUA5BgAAljKMccdAxk9U9zVbCXnXjwZVdee+CNN6GGBUVo4XredZefeuzZN+KHF+JXEHgrkngid/ZpGKOJH93XkY2biHFAB2l84IIGGxRSAiRUbJGgQDohoKRzSi55hFEmhnjejFNy+KJAHt6nHY0oWhgfiDDOSGGKXh7EophWdikljhWOJGWbYV43poxcdllQBiqwMEADSPyhCBeZWGCBHHYMZBkDDzzYJIO3mVkfjFNWSSaa4rkARSJimtlimeZRKOKYcGIY5qMrdkdfQm/KuSGpaNao6qsoiv/Y6axqIiQBHFpUAEElU4jQggGSFLADYAoqmpWDCBwBn4yballrrJxSVx1CoNrJLLMfbicqiLLaueyEmoar4pfUuglnemtK+Ca5BwFxSAhLyLCGH0n8MEIONFCm1xEPPjhZv/8oqy63q3rqpadzdgpqjBVm6m2L64a6qYvzVSsnw5BSSamNc5oK67nbQrtufBbb2MYEbCCCBhYYTFJAAjQQq+BkRPjkSBWTCTzqhg1zmmqpBQNgVKTPQqouqbFaTHTDVM4XbXgpZijhw1N3yyKJIa+6c7RX49hDGTjkkAUeCVTxgswCEbETQo4g8Nqs6R6MtKlIF72JVU9Dm/SZV+b/917WDkk96qNffiq3w+5ZSbLS7KpoLZnZnnvQEYN8IYURTNygb2tK6qyXZVkRsQiU4NZpeOSnL1s33t52LW66W4orOZtAo4vjyJALXm7PjoMJMq2Cu47RIg46t5yDZE0KvM/L623eIpVkvObtVi/9NMIT994Q7epdnW2rrWO/sNLfhzi++VvSnSb3DfHb72XuP6jsFUI33zHh4I46enU0urAJpkBDH+EEmCEupYlnj6MI7RTXPfJRbSPsu0gEITI0/VjwghjMoAY3yMEOevCDIAyhCEdIwhKaMDB1uVtCEsHCFg6EhQBoIQwBKJAAEMSGBsEhDiMSgB76cIc3ZAgQ/3eHuKAlBIhDPGFStAPDapFrdNeh30Fs+EMfBnETSWzIEHdYxS4ORIfbyx7WFEJFK2Lxilg044UwJjGiTZCD4BkdhkznsB+esYZ4PKMXHbLFKZLxjoBciJbqhBAwApKKdxziz4JmQNQpsXQHexG5ZEUeLh4Sj5Z8SBeTuMkvbrKHYZSdjUD5yUSm0Y4jCtm2mnZCqc2xbuDDpBd1CMo88rCQBcniJR2lqr8RMpemTCQpEXnGhbnoZwbT3gir98DdTdGQX8wjMflYymhaM4doTGXkKFJGKyIRk3lMH+OOKcZWXkx1mdrYKU9pxzKCM3ELyWQa2anGd+qSeWuMJTDBWP9LPdITh6uEmN9Y+UiOaW+RweTiNHXpwGvyM5sODWT2TtXMaKKSltD8Xes2KjlzUpJkBVPdw2gpUVNmsaGB/OY10ThNeDoOYQe8ISIzulKA4rNvCXzk9baJUgRms58WXWn+cPlTiJaUoQc1WjwTKtOUKjWZvQTcGzUoTmNejE6Kw443awlUoJb0mQrt4zo9KdN7EhCqRiTqMGsY1noOVW6l8t5UdTqRT9q1k/G8q1736tWP8FWvdA2sYAdL2MIa9rCITaxiF8vYxjr2sZCNrGQnS9nKWvaymM2sZjfL2c569rOgDa1oR0va0pr2tKhNrWpXy9rWuva1sI2tbGdL29qx2va2uM2tbnfL29769rfADa5wh0vc4hr3uMhNrnKXy9zmOve50I2udKdL3epa97rYza52t8vd7nr3u+ANr3jHS97ymve86E2vetfL3va6973wja9850vf+tr3vvjNr373y9/++ve/AA6wgAdM4AIb+MAITrCCF8zgBjv4wRCOsIQnTOEKW/jCGM6whjfM4Q57+MMgDrGIR0ziEpv4xChOsYpXzOIWu/jFMI6xjGe83oAAACH5BAUsAZwALAAABAAhATUAAAj/ADcJHEiwoMGDCBMqXMiwocOHECNKnEixosWLGDNq3Mixo8ePIEOKHEmypMmTKFOqXMmypcuXMGPKnEmzZkZGd6yQuUDBps+fQINuUmAIUB8wjU7UCUJJqNOnUEkqsEHEi5AFC5SAmKEmUdSvYMNODBPhioMhAgQ40fOIDwexcOPKFVgEhgcCm5qYEOSoQYw9kWrMHUxY6KUuKAg4mIPJh6U4B3SsGJNQk0DLBjVp3sw580HOoAlivvyZNMLRngeijrj6MmjNlRW2/vh6c+nYIWcvJEQnT4pFUASYiTKAhIFAPHC/Np26NmzcqjfVFs38tnTqmHWbnj1a+3XRzqU7/38u0rtl7ctdi2c4nrxDMQc6pPngQsOGQiUgUdni5nT17tOh1t1CAto24HfnhdbegNl9V1CDro1HXXSkeTdhee1dyN2F67nXkIULZaACCwM0gMQfinCRiQVvyPHEZ+dd555uCUr44IYVUhhjdQ6ull164K2XmnU+1tiZeNORRCOQ6vGIIGsWSQCHFhVAUMkUIrRggCQF7PCAf08yeOSBFA75IJKd/UgmcwX2WFmC1p1Z5pzomZSkkDdu56COD0FYERCHhLCEDGv4kcQPI5xhBwP+Hdigo6oxyWGQez4p45A+yimRbZndCVuAGZ72I54eyuknmqiaaZGapTbUxgRsIP+CBhYYTFJAAjQgAB2n0UHKI42dGmmgkDue2ZqwvH54KXs5QuireXr6CmNofJ4aYbKbOilRD2XgkEMWeCRQxQu6MlsatQBSqyqfPRYL7LGa9qnntWlidymy6t5IXoGtzitgjnt6CKJs2kp0xCBfSGEEEzcwSvCO+7oZpsTxTvhpc5XOqfHAkZbZL5tNujsvmL1qHCyQ9SJYbMEOWXvSyhCDGfPKBbdp7MZwTspxnASyq6ONx36aM5Is4xijwBUTbOpKrM4YrMopR/g0pzNmii3VSctLYMRs9rvzRAvyHGm+PY8dXmFop+3S12q37fbbcMct99x012333XjnnbHYJlf/iiPLfYOXXthZZ/0vxiSbaWGm8fKL7X9hhW0g2SBX6CmajwfuM7zQlm0sky5raO/en6uLb7TJHg04UHX6G+qa11Ksr9C8no35kbdn7vew/t6eO+4za03v0styTnpEi2xChCMEXdGEIwxET4RARDRxkcv4so19yQ9T7Cek33ssOqYSizz+z5TPXrvJKT/q+0WLHMEAAgwc4cgR+OPvSBX3z19/RbBj3OE81rR/3ckz5vud2UwnPgKuL0BS+xWdEgijpD0HXsXr2AArIj8E/OMf9bOfI5pwhU3cz4P/oN8RKBJA2qWucRYM3dJgdzzSkWmA3LGWszIWwMKhb0ynQ9Wp/5CFkfn94wFVsJ5A8EcQIjAghfQrIWuI2EDy6UxwuZOZmyT3OtvJjmgQvODeaCajA57Pfd5rlsUmJZEreBABK1xEE/KXPyVuogof/BKUemijyvXqcpYS1bJ2B6yikcxoXfsi966oNMytMWBgNFX6IvLEFeZljnR02CaS90RNQslJG3wkIy1GRsRBkoy8S9z5SMlDgK3Lbz2jYLrGprKOQfIi8htICvJyhCb4sgl4GUgTGMA8sLGPhhWDmeJCeS/gjUxf0NHU3/C0yCJRE5Y6axqHUBnIIWLEfgK53xGI0Mty6s96mGRheAroQggqcHKjCph5bigsW8ZQQvBskj4tV/8kHSazgfn81eGc9bGH2M+JT0xhOYf5xvrNsQptY5vefBgW+6HwgyCsnxEx+g/8eXKiIG3bFY6AR45mNHomVehHQ8rSwnQQATClX/TkN7+YytSSLc0pYfKXwp6G8IlvVClOdUpUuFyhfk40KUwT2lGaFvWpcVlE9C4K0w+i9KRQzWpYhsnRqV6Uo0PVqliDklSTRo+pGGWAHcfKVpvgr6oqzGRDe9nWutZEfo7IqxQN0gQiOHF6dg3sS6QKx+aR8ArJo94R6CfYxrKEq0jda0E8msK1OvayI+EqCO3XhEVcwXnPoywIJYvZ0oIErTPNJFrDatrWbqQPaN2sRuVnVsAOuva2GSlpVwlCWLNKJCAAIfkEBZABnAAsBwAgAAkBKgAACP8AOQkcSLCgwYMIEypcyLChw4cQI0qcSLEiw02cNmEcqLGjRoEfLYocSbKkyZMoUy70yLIlS5UwY8qcSbPmQZcvcdrcybOnz58ZX4LcOFQo0KNIkypVmFNnUaJLo0qdurPjU48cg0KlyrWrV4shM2rFyjHs17No097ciLPpVrVw41JtS9es3Lt4j9alm7ev36p72/4dTFhlYKeFEyumeNjl4seQGzY2Grmy5bKTL2smvIiTkD6dB6IgcoQBgyMfNi0isgjx5td4SyM4TfrIkSq2cfc5ggABJ0euYQtH68L0v38IbDty1KTJoialj/dmEHy4da4MEDz4x4A5pytNODX/8cgbOQPMdq+rj4rg+JGBjmyL/x3aUft/RMmu36/UCwPuAjlXGidHhMcJARvZ9w966fHnIE+8CQSeB9ARCN14rWVUBXXVPeghTfENFN6FBRbY3BUaOVJFhx+2CJN8ss1WInTZ+cbJagUGx8gdVpBxAQUuBmnRIkcsUsU/2x13mm3nCbQdA02siJgChgDSBxiNnFBHEJQI6WVEth0npnmm/Tcmd+8ppIANRHghxAILKAHCDGok8uWdDMmG5J5lmrbdn9w1mVAYEVzhwBACCOCEHo/wwQGekCLEZG/TLRkjpacJelARMHhAgHgmCOJIAzHsEUkNkaYqYqb3SWdaq4Ga/6bQJV2gQIADc2DigyVxHKDDCmMspElCww5U7ETHEqTJsswuS6xCySIV7bDNOltQsckeqy1C0QqUrUkDmnnmq8jFp+lBhNCRRwqLQCGAGVEMQIIBgfDA0LbGcoIttN4ehC+311bLrL4CN1uSs9YGXLCy1zKsb74QP5xtwQM/nG/CFmWXZKD3tdpbmgmJcUAHaXzgggYbFFICJFRs4Ya/FCdMbb/dWqxtzN9GPHNDNY+EcM8G5byvwz1jW22/ABP8c0lEiItce9mdiRzICGWgAgsDNIDEH4pwkYkFb8jxBL9IQ7xwwAT7+2zZ3lIrcNtnH8x2xDojXbHSFKsd9Nt0//870SLxnTnbqxsjV0VoCEkAhxYVQFDJFCK0YIAkBezwANkWt5050EsHnfTcmYfecEpD78230mVPy23OELm9uUilybZkE8wRuaGM5x4ExCEhLCHDGn4k8cMIZ9iRu8Oiq44sxsbG/fPROHNudNqaOwT0xaPDfbfEcQt78/YTOXLaFYtcsVBpiCPUxgRsIIIGFhhMUkACNNjIb7dun86zxPvzPzS+pdPbvgBoPWFxD3w7Yx31tNc90FXkCv8pUGjKRz7EmesfVENID8qAgxxkAQ8JqMIL7Hc/zyHvIf9r3tu+NbMW4mx1MlMW+Nbmue3hj2bZC6DdFJa3ijTtY7UzyBWn4lOe4xnkCIP4ghSMwIQbGFFv2XMgsf7FvBxWb2c2k+LcsHg9KEbRWjcEXQCV5zctSqQJ4rJNc5oAHtoxSUxFiknn6Ca61qHQbKN7YR0HNscZfq5hNsyj62h2PSqaMIoPucIRxjQ42zApamJyhEoQCEZE2tF7hoTbH2uiRxUabJDN29wKJzbDLkJEfIJjUuxg9YAnquqVDjmS4ApSnjPB8pYmSZ9EAgIAIfkEBZABnAAsBwAfAAcBSQAACP8AOQkcSLCgwYMIEypcyLChw4cQI0qcSLHiwUWcPgj5QHDRhyZHGIh0JPCjQIwWU6pcybKly5cwCzZhgIDBkSZ9HB3ZyaCKIwZEiITs2SSm0aNIkypdKpCISAT//tnceYSIQJAhoz6oaZWp169gwzJ9GtWmoyucFjVJ4eBqFahSRYqdS7euXYcIoCI4MrDJlZCOmvi9yuDf1n93EyteDBYuX06CQ87UycABSk6F/yFgzLmz55WFH6eIfLM036IYr0A9gvaz69ewD14BmpZACsilsbY9yeknydjAg3vWibaJo+NCQSoHGZTTFd/Co0uv+/fIop95peYOqdem2iNVpov/H8/0iE7NUcvyPJIePQOQDMjLn+8SK9z2IvO3T28zPv3/AE60035l5UcTgVXIFeCCDCaEVYIGikRVhPmF9FiDGGb40xH3RVVTf/s9kB8Rl2VoYoAhcZJVe3oh8IB6FpZ44ozTbcLJJjjOxF162cWV2Yf+0SikeDhussgmHLKoH4FS/Tbkk8EVmWNmLCIWH4E2FQXllq9JuYlQVBYYn0j7KcjlmZ1J2Vt/8Zm3yBVq+UXZVOGhaadiai7i1I1GHnnFFYLBeaRzlLV256F04XhSYbQtcuSbaQmE43NZXYjopV8pKhBNNTlCxBVenmTcgFJpiempSim6yUycRBUeoI46/wrocStKheqtSHmJpEAeTqWTTjx1aB2uxMLk5WPtYRZhh5qZWuyzKknJF2IselkUswjUCe22FEkrkIsPhMtnkTPlFa5ew3KrLkReOiqYWroWqRZkA8m47r0KqRrvvvj22+2+APsr8EMAFzzwwfkWbDDCDBekML8NRyxpqAnbKDHDuk5c5EAUX3wwxATF6zHCDy88sr8lg3xyvymLvDLKLnMc88sY02zzzTjnrPPOPPfs889ABy300EQXbfTRSCet9NJMN+3001BHLSQjd1hBxgUUSH2pAoYA0gcYjZxQRxCUaG2nAjYQ4YUQCyygBAgzqJGI2WeGEcEVDgwhgABO6P/xCB8cRASAQYMvVPhBhx8ukeIDAeD4444nxHhBk9fFeOWJEy4Q5J8VAYMHBEBmgiCONBDDHpHUgDjkrA/eOuubvx554ZlLvjnijSt0ueycyP74S7NXjvvrvUfe+/HIJ3+7Z5d0gQIBDsyBiQ+WxHGADiuMwZDwy2uO+/G8U96978Z3n7zrDnG/UvATTZ44+re7DjtnhNCRRwqLQCGAGVEMQIIBgeDB9mynvPMRRHHl4x77vPe9AgZvfr6LCe0gQjzOtS5+5uuMGA7QgTR8wAUa2EAhSgAJKmzBDQQUXu0aeED0zY9y8mPhAWcovtwhRH0qmeD2Luc9BBYPfJzrTAb/VMCCATQACX9QBBcyYYE3yOEJKQzi+GAYwdzh0HDla+EFY1c82JHvisZb4A8pQrst/s6M4CsgYyQABy1UAAKVmIIIWmAASRRgBw9I4eq6+DsaKu+LFEzjANOow9rp0HDLgx/yrnhDG57vkIs0oGuAcIgQLEEGa/BDEn4wgjPYIUg91NwKYZhBK5ZSd4lsXAVn6EIgVlFyffxjLAWnyj7CD43h40wbJsAGRKABCxiYRAESQIPN6LGB6suiKjGYvhUqs4aLnKAhT8lAZqqRloqUpvm0KcjP9KAMOMhBFvCQgCq8wJjHZKACY8jFVpLxIdOkIfmgWcsfJvCZzYzdLCF5LchRZpCH5RnEF6RgBCbcAJSEm6c+LyhFLi5Tn4vboTPrKUO6TNSGZSwkPRUTEAAh+QQFECecACwGAB8ACAFvAAAI/wA5CRxIsKDBgwgTKlzIsKHDhxAjSpxIsSLCTZw2aSSosWNHgRszWhxJsqTJkyhTqjS4aBGRPh4XNWnCgFNNjTM9rtzJs6fPn0AHbjoikMERRwSPKD3KAAGCI4s+Bp1KtarVqUQLHnVERKOjIwz+/eP0VOrVs2jTqm1Yk9NYR00yEvVIJOwDBAyuhFzLt69fqwg4LZLLCezXJlGHiv1n9q/jx5BRxiXa5AhNR4MHH/nHQGfkz6BDIyQ6eFOKTZVTW95rtLHo17Adz+VERKDq1I7gblqk1HXs38CtYnS0qe2/p6mbjm3NqYrv4NCj+ww8tqj16kXjPpfOvbvFKwKxW/8XiEB84c57vatfP7Gp0/dtiQZ+/xQ9Rvb48yu8v7m808I2OXXccQIdsZ1+CLIX13kEjSVgUUox0IRnCVaYH1JgYReYTWFx1haFFoboXUtkiUVWVuGZaNOBIrb42yZ1iUfgQQwQd5+LOEYn30B4gbUjeTUmluOQwGG4lEcd8baUgTcS6WRoTWWU2BUzXXFFYpsghd6TXH5WHGdwiYQkJ5Vt9k9XTXap5lq1lVfjhBlt1MRXZiIwYZpr5onWYj1uRScDDDwgFgJ6pafnoVNhVJ1YDFQBqFEdLmYfopRStVmDCHQ0k3IqTlrppz0dQZ9T9mlUxXzwGQrqqiYtcqWrMrn/hlOsILJq60hI1prrmLf2alGuCW10I56+Fmvsscgmq+yyzDbr7LPQRivttNRWa+212Gar7bbcduvtt+CGK+645JZr7rnopqvuuuy26+678MYr77z01mvvvfjmq+++/Pbr778AByzwwAQXbPDBCCes8MIMN+zwwxBHLPHEFFds8cUYZ6zxxhx37PHHIIcs8sgkl2zyySinrPLKLK/LyB1WkHEBBS1XpYAhgPQBRiMn1BEEJTUDpYANRHghxAILKAHCDGokErRPYUQA3hACCOCEHo/wwcHTPBUBgwcEkGmCII40EMMekdSwkCYJsS2Q2wixDfdBczekyd14411Q3Xcb/1R33HsHLvjbfg9OUN59F0734dFd0gUKYc+BiQ+WxHGADiuMQTfieXPiNtx/M+75252PTtHfnHvON+efl4666AN1jnjspOsde+i0m7444dARQkceKSwChQBmRDEACQYEwsPuisvNeu3P8y693azb/vn02OuueNuByy196tqH33zuqZcOO2RiHNBBGh+4oMEGhZQACRVbuLH93PiDbnjorZv/EO7eE9/rNme77Y0ueuTDXvX6h0Dv9Y1/oMmAClgwgAYg4Q+K4EImLPAGOTxBIfxzoPnwNz0Siq9t4FOd7ApYPeg9kHCJa6DhTHe9892PeQ5kHmQkAActVAAClZiCCP9aYABJFGAHD/DbAkkYwhdqz4S4210NYRfA7O2Pd3xT4uxuF8AsAi53VIShDiEDhEOEYAkyWIMfkvCDEZzBDm3B4eGWiMUDXvGEcUth+Z4oQ/3RcIbhy5/qFKjCAhbSf108YRT70oYJsAERaMACBiZRgATQYEN5tKIddVdD1DkRj1Is4SA3STrB+bGTgOxjHRlnQkCCEY+L7EsPyoCDHGQBDwmowgswCcIQivF2fzxgK2PJRT3asYpVxKLsEujHwTGxjqh8pTRp1zruHGEQX5CCEZhwgzj2cpSDzCErxThAQq5tfMEk5Sq/B8xXLlF/8FSm/6b5xynaUD3zTFwpa/cixHbu05BWfCcwT+lCfZJPn148nyfniEzRCbSVoKwWMRUWEAA7" alt="这个图片用来作qq表情传给别人不错哦" />
注意这可是很“长”的一行哦，源代码：</p>

<div class="code">
&lt;img src=&#8221;data:image/gif;base64,
R0lGODlhIwGVAPecAHmCwQAA/yBKv+P1//z+/7zo/6De/9Hv/1FOhMbj+I2x7SBd1IGAlur4//7/
/0hGh9Tw/+by/HiX3Vh4y3iW28nt/5/e/zVjzUJruzVmzyA9ryA5qzhSteb2//X8//f8/93z/6jh
&#8230;&#8230;（省略若干行）
RT3asYpVxKLsEujHwTGxjqh8pTRp1zruHGEQX5CCEZhwgzj2cpSDzCErxThAQq5tfMEk5Sq/B8xX
LlF/8FSm/6b5xynaUD3zTFwpa/cixHbu05BWfCcwT+lCfZJPn148nyfniEzRCbSVoKwWMRUWEAA7
&#8221; alt=&#8221;这个图片用来作qq表情传给别人不错哦&#8221; /&gt;
</div>

<p>下面是一个在inline css中嵌入背景图的例子：
<span style="padding-right: 20px; background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC)     top right no-repeat;">
data: URI</span>
源代码：</p>

<div class="code">
&lt;span style=&#8221;padding-right: 20px; background: url(data:image/png;base64,
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD///+l2Z/dAAAAM0lE
QVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4Ug9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQ
AAAAAElFTkSuQmCC) top right no-repeat;&#8221;&gt;
data: URI&lt;/span&gt;
</div>

<p>再来一个嵌入javascript代码的例子，注意不同于上面两个例子，这次使用的是urlencode编码方式：
<script type="text/javascript" src="data:text/javascript;charset=utf-8,function%20test_urlencode_js%28%29%7Balert%28%27%E8%BF%99%E7%AE%97%E6%98%AF%E4%B8%80%E7%A7%8D%E5%8A%A0%E5%AF%86%E4%B9%88%EF%BC%9F%27%29%3B%7D"></script>
<span onclick="javascript:test_urlencode_js();">点一下这里&#8211;&gt;Fwolf作品</span>
源代码：</p>

<div class="code">
&lt;script type=&#8221;text/javascript&#8221; src=&#8221;data:text/javascript;charset=utf-8,function%20test_urlencode_js%28%29%7Balert%28%27%E8%BF%99%E7%AE%97%E6%98%AF%E4%B8%80%E7%A7%8D%E5%8A%A0%E5%AF%86%E4%B9%88%EF%BC%9F%27%29%3B%7D&#8221;&gt;&lt;/script&gt;
&lt;span onclick=&#8221;javascript:test_urlencode_js();&#8221;&gt;点一下这里&#8211;&amp;gt;Fwolf作品&lt;/span&gt;
</div>

<p>参考：
<a href="http://en.wikipedia.org/wiki/MHTML">MHTML on wikipedia</a>
<a href="http://maf.mozdev.org/">Maf extension project for mozilla &amp; firefox</a>
<a href="https://addons.mozilla.org/firefox/212/">Mozilla Archive Format on Firefox Addons</a>
<a href="http://www.ietf.org/rfc/rfc2557.txt">RFC2557: MIME Encapsulation of Aggregate Documents, such as HTML (MHTML)</a>
<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=18764">Bugzilla: Full rfc2557 MHTML multipart/related support in BROWSER(from 1999)</a>
<a href="http://people.dsv.su.se/~jpalme/ietf/mhtml.html">Using HTML in E-mail</a>
<a href="http://www.kde-apps.org/content/show.php?content=14315">kmhtConvert  </a>
<a href="http://en.wikipedia.org/wiki/Data:_URI_scheme">data: URI scheme</a>
<a href="http://tools.ietf.org/html/rfc2397">RFC2397: The &#8220;data&#8221; URL scheme</a>
<a href="http://www.sveinbjorn.org/dataurls_css">Using Data URLs Effectively with Cascading Style Sheets</a>
<a href="http://gonze.com/xipf/datauri/">HTML as media container format</a></p>

<h4>后记 @ 2008-01-12</h4>

<p>opera也支持mht格式了，包括它的linux版本，不知道从什么时候开始的。</p>

<p>其实这篇文章在2007年6月就写好了，当时就想着写一个小工具，利用data:URI这个特性，能够把网页都保存到一个文件当中去，然后再发表文章，可这一等就是半年多，终于利用2008年春节的空档时间，把这个工具已经写好了，有兴趣的可以<a href="/tools/2008/save_html_all_in_one_file.php">试一试</a>，还不知道我的服务器能否支撑得住呢 <img src='http://www.fwolf.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> 。</p>

	Tags: <a href="http://www.fwolf.com/blog/post/tag/datauri" title="data:URI" rel="tag">data:URI</a>, <a href="http://www.fwolf.com/blog/post/tag/html" title="html" rel="tag">html</a>, <a href="http://www.fwolf.com/blog/post/tag/mht" title="mht" rel="tag">mht</a>, <a href="http://www.fwolf.com/blog/post/tag/tools" title="Tools" rel="tag">Tools</a><br />

	<h4>Related posts</h4>
	<ul class="st-related-posts">
	<li><a href="http://www.fwolf.com/blog/post/17" title="我的email客户端软件选择历程 (2005-05-23)">我的email客户端软件选择历程</a> (7)</li>
	<li><a href="http://www.fwolf.com/blog/post/439" title="小巧的编辑器Geany (2009-04-20)">小巧的编辑器Geany</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/433" title="好玩有趣又有用的Mockups (2009-03-02)">好玩有趣又有用的Mockups</a> (4)</li>
	<li><a href="http://www.fwolf.com/blog/post/338" title="发现fcitx也很不错嘛 (2007-07-08)">发现fcitx也很不错嘛</a> (6)</li>
	<li><a href="http://www.fwolf.com/blog/post/419" title="为ThinkingRock报表添加字体 (2008-08-01)">为ThinkingRock报表添加字体</a> (1)</li>
</ul>

]]></content:encoded>
			<wfw:commentRss>http://www.fwolf.com/blog/post/298/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
