﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-简单为美-随笔分类-IT技术</title><link>http://www.cppblog.com/len/category/7468.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 28 Sep 2008 17:36:52 GMT</lastBuildDate><pubDate>Sun, 28 Sep 2008 17:36:52 GMT</pubDate><ttl>60</ttl><item><title>网络书签：Google bookmarks和FF插件</title><link>http://www.cppblog.com/len/archive/2008/09/25/62778.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Thu, 25 Sep 2008 12:06:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/09/25/62778.html</guid><wfw:comment>http://www.cppblog.com/len/comments/62778.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/09/25/62778.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/62778.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/62778.html</trackback:ping><description><![CDATA[<p>网络书签自从<a href="http://del.icio.us/">del.icio.us</a>推出后，各个网络巨头都推出了相应的服务，对于各个书签服务，我针对了自己的情况进行了一番小调查后，确定下用<a href="http://www.google.com/bookmarks/?hl=en">google bookmarks</a>服务。虽然del.icio.us美味书签最早推出，并有些特别的工功能，有着很大的用户群，但是我感觉它更偏向社交化的web服务，如将好的书签共享等，有着好友的功能，而我更偏向于需要一种简洁的书签存储功能。再有就是美味书签改版，对于网络安全功能过于注重，导致一种不好的用户体验，比如密码要数字字母混合，并且不能与用户名有太多重合等，还有密码最多线上保存两周。这些安全措施我都知道，但比一些公司密码管理还严，这至于吗？</p>  <p>国内的也出现了许多对应的web 2.0的网站，但是我没试用。还有一个选择就是baidu的<a href="http://cang.baidu.com">搜藏</a>，除了网页快照这个功能比较吸人外，其他并无亮点。最早看中google书签是因为它的开放性，比如搜藏都没有导出功能，而google就有导出，不怕用户流失，这一点蛮赞的。但是就其本身来说，使用并不方便，后来我使用了一直比较反感的工具条后，又开始使用它的书签，除了添加方便以外，整理和查找功能都比较薄弱。比如在线上，不能直接拖拽进行标签的分类，要手工点击编辑。google对这个服务不怎么看中，自推出以后，没有什么新的功能增加，希望以后有类似网页快照的存档功能就好了。</p>  <p>现在使用firefox3浏览器后，找到了<a href="https://addons.mozilla.org/en-US/firefox/addon/2888">GMarks</a>插件，它能直接存取google书签，包含一个边栏，工具栏，和一个书签快速查找框，可进行批量修改，删除书签，删除标签等等功能。它也可以在没有安装google工具条的情况下使用，还有定制工具栏等，最妙的是有了google工具条中没有的查找功能，不然在上千条书签找到你需要的，那是有点儿困难的。现在我将自己的收藏全都保存到google书签了，这样以后重装系统，再不用做备份了，而且在不同的机子上都可以用。</p>  <p>顺便说下，如何将FF3的书签导入到google书签服务中，那就使用google工具条，里面书签选项里有导入功能的，很简单。</p><img src ="http://www.cppblog.com/len/aggbug/62778.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-09-25 20:06 <a href="http://www.cppblog.com/len/archive/2008/09/25/62778.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>披着Chrome外衣的Firefox</title><link>http://www.cppblog.com/len/archive/2008/09/07/61239.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Sun, 07 Sep 2008 10:45:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/09/07/61239.html</guid><wfw:comment>http://www.cppblog.com/len/comments/61239.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/09/07/61239.html#Feedback</comments><slash:comments>5</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/61239.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/61239.html</trackback:ping><description><![CDATA[
		<p>Google的chrome浏览器一出来，我就被它的简洁风格给吸引住了，试用了几天，总体上还不错。但是还有几个问题，一是扩展太少，用些地方用起来不方便，像它自家的google工具栏都还没有开始支持。二是有时候在切换tab的时候，感觉有明显的停滞感，不知是否是多进程切换的原因，三是还有些网站不支持chrome。</p>
		<p>因为这些种种原因，我切换回了firefox 3。对于ff3，我也是刚刚用，但是越用越顺手，特别是插件机制，可以把玩好长时间。正像别人说过的那样，没有插件的ff3，还不如IE呢。于是通过设置，将自己的Firefox打造成了chrome风格，先上全屏截图，初始页是快速拨号，因为隐私关系，把它们都复位了，效果跟chrome差不多的。</p>
		<p>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/ChromeFirefox_EF0C/firefox-chrome_4.png">
						<img style="border: 0px none ;" alt="firefox-chrome" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/ChromeFirefox_EF0C/firefox-chrome_thumb_1.png" border="0" width="644" height="484" />
				</a>
		</p>
		<p>下面介绍简要操作步骤：</p>
		<p>
				<strong>1、Chrome主题风格 Chromifox</strong>是仿Chrome的主题，现处于实验版本阶段，因此下载安载需要以网站注册用户的身份登陆。下载地址为：<a title="https://addons.mozilla.org/en-US/firefox/addon/8782" href="https://addons.mozilla.org/en-US/firefox/addon/8782">https://addons.mozilla.org/en-US/firefox/addon/8782</a></p>
		<p>
				<strong>2、去除菜单栏 </strong>需要安装<strong>Compact Menu 2</strong>的插件，它可以定制原来的菜单栏为单个按钮或图标。下载地址为：<a title="https://addons.mozilla.org/en-US/firefox/addon/4550" href="https://addons.mozilla.org/en-US/firefox/addon/4550">https://addons.mozilla.org/en-US/firefox/addon/4550</a></p>
		<p>
				<strong>3、去除标题栏</strong> 这工作稍微有点儿麻烦，需要一个插件和一个脚本。Custom Buttons 2扩展提供创建，维护，导入，导出工具栏按钮的基础代码，也就是你可以用javascript代码写些特定用途的按钮。下载地址为：<a title="https://addons.mozilla.org/en-US/firefox/addon/5066" href="https://addons.mozilla.org/en-US/firefox/addon/5066">https://addons.mozilla.org/en-US/firefox/addon/5066</a>。安装完成后，再使用一个为隐藏标题栏而定制的脚本，地址为：<a title="http://custombuttons2.com/forum/viewtopic.php?f=35&amp;t=523" href="http://custombuttons2.com/forum/viewtopic.php?f=35&amp;t=523">http://custombuttons2.com/forum/viewtopic.php?f=35&amp;t=523</a>，点击其中的<a href="custombutton://%3C%3Fxml%20version%3D%221.0%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E2.0.7.4%3C/Cb2Ver%3E%0A%20%20%3Cname%3EToggle%20Chrome%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAWElEQVR4Xs3RQQqAMAxE0T+SK7bH0LPoMdpD1kVpJRJ0JfiWITBDIhqdcMbcGAoh0aARE7DwwhCFBAfeClDJxrSJae+pTxF/WjDX/JNLXt+seOneIcfvPgGTthCzF0BPtwAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20hideChrome%28%29%20%7B%0A%20%20if%20%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%7B%0A%20%20%20%20window.moveTo%280%2C0%29%3B%0A%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%20%20%20//%20preserve%20small%20area%20for%20taskbar%20to%20appear%0A%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight-2%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%20%20%20window.moveTo%280%2C0%29%3B%0A%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight%29%3B%0A%20%20%20%20window.maximize%28%29%3B%0A%20%20%7D%0A%7D%0A%0A//%20COMMENT%20OUT%20THE%20NEXT%20LINE%20TO%20START%20BROWSER%20NORMALLY%0AhideChrome%28%29%3B%0A%0Athis.leftclick%20%20%20%3D%20function%28evt%29%7B%0A%0A%20%20function%20showChrome%28%29%20%7B%0A%20%20%20%20if%20%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%7B%0A%20%20%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27false%27%29%3B%0A%20%20%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight%29%3B%0A%20%20%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight%29%3B%0A%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27false%27%29%3B%0A%20%20%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20toggleChrome%28%29%20%7B%0A%20%20%20%20var%20mainWindow%20%3D%20document.getElementById%28%22main-window%22%29%3B%0A%20%20%20%20var%20isFullScreen%20%3D%20mainWindow.getAttribute%28%27hidechrome%27%29%3B%0A%09%09%09%0A%20%20%20%20if%20%28isFullScreen%20%3D%3D%20%22%22%20%7C%7C%20isFullScreen%20%3D%3D%20%27false%27%29%20%7B%0A%20%20%20%20%20%20hideChrome%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20showChrome%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0AtoggleChrome%28%29%3B%0A%7D%0A%0Athis.setAttribute%28%27onclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%20//%20Calls%20the%20Global%20MouseClick%20handler%20gQuot%0A%0Athis.style.opacity%20%3D%20%27.65%27%3B%0Athis.setAttribute%28%27onmouseover%27%2C%20%27custombuttons.ButtonBrt%28event%29%3B%27%20%29%3B%0Athis.setAttribute%28%27onmouseout%27%2C%20%27custombuttons.ButtonDim%28event%29%3B%27%20%29%3B%0A%0Athis.setAttribute%28%22author%22%2C%27nicholas%27%29%3B%09%09%09%09%09%09%09%09//%20Stores%20Author.%0Athis.setAttribute%28%22version%22%2C%2720080306.00%27%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09//%20Stores%20Version.%0Athis.setAttribute%28%22homepage%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09//%20Stores%20Homepage.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22http%3A//custombuttons2.com/forum/viewtopic.php%3Ff%3D35%26t%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22523%22%29%3B%0Athis.setAttribute%28%22dependency%22%2C%27FF%202.0.*%2CCB%202.0.*%27%29%3B%09%09%09%09%09%09//%20Stores%20Dependency.%0Athis.setAttribute%28%">Toggle Chrome</a>链接和<a href="custombutton://%3C%3Fxml%20version%3D%221.0%22%20encoding%3D%22UTF-8%22%3F%3E%0A%3Ccustombutton%20xmlns%3Acb%3D%22http%3A//custombuttons2.com/%22%3E%0A%20%20%3CCb2Ver%3E2.0.7.6%3C/Cb2Ver%3E%0A%20%20%3Cname%3EToggle%20Chrome/Maximized%3C/name%3E%0A%20%20%3Cimage%3E%3C%21%5BCDATA%5Bdata%3Aimage/png%3Bbase64%2CiVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAQAAAC1+jfqAAAAWElEQVR4Xs3RQQqAMAxE0T+SK7bH0LPoMdpD1kVpJRJ0JfiWITBDIhqdcMbcGAoh0aARE7DwwhCFBAfeClDJxrSJae+pTxF/WjDX/JNLXt+seOneIcfvPgGTthCzF0BPtwAAAABJRU5ErkJggg%3D%3D%5D%5D%3E%3C/image%3E%0A%20%20%3Cmode%3E0%3C/mode%3E%0A%20%20%3Ccode%3E%3C%21%5BCDATA%5B/*Code*/%5D%5D%3E%3C/code%3E%0A%20%20%3Cinitcode%3E%3C%21%5BCDATA%5Bfunction%20hideChrome%28%29%20%7B%0A%20%20if%20%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%7B%0A%20%20%20%20window.moveTo%280%2C0%29%3B%0A%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%20%20%20//%20preserve%20small%20area%20for%20taskbar%20to%20appear%0A%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight-2%29%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27true%27%29%3B%0A%20%20%20%20window.moveTo%280%2C0%29%3B%0A%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight%29%3B%0A%20%20%20%20window.maximize%28%29%3B%0A%20%20%7D%0A%7D%0A%0A//%20COMMENT%20OUT%20THE%20NEXT%20LINE%20TO%20START%20BROWSER%20NORMALLY%0AhideChrome%28%29%3B%0A%0Athis.leftclick%20%20%20%3D%20function%28evt%29%7B%0A%0A%20%20function%20showChrome%28%29%20%7B%0A%20%20%20%20if%20%28navigator.platform%20%3D%3D%20%22Win32%22%29%20%7B%0A%20%20%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27false%27%29%3B%0A%20%20%20%20%20%20window.resizeTo%28screen.availWidth%2C%20screen.availHeight%29%3B%0A%20%20%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%20%20%20%20%20%0A%20%20%20%20%20%20document.getElementById%28%22main-window%22%29.setAttribute%28%27hidechrome%27%2C%27false%27%29%3B%0A%20%20%20%20%20%20window.maximize%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0A%20%20function%20toggleChrome%28%29%20%7B%0A%20%20%20%20var%20mainWindow%20%3D%20document.getElementById%28%22main-window%22%29%3B%0A%20%20%20%20var%20isFullScreen%20%3D%20mainWindow.getAttribute%28%27hidechrome%27%29%3B%0A%09%09%09%0A%20%20%20%20if%20%28isFullScreen%20%3D%3D%20%22%22%20%7C%7C%20isFullScreen%20%3D%3D%20%27false%27%29%20%7B%0A%20%20%20%20%20%20hideChrome%28%29%3B%0A%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20showChrome%28%29%3B%0A%20%20%20%20%7D%0A%20%20%7D%0A%0AtoggleChrome%28%29%3B%0A%7D%0A%0Athis.setAttribute%28%27onclick%27%2C%20%27gQuot%28event%2C%20this%29%27%29%3B%20//%20Calls%20the%20Global%20MouseClick%20handler%20gQuot%0A%0Athis.style.opacity%20%3D%20%27.65%27%3B%0Athis.setAttribute%28%27onmouseover%27%2C%20%27custombuttons.ButtonBrt%28event%29%3B%27%20%29%3B%0Athis.setAttribute%28%27onmouseout%27%2C%20%27custombuttons.ButtonDim%28event%29%3B%27%20%29%3B%0A%0Athis.setAttribute%28%22author%22%2C%27nicholas%27%29%3B%09%09%09%09%09%09%09%09//%20Stores%20Author.%0Athis.setAttribute%28%22version%22%2C%2720080622.00%27%29%3B%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09//%20Stores%20Version.%0Athis.setAttribute%28%22homepage%22%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%09%09%09//%20Stores%20Homepage.%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22http%3A//custombuttons2.com/forum/viewtopic.php%3Ff%3D35%26t%3D%22%20+%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22523%22%29%3B%0Athis.setAttribute%28%22dependency%22%2C%27FF%202.0.*%2CCB%202.0.*%27%29%3B%09%09%09%09%09%09//%20Stores%20Dependency.%0Athis.setAttribute%28%22status%22%2C%27Complete%27%29%3B%09%09%09%09%09%09%09%09//%20Stores%20Devstatus.%0Athis.setAtt">Toggle Chrome/Maximized</a>，即可安装。</p>
		<p>
				<strong>4、隐藏状态栏 </strong>无需任何插件，只需菜单栏的“查看”中的“状态栏”不要勾选上即可。</p>
		<p>
				<strong>5、快速拨号 Speed Dial</strong>和<strong>Fast Dial</strong>这两个插件均能提供，我现使用Speed Dial，地址为<a title="https://addons.mozilla.org/en-US/firefox/addon/4810" href="https://addons.mozilla.org/en-US/firefox/addon/4810">https://addons.mozilla.org/en-US/firefox/addon/4810</a>，另Fast Dial的地址为<a title="https://addons.mozilla.org/en-US/firefox/addon/5721" href="https://addons.mozilla.org/en-US/firefox/addon/5721">https://addons.mozilla.org/en-US/firefox/addon/5721</a>。</p>
		<p>其他诸如隐身模式、下载状态栏、将网站转换为独立的应用程序都可实现，具体可参见：<a title="http://www.cnbeta.com/articles/64031.htm" href="http://www.cnbeta.com/articles/64031.htm">http://www.cnbeta.com/articles/64031.htm</a></p>
		<h3>
		</h3>
		<h3>我的扩展列表</h3>
		<p>附带我在用的一些有用的插件功能，对于一般的用户来讲，这些功能也会大大节省你的时间，提高你上网浏览的体验。这些可能是最基本的，高级的要随你自己，你的地盘，你做主。</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/1419">IE Tab</a> 有些网站不支持非IE内核的怎么办，先不要有抱怨，有了它让你自由切换到IE的内核，但是外部功能不会减少，必备</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/6366">FireGestures</a> 鼠标手势，我是从Maxthon转过来的，这个功能太好用了。这个插件更强大，可以Tab，按键，滚轮上都可应用</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/6639">Easy Dragtogo</a> 类似于鼠标手势，有些超链接只要一拖，就可按设置在新tab或在另一tab打开，不需要再用右键了。我对FireGestures还不熟，不知道这功能是否可用FireGestures代替,这功能现在还需要</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/220">Flashgot</a> 文件下载管理，我用于管理flashget工具，内置支持许多下载工具</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/1865">Adblock</a> 没有广告的世界真清静，虽然Firefox自身的拦截能力己经很强了，但是它提供更强大的定制能力，一切由你自己定</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/722">Noscript</a> 提高浏览安全，可禁止一些恶意的脚本，可用效对付一些XSS跨站攻击等</p>
		<p>
				<a href="https://addons.mozilla.org/en-US/firefox/addon/2464">FoxyProxy</a> 如果你需要时常在代理服务器上进行切换的话，这非常用帮助。如果结合像Tor之类的工具，那么爬墙也不是件困难的事了。</p>
