<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

  <title>Titan Tang's Blog</title>
  <link href="http://titan.buaaer.com/atom.xml" rel="self"/>
  <link href="http://titan.buaaer.com/"/>
  <updated>2011-09-05T22:38:04+08:00</updated>
  <id>http://titan.buaaer.com/</id>
  <author>
    <name>Titan Tang</name>
    
  </author>

  
  <entry>
    <title>程序员自查表</title>
    <link href="http://titan.buaaer.com/blog/2011/08/29/programmer-self-test-checkpoints/"/>
    <updated>2011-08-29T14:56:00+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/08/29/programmer-self-test-checkpoints</id>
    <content type="html">&lt;ul&gt;
&lt;li&gt;每一个输入框：是否需要验证，怎样验证

&lt;ul&gt;
&lt;li&gt;对与每一个输入框后提示了必填的字段，是否业务上真的需要必填，如果需要则做必要性检查&lt;/li&gt;
&lt;li&gt;空值测试&lt;/li&gt;
&lt;li&gt;数字的输入需要scale和precision，检查上下限范围&lt;/li&gt;
&lt;li&gt;字符串输入需要检查长度，允许的字符&lt;/li&gt;
&lt;li&gt;日期输入需要做范围检查（begin &amp;lt; end），格式检查(yyyy-MM-dd)等&lt;/li&gt;
&lt;li&gt;主键是否可以录入，如果可以录入那么更新界面是否可以修改&lt;/li&gt;
&lt;li&gt;录入页面“重置”按钮的逻辑是否实现正确：录入界面清空所有输入框，更新界面重置至未修改状态。&lt;/li&gt;
&lt;li&gt;编辑界面是否可以修改主键，如果可以修改主键，那么修改主键之后，更新界面点重置是否会产生问题&lt;/li&gt;
&lt;li&gt;录入的数据是否在系统中是否可以查询到，如果不可以，测试人员如何确认数据已经正确录入&lt;/li&gt;
&lt;li&gt;界面大小是否会超出最终用户界面显示大小，如果超出是使用滚动条还是显示异常？&lt;/li&gt;
&lt;li&gt;下拉列表进入编辑界面时是否初始化好，更新界面是否已经选中原选中值&lt;/li&gt;
&lt;li&gt;数据库中的字段长度与界面上录入框的长度是否适配&lt;/li&gt;
&lt;li&gt;如存在导入，导入源格式允许的长度是否与数据库长度匹配，数字、日期等格式是否做了必要校验，空行如何处理&lt;/li&gt;
&lt;li&gt;其他业务相关逻辑&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;对与新加入的功能或修改过的功能，与它相关联的功能是否进行了回归测试？&lt;/li&gt;
&lt;li&gt;安装手册；完全按照安装手册，在干净的与生产一致的环境上是否可以安装成功&lt;/li&gt;
&lt;li&gt;任何不确定、需要假设的地方，都是需要项目经理开发过程中需要确认的点，很可能是风险点&lt;/li&gt;
&lt;/ul&gt;

</content>
  </entry>
  
  <entry>
    <title>Macbook Pro Power False Break</title>
    <link href="http://titan.buaaer.com/blog/2011/08/25/macbook-pro-power-false-break/"/>
    <updated>2011-08-25T23:16:00+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/08/25/macbook-pro-power-false-break</id>
    <content type="html">&lt;p&gt;Green light on the power adapter of Macbook pro don't light up just now. Found some article saying it is a protection of the adapter. Disconnect the adapter and reconnect it after 1 minute, it works&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Things Learned From Last Week</title>
    <link href="http://titan.buaaer.com/blog/2011/08/13/things-learned-from-last-week/"/>
    <updated>2011-08-13T00:00:00+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/08/13/things-learned-from-last-week</id>
    <content type="html">&lt;h2&gt;About CRUD actions&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;The behavior of reset button on edit page: always reset the content in input controls to the original state, even after a validation postbak&lt;/li&gt;
