<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7862003197910285039</id><updated>2011-07-30T22:20:22.967-07:00</updated><category term='Android'/><title type='text'>通吃岛</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-8114703461558077193</id><published>2011-02-03T21:56:00.001-08:00</published><updated>2011-02-03T21:56:48.213-08:00</updated><title type='text'>测试</title><content type='html'>&lt;div&gt;&lt;p&gt;&amp;#20351;&amp;#29992;android&amp;#23458;&amp;#25143;&amp;#31471;&amp;#12290;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-8114703461558077193?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/8114703461558077193/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=8114703461558077193' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/8114703461558077193'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/8114703461558077193'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2011/02/blog-post.html' title='测试'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total><georss:featurename>正新轮胎, 新中园路20号, Xiangqiao, Chaozhou, Guangdong, China</georss:featurename><georss:point>23.666671 116.628913</georss:point></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-1620543723794963712</id><published>2011-01-15T10:18:00.000-08:00</published><updated>2011-01-15T10:19:45.730-08:00</updated><title type='text'>给郭同学的回信</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; font-size: 14px; line-height: 25px; "&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;郭同学：&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;很高兴你考上了高中。去年爱心小站把你的成绩单转过来的时候，我着实在同事们面前炫耀了一下呢。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;高中的学习会比较紧张，特别是高三的时候，所以，最艰苦的日子还在以后，要有心理准备。可是，不管学习怎么忙，也要记住生活不是只有学习，还要做一些让自己开心的事情。你说你现在不打篮球了，这样不好。每天挤出半个小时去运动，不要丢掉自己的爱好，还能强壮身体，也许还能提高学习效率。不过要注意不要受伤。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;你把我称为“大恩人”，我其实不敢接受这样的称呼的。如果没有你自己的努力，没有考上高中，那么我也没法继续帮你，所以，你要感谢你自己，而且要明白一件事情，要让别人帮你，首先是你自己要尽最大的努力，让自己值得被帮。你的父母一直以来都在支持你，而且你说你哥哥也已经开始供你上学，这些亲人是你最应该感谢的，以后一定要好好报答。身边的老师同学也在帮你。如果没有爱心小站的老师们的努力，你和其它很多同学也许就没法得到资助，要记住他们。而我，只是做了最简单的事情，得到你的感谢，已经足够了。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;有一点我要向你强调，尽量学好英语。由于条件所限，初中的基础打得不是很好，不要紧，努力补上。从学习的角度上说，口语、听力、英文作文、完形填空当然都不能落下，但是我想告诉你，即便你努力过了之后说得不好，听得不好，写得不好，但是还是要做到能够基本看懂英文文章，这对将来你开拓视野很重要。最直接的办法，多背词汇。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;你说你想通过电话和我交谈。我是一个比较内向的人，如果你打电话给我，我可能不知道该说些啥，会显得很冷淡。我不想让你有这种印象，所以我们还是通过通信交流吧。&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span" style="word-break: break-all; word-wrap: break-word; font-family: 宋体; "&gt;努力！&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span lang="EN-US" style="word-break: break-all; word-wrap: break-word; "&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;==========================&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt; 这是我给我通过&lt;a href="http://www.aixin119.org/" style="word-break: break-all; word-wrap: break-word; color: rgb(44, 98, 158); text-decoration: none; "&gt;爱心小站&lt;/a&gt;所资助的一名云南大理的学生的回信。他每年都会写一封信给我，告诉我他的近况。最近一封信希望我给他电话号码，要通过电话感谢我。我觉得如果一直不回信的话不太好，所以写了以上的回信。&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;说起爱心小站，我是通过我弟弟知道的。几年之前，我眼中的弟弟还是有点不靠谱的，收入也不多。有一次回家，看到爱心小站的回馈信，知道他居然在资助一个学生，让我对他刮目相看。虽然一年只是几百块钱，但是对于那时候他的来说，也不是一笔随便的数目的。也从那时候起，我弟弟开始成熟了，帮我爸爸分担了很多事情，相比之下，这几年我倒是欠了父母非常多。&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;从那时候起我也通过爱心小站资助了两个学生，去年两人都考上了高中。&lt;/p&gt;&lt;p class="MsoNormal" style="word-break: break-all; word-wrap: break-word; margin-top: 1.5em; margin-right: 0px; margin-bottom: 1.5em; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;我对很多募捐机构都不是很信任，但是爱心小站是我能够信任的机构。给学生的助学捐款，会全部发给学生，不会截留任何行政费用（行政费用单独募捐），而这些学生都是经过背景调查的，都是实际的贫困生。而且每个学期爱心小站都会转来反馈表，里面有学习成绩、老师评语和学生自己写的情况描述。每名初中生的资助款是一年400元，高中生一年800元。网站（&lt;a href="http://www.aixin119.org/" style="word-break: break-all; word-wrap: break-word; color: rgb(44, 98, 158); text-decoration: none; "&gt;http://www.aixin119.org&lt;/a&gt;）会公布每笔收支。由于已经是学期中，目前已经没有学生需要资助，但是可以捐助一般性费用和图书项目。&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-1620543723794963712?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/1620543723794963712/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=1620543723794963712' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1620543723794963712'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1620543723794963712'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2011/01/blog-post.html' title='给郭同学的回信'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-1957698825466275775</id><published>2010-08-23T07:21:00.000-07:00</published><updated>2010-08-23T13:22:58.733-07:00</updated><title type='text'>菲律宾前警察和现警察联合劫持及残杀香港游客</title><content type='html'>&lt;span class="Apple-style-span" style="color: rgb(17, 17, 17); font-family: Arial, Helvetica, sans-serif; font-size: 12px; line-height: 19px; "&gt;&lt;pre class="note" style="margin-top: 10px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; font-family: Arial, Helvetica, sans-serif; word-wrap: break-word; white-space: pre-wrap; width: 590px; overflow-x: hidden; overflow-y: hidden; word-break: break-all; "&gt;&lt;span class="Apple-style-span" style="color: rgb(68, 68, 68); font-family: Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif; line-height: 25px; white-space: normal; font-size: 14px; "&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;傍晚回家打开电视，习惯性转到香港台看新闻，头条就是旅行社在菲律宾被劫持。当时的消息还是比较乐观，说菲律宾警方称能够和平解决。连续报导了10来分钟，进入广告时段，回来后播放了10几分钟其它常规的新闻。然后突然就转入直播，而且传来消息说人质已经全部遇害。&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;当时我觉得不大可能，因为劫持人的诉求是复职，那么其劫持行为应该是为了引起公众注意，所以选择了在热门景点劫持外国旅行团，而且前面还是放了部分体弱妇孺，理当是一种谈判姿态的。&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;接着就是菲律宾警方开始行动。看到他们抡锤子的时候，我当时的感觉是，完了，人应该全部死光了，否则没理由这样行动的。&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;以我这么一个纯外行的人看来，除非确认人质全部死亡，否则就或者不行动，选择行动则需要迅雷不及掩耳强攻，在最短时间进入车厢击毙枪手，尽量不给枪手时间开枪伤害人质。但是菲律宾警察怎么干的呢？花了整整一个小时，用锤子抡了两个侧面的窗户、旅游车前门、正面挡风玻璃、车尾玻璃，每个地方都敲几下烂了之后就转移地方，这是在干啥？简直就是在劝枪手————你开枪吧，杀人吧！&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;说老实话，当时我看得目瞪口呆！&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;最后看到有人质活着跑出来，我觉得太幸运了。枪手看来心理素质极强（原本就是高级警官），而且还是有点人性，两者缺一不可，否则何以抵挡菲律宾警察的“劝导”。&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;补：&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;1、有报道称，有遇难者是被“特警”用锤子打玻璃窗的时候直接砸死的。回忆我看到的现场直播，有这种可能，起码是砸晕。因为在砸破的窗玻璃附近，窗帘飘起，可以看到有一个人在那里，但是不见有任何移动。&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="word-break: break-all; word-wrap: break-word; "&gt;2、有报道称，枪手不是被菲律宾警察击毙的，而是人质反抗夺下枪支后击毙。我也觉得非常有可能，因为我当时就很疑惑，不见任何行动，为何枪手突然就死亡，而且尸体被塞出车门，所以也不可能是吞枪自杀。&lt;/div&gt;&lt;/span&gt;&lt;/pre&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-1957698825466275775?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/1957698825466275775/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=1957698825466275775' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1957698825466275775'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1957698825466275775'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/08/blog-post.html' title='菲律宾前警察和现警察联合劫持及残杀香港游客'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-1076900929612059150</id><published>2010-07-21T21:33:00.001-07:00</published><updated>2010-07-21T21:33:52.955-07:00</updated><title type='text'>骗子新手段</title><content type='html'>&lt;div&gt;接到一个电话：&lt;/div&gt;&lt;div&gt;-请问是太白电子科技有限公司的麦经理吗？&lt;/div&gt;&lt;div&gt;-是&lt;/div&gt;&lt;div&gt;-我是福田区工商局法制科的，现在统一要做企业的法制培训，blablabla……&lt;/div&gt;&lt;div&gt;-呃，哪里？&lt;/div&gt;&lt;div&gt;-福田区工商局法制科&lt;/div&gt;&lt;div&gt;-那怎么是一个浙江的手机打给我呢？&lt;/div&gt;&lt;div&gt;-我们这不是手机，是网络电话（挂断）&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-1076900929612059150?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/1076900929612059150/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=1076900929612059150' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1076900929612059150'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/1076900929612059150'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/07/blog-post.html' title='骗子新手段'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-6666905627838478383</id><published>2010-05-05T06:25:00.000-07:00</published><updated>2010-05-05T07:02:42.638-07:00</updated><title type='text'>查询条件子集判断的解决思路</title><content type='html'>&lt;a href="http://home.wangjianshuo.com/"&gt;王建硕&lt;/a&gt;的百姓网发了一道&lt;a href="http://home.wangjianshuo.com/cn/20100505_ccceeieeaece.htm"&gt;公开面试题&lt;/a&gt;。刚开始的时候觉得挑战很大，但是王建硕后面做了澄清，发现其实并不难了。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;大体思路如下。本来想贴在王建硕的Blog的后面，结果杯具鸟，贴了几次都是500。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;------------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;如果是处理QueryBuilder的话，那简单很多哦。其实这里面最繁琐的一步就是解析字符串格式的Query。其实就算是字符串形式的，如果每个AND和OR都有括号括起来的话，处理也不复杂。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我不认为tyler durden的“很难找到一个通用的方法”的想法是对的。这应该有通用解决办法的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;初步思路就是把queryA和queryB分别规整为一系列的原子条件的AND集合的OR集合。例如，将&lt;/div&gt;&lt;div&gt;(A&amp;lt;10 OR A&amp;gt;20) AND (B&amp;lt;10 OR B&amp;gt;20)&lt;/div&gt;&lt;div&gt;变换成为：&lt;/div&gt;&lt;div&gt;(A&amp;lt;10 AND B&amp;lt;10) OR (A&amp;lt;10 AND B&amp;gt;20) OR (A&amp;gt;20 AND B&amp;lt;10) OR (A&amp;gt;20 AND B&amp;gt;20)&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;为方便叙述，我们将A&amp;lt;10、B&amp;gt;20等称为“原子条件”，将原子条件的AND集合，称为“条件集”。将条件集的OR集合，称为“查询”。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;要判断查询A是否为查询B的子集，需要将A的所有条件集都为B的子集。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;要判断一个条件集A'是否为查询B的子集，只需要A'为B的任意一个条件集的子集。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;要判断一个条件集A'是否为条件集B'的子集，需要A'的所有原子条件A''：或者在B'中没有相应的条目，或者B'中的相应条目的条件已经涵盖了A''，我相信这一步已经很容易做了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;-------------------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;写完了之后，发现已经有mikster的留言把上面这个过程用很数学的术语给描述过了。苍天作证，我是写完之后才看到那个留言的，绝对没有抄袭。 :-D&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;--------------------------------------&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;BTW，王建硕算是大牛了，怎么搞了这么囧的一个Blog Hosting啊。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-6666905627838478383?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/6666905627838478383/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=6666905627838478383' title='2 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/6666905627838478383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/6666905627838478383'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/05/blog500-querybuilderqueryandor-tyler.html' title='查询条件子集判断的解决思路'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-4104896241345361967</id><published>2010-03-30T08:58:00.000-07:00</published><updated>2010-03-30T09:07:22.878-07:00</updated><title type='text'>腾讯版Android QQ是个烂产品</title><content type='html'>今晚在&lt;a href="http://cnbeta.com/"&gt;cnBeta&lt;/a&gt;看到消息说&lt;a href="http://cnbeta.com/articles/107468.htm"&gt;腾讯发布了Android版QQ&lt;/a&gt;，马上上菜市场下载了一个。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;心想腾讯磨蹭了这么久才搞出来的东西，应该不会差吧。结果大跌眼镜。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;最大的问题，应该归类为Bug。在设置里面，可以设置接收或者屏蔽群消息，设置完了之后，所有的群都会变成一样的接收或屏蔽状态。单独的群可以设置个别的接收屏蔽设定。问题是，如果有任何一个群设置为接收，那么下次启动的时候（或者进入设置了之后退出之后），所有的群又都变成接收状态了。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;当年PC版的QQ，是强制开机启动的，直到最近两年才在安装的时候让你选是否开机启动。而作为手机QQ来说，开机启动不能说更加有需要，但是应该也是很有需要的选项，这个版本的QQ反倒没有提供自动启动的选项。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;另外，对于聊天记录，不能复制，不能点击里面的链接。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;作为一个QQ号小于10200的QQ老用户，用过的QQ产品其实不算多，但是这个是我用过的最烂的QQ产品。入手XT800后先后从菜市场下载过近百个应用，这个绝对是最烂的，没有之一。&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-4104896241345361967?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/4104896241345361967/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=4104896241345361967' title='1 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/4104896241345361967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/4104896241345361967'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/03/android-qq.html' title='腾讯版Android QQ是个烂产品'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-8580316581313978706</id><published>2010-03-08T02:36:00.000-08:00</published><updated>2010-03-08T02:56:07.836-08:00</updated><title type='text'>Google Map API 国内地图偏移的解决</title><content type='html'>由于国内地图采用的坐标系统和国际通用的不一样，所以如果直接用GPS取得的经纬度来请求Google Map，会发现有偏移。CSDN上有个&lt;a href="http://blog.csdn.net/dongmeng110"&gt;牛人&lt;/a&gt;找到了Google修正偏移的接口，&lt;a href="http://blog.csdn.net/dongmeng110/archive/2009/10/31/4750380.aspx"&gt;完美解决了这个问题&lt;/a&gt;。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;在使用他所说的方法之前，为了解决地图偏移问题，找了不少资料，发现对引起国内地图偏移的原因有所误解，也就是说，其实不是以前一直以为的有关部门瞎折腾。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;简单地说，地球不是一个完美的椭圆体，所以如何以经纬度及海拔来标识地球上面的一个点，与选择什么样的近似椭圆体是有关的。（外行表述，行家请指教）国际上比较通用的体系叫做WGS84，中国现在的地图则基本采用了北京54体系，另外国内还有一个西安80体系，看到资料貌似现在新建设的GIS系统还要采用一个2000年的标准。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;一个国家采用自己的标准，也不是只有中国这么干，貌似现在有上百个这类的坐标系。坐标系之间是可以互相转换的。首先，要将一个坐标系的经纬度和海拔BLH这三个数据，根据选择的椭圆形的长径和扁率来转换成称为大地坐标的XYZ，然后使用另外一个体系的长径和扁率来将XYZ转换成新的BLH。所有的坐标体系所选择的椭圆形的半径和扁率都是公开的，包括国内的这些。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;这样看起来貌似没问题，但是实际上通过这样的转换是无法得到正确的坐标的。因为各个坐标体系选择地球的哪个点来作为椭球的中心，以及坐标轴的方向，都不一样的。所以，在将XYZ转换成新的BLH之前，还需要对XYZ进行一次变换。外行的我不知道原因，只知道地球上各个点要进行变换所需要的参数是不一样的，而且是没法通过公式计算的。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;其它的坐标体系会把变换所需要的参数公开，但是北京54和西安80则只公开了这两者之间互转的参数，原因是基于国家安全的理由。所以，世界上的GIS系统支持很多坐标系，但是就是没法支持这两个，也增加了国内搞GIS的人很多麻烦。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;总而言之，国内采用自己的坐标系，不是特立独行瞎折腾，只不过……&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-8580316581313978706?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/8580316581313978706/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=8580316581313978706' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/8580316581313978706'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/8580316581313978706'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/03/google-map-api.html' title='Google Map API 国内地图偏移的解决'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-7813659547745751791</id><published>2010-03-06T10:22:00.000-08:00</published><updated>2010-03-06T10:38:48.832-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Android'/><title type='text'>Android开发：在Camera Preview上叠加信息</title><content type='html'>自从买了XT800之后，对Android的应用开发热情暴增。最近想尝试做一个现实增强的试验。所以，需要在摄像头的预览画面上面增加文字或者图形信息。&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;摄像头的预览网上的示例很多，都是用一个SurfaceView来做容器。所以要往预览画面上面写字，最直接的想法，当然是从SurfaceView那里锁定一个Canvas来画东西了。但是马上就会发现这种方法是不行的，因为这个SurfaceView必须设成SURFACE_TYPE_PUSH_BUFFERS这个类型，也就是不自己管理buffer，这样才能让预览画面由摄像头自己管理，所以无法取得Canvas。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;第二个思路，就是在用于预览的SurfaceView上面再叠加另外一个SurfaceView，用第二个SurfaceView来显示叠加信息。但是马上就会发现，此路依然不通，因为SurfaceView是没法设成透明的，叠加的信息显示出来了，但是预览画面却又会被遮盖掉。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;冥思苦想了几分钟，找到了办法：用一个AbsoluteLayout来装预览SurfaceView，然后编程添加类似TextView等内容动态添加到AbsoluteLayout里面。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;试验成功。下一步试验内容是获取罗盘状态和GPS坐标。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;关键代码：&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;div&gt;    @Override&lt;/div&gt;&lt;div&gt;    public void onCreate(Bundle savedInstanceState) {&lt;/div&gt;&lt;div&gt;        super.onCreate(savedInstanceState);&lt;/div&gt;&lt;div&gt;        &lt;/div&gt;&lt;div&gt;        getWindow().setFormat(PixelFormat.TRANSLUCENT);&lt;/div&gt;&lt;div&gt;        requestWindowFeature(Window.FEATURE_NO_TITLE);&lt;/div&gt;&lt;div&gt;        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);&lt;/div&gt;&lt;div&gt;    &lt;/div&gt;&lt;div&gt;        layout=new AbsoluteLayout(this);&lt;/div&gt;&lt;div&gt;        setContentView(layout);&lt;/div&gt;&lt;div&gt;        &lt;/div&gt;&lt;div&gt;        surfaceCamera=new SurfaceView(this);&lt;/div&gt;&lt;div&gt;        holderCamera=surfaceCamera.getHolder();&lt;/div&gt;&lt;div&gt;        holderCamera.addCallback(new CameraCallback());&lt;/div&gt;&lt;div&gt;        holderCamera.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);&lt;/div&gt;&lt;div&gt;        holderCamera.setKeepScreenOn(true);&lt;/div&gt;&lt;div&gt;        layout.addView(surfaceCamera);&lt;/div&gt;&lt;div&gt;        &lt;/div&gt;&lt;div&gt;        layout.setOnTouchListener(new View.OnTouchListener() {&lt;/div&gt;&lt;div&gt;        &lt;span class="Apple-tab-span" style="white-space:pre"&gt; &lt;/span&gt;int i=0;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;@Override&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;public boolean onTouch(View v, MotionEvent event) {&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;try&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;TextView tv=new TextView(Main.this);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;tv.setText("x");&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;AbsoluteLayout.LayoutParams lp=new AbsoluteLayout.LayoutParams(&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;ViewGroup.LayoutParams.WRAP_CONTENT,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;ViewGroup.LayoutParams.WRAP_CONTENT,&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;       &lt;/span&gt;(int)event.getX(),(int)event.getY());&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;layout.addView(tv,lp);&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;i+=10;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;}catch(Exception e)&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;{&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;     &lt;/span&gt;Toast.makeText(Main.this, e.toString(), Toast.LENGTH_LONG).show();&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;    &lt;/span&gt;return false;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;   &lt;/span&gt;}&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-tab-span" style="white-space:pre"&gt;  &lt;/span&gt;});&lt;/div&gt;&lt;div&gt;    }&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-7813659547745751791?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/7813659547745751791/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=7813659547745751791' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/7813659547745751791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/7813659547745751791'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2010/03/androidcamera-preview.html' title='Android开发：在Camera Preview上叠加信息'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-477825516149560399</id><published>2009-12-31T10:05:00.000-08:00</published><updated>2009-12-31T12:18:07.108-08:00</updated><title type='text'>喉舌社评：迎来和谐网络的新春天</title><content type='html'>&lt;span class="Apple-style-span"   style="  color: rgb(68, 68, 68); line-height: 25px; font-family:Verdana, 'Lucida Grande', Arial, Helvetica, sans-serif;font-size:14px;"&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;一段时间以来，我各级党政机关忙于学习八荣八耻、落实科学发展观、构建和谐社会、提升国家经济、改善人民生活，无暇对互联网内容进行监管，致使极少数坏分子抓住这个漏洞，大量在网上发布低俗、非法的内容，对人民群众的生活造成严重的消极影响。&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;这一不正常现象，引起我中央领导的高度重视。自前个月底以来，经过严密部署，我中共中央电视台首先吹响了反低俗的号角，我工信部、中国移动、出版署、中国互联网络信息中心、互联网违法和不良信息举报中心、各级通管局、电信公司、&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;IDC&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;密切配合，对各低俗非法网站轮番出击，让这些低俗非法网站的负责人、经营人在人民机关的铁拳下瑟瑟发抖！据不完全统计，到目前为止，已经关停&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;IDC&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;机房&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;34.8&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;处，关停低俗非法网站&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;15873.62&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;个，删除低俗非法信息&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;8347693848.328&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;条次，极大的打击了低俗分子的嚣张气焰。&lt;/span&gt;&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;消息传来，各地各族群众欢欣鼓舞，积极投入到配合反低俗的运动中，纷纷以文章、歌曲等形式表达自己内心的喜悦。&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;农民刘大娘就是其中之一。刘大娘本来有个壮实的儿子，但是因为受到低俗信息的毒害，无心务农，导致家里的田地多年撂荒，家庭生活陷入困难。反低俗运动启动之后，她的儿子终于从低俗信息中脱身出来，重新恢复了积极向上的生活作风，家里的收成也好起来了。刘大娘谈到这些事情的时候，忍不住含着热泪说：“多亏了党的政策好啊！”&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;人民教师张老师则是通过作诗表达自己的兴奋之情：反俗号角一声鸣，四方发动来关停；低级黄色无藏处，喜看神州网络清！&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span class="Apple-style-span"  style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;&lt;o:p style="word-break: break-all; word-wrap: break-word; "&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="p0" style="word-break: break-all; word-wrap: break-word; margin-top: 0pt; margin-right: 0px; margin-bottom: 0pt; margin-left: 0px; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; "&gt;&lt;span style="word-break: break-all; word-wrap: break-word;   font-family:宋体;font-size:10.5pt;"&gt;现在反低俗工作虽然已经取得很大的成绩，但是我们要清醒地看到，漫长的征程才刚刚开始，我们只有常抓不懈，才能避免低俗内容的死灰复燃。今天，&lt;span style="word-break: break-all; word-wrap: break-word; font-family:Times New Roman;"&gt;2010&lt;/span&gt;&lt;span style="word-break: break-all; word-wrap: break-word; font-family:宋体;"&gt;年春天的脚步已经响起，让我们团结在以不允许的内容同志为总书记的党中央周围，把反低俗的工作进行到底！&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-477825516149560399?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/477825516149560399/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=477825516149560399' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/477825516149560399'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/477825516149560399'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2009/12/blog-post.html' title='喉舌社评：迎来和谐网络的新春天'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-4930508696450369239</id><published>2009-05-10T08:58:00.000-07:00</published><updated>2009-05-10T09:03:05.439-07:00</updated><title type='text'>Professional ASP.NET MVC 1.0 第一章 NerdDinner 中译 Part 2</title><content type='html'>&lt;h3&gt;文件-&gt;新建项目&lt;/h3&gt;&lt;p&gt;在Visual Studio 2008或者免费的Visual Web Developer 2008 Express选择&lt;b&gt;文件&lt;/b&gt;&lt;b&gt;-&gt;&lt;/b&gt;&lt;b&gt;新建项目&lt;/b&gt;菜单，从而开始我们的NerdDinner应用。&lt;/p&gt;&lt;p&gt;这将引发“新建项目”对话框。我们选择对话框左手边的“Web”节点，然后选择右边的“ASP.NET MVC Web Application”工程模板，这就创建了一个新的ASP.NET MVC应用：&lt;/p&gt;&lt;p&gt;&lt;img height="181" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzeM_jlbI/AAAAAAAAAHs/NHwDNJdyodE/s720/2-1.gif" width="240" /&gt; &lt;/p&gt;&lt;p&gt;我们把工程命名为“NerdDinner”，然后点击“确定”创建它。&lt;/p&gt;&lt;p&gt;当我们点击“确定”时，Visual Studio还会显示一个额外的对话框，提示我们是否同时为这个新应用创建一个单元测试工程。这个单元测试工程能够让我们建立自动化的测试来检验应用的功能和行为（教程的稍后部分会覆盖到这个范围）。&lt;/p&gt;&lt;p&gt;&lt;img height="170" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzeWuszQI/AAAAAAAAAH0/rc5-yJh9yoQ/2-2.gif" width="240" /&gt; &lt;/p&gt;&lt;p&gt;“测试框架”下拉框会填入机器上面已经安装的所有可用的ASP.NET MVC单元测试工程模板。可以下载NUnit、MBUnit和XUnit版本。也支持内置的Visual Studio单元测试框架。&lt;/p&gt;&lt;p&gt;&lt;i&gt;注意：只有Visual Studio 2008&lt;/i&gt;&lt;i&gt;专业版和更高版本才有Visual Studio&lt;/i&gt;&lt;i&gt;单元测试框架。如果你用的是VS 2008&lt;/i&gt;&lt;i&gt;标准版或者Visual Web Developer 2008 Express&lt;/i&gt;&lt;i&gt;你需要去下载安装ASP.NET MVC&lt;/i&gt;&lt;i&gt;的NUnit&lt;/i&gt;&lt;i&gt;、MBUnit&lt;/i&gt;&lt;i&gt;或者XUnit&lt;/i&gt;&lt;i&gt;扩展，这样这个对话框才会显示。如果这些测试框架都没有安装，这个对话框不会显示。&lt;/i&gt;&lt;/p&gt;&lt;p&gt;我们将使用默认的“NerdDinner.Tests”来命名建立的测试工程，用“Visual Studio Unit Test”框架选项。当我们点击“OK”按钮后，Visual Studio就会创建一个解决方案，里面有两个工程，一个是Web应用，另外一个是单元测试：&lt;/p&gt;&lt;p&gt;&lt;img height="426" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbzec1zopI/AAAAAAAAAH8/6IbJxuMDLD0/2-3.gif" width="288" /&gt; &lt;/p&gt;&lt;h4&gt;考察NerDinner目录结构&lt;/h4&gt;&lt;p&gt;当你用Visual Studio创建了一个新的ASP.NET MVC应用，它会自动地在工程里面添加一些文件和目录：&lt;/p&gt;&lt;p&gt;&lt;img height="331" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzejWoYzI/AAAAAAAAAIE/plTa-IMmcq8/2-4.gif" width="296" /&gt; &lt;/p&gt;&lt;p&gt;ASP.NET MVC工程默认会有6个顶层目录：&lt;/p&gt;&lt;table cellspacing="0" cellpadding="0" border="1"&gt;&lt;tbody&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;&lt;b&gt;目录&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;&lt;b&gt;用途&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/Controllers&lt;/p&gt;&lt;/td&gt;&lt;td valign="top" width="438"&gt;&lt;p&gt;放置处理URL请求的控制器类的地方&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/Models&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;放置表示与操作数据的类的地方&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/Views&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;放置负责渲染输出的UI模板文件的地方&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/Scripts&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;放置JavaScript库文件和脚本（.js）&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/Content&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;放置css和图片文件，以及其它非动态/非JavaScript的内容&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;      &lt;tr&gt;        &lt;td valign="top" width="130"&gt;&lt;p&gt;/App_Data&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top" width="438"&gt;&lt;p&gt;放置想要读写的保存数据的文件&lt;/p&gt;       &lt;/td&gt;      &lt;/tr&gt;    &lt;/tbody&gt;&lt;/table&gt;&lt;p&gt;ASP.NET MVC并不硬性要求这样的结构。实际上，大型应用的开发者一般会把这个应用分散到多个工程中以便维护（例如：通常会从Web应用分出数据模型类到独立的类库工程）。不过，默认的工程结构确实提供了一个很好的默认目录惯例，用它我们能够保持我们应用的有关内容整洁。&lt;/p&gt;&lt;p&gt;展开 /Controllers 目录，会发现Visual Studio默认在项目里面添加了两个控制器类：HomeController和AccountController：&lt;/p&gt;&lt;p&gt;&lt;img height="372" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbze5RirII/AAAAAAAAAIM/2MnZJ04s0Wk/2-5.gif" width="240" /&gt; &lt;/p&gt;&lt;p&gt;展开 /Views 目录，会发现项目中添加了三个子目录：/Home、/Account和 /Shared，每个子目录里面还有几个模板文件：&lt;/p&gt;&lt;p&gt;&lt;img height="541" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzpbXltBI/AAAAAAAAAIU/IaQJc4CfhoQ/2-6.gif" width="279" /&gt; &lt;/p&gt;&lt;p&gt;展开 /Content 和 /Script 目录，会发现有一个用于为整个网站的HTML提供样式的 Site.css 文件，还有为应用提供ASP.NET AJAX和jQuery支持的JavaScript库：&lt;/p&gt;&lt;p&gt;&lt;img height="513" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzpgGlCaI/AAAAAAAAAIc/AVTnl_nM_1U/2-7.gif" width="272" /&gt; &lt;/p&gt;&lt;p&gt;展开NerdDinner.Test项目，会发现包含两个控制器类的单元测试的两个类：&lt;/p&gt;&lt;p&gt;&lt;img height="258" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbzp2Gqi9I/AAAAAAAAAIk/RIfN-Spc9xg/2-8.gif" width="260" /&gt; &lt;/p&gt;&lt;p&gt;Visual Studio添加的这些默认文件提供给我们一个可运行的应用的基本结构：主页，关于页，账户登录、登出、注册页，还有一个未处理错误的页面（全部都已烹调完毕，开罐即食）。&lt;/p&gt;&lt;h4&gt;运行NerdDinner应用&lt;/h4&gt;&lt;p&gt;我们可以选择 &lt;b&gt;调试-&gt;&lt;/b&gt;&lt;b&gt;启动调试&lt;/b&gt; 或者 &lt;b&gt;调试-&gt;&lt;/b&gt;&lt;b&gt;开始执行(&lt;/b&gt;&lt;b&gt;不调试)&lt;/b&gt; 菜单项来运行工程：&lt;/p&gt;&lt;p&gt;&lt;img height="200" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbzp314WjI/AAAAAAAAAIs/frVouthR2wM/2-9.gif" width="309" /&gt; &lt;/p&gt;&lt;p&gt;这将启动Visual Studio内置的ASP.NET Web服务器，并且运行我们的应用：&lt;/p&gt;&lt;p&gt;&lt;img src="http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzqG3ldII/AAAAAAAAAI0/RT-ywq4-lUQ/2-a.gif" /&gt; &lt;/p&gt;&lt;p&gt;下面是我们的新项目的主页（&lt;a href="url:%E2%80%9C/"&gt;URL:“/&lt;/a&gt;”）：&lt;/p&gt;&lt;p&gt; &lt;img height="81" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz0OS6veI/AAAAAAAAAI8/rSbyQe85Z7k/s720/2-b.gif" width="240" /&gt;&lt;/p&gt;&lt;p&gt;点击“About”标签显示关于页（&lt;a href="url:%E2%80%9C/Home/About"&gt;URL:“/Home/About&lt;/a&gt;”）：&lt;/p&gt;&lt;p&gt; &lt;img height="80" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz0KjaclI/AAAAAAAAAJE/4tb_NfM9Z3w/s720/2-c.gif" width="240" /&gt;&lt;/p&gt;&lt;p&gt;点击右上角的“Log On”链接进入登录页（&lt;a href="url:%E2%80%9C/Account/LogOn"&gt;URL:“/Account/LogOn&lt;/a&gt;”）：&lt;/p&gt;&lt;p&gt; &lt;img height="136" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz0dZoejI/AAAAAAAAAJM/_n0c494jCCw/s720/2-d.gif" width="240" /&gt;&lt;/p&gt;&lt;p&gt;如果我们没有登录帐号，可以点击注册链接（&lt;a href="url:%E2%80%9C/Account/Register"&gt;URL:“/Account/Register&lt;/a&gt;”）来创建一个帐号：&lt;/p&gt;&lt;p&gt; &lt;img height="158" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz0b58oDI/AAAAAAAAAJU/e6QVRpWuoYU/s720/2-e.gif" width="240" /&gt;&lt;/p&gt;&lt;p&gt;实现上述主页、关于页、登录/登出/注册功能的代码，在我们创建新工程的时候已经默认添加了。我们将用它来作为我们的应用的起点。&lt;/p&gt;&lt;h4&gt;测试NerdDinner应用&lt;/h4&gt;&lt;p&gt;如果我们用的是Visual Studio 2008的专业版或者更高的版本，我们就能够使用其内置的单元测试IDE支持来测试项目：&lt;/p&gt;&lt;p&gt;&lt;img height="126" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz0qPMTkI/AAAAAAAAAJc/2LpAR1qEYzs/2-f.gif" width="240" /&gt; &lt;/p&gt;&lt;p&gt;选择上述的任何一个选项将会打开IDE里面的“测试结果”窗格，提供给我们新工程所包含的覆盖了内置功能的27个单元测试的通过/失败状态：&lt;/p&gt;&lt;p&gt;&lt;img height="126" src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sgbz4jAoLyI/AAAAAAAAAJk/V1S_MPJ-sf0/s720/2-g.gif" width="240" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-4930508696450369239?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/4930508696450369239/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=4930508696450369239' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/4930508696450369239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/4930508696450369239'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2009/05/professional-aspnet-mvc-10-nerddinner_10.html' title='Professional ASP.NET MVC 1.0 第一章 NerdDinner 中译 Part 2'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0v0X0RTfCrg/SgbzeM_jlbI/AAAAAAAAAHs/NHwDNJdyodE/s72-c/2-1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7862003197910285039.post-175047937077444375</id><published>2009-05-04T07:07:00.000-07:00</published><updated>2009-05-04T07:20:49.354-07:00</updated><title type='text'>Professional ASP.NET MVC 1.0 第一章 NerdDinner 中译 Part 1</title><content type='html'>&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;译序&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;ASP.NET MVC看来是一个好东西，也许以后会用到。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Rob Conery、Scott Hanselman、Phil Haack和Scott Guthrie的《Professional ASP.NET MVC 1.0》的第一章讲述了用ASP.NET MVC建立一个完整系统的整个过程，虽然只是一章，但是却是学习ASP.NET MVC的一个很好的入门教材。而且这一章是以CC协议发布的，因此，翻译它貌似没有版权问题。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;翻译一本书应该是学习它的最好方法了。希望不会太监。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;译文当然也是CC发布。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-weight: bold;"&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;NerdDinner&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;学习一个新的框架的最好办法莫过于用它弄弄一些东西。第一章就是从头过一遍来看怎么用ASP.NET MVC来建立一个五脏俱全的小麻雀，同时介绍隐藏其后的一些核心概念。&lt;/div&gt;&lt;div&gt;我们准备建立的这个应用名叫"NerdDinner"。NerdDinner让人们可以方便地在线找到和组织宴会：&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sf73tpGJjjI/AAAAAAAAAG0/q0GTro2BTlg/s320/1+-+1.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 238px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331971372351065650" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;NerdDinner允许注册用户创建、编辑及删除宴会。整个应用会执行一系列的验证和业务规则：&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_0v0X0RTfCrg/Sf74HjBbhcI/AAAAAAAAAG8/hoFA3Ca8jIM/s320/1+-+2.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 281px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331971817397257666" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;网站的访问者能够搜索到附近举办的宴会：&lt;/div&gt;&lt;div&gt;&lt;img src="http://4.bp.blogspot.com/_0v0X0RTfCrg/Sf74d3MsvFI/AAAAAAAAAHE/RWStXbHrFAs/s320/1+-+3.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 245px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331972200770354258" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;点击一个宴会将会进入一个详细介绍页面：&lt;/div&gt;&lt;div&gt;&lt;img src="http://2.bp.blogspot.com/_0v0X0RTfCrg/Sf74d9OmJHI/AAAAAAAAAHM/_UXr7odT9sA/s320/1+-+4.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 234px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331972202388923506" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;如果有兴趣则可以登录或者注册进入网站：&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_0v0X0RTfCrg/Sf74eCdYpQI/AAAAAAAAAHU/xViKFLI9Hco/s320/1+-+5.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 281px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331972203793130754" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;能够方便地报名参与腐败：&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_0v0X0RTfCrg/Sf74eRx3ABI/AAAAAAAAAHc/WtiRBRUXfZI/s320/1+-+6.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 234px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331972207905538066" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;img src="http://1.bp.blogspot.com/_0v0X0RTfCrg/Sf74eVMXwgI/AAAAAAAAAHk/_xgiYi0eEXo/s320/1+-+7.gif" style="cursor:pointer; cursor:hand;width: 320px; height: 234px;" border="0" alt="" id="BLOGGER_PHOTO_ID_5331972208822043138" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;我们将在可视工作室（Visual Studio啦:）里面用 文件-&gt;新工程 命令来创建一个全新的ASP.NET MVC工程，开始实施NerdDinner这个应用。然后我们将逐步增加功能特性。一路走下去，我们将覆盖到如下课题：创建数据库、建立含有业务规则验证的模型、实现数据列表/细节的UI、提供CRUD（Create创建、Update更新、Delete删除）表单支持、实现高效的数据分页、用母版页和局部来重用UI、使用身份认证和授权来使应用安全、使用AJAX来发起动态更新和交互地图支持、实现自动化的单元测试。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;你可以根据本章的内容一步步地建立自己的NerdDinner拷贝。另外，你也可以从下面这个网址下载一个完整的源代码版本： &lt;a href="http://tinyurl.com/aspnetmvc"&gt;http://tinyurl.com/aspnetmvc&lt;/a&gt; 。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;你既可以用Visual Studio 2008也可以用免费的Visual Web Developer 2008 Express来建立这个应用。你可以将数据库建立在SQL Server上，也可以用免费的SQL Server Express。&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;你可以用Microsoft Web Platform Installer来安装ASP.NET MVC、Visual Web Developer 2008和SQL Server Express。Microsoft Web Platform Installer可以在此获得： &lt;a href="http://www.microsoft.com/web/downloads"&gt;http://www.microsoft.com/web/downloads&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7862003197910285039-175047937077444375?l=qmigh.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://qmigh.blogspot.com/feeds/175047937077444375/comments/default' title='帖子评论'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=7862003197910285039&amp;postID=175047937077444375' title='0 条评论'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/175047937077444375'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7862003197910285039/posts/default/175047937077444375'/><link rel='alternate' type='text/html' href='http://qmigh.blogspot.com/2009/05/professional-aspnet-mvc-10-nerddinner.html' title='Professional ASP.NET MVC 1.0 第一章 NerdDinner 中译 Part 1'/><author><name>qmigh</name><uri>http://www.blogger.com/profile/09717743187972026751</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_0v0X0RTfCrg/Sf73tpGJjjI/AAAAAAAAAG0/q0GTro2BTlg/s72-c/1+-+1.gif' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
