<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet href="/rss.xsl" type="text/xsl"?>
<rss version="2.0">
  <channel>
    <title>IT瘾资源推荐</title>
    <link>https://itindex.net/tags/资源</link>
    <description>IT社区推荐资讯 - ITIndex.net</description>
    <language>zh</language>
    <copyright>https://itindex.net/</copyright>
    <generator>https://itindex.net/</generator>
    <docs>http://backend.userland.com/rss</docs>
    <image>
      <url>https://itindex.net/images/logo.gif</url>
      <title>IT社区推荐资讯 - ITIndex.net</title>
      <link>https://itindex.net/tags/资源</link>
    </image>
    <item>
      <title>免费可商用开源GPT模型问世，50G权重直接下载，性能不输GPT-3</title>
      <link>https://itindex.net/detail/62720-%E5%85%8D%E8%B4%B9-%E5%BC%80%E6%BA%90-gpt</link>
      <description>&lt;blockquote&gt;
  &lt;p&gt;萧箫 发自 凹非寺   &lt;br /&gt;量子位 | 公众号 QbitAI&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;真·开源GPT模型，终于来了。&lt;/p&gt;
 &lt;p&gt;参数量级130亿，大小比肩最近Meta开放的LLaMA-13B，但从数据集、模型权重到计算优化训练，  &lt;strong&gt;全部开源&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;最关键的是，  &lt;strong&gt;可商用&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;没错，虽然就GPT-3而言，之前DeepMind、Meta等组织陆陆续续开源过几个模型，不过基本都是半遮半掩。&lt;/p&gt;
 &lt;p&gt;尤其最接近GPT-3的Meta OPT模型，不仅权重只开放给研究者，而且不可商用：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/e9d0ad73ed4a4f878fd5e59669acc365~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=c7TuamxttDXnKJWQ4qlOGd2Bves%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;这意味着之前企业就算能抄作业，抄来的也没办法直接用。&lt;/p&gt;
 &lt;p&gt;现在，一家名叫Cerebras的公司开源了这一系列GPT模型，业界终于有机会追赶了。&lt;/p&gt;
 &lt;h1&gt;模型性能如何？&lt;/h1&gt;
 &lt;p&gt;Cerebras一共开源了7个GPT模型，参数量分别达到1.11亿、2.56亿、5.9亿、13亿、27亿、67亿和130亿。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/4c39469d09aa4cc0bec82fda43a7b333~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=LJgtA6D%2BvKWlp8KvTo7FuNss69A%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;据Cerebras公司表示，他们开放出来的模型不仅包含数据集，可用于研究也可商用，而且关键是预训练模型权重开放（从下图来看文件大小近50G）。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/31b3d1b9b29e4f4ca13ad66dc228b588~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=kSm5THQKKNHySDPgYzF6oCLh4RM%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;基于他们公开的预训练模型，大伙儿只需要用少量的数据对对模型进行微调，就能构建出效果不错的模型来。&lt;/p&gt;
 &lt;p&gt;除此之外，这次GPT模型的训练还额外考虑到了  &lt;strong&gt;计算优化训练&lt;/strong&gt; （Compute-Optimal Training）。&lt;/p&gt;
 &lt;p&gt;这个方法最早由DeepMind在2022年提出，名叫Chinchilla，它认为大语言模型的语料数量和模型效果之间符合一个凸曲线，因此模型参数量和训练程度成一定比例。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a004489d8eca4576a2be66891c10fd70~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=nj442tHWBOsT3APLcxCGZaOKRvI%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;依据这个方法，DeepMind认为，包括GPT-3在内的超大参数LLM模型，有很多都是  &lt;strong&gt;训练不足&lt;/strong&gt;的。&lt;/p&gt;
 &lt;p&gt;基于此，Cerebras搞出了这一系列GPT模型，并将背后的流程进行了开源。&lt;/p&gt;
 &lt;p&gt;所以，Cerebras-GPT系列模型性能如何呢？&lt;/p&gt;
 &lt;p&gt;团队将Cerebras-GPT系列和LLaMA、GPT-3等模型的性能进行了对比。&lt;/p&gt;
 &lt;p&gt;这是包括GPT-3、Gopher、Chinchilla和LLaMA在内的其他GPT模型，在完成句子、问答等特定任务上表现的效果。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/7f98eed09c8e492a864509c8a3fd4414~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=JjfzjpzCmr6PLFqfN5NxJ9fqVB0%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;这是不同大小的Cerebras-GPT模型零次学习（0-shot）的效果：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/a1e99822838f4ae1b791ee0880e75973~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=hV69MxBm783gqI7rbVBESNJ%2Bdiw%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;数据对比不是特别直观，团队还将结果进行了可视化。&lt;/p&gt;
 &lt;p&gt;可以看出，在最终性能相差不大的情况下，Cerebras-GPT的  &lt;strong&gt;训练效率&lt;/strong&gt;要更高一些。&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/d6c1e006c7dc4309bcaad7ca91461823~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=jPbOhIAUU9zwecbMs4rnxKpFKaE%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;h1&gt;曾开发最大AI芯片&lt;/h1&gt;
 &lt;p&gt;其实，Cerebras的“本职”是一家AI芯片公司。&lt;/p&gt;
 &lt;p&gt;Cerebras公司由Sean Lie和Andrew Feldman等人于2016年创立。&lt;/p&gt;
 &lt;p&gt;其中，Andrew Feldman曾创建微型服务器公司SeaMicro，并以3.34亿美元的价格出售给AMD。&lt;/p&gt;
 &lt;p&gt;与其他AI芯片公司不同，Cerebras开发的芯片超大，像晶圆一样（但确实是芯片）：&lt;/p&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/01737c9c6fbb49ed947ce7842d52082d~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=iVO8e%2BytTHL%2FjvY4REw1Z%2Fvmahk%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;他们当年做出来过一个名叫“晶圆级引擎”（Cerebras Wafer Scale Engine，简称WSE）的AI芯片，将逻辑运算、通讯和存储器集成到单个硅片上，一口气创下了  &lt;strong&gt;4项世界纪录&lt;/strong&gt;：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;晶体管数量最多的运算芯片：总共包含1.2万亿个晶体管。虽然三星曾造出2万亿个晶体管的芯片，却是用于存储的eUFS。&lt;/li&gt;
  &lt;li&gt;芯片面积最大：尺寸约20厘米×23厘米，总面积46,225平方毫米。面积和一块晶圆差不多。&lt;/li&gt;
  &lt;li&gt;片上缓存最大：包含18GB的片上SRAM存储器。&lt;/li&gt;
  &lt;li&gt;运算核心最多：包含40万个处理核心。&lt;/li&gt;
&lt;/ul&gt;
 &lt;div&gt;  &lt;img src="https://p3-sign.toutiaoimg.com/tos-cn-i-qvj2lq49k0/0b32a06830c54251ac03596d2ba53161~noop.image?_iz=58558&amp;from=article.pc_detail&amp;x-expires=1681028194&amp;x-signature=du3XPqbEpURwxScNFJaWiHcdLXc%3D"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;p&gt;后来这个超大WSE又升级了二代，然后团队基于WSE-2打造出了一个名叫Cerebras CS-2的AI超算。&lt;/p&gt;
 &lt;p&gt;这次的Cerebras-GPT系列模型，就是在这个Cerebras CS-2的AI超算中训练出来的。对此这家公司表示：&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;虽然训练这么大体量的模型通常需要几个月时间，但我们几周就能搞定。&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;Cerebras还表示，虽然很多硬件公司都声称训练效果能接近  &lt;strong&gt;英伟达GPU&lt;/strong&gt;的水平，但他们还没看到任何一家亲自推动开源LLM的硬件公司，这势必不利于开源LLM的发展。&lt;/p&gt;
 &lt;p&gt;这波啊，这波Cerebras格局大了（手动狗头）&lt;/p&gt;
 &lt;p&gt;模型地址：  &lt;br /&gt;
https://huggingface.co/cerebras/Cerebras-GPT-13B&lt;/p&gt;
 &lt;p&gt;参考链接：  &lt;br /&gt;
https://www.cerebras.net/blog/cerebras-gpt-a-family-of-open-compute-efficient-large-language-models/&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资讯 AI芯片 GPT-3 人工智能 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/62720-%E5%85%8D%E8%B4%B9-%E5%BC%80%E6%BA%90-gpt</guid>
      <pubDate>Sun, 02 Apr 2023 16:21:11 CST</pubDate>
    </item>
    <item>
      <title>Draw.io 15.8.4 - 免费开源的绘图软件</title>
      <link>https://itindex.net/detail/61912-draw-io-%E5%85%8D%E8%B4%B9</link>
      <description>&lt;h1&gt;  &lt;a href="https://www.nite07.com/#&amp;#31616;&amp;#20171;" title="&amp;#31616;&amp;#20171;"&gt;&lt;/a&gt;简介&lt;/h1&gt; &lt;p&gt;draw.io desktop是一款非常好用的在线流程图绘制工具，允许用户能够快速、自由的创建简单的图标、流程图、网页模版构架图、框架图等，并可通过浏览器Chrome插件就可以快速创建想要的效果图，适用于商务、工程、电气、网络设计、软件设计等诸多领域的专业绘图。&lt;/p&gt; &lt;h1&gt;  &lt;a href="https://www.nite07.com/#&amp;#25130;&amp;#22270;" title="&amp;#25130;&amp;#22270;"&gt;&lt;/a&gt;截图&lt;/h1&gt; &lt;img src="https://cdn.jsdelivr.net/gh/nitezs/ImageHost/draw-io/2.jpg"&gt;&lt;/img&gt;  &lt;h1&gt;  &lt;a href="https://www.nite07.com/#&amp;#19979;&amp;#36733;" title="&amp;#19979;&amp;#36733;"&gt;&lt;/a&gt;下载&lt;/h1&gt; &lt;a href="https://file.nite07.com/d_0/draw.io-15.8.4-windows-no-installer.exe?v" title="&amp;#21338;&amp;#23458;&amp;#19979;&amp;#36733;"&gt;博客下载&lt;/a&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>实用资源 Windows 好软推荐 绘图工具 中文</category>
      <guid isPermaLink="true">https://itindex.net/detail/61912-draw-io-%E5%85%8D%E8%B4%B9</guid>
      <pubDate>Wed, 24 Nov 2021 22:15:39 CST</pubDate>
    </item>
    <item>
      <title>国外红队常用的21种资源</title>
      <link>https://itindex.net/detail/60373-%E7%BA%A2%E9%98%9F-%E8%B5%84%E6%BA%90</link>
      <description>&lt;p&gt;  &lt;strong&gt;本文介绍了国外关于红队技巧的博客，Twitter，网站。&lt;/strong&gt;&lt;/p&gt;
 &lt;h3&gt;Pentester Academy&lt;/h3&gt;
 &lt;p&gt;他们按月订阅的  &lt;a href="https://www.pentesteracademy.com/"&gt;服务&lt;/a&gt;,主要提供有关渗透测试的在线视频课程，但同时还包括有关操作系统取证，社会工程学和汇编语言的课程。其他主题包括利用缓冲区溢出，制作用于演示的黑客工具以及解释操作的安全性。&lt;/p&gt;
 &lt;h3&gt;Vincent Yiu&lt;/h3&gt;
 &lt;p&gt;他们有一个一个  &lt;a href="https://twitter.com/vysecurity"&gt;Twitter &lt;/a&gt;用于分享红队经验，在其中为红队成员发布了有见地的提示。他还整理了许多技巧，并将其发布在  &lt;a href="https://vincentyiu.co.uk/red-team-tips/"&gt;个人网站上&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;[探索TechBeacon  &lt;a href="http://content.microfocus.com/l/state-security-operations-2019-tb?utm_source=techbeacon&amp;utm_medium=techbeacon&amp;utm_campaign=00134846"&gt;关于SecOps挑战和机遇&lt;/a&gt;的  &lt;a href="https://content.microfocus.com/l/state-security-operations-2019-tb?utm_source=techbeacon&amp;utm_medium=techbeacon&amp;utm_campaign=00134846"&gt;指南&lt;/a&gt;。另外：下载  &lt;a href="https://content.microfocus.com/state-security-operations-2019-tb/2019-state-security-ops?lx=udA_0U?utm_source=techbeacon&amp;utm_medium=techbeacon&amp;utm_campaign=00134846"&gt;2019年《安全状况报告》&lt;/a&gt;。]&lt;/p&gt;
 &lt;h3&gt;Twitter #redteam资源&lt;/h3&gt;
 &lt;p&gt;如果您正在寻找红队的信息，可以在Twitter上使用  &lt;a href="https://twitter.com/hashtag/redteam"&gt;#redteam&lt;/a&gt;和  &lt;a href="https://twitter.com/hashtag/redteaming"&gt;#redteaming&lt;/a&gt;主题标签找到它。您可以找到有关主题的指南，包括如何使用组策略对象进行持久性和横向移动，可以找到用于红队活动的工具的位置，以及有关有趣软件的警报。&lt;/p&gt;
 &lt;h3&gt;Daniel Miessler&lt;/h3&gt;
 &lt;p&gt;他在网站上撰写的红队文章包括  &lt;a href="https://danielmiessler.com/blog/purple-team-pentests-mean-youre-failing-at-red-and-blue/"&gt;“紫色团队渗透测试意味着您失败于红色和蓝色”&lt;/a&gt;和“  &lt;a href="https://danielmiessler.com/blog/when-vulnerability-assessments-pentesting-red-team-bug-bounties/"&gt;何时使用漏洞评估，渗透测试，红队和Bug赏金”。&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;The Daily Swig&lt;/h3&gt;
 &lt;p&gt;这是由PortSwigger Web Security赞助的Web安全  &lt;a href="https://portswigger.net/daily-swig"&gt;新闻平台&lt;/a&gt;。在这里，您可以了解与红队相关的开发-黑客，数据泄露，攻击，Web应用程序漏洞和新安全技术。最近的文章包括  &lt;a href="https://portswigger.net/daily-swig/major-jobs-website-left-sensitive-client-data-exposed-for-months"&gt;“主要工作网站上留下了数月的敏感****”，&lt;/a&gt;  &lt;a href="https://portswigger.net/daily-swig/a-new-tool-helps-you-find-open-amazon-s3-buckets"&gt;“一种新工具可帮助您找到开放的Amazon S3存储桶”&lt;/a&gt;和  &lt;a href="https://portswigger.net/daily-swig/offensive-security-has-a-crisis-on-their-hands-right-now"&gt;“攻击性安全性现在危及了他们的手”。&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Florian Hansemann&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://twitter.com/HanseSecure"&gt;Hansemann&lt;/a&gt;是一名黑客和渗透测试人员。他的推文和  &lt;a href="https://hansesecure.de/blog/"&gt;博客&lt;/a&gt;关注红队成员感兴趣的工具和技术。例如，他介绍了Tokenvator（一种使用Windows令牌提升特权的工具），以及如何编写有效负载以在Windows中进行进程注入。&lt;/p&gt;
 &lt;h3&gt;MWR Labs&lt;/h3&gt;
 &lt;p&gt;MWR发布了对红队有用的  &lt;a href="https://labs.mwrinfosecurity.com/tools/"&gt;工具&lt;/a&gt;。它的  &lt;a href="https://twitter.com/mwrlabs"&gt;Twitter&lt;/a&gt;为安全测试人员的问题提供了建议，例如绕过内存扫描程序和绕过网站上的Windows NT LAN Manager身份验证。&lt;/p&gt;
 &lt;h3&gt;Emad Shanab&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://twitter.com/Alra3ees"&gt;Shanab&lt;/a&gt;是一名律师和黑客。他的Twitter提供对红队有用的技术，例如编写SQL注入和伪造OAuth令牌。&lt;/p&gt;
 &lt;h3&gt;RingZer0&lt;/h3&gt;
 &lt;p&gt;这个黑客团队经营着一个招牌  &lt;a href="https://ringzer0team.com/"&gt;网站，&lt;/a&gt;充满挑战，旨在测试和提高红队成员所需的编程技能。该小组还有一个  &lt;a href="https://twitter.com/MrUn1k0d3r"&gt;Twitter feed&lt;/a&gt;，其中提供了黑客技巧和红队建议。&lt;/p&gt;
 &lt;h3&gt;Bug reconnaissance&lt;/h3&gt;
 &lt;p&gt;巴基斯坦的Web开发人员，机器学习爱好者和安全研究员  &lt;a href="https://twitter.com/hs_fareed"&gt;Hussnain Fareed&lt;/a&gt;的文章  &lt;a href="https://medium.com/secjuice/guide-to-basic-recon-bug-bounties-recon-728c5242a115"&gt;“如何在&lt;/a&gt;  &lt;a href="https://twitter.com/hs_fareed"&gt;追捕&lt;/a&gt;  &lt;a href="https://medium.com/secjuice/guide-to-basic-recon-bug-bounties-recon-728c5242a115"&gt;Bug赏金之前正确地进行侦察”&lt;/a&gt;。文章讨论了在哪里测试软件的漏洞以及可以用来发现漏洞的工具。尽管发表了异想天开的非正式演讲，但该文章对于计划侦察战略的红队可能是有用的资源。&lt;/p&gt;
 &lt;h3&gt;Mitre ATT&amp;amp;CK&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://attack.mitre.org/wiki/Main_Page"&gt;米特尔（Mitre）的对抗策略，技巧和常识&lt;/a&gt;（ATT＆CK）是经过精心挑选的有关敌手行为的知识库。它遵循威胁参与者及其已知平台的生命周期阶段。它是由Mitre红队负责人  &lt;a href="https://twitter.com/stromcoffee"&gt;Blake Strom开发的&lt;/a&gt;，他着手创建一个框架，详细描述了攻击者在破坏网络后的行为。&lt;/p&gt;
 &lt;p&gt;“攻击者可能会使用成百上千种恶意软件，包括后门，特洛伊木马，远程访问工具等，将其侵入网络内部，”斯特罗姆 在2015年10月  &lt;a href="https://www.mitre.org/careers/working-at-mitre/employee-voices/a-cyber-security-engineer-scores-a-big-win-with-attck"&gt;解释说&lt;/a&gt;，“但一旦进入内部，它们就会表现出许多常见的行为。他们了解自己的环境，收**法用户和帐户的凭证，并迁移到网络中的其他系统以窃取信息或建立某些长期的操作或效果。”&lt;/p&gt;
 &lt;p&gt;ATT＆CK对于了解已知对手行为的安全风险，计划安全改进以及验证防御措施是否按预期工作非常有用。&lt;/p&gt;
 &lt;h3&gt;Will Schroeder&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://twitter.com/harmj0y"&gt;Schroeder&lt;/a&gt;是SpecterOps的工程师，为公司提供红队服务。他的专长是攻击Microsoft的PowerShell，他经常在其Twitter feed和  &lt;a href="http://blog.harmj0y.net/"&gt;Blog&lt;/a&gt;中对其进行讨论。他的最新著作包括  &lt;a href="https://posts.specterops.io/a-guide-to-attacking-domain-trusts-971e52cb2944"&gt;攻击&lt;/a&gt;Microsoft Active Directory中的  &lt;a href="https://posts.specterops.io/a-guide-to-attacking-domain-trusts-971e52cb2944"&gt;域信任&lt;/a&gt;的指南，以及  &lt;a href="https://posts.specterops.io/application-whitelisting-bypass-and-arbitrary-unsigned-code-execution-technique-in-winrm-vbs-c8c24fb40404"&gt;绕过应用程序白名单&lt;/a&gt;并在winrm.vbs中执行任意未签名代码的讨论。&lt;/p&gt;
 &lt;h3&gt;The Hacker Playbook&lt;/h3&gt;
 &lt;p&gt;本书  &lt;a href="http://thehackerplaybook.com/about/"&gt;涵盖的主题&lt;/a&gt;包括侦察工具和战术，横向移动技巧和窍门以及密码破解。作者Peter Kim也有一个  &lt;a href="https://twitter.com/hackerplaybook?lang=en"&gt;Twitter feed&lt;/a&gt;，其中提供了黑客技巧，并提到了其他技巧。&lt;/p&gt;
 &lt;h3&gt;Nettitude Labs&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="https://twitter.com/Nettitude_Labs?lang=en"&gt;Nettitude&lt;/a&gt;，其中发布了红队成员感兴趣的提示，技巧，工具和教程。它还在其网站上提供了许多免费的黑客  &lt;a href="https://labs.nettitude.com/tools/"&gt;工具&lt;/a&gt;，旨在进行各种操作，从破解密码，利用WordPress漏洞，收集侦察信息到使用PowerShell创建命令和控制系统以及设计XSS有效负载。&lt;/p&gt;
 &lt;h3&gt;Red Canary&lt;/h3&gt;
 &lt;p&gt;该公司提供基于云的安全服务，但有一些免费服务值得红队注意。例如，它提供了有关端点检测和响应的  &lt;a href="https://resources.redcanary.com/edr-buyers-guide-request"&gt;指南&lt;/a&gt;，以及使用Mitre的ATT＆CK框架对红队有用的许多  &lt;a href="https://redcanary.com/atomic-red-team/"&gt;工具&lt;/a&gt;。它还提供了  &lt;a href="https://redcanary.com/blog/"&gt;博客&lt;/a&gt;和  &lt;a href="https://twitter.com/redcanaryco"&gt;Twitter&lt;/a&gt;其中包含红队成员感兴趣的提示和信息。&lt;/p&gt;
 &lt;h3&gt;17 tips for a successful red team&lt;/h3&gt;
 &lt;p&gt;由技术自由职业者  &lt;a href="https://twitter.com/zeeshan_writer"&gt;Nasrumminallah Zeeshan &lt;/a&gt;  &lt;a href="https://www.peerlyst.com/posts/17-tips-for-a-successful-red-team-nasrumminallah-zeeshan"&gt;撰写的本文&lt;/a&gt;包含有关“color”团队的教程，以及针对红队的提示。Zeeshan的另一篇有关红队成员的文章解释了如何构建出于安全原因  &lt;a href="https://www.peerlyst.com/posts/how-to-build-a-list-of-log-files-that-you-need-to-be-inspecting-regularly-nasrumminallah-zeeshan?trk=search_page_search_result?utm_source=linkedin&amp;utm_medium=social&amp;utm_content=peerlyst_post&amp;utm_campaign=peerlyst_shared_post"&gt;需要定期检查的日志文件列表&lt;/a&gt;。&lt;/p&gt;
 &lt;h3&gt;SANS数字取证和事件响应&lt;/h3&gt;
 &lt;p&gt;SANS研究所是网络安全培训的主要提供者。它的DFIR（数字取证和事件响应）  &lt;a href="https://twitter.com/sansforensics"&gt;Twitter&lt;/a&gt;包含有关SANS课程的最新新闻以及专家从业人员的提示。SANS DFIR还拥有一个  &lt;a href="https://www.dfir.training/tools/anti-counter-forensics"&gt;网站&lt;/a&gt;,其中包含许多黑客工具，红队成员可能会发现这些工具有用，例如用假象污染内存的程序；Folder Shield，可用于隐藏系统上的文件夹；和Timestomp，用于更改NTFS时间戳的应用程序。&lt;/p&gt;
 &lt;h3&gt;Red Team Journal&lt;/h3&gt;
 &lt;p&gt;红队作为一个概念已经超越了技术。这是组织整合批判性和逆势思维的系统方法。这就是《  &lt;a href="https://redteamjournal.com/"&gt;红队日报》&lt;/a&gt;的想法。它有一些面向技术的文章，例如红队和笔测试，但也有一些思想性的文章，例如“红队宣言”。RJT还拥有一个  &lt;a href="https://twitter.com/redteamjournal"&gt;Twitter&lt;/a&gt;，其中对红队的更多方面做出了许多生动的贡献。&lt;/p&gt;
 &lt;h3&gt;PenTestIt&lt;/h3&gt;
 &lt;p&gt;  &lt;a href="http://pentestit.com/"&gt;该网站&lt;/a&gt;将自己称为“万物信息安全的源头”，并为红队成员提供了一些有趣的花絮。例如，它具有  &lt;a href="http://pentestit.com/malware-sources/"&gt;恶意软件来源&lt;/a&gt;列表，包括木马，远程访问木马，键盘记录程序，勒索软件，启动工具包和漏洞利用包。它还具有  &lt;a href="http://pentestit.com/shodan-queries/"&gt;Shodan查询页面&lt;/a&gt;。Shodan是一个搜索引擎，通常用于发现暴露于Internet的不受保护的数据库。此外，还有一篇关于  &lt;a href="http://pentestit.com/adversary-emulation-tools-list/"&gt;对手仿真工具&lt;/a&gt;有用文章。&lt;/p&gt;
 &lt;h3&gt;Awesome Red Teaming&lt;/h3&gt;
 &lt;p&gt;这是在GitHub上维护的红队资源的  &lt;a href="https://github.com/yeyintminthuhtut/Awesome-Red-Teaming#-training--free-"&gt;非常详细的列表&lt;/a&gt;。它分解了  &lt;a href="https://techbeacon.com/how-build-best-cyber-threat-hunting-team"&gt;红队&lt;/a&gt;每个技术方面，从初始访问，执行和持久性到横向移动，收集和渗透。它还涵盖小工具，书籍，培训和认证。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;参考来源：   &lt;a href="https://techbeacon.com/security/modern-red-teaming-21-resources-your-security-team"&gt;techbeacon&lt;/a&gt;，FB小编周大涛编译，转载请注明来自FreeBuf.COM&lt;/strong&gt;&lt;/p&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>极客 技巧 红队 资源</category>
      <guid isPermaLink="true">https://itindex.net/detail/60373-%E7%BA%A2%E9%98%9F-%E8%B5%84%E6%BA%90</guid>
      <pubDate>Tue, 18 Feb 2020 17:00:18 CST</pubDate>
    </item>
    <item>
      <title>别让自己“墙”了自己</title>
      <link>https://itindex.net/detail/60186-</link>
      <description>&lt;p&gt;  &lt;img alt="" height="198" src="https://coolshell.cn/wp-content/uploads/2019/12/open-your-creative-mind-300x198.jpg" width="300"&gt;&lt;/img&gt;这一两周与几个朋友聊天，有年轻的90后，也有大叔级的70后，这些人在我看来都是很有能力的人，但是一些喜好过于强烈，让我不经意地回顾了我工作20年来身边的人，有发展得好的，也有发展的不好的，有些人是很可惜的，因为限制他们的不是其它人，也不是环境，而是自己，所以，很想写下这篇文章。（注：这篇文章可能会是一篇说教的文章，所以，可能会让你看着犯困，所以，我会尽量地短一些，而且尽可能多讲故事，少道理，这里的故事，全是真实发生的）&lt;/p&gt;
 &lt;h4&gt;几个故事&lt;/h4&gt;
 &lt;p&gt;2019年年初，我面试了一个很年轻的小伙子（93/94年出生），这个小伙子特别有灵性，也很聪明，计算机专业出生，也很喜欢技术，基础和学习能力也很好。在我这20年来认识的人中，如果他能呆在北京、上海、深圳这样的城市，我保证不出三年，他会成为他们同龄人中非常出色的技术人员，如果有个好的舞台有一个好的团队带他，他的未来会非常成功。然而，这个小伙子有两大喜好：1）只愿呆在一个毫无IT的环境的三/四线城市，2）对技术有非常大的偏好，只喜欢Go语言，非常不喜欢其它的语言，比如：Java（离开Java的世界，基本上离开了做架构的世界）。&lt;/p&gt;
 &lt;p&gt;他的这两个喜好，足以让一个未来会很优秀的人毁掉，因为，这个时代没有限制他，他的能力也没有限制他，但是他的意识完完全全地限制了他。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;他把自己最宝贵的青春放在了很烂的项目上，就算能用一些新的技术，他也只能算是自娱自乐，在实验室中玩玩具罢了。&lt;/li&gt;
  &lt;li&gt;他把自己的技术栈封闭起来，而直接放弃了这个时代最具工业化的技术Java，对于一个好的程序员来说，同时掌握几门语言和技术完全是没什么问题，但是自己封闭了自己的视野。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;实在是非常可惜，我本来是可以为他介绍到一些很不错的公司的，但是他这样的习性，等于自己把自己未来的门给关上了，虽然我跟他长谈过，但是我也没有办法叫醒不想醒的人……&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;视野、环境和舞台，对一个人的限制是非常大的。井蛙不知道大海，被空限维度所限制；夏虫不知道冬天，是被时间维度所限制；圈奍的动物没有斗志，是被自己意识所限制。&lt;/li&gt;
  &lt;li&gt;偏见和不开放，对一个人的限制是真正有毁灭性的。主动让自己成为一个瞎子和聋子，主动把自己的能力阉割掉，这是一件令人痛心的事。想想大清的闭关锁国是如何让世界第一的北洋水师给毁掉的……&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;我还有个同学，他的技术并不差，就算呆在昆明这种很落后的地方，他也非常地好学，学习英文，学习各种新技术，对技术没有任何的偏好，喜欢C/C++/Java/Python/Shell，同样喜欢前端Javascript，对基础知识非常地踏实，他在技术上没有限制自己的潜力，有什么就学什么。后来，我带他玩Docker/Go/K8S……分布式架构，他也上手的很快……像他这样的人，技术能力完全没得说，比我还大一岁，44岁了，还是一样的天天追代码细节，看Youtube的各种大会，翻github里的各种issue和pull request……&lt;/p&gt;
 &lt;p&gt;我同学这人，拥有了成为一个技术牛人几乎的条件：基础知识过硬，细节扎得深，面很广，学习能力强，有英文能力，逻辑思维能力不错，非常的自律，执行力也很强，抓得住重点……然而，只有一个小问题，就是没有到大公司历练过，我三番五次叫他从昆明出来，但是最终他都呆在昆明这个城市没有出来，因为有所谓的家庭约束。然而，我身边还有好些人，把自己家从北京搬到上海，从上海搬到深圳，从厦门搬到深圳……这样的人大有人在……像他这样的能力，在哪个公司都会是主力和骨干，对于一个公司的主力和骨干来说，家庭上的这些问题都是小问题都是有很多解的……&lt;/p&gt;
 &lt;p&gt;另外，我这个同学还是一个比较悲观的人，任何事情都是先想到不好的事，他关注负面的东西会胜于正面的东西，而且他还有一定的社交恐惧，怕与人相处和交流，时间越长越害怕，甚至有时候直接跟我说，“我就是不想改变”这样的话……其实，我以前也是一个很害怕与人交流的人，面试的时候，我根本不敢正眼看面试官一眼，也不知道与人怎么交流。但是，我与他不一样，我努力克服，不断地面试，与人面对面的交流，到一线技术客服接用户的电话，在公司里做分享，慢慢地到外面分享……3-5年就完全克服掉了。&lt;/p&gt;
 &lt;p&gt;其实，很多事情，完全是有解的，也没有必要担心，自己的心理障碍也是可以克服的，重点就是自己愿不愿意，只要愿意完成了一半，接下来就是不断的摸爬滚打坚持了。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;不限制自己的人，会穷举各种方法来解决问题，限制自己的人，只会找各式各样的问题或借口。&lt;/li&gt;
  &lt;li&gt;不限制自己的人，会努力改变自己的问题和缺陷，限制自己的人，会放任自己。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h4&gt;另外几个故事&lt;/h4&gt;
 &lt;p&gt;我还有另外几个故事（活到四十多，能看到好多人十几年的发展过程，感觉有点上帝视角了）&lt;/p&gt;
 &lt;p&gt;我还有一个以前团队里的一个小伙，人是很聪明，但就完全就是野路子，他对技术没有什么偏好，一个PHP程序员，做那个Discuz!论坛，公司被并购了，转成Java，开始研究Java的各种细节，对技术从来没有什么偏见，有什么就玩什么，每做一个项目，就算是一样的他都要用新的技术做一遍，然后跟着我做云计算，我教他TCP，教他C/C++，后来一起玩Docker/Go，等等，反正是一点就通，他是我见过学习能力最强的人。但是，有一个事他一直与我的想法不一样，就是我希望他先把软件设计好，再写代码，他非常不能理解，他习惯于直接动手开干，然后有什么问题就整什么问题，我也很难教育他。&lt;/p&gt;
 &lt;p&gt;有一天，他电话面了一下Facebook，电话面了15分钟后对方就放弃了，他受到了严重的打击。然后，他就开始找菲利宾人练英文口语了，我也让他做算法题，然后，他才发现，一道连算法都不是的纯编程题都提交几次都过不了，等他做完了Leetcode最初的那151道题后，整个人都改变了，写代码前认认真真地在纸上把程序的状态，处理时序以及可能遇到的一些条件先罗列出来，然后，进行逻辑设计后，再写，从此，他就开启他更大的天地了。我后来把他推荐给了微软，先在中国的Bing，在中国升好2-3级，然后去了美国的Azure，现在听说他准备要跟 k8s 的 co-founder   &lt;a href="https://github.com/brendandburns" rel="noopener noreferrer" target="_blank"&gt;Brendan Burns&lt;/a&gt; 混了（虽然，他现在还在印度人手下，但是，我真的不知道他未来能玩多大，因为今年他才33岁，而且非常聪明）&lt;/p&gt;
 &lt;p&gt;他以前是把自己封闭起来的，我叫他出来，他也不出来，后来因为一些办公室政治的原因不得不来找我，于是我就带着他玩了两年，跟他讲了很多外面的世界是怎么玩的，他这个人也是一个相当不善于社交的人，但是心是开放的，愿意接受新的东西，虽然对技术也有一定偏见，比如不喜欢Windows，但是也不会不喜欢到完全封闭。后来我跟他说，微软的技术相当的强的，你看到的技术只是表面，深层次的东西都是相通的，直到他到了微软后发现各种牛逼的东西，对微软系统的技术的态度也有了改变，而且我让他跟我说很多微软那边的事，我发现，他对技术了解的维度已经是越来越高级的了……&lt;/p&gt;
 &lt;p&gt;还是我以前团队的一个小伙，他是一个前端，他说前端的东西没什么意思，想来找我做后端，我也一点点带他……后来，我说，你如果想要玩得好，你必需来北京，无论现在你觉得过得有多好，你都要放弃掉，然后，尽最大可能出去经历一下世界最顶尖的公司，我甚至跟他说，如果他女朋友不跟来的话，就先分开一段时间，先自己立业，他来北京的时候，他之前的同事都等着看他的笑话，我说，那些人连想都不敢想，不必管他们。于是，他去了Amazon，再过了一年去了西雅图，我跟他说，接下来就是去AWS，然后，如果有足够的野心，用自己的年轻这个资本去硅谷创业公司赌一把……未来他怎么样我不知道，但至少他没有限制自己，他的未来不会有封顶……&lt;/p&gt;
 &lt;p&gt;也是我的同学，我跟他在大学是上下铺，后来他去了人民大学读计算机博士，大学的时候做国产数据库kingbase，然后去了一家外企，天天被派到用户那边做数据分析，后来，他想回科研单位做国产数据库，我说，别啊，你的技术比我好太多，还有博士理论加持，你不去国外顶尖公司玩玩，你不知道自己有多强的，于是他跟公司申请去了国外做核心，后来因为Hadoop的原因，公司的产品最终成为了历史，于是我说，你来了美国么，你一定要去AWS，于是他就去了AWS的Aurora团队，成为了AWS明星级产品的中坚力量，天天在改MySQL的核心源码，干了两年，被提升为Principle Software Engineer ……&lt;/p&gt;
 &lt;p&gt;这里我到不是说出国有多牛，也许你只关注能挣多少钱，但是我想说，他们之所以能有这样的际遇，除了他们本来就有实力，还更因为他们从来不给自己设制什么限制，就是那种“艺多不压身”，有什么就学什么，有更高的就去向更高的迈进，其它的像家庭什么的问题其实都是会有解的，真的不必担心太多……&lt;/p&gt;
 &lt;h4&gt; 别限制了自己&lt;/h4&gt;
 &lt;p&gt;上面的这些故事，也许你能看得懂，也许你看得不一定能懂，这里，让我来做个总结吧&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;做有价值的事&lt;/strong&gt;。这个世界对计算机人才的要求是供不应求的，所以，不要让自己为自己找各式各样的借口，让自己活在“玩玩具”、“搬砖”和“使蛮力加班”的境地。其实，我发现这世界上有能力的人并不少，但是有品味的人的确很少。   &lt;strong&gt;所谓的有价值，就是，别人愿付高价的，高技术门槛的，有创造力的，有颠覆性的&lt;/strong&gt;……&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;扩大自己的眼界，开放自己的内心&lt;/strong&gt;。人要变得开放，千万不要做一个狭隘的民族主义者，做一个开放的人，把目光放在全人类这个维度，不断地把自己融入到世界上，而不是把自己封闭起来，这里，   &lt;strong&gt;你的英文语言能力对你能不能融入世界是起决定性的作用&lt;/strong&gt;。开放自己的心态，正视自己的缺点，你才可能往前迈进。   &lt;strong&gt;你的视野决定了你的知不知道要去哪，你的开放决定了你想不想去&lt;/strong&gt;。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;站在更高的维度&lt;/strong&gt;。面的维度会超过点的维点，空间的维度会超过面的维度，在更高维度上思考和学习，你会获得更多。   &lt;strong&gt;整天在焦虑那些低维度的事（比如自己的薪水、工作的地点、稳不稳定、有没有户口……），只会让你变得越来越平庸，只要你站在更高的维度（比如： 眼界有没有扩大、可能性是不是更多、竞争力是不是更强、能不能解决更大更难的问题、能创造多大的价值……），时间会让你明白那些低维度的东西全都不是事儿&lt;/strong&gt;。技术学习上也一样，站在学习编程语法特性的维度和站在学习编程范式、设计模式的维度是两种完全不一样的学习方式。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;精于计算得失&lt;/strong&gt;。很多人其实不是很懂计算。绝大多数人都是在算计自己会失去多少，而不会算会得到多少。而一般的人也总是在算短期内会失去什么，优秀则总是会算我投入后未来会有什么样的回报，前者在算计今天，目光短浅，而后者则是舍在今天，得在明天，计算的是未来。   &lt;strong&gt;    &lt;strong&gt;精于计算得失的，就懂得什么是投资，不懂的只会投机。对于赚钱，你可以投机，但是对于自己最好还是投资。&lt;/strong&gt;&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;勇于跳出传统的束缚&lt;/strong&gt;。有时候，跳出传统并不是一件很容易的事，因为大多数人都会对未知有恐惧的心理。比如：我看到很多人才都被大公司垄断了，其实，有能力的人都不需要加入大公司，有能力的人是少数，这些少数的人应该是所有的公司share着用的，这样一来，对于所有的人都是利益最大化的。这样的事现在也有，比如：律师、设计师……。但是，绝大多数有能力的技术人员是不敢走出这步。我在2015年到2016年实践过一年半，有过这些实践，做“鸡”的比“二奶”好多了，收入也好很多很多（不好意思开车了）……&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;庄子说过几句话——&lt;/p&gt;
 &lt;blockquote&gt;
  &lt;p&gt;井蛙不可以语于海者，拘于虚也；//空间局限&lt;/p&gt;
  &lt;p&gt;夏虫不可以语于冰者，笃于时也；//时间局限&lt;/p&gt;
  &lt;p&gt;曲士不可以语于道者，束于教也。//认识局限&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;别自己墙了自己，人最可悲的就是自己限制自己，想都不敢想，共勉！&lt;/p&gt;
 &lt;p&gt;（全文完）&lt;/p&gt;
 &lt;p align="center"&gt;  &lt;img src="https://coolshell.cn//wp-content/uploads/2009/04/qrcode_for_gh_dd9d8c843f20_860-300x300.jpg"&gt;&lt;/img&gt;   &lt;img height="300" src="https://coolshell.cn/wp-content/uploads/2019/04/coolshell.microapp.jpg" width="300"&gt;&lt;/img&gt;  &lt;br /&gt;关注CoolShell微信公众账号和微信小程序&lt;/p&gt;
 &lt;div&gt;
  &lt;p align="center"&gt;   &lt;strong&gt;（转载本站文章请注明作者和出处     &lt;a href="https://coolshell.cn/"&gt;酷 壳 – CoolShell&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;——===   &lt;strong&gt;访问    &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17583.html"&gt;      &lt;img alt="&amp;#25216;&amp;#26415;&amp;#20154;&amp;#21592;&amp;#30340;&amp;#21457;&amp;#23637;&amp;#20043;&amp;#36335;" height="150" src="https://coolshell.cn/wp-content/uploads/2016/12/people-150x150.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17583.html"&gt;技术人员的发展之路&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17497.html"&gt;      &lt;img alt="&amp;#20160;&amp;#20040;&amp;#26159;&amp;#24037;&amp;#31243;&amp;#24072;&amp;#25991;&amp;#21270;&amp;#65311;" height="150" src="https://coolshell.cn/wp-content/uploads/2016/09/engineer-150x150.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17497.html"&gt;什么是工程师文化？&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17446.html"&gt;      &lt;img alt="&amp;#36825;&amp;#22810;&amp;#24180;&amp;#26469;&amp;#25105;&amp;#19968;&amp;#30452;&amp;#22312;&amp;#38075;&amp;#30740;&amp;#30340;&amp;#25216;&amp;#26415;" height="150" src="https://coolshell.cn/wp-content/uploads/2016/08/Architecture-Internships-Abroad-e1471517643765-150x150.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17446.html"&gt;这多年来我一直在钻研的技术&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17459.html"&gt;      &lt;img alt="&amp;#20851;&amp;#20110;&amp;#39640;&amp;#21487;&amp;#29992;&amp;#30340;&amp;#31995;&amp;#32479;" height="150" src="https://coolshell.cn/wp-content/uploads/2016/08/HighAvailability-BK-150x150.png" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17459.html"&gt;关于高可用的系统&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/11928.html"&gt;      &lt;img alt="&amp;#20114;&amp;#32852;&amp;#32593;&amp;#20043;&amp;#23376; &amp;#8211; Aaron Swartz" height="150" src="https://coolshell.cn/wp-content/uploads/2014/09/Aaron_Swartz_profile-150x150.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/11928.html"&gt;互联网之子 – Aaron Swartz&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/11629.html"&gt;      &lt;img alt="&amp;#12300;&amp;#25105;&amp;#21482;&amp;#26159;&amp;#35748;&amp;#30495;&amp;#12301;&amp;#32842;&amp;#32842;&amp;#24037;&amp;#21280;&amp;#24773;&amp;#24576;" height="150" src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/11629.html"&gt;「我只是认真」聊聊工匠情怀&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>杂项资源 职场生涯 Programmer 程序员</category>
      <guid isPermaLink="true">https://itindex.net/detail/60186-</guid>
      <pubDate>Sun, 01 Dec 2019 16:07:04 CST</pubDate>
    </item>
    <item>
      <title>程序员练级攻略（2018)  与我的专栏</title>
      <link>https://itindex.net/detail/58422-%E7%A8%8B%E5%BA%8F%E5%91%98-%E6%94%BB%E7%95%A5-%E4%B8%93%E6%A0%8F</link>
      <description>&lt;p&gt;  &lt;img alt="" height="262" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#19987;&amp;#26639;-300x262.jpg" width="300"&gt;&lt;/img&gt;写极客时间8个月了，我的专栏现在有一定的积累了，今天想自己推荐一下。因为最新的系列《程序员练级攻略（2018）版》正在连载中，而且文章积累量到了我也有比较足的自信向大家推荐我的这个专栏了。推荐就从最新的这一系统的文章开始。&lt;/p&gt;
 &lt;p&gt;2011年，我在   &lt;a href="https://coolshell.cn/"&gt;CoolShell&lt;/a&gt; 上发表了 《  &lt;a href="https://coolshell.cn/articles/4990.html"&gt;程序员技术练级攻略&lt;/a&gt;》一文，得到了很多人的好评（转载的不算，在我的网站上都有近1000W的访问量了）。并且陆续收到了一些人的反馈，说跟着这篇文章找到了不错的工作。几年过去，也收到了好些邮件和私信，希望我把这篇文章更新一下，因为他们觉得有点落伍了。是的，  &lt;strong&gt;老实说，抛开这几年技术的更新迭代不说，那篇文章写得也不算特别系统，同时标准也有点低，当时是给一个想要入门的朋友写的，所以，非常有必要从头更新一下《程序员练级攻略》这一主题&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;目前，我在我极客时间的专栏上更新《程序员练级攻略（2018版）》。升级版的《程序员练级攻略》会比Coolshell上的内容更多，也更专业。这篇文章有【入门篇】、【修养篇】、【专业基础篇】、【软件设计篇】、【高手成长篇】五大篇章，它们会帮助你从零开始，一步步地，系统地，从陌生到熟悉，到理解掌握，从编码到设计再到架构，从码农到程序员再到工程师再到架构师的一步一步进阶，完成从普通到精通到卓越的完美转身……&lt;/p&gt;
 &lt;p&gt;这篇文章是我写得最累也是最痛苦的文章，原因如下：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;    &lt;strong&gt;学习路径的梳理&lt;/strong&gt;。这是一份计算编程相关知识地图，也是一份成长和学习路径。所以有太多的推敲了，知识的路径，体，地图……这让我费了很多工夫，感觉像在编写一本教材一样，即不能太高大上，也不能误人子弟。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;新旧知识的取舍。&lt;/strong&gt;另外，因为我的成长经历中很多技术都成了过去时，所以对于新时代的程序员应该学习新的技术，然后，很多基础技术在今天依然管用，所以，在这点上，哪些要那些不要，也花了我很多的工夫。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;文章书籍的推荐&lt;/strong&gt;。为了推荐最好的学习资料和资源，老实说，我几乎翻遍了整个互联网，进行了大量的阅读和比较。这个过程让我也受益非浅。一开始，这篇文章的大小居然在500K左右，太多的信息就是没有信息，所以在信息的筛选上我花费了很多的工夫，删掉了60%的内容。但是，依然很宠大。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;总之，你一定会被这篇文章的内容所吓到的，是的，我就是故意这样做的，因为，这本来就没有什么捷径，也不可能速成，很多知识都是硬骨头，你只能一口一口的啃，我故意这样做就是为了让你不要有“速成”的幻想，也可以轻而一举的吓退那些不想用功不想努力的人&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;但是，我们也要知道《易经》有云：“  &lt;strong&gt;取法其上，得乎其中，取法其中，得乎其下，取法其下，法不得也&lt;/strong&gt;”。所以，我这里会给你立个比较高标准，你要努力达到，相信我，就算是达不到，也会比你一开始期望的要高很多……&lt;/p&gt;
 &lt;p&gt;下面是这份练级攻略的目录，目前只在极客时间上发布，你需要付费阅读（在本文最后有相关的二维码）。&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="1937" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#31243;&amp;#24207;&amp;#21592;&amp;#32451;&amp;#32423;&amp;#25915;&amp;#30053;.png" width="290"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;那么，除程序员练级攻略外，我还写了哪些内容？下面是迄今为止我所有的文章的目录。你可以在下面看一下相关的目录。这也算是我开收费专栏来8个月给大家的一份答卷吧。我也没有想到，我居然写了这么多的文章，而且对很多人都很有用。&lt;/p&gt;
 &lt;p&gt;首先是个人成长和经验之谈的东西，在这里的文章还没有完全更新完，未来要更新什么我也不清楚，但是可以呈现出来的内容和方向如下所示，供你参考。对于个人成长中的内容，都是我多年来的心得和体会，从读者的反馈来看是非常不错的，你一定要要阅读的。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="1024" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#20010;&amp;#20154;&amp;#25104;&amp;#38271;&amp;#21644;&amp;#32463;&amp;#39564;&amp;#20043;&amp;#35848;-319x1024.png" width="319"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;分布式系统架构，我一共出了两个系列，一个是分布式系统架构的本质，另一个是设计模式。前者偏概念，后者偏技术。这里旨在让你看到整个分布式系统设计的一个非常系统的蓝图，但是因为在手机端上，不可能写得非常细，所以，会缺失一些细节，这些细节我是故意缺失的，主要是有几方面的原因，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;一方面，这是为了阅读的效果，手机上的文章不过长，所以，不能有太多的细节。&lt;/li&gt;
  &lt;li&gt;另一方面，也是是想留给大家自行学习，而不是一定要我把饭喂到你的嘴里，你才能吃得着。   &lt;strong&gt;学习不只是为要答案，而是学方法&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;最后是我的私心，因为我也在创业，所以，技术细节上东西正是我在做的产品，所以，如果你想了解得更细，你需要和我有更商业合作。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" height="689" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#20998;&amp;#24067;&amp;#24335;&amp;#26550;&amp;#26500;&amp;#30340;&amp;#26412;&amp;#36136;.png" width="321"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="1065" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#20998;&amp;#24067;&amp;#24335;&amp;#26550;&amp;#26500;&amp;#35774;&amp;#35745;&amp;#27169;&amp;#24335;-&amp;#24377;&amp;#21147;&amp;#31687;.png" width="331"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="669" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#20998;&amp;#24067;&amp;#24335;&amp;#26550;&amp;#26500;&amp;#35774;&amp;#35745;&amp;#27169;&amp;#24335;-&amp;#31649;&amp;#29702;&amp;#31687;.png" width="353"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="592" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#20998;&amp;#24067;&amp;#24335;&amp;#26550;&amp;#26500;&amp;#35774;&amp;#35745;&amp;#27169;&amp;#24335;-&amp;#24615;&amp;#33021;&amp;#31687;.png" width="328"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;区块链的技术专栏本来不在我的写作计划中的，但是因为来问我这方面的技术人太多了，所以，就被问了一系列的文章，这里的文章除了一些技术上的科普，同样有有很多我的观点，你不但可以学到技术，还可以了解一些金融知识和相关的逻辑，我个人觉得这篇文章是让你有独立思考的文章。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="771" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#21306;&amp;#22359;&amp;#38142;&amp;#25216;&amp;#26415;.png" width="304"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;我的专栏还在继续，接下来还有一个系列的文章——《从技术到管理》，欢迎关注，也欢迎扫码订阅。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;最后友情提示一下：在手机上学习并不是最好的学习方式，也不要在我的专栏上进行学习，把我的专栏当成一个你的助手，当成一个向导，当成一个跳板，真正的学习还是要在线下，专心的，系统地、有讨论地、不断实践地学习，这点希望大家切记！&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="580" src="https://coolshell.cn/wp-content/uploads/2018/05/&amp;#19987;&amp;#26639;.jpg" width="665"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;（全文完）&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p align="center"&gt;  &lt;img src="https://coolshell.cn//wp-content/uploads/2009/04/qrcode_for_gh_dd9d8c843f20_860-300x300.jpg"&gt;&lt;/img&gt;  &lt;br /&gt;关注CoolShell微信公众账号可以在手机端搜索文章&lt;/p&gt;
 &lt;div&gt;
  &lt;p align="center"&gt;   &lt;strong&gt;（转载本站文章请注明作者和出处     &lt;a href="https://coolshell.cn/"&gt;酷 壳 – CoolShell&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;——===   &lt;strong&gt;访问    &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17459.html"&gt;      &lt;img alt="&amp;#20851;&amp;#20110;&amp;#39640;&amp;#21487;&amp;#29992;&amp;#30340;&amp;#31995;&amp;#32479;" height="150" src="https://coolshell.cn/wp-content/uploads/2016/08/HighAvailability-BK-150x150.png" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17459.html"&gt;关于高可用的系统&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/4990.html"&gt;      &lt;img alt="&amp;#31243;&amp;#24207;&amp;#21592;&amp;#25216;&amp;#26415;&amp;#32451;&amp;#32423;&amp;#25915;&amp;#30053;" height="150" src="https://coolshell.cn/wp-content/uploads/2011/07/programmer-150x150.png" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/4990.html"&gt;程序员技术练级攻略&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/17680.html"&gt;      &lt;img alt="&amp;#20174;Gitlab&amp;#35823;&amp;#21024;&amp;#38500;&amp;#25968;&amp;#25454;&amp;#24211;&amp;#24819;&amp;#21040;&amp;#30340;" height="150" src="https://coolshell.cn/wp-content/uploads/2017/02/gitlab-600-150x150.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/17680.html"&gt;从Gitlab误删除数据库想到的&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/8088.html"&gt;      &lt;img alt="&amp;#23545;&amp;#25216;&amp;#26415;&amp;#30340;&amp;#24577;&amp;#24230;" height="150" src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/1.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/8088.html"&gt;对技术的态度&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/4102.html"&gt;      &lt;img alt="&amp;#22914;&amp;#20309;&amp;#23398;&amp;#22909;C&amp;#35821;&amp;#35328;" height="150" src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/17.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/4102.html"&gt;如何学好C语言&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;a href="https://coolshell.cn/articles/12052.html"&gt;      &lt;img alt="Leetcode &amp;#32534;&amp;#31243;&amp;#35757;&amp;#32451;" height="150" src="https://coolshell.cn/wp-content/plugins/wordpress-23-related-posts-plugin/static/thumbs/5.jpg" width="150"&gt;&lt;/img&gt;&lt;/a&gt;     &lt;a href="https://coolshell.cn/articles/12052.html"&gt;Leetcode 编程训练&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>技术读物 杂项资源 C++ Java Javascript</category>
      <guid isPermaLink="true">https://itindex.net/detail/58422-%E7%A8%8B%E5%BA%8F%E5%91%98-%E6%94%BB%E7%95%A5-%E4%B8%93%E6%A0%8F</guid>
      <pubDate>Tue, 29 May 2018 12:38:23 CST</pubDate>
    </item>
    <item>
      <title>机器学习和深度学习的最佳框架大比拼</title>
      <link>https://itindex.net/detail/56664-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0-%E6%A1%86%E6%9E%B6</link>
      <description>&lt;p&gt;在过去的一年里，咱们讨论了六个开源机器学习和/或深度学习框架：Caffe，Microsoft Cognitive Toolkit（又名CNTK 2），MXNet，Scikit-learn，Spark MLlib和TensorFlow。如果把网撒得大些，可能还会覆盖其他几个流行的框架，包括Theano（一个10年之久的Python深度学习和机器学习框架），Keras（一个Theano和TensorFlow深度学习的前端），DeepLearning4j（Java和Scala在Hadoop和Spark之上的深度学习软件）。如果你有兴趣使用机器学习和神经网络，你从来没有像现在这样多的选择。&lt;/p&gt;
 &lt;p&gt;机器学习框架和深度学习框架之间有区别。本质上，机器学习框架涵盖用于分类，回归，聚类，异常检测和数据准备的各种学习方法，并且其可以或可以不包括神经网络方法。深度学习或深度神经网络（DNN）框架涵盖具有许多隐藏层的各种神经网络拓扑。这些层包括模式识别的多步骤过程。网络中的层越多，可以提取用于聚类和分类的特征越复杂。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx3.sinaimg.cn/mw690/63918611gy1fck7coqgqnj20hs0es3yp.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx1.sinaimg.cn/mw690/63918611gy1fck7crlapmj20hs0pvdg5.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Caffe，CNTK，DeepLearning4j，Keras，MXNet和TensorFlow是深度学习框架。 Scikit-learning和Spark MLlib是机器学习框架。 Theano跨越了这两个类别。&lt;/p&gt;
 &lt;p&gt;一般来说，深层神经网络计算在GPU（特别是Nvidia CUDA通用GPU，大多数框架）上运行的速度要比CPU快一个数量级。一般来说，更简单的机器学习方法不需要GPU的加速。&lt;/p&gt;
 &lt;p&gt;虽然你可以在一个或多个CPU上训练DNN，训练往往是缓慢的，慢慢我不是说秒或分钟。需要训练的神经元和层数越多，可用于训练的数据越多，需要的时间就越长。当Google Brain小组在2016年针对新版Google翻译训练语言翻译模型时，他们在多个GPU上同时运行了一周的训练时间。没有GPU，每个模型训练实验将需要几个月。&lt;/p&gt;
 &lt;p&gt;这些框架中每一个框架具有至少一个显著特征。 Caffe的强项是用于图像识别的卷积DNN。 Cognitive Toolkit有一个单独的评估库，用于部署在ASP.Net网站上工作的预测模型。 MXNet具有良好的可扩展性，可用于多GPU和多机器配置的训练。 Scikit-learn具有广泛的强大的机器学习方法，易学已用。 Spark MLlib与Hadoop集成，具有良好的机器学习可伸缩性。 TensorFlow为其网络图TensorBoard提供了一个独特的诊断工具。&lt;/p&gt;
 &lt;p&gt;另一方面，所有深度学习框架在GPU上的训练速度几乎相同。这是因为训练内循环在Nvidia CuDNN包中花费大部分时间。然而，每个框架采用一种不同的方法来描述神经网络，具有两个主要的阵营：使用图形描述文件的阵营，以及通过执行代码来创建它们的描述的阵营。&lt;/p&gt;
 &lt;p&gt;考虑到这一点，让我们来看看每一个框架的特性。&lt;/p&gt;
 &lt;h3&gt;Caffe（咖啡）&lt;/h3&gt;
 &lt;p&gt;Caffe深度学习项目，最初是一个强大的图像分类框架，似乎停滞不前，基于它的持续的bug，以及它已被卡住1.0版RC3一年多的事实，并且创始人已离开项目。它仍然有良好的卷积网络图像识别和良好的支持Nvidia CUDA GPU，以及一个简单的网络描述格式。另一方面，它的模型通常需要大量的GPU内存（超过1GB）运行，它的文档是多斑点和问题，支持很难获得，安装是iffy，特别是对于它的Python笔记本支持。&lt;/p&gt;
 &lt;p&gt;Caffe有命令行，Python和Matlab接口，它依靠ProtoText文件来定义它的模型和求解器。 Caffe在其自己的模型模式中逐层定义网络。网络定义从输入数据到丢失的整个模型。当数据和派生数据在前向和后向遍历网络时，Caffe存储，通信和操作信息为blob（二进制大对象），内部是以C连续方式存储的N维数组（表示行该数组被存储在连续的存储器块中，如在C语言中）。 Blob之于Caffe如Tensor之于TensorFlow。&lt;/p&gt;
 &lt;p&gt;图层对blob执行操作，并构成Caffe模型的组件。层卷积滤波器，执行池，取内部乘积，应用非线性（诸如整流线性和S形以及其他元素方面的变换），归一化，加载数据和计算诸如softmax和铰链的损失。&lt;/p&gt;
 &lt;p&gt;Caffe已经证明其在图像分类中的有效性，但它的时刻似乎已经过去了。除非现有的Caffe模型符合您的需要，或者可以根据您的目的进行微调，我建议使用TensorFlow，MXNet或CNTK。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx3.sinaimg.cn/large/63918611gy1fck7cuyxt3j20hs0l6q3d.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;在NBViewer中显示的预先计算的CaffeJupyter笔记本。这本笔记本解释了使用一只可爱的小猫在Caffe网络上做“手术”。&lt;/p&gt;
 &lt;h3&gt;Microsoft Cognitive Toolkit（Microsoft认知工具包）&lt;/h3&gt;
 &lt;p&gt;Microsoft Cognitive Toolkit是一个快速，易用的深度学习软件包，但与TensorFlow相比，其范围有限。它有各种各样的模型和算法，极好的支持Python和Jupyter笔记本，一个有趣的声明性神经网络配置语言BrainScript，以及在Windows和Ubuntu Linux环境下自动部署。&lt;/p&gt;
 &lt;p&gt;在缺点方面，当我审查Beta 1的文档还没有完全更新到CNTK 2，并且包没有对MacOS支持。虽然自Beta 1以来，CNTK 2有许多改进，包括新的内存压缩模式，以减少GPU和新的Nuget安装包的内存使用，但对MacOS支持仍然缺失。&lt;/p&gt;
 &lt;p&gt;为Beta 1添加的PythonAPI有助于将认知工具包带入主流的、用Python码的、深度学习研究人员当中。 API包含模型定义和计算、学习算法、数据读取和分布式训练的抽象。作为PythonAPI的补充，CNTK 2具有新的Python示例和教程，以及对 Google Protocol Buffer序列化的支持。教程以Jupyter笔记本实现。&lt;/p&gt;
 &lt;p&gt;CNTK 2组件可以处理来自Python，C ++或BrainScript的多维密集或稀疏数据。认知工具包包括各种各样的神经网络类型：FFN（前馈），CNN（卷积），RNN/ LSTM（递归/长期短期记忆），批次标准化和序列注意序列。它支持强化学习，生成对抗网络，监督和非监督学习，自动超参数调整，以及从Python添加新的，用户定义的核心组件在GPU上运行的能力。它能够在多个GPU和机器上做到精确的并行性，而且（微软声称）它甚至可以适应最大的模型到GPU内存。&lt;/p&gt;
 &lt;p&gt;CNTK 2 API支持从Python，C ++和BrainScript定义网络，学习者，读者，培训和评估。他们还支持使用C＃进行评估。 Python API与NumPy互操作，并包括一个高级层级库，可以精确定义包括复现在内的高级神经网络。该工具包支持以符号形式表示循环模型作为神经网络中的循环，而不需要静态展开循环步骤。&lt;/p&gt;
 &lt;p&gt;您可以在Azure网络和GPU上训练CNTK 2模型。配备GPU的N系列Azure虚拟机系列，在我审核Beta 1时受到限制，现在通常可以从Azure控制台获得并完全管理。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx2.sinaimg.cn/large/63918611gy1fck7cxu88ej20hs0ddaab.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;几个CNTK 2 / Microsoft Cognitive Toolkit教程以Jupyter笔记本提供。该图显示了Logistic回归训练的绘制的可视化。&lt;/p&gt;
 &lt;h3&gt;MXNet&lt;/h3&gt;
 &lt;p&gt;MXNet是一个可移植的、可伸缩的深度学习库，是亚马逊的DNN框架的选择，结合了神经网络几何的象征性声明与张量操作的命令性编程。 MXNet可跨多个主机扩展到多个GPU，接近线性扩展效率为85％，具有出色的开发速度、可编程性和可移植性。它支持Python，R，Scala，Julia和C ++，支持程度各不相同，它允许你混合符号和命令式编程风格。&lt;/p&gt;
 &lt;p&gt;在我第一次评论MXNet时，文档感觉还没有完成，除Python之外，我发现很少有其它语言的例子。自从我评论以后，这两种情况都有所改善。&lt;/p&gt;
 &lt;p&gt;MXNet平台是建立在一个动态依赖调度器上的，它可以自动并行化符号和命令式操作，但是你必须告诉MXNet要使用哪些GPU和CPU核心。在调度器顶部的图优化层使符号执行快速和内存高效。&lt;/p&gt;
 &lt;p&gt;MXNet目前支持用Python，R，Scala，Julia和C ++构建和训练模型；训练的MXNet模型也可以用于Matlab和JavaScript中的预测。无论您选择哪种语言来构建模型，MXNet都会调用优化的C ++后端引擎。&lt;/p&gt;
 &lt;p&gt;MXNet作者认为他们的API是Torch、Theano、Chainer和Caffe提供的一个超集，尽管对GPU集群有更多的可移植性和支持。在许多方面MXNet类似于TensorFlow，但增加了嵌入命令张量操作的能力。&lt;/p&gt;
 &lt;p&gt;除了实际强制的MNIST数字分类之外，MXNet教程的计算机视觉包含使用卷积神经网络（CNN）的图像分类和分割，使用更快的R-CNN的对象检测，神经艺术和使用深度CNN的大规模图像分类和ImageNet数据集。还有自然语言处理、语音识别、对抗网络以及监督和非监督机器学习的其他教程。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx1.sinaimg.cn/large/63918611gy1fck7d58op2j20hs0alwed.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;亚马逊测试了在P2.16xlarge实例上的MXNet中实现的Inception v3算法，发现其伸缩效率为85％。&lt;/p&gt;
 &lt;h3&gt;Scikit-learn&lt;/h3&gt;
 &lt;p&gt;Scikit-learn Python框架具有广泛的可靠的机器学习算法，但没有深度学习算法。如果你是一个Python粉丝，Scikit-learn可能是一般机器学习库中最佳选择。&lt;/p&gt;
 &lt;p&gt;Scikit-learn是一个强大的，成熟的机器学习Python库，包含各种各样成熟的算法和集成图。它相对容易安装、学习和使用，带有很好的例子和教程。&lt;/p&gt;
 &lt;p&gt;在另一方面，Scikit-learn不包括深度学习或强化学习，缺少图模型和序列预测，并且除Python之外，不能真正使用其它语言。它不支持PyPy，Python即时编译器或GPU。也就是说，除了它的少量进入神经网络，它不会真的有速度问题。它使用Cython（Python到C编译器）来处理需要快速的函数，例如内循环。&lt;/p&gt;
 &lt;p&gt;Scikit-learn对分类、回归、聚类、降维、模型选择和预处理算法具有很好的选择。它有所有这些的良好的文档和示例，但没有任何种类的指导工作流以完成这些任务。&lt;/p&gt;
 &lt;p&gt;Scikit-learn赢得了易于开发的最高分，主要是因为算法都像广告和文档一样工作，API是一致的，设计良好，数据结构之间几乎没有“阻抗不匹配”。函数库其中的功能已彻底充实，错误彻底消除，用来开发十分愉快。&lt;/p&gt;
 &lt;p&gt;本示例使用Scikit-learn的小手写数字数据集来演示使用Label Spreading模型的半监督学习。在1,797总样本中只有30个被标记。&lt;/p&gt;
 &lt;p&gt;另一方面，函数库没有涵盖深度学习或强化学习，这隐藏了当前困难但重要的问题，例如准确的图像分类和可靠的实时语言解析和翻译。显然，如果你对深度学习感兴趣，你应该另觅他处。&lt;/p&gt;
 &lt;p&gt;然而，存在许多问题，从建立链接不同观察值的预测函数到分类观察值到学习未标记数据集的结构，这使得它们适应于普通的老的机器学习，而不需要数十层的神经元，对于这些领域 Scikit-learn 是非常好的选择。&lt;/p&gt;
 &lt;p&gt;Spark MLlib&lt;/p&gt;
 &lt;p&gt;Spark MLlib是Spark的开源机器学习库，提供了通用的机器学习算法，如分类、回归、聚类和协同过滤（但不包括DNN）以及特征提取、转换、维数降低工具，以及构建、评估和调整机器学习管道选择和工具。Spark MLlib还包括用于保存和加载算法、模型和管线、用于数据处理以及进行线性代数和统计的实用程序。&lt;/p&gt;
 &lt;p&gt;Spark MLlib是用Scala编写的，并使用线性代数包Breeze。 Breeze依靠netlib-java来优化数值处理，虽然在开源分布中意味着优化使用CPU。 Databricks提供与GPU配合使用的定制Spark集群，这有可能为您带来另一个10倍的速度改进，用于训练具有大数据的复杂机器学习模型。&lt;/p&gt;
 &lt;p&gt;MLlib实现了大量的分类和回归的常用算法和模型，新手可能变得混乱不堪，无可适从，但专家最终可能会为分析数据找到一个很好的模型的数据。对于这么多的模型Spark2.x增加了超参数调优的重要特性，也称为模型选择。超参数t允许调优分析人员设置参数网格、估计器和评估器，并且它允许交叉验证方法（耗时但准确）或训练验证分割方法（更快但不太准确）找到最佳数据模型。&lt;/p&gt;
 &lt;p&gt;Spark MLlib拥有针对Scala和Java的完整API，主要是针对Python的完整API以及针对R的粗略部分API。您可以通过计算示例来获得良好的覆盖率：54个Java和60个Scala机器学习示例，52个Python机器学习示例，只有五个R示例。在我的经验中，Spark MLlib是最容易使用Jupyter笔记本，但你可以肯定地在控制台运行它，如果你驯服详细的Spark状态消息。&lt;/p&gt;
 &lt;p&gt;Spark MLlib提供了你想要的基本机器学习、特性选择、管道和持久性的任何东西。它在分类、回归、聚类和过滤方面做得相当不错。鉴于它是Spark的一部分，它具有访问数据库、流和其他数据源的强大访问权限。另一方面，SparkMLlib并不真正采用与TensorFlow，MXNet，Caffe和Microsoft Cognitive Toolkit相同的方式建模和训练深层神经网络。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx3.sinaimg.cn/large/63918611gy1fck7dkmwq3j20hs0i80t0.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Spark MLlibPython示例（Naive Bayes）作为Databricks笔记本。注意解释，代码和输出如何散布。&lt;/p&gt;
 &lt;h3&gt;TensorFlow&lt;/h3&gt;
 &lt;p&gt;TensorFlow，Google的可移植机器学习和神经网络库，执行和伸缩性很好，虽然它有点难学。TensorFlow拥有各种各样的模型和算法，它们对深度学习非常重视，并且在具有GPU（用于训练）或Google TPU（用于生产规模预测）的硬件上具有出色的性能。它还具有对Python的良好支持，良好的文档和良好的软件，用于显示和理解描述其计算的数据流图TensorBoard。&lt;/p&gt;
 &lt;p&gt;数据流图中的节点表示数学运算，而图的边表示在它们之间流动的多维数据数组（张量）。这种灵活的架构允许您将计算部署到桌面、服务器或移动设备中的一个或多个CPU或GPU，而无需重写代码。&lt;/p&gt;
 &lt;p&gt;使用TensorFlow的主要语言是Python，虽然对C ++有限的支持。TensorFlow提供的教程包括手写数字分类。图像识别、字嵌入、递归神经网络，用于机器翻译的序列到序列模型、自然语言处理和基于PDE（偏微分方程）的模拟的应用。&lt;/p&gt;
 &lt;p&gt;TensorFlow可以方便地处理各种神经网络，包括目前正在急剧变化的图像识别和语言处理领域的深度CNN和LSTM递归模型。用于定义图层的代码可能fan，但是您方便但不详细，可以使用三个可选的深度学习界面中的任何一个来修复它。虽然调试异步网络求解器可以是平凡的，但TensorBoard软件可以帮助您可视化图。&lt;/p&gt;
 &lt;p&gt;  &lt;img src="http://wx2.sinaimg.cn/large/63918611gy1fck7dnp7b5j20hs0fot8p.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;TensorBoard显示TensorFlow计算的图形。我们放大了几个部分来检查图形的细节。&lt;/p&gt;
 &lt;h3&gt;总结&lt;/h3&gt;
 &lt;p&gt;对于任何给定的预测任务，您应该使用哪种机器学习或深度学习包取决于机器学习的复杂性，用于训练的数据量和形式，您的计算资源以及您的编程语言偏好和技能。它也可能取决于您是否喜欢使用代码或配置文件定义模型。&lt;/p&gt;
 &lt;p&gt;但是，在开始自己的模型训练考察之前，您可能希望了解来自Google，HPE和MicrosoftAzure云的任何预先训练的应用机器学习服务是否能够处理您的数据，无论是语音、文本或图像。如果他们对你的数据不能很好地工作，你可能还想在尝试基本的机器学习训练（最后，如果没有其他工作）深度学习训练之前，看看你能用简单的统计方法获得多大的好处。这里的原则是保持分析尽可能简单，但不是更简单。&lt;/p&gt;
 &lt;p&gt;在我讨论的两个基本的机器学习包，我建议喜欢Scala和在Hadoop中有他们的数据的使用Spark MLlib 。我建议喜欢Python的人Scikit-learn。&lt;/p&gt;
 &lt;p&gt;我应该提到那些喜欢Scala（和Java）的人和在Hadoop中有他们的数据的人的另一个选择事Deeplearning4j。我没有评论他，但是，因为其名称意味着它是一个学习深度包。&lt;/p&gt;
 &lt;p&gt;选择Caffe，Microsoft Cognitive Toolkit，MXNet和TensorFlow的深度学习包是一个更困难的决定。我不再建议使用Caffe，因为它的发展停滞不前。然而，选择其他三个中的一个仍然是棘手，因为对于具有类似功能，它们都是最好的选择。&lt;/p&gt;
 &lt;p&gt;Cognitive Toolkit现在有Python和C ++ API以及网络配置语言BrainScript。如果您喜欢使用配置文件而不是编程网络拓扑，那么CognitiveToolkit可能是一个不错的选择。另一方面，它似乎不像TensorFlow一样成熟，它不能在MacOS上运行。&lt;/p&gt;
 &lt;p&gt;MXNet支持Python、R、Scala、Julia和C ++，但其支持最好的API是用Python开发的。 MXNet在多个主机上的多个GPU上展示出良好的伸缩性（85％的线性）。当我评论MXNet的文档和示例是吝啬的，但他们已经改进了。&lt;/p&gt;
 &lt;p&gt;TensorFlow可能是三个包中最成熟的，并且它是一个很好的选择，只要你喜欢编写Python，并可以克服学习曲线。 TensorFlow具有你可以使用基本的构建块，它给你细粒度的控制，但也需要你编写大量的代码来描述一个神经网络。有三个简化的API与TensorFlow一起工作来解决这个问题：tf.contrib.learn，TF-Slim和Keras。支持TensorFlow的最终考虑是TensorBoard，它对于可视化和理解您的数据流图非常有用。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/110090/"&gt;机器学习和深度学习的最佳框架大比拼&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;文章 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>工具与资源 机器学习 深度学习</category>
      <guid isPermaLink="true">https://itindex.net/detail/56664-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0-%E6%A1%86%E6%9E%B6</guid>
      <pubDate>Thu, 09 Feb 2017 14:35:04 CST</pubDate>
    </item>
    <item>
      <title>技术人员的发展之路</title>
      <link>https://itindex.net/detail/56456-%E6%8A%80%E6%9C%AF%E4%BA%BA%E5%91%98-%E5%8F%91%E5%B1%95</link>
      <description>&lt;p&gt;  &lt;img alt="" height="200" src="http://coolshell.cn/wp-content/uploads/2016/12/people-360x200.jpg" width="360"&gt;&lt;/img&gt;2012年的时候写过一篇叫《  &lt;a href="http://coolshell.cn/articles/8790.html" target="_blank"&gt;程序算法与人生选择&lt;/a&gt;》的文章，我用算法来类比如何做选择，说白了就是怎么去计算，但是并没有讲程序员可以发展的方向 有哪些。 所以，就算是有这些所谓的方法论，我们可能对自己的发展还是会很纠结和无所事从，尤其是人到了30岁，这种彷徨和迷惑越来越重。虽然我之前也写过一篇《  &lt;a href="http://coolshell.cn/articles/10688.html" target="_blank"&gt;编程年龄和编程技能&lt;/a&gt;》的文章，但是还是有很多做技术的人对于自己能否在年纪大时还能去做技术感到没有信心。我猜测，这其中，最大的问题的是，目前从事技术工作的种种负面的经历（比如经常性的加班，被当成棋子或劳动力等等），让人完全看不到希望和前途，尤其是随着年纪越来越大，对未来的越来越没有信心。&lt;/p&gt;
 &lt;p&gt;同时，也是因为，在GIAC的大会被被问到，程序员老了怎么办？而在年底这段时间，也和几个朋友在交流中不断地重复谈到个人发展的这个话题。我的人生过半，活到“不惑”的年纪，经常性的对什么事都会回头看看总结归纳，所以，在交谈过程中和交谈过后，自己也有一些思考想记录下来。因为我本人也是在这条路上的人，所以，谈不上给他人指导，因为我也是在瞎乱折腾同样每天在思考自己要去哪儿的“一尘世间迷途老生”。我的经历和眼界非常有限，因此，下面的这些关于个人发展的文字和思考必然是受我的眼界和经历所局限的。也欢迎大家补充和指正。&lt;/p&gt;
 &lt;p&gt;这些东西不一定对，也不一定就是全部，期许可以让你在年底的时候有所思考，在明年的时候有所计划。&lt;/p&gt;
 &lt;h4&gt;一个重要阶段和标志&lt;/h4&gt;
 &lt;p&gt;在讲个人发展之前，我需要先说一下人生中的一个非常重要的阶段——  &lt;strong&gt;20到30岁！&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;这是提升自己学习能力和解决难题的能力。&lt;/strong&gt;  &lt;strong&gt;这是一个非常非常关键的时间段！这个时间段几乎决定着你的未来。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;30岁以前，这个时间段，应该是人学习和积累的时间段，这个时间段，就是努力学习的时间段。在这个时间段，你一定要把时间花在解决问题的技能上，就是说，你一定要练就成的技能就是，你能解决大多数人不能解决的问题。使蛮力埋头加班苦干，当一个搬砖老黄牛的是肯定没有前途的。如果你不幸呆在了一个搬砖的地方，天天被业务压得喘不过气来，我建议你宁可让你的项目延期被老板骂，也要把时间挤出来努力学习基础知识，多掌握一些技术（很多技术在思路上是相通的），因为，比起你的个人未来，项目延期被老板骂绩效不好拿不到奖金，都不是什么事。&lt;/p&gt;
 &lt;p&gt;总结一下，你在30岁前，工作5-7年，你需要拥有：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;高效的学习能力&lt;/strong&gt;。这意味着——基础知识扎实、触类旁通、读英文文档不费劲、有寻找前沿知识的能力、能够看到问题和技术的本质、善于思辩、能独立思考。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;解决问题的能力&lt;/strong&gt;。这意味着——你要高效的学习能力、见过很多的场景、犯过或是处理很多错误、能够防火而不是救火。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如果你拥有这两个能力的现象是——   &lt;strong&gt;在团队或身边的人群中的显现出Leadership&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;Leadership并不是当领导和经理，而是一种特征，这种特征有如下两个简单的表象：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;帮人解问题&lt;/strong&gt;。团队或身边中大多数人都在问：“这问题怎么办？”，而总是你能站出来告诉大家这事该怎么办？&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;被人所依赖&lt;/strong&gt;。团队或身边中大多数人在做比较关键的决定时，都会来找你咨询你的意义和想法。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;一但你在在30岁之间出现了Leadership这样的特征，那么，你会进入一个正循环的阶段：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;因为你学习能力强，所以，你会有更多的机会解决难题。&lt;/li&gt;
  &lt;li&gt;你有更多的机会解决难题，你就会学更多的东西，于是你就会更强。&lt;/li&gt;
  &lt;li&gt;上面这个循环，只要循环上几年，就会让你人生的可能性大大的增加。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;【 注意 】&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;要达到这样的特质，需要找到自己的长处、以及适合自己的环境。就像鱼的特长是呆在水里，让鱼儿去追求陆上动物的刺激生活并不靠谱。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;如果你有这样的潜质的化，你在学校中就应该要出现，如果你在大学中还没有出现这样的潜质，那么，你在工作当中要加倍努力了（注：所谓的加倍努力，不是让你使蛮力加班，而是让你多学习成长，使蛮力拼命是弥补不了能力、思维、眼界上的缺陷的）。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;Leadership也有范围的，比如，身边的朋友，工作中的团队/部分，圈内，整个行业。Leadership的范围越大，你的个人发展的选择性就越高。反之越小。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;如果已在30岁左右，还是没有出现这样的特征。那么，可能未来你也很难有这样的Leadership了。而你的人个发展的可能性可能也就不多了（sigh…）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;读到这里，我必需要说一下，如果你已开始显现出你的Leadership，那么你才谈得上个人发展，这篇文章后续的内容也可能才会对你有意义&lt;/strong&gt;。&lt;/p&gt;
 &lt;h4&gt;个人发展的三个方向&lt;/h4&gt;
 &lt;p&gt;以我个人短浅的经历和视野，目前只看到的人的发展有如下三个大方向（他们之间可能会有重叠）：&lt;/p&gt;
 &lt;p&gt;1）  &lt;strong&gt;在职场中打拼&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;2）  &lt;strong&gt;去经历有意义有价值的事&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;3）  &lt;strong&gt;追求一种自由的生活&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;这三个方向，我个人或多或少都体验过，我也见过身边的很多人走这三个方向走的比较成功。也许还有别的方向，没办法，现在，我的视野就这么大，所以，我在这里，我主要就是谈谈这三个方向。Again，  &lt;strong&gt;人有资格去走这三个方向的前提是——已有了上面我说的Leadership那种物质！&lt;/strong&gt;&lt;/p&gt;
 &lt;h4&gt;一、在职场中发展&lt;/h4&gt;
 &lt;p&gt;在职场中发展应该是绝大多数人的选择。通过加入公司来达到人生的发展。&lt;/p&gt;
 &lt;p&gt;我们经常可以看到很多所谓的“职业规划”，但是大多数职业规划只不过人力资源搞出来的东西，和实际其实是有很大出入的。我的人生经历中，有18年左右是在公司中度过的，在过银行，小公司，大公司，民营公司，外国公司，传统IT公司，互联网公司，不同的公司完全有不同的玩法和文化，我的经历还算丰富，但也不算特别成功，这里只分享一些我在职场中的心得（不一定对，仅供参考）。&lt;/p&gt;
 &lt;h5&gt;1、去顶尖公司&lt;/h5&gt;
 &lt;p&gt;  &lt;strong&gt;去顶尖公司的一个目的就是让你的Leadership的范围的可能性扩大&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;因为公司和公司的差距也不小，所以，就算你在低端公司里是骨干份子，但在高端公司里可能只是一个普通员工（就像中国足球队的主力到了英超可能都无法入选）。所以，在职场中，如果你要让你的个人价值最大化的话，你一定要去顶尖的公司。因为顶尖公司里有非常不错的工作方法和场景，这并不是能看书或是交流得来的，这是必需要去亲身体验的。所以说，在顶尖公司掌握的技能，开阔的眼界，通常来说都会比低端公司的要多得多。&lt;/p&gt;
 &lt;p&gt;另外，每个公司的工作级别都是有相互对标的，比如：阿里的P几对应于百度的T几。国内的一线公司职位还相当，但是如果和国外一线公司的比，那就有差距了，而且差距还很大。比如，Google或Facebook的某个高级工程师，可能就对应于阿里的P8/P9甚至更高。&lt;/p&gt;
 &lt;p&gt;是的，对于职场来说，如果你在顶尖公司是骨干，那么，你去低端公司，则有很大机会会成为他们高管和核心。就好像你在Facebook里干三五年成为他们的技术骨干，那么你到BAT去成成为高管概率是非常大的。反过来，如果你毕业主去了BAT成为了一个螺丝钉，在天天加班中度过你的青春，你干个十年能成为BAT的高管的概率可能会非常的低。&lt;/p&gt;
 &lt;h5&gt;2、去真正的创业公司&lt;/h5&gt;
 &lt;p&gt;去顶尖公司和去创业公司在某些时候并不冲突。不过，这里我想讲的是，一个技术能力强的人在大公司可能会被埋没掉。因为大公司业务成功后，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;成功的公司在招聘各种高级技术人才都不会成为问题，于是少你一个不少，多你一个不多。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;成功的公司其整个技术体系已经完成，Leagcy的问题也比较多，所以，可以供你发挥的余地不大。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;成功的公司更多的可能会想要稳定，稳定产生保守，保守产生不思进去。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;所以，对于中高级人才来说，在大公司里的能产生的个人价值，可能远远不如那些求闲若渴、没有包袱、可以尽情施展、相对更为灵活和自由的创业型公司。&lt;/p&gt;
 &lt;p&gt;不过，去创业公司需要小心仔细的挑选和评估，创业公司的不确定因素很多，也和创始人的因素太大了，所以，你需要小心了解创始人和他们的业务情况，想法和理念差不多才能更好的共事。&lt;/p&gt;
 &lt;h5&gt;3、职业生涯的发展阶段&lt;/h5&gt;
 &lt;p&gt;首先，有一个不争事实——  &lt;strong&gt;整个社会是会把最重的工作交给30岁左右的这群人的。也就是说，30岁左右这群人是这个社会的做事中坚的力量。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果你有了Leadership，你就一定能在这个有Leadership的范围内赶得上这个机遇——公司和领导对你寄于信任和厚望，并把重要的团队和工作交给你。&lt;/p&gt;
 &lt;p&gt;于是，你的30岁到40岁就成了一个职业生涯的发展期，也就是你的事业上升期。如果你到40岁都没有赶上，那么你的职业生涯也就这样了，老有所成的人是少数。&lt;/p&gt;
 &lt;p&gt;在你事业的上升期，你需要更多的软技能，比如：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;带领产品和业务的发展的能力&lt;/li&gt;
  &lt;li&gt;推行自己喜欢的文化的能力&lt;/li&gt;
  &lt;li&gt;项目管理的能力——在任务重、时间紧中求全&lt;/li&gt;
  &lt;li&gt;沟通和说服别人的能力&lt;/li&gt;
  &lt;li&gt;解决冲突的能力&lt;/li&gt;
  &lt;li&gt;管理和发展团队的能力&lt;/li&gt;
  &lt;li&gt;解决突发事件的应急能力&lt;/li&gt;
  &lt;li&gt;…… ……&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;另外，你还要明白在职场里的几个冷酷的事实：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;你要开始要关心并处理复杂的人事&lt;/strong&gt;。尤其在大公司，大量的人都是屁股决定脑袋，利益关系复杂，目标不一致，每个人心里都有不一样的想法。这个时候再也不是talk is cheap, show me the code！而是，code is cheap，talk is the matter。你需要花大量的时间去思考和观察形形色色的人。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;你要开始学会使用用各种政治手段&lt;/strong&gt;。办公室政治不可避免，越大的公司越重，自从你开始成为一线的leader的那一天，你开始成为“里外不是人”，需要在下属和领导，员工和公司之前周旋。随时你的级别越来越高，你需要使用更多的政治手段，你会学会审时度世的站队，学会迎合员工和领导，学会用官员的语言说话，学会此一时彼一时，学会妥协和交换，学会忍气吞声，学会在在适当的时机表现自己，学会在适当的时机在背后捅人刀子，学会波澜不惊，学会把自己隐藏起来……&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这些都是职业里必需的技能！如果你不想或是也没有能力玩这些东西，那么你需要去那些可以让技术人员安安心心做技术的公司。这类的公司，我见过微软，Google、Amazon里都有。&lt;/p&gt;
 &lt;p&gt;所以，  &lt;strong&gt;技术人员在职场中的归宿有两条路 —— 到真正的技术公司成为一个专心做技术的人，或是在成为一个职业的经理人&lt;/strong&gt;。&lt;/p&gt;
 &lt;h4&gt;二、追求人生的经历&lt;/h4&gt;
 &lt;p&gt;先说三个故事，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;第一个，是在阿里的时候，有一天在内网里看到一个贴子，一个做技术的小伙子说自己准备离职要去法国学烘培厨艺，引得大家热评。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;第二个，是在亚马逊的美国老板，他每年都要去报个培训班学一个技能，比如：厨艺、开双翼飞机、夜总会里的DJ……、甚至去华盛顿去学当一个政客。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;第三个，是在汤森路透工作时，一个英国的同事，有一天他说他离职了，和自己的老婆准备用余生去周游世界，我问他是不是有足够多的钱了？他和我说，钱不够，他俩口子的计划是，边旅游边打工，打工打够到下一站的钱就走。他还说，那种用假期去另一个城市的旅游太没意思了，如果你不在那个地方生活上一段时间 ，你怎么能算是旅游呢？好吧，无法反驳。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;我是觉得他们把自己的人生过得很有意思。虽然跨界跨得有点猛，但是 Why Not？&lt;/p&gt;
 &lt;p&gt;在这里，我想说，去追求一种和众人不一样的人生经历也是一件挺好的事，我个人感觉，比起在职场里有趣多多了。如果你厌倦了职场，其实为什么不去追求一下不同的人生经历呢。就算你不想去追求跨度比较大的人生经历，那么，在技术圈里，也有很多有价值有意思的经历也可以去的。  &lt;strong&gt;追求刺激有意义的与众不同的经历的人，其实也能算是一种人生的成功，不是吗？&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;如果只说技术方面，我个人看到的去追求经历的人，有两种追求的人其实也很成功的：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;到技术创新的发源地去经历创新&lt;/strong&gt;。计算机互联网各种技术的创新引擎，基本上来说，就是在美国了。我们赶上了这个时代，也选对了这个时代最火热的行业，那么，有什么理由不去这个时代的技术发动机那里去经历呢？在美国硅谷，无论是大公司，还是创业公司，都在迸发着各式各样的创新，为什么不努力去经历一下呢？&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;去经历下一个热点技术的发展&lt;/strong&gt;。从IT，到互联网、再到移动互联网、云计算、大数据，再到未来的AI，VR，IoT……，技术创新的浪潮一波接一波的过来，你是想在那继续搬砖搬下去，是想迎浪而上，去经历浪潮，还是想成为一个随波逐流的人？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;打工也好，创业也好，在国内也好，在国外也好，这些都是形式，不是内容。内容则是你有没有和有想法的人去经历有意义有价值事？人生苦短，白驹过缝，我们技术人员最大的幸运就是生在这样一个刺激的时代，那么，你还有什么理由不去追逐这些前沿刺激的经历呢？&lt;/p&gt;
 &lt;h4&gt;三、追求自由的生活&lt;/h4&gt;
 &lt;p&gt;我相信“自由”这个事，是所有人的心中都会想去追求的。“生命诚可贵，爱情价更高，…… ”（哈哈）&lt;/p&gt;
 &lt;p&gt;但一说起自由，绝大多数人都想到的是“财富自由”，其实，并不完全是这样的，在自由的通路上，我个人的经历告诉我，其实，你会有很多的不同类型的自由。下面，是我对几个层次的“自由”的理解。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第一层自由——工作自由&lt;/strong&gt;。人的第一层自由的境界是——“工作自由”，我到不是说你在工作单位上可以很自由，虽然有特例，但并不普遍。我想说的“工作自由”是——你不会失业危机感了。也就是说，你成了各个公司的抢手货，你不但不愁找不到工作，而且你是完全不愁找不到好工作。试想一下，如果是工作来找你，一方面，你就有真正意义上的工作选择权了，另一方面，你都不愁工作了，你完全就可以随时离职去干你想干的事了。此时，你就达到了“工作自由”。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第二层自由——技能自由&lt;/strong&gt;。工作自由已是不错，不过前提是你还是需要依赖于别人提供的工作机会。而技能自由则是你可以用自己的技能养活自己，而不需要去公司里工作。也就是所谓的自由职业者了，社会上，这样的人也不少，比如，一些健身体育教练、设计师、翻译者、作者……这些都可以算是自由职业者，程序员这个职业中只要不是搬砖的，有想法的，就有可以成为自由积业者的潜质，想一想，你拥有了一种创造的能力，也就是创造力，只要你Make Something People Want（YC创业公司的slogan），你是完全可以通过自己的技能来养活自己的。如果你通过某些自动化的东西，或是你在App上做了一个软件个体户，让自己的收入不断，甚至你做了一个开源软件，社区每个月都给你捐款捐到比你打工挣的还多，那么你就真正的有了技能自由了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第三层自由——物质自由。&lt;/strong&gt;我把财务自由换了一种说法。我个人觉得，除了有个好爸爸之外这种特例的情况，如果你想有物质自由的话，本质上来说，你一定要学会投资，投资不一定是你的钱，时间也是一种财富，年轻更是，你怎么投资你的时间还有你的青春？你要把你的投资投到什么样的事，什么样的人？对于投资这个事，风险也比较大。但是，人生不敢冒险可能才是最大的冒险。这个世界有很多技术不是你能看书学来的，而要只能在实战中学会的，比如：游泳。投资可能也是一种。只有真正懂投资的人，或是运气非常好的人，才可能实现物质自由。&lt;/p&gt;
 &lt;p&gt;追求自由的生活，其实也是个人发展道路上的一个不错的选择。通常来说，自由的人，能力都不差，钱也不会少。因为，他们懂得投资。&lt;/p&gt;
 &lt;p&gt;也就是说，拥有追求自由能力的的人，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;不但有领导力和创造力（也可指导大多数人并走在大多数人前面）&lt;/li&gt;
  &lt;li&gt;同时他还懂得怎么投资（知道时间和精力和金钱应该投在什么地方）&lt;/li&gt;
&lt;/ul&gt;
 &lt;h4&gt;总结&lt;/h4&gt;
 &lt;p&gt;无论是在职场中打拼，还是追求精彩的经历，还是去实现自由，我觉得都是不错的个人发展的方向。&lt;/p&gt;
 &lt;p&gt;他们都有重叠，比如：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;你可以在职场中去追求那些刺激的经历的公司。&lt;/li&gt;
  &lt;li&gt;同样也可以通过加入有潜力高速发展的公司来达到自由。&lt;/li&gt;
  &lt;li&gt;你也可以通过追寻不一样的经历来达到人生的自由。&lt;/li&gt;
  &lt;li&gt;……&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;总之，这里的逻辑是——&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;能够去规划自己的个人发展的人，通常都是有很多机会和可能性的人&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;有很多机会和可能性的人，通常都是有Leadership，喜欢冒险的人。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;有Leadership喜欢冒险的人，通常都是学习能力强，思维活跃，喜欢折腾，懂得“投资”的人。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;学习能力强思维活跃的人，通常来说，都是喜欢看书，喜欢实践和新鲜事物，不怕艰难和挑战，用智力而不是使蛮力的人。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;懂得“投资”的人，通常来说，他们更多的关注的是未来和长远的成长，而不是当下的KPI、奖金和晋升。&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;img alt="&amp;#30005;&amp;#24433;&amp;#12298;&amp;#39134;&amp;#23627;&amp;#29615;&amp;#28216;&amp;#35760;&amp;#12299;" height="322" src="http://coolshell.cn/wp-content/uploads/2016/12/up.jpg" width="700"&gt;&lt;/img&gt; &lt;center&gt;插图来自电影《飞屋环游记》&lt;/center&gt;
 &lt;p&gt;最后祝大家新年快乐，来年大展鸿图。&lt;/p&gt;
 &lt;p&gt;（全文完）&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p align="center"&gt;  &lt;img src="http://coolshell.cn//wp-content/uploads/2009/04/qrcode_for_gh_dd9d8c843f20_860-300x300.jpg"&gt;&lt;/img&gt;  &lt;br /&gt;关注CoolShell微信公众账号可以在手机端搜索文章&lt;/p&gt;
 &lt;div&gt;
  &lt;p align="center"&gt;   &lt;strong&gt;（转载本站文章请注明作者和出处     &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;——===   &lt;strong&gt;访问    &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;
 &lt;p align="center"&gt;  &lt;a href="http://gold.xitu.io/welcome/?utm_source=coolshell&amp;utm_medium=banner&amp;utm_content=gaoshou&amp;utm_campaign=q3_website" target="_blank"&gt;   &lt;img src="http://coolshell.cn/wp-content/uploads/2016/08/xitu.io_.jpg"&gt;&lt;/img&gt;&lt;/a&gt;  &lt;br /&gt;本广告收入已由广告主捐给Wikipedia&lt;/p&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;small&gt;2011年12月20日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/6142.html"&gt;三个事和三个问题&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2010年10月26日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/3231.html"&gt;你和你的工作&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2012年12月28日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/8790.html"&gt;程序算法与人生选择&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2011年07月18日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/4990.html"&gt;程序员技术练级攻略&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2011年04月20日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/4506.html"&gt;再谈“我是怎么招聘程序员的”（上）&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年11月13日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/10688.html"&gt;编程能力与编程年龄&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年03月11日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/9156.html"&gt;《Rework》摘录及感想&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2012年04月17日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/7048.html"&gt;挑战无处不在&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>杂项资源 职场生涯 Job Programmer 程序员</category>
      <guid isPermaLink="true">https://itindex.net/detail/56456-%E6%8A%80%E6%9C%AF%E4%BA%BA%E5%91%98-%E5%8F%91%E5%B1%95</guid>
      <pubDate>Wed, 28 Dec 2016 12:29:25 CST</pubDate>
    </item>
    <item>
      <title>AWS 的 S3 故障回顾和思考</title>
      <link>https://itindex.net/detail/56728-aws-s3-%E9%A1%BE%E5%92%8C</link>
      <description>&lt;p&gt;  &lt;img height="197" src="http://coolshell.cn//wp-content/uploads/2017/03/Amazon-Web-Services-Down.png" width="360"&gt;&lt;/img&gt;继  &lt;a href="http://coolshell.cn/articles/17680.html" target="_blank"&gt;Gitlab的误删除数据事件&lt;/a&gt;没几天，“不沉航母” AWS S3 （Simple Storage Service）几天前也“沉”了4个小时，墙外的半个互联网也跟着挂了。如约，按 AWS 惯例，AWS今天给出了一个简单的故障报告《  &lt;a href="https://aws.amazon.com/cn/message/41926/" target="_blank"&gt;Summary of the Amazon S3 Service Disruption in the Northern Virginia (US-EAST-1) Region&lt;/a&gt;》。这个故障和简单来说和Gitlab一样，也是人员误操作。先简单的说一下这份报中说了什么。&lt;/p&gt;
 &lt;h4&gt;故障原因&lt;/h4&gt;
 &lt;p&gt;简单来说，这天，有一个 AWS 工程师在调查 Northern Virginia (US-EAST-1) Region 上 S3 的一个和账务系统相关的问题，这个问题是S3的账务系统变慢了（我估计这个故障在Amazon里可能是Sev2级，Sev2级的故障在Amazon算是比较大的故障，需要很快解决），Oncall的开发工程师（注：Amazon的运维都是由开发工程师来干的，所以Amazon内部嬉称SDE-Software Developer Engineer 为 Someone Do Everything）想移除一个账务系统里的一个子系统下的一些少量的服务器（估计这些服务器上有问题，所以想移掉后重新部署），结果呢，有一条命令搞错了，导致了移除了大量的S3的控制系统。包括两个很重要的子系统：&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;1）  &lt;strong&gt;一个是S3的对象索引服务（Index）&lt;/strong&gt;，其中存储了S3对象的metadata和位置信息。这个服务也提供了所有的 GET，LIST，PUT 和DELETE请求。&lt;/p&gt;
 &lt;p&gt;2）  &lt;strong&gt;一个是S3的位置服务系统（Placement）&lt;/strong&gt;，这个服务提供对象的存储位置和索引服务的系统。这个系统主要是用于处理PUT新对象请求。&lt;/p&gt;
 &lt;p&gt;这就是为什么S3不可访问的原因。&lt;/p&gt;
 &lt;p&gt;在后面，AWS也说明了一下故障恢复的过程，其中重点提到了这点——&lt;/p&gt;
 &lt;p&gt;虽然整个S3的是做过充分的故障设计的（注：AWS的七大Design Principle 之一 Design for Failure）—— 就算是最核心的组件或服务出问题了，系统也能恢复。但是，可能是在过去的日子里 S3 太稳定了，所以，AWS 在很长很长一段时间内都没有重启过 S3 的核心服务，而过去这几年，S3 的数据对象存储级数级的成长（S3存了什么样数量级的对象，因为在Amazon工作过，所以多大概知道是个什么数量级，这里不能说，不过，老实说，很惊人的），所以，这两个核心服务在启动时要重建并校验对象索引元数据的完整性，这个过程没想到花了这么长的时候。而Placement服务系统依赖于Index 服务，所以花了更长的时间。&lt;/p&gt;
 &lt;p&gt;了解过系统底层的技术人员应该都知道这两个服务有多重要，简而言之，这两个系统就像是Unix/Linux文件系统中的inode，或是像HDFS里的node name，如果这些元数据丢失，那么，用户的所有数据基本上来说就等于全丢了。&lt;/p&gt;
 &lt;p&gt;而要恢复索引系统，就像你的操作系统从异常关机后启动，文件系统要做系统自检那样，硬盘越大，文件越多，这个过程就越慢。&lt;/p&gt;
 &lt;p&gt;另外，这次，AWS没有使用像以前那样 Outage 的故障名称，用的是 “Increased Error Rate” 这样的东西。我估计是没有把所有这两个服务删除完，估计有些用户是可以用的，有的用户是则不行了。&lt;/p&gt;
 &lt;h4&gt;
后续改进&lt;/h4&gt;
 &lt;p&gt;在这篇故障简报中，AWS 也提到了下面的这些改进措施——&lt;/p&gt;
 &lt;p&gt;1）  &lt;strong&gt;改进运维操作工具&lt;/strong&gt;。对于此次故障的运维工具，有下面改进：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;让删除服务这个操作变慢一些&lt;/strong&gt;（陈皓注：这样错了也可以有时间反悔，相对于一个大规模的分布式系统，这招还是很不错的，至少在系统报警时有也可以挽救）&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;加上一个最小资源数限制的SafeGuard&lt;/strong&gt;（陈皓注：就是说，任何服务在运行时都应该有一个最小资源数，分布式集群控制系统会强行维护服务正常运行的最小的一个资源数）&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;举一反三，Review所有和其它的运维工具，保证他们也相关的检查。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;2）  &lt;strong&gt;改进恢复过程。&lt;/strong&gt;对于恢复时间过长的问题，有如下改进：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;分解现有厚重的重要服务成更小的单元&lt;/strong&gt;（在 AWS，Service是大服务，小服务被称之为 Cell），AWS 会把这几个重要的服务重构成 Cell服务。（陈皓注：这应该就是所谓的“微服务”了吧）。这样，服务粒度变小，重启也会快一些，而且还可以减少故障面（原文：blast radius – 爆炸半径）&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;今年内完成对 Index 索引服务的分区计划&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h4&gt;相关思考&lt;/h4&gt;
 &lt;p&gt;下面是我对这一故障的相关思考——&lt;/p&gt;
 &lt;p&gt;0）  &lt;strong&gt;太喜欢像Gitlab和AWS这样的故障公开了&lt;/strong&gt;，那怕是一个自己人为的低级错误。不掩盖，不文过饰非，透明且诚恳。Cool!&lt;/p&gt;
 &lt;p&gt;1）这次事件，还好没有丢失这么重要的数据，不然的话，将是灾难性的。&lt;/p&gt;
 &lt;p&gt;2）另外，面对在 US-EASE-1 这个老牌 Region 上的海量的对象，而且能在几个小时内恢复，很不容易了。&lt;/p&gt;
 &lt;p&gt;3）这个事件，再次映证了我在《  &lt;a href="http://coolshell.cn/articles/17459.html"&gt;关于高可用的系统&lt;/a&gt;》中提到的观点：  &lt;strong&gt;一个系统的高可用的因素很多，不仅仅只是系统架构，更重要的是——高可用运维&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;4）  &lt;strong&gt;对于高可用的运维，平时的故障演习是很重要的。&lt;/strong&gt;AWS 平时应该没有相应的故障演习，所以导致要么长其不出故障，一出就出个大的让你措手不及。这点，Facebook就好一些，他们每个季度扔个骰子，随机关掉一个IDC一天。Netflex 也有相关的 Chaos Monkey，我以前在的路透每年也会做一次大规模的故障演练——灾难演习。&lt;/p&gt;
 &lt;p&gt;5）AWS对于后续的改进可以看出他的技术范儿。可以看到其改进方案是用技术让自己的系统更为的高可用。然后，对比国内的公司对于这样的故障，基本上会是下面这样的画风：&lt;/p&gt;
 &lt;p&gt;a）加上更多更为严格的变更和审批流程，&lt;/p&gt;
 &lt;p&gt;b）使用限制更多的权限系统和审批系统&lt;/p&gt;
 &lt;p&gt;c）使用更多的人来干活（一个人干事，另一个人在旁边看）&lt;/p&gt;
 &lt;p&gt;d）使用更为厚重的测试和发布过程&lt;/p&gt;
 &lt;p&gt;e）惩罚故障人，用价值观教育工程师。&lt;/p&gt;
 &lt;p&gt;这还是我老生长谈的那句话——  &lt;strong&gt;如果你是一个技术公司，你就会更多的相信技术而不是管理。相信技术会用技术来解决问题，相信管理，那就只会有制度、流程和价值观来解决问题&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;你是要建一个 “高可用的技术系统” ，还是一个 “高用的管理系统”？ ;-)&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;（全文完）&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p align="center"&gt;  &lt;a href="http://cn.udacity.com/fend/?utm_source=coolshell&amp;utm_medium=referral&amp;utm_campaign=newFEND" target="_blank"&gt;   &lt;img src="https://s3.cn-north-1.amazonaws.com.cn/static-documents/marketing/uda_banner_170209.png"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p align="center"&gt;  &lt;img src="http://coolshell.cn//wp-content/uploads/2009/04/qrcode_for_gh_dd9d8c843f20_860-300x300.jpg"&gt;&lt;/img&gt;  &lt;br /&gt;关注CoolShell微信公众账号可以在手机端搜索文章&lt;/p&gt;
 &lt;div&gt;
  &lt;p align="center"&gt;   &lt;strong&gt;（转载本站文章请注明作者和出处     &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;——===   &lt;strong&gt;访问    &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;small&gt;2011年04月27日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/4601.html"&gt;关于Amazon云宕机的网贴收集&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2017年02月02日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/17680.html"&gt;从Gitlab误删除数据库想到的&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2016年08月21日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/17459.html"&gt;关于高可用的系统&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2009年04月12日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/455.html"&gt;9个强大免费的PHP库&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2010年10月18日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/3192.html"&gt;一些非常不错的资料&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2012年03月09日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/6775.html"&gt;Bret Victor – Inventing on Principle&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2011年09月08日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/5444.html"&gt;千万不要把 bool 设计成函数参数&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2012年03月13日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/6790.html"&gt;多版本并发控制(MVCC)在分布式系统中的应用&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>业界新闻 杂项资源 程序设计 Amazon S3 AWS</category>
      <guid isPermaLink="true">https://itindex.net/detail/56728-aws-s3-%E9%A1%BE%E5%92%8C</guid>
      <pubDate>Fri, 03 Mar 2017 14:20:03 CST</pubDate>
    </item>
    <item>
      <title>从 HTML 提取文本的 7 个工具</title>
      <link>https://itindex.net/detail/56389-html-%E6%96%87%E6%9C%AC-%E5%B7%A5%E5%85%B7</link>
      <description>&lt;p&gt;本文包括了为初学者和小项目而设计的简单工具，还有需要一定的编码知识，旨在用于更大，更困难的任务的高级工具。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="400" src="http://jbcdn2.b0.upaiyun.com/2016/12/b649cd5914c27915398d98086d2ba741.jpg" width="640"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;收集电子邮件地址、竞争分析、网站检查、定价分析和客户数据收集 — 这些可能只是你需要从 HTML 文档中提取文本和其他数据的几个原因。不幸的是，手动做这种事是很痛苦的而且效率很低，在某些情况下甚至不可能实现。幸运的是，现在有各种各样的工具可以实现这些需求。下面的 7 个工具包括了由为初学者和小项目而设计的非常简单的工具到需要一定的编码知识，旨在用于更大，更困难的任务的高级工具。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;   &lt;a href="http://www.iconico.com/htmlextractor/" rel="nofollow" target="_blank"&gt;Iconico HTML 文本提取器 （Iconico HTML Text Extractor）&lt;/a&gt;&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;试想一下，你正在浏览竞争对手的网站，然后想提取出文本内容，又或是想看看页面背后的 HTML 代码。但十分不幸，你发现右键被禁用了，复制和粘贴也是如此。现在许多 Web 开发人员正在采取措施禁用查看源代码，否则锁定其页面。幸运的是，Iconico 有一个 HTML 文本提取器，你可以用来绕过所有的这些限制，而且这个产品非常易于使用。你可以高亮和复制文本，提取功能的运行使用轻易得像上网一样。&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="https://www.uipath.com/" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;UiPath&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;UIPath 有一套自动化过程工具，里面包含了一个 Web 内容抓取实用程序。要使用该工具，并获得所需的几乎任何数据十分简单 — 只需打开页面，转到工具中的设计菜单，然后单击“网络抓取（web scraping）”。 除了网络抓取工具，屏幕抓取工具允许您从网页中拉取任何内容。 使用这两种工具意味着您可以从任何网页抓取文本，表格数据和其他相关信息。&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="http://www.mozenda.com/" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;Mozenda&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;Mozenda 允许用户提取 Web数据，并将该信息导出到各种智能商务工具。它不仅可以提取文本内容，还可以从 PDF 文件中提取出图像，文件和内容。然后，你可以将这些数据导出到 XML 文件，CSV 文件，JSON 或者可以选择使用 API。 提取和导出数据后，就可以使用 BI 工具进行分析和报告。&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="http://www.webtoolhub.com/tn561393-html-to-text-converter.aspx" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;HTMLtoText&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;这款在线工具可以从 HTML 源代码中提取文本，甚至只是一个 URL 也可以。你所需要做的只是复制和粘贴，提供一个 URL 或者上传文件。 单击选项按钮，让工具知道你需要的输出格式和一些其他的细节，然后点击转换，你将获得你需要的文本信息。&lt;/p&gt;
 &lt;p&gt;（还有一个类似的工具 —   &lt;a href="http://www.htmlnest.com/htmltotext.aspx" rel="nofollow" target="_blank"&gt;www.htmlnest.com/htmltotext.aspx&lt;/a&gt;）&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="http://www.octoparse.com/" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;Octoparse&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;  &lt;a href="http://www.octoparse.com/" rel="nofollow" target="_blank"&gt;Octoparse&lt;/a&gt; 的特征是它提供的是“点击”用户界面。即便是没有过编码知识的用户也可以从网站提取数据并将其发送到各种文件格式。这个工具包括从页面中提取电子邮件地址，从招聘板上提取职位列表等功能。该工具适用于动态和静态网页以及云采集（配置好采集任务关机也能采集数据）。它提供了一个免费版本，对于大多数使用场景应该足够应付，而付费版本则有更多丰富的功能。&lt;/p&gt;
 &lt;p&gt;如果你是为了进行竞争分析而抓取网站，可能会因为此活动而被禁止。因为 Octoparse 包含一个循环识别你的 IP 地址的功能，并能通过你的 IP 禁止你使用。&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="http://hao.jobbole.com/python-scrapy/" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;Scrapy&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;这个免费的开源工具使用网络爬虫从网站提取信息，使用这个工具需要一些高级技能和编码知识。但如果你愿意以你的方式去学习使用它，Scrapy 是抓取大型 Web 项目的理想选择。该工具已被 CareerBuilder 和其他主要品牌使用。因为它是一个开源工具，所以这为用户提供了很多良好的社区支持。&lt;/p&gt;
 &lt;h2&gt;  &lt;a href="https://www.kimonolabs.com/" rel="nofollow" target="_blank"&gt;   &lt;strong&gt;Kimono&lt;/strong&gt;&lt;/a&gt;&lt;/h2&gt;
 &lt;p&gt;Kimono 是一个免费的工具，从网页获取非结构化数据，并将该信息提取为具有 XML 文件的结构化格式。该工具可以交互使用，也可以创建计划作业以在特定时间提取你需要的数据。你可以从搜索引擎结果、网页、甚至幻灯片演示中提取数据。最重要的是，当你设置好每个工作流时，Kimono 会创建一个 API。这意味着当你返回到网站以提取更多数据时，不必再重新造轮子。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;结论&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;如果你遇到需要从一个或多个网页中提取非结构化数据的任务，那么此列表中至少有一个工具应该包含你需要的解决方案。而且无论你的期望价格是什么，你都应该能找到你所需要的工具。了解清楚然后决定哪个是最适合你的。要知道，大数据在企业蓬勃发展中的重要性，并且收集所需信息的能力对于你来说也是至关重要。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/109050/"&gt;从 HTML 提取文本的 7 个工具&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;文章 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>工具与资源 工具 爬虫</category>
      <guid isPermaLink="true">https://itindex.net/detail/56389-html-%E6%96%87%E6%9C%AC-%E5%B7%A5%E5%85%B7</guid>
      <pubDate>Sat, 17 Dec 2016 23:14:17 CST</pubDate>
    </item>
    <item>
      <title>让我们来谈谈分工</title>
      <link>https://itindex.net/detail/54861-%E5%88%86%E5%B7%A5</link>
      <description>&lt;p&gt;  &lt;img alt="Division of Labour" height="210" src="http://coolshell.cn//wp-content/uploads/2015/12/Division_of_Labour.jpeg" width="311"&gt;&lt;/img&gt;昨天，我看到  &lt;a href="http://spectrum.ieee.org/view-from-the-valley/computing/software/yahoos-engineers-move-to-coding-without-a-net" target="_blank"&gt;一个新闻&lt;/a&gt;——雅虎取消了QA团队，工程师必须自己负责代码质量，并使用持续集成代替QA。 同时，也听到网友说，“听微软做数据库运维的工程师介绍，他们也是把运维工程师和测试工程师取消了，由开发全部完成。每个人都是全栈工程师”。于是，我顺势引用了几年前写过一篇文章《  &lt;a href="http://coolshell.cn/articles/6994.html" target="_blank"&gt;我们需要专职的QA吗？&lt;/a&gt;》，并且又鼓吹了一下全栈。当然，一如既往的得到了一些的争议和嘲弄;-)。&lt;/p&gt;
 &lt;p&gt;有人认为取消QA基本上是公司没钱的象征，这个观点根本不值一驳，属于井底之蛙。有人认为，社会分工是大前提，并批评我说怎么不说把所有的事全干的，把我推向了另外一个极端。另外，你千万不要以为有了分工，QA的工作就保得住了。&lt;/p&gt;
 &lt;p&gt;就像《乔布斯传》中乔布斯质疑财务制度的时候说的，有时候，很多人都不问为什么，觉得存在的东西都是理所应当的东西。让我们失去了独立思考的机会。分工也是一样。&lt;/p&gt;
 &lt;p&gt;所以，为了说完整分工这个逻辑。请大家耐住性子，让我就先来谈谈“分工的优缺点”吧。&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h4&gt;分工的优点和缺点&lt;/h4&gt;
 &lt;p&gt;首先，分工（Division of Labour）应该是由   &lt;a href="https://en.wikipedia.org/wiki/Adam_Smith" target="_blank"&gt;Adam Smith&lt;/a&gt; 在1776年的《  &lt;a href="https://en.wikipedia.org/wiki/The_Wealth_of_Nations" target="_blank"&gt;国富论&lt;/a&gt;》中提出来的，Adam在那时候就观察到分工对于手工业生产效率的提高。他将效率提高的原因归结于三点：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;熟练程度的增加。当一个工人单纯地重复同一道工序时，其对这道工序的熟练程度会大幅增加。   &lt;strong&gt;表现为产量和质量的提高&lt;/strong&gt;。&lt;/li&gt;
  &lt;li&gt;如果没有分工，由一道工序转为另一道工序时会损失时间，而分工避免了这中间的损失。&lt;/li&gt;
  &lt;li&gt;由于对于工序的了解和熟练度的增加，   &lt;strong&gt;更有效率的机械和工具被发明出来，从而提高了产量&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;分工的确是提高生产力。我想到了福特公司一开始做出来的汽车几乎买不出去，原因有两个，一个是成本太高，另外是生产太复杂，产能太低。于是福特公司开始把制造一辆汽车的工序分解开来，进行分工，分工给福特公司带来的好处是：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;很多工作可以并行了，而且   &lt;strong&gt;因为事情变得简单后，执行力也变强了&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;一个非常复杂和高深的汽车制造因为分工后，   &lt;strong&gt;很多工作不需要很NB的人来干了，只需要一般劳动者经过简单的培训就可以干了&lt;/strong&gt;。而且，越干越熟练，越干越专业，最终可能让合适的人合适的事。&lt;/li&gt;
  &lt;li&gt;分工后导致了很多重复劳动可以用技术来解决，于是福特公司出现生产流水线的技术（你是否还记得卓别林《摩登时代》里的工业生产流水线的场景，那取自福特公司）。&lt;/li&gt;
&lt;/ol&gt;
 &lt;p&gt;于是，福特公司的生产效率大大提高，最终实现了让每个美国家庭都能买得起汽车的理想，同时让美国成为了轮子上的国家。&lt;/p&gt;
 &lt;p&gt;不过，我们需要注意的是，在《国富论》中，Adam他同时也提到，分工如果过细，同样会带来问题——  &lt;strong&gt;简单重复的劳动会让人变成一个不会思考的机器，从而越来越笨，进而变成平庸的无技能的人&lt;/strong&gt;。自“分工”出现以后，争论就没有停止过。&lt;/p&gt;
 &lt;p&gt;Karl Max同样认为  &lt;strong&gt;分工越来越细，会导致人的技术越来越差，同时，大量的重复劳动也会导致人对工作的失出热情，产生厌倦和抵触心理，最终会导致生产力的下降&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;同时，还有一些经济学家也同样表明分工的一些缺点：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;导致人只关注整个事情中的一小块，缺乏全局视角，导致视野受限，没有完全领会工作的意义和目标，从而导致各种返工&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;对于组织而言，分工也会导致出现大量的沟通协同成本，并出现碎片的生产方式，以及组织的孤岛形式，并不利于提高生产力&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;当然，奥地利经济学家  &lt;a href="https://en.wikipedia.org/wiki/Ludwig_von_Mises" title="Ludwig von Mises"&gt;Ludwig von Mises&lt;/a&gt; 并不这么认为，他认为，在分工所得到的好处面前，这些副作用不算什么。并且，他认为在资本主义的制度下，完全是可以平衡分工的各种优点和各种缺点，从而可以达到提高生产力和提高人员素质的双赢解的。&lt;/p&gt;
 &lt;p&gt;比如说，  &lt;strong&gt;分工中的各种沟通问题是可以通过一个标准协议来解的&lt;/strong&gt;，造灯泡的，造开关的，造灯座的完全不知道对方的存在，他们只所以可以让做出来的东西拼在一起，完全是通过了一种标准协议完成的。  &lt;strong&gt;这也是为什么这个世界上有各种各样的标准化的组织&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;还有很多经济学家对分工都有自己的见解和想法。不过基本上就是上面这些Pros和Cons了。下图是一个PPT的两个slids，可以点击看大图（  &lt;a href="http://www.slideshare.net/kamran121/lecture-5-10123392" target="_blank"&gt;来源&lt;/a&gt;）&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;td&gt;    &lt;a href="http://coolshell.cn//wp-content/uploads/2015/12/lecture-5-10-728.jpg" target="_blank"&gt;     &lt;img alt="lecture-5-10-728" height="293" src="http://coolshell.cn//wp-content/uploads/2015/12/lecture-5-10-728.jpg" width="391"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
   &lt;td&gt;    &lt;a href="http://coolshell.cn//wp-content/uploads/2015/12/lecture-5-11-728.jpg" target="_blank"&gt;     &lt;img alt="lecture-5-11-728" height="279" src="http://coolshell.cn//wp-content/uploads/2015/12/lecture-5-11-728.jpg" width="372"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;h4&gt;全球化下的分工&lt;/h4&gt;
 &lt;p&gt;分工带来问题在全球化的浪潮下变得尤为突出。其委婉地被讲成是比较优势（  &lt;a href="https://en.wikipedia.org/wiki/Comparative_advantage" title="Comparative advantage"&gt;Comparative Advantage&lt;/a&gt;）&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;比较优势（&lt;/strong&gt;又叫  &lt;strong&gt;相对优势&lt;/strong&gt;）是经济学的概念，解释了为何在拥有相对的机会成本的优势下生产，贸易对双方都有利。当一方（一个人，一间公司，或一国）进行一项生产时所付出的机会成本比另一方低，这一方面拥有了进行这项生产的比较优势。于是，一个国家倘若专门生产自己相对优势较大的产品，并通过国际贸易换取自己不具有相对优势的产品就能获得利益。&lt;/p&gt;
 &lt;p&gt;于是乎，分工本来想要的是——合适的人干合适的事，  &lt;strong&gt;但是在比较优势的情况下，商业社会把分工变成了&lt;/strong&gt;——  &lt;strong&gt;不是选择合适的人、公司或国家，而是选择成本低的人、公司或国家&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;经济合作与发展组织  &lt;a href="https://en.wikipedia.org/wiki/OECD" title="OECD"&gt;OECD&lt;/a&gt;最近（2015年6月28日）对全球化这样建议的——&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;“有效率的政策的本质不是阻止失业而是鼓励就业，如果各个国家都在收获全球化的利益而不是开放贸易的话，那么一些地方就会失去工作机会，当然也伴随着在另一些地方出现新的工作机会，这是全球化进程不可避免的，而我们面对的挑战是怎么能流畅调整我们的流程，能为那些新出现的工作机会找到合适的技能匹配的工人”。&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;通过上面的说明，我想你可以知道，为什么中国成为了世界劳动力大国，而为什么当初美国科技公司进入中国的时候，首先把测试的工作放到了中国。这就是所谓的全球化分工。同时我们也可以看到，像我们中国这样技术能力的确非常不足的国家，的确是可以通过分工这种形式，让我们这些技能一般的技术人员参与一个复杂的有技术含量的项目当中。这其中就是分工的光明面和阴暗面。&lt;/p&gt;
 &lt;p&gt;那么，我们想一想，  &lt;strong&gt;随着中国的人力成本的越来越大，国际化的分工因为商业资本的因素，必然不会选择中国，只会选择人力成本更低的国家，比如印度、越南、甚至人力成本更低的国家&lt;/strong&gt;。美国雅虎和Adobe不是离开中国了么？再看看中国因为人民币的汇率或是人力成本的上升，我们在早几年关了多少个Made in China的工厂，这就是全球化的分工，商业上来说，他不是找最合适的人，而是找成本最低的人。&lt;/p&gt;
 &lt;p&gt;所以，  &lt;strong&gt;你千万不要以为我一提倡全栈了，你QA的工作就保不住了，就算没有全栈，就算是你还在坚持的社会化的分工，也可能让你的QA的工作就保不住了，除非，你能提供更低的价格&lt;/strong&gt;。（想想这其中的逻辑吧，人家美国人把一些技术工作（比如测试）外包到中国的原因不是因为中国人聪明，想得周全，适合干这个测试这个事，而是因为中国人廉价，所以，当中国不在廉价了，自然就会找更廉价的地方了）&lt;/p&gt;
 &lt;p&gt;为什么国家要从Made in China转型？不就是因为中国早期拿到的国际化分工就是这些没有技术含量的支持性的分工么？也因此而造就了大量的技能很一般的工人。为了能在全球化分工中能拿到更有质量的工作，  &lt;strong&gt;我们必然要从劳动密集型转向成知识密集型，必然要从支持性的工作转变为产出性的工作，必然需要单一技能型的技工转变为复合型的人才&lt;/strong&gt;。&lt;/p&gt;
 &lt;h4&gt;分工的温床和天敌&lt;/h4&gt;
 &lt;p&gt;  &lt;strong&gt;分工的温床主要有两个&lt;/strong&gt;，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;一个是成本和效率&lt;/strong&gt;，资本家或企业主或一个国家为了追求更快成本更底的生产方式，他们必然会进行大规模的分工，伴随着分工，他们也会把一些知识或技术密集型的工作生生地变成劳动密集型的工作。然后层层外包。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;一个是组织的大小&lt;/strong&gt;，当一个组织的人数不断的变大，那么，你只能把工作和任务分得更细。这是被人数逼的，而不是实际需要的。这就是为什么我们可以看到很多大公司里要么人浮于事，要么瞎忙。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;分工的天敌主要有一个——那就是技术&lt;/strong&gt;！&lt;/p&gt;
 &lt;p&gt;每当新技术出现的时候，一些复杂的工序会被一台机器或是一种高超的技术所取代，不管是被技术自动化，还是被技术所简化  &lt;strong&gt;，&lt;/strong&gt;总之，以前本来需要数十人或是数百人才能干的事，突然之间只需要一个人就可以干完了。生产力得到了巨大的释放。所以，你这就是我们常听的——  &lt;strong&gt;科技是第一生产力！&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;所以，  &lt;strong&gt;当你面对一些难题的时候，比如线上的故障，或是一个复杂的软件生产活动，你是要加更多的流程更多的人呢，还是要用技术解决问题呢？一边是温床，一边是天敌，你想好了吗？&lt;/strong&gt;&lt;/p&gt;
 &lt;h4&gt;什么样分工才是好的&lt;/h4&gt;
 &lt;p&gt;分工是必然的，因为很简单，你不可能一个人干完所有的事情，所以必需要分工，  &lt;strong&gt;分工不是问题，而问题则变成了——什么样的分工是理想的，是优雅的，是有效率的？&lt;/strong&gt;&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="&amp;#21326;&amp;#21531;&amp;#27494;&amp;#28459;&amp;#30011;&amp;#12298;&amp;#31185;&amp;#23398;&amp;#20998;&amp;#24037;&amp;#65311;&amp;#12299;" height="312" src="http://coolshell.cn//wp-content/uploads/2015/12/hua_junwu_17.jpg" width="212"&gt;&lt;/img&gt;  &lt;p&gt;   &lt;strong&gt;    &lt;a href="https://zh.wikipedia.org/zh/%E5%8D%8E%E5%90%9B%E6%AD%A6" target="_blank"&gt;华君武&lt;/a&gt;漫画《科学分工？》&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;对于分工来说，一般来是一种组织和管理形为。就目前来说，现代的公司有两种分工模式，分别是  &lt;strong&gt;Control&lt;/strong&gt; 和   &lt;strong&gt;Commitment&lt;/strong&gt; 这两种分工。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;Control就是控制型的管理，它是一种是基于工作技能的分工，于是员工会被这种分工分配到一个比较窄的技能里去完成一个非常明确的工作&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;而Commitment则是面向员工的责任心和所承担的目标来分工并完成工作的。相比起前者来说，这样的分工在完成工作时，需要的不仅仅是技能，还需要更多的责任感&lt;/strong&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;这么说吧，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;对于基于工作技能的分工，你会看到，这样的公司会把技术人员按编程语言来分，比如：Java、PHP、C/C++，或是分成：Web端、iOS端、Android端、后端、算法、数据。或是分成：开发，测试，运维。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;对于基于Commitment的分工，你会看到他们这样分的，软件工程师（不分前后端，不分语言，不分运维，测试），因为这样的公司认为，他招的不是只有特定语言技能的Coder，而是而学多种语言多种技术能保证软件质量以及能对软件维护的软件工程师。这种公司的软件工程师是各种团队都可以去的，而他们的分工更多的是按软件的功能，软件的模块，或是软件的产品线来分工。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;基于技能的分工已是过去时，而基于 Commitment 的分工是更有效率的分工的未来。你可以参看McAlister-Kizzier, Donna. 的文献 “  &lt;a href="http://www.encyclopedia.com/topic/Division_of_labor.aspx#3" target="_blank"&gt;Division of Labor.&lt;/a&gt;” 。&lt;/p&gt;
 &lt;h4&gt;小结&lt;/h4&gt;
 &lt;p&gt;我说了这么多，不知道你看懂了我想表达什么没有？我不强加我的价值观，只希望你自己问自己几个问题：&lt;/p&gt;
 &lt;p&gt;1）作为工作的人，在分工中你会怎样选择？是成为一颗棋子，一颗螺丝钉，还是成为一个多面手？&lt;/p&gt;
 &lt;p&gt;2）作为工作的人，当你选择工作或任务的时候，你是选择做支持性的工作，还是做产出性的工作？你是选择做劳动密集型重复工作，还是做知识密集型的创新性的工作？&lt;/p&gt;
 &lt;p&gt;3）作为老板，你是想要什么样的员工？听话的只会加班和干重复工作的劳动力，还是有责任心的为企业和产品负责的员工？&lt;/p&gt;
 &lt;p&gt;4）作为老板，你是想通过分工释放低端员工的生产力，还是通过科技或技术去创造更NB的生产力？&lt;/p&gt;
 &lt;p&gt;5）作为老板，分工中的问题，你找到比较优的解了吗？比如，对于不同团队间的协议，你找到了吗？&lt;/p&gt;
 &lt;p&gt;可能，在不同的情况下你会有不同的答案。但是对我来说呢，无论是什么情况，我都只会有一个答案。&lt;/p&gt;
 &lt;p&gt;（全文完）
&lt;/p&gt; &lt;p align="center"&gt;  &lt;img src="http://coolshell.cn//wp-content/uploads/2009/04/qrcode_for_gh_dd9d8c843f20_860-300x300.jpg"&gt;&lt;/img&gt;  &lt;br /&gt;欢迎关注CoolShell微信公众账号&lt;/p&gt;
 &lt;div&gt;
  &lt;p align="center"&gt;   &lt;strong&gt;（转载本站文章请注明作者和出处     &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;&lt;/p&gt;&lt;/div&gt;
 &lt;div&gt;——===   &lt;strong&gt;访问    &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

 &lt;div&gt;  &lt;div&gt;   &lt;h3&gt;相关文章&lt;/h3&gt;   &lt;ul&gt;    &lt;li&gt;     &lt;small&gt;2014年10月23日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/12052.html"&gt;Leetcode 编程训练&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2014年09月08日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/11928.html"&gt;互联网之子 – Aaron Swartz&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2014年05月26日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/11629.html"&gt;「我只是认真」聊聊工匠情怀&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2014年04月12日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/11432.html"&gt;从Code Review 谈如何做技术&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年12月16日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/10804.html"&gt;X-Y Problem&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年11月13日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/10688.html"&gt;编程能力与编程年龄&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年07月24日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/10217.html"&gt;加班与效率&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;     &lt;small&gt;2013年07月05日&lt;/small&gt;      &lt;a href="http://coolshell.cn/articles/9949.html"&gt;IoC/DIP其实是一种管理思想&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>技术管理 杂项资源 Division of Labour manager Programmer</category>
      <guid isPermaLink="true">https://itindex.net/detail/54861-%E5%88%86%E5%B7%A5</guid>
      <pubDate>Sun, 13 Dec 2015 12:55:52 CST</pubDate>
    </item>
    <item>
      <title>完美的nginx图片防盗链设置详解</title>
      <link>https://itindex.net/detail/54493-%E5%AE%8C%E7%BE%8E-nginx-%E5%9B%BE%E7%89%87</link>
      <description>&lt;p&gt;关于  &lt;strong&gt;nginx防盗链&lt;/strong&gt;的方法网上有很多教程，大部分都可以用，不过很多所做的  &lt;strong&gt;nginx&lt;/strong&gt;防盗链并不是真正的彻底的防盗链！一般，我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示，但是您如果通过浏览器直接输入图片地址，仍然会显示图片，仍然可以右键图片另存为下载文件！依然可以下载？这样就不是彻底的防盗链了！那么，nginx应该怎么样彻底地实现真正意义上的防盗链呢？&lt;/p&gt;
 &lt;h4&gt;首先，我们来看下nginx如何设置防盗链&lt;/h4&gt;
 &lt;p&gt;如果您使用的是默认站点，也就是说，您的站点可以直接输入服务器IP访问的，使用root登录，修改 /usr/local/nginx/conf/nginx.conf 这个配置文件。&lt;/p&gt;
 &lt;p&gt;如果您新建了站点，那么修改/usr/local/nginx/conf/vhost/你的域名.conf 这个配置文件，找到：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;   &lt;code&gt;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$&lt;/code&gt;         &lt;br /&gt;   &lt;code&gt;{&lt;/code&gt;         &lt;br /&gt;   &lt;code&gt;&lt;/code&gt;   &lt;code&gt;expires      30d;&lt;/code&gt;         &lt;br /&gt;   &lt;code&gt;}&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;  &lt;strong&gt;把这一段删掉，修改成：&lt;/strong&gt;&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$        &lt;br /&gt;{         &lt;br /&gt; valid_referers none blocked *.epinv.com epinv.com *.qq.com *.baidu.com;         &lt;br /&gt; if ($invalid_referer) {         &lt;br /&gt;  rewrite ^/ http://www.epinv.com/epinv.png;         &lt;br /&gt;  #return 404;         &lt;br /&gt; }         &lt;br /&gt; expires      30d;         &lt;br /&gt;}&lt;/p&gt;
&lt;/blockquote&gt;
 &lt;p&gt;第一行： location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$&lt;/p&gt;
 &lt;p&gt;其中“gif|jpg|jpeg|png|bmp|swf”设置防盗链文件类型，自行修改，每个后缀用“|”符号分开！&lt;/p&gt;
 &lt;p&gt;第三行：valid_referers none blocked *.epinv.com epinv.com *.qq.com *.baidu.com;&lt;/p&gt;
 &lt;p&gt;就是白名单，允许文件链出的域名白名单，自行修改成您的域名！  &lt;strong&gt;*.epinv.com&lt;/strong&gt;这个指的是子域名，域名与域名之间使用空格隔开！baidu.com是搜索引擎，做qq.com的白名单是因为可能有用户用邮箱订阅你的站点，如果不设置为白名单，用户在邮箱就无法看见你的图了，同理，如果还有其他订阅方式、搜索引擎都最好添加一下。&lt;/p&gt;
 &lt;p&gt;第五行：rewrite ^/ http://www.epinv.com/epinv.png;&lt;/p&gt;
 &lt;p&gt;这个图片是盗链返回的图片，也就是替换盗链网站所有盗链的图片。这个图片要放在没有设置防盗链的网站上，因为防盗链的作用，这个图片如果也放在防盗链网站上就会被当作防盗链显示不出来了，盗链者的网站所盗链图片会显示X符号。&lt;/p&gt;
 &lt;p&gt;这样设置差不多就可以起到防盗链作用了，上面说了，这样并不是彻底地实现真正意义上的防盗链！&lt;/p&gt;
 &lt;p&gt;我们来看第三行：valid_referers none blocked *.epinv.com epinv.com *.qq.com *.baidu.com;&lt;/p&gt;
 &lt;p&gt;valid_referers 里多了“none blocked”&lt;/p&gt;
 &lt;p&gt;我们把“none blocked”删掉，改成&lt;/p&gt;
 &lt;p&gt;valid_referers  *.epinv.com epinv.com *.qq.com *.baidu.com;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.it300.com/"&gt;   &lt;strong&gt;&lt;/strong&gt;&lt;/a&gt;  &lt;strong&gt;   &lt;a&gt;nginx彻底地实现真正意义上的防盗链&lt;/a&gt;&lt;/strong&gt;完整的代码应该是这样的：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;pre&gt;location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
{  valid_referers *.epinv.com epinv.com *.qq.com *.baidu.com;   &lt;br /&gt; if ($invalid_referer) {   rewrite ^/ http://www.epinv.com/epinv.png;   &lt;br /&gt;  #return 404;  }  expires      30d;
}&lt;/pre&gt;
&lt;/blockquote&gt;
 &lt;p&gt;这样您在浏览器直接输入图片地址就不会再显示图片出来了，也不可能会再右键另存什么的。&lt;/p&gt;
 &lt;p&gt;第五行：rewrite ^/ http://www.epinv.com/epinv.png;&lt;/p&gt;
 &lt;p&gt;这个是给图片防盗链设置的防盗链返回图片，如果我们是文件需要防盗链下载，把第五行：&lt;/p&gt;
 &lt;p&gt;rewrite ^/ http://www.epinv.com/epinv.png;&lt;/p&gt;
 &lt;p&gt;改成一个链接，可以是您主站的链接，比如把第五行改成自己的主页：&lt;/p&gt;
 &lt;p&gt;rewrite ^/ http://www.epinv.com;&lt;/p&gt;
 &lt;p&gt;这样，当别人输入文件下载地址，由于防盗链下载的作用就会跳转到您设置的这个链接！当然直接返回403也是可以的。 &lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;其他说明&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;请确保server段中只有一个location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$，否则可能导致代码无效，如有这个代码段请合并或删除。 &lt;/li&gt;
  &lt;li&gt;切记：如果要跳转到图片，记得替换的图片地址要使用没有防盗链的网站图片，否则由于替换的图片其实也处于防盗链情况下，会造成仍旧无法显示设置的图片。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;测试一下配置是否OK，命令如下：&lt;/p&gt;
 &lt;pre&gt;/usr/local/nginx/sbin/nginx -t&lt;/pre&gt;
 &lt;p&gt;返回以下结果表示正常：&lt;/p&gt;
 &lt;pre&gt;the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
configuration file /usr/local/nginx/conf/nginx.conf test is successful&lt;/pre&gt;
 &lt;p&gt;然后服务器重启，如果是LNMP的执行如下命令重启LNMP即可：&lt;/p&gt;
 &lt;pre&gt;/root/lnmp restart&lt;/pre&gt;
 &lt;p&gt;  &lt;strong&gt;只针对图片目录的防止盗链方式&lt;/strong&gt;&lt;/p&gt;
 &lt;pre&gt;location /images/ {
  alias /data/images/;
  valid_referers none blocked server_names *.5icool.org 5icool.org;
  if ($invalid_referer) {return 403;}
  }&lt;/pre&gt;
 &lt;p&gt;  &lt;strong&gt;三、使用第三方模块ngx_http_accesskey_module实现Nginx防盗链&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;实现方法如下：&lt;/p&gt;
 &lt;p&gt;1.下载NginxHttpAccessKeyModule模块文件：Nginx-accesskey-2.0.3.tar.gz；&lt;/p&gt;
 &lt;p&gt;2.解压此文件后，找到nginx-accesskey-2.0.3下的config文件。编辑此文件：替换其中 的&amp;quot;$HTTP_ACCESSKEY_MODULE&amp;quot;为&amp;quot;ngx_http_accesskey_module&amp;quot;；&lt;/p&gt;
 &lt;p&gt;3.用一下参数重新编译nginx：&lt;/p&gt;
 &lt;pre&gt;./configure --add-module=path/to/nginx-accesskey&lt;/pre&gt;
 &lt;p&gt;4. 修改nginx的conf文件，添加以下几行：&lt;/p&gt;
 &lt;pre&gt;location /download {
  accesskey             on;
  accesskey_hashmethod  md5;
  accesskey_arg         &amp;quot;key&amp;quot;;
  accesskey_signature   &amp;quot;mypass$remote_addr&amp;quot;;
  }&lt;/pre&gt;
 &lt;p&gt;其中：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;accesskey为模块开关； &lt;/li&gt;
  &lt;li&gt;accesskey_hashmethod为加密方式MD5或者SHA-1； &lt;/li&gt;
  &lt;li&gt;accesskey_arg为url中的关键字参数； &lt;/li&gt;
  &lt;li&gt;accesskey_signature为加密值，此处为mypass和访问IP构成的字符串。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;访问测试脚本download.php：&lt;/p&gt;
 &lt;pre&gt;&amp;lt;?
  $ipkey= md5(&amp;quot;mypass&amp;quot;.$_SERVER[&amp;apos;REMOTE_ADDR&amp;apos;]);
  $output_add_key=&amp;quot;&amp;lt;a href=http://www.5icool.org/download/G3200507120520LM.rar?key=&amp;quot;.$ipkey.&amp;quot;&amp;gt;download_add_key&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;;
  $output_org_url=&amp;quot;&amp;lt;a href=http://www.5icool.org/download/G3200507120520LM.rar&amp;gt;download_org_path&amp;lt;/a&amp;gt;&amp;lt;br /&amp;gt;&amp;quot;;
  echo $output_add_key;
  echo $output_org_url;
  ?&amp;gt;&lt;/pre&gt;
 &lt;p&gt;访问第一个download_add_key链接可以正常下载，第二个链接download_org_path会返回403 Forbidden错误。&lt;/p&gt;
 &lt;p&gt;  &lt;code&gt;资料来源：http://www.it300.com/article-15345.html&lt;/code&gt;&lt;/p&gt;
 &lt;div&gt;
  &lt;h3&gt;Related posts:&lt;/h3&gt;  &lt;ol&gt;
   &lt;li&gt;    &lt;a href="http://blog.epinv.com/post/625.html" rel="bookmark" title="VPS LNMP&amp;#29615;&amp;#22659;WordPress&amp;#31243;&amp;#24207;&amp;#20266;&amp;#38745;&amp;#24577;&amp;#35268;&amp;#21017;(nginx rewrite&amp;#20266;&amp;#38745;&amp;#24577;)"&gt;VPS LNMP环境WordPress程序伪静态规则(nginx rewrite伪静态) &lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="http://blog.epinv.com/post/507.html" rel="bookmark" title="WordPress&amp;#22806;&amp;#38142;&amp;#36339;&amp;#36716;go.php"&gt;WordPress外链跳转go.php &lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;    &lt;a href="http://blog.epinv.com/post/613.html" rel="bookmark" title="&amp;#36229;&amp;#35814;&amp;#32454;linux&amp;#26381;&amp;#21153;&amp;#22120;&amp;#32593;&amp;#31449;&amp;#29615;&amp;#22659;&amp;#25645;&amp;#24314;&amp;#21450;WDCP&amp;#38754;&amp;#26495;&amp;#23433;&amp;#35013;&amp;#22270;&amp;#25991;&amp;#25945;&amp;#31243;"&gt;超详细linux服务器网站环境搭建及WDCP面板安装图文教程 &lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;
  &lt;img alt="YARPP" src="http://yarpp.org/pixels/c011fa88f4a0797856762466e58cb0d4"&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>网络资源 Nginx nginx防盗链 图片防盗链</category>
      <guid isPermaLink="true">https://itindex.net/detail/54493-%E5%AE%8C%E7%BE%8E-nginx-%E5%9B%BE%E7%89%87</guid>
      <pubDate>Fri, 09 Oct 2015 10:22:38 CST</pubDate>
    </item>
    <item>
      <title>推荐！国外程序员整理的Java资源大全</title>
      <link>https://itindex.net/detail/52445-%E7%A8%8B%E5%BA%8F%E5%91%98-java-%E8%B5%84%E6%BA%90</link>
      <description>&lt;h2&gt;构建&lt;/h2&gt;
 &lt;p&gt;这里搜集了用来构建应用程序的工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://maven.apache.org/"&gt;Apache Maven&lt;/a&gt;：Maven使用声明进行构建并进行依赖管理，偏向于使用约定而不是配置进行构建。Maven优于Apache Ant。后者采用了一种过程化的方式进行配置，所以维护起来相当困难。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.gradle.org/"&gt;Gradle&lt;/a&gt;：Gradle采用增量构建。Gradle通过Groovy编程而不是传统的XML声明进行配置。Gradle可以很好地配合Maven进行依赖管理，并且把Ant脚本当作头等公民。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;字节码操作&lt;/h2&gt;
 &lt;p&gt;编程操作Java字节码的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://asm.ow2.org/"&gt;ASM&lt;/a&gt;：通用底层字节码操作及分析。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.csg.ci.i.u-tokyo.ac.jp/%7Echiba/javassist/"&gt;Javassist&lt;/a&gt;：尝试简化字节码编辑。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://bytebuddy.net/"&gt;Byte Buddy&lt;/a&gt;：使用“流式API”进一步简化字节码生成。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;代码分析&lt;/h2&gt;
 &lt;p&gt;软件度量和质量评估工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://checkstyle.sourceforge.net/"&gt;Checkstyle&lt;/a&gt;：对编程规范和标准进行静态分析。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://findbugs.sourceforge.net/"&gt;FindBugs&lt;/a&gt;：通过字节码静态分析找出潜在Bug。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://pmd.sourceforge.net/"&gt;PMD&lt;/a&gt;：对源代码中不良编程习惯进行分析。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.sonarqube.org/"&gt;SonarQube&lt;/a&gt;：通过插件集成其它分析组件，提供评估最终结果报告。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;编译器&lt;/h2&gt;
 &lt;p&gt;创建分析器、解释器和编译器的框架。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.antlr.org/"&gt;ANTLR&lt;/a&gt;：功能完备的自顶向下分析复杂框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://javacc.java.net/"&gt;JavaCC&lt;/a&gt;：相对ANTLR更具体，上手略为简单。支持语法语法超前预测（syntactic lookahead）。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;持续集成&lt;/h2&gt;
 &lt;p&gt;支持持续集成、测试和应用发布的工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://www.atlassian.com/software/bamboo"&gt;Bamboo&lt;/a&gt;：Atlassian的持续集成（CI）解决方案，包含很多其它产品。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://circleci.com/"&gt;CircleCI&lt;/a&gt;：提供托管服务，可免费试用。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://www.codeship.io/features"&gt;Codeship&lt;/a&gt;：提供托管服务，提供有限免费计划。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.thoughtworks.com/products/go-continuous-delivery"&gt;Go&lt;/a&gt;：ThoughtWork开源持续集成解决方案。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jenkins-ci.org/"&gt;Jenkins&lt;/a&gt;：提供基于服务器的部署服务。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jetbrains.com/teamcity/"&gt;TeamCity&lt;/a&gt;：JetBrain持续集成方案，提供免费版。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://travis-ci.org"&gt;Travis&lt;/a&gt;：提供托管服务，常用于开源项目。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;数据库&lt;/h2&gt;
 &lt;p&gt;简化数据库交互的工具、库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://flywaydb.org/"&gt;Flyway&lt;/a&gt;：使用Java API轻松完成数据库迁移。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://h2database.com/"&gt;H2&lt;/a&gt;：小型SQL数据库，以内存操作著称。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jdbi.org/"&gt;JDBI&lt;/a&gt;：便捷的JDBC抽象。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jooq.org/"&gt;jOOQ&lt;/a&gt;：基于SQL schema生成类型安全代码。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/facebook/presto"&gt;Presto&lt;/a&gt;：针对大数据的分布式SQL查询引擎。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.querydsl.com/"&gt;Querydsl&lt;/a&gt;：针对Java的类型安全统一查询。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;日期和时间&lt;/h2&gt;
 &lt;p&gt;处理日期和时间的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.joda.org/joda-time/"&gt;Joda-Time&lt;/a&gt;：Java 8出现之前，它是日期、时间处理的标准函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/MenoData/Time4J"&gt;Time4J&lt;/a&gt;：Java高级日期、时间函数库。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;依赖注入&lt;/h2&gt;
 &lt;p&gt;帮助代码实现  &lt;a href="http://en.wikipedia.org/wiki/Inversion_of_control" target="_blank"&gt;控制反转&lt;/a&gt;模式的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://square.github.io/dagger/"&gt;Dagger&lt;/a&gt; ：编译期的注入框架，没有使用反射，主要用于Android开发。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/google/guice"&gt;Guice&lt;/a&gt;：轻量级注入框架，功能强大可与Dagger媲美。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;开发库&lt;/h2&gt;
 &lt;p&gt;从基础层次上改进开发流程。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://eclipse.org/aspectj/"&gt;AspectJ&lt;/a&gt;：面向切面编程扩展，与程序无缝连接。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/google/auto"&gt;Auto&lt;/a&gt;：源代码生成器集合。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://ssw.jku.at/dcevm/"&gt;DCEVM&lt;/a&gt;：通过修改JVM，在运行时可无限次重定义已加载的类。OpenJDK 7、8已提供支持，详情可查看   &lt;a href="http://dcevm.github.io/"&gt;这个分支（fork）&lt;/a&gt;。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://zeroturnaround.com/software/jrebel/"&gt;JRebel&lt;/a&gt;：商用软件，无需重新部署可即时重新加载代码及配置。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://projectlombok.org/"&gt;Lombok&lt;/a&gt;：代码生成器，旨在减少Java冗余代码。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/Netflix/RxJava"&gt;RxJava&lt;/a&gt;：使用JVM中可观察序列，创建异步、基于事件应用程序的函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/spring-projects/spring-loaded"&gt;Spring Loaded&lt;/a&gt;：另一个JVM类重载代理。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://vertx.io/"&gt;vert.x&lt;/a&gt;：JVM多语言事件驱动应用框架。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;分布式应用&lt;/h2&gt;
 &lt;p&gt;用来开发分布式、具有容错性应用程序的函数库和框架。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://akka.io"&gt;Akka&lt;/a&gt;：构建并发、分布式和具有容错功能的事件驱动应用程序所需的工具包和运行时。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://storm.incubator.apache.org/"&gt;Apache Storm&lt;/a&gt;：分布式实时计算系统。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://zookeeper.apache.org/"&gt;Apache ZooKeeper&lt;/a&gt;：为大型分布式系统，使用分布式配置、同步和命名注册提供协调服务。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://hazelcast.org/"&gt;Hazelcast&lt;/a&gt;：分布式、高可扩展性内存网格。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/Netflix/Hystrix"&gt;Hystrix&lt;/a&gt;：为分布式系统提供延迟和容错处理。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jgroups.org/"&gt;JGroups&lt;/a&gt;：一组提供可靠消息传输的工具包，可用来创建集群。集群中的节点可互相发送消息。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.paralleluniverse.co/quasar/"&gt;Quasar&lt;/a&gt;：为JVM提供轻量级线程和Actor。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;发布&lt;/h2&gt;
 &lt;p&gt;使用本机格式分发Java应用程序的工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://bintray.com/"&gt;Bintray&lt;/a&gt;：对二进制发布进行版本控制，可与Maven或Gradle配合使用。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://izpack.org/"&gt;IzPack&lt;/a&gt;：为跨平台部署建立授权工具。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://launch4j.sourceforge.net/"&gt;Launch4j&lt;/a&gt;：将JAR包装为小巧的Windows可执行文件。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/libgdx/packr#packr"&gt;packr&lt;/a&gt;：将程序JAR、资源和JVM打包成Windows、Linux和Mac OS X的本机文件。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;文档处理&lt;/h2&gt;
 &lt;p&gt;用来处理Office格式文档的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://poi.apache.org/"&gt;Apache POI&lt;/a&gt;：支持OOXML （XLSX、DOCX、PPTX）以及 OLE2 （XLS, DOC or PPT）格式的文档。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jopendocument.org/"&gt;jOpenDocument&lt;/a&gt;：处理OpenDocument格式文档。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;游戏开发&lt;/h2&gt;
 &lt;p&gt;游戏开发框架。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://jmonkeyengine.org/"&gt;jMonkeyEngine&lt;/a&gt;：支持现代3D开发的游戏引擎。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://libgdx.badlogicgames.com/"&gt;libGDX&lt;/a&gt;：全面的跨平台高级开发框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://lwjgl.org/"&gt;LWJGL&lt;/a&gt;：抽象了OpenGL、CL、AL等函数库的健壮框架。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;GUI&lt;/h2&gt;
 &lt;p&gt;用来创建现代图形用户界面的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.oracle.com/technetwork/java/javase/overview/javafx-overview-2158620.html"&gt;JavaFX&lt;/a&gt;：Swing的继承者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/javafxscenebuilder-info-2157684.html"&gt;Scene Builder&lt;/a&gt;：JavaFX虚拟布局工具。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;高性能&lt;/h2&gt;
 &lt;p&gt;与高性能计算有关的资源，包括集合以及很多具体功能的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://lmax-exchange.github.io/disruptor/"&gt;Disruptor&lt;/a&gt;：线程间消息函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://fastutil.di.unimi.it/"&gt;fastutil&lt;/a&gt;：快速紧凑的Java类型安全集合。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/goldmansachs/gs-collections"&gt;GS Collections&lt;/a&gt;：受Smalltalk启发的集合框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/OpenHFT/hftc"&gt;hftc&lt;/a&gt;：Hash set和hash map。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://labs.carrotsearch.com/hppc.html"&gt;HPPC&lt;/a&gt;：基本类型集合。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://javolution.org/"&gt;Javolution&lt;/a&gt;：针对实时嵌入式系统的函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://trove.starlight-systems.com/"&gt;Trove&lt;/a&gt;：基本类型集合。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;IDE&lt;/h2&gt;
 &lt;p&gt;视图简化开发的集成开发环境。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt;：后台做了很多工作，以其丰富插件著称。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jetbrains.com/idea/"&gt;IntelliJ IDEA&lt;/a&gt;：支持很多JVM语言，为Android开发提供了很多不错的选项。其商业版本主要面向企业用户。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://netbeans.org/"&gt;NetBeans&lt;/a&gt;：集成了很多Java SE和Java EE特性，包括数据库访问、服务器、HTML5以及AngularJS。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;图像处理&lt;/h2&gt;
 &lt;p&gt;用来帮助创建、评估或操作图形的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://square.github.io/picasso/"&gt;Picasso&lt;/a&gt;：Android下载图像和图像缓存函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/zxing/zxing"&gt;ZXing&lt;/a&gt;：多种格式的一维、二维条形码处理函数库。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;JSON&lt;/h2&gt;
 &lt;p&gt;简化JSON处理的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://code.google.com/p/google-gson/"&gt;Gson&lt;/a&gt;：将Java对象序列化为JSON及反向操作。使用时提供了很好的性能。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://wiki.fasterxml.com/JacksonHome"&gt;Jackson&lt;/a&gt;：与GSON类似，但如果需要频繁初始化Jackson库会带来性能问题。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;JVM和JDK&lt;/h2&gt;
 &lt;p&gt;目前的JVM、JDK实现。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://jdk9.java.net/"&gt;JDK 9&lt;/a&gt;：JDK 9早期访问版本。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://openjdk.java.net/"&gt;OpenJDK&lt;/a&gt;：开源实现。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;日志&lt;/h2&gt;
 &lt;p&gt;记录应用程序的日志函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://logging.apache.org/log4j/"&gt;Apache Log4j 2&lt;/a&gt;：对之前版本进行了完全重写。现在的版本具备一个强大的插件和配置架构。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.elasticsearch.org/overview/kibana/"&gt;kibana&lt;/a&gt;：对日志进行分析并进行可视化。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://logback.qos.ch/"&gt;Logback&lt;/a&gt;：Log4j原班人马作品。被证明是一个强健的日志函数库，通过Groovy提供了很多有意思的配置选项。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://logstash.net/"&gt;logstash&lt;/a&gt;：日志文件管理工具。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.slf4j.org/"&gt;SLF4J&lt;/a&gt;：日志抽象层，需要与某个具体日志框架配合使用。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;机器学习&lt;/h2&gt;
 &lt;p&gt;提供具体统计算法的工具。其算法可从数据中学习。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://hadoop.apache.org/"&gt;Apache Hadoop&lt;/a&gt;：对商用硬件集群上大规模数据存储和处理的开源软件框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://mahout.apache.org/"&gt;Apache Mahout&lt;/a&gt;：专注协同过滤、聚类和分类的可扩展算法。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://spark.apache.org/"&gt;Apache Spark&lt;/a&gt;：开源数据分析集群计算框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://0xdata.github.io/h2o/"&gt;h2o&lt;/a&gt;：用作大数据统计的分析引擎。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;Weka&lt;/a&gt;：用作数据挖掘的算法集合，包括从预处理到可视化的各个层次。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;消息&lt;/h2&gt;
 &lt;p&gt;在客户端之间进行消息传递，确保协议独立性的工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://activemq.apache.org/"&gt;Apache ActiveMQ&lt;/a&gt;：实现JMS的开源消息代理（broker），可将同步通讯转为异步通讯。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://kafka.apache.org/"&gt;Apache Kafka&lt;/a&gt;：高吞吐量分布式消息系统。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://hornetq.jboss.org/"&gt;JBoss HornetQ&lt;/a&gt;：清晰、准确、模块化且方便嵌入的消息工具。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/zeromq/jeromq"&gt;JeroMQ&lt;/a&gt;：ZeroMQ的纯Java实现。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;其它&lt;/h2&gt;
 &lt;p&gt;其它资源。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://github.com/iluwatar/java-design-patterns"&gt;Design Patterns&lt;/a&gt;：实现并解释了最常见的   &lt;a href="http://www.amazon.cn/gp/product/B001130JN8/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;tag=importnew-23&amp;linkCode=as2&amp;camp=536&amp;creative=3200&amp;creativeASIN=B001130JN8" rel="nofollow" target="_blank" title="&amp;#35774;&amp;#35745;&amp;#27169;&amp;#24335;:&amp;#21487;&amp;#22797;&amp;#29992;&amp;#38754;&amp;#21521;&amp;#23545;&amp;#35937;&amp;#36719;&amp;#20214;&amp;#30340;&amp;#22522;&amp;#30784;"&gt;设计模式&lt;/a&gt;。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/google/jimfs"&gt;Jimfs&lt;/a&gt;：内存文件系统。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://code.google.com/p/lanterna/"&gt;Lanterna&lt;/a&gt;：类似curses的简单console文本GUI函数库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://lightadmin.org/"&gt;LightAdmin&lt;/a&gt;：可插入式CRUD UI函数库，可用于快速应用开发。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://metrics.codahale.com/"&gt;Metrics&lt;/a&gt;：创建自己的软件度量或者为支持框架添加度量信息，通过JMX或HTTP进行发布或者发送到数据库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://openrefine.org/"&gt;OpenRefine&lt;/a&gt;：用来处理混乱数据的工具，包括清理、转换、使用Web Service进行扩展并将其关联到数据库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.robovm.org/"&gt;RoboVM&lt;/a&gt;：Java编写原生iOS应用。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;自然语言处理&lt;/h2&gt;
 &lt;p&gt;用来专门处理文本的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://opennlp.apache.org/"&gt;Apache OpenNL&lt;/a&gt;：处理类似分词等常见任务的工具。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://nlp.stanford.edu/software/corenlp.shtml"&gt;CoreNLP&lt;/a&gt;：斯坦佛的CoreNLP提供了一组基础工具，可以处理类似标签、实体名识别和情感分析这样的任务。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://alias-i.com/lingpipe/"&gt;LingPipe&lt;/a&gt;：一组可以处理各种任务的工具集，支持POS标签、情感分析等。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://mallet.cs.umass.edu/"&gt;Mallet&lt;/a&gt;：统计学自然语言处理、文档分类、聚类、主题建模等。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;网络&lt;/h2&gt;
 &lt;p&gt;网络编程函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://netty.io/"&gt;Netty&lt;/a&gt;：构建高性能网络应用程序开发框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://square.github.io/okhttp/"&gt;OkHttp&lt;/a&gt; ：一个Android和Java应用的HTTP+SPDY客户端。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;ORM&lt;/h2&gt;
 &lt;p&gt;处理对象持久化的API。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://www.eclipse.org/eclipselink/"&gt;EclipseLink&lt;/a&gt;：支持许多持久化标准，JPA、JAXB、JCA和SDO。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://hibernate.org/orm/"&gt;Hibernate&lt;/a&gt;：广泛使用、强健的持久化框架。Hibernate的技术社区非常活跃。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://ebean-orm.github.io/"&gt;Ebean&lt;/a&gt;：支持快速数据访问和编码的ORM框架。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;PDF&lt;/h2&gt;
 &lt;p&gt;用来帮助创建PDF文件的资源。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://xmlgraphics.apache.org/fop/"&gt;Apache FOP&lt;/a&gt;：从XSL-FO创建PDF。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://pdfbox.apache.org/"&gt;Apache PDFBox&lt;/a&gt;：用来创建和操作PDF的工具集。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://dynamicreports.org/"&gt;DynamicReports&lt;/a&gt;：JasperReports的精简版。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://itextpdf.com/"&gt;iText&lt;/a&gt;：一个易于使用的PDF函数库，用来编程创建PDF文件。注意，用于商业用途时需要许可证。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://community.jaspersoft.com/project/jasperreports-library"&gt;JasperReports&lt;/a&gt;：一个复杂的报表引擎。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;REST框架&lt;/h2&gt;
 &lt;p&gt;用来创建RESTful 服务的框架。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://dropwizard.github.io/dropwizard/"&gt;Dropwizard&lt;/a&gt;：偏向于自己使用的Web框架。用来构建Web应用程序，使用了Jetty、Jackson、Jersey和Metrics。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://jersey.java.net/"&gt;Jersey&lt;/a&gt;：JAX-RS参考实现。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://resteasy.jboss.org/"&gt;RESTEasy&lt;/a&gt;：经过JAX-RS规范完全认证的可移植实现。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://square.github.io/retrofit/"&gt;Retrofit&lt;/a&gt;：一个Java类型安全的REST客户端。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.sparkjava.com/"&gt;Spark&lt;/a&gt;：受到Sinatra启发的Java REST框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://helloreverb.com/developers/swagger"&gt;Swagger&lt;/a&gt;：Swagger是一个规范且完整的框架，提供描述、生产、消费和可视化RESTful Web Service。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;科学&lt;/h2&gt;
 &lt;p&gt;用于科学计算和分析的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://jwork.org/scavis/"&gt;SCaVis&lt;/a&gt;：用于科学计算、数据分析和数据可视化环境。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;搜索&lt;/h2&gt;
 &lt;p&gt;文档索引引擎，用于搜索和分析。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://lucene.apache.org/solr/"&gt;Apache Solr&lt;/a&gt; ：一个完全的企业搜索引擎。为高吞吐量通信进行了优化。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.elasticsearch.org/"&gt;Elasticsearch&lt;/a&gt;：一个分布式、支持多租户（multitenant）全文本搜索引擎。提供了RESTful Web接口和无schema的JSON文档。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;安全&lt;/h2&gt;
 &lt;p&gt;用于处理安全、认证、授权或会话管理的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://shiro.apache.org/"&gt;Apache Shiro&lt;/a&gt;：执行认证、授权、加密和会话管理。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://cryptomator.org/"&gt;Cryptomator&lt;/a&gt;：在云上进行客户端跨平台透明加密。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://keycloak.jboss.org/"&gt;Keycloak&lt;/a&gt;：为浏览器应用和RESTful Web Service集成SSO和IDM。目前还处于beta版本，但是看起来非常有前途。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://picketlink.org/"&gt;PicketLink&lt;/a&gt;：PicketLink是一个针对Java应用进行安全和身份认证管理的大型项目（Umbrella Project）。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://projects.spring.io/spring-security/"&gt;Spring Security&lt;/a&gt;：专注认证、授权和多维度攻击防护框架。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;序列化&lt;/h2&gt;
 &lt;p&gt;用来高效处理序列化的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://github.com/google/flatbuffers"&gt;FlatBuffers&lt;/a&gt;：序列化函数库，高效利用内存，无需解包和解析即可高效访问序列化数据。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/EsotericSoftware/kryo"&gt;Kryo&lt;/a&gt;：快速和高效的对象图形序列化框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/msgpack/msgpack-java"&gt;MessagePack&lt;/a&gt;：一种高效的二进制序列化格式。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;服务器&lt;/h2&gt;
 &lt;p&gt;用来部署应用程序的服务器。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://tomcat.apache.org/"&gt;Apache Tomcat&lt;/a&gt;：针对Servlet和JSP的应用服务器，健壮性好且适用性强。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://tomee.apache.org/"&gt;Apache TomEE&lt;/a&gt;：Tomcat加Java EE。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://glassfish.java.net/"&gt;GlassFish&lt;/a&gt;：Java EE开源参考实现，由Oracle资助开发。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.eclipse.org/jetty/"&gt;Jetty&lt;/a&gt;：轻量级、小巧的应用服务器，通常会嵌入到项目中。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.wildfly.org/"&gt;WildFly&lt;/a&gt;：之前被称作JBoss，由Red Hat开发。支持很多Java EE功能。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;模版引擎&lt;/h2&gt;
 &lt;p&gt;对模板中表达式进行替换的工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://velocity.apache.org/"&gt;Apache Velocity&lt;/a&gt;：提供HTML页面模板、email模板和通用开源代码生成器模板。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://freemarker.org/"&gt;FreeMarker&lt;/a&gt;：通用模板引擎，不需要任何重量级或自己使用的依赖关系。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jknack.github.io/handlebars.java/"&gt;Handlebars.java&lt;/a&gt;：使用Java编写的模板引擎，逻辑简单，支持语义扩展（semantic Mustache）。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://jsp.java.net/"&gt;JavaServer Pages&lt;/a&gt;：通用网站模板，支持自定义标签库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.thymeleaf.org/"&gt;Thymeleaf&lt;/a&gt;：旨在替换JSP，支持XML文件。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;测试&lt;/h2&gt;
 &lt;p&gt;测试内容从对象到接口，涵盖性能测试和基准测试工具。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://jmeter.apache.org/"&gt;Apache JMeter&lt;/a&gt;：功能性测试和性能评测。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://arquillian.org/"&gt;Arquillian&lt;/a&gt;：集成测试和功能行测试平台，集成Java EE容器。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://joel-costigliola.github.io/assertj/"&gt;AssertJ&lt;/a&gt;：支持流式断言提高测试的可读性。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://openjdk.java.net/projects/code-tools/jmh/"&gt;JMH&lt;/a&gt;：JVM微基准测试工具。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://junit.org/"&gt;JUnit&lt;/a&gt;：通用测试框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://code.google.com/p/mockito/"&gt;Mockito&lt;/a&gt;：在自动化单元测试中创建测试对象，为TDD或BDD提供支持。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://docs.seleniumhq.org/"&gt;Selenium&lt;/a&gt;：为Web应用程序提供可移植软件测试框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://selenide.org/"&gt;Selenide&lt;/a&gt;：为Selenium提供精准的周边API，用来编写稳定且可读的UI测试。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://testng.org/"&gt;TestNG&lt;/a&gt; ：测试框架。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://visualvm.java.net/"&gt;VisualVM&lt;/a&gt;：提供可视化方式查看运行中的应用程序信息。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;工具类&lt;/h2&gt;
 &lt;p&gt;通用工具类函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://commons.apache.org/"&gt;Apache Commons&lt;/a&gt;：提供各种用途的函数，比如配置、验证、集合、文件上传或XML处理等。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://code.google.com/p/guava-libraries/"&gt;Guava&lt;/a&gt;：集合、缓存、支持基本类型、并发函数库、通用注解、字符串处理、I/O等。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.javatuples.org/"&gt;javatuples&lt;/a&gt;：正如名字表示的那样，提供tuple支持。尽管目前tuple的概念还有留有争议。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;网络爬虫&lt;/h2&gt;
 &lt;p&gt;用于分析网站内容的函数库。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://nutch.apache.org/"&gt;Apache Nutch&lt;/a&gt; ：可用于生产环境的高度可扩展、可伸缩的网络爬虫。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://code.google.com/p/crawler4j/"&gt;Crawler4j&lt;/a&gt;：简单的轻量级爬虫。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jsoup.org/"&gt;JSoup&lt;/a&gt; ：刮取、解析、操作和清理HTML。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;Web框架&lt;/h2&gt;
 &lt;p&gt;用于处理Web应用程序不同层次间通讯的框架。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://tapestry.apache.org/"&gt;Apache Tapestry&lt;/a&gt;：基于组件的框架，使用Java创建动态、强健的、高度可扩展的Web应用程序。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://wicket.apache.org/"&gt;Apache Wicket&lt;/a&gt;：基于组件的Web应用框架，与Tapestry类似带有状态显示GUI。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.gwtproject.org/"&gt;Google Web Toolkit&lt;/a&gt;：一组Web开发工具集，包含在客户端将Java代码转为JavaScript的编译器、XML解析器、RCP API、JUnit集成、国际化支持和GUI控件。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://grails.org/"&gt;Grails&lt;/a&gt;：Groovy框架，旨在提供一个高效开发环境，使用约定而非配置、没有XML并支持混入（mixin）。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.playframework.com/"&gt;Play&lt;/a&gt;： 使用约定而非配置，支持代码热加载并在浏览器中显示错误。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://primefaces.org/"&gt;PrimeFaces&lt;/a&gt;：JSF框架，提供免费版和带技术支持的商业版。包含一些前端组件。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://projects.spring.io/spring-boot/"&gt;Spring Boot&lt;/a&gt;：微框架，简化了Spring新程序的开发过程。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://projects.spring.io/spring-framework/"&gt;Spring&lt;/a&gt;：旨在简化Java EE的开发过程，提供依赖注入相关组件并支持面向切面编程。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://vaadin.com/"&gt;Vaadin&lt;/a&gt;：基于GWT构建的事件驱动框架。使用服务端架构，客户端使用Ajax。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.ninjaframework.org/"&gt;Ninja&lt;/a&gt;：Java全栈Web开发框架。非常稳固、快速和高效。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.ratpack.io/"&gt;Ratpack&lt;/a&gt;：一组Java开发函数库，用于构建快速、高效、可扩展且测试完备的HTTP应用程序。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h1&gt;资源&lt;/h1&gt;
 &lt;h2&gt;社区&lt;/h2&gt;
 &lt;p&gt;活跃的讨论区。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.reddit.com/r/java"&gt;r/java&lt;/a&gt;：Java社区的Subreddit。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://stackoverflow.com/questions/tagged/java"&gt;stackoverflow&lt;/a&gt;：问答平台。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;有影响的书籍&lt;/h2&gt;
 &lt;p&gt;具有广泛影响且值得阅读的Java经典书籍。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.cn/gp/product/0321356683/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=0321356683&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;Effective Java (2nd Edition)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.com/Java-Concurrency-Practice-Brian-Goetz/dp/0321349601"&gt;Java Concurrency in Practice&lt;/a&gt; |    &lt;a href="http://www.amazon.cn/gp/product/B0077K9XHW/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B0077K9XHW&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;Java并发编程实战&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.cn/gp/product/B0011C3CVA/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B0011C3CVA&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;Thinking in Java&lt;/a&gt; |    &lt;a href="http://www.amazon.cn/gp/product/B0011F7WU4/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B0011F7WU4&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;中文版&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;播客&lt;/h2&gt;
 &lt;p&gt;可以一边编程一边听的东西。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.javaposse.com/"&gt;The Java Posse&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;Twitter&lt;/h2&gt;
 &lt;p&gt;值得关注的帐号。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/AdamBien/"&gt;Adam Bien&lt;/a&gt;：自由职业者、作家、JavaONE明星演讲者、顾问、Java Champion。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/agoncal/"&gt;Antonio Goncalves&lt;/a&gt;：Java Champion、JUG Leader、Devoxx France、Java EE 6/7、JCP、作家。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/arungupta/"&gt;Arun Gupta&lt;/a&gt;：Java Champion、JavaONE明星演讲者、JUG Leader、Devoxx4Kids成员、Red Hatter。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/brunoborges"&gt;Bruno Borges&lt;/a&gt;：Oracle产品经理、Java Jock。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/edburns"&gt;Ed Burns&lt;/a&gt;：Oracle技术团队顾问。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/baeldung"&gt;Eugen Paraschiv&lt;/a&gt;：Spring安全课程作者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/JavaFXpert"&gt;James Weaver&lt;/a&gt;：Java、JavaFX、IoT开发者、作者和演讲者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/Java_EE/"&gt;Java EE&lt;/a&gt;：Java EE Twitter官方账号。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/Oraclejavamag"&gt;Java Magazine&lt;/a&gt;：Java杂志官方账号。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/javanetbuzz/"&gt;Java.net&lt;/a&gt;：Java.net官方账号。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/java/"&gt;Java&lt;/a&gt;：Java Twitter官方账号。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/javinpaul"&gt;Javin Paul&lt;/a&gt;：知名Java博客作者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/lukaseder"&gt;Lukas Eder&lt;/a&gt;：Data Geekery（jOOQ）创始人兼CEO。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/mariofusco"&gt;Mario Fusco&lt;/a&gt;：RedHatter、JUG协调、活跃讲师和作者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/mreinhold"&gt;Mark Reinhold&lt;/a&gt;：Oracle首席架构师、Java平台开发组。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/karianna"&gt;Martijn Verburg&lt;/a&gt;：London JUG co-leader、演讲者、作家、Java Champion等。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/OpenJDK"&gt;OpenJDK&lt;/a&gt;：OpenJDK官方账号。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/reza_rahman"&gt;Reza Rahman&lt;/a&gt;：Java EE、GlassFish、WebLogic传道者、作家、演讲者、开源黑客。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/sjmaple"&gt;Simon Maple&lt;/a&gt;：Java Champion、virtualJUG创始人、LJC leader、RebelLabs作者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/jodastephen"&gt;Stephen Colebourne&lt;/a&gt;： Java Champion、演讲者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/kablosna"&gt;Tim Boudreau&lt;/a&gt;：作家、NetBeans大牛。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://twitter.com/trisha_gee"&gt;Trisha Gee&lt;/a&gt;：Java Champion、演讲者。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;网站&lt;/h2&gt;
 &lt;p&gt;值得阅读的网站。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://google-styleguide.googlecode.com/svn/trunk/javaguide.html"&gt;Google Java Style&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.infoq.com/"&gt;InfoQ&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.javacodegeeks.com/"&gt;Java Code Geeks&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://java.net/"&gt;Java.net&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://java.dzone.com/"&gt;Javalobby&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.javaworld.com/"&gt;JavaWorld&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://zeroturnaround.com/rebellabs/"&gt;RebelLabs&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.javaspecialists.eu/archive/archive.jsp"&gt;The Java Specialist’ Newsletter&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.theserverside.com/"&gt;TheServerSide.com&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.thoughts-on-java.org/"&gt;Thoughts On Java&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com" target="_blank"&gt;ImportNew&lt;/a&gt;（ImportNew 专注 Java 技术）&lt;/li&gt;
&lt;/ul&gt;
 &lt;h1&gt;参与贡献&lt;/h1&gt;
 &lt;p&gt;热烈欢迎参与贡献此列表！&lt;/p&gt;
 &lt;p&gt;请参阅  &lt;a href="https://github.com/akullpp/awesome-java/blob/master/CONTRIBUTING.md"&gt;CONTRIBUTING&lt;/a&gt;加入贡献。&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h3&gt;可能感兴趣的文章&lt;/h3&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/1099.html"&gt;如何用Spring 3.1的Environment和Profile简化工作&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/1306.html"&gt;Java的Sizeof实现&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/1480.html"&gt;Java异常有多慢？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/3922.html"&gt;JPA与CMT – 为什么单纯捕捉持久化异常是不够的？&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/5749.html"&gt;SPRING SECURITY JAVA配置：OAUTH&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/6164.html"&gt;Eclipse的调试功能的10个小窍门&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/7743.html"&gt;Github最流行的10,000个Java项目使用的类库&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/10227.html"&gt;Java8-本地缓存&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/13072.html"&gt;本周算法：背包问题&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.importnew.com/14034.html"&gt;Java 9特性&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>基础技术 未分类 Java开发资源</category>
      <guid isPermaLink="true">https://itindex.net/detail/52445-%E7%A8%8B%E5%BA%8F%E5%91%98-java-%E8%B5%84%E6%BA%90</guid>
      <pubDate>Thu, 08 Jan 2015 00:00:53 CST</pubDate>
    </item>
    <item>
      <title>关于移动端的钓鱼式攻击</title>
      <link>https://itindex.net/detail/53194-%E7%A7%BB%E5%8A%A8-%E9%92%93%E9%B1%BC-%E6%94%BB%E5%87%BB</link>
      <description>&lt;p&gt;  &lt;img alt="phishing-1" height="300" src="http://coolshell.cn//wp-content/uploads/2015/04/phishing-1.jpg" width="300"&gt;&lt;/img&gt;今天，在微博上看了一篇《  &lt;a href="http://weibo.com/p/1001603830475402664763" target="_blank"&gt;微信和淘宝到底是谁封谁&lt;/a&gt;》的文章，我觉得文章中逻辑错乱，所以，我发了一篇  &lt;a href="http://weibo.com/p/1001603831131286939079" target="_blank"&gt;关于这篇文章逻辑问题的长微博&lt;/a&gt;。后面，我被原博主冷嘲热讽了一番，说是什么鸡汤啊，什么我与某某之流的人在一起混淆视听啊，等等。并且也有一些网友找我讨论一下相关的钓鱼式攻击的技术问题。所以，我想写下这篇纯技术文章，因为我对那些商业利益上的东西不关心，所以，只谈技术，这样最简单。&lt;/p&gt;
 &lt;p&gt;首先说明一下，  &lt;strong&gt;我个人不是一个安全专家，也不是一个移动开发专家，按道理来说，这篇文章不应该我来写，但是我就试一试，请原谅我的无知，也期待抛砖引玉了，希望安全的同学斧正&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;关于钓鱼式攻击，其实是通过一种社会工程学的方式来愚弄用户的攻击式，攻击者通常会模仿一个用户信任的网站来偷取用户的机密信息，比如用户密码或是信用卡。一般来说，攻击者会通过邮件和实时通信工具完成，给被攻击者发送一个高仿的网站，然后让用户看不出来与正统网站的差别，然后收集用户的机密数据。&lt;/p&gt;
 &lt;h4&gt;移动端钓鱼攻击点分析&lt;/h4&gt;
 &lt;p&gt;因为钓鱼式攻击并不新鲜，所以我这里只讲移动方面的。&lt;/p&gt;
 &lt;p&gt;在移动端，这个事情会更容易干，因为移动端有如下特点：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;移动端的UI只能有一个应用占据整个屏幕，你只能看到一个应用，而且用户屏幕小，能显示的信息有限，比如浏览器里的网址是显示不全的。这会给钓鱼攻击有很多可乘之机。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;移动端的平台有其安全的设计。每个应用都是隔离开的，一个应用无法获取另一个应用的数据。而且应用的下载基本上来说都是来自合法的地方。比如iOS的设备通过App Store下载，每个程序都有自己的签名保证不会被篡改。而且移动端的的应用有各种权限配置，这样也能很大程度提高安全性。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;移动端的APP有些有些是收费的，所以自然会有盗版需求，虽然在平台上做了一些安全设计，但是并不完美。用户可以越狱，可以root。这给恶意软件有了可乘之机。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;下面我们来分析下移动端的用户操作，我们重点关注用户控制权的切换过程（因为这是攻击点）&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;在移动设备上，基本上来说，用户的控制切换有四种：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;从一个APP切到另一个APP，也就是我们所谓的唤出APP。&lt;/li&gt;
  &lt;li&gt;从一个APP唤出一个Web，常见为一个嵌入式的WebView或是一个浏览器&lt;/li&gt;
  &lt;li&gt;从一个Web唤出一个APP，这需要浏览器支持一些非标准的HTTP协议，比如skype://之类的。&lt;/li&gt;
  &lt;li&gt;从一个Web到另一个Web，这和Web上的方式差不多。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;基本上来说，  &lt;strong&gt;黑客的攻击从来都是找这样的转换环节来做文章的，并且需要一个用户非常熟悉的场景（这样用户才会放松警惕）&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;通过观察移动APP的特性，我们可以知道，当用户控制切换时，有下面的这些特性：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;到另一个APP时，需要用户登录（如果登录的session过期了）&lt;/li&gt;
  &lt;li&gt;当支付的时候，需要用户输入支付信息（信用卡信息、支持密码）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;那么用户在移动APP上经常做的事是什么？&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;社交分享&lt;/strong&gt;：分享到微博，分享到微信等等，分享的时候，可能需要你输入用户名和口令。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;应用内购&lt;/strong&gt;：一般来说APP会有两种，一种免费的，一种是收费的，大量的用户都是下载免费的，然后通过什么“开通更多关卡”、“去广告”、“买道具”之类的东西，让用户输入支付信息。Apple的支付的时候也会要用户输入Apple ID的密码。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;点击链接&lt;/strong&gt;：有时候，我们收到短信，或是二维码，或是一个微信微博，会让我们去点击一个网站链接，这个网站链接要么就是打开一个网页，要么就是启动应用，要么就是跳转到应用市场去下载应用（如果你没安装）。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;所以，一个好的钓鱼式攻击一定会从这些地方入手，然后高仿UI以及交互流程，这个交互流程和用户日常操作的完全一样，让用户无法察觉。任何方式的钓鱼攻击简单来说，会有两种：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;一种是直接攻击：&lt;/strong&gt;你下载了一个恶意的APP，或是打开了一个恶意的冒牌APP。&lt;/li&gt;
  &lt;li&gt;   &lt;strong&gt;一种是中间人攻击：&lt;/strong&gt;用户控制权转换时的两端都是正规应用，但是中间的过程不是正常的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h4&gt;攻击方式&lt;/h4&gt;
 &lt;p&gt;下面是一些常见的攻击方式：&lt;/p&gt;
 &lt;h5&gt;从一个应用唤起另一个应用的方式&lt;/h5&gt;
 &lt;p&gt;  &lt;strong&gt;直接攻击&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;当你点击一个社交分享按钮，或是一个支付按钮的时候。就会转到一个页面，这个页面需要你输入用户机密信息（密码或是支付信息），然后再唤起真正的APP。&lt;/p&gt;
 &lt;p&gt;一个有恶意的APP可能会让你放松警惕，因为，这个你在安装这个APP的时候，你会发现这个APP根本不需要任何的权限（Android上的），甚至连网络访问的权限都不要，因为在Android下，App可以通过别的组件访问互联网，比如：恶意应用可能创建一个MediaPlayer Object，然后就可以通过这个对象访问一个URL然后把偷到的信息发送出去。&lt;/p&gt;
 &lt;p&gt;你的手机要被安装一个恶意的应用并不难，同样通过社工的方式，比如：盗版，色情，伪装成客服等等通过人性的弱点让你去一些非受信的市场上安装。iOS设备上的应用也可以不用通过App Store安装（通过itms-services协议，可以通过safari浏览器直接在IOS设备上安装应用程序）。&lt;/p&gt;
 &lt;p&gt;还有，人们都是贪小便宜的人，所以，会到某些地方买一些便宜的手机（比如淘宝），现在的高仿手机，翻新的二手手机对于一般人甚至安全专家来说完全没有识别能力。这些手机中有很大可能藏有恶意程序。你千万不要以为你格式化手机就OK了。今天（2015年4月14日）早上CCTV2台的“第一时间”就说了一个案例，你可以看看。另外，你可以看看相关的新闻。（另外，你把你的旧手机卖了也要小心，因为你的数据就在里面，旧手机已经成了一个灰色产业链）&lt;/p&gt;
 &lt;p&gt;另外，Apple的App需要有一个review过程，这个过程对大众是神秘的，但我觉得应该会包括安全方面的review。不过，这个审核过程可能也有空子可以钻。比如：在review的时候，这个应用完全正常，但在用户使用的时候，会自己从网站下载一些自己的配置文件而改变行为（更为直接的就是访问外部网页时在审核时和在用户应用时可能完全不一样，Apple应该完全没有能力审核应用要访问的外部站点）&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;中间人攻击&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;我们知道，一个APP唤起另一个APP好多都是用url-scheme的，也就是某种协议，审核这样的协议非常简单，所以如果有恶意的东西在里面基本上很容易看到。但是，如果某些APP并没有注册自己的url-scheme，或是没有被安装，反而，另一个有恶意的APP注册了这个scheme，那么，就会导致恶意的APP被唤起来了（  &lt;strong&gt;这就是我为什么在我的微博中说，如果用户没有安装淘宝的客户端，那么，让微信唤起淘宝的客户端时，有可能是另一个有恶意的APP。但是很多人不懂这个事。在iOS下，两个APP通讯正确的做法是“钥匙串机制”&lt;/strong&gt;）。&lt;/p&gt;
 &lt;p&gt;当然如果有两个应用被注册了同一个scheme，那么，iOS和Android会给出一个选择，让用户来选（注：iOS的系统有可能会直接跳某个 App 上去，不同版本的跳规则不明确，可以认为是随机跳转）。于是乎，恶意的APP就要努力的让自己比正规的APP看起来更像个正规的APP就可以了。&lt;/p&gt;
 &lt;p&gt;在Android平台上，这个事可能更变态，只要恶意的应用有两个权限，一个是随手机操作系统在后台启动，一个是task list（然而这两个权限都是一般权限）。这样一来，当你进行两个APP切换时，恶意程序可以通过task list权限监控到，然后自己马上先于正规的app出现，等到收集完用户数据后简单的退出就好了。这个方式只需要你的程序能在10ms以内反应过来（最佳是5ms左右），人的肉眼根本看不出来。（在iOS设备下，除了jail break后的iPhone可以这么干，正常的都iPhone还没有找到这样的攻击方式）&lt;/p&gt;
 &lt;h5&gt;在一个应用内内嵌Web的方式&lt;/h5&gt;
 &lt;p&gt;这种方式更容易攻击了，现在很多很多应用都是内嵌的Web的形式，你完全不知道打开的网页的网站是什么，因为这些内嵌的WebView你连地址都看不见。而且无论是iOS或Android，其WebView都可以执行任何的Javascript代码，就算显示URL，URL也可能是被混乱过的，你也看不全，你也很容易上当。当然，那些使用带SSL证书的支持HTTPS的网站（尤其是EV证书）可以在地址栏上显示一个绿色的标记表示你访问的就是正确网址，但是并不是所有的浏览器都会这样，比如iPhone的Safari并没有这个提示，所以，你一定要用Chrome。&lt;/p&gt;
 &lt;p&gt;更狠的是就算你打开的是一个正确的URL，你依然可能被中间人攻击。尤其是这个网站使用了明文的HTTP协议，而你又喜欢蹭那些免费的WiFi，于是很容易给把服务器返回给你的网页中做修改，比如，修改网页中login表单或是支付表单提交的网站（想想天朝的网络运营商给你访问的正常的网页弹广告这事吧）&lt;/p&gt;
 &lt;p&gt;关于DNS劫持，有些人觉得这事可能遇不上，因为这是一个全网的问题，如果你有这样的想法你就错了。还是那样，你爱占便宜，蹭上那些没有密码的WiFi，你完不知道，你连上去的那个WiFi会设置什么样的DNS服务器，你输入了www.taobao.com，但你打开的网站根本就是不是淘定，而是一个钓鱼网站。你会知道你打开的是错的了么？基本不可能。所以，安全点的网站都是要用HTTPS，但是还是那句话，iPhone的Safari并不会提示你打开网站的SSL证书合不合法（事实上，在手机上的很多浏览器都不会这提示，只有Chrome会）。&lt;/p&gt;
 &lt;p&gt;关于攻击的方式我不想讲太多，还有很多高级+猥琐的方式我也不是完全知道，知道了我也不说，不然，教人犯罪了。&lt;/p&gt;
 &lt;p&gt;关于从Web端唤起APP是和，APP唤醒APP的攻击方式基本一样。我就不说了。&lt;/p&gt;
 &lt;h4&gt;怎么防范钓鱼式攻击&lt;/h4&gt;
 &lt;p&gt;首先，我们要知道，钓鱼式攻击是一件非常难搞的事。要搞定这个事，一般来说需要四个方面：  &lt;strong&gt;立法层面&lt;/strong&gt;、  &lt;strong&gt;用户培训层面&lt;/strong&gt;、  &lt;strong&gt;宣传层面&lt;/strong&gt;、与  &lt;strong&gt;技术保全措施层面&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;教育方面&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;打击网钓的策略之一，是试着培养人们识别网钓，并教导怎样处理这些问题。只需要稍稍修改人们浏览习惯的方式，很多问题都可以避免。随着人们越来越认识到网钓者所使用的社会工程学技俩，传统的网钓欺诈技术可能在未来过时。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;对别人发来的链接要小心，尤其是让你输入机密信息的链接要小心检查。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;到正规的地方买手机，不要贪图小便宜。旧手机在卖前要“物理删除”数据。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;不要对手机越狱，不要root。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;不要从非信任的地方下载软件。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;要小心免费的WiFi。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;输入机密数据的时候一定要小心检查。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;多依赖一些不同的安全体系，比如：网上支付不要只依赖支付宝，尽量使用信用卡（信用卡千万不要设密码），这样就算是被钓鱼了，你还有一个银行安全的缓冲地带——可以不承认交易。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;现在使用手机的频率越来越高，所以，我非常建议你使用更为安全的iPhone手机，一定要打开“查找我的iPhone”功能，然后设上开机密码。iPhone手机可以做到手机丢失了别人都无法使用，包括刷机都刷不了（iOS7以上版本）&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;对于一些关键网站，开启两步验证，这样就算你的用户名和密码被钓走了，还有一个动态手机口令做为登录的关卡。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;技术方面&lt;/strong&gt;&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;利用SSL证书来保证从浏览器到网站的访问是现在采用比较多的方式，也是在理论上可行的方式。现代的浏览器都会在URL上放上一个锁的标志，对于EV证书，你会看到浏览器的URL是绿色的（很容易分辨）&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;另外，像firefox浏览器有一个petname的插件，你可以为你常上的网站设置一些标签。这样，当你打开钓鱼网站的时候，你会发现这些标签没有显示出来，那就有问题了。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;关于SSL的CA认证机构，你需要管理好你浏览的那些根证书，有些根证书你需要删掉。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;还有一种打击网钓的流行作法是保持一份已知的网钓网站名单，并随时更新。比如   &lt;a href="https://www.phishtank.com/" target="_blank"&gt;PhishTank&lt;/a&gt;，以及   &lt;a href="http://www.apac.cn" target="_blank"&gt;中国防钓鱼网站联盟&lt;/a&gt;。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;增加式登录方式。这种方式被美国银行采用，就是说，你可以上传一个你自己知道的图片，而当你打开登录页面里时，输入了自己的用户名后，你会看到你设置的这个图片被显示出来。如果没有或是显示错了，表示你打开的是钓鱼网站。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;两步验证，通过用户自设密码+手机动态口令登录（好些网站都在使用Google Authenticator的方式，这有点像公司VPN的动态口令）。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;上述都是PC Web上的防范，然而我们的手机移动端做的并不够好，移动端的安全还是要加油。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;安全风控方面&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;什么叫安全风控，说白了就是拿钱出来赔偿给被骗的用户，大家相信我，这个事情在基本上所有的公司都会做的&lt;/strong&gt;，也就是说，无论你怎么做安全也无法保证绝对的安全，你只能缓解或是降低用户被骗的数量或概率。所以，几乎所有的公司都会有一笔钱专门用来赔偿。&lt;/p&gt;
 &lt;p&gt;在西方国家，用户体验很好，我说一个故事，我有一个妹妹在英国，有一天她到ATM上取钱，取完钱后忘了把卡取出，结果后面的人把她的卡里的钱取走了，于是她报了警，等警察做完笔录后，她给银行的客服打了个电话说明了情况，本想冻结银行卡的，但是银行方面二话不说就赔偿了她所有的损失。为什么英国的巴克莱银行这么痛快，是因为他们有风控基金，专门用来处理这样的事的。&lt;/p&gt;
 &lt;p&gt;在中国，其实银行和一些大的公司都有这笔安全风控基金，但是，要你非常坚持不懈地申诉，他们才会赔给你，而且还不是全部。要全部的话，我估计你要做一个“刁民”，否则欺负你，没道理。&lt;/p&gt;
 &lt;h4&gt;关于微信和淘宝&lt;/h4&gt;
 &lt;p&gt;微信和淘宝到底是谁先屏蔽谁我并不关心，这里面的商业利益我也不关心，微信是不是支持卖东西我也不关心。我关心的是寒冬文章中所说的微信上有淘宝钓鱼的安全问题。&lt;/p&gt;
 &lt;p&gt;从技术上来说，我觉得要微信和淘宝一起干这事，单方都不行，需要两边的安全专家一起讨论（如果需要，我可以帮你们约）。我这里给一个可能很不成熟的方案，算是抛砖引玉（我不考虑你们之间的商业竞争，我只从用户的角度出发，客户第一）：&lt;/p&gt;
 &lt;blockquote&gt;  &lt;p&gt;   &lt;strong&gt;我觉得，从业务上来说，淘宝可以在微信上有一个官方的商城。而淘宝的商家，需要取得微信的认证后入住，才能分享相关的商品或店家链接，对此，商家入住，我觉得可通过微信的服务账号与淘宝的商家后台集成可以做到。&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;   &lt;strong&gt;然后，商家也好，买家也好，他们分享商品只能通过微信官方的商城或是商家的服务账号分享出去，而分享出去的商品信息可以是一个比较unique的形式（比如有一个不能伪造的官方认证的标签），而用户的支付可以通过内置的微信支付也可以通过内置的支付宝（通过唤起App并不是一个好的方式，还是应该你们在服务端进行相互的通信）。&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;   &lt;strong&gt;然后微信和淘宝双方通过宣传手段告诉全社会，微信里的商品什么才是正规的，才不是钓鱼的，并给教育用户更为安全地使用手机。&lt;/strong&gt;&lt;/p&gt;&lt;/blockquote&gt;
 &lt;p&gt;P.S. 我虽然这么说，但从我个人来说，我非常理解微信为了让用户有很好的体验而不让微信成为一个四处都是营销商品的地方。所以，我从个人来说，希望微信不要成为一个商家的营销地。另外，我也知道阿里对移动端的看重，所以，上述的方案虽然对用户体验和安全都比较好，但是从目前商业利益的情况看来基本无法实现。不过我这里也只是抛砖引玉了。&lt;/p&gt;
 &lt;p&gt;面对安全和用户这两个事，  &lt;strong&gt;你们两个中国最大的互联网公司，应该带头做好榜样，你们都是不缺钱的公司，应该更多的承担起社会的责任，真正为用户做点什么，而不是整天想着流量入口，互相屏蔽，互相指责，想着自己能有多少用户，这TMD太LOW了，和你们的地位完全不符。所以，从站在用户的角度上来说，我希望微信和淘宝都能站在用户的角度上思考问题，一起合作来真正的为用户更好的服务。&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;（全文完）
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;   &lt;small&gt;2014年12月15日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/12225.html"&gt;DHH 谈混合移动应用开发&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2014年11月26日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/12136.html"&gt;Google Inbox如何跨平台重用代码？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2014年09月28日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/11973.html"&gt;bash代码注入的安全漏洞&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2014年04月21日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/11466.html"&gt;C语言的整型溢出问题&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2014年02月10日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/11021.html"&gt;从“黑掉Github”学Web安全开发&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年12月10日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8711.html"&gt;程序员疫苗：代码注入&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年04月09日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/6976.html"&gt;谈谈数据安全和云存储&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年01月06日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/6424.html"&gt;Hash Collision DoS 问题&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>Web开发 杂项资源 程序设计 网络安全 Android</category>
      <guid isPermaLink="true">https://itindex.net/detail/53194-%E7%A7%BB%E5%8A%A8-%E9%92%93%E9%B1%BC-%E6%94%BB%E5%87%BB</guid>
      <pubDate>Tue, 14 Apr 2015 08:13:23 CST</pubDate>
    </item>
    <item>
      <title>Leetcode 编程训练</title>
      <link>https://itindex.net/detail/51489-leetcode-%E7%BC%96%E7%A8%8B-%E8%AE%AD%E7%BB%83</link>
      <description>&lt;p&gt;  &lt;img alt="LeetCodeLogo (1)" height="100" src="http://coolshell.cn//wp-content/uploads/2014/10/LeetCodeLogo-1.png" width="121"&gt;&lt;/img&gt;Leetcode这个网站上的题都是一些经典的公司用来面试应聘者的面试题，很多人通过刷这些题来应聘一些喜欢面试算法的公司，比如：Google、微软、Facebook、Amazon之类的这些公司，基本上是应试教育的功利主义。&lt;/p&gt;
 &lt;p&gt;我做这些题目的不是为了要去应聘这些公司，而是为了锻炼一下自己的算法和编程能力。因为我开始工作的时候基本没有这样的训练算法和编程的网站，除了大学里的“算法和数据结构”里的好些最基础最基础的知识，基本上没有什么训练。所以，当我看到有人在做这些题的时候，我也蠢蠢欲动地想去刷一下。&lt;/p&gt;
 &lt;p&gt;于是，我花了3-4个月的业余时间，我把  &lt;a href="https://oj.leetcode.com/problems/" target="_blank"&gt;Leetcode的154道题&lt;/a&gt;全部做完了。（这也是最近我没有太多的时间来写博客的原因，你可以看到我之前  &lt;a href="http://coolshell.cn/articles/11847.html" target="_blank" title="&amp;#35868;&amp;#39064;&amp;#30340;&amp;#31572;&amp;#26696;&amp;#21644;&amp;#27963;&amp;#21160;&amp;#30340;&amp;#24515;&amp;#24471;&amp;#20307;&amp;#20250;"&gt;做的那个活动&lt;/a&gt;中有几个算法题来自于Leetcode）有人说我时间太多了，这里声明一下，我基本上都是利用了晚上10点以后的时间来做这些题的。&lt;/p&gt;
 &lt;p&gt;LeetCode的题大致分成两类：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;1）基础算法的知识&lt;/strong&gt;。这些题里面有大量的算法题，解这些题都是有套路的，不是用递归（深度优先DFS，广度优先BFS），就是要用动态规划（Dynamic Programming），或是拆半查找（Binary Search），或是回溯（Back tracing），或是分治法（Divide and Conquer），还有大量的对树，数组、链表、字符串和hash表的操作。  &lt;strong&gt;通过做这些题能让你对这些最基础的算法的思路有非常扎实的了解和训练&lt;/strong&gt;。对我而言，Dynamic Programming 是我的短板，尤其是一些比较复杂的问题，在推导递推公式上总是有思维的缺陷（数学是我的硬伤），通过做了这些题后，我能感到我在DP的思路上有了很大的收获。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;2）编程题&lt;/strong&gt;。比如：atoi，strstr，add two num，括号匹配，字符串乘法，通配符匹配，文件路径简化，Text Justification，反转单词等等，这些题的Edge Case, Corner Case有很多。这些题需要你想清楚了再干，只要你稍有疏忽，就会有几个case让你痛不欲生，而且一不小心就会让你的代码会写得又臭又长，无法阅读。  &lt;strong&gt;通过做这些题，可以非常好的训练你对各种情况的考虑，以及你对程序代码组织的掌控（其实就是其中的状态变量）。&lt;/strong&gt;还记得我在《  &lt;a href="http://coolshell.cn/articles/10822.html" target="_blank" title="&amp;#20989;&amp;#25968;&amp;#24335;&amp;#32534;&amp;#31243;"&gt;函数式编程&lt;/a&gt;》中说的，程序中的状态是你程序变得复杂难维护的直接原因。&lt;/p&gt;
 &lt;p&gt;我觉得每个程序员都应该花时间和精力做这些题，因为你会从这些题中得到很大的收益。做完这些题后你一定会明白下面几个道理：&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;1）想清楚了再干&lt;/strong&gt;。这个观点我以前就在《  &lt;a href="http://coolshell.cn/articles/5686.html" target="_blank" title="&amp;#22810;&amp;#20123;&amp;#26102;&amp;#38388;&amp;#33021;&amp;#23569;&amp;#20889;&amp;#20123;&amp;#20195;&amp;#30721;"&gt;多些时间可以少些代码&lt;/a&gt;》说过。如果你拿到题就上去直接写代码的话，你一定会被各种case打回来了。然后呢，你一着急，你就会进入那种我在《  &lt;a href="http://coolshell.cn/articles/11656.html" target="_blank" title="&amp;#24320;&amp;#21457;&amp;#22242;&amp;#38431;&amp;#30340;&amp;#25928;&amp;#29575;"&gt;开发团队的效率&lt;/a&gt;》中说的那种毫无效率case by case的开发模式，而你也进入了“平庸模式”。于是你就会出现下图那样的情况。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="Case-by-Case Developement" height="231" src="http://coolshell.cn//wp-content/uploads/2014/10/bug_fixing.gif" width="440"&gt;&lt;/img&gt;  &lt;p&gt;Case-by-Case Development&lt;/p&gt;&lt;/div&gt;
 &lt;p&gt;  &lt;strong&gt;2) 编程是脑力劳动，急不得&lt;/strong&gt;。这个事情在这做这些题的时候你就会发现，要么是脑子转不过来了，要么就是明明就差一点了，但程序怎么都调不对。如果你越着急的话，你就会发现你会离目标越远，而花的时间也会更多。另外，你会发现这些题基本上都是50行代码内就可以搞定的，但是为了这50行以内的代码，你要花好多时间和精力。coding  50行代码在我们的日常工作中分分钟就完成，而Leetcode里的50行代码却没那么简单，也许，用这个你就可以区别什么是码农，什么是程序员了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;3）加班要不得。&lt;/strong&gt;因为我总是在晚上10点以后做题，所以，基本上都是在加班状态中工作。这种状态过上两三天，你就会发现，整个大脑已经不转了，而且不但不转，还会犯很多低级错误，很多事情都想不清楚，一个晚上都在和程序的状态控制做搏斗，代码写得越来越乱，越来越没条理。于是这种时候，我都会休息几天，不做题了，然后再做题的时候，就觉得非常地清楚。可见加班 是编程最致命的敌人！&lt;/p&gt;
 &lt;p&gt;我把我的C++代码放到了Github上，大家也帮我review一下，看看有没有可以改善的。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="https://github.com/haoel/leetcode" target="_blank"&gt;https://github.com/haoel/leetcode&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;好了，不多说了，  &lt;strong&gt;我希望大家有时间都去练练LeetCode，无论是找工作还是对你的编程能力会有非常大的提高&lt;/strong&gt;。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;（全文完）
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;   &lt;small&gt;2012年08月22日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8138.html"&gt;为什么我反对纯算法面试题&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年10月14日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8387.html"&gt;Bret Victor – Learnable Programming&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年11月22日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8638.html"&gt;为什么不能用微信或米聊这类的软件&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年04月11日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/6994.html"&gt;我们需要专职的QA吗？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年09月07日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8239.html"&gt;无锁队列的实现&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年08月16日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8088.html"&gt;对技术的态度&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年04月19日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/7126.html"&gt;这到底是谁之错？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年09月14日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8275.html"&gt;对九个超级程序员的采访&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>C/C++语言 杂项资源 编程语言 Algorithm C++</category>
      <guid isPermaLink="true">https://itindex.net/detail/51489-leetcode-%E7%BC%96%E7%A8%8B-%E8%AE%AD%E7%BB%83</guid>
      <pubDate>Thu, 23 Oct 2014 10:51:54 CST</pubDate>
    </item>
    <item>
      <title>DHH 谈混合移动应用开发</title>
      <link>https://itindex.net/detail/52190-dhh-%E6%B7%B7%E5%90%88-%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8</link>
      <description>&lt;p&gt; &lt;/p&gt;
 &lt;p&gt;  &lt;img alt="1053-DHH" height="80" src="http://coolshell.cn//wp-content/uploads/2014/12/1053-DHH-150x150.jpg" width="80"&gt;&lt;/img&gt;David，Ruby on Rails 作者，37signals 合伙人&lt;/p&gt;
 &lt;p&gt;畅销书作家、演说家、赛车手、业余摄影师、顾家好男人&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://37signals.com/" target="_blank"&gt;37signals&lt;/a&gt; 在2013年2月发布了 Basecamp 的 iPhone app，在此之前我们就使用原生开发（native）还是混合开发（hybrid）做了许多尝试。在2012年项目启动的时候，大多数人都倾向于原生开发。&lt;/p&gt;
 &lt;p&gt;Facebook 在2012年发布了他们新的 iOS app，为了获得更好的用户体验，他们放弃了原来的 HTML5 混合开发方式。考虑到2010～2011年的时候，HTML 在移动端的性能确实不尽如人意，这个决定在当时看来也在情理之中。2010年的时候我们觉得 iPhone 3G/3GS 够眩够快，但按照现在的标准来看它们就太慢了。因此在为移动应用开发做架构设计时，我们需要考虑新的移动设备的计算能力，而不是那些老的过时的设备。&lt;/p&gt;
 &lt;h4&gt;移动开发架构设计不需要过多考虑设备的性能&lt;/h4&gt;
 &lt;p&gt;我们从一些测试中得出的一个结论是：现在的移动设备计算能力都很强，运行原生应用和 HTML 应用的效果差别不大，而 HTML 开发的成本则要比原生开发小得多。&lt;/p&gt;
 &lt;p&gt;当然这个结论在某些领域并不太适用。如果你要开发一个 3D 游戏，原生开发方式能够带来更好的游戏体验。但如果你的移动应用象 Basecamp 一样侧重信息处理，为了降低开发成本，你就可以考虑混合开发方式。我们就是如此，下面是我们三代移动产品的发展轨迹：&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h4&gt;第一代产品：原生外壳(native shell)＋嵌套WebView&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="1159-basecamp-app-phones" height="242" src="http://coolshell.cn//wp-content/uploads/2014/12/1159-basecamp-app-phones-300x242.jpg" width="300"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;这个版本就是一个简单的原生外壳负责界面导航，嵌套一个 WebView 来显示 Basecamp Rail application，显示的基本上都是我们移动网站页面，再加上一些特殊的样式。&lt;/p&gt;
 &lt;p&gt;在移动网站的页面上嵌套一个原生的壳，听起来还是 Web 页面，但实际带给用户的体验确是非常不同。用户可以在 Apple App Store 找到我们的 app，他们一旦登录 app 后可以再也不用重新登录（移动版本的 Safari 似乎会经常清空 cookie，让你不得不重新登录）。我们的 app 大受欢迎，用户评分在4和5之间。&lt;/p&gt;
 &lt;p&gt;整个 app 由一名程序员和一名设计师开发，成本不高，因为我们可以在已有的移动网站的基础上开发。&lt;/p&gt;
 &lt;p&gt;如果我们当初开发完全原生的 app，用10个人的团队1年半的时间也未必能完成。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h4&gt;第二代产品：原生外壳＋原生导航界面&lt;/h4&gt;
 &lt;p&gt;  &lt;img alt="1543-unnamed" height="300" src="http://coolshell.cn//wp-content/uploads/2014/12/1543-unnamed-187x300.png" width="187"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;几个月前发布的 Basecamp Android app 是我们的第二代产品，我们在其中做了大量的改进。&lt;/p&gt;
 &lt;p&gt;从第一代 iPhone app 中我们感受到了原生导航界面的威力，所以在 Android 版本中，我们由 HTML 页面导航转向了原生导航界面。我们从 HTML 页面生成原生导航界面，用户体验更加流畅，原生界面和 HTML 页面的体验差别越来越小，甚至很难区分哪些是原生部分，哪些是 HTML 。&lt;/p&gt;
 &lt;p&gt;Android 版本是由一两个程序员和一个设计师开发（50%投入）完成的。我们重用了移动站点和 iPhone app 中使用的所有 webview，大大提高了开发效率，同时用户也很买账，超过1000名用户打了4.5~5的高分。&lt;/p&gt;
 &lt;p&gt;很多公司在抱怨他们的 iOS 移动项目进展缓慢，Android 项目似乎更是如此。或许他们已经习惯了 iOS 项目的开发流程，也许是因为 Android 的屏幕碎片化问题，但是这些对我们来说那都不是事。我们推出的 Android app 表现良好，重用了95%的代码，开发团队也一直保持在小规模。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h4&gt;因地制宜地运用原生开发方式&lt;/h4&gt;
 &lt;p&gt;目前我们正在开发第三代产品，发布的平台暂时保密，不过你应该也不难猜到。在前两代产品中，我们增加了原生导航界面的使用，同时进一步确定了以 webview 为核心的整体架构。在第三代产品中，我们将因地制宜地选择需要使用原生开发的功能，好钢要用在刀刃上。&lt;/p&gt;
 &lt;p&gt;从之前的100% HTML，到现在的90% HTML +10%原生，我们会选择最值得做原生开发的那10%的部分，最终目的是让 app 原生部分和 HTML 部分的体验没有太大区别。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h4&gt;混合开发模式使用的技术&lt;/h4&gt;
 &lt;p&gt;混合开发模式在技术很简单，主要是处理 webview 的集成、Web 页面的加载，以及原生内容和 HTML 内容之间的交叉链接，其实可能比你想像的还要简单得多。&lt;/p&gt;
 &lt;p&gt;HTML 方面，我们的 Rails Web 应用支持 Web 和移动两大平台，其中   &lt;a href="http://edgeguides.rubyonrails.org/4_1_release_notes.html#action-pack-variants" target="_blank"&gt;Rails 4.1 feature of variants&lt;/a&gt; 起了很大的作用。&lt;/p&gt;
 &lt;p&gt;这也很大程度上有助于我们发布新功能。设想一下如果我们每次需要更新这么多平台：Rails desktop app, a Rails API app, a client-side MVC app, a mobile web wrapper app, an Android app, and an iPhone app，像我们这样只有10个程序员和7个设计师的公司根本无力承担如此巨大的工作量。&lt;/p&gt;
 &lt;p&gt;除了工作量的减轻，bug 修复效率也提高了，因为大部分的代码逻辑是在 Web 服务器端，我们可以随时修改代码并发布，不用通过 Apple App Store 的审批流程。所以我们的移动 app 和 Web 应用一样，也是持续部署。&lt;/p&gt;
 &lt;p&gt;就如我之前提到的，混合模式开发并不适用于所有情况。在2010年以前，那时手机的处理能力都不强，所以 HTML/JS 的体验并不好，用户也不喜欢。但是时过境迁，现在手机的处理能力大大提高了，HTML/JS 的性能也不再是一个问题。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h4&gt;混合开发模式对原生开发模式的挑战&lt;/h4&gt;
 &lt;p&gt;混合开发模式在降低开发复杂度方面有它的优势，如果你的产品是以显示和处理信息为主，我认为都可以不同程度地采用这个模式。&lt;/p&gt;
 &lt;p&gt;对于小型团队和公司而言，并不一定需要采用 iOS 原生 app 先行的模式。使用混合模式，不需要你重头开发一个 app，这样可以降低维护成本，将来扩展到其他平台也更为方便。&lt;/p&gt;
 &lt;p&gt;当然我知道会有很多人质疑这个模式，或许因为他们的 app 中有很多地方需要原生开发（也许仅仅是他们自己这样认为罢了）。又或许他们已经花了很多时间让 app 里的 UITableView 看起来非常漂亮，以致如果其他地方不这样的话显得不是太完美。再或许大公司就是喜欢耗时耗力的原生开发，有钱就是这么任性。&lt;/p&gt;
 &lt;p&gt;无论怎样，混合开发当下应该能够成为我们移动开发策略的一个选择。如果你认为这是一个好的选择，那么恭喜你，尽情愉快地玩耍吧！&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;  &lt;em&gt;原文链接：   &lt;a href="https://signalvnoise.com/posts/3743?utm_campaign=iOS_Dev_Weekly_Issue_175&amp;utm_medium=email&amp;utm_source=iOS%2BDev%2BWeekly" target="_blank"&gt;Hybrid sweet spot: Native navigation, web content&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;下面补充一些 David 答读者问：&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;Mike Waite @ 2014-05-08：我很好奇你是如何决定哪些功能要用原生开发？  &lt;br /&gt;
David @ 2014-05-08：主要靠感觉，这毕竟不是一门科学。如果你感觉你app的某一部分如果用原生开发会更好些，可以尝试做快速原型（spike）。很多时候我们通过这种方式证明我们的想法其实是错的。当然如果你需要使用到手机上的功能如：摄像和其他设备时，HTML目前还不太适用，不过永远也不要把话说死。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;Mike Parsons @ 2014-05-08：好文。很好奇你们是否使用 PhoneGap 或者 Cordova 这样的框架，或者你们自己开发了一个？  &lt;br /&gt;
David @ 2014-05-08：我们没有使用任何框架。（此处省去xxx字）&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;Derick @ 2014-05-08：你怎样解决 Android 浏览器渲染速度慢的问题？这也是 Android 平台上更多人倾向开发原生app得原因。  &lt;br /&gt;
David @ 2014-05-08：不知道你这个结论是近期的还是以前的？Basecamp 的 Android app 在我的 Nexus 5 和 HTC One 上面运行得非常流畅。  &lt;br /&gt;
Derick @ 2014-05-08：就是最近。我猜测可能和你使用JavaScript的多少有关系。因为以我个人的经验，Android 上 JavaScript 的运行速度非常慢。如果你感兴趣可以看看下面的文章：  &lt;a href="https://www.timroes.de/2013/11/23/old-webview-vs-chromium-webview/" target="_blank"&gt;https://www.timroes.de/2013/11/23/old-webview-vs-chromium-webview/&lt;/a&gt;  &lt;br /&gt;
David @ 2014-05-08：我们使用了很多JavaScript，当然没有 Web MVC 客户端用得那样多。另外我们使用了 Turbolinks ：）&lt;/p&gt;
 &lt;p&gt; 
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;   &lt;small&gt;2014年11月26日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/12136.html"&gt;Google Inbox如何跨平台重用代码？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2010年03月10日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/2117.html"&gt;Titanium – 桌面和移动应用开发平台&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2010年08月26日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/2853.html"&gt;实用Android开发工具和资源精选&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年08月02日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/5089.html"&gt;10个必需的iOS开发工具和资源&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年04月06日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/4220.html"&gt;一些有意思的文章和资源&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2010年03月25日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/2155.html"&gt;别只谈系统备份，谈谈怎样恢复系统吧！&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2014年09月28日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/11973.html"&gt;bash代码注入的安全漏洞&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2009年03月26日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/247.html"&gt;基于JVM的语言正在开始流行&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>技术读物 杂项资源 Android Hybrid iOS</category>
      <guid isPermaLink="true">https://itindex.net/detail/52190-dhh-%E6%B7%B7%E5%90%88-%E7%A7%BB%E5%8A%A8%E5%BA%94%E7%94%A8</guid>
      <pubDate>Mon, 15 Dec 2014 10:57:20 CST</pubDate>
    </item>
    <item>
      <title>[JS]36个卓越的可视化数据工具（图表库）</title>
      <link>https://itindex.net/detail/50327-js-%E5%8D%93%E8%B6%8A-%E5%8F%AF%E8%A7%86%E5%8C%96</link>
      <description>&lt;p&gt;如果将数据直接以文字形式展示，这样用户阅读起来是非常困难的，所以如果我们使用可视化形式来展示数据，这就会更清晰易懂。这里由smashingapps整理了36个卓越的可视化数据工具，有地图图表、有柱状图表、饼状、散点等等，是一个不错的list收集。&lt;/p&gt;
 &lt;p&gt;下面来看看这些可视化数据图表工具，或许会对你的项目带来帮助。&lt;/p&gt;
 &lt;h3&gt;Ember Charts&lt;/h3&gt;
 &lt;p&gt;这个图表库需要依赖Ember.js 和 d3.js，多个图表样式，柱状、饼状、散点图。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/0328343cF.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://addepar.github.io/#/ember-charts/overview" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Modest Maps&lt;/h3&gt;
 &lt;p&gt;一个地图js插件，大小只有10KB，兼容Firefox, Chrome, Opera, iOS, Android, 和IE7-9浏览器。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032822dZB.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://modestmaps.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Flot Charts&lt;/h3&gt;
 &lt;p&gt;折线类图表，使用纯JavaScript绘制的jQeruy库，重点是使用简单，外观友好。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032823oti.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.flotcharts.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Leaflet&lt;/h3&gt;
 &lt;p&gt;Leaflet 是一个开源的地图JS库，交互上比较友好。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032824uei.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://leafletjs.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Raphael&lt;/h3&gt;
 &lt;p&gt;Raphael 是一个小型的JavaScript库，图表有很多个样式，使用方法简单。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032826BsP.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://raphaeljs.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Pizza Pie Charts&lt;/h3&gt;
 &lt;p&gt;比萨饼图，其实就是饼状图表，效果不错。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032829G00.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://zurb.com/playground/pizza-pie-charts" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Chartkick&lt;/h3&gt;
 &lt;p&gt;美丽的曲线风格图表，当然还有饼状。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032830By7.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://ankane.github.io/chartkick/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Cube&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032834Esm.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://square.github.io/cube/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Better World Flux&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032835y5B.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.betterworldflux.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Polymaps&lt;/h3&gt;
 &lt;p&gt;地图类js库。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032835G4D.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://polymaps.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Google Charts&lt;/h3&gt;
 &lt;p&gt;谷歌的图表库工具，功能强大，支持HTML5生成SVG图表，简单易用，而且免费。图表风格很多，其交互效果也很漂亮，值得使用。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032836iZ4.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="https://developers.google.com/chart/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;jQplot&lt;/h3&gt;
 &lt;p&gt;jQeruy图表库。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032836Buo.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.jqplot.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Gantti&lt;/h3&gt;
 &lt;p&gt;Gantti是一个简单的PHP甘特图。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/03283713R.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://bastianallgeier.com/gantti/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Smoothie Charts&lt;/h3&gt;
 &lt;p&gt;一个Javascript数据图表库。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032838PLL.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://smoothiecharts.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Envision&lt;/h3&gt;
 &lt;p&gt;Envision.js 是一个动态的HTML5可视化图表。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032843Ca4.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.humblesoftware.com/envision" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Arborjs&lt;/h3&gt;
 &lt;p&gt;Arborjs是一个可视化jQuery图形库。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032843mWu.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://arborjs.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Manyeyes&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032845cnr.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www-958.ibm.com/software/data/cognos/manyeyes/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;D3js&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032845MFH.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://d3js.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Gephi&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032846Ilm.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://gephi.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Highcharts&lt;/h3&gt;
 &lt;p&gt;Javascript交互图表，适合用于web项目。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032846ZR3.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.highcharts.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;JavaScript InfoVis Toolkit&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032847Hbo.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://philogb.github.io/jit/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;jpGraph&lt;/h3&gt;
 &lt;p&gt;JpGraph 使用PHP &amp;gt;= 5.1 编写的数据图表。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032847qot.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://jpgraph.net/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Timeline&lt;/h3&gt;
 &lt;p&gt;时间轴图表。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032848nWy.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.simile-widgets.org/timeline/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Wolfram Alpha&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/0328499df.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.wolframalpha.com/about.html" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Cross Filter&lt;/h3&gt;
 &lt;p&gt;Crossfilter 这个图表在浏览器中响应速度极快(&amp;lt;30毫秒)&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032849QIz.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://square.github.io/crossfilter/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Open Layers&lt;/h3&gt;
 &lt;p&gt;地图类插件&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032850jFM.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://openlayers.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Fusion Charts&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/0328521rR.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.fusioncharts.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Raw&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032852Q9A.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://raw.densitydesign.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Springy&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032854Jvk.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://getspringy.com/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Bonsaijs&lt;/h3&gt;
 &lt;p&gt;一个轻量级的图形库，可渲染出直观的SVG图形。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032854GJe.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://bonsaijs.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Humble Finance&lt;/h3&gt;
 &lt;p&gt;HumbleFinance 是一个HTML5数据可化图表插件，交互效果良好。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032856NvR.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.humblesoftware.com/finance/index" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Protovis&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032859wWe.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://mbostock.github.io/protovis/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Axiis&lt;/h3&gt;
 &lt;p&gt;Axiis 是一个开源的可视化数据框架，提供给初学者和专业开发人员使用。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/0329014Ch.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://www.axiis.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;TimeFlow&lt;/h3&gt;
 &lt;p&gt;TimeFlow 是一个可视化时间分析工具。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/0329039zo.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="https://github.com/FlowingMedia/TimeFlow/wiki" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Paper.js&lt;/h3&gt;
 &lt;p&gt;一个使用HTML5 Canvas输出的JS图表库&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="js&amp;#24211; &amp;#22270;&amp;#34920; &amp;#21487;&amp;#35270;&amp;#21270;" src="http://images.shejidaren.com/wp-content/uploads/2014/07/032906Vwr.jpg" width="500"&gt;&lt;/img&gt;  &lt;br /&gt;
  &lt;a href="http://paperjs.org/" rel="nofollow" target="_blank"&gt;进入网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;整理自:  &lt;a href="http://www.smashingapps.com/2014/06/30/36-excellent-data-visualization-tools.html" rel="nofollow" target="_blank"&gt;smashingapps&lt;/a&gt;&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt;Copyright ©2010-2014 ¦  &lt;a href="http://www.shejidaren.com/feed" target="_blank" title="RSS&amp;#35746;&amp;#38405;"&gt;RSS订阅&lt;/a&gt; ¦  &lt;a href="http://weibo.com/shejidaren888" target="_blank" title="&amp;#26032;&amp;#28010;&amp;#24494;&amp;#21338;"&gt;新浪微博&lt;/a&gt; ¦  &lt;a href="http://www.shejidaren.com/visualization-data-tools.html" target="_blank" title="[JS]36&amp;#20010;&amp;#21331;&amp;#36234;&amp;#30340;&amp;#21487;&amp;#35270;&amp;#21270;&amp;#25968;&amp;#25454;&amp;#24037;&amp;#20855;&amp;#65288;&amp;#22270;&amp;#34920;&amp;#24211;&amp;#65289;"&gt;本文链接&lt;/a&gt; ¦  &lt;a href="http://www.shejidaren.com/visualization-data-tools.html#respond" target="_blank" title="[JS]36&amp;#20010;&amp;#21331;&amp;#36234;&amp;#30340;&amp;#21487;&amp;#35270;&amp;#21270;&amp;#25968;&amp;#25454;&amp;#24037;&amp;#20855;&amp;#65288;&amp;#22270;&amp;#34920;&amp;#24211;&amp;#65289;&amp;#30340;&amp;#35780;&amp;#35770;"&gt;添加评论&lt;/a&gt;  &lt;br /&gt;交流：UI设计交流群：59300679，与500名设计师交流设计，分享素材。&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>优秀设计资源 jQuery</category>
      <guid isPermaLink="true">https://itindex.net/detail/50327-js-%E5%8D%93%E8%B6%8A-%E5%8F%AF%E8%A7%86%E5%8C%96</guid>
      <pubDate>Wed, 09 Jul 2014 15:22:15 CST</pubDate>
    </item>
    <item>
      <title>可视化编程</title>
      <link>https://itindex.net/detail/48198-%E5%8F%AF%E8%A7%86%E5%8C%96-%E7%BC%96%E7%A8%8B</link>
      <description>&lt;p&gt;本文来自《  &lt;a href="http://blog.interfacevision.com/design/design-visual-progarmming-languages-snapshots/" target="_blank"&gt;Visual Programming Languages – Snapshots&lt;/a&gt;》，作者  &lt;a href="http://twitter.com/erichosick" target="_blank"&gt;Eric Hosick&lt;/a&gt;收集了一堆关于可视化编程的工具，好多我都听都没听说过，我一股脑的全转过来，给大家看看，算是开开眼界了。本文也是参考了Wikipedia的   &lt;a href="http://en.wikipedia.org/wiki/Visual_programming_language"&gt;Visual Programming Language&lt;/a&gt; 词条。&lt;/p&gt;
 &lt;p&gt;另外，在原文有很多评论，其中也有很多正文没有提到的，你可以前去围观一下。&lt;/p&gt;
 &lt;h4&gt;SketchPad&lt;/h4&gt;
 &lt;p&gt;Maybe the first. 1963.&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://mydiesel22.blogspot.com/2011/05/vector-and-digital-graphics.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Sketchpad"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.youtube.com/watch?v=495nCzxM9PI&amp;feature=player_embedded"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="407" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_sketchpad_01.jpg" width="576"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h4&gt;Alice&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.alice.org/index.php"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Alice_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://en.wikipedia.org/wiki/File:Alice-2-screenshot.jpg"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_alice_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;App Inventor For Android&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://beta.appinventor.mit.edu/learn/tutorials/whereismycar/whereismycar.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/App_Inventor_for_Android"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://appinventor.mit.edu/explore/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_app_inventor_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;ArcGIS Model Builder&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.rockware.com/product/featuresLobby.php?id=193&amp;category=615"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://resources.arcgis.com/en/help/main/10.1/index.html#//002w00000001000000"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_app_arcgis_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Automator&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.apple.com/remotedesktop/automation.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Automator_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.apple.com/osx/apps/#automator"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_automator_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Blockly&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://i.imgur.com/PfJO2.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="https://code.google.com/p/blockly/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_blockly_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Bounce&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.art.net/~hopkins/Don/lang/bounce/SpaceSeedCircuits.gif"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.art.net/~hopkins/Don/lang/bounce/bounce.html"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_bounce_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Copper Thoughts&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.copperthoughts.com/assets/request-fsm-instance.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.copperthoughts.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_copper_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;DRAKON&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/DRAKON"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/DRAKON"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://drakon-editor.sourceforge.net/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="712" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_drakon_01.png" width="720"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Etoys / Squeak&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/File:Squeak-screenshot.png"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Etoys_%28programming_language%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.squeakland.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="496" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_etoysqueak_01.png" width="733"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Field&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://openendedgroup.com/field/OverviewBanners2.html"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://openendedgroup.com/field/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="442" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_field_01.png" width="860"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;FL Studio&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://freaksolid.wordpress.com/2013/05/20/fl-studio-11-patcher-dj-performance-presets/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Fl_studio"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.image-line.com/flstudio/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="610" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_flstudiopatcher_01.jpg" width="1082"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Flow Hub and NoFlo&lt;/h4&gt;
 &lt;p&gt;Flow-Based Programming.&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://flowhub.io/"&gt;图片来源 1&lt;/a&gt;,   &lt;a href="http://cdn.thegrid.io.s3.amazonaws.com/noflo/kickstarter/images/UI-03.jpg"&gt;图片来源 2&lt;/a&gt;   &lt;a href="http://noflojs.org/"&gt;官方网站 1&lt;/a&gt; 和   &lt;a href="http://flowhub.io/"&gt;官方网站 2&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="451" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_flohub_01.png" width="819"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="562" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_noflo_01.jpg" width="734"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;FlowStone&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/File:FlowStone_Large_Screenshot.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.dsprobotics.com/flowstone.html"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_flowstone_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;GoDot Engine&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.godotengine.org/wp/wp-content/uploads/2014/01/editor2.jpg"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.godotengine.org/wp/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_godot_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Google Web Designer&lt;/h4&gt;
 &lt;p&gt;  &lt;a&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Google_Web_Designer"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="https://www.google.com/webdesigner/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_webdesigner_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Hopscotch&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="https://www.gethopscotch.com/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Hopscotch_%28programming_language%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="https://www.gethopscotch.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_hopscotch_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;HyperCard&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.smackerel.net/black_white_02.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/HyperCard"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://hypercard.org/"&gt;官方网站???&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_hypercard_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;IFTTT&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="https://ifttt.com/recipes"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Ifttt"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="https://ifttt.com/wtf"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_ifttt_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Illumination Software Creator&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://lunduke.com/2010/06/16/illumination-software-creator-20-beta-2/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Illumination_Software_Creator"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://lunduke.com/2010/06/16/illumination-software-creator-20-beta-2/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_illumination_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Intentional Technology&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.intentsoft.com/intentional-technology/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.intentsoft.com/intentional-technology/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_IntentionalTech_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Jeskola Buzz&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://blog.livedoor.jp/acid808/archives/cat_693944.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Jeskola_Buzz"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.jeskola.net/buzz/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_jeskolabuzz_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Kimono&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.kimonolabs.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_kimono_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Kodu (Boku)&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.interactiveclassroom.net/?p=508"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Kodu"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://research.microsoft.com/en-us/projects/kodu/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_kodu_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;LabView&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.ni.com/newsletter/51735/en/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/LabVIEW"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.ni.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_labview_02.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Ladder Logic&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/Ladder_logic"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Ladder_logic"&gt;Wikipedia&lt;/a&gt; 和   &lt;a&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_ladderlogic_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Lamdu&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://peaker.github.io/lamdu/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://peaker.github.io/lamdu/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_lamdu_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Lava&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://lavape.sourceforge.net/Derivation.htm"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Lava_%28programming_language%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://lavape.sourceforge.net/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="639" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_lava_01.png" width="660"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Learnable Programming&lt;/h4&gt;
 &lt;p&gt;More of a post on different ways to learn programming.&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://worrydream.com/#!/LearnableProgramming"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://worrydream.com/#!/LearnableProgramming"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_learnable_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Light Table&lt;/h4&gt;
 &lt;p&gt;Chris Granger’s development environment.   &lt;a href="https://plus.google.com/+JJoeDouglas/posts"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Light_table_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.lighttable.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_lighttable_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Lily&lt;/h4&gt;
 &lt;p&gt;Really cool and hard to describe. You need to visit their demo web page and watch their videos.   &lt;a href="http://blog.lilyapp.org/lily/demo/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Lily_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://blog.lilyapp.org/lily/demo/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_lily_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Limnor Studio&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.limnor.com/studio_whatIsIt.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Limnor"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.limnor.com/studio_whatIsIt.html"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_limnorstudio_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Little Big Planet&lt;/h4&gt;
 &lt;p&gt;Someone built an An   &lt;a href="http://www.youtube.com/watch?v=jWanvKdurU0"&gt;8-bit Mechanical Adder in LittleBigPlanet&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.youtube.com/watch?v=jWanvKdurU0"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/LittleBigPlanet"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://littlebigplanet.playstation.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_littlebig_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Minecraft&lt;/h4&gt;
 &lt;p&gt;Considering someone has created a   &lt;a href="http://www.youtube.com/watch?v=frcr9XYeTW4"&gt;fully programmable computer&lt;/a&gt; using Minecraft.&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.youtube.com/watch?v=frcr9XYeTW4"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Minecraft"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="https://minecraft.net/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_minecraft_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Minibloq&lt;/h4&gt;
 &lt;p&gt;This has a really cool looking interface.   &lt;a href="http://en.wikipedia.org/wiki/File:ToneWithVariables.png"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Minibloq"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://blog.minibloq.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_minibloq_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Morphic&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.cc.gatech.edu/fac/mark.guzdial/squeak/startingmorphic.html"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Morphic_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.dmoz.org/Computers/Software/Operating_Systems/Graphic_Subsystems/Morphic"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_morphic_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Mozilla Appmaker&lt;/h4&gt;
 &lt;p&gt;This was discussed quite a bit on   &lt;a href="https://news.ycombinator.com/item?id=6501731"&gt;Ycombinator&lt;/a&gt;.   &lt;a href="http://2.bp.blogspot.com/-1xD81b5fPso/Uly-amqf9vI/AAAAAAAAC8I/n7ehLipb1CE/s1600/appmaker.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="https://appmaker.mozillalabs.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_appmaker_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;MST Workshop&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://home.comcast.net/~tpandolfi/site/?/photos/&amp;PHPSESSID=63621f2035fe55537d794ab0ac795934"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/MST_Workshop"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://home.comcast.net/~tpandolfi/site/?/home/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_mst_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;NeatTools Visual Programming Environment&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.sensyr.com/NeatTools.html"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.neattools.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_NeatTools_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;NodeBox&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://nodebox.net/node/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://nodebox.net/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_nodebox_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Nuke&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.thefoundry.co.uk/products/nuke-product-family/nuke/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Nuke_%28software%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.thefoundry.co.uk/products/nuke-product-family/nuke/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_nuke_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;NXT-G&lt;/h4&gt;
 &lt;p&gt;Legos!!!   &lt;a href="http://www.brickshelf.com/cgi-bin/gallery.cgi?i=2051945"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Lego_Mindstorms_NXT#NXT-G"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.legoengineering.com/program/nxt-g/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_nxt-g_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Open Modelica&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.marekgayer.com/en/projects/incfd/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="https://www.openmodelica.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_openmodelica_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Open Music&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/File:Om_patch.gif"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/OpenMusic"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://repmus.ircam.fr/openmusic/home"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_openmusic_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;OpenWire&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.mitov.com/products/openwire#screenshots"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/OpenWire_%28library%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.mitov.com/products/openwire#overview"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_openwire_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Origami&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://a.36krcnd.com/photo/2014/d2878df00bea4bfb782037f1683423e3.jpg"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://facebook.github.io/origami/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_origami_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Piet&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/Piet_%28programming_language%29#Piet"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Piet_%28programming_language%29#Piet"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.retas.de/thomas/computer/programs/useless/piet/Piet/index.html"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_piet_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Programming Without Coding Technology&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://sourceforge.net/projects/doublesvsoop/?source=recommended"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://doublesvsoop.sourceforge.net/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_pwct_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Prograph&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/File:Prograph_database_operation.PNG"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Prograph"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://c2.com/cgi/wiki?PrographLanguage"&gt;官方网站??&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_prograph_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Pure Data&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://en.wikipedia.org/wiki/File:Pd_example_3.svg"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Pure_Data"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://puredata.info/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_puredata_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Quartz Composer&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://mastersofmedia.hum.uva.nl/2011/10/24/finally-it-comes-together/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Quartz_Composer"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="https://developer.apple.com/technologies/mac/graphics-and-animation.html"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_quartz_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Reaktor&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://media.soundonsound.com/sos/oct99/images/reaktor5.gif"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Reaktor"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.native-instruments.com/en/products/komplete/synths-samplers/reaktor-5/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_reaktor_01.gif"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Scheme Bricks&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.pawfal.org/dave/blog/2010/05/scheme-bricks-for-graphics/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.pawfal.org/dave/index.cgi?Projects/Scheme%20Bricks"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_schemebricks_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Scratch&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://scratch.mit.edu/projects/11126006/#editor"&gt;图片来源 1&lt;/a&gt;,   &lt;a href="http://scratch.mit.edu/projects/11126006/#editor"&gt;图片来源 2&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Scratch_%28programming_language%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://scratch.mit.edu/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_scratch_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_scratch_02.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Self&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://handbook.selflanguage.org/current/langref.html#objects"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Self_%28programming_language%29"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://selflanguage.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_self_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Sextante&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.gvsig.com/files/images/screenshots/gvSIG_Sextante_02.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://sextantegis.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_sextante_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Simulink&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.mathworks.com/products/simulink/?s_cid=wiki_simulink_8"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Simulink"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.mathworks.com/products/simulink/?s_cid=wiki_simulink_8"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_simlink_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Sikuli&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://hellotestworld.com/2012/04/27/sikuli-for-all-those-hard-to-reach-places/"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Sikuli"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.sikuli.org"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_sikuli_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;SQL Server Integration Services&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://technet.microsoft.com/en-us/library/cc917721.aspx"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/SQL_Server_Integration_Services"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.microsoft.com/en-us/sqlserver/solutions-technologies/enterprise-information-management/integration-services.aspx"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_sqlintegration_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Story Code&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://softconstructors.com/en/applications/stroycode/screenshots.html"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://softconstructors.com/en/applications/stroycode/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_stroycode_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;TextIt&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="https://textit.in/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="https://textit.in/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_textit_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Touch Develop&lt;/h4&gt;
 &lt;p&gt;From Microsoft research.&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://handheld.softpedia.com/progScreenshots/TouchDevelop-Screenshot-125731.html"&gt;图片来源&lt;/a&gt; 和   &lt;a href="https://www.touchdevelop.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_touchdevelop_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Tydlig&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://tydligapp.com/images/screenshots/1-physics.png"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://tydligapp.com/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_tydlig_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;UDK&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.youtube.com/watch?v=0OR63rDN5p8"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.unrealengine.com/en/udk/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_udk_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Visual JForex&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://i1.ytimg.com/vi/iz5numHchGU/maxresdefault.jpg"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://www.dukascopy.com/swiss/english/forex/Visual/features/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_jforex_01.jpg"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;VUO&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://www.vjunion.se/2013/03/a-great-start-to-the-new-year/"&gt;图片来源&lt;/a&gt; 和   &lt;a href="http://vuo.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_vuo_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;VVVV&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://vvvv.org/contribution/vvvv.packs.image"&gt;图片来源 1&lt;/a&gt;,   &lt;a href="http://kristiansmusicproductionblog.com/wp-content/uploads/vvvv.png"&gt;图片来源 2&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Vvvv"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://www.vvvv.org/"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_vvvv_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_vvvv_02.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h4&gt;Windows Workflow Foundation&lt;/h4&gt;
 &lt;p&gt;  &lt;a href="http://fryerblog.com/post/2179029238/a-windows-workflow-foundation-example"&gt;图片来源&lt;/a&gt;,   &lt;a href="http://en.wikipedia.org/wiki/Windows_Workflow_Foundation"&gt;Wikipedia&lt;/a&gt; 和   &lt;a href="http://msdn.microsoft.com/en-us/vstudio/jj684582.aspx"&gt;官方网站&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://blog.interfacevision.com/assets/img/posts/example_visual_language_winworkflow_01.png"&gt;&lt;/img&gt;  &lt;img alt=""&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;（全文完）
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;   &lt;small&gt;2012年10月14日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8387.html"&gt;Bret Victor – Learnable Programming&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年02月28日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/3723.html"&gt;（麻省理工免费课程）计算机科学和编程导论&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2009年06月04日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/968.html"&gt;18个Web开发的IDE&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2009年12月01日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/1883.html"&gt;Coderun.com 在线开发IDE&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年05月04日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/4657.html"&gt;狗日的开源软件许可证&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年08月20日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8115.html"&gt;GCC 用 C++ 来编译&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年01月28日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/3609.html"&gt;那些炒作过度的技术和概念&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2013年12月03日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/10739.html"&gt;Lua简明教程&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;  &lt;a href="http://www.zemanta.com/?wp-related-posts" rel="nofollow" target="_blank"&gt;Zemanta&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>杂项资源 编程工具 IDE Programming Visual</category>
      <guid isPermaLink="true">https://itindex.net/detail/48198-%E5%8F%AF%E8%A7%86%E5%8C%96-%E7%BC%96%E7%A8%8B</guid>
      <pubDate>Sat, 22 Feb 2014 00:27:10 CST</pubDate>
    </item>
    <item>
      <title>从“黑掉Github”学Web安全开发</title>
      <link>https://itindex.net/detail/47991-github-web-%E5%AE%89%E5%85%A8</link>
      <description>&lt;p&gt;  &lt;img alt="" height="211" src="http://coolshell.cn//wp-content/uploads/2014/02/Github-Security.png" width="199"&gt;&lt;/img&gt;Egor Homakov（Twitter:   &lt;a href="http://twitter.com/homakov"&gt;@homakov&lt;/a&gt; 个人网站:   &lt;a href="http://egorhomakov.com/"&gt;EgorHomakov.com&lt;/a&gt;）是一个Web安全的布道士，他这两天把github给黑了，并给github报了5个安全方面的bug，他在他的这篇blog——《  &lt;a href="http://homakov.blogspot.com/2014/02/how-i-hacked-github-again.html" target="_blank"&gt;How I hacked Github again&lt;/a&gt;》（墙）说明了这5个安全bug以及他把github黑掉的思路。Egor的这篇文章讲得比较简单，很多地方一笔带过，所以，  &lt;strong&gt;我在这里用我的语言给大家阐述一下黑掉Github的思路以及原文中所提到的那5个bug。希望这篇文章能让从事Web开发的同学们警惕&lt;/strong&gt;。关于Web开发中的安全事项，大家可以看看这篇文章《  &lt;a href="http://coolshell.cn/articles/6043.html" target="_blank" title="Web&amp;#24320;&amp;#21457;&amp;#20013;&amp;#38656;&amp;#35201;&amp;#20102;&amp;#35299;&amp;#30340;&amp;#19996;&amp;#35199;"&gt;Web开发中的你需要了解的东西&lt;/a&gt;》&lt;/p&gt;
 &lt;h4&gt;OAuth简介&lt;/h4&gt;
 &lt;p&gt;首先，这个故事要从  &lt;a href="https://developer.github.com/v3/oauth/" target="_blank"&gt;Github OAuth&lt;/a&gt;讲起。所以，我们需要先知道什么是  &lt;a href="http://en.wikipedia.org/wiki/OAuth" target="_blank"&gt;OAuth&lt;/a&gt;。所谓OAuth就是说，第三方的应用可以通过你的授权而不用知道你的帐号密码能够访问你在某网站的你自己的数据或功能。像Google, Facebook, Twitter等网站都提供了OAuth服务，提供OAuth服务的网站一般都有很多开放的API，第三方应用会调用这些API来开发他们的应用以让用户拥有更多的功能，但是，当用户在使用这些第三方应用的时候，这些第三方的应用会来访问用户的帐户内的功能和数据，所以，当第三应用要干这些事的时候，我们不能让第三方应用弹出一个对话框来问用户要他的帐号密码，不然第三方的应用就把用户的密码给获取了，所以，OAuth协议会跳转到一个页面，让用户授权给这个第三方应用以某些权限，然后，这个权限授权的记录保存在Google/Facebook/Twitter上，并向第三方应用返回一个授权token，于是第三方的应用通过这个token来操作某用户帐号的功能和数据时，就畅通无阻了。下图简单地说明了Twitter的OAuth的授权过程。&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="375" src="http://coolshell.cn//wp-content/uploads/2014/02/oauth-authentication.png" width="630"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;从上面的流程图中，我们可以看OAuth不管是1.0还是2.0版本都是一个比较复杂的协议，所以，在Server端要把OAuth实现对并不是一些容易事，其总是或多或少会有些小错误。Egor就找到了几个Github的OAuth的实现的问题。&lt;/p&gt;
 &lt;h4&gt;OAuth的Callback&lt;/h4&gt;
 &lt;p&gt;还需要注意的是，因为OAuth是需要跳到主站的网页上去让用户授权，当用户授权完后，需要跳转回原网页，所以，一般来说，OAuth授权页都会带一个 redirect_url的参数，用于指定跳转回原来的网页。Github使用的这个跳转参数是redirect_uri参数。一般来说，redirect_uri这个参数需要在服务器端进行验证。&lt;/p&gt;
 &lt;p&gt;你想一下，如果有人可以控制这个redirect_uri这个参数，那么，你有可以让你跳转到别的网页上。如果你觉得跳转到别的网页上也无所谓，那么你就错了。别忘了，当你对这个第三方的应用授权通过后，服务方会给第三方应用返回一个授权token，这个token会被加到那个redirect_uri参数后面然后跳转回去，如果这个redirect_uri被别有用心的人改一个恶意的网址后，这个token也就被还过去了，于是授权token也就被泄漏过去了。&lt;/p&gt;
 &lt;p&gt;知道了这一切，我们就可以理解Egor提的那5个bug是什么意思了。&lt;/p&gt;
 &lt;h4&gt;第一个Bug — 没有检查重定向URL中的/../&lt;/h4&gt;
 &lt;p&gt;首先，我们通过  &lt;a href="https://developer.github.com/v3/oauth/#redirect-urls" target="_blank"&gt;Github的redirect_uri的说明文档&lt;/a&gt;我们可以看到这样的说明：&lt;/p&gt;
 &lt;pre&gt;如果 CALLBACK URL是: http://example.com/path

GOOD: https://example.com/path
GOOD: http://example.com/path/subdir/other

BAD: http://example.com/bar
BAD: http://example.com/
BAD: http://example.com:8080/path
BAD: http://oauth.example.com:8080/path
BAD: http://example.org&lt;/pre&gt;
 &lt;p&gt;而Github对于redirect_uri做了限制，要求只能跳回到 https://gist.github.com/auth/github/callback/，也就是说，域名是git.github.com，目录是/auth/github/callback/，服务器端做了这个限制，看似很安全了。&lt;/p&gt;
 &lt;p&gt;但是，Egor发现，Github的服务器端并没有验证.. /../..这样的情况。&lt;/p&gt;
 &lt;p&gt;于是，Egor相当于构造了一个下面这样的Redirect URL：&lt;/p&gt;
 &lt;pre&gt;https://gist.github.com/auth/github/callback/../../../homakov/8820324?code=CODE&lt;/pre&gt;
 &lt;p&gt;相当于：&lt;/p&gt;
 &lt;pre&gt;https://gist.github.com/homakov/8820324?code=CODE&lt;/pre&gt;
 &lt;p&gt;你可以看到，认证后的跳转网页转到了别的地方去——我们知道Github的gist虽然是给你分代码片段的，但是也可以用来定制自己的东西的（比如markdown），这个gist的网页当然是被我们的Egor控制的。&lt;/p&gt;
 &lt;h4&gt;第二个BUG — 没有校验token&lt;/h4&gt;
 &lt;p&gt;第一个bug其实并没有什么，如果服务器端要校验一下token是否和之前生成的token的redirect_uri一模一样，只要服务器做了这个验证，第一个bug完全没有什么用处，但是，github的服务端并没有验证。这就是第二个bug，于是第一个和第二个bug组合起来成了一个相当有威力的安全漏洞。&lt;/p&gt;
 &lt;h4&gt;第三个BUG — 注入跨站图片&lt;/h4&gt;
 &lt;p&gt;现在，redirect_uri带着code，安全地跳到了Egor构造的网页上：&lt;/p&gt;
 &lt;pre&gt;https://gist.github.com/homakov/8820324?code=CODE&lt;/pre&gt;
 &lt;p&gt;但是，这个是gist的网页，你无法在这个页面上运行前端（Javascript）或后端程序（Ruby——Github是Ruby做的），现在的问题是我们怎么得到那个code，因为那个code虽然后带到了我的网页上来，但那个网页还是github和用户自己的环境。&lt;/p&gt;
 &lt;p&gt;到这里，一般来说，黑客会在这个页面上放一个诸如下面的一个链接，来引诱用户点击，：&lt;/p&gt;
 &lt;p&gt;&amp;lt;a href=http://hack.you.com/&amp;gt;私人照片&amp;lt;/a&amp;gt;&lt;/p&gt;
 &lt;p&gt;这样，当页面跳转到黑客的网站上来后，你之前的网页上的网址会被加在http头里的 Refere 参数里，这样，我就可以得到你的token了。&lt;/p&gt;
 &lt;p&gt;但是，在gist上放个链接还要用户去点一下，这个太影响“用户体验”了，最好能嵌入点外部的东西。gist上可以嵌入外站的图片，但是github并非等闲之辈，对于外站的图片，其统统会把这些图片的url代理成github自己的，所以，你很难搞定。&lt;/p&gt;
 &lt;h5&gt;像程序员一样的思考&lt;/h5&gt;
 &lt;p&gt;不过，我们可以用一个很诡异的技巧：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&amp;lt;img src=”///attackersite.com”&amp;gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;这个是什么玩意？这个是个URL的相对路径。但是为什么会有三个///呢？呵呵。这个时候，我们需要以“程序员的编程思维”来思考问题——如果你是程序员，你会怎么写校验URL的程序？你一定会想到使用正则表达式。于是，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;对于绝对路径：你会匹配两个//，后面的可能会是 user@host.com（user@是可选的），然后可能会有:&amp;lt;n&amp;gt;端口号，然后是/，后面是服务器的路径，再往后面应该是?后面带一些参数了。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;对于相对路径：就没有绝对路径那么复杂了。就是些 .. 和 /再加上?和一些参数。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;好了，如果coolshell.cn网页中的相对路径是 /host.com，那么浏览器会解释成：http://coolshell.cn/host.com，如果是///host.com，那么就应该被浏览器解释成 http://coolshell.cn///host.com。&lt;/p&gt;
 &lt;p&gt;但是，Chrome和Firefox，会把///host.com当成绝对路径，因为其正确匹配了绝对路径的scheme。如果你正在用Chrome/Firefox看这篇文章 ，你可以看看下面的连接（源码如下）：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http:/google.com"&gt;CoolShell Test&lt;/a&gt;&lt;/p&gt;
 &lt;pre&gt;&amp;lt;a href=&amp;quot;///www.google.com&amp;quot;&amp;gt;CoolShell Test&amp;lt;/a&amp;gt;&lt;/pre&gt;
 &lt;p&gt;关键是，这个Chrome/Firefox的问题被标记成了Won’t Fix，我勒个去，基本上来说，后面的程序也有可能有这样的问题，对于Perl，Python，Ruby，Node.js，PHP带的URL检查的函数库都有这样的问题。&lt;/p&gt;
 &lt;p&gt;于是，我们就可以使用这样的方式给gist注入了一个第三方站点的图片（github的服务端没有察觉到，但是浏览器端把这个链接解释到了第三方的站点上），于是请求这个图片的http头中的refere 中包含用户当前页面的URL，也包含了用户授权的code。&lt;/p&gt;
 &lt;p&gt;到这里，黑客已经拿到用户gist的权限并可以修改或查看用户私用的gist了。但是作者并没有满足，他想要的更多。&lt;/p&gt;
 &lt;h4&gt;第四个bug – Gist把github_token放在了cookie里&lt;/h4&gt;
 &lt;p&gt;于是Egor在用户的cookie里找到了 github_token&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="47" src="http://coolshell.cn//wp-content/uploads/2014/02/gist_cookie.png" width="395"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;但是这个token没什么用，因为授权的Scope只有gists。但是这个token不应该放在用户端的cookie里，这个东西只能放在服务端。于是，Egor只能另谋出路。&lt;/p&gt;
 &lt;h4&gt;第五个Bug – 自动给gist授权&lt;/h4&gt;
 &lt;p&gt;因为gist是github自家的，所以估计github想做得简单一点，于是github对gist做了自动授权，于是，Egor搞了这样的一个URL（注意其中的 redirect_uri ）&lt;/p&gt;
 &lt;p&gt;https://github.com/login/oauth/authorize?client_id=7e0a3cd836d3e544dbd9&amp;amp;redirect_uri=https%3A%2F%2Fgist.github.com%2Fauth%2Fgithub%  &lt;strong&gt;2Fcallback/../../../homakov/8820324&lt;/strong&gt;&amp;amp;response_type=code&amp;amp;  &lt;strong&gt;scope=repo,gists,user,delete_repo,notifications&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;于是，这个redirect-uri不但帮黑客拿到了访问gist的token，而且还把授权的scope扩大到了用户的代码库等其它权限。于是你就可以黑入用户的私有代码区了。&lt;/p&gt;
 &lt;h4&gt; 其它 &amp;amp; 感想&lt;/h4&gt;
 &lt;p&gt;于是，作者从   &lt;a href="https://bounty.github.com/"&gt;Github Security Bug Bounty&lt;/a&gt; 拿到了USD $4,000的奖励！Egor一共花了从下午2点到6点一共4个小时找到了这些Bug，平均一小时1000美刀。Egor还很得瑟的说，如果Github请他做安全顾问，他只收一小时USD $400刀，这4个小时也就$1,600。呵呵。&lt;/p&gt;
 &lt;p&gt;大家看看，这是多么有效率的赚钱方式。看看，让我们扪心自问一下，我们花了多少时间在玩那些“红包游戏”，而又搞到了多少红包？人家4个小时找了5个bug，挣了$4000美金。老天给了你我一样的时间，我们用来抽几块钱的红包，人家用自己的技能来挣奖金。这就是人和人的差距。这就是所谓的效率——你可以移步看看我写的《  &lt;a href="http://coolshell.cn/articles/10217.html" target="_blank" title="&amp;#21152;&amp;#29677;&amp;#19982;&amp;#25928;&amp;#29575;"&gt;加班与效率&lt;/a&gt;》&lt;/p&gt;
 &lt;p&gt;（全文完）
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷 壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;   &lt;small&gt;2012年11月22日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8638.html"&gt;为什么不能用微信或米聊这类的软件&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年12月10日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8711.html"&gt;程序员疫苗：代码注入&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年11月28日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/5987.html"&gt;如何设计“找回用户帐号”功能&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年08月27日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/8170.html"&gt;一次Ajax查错的经历&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年08月25日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/5353.html"&gt;你会做Web上的用户登录功能吗？&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2012年07月19日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/7917.html"&gt;各式各样的验证码&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年12月07日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/6043.html"&gt;Web开发中需要了解的东西&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;   &lt;small&gt;2011年02月20日&lt;/small&gt;    &lt;a href="http://coolshell.cn/articles/3709.html"&gt;预发布环境,Tag发布机制和可重复的部署过程&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;  &lt;a href="http://www.zemanta.com/?wp-related-posts" rel="nofollow" target="_blank"&gt;Zemanta&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>杂项资源 Gist github OAuth Web</category>
      <guid isPermaLink="true">https://itindex.net/detail/47991-github-web-%E5%AE%89%E5%85%A8</guid>
      <pubDate>Mon, 10 Feb 2014 08:16:11 CST</pubDate>
    </item>
    <item>
      <title>如何招聘程序员，四步法则助你成功</title>
      <link>https://itindex.net/detail/47928-%E6%8B%9B%E8%81%98-%E7%A8%8B%E5%BA%8F%E5%91%98-%E6%AD%A5%E6%B3%95</link>
      <description>&lt;p&gt;  &lt;strong&gt;怎样招聘   &lt;a href="http://blog.jobbole.com/821/" target="_blank" title="&amp;#31243;&amp;#24207;&amp;#21592;&amp;#30340;&amp;#26412;&amp;#36136;"&gt;程序员&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;本文记录了本人招聘程序员的方法，希望能帮助你建立一个出色的团队。&lt;/p&gt;
 &lt;p&gt;一般来说招聘程序员不算难。但要总结出如何招聘程序员，特别是招聘优秀程序员还是比想象中要困难的。尤其是你要招聘一个全职的员工（无论是否远程工作）。这里面涉及到很多东西，比如文化背景，职业素养还有最重要的方面-技术领域（程序员是否知道如何实现他们口中宣称的技术）。我们假设你只是在招聘一个外包人员来做一个小项目，如果要招优秀程序员仍然是不容易的。你如何考评应聘人员？你如何知道怎样可行怎样不行？你如何发现自己是在拿钱打水漂？答案是你根本就不知道。&lt;/p&gt;
 &lt;p&gt;你竭尽全力的面试候选人然后挑选最合格人的加入团队。如果这个人不行你就换一个，直到找到那个能呆下来的。问题是没人说非得要走这个流程。我下面将分享我在招聘程序员时采用的方法，通过这种方式在过去几年里我招到了最优质的远程工作者，外包人员和全职员工。我招聘远程程序员和现场程序员时也采用了同样的方式。&lt;/p&gt;
 &lt;p&gt;在我找到了候选人后，我会让他们经历四轮面试：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;四轮面试流程：&lt;/strong&gt;&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;非正式HR电话沟通（电话/Skype/Google Hangout)&lt;/li&gt;
  &lt;li&gt;技术电话沟通 （电话/Skype/Google Hangout）&lt;/li&gt;
  &lt;li&gt;编程测试筛选&lt;/li&gt;
  &lt;li&gt;文化融合评估如果候选人通过了所有的四轮测试，那很可能你找对人了。上述流程找到的人具有下面的特点：&lt;/li&gt;
&lt;/ol&gt;
 &lt;ul&gt;
  &lt;li&gt; 技术上能够完成工作任务&lt;/li&gt;
  &lt;li&gt;能够融入公司文化&lt;/li&gt;
  &lt;li&gt;善于有效沟通和发散思维&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;四轮流程的目标&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;可能你也注意到前两轮筛选都是采用电话/Skype/Google Hangout作为沟通工具。为啥哩？答案非常简单：时间宝贵啊。时间一去不复返…如果我能为团队节省会议室，出差等我会很乐意去做。这就是  &lt;a href="http://forum.jobbole.com/showthread.php/3620" target="_blank" title="Google&amp;#30340;&amp;#38754;&amp;#35797;&amp;#39064;&amp;#65292;&amp;#30005;&amp;#35805;&amp;#38754;&amp;#35797;&amp;#21644;&amp;#25307;&amp;#32856;&amp;#27969;&amp;#31243;&amp;#20171;&amp;#32461;"&gt;电话面试&lt;/a&gt;的目的。通常候选人也会倾向于这种方式，毕竟这节省的是大家的时间啊。所以前几步的目的就是为了节省公司和员工的时间。&lt;/p&gt;
 &lt;p&gt;我们的目标是：节约时间！&lt;/p&gt;
 &lt;p&gt;每一轮都是在不同时间完成的。一般来说最少也得间隔4到6个小时吧。留出时间间隔的目的是让团队有时间决定是否让候选人进入下一个流程。例如：第一轮面试后团队决定放弃后续的面试，那就可以通过电子（邮件或电话）方式通知候选人然后继续自己愉快的一天。第二步第三步是一样的道理。第四步就是要上手的了，后面会细说。这也可以说是“敏捷”式招聘。每一步都是迭代式的循环并建立于上一步的成功。也可以看着是一种测试驱动（TDD)式招聘流程。 第一步测试通过了吗？通过了就进入第二步。第二步通过了吗？通过了，太好了。进入第三步吧， 第三步通过了吗？没有。 好吧，GameOver了， 不用浪费后面的时间了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;步骤细说&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;下面就细说一下各个步骤，并提供了参考提问，外部资源的链接以及优化流程的建议。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第一轮：非正式HR筛选（10到30分钟）&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;终极目标：基于基本对话和HR的经典必杀问题判断候选人是否适合目标岗位&lt;/p&gt;
 &lt;p&gt;第一轮其实是很短的。 又想到了节约时间的问题—这是第一道关卡。你也可以把它变得更短。你需要确认这个人能有效的沟通，思路清晰没有社交恐惧症啥的。比如有人满嘴的”Cao” (原文是F开头的四字单词），那这种人就很可能不太适合团队。&lt;/p&gt;
 &lt;p&gt;这一轮一般交给招聘经理（有时候就是你（HR), 有时候是别人）。这一轮经理应该描述工作性质并与候选人对话。下面是一些参考问题：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;为什么申请这个职位？&lt;/li&gt;
  &lt;li&gt;在X方面你有多少经验？（X就是你们正在干的事儿，或者是新技术等等）&lt;/li&gt;
  &lt;li&gt;谈谈你的上一份工作?&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;接下来还可以采用传统的面试问题。例如下面这些：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;你会如何处理X情况？（X就是HR的经典问题）&lt;/li&gt;
  &lt;li&gt;讲讲你遇到无法解决的问题时，后来是怎样解决的？&lt;/li&gt;
  &lt;li&gt;跟同事有不同意见，你是如何处理的？&lt;/li&gt;
  &lt;li&gt;你对我们公司有了解吗？&lt;/li&gt;
  &lt;li&gt;你对我们有问题要问吗？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;此时此刻，你就可也判断候选人是不是思路清晰，或者是跟你在扯八卦。也就可以判断是否进入下一步：技术筛选&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第二轮： 技术筛选（10到30分钟）&lt;/strong&gt;  &lt;br /&gt;
终极目标：采用问答形式判断候选人是否具有所需的技术（Skype/Hangout/电话形式)&lt;/p&gt;
 &lt;p&gt;技术筛选是第二道关卡。这一轮应该持续10到30分钟取决于问题的难度。如果候选人答不上的问题太多，可以随意缩短时间。所提的问题根据招聘的程序员类型有所区别。但应该覆盖正在使用的一些  &lt;a href="http://blog.jobbole.com/tag/%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80/" title="&amp;#22914;&amp;#20309;&amp;#36873;&amp;#25321;&amp;#35821;&amp;#35328;&amp;#21644;&amp;#32534;&amp;#31243;&amp;#35821;&amp;#35328;&amp;#25490;&amp;#21517;&amp;#30456;&amp;#20851;&amp;#25991;&amp;#31456;"&gt;编程语言&lt;/a&gt;基础，框架基础，服务器。可以提一些开放式的问题让候选人自己解释。尽量避免问一些是/非问题。下面是一些参考问题：&lt;/p&gt;
 &lt;p&gt;NodeJS 参考提问：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;请解释NodeJS里ExpressJS的作用以及你为什么会使用它&lt;/li&gt;
  &lt;li&gt;Sync和Async call的区别以及你更倾向于采用哪种方式，为什么？&lt;/li&gt;
  &lt;li&gt;你使用哪个测试框架？&lt;/li&gt;
  &lt;li&gt;知道V8是什么吗？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Android 参考提问：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;什么是AsyncTask，什么时候你会使用它？&lt;/li&gt;
  &lt;li&gt;什么是ActionBar&lt;/li&gt;
  &lt;li&gt;什么是Gradle以及使用场景&lt;/li&gt;
  &lt;li&gt;如何在Android上做单元测试&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;Rails 参考提问：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;什么是asset管道&lt;/li&gt;
  &lt;li&gt;什么是控制器(controller)?&lt;/li&gt;
  &lt;li&gt;什么是RSpec以及使用场景？&lt;/li&gt;
  &lt;li&gt;什么是路由？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;通常这类面试由团队成员进行。有时候是两个程序员。如果是两个面试官，相互间要有个暗号告诉对方候选人不合适以节省时间。我之前就采用了下面的方式：  &lt;br /&gt;
“提醒我跟你讲早上我在加油站的遭遇”  &lt;br /&gt;
“面试结束后提醒我给我表弟打电话”&lt;/p&gt;
 &lt;p&gt;道理你应该已经懂了。自己编一个吧。至少有50%的时间你希望尽快结束面试因为候选人不靠谱。记住，目标是：节约时间。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第三轮： 编程测试（2-4个小时/夜间）&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;终极目标：判断候选人拥有通过代码解决问题的能力。了解代码质量。&lt;/p&gt;
 &lt;p&gt;面试过程中，要求候选人采用指定的语言解决实际问题。一个有经验的程序员应该在一个小时之内解决问题。我会给出2-4小时的范围以便候选人有足够的时间完成任务。为了公平公正我一般会允许候选人在家里舒适的环境下接受面试，以排除压力并了解他们实际如何解决问题。有些公司更喜欢在现场给候选人提供电脑和网络。不管哪种方式，目标很简单：了解候选人能否写出正确的代码。&lt;/p&gt;
 &lt;p&gt;编程测试是很好的调节阀。不是说问题有多难（恰恰相反，问题很简单），而是因为你可以了解对方的代码质量，同时也能找到以下问题的答案：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;候选人的沟通能力&lt;/li&gt;
  &lt;li&gt;候选人是否知道服从指示？&lt;/li&gt;
  &lt;li&gt;候选人知道如何使用   &lt;a href="http://blog.jobbole.com/25775/" target="_blank" title="Git&amp;#35814;&amp;#35299;&amp;#31995;&amp;#21015;&amp;#25991;&amp;#31456;"&gt;git&lt;/a&gt;和   &lt;a href="http://blog.jobbole.com/6492/" target="_blank" title="GitHub&amp;#22914;&amp;#20309;&amp;#36816;&amp;#20316;&amp;#31995;&amp;#21015;&amp;#25991;&amp;#31456;"&gt;GitHub&lt;/a&gt;吗（后面会细说）&lt;/li&gt;
  &lt;li&gt;候选人知道最佳代码实践吗？&lt;/li&gt;
  &lt;li&gt;候选人知道如何写代码吗？&lt;/li&gt;
  &lt;li&gt;候选人能通过测试吗？&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;如果我让候选人在空闲时间里在家面试，我一般会告诉他们我会在下午5点通过邮件告诉他们题目以及解决问题的提示。我告诉他们最迟在明天中午12点前得完成。问题会发布到GitHub/BitBucket的repo里，这个repo会为每个候选人创建一个。repo包含了所有关于问题的描述。候选人需要做的就是跟随指示并将结果发给我。下面是一些我创建的例子：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://github.com/donnfelker/example-nodejs-challenge"&gt;NodeJS 例子&lt;/a&gt;  &lt;br /&gt;
  &lt;a href="https://github.com/donnfelker/example-android-challenge"&gt;Android 例子&lt;/a&gt;  &lt;br /&gt;
  &lt;a href="https://github.com/donnfelker/example-rails-challenge"&gt;Rails 例子&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;你可以fork这些例子并保存。如果你访问过这些网站中的任何一个你就会发现这里面的每一个例子都要求候选人经历一系列步骤。如果候选人不清楚干什么，他们可以跟我确认或者直接在Goolge上找答案。候选人完成后需要提交一个pull 请求给我，然后我可以进行评审。我知道不是所有人都用Git来管理源代码，所以你可以进行修改，以便采用mercurial或者SVN来管理。&lt;/p&gt;
 &lt;p&gt;这种方式可以说是神来之笔，因为它能全方面了解候选人。比如候选人是否能按时写出代码完成工作。同时也能让我审查代码来判断到底是好还是坏。基于我的经验，平均60%的候选人不能完成任务，因为他们不知道如何解决问题。这也是我让他们在家面试的原因。从第一步到第三步都可以远程进行。这为公司节约了时间。在这完成了任务的40%的人中，只有20%的人做对了，并且到这个时候基本上只剩下一两个候选人看起来不错。如果你有更多的选择当然更好。&lt;/p&gt;
 &lt;p&gt;对于这种方式有一个很正常的顾虑：万一他们作弊怎么办？如果他们叫朋友或者其他人当枪手怎么办？是有这种可能，但我认为现实中也存在这个问题。有时候程序员不知道如何解决问题就会寻求帮助。他们通过QQ向朋友求助，或者是在网上搜或者是找一些满足要求的开源项目来修改。这就是程序员的作风，管你是在家还是在公司谁关心。如果对方真是在欺骗，我想很快我也能发现。就算是对方被招进来了，团队也能很快发现问题。这时候你就需要需要决定是否要留下这个人了。&lt;/p&gt;
 &lt;p&gt;如果候选人没能完成测试，这就直接是红牌了。当然出的问题也应该足够简单让有经验的程序员能在一个小时内完成。如果不能完成，要么是题目太难了要么是候选人不合适。如果你用的是我上面提到的链接（或者类似的），那就不存在这个问题。对于那些没通过测试的，我建议放弃后面的面试直接换下一个人。&lt;/p&gt;
 &lt;p&gt;对那些完成题目的我会审查代码。如果没问题我会继续面试。这种情况其实很少。一般我会问候选人为什么会用他的方式去写代码。比如我会问一个做Android题目的人为什么会用HttpGet而不是类似OkHttp或http-request的库。对于做NodeJS题目的人我会问为什么会采用原生的http请求而不是restler或rest。问这些问题的目的是考察候选人的思维方式，也能更多的了解他们的性格。有时你也能从他们身上学到一些东西。&lt;/p&gt;
 &lt;p&gt;如果没人解决问题，那就继续发布职位需求。有时候我要发好几遍才能找到合适的人。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;第四轮：文化融合评估（2-4小时）&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;目标：考察候选人是否能融入公司文化&lt;/p&gt;
 &lt;p&gt;到这一步，候选人通过了HR和技术的电话面试，以及编程测试。或许你认为应该聘用这个人了。但注意不要被激动冲昏头脑—你需要了解这个人是不是能够和你以及团队一起和谐共事。这时候我会把候选人带到办公室和团队见面并共用午餐。我一般叫他们在指定的时间来公司（上午11点到12点）并安排团队午饭。我们会去一个常去的地方吃饭。不要去一个高档的或者团队不熟悉的地方吃饭。否则团队不会全部参加或则气氛变味。我们需要的是平常和正常，就是一个每天工作状态的展示。这样我们能评估他的个性并试图发现一些影响团队和谐的因素。如果我们发现有人感觉不对，我们就不会聘用候选人。因为以后的路还长，如果一见不能钟情，日久就要生恨，工作也不会出色。&lt;/p&gt;
 &lt;p&gt;情景再现： 有个人前几轮结果都恨优秀。我有点小激动。我带他们出去吃午饭才发现他们非常没素质，极端的具有消极进攻性（passive aggressive)而且有时非常计较。我们都应该有过这种感受：不要惹桌子对面的那个人。后来我就认为这人不适合团队也没有发offer。&lt;/p&gt;
 &lt;p&gt;你还应该带新人在办公室/园区等转一转。跟他们讲讲职位以了解他们的兴趣。问他们一些针对公司的宽泛问题，看他们是否对公司进行过了解。总之就是要了解这个人。你要问自己这样一个问题：要是这个人在下班后跟你一起吃饭喝东西你愿意吗？如果你的回答是不，那又是红牌需要商榷了。&lt;/p&gt;
 &lt;p&gt;候选人走后，和团队的人聊一聊他们的看法（如果这个人是招进来的第一个人，只有靠直觉）。如果候选人还靠谱那就发offer，否则—下一位。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;总结：&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;好马不好找，找好马还要省钱就更难。上面的四轮法则将帮你节省时间并找到最佳人选。不要怕尝试下一个人选。与其招庸人不如耐心等。记住，第三轮是调节阀。这里是“行”与“不行”的分水岭。如此多的人卡在这一关让我有点惊讶。祝大家找马顺利。&lt;/p&gt;
 &lt;p&gt;（第二步：如何招聘外包开发人员-待续）&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/28854/"&gt;如何招聘一个能干活的程序员&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/557/"&gt;Aaron Swartz：我是怎么招聘程序员的&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/574/"&gt;我们只招聘最好的人&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/14744/"&gt;如何招聘到高质量的程序员？&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/12404/"&gt;为什么我们不用智力题来面试程序员&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/30974/"&gt;我们到底要怎样招程序员？&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/19416/"&gt;5种迹象显示你应该当场聘用程序员&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/10389/"&gt;为什么我们不要 .NET 程序员&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/1072/"&gt;陈皓：给程序员新手的一些建议&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/58114/"&gt;如何招聘程序员，四步法则助你成功&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IT职场 人力资源 招聘 程序员</category>
      <guid isPermaLink="true">https://itindex.net/detail/47928-%E6%8B%9B%E8%81%98-%E7%A8%8B%E5%BA%8F%E5%91%98-%E6%AD%A5%E6%B3%95</guid>
      <pubDate>Thu, 06 Feb 2014 01:29:31 CST</pubDate>
    </item>
    <item>
      <title>10套超漂亮的Bootstrap UI KIT(已转Html格式)</title>
      <link>https://itindex.net/detail/48571-%E6%BC%82%E4%BA%AE-bootstrap-ui</link>
      <description>&lt;p&gt;我们平时分享过不少的精品  &lt;a href="http://www.shejidaren.com/tag/uikit"&gt;UI KIT&lt;/a&gt; PSD素材，这些组件虽然很漂亮，但是要转换成HTML网页格式时却不是一件容易的事情，因为UI组件元素很多，如果要转HTML需要不少的时间，而且要精通前端技术。&lt;/p&gt;
 &lt;p&gt;今天设计达人网整理自pixelkit上的免费UI KIT素材，这些PSD已经转成DIV+CSS格式，可以直接快速的应用在网页上，更棒的是它使用Bootstrap框架编写，最新的HTML5+CSS3技术都有了，所以你绝对不怕过时！&lt;/p&gt;
 &lt;p&gt;这次分享的组件带有帮助文档，让你使用的时候更得心应手，如果免费版不满足你，可以购买高级版（Premium Version）而且价格十分便宜！好吧，赶快下载和分享给你的朋友们，免费的哦！（打包下载链接在文章底部）&lt;/p&gt;
 &lt;h3&gt;Funky Tunes&lt;/h3&gt;
 &lt;p&gt;这个Funky Tunes组件设计有梦幻般的美丽，适合用在音乐、视频类的APP或网站。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-1" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-1.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/funky-tunes/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/funky-tunes/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/music-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt; &lt;/p&gt;
 &lt;h3&gt;Skinny Frames&lt;/h3&gt;
 &lt;p&gt;这个Skinny Frames使用了扁平化风格设计，适合于网站平台，如果想跟紧潮流，玩玩扁平化，这个组件可以选择哦，而且配色很容易修改，通过在线网页  &lt;a href="http://www.shejidaren.com/%E5%9C%A8%E7%BA%BF%E9%85%8D%E8%89%B2%E5%B7%A5%E5%85%B7.html"&gt;配色工具&lt;/a&gt;来换个颜色主题或许会有另一番风景哦！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-2" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-2.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/skinny-frames/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/skinny-frames/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/modern-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;City Break&lt;/h3&gt;
 &lt;p&gt;这个City Break使用蓝色Web配色，适合用于旅游、酒店、机票等服务类型网站。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-3" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-3.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/city-break/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/city-break/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/hotel-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Chubby Stacks&lt;/h3&gt;
 &lt;p&gt;前面介绍平面的设计太多了，再回来看看带质感的UI也很不错的，这套绿色风格的Chubby Stacks组件包设计很漂亮，好在已经写好HTML，节省了我们N多时间哇！&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-4" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-4.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/chubby-stacks/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/chubby-stacks/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/fresh-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Sweet Candy&lt;/h3&gt;
 &lt;p&gt;精美而又可爱的UI设计组件，用在个人博客、网站很不错呢。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-5" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-5.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/sweet-candy/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/sweet-candy/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/colorful-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Arctic Sunset&lt;/h3&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-6" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-6.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/arctic-sunset/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/arctic-sunset/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/clean-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Dark Velvet&lt;/h3&gt;
 &lt;p&gt;暗调的UI KIT，就像黑色一样，看上去很有感觉，如果用在网站上，不知道视觉效果会怎样呢？欢迎尝试。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-7" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-7.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/dark-velvet/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/dark-velvet/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/dark-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Vanilla Cream&lt;/h3&gt;
 &lt;p&gt;质感和平面，到底哪个最好，其实没有最好，只有更好。（废话）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-8" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-8.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/vanilla-cream/" rel="nofollow" target="_blank"&gt;在线DEMO &lt;/a&gt;|   &lt;a href="http://pixelkit.com/free-ui-kits/vanilla-cream/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/light-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Metro Vibes&lt;/h3&gt;
 &lt;p&gt;这个UIKIT最早是在Dribbble上看到的，现在已经有HTML版本，实在太棒了！&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.shejidaren.com/tag/ui%E8%AE%BE%E8%AE%A1"&gt;   &lt;img alt="ui&amp;#35774;&amp;#35745;" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-9.jpg" width="500"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/metro-vibes/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/metro-vibes/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/metro-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;h3&gt;Modern Touch&lt;/h3&gt;
 &lt;p&gt;时尚的扁平化设计风格，这个设计除了桌面平台，也十分适合手持设备，另外配色也很赞！Nice!&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="free-bootstrap-ui-kit-10" src="http://images.shejidaren.com/wp-content/uploads/2014/03/free-bootstrap-ui-kit-10.jpg" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://pixelkit.com/free-ui-kits/modern-touch/" rel="nofollow" target="_blank"&gt;在线DEMO&lt;/a&gt; |   &lt;a href="http://pixelkit.com/free-ui-kits/modern-touch/docs/" rel="nofollow" target="_blank"&gt;使用文档&lt;/a&gt; |   &lt;a href="http://pixelkit.com/kits/flat-ui-kit/" rel="nofollow" target="_blank"&gt;高级版(付费)&lt;/a&gt;&lt;/p&gt;
 &lt;div&gt;素材版权：本UI KITS素材包在  &lt;a href="http://zh.wikipedia.org/wiki/MIT%E8%A8%B1%E5%8F%AF%E8%AD%89" rel="nofollow" target="_blank"&gt;MIT条款&lt;/a&gt;下免费使用。  &lt;br /&gt;
素材格式：HTML,内含使用文档。  &lt;br /&gt;
打包下载地址(40MB)：  &lt;a href="http://vdisk.weibo.com/s/axnLmnhcEKavo" rel="nofollow" target="_blank"&gt;微盘下载&lt;/a&gt; |   &lt;a href="https://github.com/Pixelkit/PixelKit-Bootstrap-UI-Kits" rel="nofollow" target="_blank"&gt;Github下载&lt;/a&gt;&lt;/div&gt;
 &lt;hr&gt;&lt;/hr&gt;Copyright ©2010-2013 ¦  &lt;a href="http://feed.feedsky.com/sjdr" target="_blank" title="RSS&amp;#35746;&amp;#38405;"&gt;RSS订阅&lt;/a&gt; ¦  &lt;a href="http://weibo.com/shejidaren888" target="_blank" title="&amp;#26032;&amp;#28010;&amp;#24494;&amp;#21338;"&gt;新浪微博&lt;/a&gt; ¦ &lt;a href="http://www.shejidaren.com/free-bootstrap-ui-kits.html" target="_blank" title="10&amp;#22871;&amp;#36229;&amp;#28418;&amp;#20142;&amp;#30340;Bootstrap UI KIT(&amp;#24050;&amp;#36716;Html&amp;#26684;&amp;#24335;)"&gt;本文链接&lt;/a&gt; ¦  &lt;a href="http://www.shejidaren.com/free-bootstrap-ui-kits.html#respond" target="_blank" title="10&amp;#22871;&amp;#36229;&amp;#28418;&amp;#20142;&amp;#30340;Bootstrap UI KIT(&amp;#24050;&amp;#36716;Html&amp;#26684;&amp;#24335;)&amp;#30340;&amp;#35780;&amp;#35770;"&gt;添加评论&lt;/a&gt; &lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>优秀设计资源 UI KIT UI设计 网页素材</category>
      <guid isPermaLink="true">https://itindex.net/detail/48571-%E6%BC%82%E4%BA%AE-bootstrap-ui</guid>
      <pubDate>Fri, 14 Mar 2014 15:32:33 CST</pubDate>
    </item>
    <item>
      <title>2013 年 Facebook 在开源方面的工作回顾</title>
      <link>https://itindex.net/detail/47210-facebook-%E5%BC%80%E6%BA%90-%E9%9D%A2%E7%9A%84</link>
      <description>&lt;p&gt;自从 Facebook 的第一行PHP代码，第一句 MySQL 的 INSERT 语句，开源就已经是我们工程哲学中的一个重要的部分。&lt;/p&gt;
 &lt;p&gt;现在，我们使用、维护并为大量的主要项目做出了贡献——涉及多种领域如手机工具、大数据系统、客户端的web库、后端的运行库和基础架构，也涉及到开放计算项目，服务器和存储硬件。&lt;/p&gt;
 &lt;p&gt;2013 是我们开源项目具有重要意义的一年，我们拥有大量令人自豪的新项目，为正常运行和维护它们的更新承诺，和使用它们的充满活力的社区一起工作的愿望。仅在我们的  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook&amp;h=pAQGETgCM&amp;s=1" rel="nofollow" target="_blank"&gt;Github账户&lt;/a&gt;上，我们现在已经有超过90个仓库，有超过40,000次的提交，一共被复制了15,000次。&lt;/p&gt;
 &lt;p&gt;年末是一个很好的机会来回顾我们投入精力的一些主要的领域，简要重述（不是详细的！）下我们工作的一些项目列表。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;手机&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;我们最自豪的开源贡献常常是我们为了解决在 Facebook 遇到的规模和性能的挑战而开发的一些技术。&lt;/p&gt;
 &lt;p&gt;手机也不例外：Facebook 的手机应用已经是我们产品团队今年的一个重点，我们现在也还需要开发新的兼容性——在这种情况下，那些要迅速开发、编译、测试并发布我们手机应用的需求变得更加的高效。开源我们的工作，正如我们已经做的那样，是很自然的事情，这些工具已经成为我们手机开源作品集的核心。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn2.jobbole.com/2013/12/120131224104121.jpg" rel="lightbox[53971]" title="2013 &amp;#24180; Facebook &amp;#22312;&amp;#24320;&amp;#28304;&amp;#26041;&amp;#38754;&amp;#30340;&amp;#24037;&amp;#20316;&amp;#22238;&amp;#39038;"&gt;   &lt;img alt="120131224104121" src="http://cdn2.jobbole.com/2013/12/120131224104121.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;比如，在四月份，我们发布了  &lt;a href="http://www.oschina.net/p/buck" rel="nofollow" target="_blank"&gt;Buck&lt;/a&gt;，我们的Android编译工具。开发者的效率对我们来说很重要，自然速度是Buck的首要工作：在Facebook，我们发现它在编译我们的应用时，比 Ant 快了超过两倍。从一开始，这个项目就越来越强大，并被Android社区也包括一些有名的Java项目广泛应用。&lt;/p&gt;
 &lt;p&gt;对于iOS，我们也有类似的瓶颈，发现我们需要加速和自动化Xcode的手动编译过程。结果就是非常流行的   &lt;a rel="nofollow" target="_blank"&gt;xctool&lt;/a&gt; ——也在四月份发布——可以使工程师（更不说那些持续集成的机器）更加简单的编译和测试iOS和Mac项目。&lt;/p&gt;
 &lt;p&gt;我们在十月份举行的  &lt;a href="https://code.facebook.com/events/449722311809857/mobile-scale-2013/" rel="nofollow" target="_blank"&gt;Mobile @ Scale&lt;/a&gt;上推出了  &lt;a href="http://www.oschina.net/p/rebound" rel="nofollow" target="_blank"&gt;Rebound&lt;/a&gt;，一个Android的物理和动画库。Will Bailey在  &lt;a href="https://code.facebook.com/posts/509869769120198/under-the-hood-building-and-open-sourcing-the-rebound-animation-library-for-android/" rel="nofollow" target="_blank"&gt;这篇最近的博文&lt;/a&gt;中详细介绍了这个项目，我们相信对真实世界的物理建模是一个有力的方式，方便在应用中创建自然、可触的动画和交互效果。&lt;/p&gt;
 &lt;p&gt;最后，通过发布另一个手机工具来结束这一年，还有比这更好的方式吗？今天我们很激动的发布  &lt;a href="http://www.oschina.net/p/origami" rel="nofollow" target="_blank"&gt;Origami&lt;/a&gt;，一个  &lt;a href="http://www.oschina.net/p/quartz-composer" rel="nofollow" target="_blank"&gt;Quartz Composer&lt;/a&gt;的工具集，允许设计者更快的编译和构建手机交互的原型。&lt;/p&gt;
 &lt;h2&gt;  &lt;strong&gt;Web&lt;/strong&gt;&lt;/h2&gt;
 &lt;p&gt;Web技术也和Facebook相关，包括手机和桌面的客户端。在前段，我们开源的重点更多的在于支持在五月份的  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Ffacebook.github.io%2Freact%2F&amp;h=kAQHNsEl7&amp;s=1" rel="nofollow" target="_blank"&gt;JSConf&lt;/a&gt;上发布的快速灵活的JavaScript库  &lt;a href="http://www.oschina.net/p/facebook-react" rel="nofollow" target="_blank"&gt;React&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn2.jobbole.com/2013/12/620131224104257.jpg" rel="lightbox[53971]" title="2013 &amp;#24180; Facebook &amp;#22312;&amp;#24320;&amp;#28304;&amp;#26041;&amp;#38754;&amp;#30340;&amp;#24037;&amp;#20316;&amp;#22238;&amp;#39038;"&gt;   &lt;img alt="620131224104257" src="http://cdn2.jobbole.com/2013/12/620131224104257.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;从那以后，React库——和社区的热心者——有了一定的发展。现在在  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Fericclemmons%2Fgrunt-react&amp;h=5AQF4e9ab&amp;s=1" rel="nofollow" target="_blank"&gt;编译工具&lt;/a&gt;上有了大量的集成，服务器端的环境（像  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook%2Freact-page%2F&amp;h=fAQExnLxn&amp;s=1" rel="nofollow" target="_blank"&gt;node&lt;/a&gt;，  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook%2Freact-rails&amp;h=pAQGETgCM&amp;s=1" rel="nofollow" target="_blank"&gt;Rails&lt;/a&gt;，和  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook%2Freact-python&amp;h=LAQGTBT4P&amp;s=1" rel="nofollow" target="_blank"&gt;Python&lt;/a&gt;）和其他  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook%2Freact-art&amp;h=NAQGYICkf&amp;s=1" rel="nofollow" target="_blank"&gt;客户端的库&lt;/a&gt;——也包括一些备受瞩目的外部的部署工具如  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fjoelburget.com%2Fbackbone-to-react%2F&amp;h=RAQFWKdB9&amp;s=1" rel="nofollow" target="_blank"&gt;Khan Academy&lt;/a&gt;。团队维护了一个出色的  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Ffacebook.github.io%2Freact%2Fblog%2F&amp;h=wAQHeSO9G&amp;s=1" rel="nofollow" target="_blank"&gt;社区概要博客&lt;/a&gt;，包括大量其他React项目的例子、演示和教程。&lt;/p&gt;
 &lt;p&gt;总之，我们也想帮助提高JavaScript语言和web应用的质量。例如，  &lt;a href="http://www.oschina.net/p/regenerator" rel="nofollow" target="_blank"&gt;Regenerator&lt;/a&gt;，是用来转换ECMAScript 6的yield语法到现今的浏览器的一个转换器，  &lt;a href="http://www.oschina.net/p/huxley" rel="nofollow" target="_blank"&gt;Huxley&lt;/a&gt;，在夏天由Instagram团队构建的，已经快速成为web应用中一个非常流行的可视化正则测试工具。&lt;/p&gt;
 &lt;h2&gt;数据&lt;/h2&gt;
 &lt;p&gt;Facebook与开源数据基础设施(open source data infrastructure)颇有渊源，回顾我们对MySQL， Cassandra，Hadoop，Hive和Hbase所做的贡献可以看出这一点。2013年也不例外，仅仅在过去的几个月里，我们就上线了两个新的旗舰级数据项目。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn2.jobbole.com/2013/12/320131224104337.jpg" rel="lightbox[53971]" title="2013 &amp;#24180; Facebook &amp;#22312;&amp;#24320;&amp;#28304;&amp;#26041;&amp;#38754;&amp;#30340;&amp;#24037;&amp;#20316;&amp;#22238;&amp;#39038;"&gt;   &lt;img alt="320131224104337" src="http://cdn2.jobbole.com/2013/12/320131224104337.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;首先是  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fprestodb.io%2F&amp;h=JAQEPs6n4&amp;s=1" rel="nofollow" target="_blank"&gt;Presto&lt;/a&gt;，一个新的分布式SQL查询引擎，被设计用于高性能分析我们用于运行交互式查询的300PB数据仓库。&lt;/p&gt;
 &lt;p&gt;我们在夏天的  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DqZsfpK9bafY&amp;h=OAQHdFgze&amp;s=1" rel="nofollow" target="_blank"&gt;Analytics @ Scale event&lt;/a&gt;上公布了Presto并且在上个月于  &lt;a href="https://code.facebook.com/posts/555001884578896/presto-interacting-with-petabytes-of-data-at-facebook/" rel="nofollow" target="_blank"&gt;我们的blog&lt;/a&gt;上对它做了更多介绍。从那以后，我们激动的看到它被许多像Airbnb和Dropbox这样的公司采用，并且从许多热情的社区得到了贡献，包括  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Feasydatawarehousing%2Fprestoclient&amp;h=bAQGQQ0s3&amp;s=1" rel="nofollow" target="_blank"&gt;new clients&lt;/a&gt;，  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Fanalytically%2Fhadoop-ansible&amp;h=mAQFPpxnK&amp;s=1" rel="nofollow" target="_blank"&gt;Ansible playbook&lt;/a&gt;和  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Fphobos182%2Fprestodb-debian&amp;h=YAQFwZ7Lh&amp;s=1" rel="nofollow" target="_blank"&gt;debian packaging&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn2.jobbole.com/2013/12/420131224104549.jpg" rel="lightbox[53971]" title="2013 &amp;#24180; Facebook &amp;#22312;&amp;#24320;&amp;#28304;&amp;#26041;&amp;#38754;&amp;#30340;&amp;#24037;&amp;#20316;&amp;#22238;&amp;#39038;"&gt;   &lt;img alt="420131224104549" src="http://cdn2.jobbole.com/2013/12/420131224104549.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;第二个项目是  &lt;a href="http://www.oschina.net/p/rocksdb" rel="nofollow" target="_blank"&gt;RocksDB&lt;/a&gt;，一个非常与众不同的数据基础设施(data infrastructure):一个基于LevelDB的嵌入式key-value存储类库，并且为拥有多核CPU和快速闪存的环境做了优化。此外，  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3DV_C-T5S-w8g&amp;h=uAQE38uVd&amp;s=1" rel="nofollow" target="_blank"&gt;在它上线&lt;/a&gt;的以后几个月里，它引起了广泛的兴趣，一些伟大的社区已经把它绑定到其他的语言上。&lt;/p&gt;
 &lt;p&gt;我们对数据基础设施(data infrastructure)的贡献和支持拓展得很好也已经超过了我们本身。我们对  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fgiraph.apache.org%2F&amp;h=qAQG_cS2k&amp;s=1" rel="nofollow" target="_blank"&gt;Giraph&lt;/a&gt;提供了强大的支持，比如，它已经被提高到可以支持1万亿边缘的图形结构。&lt;/p&gt;
 &lt;h2&gt;基础设施项目&lt;/h2&gt;
 &lt;p&gt;最后，但绝对不是最不重要的，基础设施项目在我们对开源项目的贡献中仍然是最为重要的一部分。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.oschina.net/p/hhvm" rel="nofollow" target="_blank"&gt;HHVM&lt;/a&gt;，the HipHop Virtual Machine，是目前为止我们的项目资产中最为显著并且是追随人数最多的项目，并且得到了大量的来自PHP生态系统的支持。2013年有近4000次提交，并且在性能和第三方php框架的兼容性上有了长足进步，这对于社区的广泛采用来说是非常重要的。&lt;/p&gt;
 &lt;p&gt;这个团队刚刚从封闭中走出来并且在昨天分享了他们  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.hhvm.com%2Fblog%2F2813%2Fwe-are-the-98-5-and-the-16&amp;h=PAQGkmgIg&amp;s=1" rel="nofollow" target="_blank"&gt;最新进度的消息&lt;/a&gt;。并且我们很激动的看到在持续不断的集成测试之后，VM  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fabout.travis-ci.org%2Fblog%2F2013-12-16-test-php-code-with-the-hiphop-vm%2F&amp;h=8AQE34llv&amp;s=1" rel="nofollow" target="_blank"&gt;被集成到Travis CI&lt;/a&gt;，并且为集成到其他流行的web server加入了  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.hhvm.com%2Fblog%2F1817%2Ffastercgi-with-hhvm&amp;h=uAQE38uVd&amp;s=1" rel="nofollow" target="_blank"&gt;FastCGI支持&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;我们今年也为许多其他的显著的基础设施项目工作过。对于我们自己的项目，包括  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fgithub.com%2Ffacebook%2Fpfff&amp;h=dAQHjm9iQ&amp;s=1" rel="nofollow" target="_blank"&gt;pfff&lt;/a&gt;，我们的代码分析工具箱，  &lt;a href="http://www.oschina.net/p/libphenom" rel="nofollow" target="_blank"&gt;libPhenom&lt;/a&gt;，一个高性能的事件框架，和  &lt;a href="http://www.oschina.net/p/folly" rel="nofollow" target="_blank"&gt;folly&lt;/a&gt;，我们流行的C++类库。并且我们今年为   &lt;a href="http://www.oschina.net/p/mercurial" rel="nofollow" target="_blank"&gt;Mercurial&lt;/a&gt;，  &lt;a href="http://www.oschina.net/p/llvm" rel="nofollow" target="_blank"&gt;LLVM&lt;/a&gt;和  &lt;a href="http://www.oschina.net/p/gnu-grep" rel="nofollow" target="_blank"&gt;GNU grep&lt;/a&gt;提供了许多显著的贡献。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://cdn2.jobbole.com/2013/12/520131224104611.jpg" rel="lightbox[53971]" title="2013 &amp;#24180; Facebook &amp;#22312;&amp;#24320;&amp;#28304;&amp;#26041;&amp;#38754;&amp;#30340;&amp;#24037;&amp;#20316;&amp;#22238;&amp;#39038;"&gt;   &lt;img alt="520131224104611" src="http://cdn2.jobbole.com/2013/12/520131224104611.jpg"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fopencompute.org%2F&amp;h=wAQHeSO9G&amp;s=1" rel="nofollow" target="_blank"&gt;Open Compute项目&lt;/a&gt;在2013年继续壮大，使用  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fopencompute.org%2Fblog%2Fup-next-for-the-open-compute-project-the-network%2F&amp;h=vAQFol14R&amp;s=1" rel="nofollow" target="_blank"&gt;new work on networking hardware&lt;/a&gt;，新的社区和基础管理，以及全年众多的hackathons和讨论会。Facebook致力于支持项目建设并且它的目标是开发设计用于所有数据中心技术的开源服务器和数据中心 – 并且让我们期待下个月的  &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.opencompute.org%2Fcommunity%2Fevents%2Fsummit%2Focp-summit-v%2F&amp;h=DAQGv0RrA&amp;s=1" rel="nofollow" target="_blank"&gt;Open Compute Summit&lt;/a&gt;。&lt;/p&gt;
 &lt;h2&gt;2013年我们的开源项目…&lt;/h2&gt;
 &lt;p&gt;当你在使用或者为一个开源项目做出贡献时，我们知道没有比看到它停滞不前更糟糕的了：bug 没有被修复，问题没有解决，pull requests 被忽略。关于 Facebook，我们的目标是，通过我们的投资组合，保持强有力的社区参与责任感。&lt;/p&gt;
 &lt;p&gt;我们已经采取了具体的措施来达到这个目标。例如：我们现在鼓励我们的工程师团队在使用或者开发一个开源项目的时候，首选 Github，Bitbucket 或者 Apache 软件基金会的项目作为源码的来源。&lt;/p&gt;
 &lt;p&gt;我们有一个新的工具链，使 repos 和我们内部系统同步，同步代码评审过程，任务跟踪等等。同时把我们最近检测的所有 repos 仪表化，保证他们保持健康的发展：我们有内部的仪表盘来显示commits 的数量，pull requests 的数量和每个团队 issues 的数量。这给我们提供了一个早期预警系统，提醒社区中有哪些被我们无意中忽略了。&lt;/p&gt;
 &lt;p&gt;同时我们很自豪的宣布，我们正在做的   &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.bountysource.com%2F&amp;h=hAQFjOCuL&amp;s=1" rel="nofollow" target="_blank"&gt;Bountysource&lt;/a&gt; 项目帮我们社区解决了很多问题，其中包括鼓励大家参与各种开源项目，奖励那些参与开源项目的开发者。我们已经有了  &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Fwww.bountysource.com%2Fteams%2Ffacebook%2Fbounties&amp;h=ZAQHYstmW&amp;s=1" rel="nofollow" target="_blank"&gt;一系列的奖励&lt;/a&gt;计划，包括 HHVM 和   &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fdlang.org%2F&amp;h=9AQEwPI3S&amp;s=1" rel="nofollow" target="_blank"&gt;D&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;就在上个月，我们宣布   &lt;a href="https://code.facebook.com/posts/179492885585722/facebook-open-academy-bringing-open-source-to-cs-curricula/" rel="nofollow"&gt;Facebook Open Academy&lt;/a&gt; 已经把开源带到世界各地大学的计算机科学课程中。&lt;/p&gt;
 &lt;p&gt;在 2013 年，我们也同步开始了 “  &lt;a href="https://code.facebook.com/events/atscale/" rel="nofollow"&gt;@ Scale&lt;/a&gt;” 工程活动的项目，这个项目旨在汇集开发人员讨论和分析各种技术大规模实施面临的挑战，分享他们的解决方案和相关的开源项目。今年的活动包括  &lt;a href="https://code.facebook.com/events/1480925765466862/analytics-scale-2013/" rel="nofollow"&gt;Analytics @&lt;/a&gt;,   &lt;a href="https://code.facebook.com/events/449722311809857/mobile-scale-2013/" rel="nofollow"&gt;Mobile @&lt;/a&gt; 和   &lt;a href="https://code.facebook.com/events/459384730848545/data-scale-2013/" rel="nofollow"&gt;Data @ Scale&lt;/a&gt;，相关的视频已经放在了我们的   &lt;a href="http://www.facebook.com/l.php?u=http%3A%2F%2Fwww.youtube.com%2Ffacebookdevelopers&amp;h=eAQEpta73&amp;s=1" rel="nofollow" target="_blank"&gt;Facebook Developers channel&lt;/a&gt;。 敬请期待明年更多的 @ Scale 活动。&lt;/p&gt;
 &lt;p&gt;最后，欢迎访问我们新工程的网站   &lt;a href="https://code.facebook.com/" rel="nofollow"&gt;code.facebook.com&lt;/a&gt;！我们尽可能让您更方便的关注我们所有的活动详细信息，在   &lt;a href="https://code.facebook.com/posts/" rel="nofollow"&gt;blog posts&lt;/a&gt;,   &lt;a href="https://code.facebook.com/events/" rel="nofollow"&gt;events&lt;/a&gt;,   &lt;a href="https://code.facebook.com/videos/" rel="nofollow"&gt;videos&lt;/a&gt;,   &lt;a href="https://code.facebook.com/publications/" rel="nofollow"&gt;academic publications&lt;/a&gt; 和   &lt;a href="https://code.facebook.com/projects/" rel="nofollow"&gt;open source projects&lt;/a&gt; 上都可以找到我们所有的工程项目和活动。订阅我们的   &lt;a href="https://www.facebook.com/Engineering" rel="nofollow"&gt;Facebook Page&lt;/a&gt; 和   &lt;a href="https://www.facebook.com/l.php?u=https%3A%2F%2Ftwitter.com%2FfbOpenSource&amp;h=ZAQHYstmW&amp;s=1" rel="nofollow" target="_blank"&gt;open source news&lt;/a&gt; 可以获得更多的更新新闻。&lt;/p&gt;
 &lt;h2&gt;…以及未来&lt;/h2&gt;
 &lt;p&gt;Facebook 的著名格言：我们的开源项目仍然是只完成了1%。&lt;/p&gt;
 &lt;p&gt;通过上面提及的所有主题，我们知道还有很多方面需要我们继续努力。我们很庆幸在我们众多的项目中有强大而热情的社区支持，给予我们强烈的责任感和动力。&lt;/p&gt;
 &lt;p&gt;不管你们是在移动端，web，数据亦或是基础设施社区，我们都很期待能继续与你们合作，2014年再见！&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/16966/"&gt;Facebook工程发布技术的幕后故事&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/42661/"&gt;甲骨文把Berkeley DB的协议更换为AGPL，Web开发者估计要不淡定了&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/49109/"&gt;Facebook公开服务器设计 数据服务行业面临洗牌&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/29907/"&gt;提高软件质量实践――Facebook篇&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/896/"&gt;开源中最好的Web开发资源汇总&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/7033/"&gt;20个PHP开源内容管理系统&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/689/"&gt;10个开源免费的电子商务平台&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/41453/"&gt;看三名工程师如何重建Facebook基础&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/34729/"&gt;非国家机密 芝加哥在Github开源五个数据集&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/34778/"&gt;中国和开源&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/53971/"&gt;2013 年 Facebook 在开源方面的工作回顾&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>业界资讯 Facebook 开源</category>
      <guid isPermaLink="true">https://itindex.net/detail/47210-facebook-%E5%BC%80%E6%BA%90-%E9%9D%A2%E7%9A%84</guid>
      <pubDate>Tue, 24 Dec 2013 11:16:17 CST</pubDate>
    </item>
    <item>
      <title>七个用于数据科学(data science)的命令行工具</title>
      <link>https://itindex.net/detail/47365-%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6-data-science</link>
      <description>&lt;p&gt;数据科学是  &lt;a href="http://www.dataists.com/2010/09/a-taxonomy-of-data-science/" rel="nofollow"&gt;OSEMN&lt;/a&gt;（和 awesome 相同发音），它包括获取(Obtaining)、整理(Scrubbing)、探索(Exploring)、建模(Modeling)和翻译(iNterpreting)数据。作为一名数据科学家，我用命令行的时间非常长，尤其是要获取、整理和探索数据的时候。而且我也不是唯一一个这样做的人。最近，  &lt;a href="http://www.gregreda.com/2013/07/15/unix-commands-for-data-science/" rel="nofollow"&gt;Greg Reda&lt;/a&gt;介绍了可用于数据科学的经典命令行工具。在这之前，Seth Brown介绍了如何  &lt;a href="http://www.drbunsen.org/explorations-in-unix/" rel="nofollow"&gt;在Unix下进行探索性的数据分析&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;下面我将介绍在我的日常工作中发现很有用的七个命令行工具。包括：  &lt;a href="http://stedolan.github.io/jq/" rel="nofollow"&gt;jq&lt;/a&gt;、   &lt;a href="https://github.com/jehiah/json2csv" rel="nofollow"&gt;json2csv&lt;/a&gt;、   &lt;a href="https://github.com/onyxfish/csvkit" rel="nofollow"&gt;csvkit&lt;/a&gt;、scrape、   &lt;a href="https://github.com/parmentf/xml2json" rel="nofollow"&gt;xml2json&lt;/a&gt;、 sample 和 Rio。(我自己做的scrape、sample和Rio可以在  &lt;a href="https://github.com/jeroenjanssens/data-science-toolbox" rel="nofollow"&gt;这里&lt;/a&gt;拿到)。任何建议意见、问题甚至git上的拉取请求都非常欢迎(其他人建议的工具可以在最后找到)。好的，下面我们首先介绍jq。&lt;/p&gt;
 &lt;h3&gt;1. jq – sed for JSON&lt;/h3&gt;
 &lt;p&gt;JSON现在越来越流行，尤其当API盛行了以后。我还记得处理JSON时，用grep和sed写着丑陋的代码。谢谢jq，终于可以不用写的这么丑了。&lt;/p&gt;
 &lt;p&gt;假设我们对2008总统大选的所有候选人感兴趣。纽约时报有一个关于  &lt;a href="http://developer.nytimes.com/docs/campaign_finance_api/" title="API"&gt;竞选财务的API&lt;/a&gt;。让我们用curl取一些JSON:&lt;/p&gt;
 &lt;pre&gt;curl -s &amp;apos;http://api.nytimes.com/svc/elections/us/v3/finances/2008/president/totals.json?api-key=super-secret&amp;apos; &amp;gt; nyt.json&lt;/pre&gt;
 &lt;p&gt;-s表示静默模式。然后我们用jq最简单的格式jq ‘.’，可以把得到的丑陋的代码&lt;/p&gt;
 &lt;pre&gt;{&amp;quot;status&amp;quot;:&amp;quot;OK&amp;quot;,&amp;quot;base_uri&amp;quot;:&amp;quot;http://api.nytimes.com/svc/elections/us/v3/finances/2008/&amp;quot;,&amp;quot;cycle&amp;quot;:2008,&amp;quot;copyright&amp;quot;:&amp;quot;Copyright (c) 2013 The New York Times Company. All Rights Reserved.&amp;quot;,&amp;quot;results&amp;quot;:[{&amp;quot;candidate_name&amp;quot;:&amp;quot;Obama, Barack&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Barack Obama&amp;quot;,&amp;quot;party&amp;quot;:&amp;quot;D&amp;quot;,&lt;/pre&gt;
 &lt;p&gt;转换成漂亮的格式：&lt;/p&gt;
 &lt;pre&gt;&amp;lt; nyt.json jq &amp;apos;.&amp;apos; | head { &amp;quot;results&amp;quot;: [ { &amp;quot;candidate_id&amp;quot;: &amp;quot;P80003338&amp;quot;, &amp;quot;date_coverage_from&amp;quot;: &amp;quot;2007-01-01&amp;quot;, &amp;quot;date_coverage_to&amp;quot;: &amp;quot;2008-11-24&amp;quot;, &amp;quot;candidate_name&amp;quot;: &amp;quot;Obama, Barack&amp;quot;, &amp;quot;name&amp;quot;: &amp;quot;Barack Obama&amp;quot;, &amp;quot;party&amp;quot;: &amp;quot;D&amp;quot;,&lt;/pre&gt;
 &lt;p&gt;同时，jq还可以选取和过滤JSON数据：&lt;/p&gt;
 &lt;pre&gt;&amp;lt; nyt.json jq -c &amp;apos;.results[] | {name, party, cash: .cash_on_hand} | select(.cash | tonumber &amp;gt; 1000000)&amp;apos; 
{&amp;quot;cash&amp;quot;:&amp;quot;29911984.0&amp;quot;,&amp;quot;party&amp;quot;:&amp;quot;D&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;Barack Obama&amp;quot;}
{&amp;quot;cash&amp;quot;:&amp;quot;32812513.75&amp;quot;,&amp;quot;party&amp;quot;:&amp;quot;R&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;John McCain&amp;quot;}
{&amp;quot;cash&amp;quot;:&amp;quot;4428347.5&amp;quot;,&amp;quot;party&amp;quot;:&amp;quot;D&amp;quot;,&amp;quot;name&amp;quot;:&amp;quot;John Edwards&amp;quot;}&lt;/pre&gt;
 &lt;p&gt;更多使用方法参见  &lt;a href="http://stedolan.github.io/jq/manual/"&gt;手册&lt;/a&gt;，但是不要指望jq能做所有事。Unix的哲学是写能做一件事并且做得好的程序，但是jq功能强大！下面就来介绍json2csv。&lt;/p&gt;
 &lt;h3&gt;2. json2csv – 把JSON转换成CSV&lt;/h3&gt;
 &lt;p&gt;虽然JSON适合交换数据，但是它不适合很多命令行工具。但是不用担心，用json2csv我们可以轻松把JSON转换成CSV。现在假设我们把数据存在million.json里，仅仅调用&lt;/p&gt;
 &lt;pre&gt;&amp;lt; million.json json2csv -k name,party,cash&lt;/pre&gt;
 &lt;p&gt;就可以把数据转换成：&lt;/p&gt;
 &lt;pre&gt;Barack Obama,D,29911984.0
John McCain,R,32812513.75
John Edwards,D,4428347.5&lt;/pre&gt;
 &lt;p&gt;有了CSV格式我们就可以用传统的如 cut -d 和 awk -F 一类的工具了。grep和sed没有这样的功能。因为CSV是以表格形式存储的，所以csvkit的作者开发了csvkit。&lt;/p&gt;
 &lt;h3&gt;3. csvkit – 转换和使用CSV的套装&lt;/h3&gt;
 &lt;p&gt;csvkit不只是一个程序，而是一套程序。因为大多数这类工具“期望”CSV数据有一个表头，所以我们在这里加一个。&lt;/p&gt;
 &lt;pre&gt;echo name,party,cash | cat - million.csv &amp;gt; million-header.csv&lt;/pre&gt;
 &lt;p&gt;我们可以用csvsort给候选人按竞选资金排序并展示：&lt;/p&gt;
 &lt;pre&gt;&amp;lt; million-header.csv csvsort -rc cash | csvlook

|---------------+-------+--------------|
|  name         | party | cash         |
|---------------+-------+--------------|
|  John McCain  | R     | 32812513.75  |
|  Barack Obama | D     | 29911984.0   |
|  John Edwards | D     | 4428347.5    |
|---------------+-------+--------------|&lt;/pre&gt;
 &lt;p&gt;看起来好像MySQL哈？说到数据库，我们可以把CSV写到sqlite数据库（很多其他的数据库也支持）里，用下列命令：&lt;/p&gt;
 &lt;pre&gt;csvsql --db sqlite:///myfirst.db --insert million-header.csv
sqlite3 myfirst.db
sqlite&amp;gt; .schema million-header
CREATE TABLE &amp;quot;million-header&amp;quot; (
    name VARCHAR(12) NOT NULL, 
    party VARCHAR(1) NOT NULL, 
    cash FLOAT NOT NULL
);&lt;/pre&gt;
 &lt;p&gt;插入后数据都会正确因为CSV里也有格式。此外，这个套装里还有其他有趣工具，如 in2csv、 csvgrep 和csvjoin。通过csvjson，数据甚至可以从csv转换会json。总之，你值得一看。&lt;/p&gt;
 &lt;h3&gt;4. scrape – 用XPath和CSS选择器进行HTML信息提取的工具&lt;/h3&gt;
 &lt;p&gt;JSON虽然很好，但是同时也有很多资源依然需要从HTML中获取。scrape就是一个Python脚本，包含了lxml和cssselect包，从而能选取特定HTML元素。维基百科上有个网页列出了所有国家的边界线语国土面积的比率，下面我们来把比率信息提取出来吧&lt;/p&gt;
 &lt;pre&gt;curl -s &amp;apos;http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio&amp;apos; | scrape -b -e &amp;apos;table.wikitable &amp;gt; tr:not(:first-child)&amp;apos; | head
&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html&amp;gt;
&amp;lt;body&amp;gt;
&amp;lt;tr&amp;gt;
&amp;lt;td&amp;gt;1&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;Vatican City&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;3.2&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;0.44&amp;lt;/td&amp;gt;
&amp;lt;td&amp;gt;7.2727273&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;&lt;/pre&gt;
 &lt;p&gt;-b命令让scrape包含和标签，因为有时xml2json会需要它把HTML转换成JSON。&lt;/p&gt;
 &lt;h3&gt;5. xml2json – 把XML转换成JSON&lt;/h3&gt;
 &lt;p&gt;如名字所说，这工具就是把XML(HTML也是一种XML)转换成JSON的输出格式。因此，xml2json是连接scrape和jq之间的很好的桥梁。&lt;/p&gt;
 &lt;pre&gt;curl -s &amp;apos;http://en.wikipedia.org/wiki/List_of_countries_and_territories_by_border/area_ratio&amp;apos; | scrape -be &amp;apos;table.wikitable &amp;gt; tr:not(:first-child)&amp;apos; | xml2json | jq -c &amp;apos;.html.body.tr[] | {country: .td[1][], border: .td[2][], surface: .td[3][], ratio: .td[4][]}&amp;apos; | head
{&amp;quot;ratio&amp;quot;:&amp;quot;7.2727273&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;0.44&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;3.2&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Vatican City&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;2.2000000&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;2&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;4.4&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Monaco&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.6393443&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;61&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;39&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;San Marino&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.4750000&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;160&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;76&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Liechtenstein&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.3000000&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;34&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;10.2&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Sint Maarten (Netherlands)&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.2570513&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;468&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;120.3&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Andorra&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.2000000&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;6&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;1.2&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Gibraltar (United Kingdom)&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.1888889&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;54&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;10.2&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Saint Martin (France)&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.1388244&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;2586&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;359&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Luxembourg&amp;quot;}
{&amp;quot;ratio&amp;quot;:&amp;quot;0.0749196&amp;quot;,&amp;quot;surface&amp;quot;:&amp;quot;6220&amp;quot;,&amp;quot;border&amp;quot;:&amp;quot;466&amp;quot;,&amp;quot;country&amp;quot;:&amp;quot;Palestinian territories&amp;quot;}&lt;/pre&gt;
 &lt;p&gt;当然JSON数据之后可以输入给json2csv。&lt;/p&gt;
 &lt;h3&gt;6. sample – 用来debug&lt;/h3&gt;
 &lt;p&gt;我写的第二个工具是sample。（它是依据bitly的  &lt;a href="https://github.com/bitly/data_hacks"&gt;data_hacks&lt;/a&gt;写的，bitly还有好多其他工具值得一看。）当你处理大量数据时，debug管道非常尴尬。这时，sample就会很有用。这个工具有三个用处：&lt;/p&gt;
 &lt;ol&gt;
  &lt;li&gt;逐行展示数据的一部分。&lt;/li&gt;
  &lt;li&gt;给在输出时加入一些延时，当你的数据进来的时候有些延时，或者你输出太快看不清楚时用这个很方便。&lt;/li&gt;
  &lt;li&gt;限制程序运行的时间。&lt;/li&gt;
&lt;/ol&gt;
 &lt;p&gt;下面的例子展现了这三个功能：&lt;/p&gt;
 &lt;pre&gt;seq 10000 | sample -r 20% -d 1000 -s 5 | jq &amp;apos;{number: .}&amp;apos;&lt;/pre&gt;
 &lt;p&gt;这表示，每一行有20%的机会被给到jq，没两行之间有1000毫秒的延迟，5秒过后，sample会停止。这些选项都是可选的。为了避免不必要的计算，请尽早sample。当你debug玩之后你就可以把它移除了。&lt;/p&gt;
 &lt;h3&gt;7. Rio – 在处理中加入R&lt;/h3&gt;
 &lt;p&gt;这篇文章没有R就不完整。将R/Rscript加入处理不是很好理解，因为他们并没有标准化输入输出，因此，我加入了一个命令行工具脚本，这样就好理解了。&lt;/p&gt;
 &lt;p&gt;Rio这样工作：首先，给标准输入的CSV被转移到一个临时文件中，然后让R把它读进df中。之后，在-e中的命令被执行。最后，最后一个命令的输出被重定向到标准输出中。让我用一行命令展现这三个用法，对每个部分展现5个数字的总结：&lt;/p&gt;
 &lt;pre&gt;curl -s &amp;apos;https://raw.github.com/pydata/pandas/master/pandas/tests/data/iris.csv&amp;apos; &amp;gt; iris.csv
&amp;lt; iris.csv Rio -e &amp;apos;summary(df)&amp;apos;
  SepalLength      SepalWidth     PetalLength      PetalWidth   
 Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100  
 1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300  
 Median :5.800   Median :3.000   Median :4.350   Median :1.300  
 Mean   :5.843   Mean   :3.054   Mean   :3.759   Mean   :1.199  
 3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800  
 Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500  
     Name          
 Length:150        
 Class :character  
 Mode  :character&lt;/pre&gt;
 &lt;p&gt;如果加入了-s选项，sqldf包会被引入，这样CSV格式就会被输出，这可以让你之后用别的工具处理数据。&lt;/p&gt;
 &lt;pre&gt;&amp;lt; iris.csv Rio -se &amp;apos;sqldf(&amp;quot;select * from df where df.SepalLength &amp;gt; 7.5&amp;quot;)&amp;apos; | csvlook
|--------------+------------+-------------+------------+-----------------|
|  SepalLength | SepalWidth | PetalLength | PetalWidth | Name            |
|--------------+------------+-------------+------------+-----------------|
|  7.6         | 3          | 6.6         | 2.1        | Iris-virginica  |
|  7.7         | 3.8        | 6.7         | 2.2        | Iris-virginica  |
|  7.7         | 2.6        | 6.9         | 2.3        | Iris-virginica  |
|  7.7         | 2.8        | 6.7         | 2          | Iris-virginica  |
|  7.9         | 3.8        | 6.4         | 2          | Iris-virginica  |
|  7.7         | 3          | 6.1         | 2.3        | Iris-virginica  |
|--------------+------------+-------------+------------+-----------------|&lt;/pre&gt;
 &lt;p&gt;如果你用-g选项，ggplot2会被引用，一个叫g得带有df的ggplot对象会被声明。如果最终输出是个ggplot对象，一个PNG将会被写到标准输出里。&lt;/p&gt;
 &lt;pre&gt;&amp;lt; iris.csv Rio -ge &amp;apos;g+geom_point(aes(x=SepalLength,y=SepalWidth,colour=Name))&amp;apos; &amp;gt; iris.png&lt;/pre&gt;
 &lt;p&gt;  &lt;img alt="iris" src="http://jbcdn2.b0.upaiyun.com/2014/01/iris.png"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;我制作了这个工具，为了可以在命令行中充分利用R的力量。当然它有很多缺陷，但至少我们不需要再学习gnuplot了。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;别人建议的命令行工具&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;下面是其他朋友通过twitter和hacker news推荐的工具，谢谢大家。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://bigmler.readthedocs.org/en/latest/"&gt;BigMLer&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=aficionado"&gt;aficionado&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://code.google.com/p/crush-tools/"&gt;crush-tools&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=mjn"&gt;mjn&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/dergachev/csv2sqlite"&gt;csv2sqlite&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=dergachev"&gt;dergachev&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/dbro/csvquote"&gt;csvquote&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=susi22"&gt;susi22&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/clarkgrubb/data-tools"&gt;data-tools repository&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=cgrubb"&gt;cgrubb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/dkogan/feedgnuplot"&gt;feedgnuplot&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=dima55"&gt;dima55&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/cgutteridge/Grinder/tree/master/bin"&gt;Grinder repository&lt;/a&gt; by    &lt;a href="https://twitter.com/cgutteridge"&gt;@cgutteridge&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.hdfgroup.org/HDF5/doc/RM/Tools.html"&gt;HDF5 Tools&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=susi22"&gt;susi22&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://code.google.com/p/littler/"&gt;littler&lt;/a&gt; by    &lt;a href="https://twitter.com/eddelbuettel"&gt;@eddelbuettel&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://gibrown.wordpress.com/2013/01/26/unix-bi-grams-tri-grams-and-topic-modeling/"&gt;mallet&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=gibrown"&gt;gibrown&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/benbernard/RecordStream"&gt;RecordStream&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=revertts"&gt;revertts&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="https://github.com/paulgb/subsample"&gt;subsample&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=paulgb"&gt;paulgb&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://search.cpan.org/~ken/xls2csv-1.07/script/xls2csv"&gt;xls2csv&lt;/a&gt; by    &lt;a href="https://twitter.com/sheeshee"&gt;@sheeshee&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://xmlstar.sourceforge.net/"&gt;XMLStarlet&lt;/a&gt; by    &lt;a href="https://news.ycombinator.com/user?id=gav"&gt;gav&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;结论&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;我介绍了七个我日常用来处理数据的命令行工具。虽然每个工具各有所长，我经常是将它们与传统工具（如grep, sed, 和awk）一起使用。将小工具结合起来使用组成一个大的流水线，这就是其用处所在。&lt;/p&gt;
 &lt;p&gt;不知你们对这个列表有什么想法，你们平时喜欢用什么工具呢。如果你们也做了什么好玩的工具，欢迎将其加入数据科学工具包  &lt;a href="https://github.com/jeroenjanssens/data-science-toolbox"&gt;data science toolbox&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;如果你不认为自己能制作工具，也不用担心，下次当你写一个异乎寻常的命令行流水线时，记得将它放到一个文件里，加一个#!，加一些参数，改成可执行文件，你就做成一个工具啦~&lt;/p&gt;
 &lt;p&gt;虽然命令行工具的强大在获取、处理和探索数据时不容小觑，在真正的探索、建模和理解翻译数据时，你还是最好在科学计算环境下进行。比如  &lt;a href="http://www.r-project.org/"&gt;R&lt;/a&gt;或者  &lt;a href="http://ipython.org/notebook.html"&gt;IPython notebook&lt;/a&gt;+  &lt;a href="http://pandas.pydata.org/"&gt;pandas&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;如果感兴趣，欢迎  &lt;a href="https://twitter.com/jeroenhjanssens/"&gt;follow me on Twitter&lt;/a&gt;。&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/29561/"&gt;Google Dremel 原理 – 如何能3秒分析1PB&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/46839/"&gt;海量数据相似度计算之simhash和海明距离&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/13178/"&gt;大数据时代&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/13538/"&gt;Hadoop：你不得不了解的大数据工具&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/52898/"&gt;使用大数据时，别忘了关注Linux内存管理器&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/12720/"&gt;数据挖掘：如何寻找相关项&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/46673/"&gt;社会化海量数据采集爬虫框架搭建&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/39489/"&gt;将安全开发流程扩展到云和大数据&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/46664/"&gt;低成本服务器搭建千万级数据采集系统&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/51177/"&gt;Presto：Facebook的分布式SQL查询引擎&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/54308/"&gt;七个用于数据科学(data science)的命令行工具&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IT技术 工具与资源 data science 大数据 数据科学</category>
      <guid isPermaLink="true">https://itindex.net/detail/47365-%E6%95%B0%E6%8D%AE%E7%A7%91%E5%AD%A6-data-science</guid>
      <pubDate>Wed, 01 Jan 2014 01:55:39 CST</pubDate>
    </item>
    <item>
      <title>欧洲网站分析工具简介—Webtrekk</title>
      <link>https://itindex.net/detail/46915-%E6%AC%A7%E6%B4%B2-%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90-%E5%B7%A5%E5%85%B7</link>
      <description>&lt;p&gt;作为一名  &lt;a href="http://bluewhale.cc/" target="_blank" title="&amp;#32593;&amp;#31449;&amp;#20998;&amp;#26512;"&gt;网站分析&lt;/a&gt;师，你了解或使用过哪些网站分析工具？Google Analytics，Adobe Omniture，Webtrends等等。无论是我们日常工作中经常使用的，还是我的博客中介绍的网站分析工具。大部分都是以美系为主。今天我们来介绍一款欧洲的网站分析工具Webtrekk。 蓝鲸网站分析笔记 Original Source &lt;/p&gt;
 &lt;p&gt;Webtrekk是一个以原始数据为基础，提供网站分析工具和服务的公司。与美系的商业级分析工具一样，Webtrekk也可以提供从实时分析，社交媒体分析，app应用追踪到线下电视广告效果追踪的全套分析工具和服务。这个工具的主要特点有三个：&lt;/p&gt;
 &lt;p&gt;1实时，工具提供插件处理并展示实时数据。&lt;/p&gt;
 &lt;p&gt;2原始数据，所有分析过程基于原始数据进行。&lt;/p&gt;
 &lt;p&gt;3快速，工具提供预设置和缓存功能，提供使用工具的效率。&lt;/p&gt;
 &lt;p&gt;以下是Webtrekk网站分析工具和套件。让我们看看以严谨著称的德国人开发的网站分析工具有什么与众不同之处。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#20135;&amp;#21697;&amp;#32467;&amp;#26500;.png"&gt;   &lt;img alt="" height="394" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#20135;&amp;#21697;&amp;#32467;&amp;#26500;.png" title="&amp;#20135;&amp;#21697;&amp;#32467;&amp;#26500;" width="603"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;h1&gt;  &lt;strong&gt;一，产品功能套件及扩展工具&lt;/strong&gt;&lt;/h1&gt;
 &lt;h2&gt;1，产品功能套件&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;Webtrekk Q3&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/Q3.png"&gt;    &lt;img alt="" height="339" src="http://bluewhale.cc/wp-content/uploads/2013/12/Q3.png" title="Q3" width="490"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Webtrekk Q3是网站数据分析仓库。也是Webtrekk的主要部分。Q3可以基于原始数据进行数据整合和细分，也可以根据业务需求进行单独定制。同时Q3也可以对newsletter、displays、SEO、SEM、社交媒体的流量及广告效果进行追踪和分析。Q3是Webtrekk的主要功能模块。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Quick Insights&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/Quick-Insights.png"&gt;    &lt;img alt="" height="408" src="http://bluewhale.cc/wp-content/uploads/2013/12/Quick-Insights.png" title="Quick Insights" width="493"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Quick Insights是日常网站分析模块，主要提供可视化的营销活动分析，社交媒体分析，点击路径分析，过程分析，电子商务分析，受众分析和用户体验分析。能够帮助快速优化并汇总数据。你可以通过这个模块快速查看每日的KPI数据和关键信息。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;TV Trekk&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/tv-trekk.jpg"&gt;    &lt;img alt="" height="314" src="http://bluewhale.cc/wp-content/uploads/2013/12/tv-trekk.jpg" title="tv trekk" width="566"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;TV Trekk是电视广告效果分析模块，主要的功能是评估电商广告的影响力，判断广告播出时间范围内流量的效果等等。TV Trekk通过算法，在电视广告播放完的8分钟时间范围内对通过直接输入URL地址进行访问，以及在搜索引擎中输入电商广告预先引导的关键词进行搜索，进而访问网站的用户进行辨别。识别电视广告带来的访问者及效果数据。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Live Analytics&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/Live-Analytics.jpg"&gt;    &lt;img alt="" height="425" src="http://bluewhale.cc/wp-content/uploads/2013/12/Live-Analytics.jpg" title="Live Analytics" width="611"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Live Analytics是实时优化分析模块，这个分析模块每10秒钟自动更新和传输分析结果。主要功能包括识别流量实时变化趋势，每10秒钟自动更新分析数据及KPI，实时识别营销活动效果等。对于电商的大型促销活动，Live Analytics是一个非常有用的工具，他可以让整个团队实时了解销售情况及热销商品。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Rich Media Insights&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/rich-media.jpg"&gt;    &lt;img alt="" height="395" src="http://bluewhale.cc/wp-content/uploads/2013/12/rich-media.jpg" title="rich media" width="609"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Rich Media Insights是多媒体分析模块，目前支持的格式包括Windows Media Player，Apple Quicktime，RealPlayer，Flash，Silverlight等。Rich Media Insights可以获取访问者对多媒体的使用数据。让你分析媒体内容，包括哪些程序或视频段落被多少人在哪些时段观看、终止或跳过，或者在线广告在何种程度上影响了用户行为。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Mobile Insights&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/Mobile-Insights.png"&gt;    &lt;img alt="" height="323" src="http://bluewhale.cc/wp-content/uploads/2013/12/Mobile-Insights.png" title="Mobile Insights" width="576"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Mobile Insights是移动设备分析模块，适用于对使用移动设备访问并登陆网站的用户行为进行追踪。主要功能包括探索及发现：在应用程序被下载后用户都做了些什么？应用程序是如何被使用的？是否值得继续开发某个应用程序？哪些应用程序性能良好，哪些欠佳？等等。&lt;/p&gt;
 &lt;h2&gt;2，扩展工具&lt;/h2&gt;
 &lt;p&gt;除了前面介绍的分析模块外，WebTrekk还有两个扩展工具模块。分别是SafeTag和Newsletter remarketing。下面我们分别简单介绍下这两个扩展工具。  &lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;SafeTag&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;SafeTag与Google 的Tag Manager非常相似。是一个追踪代码管理工具。可以对各类追踪代码进行统一管理，方便添加和修改代码的时间和成本。WebTrekk的SafeTag主要功能包括对前端代码的统一管理，为在线营销活动提供快速代码实施，不会妨碍网站的正常运行等等。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Newsletter remarketing&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/Newsletter-Remarketing.jpg"&gt;    &lt;img alt="" height="315" src="http://bluewhale.cc/wp-content/uploads/2013/12/Newsletter-Remarketing.jpg" title="Newsletter Remarketing" width="450"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Newsletter remarketing是WebTrekk基于EDM的在营销工具。Newsletter remarketing可以与我们前面介绍的Q3分析工具及不同场景的分析模块进行整合。通过识别用户之前的浏览行为进行基于EDM的商品推荐。例如，通过分析用户浏览的商品推荐相似的商品，或者分析用户可能感兴趣的商品推荐同一品类其他商品或其他同类访问者购买的商品等等。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h1&gt;二，Webtrekk Q3特色功能&lt;/h1&gt;
 &lt;p&gt;前面介绍了Webtrekk的分析工具，不同场景的分析模块和扩展工具。下面我们重点介绍了Webtrekk的核心分析功能WebTrekk Q3的功能及特点。这里我们不会介绍Q3的所有功能。原因有两个：第一是目前大部分网站分析工具，尤其是商业级的网站分析工具在一些基本功能上已经非常接近，不需要重复介绍。第二是因为篇幅有限，无法对所有功能逐一介绍。同时我也认为，对于一个产品也好，工具也罢。最能体现专业性的地方在于细节的设计。因此，这里我会选择Webtrekk中的几个界面或功能的细节部分进行介绍。下面我们就来看下Webtrekk Q3在这些功能和细节上的表现如何。&lt;/p&gt;
 &lt;h2&gt;1，  方便易用操作及界面&lt;/h2&gt;
 &lt;p&gt;首先介绍的是Webtrekk Q3的界面。使用过多个分析工具的朋友一定了解界面对于使用者的重要性。Google Analytics受欢迎的原因除了免费以外，很大程度上也是因为他简单易用的界面和导航，让分析师节省了不少时间。下面我们来看下WebTrekk的界面有什么特点。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;工具导航结构设计&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;首先是Webtrekk界面和功能中的一些细节介绍，通过这些细节我们可以看到这个工具的易用性和专业性。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;.png"&gt;   &lt;img alt="" height="69" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;.png" title="&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;" width="782"&gt;&lt;/img&gt;&lt;/a&gt;第一个细节是Webtrekk Q3的导航设计。在工具的导航条中，我们可以发现Q3通过不同的配色和标签的位置设计将导航中的菜单分成了两个部分。左边灰色的部分是用户自定义的内容。如用户自定义的报告和书签内容等等。而右边则是Webtrekk Q3的标准报告内容。从左到右分别是数据概览报告，访问者报告，营销渠道报告，内容导航报告和电商报告。使用者可以根据每次使用工具的目的按位置和颜色快速找到相应的报告和功能。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;指标中的红绿灯管理&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#25351;&amp;#26631;&amp;#32418;&amp;#32511;&amp;#28783;&amp;#31649;&amp;#29702;.png"&gt;    &lt;img alt="" height="298" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#25351;&amp;#26631;&amp;#32418;&amp;#32511;&amp;#28783;&amp;#31649;&amp;#29702;.png" title="&amp;#25351;&amp;#26631;&amp;#32418;&amp;#32511;&amp;#28783;&amp;#31649;&amp;#29702;" width="812"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;第二个细节是Webtrekk Q3对指标的红绿灯显示及管理功能。对于分析师来说，在面对一堆数据的时候，最头痛的可能就是不知该从何处开始下手。在Webtrekk Q3的报告中，会自动对关键指标标注红黄绿灯，用来表示当前指标在这个时间段网站整体指标中的表现。这种指标可视化的方法可以让分析师在打开报告后第一时间在一堆数据中找到需要优先关注的内容。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt; &lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;时间选择的细节功能&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#26102;&amp;#38388;&amp;#36873;&amp;#25321;&amp;#30340;&amp;#32454;&amp;#33410;&amp;#21151;&amp;#33021;1.png"&gt;    &lt;img alt="" height="195" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#26102;&amp;#38388;&amp;#36873;&amp;#25321;&amp;#30340;&amp;#32454;&amp;#33410;&amp;#21151;&amp;#33021;1.png" title="&amp;#26102;&amp;#38388;&amp;#36873;&amp;#25321;&amp;#30340;&amp;#32454;&amp;#33410;&amp;#21151;&amp;#33021;1" width="878"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;第三个细节是Webtrekk Q3中的时间选择功能。Q3中分别提供了三种选择日期的方式。第一种方式是按天选择，第二种方式是按月选择，第三种方式是自定义时间段选择。在按天选择的方式中，你可以通过选择左侧的周号一次选择一周的数据。而按月的选择方式中则可以通过选择左侧的季度序号一次选择正个季度的数据。在自定义时间的选择的方式中，则允许你精确到小时和分钟颗粒选择所需查看的数据时间段。&lt;/p&gt;
 &lt;h2&gt;2，  三种方法开始一次分析&lt;/h2&gt;
 &lt;p&gt;第二部分是Webtrekk Q3对于三种分析过程的细节设计。Q3将网站分析工具的使用者分为了三个类别，并在工具中分别针对三类用户设计了三种不同的引导及使用方式。这三种方式分别是新手模式，熟练模式和专家模式。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;新手模式，问题分析向导&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#20197;&amp;#38382;&amp;#39064;&amp;#24341;&amp;#23548;&amp;#20998;&amp;#26512;.png"&gt;    &lt;img alt="" height="378" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#20197;&amp;#38382;&amp;#39064;&amp;#24341;&amp;#23548;&amp;#20998;&amp;#26512;.png" title="&amp;#20197;&amp;#38382;&amp;#39064;&amp;#24341;&amp;#23548;&amp;#20998;&amp;#26512;" width="621"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;对于刚入行的新手分析师来说，看数据绝对是一件头疼的事情。面对浩瀚的数据，该从何处入手，哪些数据值得关注，哪些数据又能解决我的问题。这些同样也都是我们在刚开始接触网站数据时所遇到的问题。Webtrekk Q3为这样的新手分析师提供了一种问题引导式的工具使用方法：通过业务问题给出答案。在这种引导方式下，Webtrekk不会直接向新手分析师显示数据。而是以最常见的业务问题进行引导。新手分析师不需要考虑数据和指标的问题。只要选择目前你遇到的问题，WebTrekk就可以给你需要的数据。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;熟练模式，主菜单导航&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;1.png"&gt;    &lt;img alt="" height="69" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;1.png" title="&amp;#23548;&amp;#33322;&amp;#37096;&amp;#20998;" width="782"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;对于已经有一些经验的分析师来说，他们在每次分析前已经有了明确的目的，并且了解自己需要哪些指标数据来解决这些问题。这时他们不再需要通过问题引导的方式来查看数据，也可能他们的问题以及超出了问题引导中的范围。因此，他们可以选择使用导航模式，通过导航栏右侧绿色的主菜单直接选择需要查看的数据报表。前面我们介绍过Webtrekk Q3的导航设计非常易用，有经验的分析师可以很容易在这五部分中找到自己所需的数据。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;专家模式，表格生成器&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#36890;&amp;#36807;&amp;#34920;&amp;#26684;&amp;#29983;&amp;#25104;&amp;#22120;&amp;#24320;&amp;#22987;&amp;#20998;&amp;#26512;.png"&gt;    &lt;img alt="" height="372" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#36890;&amp;#36807;&amp;#34920;&amp;#26684;&amp;#29983;&amp;#25104;&amp;#22120;&amp;#24320;&amp;#22987;&amp;#20998;&amp;#26512;.png" title="&amp;#36890;&amp;#36807;&amp;#34920;&amp;#26684;&amp;#29983;&amp;#25104;&amp;#22120;&amp;#24320;&amp;#22987;&amp;#20998;&amp;#26512;" width="650"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Webtrekk Q3的最后一种模式是针对专家级分析师使用的。专家级分析师往往有自己独特的分析套路，作为一套模板化并且通用的网站分析工具可能无法满足这些高级的业务定制化需求。因此Q3为专家级分析师提供了表格生成器工具。专家级分析师无需被问题引导，也不会被工具内在的报告结构和使用流程所限制。他们可以直接通过表格生成器对指标和维度进行操作。制作满足个性化需求的  &lt;a href="http://bluewhale.cc/2010-04-11/google-analytics-custom-reports.html" target="_blank" title="&amp;#33258;&amp;#23450;&amp;#20041;&amp;#25253;&amp;#21578;"&gt;自定义报告&lt;/a&gt;。&lt;/p&gt;
 &lt;h2&gt;3，  自定义数据指标和公式&lt;/h2&gt;
 &lt;p&gt;第三部分我们来介绍Webtrekk Q3中的指标和维度。在Q3中除了默认的预定义指标和维度以外，还提供了自定义指标和维度。使用者可以按照分析需求对现有指标进行二次运算，以获取满足需求的新指标。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;默认指标及维度&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Webtrekk Q3提供了80多个开箱即用的标准分析指标。这些指标无需用户进行特殊设置，只要使用Q3的标准全局追踪代码即可获得。同时，使用者还可以对这些标准指标进行自定义。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;自定义指标及维度&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#33258;&amp;#23450;&amp;#20041;&amp;#25351;&amp;#26631;&amp;#36816;&amp;#31639;2.png"&gt;    &lt;img alt="" height="400" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#33258;&amp;#23450;&amp;#20041;&amp;#25351;&amp;#26631;&amp;#36816;&amp;#31639;2.png" title="&amp;#33258;&amp;#23450;&amp;#20041;&amp;#25351;&amp;#26631;&amp;#36816;&amp;#31639;2" width="612"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在Webtrekk Q3的报告中，很多地方都可以对现有的标准指标进行自定义设置，用以创建更加复合业务和分析需求的复合指标。上图是Webtrekk Q3中的指标运算界面，在这里你可以通过自定义公式对现有指标进行运算，以获得新的指标来衡量业务表现。&lt;/p&gt;
 &lt;h2&gt;4，  外部数据导出导入&lt;/h2&gt;
 &lt;p&gt;第四部分是Webtrekk Q3中的数据导出与导入功能。这里的导出功能并不同于我们常见的报告导出。在大部分网站分析工具中，都只允许我们对某个特定的报告进行数据导出操作。但在Webtrekk Q3中，你可以对原始数据进行导出操作。同时Webtrekk还允许我们对外部的数据进行导入操作。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;导出导出数据&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#21407;&amp;#22987;&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20986;.png"&gt;    &lt;img alt="" height="272" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#21407;&amp;#22987;&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20986;.png" title="&amp;#21407;&amp;#22987;&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20986;" width="696"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在Webtrekk Q3中，有三种数据导入和导出的方式，分别是SOAP模式，JSON模式和原始数据导出模式。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;SOAP服务可以实现从Webtrekk Q3自动取回数据，同时向Q3上传其它数据的操作。这一功能还可以实现数据在系统间的交换。例如,可以连接至公司内部后台。你可以通过这种方式导出分析和分析结果报告，导出广告媒体和活动分类，根据您自己的分类方式导入活动产品类别，以及直接从后台导入诸如订单取消等订单的其它信息。&lt;/li&gt;
  &lt;li&gt;JSON/RPC服务可以帮助你从Webtrekk Q3自动取回数据，同时上传其它数据。这一功能可以帮您实现对分析和分析结果报告的查询。&lt;/li&gt;
  &lt;li&gt;原始数据导出服务可以从Webtrekk Q3中导出原始数据到FTP服务器。Webtrekk记录的所有数据都可以通过原始数据导出功能进行导出。在所需分析结果无法通过Q3获得的时候，或需要对数据进行进一步运算和处理的情况下，可以使用原始数据导出功能。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;strong&gt;导入数据整合&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20837;2.png"&gt;    &lt;img alt="" height="341" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20837;2.png" title="&amp;#25968;&amp;#25454;&amp;#23548;&amp;#20837;2" width="715"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;导入的数据在Webtrekk中可与标准数据进行整合。应用于报告及分析中，上图显示了导入的市场占有率数据与标准数据的整合分析报告。&lt;/p&gt;
 &lt;h2&gt;5，  搜索和筛选功能&lt;/h2&gt;
 &lt;p&gt;最后我们简单介绍下Webtrekk Q3的分析功能。对于商业级的分析工具，我们在分析部分最看重的就是细分功能。Q3中提供了搜索和筛选功能。这个功能与Google Analytics中的高级细分功能很相似。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;搜索和筛选&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;a href="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#22810;&amp;#37325;&amp;#31579;&amp;#36873;&amp;#39640;&amp;#32423;&amp;#32454;&amp;#20998;.png"&gt;    &lt;img alt="" height="336" src="http://bluewhale.cc/wp-content/uploads/2013/12/&amp;#22810;&amp;#37325;&amp;#31579;&amp;#36873;&amp;#39640;&amp;#32423;&amp;#32454;&amp;#20998;.png" title="&amp;#22810;&amp;#37325;&amp;#31579;&amp;#36873;(&amp;#39640;&amp;#32423;&amp;#32454;&amp;#20998;)" width="678"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;通过搜索和筛选功能，你可以使用自定义条件对报告中的数据设置限定条件，并在多个维度下进行筛选操作。&lt;/p&gt;
 &lt;p&gt;以上我们简单介绍了来自欧洲的网站分析工具WebTrekk。与美系网站分析工具相比，这款工具最大的特点在于原始数据处理，以及快速分析的能力上。同时，对于分析人员来说，这款工具在很多界面和功能的细节设计上很有特点。是一款容易上手的工具。如果有机会的话，建议你试用下这款网站分析工具。&lt;/p&gt;
 &lt;p&gt;—【所有文章及图片版权归 蓝鲸（王彦平）所有。欢迎转载，但请注明转自“  &lt;a href="http://bluewhale.cc/" target="_blank"&gt;蓝鲸网站分析博客&lt;/a&gt;”。】—&lt;/p&gt;


 &lt;p&gt;No related posts.&lt;/p&gt; &lt;img height="1" src="http://feeds.feedburner.com/~r/bluewhale/FjUY/~4/gP-2rrr6864" width="1"&gt;&lt;/img&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>工具&amp;资源 Webtrekk</category>
      <guid isPermaLink="true">https://itindex.net/detail/46915-%E6%AC%A7%E6%B4%B2-%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90-%E5%B7%A5%E5%85%B7</guid>
      <pubDate>Sun, 08 Dec 2013 00:50:49 CST</pubDate>
    </item>
    <item>
      <title>二维码的生成细节和原理</title>
      <link>https://itindex.net/detail/46249-%E4%BA%8C%E7%BB%B4%E7%A0%81-%E5%8E%9F%E7%90%86</link>
      <description>&lt;p&gt;二维码又称QR Code，QR全称Quick Response，是一个近几年来移动设备上超流行的一种编码方式，它比传统的Bar Code条形码能存更多的信息，也能表示更多的数据类型：比如：字符，数字，日文，中文等等。这两天学习了一下二维码图片生成的相关细节，觉得这个玩意就是一个密码算法，在此写一这篇文章 ，揭露一下。供好学的人一同学习之。&lt;/p&gt;
 &lt;p&gt;关于QR Code Specification，可参看这个PDF：  &lt;a href="http://raidenii.net/files/datasheets/misc/qr_code.pdf" target="_blank"&gt;http://raidenii.net/files/datasheets/misc/qr_code.pdf &lt;/a&gt;&lt;/p&gt;
 &lt;h4&gt;基础知识&lt;/h4&gt;
 &lt;p&gt;首先，我们先说一下二维码一共有40个尺寸。官方叫版本Version。Version 1是21 x 21的矩阵，Version 2是 25 x 25的矩阵，Version 3是29的尺寸，每增加一个version，就会增加4的尺寸，公式是：(V-1)*4 + 21（V是版本号） 最高Version 40，(40-1)*4+21 = 177，所以最高是177 x 177 的正方形。&lt;/p&gt;
 &lt;p&gt;下面我们看看一个二维码的样例：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="370" src="http://coolshell.cn//wp-content/uploads/2013/10/QR-Code-Overview.jpeg" width="616"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;h5&gt;定位图案&lt;/h5&gt;
 &lt;ul&gt;
  &lt;li&gt;Position Detection Pattern是定位图案，用于标记二维码的矩形大小。这三个定位图案有白边叫Separators for Postion Detection Patterns。之所以三个而不是四个意思就是三个就可以标识一个矩形了。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;Timing Patterns也是用于定位的。原因是二维码有40种尺寸，尺寸过大了后需要有根标准线，不然扫描的时候可能会扫歪了。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;Alignment Patterns 只有Version 2以上（包括Version2）的二维码需要这个东东，同样是为了定位用的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h5&gt;功能性数据&lt;/h5&gt;
 &lt;ul&gt;
  &lt;li&gt;Format Information 存在于所有的尺寸中，用于存放一些格式化数据的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;Version Information 在 &amp;gt;= Version 7以上，需要预留两块3 x 6的区域存放一些版本信息。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h5&gt;数据码和纠错码&lt;/h5&gt;
 &lt;ul&gt;
  &lt;li&gt;除了上述的那些地方，剩下的地方存放 Data Code 数据码 和 Error Correction Code 纠错码。&lt;/li&gt;
&lt;/ul&gt;
 &lt;h4&gt;数据编码&lt;/h4&gt;
 &lt;p&gt;我们先来说说数据编码。QR码支持如下的编码：&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Numeric mode&lt;/strong&gt; 数字编码，从0到9。如果需要编码的数字的个数不是3的倍数，那么，最后剩下的1或2位数会被转成4或7bits，则其它的每3位数字会被编成 10，12，14bits，编成多长还要看二维码的尺寸（下面有一个表Table 3说明了这点）&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Alphanumeric mode&lt;/strong&gt; 字符编码。包括 0-9，大写的A到Z（没有小写），以及符号$ % * + – . / : 包括空格。这些字符会映射成一个字符索引表。如下所示：（其中的SP是空格，Char是字符，Value是其索引值） 编码的过程是把字符两两分组，然后转成下表的45进制，然后转成11bits的二进制，如果最后有一个落单的，那就转成6bits的二进制。而编码模式和字符的个数需要根据不同的Version尺寸编成9, 11或13个二进制（如下表中Table 3）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="121" src="http://coolshell.cn//wp-content/uploads/2013/10/Alphanumeric-mode.png" width="549"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Byte mode&lt;/strong&gt;, 字节编码，可以是0-255的ISO-8859-1字符。有些二维码的扫描器可以自动检测是否是UTF-8的编码。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Kanji mode&lt;/strong&gt; 这是日文编码，也是双字节编码。同样，也可以用于中文编码。日文和汉字的编码会减去一个值。如：在0X8140 to 0X9FFC中的字符会减去8140，在0XE040到0XEBBF中的字符要减去0XC140，然后把结果前两个16进制位拿出来乘以0XC0，然后再加上后两个16进制位，最后转成13bit的编码。如下图示例：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="174" src="http://coolshell.cn//wp-content/uploads/2013/10/Kanji-mode.png" width="600"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Extended Channel Interpretation (ECI) mode&lt;/strong&gt; 主要用于特殊的字符集。并不是所有的扫描器都支持这种编码。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;Structured Append mode&lt;/strong&gt; 用于混合编码，也就是说，这个二维码中包含了多种编码格式。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;FNC1 mode&lt;/strong&gt; 这种编码方式主要是给一些特殊的工业或行业用的。比如GS1条形码之类的。&lt;/p&gt;
 &lt;p&gt;简单起见，后面三种不会在本文 中讨论。&lt;/p&gt;
 &lt;p&gt;下面两张表中，&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;Table 2 是各个编码格式的“编号”，这个东西要写在Format Information中。注：中文是1101&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;Table 3 表示了，不同版本（尺寸）的二维码，对于，数字，字符，字节和Kanji模式下，对于单个编码的2进制的位数。（在二维码的规格说明书中，有各种各样的编码规范表，后面还会提到）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" height="332" src="http://coolshell.cn//wp-content/uploads/2013/10/Mode-Indicator.png" width="442"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;下面我们看几个示例，&lt;/p&gt;
 &lt;h5&gt;示例一：数字编码&lt;/h5&gt;
 &lt;p&gt;在Version 1的尺寸下，纠错级别为H的情况下，编码： 01234567&lt;/p&gt;
 &lt;p&gt;1. 把上述数字分成三组: 012 345 67&lt;/p&gt;
 &lt;p&gt;2. 把他们转成二进制:  012 转成 0000001100；  345 转成 0101011001；  67 转成 1000011。&lt;/p&gt;
 &lt;p&gt;3. 把这三个二进制串起来: 0000001100 0101011001 1000011&lt;/p&gt;
 &lt;p&gt;4. 把数字的个数转成二进制 (version 1-H是10 bits ): 8个数字的二进制是 0000001000&lt;/p&gt;
 &lt;p&gt;5. 把数字编码的标志0001和第4步的编码加到前面:  0001 0000001000 0000001100 0101011001 1000011&lt;/p&gt;
 &lt;h5&gt;示例二：字符编码&lt;/h5&gt;
 &lt;p&gt;在Version 1的尺寸下，纠错级别为H的情况下，编码: AC-42&lt;/p&gt;
 &lt;p&gt;1. 从字符索引表中找到 AC-42 这五个字条的索引 (10,12,41,4,2)&lt;/p&gt;
 &lt;p&gt;2. 两两分组: (10,12) (41,4) (2)&lt;/p&gt;
 &lt;p&gt;3.把每一组转成11bits的二进制:&lt;/p&gt;
 &lt;p&gt;(10,12) 10*45+12 等于 462 转成 00111001110  &lt;br /&gt;
(41,4) 41*45+4 等于 1849 转成 11100111001  &lt;br /&gt;
(2) 等于 2 转成 000010&lt;/p&gt;
 &lt;p&gt;4. 把这些二进制连接起来：00111001110 11100111001 000010&lt;/p&gt;
 &lt;p&gt;5. 把字符的个数转成二进制 (Version 1-H为9 bits ): 5个字符，5转成 000000101&lt;/p&gt;
 &lt;p&gt;6. 在头上加上编码标识 0010 和第5步的个数编码:  0010 000000101 00111001110 11100111001 000010&lt;/p&gt;
 &lt;h4&gt;结束符和补齐符&lt;/h4&gt;
 &lt;p&gt;假如我们有个HELLO WORLD的字符串要编码，根据上面的示例二，我们可以得到下面的编码，&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th&gt;编码&lt;/th&gt;
   &lt;th&gt;字符数&lt;/th&gt;
   &lt;th&gt;HELLO WORLD的编码&lt;/th&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;0010&lt;/td&gt;
   &lt;td&gt;000001011&lt;/td&gt;
   &lt;td&gt;01100001011 01111000110 10001011100 10110111000 10011010100 001101&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;我们还要加上结束符：&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th&gt;编码&lt;/th&gt;
   &lt;th&gt;字符数&lt;/th&gt;
   &lt;th&gt;HELLO WORLD的编码&lt;/th&gt;
   &lt;th&gt;结束&lt;/th&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;0010&lt;/td&gt;
   &lt;td&gt;000001011&lt;/td&gt;
   &lt;td&gt;01100001011 01111000110 10001011100 10110111000 10011010100 001101&lt;/td&gt;
   &lt;td&gt;0000&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;h5&gt;按8bits重排&lt;/h5&gt;
 &lt;p&gt;如果所有的编码加起来不是8个倍数我们还要在后面加上足够的0，比如上面一共有78个bits，所以，我们还要加上2个0，然后按8个bits分好组：&lt;/p&gt;
 &lt;p&gt;00100000   01011011   00001011   01111000   11010001   01110010   11011100   01001101   01000011   010000  &lt;strong&gt;00&lt;/strong&gt;&lt;/p&gt;
 &lt;h5&gt;补齐码（Padding Bytes）&lt;/h5&gt;
 &lt;p&gt;最后，如果如果还没有达到我们最大的bits数的限制，我们还要加一些补齐码（Padding Bytes），Padding Bytes就是重复下面的两个bytes：11101100 00010001 （这两个二进制转成十进制是236和17，我也不知道为什么，只知道Spec上是这么写的）关于每一个Version的每一种纠错级别的最大Bits限制，可以参看  &lt;a href="http://raidenii.net/files/datasheets/misc/qr_code.pdf" target="_blank"&gt;QR Code Spec&lt;/a&gt;的第28页到32页的Table-7一表。&lt;/p&gt;
 &lt;p&gt;假设我们需要编码的是Version 1的Q纠错级，那么，其最大需要104个bits，而我们上面只有80个bits，所以，还需要补24个bits，也就是需要3个Padding Bytes，我们就添加三个，于是得到下面的编码：&lt;/p&gt;
 &lt;p&gt;00100000 01011011 00001011 01111000 11010001 01110010 11011100 01001101 01000011 01000000   &lt;strong&gt;11101100 00010001 11101100&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;上面的编码就是数据码了，叫Data Codewords，每一个8bits叫一个codeword，我们还要对这些数据码加上纠错信息。&lt;/p&gt;
 &lt;h4&gt;纠错码&lt;/h4&gt;
 &lt;p&gt;上面我们说到了一些纠错级别，Error Correction Code Level，二维码中有四种级别的纠错，这就是为什么二维码有残缺还能扫出来，也就是为什么有人在二维码的中心位置加入图标。&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th colspan="2"&gt;错误修正容量&lt;/th&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;L水平&lt;/td&gt;
   &lt;td&gt;7%的字码可被修正&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;M水平&lt;/td&gt;
   &lt;td&gt;15%的字码可被修正&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;Q水平&lt;/td&gt;
   &lt;td&gt;25%的字码可被修正&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;H水平&lt;/td&gt;
   &lt;td&gt;30%的字码可被修正&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;那么，QR是怎么对数据码加上纠错码的？首先，我们需要对数据码进行分组，也就是分成不同的Block，然后对各个Block进行纠错编码，对于如何分组，我们可以查看  &lt;a href="http://raidenii.net/files/datasheets/misc/qr_code.pdf" target="_blank"&gt;QR Code Spec&lt;/a&gt;的第33页到44页的Table-13到Table-22的定义表。注意最后两列：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;Number of Error Code Correction Blocks&lt;/strong&gt; ：需要分多少个块。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;strong&gt;Error Correction Code Per Blocks&lt;/strong&gt;：每一个块中的code个数，所谓的code的个数，也就是有多少个8bits的字节。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" height="308" src="http://coolshell.cn//wp-content/uploads/2013/10/Error-Correction-Blocks.png" width="576"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;举个例子：上述的Version 5 + Q纠错级：需要4个Blocks（2个Blocks为一组，共两组），头一组的两个Blocks中各15个bits数据 + 各 9个bits的纠错码（注：表中的codewords就是一个8bits的byte）（再注：最后一例中的（c, k, r ）的公式为：c = k + 2 * r，因为后脚注解释了：纠错码的容量小于纠错码的一半）&lt;/p&gt;
 &lt;p&gt;下图给一个5-Q的示例（因为二进制写起来会让表格太大，所以，我都用了十进制，我们可以看到每一块的纠错码有18个codewords，也就是18个8bits的二进制数）&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;th&gt;组&lt;/th&gt;
   &lt;th&gt;块&lt;/th&gt;
   &lt;th&gt;数据&lt;/th&gt;
   &lt;th&gt;对每个块的纠错码&lt;/th&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td rowspan="2"&gt;1&lt;/td&gt;
   &lt;td&gt;1&lt;/td&gt;
   &lt;td&gt;67 85 70 134 87 38 85 194 119 50 6 18 6 103 38&lt;/td&gt;
   &lt;td&gt;213 199 11 45 115 247 241 223 229 248 154 117 154 111 86 161 111 39&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;2&lt;/td&gt;
   &lt;td&gt;246 246 66 7 118 134 242 7 38 86 22 198 199 146 6&lt;/td&gt;
   &lt;td&gt;87 204 96 60 202 182 124 157 200 134 27 129 209 17 163 163 120 133&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td rowspan="2"&gt;2&lt;/td&gt;
   &lt;td&gt;1&lt;/td&gt;
   &lt;td&gt;182 230 247 119 50 7 118 134 87 38 82 6 134 151 50 7&lt;/td&gt;
   &lt;td&gt;148 116 177 212 76 133 75 242 238 76 195 230 189 10 108 240 192 141&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;2&lt;/td&gt;
   &lt;td&gt;70 247 118 86 194 6 151 50 16 236 17 236 17 236 17 236&lt;/td&gt;
   &lt;td&gt;235 159 5 173 24 147 59 33 106 40 255 172 82 2 131 32 178 236&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;注：二维码的纠错码主要是通过  &lt;a href="http://en.wikipedia.org/wiki/Reed%E2%80%93Solomon_error_correction"&gt;Reed-Solomon error correction&lt;/a&gt;（里德-所罗门纠错算法）来实现的。对于这个算法，对于我来说是相当的复杂，里面有很多的数学计算，比如：多项式除法，把1-255的数映射成2的n次方（0&amp;lt;=n&amp;lt;=255）的伽罗瓦域Galois Field之类的神一样的东西，以及基于这些基础的纠错数学公式，因为我的数据基础差，对于我来说太过复杂，所以我一时半会儿还有点没搞明白，还在学习中，所以，我在这里就不展开说这些东西了。还请大家见谅了。（当然，如果有朋友很明白，也繁请教教我）&lt;/p&gt;
 &lt;h4&gt;最终编码&lt;/h4&gt;
 &lt;h5&gt;穿插放置&lt;/h5&gt;
 &lt;p&gt;如果你以为我们可以开始画图，你就错了。二维码的混乱技术还没有玩完，它还要把数据码和纠错码的各个codewords交替放在一起。如何交替呢，规则如下：&lt;/p&gt;
 &lt;p&gt;对于数据码：把每个块的第一个codewords先拿出来按顺度排列好，然后再取第一块的第二个，如此类推。如：上述示例中的Data Codewords如下：&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;td&gt;块 1&lt;/td&gt;
   &lt;td&gt;67&lt;/td&gt;
   &lt;td&gt;85&lt;/td&gt;
   &lt;td&gt;70&lt;/td&gt;
   &lt;td&gt;134&lt;/td&gt;
   &lt;td&gt;87&lt;/td&gt;
   &lt;td&gt;38&lt;/td&gt;
   &lt;td&gt;85&lt;/td&gt;
   &lt;td&gt;194&lt;/td&gt;
   &lt;td&gt;119&lt;/td&gt;
   &lt;td&gt;50&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;18&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;103&lt;/td&gt;
   &lt;td&gt;38&lt;/td&gt;
   &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 2&lt;/td&gt;
   &lt;td&gt;246&lt;/td&gt;
   &lt;td&gt;246&lt;/td&gt;
   &lt;td&gt;66&lt;/td&gt;
   &lt;td&gt;7&lt;/td&gt;
   &lt;td&gt;118&lt;/td&gt;
   &lt;td&gt;134&lt;/td&gt;
   &lt;td&gt;242&lt;/td&gt;
   &lt;td&gt;7&lt;/td&gt;
   &lt;td&gt;38&lt;/td&gt;
   &lt;td&gt;86&lt;/td&gt;
   &lt;td&gt;22&lt;/td&gt;
   &lt;td&gt;198&lt;/td&gt;
   &lt;td&gt;199&lt;/td&gt;
   &lt;td&gt;146&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 3&lt;/td&gt;
   &lt;td&gt;182&lt;/td&gt;
   &lt;td&gt;230&lt;/td&gt;
   &lt;td&gt;247&lt;/td&gt;
   &lt;td&gt;119&lt;/td&gt;
   &lt;td&gt;50&lt;/td&gt;
   &lt;td&gt;7&lt;/td&gt;
   &lt;td&gt;118&lt;/td&gt;
   &lt;td&gt;134&lt;/td&gt;
   &lt;td&gt;87&lt;/td&gt;
   &lt;td&gt;38&lt;/td&gt;
   &lt;td&gt;82&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;134&lt;/td&gt;
   &lt;td&gt;151&lt;/td&gt;
   &lt;td&gt;50&lt;/td&gt;
   &lt;td&gt;7&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 4&lt;/td&gt;
   &lt;td&gt;70&lt;/td&gt;
   &lt;td&gt;247&lt;/td&gt;
   &lt;td&gt;118&lt;/td&gt;
   &lt;td&gt;86&lt;/td&gt;
   &lt;td&gt;194&lt;/td&gt;
   &lt;td&gt;6&lt;/td&gt;
   &lt;td&gt;151&lt;/td&gt;
   &lt;td&gt;50&lt;/td&gt;
   &lt;td&gt;16&lt;/td&gt;
   &lt;td&gt;236&lt;/td&gt;
   &lt;td&gt;17&lt;/td&gt;
   &lt;td&gt;236&lt;/td&gt;
   &lt;td&gt;17&lt;/td&gt;
   &lt;td&gt;236&lt;/td&gt;
   &lt;td&gt;17&lt;/td&gt;
   &lt;td&gt;236&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;我们先取第一列的：67， 246， 182， 70&lt;/p&gt;
 &lt;p&gt;然后再取第二列的：67， 246， 182， 70， 85，246，230 ，247&lt;/p&gt;
 &lt;p&gt;如此类推：67， 246， 182， 70， 85，246，230 ，247 ………  ……… ，38，6，50，17，7，236&lt;/p&gt;
 &lt;p&gt;对于纠错码，也是一样：&lt;/p&gt;
 &lt;table&gt;

  &lt;tr&gt;
   &lt;td&gt;块 1&lt;/td&gt;
   &lt;td&gt;213&lt;/td&gt;
   &lt;td&gt;199&lt;/td&gt;
   &lt;td&gt;11&lt;/td&gt;
   &lt;td&gt;45&lt;/td&gt;
   &lt;td&gt;115&lt;/td&gt;
   &lt;td&gt;247&lt;/td&gt;
   &lt;td&gt;241&lt;/td&gt;
   &lt;td&gt;223&lt;/td&gt;
   &lt;td&gt;229&lt;/td&gt;
   &lt;td&gt;248&lt;/td&gt;
   &lt;td&gt;154&lt;/td&gt;
   &lt;td&gt;117&lt;/td&gt;
   &lt;td&gt;154&lt;/td&gt;
   &lt;td&gt;111&lt;/td&gt;
   &lt;td&gt;86&lt;/td&gt;
   &lt;td&gt;161&lt;/td&gt;
   &lt;td&gt;111&lt;/td&gt;
   &lt;td&gt;39&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 2&lt;/td&gt;
   &lt;td&gt;87&lt;/td&gt;
   &lt;td&gt;204&lt;/td&gt;
   &lt;td&gt;96&lt;/td&gt;
   &lt;td&gt;60&lt;/td&gt;
   &lt;td&gt;202&lt;/td&gt;
   &lt;td&gt;182&lt;/td&gt;
   &lt;td&gt;124&lt;/td&gt;
   &lt;td&gt;157&lt;/td&gt;
   &lt;td&gt;200&lt;/td&gt;
   &lt;td&gt;134&lt;/td&gt;
   &lt;td&gt;27&lt;/td&gt;
   &lt;td&gt;129&lt;/td&gt;
   &lt;td&gt;209&lt;/td&gt;
   &lt;td&gt;17&lt;/td&gt;
   &lt;td&gt;163&lt;/td&gt;
   &lt;td&gt;163&lt;/td&gt;
   &lt;td&gt;120&lt;/td&gt;
   &lt;td&gt;133&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 3&lt;/td&gt;
   &lt;td&gt;148&lt;/td&gt;
   &lt;td&gt;116&lt;/td&gt;
   &lt;td&gt;177&lt;/td&gt;
   &lt;td&gt;212&lt;/td&gt;
   &lt;td&gt;76&lt;/td&gt;
   &lt;td&gt;133&lt;/td&gt;
   &lt;td&gt;75&lt;/td&gt;
   &lt;td&gt;242&lt;/td&gt;
   &lt;td&gt;238&lt;/td&gt;
   &lt;td&gt;76&lt;/td&gt;
   &lt;td&gt;195&lt;/td&gt;
   &lt;td&gt;230&lt;/td&gt;
   &lt;td&gt;189&lt;/td&gt;
   &lt;td&gt;10&lt;/td&gt;
   &lt;td&gt;108&lt;/td&gt;
   &lt;td&gt;240&lt;/td&gt;
   &lt;td&gt;192&lt;/td&gt;
   &lt;td&gt;141&lt;/td&gt;
&lt;/tr&gt;
  &lt;tr&gt;
   &lt;td&gt;块 4&lt;/td&gt;
   &lt;td&gt;235&lt;/td&gt;
   &lt;td&gt;159&lt;/td&gt;
   &lt;td&gt;5&lt;/td&gt;
   &lt;td&gt;173&lt;/td&gt;
   &lt;td&gt;24&lt;/td&gt;
   &lt;td&gt;147&lt;/td&gt;
   &lt;td&gt;59&lt;/td&gt;
   &lt;td&gt;33&lt;/td&gt;
   &lt;td&gt;106&lt;/td&gt;
   &lt;td&gt;40&lt;/td&gt;
   &lt;td&gt;255&lt;/td&gt;
   &lt;td&gt;172&lt;/td&gt;
   &lt;td&gt;82&lt;/td&gt;
   &lt;td&gt;2&lt;/td&gt;
   &lt;td&gt;131&lt;/td&gt;
   &lt;td&gt;32&lt;/td&gt;
   &lt;td&gt;178&lt;/td&gt;
   &lt;td&gt;236&lt;/td&gt;
&lt;/tr&gt;

&lt;/table&gt;
 &lt;p&gt;和数据码取的一样，得到：213，87，148，235，199，204，116，159，…… …… 39，133，141，236&lt;/p&gt;
 &lt;p&gt;然后，再把这两组放在一起（纠错码放在数据码之后）得到：&lt;/p&gt;
 &lt;p&gt;67, 246, 182, 70, 85, 246, 230, 247, 70, 66, 247, 118, 134, 7, 119, 86, 87, 118, 50, 194, 38, 134, 7, 6, 85, 242, 118, 151, 194, 7, 134, 50, 119, 38, 87, 16, 50, 86, 38, 236, 6, 22, 82, 17, 18, 198, 6, 236, 6, 199, 134, 17, 103, 146, 151, 236, 38, 6, 50, 17, 7, 236, 213, 87, 148, 235, 199, 204, 116, 159, 11, 96, 177, 5, 45, 60, 212, 173, 115, 202, 76, 24, 247, 182, 133, 147, 241, 124, 75, 59, 223, 157, 242, 33, 229, 200, 238, 106, 248, 134, 76, 40, 154, 27, 195, 255, 117, 129, 230, 172, 154, 209, 189, 82, 111, 17, 10, 2, 86, 163, 108, 131, 161, 163, 240, 32, 111, 120, 192, 178, 39, 133, 141, 236&lt;/p&gt;
 &lt;p&gt;这就是我们的数据区。&lt;/p&gt;
 &lt;h5&gt;Remainder Bits&lt;/h5&gt;
 &lt;p&gt;最后再加上Reminder Bits，对于某些Version的QR，上面的还不够长度，还要加上Remainder Bits，比如：上述的5Q版的二维码，还要加上7个bits，Remainder Bits加零就好了。关于哪些Version需要多少个Remainder bit，可以参看  &lt;a href="http://raidenii.net/files/datasheets/misc/qr_code.pdf" target="_blank"&gt;QR Code Spec&lt;/a&gt;的第15页的Table-1的定义表。&lt;/p&gt;
 &lt;h4&gt;画二维码图&lt;/h4&gt;
 &lt;h5&gt;Position Detection Pattern&lt;/h5&gt;
 &lt;p&gt;首先，先把Position Detection图案画在三个角上。（无论Version如何，这个图案的尺寸就是这么大）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="141" src="http://coolshell.cn//wp-content/uploads/2013/10/finder.png" width="99"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h5&gt;Alignment Pattern&lt;/h5&gt;
 &lt;p&gt;然后，再把Alignment图案画上（无论Version如何，这个图案的尺寸就是这么大）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="91" src="http://coolshell.cn//wp-content/uploads/2013/10/alignment-pattern.png" width="68"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;关于Alignment的位置，可以查看  &lt;a href="http://raidenii.net/files/datasheets/misc/qr_code.pdf" target="_blank"&gt;QR Code Spec&lt;/a&gt;的第81页的Table-E.1的定义表（下表是不完全表格）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="239" src="http://coolshell.cn//wp-content/uploads/2013/10/Alignment-Position.png" width="582"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;下图是根据上述表格中的Version8的一个例子（6，24，42）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="288" src="http://coolshell.cn//wp-content/uploads/2013/10/alignment-example.png" width="241"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h5&gt;Timing Pattern&lt;/h5&gt;
 &lt;p&gt;接下来是Timing Pattern的线（这个不用多说了）&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;   &lt;img alt="" height="258" src="http://coolshell.cn//wp-content/uploads/2013/10/Timing-Pattern.png" width="596"&gt;&lt;/img&gt;&lt;/strong&gt;&lt;/p&gt;
 &lt;h5&gt;Format Information&lt;/h5&gt;
 &lt;p&gt;再接下来是Formation Information，下图中的蓝色部分。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="199" src="http://coolshell.cn//wp-content/uploads/2013/10/Format-Information.png" width="352"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Format Information是一个15个bits的信息，每一个bit的位置如下图所示：（注意图中的Dark Module，那是永远出现的）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="381" src="http://coolshell.cn//wp-content/uploads/2013/10/Format-Info-bits-postion.png" width="363"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;这15个bits中包括：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;5个数据bits：其中，2个bits用于表示使用什么样的Error Correction Level， 3个bits表示使用什么样的Mask&lt;/li&gt;
  &lt;li&gt;10个纠错bits。主要通过BCH Code来计算&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;然后15个bits还要与101010000010010做XOR操作。这样就保证不会因为我们选用了00的纠错级别和000的Mask，从而造成全部为白色，这会增加我们的扫描器的图像识别的困难。&lt;/p&gt;
 &lt;p&gt;下面是一个示例：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="116" src="http://coolshell.cn//wp-content/uploads/2013/10/Format-Information-Example.png" width="376"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;关于Error Correction Level如下表所示：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="114" src="http://coolshell.cn//wp-content/uploads/2013/10/Error-Correction-Indicator-Code.png" width="253"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;关于Mask图案如后面的Table 23所示。&lt;/p&gt;
 &lt;h5&gt;Version Information&lt;/h5&gt;
 &lt;p&gt;再接下来是Version Information（版本7以后需要这个编码），下图中的蓝色部分。  &lt;br /&gt;
  &lt;img alt="" height="254" src="http://coolshell.cn//wp-content/uploads/2013/10/Version-Information.png" width="508"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Version Information一共是18个bits，其中包括6个bits的版本号以及12个bits的纠错码，下面是一个示例：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="63" src="http://coolshell.cn//wp-content/uploads/2013/10/Version-Information-Example.png" width="405"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;而其填充位置如下：&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="149" src="http://coolshell.cn//wp-content/uploads/2013/10/Version-Information-Position.png" width="425"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h5&gt;数据和数据纠错码&lt;/h5&gt;
 &lt;p&gt;然后是填接我们的最终编码，最终编码的填充方式如下：从左下角开始沿着红线填我们的各个bits，1是黑色，0是白色。如果遇到了上面的非数据区，则绕开或跳过。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="372" src="http://coolshell.cn//wp-content/uploads/2013/10/Data-Placement.png" width="348"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;h5&gt;掩码图案&lt;/h5&gt;
 &lt;p&gt;这样下来，我们的图就填好了，但是，也许那些点并不均衡，如果出现大面积的空白或黑块，会告诉我们扫描识别的困难。所以，我们还要做Masking操作（靠，还嫌不复杂）QR的Spec中说了，QR有8个Mask你可以使用，如下所示：其中，各个mask的公式在各个图下面。所谓mask，说白了，就是和上面生成的图做XOR操作。Mask只会和数据区进行XOR，不会影响功能区。（  &lt;strong&gt;注：选择一个合适的Mask也是有算法的&lt;/strong&gt;）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="274" src="http://coolshell.cn//wp-content/uploads/2013/10/masking-pattern.png" width="494"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;其Mask的标识码如下所示：（其中的i,j分别对应于上图的x,y）&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="181" src="http://coolshell.cn//wp-content/uploads/2013/10/Mask-Pattern-Code.png" width="416"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;下面是Mask后的一些样子，我们可以看到被某些Mask XOR了的数据变得比较零散了。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" height="446" src="http://coolshell.cn//wp-content/uploads/2013/10/Masking-Examples.png" width="616"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;Mask过后的二维码就成最终的图了。&lt;/p&gt;
 &lt;p&gt;好了，大家可以去尝试去写一下QR的编码程序，当然，你可以用网上找个Reed Soloman的纠错算法的库，或是看看别人的源代码是怎么实现这个繁锁的编码。&lt;/p&gt;
 &lt;p&gt;（全文完）
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p align="center"&gt;  &lt;strong&gt;（转载本站文章请注明作者和出处    &lt;a href="http://coolshell.cn/"&gt;酷壳 – CoolShell.cn&lt;/a&gt; ，请勿用于任何商业用途）&lt;/strong&gt;
  &lt;div&gt;——===    &lt;strong&gt;访问     &lt;a href="http://coolshell.cn/404/" target="_blank"&gt;酷壳404页面&lt;/a&gt; 寻找遗失儿童。&lt;/strong&gt; ===——&lt;/div&gt;

  &lt;div&gt;   &lt;div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/p&gt; &lt;h3&gt;相关文章&lt;/h3&gt; &lt;ul&gt;  &lt;li&gt;2012年08月22日 --    &lt;a href="http://coolshell.cn/articles/8138.html"&gt;为什么我反对纯算法面试题&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年08月17日 --    &lt;a href="http://coolshell.cn/articles/8052.html"&gt;K Nearest Neighbor 算法&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年06月29日 --    &lt;a href="http://coolshell.cn/articles/7779.html"&gt;K-Means 算法&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年05月22日 --    &lt;a href="http://coolshell.cn/articles/7459.html"&gt;Huffman 编码压缩算法&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年11月20日 --    &lt;a href="http://coolshell.cn/articles/8593.html"&gt;如何测试洗牌程序&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年05月17日 --    &lt;a href="http://coolshell.cn/articles/7425.html"&gt;rsync 的核心算法&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年09月07日 --    &lt;a href="http://coolshell.cn/articles/8239.html"&gt;无锁队列的实现&lt;/a&gt;&lt;/li&gt;  &lt;li&gt;2012年10月24日 --    &lt;a href="http://coolshell.cn/articles/8422.html"&gt;TF-IDF模型的概率解释&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; &lt;div&gt;  &lt;a href="http://www.zemanta.com/?wp-related-posts" target="_blank"&gt;Zemanta&lt;/a&gt;&lt;/div&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>杂项资源 程序设计 Algorithm QR 二维码</category>
      <guid isPermaLink="true">https://itindex.net/detail/46249-%E4%BA%8C%E7%BB%B4%E7%A0%81-%E5%8E%9F%E7%90%86</guid>
      <pubDate>Tue, 29 Oct 2013 08:32:35 CST</pubDate>
    </item>
    <item>
      <title>学习jQuery的免费资源：电子书、视频、教程和博客</title>
      <link>https://itindex.net/detail/47110-%E5%AD%A6%E4%B9%A0-jquery-%E5%85%8D%E8%B4%B9</link>
      <description>&lt;p&gt;jQuery毫无疑问是目前最流行的JavasScript库。排名最前的网站中70%使用了jQuery，并且jQuery也成为了Web开发的标准。如果你想找Web开发方面的工作，了解jQuery会大大的给你加分。&lt;/p&gt;
 &lt;p&gt;到目前为止教学资源无论从质量还是获取途径上都获得了进步。换句话说，现在就是学习web开发的最佳时机。本文将为大家提供一系列的资源。我多希望我学习jQuery的时候也有这些资源啊，但是已经晚了。所以要推荐给初学者。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww2.sinaimg.cn/mw690/7cc829d3gw1ebn6x7d2vsj20qe0dmgmu.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;先认识jQuery家族&lt;/h2&gt;
 &lt;p&gt;jQuery是一个库，他能够简化DOM操作，事件监听，动画实现，AJAX请求等等。但或许你还不知道jQuery项目还支持其他三个以jQuery命名的库：&lt;/p&gt;
 &lt;p&gt;1.  &lt;a href="http://www.jquery.com"&gt; jQuery库&lt;/a&gt; 这就是人们常说起的jQuery。也是本文提到的资源针对的内容。另外两个库构建于这个库之上，但针对特定的应用场景进行了扩展。截止本文发布之时，主要有两个版本：1.9.1和2.0。 其中2.0去掉了对旧版本浏览器的支持，例如IE6,7,8。所以为了兼容性强烈建议大家采用1.9.1版本。&lt;/p&gt;
 &lt;p&gt;2.   &lt;a href="http://jquerymobile.com/"&gt;jQuery Mobile&lt;/a&gt; 是一个采用HTML5针对移动web应用开发的轻量级框架。它提供工具条，按钮，列表视图等控件来支持ajax-驱动和触摸操作。&lt;/p&gt;
 &lt;p&gt;在您掌握了jQuery基础后建议你学习本框架。这里也提供  &lt;a href="http://tutorialzine.com/2011/08/jquery-mobile-product-website/"&gt;一个初级教程&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;3.   &lt;a href="http://jqueryui.com/"&gt;jQuery UI &lt;/a&gt;是一系列的工具集，包含日期选择器、对话框、进度条、特效以及其他一些针对web交互的应用。我感觉这一块jQuery UI正在失去优势，因为开发人员更倾向于更加现代化的框架。针对这一块建议大家学习  &lt;a href="http://twitter.github.io/bootstrap/"&gt;Twitter Bootstrap&lt;/a&gt;。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ebn6xa35ygj20h80b4t9d.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;现在你应该对jQuery家族有了初步了解，接下来从哪儿开始呢？&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;第一步：&lt;/h2&gt;
 &lt;p&gt;近年来针对web开发人员的免费资源在质量上和数量上都显著上升。下面是一些入门资源：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://learn.jquery.com/javascript-101/" target="_blank"&gt;JavaScript 101&lt;/a&gt; 很好的介绍了JavaScript。如果你对于JavaScript还不是很熟，你可以从这篇文章开始。然后你可以继续学习一些稍后会介绍的JS书籍。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://learn.jquery.com/about-jquery/how-jquery-works/" target="_blank"&gt;The jQuery Getting Started Guide&lt;/a&gt; 对初学者来说是很好的入门教程。它讲解了如何在页面中引入jQuery,以及如何开始写代码。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://try.jquery.com/"&gt;Try jQuery&lt;/a&gt; 提供很好的交互性视频教程，同时也提供一些编程的题目。（补充：这个系列的视频，已有热心的网友汉化了全部视频，链接是：   &lt;a href="http://blog.jobbole.com/37699/"&gt;http://blog.jobbole.com/37699/&lt;/a&gt; ）&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;a href="http://try.jquery.com/" target="_blank"&gt;   &lt;img alt="TryjQuery" height="440" src="http://cdn2.jobbole.com/2013/04/try-jQuery.jpg" title="TryjQuery" width="534"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;尝到甜头后，你可以阅读下一张列出的书籍。&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;免费电子书：&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;教程和博客一般针对特定的技巧，如果你完全是新手可能对你没什么用。这就是书籍的好处 – 给你提供全面的系统的技术视角，并附带例子和细节。&lt;/p&gt;
 &lt;p&gt;说实话如果你不懂JavaScript，就别想学好jQuery，下面就为大家推荐一些书籍：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;《   &lt;a href="http://eloquentjavascript.net/"&gt;Eloquent JavaScript&lt;/a&gt;》 这本书不但教你JavaScript，也会教你一些编程的基础。对那些在编程方面没经验的学习者来说这是很好的材料。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="https://developer.mozilla.org/en-US/docs/JavaScript/Guide"&gt;Mozilla Developer Network’s JavaScript Guide&lt;/a&gt;》是另一本介绍JavaScript语言的书。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="http://www.javascriptenlightenment.com/"&gt;JavaScript Enlightenment&lt;/a&gt;》包含一些高级特性讲解，比如闭包，原型，复值以及继承等。这本书希望以简单和易于理解的方式来阐述这门语言。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="http://domenlightenment.com/"&gt;Dom Enlightenment&lt;/a&gt;》作者就是上一本书的作者。这本书深入讲解JS和DOM的关系。其中的例子为你展示jQuery的幕后机制。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="http://singlepageappbook.com/single-page.html"&gt;Single Page Web Apps in Depth&lt;/a&gt;》教你如何把应用做得跟桌面应用一样。你会学习如何在JS中实现集合，模型和视图，并与后台同步，以及如何编写易于维护的代码。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/"&gt;Learning JavaScript Design Patterns&lt;/a&gt;》讲述如何在JavaScript应用中使用著名的设计模式。&lt;/li&gt;
  &lt;li&gt;《   &lt;a href="http://addyosmani.com/largescalejavascript/"&gt;Patterns for Large-Scale JavaScript Applications&lt;/a&gt;》专注于组织大型代码库。适合有经验的JS开发人员。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ebn6xcrvjbj20h80b4aaq.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt;下面是一些免费的jQuery书籍：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://jqfundamentals.com/"&gt;jQuery Fundamentals &lt;/a&gt;是jQuery初学者的必读书。它深入讲解了所有jQuery的主要特性。并提供易于理解的例子让你直接在浏览器里运行。   &lt;br /&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.syncfusion.com/resources/techportal/ebooks/jquery"&gt;jQuery Succinctly&lt;/a&gt; 为中高级开发阐释了jQuery开发需要了解的概念。学习了上面的jQuery基础后，这本书是很好的进阶资料。&lt;/li&gt;
  &lt;li&gt;jQuery本身也提供了很好的   &lt;a href="http://api.jquery.com/"&gt;API文档&lt;/a&gt;，完整的示例代码。这也相当于一本优秀的学习书籍。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ebn6xf6k96j20h80b4gml.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;课程和培训&lt;/h2&gt;
 &lt;p&gt;课程一般来说也会尽量解释一些新概念。课程可能包含一些专业剪辑的视频、练习以及示例代码。下面是一些的免费资源：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://blog.jobbole.com/37699/" target="_blank"&gt;Try jQuery&lt;/a&gt;，上文已经提到过了。为了完整性这里再重复一次。这个课程包含视频、示例代码和练习。   &lt;br /&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://learn.appendto.com/lessons"&gt;Lessons by appendTo() &lt;/a&gt;免费视频课程，囊括了JavaScript、 jQuery、事件、方法和选择器。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://learn.jquery.com/"&gt;Learn jQuery&lt;/a&gt;是官方的学习门户。这里你可以找到适合初学者的教程和文章。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.percederberg.net/software/jsi/"&gt;JavaScript interactive&lt;/a&gt; 基于控制台的速成课，需要在浏览器编写代码并通过测试。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://learnjquery.tutsplus.com/"&gt;Learn jQuery in 30 Days&lt;/a&gt; 是tutsplus提供的邮件课程。你订阅后会在30天内每天收到视频教程。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://ejohn.org/apps/learn/"&gt;Learning Advanced JavaScript &lt;/a&gt;是jQuery的创立者John Resig提供的一系列技巧和建议。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ebn6xghrx9j20h80b4jsc.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;视频&lt;/h2&gt;
 &lt;p&gt;对于懒人来说视频是学习新语言的好方式。你就舒服的坐在沙发上，老师把web开发的知识一勺一勺的喂到你嘴边，何乐而不为呢？&lt;/p&gt;
 &lt;p&gt;下面是一些你可以立即观看的免费jQuery视频：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://net.tutsplus.com/articles/web-roundups/jquery-for-absolute-beginners-video-series/"&gt;jQuery for absolute beginners&lt;/a&gt; 由Nettuts提供，虽然有点过时了，但你还是能从中学到一些jQuery的基础。   &lt;br /&gt;
&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.youtube.com/playlist?list=PLQVUXNECA8bM182MyebrJVabrIy-XE9gI"&gt;Learning jQuery &lt;/a&gt;是一个庞大的YouTube视频目录，涵盖范围很广，包括ready事件以及异步提交表单等。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://ontwik.com/category/jquery/"&gt;Ontwik’s jQuery Videos&lt;/a&gt; 包含一些列在世界范围内发布的高质量的视频和讲座。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.youtube.com/user/jsconfeu"&gt;JSConf&lt;/a&gt; 包含一些流行的JavaScript会议的视频。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://vimeo.com/fronteers/videos"&gt;Fronteers videos&lt;/a&gt; 是一系列的Fronteers前端开发会议视频。一部分视频是说的德语，但也有大量的英语讲座。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww4.sinaimg.cn/mw690/7cc829d3gw1ebn6xh2gfsj20h80b4abg.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;演讲稿&lt;/h2&gt;
 &lt;p&gt;演讲稿类似于视频，但更简洁，也没有演讲者挡住视线。下面就是一些非常受欢迎的jQuery演示：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.slideshare.net/simon/learning-jquery-in-30-minutes"&gt;jQuery in 30 minutes &lt;/a&gt;有点老了，但适合初学者。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.slideshare.net/AddyOsmani/jquery-proven-performance-tips-tricks"&gt;jQuery proven performance tips and tricks&lt;/a&gt; 优化jQuery代码的建议。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.slideshare.net/paul.irish/perfcompression"&gt;jQuery Anti-Patterns&lt;/a&gt; 介绍如何组织代码并远离“反-模式”，因为它会让你的代码在长远看来无法维护。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.slideshare.net/rmurphey/using-objects-to-organize-your-jquery-code"&gt;Using objects to organize your code&lt;/a&gt; 另一个介绍代码维护的演示。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.slideshare.net/ryanlsmith/jquery-its-a-library-not-a-framework"&gt;jQuery: It’s a library, not a framework&lt;/a&gt; 提醒你尽管jQuery给你提供强大力量，但并不能让你的代码组织良好。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://ejohn.org/apps/workshop/adv-talk/"&gt;Things you might not know about jQuery&lt;/a&gt; 虽然是针对jQuery 1.4 的， 但仍适用最新版。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww3.sinaimg.cn/mw690/7cc829d3gw1ebn6xi430pj20h80b43z9.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;教程和博客&lt;/h2&gt;
 &lt;p&gt;当然了，教程也有它存在的价值，比如你已经掌握了基础之后。下面就为大家提供一些jQuery教程的资源。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://tutorialzine.com/tag/jquery/"&gt;Our own tutorial collection &lt;/a&gt;涵盖很多jQuery精华。我们用jQuery库完成各种有意思的事情并展示高级技术。（所有的PSD文件都可以在用户区下载）&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://net.tutsplus.com/category/tutorials/?tag=jquery"&gt;Nettuts&lt;/a&gt; 拥有大量的jQuery教程。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jquery-howto.blogspot.com/"&gt;jQuery Howto&lt;/a&gt; 是历史最悠久的jQuery博客之一。差不多覆盖了jQuery的方方面面。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jqueryfordesigners.com/"&gt;jQuery For Designers&lt;/a&gt; 曾经是非常受欢迎的教程网，但好几年没更新了。但上面的一些脚本至今还很有用处。（可能需要针对1.9版本修复）&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://badassjs.com/"&gt;Badass JS&lt;/a&gt; 一个代表JavaScript世界的超酷展现。尽管不是教程，但它的博客经常发表深入技术细节的文章。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://dailyjs.com/"&gt;DailyJS&lt;/a&gt; 另一个JavaScript/jQuery博客。你可以在这找到很多最新的插件，并经常保持更新。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;综合&lt;/h2&gt;
 &lt;p&gt;  &lt;strong&gt;&lt;/strong&gt;下面这些资源不能归到上面任何一类，但我认为值得一看：&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;在stackoverflow通过vote数量来筛选jQuery的问题你就能发现一些有意思的话题，这也能帮助你进步。   &lt;a href="http://stackoverflow.com/questions/tagged/jquery?sort=votes&amp;pagesize=15"&gt;自己看吧&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://bonsaiden.github.io/JavaScript-Garden/"&gt;JavaScript Garden&lt;/a&gt; 提供丰富的文档，介绍JavaScript最怪异的方面&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://jqapi.com/"&gt;jQAPI&lt;/a&gt; 另一个jQuery的文档浏览页面。它的界面我感觉比官方的更好看。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://oscarotero.com/jquery/"&gt;jQuery Cheatsheet&lt;/a&gt; 提供完整的jQuery API介绍，组织良好。可以很好的加入书签。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.keyframesandcode.com/resources/javascript/deconstructed/jquery/"&gt;jQuery Deconstructed &lt;/a&gt;提供完整的源代码和一些图形化的分析试验。遗憾的是没有针对最新的jQuery更新。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://javascriptweekly.com/"&gt;JavaScript weekly&lt;/a&gt; 每周邮件。每周五将收到有趣的JavaScript链接。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.unheap.com/"&gt;Unheap&lt;/a&gt; 提供jQuery插件，整洁又漂亮。所有东西都被优雅的分类并提供Demo和预览链接。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://plugins.jquery.com/"&gt;jQuery Plugins &lt;/a&gt;是官方的插件网站。你可以按分类找到很多插件。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://microjs.com/"&gt;Microjs&lt;/a&gt; 集合了很多的小型JavaScript库（不包含jQuery 插件），都有特色并轻量。只包含一些小文件。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.jsdb.io/?sort=trending"&gt;JSDB&lt;/a&gt; 另一个有用的JS库和插件，但在文件大小上没有限制。可以按照关注程度排序以节省时间。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://cdnjs.com/"&gt;CDNJS&lt;/a&gt; 是一个庞大的CDN，上面维护了很多的库。你可以从他们的服务器上引用jQuery和插件，这样可以为你的网站加速并节省流量。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;  &lt;img alt="" src="http://ww2.sinaimg.cn/mw690/7cc829d3gw1ebn6xliyw6j20h80b4gmy.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt; &lt;/p&gt;
 &lt;h2&gt;祝学习愉快！&lt;/h2&gt;
 &lt;p&gt;你还知道一些没有列出的资源？那就在评论里分享给大家吧。&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/21136/"&gt;10 个 jQuery 图表插件推荐&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/864/"&gt;16个流行的JavaScript框架&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/18513/"&gt;50个jQuery代码段帮你成为更出色的JS开发者&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/39546/"&gt;如何做到 jQuery-free？&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/36327/"&gt;我眼中的技术高手&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/9743/"&gt;10 个jQuery/JavaScript的圣诞主题效果 &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/52195/"&gt;如何忘却jQuery，开始使用JavaScript原生API&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/11468/"&gt;2011年使用率增长最快的十大Web技术&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/12203/"&gt;完全理解关键字this&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/13671/"&gt;13个JavaScript图表（JS图表）图形绘制插件 &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/53544/"&gt;学习jQuery的免费资源：电子书、视频、教程和博客&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>工具与资源 程序员 Javascript jQuery</category>
      <guid isPermaLink="true">https://itindex.net/detail/47110-%E5%AD%A6%E4%B9%A0-jquery-%E5%85%8D%E8%B4%B9</guid>
      <pubDate>Wed, 18 Dec 2013 01:43:00 CST</pubDate>
    </item>
    <item>
      <title>机器学习的最佳入门学习资源</title>
      <link>https://itindex.net/detail/47717-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%AD%A6%E4%B9%A0-%E8%B5%84%E6%BA%90</link>
      <description>&lt;p&gt;这是一篇很难写的文章，因为我希望这篇文章能对学习者有所启发。我在空白页前坐下，并且问自己了一个很难的问题：什么样的库、课程、论文和书籍对于机器学习的初学者来说，是最好的。&lt;/p&gt;
 &lt;p&gt;文章里到底写什么、不写什么，这个问题真的让我很烦恼。我必须把自己当做一个程序员和一个机器学习的初学者，站在这个角度去考虑最合适的资源。&lt;/p&gt;
 &lt;p&gt;我找出了每个类型中最适合的资源。如果你是一个真正的初学者，并且乐意于开始了解机器学习领域的相关知识，我希望，你可以在我的文章中，找到有用的资料。我的建议是，从中挑出一件来，一本书或者是一个库，反复阅读或者认真学习所有的相关教程。挑出一件并且坚持学习，直到你完全掌握，再重新选择一件，重复这个学习过程。现在就让我们开始吧！&lt;/p&gt;
 &lt;h2&gt;Programming Libraries 编程库资源&lt;/h2&gt;
 &lt;p&gt;我是一个“学习要敢于冒险和尝试”观念的倡导者。这是我学习编程的方式，我相信很多人也是这样学习程序设计的。先了解你的能力极限，然后去拓展你的能力。如果你了解如何编程，可以将编程经验很快借鉴到深入学习机器学习上。在你实现一个实际的产品系统之前，你必须遵循一些规则、学习相关数学知识。&lt;/p&gt;
 &lt;p&gt;找到一个库并且仔细阅读相关文档，根据教程，开始尝试实现一些东西。下面列出的是开源的机器学习库中最好的几种。我认为，并不是他们中的每一种都适合用在你的系统中，但是他们是你学习、探索和实验的好材料。&lt;/p&gt;
 &lt;p&gt;你可以从一个由你熟悉的语言编写的库开始学习，然后再去学习其他功能强大的库。如果你是一个优秀的程序员，你会知道怎样从一种语言，简单合理地迁移到另一种语言。语言的逻辑都是相同的，只是语法和API稍有不同。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.r-project.org/"&gt;R Project for Statistical Computing&lt;/a&gt;：这是一个开发环境，采用一种近似于Lisp的脚本语言。在这个库中，所有你想要的与统计相关的功能都通过Ｒ语言提供，包括一些复杂的图标。CRAN(你可以认为是机器学弟的第三方包)中的机器学习目录下的代码，是由统计技术方法和其他相关领域中的领军人物编写的。如果你想做实验，或是快速拓展知识，R语言都是必须学习的。但它可能不是你学习的第一站。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://www.cs.waikato.ac.nz/ml/weka/"&gt;WEKA&lt;/a&gt;：这是一个数据挖掘工作平台，为用户提供数一系列据挖掘全过程的API、命令行和图形化用户接口。你可以准备数据、可视化、建立分类、进行回归分析、建立聚类模型，同时可以通过第三方插件执行其他算法。除了WEKA之外，    &lt;a href="http://mahout.apache.org/"&gt;Mahout&lt;/a&gt;是Hadoop中为机器学习提供的一个很好的JAVA框架，你可以自行学习。如果你是机器学习和大数据学习的新手，那么坚持学习WEKA，并且全心全意地学习一个库。&lt;/li&gt;
  &lt;li&gt;   &lt;a href="http://scikit-learn.org/"&gt;Scikit Learn&lt;/a&gt;:这是用Python编写的，基于NumPy和SciPy的机器学习库。如果你是一个Python或者Ruby语言程序员，这是适合你用的。这个库很用户接口友好，功能强大，并且配有详细的文档说明。如果你想试试别的库，你可以选择Orange。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.gnu.org/software/octave/"&gt;Octave&lt;/a&gt;:如果你很熟悉MatLab，或者你是寻求改变的NumPy程序员，你可以考虑 Octave。这是一个数值计算环境，与MatLab像是，借助Octave你可以很方便地解决线性和非线性问题，比如机器学习算法底层涉及的问题。如果你有工程背景，那么你可以由此入手。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://bigml.com/"&gt;BigML&lt;/a&gt;:可能你并不想进行编程工作。你完全可以不通过代码，来使用 WEKA那样的工具。你通过使用BigMLS的服务来进行更加深入的工作。BigML通过Web页面，提供了机器学习的接口，因此你可以通过浏览器来建立模型。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;挑选出一个平台，并且在你实际学习机器学习的时候使用它。不要纸上谈兵，要去实践！&lt;/p&gt;
 &lt;h2&gt;Video Courses视频课程&lt;/h2&gt;
 &lt;p&gt;很多人都是通过视频资源开始接触机器学习的。我在YouTube和VideoLectures上看了很多于机器学习相关的视频资源。这样做的问题是，你可能只是观看视频而并不实际去做。我的建议是，你在观看视频的时候，应该多记笔记，及时后来你会抛弃你的笔记。同时，我建议你将学到的东西付诸实践。&lt;/p&gt;
 &lt;p&gt;坦白讲，我没有看见特别合适初学者的视频资源。视频资源都需要你掌握一定的线性代数、概率论等知识。Andrew Ng在斯坦福的讲解可能是最适合初学者的，下面是我推荐的一些视频资源。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://www.coursera.org/course/ml"&gt;Stanford Machine Learning&lt;/a&gt;斯坦福的机器学习课程：可以在Coursera上观看，这门课是由 Andrew Ng讲解的。只要注册，你可以随时观看所有的课程视频，从   &lt;a href="http://cs229.stanford.edu/"&gt;Stanford CS229 course&lt;/a&gt;下载讲义和笔记。这门课包括了家庭作业和小测试，课程主要讲解了线性代数的知识，使用Octave库。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="https://www.edx.org/course/caltechx/caltechx-cs1156x-learning-data-1120"&gt;Caltech Learning from Data&lt;/a&gt;加利福尼亚理工学院的数据分析课程：你可以在edX上学习这门课程，课程是由Yaser Abu-Mostafa讲解的。所有的课程视频和资料都在加利福尼亚理工学院的网站上。与斯坦福的课程类似，你可以根据自己的情况安排学习进度，完成家庭作业和小论文。它与斯坦福的课程主题相似，关注更多的细节和数学知识。对于初学者来说，家庭作业可能稍有难度。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://videolectures.net/Top/Computer_Science/Machine_Learning/"&gt;Machine Learning Category on VideoLectures.Net&lt;/a&gt;网站中的机器学习目录：这是个很容易令人眼花缭乱的资源库。你可以找出比较感兴趣的资源，并且深入学习。不要纠结于不适合你的视频，或者对于感兴趣的内容你可以做笔记。我自己会一直重复深入学习一些问题，同时发现新的话题进行学习。此外，在这个网站上你可以发现是这个领域的大师是什么样的。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://blog.kaggle.com/2011/03/23/getting-in-shape-for-the-sport-of-data-sciencetalk-by-jeremy-howard/"&gt;“Getting In Shape For The Sport Of Data Science” – 由Jeremy Howard&lt;/a&gt;讲授：这是与机器学习竞赛者的对话，他们是一些实践中的R语言用户。这是非常珍贵的资源，因为很少有人会讨论研究一个问题的完整过程和究竟怎样做。我曾经幻想过在网上找到一个TV秀，记录机器学习竞赛的全过程。这就是我开始学习机器学习的经历！&lt;/li&gt;
&lt;/ul&gt;
 &lt;h2&gt;Overview Papers综述论文&lt;/h2&gt;
 &lt;p&gt;如果你并不习惯阅读科研论文，你会发现论文的语言非常晦涩难懂。一篇论文就像是一本教科书的片段，但是论文会介绍一个实验或者是领域中其他的前沿知识。然而，如果你准备从阅读论文开始学习机器学习的话，你还是可以找到一些很有意思的文章的。&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.cs.cmu.edu/~tom/pubs/MachineLearning.pdf" target="_blank"&gt;The Discipline of Machine Learning&lt;/a&gt;机器学习中的规则：这是由Tom Mitchell编著的白皮书，其中定义了机器学习的规则。Mitchell在说服CMU总裁为一个百年内都存在的问题建立一个独立的机器学习部门时，也用到了这本书中的观点。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://homes.cs.washington.edu/~pedrod/papers/cacm12.pdf" target="_blank"&gt;A Few Useful Things to Know about Machine Learning&lt;/a&gt;：这是一篇很好的论文，因为它以详细的算法为基础，又提出了一些很重要的问题，比如：选择特征的一般化，模型简化等。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;我只是列出了两篇重要的论文，因为阅读论文会让你陷入困境。&lt;/p&gt;
 &lt;h2&gt;Beginner Machine Learning Books给机器学习初学者的书&lt;/h2&gt;
 &lt;p&gt;关于机器学习的书有很多，但是几乎没有为初学者量身定做的。什么样的人才是初学者呢？最有可能的情况是，你从另外一个完全不同的领域比如：计算机科学、程序设计或者是统计学，来到机器学习领域。那么，大部分的书籍要求你有一定的线性代数和概率论的基础。&lt;/p&gt;
 &lt;p&gt;但是，还有一些书通过讲解最少的算法来鼓励程序员学习机器学习，书中会介绍一些可以使用工具、编程函数库来让程序员尝试。其中最有代表性的书是：《Programming Collective Intelligence》，《Machine Learning for Hackers》，《Hackersand Data Mining: Practical Machine Learning Tools and Techniques》（Python版, R版, 以及Java版）。如果感到迷惑的话，你可以选择其中一本开始学习。&lt;/p&gt;
 &lt;div&gt;  &lt;img alt="Machine_Learning02" src="http://jbcdn2.b0.upaiyun.com/2014/01/b0bd40f1d4c424338a44a63fac222f38.jpg"&gt;&lt;/img&gt;&lt;/div&gt;
 &lt;div&gt;&lt;/div&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.cn/gp/product/0596529325/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=0596529325&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;Programming Collective Intelligence: Building Smart Web 2.0 Applications&lt;/a&gt;：这本书是为程序员写的。书中简略介绍相关理论，重点以程序为例，介绍web中的实际问题和解决办法。你可以买来这本书，阅读，并且做一些练习。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.cn/gp/product/1449303714/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=1449303714&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;Machine Learning for Hackers&lt;/a&gt;  （中文版：   &lt;a href="http://www.amazon.cn/gp/product/B00CFCNGLG/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B00CFCNGLG&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;机器学习:实用案例解析&lt;/a&gt; ）：我建议你在阅读了《   &lt;em&gt;Programming Collective Intelligence&lt;/em&gt;》一书之后，再阅读这本书。这本书中也提供了很多实践练习，但是涉及更多的数据分析，并且使用R语言。我个人很喜欢这本书！&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.com/dp/1420067184?tag=job0ae-20" target="_blank"&gt;Machine Learning: An Algorithmic Perspective&lt;/a&gt;：这本书是《   &lt;em&gt;Programming Collective Intelligence&lt;/em&gt;》的高级版本。它们目的相同（让程序员开始了解机器学习），但是这本书包括一些数学知识，参考样例和phython程序片段。如果你有兴趣的话，我建议你在看完《   &lt;em&gt;Programming Collective Intelligence&lt;/em&gt;》之后来阅读这本书。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.cn/gp/product/B007N0RK80/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B007N0RK80&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;数据挖掘：实用机器学习工具与技术（英文版·第3版）&lt;/a&gt; ：我自己是从这本书开始了解机器学习的，那时是2000年这本书还是第一版。我那时是Java程序员，这本书和WEKA库为我的学习和实践提供了一个很好的环境。我通过这样的平台和一些插件，实现我的算法，并且真正开始实践机器学习和数据挖掘的过程。我强烈推荐这本书，和这样的学习过程。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.amazon.com/dp/0070428077?tag=job0ae-20" target="_blank"&gt;Machine Learning&lt;/a&gt;（中文版：   &lt;a href="http://www.amazon.cn/gp/product/B002WC7NH2/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&amp;camp=536&amp;creative=3200&amp;creativeASIN=B002WC7NH2&amp;linkCode=as2&amp;tag=vastwork-23" target="_blank"&gt;计算机科学丛书:机器学习&lt;/a&gt; ）：这是一本很老的书，包括了一些规则和很多参考资料。这是一本教科书，为每个算法提供了相关讲解。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;有一些人认为那些经典的机器学习教科书很了不起。 我也赞同，那些书的确非常好。但是，我认为，对于初学者来说，这些书可能并不合适。&lt;/p&gt;
 &lt;h2&gt;Further Reading 继续阅读&lt;/h2&gt;
 &lt;p&gt;在写这篇文章时，我认真思考了相关问题，同时也参考了其他人推荐的资料，以确保我没有遗漏任何重要参考资料。为了确保文章的完整性，下面也列出了一些网上流行的，可以供初学者使用的材料。.&lt;/p&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://conductrics.com/data-science-resources/"&gt;A List of Data Science and Machine Learning Resources&lt;/a&gt;:这是一份仔细整理的列表。你可以花一些时间，点击链接，仔细阅读作者的建议。值得一读！&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://www.quora.com/Machine-Learning/What-are-some-good-resources-for-learning-about-machine-learning-Why"&gt;What are some good resources for learning about machine learning Why&lt;/a&gt;：这个问题的第一个答案令人吃惊。每次我阅读这篇文章的时候，都会做好笔记，并且插入新的书签。答案中对我最有启发的部分是机器学习课程列表，以及相应的课程笔记和问答网站。&lt;/li&gt;
&lt;/ul&gt;
 &lt;ul&gt;
  &lt;li&gt;   &lt;a href="http://stackoverflow.com/questions/598726/overwhelmed-by-machine-learning-is-there-an-ml101-book"&gt;Overwhelmed by Machine Learning: is there an ML101 book&lt;/a&gt;：这是StackOverflow上的问题。并且提供了一系列机器学习推荐书籍。Jeff Moser提供的第一个答案是很有用的，其中有课程视频和讲座的链接。&lt;/li&gt;
&lt;/ul&gt;
 &lt;p&gt;你是不是以及读过或者用过上面的一些资源了呢？你怎么看这个问题？&lt;/p&gt;
 &lt;p&gt;我是不是如愿为那些对机器学习有兴趣的初学者提供了重要、有用的资源呢？请留下你的建议，让我们分享！&lt;/p&gt;
 &lt;div&gt;
  &lt;div&gt;
   &lt;h3&gt;相关文章&lt;/h3&gt;
   &lt;ul&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/51867/"&gt;不是吓唬你，工程师不知道谷歌的深度学习系统在想什么&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/22700/"&gt;计算机在做些什么：建模、连接、交互利用&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/53546/"&gt;机器学习其实比你想的更简单&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/22554/"&gt;Google开发人脑模拟器：电脑自学成才&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/50338/"&gt;趣文：如何向外行解释机器学习和数据挖掘&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/16048/"&gt;K-均值聚类分析&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/13671/"&gt;13个JavaScript图表（JS图表）图形绘制插件 &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/53544/"&gt;学习jQuery的免费资源：电子书、视频、教程和博客&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;     &lt;a href="http://blog.jobbole.com/54308/"&gt;七个用于数据科学(data science)的命令行工具&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
 &lt;p&gt;  &lt;a href="http://blog.jobbole.com/56256/"&gt;机器学习的最佳入门学习资源&lt;/a&gt;，首发于  &lt;a href="http://blog.jobbole.com"&gt;博客 - 伯乐在线&lt;/a&gt;。&lt;/p&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>IT技术 工具与资源 Machine Learning 机器学习</category>
      <guid isPermaLink="true">https://itindex.net/detail/47717-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0-%E5%AD%A6%E4%B9%A0-%E8%B5%84%E6%BA%90</guid>
      <pubDate>Tue, 21 Jan 2014 11:25:10 CST</pubDate>
    </item>
    <item>
      <title>为设计师、产品经理准备的原型制作指南</title>
      <link>https://itindex.net/detail/50492-%E8%AE%BE%E8%AE%A1%E5%B8%88-%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86-%E5%8E%9F%E5%9E%8B</link>
      <description>&lt;p&gt;今天和大家分享个免费PDF电子书，该书适合设计总监、项目经理、产品经理以及设计师阅读，书内容是介绍UI设计原型线框图的知识，十分详细。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#39564;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;" border="0" height="300" src="http://images.shejidaren.com/wp-content/uploads/2014/07/074744zwv.jpg" title="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#39564;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;共有100+彩页，虽然是英文版，但是使用了很多配图，简单易懂，对于英文不太好的用户来说也可以看。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#39564;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;" border="0" height="414" src="http://images.shejidaren.com/wp-content/uploads/2014/07/074745JG2.jpg" title="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#39564;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;" width="500"&gt;&lt;/img&gt;&lt;/p&gt;
 &lt;p&gt;书中还介绍了几个很不错的线框图展示网站，你可以学习其它人是如何绘制原型：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.wireframeshowcase.com/" rel="nofollow" target="_blank"&gt;Wireframe Showcase&lt;/a&gt;  &lt;br /&gt;
  &lt;a href="http://webwithoutwords.com/" rel="nofollow" target="_blank"&gt;web.without.words&lt;/a&gt;  &lt;br /&gt;
  &lt;a href="http://wireframes.linowski.ca/category/samples/" rel="nofollow" target="_blank"&gt;Wireframes Magazine&lt;/a&gt;  &lt;br /&gt;
  &lt;a href="http://moobileframes.tumblr.com/" rel="nofollow" target="_blank"&gt;MOObileFrames&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;下载：&lt;/p&gt;
 &lt;p&gt;微盘下载：  &lt;a href="http://vdisk.weibo.com/s/axnLmnhc9htSQ" rel="nofollow" target="_blank"&gt;http://vdisk.weibo.com/s/axnLmnhc9htSQ&lt;/a&gt;（PDF版）&lt;/p&gt;
 &lt;p&gt;官方地址：  &lt;a href="http://uxpin.com/guide-to-wireframing.html" rel="nofollow" target="_blank"&gt;http://uxpin.com/guide-to-wireframing.html&lt;/a&gt; （需要输入邮箱，有PDF和ZIP版）&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt;Copyright ©2010-2014 ¦  &lt;a href="http://www.shejidaren.com/feed" target="_blank" title="RSS&amp;#35746;&amp;#38405;"&gt;RSS订阅&lt;/a&gt; ¦  &lt;a href="http://weibo.com/shejidaren888" target="_blank" title="&amp;#26032;&amp;#28010;&amp;#24494;&amp;#21338;"&gt;新浪微博&lt;/a&gt; ¦  &lt;a href="http://www.shejidaren.com/wireframe-guide.html" target="_blank" title="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#29702;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;"&gt;本文链接&lt;/a&gt; ¦  &lt;a href="http://www.shejidaren.com/wireframe-guide.html#respond" target="_blank" title="&amp;#20026;&amp;#35774;&amp;#35745;&amp;#24072;&amp;#12289;&amp;#20135;&amp;#21697;&amp;#32463;&amp;#29702;&amp;#20934;&amp;#22791;&amp;#30340;&amp;#21407;&amp;#22411;&amp;#21046;&amp;#20316;&amp;#25351;&amp;#21335;&amp;#30340;&amp;#35780;&amp;#35770;"&gt;添加评论&lt;/a&gt;  &lt;br /&gt;交流：UI设计交流群：59300679，与500名设计师交流设计，分享素材。&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>优秀设计资源 电子书</category>
      <guid isPermaLink="true">https://itindex.net/detail/50492-%E8%AE%BE%E8%AE%A1%E5%B8%88-%E4%BA%A7%E5%93%81%E7%BB%8F%E7%90%86-%E5%8E%9F%E5%9E%8B</guid>
      <pubDate>Thu, 24 Jul 2014 15:59:41 CST</pubDate>
    </item>
    <item>
      <title>迅雷资源助手(TSearch) – P2P 种子搜索器</title>
      <link>https://itindex.net/detail/45477-%E8%BF%85%E9%9B%B7-%E8%B5%84%E6%BA%90-tsearch</link>
      <description>&lt;p&gt;  &lt;a href="http://www.appinn.com/xunleihd-tsearch/"&gt;迅雷资源助手(TSearch)&lt;/a&gt; 是一款用来搜索 P2P 种子资源的工具，支持预览及播放视频，绿色软件。@Appinn&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.appinn.com/xunleihd-tsearch/"&gt;   &lt;img alt="&amp;#36805;&amp;#38647;&amp;#36164;&amp;#28304;&amp;#21161;&amp;#25163;(TSearch)   P2P &amp;#31181;&amp;#23376;&amp;#25628;&amp;#32034;&amp;#22120;[&amp;#22270;] | &amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;" src="http://img3.appinn.com/images/201308/tsearch.jpg/o" title="&amp;#36805;&amp;#38647;&amp;#36164;&amp;#28304;&amp;#21161;&amp;#25163;(TSearch)   P2P &amp;#31181;&amp;#23376;&amp;#25628;&amp;#32034;&amp;#22120;[&amp;#22270;] | &amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;很谨慎的测试及在线杀毒后，  &lt;strong&gt;迅雷资源助手(TSearch)&lt;/strong&gt; 目前来看是安全靠谱的。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;迅雷资源助手(TSearch)&lt;/strong&gt; 内置了影视、动漫、音乐等多个资源网站，可以直接搜索。而在 P2P 中，则可以搜索到丰富的资源，并无任何限制。&lt;/p&gt;
 &lt;p&gt;  &lt;img alt="&amp;#36805;&amp;#38647;&amp;#36164;&amp;#28304;&amp;#21161;&amp;#25163;(TSearch)   P2P &amp;#31181;&amp;#23376;&amp;#25628;&amp;#32034;&amp;#22120;[&amp;#22270;] | &amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;" src="http://img3.appinn.com/wp-content/down.gif" title="&amp;#28857;&amp;#20987;&amp;#21491;&amp;#20391;&amp;#30340;&amp;#38142;&amp;#25509;&amp;#19979;&amp;#36733;&amp;#26412;&amp;#36719;&amp;#20214;"&gt;&lt;/img&gt;   &lt;a href="http://xunleihd.com/"&gt;http://xunleihd.com/&lt;/a&gt;&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt;
 &lt;a href="http://www.appinn.com/copyright/?utm_source=feeds&amp;utm_medium=copyright&amp;utm_campaign=feeds" title="&amp;#29256;&amp;#26435;&amp;#22768;&amp;#26126;"&gt;©&lt;/a&gt;2013 scavin for  &lt;a href="http://www.appinn.com/?utm_source=feeds&amp;utm_medium=appinn&amp;utm_campaign=feeds" title="&amp;#26412;&amp;#25991;&amp;#26469;&amp;#33258;&amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;"&gt;小众软件&lt;/a&gt; |  &lt;a href="http://www.appinn.com/join-us/?utm_source=feeds&amp;utm_medium=joinus&amp;utm_campaign=feeds" title="&amp;#21152;&amp;#20837;&amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;"&gt;加入我们&lt;/a&gt; |  &lt;a href="http://www.appinn.com/contribute/?utm_source=feeds&amp;utm_medium=contribute&amp;utm_campaign=feeds" target="_blank" title="&amp;#32473;&amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;&amp;#25237;&amp;#31295;"&gt;投稿&lt;/a&gt; |  &lt;a href="http://www.appinn.com/feeds-subscribe/?utm_source=feeds&amp;utm_medium=feedsubscribe&amp;utm_campaign=feeds" target="_blank" title="&amp;#21487;&amp;#20197;&amp;#20998;&amp;#31867;&amp;#35746;&amp;#38405;&amp;#23567;&amp;#20247;&amp;#65292;Windows/MAC/&amp;#28216;&amp;#25103;"&gt;订阅指南&lt;/a&gt; |  &lt;a href="http://appinn.wufoo.com/forms/eccae-aeeae/"&gt;反馈&lt;/a&gt;(图片不正常等问题) &lt;br /&gt; b27c41ad47c2611d60d7452a4c02dd52 &lt;br /&gt;
 &lt;img alt="&amp;#36805;&amp;#38647;&amp;#36164;&amp;#28304;&amp;#21161;&amp;#25163;(TSearch)   P2P &amp;#31181;&amp;#23376;&amp;#25628;&amp;#32034;&amp;#22120;[&amp;#22270;] | &amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;" border="0" src="http://s33.sitemeter.com/meter.asp?site=s33appinn" title="&amp;#36805;&amp;#38647;&amp;#36164;&amp;#28304;&amp;#21161;&amp;#25163;(TSearch)   P2P &amp;#31181;&amp;#23376;&amp;#25628;&amp;#32034;&amp;#22120;[&amp;#22270;] | &amp;#23567;&amp;#20247;&amp;#36719;&amp;#20214;" width="20"&gt;&lt;/img&gt;
&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>网络工具 p2p 下载 搜索 资源</category>
      <guid isPermaLink="true">https://itindex.net/detail/45477-%E8%BF%85%E9%9B%B7-%E8%B5%84%E6%BA%90-tsearch</guid>
      <pubDate>Mon, 02 Sep 2013 08:48:33 CST</pubDate>
    </item>
    <item>
      <title>【数字】全球17.4%的网络流量来自移动终端</title>
      <link>https://itindex.net/detail/45317-%E6%95%B0%E5%AD%97-%E5%85%A8%E7%90%83-%E7%BD%91%E7%BB%9C%E6%B5%81%E9%87%8F</link>
      <description>&lt;p&gt;当你们的父辈们开始聚精会神“打飞机”，玩爱消除的时候，当你远在农村或者其他三四线城市的表哥表弟和你微信聊天的时候，你已经不得不承认，原先和我们分属两个世界他们的正迎头赶上，享受这网络带来的巨大乐趣，而这仅仅只是一部手机的变化。&lt;/p&gt;
 &lt;p&gt;根据Gartner最近发布了  &lt;a href="http://www.maxpda.com/article-1656-1.html"&gt;2013年第二季度手机销售报告&lt;/a&gt;，报告显示目前全球智能手机销量已经全面超过功能性手机，而两年前智能手机只在美国市场上的销量多余功能机，而现在来看这一趋势已遍及全球，越来越多的人通过一个小小的智能机链接到互联网，到2013年目前为止，全球有17.4%的流量来自移动终端，这和2012年相比增长了6%。&lt;/p&gt;
 &lt;p&gt;从下面来自  &lt;a href="http://www.statista.com/topics/779/mobile-internet/chart/1380/mobile-web-usage/" target="_blank"&gt;Statista&lt;/a&gt;的数据图表可以看到，南美地区增长最快，从2012年的3.2%增加到了今年的6.8%，而亚洲和非洲这两个地区是移动用户最多的地区，分别有26.6%和23.7%的流量来自移动终端。&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.socialbeta.com/wp-content/uploads/2013/08/2013_08_19_Mobile_Devices.jpg"&gt;   &lt;img alt="" height="383" src="http://www.socialbeta.com/wp-content/uploads/2013/08/2013_08_19_Mobile_Devices.jpg" title="2013_08_19_Mobile_Devices" width="538"&gt;&lt;/img&gt;&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;你有多少时间是用手机或者其他移动设备在上网呢，欢迎留言。&lt;/p&gt;
 &lt;p&gt;延伸阅读：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.socialbeta.com/articles/why-markter-should-know-mobile-internet-2012.html" rel="bookmark" title="Permanent Link to &amp;#12304;&amp;#35266;&amp;#28857;&amp;#12305;&amp;#31227;&amp;#21160;&amp;#20114;&amp;#32852;&amp;#32593;&amp;#23545;&amp;#24066;&amp;#22330;&amp;#33829;&amp;#38144;&amp;#20154;&amp;#24847;&amp;#21619;&amp;#30528;&amp;#20160;&amp;#20040;&amp;#65311;"&gt;【观点】移动互联网对市场营销人意味着什么？&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.socialbeta.com/articles/mobile-marketing.html" rel="bookmark" title="Permanent Link to &amp;#12304;&amp;#35266;&amp;#28857;&amp;#12305;&amp;#31227;&amp;#21160;&amp;#20114;&amp;#32852;&amp;#32593;&amp;#23545;&amp;#24066;&amp;#22330;&amp;#33829;&amp;#38144;&amp;#20154;&amp;#24847;&amp;#21619;&amp;#30528;&amp;#20160;&amp;#20040;&amp;#65311;"&gt;移动互联网的营销机会&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="http://www.socialbeta.com/articles/2013-the-year-of-responsive-web-design.html" rel="bookmark" title="Permanent Link to &amp;#12304;SocialBeta&amp;#21608;&amp;#26411;&amp;#12305;2013&amp;#26159;&amp;#33258;&amp;#36866;&amp;#24212;&amp;#32593;&amp;#39029;&amp;#35774;&amp;#35745;&amp;#65288; Responsive Web Design&amp;#65289;&amp;#20043;&amp;#24180;"&gt;【SocialBeta周末】2013是自适应网页设计（ Responsive Web Design）之年&lt;/a&gt;&lt;/p&gt;
 &lt;table border="0" cellpadding="3" cellspacing="0"&gt;
    
      &lt;tr&gt;
           &lt;td colspan="5"&gt;    &lt;strong&gt;您可能也喜欢：&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
    
          &lt;tr&gt;
                   &lt;td valign="top" width="102"&gt;
                        &lt;a href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fdigital-divas-2013.html&amp;from=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fmobile-web-usage.html" target="_blank" title="&amp;#12304;&amp;#20449;&amp;#24687;&amp;#22270;&amp;#12305;Digital Diva&amp;#25968;&amp;#23383;&amp;#32593;&amp;#32476;&amp;#22899;&amp;#29579;: &amp;#19990;&amp;#30028;&amp;#19978;&amp;#26368;&amp;#26377;&amp;#31038;&amp;#20132;&amp;#24433;&amp;#21709;&amp;#21147;&amp;#30340;&amp;#32676;&amp;#20307;"&gt;
                             &lt;img height="96px" src="http://static.wumii.cn/site_images/ti/6b23byas.jpg?i=LpWD1Gfn" width="96px"&gt;&lt;/img&gt;     &lt;br /&gt;
                        【信息图】Digital Diva数字网络女王: 世界上最有社交影响力的群体
                    &lt;/a&gt;
                &lt;/td&gt;
                   &lt;td valign="top" width="102"&gt;
                        &lt;a href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2F2010%25E5%2585%25A8%25E7%2590%2583%25E7%25A7%25BB%25E5%258A%25A8%25E4%25BA%2592%25E8%2581%2594%25E7%25BD%2591%25E5%25A4%25A7%25E4%25BC%259Agmic%25E7%25AC%25AC%25E4%25B8%2580%25E5%25A4%25A9%25E4%25BC%259A%25E8%25AE%25AE%25E6%2591%2598%25E8%25A6%2581.html&amp;from=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fmobile-web-usage.html" target="_blank" title="2010&amp;#20840;&amp;#29699;&amp;#31227;&amp;#21160;&amp;#20114;&amp;#32852;&amp;#32593;&amp;#22823;&amp;#20250;GMIC&amp;#31532;&amp;#19968;&amp;#22825;&amp;#20250;&amp;#35758;&amp;#25688;&amp;#35201;&amp;#65288;&amp;#23436;&amp;#65289;"&gt;
                             &lt;img height="96px" src="http://static.wumii.cn/site_images/ti/HPlVAHdb.jpg?i=5rvhBrfj" width="96px"&gt;&lt;/img&gt;     &lt;br /&gt;
                        2010全球移动互联网大会GMIC第一天会议摘要（完）
                    &lt;/a&gt;
                &lt;/td&gt;
                   &lt;td valign="top" width="102"&gt;
                        &lt;a href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fsensational-social-media-facts-figures-and-statistics-infographics.html&amp;from=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fmobile-web-usage.html" target="_blank" title="&amp;#12304;&amp;#20449;&amp;#24687;&amp;#22270;&amp;#12305;6&amp;#20010;&amp;#22269;&amp;#22806;&amp;#20027;&amp;#27969;&amp;#31038;&amp;#20132;&amp;#32593;&amp;#32476;&amp;#30340;&amp;#19968;&amp;#20123;&amp;#20851;&amp;#38190;&amp;#25968;&amp;#25454;"&gt;
                             &lt;img height="96px" src="http://static.wumii.cn/site_images/ti/13dyy3mbo.png?i=3d2cIMDe" width="96px"&gt;&lt;/img&gt;     &lt;br /&gt;
                        【信息图】6个国外主流社交网络的一些关键数据
                    &lt;/a&gt;
                &lt;/td&gt;
                   &lt;td valign="top" width="102"&gt;
                        &lt;a href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Faudience-and-marketer-insights-on-digital-advertising-infographic.html&amp;from=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fmobile-web-usage.html" target="_blank" title="&amp;#12304;&amp;#20449;&amp;#24687;&amp;#22270;&amp;#12305;&amp;#25968;&amp;#23383;&amp;#24191;&amp;#21578;&amp;#30340;&amp;#21463;&amp;#20247;&amp;#21644;&amp;#33829;&amp;#38144;&amp;#32773;&amp;#27934;&amp;#23519;"&gt;
                             &lt;img height="96px" src="http://static.wumii.cn/site_images/ti/H7DOoTy2.jpg?i=ZN0qDlFn" width="96px"&gt;&lt;/img&gt;     &lt;br /&gt;
                        【信息图】数字广告的受众和营销者洞察
                    &lt;/a&gt;
                &lt;/td&gt;
                   &lt;td valign="top" width="102"&gt;
                        &lt;a href="http://app.wumii.com/ext/redirect?url=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2F6-trends-of-mobile-research.html&amp;from=http%3A%2F%2Fwww.socialbeta.com%2Farticles%2Fmobile-web-usage.html" target="_blank" title="&amp;#12304;&amp;#19987;&amp;#26639;&amp;#12305;2012&amp;#24180;6&amp;#22823;&amp;#31227;&amp;#21160;&amp;#24066;&amp;#22330;&amp;#35843;&amp;#30740;&amp;#36235;&amp;#21183;"&gt;
                             &lt;img height="96px" src="http://static.wumii.cn/site_images/ti/1fy4vG9Zt.png?i=138p6AOQV" width="96px"&gt;&lt;/img&gt;     &lt;br /&gt;
                        【专栏】2012年6大移动市场调研趋势
                    &lt;/a&gt;
                &lt;/td&gt;
        &lt;/tr&gt;
    
      &lt;tr&gt;
           &lt;td align="right" colspan="5"&gt;
                &lt;a href="http://www.wumii.com/widget/relatedItems" target="_blank" title="&amp;#26080;&amp;#35269;&amp;#30456;&amp;#20851;&amp;#25991;&amp;#31456;&amp;#25554;&amp;#20214;"&gt;
                无觅
            &lt;/a&gt;
        &lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt; &lt;img border="0" height="0" src="http://www1.feedsky.com/t1/729493306/socialbeta/feedsky/s.gif?r=http://www.socialbeta.com/articles/mobile-web-usage.html" width="0"&gt;&lt;/img&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>资源 行业数据 移动互联网</category>
      <guid isPermaLink="true">https://itindex.net/detail/45317-%E6%95%B0%E5%AD%97-%E5%85%A8%E7%90%83-%E7%BD%91%E7%BB%9C%E6%B5%81%E9%87%8F</guid>
      <pubDate>Wed, 21 Aug 2013 09:47:00 CST</pubDate>
    </item>
    <item>
      <title>Hadoop 1.0与Hadoop 2.0资源管理方案对比</title>
      <link>https://itindex.net/detail/45222-hadoop-hadoop-%E8%B5%84%E6%BA%90</link>
      <description>&lt;div&gt;
作者:  &lt;strong&gt;   &lt;a href="http://dongxicheng.org/about/"&gt;Dong&lt;/a&gt;&lt;/strong&gt; | 新浪微博：  &lt;a href="http://weibo.com/clseer"&gt;西成懂&lt;/a&gt; | 可以转载, 但必须以超链接形式标明文章原始出处和作者信息及  &lt;a href="http://creativecommons.org/licenses/by/2.5/cn/"&gt;版权声明&lt;/a&gt;  &lt;br /&gt;网址:  &lt;a href="http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/"&gt;http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/&lt;/a&gt;  &lt;br /&gt;本博客的文章集合:  &lt;a href="http://dongxicheng.org/recommend/"&gt;http://dongxicheng.org/recommend/&lt;/a&gt;&lt;/div&gt;
 &lt;p&gt;&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt; &lt;strong&gt;重大消息：我的Hadoop新书《Hadoop技术内幕：深入解析MapReduce架构设计与实现原理》已经开始在各大网站销售了，购书链接地址：   &lt;a href="http://url.cn/HWVEvs" target="_blank"&gt;当当购书网址&lt;/a&gt;，  &lt;a href="http://url.cn/GLlH3H" target="_blank"&gt;京东购书网址&lt;/a&gt;，  &lt;a href="http://t.cn/zT8FxJH" target="_blank"&gt;卓越购书网址&lt;/a&gt;。新书官方宣传主页：  &lt;a href="http://hadoop123.com/" target="_blank"&gt; http://hadoop123.com/&lt;/a&gt;。  &lt;br /&gt;&lt;/strong&gt; &lt;p&gt;&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt;在Hadoop中，资源管理是很重要的一个模块，它直接决定了资源的组织形式和分配方式，是其他功能的基础，而伴随着Hadoop的优化和升级，资源管理系统在发生的重大变化，本文将对比Hadoop 1.0和Hadoop 2.0中的资源管理方案。 &lt;p&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;1. Hadoop 1.0中的资源管理方案&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Hadoop 1.0指的是版本为Apache Hadoop 0.20.x、1.x或者CDH3系列的Hadoop，内核主要由HDFS和MapReduce两个系统组成，其中，MapReduce是一个离线处理框架，由编程模型（新旧API）、运行时环境（JobTracker和TaskTracker）和数据处理引擎（MapTask和ReduceTask）三部分组成。&lt;/p&gt;
 &lt;p&gt;Hadoop 1.0资源管理由两部分组成：资源表示模型和资源分配模型，其中，资源表示模型用于描述资源的组织方式，Hadoop 1.0采用“槽位”（slot）组织各节点上的资源，而资源分配模型则决定如何将资源分配给各个作业/任务，在Hadoop中，这一部分由一个插拔式的调度器完成。&lt;/p&gt;
 &lt;p&gt;Hadoop引入了“slot”概念表示各个节点上的计算资源。为了简化资源管理，Hadoop将各个节点上的资源（CPU、内存和磁盘等）等量切分成若干份，每一份用一个slot表示，同时规定一个task可根据实际需要占用多个slot 。通过引入“slot“这一概念，Hadoop将多维度资源抽象简化成一种资源（即slot），从而大大简化了资源管理问题。&lt;/p&gt;
 &lt;p&gt;更进一步说，slot相当于任务运行“许可证”，一个任务只有得到该“许可证”后，才能够获得运行的机会，这也意味着，每个节点上的slot数目决定了该节点上的最大允许的任务并发度。为了区分Map Task和Reduce Task所用资源量的差异，slot又被分为Map slot和Reduce slot两种，它们分别只能被Map Task和Reduce Task使用。Hadoop集群管理员可根据各个节点硬件配置和应用特点为它们分配不同的map slot数（由参数mapred.tasktracker.map.tasks.maximum指定）和reduce slot数（由参数mapred.tasktrackerreduce.tasks.maximum指定）。&lt;/p&gt;
 &lt;p&gt;Hadoop 1.0中的资源管理存在以下几个缺点：&lt;/p&gt;
 &lt;p&gt;（1）  &lt;strong&gt;静态资源配置&lt;/strong&gt;。采用了静态资源设置策略，即每个节点实现配置好可用的slot总数，这些slot数目一旦启动后无法再动态修改。&lt;/p&gt;
 &lt;p&gt;（2）  &lt;strong&gt;资源无法共享&lt;/strong&gt;。Hadoop 1.0将slot分为Map slot和Reduce slot两种，且不允许共享。对于一个作业，刚开始运行时，Map slot资源紧缺而Reduce slot空闲，当Map Task全部运行完成后，Reduce slot紧缺而Map slot空闲。很明显，这种区分slot类别的资源管理方案在一定程度上降低了slot的利用率。&lt;/p&gt;
 &lt;p&gt;（3）   &lt;strong&gt;资源划分粒度过大&lt;/strong&gt;。这种基于无类别slot的资源划分方法的划分粒度仍过于粗糙，往往会造成节点资源利用率过高或者过低 ，比如，管理员事先规划好一个slot代表2GB内存和1个CPU，如果一个应用程序的任务只需要1GB内存，则会产生“资源碎片”，从而降低集群资源的利用率，同样，如果一个应用程序的任务需要3GB内存，则会隐式地抢占其他任务的资源，从而产生资源抢占现象，可能导致集群利用率过高。&lt;/p&gt;
 &lt;p&gt;（4）   &lt;strong&gt;没引入有效的资源隔离机制&lt;/strong&gt;。Hadoop 1.0仅采用了基于jvm的资源隔离机制，这种方式仍过于粗糙，很多资源，比如CPU，无法进行隔离，这会造成同一个节点上的任务之间干扰严重。&lt;/p&gt;
 &lt;p&gt;该部分具体展开讲解可阅读我的新书  &lt;a href="http://hadoop123.com/" target="_blank"&gt;《Hadoop技术内幕：深入解析MapReduce架构设计与实现原理》 &lt;/a&gt;中“第6章 JobTracker内部实现剖析” 中的“6.7	Hadoop资源管理”。&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;2. Hadoop 2.0中的资源管理方案&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;Hadoop 2.0指的是版本为Apache Hadoop 0.23.x、2.x或者CDH4系列的Hadoop，内核主要由HDFS、MapReduce和YARN三个系统组成，其中，YARN是一个资源管理系统，负责集群资源管理和调度，MapReduce则是运行在YARN上离线处理框架，它与Hadoop 1.0中的MapReduce在编程模型（新旧API）和数据处理引擎（MapTask和ReduceTask）两个方面是相同的。&lt;/p&gt;
 &lt;p&gt;让我们回归到资源分配的本质，即根据任务资源需求为其分配系统中的各类资源。在实际系统中，资源本身是多维度的，包括CPU、内存、网络I/O和磁盘I/O等，因此，如果想精确控制资源分配，不能再有slot的概念，最直接的方法是让任务直接向调度器申请自己需要的资源（比如某个任务可申请1.5GB 内存和1个CPU），而调度器则按照任务实际需求为其精细地分配对应的资源量，不再简单的将一个Slot分配给它，Hadoop 2.0正式采用了这种基于真实资源量的资源分配方案。&lt;/p&gt;
 &lt;p&gt;Hadoop 2.0（YARN）允许每个节点（NodeManager）配置可用的CPU和内存资源总量，而中央调度器则会根据这些资源总量分配给应用程序。节点（NodeManager）配置参数如下：&lt;/p&gt;
 &lt;p&gt;（1）yarn.nodemanager.resource.memory-mb&lt;/p&gt;
 &lt;p&gt;可分配的物理内存总量，默认是8*1024，即8GB。&lt;/p&gt;
 &lt;p&gt;（2）yarn.nodemanager.vmem-pmem-ratio&lt;/p&gt;
 &lt;p&gt;任务使用单位物理内存量对应最多可使用的虚拟内存量，默认值是2.1，表示每使用1MB的物理内存，最多可以使用2.1MB的虚拟内存总量。&lt;/p&gt;
 &lt;p&gt;（3）yarn.nodemanager.resource.cpu-vcore&lt;/p&gt;
 &lt;p&gt;可分配的虚拟CPU个数，默认是8。为了更细粒度的划分CPU资源和考虑到CPU性能异构性，YARN允许管理员根据实际需要和CPU性能将每个物理CPU划分成若干个虚拟CPU，而每管理员可为每个节点单独配置可用的虚拟CPU个数，且用户提交应用程序时，也可指定每个任务需要的虚拟CPU个数。比如node1节点上有8个CPU，node2上有16个CPU，且node1 CPU性能是node2的2倍，那么可为这两个节点配置相同数目的虚拟CPU个数，比如均为32，由于用户设置虚拟CPU个数必须是整数，每个任务至少使用node2 的半个CPU（不能更少了）。&lt;/p&gt;
 &lt;p&gt;此外，Hadoop 2.0还引入了基于cgroups的轻量级资源隔离方案，这大大降低了同节点上任务间的相互干扰，而Hadoop 1.0仅采用了基于JVM的资源隔离，粒度非常粗糙。&lt;/p&gt;
 &lt;p&gt;尽管Hadoop 2.中的资源管理方案看似比较完美，但仍存在以下几个问题：&lt;/p&gt;
 &lt;p&gt;（1）   &lt;strong&gt;资源总量仍是静态配置的&lt;/strong&gt;，不可以动态修改。这个已在完善中，具体可参考：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-291" target="_blank"&gt;https://issues.apache.org/jira/browse/YARN-291&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;（2）CPU是通过引入的“虚拟CPU”设置的，而  &lt;strong&gt;虚拟CPU的概念是模糊的&lt;/strong&gt;，有歧义的，而社区正在尝试借鉴amazon EC2中的ECU概念对其进行规整化，具体参考：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-1024" target="_blank"&gt;https://issues.apache.org/jira/browse/YARN-1024&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-972" target="_blank"&gt;https://issues.apache.org/jira/browse/YARN-972&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;（3）  &lt;strong&gt;无法支持以组为单位的资源申请&lt;/strong&gt;，比如申请一组符合某种要求的资源，目前社区也在添加，具体参考：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-624" target="_blank"&gt;https://issues.apache.org/jira/browse/YARN-624&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;（4）  &lt;strong&gt;调度语义不完善&lt;/strong&gt;，比如目前应用程序只能申请的同一个节点上相同优先级的资源种类必须唯一，比如来自节点node1上优先级为3的资源大小是&amp;lt;1 vcore 2048 mb&amp;gt;，则不能再有自他大小，否则将会被覆盖掉。目前社区正在完善，具体参考：&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-314" target="_blank"&gt;https://issues.apache.org/jira/browse/YARN-314&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;a href="https://issues.apache.org/jira/browse/YARN-314"&gt;&lt;/a&gt;  &lt;strong&gt;3. 总结&lt;/strong&gt;&lt;/p&gt;
 &lt;p&gt;在资源管理方面，Hadoop 2.0比1.0先进的多，它摒弃了基于slot的资源管理方案，采用了基于真实资源的管理方案，这将在资源利用率、资源控制、资源隔离等方面有明显改善，随着Hadoop 2.0调度语义的丰富和完善，它必将发挥越来越大的作用。
  &lt;div&gt;
&lt;/div&gt;&lt;/p&gt; &lt;p&gt;  &lt;strong&gt;原创文章，转载请注明：&lt;/strong&gt; 转载自  &lt;a href="http://dongxicheng.org/"&gt;董的博客&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;本文链接地址:&lt;/strong&gt;   &lt;a href="http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/"&gt;http://dongxicheng.org/mapreduce-nextgen/hadoop-1-and-2-resource-manage/&lt;/a&gt;&lt;/p&gt;

 &lt;p&gt;  &lt;strong&gt;作者：   &lt;a href="http://dongxicheng.org/about/"&gt;Dong&lt;/a&gt;&lt;/strong&gt;，作者介绍：  &lt;a href="http://dongxicheng.org/about/"&gt;http://dongxicheng.org/about/&lt;/a&gt;&lt;/p&gt;
 &lt;p&gt;  &lt;strong&gt;本博客的文章集合:&lt;/strong&gt;  &lt;a href="http://dongxicheng.org/recommend/" target="_blank"&gt;http://dongxicheng.org/recommend/&lt;/a&gt;&lt;/p&gt;
 &lt;hr&gt;&lt;/hr&gt; &lt;small&gt;Copyright © 2013  &lt;br /&gt; This feed is for personal, non-commercial use only.   &lt;br /&gt; The use of this feed on other websites breaches copyright. If this content is not in your news reader, it makes the page you are viewing an infringement of the copyright. (Digital Fingerprint:  &lt;br /&gt; )&lt;/small&gt;&lt;div&gt; &lt;a href="https://itindex.net/"  title="IT 资讯"&gt;&lt;img src="https://itindex.net/images/iconWarning.gif" title="IT 资讯" border="0"/&gt; &lt;/a&gt;</description>
      <category>下一代MapReduce(YARN) Hadoop 1.0 Hadoop 2.0 资源管理</category>
      <guid isPermaLink="true">https://itindex.net/detail/45222-hadoop-hadoop-%E8%B5%84%E6%BA%90</guid>
      <pubDate>Tue, 13 Aug 2013 07:30:15 CST</pubDate>
    </item>
  </channel>
</rss>