&lt;li&gt;The back button on edit page, should go back to the search page with correct list data present. If the data has changed, the search page can be reset to initial state.&lt;/li&gt;
&lt;li&gt;Delete or other destructive actions should always give user a warning &amp;amp; confirmation.&lt;/li&gt;
&lt;li&gt;Make the interface informative and easy to use, even for people not familiar with the system.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;About data processing scripts and data backup&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Always consider whether the data should be keeped. if not, delete it when the script ends.&lt;/li&gt;
&lt;li&gt;When doing data integration work concerning more than one servers, draw a network topology and check it with operation department other than make any assumptions about it.&lt;/li&gt;
&lt;li&gt;DO NOT change the interface if you are modifying a previous script, such as parameters or working folders.&lt;/li&gt;
&lt;li&gt;If you have to keep the data, write a document about the incremental speed, needed space and the period to clean the data.&lt;/li&gt;
&lt;/ol&gt;


&lt;h2&gt;About communicating&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Do preparation before communication&lt;/li&gt;
&lt;li&gt;Give thinking time to other people, because they have to listen to your needs and think about solutions.&lt;/li&gt;
&lt;li&gt;People can give quick answer if you can carefully prepare the question.&lt;/li&gt;
&lt;li&gt;When confirmation is needed, email is better than telephone.&lt;/li&gt;
&lt;/ol&gt;

</content>
  </entry>
  
  <entry>
    <title>test autopost to jekyll site</title>
    <link href="http://titan.buaaer.com/blog/2011/06/17/test-autopost/"/>
    <updated>2011-06-17T12:53:46+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/06/17/test-autopost</id>
    <content type="html">&lt;p&gt;just a test
sdfsdf&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Eclipse编辑器设置</title>
    <link href="http://titan.buaaer.com/blog/2011/05/02/eclipse-editor-settings/"/>
    <updated>2011-05-02T08:28:46+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/05/02/eclipse-editor-settings</id>
    <content type="html">&lt;p&gt;今天无意中发现eclipse一个问题，就是我用delete键删除一行以后，原本在下一行的缩进空格被带到当前行行尾了。想起来上次用vim打开别人写得代码，抱怨代码格式排版烂。因为我的vim是显示空白的，看到代码是tab和space混用，又存在行尾空格，很不整洁。所以打开自己的代码一看，存在同样的问题，看来是eclipse的默认设置不太好的缘故。打开设置选项，在general-editors-text
editor里面把insert spaces for tabs和show whitespace characters勾选，大功告成。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Techneur - Fight the Rewrite</title>
    <link href="http://titan.buaaer.com/blog/2011/04/28/techneur-fight-the-rewrite/"/>
    <updated>2011-04-28T11:26:34+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/28/techneur-fight-the-rewrite</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.accessmeproxy.com/browse.php/Oi8vdGVj/aG5ldXIu/Y29tL3Bv/c3QvNDk4/NDE0MjU4/OC9maWdo/dC10aGUt/cmV3cml0/ZQ_3D_3D/b1/fnorefer&quot;&gt;Techneur - Fight the Rewrite&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;重写代码的冲动必须抑制&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Skilldrick » Closures explained with JavaScript</title>
    <link href="http://titan.buaaer.com/blog/2011/04/27/skilldrick-c2bb-closures-explained-with-javascript/"/>
    <updated>2011-04-27T10:42:37+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/27/skilldrick-c2bb-closures-explained-with-javascript</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://skilldrick.co.uk/2011/04/closures-explained-with-javascript/&quot;&gt;Skilldrick » Closures explained with JavaScript&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;还没太想明白closure会不会造成内存泄露，如何避免这个问题，查到的关于closure造成的内存泄露大部分都是将ie的bug的&lt;/p&gt;

&lt;p&gt;是不是说在函数式编程语言里面，function是一等公民这句话包含了一个含义，就是他也是个变量，在使用时被创建，在这个变量的范围结束时被回收？那么closure如果被返回到外层时又如何解释？&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Why drop the I if you’re going to just add an Impl? « I Am Not Myself</title>
    <link href="http://titan.buaaer.com/blog/2011/04/27/why-drop-the-i-if-youe28099re-going-to-just-add-an-impl-c2ab-i-am-not-myself/"/>
    <updated>2011-04-27T10:00:19+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/27/why-drop-the-i-if-youe28099re-going-to-just-add-an-impl-c2ab-i-am-not-myself</id>
    <content type="html">&lt;p&gt;Why drop the I if you’re going to just add an Impl?&lt;/p&gt;