<img src ="http://www.cppblog.com/len/aggbug/61239.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-09-07 18:45 <a href="http://www.cppblog.com/len/archive/2008/09/07/61239.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开发Windows Live Writer插件小记</title><link>http://www.cppblog.com/len/archive/2008/07/05/55423.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Sat, 05 Jul 2008 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/07/05/55423.html</guid><wfw:comment>http://www.cppblog.com/len/comments/55423.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/07/05/55423.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/55423.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/55423.html</trackback:ping><description><![CDATA[<p>Windows Live Writer是写博客的利器,非常好用。只是对一些常见的html标签支持不足，比如没有预排文本标签&lt;pre&gt;之类的。在插入示例代码时，我不喜欢使用网上的那些高亮插件，它们增加了一些我感觉不友好的标签元素。我在写文章时，代码放在&lt;pre&gt;标签，然后使用自定义的code类，如果是一些屏幕输入输入文本，会用一个console类来进行说明。如果直接从源代码拷贝文本至html源文件时，xml文件的的&lt;&gt;&quot;之类标签需要进行转义才可以。在这之前，我都需要手工将WLW切换到HTML模式进行创作，然后修改这些标签，非常麻烦。这样干了几次后，昨天决定自己写个WLW插件用。在搜索引擎的帮助下，找到Dflying Chen的 <a href="http://www.cnblogs.com/dflying/archive/2006/12/03/580602.html">为Windows Live Writer开发插件&#8212;&#8212;InsertSearchPageLink</a>这篇文章，并在其参照完成了插件编写。</p>  <p>但在找到这篇文章之前，和编写插件的过程中，还是费了很多功夫。最早我认为写插件是需要下载SDK之类的软件，所以在<a href="http://dev.live.com/writer/">Live Writer官方开发网站</a>，Live Writer网，MSDN之类的找了个遍，看见是有SDK之类字样的下载，但弄不下来只有文档，根本不见其什么头文件，DLL之类的。在这花费了很多时间，最后才发现WLW插件的SDK是随WLW一起分发了，也就是WindowsLive.Writer.Api.dll之类的，这些dll 都随WLW主程序在一个目录中。还有一点是，现在WLW在中国是随Live套件一起发布的，因此路径由原来的C:\Program Files\Windows Live Writer变成了C:\Program Files\Windows Live\Writer，插件目录为Plugin。如果在网上发现有好用的插件，只需要将其发布的插件dll扔到这个目录就行了。</p>  <p>在开发中碰到图标资源不能成功加载，在Dflying Chen的文章中特意提到了图标资源需要是嵌入形式，我也按照其操作的，总以为是这里出现问题。后来花了一些时间，才找到总是的根源：自己在开发中更改了工程名，导致最后生成的程序集的名称与后来的命名空间名称不一致，图标路径就出错了。C#也只是这次用一下，这些都没有接触到。</p>  <p>昨天弄完自己的&#8220;插入Pre标记&#8221;插件后，想到自己写博客常需要截图，遂想再开发一个截图工具的。最早搜到了别人调用SnagIt搜件，不好用，因为SnagIt是商业软件，需要注册的。后来找到了<a href="http://eng.wiziple.net/">picpick</a>，小巧免费，非常实用。我想调用picpick的，但是在参照Insert SnagIt Screen Capture发现是用COM接口，而无奈picpick没有这样供开发使用的接口考虑，最终不可行。后来经过一些其他的尝试，都告失败。最后还是搜索帮了忙，找到了<a href="http://livesino.net/archives/879.live">Screen Capture</a>这个插件，原来有别人已完工了。</p>  <p>最后附上，我用这个新插件截的图，非常好用，只需一步：</p>  <p><a href="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/WindowsLiveWriter_124A7/tmp196_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="238" alt="tmp196" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/WindowsLiveWriter_124A7/tmp196_thumb.png" width="202" border="0" /></a></p><img src ="http://www.cppblog.com/len/aggbug/55423.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-07-05 21:43 <a href="http://www.cppblog.com/len/archive/2008/07/05/55423.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Cygwin，以及远程登陆Linux桌面</title><link>http://www.cppblog.com/len/archive/2008/07/03/55234.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Thu, 03 Jul 2008 13:55:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/07/03/55234.html</guid><wfw:comment>http://www.cppblog.com/len/comments/55234.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/07/03/55234.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/55234.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/55234.html</trackback:ping><description><![CDATA[<h3>安装Cygwin</h3>  <p>在<a href="http://www.cygwin.com/">cgywin官方主页</a>下载安装文件<a href="http://www.cygwin.com/setup.exe">setup.exe</a>,这只是一个网络安装包，体积很小。cgywin包含了许多GNU下的应用程序，真正安装时会根据你选择的组件，会自动去网上下载安装的。在国内最好使用镜像服务，这样速度会提高很多，建议去<a title="http://www.cygwin.net.cn/" href="http://www.cygwin.net.cn/">http://www.cygwin.net.cn/</a>或<a title="http://www.cygwin.cn/" href="http://www.cygwin.cn/">http://www.cygwin.cn/</a>下载上述的安装包，并在安装进行到Choose A Download Site这个步骤时，选择合理的镜像。由于中国南北网速的差异，上述两个地址都尝试一下，看看哪个对你而言速度更快一些。</p>  <p>在进行到Select Packages这个步骤时，选择你需要包，建议如下：</p>  <ul>   <li>Shells -&gt; rxvt-unicode-x&#160; 强大的X终端，可用它替换windows下的cmd.exe </li>    <li>Net-&gt; openssh&#160; ssh客户端，可作putty的替换 </li>    <li>Net-&gt; inetutils&#160; 可选，包含一些基本的网络工具，如telnet，否则在cygwin下无法使用windows的telnet </li> </ul>  <p>cygwin安装时会自动进行包关联，在安装rxvt时，已自动将X server安装上了。</p>  <h3>配置调整</h3>  <p>启动cygwin,实际上是运行cgywin.bat批处理，它又调用了cmd.exe。我们将安装的rxvt作为默认终端，需要修改cygwin.bat。下面是我机子上的配置修改，请对应修改相应的路径。</p>  <pre class="code">@echo off
d:
chdir d:\Cygwin\bin
rxvt -e bash --login -i</pre>

