<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet href='http://feed.dddspace.com/styles/feedsky8.xsl' type='text/xsl' ?><!--这是一个由Feedsy提供技术支持的Feed，为了提高读者阅读的体验，以及满足用户美化自己Feed的需要，我们设计了多种精美的Feed模板，提供给大家选择，所有最终呈现出来的样式，皆由用户自愿选择使用，未经许可，任何团体和个人，请不要擅自修改样式或者盗用，这是对于用户选择权的尊重。--><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:fs="http://www.feedsky.com/namespace/feed" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link href="http://feed.dddspace.com" type="application/rss+xml" rel="self"></atom:link><fs:self_link href="http://feed.feedsky.com/dddspace" type="application/rss+xml"></fs:self_link><lastBuildDate>Sun, 18 Dec 2011 14:22:41 GMT</lastBuildDate><title>Log4D</title><description>记录&amp;分享</description><image><url>http://www.feedsky.com/images/feedsky_logologo.gif</url><title>Log4D</title><link>http://dddspace.com</link></image><link>http://dddspace.com</link><sy:updatePeriod>hourly</sy:updatePeriod><sy:updateFrequency>1</sy:updateFrequency><language>en</language><pubDate>Thu, 22 Dec 2011 16:00:39 GMT</pubDate><item><title>催命文2-域名迁移</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/588585228/5722326/1/item.html</link><content:encoded>&lt;p&gt;各位好，Log4D已经完成了域名迁移，&lt;strike&gt;&lt;a href=&quot;http://dddspace.com&quot;&gt;http://dddspace.com&lt;/a&gt;&lt;/strike&gt;将在一个星期之内关停。&lt;/p&gt;
&lt;p&gt;新的域名是&lt;a href=&quot;http://log4d.com&quot;&gt;http://log4d.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果您还可以看到这篇文章，说明您订阅的Feed地址将在一个星期之后失效。&lt;br /&gt;
	请更换订阅链接为&lt;a href=&quot;http://feeds.feedburner.com/dddspace&quot;&gt;http://feeds.feedburner.com/dddspace&lt;/a&gt;或者&lt;a href=&quot;http://log4d.com/feed&quot;&gt;http://log4d.com/feed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;感谢～&lt;/p&gt;
&lt;p&gt;预祝各位圣诞节快乐。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/12/domain-migration-2.html&quot;&gt;http://dddspace.com/2011/12/domain-migration-2.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/12/dddspace-com-bathed-in-fire-and-gave-birth-to.html&quot; title=&quot;DDDSpace.com浴火重生了&quot;&gt;DDDSpace.com浴火重生了&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/the-eclipse3-5-using-flex-builder-3.html&quot; title=&quot;在Eclipse3.5下使用Flex Builder 3&quot;&gt;在Eclipse3.5下使用Flex Builder 3&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/09/unison.html&quot; title=&quot;使用unison同步文件&quot;&gt;使用unison同步文件&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/03/introduction-to-openssl-programming.html&quot; title=&quot;OpenSSL 编程入门【转载-这篇很精】&quot;&gt;OpenSSL 编程入门【转载-这篇很精】&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/prohibition-of-wordpress-automatically-to-replace-the-half-angle-punctuation.html&quot; title=&quot;禁止WordPress自动替换半角标点符号【转】&quot;&gt;禁止WordPress自动替换半角标点符号【转】&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/12/reluctant-to-leave.html&quot; title=&quot;舍不得离开&quot;&gt;舍不得离开&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/10/the-first-day-home.html&quot; title=&quot;回家第一天&quot;&gt;回家第一天&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/09/python-in-the-directory-and-file-operations.html&quot; title=&quot;python中目录与文件操作&quot;&gt;python中目录与文件操作&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/02/start-the-new-year.html&quot; title=&quot;新的一年开始了&quot;&gt;新的一年开始了&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2008/10/mfc-will-be-from-the-stage-of-history-microsoft-s-next-generation-user-interface-technology-wpf.html&quot; title=&quot;MFC将退出历史舞台，微软的下一代用户界面技术WPF&quot;&gt;MFC将退出历史舞台，微软的下一代用户界面技术WPF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588585228/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/588585228/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/12/domain-migration-2.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>各位好，Log4D已经完成了域名迁移，http://dddspace.com将在一个星期之内关停。

新的域名是http://log4d.com

如果您还可以看到这篇文章，说明您订阅的Feed地址将在一个星期之后失效。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/12/domain-migration-2.html&quot; title=&quot;催命文2-域名迁移&quot;&gt;阅读全文——共186字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/588585228/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/588585228/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>未分类</category><pubDate>Sun, 18 Dec 2011 22:22:41 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/12/domain-migration-2.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=32428</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/12/domain-migration-2.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/588585228/5722326</fs:itemid></item><item><title>域名迁移</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704522/5722326/1/item.html</link><content:encoded>&lt;p&gt;各位好，Log4D已经完成了域名迁移，&lt;strike&gt;&lt;a href=&quot;http://dddspace.com&quot;&gt;http://dddspace.com&lt;/a&gt;&lt;/strike&gt;将在一个星期之内关停。&lt;/p&gt;
&lt;p&gt;新的域名是&lt;a href=&quot;http://log4d.com&quot;&gt;http://log4d.com&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;如果您还可以看到这篇文章，说明您订阅的Feed地址将在一个星期之后失效。&lt;br /&gt;
	请更换订阅链接为&lt;a href=&quot;http://feeds.feedburner.com/dddspace&quot;&gt;http://feeds.feedburner.com/dddspace&lt;/a&gt;或者&lt;a href=&quot;http://log4d.com/feed&quot;&gt;http://log4d.com/feed&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;感谢～&lt;/p&gt;
&lt;p&gt;预祝各位圣诞节快乐。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/12/domain-migration.html&quot;&gt;http://dddspace.com/2011/12/domain-migration.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/ubuntu8-10-under-the-mysql-installation.html&quot; title=&quot;Ubuntu8.10下MySQL的安装&quot;&gt;Ubuntu8.10下MySQL的安装&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/09/script-mm2html.html&quot; title=&quot;小脚本mm-&gt;html&quot;&gt;小脚本mm-&gt;html&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/mailtocommenter-of-the-spam-problem.html&quot; title=&quot;MailToCommenter的垃圾邮件问题&quot;&gt;MailToCommenter的垃圾邮件问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2008/02/i-have-the-idea-of-computer-science.html&quot; title=&quot;我对计算机专业的想法&quot;&gt;我对计算机专业的想法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/03/plrcmatch4d.html&quot; title=&quot;历史记录-歌词复制器&quot;&gt;历史记录-歌词复制器&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/09/my-name-is-mt-3-sets.html&quot; title=&quot;我叫MT[第3集]&quot;&gt;我叫MT[第3集]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/09/summer-internship-report-on-the-community.html&quot; title=&quot;暑假社会实习报告&quot;&gt;暑假社会实习报告&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/to-google-to-switch-to-english-mode.html&quot; title=&quot;将Google切换到英文模式&quot;&gt;将Google切换到英文模式&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/09/yahoo-group.html&quot; title=&quot;恶心的Yahoo Group&quot;&gt;恶心的Yahoo Group&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/station-restoration-of-mind.html&quot; title=&quot;小站恢复记&quot;&gt;小站恢复记&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704522/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704522/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/12/domain-migration.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>各位好，Log4D已经完成了域名迁移，http://dddspace.com将在一个星期之内关停。

新的域名是http://log4d.com

如果您还可以看到这篇文章，说明您订阅的Feed地址将在一个星期之后失效。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/12/domain-migration.html&quot; title=&quot;域名迁移&quot;&gt;阅读全文——共186字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704522/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704522/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>建站心得</category><pubDate>Fri, 16 Dec 2011 13:42:12 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/12/domain-migration.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=32347</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/12/domain-migration.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704522/5722326</fs:itemid></item><item><title>牺牲</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704523/5722326/1/item.html</link><content:encoded>&lt;p&gt;十一回家，我和从小玩到大的死党们聚会，坐在晚风习习的广场上，聊着各自的种种，蓦然发现自己开始羡慕他们在家乡的生活。&lt;/p&gt;
&lt;p&gt;每天晚上下班可以和亲朋好友出去咪点小酒，洗个澡，搓个背，打打牌。可以和各种姑娘出去耍，看电影逛街。回到家中有现成的饭菜等着自己，周末也不用辛苦打扫卫生。&lt;/p&gt;
&lt;p&gt;我曾经私底下反对这种生活，认为这种生活滋长了腐败糜烂的气味，会摧毁自己的梦想，安逸的让人忘记奋斗。我刻意回避这种感觉的滋生，坚持不在家中工作。我猜想我的这种刻意来自于小时候被管教太严而萌生的叛逆，同时又被互联网精神熏陶，产生对自由和梦想的渴望。&lt;/p&gt;
&lt;p&gt;而这次却多了一丝丝不同的意味：其实享受宁静安逸的生活，这并不错，甚至，会活得很开心，幸福指数会很高。&lt;/p&gt;
&lt;p&gt;我一直以自己的梦想来鞭策自己，但同时我也不否认自己是个很恶俗的人，我还是渴求提高自己生活质量，向往过着数钱数到手抽筋，睡觉睡到自然醒的生活。我又害怕自己的物质生活到达一个能让自己满足的时候，精神世界的空虚会带来不安。&lt;/p&gt;
&lt;p&gt;人果然一个矛盾体。&lt;/p&gt;
&lt;p&gt;这种本来应该转瞬即逝的想法一直徘徊在我脑海，打击着我花了4年时间才建立起来的信念和梦想。我知道我不能丢失这种对梦想的渴望，丢失了它，我将一无所有。&lt;/p&gt;
&lt;p&gt;对爱情的渴望更是加强了这种冲击，balabalbala。&lt;/p&gt;
&lt;p&gt;一个人在外地生活要付出相当大的代价，牺牲了亲情、友情甚至是爱情。在追求卓越和梦想的道路上，必须要付出很多的代价。如果牺牲不可避免，请让牺牲变得有价值。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/10/sacrifice.html&quot;&gt;http://dddspace.com/2011/10/sacrifice.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/08/the-school-changed-its-name-to-all.html&quot; title=&quot;校内更名为人人&quot;&gt;校内更名为人人&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/07/sina-weibo-app-key.html&quot; title=&quot;新浪微博应用Key&quot;&gt;新浪微博应用Key&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/07/vimperator-pass-through.html&quot; title=&quot;Vimperator的Pass through&quot;&gt;Vimperator的Pass through&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/01/eclipse-of-the-odd.html&quot; title=&quot;Eclipse的奇淫巧计【转】&quot;&gt;Eclipse的奇淫巧计【转】&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/08/go-pylons-py-in-python2-7.html&quot; title=&quot;go-pylons.py在Python2.7下错误解决&quot;&gt;go-pylons.py在Python2.7下错误解决&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/sperm-can-be-man-made.html&quot; title=&quot;精子可以人造？！&quot;&gt;精子可以人造？！&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/the-idea-on-twitter.html&quot; title=&quot;关于Twitter的idea&quot;&gt;关于Twitter的idea&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/06/dragon-ball-gai-launched.html&quot; title=&quot;《龙珠·改》推出&quot;&gt;《龙珠·改》推出&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/mailtocommenter-of-the-spam-problem.html&quot; title=&quot;MailToCommenter的垃圾邮件问题&quot;&gt;MailToCommenter的垃圾邮件问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/08/get-json-failed-in-ie.html&quot; title=&quot;get json failed in IE&quot;&gt;get json failed in IE&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704523/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704523/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/10/sacrifice.html/feed</wfw:commentRss><slash:comments>8</slash:comments><description>十一回家，我和从小玩到大的死党们聚会，坐在晚风习习的广场上，聊着各自的种种，蓦然发现自己开始羡慕他们在家乡的生活。

