<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.feedsky.com/styles/temp01.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.feedsky.com/laihj1984" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/laihj1984" type="application/rss+xml"></fs:self_link><lastBuildDate>Wed, 03 Feb 2010 11:25:05 GMT</lastBuildDate><title>右舷</title><description>Dream as if you'll live forever.  Live as if you'll die today.</description><link>http://www.laihj.net</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Thu, 04 Feb 2010 12:42:14 GMT</pubDate><item><title>[elisp]针对Emacs中文本编辑的编程简介</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226337/5313918/1/item.html</link><content:encoded>&lt;p&gt;&lt;img class=&quot;alignleft size-full wp-image-650126&quot; title=&quot;emacs&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/02/images.jpg&quot; alt=&quot;emacs&quot; width=&quot;91&quot; height=&quot;91&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Elisp是Emacs下的Lisp方言，而Emacs是一款编辑器。那么针对于Emacs，Lisp要做的很重要一部分工作当然就是对编辑的自动化支持。比如移动鼠标，输入句子，查找替换，代码高亮等等，简单地说，就是为更好更方便地支持文本编辑提供支持。而把这些函数都重合起来，就起成了Emacs mode。如我们常用的C++ mode,python mode。还有之前我一直在介绍的org-mode等，都是由Elisp拼成的。&lt;/p&gt;
&lt;p&gt;学习Elisp，可以满足对Emacs进行定制的需求，你可以把想要的功能写在.el文件里面，让Emacs来调用。一方面可以实现一些简单的轻量级的功能，而不需要为此寻找和安装一个完整的mode。另一方面，可以修改现有的mode，使得更符合自己的习惯。这符合开源的作法，不爽即改。&lt;/p&gt;
&lt;h3&gt;Elisp函数的简单例子&lt;/h3&gt;
&lt;h4&gt;光标位置&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;  ;返回当前光标的位置
  (point)
  ;region的头跟尾
  (region-beginning)
  (region-end)
  ;最大光标位置（即文件尾），elisp还提供最小光标位置(point-min)，不过我觉得那应该都是1吧。
  (point-max)
  ;返回buffer结尾的绝对位置，无视narrow-to-region
  (buffer-end 1)&lt;/pre&gt;
&lt;h4&gt;移动光标和搜索&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;;移动光标到392
(goto-char 392)

; 向前/向后移动n字符
(forward-char n)
(backward-char n)

; 跳过所有\n\t,即把光标移动第一个不是换行或制表符那里
; 返回移动的字符数
(skip-chars-forward &quot;\n\t&quot;)
(skip-chars-backward &quot;\n\t&quot;)

#移动光标到myStr后面，向前和向后
#返回新的光标位置
(search-forward myStr)
(search-backward myStr)

; 同上，但是参数是正则表达式，myRegex
; 返回新的光标位置
(re-search-forward myRegex)
(re-search-backward myRegex)&lt;/pre&gt;
&lt;h4&gt;文本编辑&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;; 删除光标后的九个字符
(delete-char 9)

; 删除选中的两点之前的文本
(delete-region mystartpos myendpos)

; 在当前光标位置插入一字符串
(insert &quot;Forza Inter&quot;)

; 从buffer中获得一个字符串并赋给mystr
(setq Mystr (buffer-substring mystartpos myendpos))

; 改变字符大小写
;这个例子是指当前光标之前的20个字符
(rapitalize-region (- (point) 20) (point))&lt;/pre&gt;
&lt;h4&gt;字符串&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;; 长度
(length &quot;abc&quot;) ; returns 3

; 获取一个子串
(substring myStr startIndex endIndex)

; 替换，以正则方式
(replace-regexp-in-string myRegex myReplacement myStr)&lt;/pre&gt;
&lt;h4&gt;Buffers&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;; 当前buffer的名字
(buffer-name)

; 文件名（全路径)
(buffer-file-name)

; 设定一个buffer名
(set-buffer myBufferName)

; 保存
(save-buffer)

; 关闭指定的buffer
(kill-buffer myBuffName)

; 关闭当前buffer
(kill-this-buffer)

; 临时指定一个buffer作为当前buffer
(with-current-buffer myBuffer
  ;; do something here ...
)&lt;/pre&gt;
&lt;h4&gt;Files&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;; 打开一个文件
(find-file myPath)

; 另存
; 会关闭当前的buffer，打开另存好的文件
(write-file myPath)

; 把一个文件内容插入到当前位置
(insert-file-contents myPath)

; 将选中的评论文本加到某个文件后面
(append-to-file myStartPos myEndPos myPath)

; 重命名
(rename-file fileName newName)

; 复制
(copy-file oldName newName)

; 删除
(delete-file fileName)

; 获取路径
(file-name-directory myFullPath)

; 获取文件名(不含路径)
(file-name-nondirectory myFullPath)

; 得到文件名后缀
(file-name-extension myFileName)

; 获得不含后缀的文件名。
(file-name-sans-extension &quot;abc.htm&quot;)&lt;/pre&gt;
&lt;h4&gt;简单的例子&lt;/h4&gt;
&lt;pre class=&quot;py&quot;&gt;  (defun insert-p-tag ()
  &quot;Insert

 at cursor point.&quot;
  (interactive)
  (insert &quot;

&quot;)
  (backward-char 4))&lt;/pre&gt;
&lt;p&gt;在当前光标处插入一个p tag。做法是插放一个串，然后将光标移回4位。&lt;/p&gt;
&lt;h3&gt;编写一个mode&lt;/h3&gt;
&lt;p&gt;理论上来讲，知道上面这些东西，你就有能力编写一个mode了。但是，编写mode毕竟是一个复杂的工作，需要编写者对elisp编程具有&amp;#8221;hello world&amp;#8221;以上很多级的熟练度。&lt;/p&gt;
&lt;p&gt;在李杀网，作者有&lt;a href=&quot;http://xahlee.org/emacs/elisp_syntax_coloring.html&quot;&gt;一个系列文章来讨论如何为一个编程语言编写mode&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;The End. Have fun!&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/elipsemacslisp-basi/&quot; title=&quot;[elisp]EmacsLisp 基础 2010.01.31&quot;&gt;[elisp]EmacsLisp 基础&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-remember/&quot; title=&quot;Emacs的orgmode [remember] 2010.01.20&quot;&gt;Emacs的orgmode [remember]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-tags/&quot; title=&quot;Emacs的orgmode [tags］ 2010.01.15&quot;&gt;Emacs的orgmode [tags］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/code-complete-yasnippet/&quot; title=&quot;emacs代码补完－yasnippet 2010.01.8&quot;&gt;emacs代码补完－yasnippet&lt;/a&gt;(1)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-archieved/&quot; title=&quot;Emacs的orgmode [归档］ 2010.01.2&quot;&gt;Emacs的orgmode [归档］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-agenda-view/&quot; title=&quot;Emacs的org-mode [agenda view] 2009.12.29&quot;&gt;Emacs的org-mode [agenda view]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-%e6%97%a5%e6%9c%9f%e4%b8%8e%e6%97%b6%e9%97%b4/&quot; title=&quot;Emacs的org-mode [日期与时间] 2009.12.26&quot;&gt;Emacs的org-mode [日期与时间]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bbtodo%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［TODO］ 2009.12.25&quot;&gt;Emacs的org-mode［TODO］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bb%e5%88%9d%e6%8e%a2%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［初探］ 2009.12.24&quot;&gt;Emacs的org-mode［初探］&lt;/a&gt;(0)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226337/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226337/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226337/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226337/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/02/elisp-emacs-editing-basics/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Elisp是Emacs下的Lisp方言，而Emacs是一款编辑器。那么针对于Emacs，Lisp要做的很重要一部分工作当然就是对编辑的自动化支持。比如移动鼠标，输入句子，查找替换，代码高亮等等，简单地说，就是为更好更方便地支持文本编辑提供支持。而把这些函数都重合起来，就起成了Emacs mode。如我们常用的C++ mode,python mode。还有之前我一直在介绍的org-mode等，都是由Elisp拼成的。
学习Elisp，可以满足对Emacs进行定制的需求，你可以把想要的功能写在.el文件里面，让Emacs来调用。一方面可以实现一些简单的轻量级的功能，而不需要为此寻找和安装一个完整的mode。另一方面，可以修改现有的mode，使得更符合自己的习惯。这符合开源的作法，不爽即改。
Elisp函数的简单例子
光标位置
  ;返回当前光标的位置
  (point)
  ;region的头跟尾
  (region-beginning)
  (region-end)
  ;最大光标位置（即文件尾），elisp还提供最小光标位置(point-min)，不过我觉得那应该都是1吧。
  (point-max)
  ;返回buffer结尾的绝对位置，无视narrow-to-region
  (buffer-end 1)
