<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-20394991</id><updated>2009-06-30T21:19:06.862+08:00</updated><title type='text'>懒惰的程序员</title><subtitle type='html'>把开源进行到底！</subtitle><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default?start-index=26&amp;max-results=25'/><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.wanglianghome.org/blog/atom.xml'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>261</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-20394991.post-3667832358857225038</id><published>2009-06-30T20:39:00.002+08:00</published><updated>2009-06-30T21:19:06.872+08:00</updated><title type='text'>xiao qiang</title><content type='html'>&lt;p&gt;两天时间，很快地看了一遍《&lt;a href="http://www.douban.com/subject/3558629/"&gt;小强升职记&lt;/a&gt;》，感触很深。&lt;/p&gt;&lt;p&gt;每次看到此类好书，总是忍不住责问一句：“为什么学校不教这样的东西呢？！”还有就是感慨一番，只有在全民拥有出版权利的时代，才可能看到这样的书籍，那些专家教授是指望不上了。&lt;/p&gt;&lt;p&gt;看完此书，审视自己的工作习惯，仍然属于拿到活埋头就干的愣头青型。没有分析、没有分解、没有计划，就像一只没头苍蝇。&lt;/p&gt;&lt;p&gt;分析了一下自己不做分析、不做分解以及不做计划的深层次心理原因，是因为我认为做这些事根本就是浪费时间、毫无用处。我尝试过，没用！因为我不知道该怎么做，没人教，也无处学。同时，我进入编程这一行，正是瀑布式开发模型由神坛跌入人间的时候，对它的批评不绝于耳，造成我在心理上对分析计划一类的工作十分反感、厌恶。&lt;/p&gt;&lt;p&gt;最后分享一下书中提到的一个方法，叫时间日志，就是每天记录自己从几点几分到几点几分干了什么，一周之后拿出来看一下。小强的总结之一是：上网聊天以及和同事聊天是这五天的主要内容。:-)&lt;/p&gt;&lt;p&gt;这个和记账有点类似，不记的时候根本不知道钱都花到哪里去了，就知道自己是月光。记了一个月之后一看，被自己吓了一跳，我这都是在干什么呀？！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-3667832358857225038?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/3667832358857225038/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=3667832358857225038' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3667832358857225038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3667832358857225038'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/xiao-qiang.html' title='xiao qiang'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-1711347406881543564</id><published>2009-06-29T20:56:00.002+08:00</published><updated>2009-06-29T21:49:42.951+08:00</updated><title type='text'>Michael Jackson</title><content type='html'>&lt;p&gt;最近发生的事情比较多，对我造成了很大的震动，于是打算改变blog的风格，不再局限于技术的乐趣，准备增加一些提问的乐趣。&lt;/p&gt;&lt;p&gt;开放性的问题，没有标准答案，甚至我自己也不会回答。&lt;/p&gt;&lt;p&gt;今天就从Michael Jackson开始。&lt;/p&gt;&lt;p&gt;我订阅的blog以技术类为主，所以看到的多是这样的标题：&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://gigaom.com/2009/06/26/mjs-death-makes-web-traffic-spike-but-no-internet-meltdown/"&gt;MJ’s Death Makes Web Traffic Spike, But No Internet Meltdown&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://venturebeat.com/2009/06/25/michael-jackson-is-a-test-he-is-only-a-test-of-the-emergency-broadcast-system/"&gt;Michael Jackson is a test. He is only a test of the emergency broadcast system&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;甚至&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://news.cnet.com/8301-17939_109-10274137-2.html"&gt;Google thought Michael Jackson traffic was attack&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;突然，我很好奇，“上一次是谁？”&lt;/p&gt;&lt;p&gt;或者，还有谁，能够制造如此之大的轰动。&lt;/p&gt;&lt;p&gt;Michael Jackson仅仅是个rock star？！仅仅是个天皇巨星吗？！在一个满大街都是天皇巨星的年代，一定有很多人不喜欢这样的称呼。不信，你问问自己，在你所在的那个国家，有没有这样一个艺人，当他离开的时候，你会感到很失落，仿佛自己的灵魂也被带走了一部分；你会告诉自己，一个时代终结了。&lt;/p&gt;&lt;p&gt;Michael Jackson有不少负面新闻，“漂白”便是其中之一。所以，你可以无法避免地读到类似如下内容的文章&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://songshuhui.net/archives/15792.html"&gt;消逝的“白脸”&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://yanghengjunbk.blog.163.com/blog/static/45964193200952611812598/"&gt;冲不破黑白边界的麦克尔越过了生死界&lt;/a&gt;&lt;/li&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;我很想知道，如果你心目中的那个重量级人物，也传出这样那样的负面新闻，你会有怎样一种情绪？以及，当事件的真实性得到证实或否定的时候，你又是如何面对自己当初的那份情绪的。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-1711347406881543564?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/1711347406881543564/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=1711347406881543564' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/1711347406881543564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/1711347406881543564'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/michael-jackson.html' title='Michael Jackson'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-6884642141251932218</id><published>2009-06-25T21:52:00.002+08:00</published><updated>2009-06-25T21:56:49.639+08:00</updated><title type='text'>Ping Tunnel</title><content type='html'>&lt;p&gt;&lt;a href="http://www.cs.uit.no/~daniels/PingTunnel/"&gt;Ping Tunnel&lt;/a&gt;项目首页的副标题是&lt;em&gt;For those times when everything else is blocked&lt;/em&gt;。至少还有&lt;code&gt;ping&lt;/code&gt;，对吗？！&lt;/p&gt;&lt;p&gt;也许明天，连&lt;strong&gt;PING&lt;/strong&gt;都是一种奢望！&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-6884642141251932218?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/6884642141251932218/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=6884642141251932218' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6884642141251932218'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6884642141251932218'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/ping-tunnel.html' title='Ping Tunnel'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-6356299186109510898</id><published>2009-06-22T20:12:00.002+08:00</published><updated>2009-06-22T20:22:17.422+08:00</updated><title type='text'>Delayed incremental occur with anything</title><content type='html'>&lt;p&gt;&lt;code&gt;occur&lt;/code&gt;与&lt;code&gt;isearch-forward-regexp&lt;/code&gt;相比的优势是能够看到所有的匹配结果，不足是不能随着输入动态更新匹配结果。配合使用&lt;code&gt;anything.el&lt;/code&gt;，就可以两全其美。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(defun wl-anything-delayed-occur-candidates ()
  (setq anything-occur-buf (get-buffer-create "*Anything Occur*"))
  (with-current-buffer anything-occur-buf
    (erase-buffer)
    (let ((count (occur-engine anything-pattern
                               (list anything-c-source-occur-current-buffer)
                               anything-occur-buf
                               list-matching-lines-default-context-lines
                               (if (and case-fold-search search-upper-case)
                                   (isearch-no-upper-case-p anything-pattern t)
                                 case-fold-search)
                               list-matching-lines-buffer-name-face
                               nil list-matching-lines-face
                               (not (eq occur-excluded-properties t)))))
      (when (&gt; count 0)
        (let ((lines (split-string (buffer-string) "\n" t)))
          (cdr lines))))))