每天晚上下班可以和亲朋好友出去咪点小酒，洗个澡，搓个背，打打牌。可以和各种姑娘出去耍，看电影逛街。回到家中有现成的饭菜等着自己，周末也不用辛苦打扫卫生。

我曾经私底下反对这种生活，认为这种生活滋长了腐败糜烂的气味，会摧毁自己的梦想，安逸的让人忘记奋斗。我刻意回避这种感觉的滋生，坚持不在家中工作。我猜想我的这种刻意来自于小时候被管教太严而萌生的叛逆，同时又被互联网精神熏陶，产生对自由和梦想的渴望。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/10/sacrifice.html&quot; title=&quot;牺牲&quot;&gt;阅读全文——共598字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704523/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704523/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>感悟</category><pubDate>Thu, 13 Oct 2011 21:19:59 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/10/sacrifice.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=31642</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/10/sacrifice.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704523/5722326</fs:itemid></item><item><title>新logo</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704524/5722326/1/item.html</link><content:encoded>&lt;p&gt;策划了一年的博客改版终于跨出了第一步&amp;mdash;&amp;mdash;新Logo。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; height=&quot;128&quot; src=&quot;http://dddspace.com/wp-content/uploads/2011/09/d3_128.png&quot; width=&quot;128&quot; /&gt;&lt;/p&gt;
&lt;p&gt;有木有觉得帅气无比啊，这是用gimp做的，非PS出品。&lt;/p&gt;
&lt;p&gt;ps：此乃山寨之作～&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/new-logo.html&quot;&gt;http://dddspace.com/2011/09/new-logo.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2008/02/i-have-the-idea-of-computer-science.html&quot; title=&quot;我对计算机专业的想法&quot;&gt;我对计算机专业的想法&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/01/regex-group-catch.html&quot; title=&quot;正则表达式抓捕替换&quot;&gt;正则表达式抓捕替换&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/10/win7-standalone-network-extender.html&quot; title=&quot;在Win7上面使用Standalone Network Extender&quot;&gt;在Win7上面使用Standalone Network Extender&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/sperm-can-be-man-made.html&quot; title=&quot;精子可以人造？！&quot;&gt;精子可以人造？！&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/03/my-htc-g3.html&quot; title=&quot;HTC G3到手&quot;&gt;HTC G3到手&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/membership-the-use-of-experience.html&quot; title=&quot;MemberShip使用心得&quot;&gt;MemberShip使用心得&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/reported-net-ccav-happy.html&quot; title=&quot;CCAV报道了开心网&quot;&gt;CCAV报道了开心网&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/12/csharp-vba-excel.html&quot; title=&quot;C#+VBA操作Excel总结&quot;&gt;C#+VBA操作Excel总结&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/02/servlet-jsp-s-java-type-of-the-most-simple-mvc-model.html&quot; title=&quot;Servlet JSP 的 Java类的最简单MVC模型&quot;&gt;Servlet JSP 的 Java类的最简单MVC模型&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/06/ruan-kao-guo-liao.html&quot; title=&quot;软考过了&quot;&gt;软考过了&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704524/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704524/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/new-logo.html/feed</wfw:commentRss><slash:comments>13</slash:comments><description>策划了一年的博客改版终于跨出了第一步&amp;#8212;&amp;#8212;新Logo。



