<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" gd:etag="W/&quot;DEQARHs-cCp7ImA9WxBQFEg.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291</id><updated>2010-02-10T08:00:00+00:00</updated><title>/var/log/freestyler</title><subtitle type="html" /><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://freelet.blogspot.com/" /><link rel="hub" href="http://pubsubhubbub.appspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>53</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/var/log/freestyler" /><feedburner:info uri="var/log/freestyler" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><logo>http://creativecommons.org/images/public/somerights20.gif</logo><feedburner:emailServiceId>var/log/freestyler</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><entry><title type="text">Links for 2010-02-09 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/-9seDU0HjJQ/freelet" /><updated>2010-02-10T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-02-09</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://semanchuk.com/philip/PythonIpc/"&gt;Semanchuk.com - Python IPC Modules&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/-9seDU0HjJQ" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-02-09</feedburner:origLink></entry><entry><title type="text">Links for 2010-02-08 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/RFMT9MRx_5s/freelet" /><updated>2010-02-09T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-02-08</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://chris-lamb.co.uk/projects/swordfish/"&gt;Swordfish - High-level persistent key-value database &amp;laquo; code &amp;laquo; lamby&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/RFMT9MRx_5s" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-02-08</feedburner:origLink></entry><entry><title type="text">Links for 2010-02-03 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/bAeDaCWohMM/freelet" /><updated>2010-02-04T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-02-03</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.grymoire.com/Unix/Awk.html#uh-1"&gt;Awk - A Tutorial and Introduction - by Bruce Barnett&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/bAeDaCWohMM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-02-03</feedburner:origLink></entry><entry><title type="text">Links for 2010-01-24 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/CpK58mTGz5g/freelet" /><updated>2010-01-25T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-01-24</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://benlog.com/articles/2008/06/19/dont-hash-secrets/"&gt;Benlog &amp;raquo; Don&amp;rsquo;t Hash Secrets&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/CpK58mTGz5g" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-01-24</feedburner:origLink></entry><entry><title type="text">Links for 2010-01-21 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/3MXF4_Jkh1I/freelet" /><updated>2010-01-22T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-01-21</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.w3schools.com/JS/"&gt;JavaScript Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.jwz.org/doc/emacs-timeline.html"&gt;Emacs Timeline&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/3MXF4_Jkh1I" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-01-21</feedburner:origLink></entry><entry><title type="text">Links for 2010-01-18 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/Ova9-DN_aII/freelet" /><updated>2010-01-19T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-01-18</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://lwn.net/Articles/104185/"&gt;Re: [PATCH] oom_pardon, aka don't kill my xlock [LWN.net]&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/Ova9-DN_aII" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-01-18</feedburner:origLink></entry><entry><title type="text">Links for 2010-01-17 [del.icio.us]</title><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/yOHq3JpW_iM/freelet" /><updated>2010-01-18T00:00:00-08:00</updated><id>http://del.icio.us/freelet#2010-01-17</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.emacswiki.org/emacs/DeletingWhitespace"&gt;EmacsWiki: Deleting Whitespace&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.douban.com/group/topic/8835503/"&gt;&amp;#36716;&amp;#36148;-&amp;#12304;&amp;#28779;&amp;#26538;&amp;#33258;&amp;#36848;&amp;#12305;&amp;#36229;&amp;#36234;&amp;#20256;&amp;#35828;&amp;#21733;&amp;#30340;&amp;#23384;&amp;#22312;&amp;#65288;&amp;#24456;&amp;#22909;&amp;#31505;&amp;#65289;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/yOHq3JpW_iM" height="1" width="1"/&gt;</content><feedburner:origLink>http://del.icio.us/freelet#2010-01-17</feedburner:origLink></entry><entry gd:etag="W/&quot;CUEFQHc6cCp7ImA9WxJWGEs.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-3293801505328697903</id><published>2009-06-25T01:04:00.002+08:00</published><updated>2009-06-25T01:13:31.918+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-25T01:13:31.918+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>ssh设置不用输入密码</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OnDqnbQQP6LcGEqY-nAGrmwYvA4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OnDqnbQQP6LcGEqY-nAGrmwYvA4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OnDqnbQQP6LcGEqY-nAGrmwYvA4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OnDqnbQQP6LcGEqY-nAGrmwYvA4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;当scp出现在脚本中时,　需要输入密码比较麻烦.&lt;br /&gt;可以在服务器保存public keys,　这样连接时就不用输入密码了.&lt;br /&gt;&lt;br /&gt;$ ssh-keygen&lt;br /&gt;一路回车&lt;br /&gt;&lt;br /&gt;~/.ssh$ ls&lt;br /&gt;id_rsa  id_rsa.pub&lt;br /&gt;默认在 .ssh目录里产生 id_rsa  id_rsa.pub&lt;br /&gt;&lt;br /&gt;把 id_rsa.pub 添加到服务器的 ~/.ssh/authorized_keys 中去..&lt;br /&gt;$ scp ~/.ssh/id_rsa.pub remotehost:~/&lt;br /&gt;$ ssh remotehost&lt;br /&gt;$ cat id_rsa.pub &gt;&gt; .ssh/authorized_keys&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-3293801505328697903?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/VBrDYoXFnbw" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/3293801505328697903/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=3293801505328697903" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3293801505328697903?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3293801505328697903?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/VBrDYoXFnbw/ssh.html" title="ssh设置不用输入密码" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/06/ssh.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUMGRnk8eSp7ImA9WxJWFkg.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-2970719729580224725</id><published>2009-06-22T15:56:00.000+08:00</published><updated>2009-06-22T15:57:07.771+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T15:57:07.771+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>再一次安装ibus</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/DK8B-UxrcpcNdGhugE0GMH2zODU/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK8B-UxrcpcNdGhugE0GMH2zODU/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/DK8B-UxrcpcNdGhugE0GMH2zODU/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/DK8B-UxrcpcNdGhugE0GMH2zODU/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;fcitx把ctrl-k占用了, 逼我换回ibus。 经过了一段时间, ibus应该有进步了吧。&lt;br /&gt;上去看看，果然, 打包的源代码是前几天的。&lt;br /&gt;&lt;br /&gt;按照这个http://code.google.com/p/ibus/wiki/Install 安装。&lt;br /&gt;先下载ibus, ibus-pinyin源码(http://code.google.com/p/ibus/downloads/list)或用git获取。&lt;br /&gt;&lt;br /&gt;安装ibus:&lt;br /&gt;&lt;br /&gt; $ git clone git://github.com/phuang/ibus.git ibus&lt;br /&gt; $ cd ibus&lt;br /&gt; $ ./autogen.sh --prefix='/usr' --sysconfdir='/etc' --libdir='/usr/lib' --enable-gtk-doc&lt;br /&gt; $ make&lt;br /&gt; $ sudo make install&lt;br /&gt;&lt;br /&gt;然后再安装ibus-pinyin&lt;br /&gt;&lt;br /&gt;$ git clone git://github.com/phuang/ibus-pinyin.git ibus-pinyin&lt;br /&gt;$ cd ibus-pinyin&lt;br /&gt;$ ./autogen.sh --prefix=/usr&lt;br /&gt;$ make&lt;br /&gt;$ sudo make install&lt;br /&gt;$ sudo update-gtk-immodules i386-redhat-linux-gnu&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;添加下面到.bashrc&lt;br /&gt; export GTK_IM_MODULE=ibus&lt;br /&gt; export XMODIFIERS=@im=ibus&lt;br /&gt; export QT_IM_MODULE=ibus&lt;br /&gt;&lt;br /&gt;重新登录,设置: 设不了ctrl+shift做开关快捷键，设成左ctrl了。 (ctrl+space被我用作emacs的set-mark command)&lt;br /&gt;ok！ 感觉有进步。&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-2970719729580224725?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/FgpeC-5OPL4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/2970719729580224725/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=2970719729580224725" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2970719729580224725?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2970719729580224725?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/FgpeC-5OPL4/ibus.html" title="再一次安装ibus" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/06/ibus.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D08MRH05fyp7ImA9WxJWFkg.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-92141455188715257</id><published>2009-06-22T14:49:00.005+08:00</published><updated>2009-06-22T15:31:25.327+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-06-22T15:31:25.327+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>ubuntu安装设置tor</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/neXL1dZTJGZ7pk65QzAw28kxtfo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/neXL1dZTJGZ7pk65QzAw28kxtfo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/neXL1dZTJGZ7pk65QzAw28kxtfo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/neXL1dZTJGZ7pk65QzAw28kxtfo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;发现gladder用不了, 安装一下大名鼎鼎的tor  #fuck gfw&lt;br /&gt;&lt;br /&gt;$ sudo apt-get install tor&lt;br /&gt;&lt;br /&gt;启动:&lt;br /&gt;$ sudo /etc/init.d/tor start&lt;br /&gt;&lt;br /&gt;关闭:&lt;br /&gt;$ sudo /etc/init.d/tor stop&lt;br /&gt;$ 安装firefox扩展foxyProxy&lt;br /&gt;(https://addons.mozilla.org/en-US/firefox/addon/2464)&lt;br /&gt;&lt;br /&gt;配置foxyproxy选项&lt;br /&gt;新建代理服务器&lt;br /&gt;- 常规标签: Proxy Name 可任意填写，如“blogspot”&lt;br /&gt;- 代理服务器细节: host or ip: 127.0.0.1  port: 9050&lt;br /&gt; 勾上 socks proxy， socks v4/4a&lt;br /&gt;- URL patterns 添加和谐ed网站:&lt;br /&gt;例如:&lt;br /&gt;    URL 或 URL 模板内输入：*.blogspot.com/*&lt;br /&gt;    勾选白名单，勾选通配符&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-92141455188715257?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/P2fY1Fy8t7k" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/92141455188715257/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=92141455188715257" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/92141455188715257?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/92141455188715257?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/P2fY1Fy8t7k/ubuntutor.html" title="ubuntu安装设置tor" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/06/ubuntutor.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YBQnY4fSp7ImA9WxJREks.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-5279362349989412723</id><published>2009-05-14T10:42:00.002+08:00</published><updated>2009-05-14T10:45:53.835+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-14T10:45:53.835+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>使用zlib读写gz文件</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WtCXuVWsT_Rlv7m0cvoUaGnZRak/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WtCXuVWsT_Rlv7m0cvoUaGnZRak/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WtCXuVWsT_Rlv7m0cvoUaGnZRak/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WtCXuVWsT_Rlv7m0cvoUaGnZRak/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://www.zlib.net/"&gt;zlib&lt;/a&gt; is A Massively Spiffy Yet Delicately Unobtrusive Compression Library. The utility functions in zlib are very much like the stdandard I/O funtions in &lt;stdio.h&gt;&lt;stdio.h&gt;&amp;lt;stdio.h&amp;gt;.&lt;br /&gt;&lt;br /&gt;Demo in short:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;#include "zlib.h"&lt;br /&gt;&lt;br /&gt;/* write buffer to gz file */&lt;br /&gt;&lt;br /&gt;gzFile fp = gzopen("file.gz", "wb");&lt;br /&gt;/* Writes the given number of uncompressed bytes into the compressed file.*/&lt;br /&gt;gzwrite(fp, buffer, sizeof(buffer));&lt;br /&gt;gzclose(fp);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;/*  read gz file into buffer */&lt;br /&gt;&lt;br /&gt;gzFile fp = gzopen("file.gz", "rb");&lt;br /&gt;/* read the given number of uncompressed bytes from the compressed file */&lt;br /&gt;gzread(fp, buffer, sizeof(buffer));&lt;br /&gt;/* or read a line */&lt;br /&gt;gzgets(fp, buffer, sizeof(buffer));&lt;br /&gt;gzclose(fp);&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Use option "-lz" to link with zlib library.&lt;br /&gt;&lt;br /&gt;Read more:&lt;br /&gt;&lt;a href="http://www.zlib.net/manual.html"&gt;http://www.zlib.net/manual.html&lt;/a&gt;&lt;/stdio.h&gt;&lt;/stdio.h&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-5279362349989412723?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/dnpa0TDE2cA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/5279362349989412723/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=5279362349989412723" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/5279362349989412723?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/5279362349989412723?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/dnpa0TDE2cA/zlibgz.html" title="使用zlib读写gz文件" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/05/zlibgz.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0ENSHY6fSp7ImA9WxJSFUQ.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-1645796548735981351</id><published>2009-05-02T20:57:00.003+08:00</published><updated>2009-05-06T16:48:19.815+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-06T16:48:19.815+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>终端浏览器w3m</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Mvd34KaUq4H3IWQbEvXSHKI8mD8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mvd34KaUq4H3IWQbEvXSHKI8mD8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Mvd34KaUq4H3IWQbEvXSHKI8mD8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Mvd34KaUq4H3IWQbEvXSHKI8mD8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;没有x环境下, 只好用w3m来浏览网页了...&lt;br /&gt;把frgg假设在校内, 而自己只有ssh通道连回校内没装x的机器..&lt;br /&gt;&lt;br /&gt;想看看运行效果只好用它了.&lt;br /&gt;发现中文(gb2312)基本都能正确显示...Good!&lt;br /&gt;&lt;br /&gt;w3m提供了vi, emacs的快捷键. 比如 hjkl, C-b,C-n,C-p,C-f,C-a,C-e等。&lt;br /&gt;&lt;br /&gt;H 帮助&lt;br /&gt;U goto URL&lt;br /&gt;B 后退&lt;br /&gt;Enter 输入文字/点击&lt;br /&gt;Tab 下一个链接&lt;br /&gt;Ctrl-u 上一个链接&lt;br /&gt;= 显示页面信息&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-1645796548735981351?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/c-4Hz0JgSHk" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/1645796548735981351/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=1645796548735981351" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/1645796548735981351?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/1645796548735981351?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/c-4Hz0JgSHk/w3m.html" title="终端浏览器w3m" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/05/w3m.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0ABQ3Y8cSp7ImA9WxJSEUs.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-4736212434000723825</id><published>2009-05-01T14:58:00.006+08:00</published><updated>2009-05-01T15:09:12.879+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-05-01T15:09:12.879+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>ssh使用scp远程传输文件</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OI8gaIm1uxgsqkppb7JIc8Au8JQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OI8gaIm1uxgsqkppb7JIc8Au8JQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OI8gaIm1uxgsqkppb7JIc8Au8JQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OI8gaIm1uxgsqkppb7JIc8Au8JQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;suppose we have an ssh connection:&lt;br /&gt;ssh -p 22 user@remote-host&lt;br /&gt;&lt;br /&gt;copy file from remote host:&lt;br /&gt;scp -P 22 user@remote-host:/path/to/file /localpath/to/save&lt;br /&gt;&lt;br /&gt;copy file to remote host:&lt;br /&gt;scp -P 22 /file/to/transfer user@remote-host:/path/to/save&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-4736212434000723825?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/m0TAitWTN44" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/4736212434000723825/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=4736212434000723825" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/4736212434000723825?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/4736212434000723825?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/m0TAitWTN44/sshscp.html" title="ssh使用scp远程传输文件" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/05/sshscp.html</feedburner:origLink></entry><entry gd:etag="W/&quot;C0UFRnw-cSp7ImA9WxJTFko.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-9055113267239371730</id><published>2009-04-25T22:48:00.001+08:00</published><updated>2009-04-25T22:53:37.259+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-04-25T22:53:37.259+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><title>认识BBS</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/qbS2-Mo6iXDMSFLxH5mcHYs6aP0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qbS2-Mo6iXDMSFLxH5mcHYs6aP0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/qbS2-Mo6iXDMSFLxH5mcHYs6aP0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/qbS2-Mo6iXDMSFLxH5mcHYs6aP0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;BBS是英文Bullitin Board System的首字母简写，意译即为公告牌系统。 这是在计算机网络发展早期甚至在单主机时代就发展起来的一种网络服务，由于它的发展远早于窗口、桌面等可视化程序，所以一般地它以纯文字的方式出现，工作界面也像最古老的终端，就是一行行的字。如果你打开过Dos命令行，或是看过银行里存款用的电脑屏幕，就会有比较直观的印象。要运行一个BBS系统，一般得有一台服务器，通常运行UNIX或Linux操作系统，装上BBS服务器软件就可以了。网友上BBS的最一般最普遍方式是通常终端模拟程序，像Sterm, Cterm, Fterm等，这些程序在Windows上运行时也是打开一个标准窗口， 然后在窗口中模拟标准的电脑终端，来自服务器的文字及控制信息就显示在其中。&lt;br /&gt;&lt;br /&gt;BBS一般就称为站，也就是站点的意思，前面的几个字，像水木清华，饮水思源，逸仙时空, 等，就是它们的名字。使用四字成语或类似成语作为站名可能是一种习惯，并非一定要这样。逸仙时空还有个别名叫argo, 这是因为bbs所在的那台服务器名字叫argo.&lt;br /&gt;&lt;br /&gt;从使用上讲，BBS和论坛并没有大的区别，但称为BBS的系统一般都保证有终端方式，纯字符界面，显得干净，熟悉操作之后（通常是键盘，像前面提到的几种Term模拟程序也支持鼠标操作，但其实仍然是把鼠标的动作转成了键盘命令再送出）非常方便，速度也快。&lt;br /&gt;因为是纯字符的，BBS一般是不能贴图的，所以网友就发明了许多用字符来拼出各种图案的技术， 称之为 ASCII Art，即字符艺术。还有专门制作ASCII Art的软件，有些做得也是非常漂亮的。这种字符图通常用在版的入口，BBS的进站界面，以及网友的签名档中。但近几年来，BBS在系统维护高手的努力之下，多数也开始提供WEB界面，其实就是通过程序把原来的贴子送到浏览器窗口中，并设定它显示的格式。国内多数大学BBS都提供了这种方式， 在这种方式下可以比较方便地贴图。 有可能BBS和论坛之间的最大差别是BBS通常在公众网上不常见，而几乎中国每所知名大学都有一至数十个官方的，或组织的，或纯由学生设置的BBS在运行。&lt;br /&gt;&lt;br /&gt;BBS是有不同的版块组成的, 版也就是讨论区，每个版有不同的主题，比如讨论校园信息，讨论程序设计的，讨论爱情的，讨论读书的，讨论足球的等，都可以申请开办一个单独的版。在这个版上，用户就可以发表自己的贴子，其他人就可以回复这个贴子。这些同一般的WWW论坛是一样的，但论坛上的术语，如版主，RE，灌水，倒，分特等语其实就都是从BBS上发展起来的（顶除外）。在终端窗口中显示出来，就是一个个的菜单，一个菜单就是一个功能或是一个版块的名字。每个版都会有0至数名版主进行日常管理。&lt;br /&gt;&lt;br /&gt;一般地，一个BBS会有一个站务或站务委员会，他们负责这个BBS站的管理和维护。他们中&lt;br /&gt;有程序员，有网管，他们保证BBS系统运行正常，防止当机，进行日常备份，添加新功能等；也有热心网友来处理法律问题，网友争议等等常规问题。站务之下，是各版的版主，通常是1名到几名，也有的版暂时无人管理，就得由站务负责，同时会显示"诚征版主中"字样。版主可以在自己管理的版上整理精华区，设定文章进入文摘区，也可删除文章，封禁在本版违规的网友。封禁可以是1至数天，到时会自动解封。封禁期内只能看别人的贴子，而不能发表贴子。站务可以在全站范围内封禁网友，甚至杀掉档案，让这个网友从此在这个站上消失。&lt;br /&gt;&lt;br /&gt;通常，一个BBS站会有自己的站规，而一个版会有版规，这些规定有文字的，也有约定俗成的，或者根本没有，版主只以日常社会行为规范进行治理的，比如骂人，挑起严重争端，违反法律，宣扬仇恨等都会被封。BBS的站务和版主一般没有工资（我从未听说有哪里的站务领工资的），他们一般都有自己的学习工作，而从事BBS管理只是在业余进行。版主一般有任期，一个学期或两个学期，他们也是义务的，一任版主下台后，其他网友可以申请成为版主。由于BBS多数建在学校内，也要使用学校的网络，所以许多BBS是要接受学校的领导的。逸仙时空现在是管理员－主管－斑竹分级管理。&lt;br /&gt;&lt;br /&gt;一般来说，上BBS的人当中大学生多一些，本校的最多，其次是外校的学生，许多老师也都上BBS； 已经毕业参加工作的人也是BBS用户的一大来源。上BBS的人通常学历较高，知识丰富，眼界开阔。在管理较好的成熟BBS上通常可以养成礼貌待人，热情好客，温文而雅，独立思考，不盲从，不盲信等优良品格。&lt;br /&gt;&lt;br /&gt;在BBS上干什么，这要看所上的站开了什么功能，开了什么样的版块。在大学里，比较多的版块是技术类，学术类，体育类和日常生活类。像在水木清华上，电脑技术类版块有上百个，包括了电脑的方方面面，从Linux内核到巨型机，从Office使用到汇编语言，从Tex排版到电脑市场，总之使用电脑的各种问题都可以在这里找到答案。其他的如电子技术，机械设计，数学计算以及学校里的各个专业都有自己的版块。社会及人文学科也是一样，基本上每个专业都有自己的版块。可以说，BBS在大学里就是第二课堂，就是答疑教室。各个版上积累起来的精华内容就是百科全书。更重要的是，BBS以网络为基地，其内容都是最新，最前沿的。BBS上最普遍的一项活动，就是讨论问题，问问题或解答别人的问题。 其他的如到哪里买衣服便宜，什么地方的饭馆好吃，周末到郊外旅游，家居生活， 婆媳纠纷，足球围棋，更是无所不包。水木的足球版曾经创下单版在线超过10000人的记录。但可以保证的是，这里没有黄色内容，没有赌博信息，没有耸人听闻的标题，也就是说，它比国内所有的大型门户网站都更正统，更有教育意义。 BBS讨论还有个匿名的特性，匿名时讨论的是事，对事不对人；如果用实名，讨论时就会针对人，对人不对事，这是争斗，引起尖锐矛盾的起因。所以，匿名可以讨论问题，而不会引起争斗。 如果都是实名在讨论，BBS就和开班会的情况一样了。众所周知，大家都不喜欢开班会，毛主席也说：谁让你们周日晚上开会！&lt;br /&gt;&lt;br /&gt;BBS在学校里非常受欢迎。一个水木网友的签名档是这样写的：如果我不在水木上，那我就在去水木的路上。BBS几乎是大学生活里必不可少的一部分，同学们在这里既学习知识，也探讨问题，也了解社会，获取信息。BBS是学校里最有用的服务之一.&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-9055113267239371730?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/HXDQrAlE2Pg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/9055113267239371730/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=9055113267239371730" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/9055113267239371730?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/9055113267239371730?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/HXDQrAlE2Pg/bbs.html" title="认识BBS" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/04/bbs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0ABRX8-eSp7ImA9WxVUE0Q.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-4824851827552789388</id><published>2009-03-19T00:52:00.003+08:00</published><updated>2009-03-19T01:02:34.151+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-03-19T01:02:34.151+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>emacs浏览代码工具etags,gtags</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/yc1g0m0hvKSqL6OgP0nvEUSjcRM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yc1g0m0hvKSqL6OgP0nvEUSjcRM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/yc1g0m0hvKSqL6OgP0nvEUSjcRM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/yc1g0m0hvKSqL6OgP0nvEUSjcRM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;global:&lt;br /&gt;&lt;a href="http://www.gnu.org/software/global/"&gt;http://www.gnu.org/software/global/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;装好后, 去到代码目录:&lt;br /&gt;$ cd src&lt;br /&gt;$ gtags&lt;br /&gt;&lt;br /&gt;.emacs&lt;br /&gt;;;global&lt;br /&gt;(autoload 'gtags-mode "gtags" "" t)&lt;br /&gt;(gtags-mode 1)&lt;br /&gt;(global-set-key (kbd "C-]") 'gtags-find-tag-from-here)&lt;br /&gt;&lt;br /&gt;C-] 跳到定义&lt;br /&gt;M-* 跳回&lt;br /&gt;&lt;br /&gt;global现在不支持python，浏览python代码用etags也足够了:&lt;br /&gt;$ etags *.py&lt;br /&gt;&lt;br /&gt;在emacs里,&lt;br /&gt;M-. 第一次会提示你指定TAGS路径..然后会跳转到定义处.&lt;br /&gt;M-* 跳回.&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-4824851827552789388?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/UvNlp2PCtF8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/4824851827552789388/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=4824851827552789388" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/4824851827552789388?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/4824851827552789388?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/UvNlp2PCtF8/emacsetagsgtags.html" title="emacs浏览代码工具etags,gtags" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/03/emacsetagsgtags.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CU8ERHs7fSp7ImA9WxVWFkg.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-3574479074765318937</id><published>2009-02-26T21:04:00.003+08:00</published><updated>2009-02-26T21:10:05.505+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-26T21:10:05.505+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>emacs ido</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/Lj1b_91kx1h64-n3-coy1Yec3-g/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lj1b_91kx1h64-n3-coy1Yec3-g/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/Lj1b_91kx1h64-n3-coy1Yec3-g/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/Lj1b_91kx1h64-n3-coy1Yec3-g/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;在emacs中打开和新建文件使用的是M-x find-file(即C-x C-f)，如果文件不存在就创建一个新文件。默认的提示输入文件名的方式类似shell中的补全。&lt;br /&gt;Emacs提供一个很好的补全方式──&lt;a href="http://www.emacswiki.org/cgi-bin/wiki/InteractivelyDoThings"&gt;ido-mode&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The ido.el is now a default elisp package in Emacs 23.&lt;br /&gt;You can get the newest version from &lt;a href="http://cvs.savannah.gnu.org/viewcvs/emacs/emacs/lisp/ido.el"&gt;CVS&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Use following elisp to enable ido-mode:&lt;br /&gt;   (require 'ido)&lt;br /&gt;   (ido-mode t)&lt;br /&gt;&lt;br /&gt;一些命令:&lt;br /&gt;&lt;span style="font-weight: bold; color: rgb(255, 0, 0);"&gt;C-f to return to normal find-file&lt;/span&gt;&lt;br /&gt;C-d to enter dired.&lt;br /&gt;C-l to run ido-reread-directory to refresh the current work directory.&lt;br /&gt;C-j to stop automatically completing file names. For example, you have "test.01" and "test.02" in your work directory, but you want to create a new file "test" instead of finding "test.01" or "test.02". Then you should type C-j after inputting "test", to run ido-select-text.&lt;br /&gt;Tab or ? to show completion help.&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-3574479074765318937?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/7hvyN57GM_0" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/3574479074765318937/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=3574479074765318937" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3574479074765318937?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3574479074765318937?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/7hvyN57GM_0/emacs-ido.html" title="emacs ido" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/emacs-ido.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CEcHQHk_eSp7ImA9WxVWFkg.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-7503691372377168076</id><published>2009-02-26T20:24:00.004+08:00</published><updated>2009-02-26T20:40:31.741+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-26T20:40:31.741+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><title>二进制diff工具xdelta</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/HiVFpQPH2sh3dBYJ1gk8Qg8sqYc/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HiVFpQPH2sh3dBYJ1gk8Qg8sqYc/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/HiVFpQPH2sh3dBYJ1gk8Qg8sqYc/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/HiVFpQPH2sh3dBYJ1gk8Qg8sqYc/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;diff和patch是针对文本文件的一对工具.&lt;br /&gt;如果要处理的是二进制文件，可以使用一个专门用来处理二进制文件的工具&lt;a href="http://code.google.com/p/xdelta/"&gt;xdelta&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;比如你以前下载了 &lt;a href="http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.90.tar.gz"&gt;emacs-23.0.90.tar.gz&lt;/a&gt; (41M), 现在 &lt;a href="http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.91.tar.gz"&gt;emacs-23.0.91.tar.gz&lt;/a&gt; 出来了，你可以只下载一个&lt;a href="http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.90-23.0.91.xdelta"&gt;emacs-23.0.90-23.0.91.xdelta&lt;/a&gt; (622K), 而不必下载 &lt;a href="http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.91.tar.gz"&gt;emacs-23.0.91.tar.gz&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;  &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;安装xdelta:&lt;br /&gt;sudo apt-get install xdelta&lt;br /&gt;&lt;br /&gt;文档:&lt;br /&gt;man xdelta&lt;br /&gt;&lt;br /&gt;生成补丁(Delta):&lt;br /&gt;    xdelta delta fromfile tofile patchout&lt;br /&gt;&lt;br /&gt;应用补丁(Patch):&lt;br /&gt;    xdalta patch patchout&lt;br /&gt;&lt;br /&gt;例如:&lt;br /&gt;xdalta patch emacs-23.0.90-23.0.91.xdelta&lt;br /&gt;不会把原文件覆盖掉，会生成一个emacs-23.0.91.tar.gz&lt;br /&gt;&lt;br /&gt;查看补丁(Info):&lt;br /&gt;    xdelta info ***.xdelta&lt;br /&gt;里面有文件名, 长度, md5等信息.&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-7503691372377168076?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/hx-4R1PNwh8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/7503691372377168076/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=7503691372377168076" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/7503691372377168076?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/7503691372377168076?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/hx-4R1PNwh8/diffxdelta.html" title="二进制diff工具xdelta" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/diffxdelta.html</feedburner:origLink></entry><entry gd:etag="W/&quot;Dk8GR3s6eyp7ImA9WxVWFkk.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-2590641734112785499</id><published>2009-02-24T23:51:00.007+08:00</published><updated>2009-02-26T18:40:26.513+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-26T18:40:26.513+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>float length = 178.5, weight = 63.5;</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/WwecDYNttlfrQfWJsj57u7ld2iY/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwecDYNttlfrQfWJsj57u7ld2iY/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/WwecDYNttlfrQfWJsj57u7ld2iY/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/WwecDYNttlfrQfWJsj57u7ld2iY/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;今天去广东省国际旅行卫生保健中心体检, 很多人，好多鬼佬。&lt;br /&gt;&lt;br /&gt;丫的竟然要照片，没带，只好乖乖拍照30元, 一般地铁里那种快相才20元.&lt;br /&gt;教训：出来混，pp随身带！&lt;br /&gt;&lt;br /&gt;抽血，尿尿，胸透，身高体重血压体温，心电图，五官，内外科一个都不少，别担心，不用检查小jj。&lt;br /&gt;&lt;br /&gt;裸眼视力: 左眼1.0, 右眼0.8&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-2590641734112785499?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/JFTYeiM8Jkg" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/2590641734112785499/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=2590641734112785499" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2590641734112785499?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2590641734112785499?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/JFTYeiM8Jkg/float-length-1785-weight-635.html" title="float length = 178.5, weight = 63.5;" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/float-length-1785-weight-635.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CUcGRn09fCp7ImA9WxVWFEQ.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-6602957676902708404</id><published>2009-02-21T01:13:00.009+08:00</published><updated>2009-02-25T00:30:27.364+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-25T00:30:27.364+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="unix" /><title>VirtualBox安装配置FreeBSD</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/br4rqgSx_jH2AAk6oh5-DRy_jCQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/br4rqgSx_jH2AAk6oh5-DRy_jCQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/br4rqgSx_jH2AAk6oh5-DRy_jCQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/br4rqgSx_jH2AAk6oh5-DRy_jCQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;span style="font-family:monospace;"&gt;安装照着手册就行了，特别是在虚拟机，当作是独占一个硬盘的情况。&lt;br /&gt;&lt;a href="http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/install.html"&gt;http://www.freebsd.org/doc/zh_CN.GB2312/books/handbook/install.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;配置:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;网络:&lt;br /&gt;NAT + 端口转发. 启用DHCP.&lt;br /&gt;网卡： Intel PRO/1000, 所以下面填e1000, 而不是pcnet。（详见VirtualBox UserManual)&lt;br /&gt;&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/telnet/Protocol" TCP&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/telnet/GuestPort" 23&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/telnet/HostPort" 2323&lt;br /&gt;&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/Protocol"  TCP&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/GuestPort" 22&lt;br /&gt;VBoxManage setextradata freebsd  "VBoxInternal/Devices/e1000/0/LUN#0/Config/ssh/HostPort" 2222&lt;br /&gt;&lt;br /&gt;现在可以ssh过去了&lt;br /&gt;ssh -p 2222  user@host&lt;br /&gt;&lt;br /&gt;用户管理：&lt;br /&gt;将用户添加到wheel组, 才可以su.&lt;br /&gt;编辑　/etc/group 文件, &lt;/span&gt;&lt;span class="postbody"&gt;wheel:*:0:root&lt;span style="color: rgb(255, 102, 102);"&gt;,bbs&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;安装sudo&lt;br /&gt;&lt;/span&gt;&lt;ol class="dp-rb" start="1"&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;cd /usr/ports/security/sudo&lt;/span&gt;&lt;span&gt;  &lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span class="comment"&gt;make install clean&lt;/span&gt;&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;&lt;span&gt;visudo  增加一行: wheel  ALL=(ALL) NOPASSWD: ALL&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;------------------------------------------------------&lt;br /&gt;ps. VirtualBox 对 FreeBSD 7 时常出现这个bug:&lt;br /&gt;&lt;span class="hilite2"&gt;sigreturn&lt;/span&gt;: eflags = 0x80247&lt;br /&gt;console锁死了,只能通过另外一个终端ssh上去BSD,杀死进程或者执行reboot重启.&lt;br /&gt;&lt;a href="http://www.virtualbox.org/ticket/2341"&gt;http://www.virtualbox.org/ticket/2341&lt;/a&gt; 希望尽快解决&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-6602957676902708404?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/oXfysyRFeJ4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/6602957676902708404/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=6602957676902708404" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6602957676902708404?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6602957676902708404?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/oXfysyRFeJ4/virtualboxfreebsd.html" title="VirtualBox安装配置FreeBSD" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/virtualboxfreebsd.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0YCR3c6eip7ImA9WxVWEU8.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-5361269625845290804</id><published>2009-02-20T19:16:00.003+08:00</published><updated>2009-02-20T19:26:06.912+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-20T19:26:06.912+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>重新编译了emacs 23</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/0bwDs6De7dAZcr5l_t_QlH3KxRM/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0bwDs6De7dAZcr5l_t_QlH3KxRM/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/0bwDs6De7dAZcr5l_t_QlH3KxRM/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/0bwDs6De7dAZcr5l_t_QlH3KxRM/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;1.下载emacs23代码 (2月初放出来的pretest)&lt;br /&gt; &lt;a href="http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.90.tar.gz"&gt;http://alpha.gnu.org/gnu/emacs/pretest/emacs-23.0.90.tar.gz&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;或者通过cvs下载最新的代码:&lt;br /&gt; cvs -z3 -d:pserver:anonymous@cvs.sv.gnu.org:/sources/emacs co emacs&lt;br /&gt;&lt;br /&gt;2. 编译安装&lt;br /&gt;让emacs支持xft字体&lt;br /&gt;./configure &lt;span style="color: rgb(255, 0, 0);"&gt;--enable-font-backend --with-xft --with-freetype --with-x-toolkit=gtk&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;  make bootstrap&lt;br /&gt;  make info&lt;br /&gt;  make install&lt;br /&gt;&lt;br /&gt;3.  写~/.Xresources 文件&lt;br /&gt;&lt;br /&gt;    Xft.antialias: 1&lt;br /&gt;    Xft.hinting: 1&lt;br /&gt;    Xft.hintstyle: hintfull&lt;br /&gt;    Emacs.FontBackend: xft&lt;br /&gt;&lt;br /&gt;4. .emacs 设置&lt;br /&gt;(set-default-font "Bitstream Vera Sans Mono-13")&lt;br /&gt;(set-fontset-font "fontset-default"&lt;br /&gt;                'gb18030 '("WenQuanYi Bitmap Song" . "unicode-bmp"))&lt;br /&gt;&lt;br /&gt;5. 启动时添加选项  --enable-font-backend (好像非必须)&lt;br /&gt;&lt;br /&gt;6. 上pp&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_ndzpVD-Se1Y/SZ6TNzA4nHI/AAAAAAAAC60/MeqXBMupxaQ/s1600-h/Screenshot-.emacs%40Emacs.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 140px;" src="http://4.bp.blogspot.com/_ndzpVD-Se1Y/SZ6TNzA4nHI/AAAAAAAAC60/MeqXBMupxaQ/s200/Screenshot-.emacs%40Emacs.png" alt="" id="BLOGGER_PHOTO_ID_5304839276330523762" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;参考: http://fxl.blogbus.com/logs/11846673.html&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-5361269625845290804?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/1kJYUKUiFvI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/5361269625845290804/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=5361269625845290804" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/5361269625845290804?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/5361269625845290804?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/1kJYUKUiFvI/emacs-23.html" title="重新编译了emacs 23" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://4.bp.blogspot.com/_ndzpVD-Se1Y/SZ6TNzA4nHI/AAAAAAAAC60/MeqXBMupxaQ/s72-c/Screenshot-.emacs%40Emacs.png" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/emacs-23.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUcNSXw4eip7ImA9WxVQGUk.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-8838975929270220514</id><published>2009-02-07T02:56:00.003+08:00</published><updated>2009-02-07T03:04:58.232+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-07T03:04:58.232+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="life" /><title>2008 job hunting list</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3uCpJ9wbeqfI9zMWj1Azo18MUC8/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3uCpJ9wbeqfI9zMWj1Azo18MUC8/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3uCpJ9wbeqfI9zMWj1Azo18MUC8/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3uCpJ9wbeqfI9zMWj1Azo18MUC8/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;163.com                   简历,拒信&lt;br /&gt;google                      4面, 默拒&lt;br /&gt;alibaba                     2面, 拒信&lt;br /&gt;xunlei                      2笔fail&lt;br /&gt;lenovo                      简历fail&lt;br /&gt;qq.qzone                    1面fail&lt;br /&gt;qq.soso                     1面fail&lt;br /&gt;EMC^2                      简历fail&lt;br /&gt;oracle                      笔试,默拒&lt;br /&gt;163.game                    offer&lt;br /&gt;gdnortel                    2面,默拒&lt;br /&gt;163.youdao                  简历,默拒&lt;br /&gt;huawei                      笔试没去&lt;br /&gt;M$                          电面, 默拒&lt;br /&gt;baidu.ps                    1面,默拒&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-8838975929270220514?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/UzYJ1sdS0Z4" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/8838975929270220514/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=8838975929270220514" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8838975929270220514?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8838975929270220514?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/UzYJ1sdS0Z4/2008-job-hunting-list.html" title="2008 job hunting list" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/2008-job-hunting-list.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUYNR348cCp7ImA9WxVQFEU.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-6163911645324272271</id><published>2009-02-01T19:15:00.002+08:00</published><updated>2009-02-01T19:19:56.078+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-02-01T19:19:56.078+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><title>svn 导入数据到版本库</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/E5jkahtBc3q7qIps_9ZSJEEx_xo/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5jkahtBc3q7qIps_9ZSJEEx_xo/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/E5jkahtBc3q7qIps_9ZSJEEx_xo/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/E5jkahtBc3q7qIps_9ZSJEEx_xo/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;$ svnadmin create /home/svn/someproject&lt;br /&gt;$ svn import mytree file:///home/svn/someproject -m "Initial import"&lt;br /&gt;&lt;br /&gt;在导入之后，原来的目录树并没有转化成工作拷贝，&lt;br /&gt;&lt;br /&gt;为了开始工作，还是需要运行svn checkout导出一个工作拷贝:&lt;br /&gt;$ svn co file:///home/svn/someproject&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;svn book:&lt;br /&gt;&lt;a href="http://www.subversion.org.cn/svnbook/1.4/index.html"&gt;http://www.subversion.org.cn/svnbook/1.4/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-6163911645324272271?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/__RMCoTpfUA" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/6163911645324272271/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=6163911645324272271" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6163911645324272271?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6163911645324272271?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/__RMCoTpfUA/svn.html" title="svn 导入数据到版本库" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/02/svn.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DEcCRHw9eip7ImA9WxVSF0o.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-6043034483942708902</id><published>2009-01-12T23:42:00.007+08:00</published><updated>2009-01-13T00:01:05.262+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-13T00:01:05.262+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><title>grep -- output context line</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IggoFzUjj13vpx_axJx6_uyO1pw/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IggoFzUjj13vpx_axJx6_uyO1pw/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IggoFzUjj13vpx_axJx6_uyO1pw/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IggoFzUjj13vpx_axJx6_uyO1pw/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;grep输出匹配的上下文 (Context Line Control):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;    -A&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;NUM&lt;/span&gt;, --after-context=NUM&lt;br /&gt;       Print  NUM  lines  of trailing context after matching lines.&lt;br /&gt;&lt;br /&gt;    &lt;span style="color: rgb(255, 0, 0);"&gt;-B &lt;/span&gt;&lt;span style="color: rgb(51, 204, 0);"&gt;NUM&lt;/span&gt;, --before-context=NUM&lt;br /&gt;       Print  NUM  lines  of leading context before matching lines.&lt;br /&gt;&lt;br /&gt;    -&lt;span style="color: rgb(255, 0, 0);"&gt;C&lt;/span&gt; &lt;span style="color: rgb(51, 204, 0);"&gt;NUM&lt;/span&gt;, -NUM, --context=NUM&lt;br /&gt;       Print  NUM  lines  of output context.&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Places a line containing a group separator (--) between contiguous groups of matches.&lt;br /&gt;&lt;br /&gt;note: With the &lt;span style="color: rgb(255, 0, 0);"&gt;-o&lt;/span&gt; or &lt;span style="color: rgb(255, 0, 0);"&gt;--only-matching&lt;/span&gt; option, these has no effect and a warning is given&lt;br /&gt;&lt;br /&gt;example: 想在bbs.c里看看frgg有没添加什么后门:&lt;br /&gt;输出含有"freestyler"的行, 并输出匹配的前一行, 跟后面2行。&lt;br /&gt;grep -B1 -A2 freestyler bbs.c&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;char quote_file[PATH_MAX + 1], quote_user[IDLEN + 2];&lt;br /&gt;struct fileheader* quote_fh; /* freestyler: for 转载文章 */&lt;br /&gt;&lt;br /&gt;#ifndef NOREPLY&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;/* freestyler: 校内版面名不出现在namecomplete中 */&lt;br /&gt;if (valid_host_mask == HOST_AUTH_NA) {&lt;br /&gt;if (bptr-&gt;flag &amp;amp; BRD_INTERN) { /* 校内版面 */&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;/* freestyler:  获取附件信息到全局变量 attach_info, attach_link&lt;br /&gt;* return 0 如果没附件 */&lt;br /&gt;int&lt;br /&gt;--&lt;br /&gt;#ifdef INBOARDCOUNT&lt;br /&gt;/* inboard user count  by freestyler */&lt;br /&gt;int idx = getbnum(currboard);&lt;br /&gt;board_setcurrentuser(idx-1, -1);&lt;br /&gt;--&lt;br /&gt;if (mode == 0) {&lt;br /&gt;write_header(of, 0 /* 写入 .post */, NA); /* freestyler: 转载写入 .post, 十大作者问题 */&lt;br /&gt;if (fgets(buf, 256, inf) != NULL) {&lt;br /&gt;if ((ptr = strstr(buf, "信人: ")) == NULL) {&lt;br /&gt;--&lt;br /&gt;if (!mode) {   // 转载记录&lt;br /&gt;if(getattachinfo(quote_fh)) { /* freestyler: 附件链接信息　*/&lt;br /&gt;fprintf(of, "\033[m\n%s 链接:\n", attach_info);&lt;br /&gt;fprintf(of, "\033[4m%s\033[m\n", attach_link);&lt;br /&gt;--&lt;br /&gt;}&lt;br /&gt;/* freestyler:非标准阅读模式置不可回复标记 */&lt;br /&gt;int savedigestmode = digestmode;&lt;br /&gt;digestmode = 0;&lt;br /&gt;--&lt;br /&gt;}&lt;br /&gt;/* freestyler: 非标准阅读模式 mark post */&lt;br /&gt;int savedigestmode = digestmode;&lt;br /&gt;digestmode = 0;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;/* freestyler: 非标准模式删文 */&lt;br /&gt;if (digestmode &gt;= 2 ) {&lt;br /&gt;int savedigestmode = digestmode ;&lt;br /&gt;--&lt;br /&gt;&lt;br /&gt;/* freestyler: 非标准阅读模式选择文章 */&lt;br /&gt;int savedigestmode = digestmode;&lt;br /&gt;digestmode = 0;&lt;br /&gt;--&lt;br /&gt;break;&lt;br /&gt;/* freestyler: 非标准阅读模式编辑文章,&lt;br /&gt;* 没启用MARK_X_FLAG, edit_post将不会用到ent, direct参数和digestmode全局变量&lt;br /&gt;* 否则要相应处理ent, direct, digestmode */&lt;br /&gt;--&lt;br /&gt;{ '=', SR_first },&lt;br /&gt;{ '%', jump_to_reply },       /* 跳到回复 (freestyler) */&lt;br /&gt;{ Ctrl('S'), SR_read },&lt;br /&gt;{ 'p', SR_read },&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-6043034483942708902?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/urn8SVfDgzE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/6043034483942708902/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=6043034483942708902" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6043034483942708902?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6043034483942708902?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/urn8SVfDgzE/grep-output-context-line.html" title="grep -- output context line" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/grep-output-context-line.html</feedburner:origLink></entry><entry gd:etag="W/&quot;D0UAQXo9cCp7ImA9WxVSFU0.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-7082230375404594052</id><published>2009-01-09T20:43:00.002+08:00</published><updated>2009-01-09T20:47:20.468+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-09T20:47:20.468+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><title>[less]Colorful man pages</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/LiTXpnGue9r7A19z0b71nGu8sbE/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LiTXpnGue9r7A19z0b71nGu8sbE/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/LiTXpnGue9r7A19z0b71nGu8sbE/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/LiTXpnGue9r7A19z0b71nGu8sbE/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://freelet.blogspot.com/2008/12/man.html"&gt;上一回&lt;/a&gt;说了使用 export PAGER=most来使man有颜色, 不过most用得不是很爽.. &lt;br /&gt;现在&lt;a href="http://nion.modprobe.de/blog/archives/572-less-colors-for-man-pages.html"&gt;发现&lt;/a&gt;less也可以彩色, 方法如下:&lt;br /&gt;在 .bashrc里 添加如下内容: &lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;export LESS_TERMCAP_mb=$'\E[01;31m'&lt;br /&gt;export LESS_TERMCAP_md=$'\E[01;31m'&lt;br /&gt;export LESS_TERMCAP_me=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_se=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_so=$'\E[01;44;33m'&lt;br /&gt;export LESS_TERMCAP_ue=$'\E[0m'&lt;br /&gt;export LESS_TERMCAP_us=$'\E[01;32m'&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-7082230375404594052?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/J8Siq1Gnfmc" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/7082230375404594052/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=7082230375404594052" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/7082230375404594052?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/7082230375404594052?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/J8Siq1Gnfmc/lesscolorful-man-pages.html" title="[less]Colorful man pages" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/lesscolorful-man-pages.html</feedburner:origLink></entry><entry gd:etag="W/&quot;AkUFRX4-cCp7ImA9WxVSFE4.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-8512342146903413955</id><published>2009-01-09T02:02:00.003+08:00</published><updated>2009-01-09T02:10:14.058+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-09T02:10:14.058+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>sicp习题解答1.3.2 - 1.3.3</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/IY9HYnlUxZR6M_N2TLyjZncx_hs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IY9HYnlUxZR6M_N2TLyjZncx_hs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/IY9HYnlUxZR6M_N2TLyjZncx_hs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/IY9HYnlUxZR6M_N2TLyjZncx_hs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://freelet.blogspot.com/2009/01/sicpsec131.html"&gt;上一节1.3.1&lt;/a&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.34&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;f&lt;/span&gt; g)&lt;br /&gt;  (g 2))&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.35&lt;/span&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; &lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;tolerance&lt;/span&gt; 0.00001)&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;fixed-point&lt;/span&gt; f first-guess)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;close-enough?&lt;/span&gt; v1 v2)&lt;br /&gt;    (&amp;lt; (abs (- v1 v2)) tolerance))&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;try&lt;/span&gt; guess)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;let&lt;/span&gt; ((next (f guess)))&lt;br /&gt;      (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (close-enough? guess next)&lt;br /&gt;          next&lt;br /&gt;          (try next))))&lt;br /&gt;  (try first-guess))&lt;br /&gt;&lt;br /&gt;(fixed-point (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x) (+ 1 (/ 1 x))) 1.0)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.36&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;fixed-point&lt;/span&gt; f first-guess)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;close-enough?&lt;/span&gt; v1 v2)&lt;br /&gt;    (&amp;lt; (abs (- v1 v2)) tolerance))&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;try&lt;/span&gt; guess)&lt;br /&gt;    (display guess)&lt;br /&gt;    (newline)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;let&lt;/span&gt; ((next (f guess)))&lt;br /&gt;      (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (close-enough? guess next)&lt;br /&gt;          next&lt;br /&gt;          (try next))))&lt;br /&gt;  (try first-guess))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;average&lt;/span&gt; x y)&lt;br /&gt;  (/ (+ x y) 2))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;take with average damping&lt;br /&gt;&lt;/span&gt;(fixed-point (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x)(average x (/ (log 1000) (log x)))) 5)&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;without average damping&lt;br /&gt;&lt;/span&gt;(fixed-point (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x) (/ (log 1000) (log x))) 5)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Welcome to DrScheme, version 372 [3m].&lt;br /&gt;Language: Standard (R5RS).&lt;br /&gt;5&lt;br /&gt;4.64601483711009&lt;br /&gt;4.571611286076025&lt;br /&gt;4.558294317536066&lt;br /&gt;4.556006022881116&lt;br /&gt;4.555615799731297&lt;br /&gt;4.555549342575593&lt;br /&gt;4.555538027101999&lt;br /&gt;4.5555361005218895&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;5&lt;br /&gt;4.29202967422018&lt;br /&gt;4.741863119908242&lt;br /&gt;4.438204569837609&lt;br /&gt;4.635299887107611&lt;br /&gt;4.50397811613643&lt;br /&gt;4.589989462723705&lt;br /&gt;4.53301150767844&lt;br /&gt;4.570475672855484&lt;br /&gt;4.545720389670642&lt;br /&gt;4.562024936588171&lt;br /&gt;4.551263234080531&lt;br /&gt;4.55835638768598&lt;br /&gt;4.553676852183342&lt;br /&gt;4.55676216434628&lt;br /&gt;4.554727130670954&lt;br /&gt;4.556069054770006&lt;br /&gt;4.555184018843625&lt;br /&gt;4.5557676565438205&lt;br /&gt;4.555382746639082&lt;br /&gt;4.55563658243586&lt;br /&gt;4.555469180245326&lt;br /&gt;4.555579577900997&lt;br /&gt;4.5555067722873686&lt;br /&gt;4.5555547860484085&lt;br /&gt;4.555523121789556&lt;br /&gt;4.555544003742869&lt;br /&gt;4.555530232469306&lt;br /&gt;4.555539314360711&lt;br /&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.37&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;cont-frac&lt;/span&gt; n d k)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (= i k)&lt;br /&gt;        (/ (n k) (d k))&lt;br /&gt;        (/ (n i) (+ (d i)&lt;br /&gt;                    (iteer (+ i 1))))))&lt;br /&gt;  (iter 1))&lt;br /&gt;&lt;br /&gt;(cont-frac (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (i) 1.0)&lt;br /&gt;           (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (i) 1.0)&lt;br /&gt;           12)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.38&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;e-2&lt;/span&gt;)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;d&lt;/span&gt; i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (= (remainder i 3) 2)&lt;br /&gt;        (* (/ (+ i 1) 3) 2)&lt;br /&gt;        1))&lt;br /&gt;  (cont-frac (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (i) 1.0)&lt;br /&gt;             d&lt;br /&gt;             12))&lt;br /&gt;(e-2)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.39&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;tan-cf&lt;/span&gt; x k)&lt;br /&gt;  (cont-frac (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (i) (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (= i 1) x (- (square x))))&lt;br /&gt;             (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (i) (- (* 2 i) 1))&lt;br /&gt;             k))&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-8512342146903413955?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/p-4aoRrveAo" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/8512342146903413955/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=8512342146903413955" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8512342146903413955?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8512342146903413955?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/p-4aoRrveAo/sicp132-133.html" title="sicp习题解答1.3.2 - 1.3.3" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/sicp132-133.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0cNRXc7eSp7ImA9WxVSE08.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-1531582345297213115</id><published>2009-01-07T19:37:00.005+08:00</published><updated>2009-01-07T19:51:34.901+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-07T19:51:34.901+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><category scheme="http://www.blogger.com/atom/ns#" term="emacs" /><title>Firemacs - Yet another Good Firefox Addon</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/u7eRILGU_UZWzfmRkqN-Z2imDo4/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u7eRILGU_UZWzfmRkqN-Z2imDo4/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/u7eRILGU_UZWzfmRkqN-Z2imDo4/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/u7eRILGU_UZWzfmRkqN-Z2imDo4/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.mew.org/~kazu/proj/firemacs/config.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 350px;" src="http://www.mew.org/~kazu/proj/firemacs/config.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;作者主页:&lt;br /&gt;&lt;a href="http://www.mew.org/~kazu/proj/firemacs/"&gt;http://www.mew.org/~kazu/proj/firemacs/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;下载: &lt;a href="https://addons.mozilla.org/firefox/4141/"&gt;https://addons.mozilla.org/firefox/4141/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;装上之后, 现在firefox里编辑就像emacs一样鸟。哈哈, Good!&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-1531582345297213115?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/wUvZg5He3fU" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/1531582345297213115/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=1531582345297213115" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/1531582345297213115?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/1531582345297213115?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/wUvZg5He3fU/firemacs-yet-another-good-firefox-addon.html" title="Firemacs - Yet another Good Firefox Addon" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/firemacs-yet-another-good-firefox-addon.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUEHSHc9cSp7ImA9WxVSEks.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-8963407199660953392</id><published>2009-01-07T02:27:00.009+08:00</published><updated>2009-01-07T02:47:19.969+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-07T02:47:19.969+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="tool" /><title>2款http调试工具</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/paCLZlOk2B_tZ7WNxk4lCiRHbWQ/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/paCLZlOk2B_tZ7WNxk4lCiRHbWQ/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/paCLZlOk2B_tZ7WNxk4lCiRHbWQ/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/paCLZlOk2B_tZ7WNxk4lCiRHbWQ/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;第一个,firefox插件&lt;a href="https://addons.mozilla.org/en-US/firefox/addon/6647"&gt;httpfox&lt;/a&gt; &lt;br /&gt;HttpFox monitors and analyzes all incoming and outgoing HTTP traffic between the browser and the web servers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;第二个: &lt;a href="http://www.fiddlertool.com/fiddler/"&gt;fiddler&lt;/a&gt; (只能在Windows下使用)&lt;br /&gt;Fiddler is a HTTP Debugging Proxy which logs all HTTP traffic between your computer and the Internet.  &lt;br /&gt;&lt;br /&gt;上两张图:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://addons.mozilla.org/en-US/firefox/images/p/18954/1204836671"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="https://addons.mozilla.org/en-US/firefox/images/p/18954/1204836671" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.fiddlertool.com/fiddler/images/fiddler98.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 400px; height: 300px;" src="http://www.fiddlertool.com/fiddler/images/fiddler98.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-8963407199660953392?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/ulYgMZK7J4w" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/8963407199660953392/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=8963407199660953392" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8963407199660953392?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/8963407199660953392?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/ulYgMZK7J4w/httpdebugger-analyzer-tool.html" title="2款http调试工具" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/httpdebugger-analyzer-tool.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DUABSXczfCp7ImA9WxVSEUs.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-3751788972696904130</id><published>2009-01-05T20:19:00.017+08:00</published><updated>2009-01-05T23:02:38.984+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-05T23:02:38.984+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>给BBS添加一个显示文章信息的功能</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/3kKr_X-gU3kD9ZAB3ISgdF5tHms/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3kKr_X-gU3kD9ZAB3ISgdF5tHms/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/3kKr_X-gU3kD9ZAB3ISgdF5tHms/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/3kKr_X-gU3kD9ZAB3ISgdF5tHms/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;本文说的BBS是逸仙时空系统telnet端(Puke Bulletin Board System Version 0.1.2 Beta, 由&lt;a href="http://zh.wikipedia.org/wiki/Firebird_BBS"&gt;firebird&lt;/a&gt; 2000发展而来)&lt;br /&gt;&lt;br /&gt;[功能解释]&lt;br /&gt;在文章列表时,&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_ndzpVD-Se1Y/SWIHp-oafAI/AAAAAAAACos/UKesf2aDqtU/s1600-h/bbs_%E7%9C%8B%E7%9C%8B%E6%96%B0%E6%96%87%E7%AB%A0.jpg"&gt;&lt;img style="cursor: pointer; width: 320px; height: 238px;" src="http://2.bp.blogspot.com/_ndzpVD-Se1Y/SWIHp-oafAI/AAAAAAAACos/UKesf2aDqtU/s320/bbs_%E7%9C%8B%E7%9C%8B%E6%96%B0%E6%96%87%E7%AB%A0.jpg" alt="" id="BLOGGER_PHOTO_ID_5287797330254920706" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;按 * 键显示文章的信息 (url, 利于直接用web方式查看(比如说有人贴了ppmm的照片))&lt;br /&gt;虽然已经有显示文章链接功能，可是有些文章会死活都显示不出来的 (此bug很牛b, 曾尝试跟踪, 搞不定)&lt;br /&gt;&lt;br /&gt;在代码里有这样一个结构:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;struct one_key {  /* Used to pass commands to the readmenu */&lt;br /&gt;  int key;&lt;br /&gt;  int (*fptr) ();&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;一个按键， 对应一个函数指针. 用户按一下那个键，就会跳到那个函数处执行。&lt;br /&gt;&lt;br /&gt;用户进入版面这个过程对应的是bbs.c里Read()这个函数,&lt;br /&gt;Read会用下面read_comms作为参数去调用read.c里的 i_read函数.&lt;br /&gt;i_read里面进行一些处理后就会进入键盘指令循环: 获取键盘按键, 执行相应函数.&lt;br /&gt;&lt;br /&gt;节选一些 read_comms, 如果你熟悉bbs操作， 就明白了。&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;struct one_key read_comms[] = {&lt;br /&gt;{ '_', underline_post },            /* 设置不可回复标记 */&lt;br /&gt;{ 'r', read_post },                 /* 阅读文章 */&lt;br /&gt;{ 'K', skip_post },                 /* 跳过文章 */&lt;br /&gt;{ 'd', d_action },                  /* 删除文章/解除匿名封禁 */&lt;br /&gt;{ 'E', E_action },                  /* 编辑文章/清空回收站 */&lt;br /&gt;{ 'D', del_range },                 /* 区段删除文章 */&lt;br /&gt;{ 'm', mark_post },                 /* 标记文章 (m) */&lt;br /&gt;{ 'g', digest_post },               /* 标记文章 (g) */&lt;br /&gt;{ 'e', select_post },               /* 标记文章 ($) (monster) */&lt;br /&gt;{ Ctrl('G'), digest_mode },         /* 文摘模式 */&lt;br /&gt;{ '`', digest_mode },               /* 文摘模式 */&lt;br /&gt;{ Ctrl('Y'), pure_mode },           /* 原作模式 (monster) */&lt;br /&gt;{ Ctrl('T'), acction_mode },        /* 多种模式切换 */&lt;br /&gt;{ 't', thesis_mode },               /* 主题模式 */&lt;br /&gt;{ 'T', edit_title },                /* 更改文章标题 */&lt;br /&gt;{ 's', do_select },                 /* 选择版面 */&lt;br /&gt;{ Ctrl('C'), do_cross },            /* 转载文章 */&lt;br /&gt;{ Ctrl('E'), process_select_post }, /* 处理选定文章 (monster) */&lt;br /&gt;{ Ctrl('V'), x_lockscreen_silent }, /* 锁屏 (monster) */&lt;br /&gt;{ 'h', mainreadhelp },              /* 显示帮助 */&lt;br /&gt;{ Ctrl('J'), mainreadhelp },        /* 显示帮助 */&lt;br /&gt;{ KEY_TAB, show_b_note },           /* 查看备忘录 */&lt;br /&gt;{ 'z', show_b_secnote },            /* 查看秘密备忘录 */&lt;br /&gt;{ 'x', currboard_announce },     /* 查看精华区 */&lt;br /&gt;{ 'a', a_action },                  /* 向后搜索作者/封禁 */&lt;br /&gt;{ '/', title_search_down },         /* 向后搜索标题 */&lt;br /&gt;{ 'b', bmfuncs },                   /* 版主特殊功能 */&lt;br /&gt;&lt;span style="color: rgb(255, 0, 0);"&gt;+ { '*', show_fileinfo },      /* 显示全文链接等, 这是我们要添加的*/&lt;/span&gt;&lt;br /&gt;{ '\0', NULL }&lt;br /&gt;};&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;这些函数的参数一般都是3个:&lt;br /&gt;int ent, 是当前文章(即光标对应的那篇文章)的序号&lt;br /&gt;struct fileheader *fileinfo,  是当前文章的文件头信息(文件名, 作者等)&lt;br /&gt;char *direct 是当前版面索引文件路径(例如: $BBSHOME/boards/Joke/.DIR)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;在bbs.c里添加上这个处理函数show_fileinfo:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;int&lt;br /&gt;show_fileinfo(int ent, struct fileheader *fileinfo, char *direct)&lt;br /&gt;{&lt;br /&gt; /* get file size */&lt;br /&gt; struct stat st;&lt;br /&gt; char buf[512], filepath[512];&lt;br /&gt; char *t;&lt;br /&gt; &lt;br /&gt; strlcpy(buf, direct, sizeof(buf));&lt;br /&gt; if ((t = strrchr(buf, '/')) != NULL)&lt;br /&gt;  *t = '\0';&lt;br /&gt; &lt;br /&gt; snprintf(filepath, sizeof(filepath), "%s/%s", buf, fileinfo-&gt;filename);&lt;br /&gt; if (stat(filepath, &amp;st) != -1)&lt;br /&gt;  fileinfo-&gt;size = st.st_size;&lt;br /&gt; &lt;br /&gt; clear();&lt;br /&gt; move(5, 0);&lt;br /&gt; prints("本文全文链接:\n");&lt;br /&gt; prints("http://%s/bbscon?board=%s&amp;file=%s\n\n",&lt;br /&gt;        BBSHOST, currboard, fileinfo-&gt;filename);&lt;br /&gt; prints("文章发表时间: %d\n\n", fileinfo-&gt;filetime);&lt;br /&gt; prints("文章大小: %d 字节\n\n", fileinfo-&gt;size);&lt;br /&gt; return FULLUPDATE;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;在头文件 include/prototypes.h 里添加上这个函数的原型。&lt;br /&gt;int show_fileinfo(int ent, struct fileheader *fileinfo, char *direct);&lt;br /&gt;&lt;br /&gt;好了。&lt;br /&gt;make update; 重启bbsd后就有这个功能了～&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-3751788972696904130?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/8K4MQFjwXSE" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/3751788972696904130/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=3751788972696904130" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3751788972696904130?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/3751788972696904130?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/8K4MQFjwXSE/bbs.html" title="给BBS添加一个显示文章信息的功能" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_ndzpVD-Se1Y/SWIHp-oafAI/AAAAAAAACos/UKesf2aDqtU/s72-c/bbs_%E7%9C%8B%E7%9C%8B%E6%96%B0%E6%96%87%E7%AB%A0.jpg" height="72" width="72" /><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/bbs.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU8BQX88eyp7ImA9WxVSEEQ.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-2403844267673162422</id><published>2009-01-05T03:22:00.005+08:00</published><updated>2009-01-05T03:37:30.173+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-05T03:37:30.173+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="linux" /><category scheme="http://www.blogger.com/atom/ns#" term="unix" /><title>获取系统帮助文档的三个命令: whatis apropos man</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/OIJcnmEK-vmgpOOaF3Q3_Xc4dd0/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OIJcnmEK-vmgpOOaF3Q3_Xc4dd0/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/OIJcnmEK-vmgpOOaF3Q3_Xc4dd0/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/OIJcnmEK-vmgpOOaF3Q3_Xc4dd0/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;whatis一下他们:&lt;br /&gt;&lt;pre class="prettyprint"&gt;&lt;br /&gt;man (1)              - an interface to the on-line reference manuals&lt;br /&gt;apropos (1)          - search the manual page names and descriptions&lt;br /&gt;whatis (1)           - display manual page descriptions&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;具体是什么可以man一下他们.&lt;br /&gt;&lt;br /&gt;apropos跟whatis的区别:&lt;br /&gt;whatis 只在man page names里匹配.&lt;br /&gt;apropos 还会在descriptions里匹配.&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-2403844267673162422?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/5sIB1L_W3zs" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/2403844267673162422/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=2403844267673162422" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2403844267673162422?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2403844267673162422?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/5sIB1L_W3zs/whatis-apropos-man.html" title="获取系统帮助文档的三个命令: whatis apropos man" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/whatis-apropos-man.html</feedburner:origLink></entry><entry gd:etag="W/&quot;CkUGQHk9fCp7ImA9WxVTGU8.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-832692713040019554</id><published>2009-01-03T01:58:00.009+08:00</published><updated>2009-01-03T02:17:01.764+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-03T02:17:01.764+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="application" /><title>Google Reader 快捷键</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/uAz5l9inWEoJL4ODlbrTD7LaAso/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uAz5l9inWEoJL4ODlbrTD7LaAso/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/uAz5l9inWEoJL4ODlbrTD7LaAso/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/uAz5l9inWEoJL4ODlbrTD7LaAso/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;可输入 ? 查看&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.google.com/reader/ui/81456458-zh-CN-keyboard-help-tearoff?hl=zh-CN"&gt;http://www.google.com/reader/ui/81456458-zh-CN-keyboard-help-tearoff?hl=zh-CN&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="prettyprit"&gt;o/Enter： 展开折叠条目（仅List查看模式）  &lt;span style="color: rgb(255, 102, 102);"&gt;这个很有用！&lt;/span&gt;&lt;br /&gt;j/k： 下一个/上一个项目&lt;br /&gt;n/p： 向下/向上扫描项目（仅List查看模式）&lt;br /&gt;&lt;br /&gt;空格： 下一个项目或页面&lt;br /&gt;shift + 空格： 上一个项目或页面&lt;shift&gt;&lt;br /&gt;&lt;br /&gt;&lt;shift&gt;shift + n/p： 下一个/上一个订阅&lt;br /&gt;&lt;/shift&gt;&lt;/shift&gt;shift&lt;shift&gt; + o： 打开订阅或文件夹&lt;/shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;br /&gt;&lt;shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;shift&lt;shift&gt; + a： 全部标为已读&lt;/shift&gt;&lt;br /&gt;shift&lt;shift&gt;&lt;shift&gt;&lt;shift&gt; + x： 展开文件夹&lt;br /&gt;&lt;br /&gt;p.s. 有个 &lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;a target="_blank" href="https://addons.mozilla.org/en-US/firefox/addon/6424"&gt;Better GReader&lt;/a&gt;, 一个用于 Google 阅读器优化的强大 Firefox 扩展,&lt;br /&gt;&lt;a href="http://www.weborn.org/better-greader-767/"&gt;这里&lt;/a&gt;有介绍.&lt;br /&gt;&lt;shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/shift&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-832692713040019554?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/yWQ_9Vcs51E" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/832692713040019554/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=832692713040019554" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/832692713040019554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/832692713040019554?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/yWQ_9Vcs51E/google-reader.html" title="Google Reader 快捷键" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/google-reader.html</feedburner:origLink></entry><entry gd:etag="W/&quot;A0IFQH47eCp7ImA9WxVTGE4.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-2692616267332180292</id><published>2009-01-02T03:48:00.000+08:00</published><updated>2009-01-02T03:51:51.000+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2009-01-02T03:51:51.000+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>sicp习题解答sec_1.3.1</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/BIm41_PxynNjDk_K7l0KmU1tEFs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BIm41_PxynNjDk_K7l0KmU1tEFs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/BIm41_PxynNjDk_K7l0KmU1tEFs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/BIm41_PxynNjDk_K7l0KmU1tEFs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://freelet.blogspot.com/2008/12/sicp12.html"&gt;上一节&lt;/a&gt;&lt;br /&gt;&lt;pre class="src"&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.29&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;Simpson&lt;/span&gt; f a b n)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; &lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;h&lt;/span&gt; (/ (- b a) n)) &lt;span style="color: #90ee90;"&gt;; &lt;/span&gt;&lt;span style="color: #90ee90;"&gt;n is an even number&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;y&lt;/span&gt; k)&lt;br /&gt;    (f (+ a (* k h))))&lt;br /&gt;&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;lt; i n)&lt;br /&gt;        (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (even? i)&lt;br /&gt;            (+ (* 2 (y i))&lt;br /&gt;               (iter (+ i 1)))&lt;br /&gt;            (+ (* 4 (y i))&lt;br /&gt;               (iter (+ i 1))))&lt;br /&gt;        0))&lt;br /&gt;&lt;br /&gt;  (* (/ h 3)&lt;br /&gt;     (+ (y 0)&lt;br /&gt;        (y n)&lt;br /&gt;        (iter 1))))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;cube&lt;/span&gt; x)&lt;br /&gt;  (* x x x))&lt;br /&gt;&lt;br /&gt;(Simpson cube 0 1 100)&lt;br /&gt;(Simpson cube 0 1 1000)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.30&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;sum&lt;/span&gt; term a next b)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; a result)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; a b)&lt;br /&gt;        result&lt;br /&gt;        (iter (next a) (+ result (term a)))))&lt;br /&gt;    (iter a 0))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.31&lt;br /&gt;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;a)&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;product&lt;/span&gt; term a next b)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; a b)&lt;br /&gt;      1&lt;br /&gt;      (* (term a)&lt;br /&gt;         (product term (next a) next b))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;factorial&lt;/span&gt; n)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;identity&lt;/span&gt; x) x)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;inc&lt;/span&gt; x) (+ x 1))&lt;br /&gt;  (product identity 1 inc n))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;pi&lt;/span&gt; n)&lt;br /&gt;  (* 4 (product (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x) (/ (* (- x 1.0) (+ x 1)) (* x x)))&lt;br /&gt;                3&lt;br /&gt;                (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x) (+ x 2))&lt;br /&gt;                n)))&lt;br /&gt;&lt;br /&gt;(pi 1000000)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;b)&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;product2&lt;/span&gt; term a next b)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; prod i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; i b)&lt;br /&gt;        prod&lt;br /&gt;        (iter (* (term i) prod) (next i))))&lt;br /&gt;  (iter 1 a))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.32&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;accumulate&lt;/span&gt; combiner null-value term a next b)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; a b)&lt;br /&gt;      null-value&lt;br /&gt;      (combiner (term a) (accumulate combiner null-value term (next a) next b))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;sum&lt;/span&gt; term a next b)&lt;br /&gt;  (accumulate (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x y) (+ x y)) 0 term a next b))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;product&lt;/span&gt; term a next b)&lt;br /&gt;  (accumulate (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x y) (* x y)) 1 term a next b))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;b)&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;accumulate2&lt;/span&gt; combiner null-value term a next b)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; result i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; i b)&lt;br /&gt;        result&lt;br /&gt;        (iter (combiner result (term i)) (next i))))&lt;br /&gt;  (iter null-value a))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;Exercise 1.33&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;filtered-accumulate&lt;/span&gt; combiner null-value term a next b filter)&lt;br /&gt;  (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;iter&lt;/span&gt; result i)&lt;br /&gt;    (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (&amp;gt; i b)&lt;br /&gt;        result&lt;br /&gt;        (iter (combiner result&lt;br /&gt;                        (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;if&lt;/span&gt; (filter i)&lt;br /&gt;                            (term i)&lt;br /&gt;                            null-value))&lt;br /&gt;              (next i))))&lt;br /&gt;  (iter null-value a))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;a) #&amp;#20013;&amp;#25991;&amp;#29256;&amp;#39064;&amp;#30446;&amp;#27809;&amp;#24179;&amp;#26041;.&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;sum-of-squares-of-primes&lt;/span&gt; a b)&lt;br /&gt;  (filtered-accumulate (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x y) (+ x y))&lt;br /&gt;                       0&lt;br /&gt;                       square&lt;br /&gt;                       a&lt;br /&gt;                       inc&lt;br /&gt;                       b&lt;br /&gt;                       prime?))&lt;br /&gt;&lt;br /&gt;&lt;span style="color: #90ee90;"&gt;;&lt;/span&gt;&lt;span style="color: #90ee90;"&gt;b)&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;relatively-prime-to-n?&lt;/span&gt; i)&lt;br /&gt;  (= 1 (gcd i n)))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;define&lt;/span&gt; (&lt;span style="color: #1e90ff; font-size: 105%; font-weight: bold;"&gt;profuct-of-relaviely-prime-to-n&lt;/span&gt; n)&lt;br /&gt;  (filtered-accumulate (&lt;span style="color: #ffb6c1; font-size: 105%;"&gt;lambda&lt;/span&gt; (x y) (* x y))&lt;br /&gt;                       1&lt;br /&gt;                       identity&lt;br /&gt;                       1&lt;br /&gt;                       inc&lt;br /&gt;                       (- n 1)&lt;br /&gt;                       relatively-prime-to-n?))&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-2692616267332180292?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/0XtF7LBHNc8" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/2692616267332180292/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=2692616267332180292" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2692616267332180292?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/2692616267332180292?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/0XtF7LBHNc8/sicpsec131.html" title="sicp习题解答sec_1.3.1" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2009/01/sicpsec131.html</feedburner:origLink></entry><entry gd:etag="W/&quot;DU4HRnkzfip7ImA9WxVTFks.&quot;"><id>tag:blogger.com,1999:blog-5384497670115981291.post-6002274189962912132</id><published>2008-12-30T04:51:00.005+08:00</published><updated>2008-12-31T04:12:17.786+08:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2008-12-31T04:12:17.786+08:00</app:edited><category scheme="http://www.blogger.com/atom/ns#" term="programming" /><title>sicp习题解答1.2</title><content type="html">
&lt;p&gt;&lt;a href="http://feedads.g.doubleclick.net/~a/xhtlavu8IN4K6Cr8gwUAz01A1Gs/0/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xhtlavu8IN4K6Cr8gwUAz01A1Gs/0/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;br/&gt;
&lt;a href="http://feedads.g.doubleclick.net/~a/xhtlavu8IN4K6Cr8gwUAz01A1Gs/1/da"&gt;&lt;img src="http://feedads.g.doubleclick.net/~a/xhtlavu8IN4K6Cr8gwUAz01A1Gs/1/di" border="0" ismap="true"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;&lt;a href="http://freelet.blogspot.com/2008/12/sicp1.html"&gt;上一节&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="src"&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.9.&lt;br /&gt;&lt;/span&gt;The first one is recursive,&lt;br /&gt;and the second one is iterative (tail recursive).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.10.&lt;br /&gt;&lt;/span&gt;由(A x y)定义得出&lt;br /&gt;(f n) = (2n)&lt;br /&gt;&lt;br /&gt;(A 1 10)&lt;br /&gt;(A 0 (A 1 9)) 得出&lt;br /&gt;(g n) = (2^n)&lt;br /&gt;&lt;br /&gt;(A 2 10)&lt;br /&gt;(A 1 (A 2 9))&lt;br /&gt;(A 2 1) = 2&lt;br /&gt;得出&lt;br /&gt;&lt;br /&gt;(h n) = (pow2 (h (- n 1)))&lt;br /&gt;that is, 2 ^ (2 ^ (... 2)) &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;n times&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.11.&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;f-recur&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (&amp;lt; n 3) n&lt;br /&gt;    (+ (f-recur (- n 1))&lt;br /&gt;       (* 2 (f-recur(- n 2)))&lt;br /&gt;       (* 3 (f-recur(- n 3))))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;f-iter&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; a b c count)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (= 0 count) c&lt;br /&gt;      (iter b c&lt;br /&gt;            (+ (* 3 a) (* 2 b) c)&lt;br /&gt;            (- count 1))))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (&amp;lt; n 3) n&lt;br /&gt;    (iter 0 1 2 (- n 2))))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.12.&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;Yang-Hui-San-Jiao&lt;/span&gt; nline)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;Yang-Hui-cell&lt;/span&gt; row col)&lt;br /&gt;  &lt;span style="color: rgb(144, 238, 144);"&gt;;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;(assert (not (&amp;gt; col row)))&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;    (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;or&lt;/span&gt; (= row 1)&lt;br /&gt;             (= col 1)&lt;br /&gt;             (= row col)) 1)&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (+ (Yang-Hui-cell (- row 1) (- col 1))&lt;br /&gt;                 (Yang-Hui-cell (- row 1) col)))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;Yang-Hui-line&lt;/span&gt; row)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; c)&lt;br /&gt;    (display (cons (Yang-Hui-cell row c) '()))&lt;br /&gt;    (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (&amp;lt; c row)&lt;br /&gt;        (iter (+ c 1))))&lt;br /&gt;&lt;br /&gt;  (iter 1)&lt;br /&gt;  (newline))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; r)&lt;br /&gt;  (Yang-Hui-line r)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (&amp;lt; r nline)&lt;br /&gt;      (iter (+ r 1))))&lt;br /&gt;&lt;br /&gt;(iter 1))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;test&lt;br /&gt;&lt;/span&gt;(Yang-Hui-San-Jiao 10)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.13.&lt;br /&gt;&lt;/span&gt;翻定义and归纳法证明.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.14.&lt;br /&gt;&lt;/span&gt;O(amount + kinds-of-coins) in space.&lt;br /&gt;O(result * amount) in time.&lt;br /&gt;refer to &lt;span style="text-decoration: underline;"&gt;&lt;/span&gt;&lt;a href="http://cuitianyi.com/blog/sicp%E4%B9%A0%E9%A2%98%E8%A7%A3%E7%AD%94%EF%BC%9A%E7%AC%AC%E4%B8%80%E7%AB%A0/"&gt;this&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.15.&lt;br /&gt;&lt;/span&gt;a. 5 times.&lt;br /&gt;b. O(log3(n)) in both time and space.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.16.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fast-expt-iter&lt;/span&gt; B N)&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;loop invariant: ab^n = B^N&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; a b n)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= 0 n) a)&lt;br /&gt;        ((even? n) (iter a (* b b) (/ n 2)))&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (iter (* a b) b (- n 1)))))&lt;br /&gt;&lt;br /&gt;(iter 1 B N))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.17&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fast-multi&lt;/span&gt; a b)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;double&lt;/span&gt; a) (+ a a))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;halve&lt;/span&gt; a) (/ a 2))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= 0 b) 0)&lt;br /&gt;      ((even? b) (fast-multi (double a) (halve b)))&lt;br /&gt;      (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (+ a (fast-multi a (- b 1))))))&lt;br /&gt;&lt;br /&gt;(fast-multi 10 15)&lt;br /&gt;(fast-multi 100 16)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.18&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fast-multi-iter&lt;/span&gt; a b)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; a b res)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= 0 b) res)&lt;br /&gt;        ((even? b) (iter (double a) (halve b) res))&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (iter a (- b 1) (+ res a)))))&lt;br /&gt;(iter a b 0))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.19&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;(b a) -&amp;gt; (a b+a)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;(b a) * [0, 1] = (a b+a)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;a &amp;lt;-  bq + aq + ap&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;b &amp;lt;-  bp + aq&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;(a, b) * [q+p, q] = (bq + aq + ap, bp + aq)&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;[q+p, q] ^ 2  = [(q+p)^2 + q^2, (q+p)q+qp] = [q'+p', q']&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;[q,   p]         [q(q+p) + pq  , q^2 + p^2] = [q'   , p']&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fib&lt;/span&gt; n)&lt;br /&gt;(fib-iter 1 0 0 1 n))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fib-iter&lt;/span&gt; a b p q count)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= count 0) b)&lt;br /&gt;      ((even? count)&lt;br /&gt;       (fib-iter a&lt;br /&gt;                 b&lt;br /&gt;                 (+ (* q q) (* p p))  &lt;span style="color: rgb(144, 238, 144);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;compute p'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;                   (+ (* q q) (* 2 p q))&lt;span style="color: rgb(144, 238, 144);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;compute q'&lt;br /&gt;&lt;/span&gt;                   (/ count 2)))&lt;br /&gt;      (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (fib-iter (+ (* b q) (* a q) (* a p))&lt;br /&gt;                      (+ (* b p) (* a q))&lt;br /&gt;                      p&lt;br /&gt;                      q&lt;br /&gt;                      (- count 1)))))&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.20&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;gcd&lt;/span&gt; a b)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (= b 0)&lt;br /&gt;    a&lt;br /&gt;    (gcd b (remainder a b))))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;正则序&lt;br /&gt;&lt;/span&gt;http://eli.thegreenplace.net/2007/07/04/sicp-sections-124-125/&lt;br /&gt;(gcd 206 40)&lt;br /&gt;(gcd 40 (remainder 206 40))&lt;br /&gt;-&amp;gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (= (remainder 206 40) 0) &lt;span style="color: rgb(144, 238, 144);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;1 time&lt;br /&gt;&lt;/span&gt;  40&lt;br /&gt;(gcd (remainder 206 40)&lt;br /&gt;  (remainder 40 (remainder 206 40))))&lt;br /&gt;-&amp;gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (= (remainder 40 (remainder 206 40)) 0) &lt;span style="color: rgb(144, 238, 144);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;2 times&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;  (remainder 206 40)&lt;br /&gt;(gcd&lt;br /&gt;  (remainder&lt;br /&gt;    40&lt;br /&gt;    (remainder 206 40))&lt;br /&gt;  (remainder&lt;br /&gt;    (remainder 206 40)&lt;br /&gt;    (remainder&lt;br /&gt;      40&lt;br /&gt;      (remainder 206 40)))))&lt;br /&gt;-&amp;gt; ...&lt;br /&gt;18次&lt;br /&gt;&lt;br /&gt;(gcd 206 40) &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;remainder 1&lt;br /&gt;&lt;/span&gt;(gcd 40 6)   &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;remainder 2&lt;br /&gt;&lt;/span&gt;(gcd 6 4)    &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;remainder 3&lt;br /&gt;&lt;/span&gt;(gcd 4 2)    &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;remainder 4&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;(gcd 2 0)&lt;br /&gt;4次&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.21&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;smallest-divisor&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;find-divisor&lt;/span&gt; n test-divisor)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((&amp;gt; (* test-divisor test-divisor) n) n)&lt;br /&gt;        ((= (remainder n test-divisor) 0) test-divisor)&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (find-divisor n (+ 1 test-divisor)))))&lt;br /&gt;(find-divisor n 2))&lt;br /&gt;&lt;br /&gt;(smallest-divisor 199)   &lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;199&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;(smallest-divisor 1999)  &lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;1999&lt;br /&gt;&lt;/span&gt;(smallest-divisor 19999) &lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;7&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.22&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;prime?&lt;/span&gt; n)&lt;br /&gt;(= (smallest-divisor n) n))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;timed-prime-test&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;start-prime-test&lt;/span&gt; n start-time)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (prime? n)&lt;br /&gt;      (report-prime (- (runtime) start-time))))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;report-prime&lt;/span&gt; elapsed-time)&lt;br /&gt;  (display &lt;span style="color: rgb(255, 160, 122);"&gt;" *** "&lt;/span&gt;)&lt;br /&gt;  (display elapsed-time))&lt;br /&gt;&lt;br /&gt;(newline)&lt;br /&gt;(display n)&lt;br /&gt;(start-prime-test n (runtime)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;search-for-primes&lt;/span&gt; begin end)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((&amp;lt; begin end)&lt;br /&gt;       (timed-prime-test begin)&lt;br /&gt;       (search-for-primes (+ 2 begin) end))))&lt;br /&gt;&lt;br /&gt;(search-for-primes 1001 1020)&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;1009, 1013, 1019&lt;br /&gt;&lt;/span&gt;(search-for-primes 10001 10038)&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;10007, 10009, 10037&lt;br /&gt;&lt;/span&gt;(search-for-primes 100001 100044)&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;100003, 100019, 100043&lt;br /&gt;&lt;/span&gt;(search-for-primes 1000001 1000038)&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;1000003, 1000033, 1000037&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Curiously, timing the runs for 1,000 10,000 100,000 and 1,000,000&lt;br /&gt;;doesn’t work&lt;/span&gt; &lt;span style="color: rgb(144, 238, 144);"&gt;because my computer is too fast&lt;br /&gt;;(SICP was written in the 80s!) – all the runs&lt;br /&gt;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;just take 0 seconds, which means that the runtime is&lt;br /&gt;;below the resolution of&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;the timer used in the timing.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.23&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;smallest-divisor&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;next&lt;/span&gt; n)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (= n 2)&lt;br /&gt;      3&lt;br /&gt;      (+ n 2)))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;find-divisor&lt;/span&gt; n test-divisor)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((&amp;gt; (* test-divisor test-divisor) n) n)&lt;br /&gt;        ((= (remainder n test-divisor) 0) test-divisor)&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (find-divisor n (next test-divisor)))))&lt;br /&gt;(find-divisor n 2))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.24&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;expmod&lt;/span&gt; base exp m)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= exp 0) 1)&lt;br /&gt;      ((even? exp)&lt;br /&gt;       (remainder (square (expmod base (/ exp 2) m))&lt;br /&gt;                  m))&lt;br /&gt;      (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt;&lt;br /&gt;       (remainder (* base (expmod base (- exp 1) m))&lt;br /&gt;                  m))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fermat-test&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;try-it&lt;/span&gt; a)&lt;br /&gt;  (= (expmod a n n) a))&lt;br /&gt;(try-it (+ 1 (random (- n 1)))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;fast-prime?&lt;/span&gt; n times)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= times 0) true)&lt;br /&gt;      ((fermat-test n) (fast-prime? n (- times 1)))&lt;br /&gt;      (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; false)))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;timed-prime-test&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;start-prime-test&lt;/span&gt; n start-time)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (fast-prime? n)&lt;br /&gt;      (report-prime (- (runtime) start-time))))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;report-prime&lt;/span&gt; elapsed-time)&lt;br /&gt;  (display &lt;span style="color: rgb(255, 160, 122);"&gt;" *** "&lt;/span&gt;)&lt;br /&gt;  (display elapsed-time))&lt;br /&gt;&lt;br /&gt;(newline)&lt;br /&gt;(display n)&lt;br /&gt;(start-prime-test n (runtime)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.25&lt;br /&gt;&lt;/span&gt;It's correct if arbitary precision arithmetic is supported.&lt;br /&gt;But it will be much slower than the implementation provided&lt;br /&gt;by the authors.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.26.&lt;br /&gt;&lt;/span&gt;粗略地：&lt;br /&gt;2 ^ log2(m) = m&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.27.&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;Carmichael-test&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;try-it&lt;/span&gt; a)&lt;br /&gt;  (= (expmod a n n) a))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;iter&lt;/span&gt; i)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= i 1) #t)  &lt;span style="color: rgb(144, 238, 144);"&gt;;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;no need to test (1^n = 1 % n)&lt;br /&gt;&lt;/span&gt;          ((not (try-it i)) #f)&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (iter (- i 1)))))&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;and&lt;/span&gt; (not (prime? n))&lt;br /&gt;     (iter (- n 1))))&lt;br /&gt;&lt;br /&gt;(Carmichael-test 561)&lt;br /&gt;(Carmichael-test 1105)&lt;br /&gt;(Carmichael-test 1729)&lt;br /&gt;(Carmichael-test 2465)&lt;br /&gt;(Carmichael-test 2821)&lt;br /&gt;(Carmichael-test 6601)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;;;&lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;Exercise 1.28.&lt;br /&gt;&lt;/span&gt; &lt;span style="color: rgb(144, 238, 144);"&gt;; &lt;/span&gt;&lt;span style="color: rgb(144, 238, 144);"&gt;ref: CLRS 31.6,31.8&lt;br /&gt;&lt;/span&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;square&lt;/span&gt; x)&lt;br /&gt;(* x x))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;Miller-Rabin&lt;/span&gt; n)&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;check&lt;/span&gt; x)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; &lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;result&lt;/span&gt;&lt;br /&gt;    (remainder (square x) n))&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;if&lt;/span&gt; (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;and&lt;/span&gt;&lt;br /&gt;       (= result 1)&lt;br /&gt;       (not (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;or&lt;/span&gt; (= x 1) (= x (- n 1)))))&lt;br /&gt;      0&lt;br /&gt;      result))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;expmod&lt;/span&gt; base exp m)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= exp 0) 1)&lt;br /&gt;        ((even? exp)&lt;br /&gt;         (check (expmod base (/ exp 2) m)))&lt;br /&gt;         (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; (remainder (* base (expmod base (- exp 1) m))&lt;br /&gt;                          m))))&lt;br /&gt;&lt;br /&gt;(&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;define&lt;/span&gt; (&lt;span style="color: rgb(30, 144, 255); font-weight: bold;font-size:105;" &gt;try-it&lt;/span&gt; a)&lt;br /&gt;  (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;cond&lt;/span&gt; ((= a 0) #t)&lt;br /&gt;        ((= 1 (expmod a (- n 1) n))&lt;br /&gt;         (try-it (- a 1)))&lt;br /&gt;        (&lt;span style="color: rgb(255, 182, 193);font-size:105;" &gt;else&lt;/span&gt; #f)))&lt;br /&gt;(try-it (- n 1)))&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;(Miller-Rabin 233)&lt;br /&gt;(Miller-Rabin 9999)&lt;br /&gt;(Miller-Rabin 561)&lt;br /&gt;(Miller-Rabin 1105)&lt;br /&gt;(Miller-Rabin 1729)&lt;br /&gt;(Miller-Rabin 2465)&lt;br /&gt;(Miller-Rabin 2821)&lt;br /&gt;(Miller-Rabin 6601)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;http://feedproxy.google.com/var/log/freestyler&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5384497670115981291-6002274189962912132?l=freelet.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/var/log/freestyler/~4/aRzZ_GNphbI" height="1" width="1"/&gt;</content><link rel="replies" type="application/atom+xml" href="http://freelet.blogspot.com/feeds/6002274189962912132/comments/default" title="帖子评论" /><link rel="replies" type="text/html" href="https://www.blogger.com/comment.g?blogID=5384497670115981291&amp;postID=6002274189962912132" title="0 条评论" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6002274189962912132?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/5384497670115981291/posts/default/6002274189962912132?v=2" /><link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/var/log/freestyler/~3/aRzZ_GNphbI/sicp12.html" title="sicp习题解答1.2" /><author><name>freestyler</name><uri>http://www.blogger.com/profile/02996535571606888265</uri><email>effarr@gmail.com</email><gd:extendedProperty name="OpenSocialUserId" value="14779069943919390575" /></author><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><link rel="license" type="text/html" href="http://creativecommons.org/licenses/by-nc-sa/3.0/" /><feedburner:origLink>http://freelet.blogspot.com/2008/12/sicp12.html</feedburner:origLink></entry></feed>