移动光标和搜索
;移动光标到392
(goto-char 392)

; 向前/向后移动n字符
(forward-char n)
(backward-char n)

; 跳过所有\n\t,即把光标移动第一个不是换行或制表符那里
; 返回移动的字符数
(skip-chars-forward &quot;\n\t&quot;)
(skip-chars-backward &quot;\n\t&quot;)

#移动光标到myStr后面，向前和向后
#返回新的光标位置
(search-forward myStr)
(search-backward myStr)

; 同上，但是参数是正则表达式，myRegex
; 返回新的光标位置
(re-search-forward myRegex)
(re-search-backward myRegex)
文本编辑
; 删除光标后的九个字符
(delete-char 9)

; 删除选中的两点之前的文本
(delete-region mystartpos myendpos)

; 在当前光标位置插入一字符串
(insert &quot;Forza Inter&quot;)

; 从buffer中获得一个字符串并赋给mystr
(setq Mystr (buffer-substring mystartpos myendpos))

; 改变字符大小写
;这个例子是指当前光标之前的20个字符
(rapitalize-region (- (point) 20) (point))
字符串
; [...]&lt;img src=&quot;http://www1.feedsky.com/t1/329226337/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226337/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226337/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226337/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>emacs</category><category>负暄琐话</category><category>elisp</category><pubDate>Wed, 03 Feb 2010 19:25:05 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/02/elisp-emacs-editing-basics/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650125</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/02/elisp-emacs-editing-basics/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226337/5313918</fs:itemid></item><item><title>[elisp]EmacsLisp 基础</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226348/5313918/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://xahlee.org/emacs/elisp_basics.html&quot;&gt;来源:李杀网&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;李杀网有一枚elisp教程我很喜欢，原因是它不解释太多的名词，而从实际动作方面入手，对我的胃口。&lt;/p&gt;
&lt;p&gt;以下是相关的笔记。&lt;/p&gt;
&lt;h4&gt;运行方式：&lt;/h4&gt;
&lt;p&gt;作为一个实践的手册，第一件事当然是告诉如果运行一行代码，让你在看指南的过程中可以方便地动手尝试。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;eval-last-sexp&lt;/li&gt;
&lt;p&gt;输入后把光标移到表达式后面，如“(+ 3 4)”后面，然后输入&amp;#8221;Alt+x eval-last-sexp&amp;#8221;或者使用快捷键&amp;#8221;C-x C-e&amp;#8221;，就可以在mini buffer看到这一句的运行结果&amp;#8221;7&amp;#8243;。&lt;/p&gt;
&lt;li&gt;eval-region&lt;/li&gt;
&lt;p&gt;解释选中的区域。&lt;/p&gt;
&lt;li&gt;ielm&lt;/li&gt;
&lt;p&gt;打开一个交互式的elips命令行解释器。&lt;/p&gt;
&lt;/ul&gt;
&lt;h4&gt;寻找帮助:&lt;/h4&gt;
&lt;p&gt;&lt;P&gt;可以使用&amp;#8221;Alt + x describe-function&amp;#8221;(快捷键&amp;#8221;C-h f&amp;#8221;)来查找一个函数的用法。也可以使用&amp;#8221;Alt+x elisp-index-search&amp;#8221;在手参考手册中查询。&lt;/p&gt;
&lt;h3&gt;常用函数&lt;/h3&gt;
&lt;h4&gt;打印&lt;/h4&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (message &quot;hi&quot;)
  (message &quot;her age is:%d&quot; 16) ;%d 数字
  (message &quot;her name is: %s&quot; &quot;Vicky&quot;) ;%s 字符串
  (message &quot;her min init is: %c&quot; 86) ;%c 字符
&lt;/pre&gt;
&lt;p&gt;注意：你可以在*message* buffer中看到打印出来的结果。&lt;/p&gt;
&lt;h4&gt;运算函数&lt;/h4&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
(+ 4 5 1 )  ;=10
(- 9 2)     ;=7
(* 2 3)     ;=6
(* 2 3 4)   ;=24
(/ 7 2)     ;=3  结果的整数部分
(/ 7 2.0)   ;=3.5
(% 7 4)     ;=3 余数
&lt;/pre&gt;
&lt;p&gt;注意，如果你的操作数是小数，必须把后面的0带上。就是说你应该写2.0，而不是2.。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (integerp 3.)  ;T
  (floatp 3.)    ;nil
  (floatp 3.0)   ;T
&lt;/pre&gt;
&lt;p&gt;以字符p结尾的函数通常意味着它的返回值是True或者False。p意味着&amp;#8221;predicate&amp;#8221;(判定)。&lt;/p&gt;
&lt;h4&gt;True和False&lt;/h4&gt;
&lt;p&gt;在elisp中，标识&amp;#8221;nil&amp;#8221;代表false，其它的一切都是true,包括0。&amp;#8221;nil&amp;#8221;是空链表&amp;#8221;()&amp;#8221;的同义词。所以&amp;#8221;()&amp;#8221;也是false。&lt;/p&gt;
&lt;p&gt;按惯例，标识&amp;#8221;t&amp;#8221;用来表示true。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (and t nil) ; nil
  (or t nil)  ; t
&lt;/pre&gt;
&lt;p&gt;在elisp中没有布尔型，只需记住&amp;#8221;nil&amp;#8221;和&amp;#8221;()&amp;#8221;是false，其它一切都是true。&lt;/p&gt;
&lt;h4&gt;比较函数&lt;/h4&gt;
&lt;p&gt;比较数字&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (&lt; 3 4) ;小于
  (&lt;= 3 4)  ;小于等于
  (&gt; 3 4)  ;大于
  (&gt;= 3 4) ;大于等于
  (= 3 3)  ;等于
&lt;/pre&gt;
&lt;p&gt;比较字符串&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (string= &quot;this&quot; &quot;thiS&quot;)
  (string&lt; &quot;a&quot; &quot;b&quot;)
  (string&lt; &quot;B&quot; &quot;b&quot;)
&lt;/pre&gt;
&lt;p&gt;在字符串比较中大小写是敏感的。比较依据是字典顺序。&lt;/p&gt;
&lt;p&gt;要比较两个sysbols是否有相同的数据类型和值，使用&quot;equal&quot;。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
(equal &quot;abc&quot; &quot;abc&quot;) ;t
(equal 3 3)         ;t
(equal 3 3.0)       ;nil.类型不同
(equal '(3 4 5) '(3 4 5))  ; t
(equal '(3 4 5) '(3 4 &quot;5&quot;))  ;nil
&lt;/pre&gt;
&lt;p&gt;在Elisp中并没有&quot;!=&quot;或者“not-equal”。判断不等，可以在对整个等式取非。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (not (= 3 4))  ;t
&lt;/pre&gt;
&lt;h4&gt;全局和局部变量&lt;/h4&gt;
&lt;p&gt;&quot;setq&quot;用于给变量赋值。格式一般为&quot;setq 变量1 值1 变量2 值2...&quot;&lt;/p&gt;
&lt;p&gt;在lisp中，变量不需要声时，并且是全局的。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (setq a 3 b 2 c 7)  ;三个变是，a=3 b=2 c=7
&lt;/pre&gt;
&lt;p&gt;定义局部变量，使用let。格式为&quot;(let (变量1 变量2) body)&quot;。&quot;body&quot;代表其它的表达式。其中最后一个表达式的取值是整个语句块的返回值。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (let (a b)
  (setq a 3)
  (setq b 4)
  (+ a b)
  )