<p>调整rxvt观感，需要修改你用户主目录下的.Xdefaults文件，此文件在你选择的安装目录下的home\usrname下，在我的机子上是<tt>D:\Cgywin\home\len。若不存在，可在此目录下新建一个，修改内容如下：</tt></p>

<pre class="code">Rxvt*background:        black
Rxvt*foreground:        #E2E6C7 
Rxvt*font:              9x16 
Rxvt*boldFont:          9x16 
Rxvt*scrollBar_right:   True
Rxvt*saveLines:         1024
Rxvt*geometry:          80x30
Rxvt*color0:            black
Rxvt*color1:            red
Rxvt*color2:            green   
Rxvt*color3:            yellow
Rxvt*color4:            blue
Rxvt*color5:            magenta
Rxvt*color6:            cyan    
Rxvt*color7:            white   
Rxvt*color8:            burlywood1
Rxvt*color9:            sienna1 
Rxvt*color10:           PaleVioletRed1  
Rxvt*color11:           LightSkyBlue    
Rxvt*color12:           white   
Rxvt*color13:           white
Rxvt*color14:           white   
Rxvt*color15:           white </pre>

<p>在cygwin下也是可以访问Windows下其他盘符的,如<tt>cd /cygdrive/c/windows</tt>，就转到了C盘windows目录下。这样对于在linux下工作的人说有点儿别扭，更希望是以<tt>cd /mnt/c/windows</tt>的mount方式来访问其他盘符。这需要修改注册表的选项，将<tt>HKLM\software\Cygnus Solutions\Cgywin\mounts v2</tt>下的子项<tt>cygdrive prefix</tt>更改为<tt>/mnt</tt>即可。</p>

