<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>xdays</title>
	<atom:link href="http://www.xdays.info/feed" rel="self" type="application/rss+xml" />
	<link>http://www.xdays.info</link>
	<description>linux总结,运维，cisco认证学习总结，服务器架构，软件精选，windows技巧</description>
	<lastBuildDate>Wed, 16 May 2012 15:34:40 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>怎样成为一名黑客</title>
		<link>http://www.xdays.info/%e6%80%8e%e6%a0%b7%e6%88%90%e4%b8%ba%e4%b8%80%e5%90%8d%e9%bb%91%e5%ae%a2.html</link>
		<comments>http://www.xdays.info/%e6%80%8e%e6%a0%b7%e6%88%90%e4%b8%ba%e4%b8%80%e5%90%8d%e9%bb%91%e5%ae%a2.html#comments</comments>
		<pubDate>Fri, 30 Dec 2011 01:05:35 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[mylife]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=647</guid>
		<description><![CDATA[<h3>为什么是这篇文档？</h3>
作为Jargon File的编辑和其他有关类似文化的文档的作者，我经常收到一些热衷于网络的新手的邮件，他们在邮件中经常问道：“我如何才能成为一个神秘的黑客？”我发现自1996年以来好像没有任何FAQ或者文档来回答这个非常重要的问题，所以我写了这篇文档。很多黑客认为这篇文档描述准确，我也认为确实如此。尽管如此，我并不是说它就是有关这一主题的权威，如果你不喜欢你在这里读到内容那就写下你的观点。

如果你仅仅离线读到是这篇文档一个片段，最新版本可以在这里找到http://catb.org/~esr/faqs/hacker-howto.html

注意：在这篇文档的最后有一个FAQ的列表，在你给我发邮件询问问题之前确保你已经仔细阅读了这部份内容。

这篇文档已经被翻译成下多种语言版本：阿拉伯语、白俄罗斯、中文（简体）、丹麦语、荷兰语、爱沙尼亚、德国、希腊意大利希伯来语、挪威语,葡萄牙语(巴西),罗马尼亚的西班牙语,土耳其语和瑞典语。注意尽管这篇文档不断更新，这些版本可能有不同程度的过期。

妆点这篇文档的那个图标，有五个点在九个方格里，叫做滑翔机。它有简单的样式，这种样式包含数年来令黑客们痴迷的一种叫做Life的数学模拟的特征。我觉得它是黑客的直观象征。简单说来，首先增加一些神秘的色彩，但也开启了一扇复杂逻辑世界的大门，你可以从这里了解更多关于滑翔机象征的内容。
<h3>黑客是什么？</h3>
在Jargon File里包含很多关于黑客的定义，大多数都和熟练的技术和解决问题超越限制的之士有关。如果你真的想知道如何成为一名黑客，这两点很重要。

曾经有一个社区，崇尚共享主义文化，由专家级程序员和网络奇才组成，这个社区的历史可以追溯到几十年前的分时小型机和ARPAnet实验项目。崇尚这种文化的成员正事黑客的起源。黑客们构建了因特网，黑客们造就了Unix系统，黑客们使新闻组得以运行，黑客们构建了互联网。如果你是这一文化的一部份，如果你为这种文化作出过贡献，那么其他成员会知道你，称你为黑客，你就是一个黑客。

黑客的观念不仅仅局限于软件黑客文化。很多人将黑客精神应用到像电子或者音乐领域，你可以在任何科学和艺术的最高领域发现他的身影。软件黑客在其他领域里发现了这种相似的精神也会称他们为黑客，而且一些人认为黑客文化独立于黑客的致力于的媒介。但是这篇文档接下来要讨论的是软件黑客的技能和观点，这些起源于黑客文化的传统。

还有另一个群体自豪的自称为黑客，但实际上不是。这些人（多数事青少年）以入侵计算机系统或者截获电话系统为乐。真正的黑客称他们为骇客也不想和他们有一点关系。真正的黑客认为骇客事懒惰的，不负责任的，不聪明的，是一群不能因为有能力破坏安全而被称之为黑客的群体，就像能发动汽车并不代表就是汽车工程师一样。不幸的是，许多记者，作者被愚弄来用黑客描述骇客，这将无休止的另黑客不悦。

黑客与骇客最大的不同是：黑客创造，骇客破坏。

如果你想成为一名黑客，继续读下去。如果你想成为已经骇客，去读alt.2600新闻组然后在你发现自己没有自己想象的那么聪明之后做好蹲5到10年监狱的准备。这就是所有我想告诉骇客的。
<h3>黑客的态度</h3>
<ol>
	<li>这个世界充满了等待去解决的有趣的问题</li>
	<li>同一个问题不需要被解决两次</li>
	<li>拒绝枯燥乏味的工作</li>
	<li>向往自由</li>
	<li>态度不是能力的替代品</li>
</ol>
黑客们解决问题创造新事物，他们相信自由和自愿的互帮互助。要想成为一名黑客，你必须自己有这种态度。而要想有这样一种态度，你必须信仰这种态度。

但如果你把培养黑客态度当作一种在这种文化中被接收的方式，你就误解了要点。成为一个信仰这些观点的人对你很重要，因为这样能帮助你学习并且保持积极主动。就像所有创造性艺术一样，成为大师的最有效的方式就是模仿大师们的思想，不仅仅从智力上也要从感情上模仿。

或者就像下面这首禅师所说的：
沿着这样一条路线：
发现大师
追随大师
与大师同行
品透大师
成为大师

所以，如果你想成为一名黑客，重复下面的事情知道你相信它们：
<h4>1. 这个世界充满了等待去解决的有趣的问题</h4>
做一名黑客非常有趣，但这种有趣来源于艰辛的努力。努力激发动力。成功的运动员从他们锻炼身体超越自身的极限中获取动力。同样地，要做一名黑客，你必须能从解决问题的过程中获得快乐，磨练技能，锻炼智力。

如果你觉得这样并非理所当然，要做一名黑客你应该如此。否则，你的黑客动力可能会被性，金钱或者社会虚名所阻碍。

（你必须能在你的学习能力范围内培养一种信念，就是尽管你可能不具备解决一个问题所需要的所有东西，如果你从其中的一部份学起，你将能够学会处理接下来的一小部分，这样下去你就能解决掉问题）
<h4>2. 同一个问题不需要被解决两次</h4>
创造性的大脑是宝贵的，有限的资源。既然有那么多有趣的问题等待被解决，它们不应该被浪费在重复发明轮子之上。

要想做一名黑客，你要知道其他黑客思考的时间是宝贵的。所以当你分享信息，解决问题并且给出解决办法以便其他黑客解决新的问题而不是总是重复处理旧问题时要有一种道德上的使命感。

注意，同一个问题不需要被解决两次并不是说你必须将现有的解决办法奉为信条，或者说对于给定的问题只有一种正确的解决办法。通常情况下，面对一个以前从未碰到的问题，我们能从问题的第一个解决办法中学到很多。相信自己可以做的更好是很好也很必要的，而人工技术，制度上的屏障这些阻止了好的解决办法被重新利用从而促使人们不得不重新发明轮子就不好了。

你不必认为你有义务贡献你的所有创造性的产出，尽管这么做的黑客能赢得其他黑客的尊重。出售自己的成果换取食物，租房或者买计算机也是和黑客价值观一致的。用你的黑客技能养家糊口，甚至发家也是理所当然的，只要你在做这些事情的时候不要忘记你对你的艺术和你的黑客伙伴们的忠诚。
<h4>3. 拒绝枯燥乏味的工作</h4>
黑客（更通俗说，富有创造力的人们）绝不该被重复性的苦差困扰，因为如果正他们就不能做只有他们能做的事情，解决新问题。这种浪费会危害到所有人。因此枯燥和苦差不仅仅事令人不悦，更是一种罪恶。

作为黑客，你应该相信是该尽最大可能的自动化那些枯燥的小事，这不仅为你也为其他所有人（特别是其他的黑客们）。

（关于这一点有个明显的例外。黑客们有时候在他们看来重复和枯燥的事情来进行脑力休息，或者为了获取一种通过其他方法无法获取技能或者特殊的经验。但是这也因人而异，每一个能思考的人都不应该强迫陷入令自己苦恼的境地。）
<h4>4. 向往自由</h4>
黑客们天性反对独裁，任何能对你发号施令的人都可能阻止你去解决令你着迷的问题。而且按照独裁着思路，你会发现一些特别愚昧的理由。所以独裁思维一经发现，必须反抗，以免其压迫你和其他黑客。

（这并不等同于反对所有权威。儿童需要被监护，罪犯需要被关押。黑客需要接受一些权威来在最短段时间内得到他需要的。但这也是有限的，有意识的权衡，个人屈服权威是不应该接受的。）

独裁主义者喜欢审查和保密。他们不相信志愿的合作和信息共享，他们只相信他们控制的合作。因此作为黑客，你需要培养一种对审查，保密以及使用武力或者欺骗方式压迫有能力人的做法怀有一种本能的敌意。并且你要愿意为这种信仰斗争。
<h4>5. 态度不是能力的替代品</h4>
要想成为一名黑客，你必须培养这些态度。但是仅仅复制一种态度你不会成为黑客，也不能让你成为一名运动员冠军或者摇滚明星。成为一名黑客需要智力，实践，奉献精神和汗水。

所以你要学会怀疑，尊重每一种能力。黑客从来不会让装腔做势者浪费他们的时间，但是他们尊重能力，特别是黑客能力，不过任何能力都是有价值的。只有少数人掌握的技能固然是好的，而那些涉及智力，实践和专注的技能当然最好。

如果你尊重能力，你会享受锻炼这种能力的喜悦。辛勤工作和奉献精神会变成很有热情的事情而不仅仅是苦差。这种态度对成为一名黑客至关重要。
<h3>基础黑客技能</h3>
黑客技能固然重要，但是技能更加重要。态度不能取代能力。在你梦想让其他黑客称你黑客之前你需要具备一些基本的技能。

这些技能随着新技术产生的新技能而淘汰了旧的而不断变化。例如，过去包括用机器语言编程，直到最近才包含HTML。但有一点非常明确，接下来提到的技能一直包含在内。
<h4>1. 学习如何编程</h4>
理所当然，这是最基本的黑客技能。如果你一门编程语言也不了解的话，我建议你从Python开始。它设计精良，文档全面，对初学者非常友好。尽管是一门很好的初学者语言，它却不仅仅是一个玩偶，Python非常灵活强大并且适合做大项目。我曾写过一篇<a title="evaluation of python" href="http://www.linuxjournal.com/article.php?sid=3882">Python评价</a>，从Python的<a title="python offical site" href="http://www.python.org">官方网站</a>上能找到许多指导文档。

我过去常常推荐Java作为最早学习的一门编程语言，但是这篇<a title="Where Are the Software Engineers of Tomorrow?" href="http://www.crosstalkonline.org/storage/issue-archives/2008/200801/200801-Dewar.pdf">评论文章</a>改变了我的观点（从这篇文章搜索The Pitfalls of Java as a First Programming Language）。正如他们讽刺到的，一个黑客不能像五金店的管道工一样紧紧按照方法解决问题；你必须要知道各个组件真正做了什么。现在我认为最好先学习C或者Lisp，然后在学Java。

这里还有一个更为普遍的观点，如果一门编程语言为你做的太多，那么它可能是对于生产环境是很好的工具但同时却不适合用来学习。不仅仅编程语言有这样的问题，网络应用开发框架像RubyOnRails，CakePHP，Django一样能让表面上理解更容易，却让你在遇到困难问题，或者寻求跟好的解决办法时难于处理。

当你正式开始编程时，你必须学习C语言，Unix系统的核心语言。C++和C语言非常接近，如果你学会了一个另一个也就不难了。这两种语言都不适合作为你第一学习的编程语言。实际上，你越避免使用C语言你的生产效率越高。

C非常高效，节省你的机器资源。不幸的是，C需要你手工做一些底层的资源（如内存）的管理才能如此高效。这些底层代码非常复杂切bug多多，会占用你大量时间来调试代码。现在机器的性能都足够强大，这或许是一个不太好的折衷。更明智的做法是采用一门对机器来说并不算高效但是对人来说更高效的语言，比如Python。

其他对黑客来说比较重要的语言是Perl和LISP。Perl因其实用性值得一学；它在动态网页和系统管理中广泛应用，因此即使你从来不写Perl程序至少你要能读懂它。许多人像我建议你用Python一样在使用Perl，来在那些并不需要特别高效的场合下避免使用C。你需要看懂他们的代码。

LISP值得一学另有原因，当你最终学会它时你会得到意义深远的启蒙。这种经验将使你在以后成为一个更好的程序员，即使你很少使用LISP这门语言本身。（你可以从编写或者修改Emacs编辑器的编辑模式或者GIMP的Script-Fu插件中很容易的对LISP有个初步的认识）

最好是你能把Python，C/C++，Java，Perl和LISP这五门语言都学会。他们除了是一门黑客语言之外，还代表了编程的不同方法，每种编程语言都以不同的方式让你受益。

但是要注意仅仅靠累加语言你是不能达到黑客技能水平，甚至连一个程序员的水平都到达不了，你需要脱离编程语言从更高的角度思考编程问题。想要成为一名真正的黑客，你要锻炼通过联系文档和你的知识来学习一门新的编程语言的能力，这就意味着你要学习几门完全不同的语言。

我无法在这里就如何编程给予指导，这是一项非常复杂的技能。但是我可以告诉你书和培训课程是做不到的，可能所有的黑客都是自学。你可以从书上学到编程语言的一些特性，但是将知识转化技能的思想只能从实践中获得，阅读代码和写代码最为有效。

Peter Norvig，Google的顶级黑客以及关于人工智能的广泛使用的教材的联合作者，写过一篇很好的文章叫<a title="Teach Yourself Programming in Ten Years" href="http://norvig.com/21-days.html">用十年自学编程</a>他的学习编程的方法很值得关注。

学习编程就像学习写文字一样。最好的学习方法就是读一些大师写的东西，写一些自己的东西，再读一些，再写一些，再读一些，再写一些......重复这个过程直到你的文笔能有一种你自己的力量和优势。

找代码阅读过去是件很困难的事情，因为很少有大型的的程序代码供初出茅庐的黑客阅读和思考。现在情况已经完全转变了，开源软件，编程工具和操作系统（都由黑客缔造）广泛使用。这也引出了我接下来的话题......
<h4>2. 从开源的UNIX系统中选取一个，学习使用和运行它</h4>
我假设你拥有一台个人电脑或者可以接触到一台（稍等一下来理解这句话的意思，黑客文化起源于那个计算机非常昂贵，个人是买不起的时代）。任何新手想要获取黑客技能要经历的一个最重要的是获取一个Linux系统，或者BSD-UNIX家族中的的一个，或者Solaris，把它安装的个人电脑上。

是的，世界上出了Unix还有其他的操作系统，但是他们是以二级制方式发行，你无法阅读到源代码，进而你也无法修改它。用装有windows系统或者其他闭源系统的机器上学习黑客技能就像穿着注塑学习跳舞。

在Mac OS X下学习是可以的，但是只有系统的一部分被开源。你会经常撞墙，而且你要闭源培养一些依赖苹果专利代码的坏习惯，如果你能专注于Unix系统下的一些高级特性，你会学到很多有用的东西。

Unix是伴随因特网诞生的操作系统。但你不需要知道Unix也可以学习如何使用因特网，不学习Unix你却无法成为一名因特网黑客。因此，今天的黑客文化都是以Unix为中心的（这并不是完全正确，一些老时代的黑客们并不认同这一点，但Unix和因特网之间的共生关系已经足够紧密，以致微软也无法郑重的否认）。

因此，启动一个Unix，可以像我一样使用Linux或者还有其他的选择（是的，你可以在一台机器上安装Linux和windows双系统），学习它，使用它，修补它。使用它和因特网交流。阅读代码，修改代码。你会找到比任何windows系统中拥有的更好的编程工具（包括C，Lisp，Python和Perl），当你作为一名大师级的黑客回首时你会发现你获取笔记想想更多的乐趣，汲取更多的知识。

想要了解更多关于Unix的信息，看 <a href="http://catb.org/%7Eesr/faqs/loginataka.html" target="_top">The Loginataka</a> ，你可能还想看一下 <a href="http://catb.org/%7Eesr/writings/taoup/" target="_top">The Art Of Unix Programming</a> 。

要获取一个Linux，阅读下 <a href="http://www.linux.org/" target="_top">Linux Online</a> 这个网站，你可以从那里下载或者找到一个能帮助你安装系统的用户组。

在写这篇HOWTO的最初十年里我说从一个使用者观点来看，所有的发行版本都是一样的，但是在2006-2007年间，最好的选择集中在Ubuntu上。虽然其他的发行版也有自己的优点，Ubuntu是目前也一直是对于新手最好的选择。

你可以从 <a href="http://www.bsd.org/" target="_top">www.bsd.org</a>找到关于BSD的资源。

一个小试牛刀的好办法是从Linux爱好者成为LiveCD，一种完全从CD启动系统而不对硬盘座任何修改的的镜像启动系统。这样会很慢，因为光驱本来就很慢。但这是不做任何修改仅仅看一下的一种方式。

我曾经写过一篇初级读物<a href="http://en.tldp.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html" target="_top">basics of Unix and the Internet</a> 。

我过去常常建议新手单独安装一个Linux或者BSD。现在的安装程序已经足够友好，即使是个新手，你自己也可以完成。尽管如此，我还是建议和本地用户组取得联系，请求帮组，这样无害，而是让安装过程更顺利。
<h4>4. 学习如何使用万维网和HTML</h4>
在黑客文化中创造的很多东西都在默默的发挥着他们的作用，帮助工厂，办公室和大学正常运转，这些对非黑客的生活似乎没有什么影响。网页是一个很大的例外，这个巨大耀眼的黑客工具正在改变整个世界，甚至政客们也这么认为。单就这个理由（当然还有其他理由）你就应该学会如何制作网页。

这不仅仅意味着学习如何使用浏览器（任何人都可以这么做），而是学习如何写HTML，网页标记语言。如果你不知道如何编程，写HTML会培养一些你帮助你学习编程的习惯。因此给自己建立一个主页。试着坚持使用XHTML，相比传统的HTML它是更干净的学习语言（网上有一篇很好的初学者指南：<a title="htmldog" href="http://htmldog.com/">这里</a>）

但是光有一个自己的主页还不足以让你成为一名黑客。网络上有很多网页，大多数都是没有意义的，没有任何内容的，华而不实的垃圾，吸引你但仍然是垃圾的页面。（更多关于这方面的信息参考 <a href="http://catb.org/%7Eesr/html-hell.html" target="_top">The HTML Hell Page</a>）。

要想值得一读，你的页面必修有内容，必须有趣或者对其他黑客来说有用。这也引出了我接下来谈论的主题......
<h4>4. 如果你英语不好，就好好学它</h4>
我自己作为一个说英语的美国人，挺不情愿这样建议，担心这样会被认作一种文化歧视。但是一些说其他语言者强烈希望我这么指出英语是黑客文化和因特网的工作语言。要在黑客社区内活动你需要掌握这门语言。

回到1991年，据我了解许多把英语作为第二语言的黑客也使用英语来技术交流，即使他们说共同的母语。据我了解到的报道英语比其他语言的技术词汇多，因此对于工作来说是更好的工具。也因为同样的原因，以英语写的技术书籍的翻译通常都让人不满意（如果有的话）。

Linus Torvalds，一个芬兰人，用英语来注释他的代码（显然对他来说不是凑巧）。他熟练的英语技能在他募集一个世界范围的Linux开发者社区起到很大的作用。这是一个值得学习的榜样。

对于本地说英语者来说，这并不代表你有作为黑客足够的语言技能。如果你写的东西有歧义或者很多拼写错误，许多黑客（包括我自己）会忽略你。尽管写的粗心并不能代表思考的粗心，我们发现两者有很强的关联性，粗心思考者对我们来说无用。如果你无法写的流畅，就学习。
<h3>黑客文化中的地位</h3>
<ol>
	<li>写开源软件</li>
	<li>帮助测试和调试开源软件</li>
	<li>发布有用的信息</li>
	<li>帮助保持基础设施运行</li>
	<li>为黑客文化本身服务</li>
</ol>
像其他非盈利文化一样，黑客王国因声望而运转。你尝试解决有兴趣的问题，但是他们有多有趣，你的解决办法是够好，是由你的技术同仁或者前辈来评判的。

相应的，当你玩黑客这场游戏时，你通过其他黑客对你技能的评价来获取分数（这也是在其他黑客都称你为黑客之前你不是一个真正的黑客的原因）。这一事实也变得模糊，一方面原因是通常黑客被认为是一种隐士工作，另一个原因是自负和外界评价对个人东西有影响的黑客文化禁忌。

特别的，黑客王国被人类学家成为奉献文化。你要获取地位和声誉，不是靠支配其他人，也不是打扮漂亮，也不是拥有其他人没有的东西，而是把东西奉献出来。具体的，奉献你的时间，你的创造力和你技能的成果。

你可以做一下五件事情来赢得黑客的尊重：
<ol>
	<li>
<h4>写开源软件</h4>
<div>首先（也是最主要最传统的方式）就是写其他黑客认为很有用且很有意思的程序，并且将代码公布给黑客社区使用。</div>
<div>（我们过去常常把这些作品成为自由软件，但是这样称呼困扰了那些不明确自由为何以的人，现在大多数时候我们称之为开源软件）</div>
<div>有些人曾编写了大型且功能强大程序，这些程序能满足大众的需求的人，并且他们将这些程序公之于众以至于现在为每个人所用，他们是黑客文化所尊敬的英雄。</div>
<div>但是这里有个历史上的小插曲，尽管黑客们把他们之中开源软件开发者奉为我们的社区中最强大的核心，20世纪90年代中期，黑客们的主要工作都集中在闭源软件上。在1996年我写这篇HOWTO第一个版本时，这依然是事实。在1997年以后，开源软件进入主流，事情才开始改变。今天“黑客社区”和“开源软件开发者”已经是对同一种文化和人群的描述，但是应该知道事情并不是总是如此。（更多信息参考<a href="http://catb.org/~esr/faqs/hacker-howto.html#history">这里</a>）</div>
<div></div></li>
	<li>
<h4>帮助测试和调试开源软件</h4>
<div>同样包括支持和调试开源软件的人们。在这个不完美的世界里，我们不可避免地在调试阶段花费大量开发时间。这也是为什么从开源软件开发者的思想告诉你的杰出的测试者（他们能清楚的描述问题的现象，集中问题，在临时的版本中能容忍bug存在，并且愿意做一些例行的诊断工作）是很重要的。尽管他们之中有些人能判断在哪个测试阶段是延长的，哪个是令人筋疲力尽的噩梦，哪个只是一个有益的小麻烦。</div>
<div>如果你是一个新人，试着寻找一个你感兴趣的处于开发阶段的程序，做一名测试员。从测试程序，到排错，再到帮助修改他们，这是一个自然的过程。用这种方式你会学到很多，并且还会积累人品（^^）以后别人也会帮助你的。</div>
<div></div></li>
	<li>
<h4>发布有用的信息</h4>
<div>你可以做的另一件好事是搜集过滤有用的和有趣的信息整理成网页或者FAQ，而且让这些信息可以获取到。主流技术的FAQs的维护者们同样得到开源开发者的尊重。</div>
<div></div></li>
	<li>
<h4>帮助保持基础设施运行</h4>
<div>黑客文化（和互联网工程开发等等）都是由志愿者维护的，为保持它正常运转有很多必须但是乏味的工作要做，如管理邮件列表，缓和新闻组，维护大型软件的归档库，开发RFCs文档和其他技术标准。</div>
<div>做这些事情的人也会得到很多尊重，因为人人都知道这些工作会耗掉很多时间但是没有玩弄代码有趣，做这些事情体现了牺牲精神。</div>
<div></div></li>
	<li>
<h4>为黑客文化本身服务</h4>
<div>最后，你可以服务和传播文化文本（比如通过写如何成为黑客的准确的入门文档，呵呵！），这还不是你该去做的直到你呆了一段时间并对以上四件事情非常了解了。</div>
<div>事实上，黑客文化没有领导者，但它确实有英雄和部族长老和历史学家和发言人。当你在战壕里呆的时间够长了，你就会成长为其中一员。注意：黑客并不完全信任部族长老，所以享有这这名誉挺危险的。并不是为这样一个荣誉去努力，你需要自己评估自己的位置去享有，然后保持谦虚和亲切。</div></li>
</ol>
注意：翻译本文仅为锻炼个人翻译能力和理解黑客文化之用，很多言辞由于水平有限翻译不慎恰当，其间参考<a href="http://blog.csdn.net/tianyiyang/article/details/2026312">这篇译文</a>数次，感谢译文作者，请请不要转载本译文免得误人子弟。

英文原文：<a href="http://www.catb.org/esr/faqs/hacker-howto.html">http://www.catb.org/esr/faqs/hacker-howto.html</a>

&#160;]]></description>
			<content:encoded><![CDATA[<h3>为什么是这篇文档？</h3>
<p>作为Jargon File的编辑和其他有关类似文化的文档的作者，我经常收到一些热衷于网络的新手的邮件，他们在邮件中经常问道：“我如何才能成为一个神秘的黑客？”我发现自1996年以来好像没有任何FAQ或者文档来回答这个非常重要的问题，所以我写了这篇文档。很多黑客认为这篇文档描述准确，我也认为确实如此。尽管如此，我并不是说它就是有关这一主题的权威，如果你不喜欢你在这里读到内容那就写下你的观点。</p>
<p>如果你仅仅离线读到是这篇文档一个片段，最新版本可以在这里找到http://catb.org/~esr/faqs/hacker-howto.html</p>
<p>注意：在这篇文档的最后有一个FAQ的列表，在你给我发邮件询问问题之前确保你已经仔细阅读了这部份内容。</p>
<p>这篇文档已经被翻译成下多种语言版本：阿拉伯语、白俄罗斯、中文（简体）、丹麦语、荷兰语、爱沙尼亚、德国、希腊意大利希伯来语、挪威语,葡萄牙语(巴西),罗马尼亚的西班牙语,土耳其语和瑞典语。注意尽管这篇文档不断更新，这些版本可能有不同程度的过期。</p>
<p>妆点这篇文档的那个图标，有五个点在九个方格里，叫做滑翔机。它有简单的样式，这种样式包含数年来令黑客们痴迷的一种叫做Life的数学模拟的特征。我觉得它是黑客的直观象征。简单说来，首先增加一些神秘的色彩，但也开启了一扇复杂逻辑世界的大门，你可以从这里了解更多关于滑翔机象征的内容。</p>
<h3>黑客是什么？</h3>
<p>在Jargon File里包含很多关于黑客的定义，大多数都和熟练的技术和解决问题超越限制的之士有关。如果你真的想知道如何成为一名黑客，这两点很重要。</p>
<p>曾经有一个社区，崇尚共享主义文化，由专家级程序员和网络奇才组成，这个社区的历史可以追溯到几十年前的分时小型机和ARPAnet实验项目。崇尚这种文化的成员正事黑客的起源。黑客们构建了因特网，黑客们造就了Unix系统，黑客们使新闻组得以运行，黑客们构建了互联网。如果你是这一文化的一部份，如果你为这种文化作出过贡献，那么其他成员会知道你，称你为黑客，你就是一个黑客。</p>
<p>黑客的观念不仅仅局限于软件黑客文化。很多人将黑客精神应用到像电子或者音乐领域，你可以在任何科学和艺术的最高领域发现他的身影。软件黑客在其他领域里发现了这种相似的精神也会称他们为黑客，而且一些人认为黑客文化独立于黑客的致力于的媒介。但是这篇文档接下来要讨论的是软件黑客的技能和观点，这些起源于黑客文化的传统。</p>
<p>还有另一个群体自豪的自称为黑客，但实际上不是。这些人（多数事青少年）以入侵计算机系统或者截获电话系统为乐。真正的黑客称他们为骇客也不想和他们有一点关系。真正的黑客认为骇客事懒惰的，不负责任的，不聪明的，是一群不能因为有能力破坏安全而被称之为黑客的群体，就像能发动汽车并不代表就是汽车工程师一样。不幸的是，许多记者，作者被愚弄来用黑客描述骇客，这将无休止的另黑客不悦。</p>
<p>黑客与骇客最大的不同是：黑客创造，骇客破坏。</p>
<p>如果你想成为一名黑客，继续读下去。如果你想成为已经骇客，去读alt.2600新闻组然后在你发现自己没有自己想象的那么聪明之后做好蹲5到10年监狱的准备。这就是所有我想告诉骇客的。</p>
<h3>黑客的态度</h3>
<ol>
<li>这个世界充满了等待去解决的有趣的问题</li>
<li>同一个问题不需要被解决两次</li>
<li>拒绝枯燥乏味的工作</li>
<li>向往自由</li>
<li>态度不是能力的替代品</li>
</ol>
<p>黑客们解决问题创造新事物，他们相信自由和自愿的互帮互助。要想成为一名黑客，你必须自己有这种态度。而要想有这样一种态度，你必须信仰这种态度。</p>
<p>但如果你把培养黑客态度当作一种在这种文化中被接收的方式，你就误解了要点。成为一个信仰这些观点的人对你很重要，因为这样能帮助你学习并且保持积极主动。就像所有创造性艺术一样，成为大师的最有效的方式就是模仿大师们的思想，不仅仅从智力上也要从感情上模仿。</p>
<p>或者就像下面这首禅师所说的：<br />
沿着这样一条路线：<br />
发现大师<br />
追随大师<br />
与大师同行<br />
品透大师<br />
成为大师</p>
<p>所以，如果你想成为一名黑客，重复下面的事情知道你相信它们：</p>
<h4>1. 这个世界充满了等待去解决的有趣的问题</h4>
<p>做一名黑客非常有趣，但这种有趣来源于艰辛的努力。努力激发动力。成功的运动员从他们锻炼身体超越自身的极限中获取动力。同样地，要做一名黑客，你必须能从解决问题的过程中获得快乐，磨练技能，锻炼智力。</p>
<p>如果你觉得这样并非理所当然，要做一名黑客你应该如此。否则，你的黑客动力可能会被性，金钱或者社会虚名所阻碍。</p>
<p>（你必须能在你的学习能力范围内培养一种信念，就是尽管你可能不具备解决一个问题所需要的所有东西，如果你从其中的一部份学起，你将能够学会处理接下来的一小部分，这样下去你就能解决掉问题）</p>
<h4>2. 同一个问题不需要被解决两次</h4>
<p>创造性的大脑是宝贵的，有限的资源。既然有那么多有趣的问题等待被解决，它们不应该被浪费在重复发明轮子之上。</p>
<p>要想做一名黑客，你要知道其他黑客思考的时间是宝贵的。所以当你分享信息，解决问题并且给出解决办法以便其他黑客解决新的问题而不是总是重复处理旧问题时要有一种道德上的使命感。</p>
<p>注意，同一个问题不需要被解决两次并不是说你必须将现有的解决办法奉为信条，或者说对于给定的问题只有一种正确的解决办法。通常情况下，面对一个以前从未碰到的问题，我们能从问题的第一个解决办法中学到很多。相信自己可以做的更好是很好也很必要的，而人工技术，制度上的屏障这些阻止了好的解决办法被重新利用从而促使人们不得不重新发明轮子就不好了。</p>
<p>你不必认为你有义务贡献你的所有创造性的产出，尽管这么做的黑客能赢得其他黑客的尊重。出售自己的成果换取食物，租房或者买计算机也是和黑客价值观一致的。用你的黑客技能养家糊口，甚至发家也是理所当然的，只要你在做这些事情的时候不要忘记你对你的艺术和你的黑客伙伴们的忠诚。</p>
<h4>3. 拒绝枯燥乏味的工作</h4>
<p>黑客（更通俗说，富有创造力的人们）绝不该被重复性的苦差困扰，因为如果正他们就不能做只有他们能做的事情，解决新问题。这种浪费会危害到所有人。因此枯燥和苦差不仅仅事令人不悦，更是一种罪恶。</p>
<p>作为黑客，你应该相信是该尽最大可能的自动化那些枯燥的小事，这不仅为你也为其他所有人（特别是其他的黑客们）。</p>
<p>（关于这一点有个明显的例外。黑客们有时候在他们看来重复和枯燥的事情来进行脑力休息，或者为了获取一种通过其他方法无法获取技能或者特殊的经验。但是这也因人而异，每一个能思考的人都不应该强迫陷入令自己苦恼的境地。）</p>
<h4>4. 向往自由</h4>
<p>黑客们天性反对独裁，任何能对你发号施令的人都可能阻止你去解决令你着迷的问题。而且按照独裁着思路，你会发现一些特别愚昧的理由。所以独裁思维一经发现，必须反抗，以免其压迫你和其他黑客。</p>
<p>（这并不等同于反对所有权威。儿童需要被监护，罪犯需要被关押。黑客需要接受一些权威来在最短段时间内得到他需要的。但这也是有限的，有意识的权衡，个人屈服权威是不应该接受的。）</p>
<p>独裁主义者喜欢审查和保密。他们不相信志愿的合作和信息共享，他们只相信他们控制的合作。因此作为黑客，你需要培养一种对审查，保密以及使用武力或者欺骗方式压迫有能力人的做法怀有一种本能的敌意。并且你要愿意为这种信仰斗争。</p>
<h4>5. 态度不是能力的替代品</h4>
<p>要想成为一名黑客，你必须培养这些态度。但是仅仅复制一种态度你不会成为黑客，也不能让你成为一名运动员冠军或者摇滚明星。成为一名黑客需要智力，实践，奉献精神和汗水。</p>
<p>所以你要学会怀疑，尊重每一种能力。黑客从来不会让装腔做势者浪费他们的时间，但是他们尊重能力，特别是黑客能力，不过任何能力都是有价值的。只有少数人掌握的技能固然是好的，而那些涉及智力，实践和专注的技能当然最好。</p>
<p>如果你尊重能力，你会享受锻炼这种能力的喜悦。辛勤工作和奉献精神会变成很有热情的事情而不仅仅是苦差。这种态度对成为一名黑客至关重要。</p>
<h3>基础黑客技能</h3>
<p>黑客技能固然重要，但是技能更加重要。态度不能取代能力。在你梦想让其他黑客称你黑客之前你需要具备一些基本的技能。</p>
<p>这些技能随着新技术产生的新技能而淘汰了旧的而不断变化。例如，过去包括用机器语言编程，直到最近才包含HTML。但有一点非常明确，接下来提到的技能一直包含在内。</p>
<h4>1. 学习如何编程</h4>
<p>理所当然，这是最基本的黑客技能。如果你一门编程语言也不了解的话，我建议你从Python开始。它设计精良，文档全面，对初学者非常友好。尽管是一门很好的初学者语言，它却不仅仅是一个玩偶，Python非常灵活强大并且适合做大项目。我曾写过一篇<a title="evaluation of python" href="http://www.linuxjournal.com/article.php?sid=3882">Python评价</a>，从Python的<a title="python offical site" href="http://www.python.org">官方网站</a>上能找到许多指导文档。</p>
<p>我过去常常推荐Java作为最早学习的一门编程语言，但是这篇<a title="Where Are the Software Engineers of Tomorrow?" href="http://www.crosstalkonline.org/storage/issue-archives/2008/200801/200801-Dewar.pdf">评论文章</a>改变了我的观点（从这篇文章搜索The Pitfalls of Java as a First Programming Language）。正如他们讽刺到的，一个黑客不能像五金店的管道工一样紧紧按照方法解决问题；你必须要知道各个组件真正做了什么。现在我认为最好先学习C或者Lisp，然后在学Java。</p>
<p>这里还有一个更为普遍的观点，如果一门编程语言为你做的太多，那么它可能是对于生产环境是很好的工具但同时却不适合用来学习。不仅仅编程语言有这样的问题，网络应用开发框架像RubyOnRails，CakePHP，Django一样能让表面上理解更容易，却让你在遇到困难问题，或者寻求跟好的解决办法时难于处理。</p>
<p>当你正式开始编程时，你必须学习C语言，Unix系统的核心语言。C++和C语言非常接近，如果你学会了一个另一个也就不难了。这两种语言都不适合作为你第一学习的编程语言。实际上，你越避免使用C语言你的生产效率越高。</p>
<p>C非常高效，节省你的机器资源。不幸的是，C需要你手工做一些底层的资源（如内存）的管理才能如此高效。这些底层代码非常复杂切bug多多，会占用你大量时间来调试代码。现在机器的性能都足够强大，这或许是一个不太好的折衷。更明智的做法是采用一门对机器来说并不算高效但是对人来说更高效的语言，比如Python。</p>
<p>其他对黑客来说比较重要的语言是Perl和LISP。Perl因其实用性值得一学；它在动态网页和系统管理中广泛应用，因此即使你从来不写Perl程序至少你要能读懂它。许多人像我建议你用Python一样在使用Perl，来在那些并不需要特别高效的场合下避免使用C。你需要看懂他们的代码。</p>
<p>LISP值得一学另有原因，当你最终学会它时你会得到意义深远的启蒙。这种经验将使你在以后成为一个更好的程序员，即使你很少使用LISP这门语言本身。（你可以从编写或者修改Emacs编辑器的编辑模式或者GIMP的Script-Fu插件中很容易的对LISP有个初步的认识）</p>
<p>最好是你能把Python，C/C++，Java，Perl和LISP这五门语言都学会。他们除了是一门黑客语言之外，还代表了编程的不同方法，每种编程语言都以不同的方式让你受益。</p>
<p>但是要注意仅仅靠累加语言你是不能达到黑客技能水平，甚至连一个程序员的水平都到达不了，你需要脱离编程语言从更高的角度思考编程问题。想要成为一名真正的黑客，你要锻炼通过联系文档和你的知识来学习一门新的编程语言的能力，这就意味着你要学习几门完全不同的语言。</p>
<p>我无法在这里就如何编程给予指导，这是一项非常复杂的技能。但是我可以告诉你书和培训课程是做不到的，可能所有的黑客都是自学。你可以从书上学到编程语言的一些特性，但是将知识转化技能的思想只能从实践中获得，阅读代码和写代码最为有效。</p>
<p>Peter Norvig，Google的顶级黑客以及关于人工智能的广泛使用的教材的联合作者，写过一篇很好的文章叫<a title="Teach Yourself Programming in Ten Years" href="http://norvig.com/21-days.html">用十年自学编程</a>他的学习编程的方法很值得关注。</p>
<p>学习编程就像学习写文字一样。最好的学习方法就是读一些大师写的东西，写一些自己的东西，再读一些，再写一些，再读一些，再写一些&#8230;&#8230;重复这个过程直到你的文笔能有一种你自己的力量和优势。</p>
<p>找代码阅读过去是件很困难的事情，因为很少有大型的的程序代码供初出茅庐的黑客阅读和思考。现在情况已经完全转变了，开源软件，编程工具和操作系统（都由黑客缔造）广泛使用。这也引出了我接下来的话题&#8230;&#8230;</p>
<h4>2. 从开源的UNIX系统中选取一个，学习使用和运行它</h4>
<p>我假设你拥有一台个人电脑或者可以接触到一台（稍等一下来理解这句话的意思，黑客文化起源于那个计算机非常昂贵，个人是买不起的时代）。任何新手想要获取黑客技能要经历的一个最重要的是获取一个Linux系统，或者BSD-UNIX家族中的的一个，或者Solaris，把它安装的个人电脑上。</p>
<p>是的，世界上出了Unix还有其他的操作系统，但是他们是以二级制方式发行，你无法阅读到源代码，进而你也无法修改它。用装有windows系统或者其他闭源系统的机器上学习黑客技能就像穿着注塑学习跳舞。</p>
<p>在Mac OS X下学习是可以的，但是只有系统的一部分被开源。你会经常撞墙，而且你要闭源培养一些依赖苹果专利代码的坏习惯，如果你能专注于Unix系统下的一些高级特性，你会学到很多有用的东西。</p>
<p>Unix是伴随因特网诞生的操作系统。但你不需要知道Unix也可以学习如何使用因特网，不学习Unix你却无法成为一名因特网黑客。因此，今天的黑客文化都是以Unix为中心的（这并不是完全正确，一些老时代的黑客们并不认同这一点，但Unix和因特网之间的共生关系已经足够紧密，以致微软也无法郑重的否认）。</p>
<p>因此，启动一个Unix，可以像我一样使用Linux或者还有其他的选择（是的，你可以在一台机器上安装Linux和windows双系统），学习它，使用它，修补它。使用它和因特网交流。阅读代码，修改代码。你会找到比任何windows系统中拥有的更好的编程工具（包括C，Lisp，Python和Perl），当你作为一名大师级的黑客回首时你会发现你获取笔记想想更多的乐趣，汲取更多的知识。</p>
<p>想要了解更多关于Unix的信息，看 <a href="http://catb.org/%7Eesr/faqs/loginataka.html" target="_top">The Loginataka</a> ，你可能还想看一下 <a href="http://catb.org/%7Eesr/writings/taoup/" target="_top">The Art Of Unix Programming</a> 。</p>
<p>要获取一个Linux，阅读下 <a href="http://www.linux.org/" target="_top">Linux Online</a> 这个网站，你可以从那里下载或者找到一个能帮助你安装系统的用户组。</p>
<p>在写这篇HOWTO的最初十年里我说从一个使用者观点来看，所有的发行版本都是一样的，但是在2006-2007年间，最好的选择集中在Ubuntu上。虽然其他的发行版也有自己的优点，Ubuntu是目前也一直是对于新手最好的选择。</p>
<p>你可以从 <a href="http://www.bsd.org/" target="_top">www.bsd.org</a>找到关于BSD的资源。</p>
<p>一个小试牛刀的好办法是从Linux爱好者成为LiveCD，一种完全从CD启动系统而不对硬盘座任何修改的的镜像启动系统。这样会很慢，因为光驱本来就很慢。但这是不做任何修改仅仅看一下的一种方式。</p>
<p>我曾经写过一篇初级读物<a href="http://en.tldp.org/HOWTO/Unix-and-Internet-Fundamentals-HOWTO/index.html" target="_top">basics of Unix and the Internet</a> 。</p>
<p>我过去常常建议新手单独安装一个Linux或者BSD。现在的安装程序已经足够友好，即使是个新手，你自己也可以完成。尽管如此，我还是建议和本地用户组取得联系，请求帮组，这样无害，而是让安装过程更顺利。</p>
<h4>4. 学习如何使用万维网和HTML</h4>
<p>在黑客文化中创造的很多东西都在默默的发挥着他们的作用，帮助工厂，办公室和大学正常运转，这些对非黑客的生活似乎没有什么影响。网页是一个很大的例外，这个巨大耀眼的黑客工具正在改变整个世界，甚至政客们也这么认为。单就这个理由（当然还有其他理由）你就应该学会如何制作网页。</p>
<p>这不仅仅意味着学习如何使用浏览器（任何人都可以这么做），而是学习如何写HTML，网页标记语言。如果你不知道如何编程，写HTML会培养一些你帮助你学习编程的习惯。因此给自己建立一个主页。试着坚持使用XHTML，相比传统的HTML它是更干净的学习语言（网上有一篇很好的初学者指南：<a title="htmldog" href="http://htmldog.com/">这里</a>）</p>
<p>但是光有一个自己的主页还不足以让你成为一名黑客。网络上有很多网页，大多数都是没有意义的，没有任何内容的，华而不实的垃圾，吸引你但仍然是垃圾的页面。（更多关于这方面的信息参考 <a href="http://catb.org/%7Eesr/html-hell.html" target="_top">The HTML Hell Page</a>）。</p>
<p>要想值得一读，你的页面必修有内容，必须有趣或者对其他黑客来说有用。这也引出了我接下来谈论的主题&#8230;&#8230;</p>
<h4>4. 如果你英语不好，就好好学它</h4>
<p>我自己作为一个说英语的美国人，挺不情愿这样建议，担心这样会被认作一种文化歧视。但是一些说其他语言者强烈希望我这么指出英语是黑客文化和因特网的工作语言。要在黑客社区内活动你需要掌握这门语言。</p>
<p>回到1991年，据我了解许多把英语作为第二语言的黑客也使用英语来技术交流，即使他们说共同的母语。据我了解到的报道英语比其他语言的技术词汇多，因此对于工作来说是更好的工具。也因为同样的原因，以英语写的技术书籍的翻译通常都让人不满意（如果有的话）。</p>
<p>Linus Torvalds，一个芬兰人，用英语来注释他的代码（显然对他来说不是凑巧）。他熟练的英语技能在他募集一个世界范围的Linux开发者社区起到很大的作用。这是一个值得学习的榜样。</p>
<p>对于本地说英语者来说，这并不代表你有作为黑客足够的语言技能。如果你写的东西有歧义或者很多拼写错误，许多黑客（包括我自己）会忽略你。尽管写的粗心并不能代表思考的粗心，我们发现两者有很强的关联性，粗心思考者对我们来说无用。如果你无法写的流畅，就学习。</p>
<h3>黑客文化中的地位</h3>
<ol>
<li>写开源软件</li>
<li>帮助测试和调试开源软件</li>
<li>发布有用的信息</li>
<li>帮助保持基础设施运行</li>
<li>为黑客文化本身服务</li>
</ol>
<p>像其他非盈利文化一样，黑客王国因声望而运转。你尝试解决有兴趣的问题，但是他们有多有趣，你的解决办法是够好，是由你的技术同仁或者前辈来评判的。</p>
<p>相应的，当你玩黑客这场游戏时，你通过其他黑客对你技能的评价来获取分数（这也是在其他黑客都称你为黑客之前你不是一个真正的黑客的原因）。这一事实也变得模糊，一方面原因是通常黑客被认为是一种隐士工作，另一个原因是自负和外界评价对个人东西有影响的黑客文化禁忌。</p>
<p>特别的，黑客王国被人类学家成为奉献文化。你要获取地位和声誉，不是靠支配其他人，也不是打扮漂亮，也不是拥有其他人没有的东西，而是把东西奉献出来。具体的，奉献你的时间，你的创造力和你技能的成果。</p>
<p>你可以做一下五件事情来赢得黑客的尊重：</p>
<ol>
<li>
<h4>写开源软件</h4>
<div>首先（也是最主要最传统的方式）就是写其他黑客认为很有用且很有意思的程序，并且将代码公布给黑客社区使用。</div>
<div>（我们过去常常把这些作品成为自由软件，但是这样称呼困扰了那些不明确自由为何以的人，现在大多数时候我们称之为开源软件）</div>
<div>有些人曾编写了大型且功能强大程序，这些程序能满足大众的需求的人，并且他们将这些程序公之于众以至于现在为每个人所用，他们是黑客文化所尊敬的英雄。</div>
<div>但是这里有个历史上的小插曲，尽管黑客们把他们之中开源软件开发者奉为我们的社区中最强大的核心，20世纪90年代中期，黑客们的主要工作都集中在闭源软件上。在1996年我写这篇HOWTO第一个版本时，这依然是事实。在1997年以后，开源软件进入主流，事情才开始改变。今天“黑客社区”和“开源软件开发者”已经是对同一种文化和人群的描述，但是应该知道事情并不是总是如此。（更多信息参考<a href="http://catb.org/~esr/faqs/hacker-howto.html#history">这里</a>）</div>
<div></div>
</li>
<li>
<h4>帮助测试和调试开源软件</h4>
<div>同样包括支持和调试开源软件的人们。在这个不完美的世界里，我们不可避免地在调试阶段花费大量开发时间。这也是为什么从开源软件开发者的思想告诉你的杰出的测试者（他们能清楚的描述问题的现象，集中问题，在临时的版本中能容忍bug存在，并且愿意做一些例行的诊断工作）是很重要的。尽管他们之中有些人能判断在哪个测试阶段是延长的，哪个是令人筋疲力尽的噩梦，哪个只是一个有益的小麻烦。</div>
<div>如果你是一个新人，试着寻找一个你感兴趣的处于开发阶段的程序，做一名测试员。从测试程序，到排错，再到帮助修改他们，这是一个自然的过程。用这种方式你会学到很多，并且还会积累人品（^^）以后别人也会帮助你的。</div>
<div></div>
</li>
<li>
<h4>发布有用的信息</h4>
<div>你可以做的另一件好事是搜集过滤有用的和有趣的信息整理成网页或者FAQ，而且让这些信息可以获取到。主流技术的FAQs的维护者们同样得到开源开发者的尊重。</div>
<div></div>
</li>
<li>
<h4>帮助保持基础设施运行</h4>
<div>黑客文化（和互联网工程开发等等）都是由志愿者维护的，为保持它正常运转有很多必须但是乏味的工作要做，如管理邮件列表，缓和新闻组，维护大型软件的归档库，开发RFCs文档和其他技术标准。</div>
<div>做这些事情的人也会得到很多尊重，因为人人都知道这些工作会耗掉很多时间但是没有玩弄代码有趣，做这些事情体现了牺牲精神。</div>
<div></div>
</li>
<li>
<h4>为黑客文化本身服务</h4>
<div>最后，你可以服务和传播文化文本（比如通过写如何成为黑客的准确的入门文档，呵呵！），这还不是你该去做的直到你呆了一段时间并对以上四件事情非常了解了。</div>
<div>事实上，黑客文化没有领导者，但它确实有英雄和部族长老和历史学家和发言人。当你在战壕里呆的时间够长了，你就会成长为其中一员。注意：黑客并不完全信任部族长老，所以享有这这名誉挺危险的。并不是为这样一个荣誉去努力，你需要自己评估自己的位置去享有，然后保持谦虚和亲切。</div>
</li>
</ol>
<p>注意：翻译本文仅为锻炼个人翻译能力和理解黑客文化之用，很多言辞由于水平有限翻译不慎恰当，其间参考<a href="http://blog.csdn.net/tianyiyang/article/details/2026312">这篇译文</a>数次，感谢译文作者，请请不要转载本译文免得误人子弟。</p>
<p>英文原文：<a href="http://www.catb.org/esr/faqs/hacker-howto.html">http://www.catb.org/esr/faqs/hacker-howto.html</a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/%e6%80%8e%e6%a0%b7%e6%88%90%e4%b8%ba%e4%b8%80%e5%90%8d%e9%bb%91%e5%ae%a2.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ssh技巧汇总</title>
		<link>http://www.xdays.info/ssh%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html</link>
		<comments>http://www.xdays.info/ssh%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html#comments</comments>
		<pubDate>Fri, 12 Aug 2011 04:02:06 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[mylinux]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=641</guid>
		<description><![CDATA[<h3>自动登录</h3>
<h4>简介</h4>
最近苦于linux下没有像SecureCRT这样便捷的虚拟终端软件，打算利用下这个ssh自动登录功能。流程说起来也简单，就是先把公钥和密钥分别保存到服务器和客户端，客户端登录只需要指定对应服务器的密钥就可以自动登录到服务器。
<h4>配置</h4>
这里只列举自动登录到多台服务器的配置过程，对于单台同样适用。
<h5>生成密钥</h5>
<pre>$ ssh-keygen  -t rsa
nter file in which to save the key \
(/home/lifeix/.ssh/id_rsa): /home/lifeix/.ssh/id_rsa_192.168.60.66
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lifeix/.ssh/id_rsa_192.168.60.66.
Your public key has been saved in /home/lifeix/.ssh/id_rsa_192.168.60.66.pub</pre>
<h5>复制公钥到服务器</h5>
把.pub后缀的公钥文件scp到服务器，然后执行：
<pre>cat id_rsa_192.168.60.66.pub &#62;&#62; ~/.ssh/authorized_keys</pre>
<h4>建立alias别名</h4>
在.bashrc添加一行：
<pre>alias c1='ssh -i /home/lifeix/.ssh/id_rsa_192.168.60.66 root@192.168.60.66'</pre>
<h4>问题与解决办法</h4>
问题：按照上述设置，还是一直提示输入密码 解决办法：追踪log，在/var/log/secure下发现一条记录
<pre>Dec  9 15:12:17 n1 sshd[8908]: Authentication refused: \
bad ownership or modes for directory /home/skstsuperadmin/.ssh</pre>
所以chmod 755 .ssh就ok了。]]></description>
			<content:encoded><![CDATA[<h3>自动登录</h3>
<h4>简介</h4>
<p>最近苦于linux下没有像SecureCRT这样便捷的虚拟终端软件，打算利用下这个ssh自动登录功能。流程说起来也简单，就是先把公钥和密钥分别保存到服务器和客户端，客户端登录只需要指定对应服务器的密钥就可以自动登录到服务器。</p>
<h4>配置</h4>
<p>这里只列举自动登录到多台服务器的配置过程，对于单台同样适用。</p>
<h5>生成密钥</h5>
<pre>$ ssh-keygen  -t rsa
nter file in which to save the key \
(/home/lifeix/.ssh/id_rsa): /home/lifeix/.ssh/id_rsa_192.168.60.66
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/lifeix/.ssh/id_rsa_192.168.60.66.
Your public key has been saved in /home/lifeix/.ssh/id_rsa_192.168.60.66.pub</pre>
<h5>复制公钥到服务器</h5>
<p>把.pub后缀的公钥文件scp到服务器，然后执行：</p>
<pre>cat id_rsa_192.168.60.66.pub &gt;&gt; ~/.ssh/authorized_keys</pre>
<h4>建立alias别名</h4>
<p>在.bashrc添加一行：</p>
<pre>alias c1='ssh -i /home/lifeix/.ssh/id_rsa_192.168.60.66 root@192.168.60.66'</pre>
<h4>问题与解决办法</h4>
<p>问题：按照上述设置，还是一直提示输入密码 解决办法：追踪log，在/var/log/secure下发现一条记录</p>
<pre>Dec  9 15:12:17 n1 sshd[8908]: Authentication refused: \
bad ownership or modes for directory /home/skstsuperadmin/.ssh</pre>
<p>所以chmod 755 .ssh就ok了。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/ssh%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>a byte of python note</title>
		<link>http://www.xdays.info/a-byte-of-python-note.html</link>
		<comments>http://www.xdays.info/a-byte-of-python-note.html#comments</comments>
		<pubDate>Fri, 05 Aug 2011 04:03:24 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=633</guid>
		<description><![CDATA[<h3>特点：</h3>
简单易学；自由开源；高级解释型语言；可移植性；面向对象；可扩展；可嵌入；广泛的库支持。

简单易学却又无比强大，似乎不太符合逻辑。但不管怎么着，就像只有与一个人打交道才能了解一个人一样，既然选择了python，那就在学和用中去体会这门语言的特点吧。
<h3>基础：</h3>
1）字面常量，其值不可改变，就代表它自己。
2）数，有四种类型：整数，长整数，浮点数和复数。
3）字符串
3-1）引号：单双引号意义一样；三引号可以指定多行字符串，而且可以穿插单双引号。
3-2）转义字符：在一些字符前加back slash可以构造特殊含义的字符。
3-3）纯字符串，如果在字符串放在引号中前加r或R则是纯字符串，不转义。
3-4）不可修改，字符串不可修改。
3-5）字符串连接，自动连接两个相邻的字符串。
4）变量
4-1）定义，内存中的一个片段，给它来个名字，就是变量
4-2）命名规则，有字母，数字和下划线组成，不能以数字开头，区分大小写
5）强制缩进，python要求强制缩进
<h3>操作符和表达式</h3>
1）操作符
1-1）操作符及用法，http://www.ibiblio.org/swaroopch/byteofpython/read/operators.html#id3055069
1-2）操作符优先级，http://www.ibiblio.org/swaroopch/byteofpython/read/operator-precedence.html#id3056064
1-3）表达式由操作数和操作符组成
<h3>流控制</h3>
1）if语句，if expr: ... elif expr: ... else: ...
2）while语句，while expr: ... else: ...
3）for语句，for expr: ... else: ...
4）break语句，用于循环中来中断循环，执行下面的语句。
5）continue语句，跳过当前的这一次循环，继续下次循环。
<h3>函数</h3>
1）含义，就是一小段预定义的程序，可以在其他地方调用它，代码重用的方式之一。
2）函数参数，传递给函数的变量，函数内部可以处理这些变量。
3）局部变量，在函数内部定义的变量只在函数内生效，函数执行完，变量对应的内存释放，即使函数内外的变量名一样。
4）默认参数值，在定义形参的时候给它指定个值，这个值就是默认值。
5）关键字参数，直接通过关键值来给参数指定值，其优势在于可以不管参数顺序直接通过关键字来传递参数，这实际上是一种字典数据结构。
6）函数返回值由return来指定，pass表示没有语句执行。
7）DocStrings，是在函数中加入文档说明，便于以后理解。
<h3>模块</h3>
1）含义，代码重用的另一种方式，重用其他一系列的函数或变量，注意其他程序文件扩展名必须是py。
2）为了执行的高效，通常将py文件编译为字节码文件，扩展名是pyc。
3）尽量避免使用from ... import ...
4）__name__变量用于判断模块是自己运行还是被其他程序调用执行。
5）其实模块就是一个程序，只是它只有定义部分没有执行部分。
6）dir方法可以列出当前模块中定义的所有标识符，包括变量和函数
<h3>数据结构</h3>
1）含义，组织数据的方式。
2）列表（list）用于有序的存放一组项目；格式如下[,]；用list[n]来检索list中的值。
3）元组（tuple）和列表的区别是元组不可修改。
4）通过元组来传递变量，print语句要输出多个变量时，通常先把他们放到元组中再传递给print。
5）字典（dictionary）就像一个地址本，用关键值来获取对应的值。
6）序列（sequence），包括列表，元组和字符串;通过索引操作获取序列中的项目；通过切片（slice）操作符来获取序列的部分项目。
7）参考（reference）类似链接，变量仅是对象的连接，修改了对象所有链接到该对象的变量都会改变，所以直接赋值有时候会有问题，解决方法是用切片操作符来复制对象。
<h3>面向对象编程</h3>
1）术语
1-1）类和对象，类创建了一种新的类型，对象是类的一个实例。
1-2）区域，在一个类或实例中的变量叫区域，又分两种类变量和实例变量。
1-3）方法，在一个类中的函数叫方法。
1-4）属性，区域和方法的统称。
2）self，类的方法与普通函数的区别是类的方法第一个参数是self，这个特别的参数是指对象本身。
3）__init__方法和__del__方法，两个特殊的方法，一个是在创建对象时执行，一个是对象释放前执行。
4）继承，代码重用的另一种方式；就是父类和子类的关系，修改父类的属性子类也会跟随改变，但修改子类的属性不会影响到父类和其他子类。
5）多态，一个子类在任何需要父类的场合都可以被替换成父类，也就是子类的对象可以被当作父类的对象，这种现象叫多态。
<h3>Input和Output</h3>
<h3>异常</h3>
1）异常发生在程序出错的情况
2）用try ... except语句来处理异常
3）用raise引发异常，但要注意要指明异常或错误的类名称和对象，可以引发的错误和异常是Error和Exception类直接或间接导出的类
4）用try ... finally来处理发生异常后要执行的操作
<h3>标准库</h3>
<h3>Principle</h3>
<ul>
	<li>writing a single logical line in a single physical line only</li>
</ul>]]></description>
			<content:encoded><![CDATA[<h3>特点：</h3>
<p>简单易学；自由开源；高级解释型语言；可移植性；面向对象；可扩展；可嵌入；广泛的库支持。</p>
<p>简单易学却又无比强大，似乎不太符合逻辑。但不管怎么着，就像只有与一个人打交道才能了解一个人一样，既然选择了python，那就在学和用中去体会这门语言的特点吧。</p>
<h3>基础：</h3>
<p>1）字面常量，其值不可改变，就代表它自己。<br />
2）数，有四种类型：整数，长整数，浮点数和复数。<br />
3）字符串<br />
3-1）引号：单双引号意义一样；三引号可以指定多行字符串，而且可以穿插单双引号。<br />
3-2）转义字符：在一些字符前加back slash可以构造特殊含义的字符。<br />
3-3）纯字符串，如果在字符串放在引号中前加r或R则是纯字符串，不转义。<br />
3-4）不可修改，字符串不可修改。<br />
3-5）字符串连接，自动连接两个相邻的字符串。<br />
4）变量<br />
4-1）定义，内存中的一个片段，给它来个名字，就是变量<br />
4-2）命名规则，有字母，数字和下划线组成，不能以数字开头，区分大小写<br />
5）强制缩进，python要求强制缩进</p>
<h3>操作符和表达式</h3>
<p>1）操作符<br />
1-1）操作符及用法，http://www.ibiblio.org/swaroopch/byteofpython/read/operators.html#id3055069<br />
1-2）操作符优先级，http://www.ibiblio.org/swaroopch/byteofpython/read/operator-precedence.html#id3056064<br />
1-3）表达式由操作数和操作符组成</p>
<h3>流控制</h3>
<p>1）if语句，if expr: &#8230; elif expr: &#8230; else: &#8230;<br />
2）while语句，while expr: &#8230; else: &#8230;<br />
3）for语句，for expr: &#8230; else: &#8230;<br />
4）break语句，用于循环中来中断循环，执行下面的语句。<br />
5）continue语句，跳过当前的这一次循环，继续下次循环。</p>
<h3>函数</h3>
<p>1）含义，就是一小段预定义的程序，可以在其他地方调用它，代码重用的方式之一。<br />
2）函数参数，传递给函数的变量，函数内部可以处理这些变量。<br />
3）局部变量，在函数内部定义的变量只在函数内生效，函数执行完，变量对应的内存释放，即使函数内外的变量名一样。<br />
4）默认参数值，在定义形参的时候给它指定个值，这个值就是默认值。<br />
5）关键字参数，直接通过关键值来给参数指定值，其优势在于可以不管参数顺序直接通过关键字来传递参数，这实际上是一种字典数据结构。<br />
6）函数返回值由return来指定，pass表示没有语句执行。<br />
7）DocStrings，是在函数中加入文档说明，便于以后理解。</p>
<h3>模块</h3>
<p>1）含义，代码重用的另一种方式，重用其他一系列的函数或变量，注意其他程序文件扩展名必须是py。<br />
2）为了执行的高效，通常将py文件编译为字节码文件，扩展名是pyc。<br />
3）尽量避免使用from &#8230; import &#8230;<br />
4）__name__变量用于判断模块是自己运行还是被其他程序调用执行。<br />
5）其实模块就是一个程序，只是它只有定义部分没有执行部分。<br />
6）dir方法可以列出当前模块中定义的所有标识符，包括变量和函数</p>
<h3>数据结构</h3>
<p>1）含义，组织数据的方式。<br />
2）列表（list）用于有序的存放一组项目；格式如下[,]；用list[n]来检索list中的值。<br />
3）元组（tuple）和列表的区别是元组不可修改。<br />
4）通过元组来传递变量，print语句要输出多个变量时，通常先把他们放到元组中再传递给print。<br />
5）字典（dictionary）就像一个地址本，用关键值来获取对应的值。<br />
6）序列（sequence），包括列表，元组和字符串;通过索引操作获取序列中的项目；通过切片（slice）操作符来获取序列的部分项目。<br />
7）参考（reference）类似链接，变量仅是对象的连接，修改了对象所有链接到该对象的变量都会改变，所以直接赋值有时候会有问题，解决方法是用切片操作符来复制对象。</p>
<h3>面向对象编程</h3>
<p>1）术语<br />
1-1）类和对象，类创建了一种新的类型，对象是类的一个实例。<br />
1-2）区域，在一个类或实例中的变量叫区域，又分两种类变量和实例变量。<br />
1-3）方法，在一个类中的函数叫方法。<br />
1-4）属性，区域和方法的统称。<br />
2）self，类的方法与普通函数的区别是类的方法第一个参数是self，这个特别的参数是指对象本身。<br />
3）__init__方法和__del__方法，两个特殊的方法，一个是在创建对象时执行，一个是对象释放前执行。<br />
4）继承，代码重用的另一种方式；就是父类和子类的关系，修改父类的属性子类也会跟随改变，但修改子类的属性不会影响到父类和其他子类。<br />
5）多态，一个子类在任何需要父类的场合都可以被替换成父类，也就是子类的对象可以被当作父类的对象，这种现象叫多态。</p>
<h3>Input和Output</h3>
<h3>异常</h3>
<p>1）异常发生在程序出错的情况<br />
2）用try &#8230; except语句来处理异常<br />
3）用raise引发异常，但要注意要指明异常或错误的类名称和对象，可以引发的错误和异常是Error和Exception类直接或间接导出的类<br />
4）用try &#8230; finally来处理发生异常后要执行的操作</p>
<h3>标准库</h3>
<h3>Principle</h3>
<ul>
<li>writing a single logical line in a single physical line only</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/a-byte-of-python-note.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Centos5搭建Exmail邮件系统</title>
		<link>http://www.xdays.info/centos5%e6%90%ad%e5%bb%baexmail%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f.html</link>
		<comments>http://www.xdays.info/centos5%e6%90%ad%e5%bb%baexmail%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f.html#comments</comments>
		<pubDate>Tue, 02 Aug 2011 11:48:29 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=629</guid>
		<description><![CDATA[<h3>邮件系统运行原理</h3>
<h4><a href="http://www.xdays.info/wp-content/uploads/2011/08/mail-architecture.gif"><img class="aligncenter size-full wp-image-628" title="mail-architecture" src="http://www.xdays.info/wp-content/uploads/2011/08/mail-architecture.gif" alt="mail-architecture" width="496" height="403" /></a></h4>
<h4>MUA，MTA和MDA</h4>
MUA叫邮件用户代理，是客户端软件负责与用户交互，接受用户指令；MTA是邮件传输代理，负责判断邮件取向，如果目的地是自己就直接交给MDA处理，如果是其他MTA则用SMTP转发邮件；MDA是邮件投递代理，负责将目的地是本机的邮件投放到相应用户的邮箱中，将不是本机的邮件通过MTA发送给其他的主机，在这个过程中可以执行邮件过滤和自动回复等操作。
<h4>传送流程</h4>
<ol>
	<li>用户写明邮件发件人A和收件人B，标题以及正文内容点发送，邮件便发送到A自己的MTA上，进入MTA的队列中</li>
	<li>如果邮件收件人B属于用户自己的MTA则直接通过MDA投放到收件人B相应的邮箱里去</li>
	<li>如果是收件人B属于其他的MTA，则发件人A的MTA开始转发（relay）流程，通过SMTP发送给下一台MTA，当然这个过程需要经过下一台MTA的许可（通过IP地址限制）或者认证（用户名密码）</li>
	<li>最后收件人的MTA收到邮件后，通过MDA放到收件人的邮箱里，等待收件人查看和下载</li>
</ol>
<h3>Extmail 简介</h3>
Extmail是一套基于开源软件的邮件系统解决方案。其主要特点有支持STMP和POP统一用数据库认证及ESTMP，支持1G大邮件，web界面，病毒过滤和内容过滤，图形化日志分析，spam过滤，别名和多域等特点，目前应用广泛。
<h3>Extmail 系统结构</h3>
<table border="1px">
<tbody>
<tr>
<td>功能模块</td>
<td>功能模块2</td>
<td>功能模块2</td>
</tr>
<tr>
<td>操作系统（OS）</td>
<td>CentOS 5.3</td>
<td>CentOS和RHEL是一样的，而且升级免费</td>
</tr>
<tr>
<td>Web 服务器</td>
<td>Apache 2.2.x</td>
<td>CentOS 自带</td>
</tr>
<tr>
<td>数据库/目录服务</td>
<td>MySQL 5.0.X</td>
<td>CentO 自带</td>
</tr>
<tr>
<td>邮件传输代理（MTA）</td>
<td>postfix-2.6.2</td>
<td>使用最新版本2.6.2</td>
</tr>
<tr>
<td>邮件投递代理（MDA）</td>
<td>maildrop 2.0.x</td>
<td>支持过滤和强大功能</td>
</tr>
<tr>
<td>Web帐户管理后台</td>
<td>ExtMan 1.0</td>
<td>支持无限域名、无限用户</td>
</tr>
<tr>
<td>WebMail 系统</td>
<td>ExtMail 1.1.0</td>
<td>支持多语言、全部模板化，功能基本齐全</td>
</tr>
<tr>
<td>日志分析及显示</td>
<td>mailgraph_ext</td>
<td>ExtMan中已经包含了</td>
</tr>
<tr>
<td>其他数据认证库</td>
<td>Courier Authlb 0.62</td>
<td>负责courier-imap,maildrop的认证</td>
</tr>
<tr>
<td>SMTP认证库</td>
<td>Cyrus SASL 2.1.x</td>
<td>标准的SASL实现库，可以支持Courier authlib</td>
</tr>
<tr>
<td>内容过滤器</td>
<td>Amavisd-new 2.6.4</td>
<td>Content-Filter软件，支持与Camav/SA的挂接</td>
</tr>
<tr>
<td>内容级别的反垃圾邮件工具</td>
<td>SpamAssassin-3.2.5</td>
<td>著名的SA，可以支持大量规则</td>
</tr>
<tr>
<td>防病毒软件（Anti-Virus）</td>
<td>ClamAV 0.95.2</td>
<td>最热门的开源杀毒软件</td>
</tr>
<tr>
<td>SMTP阶段反垃圾邮件工具</td>
<td>Spam Locker 0.99</td>
<td>基于SMTP行为识别的Antispam软件，大量可选插件</td>
</tr>
<tr>
<td>高效的反垃圾邮件工具</td>
<td>Dspam-3.8</td>
<td>高精确度的、智能的过滤功能</td>
</tr>
</tbody>
</table>
注意：ExtMail很好的实现了统一认证，SMTP认证和POP认证统一通过Courier-Authlib提供的authdaemon认证，只是STMP需要透过cyrus-sasl连接到authdaemon来认证。
<h3>Extmail安装配置</h3>
<h4>EMOS安装盘</h4>
EMOS是继承了Extmail的centos系统安装盘，安装后有命令行的图形界面的配置向导，默认点回车就可以，但是不利于理解Extmail的运行机制。

参考链接：http://linzhibin824.blog.163.com/blog/static/7355771020103515222334/
<h4>手工yum方式安装</h4>
官方给的wiki里有详细的配置方法，唯一需要注意的细心配置，可能落下一条命令整个系统就无法跑起来，所以要细心细心在细心！！

官方文档：<a title="ExtMail Solution for Linux (CentOS-5) " href="http://wiki.extmail.org/extmail_solution_for_linux_centos-5">http://wiki.extmail.org/extmail_solution_for_linux_centos-5</a>]]></description>
			<content:encoded><![CDATA[<h3>邮件系统运行原理</h3>
<h4><a href="http://www.xdays.info/wp-content/uploads/2011/08/mail-architecture.gif"><img class="aligncenter size-full wp-image-628" title="mail-architecture" src="http://www.xdays.info/wp-content/uploads/2011/08/mail-architecture.gif" alt="mail-architecture" width="496" height="403" /></a></h4>
<h4>MUA，MTA和MDA</h4>
<p>MUA叫邮件用户代理，是客户端软件负责与用户交互，接受用户指令；MTA是邮件传输代理，负责判断邮件取向，如果目的地是自己就直接交给MDA处理，如果是其他MTA则用SMTP转发邮件；MDA是邮件投递代理，负责将目的地是本机的邮件投放到相应用户的邮箱中，将不是本机的邮件通过MTA发送给其他的主机，在这个过程中可以执行邮件过滤和自动回复等操作。</p>
<h4>传送流程</h4>
<ol>
<li>用户写明邮件发件人A和收件人B，标题以及正文内容点发送，邮件便发送到A自己的MTA上，进入MTA的队列中</li>
<li>如果邮件收件人B属于用户自己的MTA则直接通过MDA投放到收件人B相应的邮箱里去</li>
<li>如果是收件人B属于其他的MTA，则发件人A的MTA开始转发（relay）流程，通过SMTP发送给下一台MTA，当然这个过程需要经过下一台MTA的许可（通过IP地址限制）或者认证（用户名密码）</li>
<li>最后收件人的MTA收到邮件后，通过MDA放到收件人的邮箱里，等待收件人查看和下载</li>
</ol>
<h3>Extmail 简介</h3>
<p>Extmail是一套基于开源软件的邮件系统解决方案。其主要特点有支持STMP和POP统一用数据库认证及ESTMP，支持1G大邮件，web界面，病毒过滤和内容过滤，图形化日志分析，spam过滤，别名和多域等特点，目前应用广泛。</p>
<h3>Extmail 系统结构</h3>
<table border="1px">
<tbody>
<tr>
<td>功能模块</td>
<td>功能模块2</td>
<td>功能模块2</td>
</tr>
<tr>
<td>操作系统（OS）</td>
<td>CentOS 5.3</td>
<td>CentOS和RHEL是一样的，而且升级免费</td>
</tr>
<tr>
<td>Web 服务器</td>
<td>Apache 2.2.x</td>
<td>CentOS 自带</td>
</tr>
<tr>
<td>数据库/目录服务</td>
<td>MySQL 5.0.X</td>
<td>CentO 自带</td>
</tr>
<tr>
<td>邮件传输代理（MTA）</td>
<td>postfix-2.6.2</td>
<td>使用最新版本2.6.2</td>
</tr>
<tr>
<td>邮件投递代理（MDA）</td>
<td>maildrop 2.0.x</td>
<td>支持过滤和强大功能</td>
</tr>
<tr>
<td>Web帐户管理后台</td>
<td>ExtMan 1.0</td>
<td>支持无限域名、无限用户</td>
</tr>
<tr>
<td>WebMail 系统</td>
<td>ExtMail 1.1.0</td>
<td>支持多语言、全部模板化，功能基本齐全</td>
</tr>
<tr>
<td>日志分析及显示</td>
<td>mailgraph_ext</td>
<td>ExtMan中已经包含了</td>
</tr>
<tr>
<td>其他数据认证库</td>
<td>Courier Authlb 0.62</td>
<td>负责courier-imap,maildrop的认证</td>
</tr>
<tr>
<td>SMTP认证库</td>
<td>Cyrus SASL 2.1.x</td>
<td>标准的SASL实现库，可以支持Courier authlib</td>
</tr>
<tr>
<td>内容过滤器</td>
<td>Amavisd-new 2.6.4</td>
<td>Content-Filter软件，支持与Camav/SA的挂接</td>
</tr>
<tr>
<td>内容级别的反垃圾邮件工具</td>
<td>SpamAssassin-3.2.5</td>
<td>著名的SA，可以支持大量规则</td>
</tr>
<tr>
<td>防病毒软件（Anti-Virus）</td>
<td>ClamAV 0.95.2</td>
<td>最热门的开源杀毒软件</td>
</tr>
<tr>
<td>SMTP阶段反垃圾邮件工具</td>
<td>Spam Locker 0.99</td>
<td>基于SMTP行为识别的Antispam软件，大量可选插件</td>
</tr>
<tr>
<td>高效的反垃圾邮件工具</td>
<td>Dspam-3.8</td>
<td>高精确度的、智能的过滤功能</td>
</tr>
</tbody>
</table>
<p>注意：ExtMail很好的实现了统一认证，SMTP认证和POP认证统一通过Courier-Authlib提供的authdaemon认证，只是STMP需要透过cyrus-sasl连接到authdaemon来认证。</p>
<h3>Extmail安装配置</h3>
<h4>EMOS安装盘</h4>
<p>EMOS是继承了Extmail的centos系统安装盘，安装后有命令行的图形界面的配置向导，默认点回车就可以，但是不利于理解Extmail的运行机制。</p>
<p>参考链接：http://linzhibin824.blog.163.com/blog/static/7355771020103515222334/</p>
<h4>手工yum方式安装</h4>
<p>官方给的wiki里有详细的配置方法，唯一需要注意的细心配置，可能落下一条命令整个系统就无法跑起来，所以要细心细心在细心！！</p>
<p>官方文档：<a title="ExtMail Solution for Linux (CentOS-5) " href="http://wiki.extmail.org/extmail_solution_for_linux_centos-5">http://wiki.extmail.org/extmail_solution_for_linux_centos-5</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/centos5%e6%90%ad%e5%bb%baexmail%e9%82%ae%e4%bb%b6%e7%b3%bb%e7%bb%9f.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>vim技巧汇总</title>
		<link>http://www.xdays.info/vim%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html</link>
		<comments>http://www.xdays.info/vim%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html#comments</comments>
		<pubDate>Thu, 28 Jul 2011 02:37:46 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[softback]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[vim]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=625</guid>
		<description><![CDATA[取消备份功能或备份到特定目录

windows下编辑软件个目录下的_vimrc文件，在最后添加set nobackup可取消自动备份，添加set backupdir=$VIM\backup即可自动备份到特定目录；Linux下编辑家目录下的.vim/.vimrc添加对应选项即可。]]></description>
			<content:encoded><![CDATA[<p>取消备份功能或备份到特定目录</p>
<p>windows下编辑软件个目录下的_vimrc文件，在最后添加set nobackup可取消自动备份，添加set backupdir=$VIM\backup即可自动备份到特定目录；Linux下编辑家目录下的.vim/.vimrc添加对应选项即可。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/vim%e6%8a%80%e5%b7%a7%e6%b1%87%e6%80%bb.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Acronis Disk Director</title>
		<link>http://www.xdays.info/acronis-disk-director.html</link>
		<comments>http://www.xdays.info/acronis-disk-director.html#comments</comments>
		<pubDate>Mon, 18 Jul 2011 06:12:26 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[softback]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=622</guid>
		<description><![CDATA[<h3>简介</h3>
Acronis Disk Director 是一款硬盘分区管理套件，包含了分区管理，数据恢复和引导程序三个组件。其最大的优势在于可以不丢失数据的前提下对分区实行调整，包括分区大小的伸缩，位置的移动等。
<h3>特点</h3>
<ul>
	<li>Resize, split and merge volumes</li>
	<li>Create, convert, copy and move volumes</li>
	<li>Install multiple operating systems on one PC.</li>
	<li>Boot from CD/DVD, USB stick or USB drive</li>
	<li>New! Add/break mirrored volumes *</li>
	<li>Use with Acronis® True Image Home 2011</li>
</ul>
<h3>相关链接</h3>
官方主页：<a href="http://www.acronis.com/homecomputing/products/diskdirector/#overview">http://www.acronis.com/homecomputing/products/diskdirector/#overview</a>

下载地址：<a href="http://down.vista123.com/AcronisDiskDirector10.rar">http://down.vista123.com/AcronisDiskDirector10.rar</a>

&#160;

&#160;

&#160;

&#160;]]></description>
			<content:encoded><![CDATA[<h3>简介</h3>
<p>Acronis Disk Director 是一款硬盘分区管理套件，包含了分区管理，数据恢复和引导程序三个组件。其最大的优势在于可以不丢失数据的前提下对分区实行调整，包括分区大小的伸缩，位置的移动等。</p>
<h3>特点</h3>
<ul>
<li>Resize, split and merge volumes</li>
<li>Create, convert, copy and move volumes</li>
<li>Install multiple operating systems on one PC.</li>
<li>Boot from CD/DVD, USB stick or USB drive</li>
<li>New! Add/break mirrored volumes *</li>
<li>Use with Acronis® True Image Home 2011</li>
</ul>
<h3>相关链接</h3>
<p>官方主页：<a href="http://www.acronis.com/homecomputing/products/diskdirector/#overview">http://www.acronis.com/homecomputing/products/diskdirector/#overview</a></p>
<p>下载地址：<a href="http://down.vista123.com/AcronisDiskDirector10.rar">http://down.vista123.com/AcronisDiskDirector10.rar</a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/acronis-disk-director.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>openvpn构建VPN</title>
		<link>http://www.xdays.info/openvpn%e6%9e%84%e5%bb%bavpn.html</link>
		<comments>http://www.xdays.info/openvpn%e6%9e%84%e5%bb%bavpn.html#comments</comments>
		<pubDate>Thu, 14 Jul 2011 13:38:49 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=618</guid>
		<description><![CDATA[<h3>简介</h3>
openvpn是一种ssl vpn。它最大的优势是构建在tcp或udp，所以可以穿越proxy，nat，firewalls；此外还可以向client端推送ip地址，路由和一些关于连接的选项。
<h3>安装</h3>
<h4>安装依赖库</h4>
<pre>yum install gcc openssl-devel
cd /usr/local/src
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
tar xzvf lzo-2.04.tar.gz
cd lzo-2.04
./configure &#38;&#38; make &#38;&#38; make check &#38;&#38; make test &#38;&#38; make install</pre>
<h4>安装openvpn</h4>
<pre>cd /usr/local/src
wget http://swupdate.openvpn.net/community/releases/openvpn-2.1.4.zip
unzip openvpn-2.1.4/zip
cd openvpn-2.1.4
./configure &#38;&#38; make &#38;&#38; make install</pre>
<h3>生成证书</h3>
<h4>生成工具</h4>
<pre>mkdir -p /etc/openvpn
mv /usr/local/src/openvpn-2.1.4/easy-rsa/ /etc/openvpn/
chmod a+x /etc/openvpn/easy-rsa/2.0/*
cd /etc/openvpn/easy-rsa/2.0</pre>
<h4>编辑变量文件</h4>
<pre>vi  /etc/openvpn/easy-rsa/2.0/vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BJ"
export KEY_ORG="www.xdays.info"
export KEY_EMAIL="xdays@xdays.info"
source /etc/openvpn/easy-rsa/2.0/vars</pre>
<h4>生成cert</h4>
<pre>./clean-all
./build-ca 一串回车，建立root ca
./build-key-server server 一串回车 两个yes，建立server ca
./build-key client1 一串回车两个yes，建立client1 ca
./build-key client2 一串回车两个yes，建立client2 ca
./build-dh</pre>
注意：./build-key client1 命令建立三个文件，client端需要ca.crt，client1.crt和client1.key
<h3>配置openvpn</h3>
<pre>vi  /etc/openvpn/server.conf</pre>
<h4>桥接方式配置</h4>
<pre>port 443
proto tcp
dev tun
status /var/log/openvpn/servertcp.log
management localhost 7505
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
#server dhcp pool
server 10.9.9.0 255.255.255.0
ifconfig-pool-persist servertcplist.txt
#duplicate-cn
#push "dhcp-option DNS 8.8.8.8"
#push "redirect-gateway"
#push route
push "route 192.168.61.0 255.255.255.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>
<h4>路由模式配置</h4>
<pre>port 443
proto tcp
dev tun
status /var/log/openvpn/servertcp.log
management localhost 7505
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
#server dhcp pool
server 10.9.9.0 255.255.255.0
ifconfig-pool-persist servertcplist.txt
#duplicate-cn
#push dns
push "dhcp-option DNS 8.8.8.8"
#push default gateway
push "redirect-gateway"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>
再修改server端iptables做nat：
<pre>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</pre>
<h3>client端配置</h3>
windows安装OpenVPN GUI默认安装到C盘，将server端生成的ca.crt，client1.crt和client1.key三个文件拷到openvpn安装目录下的config目录下，再新建文件client.ovpn，内容如下：
<pre>client
port 443
proto tcp
dev tun
remote 192.168.60.66 443
resolv-retry infinite
nobind
ca ca.crt
cert client1.crt
key client1.key
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>]]></description>
			<content:encoded><![CDATA[<h3>简介</h3>
<p>openvpn是一种ssl vpn。它最大的优势是构建在tcp或udp，所以可以穿越proxy，nat，firewalls；此外还可以向client端推送ip地址，路由和一些关于连接的选项。</p>
<h3>安装</h3>
<h4>安装依赖库</h4>
<pre>yum install gcc openssl-devel
cd /usr/local/src
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.04.tar.gz
tar xzvf lzo-2.04.tar.gz
cd lzo-2.04
./configure &amp;&amp; make &amp;&amp; make check &amp;&amp; make test &amp;&amp; make install</pre>
<h4>安装openvpn</h4>
<pre>cd /usr/local/src
wget http://swupdate.openvpn.net/community/releases/openvpn-2.1.4.zip
unzip openvpn-2.1.4/zip
cd openvpn-2.1.4
./configure &amp;&amp; make &amp;&amp; make install</pre>
<h3>生成证书</h3>
<h4>生成工具</h4>
<pre>mkdir -p /etc/openvpn
mv /usr/local/src/openvpn-2.1.4/easy-rsa/ /etc/openvpn/
chmod a+x /etc/openvpn/easy-rsa/2.0/*
cd /etc/openvpn/easy-rsa/2.0</pre>
<h4>编辑变量文件</h4>
<pre>vi  /etc/openvpn/easy-rsa/2.0/vars
export KEY_COUNTRY="CN"
export KEY_PROVINCE="BJ"
export KEY_CITY="BJ"
export KEY_ORG="www.xdays.info"
export KEY_EMAIL="xdays@xdays.info"
source /etc/openvpn/easy-rsa/2.0/vars</pre>
<h4>生成cert</h4>
<pre>./clean-all
./build-ca 一串回车，建立root ca
./build-key-server server 一串回车 两个yes，建立server ca
./build-key client1 一串回车两个yes，建立client1 ca
./build-key client2 一串回车两个yes，建立client2 ca
./build-dh</pre>
<p>注意：./build-key client1 命令建立三个文件，client端需要ca.crt，client1.crt和client1.key</p>
<h3>配置openvpn</h3>
<pre>vi  /etc/openvpn/server.conf</pre>
<h4>桥接方式配置</h4>
<pre>port 443
proto tcp
dev tun
status /var/log/openvpn/servertcp.log
management localhost 7505
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
#server dhcp pool
server 10.9.9.0 255.255.255.0
ifconfig-pool-persist servertcplist.txt
#duplicate-cn
#push "dhcp-option DNS 8.8.8.8"
#push "redirect-gateway"
#push route
push "route 192.168.61.0 255.255.255.0"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>
<h4>路由模式配置</h4>
<pre>port 443
proto tcp
dev tun
status /var/log/openvpn/servertcp.log
management localhost 7505
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
client-to-client
#server dhcp pool
server 10.9.9.0 255.255.255.0
ifconfig-pool-persist servertcplist.txt
#duplicate-cn
#push dns
push "dhcp-option DNS 8.8.8.8"
#push default gateway
push "redirect-gateway"
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>
<p>再修改server端iptables做nat：</p>
<pre>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE</pre>
<h3>client端配置</h3>
<p>windows安装OpenVPN GUI默认安装到C盘，将server端生成的ca.crt，client1.crt和client1.key三个文件拷到openvpn安装目录下的config目录下，再新建文件client.ovpn，内容如下：</p>
<pre>client
port 443
proto tcp
dev tun
remote 192.168.60.66 443
resolv-retry infinite
nobind
ca ca.crt
cert client1.crt
key client1.key
keepalive 10 120
comp-lzo
persist-key
persist-tun
verb 3</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/openvpn%e6%9e%84%e5%bb%bavpn.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>将笔记本打造成无线AP</title>
		<link>http://www.xdays.info/%e5%b0%86%e7%ac%94%e8%ae%b0%e6%9c%ac%e6%89%93%e9%80%a0%e6%88%90%e6%97%a0%e7%ba%bfap.html</link>
		<comments>http://www.xdays.info/%e5%b0%86%e7%ac%94%e8%ae%b0%e6%9c%ac%e6%89%93%e9%80%a0%e6%88%90%e6%97%a0%e7%ba%bfap.html#comments</comments>
		<pubDate>Sat, 28 May 2011 13:03:20 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[windows]]></category>
		<category><![CDATA[无线]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=592</guid>
		<description><![CDATA[这月的流量包月在前10天就用完了，没有网的日子好难熬。今天突然冒出一个想法：手机支持wifi，笔记本有无线网卡，能不能把笔记本模拟成无线AP，通过笔记本走IP网络？Google了下找到了如下方法，经本人实验成功，欣喜之情难以言表，哈哈！

以下为转帖原文：<a href="http://tech.chinawin.net/laptop/article-47e9.html" target="_blank">Windows 7无线AP网络</a>

<hr />

如果你的系统是Windows 7操作系统，刚好你的<a href="http://www.chinawin.net/tag/bijibendiannao/" target="_blank">笔记本电脑</a>无线网卡硬件又支持，那么你就可以简单的组建起一个无线AP网络，实现共享上网。

具备以上两个前提条件之后，你将会在“计算机-属性-设备管理器-网络适配器”里面看到有一项“Microsoft Virtual WiFi  Miniport Adapter”，那么在“控制面板\网络和  Internet\网络连接”里头也会看到有一个名字为“无线网络连接2”的连接，这个连接正是使用了Microsoft Virtual WiFi  Miniport Adapter硬件。

点击“开始-所有程序-附件-命令提示符”右键点击“以管理员身份运行”，DOS窗口执行如下两条指令，即可将无线AP网络开启：

netsh wlan set hostednetwork mode=allow ssid=Windows7AP key=password
netsh wlan start hostednetwork

这个Wi-Fi无线网络的名字为Windows7AP，密码是password；指令中这两参数可以自行更改。

再将你的“本地连接”右键-“属性”-“共享”、在“Internet连接共享”框框那打勾，选择“无线网络连接2”。意思为要将你的有线网卡的互联网上网功能，通过无线网络Windows7AP共享出去。

之后，你就可以用另外的笔记本电脑、各种支持Wi-Fi的手机、iPad、iPod Touch、iPhone、PSP等等搜索到这个无线网络，输入密码，就可以share上网啦。

Microsoft Virtual WiFi Miniport  Adapter是微软Windows7最新支持的一个功能，目前只能通过DOS指令来开启，但是已经令我感到很欣喜。适合经常出差的伙伴，又或者有一大堆 Wi-Fi电子设备的机迷们，不用你随身携带一台无线路由器，就可以实现互联网共享。

我更喜欢将这两条指令做成一个.bat批处理文件，瞬间加载，实现Wi-Fi网络的快速启动。

Microsoft Virtual WiFi Miniport Adapter，一如谷歌Android 2.2“冻酸奶”支持的3G无线AP般前卫。

<hr />]]></description>
			<content:encoded><![CDATA[<p>这月的流量包月在前10天就用完了，没有网的日子好难熬。今天突然冒出一个想法：手机支持wifi，笔记本有无线网卡，能不能把笔记本模拟成无线AP，通过笔记本走IP网络？Google了下找到了如下方法，经本人实验成功，欣喜之情难以言表，哈哈！</p>
<p>以下为转帖原文：<a href="http://tech.chinawin.net/laptop/article-47e9.html" target="_blank">Windows 7无线AP网络</a></p>
<hr />
<p>如果你的系统是Windows 7操作系统，刚好你的<a href="http://www.chinawin.net/tag/bijibendiannao/" target="_blank">笔记本电脑</a>无线网卡硬件又支持，那么你就可以简单的组建起一个无线AP网络，实现共享上网。</p>
<p>具备以上两个前提条件之后，你将会在“计算机-属性-设备管理器-网络适配器”里面看到有一项“Microsoft Virtual WiFi  Miniport Adapter”，那么在“控制面板\网络和  Internet\网络连接”里头也会看到有一个名字为“无线网络连接2”的连接，这个连接正是使用了Microsoft Virtual WiFi  Miniport Adapter硬件。</p>
<p>点击“开始-所有程序-附件-命令提示符”右键点击“以管理员身份运行”，DOS窗口执行如下两条指令，即可将无线AP网络开启：</p>
<p>netsh wlan set hostednetwork mode=allow ssid=Windows7AP key=password<br />
netsh wlan start hostednetwork</p>
<p>这个Wi-Fi无线网络的名字为Windows7AP，密码是password；指令中这两参数可以自行更改。</p>
<p>再将你的“本地连接”右键-“属性”-“共享”、在“Internet连接共享”框框那打勾，选择“无线网络连接2”。意思为要将你的有线网卡的互联网上网功能，通过无线网络Windows7AP共享出去。</p>
<p>之后，你就可以用另外的笔记本电脑、各种支持Wi-Fi的手机、iPad、iPod Touch、iPhone、PSP等等搜索到这个无线网络，输入密码，就可以share上网啦。</p>
<p>Microsoft Virtual WiFi Miniport  Adapter是微软Windows7最新支持的一个功能，目前只能通过DOS指令来开启，但是已经令我感到很欣喜。适合经常出差的伙伴，又或者有一大堆 Wi-Fi电子设备的机迷们，不用你随身携带一台无线路由器，就可以实现互联网共享。</p>
<p>我更喜欢将这两条指令做成一个.bat批处理文件，瞬间加载，实现Wi-Fi网络的快速启动。</p>
<p>Microsoft Virtual WiFi Miniport Adapter，一如谷歌Android 2.2“冻酸奶”支持的3G无线AP般前卫。</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/%e5%b0%86%e7%ac%94%e8%ae%b0%e6%9c%ac%e6%89%93%e9%80%a0%e6%88%90%e6%97%a0%e7%ba%bfap.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>博客更换自制主题</title>
		<link>http://www.xdays.info/%e5%8d%9a%e5%ae%a2%e6%9b%b4%e6%8d%a2%e8%87%aa%e5%88%b6%e4%b8%bb%e9%a2%98.html</link>
		<comments>http://www.xdays.info/%e5%8d%9a%e5%ae%a2%e6%9b%b4%e6%8d%a2%e8%87%aa%e5%88%b6%e4%b8%bb%e9%a2%98.html#comments</comments>
		<pubDate>Sun, 01 May 2011 08:02:26 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[mylife]]></category>
		<category><![CDATA[blog]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=583</guid>
		<description><![CDATA[近来受找工作困扰没有心思学习，决定全新制作自己的博客主题。找到一篇基础的教程<a href="http://fairyfish.net/series/wordpress-theme-tutorials/">WordPress 主题教程</a>，虽内容有些老了但还是很有参考价值的，起码搞清了整个博客中层是怎么运作的，底层的函数调用太过复杂，一时半会是没精力学习了。

说下总体想法：
<ul>
	<li>核心功能就是以最简单的方式显示日志</li>
	<li>侧边栏仅保留了分类目录和日历</li>
	<li>页面仅有index，single，search和category四个</li>
	<li>得意之处是通过制定margin为负数实现了顶部的logo</li>
	<li>通过自定义pre标签的css实现代码高亮</li>
</ul>
当然肯定还有很多bug或不足之处有待发现。]]></description>
			<content:encoded><![CDATA[<p>近来受找工作困扰没有心思学习，决定全新制作自己的博客主题。找到一篇基础的教程<a href="http://fairyfish.net/series/wordpress-theme-tutorials/">WordPress 主题教程</a>，虽内容有些老了但还是很有参考价值的，起码搞清了整个博客中层是怎么运作的，底层的函数调用太过复杂，一时半会是没精力学习了。</p>
<p>说下总体想法：</p>
<ul>
<li>核心功能就是以最简单的方式显示日志</li>
<li>侧边栏仅保留了分类目录和日历</li>
<li>页面仅有index，single，search和category四个</li>
<li>得意之处是通过制定margin为负数实现了顶部的logo</li>
<li>通过自定义pre标签的css实现代码高亮</li>
</ul>
<p>当然肯定还有很多bug或不足之处有待发现。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/%e5%8d%9a%e5%ae%a2%e6%9b%b4%e6%8d%a2%e8%87%aa%e5%88%b6%e4%b8%bb%e9%a2%98.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>解决维基百科图片不能显示</title>
		<link>http://www.xdays.info/%e8%a7%a3%e5%86%b3%e7%bb%b4%e5%9f%ba%e7%99%be%e7%a7%91%e5%9b%be%e7%89%87%e4%b8%8d%e8%83%bd%e6%98%be%e7%a4%ba.html</link>
		<comments>http://www.xdays.info/%e8%a7%a3%e5%86%b3%e7%bb%b4%e5%9f%ba%e7%99%be%e7%a7%91%e5%9b%be%e7%89%87%e4%b8%8d%e8%83%bd%e6%98%be%e7%a4%ba.html#comments</comments>
		<pubDate>Tue, 19 Apr 2011 02:27:31 +0000</pubDate>
		<dc:creator>xdays</dc:creator>
				<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.xdays.info/?p=559</guid>
		<description><![CDATA[国内屏蔽了维基百科的图片服务器，但是貌似还不算太狠屏蔽的不是太彻底。下面是解决办法：

windows下编辑C:\Windows\System32\drivers\etc下的hosts文件添加一行
<pre>91.198.174.234    upload.wikimedia.org</pre>

这样就能正常访问了。

参考资料（作者是个好人，承诺挺狠的，呵呵！）：<a href="http://www.bloki.org/2010/02/26/how-can-i-get-my-images-back/">http://www.bloki.org/2010/02/26/how-can-i-get-my-images-back/</a>]]></description>
			<content:encoded><![CDATA[<p>国内屏蔽了维基百科的图片服务器，但是貌似还不算太狠屏蔽的不是太彻底。下面是解决办法：</p>
<p>windows下编辑C:\Windows\System32\drivers\etc下的hosts文件添加一行</p>
<pre>91.198.174.234    upload.wikimedia.org</pre>
<p>这样就能正常访问了。</p>
<p>参考资料（作者是个好人，承诺挺狠的，呵呵！）：<a href="http://www.bloki.org/2010/02/26/how-can-i-get-my-images-back/">http://www.bloki.org/2010/02/26/how-can-i-get-my-images-back/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.xdays.info/%e8%a7%a3%e5%86%b3%e7%bb%b4%e5%9f%ba%e7%99%be%e7%a7%91%e5%9b%be%e7%89%87%e4%b8%8d%e8%83%bd%e6%98%be%e7%a4%ba.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

