﻿<?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://blog.jobbole.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jobbole.com</link>
	<description>伯乐在线 博客</description>
	<lastBuildDate>Thu, 23 Feb 2012 03:04:10 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>技术工程师的能力与目标</title>
		<link>http://blog.jobbole.com/13692/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e6%258a%2580%25e6%259c%25af%25e5%25b7%25a5%25e7%25a8%258b%25e5%25b8%2588%25e7%259a%2584%25e8%2583%25bd%25e5%258a%259b%25e4%25b8%258e%25e7%259b%25ae%25e6%25a0%2587</link>
		<comments>http://blog.jobbole.com/13692/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 03:04:10 +0000</pubDate>
		<dc:creator>童海波</dc:creator>
				<category><![CDATA[程序员]]></category>
		<category><![CDATA[工程师]]></category>
		<category><![CDATA[职业发展]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13692</guid>
		<description><![CDATA[<p id="">曾经有这样试验，随机选择一组对象进行工作的自评，几乎所有对象的自评分都在实际成绩的平均分以上。在工程师团队中也不例外，许多工程师有这样的困惑，自己觉得工作已经做得不错，但是上司好像察觉不到，甚至还对自己的工作吹毛求疵。如果有个合适参照标准，工程师或许就可以更好的对自己工作进行自评。</p>
管理者也同样面临类似困惑，在一个组织中，需要定期对团队中的成员进行考核及晋升，但是考核的标准是什么？小团队中主要取决于管理者的意志；大型组织中l流程会更规范，但也存在考核者凭感觉来给被评估者打分的情况，或者是考核者心中的衡量标准千差万别。

从工程师自我提升追求及职业规划的角度，情况会更复杂。每一个工程师都有不同的追求目标，孟岩有一篇很有影响力的《<a href="http://blog.csdn.net/myan/article/details/3247071">技术路线的选择重要但不具有决定性</a>》，文中工程师的追求类型被描述成事业目标型、团队精英型、技术高手型、得过且过或养家糊口型四种。文中将“独特的个性知识经验组合”看做是工程师的核心竞争力，不过对于这个经验的组合不同人会有不同的理解。

从团队或者企业的角度来看，主要从团队的贡献角度来评估技术工程师的成绩，就如同评估一个科学家的成看他看对人类的贡献类似。离开了环境，单纯评估技术没有意义。比如一个技术人员对Linux内核看得滚瓜烂熟，单就这一点并不能看到太大直接价值。

但是在业界，知识点的重要性通常被放大了，业界也形成了一些非理性的氛围。工程师会努力学习某个技术(如C++语言)的方方面面，即使大部分场合只用到了其中小部分功能。技术管理者在招聘、考核、晋升等过程中也通常把知识点放在一个很重要的地位，面试题中会出现工作中并不常用的领域的各种知识点。

这跟前几天某条关于<a href="http://weibo.com/1187986757/y63WN8rKy">大学教育的微博</a>有异曲同工之妙，大学教育经历了全部是知识点的教育，慢慢意识到需要培养的能力不仅是知识点，而主要应是独立思考能力。

技术人员追求的也不仅是知识点，而是在专业领域正确做事的方法及达成目标的能力。两个同时入职的员工，一段时间后技术好的那个就发展得好吗？还是有更好做事方法及能达成目标的人更容易得到认可？

我认为一个好的工程师必要的能力

<strong>设计能力</strong>

设计能力参见前文技术评审中关于设计的描述，简要的说就是具备设计简洁、易于扩展及维护的功能及特性能力。

需要补充一个设计方面的anti pattern，选择合适的技术及架构，意味着不引入及增加不必要的抽象层或框架，并提供高质量、稳定、高效、安全的代码。不少能力还不错的人员有这个缺点，一个简单的项目，出于追求流行或者对于某项技术的崇拜心理，引入了复杂的技术或框架，对于个人来说确实提高了见识，增加了业内交流的资本，但是对于组织来说这种锻炼却是团队成效的噩梦，对于技术从业人员来说，不盲目引入不必要的高深技术来保证项目进展是一种基本的职业素养。

此外设计中还有一个隐含的条件，就是选择的方案能相对减少开发周期，加快交付时间。也就是下一点介绍的。

<strong>交付能力</strong>

通俗的说就是不管发生了什么，都能按时交付。
充分考虑自身技术能力、项目依赖、队员排期冲突、负面情绪、技术方案风险、未预知的技术障碍、需求变化等。
具备为功能的设计做取舍的能力，但功能取舍并不以牺牲产品的核心愿景为前提。

<strong>规范与协作</strong>

在编码前能够完成模块或特性的清晰架构或设计文档，并保持在开发过程以及代码重构过程中文档的一致性。
推动及促进团队的代码及设计规范，并确保执行过程中与规范的一致，并能根据实际情况对流程及规范提供优化建议。
编写的代码通常当做团队的模板或者是最佳实践的设计模式。

<strong>团队效率贡献</strong>

有改善团队效率方面的贡献吗？比如做一个相似项目为何周期很长？为什么开发完成之后又花了比开发周期更长的时间调试或修改bug？
推进代码复用，你的代码和工具其他小组或部门愿意用吗，准备让他们用吗？有推动让他们用吗？
自动化体系来帮助提高测试、开发、debug、跟踪用户问题的效率
能够用服务化的方法来解决异构、多版本问题
有优化流程贡献？

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/90_hours_a_week.jpg"><img class="aligncenter size-full wp-image-13694" title="技术工程师的能力与目标" src="http://blog.jobbole.com/wp-content/uploads/2012/02/90_hours_a_week.jpg" alt="技术工程师的能力与目标" width="620" height="612" /></a>

已经不是那个独行侠或个人技术英雄的时代了，融入团队，多考虑对团队的贡献，更容易得到成长。

<strong>后记：</strong><em id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">职业发展方面话题比较大，不容易写好，本文也写得比较辛苦，改了两个晚上，暂不写类似话题。这也再次说明，当你有一个非常大的愿景（想当青年导师？），但系统能力还跟不上时，更应从小处着手。</em>]]></description>
			<content:encoded><![CDATA[<p id="">曾经有这样试验，随机选择一组对象进行工作的自评，几乎所有对象的自评分都在实际成绩的平均分以上。在工程师团队中也不例外，许多工程师有这样的困惑，自己觉得工作已经做得不错，但是上司好像察觉不到，甚至还对自己的工作吹毛求疵。如果有个合适参照标准，工程师或许就可以更好的对自己工作进行自评。</p>
<p>管理者也同样面临类似困惑，在一个组织中，需要定期对团队中的成员进行考核及晋升，但是考核的标准是什么？小团队中主要取决于管理者的意志；大型组织中l流程会更规范，但也存在考核者凭感觉来给被评估者打分的情况，或者是考核者心中的衡量标准千差万别。</p>
<p>从工程师自我提升追求及职业规划的角度，情况会更复杂。每一个工程师都有不同的追求目标，孟岩有一篇很有<span class='wp_keywordlink'><a href="http://www.amazon.cn/gp/product/B0044KME2E/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0044KME2E" title="影响力" rel="nofollow" target="_blank">影响力</a></span>的《<a href="http://blog.csdn.net/myan/article/details/3247071">技术路线的选择重要但不具有决定性</a>》，文中工程师的追求类型被描述成事业目标型、团队精英型、技术高手型、得过且过或养家糊口型四种。文中将“独特的个性知识经验组合”看做是工程师的核心竞争力，不过对于这个经验的组合不同人会有不同的理解。</p>
<p>从团队或者企业的角度来看，主要从团队的贡献角度来评估技术工程师的成绩，就如同评估一个科学家的成看他看对人类的贡献类似。离开了环境，单纯评估技术没有意义。比如一个技术人员对Linux内核看得滚瓜烂熟，单就这一点并不能看到太大直接价值。</p>
<p>但是在业界，知识点的重要性通常被放大了，业界也形成了一些非理性的氛围。工程师会努力学习某个技术(如C++语言)的方方面面，即使大部分场合只用到了其中小部分功能。技术管理者在招聘、考核、晋升等过程中也通常把知识点放在一个很重要的地位，面试题中会出现工作中并不常用的领域的各种知识点。</p>
<p>这跟前几天某条关于<a href="http://weibo.com/1187986757/y63WN8rKy">大学教育的微博</a>有异曲同工之妙，大学教育经历了全部是知识点的教育，慢慢意识到需要培养的能力不仅是知识点，而主要应是独立思考能力。</p>
<p>技术人员追求的也不仅是知识点，而是在专业领域正确做事的方法及达成目标的能力。两个同时入职的员工，一段时间后技术好的那个就发展得好吗？还是有更好做事方法及能达成目标的人更容易得到认可？</p>
<p>我认为一个好的工程师必要的能力</p>
<p><strong>设计能力</strong></p>
<p>设计能力参见前文技术评审中关于设计的描述，简要的说就是具备设计简洁、易于扩展及维护的功能及特性能力。</p>
<p>需要补充一个设计方面的anti pattern，选择合适的技术及架构，意味着不引入及增加不必要的抽象层或框架，并提供高质量、稳定、高效、安全的代码。不少能力还不错的人员有这个缺点，一个简单的项目，出于追求流行或者对于某项技术的崇拜心理，引入了复杂的技术或框架，对于个人来说确实提高了见识，增加了业内交流的资本，但是对于组织来说这种锻炼却是团队成效的噩梦，对于技术从业人员来说，不盲目引入不必要的高深技术来保证项目进展是一种基本的职业素养。</p>
<p>此外设计中还有一个隐含的条件，就是选择的方案能相对减少开发周期，加快交付时间。也就是下一点介绍的。</p>
<p><strong>交付能力</strong></p>
<p>通俗的说就是不管发生了什么，都能按时交付。<br />
充分考虑自身技术能力、项目依赖、队员排期冲突、负面情绪、技术方案风险、未预知的技术障碍、需求变化等。<br />
具备为功能的设计做取舍的能力，但功能取舍并不以牺牲产品的核心愿景为前提。</p>
<p><strong>规范与协作</strong></p>
<p>在编码前能够完成模块或特性的清晰架构或设计文档，并保持在开发过程以及代码<span class='wp_keywordlink'><a href="http://www.amazon.cn/gp/product/B003BY6PLK/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B003BY6PLK" title="重构" rel="nofollow" target="_blank">重构</a></span>过程中文档的一致性。<br />
推动及促进团队的代码及设计规范，并确保执行过程中与规范的一致，并能根据实际情况对流程及规范提供优化建议。<br />
编写的代码通常当做团队的模板或者是最佳实践的<span class='wp_keywordlink'><a href="http://www.amazon.cn/gp/product/B001130JN8/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B001130JN8" title="设计模式" rel="nofollow" target="_blank">设计模式</a></span>。</p>
<p><strong>团队效率贡献</strong></p>
<p>有改善团队效率方面的贡献吗？比如做一个相似项目为何周期很长？为什么开发完成之后又花了比开发周期更长的时间调试或修改bug？<br />
推进代码复用，你的代码和工具其他小组或部门愿意用吗，准备让他们用吗？有推动让他们用吗？<br />
自动化体系来帮助提高测试、开发、debug、跟踪用户问题的效率<br />
能够用服务化的方法来解决异构、多版本问题<br />
有优化流程贡献？</p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/90_hours_a_week.jpg"><img class="aligncenter size-full wp-image-13694" title="技术工程师的能力与目标" src="http://blog.jobbole.com/wp-content/uploads/2012/02/90_hours_a_week.jpg" alt="技术工程师的能力与目标" width="620" height="612" /></a></p>
<p>已经不是那个独行侠或个人技术英雄的时代了，融入团队，多考虑对团队的贡献，更容易得到成长。</p>
<p><strong>后记：</strong><em id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">职业发展方面话题比较大，不容易写好，本文也写得比较辛苦，改了两个晚上，暂不写类似话题。这也再次说明，当你有一个非常大的愿景（想当青年导师？），但系统能力还跟不上时，更应从小处着手。</em></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/10026/" title="前端工程师的职业发展路线在哪？">前端工程师的职业发展路线在哪？</a></li><li><a href="http://blog.jobbole.com/8255/" title="创业公司如何招聘优秀工程师">创业公司如何招聘优秀工程师</a></li><li><a href="http://blog.jobbole.com/5461/" title="一个10年程序员职业发展、总结和困境">一个10年程序员职业发展、总结和困境</a></li><li><a href="http://blog.jobbole.com/1308/" title="何戈洲：思想枷锁是程序员职业发展的绊脚石">何戈洲：思想枷锁是程序员职业发展的绊脚石</a></li><li><a href="http://blog.jobbole.com/949/" title="发掘优秀现场工程师时看重的10种品质">发掘优秀现场工程师时看重的10种品质</a></li><li><a href="http://blog.jobbole.com/408/" title="工程师在创业团队的技术挑战">工程师在创业团队的技术挑战</a></li><li><a href="http://blog.jobbole.com/136/" title="如何成为一名合格销售员">如何成为一名合格销售员</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13692/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>13个JavaScript图表图形绘制插件</title>
		<link>http://blog.jobbole.com/13671/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=13%25e4%25b8%25aajavascript%25e5%259b%25be%25e8%25a1%25a8%25e5%259b%25be%25e5%25bd%25a2%25e7%25bb%2598%25e5%2588%25b6%25e6%258f%2592%25e4%25bb%25b6</link>
		<comments>http://blog.jobbole.com/13671/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 02:10:46 +0000</pubDate>
		<dc:creator>黄利民</dc:creator>
				<category><![CDATA[程序员]]></category>
		<category><![CDATA[资源]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[图表]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13671</guid>
		<description><![CDATA[现在网络上又有越来越多的免费的JavaScript图表图形绘制插件。我之前给一家网站做过复杂的图形，我们用的是 highchart。在那段时间，没有很多可供选择的插件。但现在不同了，很容易就可以找到很多功能非常不错的图表库。个人而言，此类插件的上升，是因为：

1. Flash 过去是最佳解决方案，但很多人多在从那迁移；

2. <a href="http://blog.jobbole.com/12749/" target="_blank">现代浏览器</a>及其更强大的计算能力，使其在转化绘制实时数据方面的能力更佳；

3. 绘制矢量图的不同技术愈发成熟：VML、SVG 和 Canvas。

当然了，你需要仔细选择，以符合自身需求。正如前面提到的，正因使用了各种技术，因此一些支持Canvas的插件仅需要一个现代浏览器。

在这篇文章中，我们已收集 13 个JavaScript图表和图形绘制插件。少数是独立的框架，大多数支持条图、线图、饼图等基本图形，很多甚至支持更加复杂的图形，比如：维恩图、热图、进化树、二维散点图、二维散点气泡图、三维散点图等。相信你应当能在这个列表中找到所需的。

<strong>1. <a href="http://www.humblesoftware.com/flotr2/">Flotr2</a></strong>

<img title="Flotr2" src="http://www.queness.com/resources/images/jschart/1.jpg" alt="Flotr2" />

Flotr2 是个独立框架库，支持HTML5图表和图形。它是 flotr 的一个分支版本，移除了 Prototype 依赖性，并且有很多改进。支持：线图、条图、蜡状图、饼图、气泡图。诸如 IE6 类的老浏览器也支持。

<strong>2. <a href="http://shutterstock.github.com/rickshaw/">Rickshaw</a></strong>

<img title="Rickshaw" src="http://www.queness.com/resources/images/jschart/2.jpg" alt="Rickshaw" />

Rickshaw 是个用于创建交互式时序图的JS工具。它依赖 D3 可视化库和其他一些 jQuery 和 jQuery UI 的插件。

<strong>3. <a href="http://mbostock.github.com/d3/">D3</a></strong>

<img title="D3" src="http://www.queness.com/resources/images/jschart/3.jpg" alt="D3" />

D3 是一款著名且高效的可视化库。

<strong>4. <a href="http://cyberpython.github.com/AwesomeChartJS/">Awesome Chart JS</a></strong>

<img title="Awesome Chart JS" src="http://www.queness.com/resources/images/jschart/4.jpg" alt="Awesome Chart JS" />

AwesomeChartJS 是个简洁的JS库，用于基于HTML5画布元素的图表。

5. <a href="http://canvasxpress.org/">canvasXpress</a>

<img title="canvasXpress" src="http://www.queness.com/resources/images/jschart/5.jpg" alt="canvasXpress" />

CanvasXpress is a javascript library based on the tag implemented in HTML5. I developed this library as the core visualization component for our BMS systems biology platform. It supports crazy amount of highly complicated charts and graphs.

<strong>6. <a href="http://www.humblesoftware.com/finance/index">Humble Finance</a></strong>

<img title="Humble Finance" src="http://www.queness.com/resources/images/jschart/6.jpg" alt="Humble Finance" />

HumbleFinance is an HTML5 data visualization tool written as a demonstration of interactive graphing in HTML5. It is similar to the Flash tool on http://finance.google.com/. The tool itself is written entirely in JavaScript, using the Prototype and Flotr libraries. It can be used to display any two 2-D data sets of real numerical data which share an axis.

<strong>7. <a href="http://www.rgraph.net/">RGraph</a></strong>

<img title="RGraph" src="http://www.queness.com/resources/images/jschart/8.jpg" alt="RGraph http://www.rgraph.net/" />

RGraph is a HTML5 Javascript charts library that supports over 20 different types of charts. Using the new HTML5 canvas tag, RGraph creates these Javascript charts in the web browser, meaning quicker pages and less web server load. Using RGraph is an easy way of speeding up your website.

<strong>8. <a href="http://dygraphs.com/">dygraphs</a></strong>

<img title="dygraphs" src="http://www.queness.com/resources/images/jschart/9.jpg" alt="dygraphs" />

dygraphs is an open source JavaScript library that produces produces interactive, zoomable charts of time series. It is designed to display dense data sets and enable users to explore and interpret them. This is a lightweight solution and works in Internet explorer too.

<strong>9. <a href="http://www.highcharts.com/">HighChart</a></strong>

<img title="HighChart" src="http://www.queness.com/resources/images/jschart/10.jpg" alt="HighChart" />

Highcharts is a charting library written in pure JavaScript, offering intuitive, interactive charts to your web site or web application. Highcharts currently supports line, spline, area, areaspline, column, bar, pie and scatter chart types. A famous chart/graph solution used by many well-known organization such as IBM, NASA, Siemens, HP etc.

<strong>10. <a href="http://g.raphaeljs.com/">gRaphael</a></strong>

<img title="gRaphael" src="http://www.queness.com/resources/images/jschart/11.jpg" alt="gRaphael" />

gRaphaël’s goal is to help you create stunning charts on your website. It is based on Raphaël graphics library. Check out the demos to see static and interactive charts in action. gRaphaël currently supports Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+.

<strong>11. <a href="http://www.jqplot.com/">jqPlot</a></strong>

<img title="jqPlot" src="http://www.queness.com/resources/images/jschart/12.jpg" alt="jqPlot" />

jqPlot is a plotting and charting plugin for the jQuery Javascript framework. jqPlot produces beautiful line, bar and pie charts with many features.

<strong>12. <a href="http://www.jscharts.com/">JS Charts</a></strong>

<img title="JS Charts" src="http://www.queness.com/resources/images/jschart/13.jpg" alt="JS Charts" />

JS Charts is a JavaScript based chart generator that requires little or no coding. With JS Charts drawing charts is a simple and easy task, since you only have to use client-side scripting (i.e. performed by your web browser). No additional plugins or server modules are required. Just include our scripts, prepare chart data in XML, JSON or JavaScript Array and your chart is ready!

<strong>13. <a href="http://jsxgraph.uni-bayreuth.de/wp/">JSXGraph</a></strong>

<img title="JSXGraph" src="http://www.queness.com/resources/images/jschart/14.jpg" alt="JSXGraph" />

JSXGraph is a cross-browser library for interactive geometry, function plotting, charting, and data visualization in a web browser. It is implemented completely in JavaScript, does not rely on any other library, and uses SVG, VML, or canvas. JSXGraph is easy to embed and has a small footprint: less than 100 KByte if embedded in a web page. No plug-ins are required! Special care has been taken to optimize the performance.

原文：<a href="http://www.queness.com/post/10781/13-chart-and-graph-plotting-javascript-plugins" target="_blank">Kevin Liew</a>   编译：伯乐在线 - <a href="http://blog.jobbole.com/13671/" target="_blank">黄利民</a>

<span style="color: #ff0000;">【如需转载，请标注并保留原文链接、译文链接和译者等信息，谢谢合作！】</span>

&#160;]]></description>
			<content:encoded><![CDATA[<p>现在网络上又有越来越多的免费的JavaScript图表图形绘制插件。我之前给一家网站做过复杂的图形，我们用的是 highchart。在那段时间，没有很多可供选择的插件。但现在不同了，很容易就可以找到很多功能非常不错的图表库。个人而言，此类插件的上升，是因为：</p>
<p>1. Flash 过去是最佳解决方案，但很多人多在从那迁移；</p>
<p>2. <a href="http://blog.jobbole.com/12749/" target="_blank">现代浏览器</a>及其更强大的计算能力，使其在转化绘制实时数据方面的能力更佳；</p>
<p>3. 绘制矢量图的不同技术愈发成熟：VML、SVG 和 Canvas。</p>
<p>当然了，你需要仔细选择，以符合自身需求。正如前面提到的，正因使用了各种技术，因此一些支持Canvas的插件仅需要一个<span class='wp_keywordlink'><a href="http://blog.jobbole.com/12749/" title="现代浏览器" target="_blank">现代浏览器</a></span>。</p>
<p>在这篇文章中，我们已收集 13 个JavaScript图表和图形绘制插件。少数是独立的框架，大多数支持条图、线图、饼图等基本图形，很多甚至支持更加复杂的图形，比如：维恩图、热图、进化树、二维散点图、二维散点气泡图、三维散点图等。相信你应当能在这个列表中找到所需的。</p>
<p><strong>1. <a href="http://www.humblesoftware.com/flotr2/">Flotr2</a></strong></p>
<p><img title="Flotr2" src="http://www.queness.com/resources/images/jschart/1.jpg" alt="Flotr2" /></p>
<p>Flotr2 是个独立框架库，支持HTML5图表和图形。它是 flotr 的一个分支版本，移除了 Prototype 依赖性，并且有很多改进。支持：线图、条图、蜡状图、饼图、气泡图。诸如 IE6 类的老<span class='wp_keywordlink'><a href="http://blog.jobbole.com/12749/" title="浏览器" target="_blank">浏览器</a></span>也支持。</p>
<p><strong>2. <a href="http://shutterstock.github.com/rickshaw/">Rickshaw</a></strong></p>
<p><img title="Rickshaw" src="http://www.queness.com/resources/images/jschart/2.jpg" alt="Rickshaw" /></p>
<p>Rickshaw 是个用于创建交互式时序图的JS工具。它依赖 D3 可视化库和其他一些 jQuery 和 jQuery UI 的插件。</p>
<p><strong>3. <a href="http://mbostock.github.com/d3/">D3</a></strong></p>
<p><img title="D3" src="http://www.queness.com/resources/images/jschart/3.jpg" alt="D3" /></p>
<p>D3 是一款著名且高效的可视化库。</p>
<p><strong>4. <a href="http://cyberpython.github.com/AwesomeChartJS/">Awesome Chart JS</a></strong></p>
<p><img title="Awesome Chart JS" src="http://www.queness.com/resources/images/jschart/4.jpg" alt="Awesome Chart JS" /></p>
<p>AwesomeChartJS 是个简洁的JS库，用于基于HTML5画布元素的图表。</p>
<p>5. <a href="http://canvasxpress.org/">canvasXpress</a></p>
<p><img title="canvasXpress" src="http://www.queness.com/resources/images/jschart/5.jpg" alt="canvasXpress" /></p>
<p>CanvasXpress is a javascript library based on the tag implemented in HTML5. I developed this library as the core visualization component for our BMS systems biology platform. It supports crazy amount of highly complicated charts and graphs.</p>
<p><strong>6. <a href="http://www.humblesoftware.com/finance/index">Humble Finance</a></strong></p>
<p><img title="Humble Finance" src="http://www.queness.com/resources/images/jschart/6.jpg" alt="Humble Finance" /></p>
<p>HumbleFinance is an HTML5 data visualization tool written as a demonstration of interactive graphing in HTML5. It is similar to the Flash tool on http://finance.google.com/. The tool itself is written entirely in JavaScript, using the Prototype and Flotr libraries. It can be used to display any two 2-D data sets of real numerical data which share an axis.</p>
<p><strong>7. <a href="http://www.rgraph.net/">RGraph</a></strong></p>
<p><img title="RGraph" src="http://www.queness.com/resources/images/jschart/8.jpg" alt="RGraph http://www.rgraph.net/" /></p>
<p>RGraph is a HTML5 Javascript charts library that supports over 20 different types of charts. Using the new HTML5 canvas tag, RGraph creates these Javascript charts in the web browser, meaning quicker pages and less web server load. Using RGraph is an easy way of speeding up your website.</p>
<p><strong>8. <a href="http://dygraphs.com/">dygraphs</a></strong></p>
<p><img title="dygraphs" src="http://www.queness.com/resources/images/jschart/9.jpg" alt="dygraphs" /></p>
<p>dygraphs is an open source JavaScript library that produces produces interactive, zoomable charts of time series. It is designed to display dense data sets and enable users to explore and interpret them. This is a lightweight solution and works in Internet explorer too.</p>
<p><strong>9. <a href="http://www.highcharts.com/">HighChart</a></strong></p>
<p><img title="HighChart" src="http://www.queness.com/resources/images/jschart/10.jpg" alt="HighChart" /></p>
<p>Highcharts is a charting library written in pure JavaScript, offering intuitive, interactive charts to your web site or web application. Highcharts currently supports line, spline, area, areaspline, column, bar, pie and scatter chart types. A famous chart/graph solution used by many well-known organization such as IBM, NASA, Siemens, HP etc.</p>
<p><strong>10. <a href="http://g.raphaeljs.com/">gRaphael</a></strong></p>
<p><img title="gRaphael" src="http://www.queness.com/resources/images/jschart/11.jpg" alt="gRaphael" /></p>
<p>gRaphaël’s goal is to help you create stunning charts on your website. It is based on Raphaël graphics library. Check out the demos to see static and interactive charts in action. gRaphaël currently supports Firefox 3.0+, Safari 3.0+, Opera 9.5+ and Internet Explorer 6.0+.</p>
<p><strong>11. <a href="http://www.jqplot.com/">jqPlot</a></strong></p>
<p><img title="jqPlot" src="http://www.queness.com/resources/images/jschart/12.jpg" alt="jqPlot" /></p>
<p>jqPlot is a plotting and charting plugin for the jQuery Javascript framework. jqPlot produces beautiful line, bar and pie charts with many features.</p>
<p><strong>12. <a href="http://www.jscharts.com/">JS Charts</a></strong></p>
<p><img title="JS Charts" src="http://www.queness.com/resources/images/jschart/13.jpg" alt="JS Charts" /></p>
<p>JS Charts is a JavaScript based chart generator that requires little or no coding. With JS Charts drawing charts is a simple and easy task, since you only have to use client-side scripting (i.e. performed by your web browser). No additional plugins or server modules are required. Just include our scripts, prepare chart data in XML, JSON or JavaScript Array and your chart is ready!</p>
<p><strong>13. <a href="http://jsxgraph.uni-bayreuth.de/wp/">JSXGraph</a></strong></p>
<p><img title="JSXGraph" src="http://www.queness.com/resources/images/jschart/14.jpg" alt="JSXGraph" /></p>
<p>JSXGraph is a cross-browser library for interactive geometry, function plotting, charting, and data visualization in a web browser. It is implemented completely in JavaScript, does not rely on any other library, and uses SVG, VML, or canvas. JSXGraph is easy to embed and has a small footprint: less than 100 KByte if embedded in a web page. No plug-ins are required! Special care has been taken to optimize the performance.</p>
<p>原文：<a href="http://www.queness.com/post/10781/13-chart-and-graph-plotting-javascript-plugins" target="_blank">Kevin Liew</a>   编译：<span class='wp_keywordlink'><a href="http://www.jobbole.com" title="伯乐">伯乐</a></span>在线 &#8211; <a href="http://blog.jobbole.com/13671/" target="_blank">黄利民</a></p>
<p><span style="color: #ff0000;">【如需转载，请标注并保留原文链接、译文链接和译者等信息，谢谢合作！】</span></p>
<p>&nbsp;</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/9476/" title="11个JavaScript颜色选择器插件 ">11个JavaScript颜色选择器插件 </a></li><li><a href="http://blog.jobbole.com/1398/" title="8个针对开发者的MooTools实用插件">8个针对开发者的MooTools实用插件</a></li><li><a href="http://blog.jobbole.com/12203/" title="完全理解关键字this">完全理解关键字this</a></li><li><a href="http://blog.jobbole.com/12353/" title="10个基于浏览器的JavaScript调试工具">10个基于浏览器的JavaScript调试工具</a></li><li><a href="http://blog.jobbole.com/12042/" title="JavaScript需要Blocks">JavaScript需要Blocks</a></li><li><a href="http://blog.jobbole.com/12001/" title="推荐10个出色的JavaScript动画框架">推荐10个出色的JavaScript动画框架</a></li><li><a href="http://blog.jobbole.com/11691/" title="Javascript 面向对象编程">Javascript 面向对象编程</a></li><li><a href="http://blog.jobbole.com/11468/" title="2011年使用率增长最快的十大Web技术">2011年使用率增长最快的十大Web技术</a></li><li><a href="http://blog.jobbole.com/10926/" title="2011年回顾：把Javascript推到极限的20个网站">2011年回顾：把Javascript推到极限的20个网站</a></li><li><a href="http://blog.jobbole.com/10250/" title="25个Vim教程、视频和资源">25个Vim教程、视频和资源</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13671/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>不要逼员工威胁辞职</title>
		<link>http://blog.jobbole.com/13676/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e4%25b8%258d%25e8%25a6%2581%25e9%2580%25bc%25e5%2591%2598%25e5%25b7%25a5%25e5%25a8%2581%25e8%2583%2581%25e8%25be%259e%25e8%2581%258c</link>
		<comments>http://blog.jobbole.com/13676/#comments</comments>
		<pubDate>Thu, 23 Feb 2012 00:23:32 +0000</pubDate>
		<dc:creator>齐哲</dc:creator>
				<category><![CDATA[人力资源]]></category>
		<category><![CDATA[职场]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13676</guid>
		<description><![CDATA[本文的作者<a href="http://zh.wikipedia.org/wiki/%E5%B8%83%E8%8E%B1%E5%A7%86%C2%B7%E7%A7%91%E4%BA%A8" target="_blank">布莱姆·科亨（Bram Cohen）</a>是著名的BT(P2P)下载协议的发明人。编写BitTorrent软件使他声名远扬。他同时也是CodeCon的创立者之一、Bay Area p2p-hackers 会议的组织者、Codeville的编写者。科亨患有亚斯伯格综合症，这使他具有高度的集中力，但是在社交上存在障碍。科亨目前和他的妻子孩子居住在旧金山。
<p style="text-align: center;"><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Bram-Cohen.jpg"><img class="aligncenter size-full wp-image-13677" title="Bram Cohen" src="http://blog.jobbole.com/wp-content/uploads/2012/02/Bram-Cohen.jpg" alt="Bram Cohen" width="220" height="330" /></a>本文的作者 BT下载协议的发明人 布莱姆·科亨</p>
在很多公司里，想要获得涨工资的办法就是威胁辞职。这一招管用。我没夸大。

这一招管用的原因是：管理层认为应在工资上少给点，省下来一些涨幅空间等员工来讨价还价时用。于是，他们不会主动涨工资，除非有人来要价。自然的，除非有人威胁说要辞职，他的涨工资的要求会被视作没有筹码的，于是，涨工资只会发生在向你摊牌的人身上，他们会要求工资水平和另外某家公司愿意出的价码相匹配，或稍微高一些。管理层认为，只要能给出别的公司给某人的出价，这个员工就会一直愿意留下，这样做很容易，工资开支会保持绝对最小化，而且没有真正的风险。

这荒唐之极。

想想这样做会对员工发生什么效应。最忠诚、出色的员工拿最少的报酬，而最阴险，最没心肝的人拿的最多。迟早，报酬低的员工，要么会感觉到工资信息保密的真正目的是在掩盖这样一个事实：自己被压榨了(因为，事实就是这样)，要么发现有人通过威胁辞职涨了工资，于是自己也模仿着做。有可能在这个过程中，他发现自己真的找到了一个更好的工作。毕竟，在当前的公司里自己没有得到赏识。很有可能他就不必跟老板去讨价还价了，更别说接受老板的报价。很快，整个公司都会变质衰落，每个人要么收入偏低，一只脚已经伸到了门外，要么变成一个烂人，周期性的去找一些不打算接受的工作，拿回来要挟涨工资，成为常态。

老板应该永远不要让这种员工讨价的情况出现。永远不要。如果一个员工告诉你他找到了一份好工作，告诉他，如果他愿意接受那份工作，你会祝福他，立场坚定。不要发出错误的信号，让其他的员工感觉你会因为他们决定不走而奖赏他们。对那些不想为你工作的人不要留恋。

那么，你如何留住员工？做一个清晰的坚持的薪资计划，有规律的对那些贡献超出回报的员工提升工资水平。不要做一个葛朗台式的，短视的白痴。

&#160;
<p id="page-note">英文原文：<a href="http://bramcohen.com/2011/12/04/never-make-counter-offers">Never Make Counter-Offers</a></p>]]></description>
			<content:encoded><![CDATA[<p>本文的作者<a href="http://zh.wikipedia.org/wiki/%E5%B8%83%E8%8E%B1%E5%A7%86%C2%B7%E7%A7%91%E4%BA%A8" target="_blank">布莱姆·科亨（Bram Cohen）</a>是著名的BT(P2P)下载协议的发明人。编写BitTorrent软件使他声名远扬。他同时也是CodeCon的创立者之一、Bay Area p2p-hackers 会议的组织者、Codeville的编写者。科亨患有亚斯伯格综合症，这使他具有高度的集中力，但是在社交上存在障碍。科亨目前和他的妻子孩子居住在旧金山。</p>
<p style="text-align: center;"><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Bram-Cohen.jpg"><img class="aligncenter size-full wp-image-13677" title="Bram Cohen" src="http://blog.jobbole.com/wp-content/uploads/2012/02/Bram-Cohen.jpg" alt="Bram Cohen" width="220" height="330" /></a>本文的作者 BT下载协议的发明人 布莱姆·科亨</p>
<p>在很多公司里，想要获得涨工资的办法就是威胁辞职。这一招管用。我没夸大。</p>
<p>这一招管用的原因是：管理层认为应在工资上少给点，省下来一些涨幅空间等员工来讨价还价时用。于是，他们不会主动涨工资，除非有人来要价。自然的，除非有人威胁说要辞职，他的涨工资的要求会被视作没有筹码的，于是，涨工资只会发生在向你摊牌的人身上，他们会要求工资水平和另外某家公司愿意出的价码相匹配，或稍微高一些。管理层认为，只要能给出别的公司给某人的出价，这个员工就会一直愿意留下，这样做很容易，工资开支会保持绝对最小化，而且没有真正的风险。</p>
<p>这荒唐之极。</p>
<p>想想这样做会对员工发生什么效应。最忠诚、出色的员工拿最少的报酬，而最阴险，最没心肝的人拿的最多。迟早，报酬低的员工，要么会感觉到工资信息保密的真正目的是在掩盖这样一个事实：自己被压榨了(因为，事实就是这样)，要么发现有人通过威胁辞职涨了工资，于是自己也模仿着做。有可能在这个过程中，他发现自己真的找到了一个更好的工作。毕竟，在当前的公司里自己没有得到赏识。很有可能他就不必跟老板去讨价还价了，更别说接受老板的报价。很快，整个公司都会变质衰落，每个人要么收入偏低，一只脚已经伸到了门外，要么变成一个烂人，周期性的去找一些不打算接受的工作，拿回来要挟涨工资，成为常态。</p>
<p>老板应该永远不要让这种员工讨价的情况出现。永远不要。如果一个员工告诉你他找到了一份好工作，告诉他，如果他愿意接受那份工作，你会祝福他，立场坚定。不要发出错误的信号，让其他的员工感觉你会因为他们决定不走而奖赏他们。对那些不想为你工作的人不要留恋。</p>
<p>那么，你如何留住员工？做一个清晰的坚持的薪资计划，有规律的对那些贡献超出回报的员工提升工资水平。不要做一个葛朗台式的，短视的白痴。</p>
<p>&nbsp;</p>
<p id="page-note">英文原文：<a href="http://bramcohen.com/2011/12/04/never-make-counter-offers">Never Make Counter-Offers</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/13264/" title="朱云翔：程序员不要做沙和尚 ">朱云翔：程序员不要做沙和尚 </a></li><li><a href="http://blog.jobbole.com/11592/" title="2012最受企业欢迎的开发技能Top10">2012最受企业欢迎的开发技能Top10</a></li><li><a href="http://blog.jobbole.com/11766/" title="年轻人，卷起袖子，来把手弄脏吧!">年轻人，卷起袖子，来把手弄脏吧!</a></li><li><a href="http://blog.jobbole.com/11529/" title="IT人士常犯的17个职场错误 ">IT人士常犯的17个职场错误 </a></li><li><a href="http://blog.jobbole.com/10624/" title="年终工作总结：给新手程序员的几个建议">年终工作总结：给新手程序员的几个建议</a></li><li><a href="http://blog.jobbole.com/10474/" title="陈皓：三件事和三个问题">陈皓：三件事和三个问题</a></li><li><a href="http://blog.jobbole.com/5894/" title="拒绝事倍功半：轻松生活达成卓越成就">拒绝事倍功半：轻松生活达成卓越成就</a></li><li><a href="http://blog.jobbole.com/8253/" title="毕业选择创业公司的5个原因">毕业选择创业公司的5个原因</a></li><li><a href="http://blog.jobbole.com/8170/" title="程序员都应该挖一口属于自己的井">程序员都应该挖一口属于自己的井</a></li><li><a href="http://blog.jobbole.com/7884/" title="一个计算机专业毕业生工作5年后的困惑">一个计算机专业毕业生工作5年后的困惑</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13676/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google公司的10个意想不到的职称</title>
		<link>http://blog.jobbole.com/13625/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=google%25e5%2585%25ac%25e5%258f%25b8%25e7%259a%258410%25e4%25b8%25aa%25e6%2584%258f%25e6%2583%25b3%25e4%25b8%258d%25e5%2588%25b0%25e7%259a%2584%25e8%2581%258c%25e7%25a7%25b0</link>
		<comments>http://blog.jobbole.com/13625/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 08:47:51 +0000</pubDate>
		<dc:creator>童海波</dc:creator>
				<category><![CDATA[互联网]]></category>
		<category><![CDATA[人力资源]]></category>
		<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13625</guid>
		<description><![CDATA[<p id="">谷歌可以说是一个非常规的公司，这一点延伸到该公司在职称方面的要求可以概括为：无论你想在自己的商务名片上如何定义自己的职称都可以。因此，一些谷歌员工总能想出一些新奇的方式来描述自己的职称。但众所周知的是，谷歌还为公司员工们提供了众多让人艳羡的福利，为了提供其中一些福利，谷歌还专门聘请了全职员工，所以不要以为谷歌公司里只有工程师设计师这类一般互联网公司都有的职称，日前国外科技博客就盘点了谷歌公司里十大意想不到的职称，如果你在谷歌员工的商务名片上看到这些，不要以为这是他们的凭空捏造，实际上这些头衔在谷歌是真实存在的。</p>
<strong>舞蹈节目经理</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist01.jpg"><img class="aligncenter size-full wp-image-13627" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist01.jpg" alt="Google公司的10个意想不到的职称" width="510" height="390" /></a>

这些人负责在美国加州山景城谷歌总部的舞蹈工作室里教授舞蹈、瑜珈或其它类似课程，这是所有员工保持身体健康的一部分。

<strong>营养师</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist02.jpg"><img class="aligncenter size-full wp-image-13628" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist02.jpg" alt="Google公司的10个意想不到的职称" width="510" height="382" /></a>

他们负责确保谷歌为员工提供的丰富的免费食物是健康、营养搭配协调的。

<strong>食品科学家</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist03.jpg"><img class="aligncenter size-full wp-image-13629" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist03.jpg" alt="Google公司的10个意想不到的职称" width="510" height="340" /></a>

这些人是HR部门的一部分，负责对免费提供的食品做相关的实验，比如检验巧克力豆适合放入透明还是不透明的容器中。

<strong>托儿所幼教</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist04.jpg"><img class="aligncenter size-full wp-image-13630" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist04.jpg" alt="Google公司的10个意想不到的职称" width="510" height="340" /></a>

谷歌将部分办公室建成了托儿所，这些幼教就负责照看员工的孩子。

<strong>按摩师</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist05.jpg"><img class="aligncenter size-full wp-image-13631" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist05.jpg" alt="Google公司的10个意想不到的职称" width="510" height="286" /></a>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">谷歌在办公室里装有健身器材，甚至每天都有专业按摩师在按摩沙龙为员工服务。在谷歌的IPO中，多名公司厨师和至少一名女按摩师也获得了大量财富。</p>
<strong id="">人体工程学专家</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist06.jpg"><img class="aligncenter size-full wp-image-13632" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist06.jpg" alt="Google公司的10个意想不到的职称" width="510" height="382" /></a>

这些人负责工作区的调整，确保员工不会因此得职业病。

<strong>全民健身计划经理</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist07.jpg"><img class="aligncenter size-full wp-image-13633" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist07.jpg" alt="Google公司的10个意想不到的职称" width="510" height="338" /></a>

他们的工作就是为谷歌员工想出各种方式来保持身材。

<strong>交通项目经理</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist08.jpg"><img class="aligncenter size-full wp-image-13634" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist08.jpg" alt="Google公司的10个意想不到的职称" width="510" height="381" /></a>

职责就是协调公司通勤班车、总部内自行车等各类与员工出行相关的问题。

<strong>环保组主管</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist09.jpg"><img class="aligncenter size-full wp-image-13635" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist09.jpg" alt="Google公司的10个意想不到的职称" width="510" height="383" /></a>

他们负责寻求如节能建筑设计及使用可持续的食物来源等。

<strong>银河联邦全能王和宇宙的指挥官</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist10.jpg"><img class="aligncenter size-full wp-image-13636" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist10.jpg" alt="Google公司的10个意想不到的职称" width="510" height="401" /></a>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">这是蒂芙尼·蒙塔古（Tiffany Montague）的官方职称，负责处理谷歌的空间项目，如Google月球X大奖（Google Lunar X PRIZE ） ，这是一项奖金为三千万美元的挑战赛，奖励给第一家重返月球的私人资助团队。（糖糖）</p>
原文出处：<a href="http://www.businessinsider.com/11-google-job-titles-you-wont-believe-actually-exist-2012-2">http://www.businessinsider.com/11-google-job-titles-you-wont-believe-actually-exist-2012-2</a>]]></description>
			<content:encoded><![CDATA[<p id="">谷歌可以说是一个非常规的公司，这一点延伸到该公司在职称方面的要求可以概括为：无论你想在自己的商务名片上如何定义自己的职称都可以。因此，一些谷歌员工总能想出一些新奇的方式来描述自己的职称。但众所周知的是，谷歌还为公司员工们提供了众多让人艳羡的福利，为了提供其中一些福利，谷歌还专门聘请了全职员工，所以不要以为谷歌公司里只有工程师设计师这类一般互联网公司都有的职称，日前国外科技博客就盘点了谷歌公司里十大意想不到的职称，如果你在谷歌员工的商务名片上看到这些，不要以为这是他们的凭空捏造，实际上这些头衔在谷歌是真实存在的。</p>
<p><strong>舞蹈节目经理</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist01.jpg"><img class="aligncenter size-full wp-image-13627" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist01.jpg" alt="Google公司的10个意想不到的职称" width="510" height="390" /></a></p>
<p>这些人负责在美国加州山景城谷歌总部的舞蹈工作室里教授舞蹈、瑜珈或其它类似课程，这是所有员工保持身体健康的一部分。</p>
<p><strong>营养师</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist02.jpg"><img class="aligncenter size-full wp-image-13628" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist02.jpg" alt="Google公司的10个意想不到的职称" width="510" height="382" /></a></p>
<p>他们负责确保谷歌为员工提供的丰富的免费食物是健康、营养搭配协调的。</p>
<p><strong>食品科学家</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist03.jpg"><img class="aligncenter size-full wp-image-13629" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist03.jpg" alt="Google公司的10个意想不到的职称" width="510" height="340" /></a></p>
<p>这些人是HR部门的一部分，负责对免费提供的食品做相关的实验，比如检验巧克力豆适合放入透明还是不透明的容器中。</p>
<p><strong>托儿所幼教</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist04.jpg"><img class="aligncenter size-full wp-image-13630" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist04.jpg" alt="Google公司的10个意想不到的职称" width="510" height="340" /></a></p>
<p>谷歌将部分办公室建成了托儿所，这些幼教就负责照看员工的孩子。</p>
<p><strong>按摩师</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist05.jpg"><img class="aligncenter size-full wp-image-13631" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist05.jpg" alt="Google公司的10个意想不到的职称" width="510" height="286" /></a></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">谷歌在办公室里装有健身器材，甚至每天都有专业按摩师在按摩沙龙为员工服务。在谷歌的IPO中，多名公司厨师和至少一名女按摩师也获得了大量财富。</p>
<p><strong id="">人体工程学专家</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist06.jpg"><img class="aligncenter size-full wp-image-13632" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist06.jpg" alt="Google公司的10个意想不到的职称" width="510" height="382" /></a></p>
<p>这些人负责工作区的调整，确保员工不会因此得职业病。</p>
<p><strong>全民健身计划经理</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist07.jpg"><img class="aligncenter size-full wp-image-13633" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist07.jpg" alt="Google公司的10个意想不到的职称" width="510" height="338" /></a></p>
<p>他们的工作就是为谷歌员工想出各种方式来保持身材。</p>
<p><strong>交通项目经理</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist08.jpg"><img class="aligncenter size-full wp-image-13634" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist08.jpg" alt="Google公司的10个意想不到的职称" width="510" height="381" /></a></p>
<p>职责就是协调公司通勤班车、总部内自行车等各类与员工出行相关的问题。</p>
<p><strong>环保组主管</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist09.jpg"><img class="aligncenter size-full wp-image-13635" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist09.jpg" alt="Google公司的10个意想不到的职称" width="510" height="383" /></a></p>
<p>他们负责寻求如节能建筑设计及使用可持续的食物来源等。</p>
<p><strong>银河联邦全能王和宇宙的指挥官</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist10.jpg"><img class="aligncenter size-full wp-image-13636" title="Google公司的10个意想不到的职称" src="http://blog.jobbole.com/wp-content/uploads/2012/02/11-Google-Job-Titles-You-Wont-Believe-Actually-Exist10.jpg" alt="Google公司的10个意想不到的职称" width="510" height="401" /></a></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">这是蒂芙尼·蒙塔古（Tiffany Montague）的官方职称，负责处理谷歌的空间项目，如Google月球X大奖（Google Lunar X PRIZE ） ，这是一项奖金为三千万美元的挑战赛，奖励给第一家重返月球的私人资助团队。（糖糖）</p>
<p>原文出处：<a href="http://www.businessinsider.com/11-google-job-titles-you-wont-believe-actually-exist-2012-2">http://www.businessinsider.com/11-google-job-titles-you-wont-believe-actually-exist-2012-2</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/13350/" title="Google员工用什么电脑">Google员工用什么电脑</a></li><li><a href="http://blog.jobbole.com/13092/" title="在Google工作是什么样的">在Google工作是什么样的</a></li><li><a href="http://blog.jobbole.com/12289/" title="佩奇出任 CEO 后如何改变 Google 的开会流程">佩奇出任 CEO 后如何改变 Google 的开会流程</a></li><li><a href="http://blog.jobbole.com/11301/" title="谷歌绝密实验室里的秘密">谷歌绝密实验室里的秘密</a></li><li><a href="http://blog.jobbole.com/11033/" title="施密特谈竞争对手、收购、社交媒体">施密特谈竞争对手、收购、社交媒体</a></li><li><a href="http://blog.jobbole.com/10598/" title="2011年IT领域最大的赢家和输家">2011年IT领域最大的赢家和输家</a></li><li><a href="http://blog.jobbole.com/10481/" title="Google产品中的15个最佳彩蛋">Google产品中的15个最佳彩蛋</a></li><li><a href="http://blog.jobbole.com/10110/" title="从零到 Go：Google感恩节火鸡涂鸦开发纪实">从零到 Go：Google感恩节火鸡涂鸦开发纪实</a></li><li><a href="http://blog.jobbole.com/10006/" title="美国最值得为之工作公司Facebook排第三位 ">美国最值得为之工作公司Facebook排第三位 </a></li><li><a href="http://blog.jobbole.com/9535/" title="16个用于WordPress博客的Google服务和应用">16个用于WordPress博客的Google服务和应用</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13625/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>写代码如坐禅：你是哪一类程序员</title>
		<link>http://blog.jobbole.com/13623/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%2586%2599%25e4%25bb%25a3%25e7%25a0%2581%25e5%25a6%2582%25e5%259d%2590%25e7%25a6%2585%25ef%25bc%259a%25e4%25bd%25a0%25e6%2598%25af%25e5%2593%25aa%25e4%25b8%2580%25e7%25b1%25bb%25e7%25a8%258b%25e5%25ba%258f%25e5%2591%2598</link>
		<comments>http://blog.jobbole.com/13623/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 08:41:17 +0000</pubDate>
		<dc:creator>童海波</dc:creator>
				<category><![CDATA[程序员]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13623</guid>
		<description><![CDATA[<p id="">当编译占用你时间时你会怎么做。不只是编译，即使是在等待任何短暂的计算机操作结束，这段时间你会干些什么？</p>
和你的工作日休息比起来这点时间是微不足道的，但是总的来说它还是能对你的生产率和幸福感带来巨大帮助的。

顺便说一下，这篇文章内容不是只针对开发者和程序的。它对任何使用电脑的聪明人都有效。后面还会附上图片。现在让我们开始吧！<!--more-->
<div class="mceTemp mceIEcenter" style="text-align: center;"><dl id="" class="wp-caption aligncenter" style="width: 423px;"><dt class="wp-caption-dt"><img title="我的代码还在编译" src="http://blog.jobbole.com/wp-content/uploads/vb/959-code%20is%20Compiling%20-%20Chinese.png" alt="我的代码还在编译" width="413" height="407" /></dt><dd class="wp-caption-dd">（伯乐在线补充一枚相关漫画）</dd></dl></div>
&#160;

<strong>为什么要写这篇文章</strong>

我最近开始在我的工作习惯里使用某种时间管理技巧来提升我的生产率，减小压力，并帮助我的身体和大脑得到休息。我基本上想要在不被打扰的100％注意力集中的一两个小时里工作,然后就是20到30分钟的休息。

然而，我几乎立刻就进入了一个巨大的问题里：当我正在编译或部署什么东西时，我会自动地打开邮件客户端，facebook，新闻阅读器，新闻站点中的某一个或几个。这是一个坏习惯。它很难改掉。它扰乱了我本来专注的注意力。

所以我决定搜索相关资料。在 StackExchange 有一个关于“编译时应该做什么”的论坛。投票最多的答案是“减少编译时间”一类的。然而，这些答案并不能解决更多的普遍问题：在电脑上工作时总是有些事项是需要时间来等待的。

与之不同的，论坛上的人多半建议那些时间可以做些什么（类似收发邮件或是看新闻），这是一个差劲的想法。一个好的建议是这个——“同一时间干多件事是不好的”。我赞同这个观点。但其他人呢？不认为？好的。这个答案令人失望。所以在这篇文章里，我将深入探索这个问题并且向你展示最理想的方法。

<strong>两种类型的程序员</strong>

有两种极端原型的程序员——“禅宗的程序员”，我们称为心如止水的程序员，还有“不能克制分心的程序员”，我们称为心绪不定的程序员。两者都是非常极端的，所以他们应该处于贝尔钟形曲线的两端，对吗？

错。实际上，心绪不定的程序员是难以置信地普遍存在着。

图片的效果要比文字有用，所以我现在用图片来说明两种程序员的精神世界的状态。

<strong>心如止水的程序员</strong>

心如止水的程序员会怎么做？

他写代码。这是他做的唯一的事情，这也说明了一切。也许更重要的问题是什么事情他没有做：他没有受分心的影响。专注的注意力，专注的修改，专注的编码。一到两个小时的纯代码时间，然后才是20－30分钟的休息，通常是离开电脑。之后他会继续开始写代码。（以上所说的时间只是一个例子。他可以用其它方式安排时间－不过他总是能平衡并搞定长时间的生产率。）

他的思维像平静的水缓慢地流动。当然它不像那种恒久不变的凝固的冰。

这就是心如止水的程序员精神世界看起来的样子：
<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/zen-coder.png"><img class="aligncenter size-full wp-image-13637" title="写代码如坐禅：你是哪一类程序员" src="http://blog.jobbole.com/wp-content/uploads/2012/02/zen-coder.png" alt="写代码如坐禅：你是哪一类程序员" width="600" height="300" /></a>

<strong>心绪不定的程序员</strong>

即使你的精神世界现在看起来像一个心如止水的程序员，只要你在编译的时候打开了Facebook或者检查了你的邮件还是做了其它什么事情。几分钟之后它就会像这样：
<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/distraction-junkie-coder.png.png"><img class="aligncenter size-full wp-image-13638" title="写代码如坐禅：你是哪一类程序员" src="http://blog.jobbole.com/wp-content/uploads/2012/02/distraction-junkie-coder.png.png" alt="写代码如坐禅：你是哪一类程序员" width="600" height="350" /></a>
女士们先生们，这就是你检查你的邮件和打开Facebook后的状况。如果你还拥有一堆实时通知，即时通讯，还要去检查你的RSS源和推特，结果就是大脑像上面图中变成碎片的灾难一样。

你可能还没有完全从这张图恢复过来。不在特定的某天，任何时候都有可能发生。即使你把精神世界所有无用的东西最小化到任务栏，它仍会留在那里，不停地引诱你，消耗你的精神资源。朋友，时间就这样走了，你会困惑它是怎么不见的。

顺便说一下，如果你是一个心绪不定的人，你还是可以看看我们网站的<a href="http://www.componentowl.com/comics/26" target="_blank">网页漫画</a>！不必立刻回来把这篇文章读完。别忘了订阅那个漫画源！看完所有的漫画后可以分享给你的朋友并聊聊！做这些事不会过于分心的，真的！

<strong>心如止水的程序员与心绪不定的程序员之间的区别</strong>

心如止水的程序员更倾向于长期的幸福感和生产率。他有能力高度集中注意力，关注目标。

心绪不定的程序员更倾向于短暂的满足感，长期这样不能到达全部的潜力并且会对他自己的身体和精神带来双方面的伤害。他不能定下心来集中注意力。

为了彻底领悟这点，我们首先需要理解我们的大脑是怎样工作的。

<strong>我们的大脑是怎么工作的</strong>

事实上我们不能完全知道，不过，基于我们现在已有的理解，心理学家已经提出了一些有用的类比方法，可以帮助我们领悟复杂的东西。

<strong>电脑的类比</strong>

你的大脑像一台电脑。当然，它要比一台个人电脑复杂多了，不过电脑的比喻说法可以让我们形容许多在大脑里运行的进程。有些东西像硬盘，有些东西像内存和中央处理器，还有进程和线程，它们的确需要一些时间来访问信息并计算数据。

很明显我们的大脑拥有一定的容量在任一时刻集中注意力。你可以很好地集中在某一东西上，或是不太好地集中到几样东西上，但你不能两者都做到。把注意力从一个任务转到另一个任务甚至会影响认知能力，特别是两种毫不相干的任务。

只要你把意识关注在某样东西上，就会花些时间处理它和它所分配的资源并会从内存和后台进程里初始化它。它可以存在几个小时甚至几天。最近的关注到的东西在任何时刻都会不断出现的。即时你没有注意到它们在你的大脑里流动，它们一直都在那儿——而且它们占用资源，使你不能集中注意力。

<strong>抽屉的类比</strong>

另一种有用的比喻说法是柜子里的抽屉。你的大脑像存放东西的抽屉。每个抽屉都是拥有数据且互相连接的，基于某种上下文关系和概念。在特定的时间里，一些抽屉是打开的，一些是关闭的。打开的抽屉代表着你当前的精神空间，它们很容易访问到。

<em>主要的问题是关闭抽屉是需要很长时间的，而打开它们是非常快的。</em>

所以，当你在工作时，注意力转到新的地方，它会立即打开一堆抽屉。当你回到工作状态时，那些抽屉仍然是开着的。这样唯一的好处是可以提高你的创造力和头脑风暴——但是不需要的抽屉开着会有影响的。它们抑制左脑的思维并降低注意力。

<strong>编译时应该做什么</strong>

在等待电脑执行操作的时间里，你的行为可以判断出你是一个心如止水的程序员还是心绪不定的程序员。

主要的意见是：

1.不要分心
2.短暂的休息

保持注意力并不是那么难——你必须要切断你大脑的电源，或者保持注意力集中在你的代码上。不过，关闭大脑效果更好。这样会进入一个微冥想状态，在短暂休息之后它仍会有效。

为什么要进入冥想？好的，你的大脑每天都在咀嚼代码，为什么不给它一个休息呢？此外冥想科学上被证实能不断增加幸福等级。想象一下每天进行两次30-60秒表面上看起来不重要的冥想所带来的长期优势吧。

现在，短暂的休息时应该做些什么？从以下内容中选择任何事，按你的想法组合在一起。你可以把它们按照这个顺序全部做一遍，这取决于（也可以不在意）这些行为所需要的时间。

1.站起来
2.眺望远处
3.把双手放在脑后，斜靠在椅子上
4.伸长双腿，把双手尽量举高
5.闭上双眼
6.轻揉眼睛
7.慢慢地把头向各个方向转，舒展颈椎
8.闭上双眼然后深呼吸
9.倒一杯水（要小心路上别被同事分心了）

你也可以做任何主要身体参与而不影响思维的事——静力锻炼，变戏法，决斗，哈哈

顺便说一下，如果你的老板不给你足够的时间做以上的任何事，那么推荐他来看这篇文章。让自己更快地恢复精神并保持注意力，比看起来在工作其实已经分散注意力并很快就感到累的情况要好很多。

伸展放松是很有益处的。我上一次见我的理疗师时她发现我的肩膀很多地方很紧绷。她告诉我这可能是因为我坐在电脑前双手总是弯曲造成的，所以肌肉缩短而且不能用力。那我应该怎么做最好呢？举高我的双手，试着举到最高。这是我在编译或是等待电脑执行操作时常做的一件事。

你可能已经听说过当你在用电脑时进行有规律伸展放松和短暂休息是一个不错的想法。问题是怎么做到——即使你设置了一个计时器，但假如到时你正处在一个复杂的事情，正做到一半的时候怎么办？这样看来就无法实现了。然而，如果你在编译时短暂休息一下，就能很好地做到了，你甚至可以把它养成一种习惯，让它变得更“自然”！现在编译就开始能提醒你做伸展放松了。这太令人不可思议了。

<strong>编译时你不应该做的事情</strong>

我其实想用力点击我的主页，这样做能让事情变得简单，这里有一张你在编译时不应该做的事情的列表。以这种方式思考：这些事情不仅会使你不能集中注意力，还会让你的思维和身体不能很好地短暂休息。

1.阅读你的RSS源

2.阅读新闻（任何新闻）

3.收发邮件

4.浏览各类社交媒体(Facebook,twitter,google+,linkedin,reddit)

5.观看视频

做以下两件事要比上面的好一点，但依然不推荐：

1.和同事聊天

2.读一本物理书

<strong>专注的注意力和专注地修改</strong>

我马上就要结束这篇我所想的每日工作流程的理想方法——禅宗程序员的文章了。

保证生产率和效率的关键是注意力100%集中在你现在正在做的事情上，做完后再把注意力完全转移到其他地方。注意力从一件事情到下一件事情的过渡不能有任何的拖泥带水。

把你的工作时间分成1-2个小时一段。注意力100%集中在这些时间段里。然后是20-30分钟的休息，完全可以做任何事情。在休息时间你可以浏览你的邮件和社交媒体，当然，散个步打个盹吃些健康的点心会更好。休息结束后，检查任务管理软件（比如，我用的是我的<a href="http://www.dextronet.com/swift-to-do-list-software" target="_blank">Swift To-Do List</a>）里下一个工作是什么，再开始另一段需要百分百注意力集中的工作。在较大程度上，这与番茄工作法有点相似。

休息不是可以选择要不要的。别想去跳过它。你的身体需要休息。即使你在做你喜欢的工作，你也需要休息一下——在这种情况，你会在接下来的时间段里有动力做更多事。

<strong>你的工作流程看起来应该像这样：</strong>

（任务1 - 任务2）- 休息 - （任务2 - 任务3 - 任务4） - 休息 -（另一个1-2小时的时间段） - 休息 ……

<strong>不要让它完成起来是像这样混乱随机，让人看不下去的的：</strong>

任务1 - 邮件 - 任务1 - Facebook - 任务1 - 任务2 - 短暂休息 - Facebook - 任务2 - 邮件 - reddit - 任务3 - 邮件 - 休息 - 任务2 - 邮件 - 任务3 - 推特 - 黑客新闻 - 推特 - 任务1 - 任务3 - 休息 - 任务4

如果你的工作流程是像上面这样，那你既不能完全放松也不能做完你能完成的事情。这是最低级的方法。这不仅浪费了你的潜力和时间，也让你长期身体会不适。

我不想撒谎。集中注意力真的不容易。它很困难，因为当你没有集中注意力时，你基本上会朝着相反的方向过去。习惯和根深蒂固的惯例像潜意识一样难改变。

好消息就是，你还可以练习。你可以学习怎样去集中精神。这是每个人都可以学的技能，而且它非常有用，值得为之努力。

——转载于<a href="https://plus.google.com/108094026317986529064/">Jiri Novotny+</a>，作者由于<a href="http://www.dextronet.com/" target="_blank">Windows平台任务管理软件</a>的困扰。他把这篇用户文章投递在 ComponentOwl.com，因为他的Swift To-Do List要使用 Component Owl上基于.Net框架的<a href="http://www.componentowl.com/better-listview" target="_blank">Better ListView</a>作为它的核心组件。

另附：你有没有身边的人会每天要检查50次邮箱？把这篇文章发给他。他之后会感谢你的。

原文来自：<a href="http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/" target="_blank">Are You a Zen Coder or Distraction-Junkie?</a>]]></description>
			<content:encoded><![CDATA[<p id="">当编译占用你时间时你会怎么做。不只是编译，即使是在等待任何短暂的计算机操作结束，这段时间你会干些什么？</p>
<p>和你的工作日休息比起来这点时间是微不足道的，但是总的来说它还是能对你的生产率和幸福感带来巨大帮助的。</p>
<p>顺便说一下，这篇文章内容不是只针对开发者和程序的。它对任何使用电脑的聪明人都有效。后面还会附上图片。现在让我们开始吧！<span id="more-13623"></span></p>
<div class="mceTemp mceIEcenter" style="text-align: center;">
<dl id="" class="wp-caption aligncenter" style="width: 423px;">
<dt class="wp-caption-dt"><img title="我的代码还在编译" src="http://blog.jobbole.com/wp-content/uploads/vb/959-code%20is%20Compiling%20-%20Chinese.png" alt="我的代码还在编译" width="413" height="407" /></dt>
<dd class="wp-caption-dd">（<span class='wp_keywordlink'><a href="http://www.jobbole.com" title="伯乐">伯乐</a></span>在线补充一枚相关漫画）</dd>
</dl>
</div>
<p>&nbsp;</p>
<p><strong>为什么要写这篇文章</strong></p>
<p>我最近开始在我的工作习惯里使用某种时间管理技巧来提升我的生产率，减小压力，并帮助我的身体和大脑得到休息。我基本上想要在不被打扰的100％注意力集中的一两个小时里工作,然后就是20到30分钟的休息。</p>
<p>然而，我几乎立刻就进入了一个巨大的问题里：当我正在编译或部署什么东西时，我会自动地打开邮件客户端，facebook，新闻阅读器，新闻站点中的某一个或几个。这是一个坏习惯。它很难改掉。它扰乱了我本来专注的注意力。</p>
<p>所以我决定搜索相关资料。在 StackExchange 有一个关于“编译时应该做什么”的论坛。投票最多的答案是“减少编译时间”一类的。然而，这些答案并不能解决更多的普遍问题：在电脑上工作时总是有些事项是需要时间来等待的。</p>
<p>与之不同的，论坛上的人多半建议那些时间可以做些什么（类似收发邮件或是看新闻），这是一个差劲的想法。一个好的建议是这个——“同一时间干多件事是不好的”。我赞同这个观点。但其他人呢？不认为？好的。这个答案令人失望。所以在这篇文章里，我将深入探索这个问题并且向你展示最理想的方法。</p>
<p><strong>两种类型的<span class='wp_keywordlink'><a href="http://blog.jobbole.com/821/" title="程序员的本质">程序员</a></span></strong></p>
<p>有两种极端原型的程序员——“禅宗的程序员”，我们称为心如止水的程序员，还有“不能克制分心的程序员”，我们称为心绪不定的程序员。两者都是非常极端的，所以他们应该处于贝尔钟形曲线的两端，对吗？</p>
<p>错。实际上，心绪不定的程序员是难以置信地普遍存在着。</p>
<p>图片的效果要比文字有用，所以我现在用图片来说明两种程序员的精神世界的状态。</p>
<p><strong>心如止水的程序员</strong></p>
<p>心如止水的程序员会怎么做？</p>
<p>他写代码。这是他做的唯一的事情，这也说明了一切。也许更重要的问题是什么事情他没有做：他没有受分心的影响。专注的注意力，专注的修改，专注的编码。一到两个小时的纯代码时间，然后才是20－30分钟的休息，通常是离开电脑。之后他会继续开始写代码。（以上所说的时间只是一个例子。他可以用其它方式安排时间－不过他总是能平衡并搞定长时间的生产率。）</p>
<p>他的思维像平静的水缓慢地流动。当然它不像那种恒久不变的凝固的冰。</p>
<p>这就是心如止水的程序员精神世界看起来的样子：<br />
<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/zen-coder.png"><img class="aligncenter size-full wp-image-13637" title="写代码如坐禅：你是哪一类程序员" src="http://blog.jobbole.com/wp-content/uploads/2012/02/zen-coder.png" alt="写代码如坐禅：你是哪一类程序员" width="600" height="300" /></a></p>
<p><strong>心绪不定的程序员</strong></p>
<p>即使你的精神世界现在看起来像一个心如止水的程序员，只要你在编译的时候打开了Facebook或者检查了你的邮件还是做了其它什么事情。几分钟之后它就会像这样：<br />
<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/distraction-junkie-coder.png.png"><img class="aligncenter size-full wp-image-13638" title="写代码如坐禅：你是哪一类程序员" src="http://blog.jobbole.com/wp-content/uploads/2012/02/distraction-junkie-coder.png.png" alt="写代码如坐禅：你是哪一类程序员" width="600" height="350" /></a><br />
女士们先生们，这就是你检查你的邮件和打开Facebook后的状况。如果你还拥有一堆实时通知，即时通讯，还要去检查你的RSS源和推特，结果就是大脑像上面图中变成碎片的灾难一样。</p>
<p>你可能还没有完全从这张图恢复过来。不在特定的某天，任何时候都有可能发生。即使你把精神世界所有无用的东西最小化到任务栏，它仍会留在那里，不停地引诱你，消耗你的精神资源。朋友，时间就这样走了，你会困惑它是怎么不见的。</p>
<p>顺便说一下，如果你是一个心绪不定的人，你还是可以看看我们网站的<a href="http://www.componentowl.com/comics/26" target="_blank">网页漫画</a>！不必立刻回来把这篇文章读完。别忘了订阅那个漫画源！看完所有的漫画后可以分享给你的朋友并聊聊！做这些事不会过于分心的，真的！</p>
<p><strong>心如止水的程序员与心绪不定的程序员之间的区别</strong></p>
<p>心如止水的程序员更倾向于长期的幸福感和生产率。他有能力高度集中注意力，关注目标。</p>
<p>心绪不定的程序员更倾向于短暂的满足感，长期这样不能到达全部的潜力并且会对他自己的身体和精神带来双方面的伤害。他不能定下心来集中注意力。</p>
<p>为了彻底领悟这点，我们首先需要理解我们的大脑是怎样工作的。</p>
<p><strong>我们的大脑是怎么工作的</strong></p>
<p>事实上我们不能完全知道，不过，基于我们现在已有的理解，心理学家已经提出了一些有用的类比方法，可以帮助我们领悟复杂的东西。</p>
<p><strong>电脑的类比</strong></p>
<p>你的大脑像一台电脑。当然，它要比一台个人电脑复杂多了，不过电脑的比喻说法可以让我们形容许多在大脑里运行的进程。有些东西像硬盘，有些东西像内存和中央处理器，还有进程和线程，它们的确需要一些时间来访问信息并计算数据。</p>
<p>很明显我们的大脑拥有一定的容量在任一时刻集中注意力。你可以很好地集中在某一东西上，或是不太好地集中到几样东西上，但你不能两者都做到。把注意力从一个任务转到另一个任务甚至会影响认知能力，特别是两种毫不相干的任务。</p>
<p>只要你把意识关注在某样东西上，就会花些时间处理它和它所分配的资源并会从内存和后台进程里初始化它。它可以存在几个小时甚至几天。最近的关注到的东西在任何时刻都会不断出现的。即时你没有注意到它们在你的大脑里流动，它们一直都在那儿——而且它们占用资源，使你不能集中注意力。</p>
<p><strong>抽屉的类比</strong></p>
<p>另一种有用的比喻说法是柜子里的抽屉。你的大脑像存放东西的抽屉。每个抽屉都是拥有数据且互相连接的，基于某种上下文关系和概念。在特定的时间里，一些抽屉是打开的，一些是关闭的。打开的抽屉代表着你当前的精神空间，它们很容易访问到。</p>
<p><em>主要的问题是关闭抽屉是需要很长时间的，而打开它们是非常快的。</em></p>
<p>所以，当你在工作时，注意力转到新的地方，它会立即打开一堆抽屉。当你回到工作状态时，那些抽屉仍然是开着的。这样唯一的好处是可以提高你的创造力和头脑风暴——但是不需要的抽屉开着会有影响的。它们抑制左脑的思维并降低注意力。</p>
<p><strong>编译时应该做什么</strong></p>
<p>在等待电脑执行操作的时间里，你的行为可以判断出你是一个心如止水的程序员还是心绪不定的程序员。</p>
<p>主要的意见是：</p>
<p>1.不要分心<br />
2.短暂的休息</p>
<p>保持注意力并不是那么难——你必须要切断你大脑的电源，或者保持注意力集中在你的代码上。不过，关闭大脑效果更好。这样会进入一个微冥想状态，在短暂休息之后它仍会有效。</p>
<p>为什么要进入冥想？好的，你的大脑每天都在咀嚼代码，为什么不给它一个休息呢？此外冥想科学上被证实能不断增加幸福等级。想象一下每天进行两次30-60秒表面上看起来不重要的冥想所带来的长期优势吧。</p>
<p>现在，短暂的休息时应该做些什么？从以下内容中选择任何事，按你的想法组合在一起。你可以把它们按照这个顺序全部做一遍，这取决于（也可以不在意）这些行为所需要的时间。</p>
<p>1.站起来<br />
2.眺望远处<br />
3.把双手放在脑后，斜靠在椅子上<br />
4.伸长双腿，把双手尽量举高<br />
5.闭上双眼<br />
6.轻揉眼睛<br />
7.慢慢地把头向各个方向转，舒展颈椎<br />
8.闭上双眼然后深呼吸<br />
9.倒一杯水（要小心路上别被同事分心了）</p>
<p>你也可以做任何主要身体参与而不影响思维的事——静力锻炼，变戏法，决斗，哈哈</p>
<p>顺便说一下，如果你的老板不给你足够的时间做以上的任何事，那么推荐他来看这篇文章。让自己更快地恢复精神并保持注意力，比看起来在工作其实已经分散注意力并很快就感到累的情况要好很多。</p>
<p>伸展放松是很有益处的。我上一次见我的理疗师时她发现我的肩膀很多地方很紧绷。她告诉我这可能是因为我坐在电脑前双手总是弯曲造成的，所以肌肉缩短而且不能用力。那我应该怎么做最好呢？举高我的双手，试着举到最高。这是我在编译或是等待电脑执行操作时常做的一件事。</p>
<p>你可能已经听说过当你在用电脑时进行有规律伸展放松和短暂休息是一个不错的想法。问题是怎么做到——即使你设置了一个计时器，但假如到时你正处在一个复杂的事情，正做到一半的时候怎么办？这样看来就无法实现了。然而，如果你在编译时短暂休息一下，就能很好地做到了，你甚至可以把它养成一种习惯，让它变得更“自然”！现在编译就开始能提醒你做伸展放松了。这太令人不可思议了。</p>
<p><strong>编译时你不应该做的事情</strong></p>
<p>我其实想用力点击我的主页，这样做能让事情变得简单，这里有一张你在编译时不应该做的事情的列表。以这种方式思考：这些事情不仅会使你不能集中注意力，还会让你的思维和身体不能很好地短暂休息。</p>
<p>1.阅读你的RSS源</p>
<p>2.阅读新闻（任何新闻）</p>
<p>3.收发邮件</p>
<p>4.浏览各类社交媒体(Facebook,twitter,google+,linkedin,reddit)</p>
<p>5.观看视频</p>
<p>做以下两件事要比上面的好一点，但依然不推荐：</p>
<p>1.和同事聊天</p>
<p>2.读一本物理书</p>
<p><strong>专注的注意力和专注地修改</strong></p>
<p>我马上就要结束这篇我所想的每日工作流程的理想方法——禅宗程序员的文章了。</p>
<p>保证生产率和效率的关键是注意力100%集中在你现在正在做的事情上，做完后再把注意力完全转移到其他地方。注意力从一件事情到下一件事情的过渡不能有任何的拖泥带水。</p>
<p>把你的工作时间分成1-2个小时一段。注意力100%集中在这些时间段里。然后是20-30分钟的休息，完全可以做任何事情。在休息时间你可以浏览你的邮件和社交媒体，当然，散个步打个盹吃些健康的点心会更好。休息结束后，检查任务管理软件（比如，我用的是我的<a href="http://www.dextronet.com/swift-to-do-list-software" target="_blank">Swift To-Do List</a>）里下一个工作是什么，再开始另一段需要百分百注意力集中的工作。在较大程度上，这与番茄工作法有点相似。</p>
<p>休息不是可以选择要不要的。别想去跳过它。你的身体需要休息。即使你在做你喜欢的工作，你也需要休息一下——在这种情况，你会在接下来的时间段里有动力做更多事。</p>
<p><strong>你的工作流程看起来应该像这样：</strong></p>
<p>（任务1 &#8211; 任务2）- 休息 &#8211; （任务2 &#8211; 任务3 &#8211; 任务4） &#8211; 休息 -（另一个1-2小时的时间段） &#8211; 休息 ……</p>
<p><strong>不要让它完成起来是像这样混乱随机，让人看不下去的的：</strong></p>
<p>任务1 &#8211; 邮件 &#8211; 任务1 &#8211; Facebook &#8211; 任务1 &#8211; 任务2 &#8211; 短暂休息 &#8211; Facebook &#8211; 任务2 &#8211; 邮件 &#8211; reddit &#8211; 任务3 &#8211; 邮件 &#8211; 休息 &#8211; 任务2 &#8211; 邮件 &#8211; 任务3 &#8211; 推特 &#8211; 黑客新闻 &#8211; 推特 &#8211; 任务1 &#8211; 任务3 &#8211; 休息 &#8211; 任务4</p>
<p>如果你的工作流程是像上面这样，那你既不能完全放松也不能做完你能完成的事情。这是最低级的方法。这不仅浪费了你的潜力和时间，也让你长期身体会不适。</p>
<p>我不想撒谎。集中注意力真的不容易。它很困难，因为当你没有集中注意力时，你基本上会朝着相反的方向过去。习惯和根深蒂固的惯例像潜意识一样难改变。</p>
<p>好消息就是，你还可以练习。你可以学习怎样去集中精神。这是每个人都可以学的技能，而且它非常有用，值得为之努力。</p>
<p>——转载于<a href="https://plus.google.com/108094026317986529064/">Jiri Novotny+</a>，作者由于<a href="http://www.dextronet.com/" target="_blank">Windows平台任务管理软件</a>的困扰。他把这篇用户文章投递在 ComponentOwl.com，因为他的Swift To-Do List要使用 Component Owl上基于.Net框架的<a href="http://www.componentowl.com/better-listview" target="_blank">Better ListView</a>作为它的核心组件。</p>
<p>另附：你有没有身边的人会每天要检查50次邮箱？把这篇文章发给他。他之后会感谢你的。</p>
<p>原文来自：<a href="http://www.componentowl.com/blog/2012/02/zen-coder-vs-distraction-junkie/" target="_blank">Are You a Zen Coder or Distraction-Junkie?</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/13309/" title="开发工程师的职场人生路">开发工程师的职场人生路</a></li><li><a href="http://blog.jobbole.com/13264/" title="朱云翔：程序员不要做沙和尚 ">朱云翔：程序员不要做沙和尚 </a></li><li><a href="http://blog.jobbole.com/13250/" title="邹辉：一个程序员的创业历程">邹辉：一个程序员的创业历程</a></li><li><a href="http://blog.jobbole.com/13232/" title="程序员水平分级 你属于哪一类？">程序员水平分级 你属于哪一类？</a></li><li><a href="http://blog.jobbole.com/13201/" title="一个程序员的爱情表白书">一个程序员的爱情表白书</a></li><li><a href="http://blog.jobbole.com/11761/" title="是什么成就了卓越的程序员？">是什么成就了卓越的程序员？</a></li><li><a href="http://blog.jobbole.com/12056/" title="GitHire：程序员用实力说话">GitHire：程序员用实力说话</a></li><li><a href="http://blog.jobbole.com/11309/" title="程序员：枯燥的表单数据也可以变得有趣">程序员：枯燥的表单数据也可以变得有趣</a></li><li><a href="http://blog.jobbole.com/12968/" title="金旭亮：一个普通IT人的十年回顾">金旭亮：一个普通IT人的十年回顾</a></li><li><a href="http://blog.jobbole.com/12933/" title="缺乏想象力的程序员">缺乏想象力的程序员</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13623/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>开发者须知 HTML5 的15个新特性</title>
		<link>http://blog.jobbole.com/13612/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=%25e5%25bc%2580%25e5%258f%2591%25e8%2580%2585%25e5%25bf%2585%25e9%25a1%25bb%25e7%259f%25a5%25e9%2581%2593%25e7%259a%2584html5-%25e7%259a%258415%25e4%25b8%25aa%25e6%2596%25b0%25e7%2589%25b9%25e6%2580%25a7</link>
		<comments>http://blog.jobbole.com/13612/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 02:46:57 +0000</pubDate>
		<dc:creator>童海波</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[HTML5]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13612</guid>
		<description><![CDATA[HTML5<span style="font-family: 宋体;">想必大家都很熟悉了，因为太多的媒体在讨论这一技术。然而，你能准确地说出</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">带来了哪些新特性吗？</span>本文总结了HTML5<span style="font-family: 宋体;">带来的</span><span style="font-family: 'Times New Roman';">15</span><span style="font-family: 宋体;">项你必须知道的</span>新特性。

一起来看下：

<strong>1.新的文档类型<span style="font-family: 'Times New Roman';">  (New Doctype)<!--more--></span></strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">目前许多网页还在使用XHTML 1.0 并且要在第一行像这样
声明文档类型：</p>

<pre class="brush: html; gutter: true">&#60;!DOCTYPE html PUBLIC &#34;-//W3C//DTD XHTML 1.0 Transitional//EN&#34;
&#34;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&#34;&#62;</pre>
在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，上面那种声明方式将失效。下面是</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中的声明方式：</span>
<pre class="brush: html; gutter: true">&#60;!DOCTYPE html&#62;</pre>
<strong>2.脚本和链接无需<span style="font-family: 'Times New Roman';">type  (No More Types for Scripts and Links)</span></strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，你需要用下面的几行代码来给你的网页添加</span><span style="font-family: 'Times New Roman';">CSS</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">文件。</span></p>

<pre class="brush: html; gutter: true">&#60;link rel=&#34;stylesheet&#34; href=&#34;path/to/stylesheet.css&#34; type=&#34;text/css&#34; /&#62;
&#60;script type=&#34;text/javascript&#34; src=&#34;path/to/script.js&#34;&#62;&#60;/script&#62;</pre>
而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，你不再需要指定类型属性。因此，代码可以简化如下：</span>
<pre class="brush: html; gutter: true">&#60;link rel=&#34;stylesheet&#34; href=&#34;path/to/stylesheet.css&#34; /&#62;
&#60;script src=&#34;path/to/script.js&#34;&#62;&#60;/script&#62;</pre>
<strong>3.语义<span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 'Times New Roman';">Header</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Footer (The Semantic Header and Footer)</span></strong>
<p id="">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，你需要用下面的代码来声明</span><span style="font-family: 'Times New Roman';">"Header"</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">"Footer"</span><span style="font-family: 宋体;">。</span></p>

<pre class="brush: html; gutter: true">&#60;div id=&#34;header&#34;&#62;
...
&#60;/div&#62;
..........
&#60;div id=&#34;footer&#34;&#62;
...
&#60;/div&#62;</pre>
在<span style="font-family: 'Times New Roman';">HTML5</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">中，有两个可以替代上述声明的元素，这可以使代码更简洁。</span>
<pre class="brush: html; gutter: true">&#60;header&#62;
...
&#60;/header&#62;
&#60;footer&#62;
...
&#60;/footer&#62;</pre>
<strong>4.Hgroup</strong>

在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，有许多新引入的元素，</span><span style="font-family: 'Times New Roman';">hgroup</span><span style="font-family: 宋体;">就是其中之一。假设我的网站名下面紧跟着一个子标题，我可以用</span><span style="font-family: 'Times New Roman';">&#60;h1&#62;</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">&#60;h2&#62;</span><span style="font-family: 宋体;">标签来分别定义。然而，这种定义没有说明这两者之间的关系。而且，</span><span style="font-family: 'Times New Roman';">h2</span><span style="font-family: 宋体;">标签的使用会带来更多问题，比如该页面上还有其他标题的时候。</span>

在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，我们可以用</span><span style="font-family: 'Times New Roman';">hgroup</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">元素来将它们分组，这样就不会影响文件的大纲。</span>
<pre class="brush: html; gutter: true">&#60;header&#62;
&#60;hgroup&#62;
  &#60;h1&#62; Recall Fan Page &#60;/h1&#62;
  &#60;h2&#62; Only for people who want the memory of a lifetime. &#60;/h2&#62;
&#60;/hgroup&#62;
&#60;/header&#62;</pre>
<strong>5.标记元素 (Mark Element)</strong>

你可以把它当做高亮标签。被这个标签修饰的字符串应当和用户当前的行动相关。比如说，当我在某博客中搜索“<span style="font-family: 'Times New Roman';">Open your Mind</span><span style="font-family: 宋体;">”时，我可以利用一些</span><span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">将出现的词组用</span><span style="font-family: 'Times New Roman';">&#60;mark&#62;</span><span style="font-family: 宋体;">修饰一下。</span>
<pre class="brush: html; gutter: true">&#60;h3&#62; Search Results &#60;/h3&#62;
&#60;p&#62; They were interrupted, just after Quato said, &#60;mark&#62;&#34;Open your Mind&#34;&#60;/mark&#62;. &#60;/p&#62;</pre>
<strong>6.图形元素 (Figure Element)</strong>
<p id="">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，下面的这些代码被用来修饰图片的注释。</span></p>

<pre class="brush: html; gutter: true">&#60;img src=&#34;path/to/image&#34; alt=&#34;About image&#34; /&#62;
&#60;p&#62;Image of Mars. &#60;/p&#62;</pre>
然而，上述代码没有将文字和图片内在联系起来。因此，<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">引入了</span><span style="font-family: 'Times New Roman';">&#60;figure&#62;</span><span style="font-family: 宋体;">元素。当和</span><span style="font-family: 'Times New Roman';">&#60;figcaption&#62;</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">结合起来后，我们可以语义化地将注释和相应的图片联系起来。</span>
<pre class="brush: html; gutter: true">&#60;figure&#62;
&#60;img src=&#34;path/to/image&#34; alt=&#34;About image&#34; /&#62;
&#60;figcaption&#62;
  &#60;p&#62;This is an image of something interesting. &#60;/p&#62;
&#60;/figcaption&#62;
&#60;/figure&#62;</pre>
<strong>7.重新定义<span style="font-family: 'Times New Roman';">&#60;small&#62; (Small Element redefined)</span></strong>

在HTML4或XHTML中，<span style="font-family: 'Times New Roman';">&#60;small&#62;</span><span style="font-family: 宋体;">元素已经存在。然而，却没有如何正确使用这一元素的完整说明。在</span>HTML5中，<span style="font-family: 'Times New Roman';">&#60;small&#62;</span><span style="font-family: 宋体;">被用来定义小字。</span>试想下你网站底部的版权状态，根据对此元素新的<span style="font-family: Arial;">HTML5</span><span style="font-family: 宋体;">定义，</span>&#60;small&#62;可以正确地<span style="font-family: 宋体;">诠释</span>这些信息。

<strong>8.占位符 (Placeholder)</strong>

在HTML4或XHTML中，你需要用<span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">来给文本框添加占位符。比如，你可以提前设置好一些信息，当用户开始输入时，文本框中的文字就消失。</span>

而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，新的“</span><span style="font-family: 'Times New Roman';">placeholder</span><span style="font-family: 宋体;">”就简化了这个问题。</span>

<strong>9.必要属性 (Required Attribute)</strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">HTML5<span style="font-family: 宋体;">中的新属性“</span><span style="font-family: 'Times New Roman';">required</span><span style="font-family: 宋体;">”指定了某一输入是否必需。有两种方法声明这一属性。</span></p>

<pre class="brush: html; gutter: true">&#60;input type=&#34;text&#34; name=&#34;someInput&#34; required&#62;
&#60;input type=&#34;text&#34; name=&#34;someInput&#34; required=&#34;required&#34;&#62;</pre>
当文本框被指定必需时，如果空白的话表格就不能提交。下面是一个如何使用的例子。
<pre class="brush: html; gutter: true">&#60;form method=&#34;post&#34; action=&#34;&#34;&#62;
&#60;label for=&#34;someInput&#34;&#62; Your Name: &#60;/label&#62;
&#60;input type=&#34;text&#34; id=&#34;someInput&#34; name=&#34;someInput&#34; placeholder=&#34;Douglas Quaid&#34; required&#62;
&#60;button type=&#34;submit&#34;&#62;Go&#60;/button&#62;
&#60;/form&#62;</pre>
在上面那个例子中，如果输入内容空且表格被提交，输入框将被高亮显示。

<strong>10.Autofocus <span style="font-family: 宋体;">属性 (Autofocus Attribute)</span></strong>
<p id="">同样，<span style="font-family: Arial;">HTML5</span><span style="font-family: 宋体;">的解决方案消除了对</span><span style="font-family: Arial;">JavaScript</span><span style="font-family: 宋体;">的需要。如果一个特定的输入应该是</span>“选择”或聚焦，默认情况下，我们现在可以利用自动聚焦属性。</p>

<pre class="brush: html; gutter: true">&#60;input type=&#34;text&#34; name=&#34;someInput&#34; placeholder=&#34;Douglas Quaid&#34; required autofocus&#62;</pre>
<strong>11.Audio <span style="font-family: 宋体;">支持 (Audio Support)</span></strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">目前我们需要依靠第三方插件来渲染音频。然而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，</span><span style="font-family: 'Times New Roman';">&#60;audio&#62;</span><span style="font-family: 宋体;">元素被引进来了。</span></p>

<pre class="brush: html; gutter: true">&#60;audio autoplay=&#34;autoplay&#34; controls=&#34;controls&#34;&#62;
     &#60;source src=&#34;file.ogg&#34; /&#62;
     &#60;source src=&#34;file.mp3&#34; /&#62;
     &#60;a href=&#34;file.mp3&#34;&#62;Download this file.&#60;/a&#62;
&#60;/audio&#62;</pre>
当使用<span style="font-family: 'Times New Roman';">&#60;audio&#62;</span><span style="font-family: 宋体;">元素时请记得包含两种音频格式。</span><span style="font-family: 'Times New Roman';">FireFox</span><span style="font-family: 宋体;">想要</span><span style="font-family: 'Times New Roman';">.ogg</span><span style="font-family: 宋体;">格式的文件，而</span><span style="font-family: 'Times New Roman';">Webkit</span><span style="font-family: 宋体;">浏览器则需要</span><span style="font-family: 'Times New Roman';">.mp3</span><span style="font-family: 宋体;">格式的。和往常一样，</span><span style="font-family: 'Times New Roman';">IE</span><span style="font-family: 宋体;">是不支持的，且</span><span style="font-family: 'Times New Roman';">Opera 10</span><span style="font-family: 宋体;">及以下版本只支持</span><span style="font-family: 'Times New Roman';">.wav</span><span style="font-family: 宋体;">格式。</span>

<strong>12.Video <span style="font-family: 宋体;">支持 (Video Support)</span></strong>
<p id="">HTML5<span style="font-family: 宋体;">中不仅有</span><span style="font-family: 'Times New Roman';">&#60;audio&#62;</span><span style="font-family: 宋体;">元素，而且还有</span><span style="font-family: 'Times New Roman';">&#60;video&#62;</span><span style="font-family: 宋体;">。然而，和</span><span style="font-family: 'Times New Roman';">&#60;audio&#62;</span><span style="font-family: 宋体;">类似，</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中并没有指定视频解码器，它留给了浏览器来决定。</span>虽然<span style="font-family: Arial;">Safari</span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Internet Explorer9</span><span style="font-family: 宋体;">可以支持</span><span style="font-family: Arial;">H.264</span><span style="font-family: 宋体;">格式的视频，</span><span style="font-family: Arial;">Firefox</span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Opera</span><span style="font-family: 宋体;">是坚持开源</span><span style="font-family: Arial;">Theora </span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Vorbis</span><span style="font-family: 宋体;">格式。因此，</span>指定HTML5<span style="font-family: 宋体;">的视频</span>时，你必须提供这两种格式。</p>

<pre class="brush: html; gutter: true">&#60;video controls preload&#62;
&#60;source src=&#34;cohagenPhoneCall.ogv&#34; type=&#34;video/ogg; codecs=&#039;vorbis, theora&#039;&#34; /&#62;
&#60;source src=&#34;cohagenPhoneCall.mp4&#34; type=&#34;video/mp4; &#039;codecs=&#039;avc1.42E01E, mp4a.40.2&#039;&#34; /&#62;
&#60;p&#62; Your browser is old. &#60;a href=&#34;cohagenPhoneCall.mp4&#34;&#62;Download this video instead.&#60;/a&#62; &#60;/p&#62;
&#60;/video&#62;</pre>
<strong>13.视频预载 (Preload attribute in Videos element)</strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">当用户访问页面时这一属性使得视频得以预载。为了实现这个功能，可以在<span style="font-family: 'Times New Roman';">&#60;video&#62;</span><span style="font-family: 宋体;">元素中加上</span><span style="font-family: 'Times New Roman';">preload="preload"</span><span style="font-family: 宋体;">或者只是</span><span style="font-family: 'Times New Roman';">preload</span><span style="font-family: 宋体;">。</span></p>

<pre class="brush: html; gutter: true">&#60;video preload&#62;</pre>
<strong>14.显示控制条 (Display Controls)</strong>
<p id="">如果你使用过上面的每一个提到的技术点，你可能已经注意到，使用上面的代码，视频仅仅显示的是张图片，没有控制条。为了渲染出播放控制条，我们必须在<span style="font-family: Arial;">video</span><span style="font-family: 宋体;">元素内指定</span><span style="font-family: Arial;">controls</span><span style="font-family: 宋体;">属性。</span></p>

<pre class="brush: html; gutter: true">&#60;video preload controls&#62;</pre>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown"><strong>15.正规表达式 (Regular Expressions)</strong></p>
<p id="">在HTML4或XHTML中，你需要用一些正规表达式来验证特定的文本。而<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中新的</span><span style="font-family: 'Times New Roman';">pattern</span><span style="font-family: 宋体;">属性让我们能够在标签处直接插入一个正规表达式。</span></p>

<pre class="brush: html; gutter: true">&#60;form action=&#34;&#34; method=&#34;post&#34;&#62;
&#60;label for=&#34;username&#34;&#62;Create a Username: &#60;/label&#62;
    &#60;input type=&#34;text&#34;
    name=&#34;username&#34;
    id=&#34;username&#34;
    placeholder=&#34;4 &#60;&#62; 10&#34;
    pattern=&#34;[A-Za-z]{4,10}&#34;
    autofocus
    required&#62;
&#60;button type=&#34;submit&#34;&#62;Go &#60;/button&#62;
&#60;/form&#62;</pre>
<strong>结论</strong>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">事实上，还有很多新元素和特性，上面提到的只是一些我认为网站开发中常用的，剩下的就由你们自己去摸索啦。</p>
英文原文：<a href="http://www.ansoncheung.tk/articles/15-html5-new-features-you-must-know">http://www.ansoncheung.tk/articles/15-html5-new-features-you-must-know</a>]]></description>
			<content:encoded><![CDATA[<p>HTML5<span style="font-family: 宋体;">想必大家都很熟悉了，因为太多的媒体在讨论这一技术。然而，你能准确地说出</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">带来了哪些新特性吗？</span>本文总结了HTML5<span style="font-family: 宋体;">带来的</span><span style="font-family: 'Times New Roman';">15</span><span style="font-family: 宋体;">项你必须知道的</span>新特性。</p>
<p>一起来看下：</p>
<p><strong>1.新的文档类型<span style="font-family: 'Times New Roman';">  (New Doctype)<span id="more-13612"></span></span></strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">目前许多网页还在使用XHTML 1.0 并且要在第一行像这样<br />
声明文档类型：</p>
<pre class="brush: html; gutter: true">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot;
&quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</pre>
<p>在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，上面那种声明方式将失效。下面是</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中的声明方式：</span></p>
<pre class="brush: html; gutter: true">&lt;!DOCTYPE html&gt;</pre>
<p><strong>2.脚本和链接无需<span style="font-family: 'Times New Roman';">type  (No More Types for Scripts and Links)</span></strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，你需要用下面的几行代码来给你的网页添加</span><span style="font-family: 'Times New Roman';">CSS</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">文件。</span></p>
<pre class="brush: html; gutter: true">&lt;link rel=&quot;stylesheet&quot; href=&quot;path/to/stylesheet.css&quot; type=&quot;text/css&quot; /&gt;
&lt;script type=&quot;text/javascript&quot; src=&quot;path/to/script.js&quot;&gt;&lt;/script&gt;</pre>
<p>而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，你不再需要指定类型属性。因此，代码可以简化如下：</span></p>
<pre class="brush: html; gutter: true">&lt;link rel=&quot;stylesheet&quot; href=&quot;path/to/stylesheet.css&quot; /&gt;
&lt;script src=&quot;path/to/script.js&quot;&gt;&lt;/script&gt;</pre>
<p><strong>3.语义<span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 'Times New Roman';">Header</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">Footer (The Semantic Header and Footer)</span></strong></p>
<p id="">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，你需要用下面的代码来声明</span><span style="font-family: 'Times New Roman';">&#8220;Header&#8221;</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">&#8220;Footer&#8221;</span><span style="font-family: 宋体;">。</span></p>
<pre class="brush: html; gutter: true">&lt;div id=&quot;header&quot;&gt;
...
&lt;/div&gt;
..........
&lt;div id=&quot;footer&quot;&gt;
...
&lt;/div&gt;</pre>
<p>在<span style="font-family: 'Times New Roman';">HTML5</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">中，有两个可以替代上述声明的元素，这可以使代码更简洁。</span></p>
<pre class="brush: html; gutter: true">&lt;header&gt;
...
&lt;/header&gt;
&lt;footer&gt;
...
&lt;/footer&gt;</pre>
<p><strong>4.Hgroup</strong></p>
<p>在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，有许多新引入的元素，</span><span style="font-family: 'Times New Roman';">hgroup</span><span style="font-family: 宋体;">就是其中之一。假设我的网站名下面紧跟着一个子标题，我可以用</span><span style="font-family: 'Times New Roman';">&lt;h1&gt;</span><span style="font-family: 宋体;">和</span><span style="font-family: 'Times New Roman';">&lt;h2&gt;</span><span style="font-family: 宋体;">标签来分别定义。然而，这种定义没有说明这两者之间的关系。而且，</span><span style="font-family: 'Times New Roman';">h2</span><span style="font-family: 宋体;">标签的使用会带来更多问题，比如该页面上还有其他标题的时候。</span></p>
<p>在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，我们可以用</span><span style="font-family: 'Times New Roman';">hgroup</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">元素来将它们分组，这样就不会影响文件的大纲。</span></p>
<pre class="brush: html; gutter: true">&lt;header&gt;
&lt;hgroup&gt;
  &lt;h1&gt; Recall Fan Page &lt;/h1&gt;
  &lt;h2&gt; Only for people who want the memory of a lifetime. &lt;/h2&gt;
&lt;/hgroup&gt;
&lt;/header&gt;</pre>
<p><strong>5.标记元素 (Mark Element)</strong></p>
<p>你可以把它当做高亮标签。被这个标签修饰的字符串应当和用户当前的行动相关。比如说，当我在某博客中搜索“<span style="font-family: 'Times New Roman';">Open your Mind</span><span style="font-family: 宋体;">”时，我可以利用一些</span><span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">将出现的词组用</span><span style="font-family: 'Times New Roman';">&lt;mark&gt;</span><span style="font-family: 宋体;">修饰一下。</span></p>
<pre class="brush: html; gutter: true">&lt;h3&gt; Search Results &lt;/h3&gt;
&lt;p&gt; They were interrupted, just after Quato said, &lt;mark&gt;&quot;Open your Mind&quot;&lt;/mark&gt;. &lt;/p&gt;</pre>
<p><strong>6.图形元素 (Figure Element)</strong></p>
<p id="">在<span style="font-family: 'Times New Roman';">HTML4</span><span style="font-family: 宋体;">或</span><span style="font-family: 'Times New Roman';">XHTML</span><span style="font-family: 宋体;">中，下面的这些代码被用来修饰图片的注释。</span></p>
<pre class="brush: html; gutter: true">&lt;img src=&quot;path/to/image&quot; alt=&quot;About image&quot; /&gt;
&lt;p&gt;Image of Mars. &lt;/p&gt;</pre>
<p>然而，上述代码没有将文字和图片内在联系起来。因此，<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">引入了</span><span style="font-family: 'Times New Roman';">&lt;figure&gt;</span><span style="font-family: 宋体;">元素。当和</span><span style="font-family: 'Times New Roman';">&lt;figcaption&gt;</span><span id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown" style="font-family: 宋体;">结合起来后，我们可以语义化地将注释和相应的图片联系起来。</span></p>
<pre class="brush: html; gutter: true">&lt;figure&gt;
&lt;img src=&quot;path/to/image&quot; alt=&quot;About image&quot; /&gt;
&lt;figcaption&gt;
  &lt;p&gt;This is an image of something interesting. &lt;/p&gt;
&lt;/figcaption&gt;
&lt;/figure&gt;</pre>
<p><strong>7.重新定义<span style="font-family: 'Times New Roman';">&lt;small&gt; (Small Element redefined)</span></strong></p>
<p>在HTML4或XHTML中，<span style="font-family: 'Times New Roman';">&lt;small&gt;</span><span style="font-family: 宋体;">元素已经存在。然而，却没有如何正确使用这一元素的完整说明。在</span>HTML5中，<span style="font-family: 'Times New Roman';">&lt;small&gt;</span><span style="font-family: 宋体;">被用来定义小字。</span>试想下你网站底部的版权状态，根据对此元素新的<span style="font-family: Arial;">HTML5</span><span style="font-family: 宋体;">定义，</span>&lt;small&gt;可以正确地<span style="font-family: 宋体;">诠释</span>这些信息。</p>
<p><strong>8.占位符 (Placeholder)</strong></p>
<p>在HTML4或XHTML中，你需要用<span style="font-family: 'Times New Roman';">JavaScript</span><span style="font-family: 宋体;">来给文本框添加占位符。比如，你可以提前设置好一些信息，当用户开始输入时，文本框中的文字就消失。</span></p>
<p>而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，新的“</span><span style="font-family: 'Times New Roman';">placeholder</span><span style="font-family: 宋体;">”就简化了这个问题。</span></p>
<p><strong>9.必要属性 (Required Attribute)</strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">HTML5<span style="font-family: 宋体;">中的新属性“</span><span style="font-family: 'Times New Roman';">required</span><span style="font-family: 宋体;">”指定了某一输入是否必需。有两种方法声明这一属性。</span></p>
<pre class="brush: html; gutter: true">&lt;input type=&quot;text&quot; name=&quot;someInput&quot; required&gt;
&lt;input type=&quot;text&quot; name=&quot;someInput&quot; required=&quot;required&quot;&gt;</pre>
<p>当文本框被指定必需时，如果空白的话表格就不能提交。下面是一个如何使用的例子。</p>
<pre class="brush: html; gutter: true">&lt;form method=&quot;post&quot; action=&quot;&quot;&gt;
&lt;label for=&quot;someInput&quot;&gt; Your Name: &lt;/label&gt;
&lt;input type=&quot;text&quot; id=&quot;someInput&quot; name=&quot;someInput&quot; placeholder=&quot;Douglas Quaid&quot; required&gt;
&lt;button type=&quot;submit&quot;&gt;Go&lt;/button&gt;
&lt;/form&gt;</pre>
<p>在上面那个例子中，如果输入内容空且表格被提交，输入框将被高亮显示。</p>
<p><strong>10.Autofocus <span style="font-family: 宋体;">属性 (Autofocus Attribute)</span></strong></p>
<p id="">同样，<span style="font-family: Arial;">HTML5</span><span style="font-family: 宋体;">的解决方案消除了对</span><span style="font-family: Arial;">JavaScript</span><span style="font-family: 宋体;">的需要。如果一个特定的输入应该是</span>“选择”或聚焦，默认情况下，我们现在可以利用自动聚焦属性。</p>
<pre class="brush: html; gutter: true">&lt;input type=&quot;text&quot; name=&quot;someInput&quot; placeholder=&quot;Douglas Quaid&quot; required autofocus&gt;</pre>
<p><strong>11.Audio <span style="font-family: 宋体;">支持 (Audio Support)</span></strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">目前我们需要依靠第三方插件来渲染音频。然而在<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中，</span><span style="font-family: 'Times New Roman';">&lt;audio&gt;</span><span style="font-family: 宋体;">元素被引进来了。</span></p>
<pre class="brush: html; gutter: true">&lt;audio autoplay=&quot;autoplay&quot; controls=&quot;controls&quot;&gt;
     &lt;source src=&quot;file.ogg&quot; /&gt;
     &lt;source src=&quot;file.mp3&quot; /&gt;
     &lt;a href=&quot;file.mp3&quot;&gt;Download this file.&lt;/a&gt;
&lt;/audio&gt;</pre>
<p>当使用<span style="font-family: 'Times New Roman';">&lt;audio&gt;</span><span style="font-family: 宋体;">元素时请记得包含两种音频格式。</span><span style="font-family: 'Times New Roman';">FireFox</span><span style="font-family: 宋体;">想要</span><span style="font-family: 'Times New Roman';">.ogg</span><span style="font-family: 宋体;">格式的文件，而</span><span style="font-family: 'Times New Roman';">Webkit</span><span style="font-family: 宋体;"><span class='wp_keywordlink'><a href="http://blog.jobbole.com/12749/" title="浏览器" target="_blank">浏览器</a></span>则需要</span><span style="font-family: 'Times New Roman';">.mp3</span><span style="font-family: 宋体;">格式的。和往常一样，</span><span style="font-family: 'Times New Roman';">IE</span><span style="font-family: 宋体;">是不支持的，且</span><span style="font-family: 'Times New Roman';">Opera 10</span><span style="font-family: 宋体;">及以下版本只支持</span><span style="font-family: 'Times New Roman';">.wav</span><span style="font-family: 宋体;">格式。</span></p>
<p><strong>12.Video <span style="font-family: 宋体;">支持 (Video Support)</span></strong></p>
<p id="">HTML5<span style="font-family: 宋体;">中不仅有</span><span style="font-family: 'Times New Roman';">&lt;audio&gt;</span><span style="font-family: 宋体;">元素，而且还有</span><span style="font-family: 'Times New Roman';">&lt;video&gt;</span><span style="font-family: 宋体;">。然而，和</span><span style="font-family: 'Times New Roman';">&lt;audio&gt;</span><span style="font-family: 宋体;">类似，</span><span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中并没有指定视频解码器，它留给了浏览器来决定。</span>虽然<span style="font-family: Arial;">Safari</span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Internet Explorer9</span><span style="font-family: 宋体;">可以支持</span><span style="font-family: Arial;">H.264</span><span style="font-family: 宋体;">格式的视频，</span><span style="font-family: Arial;">Firefox</span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Opera</span><span style="font-family: 宋体;">是坚持开源</span><span style="font-family: Arial;">Theora </span><span style="font-family: 宋体;">和</span><span style="font-family: Arial;">Vorbis</span><span style="font-family: 宋体;">格式。因此，</span>指定HTML5<span style="font-family: 宋体;">的视频</span>时，你必须提供这两种格式。</p>
<pre class="brush: html; gutter: true">&lt;video controls preload&gt;
&lt;source src=&quot;cohagenPhoneCall.ogv&quot; type=&quot;video/ogg; codecs=&#039;vorbis, theora&#039;&quot; /&gt;
&lt;source src=&quot;cohagenPhoneCall.mp4&quot; type=&quot;video/mp4; &#039;codecs=&#039;avc1.42E01E, mp4a.40.2&#039;&quot; /&gt;
&lt;p&gt; Your browser is old. &lt;a href=&quot;cohagenPhoneCall.mp4&quot;&gt;Download this video instead.&lt;/a&gt; &lt;/p&gt;
&lt;/video&gt;</pre>
<p><strong>13.视频预载 (Preload attribute in Videos element)</strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">当用户访问页面时这一属性使得视频得以预载。为了实现这个功能，可以在<span style="font-family: 'Times New Roman';">&lt;video&gt;</span><span style="font-family: 宋体;">元素中加上</span><span style="font-family: 'Times New Roman';">preload=&#8221;preload&#8221;</span><span style="font-family: 宋体;">或者只是</span><span style="font-family: 'Times New Roman';">preload</span><span style="font-family: 宋体;">。</span></p>
<pre class="brush: html; gutter: true">&lt;video preload&gt;</pre>
<p><strong>14.显示控制条 (Display Controls)</strong></p>
<p id="">如果你使用过上面的每一个提到的技术点，你可能已经注意到，使用上面的代码，视频仅仅显示的是张图片，没有控制条。为了渲染出播放控制条，我们必须在<span style="font-family: Arial;">video</span><span style="font-family: 宋体;">元素内指定</span><span style="font-family: Arial;">controls</span><span style="font-family: 宋体;">属性。</span></p>
<pre class="brush: html; gutter: true">&lt;video preload controls&gt;</pre>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown"><strong>15.正规表达式 (Regular Expressions)</strong></p>
<p id="">在HTML4或XHTML中，你需要用一些正规表达式来验证特定的文本。而<span style="font-family: 'Times New Roman';">HTML5</span><span style="font-family: 宋体;">中新的</span><span style="font-family: 'Times New Roman';">pattern</span><span style="font-family: 宋体;">属性让我们能够在标签处直接插入一个正规表达式。</span></p>
<pre class="brush: html; gutter: true">&lt;form action=&quot;&quot; method=&quot;post&quot;&gt;
&lt;label for=&quot;username&quot;&gt;Create a Username: &lt;/label&gt;
    &lt;input type=&quot;text&quot;
    name=&quot;username&quot;
    id=&quot;username&quot;
    placeholder=&quot;4 &lt;&gt; 10&quot;
    pattern=&quot;[A-Za-z]{4,10}&quot;
    autofocus
    required&gt;
&lt;button type=&quot;submit&quot;&gt;Go &lt;/button&gt;
&lt;/form&gt;</pre>
<p><strong>结论</strong></p>
<p id="aeaoofnhgocdbnbeljkmbjdmhbcokfdb-mousedown">事实上，还有很多新元素和特性，上面提到的只是一些我认为网站开发中常用的，剩下的就由你们自己去摸索啦。</p>
<p>英文原文：<a href="http://www.ansoncheung.tk/articles/15-html5-new-features-you-must-know">http://www.ansoncheung.tk/articles/15-html5-new-features-you-must-know</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/13522/" title="Google Web应用开发指南第一章：什么是Web应用？">Google Web应用开发指南第一章：什么是Web应用？</a></li><li><a href="http://blog.jobbole.com/13278/" title="10个出色的HTML5画布示例">10个出色的HTML5画布示例</a></li><li><a href="http://blog.jobbole.com/12588/" title="信息图：HTML5在游戏领域不敌Flash">信息图：HTML5在游戏领域不敌Flash</a></li><li><a href="http://blog.jobbole.com/12461/" title="企业开发：选Flex？还是HTML5？">企业开发：选Flex？还是HTML5？</a></li><li><a href="http://blog.jobbole.com/12233/" title="《Cut The Rope》 HTML 5版背后的开发故事">《Cut The Rope》 HTML 5版背后的开发故事</a></li><li><a href="http://blog.jobbole.com/11957/" title="开发者视角论述HTML5平台的7大特点">开发者视角论述HTML5平台的7大特点</a></li><li><a href="http://blog.jobbole.com/11696/" title="VisionMobile：2011年度十大事件">VisionMobile：2011年度十大事件</a></li><li><a href="http://blog.jobbole.com/11363/" title="知识普及：HTML 5到底是个什么东西">知识普及：HTML 5到底是个什么东西</a></li><li><a href="http://blog.jobbole.com/11235/" title="关于HTML5的11个让人难以接受的事实">关于HTML5的11个让人难以接受的事实</a></li><li><a href="http://blog.jobbole.com/10736/" title="2011年回顾：改变游戏的20个HTML5网站">2011年回顾：改变游戏的20个HTML5网站</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13612/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Node.js不是银弹，但它仍然是颗子弹</title>
		<link>http://blog.jobbole.com/13599/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=node-js%25e4%25b8%258d%25e6%2598%25af%25e9%2593%25b6%25e5%25bc%25b9%25ef%25bc%258c%25e4%25bd%2586%25e5%25ae%2583%25e4%25bb%258d%25e7%2584%25b6%25e6%2598%25af%25e9%25a2%2597%25e5%25ad%2590%25e5%25bc%25b9</link>
		<comments>http://blog.jobbole.com/13599/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 02:08:11 +0000</pubDate>
		<dc:creator>齐哲</dc:creator>
				<category><![CDATA[程序员]]></category>
		<category><![CDATA[Node.js]]></category>
		<category><![CDATA[框架]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13599</guid>
		<description><![CDATA[本文的作者 <a href="http://crgwbr.com/page/27/about-me/" target="_blank">Craig</a> 是一个住在纽约的自由软件开发者，他在最近的看到了一篇名为《<a href="http://codeslinger.posterous.com/if-youre-using-nodejs-youre-doing-life-wrong" target="_blank">如果你正在使用Node.js，你就是误入歧途</a>》的文章，文章对Node.js横加指责，Craig对此表示不满，于是写下了下面的文章：<strong><!--more--></strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet.jpg"><img class="aligncenter size-full wp-image-13601" title="Node.js不是银弹，但它仍然是颗子弹 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet.jpg" alt="Node.js不是银弹，但它仍然是颗子弹 " width="150" height="150" /></a>

我真的不知道为什么有人这样的讨厌 Node.js。你也看见了网上有大量关于 Node.js 的文章和高调的言论，就好象 Node.js 是解决所有问题的良方。不是的。就像现有的很多其它框架和语言一样，它在某些事情上表现的很优良，而在其它事情上却很差。

Node.js，单从我的理解上讲，它的设计目标是更好的通过网络快速、实时的传输少量字节信息。服务器端事件处理，即时消息应用，实时游戏，以及协作工具，这都是可以使用它的很好的例子。拿<a href="https://trello.com/" target="_blank">Trello</a>做 个例子。Trello 是一个实时协作应用程序，使用 Socket.io 和 Node.js 来实现客户端之间的实时事件传播和状态变换。你可以使用频繁的探询或用ajax长周期探询来完成相同的事情，但这两种方法在服务器端占用了不必要的 worker线程，需要处理额外的请求。Node.js 从某方面讲，本质上正是<em>擅长</em>做这类事情。它的异步事件处理为基础的架构使得接收、处理、发送实时事件消息变得简单，容易，而且非常有速度。

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet1.png"><img class="aligncenter size-full wp-image-13602" title="Node.js不是银弹，但它仍然是颗子弹" src="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet1.png" alt="Node.js不是银弹，但它仍然是颗子弹 " width="245" height="66" /></a>

可同时，Node.js 不是、不是特别的擅长做计算。比如，如果你想做一个能返回斐波那契数列（Fibonacci）序列中第n个数的API，用 Node.js 必然不是一个很好的选择，为什么？所有的原因都在于，人们之所以要使用 Node.js 都是为了一个避免去等待什么事情。相比等待一个数据库返回查询结果，Node.js的做法是触发一个查询动作，设置一个回调事件。这样，当查询在执行时， 你的程序可以去做其它事情(比如处理其它请求)。这使得 Node.js 看起来非常的快，通常不需要使用多个CPU。然而，在我们的这个计算斐波那契数列的例子中，程序不需要去等待<em>任何事情</em>。这个API返回结果的速度直接依赖于计算的速度。所以，如果用另外一种计算能力更强的语言，比如Haskell或Scala，更合适。

所有的这些说明了什么观点？观点就是，如果一个框架只是为了解决任务A而设计，而你却抱怨它不能很好的完成任务B，这是愚蠢而荒谬的。Node.js 在它被设计去做的事情上表现的异常优秀——所以，就不要去嚷嚷它不擅长做其它事情了。
<p id="page-note">英文原文：<a href="http://crgwbr.com/details/41/nodejs-isnt-a-silver-bullet-but-still-a-bullet/">Node.js isn't a silver bullet, but it's still a bullet.</a></p>]]></description>
			<content:encoded><![CDATA[<p>本文的作者 <a href="http://crgwbr.com/page/27/about-me/" target="_blank">Craig</a> 是一个住在纽约的自由软件开发者，他在最近的看到了一篇名为《<a href="http://codeslinger.posterous.com/if-youre-using-nodejs-youre-doing-life-wrong" target="_blank">如果你正在使用Node.js，你就是误入歧途</a>》的文章，文章对Node.js横加指责，Craig对此表示不满，于是写下了下面的文章：<strong><span id="more-13599"></span></strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet.jpg"><img class="aligncenter size-full wp-image-13601" title="Node.js不是银弹，但它仍然是颗子弹 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet.jpg" alt="Node.js不是银弹，但它仍然是颗子弹 " width="150" height="150" /></a></p>
<p>我真的不知道为什么有人这样的讨厌 Node.js。你也看见了网上有大量关于 Node.js 的文章和高调的言论，就好象 Node.js 是解决所有问题的良方。不是的。就像现有的很多其它框架和语言一样，它在某些事情上表现的很优良，而在其它事情上却很差。</p>
<p>Node.js，单从我的理解上讲，它的设计目标是更好的通过网络快速、实时的传输少量字节信息。服务器端事件处理，即时消息应用，实时游戏，以及协作工具，这都是可以使用它的很好的例子。拿<a href="https://trello.com/" target="_blank">Trello</a>做 个例子。Trello 是一个实时协作应用程序，使用 Socket.io 和 Node.js 来实现客户端之间的实时事件传播和状态变换。你可以使用频繁的探询或用ajax长周期探询来完成相同的事情，但这两种方法在服务器端占用了不必要的 worker线程，需要处理额外的请求。Node.js 从某方面讲，本质上正是<em>擅长</em>做这类事情。它的异步事件处理为基础的架构使得接收、处理、发送实时事件消息变得简单，容易，而且非常有速度。</p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet1.png"><img class="aligncenter size-full wp-image-13602" title="Node.js不是银弹，但它仍然是颗子弹" src="http://blog.jobbole.com/wp-content/uploads/2012/02/Node.js-isnt-a-silver-bullet-but-its-still-a-bullet1.png" alt="Node.js不是银弹，但它仍然是颗子弹 " width="245" height="66" /></a></p>
<p>可同时，Node.js 不是、不是特别的擅长做计算。比如，如果你想做一个能返回斐波那契数列（Fibonacci）序列中第n个数的API，用 Node.js 必然不是一个很好的选择，为什么？所有的原因都在于，人们之所以要使用 Node.js 都是为了一个避免去等待什么事情。相比等待一个数据库返回查询结果，Node.js的做法是触发一个查询动作，设置一个回调事件。这样，当查询在执行时， 你的程序可以去做其它事情(比如处理其它请求)。这使得 Node.js 看起来非常的快，通常不需要使用多个CPU。然而，在我们的这个计算斐波那契数列的例子中，程序不需要去等待<em>任何事情</em>。这个API返回结果的速度直接依赖于计算的速度。所以，如果用另外一种计算能力更强的语言，比如Haskell或Scala，更合适。</p>
<p>所有的这些说明了什么观点？观点就是，如果一个框架只是为了解决任务A而设计，而你却抱怨它不能很好的完成任务B，这是愚蠢而荒谬的。Node.js 在它被设计去做的事情上表现的异常优秀——所以，就不要去嚷嚷它不擅长做其它事情了。</p>
<p id="page-note">英文原文：<a href="http://crgwbr.com/details/41/nodejs-isnt-a-silver-bullet-but-still-a-bullet/">Node.js isn&#8217;t a silver bullet, but it&#8217;s still a bullet.</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/12001/" title="推荐10个出色的JavaScript动画框架">推荐10个出色的JavaScript动画框架</a></li><li><a href="http://blog.jobbole.com/9926/" title="2011年10个最重要的开源软件 ">2011年10个最重要的开源软件 </a></li><li><a href="http://blog.jobbole.com/9378/" title="我为什么向后端工程师推荐Node.js">我为什么向后端工程师推荐Node.js</a></li><li><a href="http://blog.jobbole.com/1483/" title="20个值得一试的JavaScript框架">20个值得一试的JavaScript框架</a></li><li><a href="http://blog.jobbole.com/1468/" title="10个步骤让你成为高效的Web开发者">10个步骤让你成为高效的Web开发者</a></li><li><a href="http://blog.jobbole.com/1398/" title="8个针对开发者的MooTools实用插件">8个针对开发者的MooTools实用插件</a></li><li><a href="http://blog.jobbole.com/1384/" title="框架让开发人员变得愚钝吗？">框架让开发人员变得愚钝吗？</a></li><li><a href="http://blog.jobbole.com/1380/" title="JavaScript最佳开发工具集合">JavaScript最佳开发工具集合</a></li><li><a href="http://blog.jobbole.com/1368/" title="什么是Node？">什么是Node？</a></li><li><a href="http://blog.jobbole.com/1302/" title="我为什么不喜欢框架">我为什么不喜欢框架</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13599/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>2011年.NET社区回顾：韬光养晦的一年</title>
		<link>http://blog.jobbole.com/13591/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=2011%25e5%25b9%25b4-net%25e7%25a4%25be%25e5%258c%25ba%25e5%259b%259e%25e9%25a1%25be%25ef%25bc%259a%25e9%259f%25ac%25e5%2585%2589%25e5%2585%25bb%25e6%2599%25a6%25e7%259a%2584%25e4%25b8%2580%25e5%25b9%25b4</link>
		<comments>http://blog.jobbole.com/13591/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 02:07:49 +0000</pubDate>
		<dc:creator>童海波</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[资讯]]></category>
		<category><![CDATA[.Net]]></category>
		<category><![CDATA[微软]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13591</guid>
		<description><![CDATA[2011年对于.NET平台和微软技术而言，可以算是稍显平静的一年，当然也还是有少许可圈可点的事件，值得我们回顾一下。不过，在平静的2011年里，其实发布了很多2012即将发布的新产品新技术的测试版或预览版。所以说本篇文章既是一个回顾也是一个展望。

<strong>Windows Phone 7趋于成熟</strong>

虽然微软于2010年就推出了Windows Phone 7，但是直到2011年如期发布了Mango更新后，Windows Phone 7的发展和应用开发才算进入正轨。尤其<a href="http://www.infoq.com/cn/news/2011/02/Nokia-Partners-with-Microsoft">Nokia与微软的联盟</a>，<a href="http://news.ccidnet.com/art/3709/20110212/2309513_1.html" target="_blank">有些人不看好</a>，有些人认为这会带来智能手机的<a href="http://tech.ifeng.com/telecom/special/nokiatransform/content-0/detail_2011_02/11/4623636_0.shtml" target="_blank">三足鼎立</a>。

Mango针对最终用户和开发者带来了几个方面的重大更新：支持包括中文简体在内更多语言且内置了多语言输入法，更快的应用程序切换，支持多任务系统，浏览器使用IE9内核，支持后台任务的开发，背景音乐的支持，可创建多个Live Tiles，本地数据库的支持等等。需要注意的一点是，Mango更新对于操作系统而言版本号是7.5，而SDK的版本号7.1。

由于Mango带来了以上如此巨大的更新，促使很多厂商尤其国内的厂商开始推出WP7版本的应用程序。有了多语言的支持，中文软件不用再集成一个第三方的输入法；有了更快的应用程序切换和多任务支持，开发应用可以更加关注于应用功能本身，不用花太多精力去处理墓碑机制；有了多个Live Tiles和后台任务的支持，可以开发一款天气应用，在开始界面显示多个城市天气信息的Live Tiles，并在后台任务中定时更新数据息；由于浏览器使用了IE9内核，让HTML5的应用可以无缝地移植到WP7上，也可以自然而然地支持类似<a href="http://www.infoq.com/cn/news/2012/01/PhoneGap-Now-Fully-Supports-WP7" target="_blank">PhoneGap</a>这样的移动Web开发框架；有了背景音乐的支持，现在我们也用到体验更佳的<a href="http://www.windowsphone.com/en-US/apps/95438f7a-a160-421c-9fd7-28b1110f786f" target="_blank">豆瓣FM</a>或<a href="http://www.windowsphone.com/en-US/apps/9cac5272-c4a1-4c10-aee9-4dca5fa645e4" target="_blank">AIRPLAY精选</a>。

所以，2012年WP7的开发会获得开发社区的更多关注，也会催生更多优秀APP的出现。

<strong>基础框架的不断增强</strong>

.NET框架本身的大版本发布基本和开发工具保持一致，不过微软也采用了另外一种更灵活的模式来增强.NET框架的功能——即针对.NET各个组成部分进行快速增量发布。

微软于2011年初，正式发布了<a href="http://www.asp.net/mvc/mvc3" target="_blank">ASP.NET MVC 3</a>，这次的发布带来很多重要改变：使用Razor作为默认的模板引擎，增强了JavaScript和jQuery的支持，强大的依赖注入功能等等。在发布ASP.NET MVC 3的同时，微软也一起发布了很多用于Web开发的关联产品：IIS Express 7.5，SQL Server Compact Edition 4，Web Deploy，Web Farm Framework 2.0，Orchard 1.0（一个基于ASP.NET MVC 3的CMS），WebMatrix 1.0（支持ASP.NET MVC 3的轻量级Web开发IDE）。以及NuGet——VS中强大的依赖包管理工具。需要更多的信息，可以参看<a href="http://weblogs.asp.net/scottgu/archive/2011/01/13/announcing-release-of-asp-net-mvc-3-iis-express-sql-ce-4-web-farm-framework-orchard-webmatrix.aspx" target="_blank">Scott Guthrie的文章</a>。

ADO.NET Entity Framework在2011年分别发布了三次增量版本，4月份发布的4.1，后来的4.1 Update，最后是11月发布的4.2。在EF 4.1和4.2中最大的增强莫过于支持<a href="http://msdn.microsoft.com/zh-cn/magazine/hh126815.aspx" target="_blank">Code-First特性和DbContext API</a>。

随着.NET的子集和分化越来越多，微软也意识到开发跨多个子集的类库所带来的麻烦，于是发布了被称为“<a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981">Portable Library Tools</a>”的工具，可以帮助大家开发针对多个平台的类库（可移植库），支持的平台有：.NET Framework 4，Silverlight，Windows Phone 7，Xbox 360，甚至Mono。

另外，酝酿两年之后，微软发布了<a href="http://msdn.microsoft.com/en-us/data/gg577609">Reactive Extensions</a>（Rx）库的<a href="http://www.microsoft.com/download/en/details.aspx?id=26224">1.0版</a>。Rx把事件驱动UI与LINQ、并发性和异步调用结合起来。更多信息参见：<a href="http://www.infoq.com/cn/news/2011/07/Rx-1">Rx 1.0解决了异步数据访问的问题</a>。同时，微软还发布了Ix（<a href="http://www.infoq.com/cn/news/2011/08/Ix" target="_blank">Interactive Extensions</a>，交互扩展），一组基于Rx技术扩展LINQ查询操作符的类库。

当然，还有一个不得不说的东西就是Silverlight。微软在2011年底低调发布了Silverlight 5，Silverlight 5提供了许多新的功能，如：支持H.264，更强大的内容保护技术，GPU解码支持，UI处理的性能提升，脱离浏览器运行特性的加强，以及针对开发体验的诸多改善。但是由于微软已经完全拥抱HTML5，Silverlight 5就显得有点尴尬。不过Silverlight也不是完全无用武之地，作为一个<a href="http://www.cnblogs.com/redmoon/archive/2009/07/19/1526664.html" target="_blank">轻量级的客户端开发框架</a>已经完全能够胜任，而且Silverlight作为Windows Phone 7的开发技术之一将会长期存在。

最后，当然需要谈到.NET框架本身的发展。在2011年7月微软发布了<a href="http://www.infoq.com/cn/news/2011/07/NET4-GDR" target="_blank">.NET Framework 4.0的更新</a>，这个版本包含了众多补丁和特性，包括HTML5和对移植库的支持，有些内容之前也曾单独发布过。除此，微软还发布了.NET Framework 4.5的开发者预览版，其中展示了<a href="http://www.cnblogs.com/liulun/archive/2012/01/09/2317036.html" target="_blank">很多新特性</a>。

<strong>操作系统、服务器和云服务</strong>

早在2010年，微软就展示了下一代操作系统Windows 8的相关信息；但直到去年的9月份，微软才在<a href="http://livesino.net/archives/3662.live" target="_blank">BUILD会议</a>上向开发者提供了<a href="http://livesino.net/archives/3670.live" target="_blank">开发者预览版</a>，让众多开发者一窥Windows 8带来的新特性。虽然对于普通消费者而言，Windows 8最大的改变在于支持ARM处理器，这为更加节能的Windows 8平板电脑做好了准备。而对于开发者而言，最需要关心的莫过于<a href="http://livesino.net/archives/3666.live">Windows 8 应用模型、开发平台和工具</a>。其中WinRT（Windows Runtime）是微软至Win32以来对Windows的API进行最重大的更新，可以说是<a href="http://www.infoq.com/cn/news/2011/09/WinRT-API" target="_blank">Win32面向对象的替代品</a>，当然也<a href="http://www.infoq.com/cn/news/2011/09/DotNet-On-WinRT" target="_blank">支持C#或VB调用</a>。另外，Windows 8也带来了类似于Windows Phone 7中的Metro UI，并为Metro UI的程序提供了Windows Store。开发人员可以选择HTML5/JavaScript的组合，也可以选择XAML/C++、C#、VB的组合开发Metro UI应用；对于游戏开发，要充分利用硬件性能的话只能选用C++/DirectX 11.1，休闲类游戏也可以使用XAML或HTML5来开发界面。

SQL Server在2011也发布了最新版本的预览版，开发代号名为“Denali”，正式发布的时候会称之为<a href="http://www.infoq.com/cn/news/2011/10/SQL-Server-2012" target="_blank">SQL Server 2012</a>，除了更加关注BI和大数据外，2012作为<a href="http://www.programmer.com.cn/9400/" target="_blank">一个更大的筐</a>也是为了理顺2008 R2一系列新功能。

微软的云平台Windows Azure在2011年也进行了<a href="http://www.cnblogs.com/msdnchina/archive/2011/12/14/interoperabilityandscalabilityonwindowsazure.html" target="_blank">很多更新</a>，最为重要的也许就是更加开放，比如支持Node.js，支持Apache Hadoop，Windows Azure SDK for Java的支持，Windows Azure Plugin for Eclipse的更新，MongoDB的支持，Solr/Lucene的支持，Memcached的支持等。

<strong>Mono的重生与开源</strong>

Mono在2011遭遇了重大变故，由于Novell被Attachmate接管，解散了整个Mono团队，但是Miguel de Icaza作为Mono之父紧接着创立了Xamarin公司，获得了Mono相关的知识产权，实现了Mono的重生。更多信息可以参见：<a href="http://www.cnblogs.com/shanyou/archive/2012/01/03/2310833.html">2011年Mono发展历程</a>。目前在移动平台上Mono作为一个重要的跨平台技术，已经得到了大量的关注和使用。

虽然IronPython的创造者Jimmy于2010年就离开了微软，但是在2011中，IronPython还是继续获得了发展。2011年4月，<a href="http://www.infoq.com/cn/news/2011/04/IronPython-2.7">IronPython完整实现了Python 2.7的功能</a>。另外微软还发布了<a href="http://pytools.codeplex.com/">Python Tools for Visual Studio</a> (PTVS)开源项目，可以在Visual Studio中<a href="http://www.infoq.com/cn/news/2011/04/VS-CPython" target="_blank">编辑Python代码</a>，并支持CPython、IronPython、<a href="http://www.infoq.com/cn/news/2011/08/VS-Jython" target="_blank">Jython</a>和PyPy这四种主要的解释器，还支持REPL，HPC，NumPy和SciPy程序库等高级功能。

<strong>开发工具</strong>

微软于2011年春天<a href="http://www.infoq.com/cn/news/2011/03/VS2010-SP1">正式发布了Visual Studio 2010的SP1</a>，除了修正部分错误、优化性能外，微软听取了社区的反馈，提供了传统模式的帮助文档查看器。鉴于微软对HTML5采取积极的态度，那么<a href="http://www.infoq.com/cn/news/2011/06/vs-support-html5" target="_blank">Visual Studio为HTML5提供更好的支持</a>是理所当然的了。

在2011年，微软针对开发工具的另外一个大动作，就是<a href="http://www.infoq.com/cn/news/2011/07/LightSwitch-RTM">正式发布Visual Studio LightSwitch 2011</a>。其提供了一款价格相对低廉，功能灵活的RAD（快速应用程序开发）工具，给那些只进行业务应用开发的企业和水平相对初级的开发人员甚至非开发人员使用，让他们能够以最简单的方式快速开发出可以运行于桌面、Web和云中的业务应用程序。同时，Visual Studio LightSwitch也提供编码开发的方式，让有编码能力的开发人员来<a href="http://www.infoq.com/cn/news/2010/09/Advanced-LightSwitch" target="_blank">增强和扩展LightSwitch应用的功能</a>，比如可以<a href="http://www.infoq.com/cn/news/2011/09/LightSwitch-Office" target="_blank">通过扩展支持Office的使用</a>，或者<a href="http://www.devexpress.com/Products/NET/Reporting/lightswitch.xml" target="_blank">报表工具</a>。

当然，微软2011年发布的轻量级IDE还有上面提到的WebMatrix。它是一个面向学生、临时用户和开发小型站点的开发人员可以使用的<a href="http://developer.51cto.com/art/201007/209971.htm" target="_blank">快速Web应用开发工具</a>，除了支持ASP.NET外，还支持PHP。

最后，<a href="http://www.infoq.com/cn/news/2011/09/VS-11" target="_blank">Visual Studio 2012的开发者预览版</a>也同Windows 8开发者预览版一起发布，不过这个还是非常初级的预览版，很多新功能尚未展示出来。

<strong>NUI新机遇</strong>

微软在NUI（自然用户界面）上多年的研究，终于在2010年发布的Kinect for XBox 360得以体现。Kinect提供了面部识别，骨骼追踪，动作识别，语言识别等功能，让你除了通过鼠标键盘、触摸板、游戏控制器等输入设备，还可以通过动作和语音来和电脑交互。Kinect一开始展示给世人的仅仅是游戏机的一个附件，让大家可以在XBox 360上可以玩体感游戏。然而，微软对于Kinect的期望不仅限于此，而是打算以Kinect作为打开NUI应用和开发的新里程。所以，微软在2011年发布了Kinect for Windows SDK的两个测试版本，并按照计划于2012年2月发布Kinect for Windows SDK正式版，也是自然而然的事情了。在<a href="http://you.video.sina.com.cn:8080/api/sinawebApi/outplayrefer.php/vid=64366912_2_Z0iwSHFuXTPK+l1lHz2stqkM7KQNt6nnnynt71+iJAtdUgSMYIrfO4kK5i3VBslL8G4/s.swf" target="_blank">Kinect for Windows的宣传视频</a>中，我们可以看到，Kinect除了在娱乐方面以外，在教育、医疗、公共安全等方面都大有用武之地。关于Kinect for Windows的演示可见：<a href="http://v.youku.com/v_show/id_XMjU4OTc2NzA0.html" target="_blank">演示1</a>，<a href="http://v.youku.com/v_show/id_XMjU4OTc2Nzg4.html" target="_blank">演示2</a>，<a href="http://v.youku.com/v_show/id_XMjU4OTc2Nzg4.html" target="_blank">演示3</a>。

随着Kinect的推出，以及Siri的火热，运用NUI技术的应用将会是未来开发的一个热点。]]></description>
			<content:encoded><![CDATA[<p>2011年对于.NET平台和微软技术而言，可以算是稍显平静的一年，当然也还是有少许可圈可点的事件，值得我们回顾一下。不过，在平静的2011年里，其实发布了很多2012即将发布的新产品新技术的测试版或预览版。所以说本篇文章既是一个回顾也是一个展望。</p>
<p><strong>Windows Phone 7趋于成熟</strong></p>
<p>虽然微软于2010年就推出了Windows Phone 7，但是直到2011年如期发布了Mango更新后，Windows Phone 7的发展和应用开发才算进入正轨。尤其<a href="http://www.infoq.com/cn/news/2011/02/Nokia-Partners-with-Microsoft">Nokia与微软的联盟</a>，<a href="http://news.ccidnet.com/art/3709/20110212/2309513_1.html" target="_blank">有些人不看好</a>，有些人认为这会带来智能手机的<a href="http://tech.ifeng.com/telecom/special/nokiatransform/content-0/detail_2011_02/11/4623636_0.shtml" target="_blank">三足鼎立</a>。</p>
<p>Mango针对最终用户和开发者带来了几个方面的重大更新：支持包括中文简体在内更多语言且内置了多语言输入法，更快的应用程序切换，支持多任务系统，<span class='wp_keywordlink'><a href="http://blog.jobbole.com/12749/" title="浏览器" target="_blank">浏览器</a></span>使用IE9内核，支持后台任务的开发，背景音乐的支持，可创建多个Live Tiles，本地数据库的支持等等。需要注意的一点是，Mango更新对于操作系统而言版本号是7.5，而SDK的版本号7.1。</p>
<p>由于Mango带来了以上如此巨大的更新，促使很多厂商尤其国内的厂商开始推出WP7版本的应用程序。有了多语言的支持，中文软件不用再集成一个第三方的输入法；有了更快的应用程序切换和多任务支持，开发应用可以更加关注于应用功能本身，不用花太多精力去处理墓碑机制；有了多个Live Tiles和后台任务的支持，可以开发一款天气应用，在开始界面显示多个城市天气信息的Live Tiles，并在后台任务中定时更新数据息；由于浏览器使用了IE9内核，让HTML5的应用可以无缝地移植到WP7上，也可以自然而然地支持类似<a href="http://www.infoq.com/cn/news/2012/01/PhoneGap-Now-Fully-Supports-WP7" target="_blank">PhoneGap</a>这样的移动Web开发框架；有了背景音乐的支持，现在我们也用到体验更佳的<a href="http://www.windowsphone.com/en-US/apps/95438f7a-a160-421c-9fd7-28b1110f786f" target="_blank">豆瓣FM</a>或<a href="http://www.windowsphone.com/en-US/apps/9cac5272-c4a1-4c10-aee9-4dca5fa645e4" target="_blank">AIRPLAY精选</a>。</p>
<p>所以，2012年WP7的开发会获得开发社区的更多关注，也会催生更多优秀APP的出现。</p>
<p><strong>基础框架的不断增强</strong></p>
<p>.NET框架本身的大版本发布基本和开发工具保持一致，不过微软也采用了另外一种更灵活的模式来增强.NET框架的功能——即针对.NET各个组成部分进行快速增量发布。</p>
<p>微软于2011年初，正式发布了<a href="http://www.asp.net/mvc/mvc3" target="_blank">ASP.NET MVC 3</a>，这次的发布带来很多重要改变：使用Razor作为默认的模板引擎，增强了JavaScript和jQuery的支持，强大的依赖注入功能等等。在发布ASP.NET MVC 3的同时，微软也一起发布了很多用于Web开发的关联产品：IIS Express 7.5，SQL Server Compact Edition 4，Web Deploy，Web Farm Framework 2.0，Orchard 1.0（一个基于ASP.NET MVC 3的CMS），WebMatrix 1.0（支持ASP.NET MVC 3的轻量级Web开发IDE）。以及NuGet——VS中强大的依赖包管理工具。需要更多的信息，可以参看<a href="http://weblogs.asp.net/scottgu/archive/2011/01/13/announcing-release-of-asp-net-mvc-3-iis-express-sql-ce-4-web-farm-framework-orchard-webmatrix.aspx" target="_blank">Scott Guthrie的文章</a>。</p>
<p>ADO.NET Entity Framework在2011年分别发布了三次增量版本，4月份发布的4.1，后来的4.1 Update，最后是11月发布的4.2。在EF 4.1和4.2中最大的增强莫过于支持<a href="http://msdn.microsoft.com/zh-cn/magazine/hh126815.aspx" target="_blank">Code-First特性和DbContext API</a>。</p>
<p>随着.NET的子集和分化越来越多，微软也意识到开发跨多个子集的类库所带来的麻烦，于是发布了被称为“<a href="http://visualstudiogallery.msdn.microsoft.com/b0e0b5e9-e138-410b-ad10-00cb3caf4981">Portable Library Tools</a>”的工具，可以帮助大家开发针对多个平台的类库（可移植库），支持的平台有：.NET Framework 4，Silverlight，Windows Phone 7，Xbox 360，甚至Mono。</p>
<p>另外，酝酿两年之后，微软发布了<a href="http://msdn.microsoft.com/en-us/data/gg577609">Reactive Extensions</a>（Rx）库的<a href="http://www.microsoft.com/download/en/details.aspx?id=26224">1.0版</a>。Rx把事件驱动UI与LINQ、并发性和异步调用结合起来。更多信息参见：<a href="http://www.infoq.com/cn/news/2011/07/Rx-1">Rx 1.0解决了异步数据访问的问题</a>。同时，微软还发布了Ix（<a href="http://www.infoq.com/cn/news/2011/08/Ix" target="_blank">Interactive Extensions</a>，交互扩展），一组基于Rx技术扩展LINQ查询操作符的类库。</p>
<p>当然，还有一个不得不说的东西就是Silverlight。微软在2011年底低调发布了Silverlight 5，Silverlight 5提供了许多新的功能，如：支持H.264，更强大的内容保护技术，GPU解码支持，UI处理的性能提升，脱离浏览器运行特性的加强，以及针对开发体验的诸多改善。但是由于微软已经完全拥抱HTML5，Silverlight 5就显得有点尴尬。不过Silverlight也不是完全无用武之地，作为一个<a href="http://www.cnblogs.com/redmoon/archive/2009/07/19/1526664.html" target="_blank">轻量级的客户端开发框架</a>已经完全能够胜任，而且Silverlight作为Windows Phone 7的开发技术之一将会长期存在。</p>
<p>最后，当然需要谈到.NET框架本身的发展。在2011年7月微软发布了<a href="http://www.infoq.com/cn/news/2011/07/NET4-GDR" target="_blank">.NET Framework 4.0的更新</a>，这个版本包含了众多补丁和特性，包括HTML5和对移植库的支持，有些内容之前也曾单独发布过。除此，微软还发布了.NET Framework 4.5的开发者预览版，其中展示了<a href="http://www.cnblogs.com/liulun/archive/2012/01/09/2317036.html" target="_blank">很多新特性</a>。</p>
<p><strong>操作系统、服务器和云服务</strong></p>
<p>早在2010年，微软就展示了下一代操作系统Windows 8的相关信息；但直到去年的9月份，微软才在<a href="http://livesino.net/archives/3662.live" target="_blank">BUILD会议</a>上向开发者提供了<a href="http://livesino.net/archives/3670.live" target="_blank">开发者预览版</a>，让众多开发者一窥Windows 8带来的新特性。虽然对于普通消费者而言，Windows 8最大的改变在于支持ARM处理器，这为更加节能的Windows 8平板电脑做好了准备。而对于开发者而言，最需要关心的莫过于<a href="http://livesino.net/archives/3666.live">Windows 8 应用模型、开发平台和工具</a>。其中WinRT（Windows Runtime）是微软至Win32以来对Windows的API进行最重大的更新，可以说是<a href="http://www.infoq.com/cn/news/2011/09/WinRT-API" target="_blank">Win32面向对象的替代品</a>，当然也<a href="http://www.infoq.com/cn/news/2011/09/DotNet-On-WinRT" target="_blank">支持C#或VB调用</a>。另外，Windows 8也带来了类似于Windows Phone 7中的Metro UI，并为Metro UI的程序提供了Windows Store。开发人员可以选择HTML5/JavaScript的组合，也可以选择XAML/C++、C#、VB的组合开发Metro UI应用；对于游戏开发，要充分利用硬件性能的话只能选用C++/DirectX 11.1，休闲类游戏也可以使用XAML或HTML5来开发界面。</p>
<p>SQL Server在2011也发布了最新版本的预览版，开发代号名为“Denali”，正式发布的时候会称之为<a href="http://www.infoq.com/cn/news/2011/10/SQL-Server-2012" target="_blank">SQL Server 2012</a>，除了更加关注BI和大数据外，2012作为<a href="http://www.programmer.com.cn/9400/" target="_blank">一个更大的筐</a>也是为了理顺2008 R2一系列新功能。</p>
<p>微软的云平台Windows Azure在2011年也进行了<a href="http://www.cnblogs.com/msdnchina/archive/2011/12/14/interoperabilityandscalabilityonwindowsazure.html" target="_blank">很多更新</a>，最为重要的也许就是更加开放，比如支持Node.js，支持Apache Hadoop，Windows Azure SDK for Java的支持，Windows Azure Plugin for Eclipse的更新，MongoDB的支持，Solr/Lucene的支持，Memcached的支持等。</p>
<p><strong>Mono的重生与开源</strong></p>
<p>Mono在2011遭遇了重大变故，由于Novell被Attachmate接管，解散了整个Mono团队，但是Miguel de Icaza作为Mono之父紧接着创立了Xamarin公司，获得了Mono相关的知识产权，实现了Mono的重生。更多信息可以参见：<a href="http://www.cnblogs.com/shanyou/archive/2012/01/03/2310833.html">2011年Mono发展历程</a>。目前在移动平台上Mono作为一个重要的跨平台技术，已经得到了大量的关注和使用。</p>
<p>虽然IronPython的创造者Jimmy于2010年就离开了微软，但是在2011中，IronPython还是继续获得了发展。2011年4月，<a href="http://www.infoq.com/cn/news/2011/04/IronPython-2.7">IronPython完整实现了Python 2.7的功能</a>。另外微软还发布了<a href="http://pytools.codeplex.com/">Python Tools for Visual Studio</a> (PTVS)开源项目，可以在Visual Studio中<a href="http://www.infoq.com/cn/news/2011/04/VS-CPython" target="_blank">编辑Python代码</a>，并支持CPython、IronPython、<a href="http://www.infoq.com/cn/news/2011/08/VS-Jython" target="_blank">Jython</a>和PyPy这四种主要的解释器，还支持REPL，HPC，NumPy和SciPy程序库等高级功能。</p>
<p><strong>开发工具</strong></p>
<p>微软于2011年春天<a href="http://www.infoq.com/cn/news/2011/03/VS2010-SP1">正式发布了Visual Studio 2010的SP1</a>，除了修正部分错误、优化性能外，微软听取了社区的反馈，提供了传统模式的帮助文档查看器。鉴于微软对HTML5采取积极的态度，那么<a href="http://www.infoq.com/cn/news/2011/06/vs-support-html5" target="_blank">Visual Studio为HTML5提供更好的支持</a>是理所当然的了。</p>
<p>在2011年，微软针对开发工具的另外一个大动作，就是<a href="http://www.infoq.com/cn/news/2011/07/LightSwitch-RTM">正式发布Visual Studio LightSwitch 2011</a>。其提供了一款价格相对低廉，功能灵活的RAD（快速应用程序开发）工具，给那些只进行业务应用开发的企业和水平相对初级的开发人员甚至非开发人员使用，让他们能够以最简单的方式快速开发出可以运行于桌面、Web和云中的业务应用程序。同时，Visual Studio LightSwitch也提供编码开发的方式，让有编码能力的开发人员来<a href="http://www.infoq.com/cn/news/2010/09/Advanced-LightSwitch" target="_blank">增强和扩展LightSwitch应用的功能</a>，比如可以<a href="http://www.infoq.com/cn/news/2011/09/LightSwitch-Office" target="_blank">通过扩展支持Office的使用</a>，或者<a href="http://www.devexpress.com/Products/NET/Reporting/lightswitch.xml" target="_blank">报表工具</a>。</p>
<p>当然，微软2011年发布的轻量级IDE还有上面提到的WebMatrix。它是一个面向学生、临时用户和开发小型站点的开发人员可以使用的<a href="http://developer.51cto.com/art/201007/209971.htm" target="_blank">快速Web应用开发工具</a>，除了支持ASP.NET外，还支持PHP。</p>
<p>最后，<a href="http://www.infoq.com/cn/news/2011/09/VS-11" target="_blank">Visual Studio 2012的开发者预览版</a>也同Windows 8开发者预览版一起发布，不过这个还是非常初级的预览版，很多新功能尚未展示出来。</p>
<p><strong>NUI新机遇</strong></p>
<p>微软在NUI（自然用户界面）上多年的研究，终于在2010年发布的Kinect for XBox 360得以体现。Kinect提供了面部识别，骨骼追踪，动作识别，语言识别等功能，让你除了通过鼠标键盘、触摸板、游戏控制器等输入设备，还可以通过动作和语音来和电脑交互。Kinect一开始展示给世人的仅仅是游戏机的一个附件，让大家可以在XBox 360上可以玩体感游戏。然而，微软对于Kinect的期望不仅限于此，而是打算以Kinect作为打开NUI应用和开发的新里程。所以，微软在2011年发布了Kinect for Windows SDK的两个测试版本，并按照计划于2012年2月发布Kinect for Windows SDK正式版，也是自然而然的事情了。在<a href="http://you.video.sina.com.cn:8080/api/sinawebApi/outplayrefer.php/vid=64366912_2_Z0iwSHFuXTPK+l1lHz2stqkM7KQNt6nnnynt71+iJAtdUgSMYIrfO4kK5i3VBslL8G4/s.swf" target="_blank">Kinect for Windows的宣传视频</a>中，我们可以看到，Kinect除了在娱乐方面以外，在教育、医疗、公共安全等方面都大有用武之地。关于Kinect for Windows的演示可见：<a href="http://v.youku.com/v_show/id_XMjU4OTc2NzA0.html" target="_blank">演示1</a>，<a href="http://v.youku.com/v_show/id_XMjU4OTc2Nzg4.html" target="_blank">演示2</a>，<a href="http://v.youku.com/v_show/id_XMjU4OTc2Nzg4.html" target="_blank">演示3</a>。</p>
<p>随着Kinect的推出，以及Siri的火热，运用NUI技术的应用将会是未来开发的一个热点。</p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/12689/" title="张子阳：如何在30岁前年薪超过30万">张子阳：如何在30岁前年薪超过30万</a></li><li><a href="http://blog.jobbole.com/7999/" title="微软传奇雇员大卫·卡特勒加入Xbox团队">微软传奇雇员大卫·卡特勒加入Xbox团队</a></li><li><a href="http://blog.jobbole.com/11033/" title="施密特谈竞争对手、收购、社交媒体">施密特谈竞争对手、收购、社交媒体</a></li><li><a href="http://blog.jobbole.com/11015/" title="引向 Windows 8 的道路">引向 Windows 8 的道路</a></li><li><a href="http://blog.jobbole.com/9525/" title="微软Windows应用商店采取20%分成吸引开发者">微软Windows应用商店采取20%分成吸引开发者</a></li><li><a href="http://blog.jobbole.com/8357/" title="微软JavaScript团队向Dart语言泼冷水 ">微软JavaScript团队向Dart语言泼冷水 </a></li><li><a href="http://blog.jobbole.com/5340/" title="全球跨国企业最佳职场：微软名列首位 ">全球跨国企业最佳职场：微软名列首位 </a></li><li><a href="http://blog.jobbole.com/1511/" title="Windows 8将带来什么">Windows 8将带来什么</a></li><li><a href="http://blog.jobbole.com/1452/" title="微软Windows帝国幕后的10大关键人物">微软Windows帝国幕后的10大关键人物</a></li><li><a href="http://blog.jobbole.com/1449/" title="苹果与微软的用户文化">苹果与微软的用户文化</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13591/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>15 个变量和方法命名的最佳实践</title>
		<link>http://blog.jobbole.com/13593/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=15-%25e4%25b8%25aa%25e5%258f%2598%25e9%2587%258f%25e5%2592%258c%25e6%2596%25b9%25e6%25b3%2595%25e5%2591%25bd%25e5%2590%258d%25e7%259a%2584%25e6%259c%2580%25e4%25bd%25b3%25e5%25ae%259e%25e8%25b7%25b5</link>
		<comments>http://blog.jobbole.com/13593/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 02:01:39 +0000</pubDate>
		<dc:creator>齐哲</dc:creator>
				<category><![CDATA[程序员]]></category>
		<category><![CDATA[代码]]></category>
		<category><![CDATA[变量]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13593</guid>
		<description><![CDATA[1、在每个代码范围内使用足够短和足够长的名称：例如循环计算器用一个字符就可以了，如i；条件和循环变量用一个单词，方法名1-2个单词，类名2-3个单词，全局变量3-4个单词组成

2、为变量指定一些专门名称，不要使用例如 "value", "equals", "data" 这样的变量名

3、变量名要使用有意义的名称，通过变量名能大概反映出其具体的用途

4、不要在变量名前加前缀，例如 o_, obj_, m_ 之类

5、服从公司命名规范，在命名时使用一致的做法，例如：txtUserName、lblUserName、cmbSchoolType, ... 除非是大大降低了可读性

6、服从编程语言本身的规范，不要使用不连贯的小写和大写混合名称，例如：userName、 UserName、 USER_NAME、m_userName、 username, ...

▲对 Java 而言：

▲类名使用驼峰命名方式，如：VelocityResponseWriter

▲包名小写：com.jobbole.project.ui

▲变量名小写开始的驼峰命名，例如：studentParentName

▲常量名用全大写：MAX_PARAMETER_COUNT = 100

▲枚举类名参考普通类名，枚举变量使用全大写

▲不使用任何带下划线的命名方式，除非是常量或者是枚举值

7、不要在同一个类的不同上下文中重用相同的变量名

8、不要在一个方法内用同一个变量做不同的用途

9、不要使用非 ASCII 字符的变量，例如中文变量

10、不要使用太长的变量名，例如50个字符，这很难阅读，而且可能超出一些编译器的限制

11、确定并坚持使用固定的一种自然语言的命名方式，例如不要使用拼音和英文混合的命名方式

12、方法名要使用有意义的名称，能通过方法名大概了解该方法的用途，而且方法名要以动词开始，例如createPasswordHash

13、方法名要符合公司统一的规范，例如：getTxtUserName(), getLblUserName(), isStudentApproved()

14、方法名要遵循编程语言规范

15、方法的参数名要使用有意义的名称

英文原文： <a href="http://codebuild.blogspot.com/2012/02/15-best-practices-of-variable-method.html" rel="nofollow" target="_blank">codebuild</a>]]></description>
			<content:encoded><![CDATA[<p>1、在每个代码范围内使用足够短和足够长的名称：例如循环计算器用一个字符就可以了，如i；条件和循环变量用一个单词，方法名1-2个单词，类名2-3个单词，全局变量3-4个单词组成</p>
<p>2、为变量指定一些专门名称，不要使用例如 &#8220;value&#8221;, &#8220;equals&#8221;, &#8220;data&#8221; 这样的变量名</p>
<p>3、变量名要使用有意义的名称，通过变量名能大概反映出其具体的用途</p>
<p>4、不要在变量名前加前缀，例如 o_, obj_, m_ 之类</p>
<p>5、服从公司命名规范，在命名时使用一致的做法，例如：txtUserName、lblUserName、cmbSchoolType, &#8230; 除非是大大降低了可读性</p>
<p>6、服从<span class='wp_keywordlink'><a href="http://blog.jobbole.com/tag/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/" title="如何选择语言和编程语言排名相关文章">编程语言</a></span>本身的规范，不要使用不连贯的小写和大写混合名称，例如：userName、 UserName、 USER_NAME、m_userName、 username, &#8230;</p>
<p>▲对 Java 而言：</p>
<p>▲类名使用驼峰命名方式，如：VelocityResponseWriter</p>
<p>▲包名小写：com.jobbole.project.ui</p>
<p>▲变量名小写开始的驼峰命名，例如：studentParentName</p>
<p>▲常量名用全大写：MAX_PARAMETER_COUNT = 100</p>
<p>▲枚举类名参考普通类名，枚举变量使用全大写</p>
<p>▲不使用任何带下划线的命名方式，除非是常量或者是枚举值</p>
<p>7、不要在同一个类的不同上下文中重用相同的变量名</p>
<p>8、不要在一个方法内用同一个变量做不同的用途</p>
<p>9、不要使用非 ASCII 字符的变量，例如中文变量</p>
<p>10、不要使用太长的变量名，例如50个字符，这很难阅读，而且可能超出一些编译器的限制</p>
<p>11、确定并坚持使用固定的一种自然语言的命名方式，例如不要使用拼音和英文混合的命名方式</p>
<p>12、方法名要使用有意义的名称，能通过方法名大概了解该方法的用途，而且方法名要以动词开始，例如createPasswordHash</p>
<p>13、方法名要符合公司统一的规范，例如：getTxtUserName(), getLblUserName(), isStudentApproved()</p>
<p>14、方法名要遵循编程语言规范</p>
<p>15、方法的参数名要使用有意义的名称</p>
<p>英文原文： <a href="http://codebuild.blogspot.com/2012/02/15-best-practices-of-variable-method.html" rel="nofollow" target="_blank">codebuild</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/12076/" title="提高程序员面试代码质量的三要素">提高程序员面试代码质量的三要素</a></li><li><a href="http://blog.jobbole.com/11631/" title="减少代码嵌套">减少代码嵌套</a></li><li><a href="http://blog.jobbole.com/10657/" title="独立开发者的代码签名">独立开发者的代码签名</a></li><li><a href="http://blog.jobbole.com/10319/" title="请立刻修改这段程序">请立刻修改这段程序</a></li><li><a href="http://blog.jobbole.com/8223/" title="阅读代码就像阅读犹太法典">阅读代码就像阅读犹太法典</a></li><li><a href="http://blog.jobbole.com/9087/" title="先要好代码？ 还是好产品？">先要好代码？ 还是好产品？</a></li><li><a href="http://blog.jobbole.com/8100/" title="10个最“优秀”的代码注释">10个最“优秀”的代码注释</a></li><li><a href="http://blog.jobbole.com/6756/" title="锤子和钉子">锤子和钉子</a></li><li><a href="http://blog.jobbole.com/6539/" title="千层饼代码">千层饼代码</a></li><li><a href="http://blog.jobbole.com/5819/" title="五个最佳编程字体">五个最佳编程字体</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13593/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hadoop：你不得不了解的大数据工具</title>
		<link>http://blog.jobbole.com/13538/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hadoop%25ef%25bc%259a%25e4%25bd%25a0%25e4%25b8%258d%25e5%25be%2597%25e4%25b8%258d%25e4%25ba%2586%25e8%25a7%25a3%25e7%259a%2584%25e5%25a4%25a7%25e6%2595%25b0%25e6%258d%25ae%25e5%25b7%25a5%25e5%2585%25b7</link>
		<comments>http://blog.jobbole.com/13538/#comments</comments>
		<pubDate>Tue, 21 Feb 2012 02:32:19 +0000</pubDate>
		<dc:creator>齐哲</dc:creator>
				<category><![CDATA[IT技术]]></category>
		<category><![CDATA[程序员]]></category>
		<category><![CDATA[Hadoop]]></category>
		<category><![CDATA[MapReduce]]></category>
		<category><![CDATA[大数据]]></category>

		<guid isPermaLink="false">http://blog.jobbole.com/?p=13538</guid>
		<description><![CDATA[如今Apache Hadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到，但是它们都有什么功能，为什么会需要奇怪的名字（如Oozie，ZooKeeper、Flume）。

Hadoop带来了廉价的处理大数据（大数据的数据容量通常是10-100GB或更多，同时数据种类多种多样，包括结构化、非结构化等）的能力。但这与之前有什么不同？

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool1.jpg"><img class="aligncenter size-full wp-image-13539" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool1.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="462" height="109" /></a>

现今企业数据仓库和关系型数据库擅长处理结构化数据，并且可以存储大量的数据。但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类，同时这 种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是Hadoop与传统数据处 理方式最大的不同。

本文就重点探讨了Hadoop系统的组成部分，并解释各个组成部分的功能。

<strong>MapReduce——Hadoop的核心</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool2.jpg"><img class="aligncenter size-full wp-image-13540" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool2.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="550" height="307" /></a>

&#160;

&#160;
<p style="text-align: center;">（<strong>趣文推荐：《<a href="http://blog.jobbole.com/1321/" target="_blank">我是如何向老婆解释MapReduce的？</a>》</strong>）</p>
Google的网络搜索引擎在得益于算法发挥作用的同时，MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背 后的最具影响力的“发动机”。除了Hadoop，你还会在MapReduce上发现MPP（Sybase IQ推出了列示数据库）和NoSQL（如Vertica和MongoDB）。

MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题， 此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法。Yahoo在2006年看到了 Hadoop未来的潜力，并邀请Hadoop创始人Doug Cutting着手发展Hadoop技术，在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他 的组件，以便进一步提高自身的易用性和功能。

<strong>HDFS和MapReduce</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool3.png"><img class="aligncenter size-full wp-image-13541" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool3.png" alt="Hadoop：你不得不了解的大数据工具 " width="500" height="366" /></a>

以上我们讨论了MapReduce将任务分发到多个服务器上处理大数据的能力。而对于分布式计算，每个服务器必须具备对数据的访问能力，这就是HDFS（Hadoop Distributed File System）所起到的作用。

HDFS与MapReduce的结合是强大的。在处理大数据的过程中，当Hadoop集群中的服务器出现错误时，整个计算过程并不会终止。同时 HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求，数据可 以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。

开发人员编写代码责任是使数据有意义。Hadoop MapReduce级的编程利用Java APIs，并可手动加载数据文件到HDFS之中。

<strong>Pig和Hive</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool4.png"><img class="aligncenter size-full wp-image-13542" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool4.png" alt="Hadoop：你不得不了解的大数据工具 " width="557" height="312" /></a>

对于开发人员，直接使用Java APIs可能是乏味或容易出错的，同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案，使得Hadoop编程变得更加容易。

•Pig是一种编程语言，它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义（如日志文件）。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。

•Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS（hive superimposes structure on data in HDFS），并允许使用类似于SQL语法进行数据查询。与Pig一样，Hive的核心功能是可扩展的。

Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务，Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性，并允许开发简洁的脚本用于转换数据流以便嵌入到较大的 应用程序。Pig相比Hive相对轻量，它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此，Pig仍然是吸引大量的软件开发人员。

<strong>改善数据访问：HBase、Sqoop以及Flume</strong>
<p style="text-align: center;"> <a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool5.png"><img class="aligncenter size-full wp-image-13543" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool5.png" alt="Hadoop：你不得不了解的大数据工具 " width="537" height="357" /></a></p>
Hadoop核心还是一套批处理系统，数据加载进HDFS、处理然后检索。对于计算这或多或少有些倒退，但通常互动和随机存取数据是有必要的。 HBase作为面向列的数据库运行在HDFS之上。HBase以Google BigTable为蓝本。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。HBase利用MapReduce来处理内部的海量数据。同 时Hive和Pig都可以与HBase组合使用，Hive和Pig还为HBase提供了高层语言支持，使得在HBase上进行数据统计处理变的非常简单。

但为了授权随机存储数据，HBase也做出了一些限制：例如Hive与HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同时 HBase大约可存储PB级的数据，与之相比HDFS的容量限制达到30PB。HBase不适合用于ad-hoc分析，HBase更适合整合大数据作为大 型应用的一部分，包括日志、计算以及时间序列数据。

<strong>获取数据与输出数据</strong>

Sqoop和Flume可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop，并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。

Hive具备的友好SQL查询是与繁多数据库的理想结合点，数据库工具通过JDBC或ODBC数据库驱动程序连接。

<strong>负责协调工作流程的ZooKeeper和Oozie</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool6.jpg"><img class="aligncenter size-full wp-image-13544" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool6.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="576" height="401" /></a>

随着越来越多的项目加入Hadoop大家庭并成为集群系统运作的一部分，大数据处理系统需要负责协调工作的的成员。随着计算节点的增多，集群成员需要彼此同步并了解去哪里访问服务和如何配置，ZooKeeper正是为此而生的。

而在Hadoop执行的任务有时候需要将多个Map/Reduce作业连接到一起，它们之间或许批次依赖。Oozie组件提供管理工作流程和依赖的功能，并无需开发人员编写定制的解决方案。

Ambari是最新加入Hadoop的项目，Ambari项目旨在将监控和管理等核心功能加入Hadoop项目。Ambari可帮助系统管理员部署和配置Hadoop，升级集群以及监控服务。还可通过API集成与其他的系统管理工具。

Apache Whirr是一套运行于云服务的类库（包括Hadoop），可提供高度的互补性。Whirr现今相对中立，当前支持Amazon EC2和Rackspace服务。

<strong>机器学习：Mahout</strong>

<a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool7.jpg"><img class="aligncenter size-full wp-image-13545" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool7.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="500" height="300" /></a>

各类组织需求的不同导致相关的数据形形色色，对这些数据的分析也需要多样化的方法。Mahout提供一些可扩展的机器学习领域经典算法的实现，旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现，包括集群、分类、推荐过滤、频繁子项挖掘。

<strong>使用Hadoop</strong>

通常情况下，Hadoop应用于分布式环境。就像之前Linux的状况一样，厂商集成和测试Apache Hadoop生态系统的组件，并添加自己的工具和管理功能。（李智/编译）

原文链接：<a href="http://www.forbes.com/sites/oreillymedia/2012/02/07/apache-hadoop-what-you-need-to-know-about-this-important-big-data-tool/4/" target="_blank">Forbes.com</a>]]></description>
			<content:encoded><![CDATA[<p>如今Apache Hadoop已成为大数据行业发展背后的驱动力。Hive和Pig等技术也经常被提到，但是它们都有什么功能，为什么会需要奇怪的名字（如Oozie，ZooKeeper、Flume）。</p>
<p>Hadoop带来了廉价的处理大数据（大数据的数据容量通常是10-100GB或更多，同时数据种类多种多样，包括结构化、非结构化等）的能力。但这与之前有什么不同？</p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool1.jpg"><img class="aligncenter size-full wp-image-13539" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool1.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="462" height="109" /></a></p>
<p>现今企业数据仓库和关系型数据库擅长处理结构化数据，并且可以存储大量的数据。但成本上有些昂贵。这种对数据的要求限制了可处理的数据种类，同时这 种惯性所带的缺点还影响到数据仓库在面对海量异构数据时对于敏捷的探索。这通常意味着有价值的数据源在组织内从未被挖掘。这就是Hadoop与传统数据处 理方式最大的不同。</p>
<p>本文就重点探讨了Hadoop系统的组成部分，并解释各个组成部分的功能。</p>
<p><strong>MapReduce——Hadoop的核心</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool2.jpg"><img class="aligncenter size-full wp-image-13540" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool2.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="550" height="307" /></a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p style="text-align: center;">（<strong>趣文推荐：《<a href="http://blog.jobbole.com/1321/" target="_blank">我是如何向老婆解释MapReduce的？</a>》</strong>）</p>
<p>Google的网络搜索引擎在得益于算法发挥作用的同时，MapReduce在后台发挥了极大的作用。MapReduce框架成为当今大数据处理背 后的最具<span class='wp_keywordlink'><a href="http://www.amazon.cn/gp/product/B0044KME2E/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&tag=vastwork-23&linkCode=as2&camp=536&creative=3200&creativeASIN=B0044KME2E" title="影响力" rel="nofollow" target="_blank">影响力</a></span>的“发动机”。除了Hadoop，你还会在MapReduce上发现MPP（Sybase IQ推出了列示数据库）和NoSQL（如Vertica和MongoDB）。</p>
<p>MapReduce的重要创新是当处理一个大数据集查询时会将其任务分解并在运行的多个节点中处理。当数据量很大时就无法在一台服务器上解决问题， 此时分布式计算优势就体现出来。将这种技术与Linux服务器结合可获得性价比极高的替代大规模计算阵列的方法。Yahoo在2006年看到了 Hadoop未来的潜力，并邀请Hadoop创始人Doug Cutting着手发展Hadoop技术，在2008年Hadoop已经形成一定的规模。Hadoop项目再从初期发展的成熟的过程中同时吸纳了一些其他 的组件，以便进一步提高自身的易用性和功能。</p>
<p><strong>HDFS和MapReduce</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool3.png"><img class="aligncenter size-full wp-image-13541" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool3.png" alt="Hadoop：你不得不了解的大数据工具 " width="500" height="366" /></a></p>
<p>以上我们讨论了MapReduce将任务分发到多个服务器上处理大数据的能力。而对于分布式计算，每个服务器必须具备对数据的访问能力，这就是HDFS（Hadoop Distributed File System）所起到的作用。</p>
<p>HDFS与MapReduce的结合是强大的。在处理大数据的过程中，当Hadoop集群中的服务器出现错误时，整个计算过程并不会终止。同时 HFDS可保障在整个集群中发生故障错误时的数据冗余。当计算完成时将结果写入HFDS的一个节点之中。HDFS对存储的数据格式并无苛刻的要求，数据可 以是非结构化或其它类别。相反关系数据库在存储数据之前需要将数据结构化并定义架构。</p>
<p>开发人员编写代码责任是使数据有意义。Hadoop MapReduce级的编程利用Java APIs，并可手动加载数据文件到HDFS之中。</p>
<p><strong>Pig和Hive</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool4.png"><img class="aligncenter size-full wp-image-13542" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool4.png" alt="Hadoop：你不得不了解的大数据工具 " width="557" height="312" /></a></p>
<p>对于开发人员，直接使用Java APIs可能是乏味或容易出错的，同时也限制了Java<span class='wp_keywordlink'><a href="http://blog.jobbole.com/821/" title="程序员的本质">程序员</a></span>在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案，使得Hadoop编程变得更加容易。</p>
<p>•Pig是一种<span class='wp_keywordlink'><a href="http://blog.jobbole.com/tag/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/" title="如何选择语言和编程语言排名相关文章">编程语言</a></span>，它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义（如日志文件）。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。</p>
<p>•Hive在Hadoop中扮演数据仓库的角色。Hive添加数据的结构在HDFS（hive superimposes structure on data in HDFS），并允许使用类似于SQL语法进行数据查询。与Pig一样，Hive的核心功能是可扩展的。</p>
<p>Pig和Hive总是令人困惑的。Hive更适合于数据仓库的任务，Hive主要用于静态的结构以及需要经常分析的工作。Hive与SQL相似促使 其成为Hadoop与其他BI工具结合的理想交集。Pig赋予开发人员在大数据集领域更多的灵活性，并允许开发简洁的脚本用于转换数据流以便嵌入到较大的 应用程序。Pig相比Hive相对轻量，它主要的优势是相比于直接使用Hadoop Java APIs可大幅削减代码量。正因为如此，Pig仍然是吸引大量的软件开发人员。</p>
<p><strong>改善数据访问：HBase、Sqoop以及Flume</strong></p>
<p style="text-align: center;"> <a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool5.png"><img class="aligncenter size-full wp-image-13543" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool5.png" alt="Hadoop：你不得不了解的大数据工具 " width="537" height="357" /></a></p>
<p>Hadoop核心还是一套批处理系统，数据加载进HDFS、处理然后检索。对于计算这或多或少有些倒退，但通常互动和随机存取数据是有必要的。 HBase作为面向列的数据库运行在HDFS之上。HBase以Google BigTable为蓝本。项目的目标就是快速在主机内数十亿行数据中定位所需的数据并访问它。HBase利用MapReduce来处理内部的海量数据。同 时Hive和Pig都可以与HBase组合使用，Hive和Pig还为HBase提供了高层语言支持，使得在HBase上进行数据统计处理变的非常简单。</p>
<p>但为了授权随机存储数据，HBase也做出了一些限制：例如Hive与HBase的性能比原生在HDFS之上的Hive要慢4-5倍。同时 HBase大约可存储PB级的数据，与之相比HDFS的容量限制达到30PB。HBase不适合用于ad-hoc分析，HBase更适合整合大数据作为大 型应用的一部分，包括日志、计算以及时间序列数据。</p>
<p><strong>获取数据与输出数据</strong></p>
<p>Sqoop和Flume可改进数据的互操作性和其余部分。Sqoop功能主要是从关系数据库导入数据到Hadoop，并可直接导入到HFDS或Hive。而Flume设计旨在直接将流数据或日志数据导入HDFS。</p>
<p>Hive具备的友好SQL查询是与繁多数据库的理想结合点，数据库工具通过JDBC或ODBC数据库驱动程序连接。</p>
<p><strong>负责协调工作流程的ZooKeeper和Oozie</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool6.jpg"><img class="aligncenter size-full wp-image-13544" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool6.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="576" height="401" /></a></p>
<p>随着越来越多的项目加入Hadoop大家庭并成为集群系统运作的一部分，大数据处理系统需要负责协调工作的的成员。随着计算节点的增多，集群成员需要彼此同步并了解去哪里访问服务和如何配置，ZooKeeper正是为此而生的。</p>
<p>而在Hadoop执行的任务有时候需要将多个Map/Reduce作业连接到一起，它们之间或许批次依赖。Oozie组件提供管理工作流程和依赖的功能，并无需开发人员编写定制的解决方案。</p>
<p>Ambari是最新加入Hadoop的项目，Ambari项目旨在将监控和管理等核心功能加入Hadoop项目。Ambari可帮助系统管理员部署和配置Hadoop，升级集群以及监控服务。还可通过API集成与其他的系统管理工具。</p>
<p>Apache Whirr是一套运行于云服务的类库（包括Hadoop），可提供高度的互补性。Whirr现今相对中立，当前支持Amazon EC2和Rackspace服务。</p>
<p><strong>机器学习：Mahout</strong></p>
<p><a href="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool7.jpg"><img class="aligncenter size-full wp-image-13545" title="Hadoop：你不得不了解的大数据工具 " src="http://blog.jobbole.com/wp-content/uploads/2012/02/What-You-Need-to-Know-About-This-Important-Big-Data-Tool7.jpg" alt="Hadoop：你不得不了解的大数据工具 " width="500" height="300" /></a></p>
<p>各类组织需求的不同导致相关的数据形形色色，对这些数据的分析也需要多样化的方法。Mahout提供一些可扩展的机器学习领域经典算法的实现，旨在帮助开发人员更加方便快捷地创建智能应用程序。Mahout包含许多实现，包括集群、分类、推荐过滤、频繁子项挖掘。</p>
<p><strong>使用Hadoop</strong></p>
<p>通常情况下，Hadoop应用于分布式环境。就像之前Linux的状况一样，厂商集成和测试Apache Hadoop生态系统的组件，并添加自己的工具和管理功能。（李智/编译）</p>
<p>原文链接：<a href="http://www.forbes.com/sites/oreillymedia/2012/02/07/apache-hadoop-what-you-need-to-know-about-this-important-big-data-tool/4/" target="_blank">Forbes.com</a></p>
<h2  class="related_post_title">相关文章</h2><ul class="related_post"><li><a href="http://blog.jobbole.com/1241/" title="圆桌论坛：如何应对海量数据的挑战">圆桌论坛：如何应对海量数据的挑战</a></li><li><a href="http://blog.jobbole.com/1412/" title="大象的崛起：Hadoop七年发展风雨录">大象的崛起：Hadoop七年发展风雨录</a></li><li><a href="http://blog.jobbole.com/1235/" title="谢超：大数据下的数据分析平台架构">谢超：大数据下的数据分析平台架构</a></li><li><a href="http://blog.jobbole.com/1196/" title="大数据技术综述">大数据技术综述</a></li><li><a href="http://blog.jobbole.com/13178/" title="大数据时代">大数据时代</a></li><li><a href="http://blog.jobbole.com/12720/" title="数据挖掘：如何寻找相关项">数据挖掘：如何寻找相关项</a></li><li><a href="http://blog.jobbole.com/9926/" title="2011年10个最重要的开源软件 ">2011年10个最重要的开源软件 </a></li><li><a href="http://blog.jobbole.com/1325/" title="Digg工程师讲述Digg背后的技术">Digg工程师讲述Digg背后的技术</a></li><li><a href="http://blog.jobbole.com/1321/" title="我是如何向老婆解释MapReduce的？">我是如何向老婆解释MapReduce的？</a></li><li><a href="http://blog.jobbole.com/1231/" title="姚键：视频网站的大数据解决之道">姚键：视频网站的大数据解决之道</a></li></ul>]]></content:encoded>
			<wfw:commentRss>http://blog.jobbole.com/13538/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

