<?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>紫薇阁</title>
	<atom:link href="http://wubotao.com/feed" rel="self" type="application/rss+xml" />
	<link>http://wubotao.com</link>
	<description>大学之道，在明明德，在亲民，在止于至善。</description>
	<lastBuildDate>Tue, 17 Apr 2012 03:51:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>你做过的最有效的提高编程水平的一件事情是什么</title>
		<link>http://wubotao.com/archives/781.html</link>
		<comments>http://wubotao.com/archives/781.html#comments</comments>
		<pubDate>Tue, 17 Apr 2012 03:48:25 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[心得]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Mysql]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=781</guid>
		<description><![CDATA[最近在stackexchange网站上看到了一个非常好的问答，有人问：你做过的最有效的提高你的编程水平的一件事情是什么?

回首作为一个程序员这些年来的生活和职业道路，我使用了很多种不同的方法来提高我的编程技能 —— 阅读代码，编写程序，阅读书籍，听讲座，看视频，等等。

我的问题是：你做过的最有效的提高你的编程水平的一件事情是什么?对于那些想提高水平的程序员，你的建议是什么？

<span class="readmore"><a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">阅读全文——共1699字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近在stackexchange网站上看到了一个非常好的问答，有人问：你做过的最有效的提高你的编程水平的一件事情是什么?</p>
<blockquote><p>回首作为一个程序员这些年来的生活和职业道路，我使用了很多种不同的方法来提高我的编程技能 —— 阅读代码，编写程序，阅读书籍，听讲座，看视频，等等。</p>
<p>我的问题是：你做过的最有效的提高你的编程水平的一件事情是什么?对于那些想提高水平的程序员，你的建议是什么？</p>
<p>我希望你们提供的答案是各种各样的，并且不是那种“放之四海而皆准”的答案 —— 我希望得到适用于不同人的不同的答案。</p></blockquote>
<p>有很多人给出了自己的答案，在这里，我将其中最受认可的前三种答案选出来翻译给大家。</p>
<p><strong>最受欢迎的回答：学无止境</strong></p>
<blockquote><p>没有特别的先后次序…</p>
<p>和比自己更聪明的人一起工作</p>
<p>永远乐意听取他人的意见，不管对方是低级水平，一般水平，资深，还是大师。职称头衔并不代表一切。</p>
<p>学习其它的框架/语言，学习它们是的工作原理和思想，拿它们跟你已知的技术做比较。</p>
<p>学习各种设计模式，最佳实践理论，然后用它们检查自己先前的知识，在需要的时候使用这些模式。</p>
<p>结对编程</p>
<p>反对Joel说的一切。</p></blockquote>
<p><strong>第二受欢迎的回答：成为多面手</strong></p>
<blockquote><p>争取成为一个‘多面手万事通’</p>
<p>在我职业生涯的早期，我在一种数据库和编程语言上是个专家。不幸的是，这种数据库在“数据库战争”中落败了，我才发现我的职业道路…很窄。在此之 后，我下定决心以后决不能把自己封在一个小空间里。我开始学习所有手头上能接触到的东 西：Windows，Unix，C，C++，Java，C#，Perl，Python，Access，SQL Server，Oracle，Informix，MySQL，等等。不管什么样的新的，不常见的工具或技术，我都成为“大拿” —— “去问克雷格(作者自己)，他要是不会，他会去学会的。”结果，我做了各种各样的项目，从为环境监测做嵌入式系统，到为导弹防御做命令和控制系统。</p>
<p>我在各种的公司里唯一遇到的问题是：它们坚持要把我固定在一个专门的研究方向内，而我的专门研究是要成为一个多面手。[编辑： 也叫做学识渊博的人或多才多艺的人或多领域专家。]</p>
<p>有些事情需要留意 … 高科技界里知识的半衰期是多少？根据摩尔定律(Moore’s law)：18-24月内，半数你学到的知识都会过时。错误的遵循这种规律的专家会轻易的在这种技术发展的压力崩溃；一个多面手要做的事就是不断的丰富自 己的技能，并从应用这些技能的经历中吸取教训。</p></blockquote>
<p><strong>第三受欢迎的回答：不要跟臭棋篓子下棋</strong></p>
<blockquote><p>我一直认为自己在不错的程序员中也算是个“灌篮高手”。直到有个家伙——我们叫他艾伦——被招进团队。艾伦很显然在很多方面都比我优秀。也比我年轻。他让我认识到，在过去的这些年里，我没有多少长进。我是一个特定技术方向的程序员，而且是水平一般。</p>
<p>这惊醒我应该自觉的不断提高自己的水平，特别是我写的代码的水平。</p>
<p>艾伦引导我学会了很多东西。他告诉我，大部分我写的代码在今后的数年里都将一直维护和进行扩展，写代码时要将这点铭记在心。我应该为我的代码写自动 测试程序。艾伦说代码的开发一定不能停止在第一版上，应该不断的重构，提炼，让它达到完美。我发现，我对这些语言和工具的使用都还有还很大的改进空间。</p>
<p>从艾伦那我学到的最重要的一件事情是：永远不要停止学习。</p>
<p>数年后，艾伦离开了公司。我的心里突然感觉空荡荡的。这些年与他为伴让我在技能上提升到了一个全新的水平，我知道现在我比团队里的其他人优秀很多。 他们仍然写着糟糕的代码，犯着以前犯过的错误。我努力教育他们，但他们对此不感兴趣。事实上，他们讨厌有人这样傲慢自大的指出他们犯的错误。</p>
<p>于是，几个月后，我也离开这这个公司。我去了一个很小的公司，在一个很出色的团队里工作。那里每个人都渴望学习更多知识，我喜欢这样的。</p>
<p>我很幸运能遇到艾伦。没有他，我也许现在仍然待在那家死气沉沉的公司和那帮食古不化的家伙在一起，哪都去不了，想的全是自己的私利。</p></blockquote>
<p>这个讨论在stackexchange网站上的地址是<a href="http://programmers.stackexchange.com/questions/44177/what-is-the-single-most-effective-thing-you-did-to-improve-your-programming-skil" target="_blank">这里</a>。</p>
<p>本文地址：<a href="http://www.oschina.net/news/27982/things-you-did-to-improve-your-programming-skill" target="_blank">http://www.oschina.net/news/27982/things-you-did-to-improve-your-programming-skill</a></p>
<p>&nbsp;</p>
<ul class="related_post"><li>2011 年 11 月 10 日 -- <a href="http://wubotao.com/archives/758.html" title="cx_Oracle安装出现的ImportError问题以及解决办法">cx_Oracle安装出现的ImportError问题以及解决办法</a> (0)</li><li>2011 年 05 月 19 日 -- <a href="http://wubotao.com/archives/362.html" title="技术总结">技术总结</a> (0)</li><li>2011 年 10 月 25 日 -- <a href="http://wubotao.com/archives/730.html" title="数据库“null password given; logon denied”问题的解决">数据库“null password given; logon denied”问题的解决</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/713.html" title="多种排序算法的Python实现">多种排序算法的Python实现</a> (0)</li><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/642.html" title="Python中is和==的区别和联系">Python中is和==的区别和联系</a> (1)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/781.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>一名开发者从做技工的父亲那里学到的 5 堂课</title>
		<link>http://wubotao.com/archives/778.html</link>
		<comments>http://wubotao.com/archives/778.html#comments</comments>
		<pubDate>Tue, 27 Mar 2012 09:45:47 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[心得]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=778</guid>
		<description><![CDATA[所谓“隔行如隔山”，其实不然，在工作和生活中，大部分的知识和技能都是相通的。学会举一反三，对于技能的提升有很大帮助。本文是一名软件开发者从做技工的父亲身上学到的一些经验，而这些经验使他最终成为了开发者中的佼佼者。

以下为文章全文：

我的父亲是一名工程师——是机械工程师，不是软件工程师。在他成为机械工程师之前，他也做过技工和木工。他很聪明，同时在建筑和维修方面也很有 天赋（只要不涉及到电气即可，不过那就是另外一回事了）。他甚至在 60 岁时依然能做围墙、工棚和甲板之类的工作。当我和我的兄弟还小的时候，他就开始让我们接触一些他工作用的工具，因此，当我们发现需要修复或制作一些东西 时，我们有能力做好它。好吧，虽然他在我身上的教育几乎失败，但一路走来，我还是学到了很多重要的东西，而且，不管你信不信，这些我学到的东西，在我成为 一名优秀的开发者和企业家的路上，让我受益良多。

<span class="readmore"><a href="http://wubotao.com/archives/778.html" title="一名开发者从做技工的父亲那里学到的 5 堂课">阅读全文——共2389字</a></span>]]></description>
			<content:encoded><![CDATA[<p>所谓“隔行如隔山”，其实不然，在工作和生活中，大部分的知识和技能都是相通的。学会举一反三，对于技能的提升有很大帮助。本文是一名软件开发者从做技工的父亲身上学到的一些经验，而这些经验使他最终成为了开发者中的佼佼者。</p>
<p><strong>以下为文章全文：</strong></p>
<p>我的父亲是一名工程师——是机械工程师，不是软件工程师。在他成为机械工程师之前，他也做过技工和木工。他很聪明，同时在建筑和维修方面也很有 天赋（只要不涉及到电气即可，不过那就是另外一回事了）。他甚至在 60 岁时依然能做围墙、工棚和甲板之类的工作。当我和我的兄弟还小的时候，他就开始让我们接触一些他工作用的工具，因此，当我们发现需要修复或制作一些东西 时，我们有能力做好它。好吧，虽然他在我身上的教育几乎失败，但一路走来，我还是学到了很多重要的东西，而且，不管你信不信，这些我学到的东西，在我成为 一名优秀的开发者和企业家的路上，让我受益良多。</p>
<p>下面就是我从他那里学到的知识。</p>
<p><strong>第一课：三思而后行</strong></p>
<p>砍柴是一个一次性的工作。只要树木被砍掉，它就不可能再保持原样。因此，<strong>很重要的一件事就是确保你每一次的删除操作是无误的。</strong>甚至即使你确定你的做法是正确的，也请你无论如何再做一次评估。重新检查你的评估，确保它正确无误，这样你就可以避免犯一些本可以规避掉的错误，付出的代价也要小的多。</p>
<p>开发产品也是同样的道理。如果事先不测量书架要占用的空间的大小，你怎能做出与之大小相适合的书架？如果事先不知道用户的需要，你又何必去开发 一个无用的产品？这个道理已经提过很多次了，我在这里略过。但有个不被经常提及的事情是你的产品是一组功能的集合体，就像书架是一堆货架的集合体一样。每 一个功能都应该被认真对待，细心评估，以确保它适用于受众人群。<strong>重要的是不仅仅在项目开始就收集反馈，在整个项目的开发阶段，我们都要重视反馈，而不是等到结束了，才想起还有一些不错的创意没有实现。</strong></p>
<p><strong>第二课：粉刷一座建造好的凉亭会很困难</strong></p>
<p>有一次，几个工人在家里修凉亭，他们在凉亭建好后才开始粉刷。爸爸看到后指出，如果这些工人能在这些木头放在地面上就开始粉刷的话，他们就能节 约1/10的<a href="http://www.jintianjihao.com/" target="_blank">时间</a>，而且效果也会更好。粉刷之后只需做一些连接工作就可以很快的建造起这座凉亭。粉刷已经建造好的凉亭不仅又慢又不方便，而且还可能导致出 现一些不易刷到的地方，最糟糕的是，如果不幸的话，还会把这一切弄得一团糟。</p>
<p><strong>在产品的开发过程中，很容易忘记设计和 UI，但这些很重要。</strong>以用户为中心的设计就是在设计页面时，以服务用户为第一要务，然后再开发相应的应用来支持这一设计。而以软件开发为优先并把设计放到最后，你将做更多的工作，产品也会存在潜在的缺点。<strong>UX 应该是一个持续不断的过程，不是某个可以随意丢弃的东西。</strong></p>
<p><strong>第三课：让你的项目和工作空间始终保持整洁</strong></p>
<p>在一个杂乱的环境中工作一定会让你的项目结果变得一团糟。如果碎木屑到处都是，你就不可能粉刷好；如果你的<a href="http://tool.cgfreight.cn/" target="_blank">工具</a>都满覆油污，你就不可能把拆散的发动机零件再组装到一起；如果你用完工具后不搜集整理好，你可能永远都找不到你想要的螺丝刀。<strong>任何一个机修工都会告诉你工作在一个整洁的环境中有多么重要。</strong>糟糕的不止是你将花更多的时间用于寻找放错位置的工具，还会导致更多的损失。</p>
<p>每一个开发者的代码中都可能会有一些 bug。很多开发者都知道“代码债务”这个名词，它实际上只是从开发者的角度来看待这一块工作混乱的区域。如果你在源头埋下隐患，所造成的后果不仅仅是更 难发现 bug，而且在将来会更容易造成更多的混乱。最终你将不得不清理它们（特别是在你开始你自己的工作前，你将不得不去清理其他人留下的这些 bug！）。想必每一个开发者都知道修改别人代码时那种恐怖的感觉，并会意识到他们留下了一堆麻烦等着你去解决。<strong>现在花一点时间去整理你的工作空间，将来你会节约更多的时间。</strong></p>
<p><strong>第四课：始终使用正确的工具（而且在你的工具上别吝啬）</strong></p>
<p>搞砸工作的一个主要原因就是使用了不恰当的工具。这虽然显而易见，但很多人就是意识不到这一点。用错了工具后的下场通常是一个灾难。别心疼钱，工作一展开就应该找到合适的工具。</p>
<p><strong>工具选用不当虽然通常都是管理层犯下的错误，但我们开发者也要为此事负责。</strong>毫无疑问，一个用了 6 年的笔记本运行起来肯定会很慢。即便为一款文本编辑器花了 10 美元，但却选用了最蹩脚的一款，也不会有助你的工作。节省的这几块钱不会帮你赢得客户的心。最糟的是，利用盗版软件帮你赚钱，这是完全错误的做法。今天你 可能觉得你节省了一些，但在以后的运营中一定会花掉你更多的钱。<strong>找出最适合你项目的开发工具，然后花一些钱（除非它是开源的！）。当项目开始后，节约会特别具有挑战性。除非你需要，否则别乱花钱，但如果有些工具需要花钱才能使用，那就要选最好的。</strong></p>
<p><strong>第五课：如果方法都不奏效，那么去找一个更大的锤子</strong></p>
<p>有时候你卡住了，这意味着你碰到了难题。有时候不管你多么用力，都无法将螺栓拧入螺孔中。有时候不管你多么用力敲打，钉子都不会被敲入。这时候你仅仅需要一把更大、更合适的锤子。</p>
<p>作为 <a href="http://www.bugherd.com/" target="_blank">BugHerd</a> 的创始人之一，我过去常碰到一些本该寻求帮助的情况。但我挣扎着，我通读手册，看视频录像并参阅博客文章。然后我清醒了，并意识到无论我做什么，肯定有其 他人在这方面做得比我好。目前，我们有 2 位精通 JS 的同事，他们做的工作，比我们任何时候做的都要好。有很多为远程团队协作而准备的优秀的工具，因此，<strong>不要找借口说没有合适的同事和你一起工作。有时候，你仅仅需要接受现实，并找到相应的解决办法。</strong></p>
<p>作为一个活跃在专业开发设计社区里的创业者，我常感到像活在培养皿里。偶尔停下来，观察一些较为传统的行业，看看我们能从那些做出卓越贡献的前辈那里学到什么，这也是一个不错的做法。<strong>无论我们认为我们有多聪明，也不论他们有哪方面的优点，我们总是能从这些前辈这里学到很多。</strong></p>
<p>&nbsp;</p>
<p>本文转载自: <a href="http://www.iteye.com/news/24637" target="_blank">http://www.iteye.com/news/24637</a></p>
<h2  class="related_post_title">随机日志</h2><ul class="related_post"><li>2011 年 10 月 30 日 -- <a href="http://wubotao.com/archives/745.html" title="十月小结">十月小结</a> (0)</li><li>2011 年 05 月 19 日 -- <a href="http://wubotao.com/archives/356.html" title="阿里数据库专家：写给我们这些浮躁的程序员">阿里数据库专家：写给我们这些浮躁的程序员</a> (0)</li><li>2011 年 05 月 13 日 -- <a href="http://wubotao.com/archives/329.html" title="风雨20年：我所积累的20条编程经验">风雨20年：我所积累的20条编程经验</a> (0)</li><li>2011 年 07 月 07 日 -- <a href="http://wubotao.com/archives/601.html" title="不开心">不开心</a> (0)</li><li>2011 年 06 月 16 日 -- <a href="http://wubotao.com/archives/569.html" title="一名护士告诉你：临终病人最后悔的5件事">一名护士告诉你：临终病人最后悔的5件事</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/778.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>换个活法：临终前会后悔的25件事</title>
		<link>http://wubotao.com/archives/762.html</link>
		<comments>http://wubotao.com/archives/762.html#comments</comments>
		<pubDate>Fri, 18 Nov 2011 09:38:41 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[家庭]]></category>
		<category><![CDATA[社会]]></category>
		<category><![CDATA[梦想]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[遗憾]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=762</guid>
		<description><![CDATA[最近，一个“临终前你会后悔的事”的帖子在国内外网站上被疯狂转载，瞬间点醒了数万人。它的作者是美国一名叫博朗尼·迈尔的临终关怀护士，文中总结了生命走到尽头时人们最后悔的5件事情。

最悔：“希望当初我有勇气过自己真正想要的生活”

第二：“希望当初我没有花这么多精力在工作上，错过了关注孩子成长的乐趣，错过了爱人温暖的陪伴”

<span class="readmore"><a href="http://wubotao.com/archives/762.html" title="换个活法：临终前会后悔的25件事">阅读全文——共3392字</a></span>]]></description>
			<content:encoded><![CDATA[<p>最近，一个“临终前你会后悔的事”的帖子在国内外网站上被疯狂转载，瞬间点醒了数万人。它的作者是美国一名叫博朗尼·迈尔的临终关怀护士，文中总结了生命走到尽头时人们最后悔的5件事情。</p>
<p>最悔：“希望当初我有勇气过自己真正想要的生活”<br />
第二：“希望当初我没有花这么多精力在工作上，错过了关注孩子成长的乐趣，错过了爱人温暖的陪伴”<br />
第三：“希望当初能有勇气表达我的感受，而不是长期压抑愤怒与消极情绪”<br />
第四：“希望当初我能和朋友保持联系，而没有因忙碌的生活忽略了曾经闪亮的友情”<br />
第五：“希望当初我能让自己活得开心点，而不是习惯了掩饰，在人前堆起笑脸”<br />
无独有偶，在日本也有这样一位年轻的临终关怀护士大津秀一。他在亲眼目睹、亲耳听到1000例患者的临终遗憾后，写下了《临终前会后悔的25件事》一书，与美国的热帖内容不谋而合。其中，“没有注意身体健康”、“没能谈一场永存记忆的恋爱”、“没有留下自己生存过的证据”等，都成为了人们的“人生至悔”。活着的我们又该如何拥有一个不留遗憾的人生呢？</p>
<p>别让这些遗憾 变成你的遗憾</p>
<p>第一个遗憾：没有做自己想做的事。</p>
<p>大津秀一说：“人们临终前最常说的一句话就是，人这一辈子啊，太短了。”有人削尖脑袋往上爬，有人辞官归故里；有人自甘平庸，也有人孜孜以求。人生有很多活法，千万别被别人的价值观“绑架”，不要把别人希望你过的生活当作是你想要的生活。想谈恋爱，现在就行动吧；想学点什么，现在就开始吧。人生就像个旅行团，你已经加入了，不走完全程，岂不可惜？</p>
<p>第二个遗憾：没有实现梦想。</p>
<p>当人们在生命尽头往回看时，往往会发现有好多梦想没有实现。“真正的后悔，其实不是因为没有实现梦想，多半是责怪自己没能尽100%的力量实现梦想。”坚持梦想是一件“知易行难”的事。一个没有期限的梦想只是个梦，给梦想加一个“截止日期”，把它变成现实的目标，才更容易实现。</p>
<p>第三个遗憾：做过对不起良心的事。</p>
<p>人非圣贤，孰能无过？一辈子不做错事，是根本不可能的。即便不肯杀生的佛家弟子，也难以避免走在路上踩死一只蚂蚁。为了生存而做的无损原则的“坏事”是可以被原谅的，与其背着负罪感生活，不如放下包袱往前看。</p>
<p>第四个遗憾：被感情左右度过一生。</p>
<p>现实生活中，感性的人总是嘲笑理性的人“活的太严肃”。其实，太在乎自己的感受又能如何？笑过、哭过、发泄过，生活也不会因此改变。也许真要等临终一刻才能明白，每天为之烦恼、痛苦、伤心、气愤、达到忍耐极限的事，是多么可笑和不值一提。</p>
<p>第五个遗憾：没有尽力帮助过别人。</p>
<p>或是冷漠，或是怕吃亏，让很多人不敢做个善良人。其实，善良的人很少后悔，他们活得坦然、心安，那是善良给予他们的美好回报。去帮助那些需要你的人，“被人需要”的感觉远比“索取”好得多。</p>
<p>第六个遗憾：过于相信自己。</p>
<p>我们都有过这样自大自负甚至唯我独尊的时刻，认为自己不后悔做过的任何一件事。这样虽然看起来很积极，但却显得盲目。总有一些事，别人比你想的细致周到，多听一句、多想一秒，可以让你少走很多弯路。</p>
<p>第七个遗憾：没有妥善安置财产。</p>
<p>现在因为财产引发的家庭纠纷越来越多。其实，作为老人，一定要把处置财产当做一件重要的事，在世时就规划好。如果子女多，分配一定要公平，不要因为钱物，伤了孩子们间的感情。</p>
<p>第八个遗憾：没有考虑过身后事。</p>
<p>这一点和处置财产很相似。一个人活着，会留下很多印记。周围的人和事，都会因为你的离开而变化。提早规划一下，不但可以让自己更坦然接受生老病死，也能提醒自己好好享受人生。别等走不动路、听不懂话的时候，才发现还有很多事情没做。</p>
<p>第九个遗憾：没有回故乡。</p>
<p>每人心里都有一个地方被埋在最深处，却一生不忘这就是故乡。很多人会念叨，等我退休了就回老家。往往等来等去，最后回家的只是一个骨灰盒。有生之年，尽量每年都回家看看，听听乡音、吃点美食。这个在地理上让你无法割舍的地方，也是你灵魂的一个居所。</p>
<p>第十个遗憾：没有享受过美食。</p>
<p>你是否把好吃的东西都留给孩子，因为工作忙每顿饭都随便打发，或是为了健康每天只吃所谓的“营养”食物？吃饭，不仅为了饱腹，它还满足我们很多心理需求。品尝美食，也是一种很好的心灵治疗。还有就是，别放弃任何一个和家人吃饭的机会，总有一天，这个饭桌上的人会慢慢消失。</p>
<p>第十一个遗憾：大部分时间都用来工作。</p>
<p>在这个逐利的社会，工作、金钱、权势成为成功的金标准，很多人到老才后悔，那么好的青春，怎么都献给工作了呢？看看大自然的样子，感受季节的变化，聆听艺术的召唤，这些事情不会让你变富有，却会让你的人生有意义。</p>
<p>第十二个遗憾：没有去想去的地方旅行。</p>
<p>积攒了很多旅行计划却没有成行，因为孩子太小、钱太少、休假太少或是工作离不开？很多人都觉得，旅行任何时候都可以去，只有生病的人才懂得，旅行也是一种奢侈品。</p>
<p>第十三个遗憾：没有和想见的人见面。</p>
<p>可能是你小学时最喜欢的老师，可能是你的初恋，谁的生命都不能永恒，尤其是那些比你年长的人，哪怕身在异地，也可以专门拜访一下。我们应该抱着“一期一会”的观念生活。这是日本茶道的用语，“一期”就是一生，“一会”就是一次相会，说的是人生的每一个瞬间都不能重复，所以每一次的相会都变成了仅有的一次。</p>
<p>第十四个遗憾：没能谈一场永存记忆的恋爱。</p>
<p>爱，也是人存活世间的证明。我们经常看到，在一起的人未必不相爱，相爱的人却被迫分开，这是人生无常，也怪很多人自己没有努力。爱应该是一种忠诚和无私的付出，一种勇敢而无畏的表达，这是我们作为人的权利，千万不能只当儿戏。</p>
<p>第十五个遗憾：一辈子都没有结婚。</p>
<p>很多人年轻时觉得婚姻可有可无，一个人更自在。年纪大了却开始后悔，没有一个可以相互扶持的人。虽然好姻缘可遇不可求，但是也得自己努力，碰到合适的人千万不要犹豫。这个世界上不会有“最合适”的人，“比较合适”的人也不会等你一辈子。</p>
<p>第十六个遗憾：没有生育孩子。</p>
<p>现在很多人觉得，“我自己都还是孩子，怎么养孩子呢？”其实，为人父母，不仅是为了传承血脉，也是一种“活过的证据”。想想到了老年时儿孙满堂的欢乐，年轻时养育子女受的苦又算什么呢？</p>
<p>第十七个遗憾：没有看到孩子结婚。</p>
<p>有些子女认为“不结婚”是自己的私事，和父母没有关系。相反，很多老人生前最大的遗憾，就是没有看到自己儿女结婚。婚姻确实是私事，但有时候，不结婚却是件“自私”的事。不妨也站在父母的角度考虑，努力了却他们的遗憾吧。</p>
<p>第十八个遗憾：没有注意身体健康。</p>
<p>年轻时，身体是可以最肆意挥霍的资本，熬夜、喝酒、抽烟……健康是这样一个东西，你拥有它的时候往往感觉不到它的存在，失去它的时候才发现，它是那么的重要。从现在开始，努力改掉一些坏习惯，为自己和身边的人，健康生活。</p>
<p>第十九个遗憾：没有戒烟。</p>
<p>很多癌症和慢性病都和吸烟有关，不少患者直到查出肺癌，才开始悔过没及早戒烟。很多人抱着侥幸的心理吸烟，觉得倒霉事不会落到自己头上。克制欲望需要勇气和付出，但你的付出会以“健康”这种方式再返还给你。</p>
<p>第二十个遗憾：没有表明自己的真实意愿。</p>
<p>我们怕得罪人，怕给别人添麻烦，在意别人怎么看自己，这样在无形中漠视了自己的真实意愿。其实，无论什么时候，都该说出你真实的想法。只要愿意沟通，你会发现，事情比你想得简单得多。</p>
<p>第二十一个遗憾：没有认清活着的意义。</p>
<p>活着，绝不仅仅是寿命的一个数字，而是你活的质量。大津秀一碰到过一个癌症晚期的病人，他把生命仅剩的三个月，分成了许多个周期，每个周期做一件想做的事情。哪怕只剩一天，都用来过最好的生活。这就是活着的意义。</p>
<p>第二十二个遗憾：没有留下自己生存过的证据。</p>
<p>很多人觉得，留下房子、财产就是生存的证据，其实不对。既然在这个世界上走过，总该有些精神食粮留给后人。不管是工作、研究、学业上的成就，还是写给亲人、朋友的信，都是这样的“证据”。</p>
<p>第二十三个遗憾：没有看透生死。</p>
<p>看透生死不代表轻视生命，而是以一种更理性的姿态活着。中国人往往忌讳谈论死亡，其实，死亡只是所有生命共同的归途。不用忌讳，更不用惧怕。</p>
<p>第二十四个遗憾：没有信仰。</p>
<p>虽然很多人没有信仰一样活得很好，但是有信仰的人，会更透彻懂得人生的意义。尤其在面对困苦、无助的时候，信仰更可以成为一种强大的治愈力量。</p>
<p>第二十五个遗憾：没有对深爱的人说“谢谢”。</p>
<p>很多时候，我们在外彬彬有礼，对亲密的人说话却毫无顾忌。用好语言是人际交往的一门大学问，哪怕是亲近的人，也不必腼腆，要常说“谢谢”、“对不起”和“我爱你”，这是为感情保温的最好办法。</p>
<ul class="related_post"><li>2011 年 04 月 23 日 -- <a href="http://wubotao.com/archives/187.html" title="心愿">心愿</a> (0)</li><li>2011 年 10 月 01 日 -- <a href="http://wubotao.com/archives/680.html" title="写在25岁生日之际">写在25岁生日之际</a> (0)</li><li>2011 年 09 月 17 日 -- <a href="http://wubotao.com/archives/664.html" title="对最近生活工作情况的一些思考">对最近生活工作情况的一些思考</a> (0)</li><li>2011 年 09 月 09 日 -- <a href="http://wubotao.com/archives/654.html" title="每天晚上都会把这段话念完才睡觉">每天晚上都会把这段话念完才睡觉</a> (0)</li><li>2011 年 07 月 07 日 -- <a href="http://wubotao.com/archives/601.html" title="不开心">不开心</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/762.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>cx_Oracle安装出现的ImportError问题以及解决办法</title>
		<link>http://wubotao.com/archives/758.html</link>
		<comments>http://wubotao.com/archives/758.html#comments</comments>
		<pubDate>Thu, 10 Nov 2011 07:34:55 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=758</guid>
		<description><![CDATA[在redhat上装cx_Oracle，运行完

python setup.py build

python setuo.py install

<span class="readmore"><a href="http://wubotao.com/archives/758.html" title="cx_Oracle安装出现的ImportError问题以及解决办法">阅读全文——共345字</a></span>]]></description>
			<content:encoded><![CDATA[<p>在redhat上装cx_Oracle，运行完</p>
<p>python setup.py build<br />
python setuo.py install</p>
<p>之后，在python脚本中执行</p>
<p>import cx_Oracle</p>
<p>出现了下面的错误</p>
<p>ImportError: libclntsh.so.11.1: cannot open shared object file: No such file or directory</p>
<p>在网上找了一下，解决办法如下：</p>
<p>cd ~<br />
vi .bash_profile</p>
<p>在.bash_profile中添加</p>
<p>LD_LIBRARY_PATH=$ORACLE_HOME/lib:/usr/lib:/usr/local/lib</p>
<div>export LD_LIBRARY_PATH</div>
<div>然后保存。再执行：</p>
<p>source .bash_profile</p>
<p>Bravo~问题解决了~</p>
</div>
<ul class="related_post"><li>2012 年 04 月 17 日 -- <a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">你做过的最有效的提高编程水平的一件事情是什么</a> (0)</li><li>2011 年 10 月 25 日 -- <a href="http://wubotao.com/archives/730.html" title="数据库“null password given; logon denied”问题的解决">数据库“null password given; logon denied”问题的解决</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/713.html" title="多种排序算法的Python实现">多种排序算法的Python实现</a> (0)</li><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/642.html" title="Python中is和==的区别和联系">Python中is和==的区别和联系</a> (1)</li><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/627.html" title="Python logging的使用">Python logging的使用</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/758.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>十月小结</title>
		<link>http://wubotao.com/archives/745.html</link>
		<comments>http://wubotao.com/archives/745.html#comments</comments>
		<pubDate>Sun, 30 Oct 2011 14:41:17 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[日记]]></category>
		<category><![CDATA[生活]]></category>
		<category><![CDATA[学习]]></category>
		<category><![CDATA[工作]]></category>
		<category><![CDATA[看书]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=745</guid>
		<description><![CDATA[十月份呼一下子就过去了，每当月末和月初的时候总是要比平常忙一些。

今天晚上去看了会书，然后把最近学习工作上的事情又梳理了一下，感觉还好，生活挺充实的。

我喜欢这样忙忙碌碌的生活，日子自在而且远离忧愁，不必为很多琐事而烦恼。

<span class="readmore"><a href="http://wubotao.com/archives/745.html" title="十月小结">阅读全文——共645字</a></span>]]></description>
			<content:encoded><![CDATA[<p>十月份呼一下子就过去了，每当月末和月初的时候总是要比平常忙一些。</p>
<p>今天晚上去看了会书，然后把最近学习工作上的事情又梳理了一下，感觉还好，生活挺充实的。</p>
<p>我喜欢这样忙忙碌碌的生活，日子自在而且远离忧愁，不必为很多琐事而烦恼。</p>
<p>这个月买了好多书，也看了好多书，还有几本没来得及看。说实话，看的慢主要是因为有两本书就像天书，我每本看了三遍居然没怎么看明白，没办法只好去看一些更基础的书籍来帮助理解。</p>
<p>今天听说光合作用书店倒闭了，挺惋惜的，我这个月月初和月中的时候还去过五道口的店呢，不过一本都没买，因为网上买书很方便而且很便宜。</p>
<p>下周开始可能就要封闭开发了，所以自由的时间会少一些，不过没有关系。</p>
<p>今天看了一下我大学的电子成绩单，感觉很温馨，似乎又回到几年前的校园里。</p>
<p>不过看到什么《高频电路》我头就大了，这门课我实在不会啊！还有什么《数字信号处理》，各种DSP我实在受不了。我非常痛恨什么傅里叶变换、拉布拉斯变换、Z变换之类的东西，又抽象又不好懂。还有《数据结构》现在看起来这么重要的课程我居然当时不知道怎么过来的。反正专业课就没有一门让我省心的。</p>
<p>过去的事情就过去了吧，我还是喜欢偏软件方面的东西。很多事情有时候很难说清楚，通常情况下就是“有心栽花花不开，无心插柳柳成荫”。学得好也未必见得有用，所以呢，我对现状还是比较满意的。而且，我的大学生活还是蛮充实的。</p>
<p>我在想，如果再给我一次机会回到学校，我该怎样度过呢？</p>
<p>或许，我会把哪些失去的东西都找补回来。</p>
<p>但是未来的事情谁能说得清楚呢？</p>
<p>只要尽心尽力，便可无怨无悔。</p>
<ul class="related_post"><li>2011 年 05 月 14 日 -- <a href="http://wubotao.com/archives/320.html" title="闲言碎语">闲言碎语</a> (0)</li><li>2011 年 10 月 01 日 -- <a href="http://wubotao.com/archives/680.html" title="写在25岁生日之际">写在25岁生日之际</a> (0)</li><li>2011 年 05 月 20 日 -- <a href="http://wubotao.com/archives/454.html" title="Django中post请求403错误的解决">Django中post请求403错误的解决</a> (2)</li><li>2011 年 05 月 13 日 -- <a href="http://wubotao.com/archives/329.html" title="风雨20年：我所积累的20条编程经验">风雨20年：我所积累的20条编程经验</a> (0)</li><li>2011 年 04 月 23 日 -- <a href="http://wubotao.com/archives/187.html" title="心愿">心愿</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/745.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>数据库“null password given; logon denied”问题的解决</title>
		<link>http://wubotao.com/archives/730.html</link>
		<comments>http://wubotao.com/archives/730.html#comments</comments>
		<pubDate>Tue, 25 Oct 2011 09:36:31 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[Web Server]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[数据库]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=730</guid>
		<description><![CDATA[前几天重装了系统，JDK重装了，今天用Tomcat就出现各种问题。其中“null password given; logon denied”问题还是第一次遇到。主要表现问连不上数据库，好像是连接时密码为空（实际上我打断点发现密码并不为空）。然而我用Python连接数据库时没有出现异常，看来问题并不出在数据库上。

我在网上搜了很多解决方案，都不靠谱。后来在用HmacSHA1加密是发现也出了问题，后来有人指出：这是JRE配置出了问题。

然后我就把JRE的路径修改了一下，所有的就都好了。

<span class="readmore"><a href="http://wubotao.com/archives/730.html" title="数据库“null password given; logon denied”问题的解决">阅读全文——共387字</a></span>]]></description>
			<content:encoded><![CDATA[<p>前几天重装了系统，JDK重装了，今天用Tomcat就出现各种问题。其中“null password given; logon denied”问题还是第一次遇到。主要表现问连不上数据库，好像是连接时密码为空（实际上我打断点发现密码并不为空）。然而我用Python连接数据库时没有出现异常，看来问题并不出在数据库上。</p>
<p>我在网上搜了很多解决方案，都不靠谱。后来在用HmacSHA1加密是发现也出了问题，后来有人指出：这是JRE配置出了问题。</p>
<p>然后我就把JRE的路径修改了一下，所有的就都好了。</p>
<p>操作步骤：</p>
<p>1. Windows-&gt;Preferences-&gt;Java-&gt;Installed JREs-&gt;修改或者新建一个新的JRE。（我误把JDK路径设置为JRE路径）</p>
<p>2. Windows-&gt;Preferences-&gt;Server-&gt;Runtime Environment-&gt;Edit-&gt;选择刚才的JRE。</p>
<p>&nbsp;</p>
<ul class="related_post"><li>2012 年 04 月 17 日 -- <a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">你做过的最有效的提高编程水平的一件事情是什么</a> (0)</li><li>2011 年 11 月 10 日 -- <a href="http://wubotao.com/archives/758.html" title="cx_Oracle安装出现的ImportError问题以及解决办法">cx_Oracle安装出现的ImportError问题以及解决办法</a> (0)</li><li>2011 年 05 月 19 日 -- <a href="http://wubotao.com/archives/362.html" title="技术总结">技术总结</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/724.html" title="Android下拉刷新效果实现">Android下拉刷新效果实现</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/713.html" title="多种排序算法的Python实现">多种排序算法的Python实现</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/730.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android下拉刷新效果实现</title>
		<link>http://wubotao.com/archives/724.html</link>
		<comments>http://wubotao.com/archives/724.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 10:40:32 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[日记]]></category>
		<category><![CDATA[编程]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=724</guid>
		<description><![CDATA[列表是Android最普遍的控件之一，而在加载列表时，需要在header或footer处加入新的数据，这样刷新列表就是一件很常见的事情。

过去最普遍的刷新列表的做法就是在header处添加“刷新”，在footer处添加“更多”。这样做简单易行，但是用户体验不是很好，特别是对于iPhone的下拉刷新来讲，Android的界面似乎没有那么强大。

前一阵子，Johan Nilsson在他的博客上发布了Android下拉刷新的实现效果，致使大家纷纷效仿。这是他博客的原文：

<span class="readmore"><a href="http://wubotao.com/archives/724.html" title="Android下拉刷新效果实现">阅读全文——共485字</a></span>]]></description>
			<content:encoded><![CDATA[<p>列表是Android最普遍的控件之一，而在加载列表时，需要在header或footer处加入新的数据，这样刷新列表就是一件很常见的事情。</p>
<p>过去最普遍的刷新列表的做法就是在header处添加“刷新”，在footer处添加“更多”。这样做简单易行，但是用户体验不是很好，特别是对于iPhone的下拉刷新来讲，Android的界面似乎没有那么强大。</p>
<p>前一阵子，Johan Nilsson在他的博客上发布了Android下拉刷新的实现效果，致使大家纷纷效仿。这是他博客的原文：</p>
<p><a href="http://johannilsson.com/2011/03/13/android-pull-to-refresh-update.html" target="_blank">http://johannilsson.com/2011/03/13/android-pull-to-refresh-update.html</a></p>
<p>这是该实现的源码：</p>
<p><a href="https://github.com/johannilsson/android-pulltorefresh" target="_blank">https://github.com/johannilsson/android-pulltorefresh</a></p>
<p>上面的例子本身不能用，需要自己改造一下，下面的例子是我在作者的基础上改的，又添加了一个footer。</p>
<p><a href="https://open-source-project-home.googlecode.com/svn/trunk/PullToRefresh/" target="_blank">https://open-source-project-home.googlecode.com/svn/trunk/PullToRefresh/</a></p>
<ul class="related_post"><li>2011 年 10 月 04 日 -- <a href="http://wubotao.com/archives/696.html" title="关于Android方面的一些思考">关于Android方面的一些思考</a> (0)</li><li>2012 年 04 月 17 日 -- <a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">你做过的最有效的提高编程水平的一件事情是什么</a> (0)</li><li>2011 年 10 月 25 日 -- <a href="http://wubotao.com/archives/730.html" title="数据库“null password given; logon denied”问题的解决">数据库“null password given; logon denied”问题的解决</a> (0)</li><li>2011 年 10 月 08 日 -- <a href="http://wubotao.com/archives/698.html" title="Android开发常用的Intent的URI及示例">Android开发常用的Intent的URI及示例</a> (0)</li><li>2011 年 09 月 17 日 -- <a href="http://wubotao.com/archives/664.html" title="对最近生活工作情况的一些思考">对最近生活工作情况的一些思考</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/724.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>多种排序算法的Python实现</title>
		<link>http://wubotao.com/archives/713.html</link>
		<comments>http://wubotao.com/archives/713.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 05:02:05 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[算法]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=713</guid>
		<description><![CDATA[虽然我一直觉得算法非常重要，但是一直没有时间坐下来学习和总结一下。

大学的时候学的很多重要的东西都忘得差不多了，其中就包括算法这样的重要的知识。以前每次面试的时候一到算法这部分我就发懵，因为我确实对算法没什么研究。

前一阵子买了一本算法书看了看，发现里面讲的很多东西都看不懂！本来我以为算法这个东西应该很简单才对，至少哪些基本算法应该很好理解。

<span class="readmore"><a href="http://wubotao.com/archives/713.html" title="多种排序算法的Python实现">阅读全文——共1195字</a></span>]]></description>
			<content:encoded><![CDATA[<p>虽然我一直觉得算法非常重要，但是一直没有时间坐下来学习和总结一下。</p>
<p>大学的时候学的很多重要的东西都忘得差不多了，其中就包括算法这样的重要的知识。以前每次面试的时候一到算法这部分我就发懵，因为我确实对算法没什么研究。</p>
<p>前一阵子买了一本算法书看了看，发现里面讲的很多东西都看不懂！本来我以为算法这个东西应该很简单才对，至少哪些基本算法应该很好理解。</p>
<p>这段时间一直在总结以前所学的知识，也算是“温故而知新”。</p>
<p>今天在网上看了一篇算法文章，感觉还不错，决定分享一下。</p>
<p>算法来源：http://www.lfyzjck.com/2011-05-19/530.html</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;">#-*- encoding: utf-8 -*-</span>
<span style="color: #483d8b;">''</span><span style="color: #483d8b;">'
Created on 2011-10-27
&nbsp;
@author: Botao Wu
'</span><span style="color: #483d8b;">''</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">random</span>
<span style="color: #ff7700;font-weight:bold;">from</span> <span style="color: #dc143c;">copy</span> <span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">copy</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> directInsertSort<span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot; 直接插入排序 &quot;&quot;&quot;</span>
    size = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, size<span style="color: black;">&#41;</span>:
        tmp, j = seq<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, i
        <span style="color: #ff7700;font-weight:bold;">while</span> j <span style="color: #66cc66;">&gt;</span> <span style="color: #ff4500;">0</span> <span style="color: #ff7700;font-weight:bold;">and</span> tmp <span style="color: #66cc66;">&lt;</span> seq<span style="color: black;">&#91;</span>j - <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>:
            seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>, j = seq<span style="color: black;">&#91;</span>j - <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, j - <span style="color: #ff4500;">1</span>
        seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> = tmp
    <span style="color: #ff7700;font-weight:bold;">return</span> seq
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> directSelectSort<span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot; 直接选择排序 &quot;&quot;&quot;</span>
    size = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, size - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
        k = i<span style="color: #66cc66;">;</span>j = i + <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">while</span> j <span style="color: #66cc66;">&lt;</span> size:
            <span style="color: #ff7700;font-weight:bold;">if</span> seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span> seq<span style="color: black;">&#91;</span>k<span style="color: black;">&#93;</span>:
                k = j
            j += <span style="color: #ff4500;">1</span>
        seq<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>, seq<span style="color: black;">&#91;</span>k<span style="color: black;">&#93;</span> = seq<span style="color: black;">&#91;</span>k<span style="color: black;">&#93;</span>, seq<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> seq
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> bubbleSort<span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;冒泡排序&quot;&quot;&quot;</span>
    size = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">1</span>, size<span style="color: black;">&#41;</span>:
        <span style="color: #ff7700;font-weight:bold;">for</span> j <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, size - i<span style="color: black;">&#41;</span>:
            <span style="color: #ff7700;font-weight:bold;">if</span> seq<span style="color: black;">&#91;</span>j + <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span> seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>:
                seq<span style="color: black;">&#91;</span>j + <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>, seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span> = seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>, seq<span style="color: black;">&#91;</span>j + <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> seq
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> _divide<span style="color: black;">&#40;</span>seq, low, high<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;快速排序划分函数&quot;&quot;&quot;</span>
    tmp = seq<span style="color: black;">&#91;</span>low<span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">while</span> low <span style="color: #66cc66;">!</span>= high:
        <span style="color: #ff7700;font-weight:bold;">while</span> low <span style="color: #66cc66;">&lt;</span> high <span style="color: #ff7700;font-weight:bold;">and</span> seq<span style="color: black;">&#91;</span>high<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&gt;</span>= tmp: high -= <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> low <span style="color: #66cc66;">&lt;</span> high:
            seq<span style="color: black;">&#91;</span>low<span style="color: black;">&#93;</span> = seq<span style="color: black;">&#91;</span>high<span style="color: black;">&#93;</span>
            low += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">while</span> low <span style="color: #66cc66;">&lt;</span> high <span style="color: #ff7700;font-weight:bold;">and</span> seq<span style="color: black;">&#91;</span>low<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span>= tmp: low += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">if</span> low <span style="color: #66cc66;">&lt;</span> high:
            seq<span style="color: black;">&#91;</span>high<span style="color: black;">&#93;</span> = seq<span style="color: black;">&#91;</span>low<span style="color: black;">&#93;</span>
            high -= <span style="color: #ff4500;">1</span>
    seq<span style="color: black;">&#91;</span>low<span style="color: black;">&#93;</span> = tmp
    <span style="color: #ff7700;font-weight:bold;">return</span> low
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> _quickSort<span style="color: black;">&#40;</span>seq, low, high<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;快速排序辅助函数&quot;&quot;&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> low <span style="color: #66cc66;">&gt;</span>= high: <span style="color: #ff7700;font-weight:bold;">return</span>
    mid = _divide<span style="color: black;">&#40;</span>seq, low, high<span style="color: black;">&#41;</span>
    _quickSort<span style="color: black;">&#40;</span>seq, low, mid - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    _quickSort<span style="color: black;">&#40;</span>seq, mid + <span style="color: #ff4500;">1</span>, high<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> quickSort<span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>:
    <span style="color: #483d8b;">&quot;&quot;&quot;快速排序包裹函数&quot;&quot;&quot;</span>
    size = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>
    _quickSort<span style="color: black;">&#40;</span>seq, <span style="color: #ff4500;">0</span>, size - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> seq
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> merge<span style="color: black;">&#40;</span>seq, left, mid, right<span style="color: black;">&#41;</span>:
    tmp = <span style="color: black;">&#91;</span><span style="color: black;">&#93;</span>
    i, j = left, mid
    <span style="color: #ff7700;font-weight:bold;">while</span> i <span style="color: #66cc66;">&lt;</span> mid <span style="color: #ff7700;font-weight:bold;">and</span> j <span style="color: #66cc66;">&lt;</span>= right:
        <span style="color: #ff7700;font-weight:bold;">if</span> seq<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span> <span style="color: #66cc66;">&lt;</span> seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span>:
            tmp.<span style="color: black;">append</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#91;</span>i<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
            i += <span style="color: #ff4500;">1</span>
        <span style="color: #ff7700;font-weight:bold;">else</span>:
            tmp.<span style="color: black;">append</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#91;</span>j<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
            j += <span style="color: #ff4500;">1</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> i <span style="color: #66cc66;">&lt;</span> mid: tmp.<span style="color: black;">extend</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#91;</span>i:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">if</span> j <span style="color: #66cc66;">&lt;</span>= right: tmp.<span style="color: black;">extend</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#91;</span>j:<span style="color: black;">&#93;</span><span style="color: black;">&#41;</span>
&nbsp;
    seq<span style="color: black;">&#91;</span>left:right + <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span> = tmp<span style="color: black;">&#91;</span><span style="color: #ff4500;">0</span>:right - left + <span style="color: #ff4500;">1</span><span style="color: black;">&#93;</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">def</span> _mergeSort<span style="color: black;">&#40;</span>seq, left, right<span style="color: black;">&#41;</span>:
    <span style="color: #ff7700;font-weight:bold;">if</span> left == right:
        <span style="color: #ff7700;font-weight:bold;">return</span>
    <span style="color: #ff7700;font-weight:bold;">else</span>:
        mid = <span style="color: black;">&#40;</span>left + right<span style="color: black;">&#41;</span> / <span style="color: #ff4500;">2</span>
        _mergeSort<span style="color: black;">&#40;</span>seq, left, mid<span style="color: black;">&#41;</span>
        _mergeSort<span style="color: black;">&#40;</span>seq, mid + <span style="color: #ff4500;">1</span>, right<span style="color: black;">&#41;</span>
        merge<span style="color: black;">&#40;</span>seq, left, mid + <span style="color: #ff4500;">1</span>, right<span style="color: black;">&#41;</span>
&nbsp;
<span style="color: #808080; font-style: italic;">#二路并归排序</span>
<span style="color: #ff7700;font-weight:bold;">def</span> mergeSort<span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>:
    size = <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>seq<span style="color: black;">&#41;</span>
    _mergeSort<span style="color: black;">&#40;</span>seq, <span style="color: #ff4500;">0</span>, size - <span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">return</span> seq
&nbsp;
<span style="color: #ff7700;font-weight:bold;">if</span> __name__ == <span style="color: #483d8b;">'__main__'</span>:
    s = <span style="color: black;">&#91;</span><span style="color: #dc143c;">random</span>.<span style="color: black;">randint</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">100</span><span style="color: black;">&#41;</span> <span style="color: #ff7700;font-weight:bold;">for</span> i <span style="color: #ff7700;font-weight:bold;">in</span> <span style="color: #008000;">range</span><span style="color: black;">&#40;</span><span style="color: #ff4500;">0</span>, <span style="color: #ff4500;">20</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> s
    <span style="color: #ff7700;font-weight:bold;">print</span> <span style="color: #483d8b;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> directSelectSort<span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> directInsertSort<span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> bubbleSort<span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> quickSort<span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
    <span style="color: #ff7700;font-weight:bold;">print</span> mergeSort<span style="color: black;">&#40;</span><span style="color: #dc143c;">copy</span><span style="color: black;">&#40;</span>s<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span></pre></div></div>

<ul class="related_post"><li>2012 年 04 月 17 日 -- <a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">你做过的最有效的提高编程水平的一件事情是什么</a> (0)</li><li>2011 年 11 月 10 日 -- <a href="http://wubotao.com/archives/758.html" title="cx_Oracle安装出现的ImportError问题以及解决办法">cx_Oracle安装出现的ImportError问题以及解决办法</a> (0)</li><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/642.html" title="Python中is和==的区别和联系">Python中is和==的区别和联系</a> (1)</li><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/627.html" title="Python logging的使用">Python logging的使用</a> (0)</li><li>2011 年 10 月 25 日 -- <a href="http://wubotao.com/archives/730.html" title="数据库“null password given; logon denied”问题的解决">数据库“null password given; logon denied”问题的解决</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/713.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>光绪皇帝在北京大学的讲话</title>
		<link>http://wubotao.com/archives/706.html</link>
		<comments>http://wubotao.com/archives/706.html#comments</comments>
		<pubDate>Sat, 22 Oct 2011 03:42:47 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[社会]]></category>
		<category><![CDATA[评论]]></category>
		<category><![CDATA[光绪]]></category>
		<category><![CDATA[历史]]></category>
		<category><![CDATA[大学]]></category>
		<category><![CDATA[治国]]></category>
		<category><![CDATA[道德]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=706</guid>
		<description><![CDATA[站在千名京师大学堂学生前面，光绪沉默了片刻后，徐徐说道，“今天是京师大学堂正式开学的第一天，所谓学堂，在朕看来就是研习学问的地方。云轩阁我们的古人有一个传统叫作，坐而论道，今天，朕就和你们论一论这世间的道。”说罢，光绪抬起右手轻轻的往下压了压：“大家都坐下吧，朕也坐下。”

众人迟疑了片刻，都纷纷席地而坐，目光有些疑惑的望着前面的皇上。一旁的太监也端过来一把放有明黄色座垫的椅子，光绪一提衣襟下摆，静静的坐下说道：

“朕从识字开始，朕的老师就在教授朕为君之道，朕亲政后，也在不断学习治国之道。世间的道或许有所不同，但是朕一直在想，对于我们这样一个国家，什么才是真正的大道，什么才是让国家振兴之道！”

<span class="readmore"><a href="http://wubotao.com/archives/706.html" title="光绪皇帝在北京大学的讲话">阅读全文——共1663字</a></span>]]></description>
			<content:encoded><![CDATA[<p>站在千名京师大学堂学生前面，光绪沉默了片刻后，徐徐说道，“今天是京师大学堂正式开学的第一天，所谓学堂，在朕看来就是研习学问的地方。云轩阁我们的古人有一个传统叫作，坐而论道，今天，朕就和你们论一论这世间的道。”说罢，光绪抬起右手轻轻的往下压了压：“大家都坐下吧，朕也坐下。”</p>
<p>众人迟疑了片刻，都纷纷席地而坐，目光有些疑惑的望着前面的皇上。一旁的太监也端过来一把放有明黄色座垫的椅子，光绪一提衣襟下摆，静静的坐下说道：</p>
<p>“朕从识字开始，朕的老师就在教授朕为君之道，朕亲政后，也在不断学习治国之道。世间的道或许有所不同，但是朕一直在想，对于我们这样一个国家，什么才是真正的大道，什么才是让国家振兴之道！”</p>
<p>“这次开办京师大学堂遇到了很多阻力和质疑，大家也都清楚，这其中还死了人。死的这个人叫王长益，朕一直在想，他为什么会死呢？又是谁把他逼死的呢？朕想到了几百年前，也有一个姓王的人，叫王阳明，这个人大家都是知道的，他曾经说过一句话，破山中贼易，破心中贼难。所以朕以为，王长益之死，就是死于心中之贼！而这个贼，不仅在他心中，也在我们每个人心中，要论清世间的大道，首先就要破除这心中之贼。”</p>
<p>王长益，因为家贫如洗，在科举上面又是几番落第，颇不得意。这次听说就读京师大学堂每月都有生活津贴，将来毕业后还能谋得一个实缺，左思右想后，虽然心里也并不是十分情愿，但还是到京师大学堂报了名。不曾想，他的这一举动却惹来了同住在旅店里的其他学子们的讥讽和嘲笑。王长益为人忠厚老实，也不善言词，再加上心中多少也有些羞愧，对这些人的谩骂更加不敢还击，只是左躲右闪，尽量回避和那些学子们见面。谁料到有一天晚上，那群学子们在店中饮酒作对，一时兴起，竟然在王长益的床头贴了副对联。上联是:孝悌忠信礼义谦,下联是一二三四五六七。这副对联的上联缺了一个耻字，意思是骂王长益无耻。下联少了一个八，忘八，意思就是骂王长益是王八。那个时代的读书人名节观念甚重，王长益的面子又比较薄，再加上心胸不够开阔，受了这些天无数的气，心里郁结难遣。晚上躺在床上翻来覆去辗转难眠，想到科举失意，就读京师大学堂又招致如此的侮辱，一时气愤之下，竟然用床单在房间里面悬梁自尽了。</p>
<p>坐在下面的学子们隐隐的发出一些窃窃私语的声音，光绪淡淡一笑，停顿了一下接着说道：</p>
<p>“然而这个心中之贼究竟是什么呢？在朕看来，这第一个贼就是伪善！平常大家学习程朱理学，学到的无非是，存天理，灭人欲。可是翻翻我们的历史，历朝历代，靠圣人之学，仁义道德当真就能够治国平天下了？满口仁义道德是无法挽救一个国家的危亡的，你们想想，你们所学的四书五经、你们苦苦研习的八股文，能够抵抗洋人的坚船利炮吗？能够改变贪腐横行，土地兼并，流民千里，国家积弊丛生的局面吗？重名节而轻实务，这里面隐藏着的其实就是虚伪和虚弱。再说说你们，如果这次朝廷没有下旨，让京师大学堂的学子们毕业后，能够享有科举及第的待遇，你们能弃科举而就新学吗？朕不是责怪你们，朕只是希望你们每个人都能明白，道德改变不了一个人的命运，也根本改变不了一个国家的命运，空谈道德仁义，就是世间最大的伪善。”</p>
<p>“这第二个贼，就是守旧。说到这一点，朕想把17年前李鸿章写给恭王信里的一段话念给大家：中国士大夫沉浸于章句小楷之积习，武夫悍卒又多粗蠢而不加细心，以致所用非所学，所学非所用。无事则嗤外国之利器为奇技术巧，以为不必学；有事则惊外国之利器为变怪神奇，以为不能学……17年前李鸿章的这些话，至今仍然让朕感慨啊。17年的时间过去了，我们的士大夫，乃至我们这个国家依然如故。世间没有一成不变的道理，天下事穷则变，变则通。今日的世势，乃是三千年未有之危局，因循守旧，固步自封，只会让我们这个国家越来越落后，越来越衰弱。长此以往，国将不国啊。”</p>
<p>“所以朕今日说了这么多，就是想告诉大家，朕为什么坚持要开办这个京师大学堂，就是希望在座诸君，能够破除我们心中之贼，以国家强盛为己任，不骄狂，不自卑，正视现实，发愤图强。”</p>
<p>整个礼堂内鸦雀无声，连最初的窃窃私语都没有了，只有一片凝重的让人窒息的沉默。</p>
<ul class="related_post"><li>2011 年 05 月 29 日 -- <a href="http://wubotao.com/archives/544.html" title="汤唯:我是一个励志故事">汤唯:我是一个励志故事</a> (0)</li><li>2011 年 05 月 05 日 -- <a href="http://wubotao.com/archives/297.html" title="南宋怎样才能避免灭亡">南宋怎样才能避免灭亡</a> (0)</li><li>2011 年 05 月 01 日 -- <a href="http://wubotao.com/archives/251.html" title="美国一流大学与清华北大的最根本区别">美国一流大学与清华北大的最根本区别</a> (0)</li><li>2011 年 04 月 23 日 -- <a href="http://wubotao.com/archives/187.html" title="心愿">心愿</a> (0)</li><li>2011 年 04 月 13 日 -- <a href="http://wubotao.com/archives/100.html" title="最易被误读的十大职业排行榜">最易被误读的十大职业排行榜</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/706.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Android开发常用的Intent的URI及示例</title>
		<link>http://wubotao.com/archives/698.html</link>
		<comments>http://wubotao.com/archives/698.html#comments</comments>
		<pubDate>Sat, 08 Oct 2011 05:33:28 +0000</pubDate>
		<dc:creator>wubotao</dc:creator>
				<category><![CDATA[Android]]></category>
		<category><![CDATA[编程]]></category>
		<category><![CDATA[代码]]></category>

		<guid isPermaLink="false">http://wubotao.com/?p=698</guid>
		<description><![CDATA[以下是常用到的Intent的URI及其示例，包含了大部分应用中用到的共用Intent。

一、打开一个网页，类别是Intent.ACTION_VIEW

Uri uri = Uri.parse(“http://wubotao.com/”);

<span class="readmore"><a href="http://wubotao.com/archives/698.html" title="Android开发常用的Intent的URI及示例">阅读全文——共2855字</a></span>]]></description>
			<content:encoded><![CDATA[<p>以下是常用到的Intent的URI及其示例，包含了大部分应用中用到的共用Intent。</p>
<p>一、打开一个网页，类别是Intent.ACTION_VIEW</p>
<p>Uri uri = Uri.parse(“http://wubotao.com/”);</p>
<p>Intent intent = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>二、打开地图并定位到一个点</p>
<p>Uri uri = Uri.parse(“geo:52.76,-79.0342″);</p>
<p>Intent intent = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>三、打开拨号界面 ,类型是Intent.ACTION_DIAL</p>
<p>Uri uri = Uri.parse(“tel:10086″);</p>
<p>Intent intent = new Intent(Intent.ACTION_DIAL, uri);</p>
<p>四、直接拨打电话,与三不同的是，这个直接拨打电话，而不是打开拨号界面</p>
<p>Uri uri = Uri.parse(“tel:10086″);</p>
<p>Intent intent = new Intent(Intent.ACTION_CALL, uri);</p>
<p>五、卸载一个应用，Intent的类别是Intent.ACTION_DELETE</p>
<p>Uri uri = Uri.fromParts(“package”, “xxx”, null);</p>
<p>Intent intent = new Intent(Intent.ACTION_DELETE, uri);</p>
<p>六、安装应用程序,Intent的类别是Intent.ACTION_PACKAGE_ADDED</p>
<p>Uri uri = Uri.fromParts(“package”, “xxx”, null);</p>
<p>Intent intent = new Intent(Intent.ACTION_PACKAGE_ADDED, uri);</p>
<p>七、播放音频文件</p>
<p>Uri uri = Uri.parse(“file:///sdcard/download/everything.mp3″);</p>
<p>Intent intent = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>intent.setType(“audio/mp3″);</p>
<p>八、打开发邮件界面</p>
<p>Uri uri= Uri.parse(“mailto:admin@wubotao.com”);</p>
<p>Intent intent = new Intent(Intent.ACTION_SENDTO, uri);</p>
<p>九、发邮件,与八不同这里是将邮件发送出去，</p>
<p>Intent intent = new Intent(Intent.ACTION_SEND);</p>
<p>String[] tos = { “admin@wubotao.com” };</p>
<p>String[] ccs = { “webmaster@wubotao.com” };</p>
<p>intent.putExtra(Intent.EXTRA_EMAIL, tos);</p>
<p>intent.putExtra(Intent.EXTRA_CC, ccs);</p>
<p>intent.putExtra(Intent.EXTRA_TEXT, “I come from http://wubotao.com”);</p>
<p>intent.putExtra(Intent.EXTRA_SUBJECT, “http://wubotao.com”);intent.setType(“message/rfc882″);</p>
<p>Intent.createChooser(intent, “Choose Email Client”);</p>
<p>发送带附件的邮件</p>
<p>Intent intent = new Intent(Intent.ACTION_SEND);</p>
<p>intent.putExtra(Intent.EXTRA_SUBJECT, “The email subject text”);</p>
<p>intent.putExtra(Intent.EXTRA_STREAM, “file:///sdcard/mysong.mp3″);</p>
<p>intent.setType(“audio/mp3″);</p>
<p>startActivity(Intent.createChooser(intent, “Choose Email Client”));</p>
<p>十、发短信</p>
<p>Uri uri= Uri.parse(“tel:10086″);</p>
<p>Intent intent = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>intent.putExtra(“sms_body”, “I come from http://wubotao.com”);</p>
<p>intent.setType(“vnd.Android-dir/mms-sms”);</p>
<p>十一、直接发邮件</p>
<p>Uri uri= Uri.parse(“smsto://100861″);</p>
<p>Intent intent = new Intent(Intent.ACTION_SENDTO, uri);</p>
<p>intent.putExtra(“sms_body”, “3g android http://wubotao.com”);</p>
<p>十二、发彩信</p>
<p>Uri uri= Uri.parse(“content://media/external/images/media/23″);</p>
<p>Intent intent = new Intent(Intent.ACTION_SEND);</p>
<p>intent.putExtra(“sms_body”, “3g android http://wubotao.com”);</p>
<p>intent.putExtra(Intent.EXTRA_STREAM, uri);</p>
<p>intent.setType(“image/png”);</p>
<p>十三、# Market 相关</p>
<p>1.  寻找某个应用</p>
<p>Uri uri = Uri.parse(“market://search?q=pname:pkg_name”);</p>
<p>Intent it = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>startActivity(it);</p>
<p>//where pkg_name is the full package path for an application</p>
<p>2. 显示某个应用的相关信息</p>
<p>Uri uri = Uri.parse(“market://details?id=app_id”);</p>
<p>Intent it = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>startActivity(it);</p>
<p>//where app_id is the application ID, find the ID</p>
<p>//by clicking on your application on Market home</p>
<p>//page, and notice the ID from the address bar</p>
<p>十四、路径规划</p>
<p>Uri uri = Uri.parse(“http://maps.google.com/maps?f=d&amp;saddr=startLat%20startLng&amp;daddr=endLat%20endLng&amp;hl=en”);</p>
<p>Intent it = new Intent(Intent.ACTION_VIEW, uri);</p>
<p>startActivity(it);</p>
<ul class="related_post"><li>2011 年 08 月 06 日 -- <a href="http://wubotao.com/archives/642.html" title="Python中is和==的区别和联系">Python中is和==的区别和联系</a> (1)</li><li>2012 年 04 月 17 日 -- <a href="http://wubotao.com/archives/781.html" title="你做过的最有效的提高编程水平的一件事情是什么">你做过的最有效的提高编程水平的一件事情是什么</a> (0)</li><li>2011 年 11 月 10 日 -- <a href="http://wubotao.com/archives/758.html" title="cx_Oracle安装出现的ImportError问题以及解决办法">cx_Oracle安装出现的ImportError问题以及解决办法</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/724.html" title="Android下拉刷新效果实现">Android下拉刷新效果实现</a> (0)</li><li>2011 年 10 月 22 日 -- <a href="http://wubotao.com/archives/713.html" title="多种排序算法的Python实现">多种排序算法的Python实现</a> (0)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://wubotao.com/archives/698.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