<h3>远程登陆Linux桌面</h3>

<p>其实这里介绍的不仅仅适用于Linux，而是针对X Window的。X Widonw的介绍不进行赘述，但需要明确其中的服务器端和客户端的区别，在X Window的概念中服务器端是指你进行显示，输入输出的机器，也是接下来示例中的本机len-computer,IP为10.3.164.70，而客户端指的是进行远程登陆的机器auto-desktop,IP为10.3.164.74。</p>

<p>在局域网内最简单的方法是使用XDMCP连接，这时远程的机器启用xdmcp。那台机器运行着ubuntu-8.04，用gdm进行窗口管理，编辑/etc/gdm/gdm.conf-custom如下，其他版本的linux需找到对应的窗口管理的配置文件。</p>

<pre class="code">[security]
DisallowTCP=false

[xdmcp]
Enale=true</pre>

<p>修改完后，在远程机器上重启服务，<tt>$sudo /etc/init.d/gdm restart。</tt>接下来本机启动cgywin，转到X目录下，运行Xwin.exe，使用 -query指定远程的linux机器的ip即可。</p>

<pre class="console">Len@len-computer /usr/X11R6/bin
$ cd /usr/X11R6/bin

Len@len-computer /usr/X11R6/bin
$ Xwin -query 10.3.164.74</pre>