(defvar wl-anything-c-source-delayed-occur
  '((name . "Occur")
    (init . (lambda ()
              (setq anything-c-source-occur-current-buffer
                    (current-buffer))))
    (candidates . wl-anything-delayed-occur-candidates)
    (action . (("Goto line" .
                (lambda (candidate)
                  (goto-line (string-to-number candidate)
                             anything-c-source-occur-current-buffer)))))
    (requires-pattern . 3)
    (volatile)
    (delayed)))

(defun wl-search ()
  (interactive)
  (anything 'wl-anything-c-source-delayed-occur nil nil nil nil "*Anything Occur*"))&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-6356299186109510898?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/6356299186109510898/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=6356299186109510898' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6356299186109510898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6356299186109510898'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/delayed-incremental-occur-with-anything.html' title='Delayed incremental occur with anything'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-5046929830606581536</id><published>2009-06-18T20:36:00.002+08:00</published><updated>2009-06-18T20:42:05.671+08:00</updated><title type='text'>Query replace regexp from anything</title><content type='html'>&lt;p&gt;&lt;code&gt;query-replace-regexp&lt;/code&gt;让人最尴尬的时刻便是输入了半天结果什么都没做，因为实际上正则表达式写的有点问题，什么都没有匹配上。&lt;code&gt;anything-query-replace-regexp&lt;/code&gt;很好的解决了这个问题，它会随着你输入正则表达式而动态显示匹配结果。不如就用它取代&lt;code&gt;query-replace-regexp&lt;/code&gt;吧。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(global-set-key (kbd "M-%") 'anything-query-replace-regexp)&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-5046929830606581536?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/5046929830606581536/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=5046929830606581536' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5046929830606581536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5046929830606581536'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/query-replace-regexp-from-anything.html' title='Query replace regexp from anything'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-6820996304879842099</id><published>2009-06-15T20:28:00.002+08:00</published><updated>2009-06-15T20:32:56.779+08:00</updated><title type='text'>Enhance yank with anything</title><content type='html'>&lt;p&gt;配合最近的&lt;code&gt;anything-config.el&lt;/code&gt;和下面的配置，可以让yank变得更强大，只需一次&lt;kbd&gt;M-y&lt;/kbd&gt;，就可以列出kill-ring里面的所有内容，并随意选择其中任何一个。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(global-set-key (kbd "M-y")
                '(lambda ()
                   (interactive)
                   (let ((anything-enable-digit-shortcuts nil))
                     (anything-show-kill-ring))))&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-6820996304879842099?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/6820996304879842099/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=6820996304879842099' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6820996304879842099'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6820996304879842099'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/enhance-yank-with-anything.html' title='Enhance yank with anything'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8144036299641981901</id><published>2009-06-10T20:01:00.002+08:00</published><updated>2009-06-10T20:08:09.755+08:00</updated><title type='text'>Incremental bbdb search</title><content type='html'>&lt;p&gt;最近的&lt;a href="http://www.emacswiki.org/emacs/anything-config.el"&gt;anything-config.el&lt;/a&gt;包含多个新的anything source，其中一个就是&lt;code&gt;anything-c-source-bbdb&lt;/code&gt;，通过使用如下函数，我们可以实现搜索结果随着输入动态变化。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(defun wl-bbdb ()
  (interactive)
  (if anything-c-source-bbdb
      (anything '(anything-c-source-bbdb))
    (bbdb)))&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;如果没有&lt;code&gt;anything-c-source-bbdb&lt;/code&gt;，我们则使用原装搜索功能。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8144036299641981901?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8144036299641981901/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8144036299641981901' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8144036299641981901'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8144036299641981901'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/incremental-bbdb-search.html' title='Incremental bbdb search'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8304088238836405358</id><published>2009-06-04T20:53:00.002+08:00</published><updated>2009-06-04T21:09:48.706+08:00</updated><title type='text'>org-mode publishing</title><content type='html'>&lt;p&gt;在主观愿望与客观条件的双重压迫下，我开始尝试org-mode publishing作为内容发布的一种方式，目前仍处于探索中。源代码在&lt;a href="http://www.wanglianghome.org/svn/org/"&gt;http://www.wanglianghome.org/svn/org/&lt;/a&gt;，发布的内容参见&lt;a href="http://www.wanglianghome.org/org/"&gt;http://www.wanglianghome.org/org/&lt;/a&gt;。不可否认，&lt;code&gt;org&lt;/code&gt;有点多，但我没想到更好的。页面很丑，我又缺乏美化的专业知识，也只能慢慢来了。&lt;/p&gt;&lt;p&gt;由于org-mode的发布功能很强大，makefile就写得比较简单。没有选择直接发布到远程服务器是因为网络速度限制，对实现频繁发布、预览有困难，因此首先选择发布到本地，检查无误之后，再一并同步到远程服务器。由于使用了&lt;code&gt;rsync&lt;/code&gt;，可以将网络流量进一步减少。&lt;/p&gt;&lt;p&gt;&lt;code&gt;org-publish&lt;/code&gt;这个函数的说明和实现都很简单，试了好久才明白怎么用，具体参见&lt;a href="http://www.wanglianghome.org/svn/org/trunk/publish.el"&gt;http://www.wanglianghome.org/svn/org/trunk/publish.el&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;另外就是同步到远程服务器每次都要输入密码很麻烦，我选择&lt;a href="http://www.cyberciti.biz/faq/linux-unix-reuse-openssh-connection/"&gt;重用&lt;code&gt;SSH&lt;/code&gt;连接的方式&lt;/a&gt;，避免了密码输入。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8304088238836405358?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8304088238836405358/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8304088238836405358' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8304088238836405358'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8304088238836405358'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/06/org-mode-publishing.html' title='org-mode publishing'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-2469782226968278146</id><published>2009-05-13T19:53:00.002+08:00</published><updated>2009-05-13T20:12:34.910+08:00</updated><title type='text'>Stock quote</title><content type='html'>&lt;p&gt;上班时炒股吗？有没有觉得炒股软件都做得很花哨，离着几百米就能看出你在干什么？如果你不在乎15分钟的延时，那么可以在终端上显示股票价格。:-D&lt;/p&gt;&lt;p&gt;这招是从&lt;a href="http://www.commandlinefu.com/commands/view/2086/command-line-to-get-the-stock-quote-via-yahoo"&gt;commandlinefu.com&lt;/a&gt;学来的，查询脚本链接为http://download.finance.yahoo.com/d/quotes.csv，它有两个参数：s (symbol)和f (format)。s的值为股票代码，f指定显示那些数据。如显示万科的最新股价（再次声明：此价格是15分钟前的价格）：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=000002.sz&amp;f=l1'&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;使用加号连接多个股票代码可以显示多个股票的价格，如同时显示万科和中石油：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=000002.sz+601857.ss&amp;f=l1'&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;可以看出，上海股票需要使用后缀&lt;code&gt;.ss&lt;/code&gt;，深圳股票的后缀则为&lt;code&gt;.sz&lt;/code&gt;。&lt;/p&gt;&lt;p&gt;显示其它数据可以使用如下参数：&lt;/p&gt;&lt;dl&gt;&lt;dt&gt;s&lt;/dt&gt;&lt;dd&gt;就是我们输入的股票代码&lt;/dd&gt;&lt;dt&gt;c1&lt;/dt&gt;&lt;dd&gt;价格变化&lt;/dd&gt;&lt;dt&gt;v&lt;/dt&gt;&lt;dd&gt;成交量&lt;/dd&gt;&lt;dt&gt;o&lt;/dt&gt;&lt;dd&gt;开盘价&lt;/dd&gt;&lt;dt&gt;h&lt;/dt&gt;&lt;dd&gt;最高价&lt;/dd&gt;&lt;dt&gt;g&lt;/dt&gt;&lt;dd&gt;最低价&lt;/dd&gt;&lt;/dl&gt;&lt;p&gt;如显示股票代码和股价：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;curl -s 'http://download.finance.yahoo.com/d/quotes.csv?s=000002.sz+601857.ss&amp;f=sl1'&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-2469782226968278146?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/2469782226968278146/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=2469782226968278146' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/2469782226968278146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/2469782226968278146'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/05/stock-quote.html' title='Stock quote'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-714872976219757279</id><published>2009-04-27T17:03:00.002+08:00</published><updated>2009-04-27T17:11:07.728+08:00</updated><title type='text'>Sunday</title><content type='html'>&lt;p&gt;买了两个&lt;a href="http://item.taobao.com/auction/item_detail-db1-210138b98aede4086cec385c99db3a27.jhtml"&gt;LED电子钟&lt;/a&gt;，一个红字版，一个绿字版，目的是为了晚上看看时间。昨天无意间一瞥，惊呼——怎么是星期八！今天是星期天啊？！老婆看了一眼，想了一下，说：“星期日吧！”&lt;/p&gt;&lt;p&gt;原来不是星期8，而是星期日！可是满眼的阿拉伯数字，偏偏那里不是8，而是日，还真是够敢设计的。我宁可它显示7。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-714872976219757279?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/714872976219757279/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=714872976219757279' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/714872976219757279'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/714872976219757279'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/04/sunday.html' title='Sunday'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-4127580638247111121</id><published>2009-04-20T16:48:00.002+08:00</published><updated>2009-04-20T16:55:49.608+08:00</updated><title type='text'>Emacs as chm viewer</title><content type='html'>&lt;p&gt;&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/3235"&gt;CHM Reader&lt;/a&gt;自从Fedora 9以来就不能用了，其它的程序我又不喜欢，导致我在家里不能看chm电子书。最近发现了&lt;a href="http://www.emacswiki.org/emacs/ChmView"&gt;chm-view.el&lt;/a&gt;，使用Emacs + emacs-w3m + archmage组合看chm，感觉很爽。&lt;/p&gt;&lt;p&gt;这里还有个小插曲，在初次使用时发现不能使用类似&lt;code&gt;~/book/a.chm&lt;/code&gt;这样的路径，而要使用&lt;code&gt;/home/liang/book/a.chm&lt;/code&gt;，于是费了半天劲写了封英文邮件给作者，并提出了解决方案，没想到对方竟然用中文回复……:-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-4127580638247111121?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/4127580638247111121/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=4127580638247111121' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/4127580638247111121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/4127580638247111121'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/04/emacs-as-chm-viewer.html' title='Emacs as chm viewer'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-4032874346460357889</id><published>2009-04-15T14:58:00.002+08:00</published><updated>2009-04-15T15:10:53.009+08:00</updated><title type='text'>gitweb</title><content type='html'>&lt;p&gt;&lt;a href="http://git.or.cz/gitwiki/Gitweb"&gt;gitweb&lt;/a&gt;为git repository提供了一个web界面，其中一个功能是提供RSS输入，用于跟踪项目的开发进展。我在dreamhost上创建了多个&lt;a href="http://www.wanglianghome.org/cgi-bin/wiki.cgi/SvnRepository"&gt;subversion repositories&lt;/a&gt;，可是目前的web访问只能看到最新版本，而且不能查看log。&lt;/p&gt;&lt;p&gt;我利用git-svn将代码从subversion转到git，然后使用gitweb.cgi显示在web上。目前git repositories没有开放，但是可以通过订阅单个项目的RSS（在每个项目首页的右下角）或者所有项目的OPML（在gitweb首页的右下角），跟踪项目的开发。当我长时间不更新blog时，也许正在紧张忙碌地写程序，你可以到这里解解闷。如果真的对其中某个项目感兴趣，可以使用subversion获取代码，列表参见&lt;a href="http://www.wanglianghome.org/cgi-bin/wiki.cgi/SvnRepository"&gt;http://www.wanglianghome.org/cgi-bin/wiki.cgi/SvnRepository&lt;/a&gt;&lt;/p&gt;&lt;p&gt;我的gitweb首页链接是：&lt;a href="http://www.wanglianghome.org/cgi-bin/gitweb.cgi"&gt;http://www.wanglianghome.org/cgi-bin/gitweb.cgi&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-4032874346460357889?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/4032874346460357889/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=4032874346460357889' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/4032874346460357889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/4032874346460357889'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/04/gitweb.html' title='gitweb'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8737330069098775547</id><published>2009-03-30T15:23:00.004+08:00</published><updated>2009-03-30T22:00:01.745+08:00</updated><title type='text'>Mount WebDav directory with davfs2</title><content type='html'>&lt;p&gt;使用&lt;a href="http://dav.sourceforge.net/"&gt;davfs2&lt;/a&gt;，可以将WebDav目录mount到本地，然后就像操作本地目录一样操作WebDav目录。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;sudo mount -t davfs http://example.com/webdev/dir local-dir&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;如果是自己编译安装的话，使用之前还要创建用户davfs2和相应的组。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8737330069098775547?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8737330069098775547/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8737330069098775547' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8737330069098775547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8737330069098775547'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/mount-webdav-directory-with-davfs2.html' title='Mount WebDav directory with davfs2'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-3031606058510845931</id><published>2009-03-26T13:17:00.002+08:00</published><updated>2009-03-26T13:26:16.839+08:00</updated><title type='text'>Update auto-complete candidates dynamically</title><content type='html'>&lt;p&gt;&lt;a href="http://www.wanglianghome.org/blog/2009/03/auto-complete-on-demand.html"&gt;前面对auto-complete的配置&lt;/a&gt;有问题，即使用&lt;kbd&gt;F1&lt;/kbd&gt;开启自动补全功能后，候选列表不会随着输入自动更新，要连续按&lt;kbd&gt;F1&lt;/kbd&gt;才行。使用如下配置，可以使候选列表在一次补全期间自动更新。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(setq ac-auto-start nil)
(defun wl-ac-start ()
  (interactive)
  (setq ac-auto-start 6)
  (ac-start))
(defadvice ac-cleanup (after wl-ac-cleanup ())
  (setq ac-auto-start nil))
(ad-activate 'ac-cleanup)
(define-key global-map (kbd "&amp;lt;f1&amp;gt;") 'wl-ac-start)&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;自动补全功能入口改为自定义的函数&lt;code&gt;wl-ac-start&lt;/code&gt;，在这个函数里，&lt;code&gt;ac-auto-start&lt;/code&gt;变量的值被设置为6，即当输入字符达到6个时显示候选列表。当本次自动补全完成后，&lt;code&gt;ac-cleanup&lt;/code&gt;函数会清理现场，而自定义的advice &lt;code&gt;wl-ac-cleanup&lt;/code&gt;会在它运行后将&lt;code&gt;ac-auto-start&lt;/code&gt;设置&lt;code&gt;nil&lt;/code&gt;，这样自动补全功能就被关闭了。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-3031606058510845931?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/3031606058510845931/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=3031606058510845931' title='6 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3031606058510845931'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3031606058510845931'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/update-auto-complete-candidates.html' title='Update auto-complete candidates dynamically'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-291461969046681359</id><published>2009-03-22T17:46:00.004+08:00</published><updated>2009-03-22T20:56:36.602+08:00</updated><title type='text'>Revert buffer</title><content type='html'>&lt;p&gt;在Emacs缺省配置下，&lt;code&gt;revert-buffer&lt;/code&gt;没有映射到任何快捷键，经过了几年痛苦地&lt;kbd&gt;M-x revert-buffer RET yes RET&lt;/kbd&gt;，终于痛定思痛，弄了个快捷键出来。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(defun wl-revert-buffer (&amp;optional arg)
  (interactive "P")
  (revert-buffer t t arg))

(global-set-key (kbd "&amp;lt;f5&amp;gt;") 'wl-revert-buffer)&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;通常情况下使用&lt;kbd&gt;F5&lt;/kbd&gt;，如果不想改变major mode，那么使用&lt;kbd&gt;C-u F5&lt;/kbd&gt;。比如打开文件&lt;code&gt;a.c&lt;/code&gt;，缺省使用&lt;code&gt;c-mode&lt;/code&gt;，在手工改为&lt;code&gt;c++-mode&lt;/code&gt;后，使用&lt;kbd&gt;C-u F5&lt;/kbd&gt;保持&lt;code&gt;c++-mode&lt;/code&gt;不变，而&lt;kbd&gt;F5&lt;/kbd&gt;则会恢复为&lt;code&gt;c-mode&lt;/code&gt;。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-291461969046681359?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/291461969046681359/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=291461969046681359' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/291461969046681359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/291461969046681359'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/revert-buffer.html' title='Revert buffer'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-5356396624004659645</id><published>2009-03-18T12:42:00.003+08:00</published><updated>2009-03-18T12:56:33.642+08:00</updated><title type='text'>Customize psvn</title><content type='html'>&lt;p&gt;&lt;a href="http://www.xsteve.at/prg/emacs/psvn.el"&gt;psvn&lt;/a&gt;提供了在Emacs里面管理subversion repository的功能，我根据自己的喜好做了如下的配置：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(eval-after-load 'psvn
  '(progn
     (setq svn-status-hide-unknown t)
     (setq svn-status-hide-unmodified t)
     (add-hook 'svn-log-edit-done-hook
               (lambda ()
                 (kill-buffer svn-log-edit-buffer-name)
                 (with-current-buffer svn-status-buffer-name
                   (svn-status-update-cmd nil))))))&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;在&lt;code&gt;*svn-status*&lt;/code&gt; buffer里隐藏没有放入版本控制的文件，以及放入版本控制但是没有修改过的文件。如果想查看这两类文件的话，可以使用快捷键&lt;kbd&gt;?&lt;/kbd&gt;和&lt;kbd&gt;_&lt;/kbd&gt;关闭隐藏功能。&lt;/p&gt;&lt;p&gt;&lt;code&gt;Hook&lt;/code&gt;里面实现了两个功能，当提交成功后，先关掉编写log的buffer，然后更新（否则查询log时看不到最新提交的log）。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-5356396624004659645?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/5356396624004659645/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=5356396624004659645' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5356396624004659645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5356396624004659645'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/customize-psvn.html' title='Customize psvn'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-6217936584177806063</id><published>2009-03-15T21:33:00.002+08:00</published><updated>2009-03-15T21:37:05.924+08:00</updated><title type='text'>Auto complete on demand</title><content type='html'>&lt;p&gt;随着使用越来越多，觉得&lt;a href="http://www.wanglianghome.org/blog/2009/02/auto-complete.html"&gt;auto-complete&lt;/a&gt;自动弹出下拉菜单很不爽，于是改成按&lt;kbd&gt;F1&lt;/kbd&gt;才弹出候选列表，配置如下：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(setq ac-auto-start nil)
(define-key global-map (kbd "&amp;lt;f1&amp;gt;") 'ac-start)
&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-6217936584177806063?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/6217936584177806063/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=6217936584177806063' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6217936584177806063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6217936584177806063'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/auto-complete-on-demand.html' title='Auto complete on demand'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-3062037277191611267</id><published>2009-03-10T22:38:00.002+08:00</published><updated>2009-03-10T22:43:51.616+08:00</updated><title type='text'>Exclude packages from yum update permanently</title><content type='html'>&lt;p&gt;在&lt;kbd&gt;yum update&lt;/kbd&gt;的时候遇到&lt;code&gt;kmod-fglrx&lt;/code&gt;冲突的问题，不知道为什么在我的fedora 9上一定要安装两个不同版本的ATI驱动程序，事实上我一直在使用&lt;code&gt;akmod-fglrx&lt;/code&gt;。为了让&lt;kbd&gt;yum update&lt;/kbd&gt;永远忽略各个版本的&lt;code&gt;kmod-fglrx&lt;/code&gt;，只需在&lt;code&gt;/etc/yum.conf&lt;/code&gt;文件里添加如下一行即可：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;exclude=kmod-fglrx*&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-3062037277191611267?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/3062037277191611267/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=3062037277191611267' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3062037277191611267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/3062037277191611267'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/exclude-packages-from-yum-update.html' title='Exclude packages from yum update permanently'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8775979034213577382</id><published>2009-03-06T15:10:00.002+08:00</published><updated>2009-03-06T15:34:15.906+08:00</updated><title type='text'>email</title><content type='html'>&lt;p&gt;工作上，公司使用MS Outlook，每天的邮件不多，十几封，凑合着也就用了。有一段日子感觉特别不爽，于是&lt;a href="http://www.wanglianghome.org/blog/2008/01/setup-your-own-imap-to-ms-exchange.html"&gt;Setup your own IMAP to MS Exchange&lt;/a&gt;。在Linux上，我同时使用三种客户端——Thunderbird，mutt，以及Gnus。Thunderbird+&lt;a href="https://addons.mozilla.org/en-US/thunderbird/addon/2307"&gt;slideshow&lt;/a&gt;扩展是看图片附件的利器；mutt是处理邮件的最佳选择；而Gnus+Org Mode则用于管理日程。三种工具各有优点。在家里是Firefox+Gmail，不过也配置了mutt和Gnus去访问Gmail。另外我还&lt;a href="http://www.wanglianghome.org/blog/2008/06/backup-gmail-with-offlineimap.html"&gt;Backup gmail with offlineimap&lt;/a&gt;。&lt;/p&gt;&lt;p&gt;mutt的配置参见&lt;a href="http://www.wanglianghome.org/cgi-bin/wiki.cgi/DotMuttrc"&gt;DotMuttrc&lt;/a&gt;；Gnus的配置参见&lt;a href="http://www.wanglianghome.org/svn/elisp/wl-fedora-init.el"&gt;wl-fedora-init.el&lt;/a&gt;中关于Gnus的部分。由于我基本不用这些客户端发邮件，所以可能没有smtp的设置，即使有，也没有测试完全。另外，我还没有找到用Gnus订阅Gmail中名字为中文的group（Gmail的术语是label）。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8775979034213577382?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8775979034213577382/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8775979034213577382' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8775979034213577382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8775979034213577382'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/email.html' title='email'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-938063478856277356</id><published>2009-03-03T21:15:00.002+08:00</published><updated>2009-03-03T21:19:00.161+08:00</updated><title type='text'>Subscribe git mailing list with gnus</title><content type='html'>&lt;p&gt;不想再用GMail订阅邮件列表了，便尝试了gnus。方法是，在&lt;code&gt;*Group*&lt;/code&gt; buffer里&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;G m gmane.comp.version-control.git RET nntp RET news.gmane.org RET&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-938063478856277356?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/938063478856277356/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=938063478856277356' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/938063478856277356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/938063478856277356'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/03/subscribe-git-mailing-list-with-gnus.html' title='Subscribe git mailing list with gnus'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-7382293539375016119</id><published>2009-02-26T22:38:00.002+08:00</published><updated>2009-02-26T23:16:15.285+08:00</updated><title type='text'>Website backup task</title><content type='html'>&lt;p&gt;我会在每个月最后一天备份网站，如果最后一天是周五或者周末，那么就在这一周的周四备份。由于记性不大好，所以需要有个提醒。之前一直用&lt;a href="http://www.rememberthemilk"&gt;RTM&lt;/a&gt;，可惜我这个规则有点复杂，没法在RTM里面描述，导致经常要修改任务日期，有点麻烦。有时候稍不留神就错过了。&lt;/p&gt;&lt;p&gt;今天终于无法忍受，改用Org Mode了。方法就是使用一个超眩的任务日期，如下：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;** DONE 备份网站
   SCHEDULED: &amp;lt;%%(wl-diary-website-backup-day)&amp;gt;&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;&lt;code&gt;wl-diary-website-backup-day&lt;/code&gt;的实现如下：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(defun wl-diary-website-backup-day (&amp;amp;optional mark)
  (let* ((day (calendar-extract-day date))
         (month (calendar-extract-month date))
         (year (calendar-extract-year date))
         (lastday (calendar-last-day-of-month month year))
         (lastdayname (calendar-day-of-week (list month lastday year))))
    (and (or (and (= day lastday)
                  (memq lastdayname '(1 2 3 4)))
             (and (&lt; (- lastday day) 7)
                  (memq lastdayname '(0 5 6))
                  (= (calendar-day-of-week date) 4)))
         (cons mark ""))))&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-7382293539375016119?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/7382293539375016119/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=7382293539375016119' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/7382293539375016119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/7382293539375016119'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/02/website-backup-task.html' title='Website backup task'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-5729392715627492552</id><published>2009-02-23T23:12:00.002+08:00</published><updated>2009-02-23T23:20:14.046+08:00</updated><title type='text'>replace-regexp</title><content type='html'>&lt;p&gt;在GNU Emacs里面，如果&lt;code&gt;replace-regexp&lt;/code&gt;的替换字符串部分出现&lt;code&gt;\,&lt;/code&gt;，并且后面接一个Emacs Lisp表达式，那么这个表达式的计算结果将作为替换字符串的一部分。比如将oddmuse格式的标题（=== 标题 ===）转换为Org Mode的标题（** 标题），可以使用&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;M-x replace-regexp RET \(=+?\) \(.+?\) =+ RET \,(make-string (1- (length \1)) ?*) \2 RET&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;注意其中长度减1。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-5729392715627492552?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/5729392715627492552/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=5729392715627492552' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5729392715627492552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/5729392715627492552'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/02/replace-regexp.html' title='replace-regexp'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8303193004822241369</id><published>2009-02-20T21:32:00.002+08:00</published><updated>2009-02-20T21:45:42.073+08:00</updated><title type='text'>Who Uses Linux?</title><content type='html'>&lt;p&gt;学习&lt;a href="http://www.ilovemyjournal.com/?action=view_entry&amp;amp;eid=4366"&gt;Who Uses Linux?&lt;/a&gt;，贴一下截止今天本站2月份的访问统计（基于Advanced Web Statistics 6.8 (build 1.910)），其中的Unknown OS参见最后一个表格，即无法找到OS部分的User Agent。&lt;/p&gt;&lt;table class="aws_border" border="0" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td class="aws_title" width="70%"&gt;Operating Systems (Top 10)  &lt;/td&gt;&lt;td class="aws_blank"&gt;
&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2"&gt; &lt;table class="aws_data" border="1" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ececec"&gt;&lt;th width="32"&gt;
&lt;/th&gt;&lt;th&gt;Operating Systems&lt;/th&gt;&lt;th bgcolor="#66ddee" width="80"&gt;Hits&lt;/th&gt;&lt;th bgcolor="#66ddee" width="80"&gt;Percent&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td width="32"&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/win.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Windows&lt;/b&gt;&lt;/td&gt;&lt;td&gt;11351&lt;/td&gt;&lt;td&gt;47.5 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/unknown.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;span style="color: rgb(102, 102, 136);"&gt;Unknown&lt;/span&gt;&lt;/td&gt;&lt;td&gt;10194&lt;/td&gt;&lt;td&gt;42.7 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/linux.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Linux&lt;/b&gt;&lt;/td&gt;&lt;td&gt;2163&lt;/td&gt;&lt;td&gt;9 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/mac.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Macintosh&lt;/b&gt;&lt;/td&gt;&lt;td&gt;126&lt;/td&gt;&lt;td&gt;0.5 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/unix.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;Unknown Unix system&lt;/td&gt;&lt;td&gt;12&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/bsd.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;BSD&lt;/b&gt;&lt;/td&gt;&lt;td&gt;6&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/os/symbian.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;a href="http://www.symbian.com/" title="Symbian OS home page [new window]" target="_blank"&gt;Symbian OS&lt;/a&gt;&lt;/td&gt;&lt;td&gt;1&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;table class="aws_border" border="0" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td class="aws_title" width="70%"&gt;Browsers (Top 10)  &lt;/td&gt;&lt;td class="aws_blank"&gt;
&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2"&gt; &lt;table class="aws_data" border="1" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ececec"&gt;&lt;th width="32"&gt;
&lt;/th&gt;&lt;th&gt;Browsers&lt;/th&gt;&lt;th width="80"&gt;Grabber&lt;/th&gt;&lt;th bgcolor="#66ddee" width="80"&gt;Hits&lt;/th&gt;&lt;th bgcolor="#66ddee" width="80"&gt;Percent&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td width="32"&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/msie.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;MS Internet Explorer&lt;/b&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;7570&lt;/td&gt;&lt;td&gt;31.7 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/mozilla.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;Mozilla&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;6933&lt;/td&gt;&lt;td&gt;29 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/firefox.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Firefox&lt;/b&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;4781&lt;/td&gt;&lt;td&gt;20 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/unknown.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;span style="color: rgb(102, 102, 136);"&gt;Unknown&lt;/span&gt;&lt;/td&gt;&lt;td width="80"&gt;?&lt;/td&gt;&lt;td&gt;2592&lt;/td&gt;&lt;td&gt;10.8 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/subversion.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Subversion client&lt;/b&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;569&lt;/td&gt;&lt;td&gt;2.3 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/opera.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;Opera&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;489&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/safari.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;Safari&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;478&lt;/td&gt;&lt;td&gt;2 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/netscape.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;b&gt;Netscape&lt;/b&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;388&lt;/td&gt;&lt;td&gt;1.6 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/konqueror.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;Konqueror&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;20&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;&lt;img src="http://www.wanglianghome.org/statistics/icon/browser/rss.png" alt="" title="" /&gt;&lt;/td&gt;&lt;td class="aws"&gt;&lt;a href="http://www.curiostudio.com/" title="Browser home page [new window]" target="_blank"&gt;GreatNews (RSS Reader)&lt;/a&gt;&lt;/td&gt;&lt;td&gt;No&lt;/td&gt;&lt;td&gt;17&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td&gt;
&lt;/td&gt;&lt;td class="aws"&gt;&lt;span style="color: rgb(102, 102, 136);"&gt;Others&lt;/span&gt;&lt;/td&gt;&lt;td&gt;
&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;0 %&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;table class="aws_border" border="0" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr&gt;&lt;td class="aws_title" width="70%"&gt;Unknown OS (useragent field) &lt;/td&gt;&lt;td class="aws_blank"&gt; &lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td colspan="2"&gt; &lt;table class="aws_data" border="1" cellpadding="2" cellspacing="0" width="100%"&gt; &lt;tbody&gt;&lt;tr bgcolor="#ececec"&gt;&lt;th&gt;User agent (52)&lt;/th&gt;&lt;th&gt;Last visit&lt;/th&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/3.0_(compatible;_Indy_Library)&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 02:11&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Snarfer/1.0.2_(http://www.snarfware.com/)&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 01:44&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;freenews&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 01:09&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;QQFeedFetcher;_(_http://service.mail.qq.com/cgi-bin/help?id=40;_1_subscribers;_feed-id=87727)&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 01:02&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;RSS/1.0_(gzip)&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 00:49&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Sphere_Scout&amp;amp;v4.0_-_scout_at_sphere_dot_com&lt;/td&gt;&lt;td&gt;20 Feb 2009 - 00:27&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;dragonfly(ebingbong#playstarmusic.com)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 23:57&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;AideRSS/1.0_(aiderss.com);_1_subscribers&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 23:42&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;QQFeedFetcher;_(_http://service.mail.qq.com/cgi-bin/help?id=40;_1_subscribers;_feed-id=2873998)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 23:36&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Fastladder_FeedFetcher/0.01_(http://fastladder.com/;_1_subscriber)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 23:34&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;__Page2RSS/0.5;__http://page2rss.com/)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 21:28&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(en-US)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 21:02&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Virtual_Reach_Newsclip_Collector&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 19:12&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_ScoutJet;__http://www.scoutjet.com/)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 18:39&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_Charlotte/1.1;_http://www.searchme.com/support/)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 10:15&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Activeweave/BlogRovR/2009-02-15_10:23:00.0;_version_0.4.357;_2_subscribers.&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 09:50&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;SVN/1.5.4_(r33841)_neon/0.28.3&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 05:59&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Yanga_WorldSearch_Bot_v1.1/beta_(http://www.yanga.co.uk/)&lt;/td&gt;&lt;td&gt;19 Feb 2009 - 04:40&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_TopBlogsInfo/1.0;__topblogsinfo@gmail.com)&lt;/td&gt;&lt;td&gt;18 Feb 2009 - 17:51&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;GreatNews/1.0&lt;/td&gt;&lt;td&gt;17 Feb 2009 - 19:15&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;BlackBerry8320/4.5.0.42_Profile/MIDP-2.0_Configuration/CLDC-1.1_VendorID/142&lt;/td&gt;&lt;td&gt;17 Feb 2009 - 18:47&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_Charlotte/1.0t;_http://www.searchme.com/support/)&lt;/td&gt;&lt;td&gt;17 Feb 2009 - 17:42&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mugshot/Firehose_(http://developer.mugshot.org/wiki/FirehosePolling)&lt;/td&gt;&lt;td&gt;16 Feb 2009 - 16:58&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/4.0_(compatible;)&lt;/td&gt;&lt;td&gt;16 Feb 2009 - 07:30&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;LWP::Simple/5.812&lt;/td&gt;&lt;td&gt;16 Feb 2009 - 07:29&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla&lt;/td&gt;&lt;td&gt;16 Feb 2009 - 06:57&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;MLBot_(www.metadatalabs.com/mlbot)&lt;/td&gt;&lt;td&gt;15 Feb 2009 - 17:49&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible)&lt;/td&gt;&lt;td&gt;15 Feb 2009 - 01:22&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Activeweave/BlogRovR/2009-02-10_16:32:00.0;_version_0.4.355;_2_subscribers.&lt;/td&gt;&lt;td&gt;14 Feb 2009 - 19:38&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_Firefox/3.0.5&lt;/td&gt;&lt;td&gt;13 Feb 2009 - 23:00&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_woriobot_support_[at]_worio_[dot]_com__http://worio.com)&lt;/td&gt;&lt;td&gt;13 Feb 2009 - 11:40&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;__Page2RSS/0.4;__http://page2rss.com/)&lt;/td&gt;&lt;td&gt;13 Feb 2009 - 11:40&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/3.0_(compatible)&lt;/td&gt;&lt;td&gt;13 Feb 2009 - 04:11&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Internet_Explorer&lt;/td&gt;&lt;td&gt;12 Feb 2009 - 22:49&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;AideRSS/1.0_(aiderss.com)&lt;/td&gt;&lt;td&gt;12 Feb 2009 - 06:44&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_proximic;__http://www.proximic.com)&lt;/td&gt;&lt;td&gt;11 Feb 2009 - 09:41&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Wget/1.11.4&lt;/td&gt;&lt;td&gt;11 Feb 2009 - 00:39&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Rome_Client_(http://tinyurl.com/64t5n)_Ver:_0.9&lt;/td&gt;&lt;td&gt;10 Feb 2009 - 21:57&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;SkyGrid/1.0_(_http://skygrid.com/partners)&lt;/td&gt;&lt;td&gt;10 Feb 2009 - 21:39&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Activeweave/BlogRovR/2009-02-09_11:12:00.0;_version_0.4.352;_2_subscribers.&lt;/td&gt;&lt;td&gt;10 Feb 2009 - 16:47&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;BPImageWalker/2.0_(www.bdbrandprotect.com)&lt;/td&gt;&lt;td&gt;10 Feb 2009 - 01:50&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/4.0&lt;/td&gt;&lt;td&gt;10 Feb 2009 - 00:17&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;FeedHub_MetaDataFetcher/1.0_(http://www.feedhub.com)&lt;/td&gt;&lt;td&gt;08 Feb 2009 - 18:26&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Activeweave/BlogRovR/2008-09-22_17:17:00.0;_version_0.4.350;_2_subscribers.&lt;/td&gt;&lt;td&gt;07 Feb 2009 - 06:57&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_Twingly_Recon;_twingly.com)&lt;/td&gt;&lt;td&gt;07 Feb 2009 - 02:36&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/5.0_(compatible;_Konqueror/4.2)_KHTML/4.2.0_(like_Gecko)&lt;/td&gt;&lt;td&gt;05 Feb 2009 - 09:30&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/4.0_(compatible;_)&lt;/td&gt;&lt;td&gt;05 Feb 2009 - 02:00&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;OPWV-SDK_UP.Browser/7.0.2.3.119_(GUI)_MMP/2.0_Push/PO&lt;/td&gt;&lt;td&gt;04 Feb 2009 - 10:51&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;SVN/1.4.6_(r28521)_neon/0.28.3&lt;/td&gt;&lt;td&gt;03 Feb 2009 - 20:50&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;SVN/1.4.6_(r28521)_neon/0.27.2&lt;/td&gt;&lt;td&gt;03 Feb 2009 - 01:58&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;&lt;a href='http://db2-sql.blogspot.com'&gt;_DB_DB2_ODBC&lt;/a&gt;__support@runnk.com&lt;/td&gt;&lt;td&gt;01 Feb 2009 - 21:40&lt;/td&gt;&lt;/tr&gt; &lt;tr&gt;&lt;td class="aws"&gt;Mozilla/4.0_(compatible)&lt;/td&gt;&lt;td&gt;01 Feb 2009 - 00:25&lt;/td&gt;&lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8303193004822241369?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8303193004822241369/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8303193004822241369' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8303193004822241369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8303193004822241369'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/02/who-uses-linux.html' title='Who Uses Linux?'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-8174115348783436163</id><published>2009-02-20T14:42:00.002+08:00</published><updated>2009-02-20T14:51:25.252+08:00</updated><title type='text'>ibus</title><content type='html'>&lt;p&gt;最近在fedora 10上使用scim输入法总是出现问题，按空格选字或词的时候居然只输入了一个空格，十分苦恼，想起曾经听过ibus这个输入法，号称是新一代产品，于是装上试用，感觉不错。安装方法如下：&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;sudo yum -y install ibus ibus-m17n ibus-pinyin \
  ibus-table ibus-table-additional ibus-table-chinese&lt;/pre&gt;&lt;/blockquote&gt;&lt;p&gt;使用前必须选择输入法引擎，我只会用汉语拼音，其它的一概没选。ibus还提供了许多特殊命令，以便输入特殊字符，如输入摄氏度符号℃的命令是&lt;kbd&gt;issd&lt;/kbd&gt;，ibus的特殊命令都是以i开头的，具体参见&lt;a href="http://github.com/phuang/ibus-pinyin/blob/master/engine/special_table"&gt;http://github.com/phuang/ibus-pinyin/blob/master/engine/special_table&lt;/a&gt;。&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-8174115348783436163?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/8174115348783436163/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=8174115348783436163' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8174115348783436163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/8174115348783436163'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/02/ibus.html' title='ibus'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-20394991.post-6394436375396973108</id><published>2009-02-11T13:32:00.002+08:00</published><updated>2009-02-11T13:40:08.800+08:00</updated><title type='text'>Find tags in a included tags file</title><content type='html'>&lt;p&gt;&lt;a href="http://www.emacswiki.org/emacs/EtagsSelect"&gt;etags-select&lt;/a&gt;首先列出所有候选的tag定义位置，然后由用户选择其中一个；而不像etags那样每次跳到其中一个定义，如果用户发现不是自己想要的结果，则继续往下跳。&lt;/p&gt;&lt;p&gt;&lt;code&gt;etags-select&lt;/code&gt;有一个缺陷，不能处理included tags file，如Emacs Lisp的tags文件&lt;code&gt;TAGS-LISP&lt;/code&gt;。不过，如果想弥补它也很容易，只需重定义其中一个函数即可。&lt;/p&gt;&lt;blockquote&gt;&lt;pre&gt;(defun etags-select-get-tag-files ()
  "Get tag files."
  (if etags-select-use-xemacs-etags-p
      (buffer-tag-table-list)
    (mapcar 'tags-expand-table-name tags-table-list)
    (tags-table-check-computed-list)
    tags-table-computed-list))&lt;/pre&gt;&lt;/blockquote&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/20394991-6394436375396973108?l=www.wanglianghome.org%2Fblog%2Findex.html'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/6394436375396973108/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=20394991&amp;postID=6394436375396973108' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6394436375396973108'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/20394991/posts/default/6394436375396973108'/><link rel='alternate' type='text/html' href='http://www.wanglianghome.org/blog/2009/02/find-tags-in-included-tags-file.html' title='Find tags in a included tags file'/><author><name>netcasper</name><uri>http://www.blogger.com/profile/09923405180744914893</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='10274201188379799259'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>