&lt;p&gt;via
&lt;a href=&quot;http://www.iamnotmyself.com/2011/04/26/why-drop-the-i-if-youre-going-to-just-add-an-impl/&quot;&gt;Why drop the I if you’re going to just add an Impl? « I Am Not Myself&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;我是支持不加I前缀的，但是对于impl后缀没有特别的偏见，比如说对于dao实现，我可能有hibernate，ibatis实现等，所以我的dao实现可能叫xxxxHibernateImpl和xxxxIBatisImpl来做区分。对于一些不考虑抽换底层实现的项目，或许直接加上impl作为默认实现也无可厚非。但是需要作者知道为什么这么加。&lt;/p&gt;

&lt;p&gt;原文中作者提到的SRP的接口是我们没有考虑的事情，其实我们很多时候dao都只是实现类的方法签名的集合，如果拆分的更细，应该会更容易实现重构service层的目的。但是估计也就无法避免service通过多个接口名称引用同一个实际对象的结果，不过几个reference的价格我们还是负担的起得。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Ruby at ThoughtWorks</title>
    <link href="http://titan.buaaer.com/blog/2011/04/21/ruby-at-thoughtworks/"/>
    <updated>2011-04-21T17:20:17+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/21/ruby-at-thoughtworks</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://martinfowler.com/articles/rubyAtThoughtWorks.html&quot;&gt;Ruby at ThoughtWorks&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Firebug Lite : Firebug</title>
    <link href="http://titan.buaaer.com/blog/2011/04/21/firebug-lite-firebug/"/>
    <updated>2011-04-21T09:15:36+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/21/firebug-lite-firebug</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://getfirebug.com/firebuglite#Stable&quot;&gt;Firebug Lite : Firebug&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Oh my god, this is great. It will definately useful in ie6
debugging&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>修改页面的重置按钮行为</title>
    <link href="http://titan.buaaer.com/blog/2011/04/18/reset-behavior-on-modify-page/"/>
    <updated>2011-04-18T10:29:36+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/04/18/reset-behavior-on-modify-page</id>
    <content type="html">&lt;p&gt;场景：在修改页面有reset按钮，在提交数据之前，行为正常。程序采用了服务器端验证，当验证失败时会自动将数据返回到页面，这时候做了任何修改，再按reset按钮就会将数据充值到服务器返回的之前验证失败的数据。
希望的结果：
1.  validation发生之前及之后，reset都会将数据重置到原来的状态
2.  验证失败时，会将错误信息返回，并将之前输入的信息带回到录入页面上&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>install fcitx under english locale</title>
    <link href="http://titan.buaaer.com/blog/2011/02/11/install-fcitx-under-english-locale/"/>
    <updated>2011-02-11T11:08:04+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/02/11/install-fcitx-under-english-locale</id>
    <content type="html">&lt;p&gt;I compiled fcitx 4.0.1 myself and installed it to /usr/local prefix
and created \~/.xinput.d/fcitx with following content&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;XIM=fcitx
XIM_PROGRAM=/usr/local/bin/fcitx
XIM_ARGS=&quot;&quot;
GTK_IM_MODULE=xim
QT_IM_MODULE=xim
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;notice here, when using im-switch like most articles did, it
created a wrong link combining a path in etc, so I created a link
by myself, like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;ln -s ~/.xinput.d/fcitx ~/.xinput.d/en_US
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;and add en locale into gtk.immodules in
/usr/lib/gtk-2.0/2.10.0/gtk.immodules like this find the xim line,
add en to the last field&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&quot;xim&quot; &quot;X Input Method&quot; &quot;gtk20&quot; &quot;/usr/share/locale&quot; &quot;en:ko:ja:th:zh&quot; 
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;restart X server by , it should work now. btw: There's no need to
uninstall ibus, by my experience&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>Wordpress Permissions for Auto-Upgrade Fix</title>
    <link href="http://titan.buaaer.com/blog/2011/02/04/wordpress-permissions-for-auto-upgrade-fix/"/>
    <updated>2011-02-04T15:03:57+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/02/04/wordpress-permissions-for-auto-upgrade-fix</id>
    <content type="html">&lt;p&gt;The Problem was mainly caused by function