<p>这里会出现如下面图示的窗口，提示输入用户名和密码。另再附一张在登陆成功后，我在本地执行远程操作的截图。</p>

<p><a href="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/login_4.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="465" alt="login" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/login_thumb_1.png" width="644" border="0" /></a> </p>

<p><a href="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/cygwinX_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="cygwinX" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/cygwinX_thumb.png" width="644" border="0" /></a> </p>

<p>如果你需要连接的远程机器比较固定，可以修改本地机器<tt>d:\cgygin\usrX11R6\bin\startxdmcp.bat</tt>中的<tt>REMOTE_HOST</tt>值为你需要连接机器的IP，这个批处理设置了一些有用的环境变量值。或许你需要创建一个桌面的快键方式，这样每次点击，就直接连接到远程机器了。</p>

<h3>不引入桌面环境</h3>

<p>可能有时候只需要将某个需要X服务的远程应用程序引入到本地桌面显示，而不需要启动像上面的GNOME或者KDE等庞大的桌面环境。这样做比较适合喜欢终端操作的人，我就常常终端敲命令，然后将gvim,openoffice这些从远程导入到本地操作。</p>

<p>找到d:\cgywin\usr\X11R6\bin\startwin.bat，将<tt>%RUN% xterm -e /usr/bin/bash -l</tt>注释掉，因为我们己经有了rxvt,不需要一个新的xterm终端了，执行该批处理文件，就会在本机运行X server。启动cgywin，用ssh登陆到远程机器上，执行如下命令，导出DISPLAY环境变量和运行你感兴趣的程序。</p>

<pre class="console">auto@Auto-desktop:~$ export DISPLAY=10.3.164.70:0.0
auto@Auto-desktop:~$ gvim&amp;
[1] 22652
auto@Auto-desktop:~$ oowriter&amp;</pre>

<p>其中环境变量DISPLAY中的:0.0部分表示X server的display和screen。display指运行着X server实例。如果使用TCP/IP连接，表示的是端口6000+display号做为连接。screen代表X server上的不同输出设备。我在例子中执行gvim和openoffice.org-writer，运行的效果可看下面的截图。在ubuntu上运行着的gvim和openoffice都在我本机10.3.164.70上显示了，并且可操作。</p>

<p><a href="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/screen_2.png"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="484" alt="screen" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/CygwinLinux_127B5/screen_thumb.png" width="644" border="0" /></a> </p>

<h3>有用的链接</h3>

<p><a href="http://x.cygwin.com/docs/faq/cygwin-x-faq.html">Cgywin/X FAQ</a> 在碰到一些操作问题时，不妨先看看这份FAQ</p>

<p><a href="http://blog.csdn.net/easwy/archive/2007/09/30/1807725.aspx">使用cygwin X server实现Linux远程桌面</a> easwy介绍了KDE环境下的配置，部分受此启发</p>

<p><a href="http://blog.csdn.net/easwy/archive/2007/10/05/1812242.aspx">使用rxvt做为cygwin终端</a> 碰到rxvt中文显示问题时，或许有帮助</p><img src ="http://www.cppblog.com/len/aggbug/55234.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-07-03 21:55 <a href="http://www.cppblog.com/len/archive/2008/07/03/55234.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>好用的Subversion属性功能</title><link>http://www.cppblog.com/len/archive/2008/06/30/54948.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Mon, 30 Jun 2008 04:06:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/06/30/54948.html</guid><wfw:comment>http://www.cppblog.com/len/comments/54948.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/06/30/54948.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/54948.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/54948.html</trackback:ping><description><![CDATA[<p>Subversion的属性是非常好用的功能,它将一些工作自动化，实现为受版本控制的源文件添加元信息的作用。属性是外部不可见的，可以简单认为是附加上在文件上的信息，和文件大小之类的信息是一样的，只不过他是通过subversion来管理的。属性的名称和值可以是你希望的任何值，限制就是名称必须是可读的文本，并且最好的一点是这些属性也是版本化的，就像你的文本文件内容，你可以像提交文本修改一样修改、提交和恢复属性修改，当你更新时也会接收到别人的属性修改&#8212;你不必为适应属性改变你的工作流程。</p>  <p>Subversion保留了一组名称以<code>svn:</code>开头的属性，来预定义一些有用的功能。比如你常会看到一些人的源代码底部有像下面之类标识的文字：</p>  <pre class="code">$Id: main_window.py 68 2008-06-30 02:05:05Z Len $</pre>

<p>这就使用了Subversion 中的 svn:keywords的自动属性，它让将发生在源代码中的一些属性的变化自动地更新到源代码中。这行字的意思是表示，main_windows.py 这个源代码文件最后被用户 len 更新于 2008-6-30 02:05:05Z，修订版本号为 68。要实现这样的自动更新，你只要对需要这样属性的文件上使用下面这行指令。 </p>

<pre class="console">&gt; svn propset svn:keywords &quot;Id&quot; main_window.py</pre>

<p>或者使用TortoiseSVN中的Properties的操作按钮，方便地增加新的属性。接着需要在源代码文件中需要 Subversion 进行自动更新的地方插入 $Id$ 这样的 Keyword，那么在你下次进行提交更新时，该<code>$Id$</code> 就会被 Subversion 自动替换为<code>$Id: main_window.py 68 2008-06-30 02:05:05Z Len $</code> 这样的格式。 

  <br />Subversion 中可以使用的Keyword 包括下面这些：</p>

<ul>
  <li>Id 
    <br />上面介绍过的综合的格式 </li>

  <li>LastChangedDate 
    <br />最后被修改的时间，缩写为 Date。 </li>

  <li>LastChangedBy 
    <br />最后修改该源代码文件的用户名，缩写为 Author。 </li>

  <li>LastChangedRevision 
    <br />最后修订的版本号，缩写为 Revision。 </li>
</ul>

<p>如果想每次向Subversion服务器提交文件修改时，都要设置文件的属性，则需要进行Subversion配置的修改。配置文件在你用户的主目录下，在Windows下应类似于<code>C:\Documents and Settings\Len\Application Data\Subversion\config</code>文件，Len是Windows用户名，注意Application Data是隐藏文件夹，需要显示全部文件才能看到。接着如下相应的修改，对你想要处理的文件做配置。</p>

<pre class="code">enable-auto-props = yes   
[auto-props]   
*.c = svn:keywords=Id   
*.py = svn:keywords=Id </pre>

