摘要: 在Vim的官方网站上有一个支持2个文件夹比较的插件DirDiff, 链接:http://www.vim.org/scripts/script.php?script_id=102. 不过仅支持2个文件夹, 我对齐进行研究并改进后让其支持多个文件夹的文件进行比较.DirDiff插件的基本原理就是先生成要比较的几个文件夹中的所有文件列表文件, 该文件的每一行对应于一个文件以及它所在的文件夹. 启用文件夹比较模式时, 会载入这个列表文件, 当选中一行时会解析出文件路径, 然后以diff模式分别打开这个文件在不同文件夹下对应的文件进行比较.这里为了方便, 我就使用Python来生成这个特定格式的文件列表
阅读全文
摘要: 最近研究了点关于Windows安全机制以及COM的 Reg-Free方案。研究的原因是试图构造一个安全的第三方插件的沙箱环境,而第三方插件是实现为COM组件的,因此又涉及到在受限环境下的COM调用的问题,为了解决受限环境的COM注册问题引入了Reg-Free的方案。整个插件环境是和主程序隔离的,每个插件都使用一个独立进程,插件的宿主进程是一个进程外的COM组件,主进程启动宿主进程后,有宿主进程负责创建相应的插件对象,插件被创建起来后就在宿主进程中运行。为了保证插件不影响用户的系统,需要在宿主进程创建插件对象之前将宿主进程放进一个受限的沙箱环境中。Windows的安全模型主要由2个部分组成, 一
阅读全文
摘要: 值此新年即将到来之际,在这献上今年最后一篇文章.产生这个需求是在项目的一次图标替换上,当时给了我一堆新图标要替换原来的老图标,可是原来的老图标分布在某个文件夹下的各个子文件夹下面,而新图标全是在同一个目录下的. 手动替换的话,只能是搜索文件名后替换,但是文件很多太麻烦了,没找到现成的工具可以实现我的需求.于是有了下面这个脚本,正好熟悉下刚刚学会的Python. 如果有人知道有什么工具可以完成的话不妨留言告知:).下面脚本实现的就是在dest目录及其子目录下面,寻找和src目录下的文件对应的同名文件,如果找到唯一的一个同名文件,用src里面的新文件替换dest里面对应的老文件. 如果没找到同名或
阅读全文
摘要: 初学python,找个有用的来练手。选定了一个我早就想做的让vim按需生成tags跳转文件的小程序。vim的tags用于跳转的好处自是不用多说,但是如何生成tags确实困扰我的一大问题,用VS的都知道,VS会为每个解决方案生成一个ncb文件用于自动提示,相当于tags的功能,这个ncb文件很智能,它会根据你所包含的头文件来自动处理。这样,你只需包含一个头文件,就可以出现该头文件相关的自动提示了。但是vim就没有像VS这么智能了,目前我的做法就是在某个目录下调用ctags,然后加上递归参数,这样的缺点就是会生成一个很大的tags文件,里面很多都是项目根本没用到的头文件的tags。为了改善这种情况
阅读全文
摘要: 大概一周前让别人从美国带了个kindle3回来,经过几天的体验,得到了第一手的经验,在这里分享一下,给准备买的同学一个参考。总体感觉,kindle 3 看电子书的感受非常好,由于是背光,不主动发光,眼睛看久了也不会不舒服。虽然和纸制书有差别,但已经很接近了。听歌功能也不错,虽然简单,但是看闲书的时候听听歌还是不错的。然后上网功能就比较弱了,看纯文字的还好,可以看看下面我截的google reade...
阅读全文
摘要: COM组件弱引用的简单实现The simple implementation of the weak reference of the COM object.说明:我们知道boost用shared_ptr,weak_ptr实现了指针的智能化管理,使用它们可以防止C++常见的内存泄露问题。COM组件的管理和指针类似却又不同,COM组件同样需要在使用的时候调用AddRef和Release来管理组件的引...
阅读全文
摘要: 今天ms开机出现SD卡受损的提示,说是sd卡已损坏,需要格式化,网上查了一下好多android的手机很多会出现这个情况。于是我拷贝sd卡上的所有文件备份一下,拷贝的过程中发现有1个文件拷贝失败,说是不存在该文件,我猜可能sd卡的目录结构有问题,于是用win自带的chkdsk命令检测一下,果然发现有错误,于是修复一下,重启手机,sd卡正常了。终于不用格式化SD卡了。出现同样问题的可以参考一下。不成功...
阅读全文
摘要: 最近因为项目的关系开始研究COM组件了,以前都认为COM过时了,所以也没怎么接触. 现在好好补补课了.一般调用COM都是通过注册表找到它的位置, 然后调用COM库的标准函数. 这些封装无疑使得我这个初学者无法了解里面到底做了什么, 而且注册表和COM库标准函数都是windows提供的, 但是COM这个思想是可以在Linux下实现的. 只要知道它的实现原理就行了. 因此我就试着用最基本的调用方法来使...
阅读全文
摘要: win7软解的原因,不能将grub2装在MBR上。因此我将grub2装在我的ubuntu分区上了。 ubuntu是装在逻辑分区里面的,刚开始grub2并不能引导我的ubuntu,一开机就出现win7的启动选择界面。只能手动进入grub4dos来启动ubuntu。在网上找了easybcd添加了linux的启动菜单,但是不管用,可能是easybcd对grub2支持不好吧,easybcd1.7最后更新时...
阅读全文
摘要: 现在很多地方都要求程序源码用UTF8格式,因此需要将原来的源码转换一下,手动转显然太累了。发现c#还真是简单啊,几行代码就搞定了。 试了一下GBK转换成UTF8编码格式,没什么问题了。
阅读全文