&lt;strong&gt;get_filesystem_method&lt;/strong&gt; in &lt;strong&gt;wp-admin/includes/file.php&lt;/strong&gt;. The
method used userid to determine whether to use direct method or ftp
method, which caused the ftp information page showed on selecting a
plugin install or upgrade. Therefore, put a&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;define('FS_METHOD', 'direct');
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;in wp-config.php file will force wordpress to use direct filesystem
access method. So here is the permission scheme I used in my blog.
I use my system user as the directory owner, and set the group of
the directory to group httpd or www-data. Then give write access to
group on wp-contents directory, also set the stick bit, so that
temporary folder created by wordpress can also accessed. Below is
the commands I used&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;sudo chgrp -R apache /var/www/wordpress
sudo chmod g+ws /var/www/wordpress/wp-contents
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Main Reference: &lt;/strong&gt;&lt;a href=&quot;http://www.charleshooper.net/blog/wordpress-auto-upgrade-and-dumb-permissions/&quot;&gt;Wordpress Permissions for Auto-Upgrade | Charles Hooper&lt;/a&gt;.
&lt;strong&gt;Official Manual explaining FS_METHOD: &lt;/strong&gt;&lt;a href=&quot;http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions&quot;&gt;http://codex.wordpress.org/Editing_wp-config.php#Override_of_default_file_permissions&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>各种流行的编程风格 | 酷壳 - CoolShell.cn</title>
    <link href="http://titan.buaaer.com/blog/2011/01/30/e59084e7a78de6b581e8a18ce79a84e7bc96e7a88be9a38ee6a0bc-e985b7e5a3b3-coolshell-cn/"/>
    <updated>2011-01-30T11:01:03+08:00</updated>
    <id>http://titan.buaaer.com/blog/2011/01/30/e59084e7a78de6b581e8a18ce79a84e7bc96e7a88be9a38ee6a0bc-e985b7e5a3b3-coolshell-cn</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://coolshell.cn/articles/2058.html&quot;&gt;各种流行的编程风格 | 酷壳 - CoolShell.cn&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>vim与实用主义</title>
    <link href="http://titan.buaaer.com/blog/2010/12/16/vim-and-utilitarian/"/>
    <updated>2010-12-16T00:09:22+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/12/16/vim-and-utilitarian</id>
    <content type="html">&lt;p&gt;刚刚看了一篇贴，&lt;a href=&quot;http://kevinw.github.com/2010/12/15/this-is-your-brain-on-vim/&quot;&gt;vim的用户的脑子&lt;/a&gt;，讽刺的是那些因为自己会使用vim或者emacs而感到沾沾自喜的人，或是不停争论最好的编辑器是vim还是emacs的人。工具毕竟是工具，就像是哈利波特选魔杖，最华丽的材料不见得打造出最趁手的杖。拿vim来说，打1w个插件，真正常用的甚至能用上的又有几个。文章里面讲了一个个用vim的阶段，我也曾经沾沾自喜，也曾经是插件狂人，甚至就连前几天也因为一两个插件能完成某些IDE的功能向别人炫耀，路还很长。
今天被采薇问到对于软件设计的感觉，我斩钉截铁的说出了设计一定是为项目服务的，而不是一个项目只是为了验证或者使用一个设计。我们是工匠，就要拿出工匠的范儿来，不能让工具驾驭了我们的脑袋。好的工匠喜欢用自己熟悉的工具，但是工匠的思想是跟工具无关的。用张小泉的刀还是双立人的刀，最后能显示本事的是刀口，是菜品的质量。
另外，我认为一个好的工匠的一个重要特质就是不偏执，我曾经是一个对于技术非常偏执的人，喜欢的技术会拼命的维护它。比如Hibernate，比如spring，我曾经相信他们可以解决一切问题。后来发现，再好的技术也要用在合适的项目里面。今天看了好多.net的东西，不能不说，我确实很佩服微软的技术，看了sync
framework，还有ado.net里面的乐观锁机制，可以让程序员没有感知的情况下，天才的解决了许多问题。尽管这样，仍然不喜欢微软的产品，仍然喜欢linux，这就是偏执了吧。&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>关于OOP的反思</title>
    <link href="http://titan.buaaer.com/blog/2010/12/11/e585b3e4ba8eoope79a84e58f8de6809d/"/>
    <updated>2010-12-11T20:42:59+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/12/11/e585b3e4ba8eoope79a84e58f8de6809d</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;https://github.com/raganwald/homoiconic/blob/master/2010/12/oop.md#readme&quot;&gt;2010/12/oop.md at master from raganwalds homoiconic - GitHub&lt;/a&gt;我们过去被授予的关于OOP的思想是对是错？&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>前几天笔试的一道题目</title>
    <link href="http://titan.buaaer.com/blog/2010/10/25/e5898de587a0e5a4a9e7ac94e8af95e79a84e4b880e98193e9a298e79bae/"/>
    <updated>2010-10-25T21:56:09+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/10/25/e5898de587a0e5a4a9e7ac94e8af95e79a84e4b880e98193e9a298e79bae</id>
    <content type="html">&lt;p&gt;据说是算法导论上面的 Professor Diogenes has n supposedly identical VLSI[1]