有木有觉得帅气无比啊，这是用gimp做的，非PS出品。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/new-logo.html&quot; title=&quot;新logo&quot;&gt;阅读全文——共75字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704524/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704524/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>技术达人</category><category>建站心得</category><pubDate>Thu, 29 Sep 2011 23:38:13 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/new-logo.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=31106</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/new-logo.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704524/5722326</fs:itemid></item><item><title>使用unison同步文件</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704525/5722326/1/item.html</link><content:encoded>&lt;h2&gt;&lt;a name=&quot;_同步控&quot;&gt;&lt;/a&gt;1. 同步控&lt;/h2&gt;
&lt;p&gt;我是一个同步控，会妄想自己的文件遭遇不可修复性的毁灭， 因此经常丧心病狂的做备份。 比如每每备份到移动硬盘中， 比如每年一次的刻盘备份，又比如我现在要介绍的同步软件unison。&lt;/p&gt;
&lt;p&gt;据我自己考察，这种对备份文件丢失的恐惧来自于小时候一次意外格式化F盘， 从而导致我搜集的所有《龙珠》漫画丢失而产生的。&lt;/p&gt;
&lt;p&gt;另一个同步文件的需求来自于我的两台电脑：常驻家中的DELL 6400，是我的大房； 最近得宠的小蜜Thinkpad X201。其中6400是Win7系统， 而X200是Arch Linux主打的双系统，我希望两者的文件保持同步， 便于我两边使用时候都能检索资料。如何实现跨平台同步方案让我头疼了好久， 幸好有unison拯救了我。&lt;span id=&quot;more-30996&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_同步历史&quot;&gt;&lt;/a&gt;2. 同步历史&lt;/h2&gt;
&lt;p&gt;很久很久以前，那时候我还喝三鹿，我开始用TotalCmd来做同步文件， 依稀记得那个功能是在 &lt;tt&gt;命令&lt;/tt&gt; 里面的 &lt;tt&gt;比较文件夹&lt;/tt&gt; 。 这个功能满足我当时简单粗糙的需求。只要把需要同步的文件夹分列TotalCmd两侧， 然后就可以通过命令自动查找相异的文件。&lt;/p&gt;
&lt;p&gt;当时在我看来，尤其神奇的是文件过滤功能和按照 &lt;tt&gt;日期&lt;/tt&gt; 、 &lt;tt&gt;文件内容&lt;/tt&gt; 比较功能。 着实帮了我很大忙。&lt;/p&gt;
&lt;p&gt;再过了几年，TotalCmd不能满足我了，我不想每次都选择需要同步的文件， 再用肉眼比对，同步功能也偏少。我搜寻到一款老牌的同步工具， 叫做&lt;a href=&quot;http://www.goodsync.com/&quot;&gt;GoodSync&lt;/a&gt;，这是一款商业软件，可以试用30天， 作为专业的同步软件，这个GoodSync的确是蛮适用：支持大小写屏蔽、 文件过滤等等。&lt;/p&gt;
&lt;p&gt;GoodSync还可以支持网络映射硬盘，再通过Samba等协议支持，可以实现跨平台同步。 可惜GoodSync要收费，而且通过网络映射的方式也不慎完美，所以最后也弃用了。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_unison&quot;&gt;&lt;/a&gt;3. unison&lt;/h2&gt;
&lt;p&gt;终于轮到&lt;a href=&quot;http://www.cis.upenn.edu/~bcpierce/unison/&quot;&gt;unison&lt;/a&gt;闪亮登场了。 unison解决了跨平台同步，文件过滤，断点续接，大小写同步等等各种问题。&lt;/p&gt;
&lt;p&gt;官方介绍：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Unison is a file-synchronization tool for Unix and Windows. It allows two replicas of a collection of files and directories to be stored on different hosts (or different disks on the same host), modified separately, and then brought up to date by propagating the changes in each replica to the other.&lt;/p&gt;
&lt;p align=&quot;right&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Unison是一枚Unix和Windows通吃的文件同步工具。它允许不同电脑上（或者同一电脑上不同地方）的文件和目录之间惊心修改和同步更新。&lt;/p&gt;
&lt;p align=&quot;right&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;unison使用时候有服务器、客户机之分，客户机通过ssh连接到服务器端， 所以相对而言，数据通道还是安全的。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_安装&quot;&gt;&lt;/a&gt;4. 安装&lt;/h2&gt;
&lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;sudo pacman -S unison&lt;/pre&gt;
&lt;p&gt;感谢众神赐予我们各种软件包，以上是Arch Linux的安装命令。 Ubuntu之类的也差不多apt-get了。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_配置&quot;&gt;&lt;/a&gt;5. 配置&lt;/h2&gt;
&lt;p&gt;unison的传输通道用ssh，所以必须在同步的电脑上面配置好ssh， 服务端需要配置好sshd，另外最好配置好ssh公钥密钥，可以参考 &lt;a href=&quot;http://dddspace.com/2011/06/ddns-ssh.html&quot;&gt;使用DDNS+SSH连通家庭/工作电脑&lt;/a&gt;。&lt;/p&gt;
&lt;p&gt;unison使用 &lt;tt&gt;~/.unison/*.prf&lt;/tt&gt; 的配置文件，默认应该会有一个 &lt;tt&gt;default.prf&lt;/tt&gt; ， 我的 &lt;tt&gt;default.prf&lt;/tt&gt; 配置如下。&lt;/p&gt;
&lt;pre class=&quot;brush: plain;fontsize: 100; first-line: 1; &quot;&gt;# Unison preferences file
#root = /cygdrive/f
#root = ssh://mm061.dddspace.com//home/alswl

log = true
logfile = /home/alswl/.unison/.unison.log

#batch = true
#auto = true

#ignorecase = true
ignore = Name {Thumbs.db}
ignore = Path {music/iTunes}&lt;/pre&gt;
&lt;p&gt;其中 &lt;tt&gt;root&lt;/tt&gt; 表示同步的两个目录，ssh开头的服务器端路径。 &lt;tt&gt;log&lt;/tt&gt; 设定log文件位置， &lt;tt&gt;batch&lt;/tt&gt; 指自动同步而不经过确认， &lt;tt&gt;auto&lt;/tt&gt; 是同步之后列出同步建议清单， 选择 &lt;tt&gt;yes&lt;/tt&gt; or &lt;tt&gt;no&lt;/tt&gt; 即可。 &lt;tt&gt;ignorecase&lt;/tt&gt; 是忽略大小写，在跨平台同步时候蛮有用。 &lt;tt&gt;ignore&lt;/tt&gt; 指忽略文件列表，分为 &lt;tt&gt;Name&lt;/tt&gt; 和 &lt;tt&gt;Path&lt;/tt&gt; 。&lt;/p&gt;
&lt;p&gt;我的default配置并不是一个可用配置，只是一个基础配置文件，用来给其他配置文件使用&lt;/p&gt;
&lt;pre class=&quot;brush: plain;fontsize: 100; first-line: 1; &quot;&gt;# Unison preferences file
include default

root = /home/alswl
root = ssh://mm061.dddspace.com//home/alswl

path = music&lt;/pre&gt;
&lt;p&gt;我使用 &lt;tt&gt;include&lt;/tt&gt; 选项来加入 &lt;tt&gt;default&lt;/tt&gt; 配置，就可以使用通用配置了。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_运行&quot;&gt;&lt;/a&gt;6. 运行&lt;/h2&gt;
&lt;p&gt;终于到了激动人心的时刻了，我们使用下面命令同步文件夹。&lt;/p&gt;
&lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;unison music&lt;/pre&gt;
&lt;p&gt;其中 &lt;tt&gt;music&lt;/tt&gt; 就是之前配置好的 &lt;tt&gt;music.prf&lt;/tt&gt; 。Papapa之后，就是各种选项了。&lt;/p&gt;
&lt;p&gt;unison默认情况下面会依次提醒每个差异文件的差别，可以使用键盘命令查看具体差异。 依次查看文件会很烦，所以我习惯性使用 &lt;tt&gt;auto&lt;/tt&gt; 命令来自动合并。 &lt;tt&gt;auto&lt;/tt&gt; 会根据文件的状态，最后更新日期来选择合适的同步操作。&lt;/p&gt;
&lt;p&gt;完了，没了，谢谢。&lt;/p&gt;
&lt;p&gt;哦，对了，当时写那篇 &lt;a href=&quot;http://dddspace.com/2011/06/ddns-ssh.html&quot;&gt;使用DDNS+SSH连通家庭工作电脑&lt;/a&gt; 大部分原因就是因为这个同步需求。而且经过我3个月来的使用，unison真是个好工具。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/unison.html&quot;&gt;http://dddspace.com/2011/09/unison.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/03/dwr2-0-jdk1-4-configuration.html&quot; title=&quot;DWR2.0在JDK1.4下的配置&quot;&gt;DWR2.0在JDK1.4下的配置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/10/defeat.html&quot; title=&quot;挫败&quot;&gt;挫败&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/06/design-of-user-rights.html&quot; title=&quot;用户权限设计的问题&quot;&gt;用户权限设计的问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/06/xiaonei-gadgets-come-to-an-end.html&quot; title=&quot;校内小工具告一段落&quot;&gt;校内小工具告一段落&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/04/april.html&quot; title=&quot;四月&quot;&gt;四月&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/10/early-contact-with-teach.html&quot; title=&quot;宣讲会初接触&quot;&gt;宣讲会初接触&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/06/urllib2-urlopen-unicode.html&quot; title=&quot;urllib2.urlopen的中文URL问题&quot;&gt;urllib2.urlopen的中文URL问题&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/delphi-study-notes-01.html&quot; title=&quot;Delphi学习笔记01&quot;&gt;Delphi学习笔记01&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/alas-the-studio.html&quot; title=&quot;唉，工作室&quot;&gt;唉，工作室&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/discussion-on-javascript-disabled.html&quot; title=&quot;关于禁用Javascript的讨论&quot;&gt;关于禁用Javascript的讨论&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704525/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704525/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/unison.html/feed</wfw:commentRss><slash:comments>4</slash:comments><description>1. 同步控

我是一个同步控，会妄想自己的文件遭遇不可修复性的毁灭， 因此经常丧心病狂的做备份。 比如每每备份到移动硬盘中， 比如每年一次的刻盘备份，又比如我现在要介绍的同步软件unison。

据我自己考察，这种对备份文件丢失的恐惧来自于小时候一次意外格式化F盘， 从而导致我搜集的所有《龙珠》漫画丢失而产生的。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/unison.html&quot; title=&quot;使用unison同步文件&quot;&gt;阅读全文——共2169字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704525/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704525/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Linuxer</category><category>unison</category><pubDate>Tue, 27 Sep 2011 22:28:51 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/unison.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=30996</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/unison.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704525/5722326</fs:itemid></item><item><title>网页渐进式载入图片</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704526/5722326/1/item.html</link><content:encoded>&lt;h2&gt;Question&lt;/h2&gt;
&lt;p&gt;为什么有的网页打开图片是从上到下逐行打开，有的则是先显示低分辨率图片再逐渐加入细节？&lt;/p&gt;
&lt;h2&gt;Answer&lt;/h2&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;感谢@吴亚桐 回答给我找到线索，感谢提问者的好问题，我为这个问题曾经困惑了多年。这种渐进式载入方法容易和其他渐进式载入混淆。&amp;nbsp;&lt;span id=&quot;more-30840&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;我这里小总结一下几种渐进式载入办法。&amp;nbsp;&lt;br /&gt;
	&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;js延迟载入，当浏览器滚动条拉到下面时候才显示出图片，参考&amp;nbsp;&lt;a href=&quot;http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/ &quot;&gt;http://www.neoease.com/lazy-load-jquery-plugin-delay-load-image/&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;使用两张一大一小照片，小的先显示，等大图片完全下载好之后再载入。参考 &lt;a href=&quot;http://blog.rexsong.com/?p=929 &quot;&gt;http://blog.rexsong.com/?p=929&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;图片渐进式技术，也就是本问题。&amp;nbsp;&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;大图片切割成小图片，逐个载入，这是互联网早期方式，现在已经几乎看不到了。太浪费http连接了。&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;&amp;nbsp;下面是答案&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;浏览器下载图片的时候渐进式载入，这样下载完一张图可以看到它的样子，只不过只是不清楚的图，这样可以减少你等待看它的时间。&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;实际上有两种方式可以实现这种渐进式效果，一种是图像隔行扫描（&lt;b&gt;Interlace&lt;/b&gt;），中文可以成为交错，另外一种叫做图像渐进式扫描（&lt;b&gt;Progressive&lt;/b&gt;）。&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;隔行扫描可以在gif/png中实现。隔行GIF是指图像文件是按照隔行的方式来显示的，比如先出奇数行，再出偶数行，造成图像是逐渐变清楚的。将图像文件保存成隔行GIF格式的方法是，在 Photoshop中进行保存时，选择&amp;ldquo;Interlaced&amp;rdquo;（不要选择&amp;ldquo;Normal&amp;rdquo;），在Paint Shop Pro中进行保存时，点击&amp;ldquo;Option&amp;hellip;&amp;rdquo;按钮，选择&amp;ldquo;Interlaced&amp;rdquo;（不要选择&amp;ldquo;Non Interlaced&amp;rdquo;）。&amp;nbsp;&lt;br /&gt;
		&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;渐进式扫描在在jpg中实现。逐级JPG文件可以让图像先以比较模糊的形式显示，随着图像文件数据不断从网上传过来，图像会逐渐变清晰。这样做的好处是图像可以尽快地显示出来，虽然图像不很完美，但是却让浏览者看到了希望，并且图像在不断地变好。将图像文件保存成逐级JPG格式的方法是，在Photoshop中进行保存时，选择&amp;ldquo;Progressive&amp;rdquo;，在Paint Shop Pro中进行保存时，点击&amp;ldquo;Option&amp;hellip;&amp;rdquo;按钮，选择&amp;ldquo;Progressive encoding&amp;rdquo;。&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;参考&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; font-size: 14px; line-height: 22px; &quot;&gt;&lt;a href=&quot;http://blog.csdn.net/greenerycn/article/details/1458231 &quot;&gt;http://blog.csdn.net/greenerycn/article/details/1458231&amp;nbsp;&lt;/a&gt;&lt;br /&gt;
	&lt;a href=&quot;http://www.libpng.org/pub/png/pngintro.html&quot;&gt;http://www.libpng.org/pub/png/pngintro.html&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;via&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;http://www.zhihu.com/question/19773824&quot;&gt;http://www.zhihu.com/question/19773824&lt;/a&gt;&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/interlace-progressive-image.html&quot;&gt;http://dddspace.com/2011/09/interlace-progressive-image.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/02/ajax-drag-and-drop-fun-the-way-chrome-test-the-code-under-the-highlighted-text-editor-search.html&quot; title=&quot;Ajax 好玩的拖拽（顺便测试chrome下文字编辑的代码高亮）&quot;&gt;Ajax 好玩的拖拽（顺便测试chrome下文字编辑的代码高亮）&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/flex-builder3-in-the-launch-path-is-set.html&quot; title=&quot;Flex Builder3中的launch path设置&quot;&gt;Flex Builder3中的launch path设置&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/09/09_09_15-update.html&quot; title=&quot;09_09_15 Update&quot;&gt;09_09_15 Update&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/12/half-year.html&quot; title=&quot;半年&quot;&gt;半年&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/rainy-day.html&quot; title=&quot;下雨天&quot;&gt;下雨天&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2008/10/mfc.html&quot; title=&quot;MFC&quot;&gt;MFC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/03/my-htc-g3.html&quot; title=&quot;HTC G3到手&quot;&gt;HTC G3到手&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/10/update_10_10_11.html&quot; title=&quot;Update_10_10_11&quot;&gt;Update_10_10_11&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/updated-about-me.html&quot; title=&quot;更新了关于我&quot;&gt;更新了关于我&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/tee7.html&quot; title=&quot;Tee7&quot;&gt;Tee7&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704526/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704526/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/interlace-progressive-image.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>Question

为什么有的网页打开图片是从上到下逐行打开，有的则是先显示低分辨率图片再逐渐加入细节？

Answer

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/interlace-progressive-image.html&quot; title=&quot;网页渐进式载入图片&quot;&gt;阅读全文——共1177字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704526/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704526/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Web前端</category><category>zhihu</category><pubDate>Fri, 23 Sep 2011 09:22:01 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/interlace-progressive-image.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=30840</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/interlace-progressive-image.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704526/5722326</fs:itemid></item><item><title>使用nose做测试</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704527/5722326/1/item.html</link><content:encoded>&lt;p&gt;不做单元测试的程序员不是好程序员。最近我在Pylons下面做开发， 使用 &lt;a href=&quot;http://readthedocs.org/docs/nose/en/latest&quot;&gt;nose&lt;/a&gt; 做单元测试，颇有心得， 在这里分享一下。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_pylons&quot;&gt;&lt;/a&gt;1. Pylons中依赖包&lt;/h2&gt;
&lt;p&gt;先简单介绍一下Pylons, Pylons与其说是一个框架，不如说是一堆框架的组合， Pylons在其中做到一个胶水的作用。Pylons依赖的包如下。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/danielfm/pybreaker&quot;&gt;breaker，缓存和Session&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://formencode.org/&quot;&gt;FormEncode，用户输入检查&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.makotemplates.org/&quot;&gt;Mako，模板渲染&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://readthedocs.org/docs/nose/en/latest/&quot;&gt;nose，自动化测试&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pythonpaste.org/script/&quot;&gt;Paste，服务器&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://routes.groovie.org/&quot;&gt;Routes, 路由&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pythonpaste.org/tempita/&quot;&gt;Tempita，Paste的模板&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://packages.python.org/WebCore/modules/thirdparty/weberror.html&quot;&gt;Weberror&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://docs.webob.org/en/latest/index.html&quot;&gt;WebOb，提供WSGI请求响应等对象&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://pythonpaste.org/webtest/&quot;&gt;WebTest，Paste自带的测试小框架， 提供TestResponse和TestRequest两个有用的小东西&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pylons的测试主要使用的其中的 Paste / nose / WebOb / WebTest。 遇到问题的时候，可以去翻一翻上面的文档。&lt;span id=&quot;more-30750&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_pylons_2&quot;&gt;&lt;/a&gt;2. Pylons中测试目录结构&lt;/h2&gt;
&lt;p&gt;目录结构如下&lt;/p&gt;
&lt;pre class=&quot;brush: plain;fontsize: 100; first-line: 1; &quot;&gt;├─config
├─controllers
├─lib
├─model
├─public
├─templates
└─tests
    └─functional&lt;/pre&gt;
&lt;p&gt;目录中的 &lt;tt&gt;config / controllers / lib / model / public&lt;/tt&gt; 在不同的web框架下面可能会略有差别，在这里我不关注他们，我关注 &lt;tt&gt;tests / functional&lt;/tt&gt; 中存放相应的测试脚本，比如 &lt;tt&gt;test_user.py&lt;/tt&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_&quot;&gt;&lt;/a&gt;3. 第一个简单的测试用例&lt;/h2&gt;
&lt;h3&gt;&lt;a name=&quot;__2&quot;&gt;&lt;/a&gt;3.1. 撰写单元测试文件&lt;/h3&gt;
&lt;p&gt;最简单的test脚本如下&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;from myb.tests import *

class TestIndexController(TestController):

    def test_index(self):
        pass
        # Test response...&lt;/pre&gt;
&lt;p&gt;这里我们从 &lt;tt&gt;myb.tests&lt;/tt&gt; 这个目录下面引入了所有包 （其实起作用的是 &lt;tt&gt;__init__.py&lt;/tt&gt; ）&lt;/p&gt;
&lt;p&gt;&lt;tt&gt;__init__.py&lt;/tt&gt; 如下：&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;#!/usr/bin/env python
#coding: utf-8
from webob.headers import ResponseHeaders
from unittest import TestCase

from paste.deploy import loadapp
from paste.script.appinstall import SetupCommand
from pylons import url
from routes.util import URLGenerator
from webtest import TestApp

import pylons.test

__all__ = [&amp;#39;environ&amp;#39;, &amp;#39;url&amp;#39;, &amp;#39;TestController&amp;#39;]

# Invoke websetup with the current config file
SetupCommand(&amp;#39;setup-app&amp;#39;).run([pylons.test.pylonsapp.config[&amp;#39;__file__&amp;#39;]])

environ = {}

class TestController(TestCase):

    def __init__(self, *args, **kwargs):
        wsgiapp = pylons.test.pylonsapp
        config = wsgiapp.config
        self.app = TestApp(wsgiapp)
        url._push_object(URLGenerator(config[&amp;#39;routes.map&amp;#39;], environ))
        TestCase.__init__(self, *args, **kwargs)&lt;/pre&gt;
&lt;p&gt;可以看到，这里使用了 &lt;tt&gt;TestController&lt;/tt&gt; 继承了 &lt;tt&gt;TestCase&lt;/tt&gt; 这个单元测试基类， 并且在里面进行了web应用的环境初始化。&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;__3&quot;&gt;&lt;/a&gt;3.2. 撰写测试配置文件&lt;/h3&gt;
&lt;p&gt;上文撰写了一个最简单的测试代码，我们接着做一些单元测试配置。&lt;/p&gt;
&lt;p&gt;在app应用的同级文件里面，修改 &lt;tt&gt;test.ini&lt;/tt&gt; 文件。&lt;/p&gt;
&lt;pre class=&quot;brush: plain;fontsize: 100; first-line: 1; &quot;&gt;[DEFAULT]
debug = true
#email_to = you@yourdomain.com
smtp_server = localhost
error_email_from = paste@localhost

[server:main]
use = egg:Paste#http
host = 127.0.0.1
port = 5000

[app:main]
use = config:development.ini

sqlalchemy.url = mysql://username:password@localhost/myb_test?charset=utf8&amp;amp;use_unicode=1

# Logging configuration
[loggers]
keys = root, routes, myb, sqlalchemy

[handlers]
keys = console

[formatters]
keys = generic

[logger_root]
level = INFO
handlers = console

[logger_routes]
level = INFO
handlers =
qualname = routes.middleware
# &amp;quot;level = DEBUG&amp;quot; logs the route matched and routing variables.

[logger_myb]
level = DEBUG
handlers =
qualname = myb

[logger_sqlalchemy]
level = INFO
handlers =
qualname = sqlalchemy.engine
# &amp;quot;level = INFO&amp;quot; logs SQL queries.
# &amp;quot;level = DEBUG&amp;quot; logs SQL queries and results.
# &amp;quot;level = WARN&amp;quot; logs neither.  (Recommended for production systems.)

[handler_console]
class = StreamHandler
args = (sys.stderr,)
level = NOTSET
formatter = generic

[formatter_generic]
format = %(asctime)s,%(msecs)03d %(levelname)-5.5s [%(name)s] [%(threadName)s] %(message)s
datefmt = %H:%M:%S&lt;/pre&gt;
&lt;p&gt;这个配置文件设定了基本调试信息，数据库（使用myb_test数据库来避免修改原始数据） ，log方式。&lt;/p&gt;
&lt;p&gt;在 &lt;tt&gt;[app:main]&lt;/tt&gt; 里面，我直接引用了 &lt;tt&gt;development.ini&lt;/tt&gt; 的配置。&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;_nose&quot;&gt;&lt;/a&gt;3.3. 运行nose&lt;/h3&gt;
&lt;p&gt;在shell里面切换到app所在的目录（test.ini）所在的目录，运行 &lt;tt&gt;nosetests myb/tests/functional/test_hello world.py&lt;/tt&gt; 。 之后会出现一些log内容，不出意外的话，应该出现 &lt;tt&gt;OK&lt;/tt&gt; 。&lt;/p&gt;
&lt;p&gt;如果遇到 &lt;tt&gt;FAILED&lt;/tt&gt; ，那就根据错误提示的信息来查错。 nose会输出log的信息和print标准输出的信息。&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;__4&quot;&gt;&lt;/a&gt;4. 高级一点的测试方法&lt;/h2&gt;
&lt;p&gt;在开发过程中，我们需要判定单元测试是否正确，我罗列一些常见的用法&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;_http_status&quot;&gt;&lt;/a&gt;4.1. 测试返回类型为HTTP STATUS的方法&lt;/h3&gt;
&lt;p&gt;每次HTTP请求都会返回HTTP STATUS，正常是200，找不到是404，服务器错误是500， 我们可以根据这些返回状态值来判断测试是否跑通。&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;class TestQuestionController(TestController):

    def test_suggest_question(self):
        #正常返回200
        response = self.app.get(url=url(controller=&amp;#39;question&amp;#39;,
                                         action=&amp;#39;suggest_question&amp;#39;,
                                       ),
                                 params={
                                 },
                                 headers=self.headers,
                                 status=200,
                                )
        #不存在的id返回404
        response = self.app.get(url=url(controller=&amp;#39;question&amp;#39;,
                                         action=&amp;#39;suggest_question&amp;#39;,
                                       ),
                                 params={
                                     &amp;#39;id&amp;#39;: &amp;#39;345&amp;#39;,
                                 },
                                 headers=self.headers,
                                 status=404,
                                )&lt;/pre&gt;
&lt;p&gt;我习惯使用 &lt;tt&gt;url()&lt;/tt&gt; 方法来生成url，这样一方面不用记住冗长的url， 另外在url路由表发生变化之后，也不用去改变测试代码。&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;_html&quot;&gt;&lt;/a&gt;4.2. 测试返回类型为html的方法&lt;/h3&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;    def test_register(self):
        response = self.app.post(url(controller = &amp;#39;users&amp;#39;,
                                     action = &amp;#39;register&amp;#39;,
                                     format = &amp;#39;json&amp;#39;),
                                 {
                                     &amp;#39;login_name&amp;#39;: &amp;#39;nose_json&amp;#39;,
                                     &amp;#39;login_pass&amp;#39;: &amp;#39;123&amp;#39;,
                                     &amp;#39;user_name&amp;#39;: &amp;#39;测试机器人_json&amp;#39;,
                                 },
                                 status=200
                                 )
        assert &amp;#39;202cb962ac59075b964b07152d234b70&amp;#39; in response.body #返回的加密密码
        #log.debug( u&amp;#39;器&amp;#39; in response.unicode_body) #无法测试中文
        #log.debug( u&amp;#39;测试机器人_json&amp;#39; in response.unicode_body) #无法测试中文&lt;/pre&gt;
&lt;p&gt;使用 &lt;tt&gt;response.body&lt;/tt&gt; 来判定html里面的内容（这里对中文支持不太好）。&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;_json&quot;&gt;&lt;/a&gt;4.3. 测试返回类型为json的方法&lt;/h3&gt;
&lt;p&gt;AJAX请求正常返回的状态吗都是200，我们需要判定里面的内容进行assert&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;        response = self.app.post(url=url(controller=&amp;#39;invitation&amp;#39;,
                                         action=&amp;#39;invite_by_mail&amp;#39;),
                                 params={
                                     &amp;#39;to_address&amp;#39;: &amp;#39;&amp;#39;,
                                     &amp;#39;to_user_name&amp;#39;: &amp;#39;大爷&amp;#39;,
                                 },
                                 headers=self.headers,
                                 status=200
                                )
        result = response.json
        assert(result[&amp;#39;success&amp;#39;] == False)
        assert(result[&amp;#39;message&amp;#39;] == u&amp;#39;发送失败：你妹不漂亮&amp;#39;)&lt;/pre&gt;
&lt;h3&gt;&lt;a name=&quot;__5&quot;&gt;&lt;/a&gt;4.4. 测试返回类型为重定向的方法&lt;/h3&gt;
&lt;p&gt;这是HTTP状态吗的特殊形式，比如登录之后做一次跳转之类的。&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;    def test_add(self):
        #成功之后返回302做跳转，同时判定返回内容中跳转路径
        response = self.app.post(url=url(controller=&amp;#39;question&amp;#39;,
                                         action=&amp;#39;add&amp;#39;,
                                         ),
                                 params={
                                     &amp;#39;question_title&amp;#39;: &amp;#39;hwti1&amp;#39;,
                                     &amp;#39;question_content&amp;#39;: &amp;#39;wgtinzrs1&amp;#39;,
                                 },
                                 headers=self.headers,
                                 status=302,
                                )
        assert re.match(r&amp;#39;^http://localhost/question/\d*&amp;#39;,
                        response.headers[&amp;#39;Location&amp;#39;])&lt;/pre&gt;
&lt;h3&gt;&lt;a name=&quot;_session&quot;&gt;&lt;/a&gt;4.5. 用户登录生成Session&lt;/h3&gt;
&lt;p&gt;有些方法需要登录后才能运行，这依赖于服务器和浏览器之间的Cookie。如果要对这类 方法进行测试，我们需要事先获取Cookie，再在每一次请求发出的时候附带这个Cookie。&lt;/p&gt;
&lt;p&gt;在下面的方法中，我实现了用户登录操作。 在test目录下的 &lt;tt&gt;__init.py__&lt;/tt&gt; 中 &lt;tt&gt;TestController&lt;/tt&gt; 加入新方法 &lt;tt&gt;login()&lt;/tt&gt;&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;    def login(self, login_name, login_pass):
        &amp;quot;&amp;quot;&amp;quot;
        用户登录操作，获取Cookie

        &amp;quot;&amp;quot;&amp;quot;
        response = self.app.post(url=url(controller=&amp;#39;users&amp;#39;,
                                         action=&amp;#39;login&amp;#39;),
                                 params={
                                     &amp;#39;login_name&amp;#39;: login_name,
                                     &amp;#39;login_pass&amp;#39;: login_pass,
                                 },
                                )

        cookie = response.headers.getall(&amp;#39;Set-cookie&amp;#39;)[0]
        self.headers = ResponseHeaders()
        self.headers.add(&amp;#39;Cookie&amp;#39;, cookie)&lt;/pre&gt;
&lt;p&gt;这样就可以通过 &lt;tt&gt;self.headers&lt;/tt&gt; 保存登录之后的cookie。&lt;/p&gt;
&lt;h3&gt;&lt;a name=&quot;__6&quot;&gt;&lt;/a&gt;4.6. 批量测试&lt;/h3&gt;
&lt;p&gt;除了制定 &lt;tt&gt;test_xxx.py&lt;/tt&gt; 文件进行单元测试，我们还可以直接使用 &lt;tt&gt;nosetests&lt;/tt&gt; 测试所有测试用例。&lt;/p&gt;
&lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;nosetests
//该目录下需要存在 test.ini 配置文件&lt;/pre&gt;
&lt;h2&gt;&lt;a name=&quot;__7&quot;&gt;&lt;/a&gt;5. 遇到的问题&lt;/h2&gt;
&lt;h3&gt;&lt;a name=&quot;__8&quot;&gt;&lt;/a&gt;5.1. 编码问题&lt;/h3&gt;
&lt;pre class=&quot;brush: plain;fontsize: 100; first-line: 1; &quot;&gt;  File &amp;quot;build\bdist.win32\egg\webtest\__init__.py&amp;quot;, line 211, in post
    content_type=content_type)
  File &amp;quot;build\bdist.win32\egg\webtest\__init__.py&amp;quot;, line 191, in _gen_request
    expect_errors=expect_errors)
  File &amp;quot;build\bdist.win32\egg\webtest\__init__.py&amp;quot;, line 370, in do_request
    res = req.get_response(app, catch_exc_info=True)
  File &amp;quot;build\bdist.win32\egg\webob\request.py&amp;quot;, line 1004, in get_response
    application, catch_exc_info=True)
  File &amp;quot;build\bdist.win32\egg\webob\request.py&amp;quot;, line 977, in call_application
    app_iter = application(self.environ, start_response)
  File &amp;quot;build\bdist.win32\egg\webtest\lint.py&amp;quot;, line 170, in lint_app
    iterator = application(environ, start_response_wrapper)
  File &amp;quot;d:\programming\python26\lib\site-packages\paste-1.7.5.1-py2.6.egg\paste\cascade.py&amp;quot;, line 130, in __call__
    return self.apps[-1](environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\paste-1.7.5.1-py2.6.egg\paste\registry.py&amp;quot;, line 379, in __call__
    app_iter = self.application(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\middleware.py&amp;quot;, line 150, in __call__
    self.app, environ, catch_exc_info=True)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\util.py&amp;quot;, line 48, in call_wsgi_application
    app_iter = application(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\weberror-0.10.3-py2.6.egg\weberror\evalexception.py&amp;quot;, line 235, in __call__
    return self.respond(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\weberror-0.10.3-py2.6.egg\weberror\evalexception.py&amp;quot;, line 418, in respond
    return self.application(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\beaker-1.5.4-py2.6.egg\beaker\middleware.py&amp;quot;, line 152, in __call__
    return self.wrap_app(environ, session_start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\routes-1.12.3-py2.6.egg\routes\middleware.py&amp;quot;, line 131, in __call__
    response = self.app(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\wsgiapp.py&amp;quot;, line 107, in __call__
    response = self.dispatch(controller, environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\wsgiapp.py&amp;quot;, line 312, in dispatch
    return controller(environ, start_response)
  File &amp;quot;F:\work\xintong\workspace\MYB_WENDA\myb\myb\lib\base.py&amp;quot;, line 52, in __call__
    return WSGIController.__call__(self, environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\controllers\core.py&amp;quot;, line 266, in __call__
    return response(environ, self.start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 517, in __call__
    environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 341, in __call__
    return self.generate_response(environ, start_response)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 322, in generate_response
    body = self.plain_body(environ)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 301, in plain_body
    body = self._make_body(environ, no_escape)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 294, in _make_body
    args[k] = escape(v)
  File &amp;quot;d:\programming\python26\lib\site-packages\webob-1.0.7-py2.6.egg\webob\exc.py&amp;quot;, line 182, in no_escape
    value = str(value)
  File &amp;quot;d:\programming\python26\lib\site-packages\pylons-1.0-py2.6.egg\pylons\util.py&amp;quot;, line 112, in __repr__
    value_repr = repr(value)
UnicodeEncodeError: &amp;#39;ascii&amp;#39; codec can&amp;#39;t encode characters in position 8-18: ordinal not in range(128)&lt;/pre&gt;
&lt;p&gt;这是一个明显由编码引起的错误。&lt;/p&gt;
&lt;p&gt;修改pylons-1.0-py2.6.egg\Pylons\util.py\中112行修改为&lt;/p&gt;
&lt;pre class=&quot;brush: python;fontsize: 100; first-line: 1; &quot;&gt;try:
    value_repr = repr(value)
except UnicodeEncodeError, e:
    log.error(&amp;#39;encode error in pylons/utils.py&amp;#39;)
    continue&lt;/pre&gt;
&lt;p&gt;这样虽然不能从根本上解决问题，但是至少规避了问题。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/nose.html&quot;&gt;http://dddspace.com/2011/09/nose.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;相关文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/08/go-pylons-py-in-python2-7.html&quot; title=&quot;go-pylons.py在Python2.7下错误解决&quot;&gt;go-pylons.py在Python2.7下错误解决&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/05/run-pylons-in-eclipse.html&quot; title=&quot;Eclipse中运行Pylons&quot;&gt;Eclipse中运行Pylons&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/05/pylons.html&quot; title=&quot;Pylons使用小记&quot;&gt;Pylons使用小记&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704527/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704527/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/nose.html/feed</wfw:commentRss><slash:comments>0</slash:comments><description>不做单元测试的程序员不是好程序员。最近我在Pylons下面做开发， 使用 nose 做单元测试，颇有心得， 在这里分享一下。

1. Pylons中依赖包

先简单介绍一下Pylons, Pylons与其说是一个框架，不如说是一堆框架的组合， Pylons在其中做到一个胶水的作用。Pylons依赖的包如下。

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/nose.html&quot; title=&quot;使用nose做测试&quot;&gt;阅读全文——共9086字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704527/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704527/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>Pylons</category><category>nose</category><category>Python编程</category><pubDate>Thu, 22 Sep 2011 11:08:31 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/nose.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=30750</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/nose.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704527/5722326</fs:itemid></item><item><title>倾诉</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704528/5722326/1/item.html</link><content:encoded>&lt;p&gt;很少转载别人的文字，这篇是老同学的一篇博文，很美的文字。&lt;/p&gt;
&lt;p&gt;原文地址&amp;nbsp;&lt;a href=&quot;http://blog.sina.com.cn/s/blog_49c54b980100vmq7.html&quot;&gt;http://blog.sina.com.cn/s/blog_49c54b980100vmq7.html&lt;/a&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;我想。&lt;/p&gt;
&lt;p&gt;每个人都有这样一个成长的过程。我现在看别人经历的十七八岁，写的文字，想表达的内容，仿佛就是在回望几年前的自己。尽管经历不同，却几乎写着同样的文字，表达着几乎同样的情感。这是一种很奇妙的，感同身受的感觉。&lt;/p&gt;
&lt;p&gt;现在当我静下来，真正可以回望过往，看到自己曾经的确年少轻狂，为赋新词强说愁。不管是对待生活对待人生或者是对待感情的态度，或许都要经历那样一个过往，才能变得更加成熟。先贤有说人生的3重境界，看山是山看水是水，到看山不是山看山不是水，最后又回归于看山是山看水是水。现在想来，这的确是对于人生一个最精妙的表达也是概括。尽管在不同的时期我们对于山水的理解各有不同。&lt;span id=&quot;more-30169&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;我惊讶于在回想十七八岁的时候的自己，竟需要用到五六年前这样的一个时间段来形容。我甚至觉得不可思议，仿佛这中间的时间不曾存在过，而我还是当时那时候一个什么都不懂的小女儿家。尽管现在也未必懂得多少，但这时间却是真真实实存在了的，真的是，白驹过隙。&lt;/p&gt;
&lt;p&gt;长时间的沉默和压抑使得我需要寻找一个缺口，来找人倾诉我的情感与看法。否则越来越厚重的情感会让我觉得非常压迫。但是在现实生活中去寻找一个人在倾诉这样的情感，或者要以合适的语言来表达自己的情感与想法，并不是一件很容易的事情。所以有时候要求助于纸笔，通过书写来达到倾诉的目的。&lt;/p&gt;
&lt;p&gt;我有的时候会觉得，仿佛这一年的时光如同是一场梦一般的不真实。在之前的二十多年里，我从未想过有一天我可以不生活在我的故土长达一年以上，从未想过曾经嚷嚷的要环游世界的不敢奢想的梦已经迈出了第一步。我想，我的人生充满了惊奇与不确定。尽管我从来都想让它过得平淡如水，它却总在我觉得要波澜不惊的时候，给予我一些波澜起伏的故事。我想我要感谢我的父母，是他们给了我机会给了我最原始的动力和不断的支持。和很多人相比，我无疑是幸运的，也正是因此，我偶尔才会觉得这样的幸运这样的幸福，是否有些不真实，觉得仿佛这一切不是发生在我身上的。&lt;/p&gt;
&lt;p&gt;终于发现自己仍然是那样脆弱，任性和依赖别人的一个人。即使是在外长达一年的时光都没有让自己改变多少，甚至比原来更加的变本加厉。即使是生生把期盼都磨成了习惯，却仍然没有办法让自己更加的独立与坚强。&lt;/p&gt;
&lt;p&gt;我想，我需要寻找一个倾诉的缺口。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;&quot; height=&quot;450&quot; src=&quot;http://dddspace.com/wp-content/uploads/2011/09/qingsu.jpg&quot; width=&quot;600&quot; /&gt;&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/jwj.html&quot;&gt;http://dddspace.com/2011/09/jwj.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/12/formally-entered-a-period-of-40-to-remind-the-community-reproduced.html&quot; title=&quot;正式步入社会的40个提醒[转载]&quot;&gt;正式步入社会的40个提醒[转载]&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/note-the-use-of-java-reflection-to-improve-the-basedao.html&quot; title=&quot;Java笔记 使用反射来改进BaseDao&quot;&gt;Java笔记 使用反射来改进BaseDao&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/08/nxserver.html&quot; title=&quot;使用NX替代VNC&quot;&gt;使用NX替代VNC&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/station-restoration-of-mind.html&quot; title=&quot;小站恢复记&quot;&gt;小站恢复记&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/a-windows-small-bug.html&quot; title=&quot;一个Windows小Bug&quot;&gt;一个Windows小Bug&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/natural-theory-of-software.html&quot; title=&quot;软件自然理论&quot;&gt;软件自然理论&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/07/damn-house.html&quot; title=&quot;可恶的房子&quot;&gt;可恶的房子&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/06/mako-vim.html&quot; title=&quot;一个mako.vim&quot;&gt;一个mako.vim&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/03/socket-programming-on-the-select.html&quot; title=&quot;Socket编程之Select【转载】&quot;&gt;Socket编程之Select【转载】&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/07/dao-design-the-use-of-generics-to-avoid-duplication-of-dao.html&quot; title=&quot;DAO的设计-使用泛型来避免重复DAO&quot;&gt;DAO的设计-使用泛型来避免重复DAO&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704528/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704528/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/jwj.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>很少转载别人的文字，这篇是老同学的一篇博文，很美的文字。

原文地址&amp;#160;http://blog.sina.com.cn/s/blog_49c54b980100vmq7.html



&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/jwj.html&quot; title=&quot;倾诉&quot;&gt;阅读全文——共991字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704528/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704528/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>感悟</category><pubDate>Wed, 14 Sep 2011 15:45:25 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/jwj.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=30169</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/jwj.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704528/5722326</fs:itemid></item><item><title>使用pptpclient连接vpn网络</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704529/5722326/1/item.html</link><content:encoded>&lt;p&gt;最近在ddwrt配置vpn，参考了arch的pptpclient配置文档&lt;a href=&quot;https://wiki.archlinux.org/index.php/Microsoft_VPN_client_setup_with_pptpclient&quot;&gt;Microsoft VPN client setup with pptpclient&lt;/a&gt;，同时顺便花了一点时间翻译成中文，正文如下（使用&lt;a href=&quot;https://github.com/tanin47/wiky.js&quot;&gt;wiky.js&lt;/a&gt;转换pediawiki到html，原文会有更多的wiki模板样式便于查看，有问题请参照原文）。&lt;/p&gt;
&lt;p&gt;pptpclient是一个实现Microsoft PPTP协议的程序。因此它能够被用来接入另一个Microsoft VPN网络，比如学校和单位。&lt;/p&gt;
&lt;h3&gt;安装PPTPClient&lt;/h3&gt;
&lt;p&gt;pptpclient由安装包pptpclient提供，运行下列命令可以安装：&lt;/p&gt;
&lt;p&gt;# pacman -S pptpclient&lt;/p&gt;
&lt;h3&gt;配置&lt;/h3&gt;
&lt;p&gt;你需要从网络管理员获取以下信息来配置pptpclient:&lt;span id=&quot;more-29882&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VPN服务器的ip或者域名&lt;/li&gt;
&lt;li&gt;VPN隧道名称&lt;/li&gt;
&lt;li&gt;Windows域（不是所有网络都需要）&lt;/li&gt;
&lt;li&gt;VPN用户名&lt;/li&gt;
&lt;li&gt;VPN密码&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;编辑配置文件&lt;/h2&gt;
&lt;p&gt;用你称手的编辑器打开/etc/ppp/options.pptp。这个文件为你的VPN连接启用了一系列默认安全设置。如果你连接时候出现问题，你可以自定义配置。你的options.pptp文件最少需要包含以下内容：&lt;/p&gt;
&lt;pre&gt;lock
noauth
nobsdcomp
nodeflate
&lt;/pre&gt;
&lt;h2&gt;编辑密码文件&lt;/h2&gt;
&lt;p&gt;下一步，打开或者创建/etc/ppp/chap-secrets。我们将在这个文件里面存储你的密码，记得修改权限让除root之外所有用户不能访问它。这个文件的格式如下：&lt;/p&gt;
&lt;pre&gt;&amp;lt;DOMAIN&amp;gt;\\&amp;lt;USERNAME&amp;gt; PPTP &amp;lt;PASSWORD&amp;gt; *&lt;/pre&gt;
&lt;p&gt;如果你的服务器不要求域，则配置如下：&lt;/p&gt;
&lt;pre&gt;&lt;username&gt;
&lt;password&gt;&amp;lt;USERNAME&amp;gt; PPTP &amp;lt;PASSWORD&amp;gt; *
&lt;/password&gt;&lt;/username&gt;&lt;/pre&gt;
&lt;p&gt;替换掉上文中范例中的占位符。注意，如果你的密码包含特殊字符，比如&amp;ldquo;$&amp;rdquo;，你需要用双引号把它们包起来。&lt;/p&gt;
&lt;h2&gt;命名你的VPN隧道&lt;/h2&gt;
&lt;p&gt;用你称手的编辑器创建类似/etc/ppp/peers/&lt;tunnel&gt;的文件，把&lt;tunnel&gt;这里替换成你的VPN连接名。这个文件设置之后看起来如下： &lt;/tunnel&gt;&lt;/tunnel&gt;&lt;/p&gt;
&lt;pre&gt;pty &amp;quot;pptp &amp;lt;SERVER&amp;gt; --nolaunchpppd&amp;quot;
name &amp;lt;DOMAIN&amp;gt;\\&amp;lt;USERNAME&amp;gt;
remotename PPTP
require-mppe-128
file /etc/ppp/options.pptp
ipparam &amp;lt;TUNNEL&amp;gt;&lt;/pre&gt;
&lt;p&gt;{{Note|跟刚才一样，如果你的连接不要求域，忽略范例中的&amp;quot;&lt;domain&gt;\\&amp;quot;}} {{Note|PPTP远程主机使用Chap-Secrets文件中的
&lt;password&gt;}} &lt;/password&gt;&lt;/domain&gt;&lt;/p&gt;
&lt;p&gt;&lt;domain&gt;
&lt;password&gt;&lt;server&gt;是VPN服务器的地址，&lt;domain&gt;是你所属的域，&lt;username&gt;是你将要用来连接服务器的用户名，&lt;tunnel&gt;是连接的名称。&lt;/tunnel&gt;&lt;/username&gt;&lt;/domain&gt;&lt;/server&gt;&lt;/password&gt;&lt;/domain&gt;&lt;/p&gt;
&lt;p&gt;{{Note|如果你不需要使用MPPE，你应当从/etc/ppp/options.pptp中移除require-mppe-128这个选项}}&lt;/p&gt;
&lt;p&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-size: 14px; font-weight: bold; &quot;&gt;创建你的连接&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;用root执行以下命令来确保配置是正确的： # pon $TUNNEL debug dump logfd 2 nodetach 如果一切都配置好了，pon命令应当不会自动结束。一旦你感觉差不多OK了，就可以终止这个命令。 {{Note|另一个用来确保配置正确的命令是ifconfig -a，看看里面时候有一个名叫ppp0的新驱动，并且还是可用的}} 执行以下命令来连接VPN隧道： # pon &lt;tunnel&gt; &lt;tunnel&gt;是你之前命名过的VPN隧道名称。注意使用root命令执行。 &lt;/tunnel&gt;&lt;/tunnel&gt;&lt;/p&gt;
&lt;h2&gt;配置路由&lt;/h2&gt;
&lt;p&gt;一旦你成功连接上VPN，你就可以和VPN服务器交互了。当然在此之前，咱们需要添加一个新的路由到你的路由表，从而可以接入远程网络。 &lt;/p&gt;
&lt;p&gt;{{Note|根据你的环境配置，你可能需要每次都重复添加路由信息}} &lt;/p&gt;
&lt;p&gt;你可以阅读&lt;a href=&quot;http://pptpclient.sourceforge.net/routing.phtml&quot; target=&quot;http://pptpclient.sourceforge.net/routing.phtml&quot;&gt;PPTP Routing Howto&lt;/a&gt;来获得更多如何添加路由的信息，里面还有很多范例。 &amp;nbsp;&lt;/p&gt;
&lt;h2&gt;选择路由&lt;/h2&gt;
&lt;p&gt;对我来说，只有传输到VPN网络的数据包才应该走VPN连接，所以我添加如下路由条目： # route add -net 192.168.10.0 netmask 255.255.255.0 dev ppp0 这将路由所有目的地址为191.168.10.xxx的数据到VPN连接。 &amp;nbsp;&lt;/p&gt;
&lt;h2&gt;配置为默认路由&lt;/h2&gt;
&lt;p&gt;如果你想要所有数据从VPN连接走，下面这条命令包你爽： # route add default dev ppp0 {{Note|所有数据从VPN连接走的话会比正常连接慢一些}} &amp;nbsp;&lt;/p&gt;
&lt;h3&gt;断开连接&lt;/h3&gt;
&lt;p&gt;下面这条命令用来断开VPN连接： # poff &lt;tunnel&gt; &lt;tunnel&gt;是你VPN连接的名称。 &lt;/tunnel&gt;&lt;/tunnel&gt;&lt;/p&gt;
&lt;h3&gt;把一个VPN连接配为默认启动&lt;/h3&gt;
&lt;p&gt;你可以在rc.d创建一个快捷命令来实现自动在后台连接VPN网络。 &lt;/p&gt;
&lt;p&gt;{{Note|和平常一样，&lt;tunnel&gt;是你隧道的名字，&lt;routing command=&quot;&quot;&gt;是你加入路由表的命令。}} &lt;/routing&gt;&lt;/tunnel&gt;&lt;/p&gt;
&lt;pre&gt;#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions

DAEMON=&amp;lt;TUNNEL&amp;gt;-vpn
ARGS=

[ -r /etc/conf.d/$DAEMON ] &amp;amp;&amp;amp; . /etc/conf.d/$DAEMON

case &amp;quot;$1&amp;quot; in
 start)
   stat_busy &amp;quot;Starting $DAEMON&amp;quot;
   pon &amp;lt;TUNNEL&amp;gt; updetach persist &amp;amp;&amp;gt; /dev/null &amp;amp;&amp;amp; &amp;lt;ROUTING COMMAND&amp;gt; &amp;amp;&amp;gt;/dev/null
   if [ $? = 0 ]; then
     add_daemon $DAEMON
     stat_done
   else
     stat_fail
     exit 1
   fi
   ;;
 stop)
   stat_busy &amp;quot;Stopping $DAEMON&amp;quot;
   poff MST &amp;amp;&amp;gt;/dev/null
   if [ $? = 0 ]; then
     rm_daemon $DAEMON
     stat_done
   else
     stat_fail
     exit 1
   fi
   ;;
 restart)
   $0 stop
   sleep 1
   $0 start
   ;;
 *)
   echo &amp;quot;usage: $0 {start|stop|restart}&amp;quot;
esac&lt;/pre&gt;
&lt;p&gt;注意，我们可以使用updetach和persist这两个附加命令在pon上。updetach保证pon阻塞知道连接被建立。另外一个命令persist保证网络自动重练。如果需要开机自动启动，则添加@&lt;tunnel&gt;-vpn到rc.conf的DAEMONS中去。 &lt;/tunnel&gt;&lt;/p&gt;
&lt;h3&gt;注意&lt;/h3&gt;
&lt;p&gt;你可以在&lt;a href=&quot;http://pptpclient.sourceforge.net/&quot; target=&quot;http://pptpclient.sourceforge.net/&quot;&gt;pptpclient website&lt;/a&gt;查到更多关于pptpclient的配置信息。Ubuntu的帮助手册也有一些帮助你配置的信息。这些范例能够很轻松的稍加变换从而添加到daemons中去，从而帮助你自动化运行。 &amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/09/pptpclient.html&quot;&gt;http://dddspace.com/2011/09/pptpclient.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;相关文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/12/lavavpn.html&quot; title=&quot;LavaVPN推广链接&quot;&gt;LavaVPN推广链接&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704529/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704529/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/09/pptpclient.html/feed</wfw:commentRss><slash:comments>1</slash:comments><description>最近在ddwrt配置vpn，参考了arch的pptpclient配置文档Microsoft VPN client setup with pptpclient，同时顺便花了一点时间翻译成中文，正文如下（使用wiky.js转换pediawiki到html，原文会有更多的wiki模板样式便于查看，有问题请参照原文）。

pptpclient是一个实现Microsoft PPTP协议的程序。因此它能够被用来接入另一个Microsoft VPN网络，比如学校和单位。

安装PPTPClient

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/09/pptpclient.html&quot; title=&quot;使用pptpclient连接vpn网络&quot;&gt;阅读全文——共2505字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704529/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704529/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>VPN</category><category>Linuxer</category><category>pptp</category><category>arch</category><pubDate>Sun, 04 Sep 2011 20:44:55 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/09/pptpclient.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=29882</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/09/pptpclient.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704529/5722326</fs:itemid></item><item><title>使用NX替代VNC</title><link>http://item.feedsky.com/~feedsky/dddspace/~8005646/587704530/5722326/1/item.html</link><content:encoded>&lt;p&gt;&lt;a href=&quot;http://www.nomachine.com&quot;&gt;NX&lt;/a&gt; 是 NoMachine 公司推出的下一代远程桌面技术，可以说是用来替换 VNC 的一个较好方案。&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;a href=&quot;http://www.realvnc.com&quot;&gt;VNC&lt;/a&gt; is remote control software which allows you to view and fully interact with one computer desktop (the &amp;quot;VNC server&amp;quot;) using a simple program (the &amp;quot;VNC viewer&amp;quot;) on another computer desktop anywhere on the Internet.&lt;/p&gt;
&lt;p&gt;VNC 是一个允许你从一台电脑（VNC 查看器）查看并且操作另外一台电脑（VNC 服务器）小程序。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;我在 ArchLinux 上同时也使用 VNC 服务，我推荐使用 &lt;a href=&quot;http://www.tightvnc.com/&quot;&gt;TightVNC&lt;/a&gt;。&lt;span id=&quot;more-29631&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_nx&quot;&gt;&lt;/a&gt;NX优势&lt;/h2&gt;
&lt;p&gt;VNC 的缺点在于实时传输屏幕，图片的数据量比较大，所以会比较慢，并且有一条一条刷新的情况出现。&lt;/p&gt;
&lt;p&gt;而 NX 则在客户端创建 Xorg 服务器，在网络层只传输 XWindows 信号，这样就比直接传输数据提供更好的速度和实时响应效果。&lt;/p&gt;
&lt;p&gt;同时 NX 使用 SSH 作为安全传输保障，也就意味着它需要使用22端口，并且为了正常传输数据，需要预先配置好 sshd 服务和 安全密钥。&lt;/p&gt;
&lt;p&gt;由于使用 Xorg 实现图像传输，所以 NX 在 Windows 下面没有服务器。（我刚开始以为客户机在 Windows 下面也没有，今天才看到有 &lt;a href=&quot;http://www.nomachine.com/download-package.php?Prod_Id=3565&quot;&gt;Windows 客户机&lt;/a&gt;）&lt;/p&gt;
&lt;h2&gt;&lt;a name=&quot;_nx_2&quot;&gt;&lt;/a&gt;安装NX&lt;/h2&gt;
&lt;p&gt;在 NX 官网可以下载二进制码，也可以用包管理工具安装，在 ArchLinux 下面安装如下：&lt;/p&gt;
&lt;pre class=&quot;brush: bash;fontsize: 100; first-line: 1; &quot;&gt;pacman -S nxserver #使用pacman
/opt/NX/bin/nxsetup --install #安装配置NX服务器
/opt/NX/bin/nxsetup --test #测试NX服务器是否正常&lt;/pre&gt;
&lt;h2&gt;&lt;a name=&quot;_nxclient&quot;&gt;&lt;/a&gt;使用NXClient&lt;/h2&gt;
&lt;p&gt;Windows 下面的 NXClient 下载即可使用，跟着 Wizard 走一下就完全没问题了。&lt;/p&gt;
&lt;p&gt;&lt;img alt=&quot;NXClient&quot; src=&quot;http://dddspace.com/wp-content/uploads/2011/08/nxclient.png&quot; style=&quot;border-width: 0;&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Arch 下面使用 pacman 安装一下 nxclient 即可了。&lt;/p&gt;
&lt;h2&gt;ps:&lt;/h2&gt;
&lt;p&gt;今天去参加 &lt;a href=&quot;http://wiki.nanjinglug.org/moin.fcg/Meetings/2011/0828&quot;&gt;Linux 20周年纪念活动南京站&lt;/a&gt; 活动，听&lt;a href=&quot;http://cloudgotech.com/&quot;&gt;深圳云果&lt;/a&gt; CTO 计文柯先生介绍 Amazon 的云服务，其实演示用了 NX，想到自己也受惠 NX 颇久，就撰文推广。&lt;/p&gt;
&lt;div style=&quot;margin-top: 15px; background: none repeat scroll 0pt 0pt rgb(238, 238, 238);&quot;&gt;
&lt;p&gt;&lt;strong&gt;版权所有 © 2010 转载本站文章请注明：&lt;/strong&gt; 转载自&lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/&quot;&gt;Log4D&lt;/a&gt;&lt;br /&gt;&lt;strong&gt;原文链接:&lt;/strong&gt; &lt;a target=&quot;_blank&quot; href=&quot;http://dddspace.com/2011/08/nxserver.html&quot;&gt;http://dddspace.com/2011/08/nxserver.html&lt;/a&gt;&lt;br /&gt;您可以随意地转载本站的文章，但是必须在醒目位置注明来源及本站链接，不可以将本站文章商业化使用，或者修改、转换或者以本作品为基础进行创作。&lt;br /&gt;3a1ff193cee606bd1e2ea554a16353ee&lt;/p&gt;
&lt;/div&gt;
&lt;div  class=&quot;related_post_title&quot;&gt;你也许会喜欢下面的文章&lt;/div&gt;&lt;ul class=&quot;related_post&quot;&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/10/doubts-on-the-job.html&quot; title=&quot;关于找工作的疑惑&quot;&gt;关于找工作的疑惑&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/solve-the-null-value-was-assigned-to-a-property.html&quot; title=&quot;解决 Null value was assigned to a property&quot;&gt;解决 Null value was assigned to a property&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/10/python-django-mtv-framework-and-php-mvc-framework.html&quot; title=&quot;python+django MTV框架 和php MVC框架&quot;&gt;python+django MTV框架 和php MVC框架&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/11/delphi-study-notes-01.html&quot; title=&quot;Delphi学习笔记01&quot;&gt;Delphi学习笔记01&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/08/azaajaxchat-notes-implementation.html&quot; title=&quot;AzaAjaxChat笔记-实现&quot;&gt;AzaAjaxChat笔记-实现&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/05/the-education-network-ubuntu8-04-source.html&quot; title=&quot;Ubuntu8.04的教育网源&quot;&gt;Ubuntu8.04的教育网源&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2010/04/reverence-for-life.html&quot; title=&quot;敬畏生命&quot;&gt;敬畏生命&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2009/08/tested-in-google-reader-using-flash.html&quot; title=&quot;测试在Google Reader下使用Flash&quot;&gt;测试在Google Reader下使用Flash&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2011/07/lrzsz.html&quot; title=&quot;安装lrzsz&quot;&gt;安装lrzsz&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://dddspace.com/2008/10/mfc-will-be-from-the-stage-of-history-microsoft-s-next-generation-user-interface-technology-wpf.html&quot; title=&quot;MFC将退出历史舞台，微软的下一代用户界面技术WPF&quot;&gt;MFC将退出历史舞台，微软的下一代用户界面技术WPF&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704530/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704530/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</content:encoded><wfw:commentRss>http://dddspace.com/2011/08/nxserver.html/feed</wfw:commentRss><slash:comments>2</slash:comments><description>NX 是 NoMachine 公司推出的下一代远程桌面技术，可以说是用来替换 VNC 的一个较好方案。



VNC is remote control software which allows you to view and fully interact with one computer desktop (the &amp;#34;VNC server&amp;#34;) using a simple program (the &amp;#34;VNC viewer&amp;#34;) on another computer desktop anywhere on the Internet.

&lt;span class=&quot;readmore&quot;&gt;&lt;a href=&quot;http://dddspace.com/2011/08/nxserver.html&quot; title=&quot;使用NX替代VNC&quot;&gt;阅读全文——共872字&lt;/a&gt;&lt;/span&gt;&lt;img src=&quot;http://www1.feedsky.com/t1/587704530/dddspace/feedsky/s.gif?r=http://item.feedsky.com/~feedsky/dddspace/~8005646/587704530/5722326/1/item.html&quot; border=&quot;0&quot; height=&quot;0&quot; width=&quot;0&quot; style=&quot;position:absolute&quot; /&gt;</description><category>NXServer</category><category>Linuxer</category><category>VNC</category><pubDate>Sun, 28 Aug 2011 22:54:24 +0800</pubDate><author>alswl</author><comments>http://dddspace.com/2011/08/nxserver.html#comments</comments><guid isPermaLink="false">http://dddspace.com/?p=29631</guid><dc:creator>alswl</dc:creator><fs:srclink>http://dddspace.com/2011/08/nxserver.html</fs:srclink><fs:srcfeed>http://dddspace.com/feed</fs:srcfeed><fs:itemid>feedsky/dddspace/~8005646/587704530/5722326</fs:itemid></item></channel></rss>