<p>对于开源项目，常见其源文件头部有着版权声明的文本，这些操作大多也是通Subversion的属性功能来完成的，有关更详细的介绍和操作指南，可参见<a href="http://www.subversion.org.cn/svnbook/1.4/index.html">Subversion中文手册</a>中的<a href="http://www.subversion.org.cn/svnbook/1.4/svn.advanced.props.html">属性</a>章节。</p><img src ="http://www.cppblog.com/len/aggbug/54948.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-06-30 12:06 <a href="http://www.cppblog.com/len/archive/2008/06/30/54948.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Xmanager远程连接ubuntu</title><link>http://www.cppblog.com/len/archive/2008/06/01/51839.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Sun, 01 Jun 2008 13:10:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/06/01/51839.html</guid><wfw:comment>http://www.cppblog.com/len/comments/51839.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/06/01/51839.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/51839.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/51839.html</trackback:ping><description><![CDATA[
		<p>涉及到软件：Xmanager 1.3.9 / Windows xp, ubuntu hardy </p>
		<p>第一步，在ubuntu机器上配置好gdm,修改/etc/gdm/gdm.conf-custom,对照添加如下内容：</p>
		<pre class="code">
[security]
DisallowTCP=false
[xdmcp]
Enable=true
</pre>
		<p>第二步，性能调优。这步非常关键，不然使用Xmanager登陆速度非常慢，且会报错，主要原因是gnome使用Esound进行声音数据的传送，需要使用TCP 16001端口。所以我建设在ubuntu关掉混音选项。<br />系统-首选项-音效-音效,将“允许软件混音”不要勾选上，<br />系统-首选项-字体-字体渲染,选择"单色",在“细节”的“字体渲染细节”中的平滑和微调选项，都选择"无"。 
</p>
		<p>有用的参考：<a href="http://www.netsarang.com/products/xmg_faq.html" target="_blank">http://www.netsarang.com/products/xmg_faq.html</a></p>
<img src ="http://www.cppblog.com/len/aggbug/51839.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-06-01 21:10 <a href="http://www.cppblog.com/len/archive/2008/06/01/51839.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>可爱的Vim</title><link>http://www.cppblog.com/len/archive/2008/05/25/51065.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Sun, 25 May 2008 12:19:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/05/25/51065.html</guid><wfw:comment>http://www.cppblog.com/len/comments/51065.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/05/25/51065.html#Feedback</comments><slash:comments>12</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/51065.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/51065.html</trackback:ping><description><![CDATA[
		<p>Vim是功能强大的文本编辑器,但是每个工具都有其针对的适用群体。如果你只是偶尔做些文本编辑工作的话，那灵活而又显得繁琐的设置，以及特别的操作方式可能不适合你。但是你是跟我一样，是个平平凡凡的程序员，每天要花费大量时间在写代码,把弄着各式各样的程序语言:C\C++,Python,Tcl,Html,Xml,...，那么你可能需要像Vim这样的工具，即使你要在它上面花费些时间去熟悉和适应它。 </p>
		<p>先讲述一下，我跟Vim相处的过程，这是个从认识，到抛弃，到再认识，到再学习，到喜欢的过程。最早接触到Vim是在Solaris上，需要修改编辑一些配置文件，看着其他工程师们手指随意地在键盘上敲击，就完成内容的修改，根本没有动用到什么鼠标，那是好生羡慕。严格意义来说，那时候碰到还不是Vim，只是VI而已。在终端上工作，没有什么Notepad之类的程序，只好把指令抄在纸上，查查网上的资料，学会了h,j,k,l,w,q,e,这几个简单指类来进行简单的文本查看工作，仅此而己。后来在Windows上安装了VIM，但是挣腾了几下，没有适应过来，也就只好使用UltraEdit了。UltraEdit对一般的纯文本，按Windows习惯来说是蛮好使的。再后来，玩了会儿ruby，又装起了Vim，但是那时候的对Vim的使用也只是限于上面的简单的指令，再加上Vim的插件，来完成语法高亮，ruby中的MVC文件的方便跳转而已，还是没有习惯Vim，有时候还是不经意用UltraEdit来打开查看编辑文件。直到最近，需要编写Docbook，以及用Python，才真正花费了大量时间来学习使用Vim，才真正认识到到它的可爱。 </p>
		<p>接着说说，我为什么使用Vim，觉得值得学习它，喜欢它的理由吧，纯粹以自己的观点来叙述。 </p>
		<p> <strong>跨平台性</strong>，无论在Windows，Linux,Solaris,FreeBSD等等操作系统上，以及一些名都没有听过的系统上，你都可以找到它。这样就保证了你的学习投资的保值性，就拿UltraEdit做对比吧，即使你在UltraEdit上学会灵活运用许多功能，到了Linux上，你在这部分学习投资就没有价值了，你可能需要找其他称手的编辑器，然后再进行学习一些功能。特别在一些古老的大型机上的系统上，即使没有Vim，一般来说，还有Vi的，这样一般简单的操作命令还是可复用的。如果你确定你一直只呆在Windows上可忽略这一点。 </p>
		<p>
				<strong>开源免费</strong>,Vim是开源软件，意味着你可以自由使用，修改，查看它的代码。我对FreeSoftware,Open Source,Copyright，这些都是持中间立场的。对于自由查看，修改程序代的保证，有总比没有好。对于盗版软件，你有能力还是不要使用的好。正是这一特性，也是促使我放弃UE,投向Vim的重要原因。如果你对于使用盗版软件蛮不在乎，或你有财力购买正版软件，也可忽视这一条。 </p>
		<p>
				<strong>支持多种编程语言</strong>，Vim是程序员的编辑器，当然对程序员是非常友好的。它对C,C++,Python,Perl,Tcl,Ruby,PHP等等，以及一大堆我没有听过见过的语言，以语法着色，代码缩进等基本支持，还有一些其他特性。比如，我在编辑XML时，它能提供自动封闭标记的支持。因此如果你有对多种格式的文本编辑需要，那么你就有了一个编辑的大平台，不需用再装一大堆针对某个格式特定的编辑器了。正如跨平台性一样，你只要一次投资，多次回报。如果你专注于某一格式文件的工作，那这一点同样对于你来说是没有用的。 </p>
		<p>
				<strong>高效地编辑</strong>，Vim的操作方式相对于Windows上呆久了的人来说，是蛮奇特的，这一点我深有体会。但是正如很多人讲的那样，你掌握了其操作后，发现它会大大增进你的编辑速度。你的双手根本不用离开键盘，就完成了许多事情，可以让鼠标歇会儿了。如果你特别钟爱鼠标，或只偶尔打打字，那么我说的这点，同样对你没有用。 </p>
		<p>
				<strong>灵活的设置</strong>，Vvim可自定义的地方太多了，你可以自定义键盘映射，语法着色，缩进，格式等等。所以你在网上可以看到许多人贴着自己的vimrc配置文件，配置着自己喜欢的作业环境。如果你需要开盒即用的工具，那么这点对你的吸引力就不大了。 </p>
		<h4>安装</h4>
		<p>可到<a href="http://www.vim.org/download.php#pc" target="_blank">VIM官网</a>，选择Self-install executable形式的安装包下载安装。 </p>
		<h4>帮助</h4>
		<p>帮助非常重要，VIM带有我认为非常好的帮助系统，可以获取你需要的任何有关VIM的详细信息。使用帮助非常简单,只需要:help安装即可。安装后程序带的是英文帮助，如果你对英文不是特别适应的话，可以去<a href="http://vimcdoc.sourceforge.net/">http://vimcdoc.sourceforge.net/</a>下载安装中文帮助，或像我一样直接使用在线的中文帮助<br /><a href="http://vimcdoc.sourceforge.net/doc/help.html">http://vimcdoc.sourceforge.net/doc/help.html</a>。强烈推荐你好好阅读下这一手册，然后完成其中的30分钟教程，这些内容在"初步知识"中。这比你在网上狂搜相关的教程要好得多。再次啰嗦一次，Vim的帮助非常强大，教程也非常好,是你碰到问题时的第一选择。 </p>
		<h4>操作方法</h4>
		<p>对于基本操作方法，通过Vim的教程，你应该能很好的掌握了。一些常见的设置，关于特定类型的配置，因人而异，不想多述。我会列出一些认为比较好的参考文章，置于文尾供参考。但在下面，我还是在Windows下的Vim的使用做点说明，或许你现在用不上。 </p>
		<h4>Vim文件夹结构</h4>
		<p>安装完Vim后，你在其安装目录下应有vim$ver($ver是版本号)和vimfiles两个文件夹。其中vim$ver是vim的程序运行时目录,在里面会看到gvim.exe(vim的GUI),vim.exe,xxd.exe等程序，一大堆的dll动态链接库,还有就是color(语法着色),doc(帮助说明),indent(缩进)等文件夹。在vimfiles内，也会看到color,doc,indent等类似的文件夹，但它们里面没有文件。vim$ver和vimfiles两者有什么区别呢，vim$ver是运行时文件目录，vimfiles相当于个人配置目录，常常有文章说在linux下将什么插件放进.vim下的plugin等等之类的，其.vim在windows下就相当于vimfiles。 </p>
		<h4>标签页</h4>
		<p>Tabpage是Vim后增的功能，类似于UltraEdit的标签页。也想在Windows下使用Untraledit一样，在同一个VIM实例中打开多个文件的话，需要做些小修改。在注册表中删除"HKCR\*\shellex\ContextMenuHandlers\gvim\"主键，然后在Shell下新项"Vim 编辑",再在其下新建command项,然后修改其值为$vimruntime\gvim.exe -p --remote-tab-silent "%1"，其中$vimruntime修改为你系统中VIM实际运行目录。如果你不知道$vimruntime的值，可以打开gvim，输入:echo $vimruntime。你想双击关联文件，也在同一实例打开的话，查找注册表中gvim相关项，将$vimruntime\gvim.exe改为上述的值即可,主要是HKLM\software\classes\application\gvim.exe\shell\edit\command下的值。 </p>
		<h4>文件编码</h4>
		<p>具体可参见"<a href="http://www.ibm.com/developerworks/cn/linux/l-tip-vim1/" target="_blank">Vim实用技术:实用技巧</a>"。我推荐内部编码使用utf-8，以支持国际化，即encoding=utf-8。这需要在_vimrc中进行设置，网上常有人启用这一选项后Vim菜单和消息出现乱码。据我的经验，需要将这encoding=utf-8写在_vimrc最开头，然后设置language message,可参见我的_vimrc文件。 </p>
		<h4>vimrc文件</h4>
		<p>Vim使用中，配置文件vimrc是非常重要的，用:echo $myvimrc，来查看你的vimrc在哪里。<br />如果这为空的话，你可以在$vim目录，建一新的_vimrc文件。<br /><strong>我的vimrc文件<br /></strong></p>
		<pre>set encoding=utf-8