&lt;/pre&gt;
&lt;p&gt;a和b都是这个语句块的局部变量，返值是最后一个表达式&quot;(+ a b)&quot;的取值。&lt;/p&gt;
&lt;p&gt;另一种格式是&quot;(let ((变量1 值1)(变量2 值2)) body )&quot;。例如：&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (let ((a 3) (b 4))
  (+ a b)
  )
&lt;/pre&gt;
&lt;p&gt;如果你的变量很少，并且值都是已经确定的，可以用这种方法。&lt;/p&gt;
&lt;h4&gt;表达式块&lt;/h4&gt;
&lt;p&gt;有时需要把一些表达式括起来。这时可以使用&quot;progn&quot;。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (progn (message &quot;hi&quot;))
&lt;/pre&gt;
&lt;p&gt;它相当于&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (message &quot;hi&quot;)
&lt;/pre&gt;
&lt;p&gt;&quot;progn&quot;类似于C语言中的&quot;{...}&quot;。它使用于某些需要把语句合并起来的场合，其实这跟C语言中也是一样的。比如：&quot;(if something (progn this that))&quot;。这里，如果把progn去掉，变成&quot;(if somethong this that&quot;，在lisp中表示如果something,那么this,否则that。在有progn把this和that括真情 为情况下，表示的是如果something，那么执行this和that。&lt;/p&gt;
&lt;h4&gt;If then else&lt;/h4&gt;
&lt;p&gt;格式为&quot;(if test then &lt;else&gt;)&quot;。&quot;else&quot;是可选的。例：&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (if (&lt; 3 2) (message &quot;yes&quot;)))
  (if (&lt; 3 2) (message &quot;yes&quot;) (message &quot;no&quot;)))
&lt;/pre&gt;
&lt;h4&gt;迭代循环&lt;/h4&gt;
&lt;p&gt;使用while。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (setq x 0)
  (while (&lt; x 4)
     (princ (format &quot;yay %d.&quot; x))
     (setq x (+ 1 x)))