chips that in principle are capable of testing each other. The
professor's test jig accommodates two chips at a time. When the jig
is loaded, each chip tests the other and reports whether it is good
or bad. A good chip always reports accurately whether the other
chip is good or bad, but the answer of a bad chip cannot be
trusted. 下面是网友给出的中文，也就是笔试遇到的题目
有n个处理器，其中好的处理器比坏的处理器至少多一个，现在有一个测试器，测试器每次可以同时插两个处理器记为A和B，A，B两个处理器测试的时候，好的处理器可以准确的告知另外一个是好是坏，坏的处理器给的结果不可信，请设计一个算法，识别处理器中所有好的处理器
参考解法：http://topic.csdn.net/u/20100415/23/0e50a116-bee0-44a0-9b4e-86c57fa48aab.html
如果A,B两个处理器显示对方均是好的，那么A和B要么都是好的，要么都是坏的 否则，A和B至少有一块是坏的
策略很简单，不停的拿2块来测，如果显示结果有一块是坏的，就把这两块拿出来（至少有一块是坏的），剩下的还满足好的占一半以上这个条件，不停的重复这一过程，最后剩下的应该是两两互相都显示是好的
这样至少可以找到一块好的，然后再跟其他所有的测试一遍就能把所有的好的都找出来 测试的策略安排得当的话可以达到线性复杂度&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>代码优化概要 | 酷壳 - CoolShell.cn</title>
    <link href="http://titan.buaaer.com/blog/2010/09/20/e4bba3e7a081e4bc98e58c96e6a682e8a681-e985b7e5a3b3-coolshell-cn/"/>
    <updated>2010-09-20T20:59:31+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/09/20/e4bba3e7a081e4bc98e58c96e6a682e8a681-e985b7e5a3b3-coolshell-cn</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://coolshell.cn/articles/2967.html&quot;&gt;代码优化概要 | 酷壳 - CoolShell.cn&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>修复 Ubuntu 9.10里的Flash无法点击问题_Linux 无忧时代</title>
    <link href="http://titan.buaaer.com/blog/2010/09/17/e4bfaee5a48d-ubuntu-9-10e9878ce79a84flashe697a0e6b395e782b9e587bbe997aee9a298_linux-e697a0e5bfa7e697b6e4bba3/"/>
    <updated>2010-09-17T21:59:25+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/09/17/e4bfaee5a48d-ubuntu-9-10e9878ce79a84flashe697a0e6b395e782b9e587bbe997aee9a298_linux-e697a0e5bfa7e697b6e4bba3</id>
    <content type="html">&lt;p&gt;Ubuntu Geek&lt;/p&gt;

&lt;p&gt;via
&lt;a href=&quot;http://linux.net527.cn/Ubuntu/Ubuntuanzhuangyuyingyong/136.html&quot;&gt;修复 Ubuntu 9.10里的Flash无法点击问题_Linux 无忧时代&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
  <entry>
    <title>nvie.com - How I boosted my Vim</title>
    <link href="http://titan.buaaer.com/blog/2010/09/15/nvie-com-how-i-boosted-my-vim/"/>
    <updated>2010-09-15T16:56:06+08:00</updated>
    <id>http://titan.buaaer.com/blog/2010/09/15/nvie-com-how-i-boosted-my-vim</id>
    <content type="html">&lt;p&gt;&lt;a href=&quot;http://nvie.com/posts/how-i-boosted-my-vim/&quot;&gt;nvie.com - How I boosted my Vim&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  
</feed>