set termencoding=gbk
set nocompatible          " We're running Vim
set nobackup		"We don't need the backup file
set showmatch		"Show where the bracket match
set showcmd
set ruler		"Show the line and column number 
set hlsearch		"Highlight the search key
set backspace=indent,eol,start
set fileencodings=ucs-bom,utf-8,chinese
set guifont=courier_new:h10
set autoindent
syntax on           " Enable syntax highlighting
filetype plugin indent on " Enable filetype-specific indenting and plugins
language message zh_CN.utf-8 " Use chinese message
color zellner		" Color theme</pre>
		<p>其中termencoding=gbk是因为windows中的“命令提示符”窗口只能使用gbk编码，不能像Gnome中的Console那样用utf-8。不设置的情况下，使用“命令提示符”下的vim，而不是gvim时，会出乱码。在设置文件中的色彩和字体，可以先在gvim菜单中设置，然后将你所喜好的，添加到_vimrc文件中。看到我的vimrc文件，你是不是感觉特别短。因为我把许多跟文件类型的相关设置放在其对应的脚本里，扔在vimfiles文件夹了。在vimrc里，例如常见的空格，制表符，缩进都没有在这配置。 </p>
		<h4>杂项</h4>
		<p>Vim中一些内置的变量，你都可以通过:echo varname来查看值，比如：:echo $myvimrc<br />这些变量，注意大小写，常用的有<br />$VIM Vim的安装目录<br />$vimruntime Vim运行时目录<br />$myvimrc 用户的_vimrc文件<br />$home 用户的主目录<br />我常常使用:e $myvimrc来编辑我的vimrc文件，非常方便。 </p>
		<p>对一些带值的配置选项，你可以用:set optionname来查看其当前值，或用:set optionname=val来更改其值.比如:set fileformat查看文件格式，因为dos,unix,mac对于换行是不一样的。:set filemat=unix的话，换行将用LF，而不是dox\windows下的CR,LF。</p>
		<p>
		</p>
		<h4>参考链接</h4>
		<p>IBM开发中心非常实在的Vim实用技术系列：<br /><a href="http://www.ibm.com/developerworks/cn/linux/l-tip-vim1/" target="_blank">Vim实用技术(1)-实用技巧</a><br /><a href="http://www.ibm.com/developerworks/cn/linux/l-tip-vim2/" target="_blank">Vim实用技术(2)-常用插件</a><br /><a href="http://www.ibm.com/developerworks/cn/linux/l-tip-vim3/" target="_blank">Vim实用技术(3)-定制Vim</a></p>
		<p>Easwy的博客，里面有用的信息，更多的Vim资源链接<br /><a href="http://blog.csdn.net/easwy/category/234641.aspx" target="_blank">Vim专栏</a></p>