&lt;/pre&gt;
&lt;p&gt;在elisp中，并没有for语句。&lt;/p&gt;
&lt;h4&gt;Lists&lt;/h4&gt;
&lt;p&gt;在lisp中的List是这样的：“'(x y z)”。括号前面那个单引号是很重要的。不需要太在意它的含义，把它当成句法的一部份即可。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (message &quot;%S&quot; '(a b c))
  (setq mylist '(a b c))  ;定义
  (let ((x 3) (y 4) (z 5))
      (message &quot;%S&quot; (list x y z))
  )
&lt;/pre&gt;
&lt;p&gt;以下是List的一些函数：&lt;/p&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;th&gt;目的&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(car mylist)&lt;/td&gt;
&lt;td&gt;取第一个元素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(nth n mylist)&lt;/td&gt;
&lt;td&gt;最第n个元素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(car (last mylist))&lt;/td&gt;
&lt;td&gt;取最后一个元素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(cdr mylist)&lt;/td&gt;
&lt;td&gt;从第二个到最后一个&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(nthcdr n mylist)&lt;/td&gt;
&lt;td&gt;从第n个到最后一个元素&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(butlast mylist n)&lt;/td&gt;
&lt;td&gt;不包含n到最后一个元素&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;这里所说的n，都是从0开始的。&lt;/p&gt;
&lt;p&gt;下列是一些例子。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (car (list &quot;a&quot; &quot;b&quot; &quot;c&quot;))
  (nth 2 (list &quot;a&quot; &quot;b&quot; &quot;c&quot;))
  (last (list &quot;a&quot; &quot;b&quot; &quot;c&quot;))
&lt;/pre&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;caption&gt;Basic List Functions&lt;/caption&gt;
&lt;tr&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;th&gt;目的&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(length mylist)&lt;/td&gt;
&lt;td&gt;List长度&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(cons x mylist)&lt;/td&gt;
&lt;td&gt;把x加到list前面&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(append mylist1 mylist2)&lt;/td&gt;
&lt;td&gt;连接两个List&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;例如:&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (length (list &quot;a&quot; &quot;b&quot; &quot;c&quot;))
&lt;/pre&gt;
&lt;table border=&quot;1&quot;&gt;
&lt;tr&gt;
&lt;th&gt;Function&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(pop mylist)&lt;/td&gt;
&lt;td&gt;删除第一个元素并返回&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(nbutlast mylist n)&lt;/td&gt;
&lt;td&gt;删除第n个元素，返回删除后的list.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(setcar mylist x)&lt;/td&gt;
&lt;td&gt;替换第一个元素，并返回&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;(setcdr mylist x)&lt;/td&gt;
&lt;td&gt;替换除第一个之外的所有元素 &lt;/tr&gt;
&lt;/table&gt;
&lt;h4&gt;遍历运算数组&lt;/h4&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (mapcar '1+ '(1 2 3 4))
&lt;/pre&gt;
&lt;p&gt;上例的做所是遍历list中的每一个元素，并对它进行&quot;1+&quot;的操作。&lt;/p&gt;
&lt;p&gt;当然，也可以用while循环来完成这件事。&lt;/p&gt;
&lt;h4&gt;定义函数&lt;/h4&gt;
&lt;p&gt;基本的函数定义方式是&quot;defun &lt;name&gt; (param) &quot;doc&quot; &lt;body&gt;&quot;。&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;py&quot;&gt;
  (defun myFunction () &quot;testing&quot; (message &quot;Yay!&quot;))
&lt;/pre&gt;
&lt;p&gt;myFunction是函数名，这个函数无参，函数注释&quot;testing&quot;，后面是函数体。&lt;/p&gt;
&lt;p&gt;可以在doctsing后面加一个&quot;interactive&quot;来使得函数能跟环境进行交互（在emacs中，就呆以可用&quot;Alt + x&quot;来调用）&lt;/p&gt;
&lt;p&gt;interactive的一些常用语法:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;(interactive) 无参&lt;/li&gt;
&lt;li&gt;(interactive &quot;n&quot;) 一个数字参数&lt;/li&gt;
&lt;li&gt;(interactive &quot;s&quot;) 一个字符串参数&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/02/elisp-emacs-editing-basics/&quot; title=&quot;[elisp]针对Emacs中文本编辑的编程简介 2010.02.3&quot;&gt;[elisp]针对Emacs中文本编辑的编程简介&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-remember/&quot; title=&quot;Emacs的orgmode [remember] 2010.01.20&quot;&gt;Emacs的orgmode [remember]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-tags/&quot; title=&quot;Emacs的orgmode [tags］ 2010.01.15&quot;&gt;Emacs的orgmode [tags］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/code-complete-yasnippet/&quot; title=&quot;emacs代码补完－yasnippet 2010.01.8&quot;&gt;emacs代码补完－yasnippet&lt;/a&gt;(1)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-archieved/&quot; title=&quot;Emacs的orgmode [归档］ 2010.01.2&quot;&gt;Emacs的orgmode [归档］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-agenda-view/&quot; title=&quot;Emacs的org-mode [agenda view] 2009.12.29&quot;&gt;Emacs的org-mode [agenda view]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-%e6%97%a5%e6%9c%9f%e4%b8%8e%e6%97%b6%e9%97%b4/&quot; title=&quot;Emacs的org-mode [日期与时间] 2009.12.26&quot;&gt;Emacs的org-mode [日期与时间]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bbtodo%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［TODO］ 2009.12.25&quot;&gt;Emacs的org-mode［TODO］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bb%e5%88%9d%e6%8e%a2%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［初探］ 2009.12.24&quot;&gt;Emacs的org-mode［初探］&lt;/a&gt;(0)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226348/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226348/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226348/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226348/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/elipsemacslisp-basi/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>来源:李杀网
李杀网有一枚elisp教程我很喜欢，原因是它不解释太多的名词，而从实际动作方面入手，对我的胃口。
以下是相关的笔记。
运行方式：
作为一个实践的手册，第一件事当然是告诉如果运行一行代码，让你在看指南的过程中可以方便地动手尝试。

eval-last-sexp
输入后把光标移到表达式后面，如“(+ 3 4)”后面，然后输入&amp;#8221;Alt+x eval-last-sexp&amp;#8221;或者使用快捷键&amp;#8221;C-x C-e&amp;#8221;，就可以在mini buffer看到这一句的运行结果&amp;#8221;7&amp;#8243;。
eval-region
解释选中的区域。
ielm
打开一个交互式的elips命令行解释器。

寻找帮助:
可以使用&amp;#8221;Alt + x describe-function&amp;#8221;(快捷键&amp;#8221;C-h f&amp;#8221;)来查找一个函数的用法。也可以使用&amp;#8221;Alt+x elisp-index-search&amp;#8221;在手参考手册中查询。
常用函数
打印

  (message &quot;hi&quot;)
  (message &quot;her age is:%d&quot; 16) ;%d 数字
  (message &quot;her name is: %s&quot; &quot;Vicky&quot;) ;%s 字符串
  (message &quot;her min init is: %c&quot; 86) ;%c 字符

注意：你可以在*message* buffer中看到打印出来的结果。
运算函数

(+ 4 5 1 )  ;=10
(- 9 2)     ;=7
(* [...]&lt;img src=&quot;http://www1.feedsky.com/t1/329226348/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226348/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226348/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226348/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>emacs</category><category>善其事</category><category>elisp</category><pubDate>Sun, 31 Jan 2010 14:48:42 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/elipsemacslisp-basi/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650122</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/elipsemacslisp-basi/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226348/5313918</fs:itemid></item><item><title>这就是乔不死同学的ipad?</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226353/5313918/1/item.html</link><content:encoded>&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-650119&quot; title=&quot;hardware&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/hardware.jpg&quot; alt=&quot;hardware&quot; width=&quot;400&quot; height=&quot;233&quot; /&gt;&lt;/p&gt;
&lt;p&gt;私人表示有点失望。&lt;/p&gt;
&lt;p&gt;从规格上来讲，这就是一枚大号的iPhone，乔不死同学敢不敢给它加一个打电话的功能？&lt;/p&gt;
&lt;p&gt;乔不死同学之前放话说这是他迄今最重要的事，如果只是把iPhone加大的话，这确实让人失望得多。&lt;/p&gt;
&lt;p&gt;凭心而论，iPad是一款很好的产品，操作感应该没得说，这点我们不需要亲自上手就可以信任苹果。&lt;/p&gt;
&lt;p&gt;只不过，我觉得，大伙儿的失望，从某种意义上来说是对苹果公司的高期望引起的。如果是微软，我们觉得他们把我们想得到的东西实现就了不得了，而苹果不同，我们对苹果的期望是这样的：“告诉我，这玩意比你想得更酷。你想不到机器还可以这样操作吗？”&lt;/p&gt;
&lt;p&gt;乔布斯带来了一个大玩具，可惜我们觉得不是太新鲜。&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;0&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226353/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226353/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226353/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226353/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/is-this-jobs-ipad/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>私人表示有点失望。
从规格上来讲，这就是一枚大号的iPhone，乔不死同学敢不敢给它加一个打电话的功能？
乔不死同学之前放话说这是他迄今最重要的事，如果只是把iPhone加大的话，这确实让人失望得多。
凭心而论，iPad是一款很好的产品，操作感应该没得说，这点我们不需要亲自上手就可以信任苹果。
只不过，我觉得，大伙儿的失望，从某种意义上来说是对苹果公司的高期望引起的。如果是微软，我们觉得他们把我们想得到的东西实现就了不得了，而苹果不同，我们对苹果的期望是这样的：“告诉我，这玩意比你想得更酷。你想不到机器还可以这样操作吗？”
乔布斯带来了一个大玩具，可惜我们觉得不是太新鲜。
Related Posts0Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226353/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226353/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226353/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226353/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>apple</category><category>ipod</category><category>负暄琐话</category><pubDate>Thu, 28 Jan 2010 10:08:58 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/is-this-jobs-ipad/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650117</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/is-this-jobs-ipad/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226353/5313918</fs:itemid></item><item><title>G3入手</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226356/5313918/1/item.html</link><content:encoded>&lt;p&gt;&lt;img class=&quot;aligncenter size-full wp-image-650113&quot; title=&quot;G3&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/G3.png&quot; alt=&quot;G3&quot; width=&quot;700&quot; height=&quot;520&quot; /&gt;&lt;/p&gt;
&lt;p&gt;G3入手，花了约六分之一平米房子的钱。感觉1.5的固件在重力感应横竖屏切换的时候慢得难受。其它一切都好&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;0&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226356/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226356/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226356/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226356/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/g3inmyhand/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>G3入手，花了约六分之一平米房子的钱。感觉1.5的固件在重力感应横竖屏切换的时候慢得难受。其它一切都好
Related Posts0Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226356/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226356/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226356/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226356/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>负暄琐话</category><pubDate>Wed, 27 Jan 2010 21:42:28 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/g3inmyhand/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650112</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/g3inmyhand/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226356/5313918</fs:itemid></item><item><title>新人在团队中应该问什么样的问题</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226359/5313918/1/item.html</link><content:encoded>&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;我个人觉得，如果团队有文档，那当然最重要的是先RTFM，没文档的团队免不了要问问题，其实我们喜欢新人问问题多过新人把代码弄得一团糟。但要注意的是，新人应该问的是老人能够几十秒之内回答的问题。&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;p&gt;而且，这样的问题并不能培养一个人的编码能力，天天从天上掉下来大鱼的话，人是会懒地，他必然学不会渔的能力。&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;0&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226359/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226359/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226359/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226359/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/question-to-ask-in-team/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>最近团队中来一个外包，一起搞一个要得很急的项目，大概是年底发。
新人最近提的问题，让我总是忍不住想扔给他一篇《提问的智慧》，砸砸他的脑袋。
此君动不动就咬死了原来的代码行不通，这倒没什么，问题是在此基础上，他并不会提出自己的办法，而是拼命地问你怎么办怎么办怎么办，要求你给出一个方案来实行。
我觉得这样的问题不如不问，对谁都没有好处。
那么刚到团队的新人应该怎么问问题呢？
我个人觉得，如果团队有文档，那当然最重要的是先RTFM，没文档的团队免不了要问问题，其实我们喜欢新人问问题多过新人把代码弄得一团糟。但要注意的是，新人应该问的是老人能够几十秒之内回答的问题。
比如说，作为新人，不应该直接问为什么调用这个功能是为什么弹出提示说“没有权限”，而应该跟代码跟到相关的数据表，然后问在这种情况下为什么这个数据库表的值不对。
因为，一个团队，加进一个程序员，本质上来说目的只有一个：加快团队开发的效率，而前少项目交付的时间。
新人来问我问题，如果这个问题我知道，很好，我乐意告诉你。这样节省了走弯路的时间，有利于整个团队的效率。如果我不知道，那么这个问题应该打住，请君自己去看代码，而不是要求我帮忙看代码，或者要求我去思考出一个方案由你来执行。
因为不管是让我去帮忙读代码或让我出方案，都是一个时间浪费的问题。一方面，我得停下手头的工作，另一方面，在我帮忙的这段时间，新人实际上是闲着的。
并且，团队招一个新人，并不是为了写代码，而是为了解决问题。我们招一个人来，应该是看中其独立思考解决问题的能力，而不是为了得到一个编写代码的工具。如果只是一个按给定方案来写代码的工具的话，相比于人类，某些二进制代码组成的工具说不定是更好的选择。
而且，这样的问题并不能培养一个人的编码能力，天天从天上掉下来大鱼的话，人是会懒地，他必然学不会渔的能力。
Related Posts0Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226359/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226359/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226359/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226359/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>善其事</category><pubDate>Wed, 27 Jan 2010 20:47:21 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/question-to-ask-in-team/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650107</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/question-to-ask-in-team/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226359/5313918</fs:itemid></item><item><title>R.I.P Sun</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226363/5313918/1/item.html</link><content:encoded>&lt;p&gt;&lt;img src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/20100122-033941-pic1.jpg&quot; alt=&quot;RIP,SUN&quot; title=&quot;RIP,SUN&quot; width=&quot;700&quot; height=&quot;547&quot; class=&quot;aligncenter size-full wp-image-650104&quot; /&gt;&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;0&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226363/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226363/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226363/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226363/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/r-i-p-sun/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Related Posts0Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226363/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226363/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226363/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226363/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>sun</category><category>负暄琐话</category><pubDate>Fri, 22 Jan 2010 09:11:50 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/r-i-p-sun/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650105</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/r-i-p-sun/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226363/5313918</fs:itemid></item><item><title>Emacs的orgmode [remember]</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226366/5313918/1/item.html</link><content:encoded>&lt;h3&gt;&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/remember1.png&quot; alt=&quot;remember1&quot; title=&quot;remember1&quot; width=&quot;645&quot; height=&quot;482&quot; class=&quot;aligncenter size-full wp-image-650100&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Inbox,在GTD的定义里面是收集材料的工具。最好的Inbox工具是纸和笔。而Remember在Orgmode里面算是较好的Inbox工具。它比每次打开org文件来写好非常非常多。它提供的是在emacs启动的情况下，快速的录入工具。如果你的emacs没启动，那用便箋或纸笔会好得多。原因很简单，emacs什么都好，就是启动太龟了。&lt;/p&gt;
&lt;h3&gt;配置和基本使用&lt;/h3&gt;
&lt;p&gt;remember.el在emacs23以上版本是自带的，emacs22及以下版本如果发现没有自带，请自行放狗搜。&lt;/p&gt;
&lt;p&gt;&lt;pre name=&quot;code&quot; class=&quot;css&quot;&gt;
    (setq org-default-notes-file &quot;~/.notes&quot;)
  &lt;/pre&gt;
&lt;/p&gt;
&lt;p&gt;在.emacs中作如上设置，表示你希望将remember产生的note存放在~/.notes中，要我说这可一点也不重要，重要的是下面这一行：&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;css&quot;&gt;
  (define-key global-map [f12] 'org-remember)
&lt;/pre&gt;
&lt;p&gt;快键键。当然，快捷键从来很重要。不过在remember模式中，它显得尤其重要。因为本身remember是随时需要的东西，用完后又应该随时忘掉。所以调用remember应该越不影响当前的思路又好。一个要键入&amp;#8221;M-x org-remember&amp;#8221;这么多字符才能调出来的remember又有什么用？&lt;/p&gt;
&lt;p&gt;我觉得remeber的用法应该是这样的：&lt;/p&gt;
&lt;p&gt;现在我想起来晚上海贼王的汉化应该出新的了，接F12调出remember,输入OP，然后“C-c C-c”保存(C-c C-k是取消)，remember buffer自动消失，整个emacs又恢复成写这篇blog的界面。&lt;/p&gt;
&lt;p&gt;现在的问题是，我一天可能乱七八糟的出现不少想法，每次都按F12来记录是好的，晚上回家一看，~/.noet里面充满了记录，一条一条分门另类地复制了不同的org文件中。我承认这是重要的工作，无可避免。可是有些想法我在记录的时候就知道它应该是todo还是普通的笔记，能不能让它们自动归位呢？&lt;/p&gt;
&lt;p&gt;于是我们应该开始介绍：&lt;/p&gt;
&lt;h3&gt;模版&lt;/h3&gt;
&lt;p&gt;模版的配置文件如下：&lt;/p&gt;
&lt;pre name=&quot;code&quot; class=&quot;css&quot;&gt;
  (setq org-remember-templates
      '((&quot;TODO&quot; ?t &quot;* TODO %?\n %x\n %a&quot; &quot;~/doc/org/home.org&quot; &quot;Tasks&quot;)
	(&quot;IDEA&quot; ?i &quot;* IDEA %?\n %i\n %a&quot; &quot;~/doc/org/home.org&quot; &quot;Idea&quot;)
	))
&lt;/pre&gt;
&lt;p&gt;它的参数是这样的，&amp;#8221;TODO&amp;#8221;是这个模版的名,&amp;#8221;?t&amp;#8221;是快捷键，&amp;#8221;* TODO %?\n %x\n %a&amp;#8221;是整个模版体，然后是该模版要保存的文件，保存后的项目在文件中处于哪个父节点下面(如果没有会自动新建)。&lt;/p&gt;
&lt;p&gt;我们以第一个模版为例说一下使用中会发生什么？&lt;/p&gt;
&lt;p&gt;当你按下F12（这是我的快捷键）时，会看到buffer被切分成两块，下面出现一个rememeber fuffer。以及一个输入提示，按我们之前的设定，出现两个快捷提示。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/remembertemp.png&quot; alt=&quot;remembertemp&quot; title=&quot;remembertemp&quot; width=&quot;622&quot; height=&quot;425&quot; class=&quot;alignnone size-full wp-image-650099&quot; /&gt;&lt;/p&gt;
&lt;p&gt;这时按下“t”,在remember buffer中，会自动接模版体的格式显示出补好的TODO,第一行是“* TODO”，第二行是%x，%x是你触发remember时kill ring（类似于剪贴板）中的内容。最后一行是%a，一个指向你触发remember的地方的link。&lt;/p&gt;
&lt;p&gt;这时如果你按下&amp;#8221;C-c C-c&amp;#8221;保存，这一条TODO项目将会被送到&amp;#8221;~/doc/org/home.org&amp;#8221;文件中的&amp;#8221;Tasks&amp;#8221;条目下面。&lt;/p&gt;
&lt;p&gt;模版还有一些好玩的用法，比如说&lt;a ref=&quot;&quot;&gt;写日记&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;关于模版参数的更详细说明，可以在&lt;a href=&quot;http://orgmode.org/manual/Remember-templates.html#Remember-templates&quot;&gt;这里&lt;/a&gt;找到&lt;/p&gt;
&lt;h3&gt;参考资料&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;http://orgmode.org/manual/Remember.html#Remember&quot;&gt;org手册remember&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;http://sachachua.com/wp/2007/10/remembering-to-org-and-planner/&quot;&gt;Remembering to Org and Planner&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-tags/&quot; title=&quot;Emacs的orgmode [tags］ 2010.01.15&quot;&gt;Emacs的orgmode [tags］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-archieved/&quot; title=&quot;Emacs的orgmode [归档］ 2010.01.2&quot;&gt;Emacs的orgmode [归档］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-agenda-view/&quot; title=&quot;Emacs的org-mode [agenda view] 2009.12.29&quot;&gt;Emacs的org-mode [agenda view]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-%e6%97%a5%e6%9c%9f%e4%b8%8e%e6%97%b6%e9%97%b4/&quot; title=&quot;Emacs的org-mode [日期与时间] 2009.12.26&quot;&gt;Emacs的org-mode [日期与时间]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bbtodo%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［TODO］ 2009.12.25&quot;&gt;Emacs的org-mode［TODO］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bb%e5%88%9d%e6%8e%a2%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［初探］ 2009.12.24&quot;&gt;Emacs的org-mode［初探］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/02/elisp-emacs-editing-basics/&quot; title=&quot;[elisp]针对Emacs中文本编辑的编程简介 2010.02.3&quot;&gt;[elisp]针对Emacs中文本编辑的编程简介&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/elipsemacslisp-basi/&quot; title=&quot;[elisp]EmacsLisp 基础 2010.01.31&quot;&gt;[elisp]EmacsLisp 基础&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/code-complete-yasnippet/&quot; title=&quot;emacs代码补完－yasnippet 2010.01.8&quot;&gt;emacs代码补完－yasnippet&lt;/a&gt;(1)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226366/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226366/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226366/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226366/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/emacs-orgmode-remember/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>Inbox,在GTD的定义里面是收集材料的工具。最好的Inbox工具是纸和笔。而Remember在Orgmode里面算是较好的Inbox工具。它比每次打开org文件来写好非常非常多。它提供的是在emacs启动的情况下，快速的录入工具。如果你的emacs没启动，那用便箋或纸笔会好得多。原因很简单，emacs什么都好，就是启动太龟了。
配置和基本使用
remember.el在emacs23以上版本是自带的，emacs22及以下版本如果发现没有自带，请自行放狗搜。

    (setq org-default-notes-file &quot;~/.notes&quot;)
  

在.emacs中作如上设置，表示你希望将remember产生的note存放在~/.notes中，要我说这可一点也不重要，重要的是下面这一行：

  (define-key global-map [f12] 'org-remember)

快键键。当然，快捷键从来很重要。不过在remember模式中，它显得尤其重要。因为本身remember是随时需要的东西，用完后又应该随时忘掉。所以调用remember应该越不影响当前的思路又好。一个要键入&amp;#8221;M-x org-remember&amp;#8221;这么多字符才能调出来的remember又有什么用？
我觉得remeber的用法应该是这样的：
现在我想起来晚上海贼王的汉化应该出新的了，接F12调出remember,输入OP，然后“C-c C-c”保存(C-c C-k是取消)，remember buffer自动消失，整个emacs又恢复成写这篇blog的界面。
现在的问题是，我一天可能乱七八糟的出现不少想法，每次都按F12来记录是好的，晚上回家一看，~/.noet里面充满了记录，一条一条分门另类地复制了不同的org文件中。我承认这是重要的工作，无可避免。可是有些想法我在记录的时候就知道它应该是todo还是普通的笔记，能不能让它们自动归位呢？
于是我们应该开始介绍：
模版
模版的配置文件如下：

  (setq org-remember-templates
      '((&quot;TODO&quot; ?t &quot;* TODO %?\n %x\n %a&quot; &quot;~/doc/org/home.org&quot; &quot;Tasks&quot;)
	(&quot;IDEA&quot; ?i &quot;* IDEA %?\n %i\n %a&quot; &quot;~/doc/org/home.org&quot; &quot;Idea&quot;)
	))

它的参数是这样的，&amp;#8221;TODO&amp;#8221;是这个模版的名,&amp;#8221;?t&amp;#8221;是快捷键，&amp;#8221;* TODO %?\n %x\n %a&amp;#8221;是整个模版体，然后是该模版要保存的文件，保存后的项目在文件中处于哪个父节点下面(如果没有会自动新建)。
我们以第一个模版为例说一下使用中会发生什么？
当你按下F12（这是我的快捷键）时，会看到buffer被切分成两块，下面出现一个rememeber fuffer。以及一个输入提示，按我们之前的设定，出现两个快捷提示。

这时按下“t”,在remember buffer中，会自动接模版体的格式显示出补好的TODO,第一行是“* TODO”，第二行是%x，%x是你触发remember时kill ring（类似于剪贴板）中的内容。最后一行是%a，一个指向你触发remember的地方的link。
这时如果你按下&amp;#8221;C-c C-c&amp;#8221;保存，这一条TODO项目将会被送到&amp;#8221;~/doc/org/home.org&amp;#8221;文件中的&amp;#8221;Tasks&amp;#8221;条目下面。
模版还有一些好玩的用法，比如说写日记。
关于模版参数的更详细说明，可以在这里找到
参考资料
org手册remember
Remembering to Org and [...]&lt;img src=&quot;http://www1.feedsky.com/t1/329226366/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226366/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226366/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226366/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>orgmode</category><category>emacs</category><category>善其事</category><category>remember</category><pubDate>Wed, 20 Jan 2010 18:42:57 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/emacs-orgmode-remember/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650098</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/emacs-orgmode-remember/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226366/5313918</fs:itemid></item><item><title>塔希里亚三出来了。</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226369/5313918/1/item.html</link><content:encoded>&lt;h3&gt;__&lt;/h3&gt;
&lt;p&gt;淼大以&lt;a href=&quot;http://wc31415.blogcn.com/diary,31255975.shtml&quot;&gt;出手要快&lt;/a&gt;为题在他的博客上宣布 了塔希里亚三的到来。&lt;/p&gt;
&lt;p&gt;吴淼大人是我最喜欢的漫画家，很真实的养猫人。以前就在blog上推荐过他的&lt;a href=&quot;http://www.laihj.net/2008/11/%E5%90%B4%E6%B7%BC%E4%BD%9C%E5%93%81%E5%B9%B8%E7%A6%8F-%E5%B0%B1%E6%98%AF%E6%AD%BB%E5%9C%A8%E8%87%AA%E5%B7%B1%E9%80%89%E6%8B%A9%E7%9A%84%E8%B7%AF%E4%B8%8A/&quot;&gt;一个画&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;推荐一下。&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;0&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226369/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226369/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226369/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226369/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/tarsylia-iii-come/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>__
淼大以出手要快为题在他的博客上宣布 了塔希里亚三的到来。
吴淼大人是我最喜欢的漫画家，很真实的养猫人。以前就在blog上推荐过他的一个画。
推荐一下。
Related Posts0Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226369/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226369/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226369/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226369/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>负暄琐话</category><pubDate>Sun, 17 Jan 2010 18:28:59 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/tarsylia-iii-come/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650093</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/tarsylia-iii-come/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226369/5313918</fs:itemid></item><item><title>Emacs的orgmode [tags］</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226371/5313918/1/item.html</link><content:encoded>&lt;h3&gt;tags&lt;/h3&gt;
&lt;p&gt;
标签(tags)在管理东西方面有很多应用。比如blog,flickr,前阵子还在小众软件上看到用标签管理文件的软件。
&lt;/p&gt;
&lt;p&gt;本身，我们在做org管理文件的时候就已经把不同的东西放在不同文件里了。比如我们建了home.org,work.org两个文件，把在家的工作做在home.org里，把公司的放在work.org里面。&lt;/p&gt;
&lt;p&gt;但这种用文件来分类的方法有不便的地方：其一，如果我想到一个新的分类，那就必须新建一个文件；其二，如果我有一个工作同时属于两个文件，怎么办？&lt;/p&gt;
&lt;p&gt;于是,tags来了。&lt;/p&gt;
&lt;p&gt;tags只做一件事：标记这个项目是什么？它的展示样式是这样的&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;TODO 跟特留尼西特握手                    :苦差:薪水:逃不掉:&lt;/pre&gt;
&lt;p&gt;你可以按C-c C-c组合键，这里在mini buffer（就是下面的小框)会出现&amp;#8221;Tags:&amp;#8221;，等待你输入标签，支持中英文。&lt;/p&gt;
&lt;p&gt;就是这么简单。&lt;/p&gt;
&lt;h3&gt;tags的继承&lt;/h3&gt;
&lt;p&gt;如前所述，本来我们的想法是用文件来进行不同的分类的，也就是说实际上文件就是一种分类，放在work.org中的项目本来就应该拥有work属性，我不想在每一个项目上添一个:work:的蛇足。&lt;/p&gt;
&lt;p&gt;这就得说到tags继承的org特性了。&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-650090&quot; title=&quot;tagsin&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/tagsin.png&quot; alt=&quot;tagsin&quot; width=&quot;525&quot; height=&quot;334&quot; /&gt;&lt;/p&gt;
&lt;p&gt;如图，叶项目“新门”本身有一个属性&amp;#8221;苦差&amp;#8221;，同时它继续了两个属性，一个来自它的父项目apartment，还有一个来自文件属件work。给一个文件设置属性，需要在文件头加上一行。&lt;/p&gt;
&lt;h3&gt;更简单的方法&lt;/h3&gt;
&lt;p&gt;
如果有一些常用的标签不想每次都敲。可以使用orgmode的标签快捷键功能.比如你可以用k来代表苦差，用s来代表薪水。跟很多org设置一样，可以在两个地方完成这些设置。
&lt;/p&gt;
&lt;p&gt;
一个是.emacs文件。它的语法是这样的。
&lt;/p&gt;
&lt;pre&gt;(setq org-tag-alist '((&quot;苦差&quot; . ?k)
                            (&quot;薪水&quot; . ?s)))&lt;/pre&gt;
&lt;p&gt;
还有一种做法是在文件的头部加声明。类似这样:
&lt;/p&gt;
&lt;pre&gt;
#+FILETAGS: :work:
&lt;/pre&gt;
&lt;p&gt;
它们的分别在于，前者对于本机所有的org文件都有效。后者刚只对当前文件有效。
&lt;/p&gt;
&lt;p&gt;
这时再给一个项目加标签就会变成这样&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-650088&quot; title=&quot;tagsshortcut&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/tagsshortcut.png&quot; alt=&quot;tagsshortcut&quot; width=&quot;521&quot; height=&quot;316&quot; /&gt;&lt;/p&gt;
&lt;p&gt;敲相应的快捷键就可以了。&lt;/p&gt;
&lt;h3&gt;搜索查看tags&lt;/h3&gt;
&lt;p&gt;使用tags来给项目打标签当然不是为了打打好看而已。我们是要用的。最常用的用法就是用tags来表示context的概念。&lt;/p&gt;
&lt;p&gt;江湖传言把事情分类来做能提高工作效率。即是说，如果你有十个电话要打，十个email要回。最好不要打一个电话回一封email再打一个电话再回一封email，比较好的做法是先打十个电话，然后再连回十个email。还有一个秘笈，是威尔史密斯在＜当幸福来敲门＞里面教给我们的，如果你不把话筒放下来，能节约很多打电话的时间。&lt;/p&gt;
&lt;p&gt;这就需要我们能够把十个电话项目都取出来，在文件里面一个一个找:phone:标签？别傻了。敲一个C-c a吧,然后再敲m，下方的mini buffer里出现了几个大字&amp;#8221;MATCH:&amp;#8221;，这里输入&amp;#8221;phone&amp;#8221;，回车。你的列表中所有文件里的带有phone标签或者属性的项目就都列出来了。不想要所有项目，只想看TODO?简单，C-c a后不要加m,加个M吧。&lt;/p&gt;
&lt;p&gt;输入关键词的时候还可以使用与或非运算，算符如下：phone&amp;amp;work，同时有两个标签的。phone|work，有两个标签之一的。phone-work有phone标签而没有work标签的。&lt;/p&gt;
&lt;p&gt;这里,C-c a表示你要求调出agenda view，后面那个命令则指明你想要调出什么样的view。敲后C-c a之后，不要急着敲m，可以看看org都提供了哪些view，我们熟知的有C-c a a,C-c a t等。&lt;/p&gt;
&lt;h3&gt;不要每次都输关键字&lt;/h3&gt;
&lt;p&gt;这样看起来，C-a a a也是一种检索，只不过它们是org-mode内置而已，那我也有一些数据视图是经常要用的，有一些是没事就搜一下的。我也要敲三个键就弄出来，不想每次都敲tags。&lt;/p&gt;
&lt;p&gt;嘿嘿，改源码把我自己的搜索置进去。倒是不用着急，读代码总是麻烦的。事实上org-mode已经开放了一个自定义view的接口。唤作org-agenda-custom-commands。可以在.emacs文件中设置自己的。&lt;/p&gt;
&lt;pre class=&quot;css&quot;&gt;(setq org-agenda-custom-commands
'((&quot;k&quot; &quot;work haha&quot;
((agenda &quot;&quot;)
(tags-todo &quot;work&quot;)
(tags-todo &quot;支持&quot;)))))&lt;/pre&gt;
&lt;p&gt;这段代码表示您定了一个可以用C-c a k 调出来的view,它的描述是&amp;#8221;work haha&amp;#8221;，view中包含三段数据。最上面是agenda，就是调C-c a a出来的界面，然后一个分隔行，列出tags为“work”的项目，再一个分隔行，列出tags为支持的项目。&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-650089&quot; title=&quot;caak&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/caak.png&quot; alt=&quot;caak&quot; width=&quot;497&quot; height=&quot;442&quot; /&gt;&lt;/p&gt;
&lt;p&gt;官方的说法是提供了一个GUI界面，M-x customize-variable RET org-agenda-custom-commands可以打开。界面如下：&lt;/p&gt;
&lt;p&gt;&lt;img class=&quot;alignnone size-full wp-image-650085&quot; title=&quot;GUIconfig&quot; src=&quot;http://www.laihj.net/wp-content/uploads/2010/01/GUIconfig.png&quot; alt=&quot;GUIconfig&quot; width=&quot;629&quot; height=&quot;444&quot; /&gt;&lt;/p&gt;
&lt;p&gt;但我个人还是喜欢使用.emacs文件手写配置。不是我装13，而是GUI界面设计得实在太难用了，我到现在也没弄明白它的用法。&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-remember/&quot; title=&quot;Emacs的orgmode [remember] 2010.01.20&quot;&gt;Emacs的orgmode [remember]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/emacs-orgmode-archieved/&quot; title=&quot;Emacs的orgmode [归档］ 2010.01.2&quot;&gt;Emacs的orgmode [归档］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-agenda-view/&quot; title=&quot;Emacs的org-mode [agenda view] 2009.12.29&quot;&gt;Emacs的org-mode [agenda view]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode-%e6%97%a5%e6%9c%9f%e4%b8%8e%e6%97%b6%e9%97%b4/&quot; title=&quot;Emacs的org-mode [日期与时间] 2009.12.26&quot;&gt;Emacs的org-mode [日期与时间]&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bbtodo%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［TODO］ 2009.12.25&quot;&gt;Emacs的org-mode［TODO］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2009/12/emacs%e7%9a%84org-mode%ef%bc%bb%e5%88%9d%e6%8e%a2%ef%bc%bd/&quot; title=&quot;Emacs的org-mode［初探］ 2009.12.24&quot;&gt;Emacs的org-mode［初探］&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/02/elisp-emacs-editing-basics/&quot; title=&quot;[elisp]针对Emacs中文本编辑的编程简介 2010.02.3&quot;&gt;[elisp]针对Emacs中文本编辑的编程简介&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/elipsemacslisp-basi/&quot; title=&quot;[elisp]EmacsLisp 基础 2010.01.31&quot;&gt;[elisp]EmacsLisp 基础&lt;/a&gt;(0)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2010/01/code-complete-yasnippet/&quot; title=&quot;emacs代码补完－yasnippet 2010.01.8&quot;&gt;emacs代码补完－yasnippet&lt;/a&gt;(1)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226371/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226371/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226371/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226371/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/emacs-orgmode-tags/feed/</wfw:commentRss><slash:comments>0</slash:comments><description>tags

标签(tags)在管理东西方面有很多应用。比如blog,flickr,前阵子还在小众软件上看到用标签管理文件的软件。

本身，我们在做org管理文件的时候就已经把不同的东西放在不同文件里了。比如我们建了home.org,work.org两个文件，把在家的工作做在home.org里，把公司的放在work.org里面。
但这种用文件来分类的方法有不便的地方：其一，如果我想到一个新的分类，那就必须新建一个文件；其二，如果我有一个工作同时属于两个文件，怎么办？
于是,tags来了。
tags只做一件事：标记这个项目是什么？它的展示样式是这样的
TODO 跟特留尼西特握手                    :苦差:薪水:逃不掉:
你可以按C-c C-c组合键，这里在mini buffer（就是下面的小框)会出现&amp;#8221;Tags:&amp;#8221;，等待你输入标签，支持中英文。
就是这么简单。
tags的继承
如前所述，本来我们的想法是用文件来进行不同的分类的，也就是说实际上文件就是一种分类，放在work.org中的项目本来就应该拥有work属性，我不想在每一个项目上添一个:work:的蛇足。
这就得说到tags继承的org特性了。

如图，叶项目“新门”本身有一个属性&amp;#8221;苦差&amp;#8221;，同时它继续了两个属性，一个来自它的父项目apartment，还有一个来自文件属件work。给一个文件设置属性，需要在文件头加上一行。
更简单的方法

如果有一些常用的标签不想每次都敲。可以使用orgmode的标签快捷键功能.比如你可以用k来代表苦差，用s来代表薪水。跟很多org设置一样，可以在两个地方完成这些设置。


一个是.emacs文件。它的语法是这样的。

(setq org-tag-alist '((&quot;苦差&quot; . ?k)
                            [...]&lt;img src=&quot;http://www1.feedsky.com/t1/329226371/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226371/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226371/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226371/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>orgmode</category><category>tags</category><category>emacs</category><category>利其器</category><pubDate>Fri, 15 Jan 2010 10:01:58 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/emacs-orgmode-tags/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650083</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/emacs-orgmode-tags/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226371/5313918</fs:itemid></item><item><title>[ZT]百度孙云丰说，Google市侩，我感到恶心</title><link>http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226374/5313918/1/item.html</link><content:encoded>&lt;p&gt;今天下午1时20分，百度首席产品设计师孙云丰在自己的博客中撰文关于谷歌退出中国，直指Google退出中国的姿态证明自己是市侩分子，对此感到恶心。&lt;br /&gt;
他的博客全文如下：&lt;br /&gt;
google宣称要退出中国，所证明的，恰恰不是市面上的那些g粉所宣称的那样，google是个人权斗士，而刚好反了过来，正好证明google是个市侩分子。&lt;br /&gt;
google 的首席法律顾问的调调让我感到恶心。因经济利益退出，就直白白的说好了，把自己涂脂抹粉一番，还煞有介事的提到google被中国人攻击，中国异议分子的 Gmail信箱被攻击，把这些事情作为退出中国的铺垫，这种论调是侮辱中国普通老百姓的智商，但还真有可能迎合那帮目空一切，但从未到过中国、对中国没有丝毫了解，却又喜欢对中国说三道四的西方人的假想。&lt;/p&gt;
&lt;p&gt;只提一个假设，如果谷歌占据了中国80%的搜索市场份额，google的高管，还会这么高调的宣称要do no evil，从中国退出吗？&lt;/p&gt;
&lt;p&gt;整个事情给我的唯一感受，就是恶心。&lt;/p&gt;
&lt;p&gt;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;&lt;/p&gt;
&lt;p&gt;以上是作为一个曾经的忠实google用户而说的，和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G粉的兄弟，请勿跟帖瞎喷，你们根本不懂什么叫搜索引擎，什么叫自由人权。&lt;/p&gt;
&lt;p&gt;立此存照的原因在于，原帖 http://news.csdn.net/a/20100113/216459.html 被百度的人要求删掉，所以本着对历史负责的态度，保存与此，欢迎转帖。&lt;/p&gt;
&lt;h3&gt;Related Posts&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.laihj.net/2008/11/%e7%99%be%e5%ba%a6%e8%af%b4%ef%bc%8cseo%e6%98%af%e6%90%9c%e7%b4%a2%e5%bc%95%e6%93%8e%e7%9a%84%e5%a4%a7%e6%95%8c/&quot; title=&quot;百度说，SEO是搜索引擎的大敌 2008.11.11&quot;&gt;百度说，SEO是搜索引擎的大敌&lt;/a&gt;(0)&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Recent Comments&lt;/h3&gt;&lt;ul&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/329226374/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226374/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226374/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226374/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</content:encoded><wfw:commentRss>http://www.laihj.net/2010/01/zt-baidu-said-google-suck/feed/</wfw:commentRss><slash:comments>1</slash:comments><description>今天下午1时20分，百度首席产品设计师孙云丰在自己的博客中撰文关于谷歌退出中国，直指Google退出中国的姿态证明自己是市侩分子，对此感到恶心。
他的博客全文如下：
google宣称要退出中国，所证明的，恰恰不是市面上的那些g粉所宣称的那样，google是个人权斗士，而刚好反了过来，正好证明google是个市侩分子。
google 的首席法律顾问的调调让我感到恶心。因经济利益退出，就直白白的说好了，把自己涂脂抹粉一番，还煞有介事的提到google被中国人攻击，中国异议分子的 Gmail信箱被攻击，把这些事情作为退出中国的铺垫，这种论调是侮辱中国普通老百姓的智商，但还真有可能迎合那帮目空一切，但从未到过中国、对中国没有丝毫了解，却又喜欢对中国说三道四的西方人的假想。
只提一个假设，如果谷歌占据了中国80%的搜索市场份额，google的高管，还会这么高调的宣称要do no evil，从中国退出吗？
整个事情给我的唯一感受，就是恶心。
&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8212;&amp;#8211;
以上是作为一个曾经的忠实google用户而说的，和百度无关。市面上沾沾自喜于了解一点google的产品技术细节将google奉为道德楷模而自封G粉的兄弟，请勿跟帖瞎喷，你们根本不懂什么叫搜索引擎，什么叫自由人权。
立此存照的原因在于，原帖 http://news.csdn.net/a/20100113/216459.html 被百度的人要求删掉，所以本着对历史负责的态度，保存与此，欢迎转帖。
Related Posts百度说，SEO是搜索引擎的大敌(0)
Recent Comments&lt;img src=&quot;http://www1.feedsky.com/t1/329226374/laihj1984/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/laihj1984/~7204812/329226374/5313918/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;&lt;p class=&quot;fswww1&quot;&gt;&lt;a href=&quot;http://www1.feedsky.com/r/l/feedsky/laihj1984/329226374/art01.html&quot; target=&quot;_blank&quot;&gt;&lt;img border=&quot;0&quot; ismap=&quot;ismap&quot; src=&quot;http://www1.feedsky.com/r/i/feedsky/laihj1984/329226374/art01.gif&quot; onerror=&quot;this.style.display='none'&quot; /&gt;&lt;/a&gt;&lt;/p&gt;</description><category>百度</category><category>负暄琐话</category><category>谷歌</category><pubDate>Wed, 13 Jan 2010 20:53:23 +0800</pubDate><author>laihj</author><comments>http://www.laihj.net/2010/01/zt-baidu-said-google-suck/#comments</comments><guid isPermaLink="false">http://www.laihj.net/?p=650079</guid><dc:creator>laihj</dc:creator><fs:srclink>http://www.laihj.net/2010/01/zt-baidu-said-google-suck/</fs:srclink><fs:srcfeed>http://www.laihj.net/feed</fs:srcfeed><fs:itemid>feedsky/laihj1984/~7204812/329226374/5313918</fs:itemid></item></channel></rss>