<img src ="http://www.cppblog.com/len/aggbug/51065.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-05-25 20:19 <a href="http://www.cppblog.com/len/archive/2008/05/25/51065.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>小Q和小A的故事之EFS加密</title><link>http://www.cppblog.com/len/archive/2008/03/16/44609.html</link><dc:creator>len</dc:creator><author>len</author><pubDate>Sun, 16 Mar 2008 07:37:00 GMT</pubDate><guid>http://www.cppblog.com/len/archive/2008/03/16/44609.html</guid><wfw:comment>http://www.cppblog.com/len/comments/44609.html</wfw:comment><comments>http://www.cppblog.com/len/archive/2008/03/16/44609.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/len/comments/commentRss/44609.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/len/services/trackbacks/44609.html</trackback:ping><description><![CDATA[
		<p>自从去年底娱乐圈曝出了"艳照门"事件后, 小Q就开始注意自己的私密文件了,在网上google加密软件,想把那些珍藏的AV小电影和情感小日记加密起来,防止一个不小心被人公布.网上的私人出品的小加密软件不敢用,怕被别人留了后门,至于安全性也没有保证.后在网上经高手指点,使用WinRAR软件的加密功能,把一个个文件压缩成包,并设置了密码.这东西倒是简单,但是小Q常常需要回顾一下这些小电影,以解单身之苦,偶尔又写下日记.这样一来,常常就需要输入密码,解压,解渴,压缩,麻烦又耗时，且WinRAR密码又不能太简单，不然有被暴力破解的可能．</p>
		<p>小Q又在忙活了，凑巧被密友小A看到，将情况如实向小A说了．小A是个计算机迷，知道小Q需求后，立即问到：你怎么不用Windows自带的EFS加密呀?</p>
		<p>小Q:什么是EFS加密呀?</p>
		<p>小A:EFS阿，就是Encryption File System,反正跟你说英语也不清楚，就是加密文件系统，是Windows 2000开始所特有的一个实用功能，对于NTFS卷上的文件和数据，都可以直接被操作系统加密保存．EFS加密是基于公钥策略的,安全的很.</p>
		<p>小A就是这样喜欢卖弄一下英语和专业词汇,这样才显得水平高.</p>
		<p>小Q:那你说的公钥策略是什么呀?</p>
		<p>小A:公钥要这可要从加密领域说起.就拿你用WinRAR加密文件来说吧,WinRAR是使用DES对称加密算法,也就是加解密都是用同一个密码.还再教你个新词,搞计算机的人,密码不叫密码,要说成<strong>密钥</strong>,相当于开锁的钥匙,这样才显得X.而公钥策略呢,加解密不是用同一密码,一般加密的叫<strong>公钥</strong>,解密的叫<strong>私钥</strong>.</p>
		<p>小Q:阿,弄得这么麻烦呀,那我给文件加个密后,输入密码后,怎么知道私钥是什么呀?</p>
		<p>小A:这个EFS加密呀,不用你输入密码.它在加密时,会自动为你生成公钥和私钥,公钥和私钥的长度很长.打个比方,如果你平时用到密码很长很复杂,你会怎么办呢?是不是把密码抄在本子什么的,然后用到的时候拿出来看呀.这公钥和密钥的信息就跟所谓的<strong>证书</strong>绑定在一起了,也就相当于小本子.</p>
		<p>小Q:阿,私钥自动生成放在电脑里,那不是相当于还是没有加过密,不安全呀?</p>
		<p>小A:私钥是放在你的硬盘上,但是windows用你的帐户信息为依据又加了层密．如果你能用你的用户帐号登陆系统，也就完成了验证工作．如果你用另外个帐号登陆的话，那些EFS加密过的文件，就无权获取了．即使你不通过windwos系统，获得了存储密钥的物理空间，也是无法进行解密的．这样才显得安全．</p>
		<p>小Q:你说得这些，我也不是怎么懂，就说说怎么用这个EFS吧．</p>
		<p>小A:好的．这个EFS呀，正如我上面所说的，要在Windows2000以上的系统才可以，还有一点，这样高级的功能，家庭版(windows xp home, windows vista home)可用不了．右击你需要加密的文件和文件夹，选择＂属性＂，然后点击＂属性＂对话框的＂高级...＂,在＂高级属性＂中勾选上＂加密内容以便保护数据＂即可．如果不想加密了的话，去掉勾选即可．</p>
		<p>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p1_2.jpg">
						<img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="234" alt="p1" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p1_thumb.jpg" width="304" border="0" />
				</a>  <a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p2_2.jpg"><img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="234" alt="p2" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p2_thumb.jpg" width="331" border="0" /></a></p>
		<p>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p2_2.jpg">
				</a> </p>
		<p>小Q:好了，这么简单，学会了．</p>
		<p>小A:还没有好呢，再跟你说点．不然到时候，你重装系统，打不开加密的文件又要哭了．我说过这EFS是用公钥策略的，如果没有私钥是你是打不开加密过的文件．然而你重装系统后，原来私钥是由用户信息加密过的，即使你重新取了相同的用户名还是不行的．所以呀，你要装原先的密钥提前备份好，这样加密过的文件，无论在你的电脑里，还是转移到其他NTFS的格式的硬盘里，都可以打开．密钥是与证书关联的，这样我们就要做好证书的备份工作．我简要说下证书备份吧．在开始菜单的＂运行＂中输入certmgr.msc，打开证书管理终端,在个人-证书中，会看到一个预期目的为＂加密文件系统＂的证书，这是在第一次使用加密后自动生成的．右击该证书，在所有任务中，选择＂导出...",通过证书导出向导，按照提示选择对应的选项即可．</p>
		<p>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p3_2.jpg">
						<img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="234" alt="p3" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p3_thumb.jpg" width="321" border="0" />
				</a>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p4_2.jpg">
						<img style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height="234" alt="p4" src="http://www.cppblog.com/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p4_thumb.jpg" width="321" border="0" />
				</a>
		</p>
		<p>在输入密码，选择存储位置后，你会看到你所取名的xxx.pfx文件．下次你重装系统或在别的机子要打开加密的文件，只要要双击.pfx文件，按向导导入即可．这个.pfx文件可要保存好，不要让人拿去了．这个文件相当于钥匙，谁有这把钥匙，谁就能打开加密文件了．</p>
		<p> </p>
		<p>
				<a href="/images/cppblog_com/len/WindowsLiveWriter/QAEFS_1266D/p2_2.jpg">
				</a>
		</p>
<img src ="http://www.cppblog.com/len/aggbug/44609.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/len/" target="_blank">len</a> 2008-03-16 15:37 <a href="http://www.cppblog.com/len/archive/2008/03/16/44609.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>