<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>gitcafe (GitCafe)</title>
    <link>https://ruby-china.org/gitcafe</link>
    <description>Share a cup of open source !</description>
    <language>en-us</language>
    <item>
      <title>[北京][7月17日-18日] 乌云 2015 白帽子大会，门票赠送中</title>
      <description>&lt;p&gt;2014 年 9 月，乌云首届安全峰会在北京顺利举行，邀请到社会中顶尖的白帽子和企业防御体系的最佳实践者，共同探讨信息安全的解决之道。如果你觉得错过了那次大会而遗憾，别担心，这个 7 月，台湾黑客大会 HITCON 与漏洞报告平台乌云网联合举办的乌云第二届「白帽子大会」将为你带来更多的惊喜！GitCafe 也为想去参与的你们带来了福利，门票免费放送中。&lt;/p&gt;
&lt;h2 id="大会信息"&gt;大会信息&lt;/h2&gt;
&lt;p&gt;不分种族，不分国界
不在乎年龄，不在乎职位  &lt;/p&gt;

&lt;p&gt;在乌云 2015 年白帽子大会
你将穿梭于数百名白帽黑客之间  &lt;/p&gt;

&lt;p&gt;听一流白帽的最新想法
学企业大咖的宝贵经验  &lt;/p&gt;

&lt;p&gt;你可能在刺激的现场演示中体验到真实世界的痛
或者在黑客前辈的娓娓道来中看见自己未来的路  &lt;/p&gt;

&lt;p&gt;这里是乌云白帽子大会
你听说过的和即将听说的白帽子们，都将在这里出现&lt;/p&gt;

&lt;p&gt;时间：2015 年 7 月 17 日~7 月 18 日
地点：北京富力万丽酒店
网站：&lt;a href="http://summit.wooyun.org" rel="nofollow" target="_blank"&gt;http://summit.wooyun.org&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="大会内容"&gt;大会内容&lt;/h2&gt;
&lt;p&gt;7 月 17 日 Day1「专业场」: Pro-Con&lt;/p&gt;

&lt;p&gt;面向人群：企业，白帽子
演讲嘉宾（部分）：去哪儿网安全负责人郭添森、腾讯安全架构师张海清、万达电商安全主任工程师林鹏、唯品会高级安全工程师王润辉、前百度高级安全工程师章华鹏。&lt;/p&gt;

&lt;p&gt;简介：由优秀白帽子和企业安全负责人分享攻防最新趋势和业务安全经验，旨在让企业更好的了解安全问题及解决方案，并让白帽子更好的帮助企业提升安全。平均每个议题时间 40 分钟，皆为深度演讲。&lt;/p&gt;

&lt;p&gt;行业热门安全问题&lt;/p&gt;

&lt;p&gt;互联网金融、电商、移动 APP 的安全问题与日剧增，一些企业可能缺乏安全意识，更多企业则不知道如何入手。本次乌云峰会专业场，我们邀请了来自唯品会和网信金融等公司的技术专家，他们将分享在互联网金融和移动端领域的一手经验，其中很多细节都是首次对外公开。&lt;/p&gt;

&lt;p&gt;黑客最新攻击手段&lt;/p&gt;

&lt;p&gt;DDoS 攻击让大量企业苦不堪言，还有不少企业对层层部署的防火墙和 WAF 屡被攻破而感到困惑。「未知攻，焉知防」，专业场上，三位深谙 DDoS 攻击、WAF 绕过和外围攻击手段的高水平白帽子将为我们展示最新的技术和方法。&lt;/p&gt;

&lt;p&gt;安全标杆实践经验&lt;/p&gt;

&lt;p&gt;我们邀请了「去哪儿」和「腾讯」两家互联网的安全标杆企业来峰会分享。作为第一个加入「去哪儿」的安全人员，郭添森将首次分享他们是如何从零开始搭建公司安全体系的；而腾讯安全架构师张海清则将在现场揭秘腾讯的看家法宝——Web 防护平台，希望让更多企业能从中获得启发。&lt;/p&gt;

&lt;p&gt;7 月 18 日 Day2「白帽场」: WhiteHat Day&lt;/p&gt;

&lt;p&gt;面向人群：信息安全爱好者、从业者
演讲嘉宾（部分）：知名自媒体池建强、知名自媒体 Roy Li、UCloud 创始人季昕华、阿里巴巴集团安全副总裁杜跃进、IBM 安全系统架构师李承达（台湾）、PKAV 团队创始人 OnlyGuest、乌云创始人方小顿、乌云漏洞平台负责人孟卓。&lt;/p&gt;

&lt;p&gt;简介：将有近 20 位安全前辈、技术大牛和新晋强人带来精彩分享。现场还将「首发」多个令人意想不到的安全问题——你不仅能了解到最新最酷的安全技术，还能与方向诡异的安全研究者群体深入交流、甚至认识你未来的老师和伙伴。&lt;/p&gt;

&lt;p&gt;HackReal&lt;/p&gt;

&lt;p&gt;为让更多人了解安全问题并使问题得以解决，乌云及白帽子们在今年 3 月发起了「你身边的安全」为主题的众测项目。数百名白帽子提交了极具技术含量的漏洞，涉及无人飞行器、手机、云服务和客户端等等，其中有些漏洞已被黑产利用，导致对个人隐私或企业财产造成严重影响。本次峰会我们将从中挑选出部分内容进行演示，相信会让你大开眼界。&lt;/p&gt;

&lt;p&gt;算卦摊&lt;/p&gt;

&lt;p&gt;「算卦摊」是台湾 HITCON 的保留环节，通过黑客前辈讲述个人经历以给安全从业者带来启发。今年的乌云峰会也引入了该环节。将有台湾 HITCON 创始人 TT、乌云创始人剑心、UCloud 创始人季昕华、阿里巴巴集团安全副总裁杜跃进、IBM 安全系统架构师李承达（台湾）等大陆台湾极具代表的安全大咖汇聚一堂，畅谈两地黑客文化、安全产业与技术变迁。该环节由知名自媒体人池建强主持，并将有一位全球著名安全人士出席。&lt;/p&gt;

&lt;p&gt;WooKnows&lt;/p&gt;

&lt;p&gt;台湾著名 CTF 团队队长 Orange 将讲述 HITCON 团队的组建历程及国际比赛中好玩的故事；自媒体厉哥 (Roy Li) 也将莅临现场——他认为很多规则都非常荒谬、应该被打破，所以他将展示这些规则下滋生的安全毒瘤；乌云主站负责人疯狗（孟卓）则将揭示今年峰会时间的特殊含义及国内安全环境的真正现状。&lt;/p&gt;

&lt;p&gt;安全奥斯卡&lt;/p&gt;

&lt;p&gt;我们还安排了一个有趣的环节「安全奥斯卡」——为企业和白帽子颁奖。企业颁奖的依据来自社区推选，很多优秀企业的安全行动值得分享和鼓励，也有些企业对安全的做法值得探讨，我们将根据白帽子的投票结果来进行评选和公布；同时，作为每年一度的白帽子大聚会，我们也将为过去一年表现突出的白帽子进行「加冕」，期待他们未来做得更好。&lt;/p&gt;
&lt;h2 id="大会亮点"&gt;大会亮点&lt;/h2&gt;&lt;h3 id="黑客在这里"&gt;黑客在这里&lt;/h3&gt;
&lt;p&gt;你还记得 17 年前的那个四月吗？在台湾，没有大明湖畔的夏雨荷，只有一个让技术宅们为之震惊、让各个国家惶恐的电脑鬼才——CIH 病毒制造者陈盈豪。  &lt;/p&gt;

&lt;p&gt;1998 年 4 月 26 日，当时还是大学毕业生的陈盈豪制造出的 CIH 电脑病毒共造成全球  6000 万台电脑瘫痪，韩国、土耳其、孟加拉、新加坡、马来西亚、俄罗斯、中国内地的电脑均惨遭 CIH 病毒的袭击。  &lt;/p&gt;

&lt;p&gt;这个夏天，这位你曾经只能在百度百科看到的电脑天才将首次亮相内地，参与乌云白帽子大会，坐上圆桌等你提问！  &lt;/p&gt;

&lt;p&gt;此次大会将上演台湾黑客大会 HITCON 的保留节目「算卦摊」，由知名自媒体池建强老师主持，乌云创始人剑心、UCloud 创始人季昕华、阿里安全 VP 杜跃进等技术大咖，将携手来自台湾的 HITCON 创始人 TT、IBM 安全架构师李承达、CIH 病毒作者陈盈豪，为你讲述他们的个人经历，解答你对行业和技术的相关提问！&lt;/p&gt;
&lt;h3 id="技术在这里"&gt;技术在这里&lt;/h3&gt;
&lt;p&gt;DDos 作为流氓式波涛汹涌的攻击手段，到底又演变出了哪些新的方式？！听说做着地下黑产的黑帽们的技术更新比白帽更快是不是真的？！警察蜀黍来分享从案件中获取到的国内 DDos 最新方式，但你了解 DDos 那不为人知的进化！  &lt;/p&gt;

&lt;p&gt;除了警察蜀黍带来的分享以外，还有多次在各大 CTF 比赛中名列前茅的上交的同学通过真实的现场演示为你分析每天在用的手机卡到底安全不安全。  &lt;/p&gt;

&lt;p&gt;无人机听起来很酷炫，作为极客热衷的玩具，飞行这件小事到底除了能帮人类实现飞行梦想以外，有没有隐藏着被忽视的安全问题？大会上，白帽子将现场演示无人机的安全问题，带你全方位了解飞行器。  &lt;/p&gt;

&lt;p&gt;还有更多劲爆的现场演示及技术解密，带你揭开这些安全技术神秘的面纱！&lt;/p&gt;
&lt;h2 id="GitCafe 门票放送"&gt;GitCafe 门票放送&lt;/h2&gt;
&lt;p&gt;将你的「GitCafe 用户名」留言在下方，就有机会获得乌云 2015 白帽子大会 WhiteHat Day 门票！我们将从参与活动的人中抽取 5 位幸运用户，名额有限！&lt;/p&gt;

&lt;p&gt;截止日期：7 月 14 日&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Fri, 10 Jul 2015 16:55:25 +0800</pubDate>
      <link>https://ruby-china.org/topics/26437</link>
      <guid>https://ruby-china.org/topics/26437</guid>
    </item>
    <item>
      <title>线上课堂 | Docker 实训第四讲火热报名</title>
      <description>&lt;p&gt;&lt;strong&gt;活动简介&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Docker 被称为下一代云计算技术，是当下最火热的云计算技术，将为企业 IT 带来深刻变革。如何利用 Docker 实现 DevOps 自动化、做好应用持续集成、持续交付，这对于 IT 技术人员来说非常重要。&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;cSphere 希云联手阿里云、GitCafe 推出的 Docker 实训营，将通过视频直播的方式，手把手地进行实际操作和演练。&lt;/p&gt;

&lt;p&gt;与其他的 Docker 培训不同，此次实训营希望让技术人员可以通过演练掌握实际操作经验，并最终实现把技术能应用到工作中，提升技术人员的竞争力。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;活动时间&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;7 月 15 日晚 9 点&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;活动主题&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker 的网络管理&lt;/strong&gt;
&lt;strong&gt;课程内容&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;上一讲我们讲解了 Docker 在生产环境运行关心的话题，监控报警和日志收集。我们这一讲重点来看 Docker 的网络。Docker 自诞生起，网络就一直是人们热议的话题。不可讳言，Docker 的默认 Nat 网络模式，在生产环境难以管理。Docker1.7 引入了 Network 插件机制。&lt;/p&gt;

&lt;p&gt;这一讲我们将带您了解：
Docker 的各种网络模式、如何配置以及优缺点
演示在新的网络插件系统里，如何快速配置网络  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;培训亮点：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;免费提供数千虚拟机用于培训过程中的实际操作和演练
采用视频直播的方式，手把手教学
真实的案例分享
希云多位 Docker 专家将在培训过程中实时和大家互动
培训后的互动环节还有大奖哦  &lt;/p&gt;

&lt;p&gt;报名地址： &lt;a href="https://csphere.cn/training" rel="nofollow" target="_blank"&gt;https://csphere.cn/training&lt;/a&gt;&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Thu, 09 Jul 2015 22:32:40 +0800</pubDate>
      <link>https://ruby-china.org/topics/26413</link>
      <guid>https://ruby-china.org/topics/26413</guid>
    </item>
    <item>
      <title>GitCafe 新增代码贡献统计功能</title>
      <description>&lt;p&gt;继上周的「小组」与「代码对比」功能出炉以后，GitCafe 新增了代码贡献统计功能，有了它会给大家带来怎样的惊喜呢，先来一睹为快吧。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/79a8731bcbf9a658266b44004420161b.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="为什么要有统计功能"&gt;为什么要有统计功能&lt;/h2&gt;
&lt;p&gt;对于具有一定规模的协作项目，当想要查看它的提交 (commit) 状况时，采用可视化的方式是最直接、方便且有意义的。&lt;/p&gt;

&lt;p&gt;除此之外，参与者也能随时回顾自己对项目的贡献度，提高参与热情。&lt;/p&gt;

&lt;p&gt;而对于普通用户，贡献统计也可以为他们了解项目的活跃度提供一定参考。&lt;/p&gt;
&lt;h2 id="如何使用统计功能"&gt;如何使用统计功能&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;点击「项目导航栏」中的「统计图」(Graph) 链接，即可显示当前分支的统计结果。
&lt;img src="https://l.ruby-china.com/photo/2015/26ebab12187b38a68f016c3ae24a98d2.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;用户本身无需做任何设置。该功能也不会收取额外的 GitCoin。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;用户的「贡献」按照「提交」(commit) 的数量计算，并进行排序显示。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;可以选定不同的时间段显示统计结果。
&lt;img src="https://l.ruby-china.com/photo/2015/f4e7fa2d41e2cc29a57841e798e45878.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;一次只计算某一个分支上的所有提交。不包括合并 (merge) 本身的那个提交。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;默认显示默认分支的统计结果。可以通过按钮切换分支。
&lt;img src="https://l.ruby-china.com/photo/2015/8bef236d596f961b5439d27aac41034e.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;由于是实时统计，对于较大的项目，可能需要一定等待的时间才会显示页面。&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="统计功能图示说明"&gt;统计功能图示说明&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;指定时间内某个用户提交的数量。如果没有指定则计算整个分支上的所有提交。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;用户所有提交的修改行数，包括增加的行和删除的行。
&lt;img src="https://l.ruby-china.com/photo/2015/3025e777217f4226a279e737fd47cd31.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;如果参与的用户是 GitCafe 的注册用户，则用户名会以链接方式显示。
&lt;img src="https://l.ruby-china.com/photo/2015/166b992a8fd1fbdb3efa2d5beb0c637f.png" title="" alt=""&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;现在就在 GitCafe 上体验数据可视化的魅力吧。&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Tue, 07 Jul 2015 11:40:54 +0800</pubDate>
      <link>https://ruby-china.org/topics/26359</link>
      <guid>https://ruby-china.org/topics/26359</guid>
    </item>
    <item>
      <title>惠普互联网行业客户研讨会 —— 暨惠普首届黑客马拉松竞赛 (北京站)</title>
      <description>&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/0a54afbaee6684b8e341dfec06b3d7f8.jpg" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="活动介绍"&gt;活动介绍&lt;/h2&gt;
&lt;blockquote&gt;
&lt;p&gt;众所周知，互联网行业的兴起，以及云计算，云存储等解决方案的广泛应用让越来越多的企业以及用户对互联网安全越来越重视，同时互联网应用所带来的越来越多的大数据，也成为关注的焦点。&lt;/p&gt;

&lt;p&gt;为此，惠普特别针对云解决方案、数据安全及分析等内容，于 2015 年 7 月在北京和上海举办“惠普互联网行业客户研讨会 - 暨惠普首届黑客马拉松竞赛”、通过收集客户在云、大数据等方面的问题作为本次大赛的命题，让参赛“黑客们”各出奇招。&lt;/p&gt;

&lt;p&gt;我们期待全国开发者的参加，与我们一起进入“黑客”模式。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="比赛地点"&gt;比赛地点&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;2015 年 7 月 16 日 -17 日 北京 751D･PARK 时尚回廊 (北京市朝阳区酒仙桥路 4 号）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="比赛日程"&gt;比赛日程&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/db115bb1ed9f037954f4081734e9b211.png" title="" alt=""&gt;&lt;/p&gt;
&lt;h2 id="比赛报名"&gt;比赛报名&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://www.mikecrm.com/f.php?t=V2KGUZ" rel="nofollow" target="_blank" title=""&gt;报名链接&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="大赛奖品"&gt;&lt;strong&gt;大赛奖品&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;「神秘奖品」/Apple Watch Sport/小米空气净化器&lt;/strong&gt;
&lt;img src="https://gitcafe-image.b0.upaiyun.com/0ba3fd28441b6a2d7b5fc9fc021521d6.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;参赛奖&lt;/strong&gt;
300 GitCoin&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;凡是参加本次「惠普互联网行业客户研讨会 —— 暨惠普首届黑客马拉松竞赛（北京站）」的选手都可以获得 GitCafe 提供的 300 GitCoin 用于创建私有项目。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;参赛 GitCafe 用户在&lt;a href="https://gitcafe.com/recharge" rel="nofollow" target="_blank" title=""&gt;充值页面&lt;/a&gt;的「使用兑换码充值:」一栏填写兑换码，领取 300 GitCoin。（可用于创建私有项目）&lt;/li&gt;
&lt;li&gt;注：兑换码请在活动现场向工作人员索要，该兑换码兑换有效期为 2015-07-29 ~ 2015-08-01&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="评委"&gt;评委&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/8d34832a20de43898753c69b58e101df.jpg" title="" alt=""&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;吴业翔对企业营销与 P&amp;amp;L 管理，有优秀的业绩记录，先后服务于惠普与戴尔两家跨国 IT 企业，出任多个部门之高管。拥有资深互联网与金融行业营销经验，其领导的互联网创新事业团队协助多家互联网企业在创业初期的基础架构建设与运维，并成为多家企业云战略合作伙伴。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/b478e88b2f8200acd96fa6982b20cbdc.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;符庆明&lt;/p&gt;

&lt;p&gt;CTO 北京金山云网络技术有限公司&lt;/p&gt;

&lt;p&gt;符庆明是中国云计算行业的领军级人物，其一手构建了新浪私有云和公有云，研发了国内最早的 PaaS 平台。2015 年 1 月加盟金山云，为金山云技术团队加了一块重量级的砝码。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/78c82437ce50eed4ec8aeeefb28a53e7.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;王巍&lt;/p&gt;

&lt;p&gt;新浪微博&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/ce170c4835d643bb6f367e3db539a2b4.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;石建强&lt;/p&gt;

&lt;p&gt;惠普软件集团中国区 大数据平台总经理&lt;/p&gt;

&lt;p&gt;石建强先生在大数据处理方面有着丰富的经验，包括结构化和非结构化信息处理领域。他本人参与过多个大型客户的相关项目，包括国家电网、中国石油、CCTV、中国移动、华为、深圳证券信息公司等等。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/2bd5b9cc97d0568289b65a9009564a83.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Thomas Yao&lt;/p&gt;

&lt;p&gt;GitCafe CEO &amp;amp; Co-Founder&lt;/p&gt;
&lt;h2 id="作品提交"&gt;作品提交&lt;/h2&gt;
&lt;p&gt;需要将代码提交在 GitCafe 平台。
创建项目时，在「此项目属于线上活动」一栏中，请选择「惠普互联网行业客户研讨会 —— 暨惠普首届黑客马拉松竞赛（北京站）」选项。&lt;/p&gt;

&lt;p&gt;详情请见 &lt;a href="https://campaign.gitcafe.com/hp-hackathon-bj" rel="nofollow" target="_blank"&gt;https://campaign.gitcafe.com/hp-hackathon-bj&lt;/a&gt;&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Thu, 02 Jul 2015 11:04:16 +0800</pubDate>
      <link>https://ruby-china.org/topics/26282</link>
      <guid>https://ruby-china.org/topics/26282</guid>
    </item>
    <item>
      <title>有可能是中国最新的一场学生运动</title>
      <description>&lt;p&gt;引子：「如果你有正确的态度，有趣的事情自然会找到你」，这是 Eric 在「大教堂与集市」一文中给出的一条经验。&lt;/p&gt;
&lt;h3 id="发生了什么事"&gt;发生了什么事&lt;/h3&gt;
&lt;p&gt;我们知道全中国有超过 400 所高校，这 400 多所高校里有着超过 12,000 个社团，这些庞大的社团组织中，「开源社团」或「计算机技术社团」永远都不会像「话剧社」或者「篮球社」那样热门。&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;h3 id="我们要做什么"&gt;我们要做什么&lt;/h3&gt;
&lt;p&gt;这是一场开源的狂欢节，是一场将全国的「开源社团」或「计算机技术社团」链接在一起的活动。&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;开源者行游学计划&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;覆盖 100 多所高校，招募超过 60 名学生&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;/li&gt;
&lt;li&gt;
&lt;p&gt;三个地区&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;北京：2015 年 5 月 8 - 10 日 (Fri. - Sun.)&lt;/li&gt;
&lt;li&gt;上海：2015 年 5 月 15 - 17 日 (Fri. - Sun.)&lt;/li&gt;
&lt;li&gt;广州：2015 年 5 月 22 - 24 日 (Fri. - Sun.)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&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;/li&gt;
&lt;/ul&gt;
&lt;h3 id="免费是什么意思"&gt;免费是什么意思&lt;/h3&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;/ul&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;/p&gt;
&lt;h3 id="我们需要什么"&gt;我们需要什么&lt;/h3&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;/p&gt;

&lt;ul&gt;
&lt;li&gt;你对这个世界，是否还葆有热忱和爱，纵使你看到了她的不完美。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="最后出场的往往最重要"&gt;最后出场的往往最重要&lt;/h3&gt;
&lt;p&gt;本次活动收到了开源社全体社员的大力支持，特别鸣谢以下公司、组织及个人：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitCafe、七牛云存储、巨杉数据库、白鹭引擎、MoPaaS、图灵&lt;/li&gt;
&lt;li&gt;极客学院、GNOME. Asia、微软开放技术、Coding、环信、优麒麟社区、Linux 伊甸园&lt;/li&gt;
&lt;li&gt;杜玉杰老师、庄表伟老师&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;如果你看到了这里，如果你是我们要找的人，请点击&lt;a href="http://www.mikecrm.com/f.php?t=xff3m9" rel="nofollow" target="_blank" title=""&gt;这里&lt;/a&gt;填写报名表。&lt;/p&gt;

&lt;p&gt;如果你对改变和开源这件事有着狂热，合作及参与项目请发送邮件至 event-list@kaiyuanshe.cn&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Wed, 08 Apr 2015 13:50:30 +0800</pubDate>
      <link>https://ruby-china.org/topics/25048</link>
      <guid>https://ruby-china.org/topics/25048</guid>
    </item>
    <item>
      <title>最新战报｜UCloud 开发大赛：数百位顶级开发者的创新构想</title>
      <description>&lt;p&gt;2015 年，又是一个春天。  &lt;/p&gt;

&lt;p&gt;中国经济筑底企稳，总理「互联网+」概念引爆万众创业热潮。可以预见，这一波澜壮阔的时代浪潮，将为中国新一代创新企业的崛起，带来前所未有的历史机遇，而背后最大的动力，无疑是科技创新。  &lt;/p&gt;

&lt;p&gt;那么作为新一代科技领域的「水」和「电」，为其提供动态的 IT 底层资源的云计算，以及基于云计算实现创新的开发者、创业者们，也将成为这个时代的弄潮儿。&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygc01OUwiadfcddhXibXwdHrbu72EacqP8ncRjDM4DPkVf3HNW20JbibjKFt8252whNffbazRWXVIDSvw/640?wxfrom=5" title="" alt=""&gt;
阳春三月，一场由 UCloud 主办，GitCafe 协办的基于云计算的创新盛宴已然开始。「用 API 重新定义云计算·UCloud 开发大赛」自 3 月中旬启动以来，短短一周，已有数百位顶尖高手竞相报名参赛，盛况空前。&lt;/p&gt;
&lt;h3 id="参赛作品全面开花，异彩纷呈"&gt;参赛作品全面开花，异彩纷呈&lt;/h3&gt;
&lt;p&gt;本次大赛作品分为 SDK、工具和应用案例三大类。  &lt;/p&gt;

&lt;p&gt;从目前的参赛情况看，SDK 类作品全面开花，竞争尤为激烈。语言全面涵盖 C、JAVA、PHP、Python、Ruby、NodeJS、.NET、Go、Haskell 等等，相信在此之中将会诞生不少高质量的作品，得到官方的采纳，获得「转正」，并给更多基于 UCloud 云平台的开发者带来巨大的便捷。&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygc01OUwiadfcddhXibXwdHrbuJYuwQx4aIzYtAibWwK3gjEzKytaJO3mnnGb2PNTqypmzLz76PbAjzNw/640?wxfrom=5" title="" alt=""&gt;
          &lt;strong&gt;UCloud Matlab SDK&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;工具和案例类作品也非常丰富，不仅题材广泛，实用性也非常强。比如：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;基于 UCloud 的弹性伸缩服务&lt;/li&gt;
&lt;li&gt;Docker Registry Driver For UCloud UFile&lt;/li&gt;
&lt;li&gt;用于智能硬件自动部署 API 和 Docker 的自动化工具&lt;/li&gt;
&lt;li&gt;能够通过微信公众号，监控、管理云主机运行状态&lt;/li&gt;
&lt;li&gt;在 iOS 系统上监控 UCloud 云主机、数据库的状态&lt;/li&gt;
&lt;li&gt;......&lt;br&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygc01OUwiadfcddhXibXwdHrbubXsX4SCyxJ3ricoDDUbbpjfNtMBVViaw84Q0YA8kllSvo36VYeKyDlicg/640?wxfrom=5" title="" alt=""&gt;
  &lt;strong&gt;作品展示地址：&lt;a href="http://quake.gitcafe.io/ucloud-practice/auto-scaling.html" rel="nofollow" target="_blank"&gt;http://quake.gitcafe.io/ucloud-practice/auto-scaling.html&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;其中，参赛选手 @小霸王服务器 在短短一周内就完成了其 SDK 的开发项目，质量和效率堪称一流，特授予&lt;strong&gt;「最强开发头脑」&lt;/strong&gt;称号。UCloud 也将特别为其颁发 CEO 亲笔签名证书以及豪华大礼包一份。&lt;/p&gt;

&lt;p&gt;（本次大赛仍在火热报名当中，点击&lt;a href="http://www.ucloud.cn/sdk?sem=SDK-semi-wx" rel="nofollow" target="_blank" title=""&gt;这里&lt;/a&gt;获得大赛详情）&lt;/p&gt;
&lt;h3 id="UCloud 开放 API，让「连接一切」成为可能"&gt;UCloud 开放 API，让「连接一切」成为可能&lt;/h3&gt;
&lt;p&gt;众所周知，API 是云上生态发展的关键，API 的开放让「连接一切」成为可能。  &lt;/p&gt;

&lt;p&gt;企业通过 UCloud 云服务开放的 API，可以对各种各样的基础设施和其自己的系统进行联合，极大提升运营效率。  &lt;/p&gt;

&lt;p&gt;开发者通过 UCloud 云服务开放的 API，可以为云计算平台上的用户提供各式各类的插件、工具和镜像，丰富云服务在各种场景下的使用，充分降低云计算使用门槛。  &lt;/p&gt;

&lt;p&gt;而在未来，UCloud 云平台上更多的第三方合作伙伴服务的 API 也将陆续开放。一张由 API 连接的、基于 UCloud 云计算的生态云图正在徐徐展开，万物互联，前景可期。  &lt;/p&gt;

&lt;hr&gt;

&lt;p&gt;本次比赛项目代码均可以提交在 GitCafe 平台 (&lt;a href="https://campaign.gitcafe.com/ucloud-sdk-2015" rel="nofollow" target="_blank"&gt;https://campaign.gitcafe.com/ucloud-sdk-2015&lt;/a&gt;)，您在创建项目时，请选择“UCloud 三周年开发大赛”选项。&lt;/p&gt;

&lt;p&gt;GitCafe 是一个基于代码托管服务打造的技术协作与分享平台，开发者可以通过使用 Git 代码版本控制系统将其开源或商业项目代码托管在 GitCafe 上，与其他程序员协作开发。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitcafe.com/GitCafe/Help" rel="nofollow" target="_blank" title=""&gt;GitCafe 帮助文档：&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://docs.ucloud.cn/api/index.html" rel="nofollow" target="_blank" title=""&gt;UCloud API 文档地址：&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;请点击&lt;a href="http://www.ucloud.cn/sdk?sem=SDK-semi-wx" rel="nofollow" target="_blank" title=""&gt;这里&lt;/a&gt;，立即加入「UCloud 开发大赛」吧！&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Fri, 27 Mar 2015 14:43:43 +0800</pubDate>
      <link>https://ruby-china.org/topics/24866</link>
      <guid>https://ruby-china.org/topics/24866</guid>
    </item>
    <item>
      <title>GitCafe.com 支持 Line Note 了！</title>
      <description>&lt;p&gt;今天，我们将为大家揭晓一个 GitCafe Web 端的新功能，它是什么呢？&lt;/p&gt;

&lt;p&gt;答案揭晓，就是：&lt;/p&gt;
&lt;h3 id="Line Note"&gt;Line Note&lt;/h3&gt;
&lt;p&gt;这就意味着，在 pull request 和 commit 页的查看 diff 的地方都可以进行评论了，就像在行间说话一样，是不是很酷炫呀~光说没用，没图怎么行，让我们一起来看看吧！&lt;/p&gt;

&lt;p&gt;先来看看 pull request 页的 line note：&lt;/p&gt;

&lt;p&gt;进入一篇新的 pull request 页面查看差异信息：&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pwTjiaNq5ryoPfqmKO0eZ1sVRlrLlA4G6ccicCy5sR0pxyVnuAQ0r3Tew/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;鼠标移动到想要添加的行：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pEYMCVhBN3ROrwgIe3JyOfjduWJO8kIdiaA4o3v9PN27T4TFzPX86png/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;点击添加 line note：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pKFbHxYV4icib0qtgzA1IW2xJBPTMThakEyIvzicmiawfW7bibUiaiaYic0unKA/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;line note 添加完成：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pHA0KarBGwuLrSVakKyricZXlDFSPVoROmlwE5p0JzVbXqeepdTwcdiag/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;你可以进行修改或者删除：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21p0q9MbgpdGX2s114B5lkicux28nwLzo2ic6sotnfftKBtQLia7Q9nw92HA/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;在讨论区域看到同伴回复的 line note：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pC4DfyrgNxRlHebwDJ5NMAKKKskA4LwdDTdMj8EW4jF2L1nvrp18zcg/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;在差异区域看到同伴的回复：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pMjBP1D6ib3micHialzbvsiar3Ocjsyxia3aTmLn0Nx2TOeickqfIReicY3POg/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;可以继续回复同伴的回复：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pW6b3AGAFjweAbb3M2Xp8qpc0HEXynrBjJzyBRzBEb5be33nCKsmD5A/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;再来看看 commit 页面的 line note：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7Ygcq17pduaHhEPdxic9QAV21pX8eiaO40IFPIqrZVaqnTtnTt0vJcWqFpMccEib3yRp5nJlpQs7c6C1uA/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;是不是通过这样的讲解，你们已经会使用这个新功能了呢，现在就去 &lt;a href="https://gitcafe.com" rel="nofollow" target="_blank"&gt;https://gitcafe.com&lt;/a&gt; 开始试试吧！让你跟你的小伙伴们更好地针对 pull request 与 commit 的差异进行交流吧~&lt;/p&gt;

&lt;p&gt;如果有什么好的反馈，也欢迎与我们交流：）&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Fri, 20 Mar 2015 22:40:19 +0800</pubDate>
      <link>https://ruby-china.org/topics/24760</link>
      <guid>https://ruby-china.org/topics/24760</guid>
    </item>
    <item>
      <title>「指尖上的华尔兹」--Leap Motion 2015 在线开发大赛即将来袭！</title>
      <description>&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/fccd078ae6a6c4622008e2f01bc26e03.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;你是否想过：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;只需挥动一只手指即可浏览网页、阅读文章、翻看照片，还有播放音乐。即使不使用任何画笔或笔刷，用您的指尖即可以绘画，涂鸦和设计。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;用您的手指即可切水果、打坏蛋；用您的双手即可飙赛车，炸飞机。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;您可以在 3D 空间进行雕刻、浇铸、拉伸、弯曲以及构建 3D 图像，还可以把他们拆开以及再次拼接。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;体验一种全新的学习方式，用您的双手探索宇宙，触摸星星，还可以围绕太阳翱翔。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;一种全新的乐器体验，弹奏空气吉他、空气竖琴和空中的一切乐器，还可以体验全新的采摘和拾起方式。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;现在 Leap Motion 让一切都成为了现实，不仅如此，你甚至可以打开电脑，敲击键盘，玩转灵感，亲自为它开发 APP 实现你想要的一切功能！并且，GitCafe 也会全程为你保驾护航，让我们一起激发灵感、尽情创意、与指尖共舞！&lt;/p&gt;

&lt;p&gt;给出你的比赛提案，就有机会（需审核）免费得到 Leap Motion 开发机！&lt;/p&gt;
&lt;h2 id="活动简介"&gt;活动简介&lt;/h2&gt;
&lt;p&gt;Leap Motion 厉动在线开发大赛是 Leap Motion、神州数码与 GitCafe 合作举办的线上开发者大赛。在为期一个半月的时间里，开发者们可以使用 Leap Motion（或其发布的虚拟现实开发组件）进行 App 开发，构建游戏、音乐、艺术、教育等领域的炫酷应用。&lt;/p&gt;

&lt;p&gt;此次活动的范围面向全国，开发者可以以个人身份参赛，也可以组队或者以公司身份参赛，每个团队可以提交一个或多个产品参与角逐。&lt;/p&gt;

&lt;p&gt;大赛结束后，我们会选出优秀的应用推荐至 Leap Motion 官方应用商店，可以向全世界展示你的作品。&lt;/p&gt;
&lt;h2 id="作品要求"&gt;作品要求&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;使用 Leap Motion 开发的一切 App，游戏、音乐、浏览器、输入法、地图、互动展示、虚拟现实等主题均可，有一定的创新性、趣味性和想象力。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;可以使用任何一种 Leap Motion 开发包支持的程序设计语言，如 C++、C#、JavaScript 等。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;开发的作品可以支持 Mac、Windows、Linux 平台，也可以是基于 Web 的网页版应用。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;开发作品支持中英文双语（便于推荐至官方应用商店）。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;开发作品提交后可以完整演示，最好附带演示小视频。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;参赛团队提交的参赛作品从未在其他在线开发大赛中参与及获奖。&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;为统一评审，请所有参赛者将作品代码托管至 GitCafe。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="比赛日程"&gt;比赛日程&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;3 月 18 日 提交提案，免费申请开发机&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;4 月 18 日 UNITE 2015 BEIJING 大会现场提供本活动报名&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;4 月 20 日 开发大赛正式开始，无需报名，可以直接在 GitCafe 平台进行项目创建&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;6 月 1 日 项目提交截止，同时启动评审&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;6 月 14 日  评审结束&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;6 月 15 日  公布获奖名单&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="参赛流程"&gt;参赛流程&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;准备参赛：提交申请，写明提案供主办方审核是否发放免费开发机&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;开发机发放：主办方选取 50 个团队，免费发放开发用 Leap Motion（每个团队一个），其他团队则可以以专属折扣价购买 Leap Motion 用于开发&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;项目提交：将开发用代码统一托管至 GitCafe 平台，同时可一并提交项目视频&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;项目审核：大赛评委根据提交项目进行审核，选出 20 个入围项目。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;公布大奖名单&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="UNITE 2015 BEIJING开发者大会"&gt;UNITE 2015 BEIJING 开发者大会&lt;/h2&gt;
&lt;p&gt;4 月 18 日 UNITE 2015 BEIJING 开发者大会开放现场报名，开发者可以直接在 Leap Motion 展位报名参赛。&lt;/p&gt;
&lt;h2 id="奖品"&gt;奖品&lt;/h2&gt;
&lt;p&gt;一等奖 1 名，奖品为 Oculus Rift DK2 一台+iPad Mini 3&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/250x124/7373576bca033ee1a7026b6e02cdd965/%E5%A5%96%E5%93%81%E4%B8%80.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/203x187/29b7693f31fb956a17d050f21790835a/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7_2015-03-18_%E4%B8%8B%E5%8D%8811.25.21.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;二等奖 2 名，奖品为 Apple Watch 一块&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/251x152/fdc181f662650a4179dda8dcb7ec67ce/%E5%A5%96%E5%93%81%E4%BA%8C.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;三等奖 3 名，奖品为价值 1000 元的机械键盘&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/248x188/41818c6cb60888991adb5beca1a579fc/%E5%A5%96%E5%93%81%E4%B8%89.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;创新奖 4 名，beats 耳机&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/248x279/ba03fa2e396d3d9059a421ec0d0fc94f/%E5%A5%96%E5%93%81%E5%9B%9B.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;入围奖若干，奖品为 Leap Motion 定制笔记本&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/222x355/2f62bfb640cde28c30b94d55e135c3d1/%E5%B1%8F%E5%B9%95%E5%BF%AB%E7%85%A7_2015-03-18_%E4%B8%8B%E5%8D%8811.28.30.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;参赛奖：300 GitCoin&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;凡是参加本次「指尖上的华尔兹--Leap Motion 2015 在线开发大赛」的选手都可以获得 GitCafe 提供的 300 GitCoin 用于创建私有项目。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;参赛 GitCafe 用户在充值页面的「使用兑换码充值:」一栏填写「LEAPMOTION2015」，领取 300 GitCoin。（可用于创建私有项目）&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="评审标准"&gt;评审标准&lt;/h2&gt;
&lt;p&gt;评委将基于项目的开发难度、使用前景、独创性和想象力进行评分，其中&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;开发难度 30%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用前景 30%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;独创性 20%&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;想象力 20%&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;注：「私有项目」请将裁判账号：LeapMotionUSA 与 LeapMotionChina 添加为项目的协作者，方便评委查看项目的代码质量。&lt;/p&gt;
&lt;h2 id="评审"&gt;评审&lt;/h2&gt;
&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/211x209/de2becb9c41da3575798a912fb5da240/%E8%AF%84%E5%A7%94%E4%B8%80.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Michael Buckwald  &lt;/p&gt;

&lt;p&gt;Leap Motion President &amp;amp; CEO, Co-founder&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/208x210/3b3586ac13754fa22a23bae4b0c02d82/%E8%AF%84%E5%A7%94%E4%B8%89.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;刘宁&lt;/p&gt;

&lt;p&gt;神州数码 消费电子业务发展部 总经理&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/5508e1f0c12d46460ae6153e/209x210/92ba5cd2d6ea1aff2c1ea4efd7546142/%E8%AF%84%E5%A7%94%E5%9B%9B.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Thomas Yao&lt;/p&gt;

&lt;p&gt;GitCafe CEO &amp;amp; Co-founder&lt;/p&gt;

&lt;p&gt;还有一位神秘嘉宾将作为评委出席，请密切关注&lt;a href="https://campaign.gitcafe.com/leapmotion2015" rel="nofollow" target="_blank" title=""&gt;活动页面&lt;/a&gt;进行查看。&lt;/p&gt;
&lt;h2 id="作品提交"&gt;作品提交&lt;/h2&gt;
&lt;p&gt;需要将代码提交在 GitCafe 平台。您在 GitCafe 创建项目时，请选择“「指尖上的华尔兹」--Leap Motion 2015 在线开发大赛”选项。&lt;/p&gt;

&lt;p&gt;作品使用说明及截图。需要使用 README 编写项目说明，若操作性要求高的，需编写操作步骤手册。&lt;/p&gt;
&lt;h2 id="开发机申请"&gt;开发机申请&lt;/h2&gt;
&lt;p&gt;点击&lt;a href="http://www.mikecrm.com/f.php?t=GjqvUt" rel="nofollow" target="_blank" title=""&gt;这里&lt;/a&gt;进行开发机的申请&lt;/p&gt;

&lt;hr&gt;
&lt;h2 id="GitCafe 为你武装"&gt;GitCafe 为你武装&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://gitcafe.com" rel="nofollow" target="_blank" title=""&gt;GitCafe&lt;/a&gt; 是一个基于代码托管服务打造的技术协作与分享平台，开发者可以通过使用 Git 代码版本控制系统将其开源或商业项目代码托管在 GitCafe 上，与其他程序员协作开发。&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitcafe.com/GitCafe/Help" rel="nofollow" target="_blank" title=""&gt;GitCafe 帮助文档&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.leapmotion.com" rel="nofollow" target="_blank" title=""&gt;Leap Motion SD 下载地址&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://gitcafe.com/LeapMotion/LeapMotionDoc" rel="nofollow" target="_blank" title=""&gt;Leap Motion 帮助文档&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;技术支持&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;本次「Leap Motion 2015 在线开发大赛」Support 采用 Tickets（即：工单）系统进行，具体使用方式可以参考该  Readme。&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;当然，我们仍然提供了 E-mail 的方式提供 support：leapmotion-hackathon@googlegroups.com &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;大赛报名正式启动，请去往&lt;a href="https://campaign.gitcafe.com/leapmotion2015" rel="nofollow" target="_blank" title=""&gt;活动页面&lt;/a&gt;了解更多详情，让我们一起激发灵感、尽情创意、与指尖共舞！&lt;/p&gt;

&lt;p&gt;我们等着你~&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Wed, 18 Mar 2015 23:49:39 +0800</pubDate>
      <link>https://ruby-china.org/topics/24714</link>
      <guid>https://ruby-china.org/topics/24714</guid>
    </item>
    <item>
      <title>[上海][北京] GitCafe 招聘 高级工程师 / 产品经理 / 市场专员</title>
      <description>&lt;h2 id="二月十四日忆单身兄弟"&gt;二月十四日忆单身兄弟&lt;/h2&gt;
&lt;p&gt;「独在异乡为异客，每逢佳节倍思亲。」&lt;/p&gt;

&lt;p&gt;一转眼，就到了这个草长莺飞、候鸟迁徙、送人玫瑰、千里送君、宽衣解带的季节了。&lt;/p&gt;

&lt;p&gt;一眼看过去，回家过年的队伍和情侣约会的队伍都走进了红色和粉红色的世界。&lt;/p&gt;

&lt;p&gt;为了世界的和平，为了宇宙的未来，&lt;a href="https://gitcafe.com" rel="nofollow" target="_blank" title=""&gt;GitCafe&lt;/a&gt; 决定在 2 月 14 日这一天，寻找有缘人。&lt;/p&gt;

&lt;p&gt;我们渴望热爱自由和信息分享的头脑，我们渴望体格健壮和灵魂高尚的身躯，我们更渴望渴望加入我们团队的你。&lt;/p&gt;

&lt;p&gt;我们向 Dennis Ritchie 在天之灵保证：&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;说点实在的，现在入职，终身享受找对象 &amp;amp; 约会 &amp;amp; 照顾家庭四大利器：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;自由的上下班时间，快去找对象 &amp;amp; 约会 &amp;amp; 照顾家庭&lt;/li&gt;
&lt;li&gt;上海 &amp;amp; 北京地区最豪华的高端别墅办公，宽敞的工作区、厨房、车库、花园、池塘、还有吊床&lt;/li&gt;
&lt;li&gt;和最 Cool 的团队一起疯，我们一起帮你找对象&lt;/li&gt;
&lt;li&gt;永远都有好吃的和可乐的厨房，标配健身教练一枚&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;「如果你有正确的态度，有趣的事情自然会找到你。」这是 Eric 在《大教堂与集市》一文中给出的一条经验。我们同他一样极力为「黑客」正名，你将在 GitCafe 见到的，是一批着迷于计算机技术并通过编程提供极具价值软件的人。&lt;/p&gt;

&lt;p&gt;这是为何我在找你，或者你在找我的理由。&lt;/p&gt;

&lt;p&gt;有缘人往下看：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgfnuWDk8qYxbO0VyYr0VibTEu7Kp6peKUbnJECYTpOnFk24zSbibp1fwYQbLoTDebP5cy3sEYDWyEGQ/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;h3 id="高级工程师 / 多位 / 坐标北京 or 上海 / 年薪 18 - 30 k ＊13"&gt;高级工程师 / 多位 / 坐标北京 or 上海 / 年薪 18 - 30 k ＊13&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Ruby 高级工程师&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;良好的独立学习、思考和解决问题能力。了解并崇尚黑客文化&lt;/li&gt;
&lt;li&gt;有能力编写符合 The Ruby Way，易读易维护的 Ruby 代码&lt;/li&gt;
&lt;li&gt;对 Ruby 的 OOP、Design Patterns 和重构有深入的理解和丰富的经验&lt;/li&gt;
&lt;li&gt;熟悉 Rails 框架，对 Rails 开发的各方面有深入的认识和理解。熟悉常见的 Web 开发相关 gems&lt;/li&gt;
&lt;li&gt;了解 TDD/BDD 理念，熟悉 RSpec/Capybara 等相关测试工具&lt;/li&gt;
&lt;li&gt;有主导 Ruby/Rails 互联网产品开发的工作经验&lt;/li&gt;
&lt;li&gt;熟悉 Git 使用，了解 Git 工作方式和原理。熟悉基于命令行的 Unix/Linux 开发工具链&lt;/li&gt;
&lt;li&gt;使用 Mac OS X 或 Linux 进行日常工作&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;C# Windows 高级工程师&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;良好的独立学习、思考和解决问题能力&lt;/li&gt;
&lt;li&gt;熟悉 OOP，有能力编写易读易维护的 C# 代码&lt;/li&gt;
&lt;li&gt;有良好的 .NET 基础，熟悉 WinForms 和 WPF 应用开发&lt;/li&gt;
&lt;li&gt;对 Windows 应用开发、调试的各方面有深入的认识和理解，有能力快速研究解决技术难题&lt;/li&gt;
&lt;li&gt;有主导 Windows 原生应用开发的工作经验&lt;/li&gt;
&lt;li&gt;熟悉 Git 使用，了解 Git 工作方式和原理。熟悉或不排斥基于命令行的开发工具链&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;iOS/OS X 高级工程师&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;良好的独立学习、思考和解决问题能力。了解并崇尚黑客文化&lt;/li&gt;
&lt;li&gt;有能力编写易读易维护的 Objective-C/Swift 代码&lt;/li&gt;
&lt;li&gt;熟悉 Cocoa(Application)/Cocoa Touch 框架，熟悉常见的开源库&lt;/li&gt;
&lt;li&gt;深度 iOS/Mac OS X 用户，熟悉 iOS/Mac Human Interface Guidelines&lt;/li&gt;
&lt;li&gt;对 iOS/OS X 应用开发、调试的各方面有深入的认识和理解，有能力快速研究解决技术难题&lt;/li&gt;
&lt;li&gt;有主导 iOS/OS X 原生应用开发的工作经验&lt;/li&gt;
&lt;li&gt;熟悉 Git 使用，了解 Git 工作方式和原理。熟悉基于命令行的 Unix/Linux 开发工具链&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Android 高级工程师&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;良好的独立学习、思考和解决问题能力&lt;/li&gt;
&lt;li&gt;有能力编写规范，思路清晰且易于维护的代码&lt;/li&gt;
&lt;li&gt;了解 Material Desigin 设计规范，并对 android-support 扩展包有所了解&lt;/li&gt;
&lt;li&gt;熟悉 Design Patterns，有合理运用它们解决实际问题的经验&lt;/li&gt;
&lt;li&gt;对 Android 应用开发、调试的各方面有深入的认识和理解，有能力快速研究解决技术难题&lt;/li&gt;
&lt;li&gt;有主导 Android 原生应用开发的工作经验&lt;/li&gt;
&lt;li&gt;熟悉 Mac OS X 或 Linux 开发环境优先考虑&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="产品经理 / 3 位 / 坐标北京 or 上海 / 薪资面议"&gt;产品经理 / 3 位 / 坐标北京 or 上海 / 薪资面议&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;工作职责：&lt;/strong&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;/ul&gt;

&lt;p&gt;&lt;strong&gt;我们希望你：&lt;/strong&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;h3 id="市场专员 / 3 位 / 坐标北京 or 上海 / 年薪 7 - 9 k ＊13"&gt;市场专员 / 3 位 / 坐标北京 or 上海 / 年薪 7 - 9 k ＊13&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;工作职责：&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;广而告之 GitCafe 主办 / 协办 / 参与的活动和事件&lt;/li&gt;
&lt;li&gt;策划 &amp;amp; 筹谋线上线下活动&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;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;1 年左右互联网市场相关经验者优先。&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id="公司介绍"&gt;公司介绍&lt;/h4&gt;
&lt;p&gt;上海东革志信息科技有限公司致力于通过前沿的技术与互联网服务，改善 IT 教育体系在中国以及全世界落后的问题。&lt;/p&gt;

&lt;p&gt;GitCafe 是东革志发布的第一款产品，也是国内首个基于 Git 的代码托管、分享与实践平台。&lt;/p&gt;

&lt;p&gt;欢迎投简历至 job@gitcafe.com 与我们相遇，也祝各位情人节快乐。&lt;/p&gt;

&lt;p&gt;可以点击&lt;a href="http://www.nashangban.com/companies/KYoQcq" rel="nofollow" target="_blank" title=""&gt;这里&lt;/a&gt;查看更多职位。&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Sat, 14 Feb 2015 13:57:10 +0800</pubDate>
      <link>https://ruby-china.org/topics/24262</link>
      <guid>https://ruby-china.org/topics/24262</guid>
    </item>
    <item>
      <title>GitCafe 已经支持 Go 语言 Package 托管</title>
      <description>&lt;p&gt;之前有用户希望 GitCafe 可以支持 go get，使其能够直接导入 GitCafe 上托管的代码。&lt;/p&gt;

&lt;p&gt;现在，我们想要告诉各位一个好消息，为了方便更多的开发者，任何托管在 GitCafe 上的 Go 语言 package 都可以直接在项目中使用，通过 go get 工具安装和更新。&lt;/p&gt;

&lt;p&gt;例如，我们可以在本机创建一个 hello_world.go 文件，内容如下：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;package main

import "gitcafe.com/rainux/go-hello"

func main() {
    hello.World()
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;执行 go get -d 命令可以将 GitCafe 上托管的 go-hello 项目源代码安装到 $GOPATH 中；执行 go run hello_world.go 可以输出经典的 "Hello world!" 信息。&lt;/p&gt;

&lt;p&gt;如下所示：
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgeEL2wmqfOVCMUo4BHMR78NSTuv3OMqxfibkXx2ib5HxQMJqMHzFt0Z9o7CCibTww3EFRIS8FEfTriaWA/640?wxfrom=5" title="" alt=""&gt;
希望各位开发者都可以在 GitCafe 更加方便地进行开发，现在就开始吧！&lt;/p&gt;

&lt;p&gt;Happy Go Programming!&lt;/p&gt;
&lt;h4 id="Tips:"&gt;Tips:&lt;/h4&gt;
&lt;p&gt;Go（也叫 "golang"）是一款由 Google 最初开发的编程语言。它自诞生就有几个设计原则：简单性、安全性和速度。Go 语言发行版拥有各种调试、测试、调优和代码审查工具。&lt;/p&gt;

&lt;p&gt;go get 是 golang 默认的包管理工具，它支持通过 git/mercurial 等版本控制工具远程导入包&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Sat, 14 Feb 2015 13:50:35 +0800</pubDate>
      <link>https://ruby-china.org/topics/24261</link>
      <guid>https://ruby-china.org/topics/24261</guid>
    </item>
    <item>
      <title>【线上活动】Open XML SDK 在线编程黑客松 </title>
      <description>&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hsxKn8Rh0kbyDDcYFgV33tbFhuY5VKX1hNxff9YxfJXnlMrnrPZCQXQ/0?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;2015 年 2 月 10 日 -3 月 20 日，开源社成员微软开放技术，GitCafe，极客学院联合举办”Open XML SDK 在线编程黑客松“，为专注于开发提高生产力的应用及服务的程序猿们提供一个在线动手开发，学习交流，技术分享，发挥创意与竞技的盛宴。&lt;/p&gt;

&lt;p&gt;我们为参赛队伍准备了丰富的技术干货，国内外高手无私分享以及技术支持，逐步引导的在线学习视频教程与技术文档，场景范例，在线编程及演示环境，社区互动，丰富礼品（如极客学院特别为每位参赛人员提供月 VIP 码，用户可以免费学习极客学院全网课程）及优胜奖品（如微软最豪华的 MSDN 订阅服务旗舰版 (Visual Studio Ultimate with MSDN Subscriptions) 一年免费订阅）等大奖。心动不如行动，带着您的创意或是得意作品的源代码，即刻&lt;a href="http://www.huodongxing.com/event/4266795395700" rel="nofollow" target="_blank" title=""&gt;报名参加&lt;/a&gt;吧！&lt;/p&gt;
&lt;h2 id="大赛流程"&gt;大赛流程&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;报名参加：2015 年 2 月 10 日 -3 月 8 日，通过&lt;a href="http://www.huodongxing.com/event/4266795395700" rel="nofollow" target="_blank" title=""&gt;活动行报名&lt;/a&gt;。&lt;/li&gt;
&lt;li&gt;参赛审核：2015 年 3 月 10 日截止（48 小时内电子邮件回复是否审核通过）。&lt;/li&gt;
&lt;li&gt;邮件邀请：审核通过者获得邀请邮件，登陆 GitCafe Open XML SDK 在线编程黑客松大赛官方网站。&lt;/li&gt;
&lt;li&gt;建立项目：参赛者使用 GitCafe 账号在本次黑客松活动网页建立项目（无帐号者请前往 &lt;a href="https://gitcafe.com" rel="nofollow" target="_blank"&gt;https://gitcafe.com&lt;/a&gt; 注册）。&lt;/li&gt;
&lt;li&gt;在线编程：参赛者以 GitCafe 账号登陆开放黑客松平台，开始在线编程。&lt;/li&gt;
&lt;li&gt;在线学习：参赛者注册极客学院账号，免费学习微软开放技术和极客学院共同开发的在线 Open XML SDK 视频教程。&lt;/li&gt;
&lt;li&gt;项目提交：2015 年 3 月 16 日零时前，将完成项目源代码提交并托管于 GitCafe。&lt;/li&gt;
&lt;li&gt;项目演示：2015 年 3 月 16 日零时前，提交完成项目的幻灯片简介，演示截屏或视频。&lt;/li&gt;
&lt;li&gt;项目评审：2015 年 3 月 20 日零时完成评审。&lt;/li&gt;
&lt;li&gt;公布结果：2015 年 3 月 20 日公布大赛获奖/优胜名单。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="大赛奖品"&gt;大赛奖品&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;丰富奖品：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtyLvYV20Jtt6Jo4u9dBXauJ3cPhbzlNPaQOuYn14zRqbKSFnrXqsH2Q/640?wxfrom=5" title="" alt=""&gt;
开源社大礼包&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtrUoVUZSds1A5TWB8M4XIDViamc4uezs6DlrI1o72icZakXLF6PKxCRqA/640?wxfrom=5" title="" alt=""&gt;
微软开放技术帽衫&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtBIGX80KPPwkjfNRjqjA2DhXwhZvVB0xkLmibyR1xQzwXAaTb2vKJBWw/640?wxfrom=5" title="" alt=""&gt;
GitCafe 大礼包&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;参加奖：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtfruqEWbZo7HnEILIWGGw2x2ibqWTVYEZ5lshMgVstDMUxPW4Tw8FMgQ/640?wxfrom=5" title="" alt=""&gt;
GitCoin：主要用于私有项目托管代码的使用。GitGoin 可以购买 GitCafe（不限于）额外托管空间升级和私有项目托管在内的服务。&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFt64L8icytibakFaM3WzPFfZxmpI6wOQCt4gfSzQu6pic2ncUoBgRbZxdBw/640?wxfrom=5" title="" alt=""&gt;
学霸 VIP：极客学院特别为每位参赛人员提供月 VIP 码，用户可以免费学习极客学院全网课程。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;优胜奖：&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtw5NLfGRCP7WXnkUqt0DLL05J0fK9Uj4m8fEjicibGPEyX1QfcTSWGYlA/640?wxfrom=5" title="" alt=""&gt;
MSDN 旗舰版：微软最豪华的 MSDN 订阅服务旗舰版 (Visual Studio Ultimate with MSDN Subscriptions) 一年免费订阅&lt;/p&gt;
&lt;h2 id="技术干货"&gt;技术干货&lt;/h2&gt;
&lt;p&gt;我们准备了一系列的教程、小挑战、技术文档、场景范例、相关社区：&lt;/p&gt;

&lt;p&gt;首先，登陆&lt;a href="http://www.jikexueyuan.com/partner#msopentech" rel="nofollow" target="_blank" title=""&gt;极客学院在线学习视频教程&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open XML SDK 简介&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;下载和编译 Open XML SDK（Windows 系统）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;下载和编译 Open XML SDK（Linux 系统）&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用 PowerTools for Open XML（Windows 系统）&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;我们也为大家搭建了在公有云 (Azure) 运行的在线编程服务（包含开发/学习/演示/部署） “开放黑客松”，让您无论何时何地，只要有浏览器，就可以开始任性编程，而不需要辛辛苦苦搭建环境，安装软件。要记得先报名参加，审核通过后，再取得 GitCafe 账号，才能登陆“开放黑客松”平台哟！&lt;/p&gt;

&lt;p&gt;针对本次 Open XML SDK 黑客松，“开放黑客松”平台除了让您任性地在线编程/演示/部署之外，也提供了各种学习帮助，如难度不一的小挑战，丰富的技术文档，场景范例及提示，开发者社区链接，Open XML SDK 源代码等。&lt;/p&gt;
&lt;h2 id="相关技术文档"&gt;相关技术文档&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gitcafe.com/GitCafe/Help" rel="nofollow" target="_blank" title=""&gt;GitCafe 帮助文档&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gitcafe.com/MSOpenTech_China/Open-XML-SDK" rel="nofollow" target="_blank" title=""&gt;Open-XML-SDK 项目地址&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://msdn.microsoft.com/zh-cn/library/office/bb448854%28v=office.1%29.aspx" rel="nofollow" target="_blank" title=""&gt;Open-XML-SDK 官方技术文档&lt;/a&gt;
各种场景范例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="小挑战"&gt;小挑战&lt;/h2&gt;
&lt;p&gt;建议先上完极客学院在线学习视频教程后，再来 PK。&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;从 Word 文档中提取内容 (Extract Text from Open XML WordprocessingML Document)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;增加难度！从含有修订标记的 Word 文档中提取内容 (Extract Text from a DOCX that Contains Tracked Revisions)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;快速构建一个 ASP.NET 网站，在网页上展示 Open XML 文档内容 (Build a Simple ASP.NET Web Site that Displays an Open XML Document in a Page)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="可能场景提示"&gt;可能场景提示&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;通过一个 CRM 系统的网页来预览 Open XML 文档内容 (Previewing Open XML Documents in a Web-Based Content Management System)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;基于表单形式的问卷系统 (Form-Based Survey System)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;系统化生成定制化方案 (Custom Proposal Custom Proposal Generation System)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;企业文档标准化的执行 (Enforcement of Standards for Corporate Documents)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;文档中的测试代码 (Test Code in Documents)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;生成定制 PPTX 幻灯片 (Generation of Custom PPTX Presentations)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;大量生成客户账单 (Mass Generation of Customer Statements)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;生成定制报告 (Custom Report Generation)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;生成法律合同 (Legal Contract Generation)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;从 Excel 里导出大量数据作分析 (Exporting Huge Data Sets for Analysis in Excel)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用 Excel 来维护企业信息管理系统的数据 (Using Excel to Maintain Data Sets from Enterprise Management Information Systems)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;使用 Word 来维护含丰富语义的内容 (Using Word to Maintain Rich Semantic Content)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;处理提交的内容 (Processing Content Submissions)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;处理人事绩效 (Human Resources Review Processing)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;定制 Word 文档到 XML 的转换 (Custom Transformations of Word Documents to XML)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;从文档中抽取元数据 (Extraction of Metadata from Documents)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id="技术支持"&gt;技术支持&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;官方选手技术交流群：QQ 群号 - 371539827&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;黑客松技术支持邮箱：hackathon@kaiyuanshe.cn&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="开发者社区"&gt;开发者社区&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://openxmldeveloper.org/" rel="nofollow" target="_blank" title=""&gt;http://openxmldeveloper.org/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="http://www.csdn.net/tag/openxml/" rel="nofollow" target="_blank" title=""&gt;http://www.csdn.net/tag/openxml/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="评审嘉宾"&gt;评审嘉宾&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Eric White 
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hXickMCaibyBleK3VzHdERWV9QciaBj8LVe8OYMlzNnkqBuJmicHpZ1SLeQ/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.NET developer, technical writer, blogger. Experience with Open XML using LINQ to XML and the Open XML SDK, Office 2010 client development, and SharePoint 2010 development. Experience with .NET technologies, including ASP.NET, HTML, CSS, XML, XSLT, XSD, and document transformations.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;蔡明峰 
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hljUax7ibeiaUiciah5Vfhkic4n60GqjFmWjAQVickUofHpO6cV237u78V1eQ/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;就职于微软开放技术，任资深项目经理，有八年的微软经历，曾参与过企业IT解决方案、医疗软件、全球广告平台的研发运维，现全心投入在与微软技术相关的开源软件项目中。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Raniux 
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hELNicQM144tlXnjGOWicr8fLknnmB97ICtovYuly8LbZgkoUVt3RQ7Gw/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GitCafe CTO，写下了 GitCafe 的第一行代码。A life-long learner, a problem solver, and a developer. Also a pianist and a StarCraft player.
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;胡德民
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hica1mWm3tibk4icknRz5VX7yA0O5ekicK5VWQkricEFQplxSnBYL6qJEaicQ/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;现任微软公司大中华区开发工具高级产品经理，具备15 年 IT 专业技术服务的经验，历任程序员、讲师、项目经理、技术顾问，于2004 年加入微软公司，负责.NET 平台以及开发工具 Visual Studio 市场推广，推动企业研发团队在移动与互联网趋势下的转型，并致力于软件工程与 ALM 工具的落地与实践。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;郝冠军 
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hUOrFkBVNEqzXF9dSj4t65452HImBj4Bn8kXwGc5n6UPniaicV3zibtPbw/640?wxfrom=5" title="" alt=""&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;多年来工作在开发一线，热爱软件开发工作，对技术有比较深入理解， 2011 年出版了《ASP.NET 本质论》，连续四届微软最有价值专家（MVP），积极参与技术社区活动。
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="合作伙伴"&gt;合作伙伴&lt;/h2&gt;
&lt;p&gt;主办方：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hODosPyx1hI9FplLXblficC45NUDf34aj2icCv1LEOn40g2yzibWPfQy0A/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hPAEljLTB6uGb1Z6Dkyc4NzQqa8n0f66AHgKct7VceV6mRfmL380ELg/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtDd6CocQ7pr7sg4NDhk4kkOaq9iaqtEp89dSV6sgzTFBjkCsdR3OzYXA/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcPYuCpNe68MZcibgrvXFnFtEY8ZIAV9EkPvyc6azLk0n79q1cncB1wbzIv545UCZn4DQhLPHibZkyA/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;支持单位：&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hqicyIbEnSBRYuJ6Ux4UAJ5EmjAhFzEFfiaIf8zoDiaCeiaVia2SaUTv3k0w/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0h0SofqX6FibibmicHUvrMS1amZh0UxRaXjMrBy0bx8CqVImib8ZICzHkOfA/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hRMRUB9ruUHiajejJlyfFJlBPyHUVxCsWJ7q9LE4D6e3B6s9iaITjFtcw/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hNU7AJJdicbwnhFHlknUU91hpY79F99hfCH4mZKTyDDnSIXibqbYvkXKQ/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hwHiaWsp9d5PibVKxibk0OemrsmbMDiaE0qlcycWulKddTNPmrFlhIuCnfQ/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0htwtX2Xb8qoxM65sFUORn9cSgncKw3iaosQEDCuaEYAqKLflTxbVl3tg/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hI6yF5ajxGrlJZY9H4xs7ZwZI8MJWSc0WZz4nh4NppUZhMmWrkJibP1A/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0h01EIiarT8GyZ2xjtTVgg5WE0GSCX62Y9GSHWo0S6DX6KtQFZIIFCT6Q/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;li&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hsMibBEglCd0vww80uT2d04ul9tKsia73aJpvcaaL3LSze15F61NuRa7A/640?wxfrom=5" title="" alt=""&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <author>gitcafe</author>
      <pubDate>Tue, 10 Feb 2015 18:49:48 +0800</pubDate>
      <link>https://ruby-china.org/topics/24206</link>
      <guid>https://ruby-china.org/topics/24206</guid>
    </item>
    <item>
      <title>「黑客松之春」旅程正式启动，一起来 hack！ </title>
      <description>&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/1024x196/036f0b66f1a23402ea3318f2be5e617b/hack-song_1024.png" title="" alt=""&gt;
春天，是希望，是梦想。一年之计在于春，是时候释放热情与创造力了。2015 开春之际 GitCafe 特此献上四场线上黑客马拉松比赛，欢迎一起来 hack 出温暖这个春天的代码。&lt;/p&gt;

&lt;p&gt;如果你还担心春节期间无事可做，不妨打开电脑，敲下一行承载灵感的代码；如果你还担心创意无处安放，不妨点击报名，开始创建一个酷炫的项目；如果你还担心黑客梦想无法实现，不妨加入我们，一起踏上这段最棒的「黑客松之春」旅程。&lt;/p&gt;

&lt;p&gt;我们期待遇见对这个世界充满热情与斗志的你，迎接挑战，一起度过这个非比寻常的春天。&lt;/p&gt;

&lt;p&gt;2 月 10 日，正式启航。&lt;/p&gt;
&lt;h2 id="黑客松之春"&gt;黑客松之春&lt;/h2&gt;
&lt;p&gt;「黑客松之春」是由 GitCafe 联合四家公司一起在春节长假期间同时开展的在线黑客马拉松大赛，参赛者们使用云适配、魔豆、Depth-VR 或 BearyChat 的产品或者接口，并将项目与代码托管在 GitCafe 上，进行为期一个月的开发。&lt;/p&gt;

&lt;p&gt;为你奉上每一场 hackathon 诚挚的寄语，希望你能够在这场旅程中享受到快乐。&lt;/p&gt;
&lt;h3 id="云适配"&gt;云适配&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/640x123/c61270d4904c80f09fa3614e05aedaba/6401.jpeg" title="" alt=""&gt;
Amaze UI 从 2014 年 8 月开源至今已经 6 个月，这半年间 Amaze UI 团队致力于一件事：为开发者打造最好用的前端框架。目前看没有偏离这个方向。&lt;/p&gt;

&lt;p&gt;Amaze UI 团队很高兴能与 GitCafe 团队合作举办线上黑客马拉松，也希望本次活动能得到开发者的认可，帮助 Amaze UI 更好的成长。&lt;/p&gt;
&lt;h3 id="魔豆"&gt;魔豆&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/640x123/57ae407326cf998bcb3047a6b6ccb3c5/6403.jpeg" title="" alt=""&gt;
魔豆路由器是一款非常独特的智能路由器，独特之处在于它有一块可触控的屏幕，这一点彻底改变了传统路由器与用户交互的方式。你可以不用借助电脑、手机就能直接设置路由器，查看网络状态、联网设备等。而更重要的是，我们现在已经可以让用户直接在这块触控屏上安装和使用应用了；比如天气预报，这是由一位魔豆热心用户开发的应用，打开它，用户就可以直接在路由器上查看天气，甚至雾霾指数。不仅如此，开发者开发一款应用还可以直接自动适配到 Android/iOS 版本的魔豆路由宝和路由器的 Web 管理后台；一次开发，就支持三种途径的前端展现。&lt;/p&gt;

&lt;p&gt;我们还需要更多功能更丰富更有趣的应用，来满足用户的使用需求，因此我们就需要更多有能力的开发者加入到魔豆路由器应用开发的工作中来。我们希望未来所有普通的用户都能轻松自如地操控路由器，为生活带来更大的便利和乐趣。&lt;/p&gt;
&lt;h3 id="Depth-VR"&gt;Depth-VR&lt;/h3&gt;
&lt;p&gt;&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hXXhXaYn65fvpBpMHmY8wFLbXGzRs8CmahiaYNuBicxUm3J8k2yeUL9DA/640?wxfrom=5" title="" alt=""&gt;
也许，你时常活在“代码”的世界里，在那里你可能会觉得很舒服。&lt;/p&gt;

&lt;p&gt;那么，你希望找到，甚至创造一个由代码构成的“世界”吗？&lt;/p&gt;

&lt;p&gt;一个“虚拟”的“现实”。&lt;/p&gt;

&lt;p&gt;看到这里，如果你想选择的是那一颗蓝色的药丸，那么我们有必要告诉你，这正是 Depth-VR 一直在做的事情，而且我们希望和你一块儿做。&lt;/p&gt;

&lt;p&gt;也许你对 Depth-VR 并无几分了解，没关系，现在你只需要知道一件事：“虚拟现实”被我们承包了！&lt;/p&gt;

&lt;p&gt;我们并不需要各位能人异士帮我们开发或者改进什么“产品”，而是各位强壮的右（左）手，和我们一起创建这样一个真实的乌托邦，一个实实在在的 Cybercity，让 Depth-VR 能贡献出一个更好的虚拟现实平台，从而让更多的开发者来这里“安家”。&lt;/p&gt;

&lt;p&gt;就算是来搬砖也好啊！&lt;/p&gt;
&lt;h3 id="BearyChat"&gt;BearyChat&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/640x123/41db8d255a8077fcc58298fd443a0a7d/6404.png" title="" alt=""&gt;
这可能是一次最富有理想、坚持，激情的黑客马拉松。&lt;/p&gt;

&lt;p&gt;在这个新春伊始，成百上千的伙伴会跟你同在一起，为了一个目标结伴前进。在这里，「BearyChat」会伴随在你的左右，用强大的信息集成，快速稳定的沟通体验，让你拥有一个非同凡响的春天。&lt;/p&gt;

&lt;p&gt;无论你决定在哪个项目中用代码组成美妙的乐章，我们都真诚的希望你能够使用「BearyChat」来进行线上的沟通和协作：当你使用「Trello」掌控项目进度、用「JIRA」跟踪项目事务、用「Sentry」实时收集异常和日志记录，「BearyChat」都会将这些信息实时推送给你；同时，你还可以根据话题进行分组或者私密即时沟通。总之，你将会在「BearyChat」上即时沟通、讨论一些你关心的信息，让工作更加专注。&lt;/p&gt;

&lt;p&gt;现在，「BearyChat」中还有更多的智能机器人需要你来为我们开发，它可以是：智能的信息收集器、可以是定时提醒你喝水的贴心小助手，还可以是记得你重要纪念日并送上祝福的挚友…….当然，别具匠心的你还可以天马行空的打造出更多机器人，这一切都由你来决定，你就是这个春天的造物主。&lt;/p&gt;
&lt;h2 id="GitCafe 为你武装"&gt;GitCafe 为你武装&lt;/h2&gt;
&lt;p&gt;GitCafe 是一个基于代码托管服务打造的技术协作与分享平台，开发者可以通过使用 Git 代码版本控制系统将其开源或商业项目代码托管在 GitCafe 上，与其他程序员协作开发。&lt;/p&gt;

&lt;p&gt;这一次，GitCafe 为你提供全部项目与代码的托管和在线协作的服务，并有工作人员为大家进行现场的指导。&lt;/p&gt;
&lt;h3 id="如何使用 GitCafe"&gt;如何使用 GitCafe&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://gitcafe.com/GitCafe/Help/" rel="nofollow" target="_blank" title=""&gt;GitCafe 帮助文档&lt;/a&gt; &lt;/p&gt;
&lt;h2 id="报名通道"&gt;报名通道&lt;/h2&gt;
&lt;p&gt;2 月 10 日，「黑客松之春」正式启航。&lt;/p&gt;

&lt;p&gt;请进入我们的&lt;a href="https://campaign.gitcafe.com/hackspring2015-index/" rel="nofollow" target="_blank" title=""&gt;报名页面&lt;/a&gt;，选择你想要参加的黑客马拉松，进行报名，就可以自由的开始 hack 了！&lt;/p&gt;

&lt;p&gt;当你接下了战书，武装了自己，打起精神来踏上黑客之旅，也别忘了，无论结果如何，我们都希望你在这场盛宴中获得真正的快乐。&lt;/p&gt;

&lt;p&gt;还在犹豫什么，赶快报名吧～&lt;/p&gt;

&lt;p&gt;&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/380x380/65a5735554f8254b4d09edeab140eb3d/996c8f42ce1386c84f10b6b00f762cfe.jpg" title="" alt=""&gt;
&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/400x77/203ac39f58fddd86df22e03d3e666247/a52aef492551e5d2a529e1533bb2999c.png" title="" alt=""&gt;
&lt;img src="http://mmbiz.qpic.cn/mmbiz/SQzXM3j7YgcxCDCJYl1xEPVT9uTiaZP0hTaV6Quq0ibe3wITibkcHQG4VpygtrUaanjE6mAxrZvI8FygbKkmVnpVA/640?wxfrom=5" title="" alt=""&gt;
&lt;img src="https://trello-attachments.s3.amazonaws.com/54d98996cd53ebd7bc3058b6/300x180/7b8d965839352181872babe86428ba79/a9c14d91969134bb1c6d228e40ee0546.png" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;诚挚邀请～&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Tue, 10 Feb 2015 18:09:49 +0800</pubDate>
      <link>https://ruby-china.org/topics/24205</link>
      <guid>https://ruby-china.org/topics/24205</guid>
    </item>
    <item>
      <title>要你命三千——老代码中的那些坑</title>
      <description>&lt;p&gt;本文作者：Wang Hyde
代码仓库：
&lt;a href="https://gitcafe.com/callmewhy" rel="nofollow" target="_blank"&gt;https://gitcafe.com/callmewhy&lt;/a&gt;
博客地址：
&lt;a href="http://callmewhy.gitcafe.io" rel="nofollow" target="_blank"&gt;http://callmewhy.gitcafe.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;最近在给以前的老项目维护，说起来工作很简单，一个字：改 Bug。这看起来平淡无常的工作，实际上凶险无比，藏坑无数。时至今日，感觉整个人都得到了升华。在睡觉前抽空写篇博客，和各位分享一下踩坑经历，一起品味其中的种种酸苦辣（没甜）。&lt;/p&gt;

&lt;p&gt;为保证个码隐私，文中代码均为化名，还望谅解。如有雷同，纯属巧合（可以通过 &lt;code&gt;git blame&lt;/code&gt; 查看是谁写的）。&lt;/p&gt;
&lt;h2 id="第一回：变量命名没点数，有时写着还手误"&gt;第一回：变量命名没点数，有时写着还手误&lt;/h2&gt;
&lt;p&gt;如果要折磨一个强迫症，最好的方法就是用各种恶心的变量名恶心死他。&lt;/p&gt;

&lt;p&gt;什么？你说首字母要大写？    &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@property (nonatomic, assign) PERSONTYPE personType;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;什么？你说单词里面要小写？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;typedef enum tagPersonType{
  person_type = 1,
  group_type,
} PERSONTYPE;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;什么？你说要用英文单词命名？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- (void)uploadSeccess:(MessageEntity *)message;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;什么？你说类前面要加前缀避免冲突？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@interface PMWLogger : NSObject
...
@interface PMTool : NSObject
...
@interface MainControler : NSObject
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;什么？你说文件要按照目录存放？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; - Classes
   - MainControllers
     - MyController
     - Controllers
     - SettingControllers
     - ChatModel.h
     - ChatModel.m
     - SettingControllers (不是手误)
   - Chatting
   - SearchView.h
   - SearchView.m
   - Voice
   - AgentModels
- Public 
  - Common
  - PublicDef.h
  - PublicDef.m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;什么？听说 OC 可以用宏定义？&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#define STRHASSBUSTR(str,subStr) ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;各位看官，这，能忍？&lt;/p&gt;

&lt;p&gt;正所谓：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;命名拼写看心情，文件目录不分明。
随机掺杂宏定义，鸡不安也犬不宁。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第二回：界面全靠神奇数，保准看到就发怵"&gt;第二回：界面全靠神奇数，保准看到就发怵&lt;/h2&gt;
&lt;p&gt;前阵子在做 iPhone4 和 iPhone6 以及 iPhone6 Plus 的适配工作。&lt;/p&gt;

&lt;p&gt;由于历史原因没有用 AutoLayout，也由于历史原因老代码的布局全是用数字一个一个写死的。这就给适配带来了莫大的困难。&lt;/p&gt;

&lt;p&gt;随便拣点代码给大家欣赏欣赏：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UILabel *infoLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 241, 320, 28)];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;0 这种数字还好说，241 就完全让人摸不着头脑，至于 320 这个改成屏幕宽度倒也就还好，但是 28 这种神奇数字又是什么呢？&lt;/p&gt;

&lt;p&gt;这种代码就是冲着干死队友的不偿命的态度去的。虽然写起来容易，但是维护困难，可读性极差，尤其是有多个控件布局的时候，依赖关系不明显，如果调整布局需要挨个重新计算并设置值，维护起来的酸爽，谁用谁知道。&lt;/p&gt;

&lt;p&gt;要说神奇数字，集大成者莫过于此：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CGRect rect = CGRectMake(12.2+(page-1)*320+42.5*(i%7),((totalRows-1)%3)*55+2,42.5,42.5);
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;那天早上看到这代码差点就抱着键盘委屈的哭了出来。&lt;/p&gt;

&lt;p&gt;正所谓：
界面写法各不同，歪门邪道千万种。
有朝一日被辞了，你的代码我不懂。&lt;/p&gt;
&lt;h2 id="第三回：私有公有混一处，代理委托亦糊涂"&gt;第三回：私有公有混一处，代理委托亦糊涂&lt;/h2&gt;
&lt;p&gt;在聊天的时候有这样一个数据类：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@interface HBTalkData : NSObject
 {
   UIImage *_firstImage;
   NSArray *_imageArry;
   id _contents;
 }
 @property (nonatomic, assign) NSInteger messageId;
 @property (nonatomic, strong) id contents;
 @property (nonatomic, assign) NSTimeInterval timeInterval;
 @property (nonatomic) BOOL fromSelf;
 @property (nonatomic) BOOL isGroup;
 @property (nonatomic, assign) HBTalkDataStatus talkDataStatus;
 @property (nonatomic) HBTalkDataContentType contentType;
 @property (nonatomic, strong) PersonInfo *personInfo;
 @property (nonatomic, strong) UserInfo *cardUser;
 @property (nonatomic, assign) CallType callType;
 @property (nonatomic, strong) NSString *duartion;
 @property (nonatomic, strong) NSString *mPhoneNumber;
 @property (nonatomic, strong) NSString *imageList;
 @property (nonatomic, strong) NSString *msgDesc;
 @property (nonatomic, readonly) UIImage *firstImage;
 @property (nonatomic, readonly) NSArray *imageArry;
 @property (nonatomic, assign) float     cellHeight;
 @property (nonatomic, assign) CGSize    textSize;
 @property (nonatomic) NSTimeInterval voiceDuration;
 @property (nonatomic) CGFloat dataSize;
 @property (nonatomic) NSUInteger bubbleCount;
 @property (nonatomic, copy) NSString *chatUserName;
 @property (nonatomic, strong) MessageEntity *originalMessage;
 @property (nonatomic, strong) HBTalkDataRegisterInfo *registerInfo;    
 -(void)reset;
 -(NSString *)bubbleDescription;
 ...
 @end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;纤弱的头文件里塞满了各种属性定义和方法定义，仿佛可以听到头文件的不满和娇喘。&lt;/p&gt;

&lt;p&gt;给大家出个题：看下下面的内容，猜一下这个类的文件名是什么：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;... // 此处省略20行

@interface PersonInfo : NSObject
... // 此处省略20行
@property (nonatomic, assign)BOOL     isGrey;
@property (nonatomic, assign)BOOL     isBlack;
@property (nonatomic, assign)BOOL     isTop;
@property (nonatomic, assign)BOOL     isStar;

- (BOOL)isStranger;
- (BOOL)isIndividual;
- (BOOL)isDuDuSecretary;

@end

@interface UserInfo : PersonInfo
... // 此处再省20行
@property (nonatomic, assign)BOOL     mobileVerified;
@property (nonatomic, strong)NSString *countryCode;
@property (nonatomic, readonly)NSString *dialogName;
@end

@interface GroupInfo : PersonInfo
... // 此处又省20行
@property (nonatomic, strong)NSString *creater;
@property (nonatomic, assign)int      memberCount;
@property (nonatomic, strong)NSString *members;
@end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;嗯然后这个文件叫做 &lt;code&gt;UserInfo.h&lt;/code&gt; ，头文件将近 100 行。大兄弟，我读书少，你不要骗我。把三个类塞在一个文件里这种行为，除了难为队友，实在是没看出来有什么其他动机可言。&lt;/p&gt;

&lt;p&gt;正所谓：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;头文件里地方小，塞到一处并不好。
外部对象都知道，安全问题可不小。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第四回：消息通知满天飞，委托方法一大堆"&gt;第四回：消息通知满天飞，委托方法一大堆&lt;/h2&gt;
&lt;p&gt;我一直在想，到底是什么，让这个项目的开发人员对 &lt;code&gt;NSNotificationCenter&lt;/code&gt; 如此痴迷，痴迷的令人陶醉。&lt;/p&gt;

&lt;p&gt;在通过 Model 调用业务逻辑的时候，它这样发了一条命令：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// 喂，LOGIN_MODEL，帮我查下有没有更新
[LOGIN_MODEL versionCheckFromAbout:YES];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这个业务是用 GCD 开了新线程来做的，在后台检查有没有更新，如果有更新那么版本号后面会加个感叹号。那么问题来了：你咋告诉我你检查的结果是有更新还是没更新呐？难道要写 个委托？然后定义个方法？然后更新的时候指认委托？然后有了结果再告诉委托？听起来就很烦躁嘛那干脆就用通知好了：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (self.versionStatus != VersionStatusNormal) {
    [[NSNotificationCenter defaultCenter] postNotificationName:NOTIFY_HAS_NEW_VERSION object:nil];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后在需要做处理的类里面添加 &lt;code&gt;Observer&lt;/code&gt; 就可以了：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(myIconShouldChange) name:NOTIFY_HAS_NEW_VERSION object:nil];
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;哈哈哈哈搞定了。&lt;/p&gt;

&lt;p&gt;哈哈哈哈你个头啊！整个项目里类似于这种的通知就有十来个，这还是有宏定义的，好追杀一点。对于那些没有宏定义的，随手一写复制粘贴的，不知道还要填坑多少。&lt;/p&gt;

&lt;p&gt;通知虽好，但也不要贪杯啊。&lt;/p&gt;

&lt;p&gt;看起来轻松，只是 &lt;code&gt;post&lt;/code&gt; 了一下就搞定了，但是在 Debug 的时候有点麻烦。尤其是如果有多个 &lt;code&gt;Observer&lt;/code&gt; ，改动的时候牵一发而动全身。如果真的是有这样使用的必要倒也罢了，但是本来一个 &lt;code&gt;block&lt;/code&gt; 或者 &lt;code&gt;delegate&lt;/code&gt; 就能简单清晰的解决，现在却被搞得这么繁重，实在是没有必要。&lt;/p&gt;

&lt;p&gt;而且 &lt;code&gt;NSNotificationCenter&lt;/code&gt; 的代码基本是一种变相的复制粘贴，十分的不工整。这是个人恩怨了，撇开不提。&lt;/p&gt;

&lt;p&gt;&lt;code&gt;NSNotificationCenter&lt;/code&gt; 这种只是不痛不痒的小问题，仅仅是逻辑不够优雅，关系不够清晰罢了。但是如果委托使用不当那是恶心的不行。看下这个聊天页面：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@interface ChattingViewController () &amp;lt;UITableViewDataSource, UITableViewDelegate, UITextViewDelegate, ChattingActionsPanelDelegate, ChatModelDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, HBTalkTableViewCellDelegate, EGORefreshTableHeaderDelegate, XTImagePickerControllerDelegate, ChattingInputPanelDelegate, VoiceRecordingButtonTrashBinViewContainer, ChattingUserDetailPanelDelegate, VoiceRecordingButtonDelegate&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;这是一个真实的故事。整个类将近 3000 行，有 2000 多行是委托里定义的方法，你能信？&lt;/p&gt;

&lt;p&gt;在这三千行代码里漫步，万事都要小心。因为你不知道 &lt;code&gt;callIn&lt;/code&gt; 这种方法到底是定义的私有方法，还是在委托里定义的方法。&lt;code&gt;#pragma mark&lt;/code&gt; 自然也是看心情加的，说不定加错了你也不要当真。&lt;/p&gt;

&lt;p&gt;有时候委托都删了不见影子了，但是委托里的各种方法还留在以前的类里。&lt;/p&gt;

&lt;p&gt;没人敢动。&lt;/p&gt;

&lt;p&gt;How to play.&lt;/p&gt;

&lt;p&gt;正所谓：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;异步回调用通知，委托多的令人痴。
反正老子看不懂，不写代码光写诗。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第五回：第三方库无出处，随手改动无备注"&gt;第五回：第三方库无出处，随手改动无备注&lt;/h2&gt;
&lt;p&gt;相信做 iOS 的都知道 &lt;code&gt;AFNetworking&lt;/code&gt; 这个网络库，在我们的项目里 &lt;code&gt;AFNetworking&lt;/code&gt; 分两种，一个是别人家的 &lt;code&gt;AFNetworking&lt;/code&gt; ，一个是咱们的 &lt;code&gt;AFNetworking&lt;/code&gt;。对奏是这么任性。在一个 300 行的头文件里，在 99 行这样低调的位置里，静静的插上了自己的方法，还在上面认认真真的写上了准确的注释：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  /*扩展*/
-(void)setDDCImageWithURL:(NSURL *)url
   placeholderImage:(UIImage *)placeholderImage
     success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
     failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;扩展个头啊！你加在人家的头文件里你说你是扩展，谁信？&lt;/p&gt;

&lt;p&gt;这种改动遍地都是，特点是极其低调，难以察觉，甚至 &lt;code&gt;TTTAttributedLabel&lt;/code&gt; 这种 UI 库也不能避免：改了 &lt;code&gt;init&lt;/code&gt; 为了统一字体和颜色。。。&lt;/p&gt;

&lt;p&gt;你说这代码，谁敢改？&lt;/p&gt;

&lt;p&gt;我还曾经单纯的想给项目加上 &lt;code&gt;Cocoapods&lt;/code&gt; 更新一下第三方库，现在想想，Naive。等以后写到新的独立模块的时候再说吧。&lt;/p&gt;

&lt;p&gt;正所谓：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;项目勤用三方库，随意穿插改无数。
即使类库有更新，试问代码谁维护。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第六回：单个对象多职责，悲伤逆向流成河"&gt;第六回：单个对象多职责，悲伤逆向流成河&lt;/h2&gt;
&lt;p&gt;在聊天模块有这样一个类：&lt;code&gt;ChatModel&lt;/code&gt;，简直就是个多面手。&lt;/p&gt;

&lt;p&gt;上能和服务器聊天，上传聊天消息同步聊天记录：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- (void)reSendMessages;
- (void)receiveSecretaryMessage:(MessageEntity *)msgEntity;
- (void)deleteMessagesByUserInfo:(UserInfo *)user;
- (void)setAudioMessageBePlayed:(AudioMessageEntity *)audioMessage;
- (void)sendBubbleReplyWithCallMessage:(CallMessageEntity *)callMessage;
- (int)saveMessage:(MessageEntity *)message;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;下能做本地缓存管理，增删改查样样精通：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- (void)saveCacheMsg:(NSString *)msg UserMd5:(NSString *)md5;
- (NSString *)loadCacheMsgWithMd5:(NSString *)md5;
- (void)clearCacheMsgWithMd5:(NSString *)md5;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;至于什么弹窗提醒，上传进度，完成提示，亦是轻松拿下。&lt;/p&gt;

&lt;p&gt;以至于你改着改着不知不觉都会走到这里，因为它处理了太多太多的业务逻辑，每次 DEBUG 追杀断点回到这里，都像是一场久别重逢时的相遇，似曾相识。&lt;/p&gt;

&lt;p&gt;正所谓：&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;一人做事一人当，切忌都往类里装。
开发人员干的爽，维护人员很受伤。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 id="第七回：产品突增新功能，一行代码变大神"&gt;第七回：产品突增新功能，一行代码变大神&lt;/h2&gt;
&lt;p&gt;有时候需求来也匆匆去也匆匆，让人猝不及防。比如一个简单的登录逻辑：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@interface LoginModel ()
@property (nonatomic, strong)NSString *tcpURL;
@property (nonatomic, strong)UserInfo *offlineCallUser;
@property (nonatomic, assign)VersionStatus versionStatus;
@end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;突然发现需要在版本更新的时候多个 API 检查，简单，加个 &lt;code&gt;BOOL&lt;/code&gt; ，需要的时候设置成 YES 就行：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@property (nonatomic, assign)BOOL isShowVersionUpdate;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;但是这个功能在 &lt;code&gt;About&lt;/code&gt; 页面又有点改动，简单，再加个 BOOL 就行：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@property (nonatomic, assign)BOOL checkVersionFromAbout;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;然后如果已经显示了注册页面又要少一些请求，行，那再加个 &lt;code&gt;BOOL&lt;/code&gt; 值： &lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@property (nonatomic, assign)BOOL isRegisterShow;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;得了，这代码只有你能懂了：&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@interface LoginModel ()
@property (nonatomic, strong)NSString *tcpURL;
@property (nonatomic, strong)UserInfo *offlineCallUser;
@property (nonatomic, assign)VersionStatus versionStatus;
@property (nonatomic, assign)BOOL isShowVersionUpdate;
@property (nonatomic, assign)BOOL checkVersionFromAbout;
@property (nonatomic, assign)BOOL isRegisterShow;
@end
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;想象一下实现方法里各种对 &lt;code&gt;BOOL&lt;/code&gt; 标记的特殊处理，想象一下 N 个 &lt;code&gt;if&lt;/code&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;/blockquote&gt;
&lt;h2 id="第八回：来了任务有委托，多写一行都嫌多"&gt;第八回：来了任务有委托，多写一行都嫌多&lt;/h2&gt;
&lt;p&gt;所谓悲哀就是，当程序员发现一个 &lt;code&gt;delegate&lt;/code&gt; 就能访问上级的对象，于是便把各种需要通知上级的事情都放在了委托方法里，尽管这些事情与委托本身无关，但是为了实现功能已经不在意这些所谓的设计与美观。&lt;/p&gt;

&lt;p&gt;一个简单的 &lt;code&gt;@optional&lt;/code&gt;，甚至可以用同一个 &lt;code&gt;@protocol&lt;/code&gt; 获取到各种不同的上级对象，只需要每次调用的时候加个 &lt;code&gt;respondsToSelector&lt;/code&gt; 就行了。写上十几个可选方法，取一个通俗的委托名，比如 &lt;code&gt;MyDelegate&lt;/code&gt; ，然后如果你持有了我但是我还想调用你的方法，so easy，把你的方法扔到 &lt;code&gt;MyDelegate&lt;/code&gt; 即可。&lt;/p&gt;

&lt;p&gt;此时的代码便已经不再是一件艺术品，而只是一个平凡普通、毫无生机的花瓶了。&lt;/p&gt;
&lt;h2 id="小结："&gt;小结：&lt;/h2&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;本文作者：Wang Hyde
代码仓库：
&lt;a href="https://gitcafe.com/callmewhy" rel="nofollow" target="_blank"&gt;https://gitcafe.com/callmewhy&lt;/a&gt;
博客地址：
&lt;a href="http://callmewhy.gitcafe.io" rel="nofollow" target="_blank"&gt;http://callmewhy.gitcafe.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;原文地址：&lt;a href="http://callmewhy.gitcafe.io/2015/01/20/wtf-in-old-code/" rel="nofollow" target="_blank"&gt;http://callmewhy.gitcafe.io/2015/01/20/wtf-in-old-code/&lt;/a&gt;&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Fri, 23 Jan 2015 15:43:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/23904</link>
      <guid>https://ruby-china.org/topics/23904</guid>
    </item>
    <item>
      <title>[动态] GitCafe 移除 SSL 中的 RC4 加密算法</title>
      <description>&lt;h2 id="GitCafe SSL 安全提升"&gt;GitCafe SSL 安全提升&lt;/h2&gt;
&lt;p&gt;为了保证用户在 GitCafe 的数据安全，我们将不再支持 SSL 中的 RC4 协议。移除 RC4 支持只会影响 Windows XP 上的 IE 6 等陈旧的浏览器访问 GitCafe.com，不会影响现代浏览器，也不会影响 Git repo 访问。Firefox 的特定新版本不会再看到关于 RC4 的警告。我们强烈推荐 Windows XP 用户升级到更高版本的系统或者使用 Chrome 或 Firefox 来访问 GitCafe。&lt;/p&gt;
&lt;h2 id="关于RC4"&gt;关于 RC4&lt;/h2&gt;&lt;h3 id="RC4的起源"&gt;RC4 的起源&lt;/h3&gt;
&lt;p&gt;在 2011 年的时候，各大主流浏览器都支持 TLS 1.0 协议并且广泛的采用了 AES-CBC 的加密方式。9 月份 Thai Duong 和 Juliano Rizzo 发现了一个称之为
&lt;a href="https://en.wikipedia.org/wiki/Transport_Layer_Security#BEAST_attack" rel="nofollow" target="_blank" title=""&gt;BEAST attack&lt;/a&gt; 的漏洞，这个漏洞专门针对 TLS ,当一个用户采用了 CBC-based 加密方式后，攻击者可以让用户跳转到一个恶意的网站。当时采用的一个解决办法是用了唯一一个支持 non-CBC 并且好用的 RC4 协议。&lt;/p&gt;
&lt;h3 id="今天的RC4"&gt;今天的 RC4&lt;/h3&gt;
&lt;p&gt;今天包括 Firefox 和 Chrome 在内的主流浏览器都已经不再像当年那样依靠系统层的 TLS 加密方式了，大多主流浏览器都已经支持 TLS 1.2 协议，对 BEAST 攻击免疫且还没有发现任何已知的可能的威胁。&lt;/p&gt;

&lt;p&gt;RC4 当初提出的目的是解决 BEAST 攻击，但现在已经越来越显得有些鸡肋了。而且 RC4 算法采用的用 xor 的一种对称&lt;a href="http://zh.wikipedia.org/wiki/%E6%B5%81%E5%8A%A0%E5%AF%86#WEP" rel="nofollow" target="_blank" title=""&gt;流加密&lt;/a&gt;。这种加密方式在弱密钥的情况下有可能被破解（一个失败的例子就是 WEP 网络传输协议）。所以采用 RC4 加密方式可能会危害你的数据安全。&lt;/p&gt;
&lt;h3 id="小知识"&gt;小知识&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;h5 id="异或密码"&gt;异或密码&lt;/h5&gt;
&lt;p&gt;异或加密时基于逻辑运算中的异或操作：&lt;/p&gt;

&lt;p&gt;A^0 = A&lt;/p&gt;

&lt;p&gt;A^A = 0&lt;/p&gt;

&lt;p&gt;(A^B)^C = A^(B^C)&lt;/p&gt;

&lt;p&gt;(B^A)^A = B^0 = B&lt;/p&gt;

&lt;p&gt;** Talk is cheap , show me the code **&lt;/p&gt;

&lt;p&gt;data,key=1,2&lt;/p&gt;

&lt;p&gt;data=data^key # data 的值等于 3 
    data=data^key # data 的值等于 1  &lt;/p&gt;

&lt;p&gt;采用异或的流加密是一种对称加密，客户端和服务器之间使用同一个密钥来加密解密。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h5 id="流加密"&gt;&lt;a href="http://zh.wikipedia.org/wiki/%E6%B5%81%E5%8A%A0%E5%AF%86#.E6.B5.81.E5.8A.A0.E5.AF.86.E6.94.BB.E5.87.BB" rel="nofollow" target="_blank" title=""&gt;流加密&lt;/a&gt;&lt;/h5&gt;
&lt;p&gt;流加密时对称加密方式，加密和解密双方使用相同的伪随机加密数据流作为密钥，明文数据顺次加密并得到秘文。实践中通常是对一个位做异或操作。这种做法在密钥太弱或者其它一些错误操作的情况下会被破解。
流加密一个典型的例子就是 WEP 加密无线网络，我们经常通过抓取握手包来破解密码。&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;h4 id=" RC4 加密算法"&gt;&lt;a href="http://zh.wikipedia.org/wiki/RC4" rel="nofollow" target="_blank" title=""&gt; RC4 加密算法&lt;/a&gt;&lt;/h4&gt;
&lt;p&gt;RC4 加密算法是一种密钥长度可变的流加密算法，由伪随机数生成器和异或运算组成。&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;</description>
      <author>gitcafe</author>
      <pubDate>Sun, 18 Jan 2015 20:46:38 +0800</pubDate>
      <link>https://ruby-china.org/topics/23800</link>
      <guid>https://ruby-china.org/topics/23800</guid>
    </item>
    <item>
      <title>[前端知识] Flexbox，更优雅的布局</title>
      <description>&lt;blockquote&gt;
&lt;p&gt;上个周末，在北航新主楼会议厅里举行了首届 CSS 开发者大会，GitCafe 的前端工程师 Jaych Su 在会上做了演讲，与大家分享了一款更优雅的前端布局——Flexbox。现在，我们就邀请他来为大家讲一下 Flexbox 的相关知识吧～&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/1eb6590f92d562e6e0acee03bcd8a840.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;在设计的眼中，排版的操作是一件很简单的事情，靠左、置中、靠右，我只要点一下，所有元素，就会乖乖的到指定的位置。&lt;/p&gt;

&lt;p&gt;但到了前端在排版的实现上，就不是这样了。&lt;/p&gt;

&lt;p&gt;我们常常得用一堆其实本来不是这样用的属性来做 hack，比如说用 line-height 来做垂直置中，这样做的确能达到效果，但是在语意上就有点不顺，拿刚刚提到的 line-height 来说，这本来是用来当作段落中的行距，但却因为这个属性能扩展文字的上下空间，结果也被拿来做垂直置中。那有没有一个方法能用来更好地实现 Web 布局呢？&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/c554877169ef401cf67968bbccdafb23.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这是 Google 的 Angular。他们几个月前做了一套 UI 来实现在 Angular 上的 Material Design。这套框架用来实现布局的方式，不是以往的 float，而是用了 Flexbox。&lt;/p&gt;

&lt;p&gt;Flexbox 是什么呢？就 W3C 官方给到的解释是，这是设计来实现更复杂的版面布局。那我自己对他的定义是，Flexbox 从本质上就是一个 Box-model 的延伸，我们都知道 Box-model 定义了一个元素的盒模型，然而 Flexbox 更进一步的去规范了这些盒模型之间彼此的相对关系。而不需要去用一些很 cheat 的做法，去 hack 一些本来其实不应该用来做版面布局的属性。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/fd95d7523b00943cea02a1205bc0849a.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;身为一个喜欢去玩一些新东西的前端，应该说每个跟互联网有所接触的人，都需要去学新东西。&lt;/p&gt;

&lt;p&gt;这是我碰到新东西的时候，一定会问自己的三个问题：&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;接下来就跟大家分享一下，当初看到 Flexbox 的我问了自己这个三个问题之后，到目前为止我找到的答案。&lt;/p&gt;
&lt;h3 id="功能"&gt;功能&lt;/h3&gt;
&lt;p&gt;举一个例子，所有前端都会有的痛点，置中，我们以前是怎么实现的？
&lt;img src="https://gitcafe-image.b0.upaiyun.com/a651b17876c21368478630abb2ad3e05.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;最常看到就是用绝对定位，然后把 top 和 left 偏移 五零%，在用 margin 偏移回去。但是这只适用在已经固定大小的元素。
&lt;img src="https://gitcafe-image.b0.upaiyun.com/4af7ae21330b5cfb9de9536f35049666.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;最近几年常看到的做法是这样，在想置中的元素之前，加上一个元素，不想管太旧的 IE 的话，甚至伪元素也可以。在容器用 text-align，然后把底下的两个元素弄成 inline 的形式，在用 vertical-align。他的好处就是，即使底下的元素会随内容改变大小，但不管怎么改变，就是可以始终维持垂直和水平置中。&lt;/p&gt;

&lt;p&gt;当然啦，还有很多置中的方法，就不一一介绍了，我们来看一下用 flex 的话怎么置中。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/505cb52cde7ebf1470a50f00b6127989.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;用 Flex 来做置中的话，你可以很从容地做到置中，不用一堆即使本来不是这样用的属性。我只要先指定容器为一个 Flex 容器，然后 justify-content 让他水平方向置中，再 align-items 让他垂直方向置中。我可以很简单很优雅的就做到置中。&lt;/p&gt;

&lt;p&gt;那也许你会说，欸？既然一个可以的话，那我再多放几个可不可以？其实可以的。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/46dc6bec304c50cfa94c6230000b75cd.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;假设我们现在容器底下有三个元素，喔，这裡就要提到 Flexbox 另外一个屌炸天的功能。&lt;/p&gt;

&lt;p&gt;假设一个元素是四零%，另一个是一二%，那在一个 Flex 容器中，只要你有设定 flex-grow 这项属性的话，他的第三个元素就会自适应宽度，填满剩下容器的空白。而在多个元素的状态之下，我们仍然能很轻易的就置中。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/5a67fb3809c9d84d7df7cb138a2c8d85.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;刚刚我们提到过，flexbox 是用来规范盒模型之间的相对关系，从这裡你就可以看到。现在我将 justify-content 设成 space-around，元素就会变成已分散对齐的方式去分佈在 flex 容器中。&lt;/p&gt;

&lt;p&gt;关于元素的分步，我们再来看几个例子。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/c60c746946627d677221af6c6361c43a.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这是一个我最近看到的网站。我们可以看到他底下有一个 Slider，这有个问题，而且也常常是前端在版面上的一个痛点，我们想让所有的子元素能够等高。在以前我们很难只用 CSS 去做到这样。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/958034c6964caf46c70b89db28439586.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;而 flexbox 可以很轻易地只用 CSS 做到这点。只需要在 flex 容器加上 align-items 就好。就能实现容器底下的所有元素，与最高的那个元素等高。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/9d7487f3005891993185e8fe7f22f232.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;即使我在本来最高的那个元素多加一些内容，其他的元素也一定会维持等高。&lt;/p&gt;
&lt;h3 id="兼容"&gt;兼容&lt;/h3&gt;
&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/10ea02861a905ff205b796c23df2e732.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;Flex 最初被 W3C 于 09 年制定出来，随后就被大量的讨论。拿指定元素为一个 flex 容器来讲，第一个版本裡是 display:box，第二个版本是 display: flexbox，第三个版本是 display: flex。实在太复杂，还好现在在开源的世界里已经有大大把这三个版本的 flex 做成一些 mixin，使用的时候，你只要 include 进来就可以。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/10ada5f7ca45c3edb216c7474791cdfb.jpg" title="" alt=""&gt;
&lt;img src="https://gitcafe-image.b0.upaiyun.com/8bc9422464df70d77a285c44b3a9f458.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;就跟 IE 的使用体验一样，所有的好东西跟 IE 基本都沾不上边，所以如果你需要考虑 IE 用户，那请慎入。所以有人说 IE 的功能只剩下用来下载 Chrome 和 Firefox。&lt;/p&gt;
&lt;h3 id="原理"&gt;原理&lt;/h3&gt;
&lt;p&gt;如果你到网上搜 flex，大多都会著墨在 他的对齐、他的控制 DOM 顺序是如何如何好用。但今天我们想聊一聊更深一点的东西，flex item 宽度的计算，大多数情况下，我们只在意显示的比例，这也是宽度的计算比较少被讨论的原因，但如果你想要更精确的控制 item 的显示宽度，其实你是需要去了解，在一个 flex 容器当中，item 的宽度是如何被计算出来的。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/f146242e926b66e3c4086fb9d2e0cf07.jpg" title="" alt=""&gt;
&lt;img src="https://gitcafe-image.b0.upaiyun.com/8cc7cc87598450c88a41ef9363fc914e.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;当我们把一个容器指定为 flex 容器时，它裡面的 item 其实是有著这样的设定：flex: 0 1 auto&lt;/p&gt;

&lt;p&gt;这三个数字其实分别代表：flex-grow、flex-shrink、flex-basis，这三个属性可以说是 flex 之所以智能的原因。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/fce68f2ddd8913264844f028b95c3eb0.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;我们先来聊聊 flex-basis 好了，这个属性在 flex 容器为横向的时候，其实就是宽度，当我们把 item 指定成 flex: 0 0 480px 时，其实就是把它的宽度设定成 480px。但是这样并不能表现出 flex 有什么特别的地方啊？为什麽要重複设定宽度？&lt;/p&gt;

&lt;p&gt;这时候就要讲到另外两个属性：flex-grow、flex-shrink&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/6ede88a1cf23b986dc12ee2d0f2bda9d.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;这两个属性其实是双胞胎，grow 表示在 item 总宽度比容器小的时候，为了让 item 填满容器，每个 item 增加的宽度。假设有三个 basis 为 100px 的 item。我们从左到右给予 grow 值分别为 3、2、1，那么当 flex 作用之后，最左边的 item 实际增加的宽度是多少？从图中可以算到增加的宽度是 90px，于是最后最左边 item 的宽度是 190px。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/e59fb75de66ba49cbb0ed6f1abb59e8f.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;我们刚才提到 grow 跟 shrink 其实是双胞胎，其实他们真的很像，shrink 表示在 item 总宽度比容器大的时候，为了让 item 填满容器，每个 item 减少的宽度。但是计算的公式却是不一样的。为什么？因为当你在加的时候无所谓，但是在减的时候，如果只计算赋予的 shrink 值，那么很有可能最后减少的宽度比 basis 大，于是 item 的宽度就变成负值。那我们该怎么修正？把 basis 当成参数计算进去，这样就能保证减少的宽度永远小于 basis。所以我们可以得到修正后的公式，一样以最左边为例子，最后计算出来减少 60px，于是 item 就变成 140px。以上脑子不好使，没关系，实际上最常用的只是 flex: 1。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/ba95e447ee4950b8eedf7ab2a2239bae.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;p&gt;讲到这里，你刚刚讲的好像这东西很厉害的样子，那你有没有一个最快最简单粗暴的方式去说 Flexbox 真的是个好东西？&lt;/p&gt;

&lt;p&gt;嗯⋯⋯有点难，不过我想应该可以。&lt;/p&gt;

&lt;p&gt;&lt;img src="https://gitcafe-image.b0.upaiyun.com/ff0b86a564279b495a0dbeeb4e26dadc.jpg" title="" alt=""&gt;&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Thu, 15 Jan 2015 23:59:04 +0800</pubDate>
      <link>https://ruby-china.org/topics/23767</link>
      <guid>https://ruby-china.org/topics/23767</guid>
    </item>
    <item>
      <title>[技术分享] 关于 grep，一个有 40 年历史的 Unix 命令</title>
      <description>&lt;p&gt;&lt;img src="https://l.ruby-china.com/photo/2015/14cc9f6e36e5a61da89d77c89e46d168.jpg" title="" alt=""&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"在我公开 grep 这个命令之前的很长一段时间里它都是我的私有命令。"&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Ken Thompson&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;h2 id="关于 grep，一个有 40 年历史的 Unix 命令"&gt;关于 grep，一个有 40 年历史的 Unix 命令&lt;/h2&gt;
&lt;p&gt;grep 是一个在 Unix 上的命令行工具（大多数 Unix 工具都是在命令行里的），它通过给定的模式来搜索一个输入文件，并输出匹配这些模式的那些文本。如果你正在读这篇文章，你大概对它并不陌生。&lt;/p&gt;

&lt;p&gt;grep 是 Ken Thompson 写的，他也是 Unix 的创造者。grep 最先出现在 Unix v4 中，和今天的 grep 相比少了一些功能。&lt;/p&gt;

&lt;p&gt;这是 Unix v6 中的 grep 的 man 信息。&lt;/p&gt;

&lt;p&gt;NAME
    grep - search a file for a pattern&lt;/p&gt;

&lt;p&gt;SYNOPSIS
    grep [ -v ] [ -b ] [ -c ] [ -n ] exression [ file ] ...&lt;/p&gt;

&lt;p&gt;DESCRIPTION
    Grep searches the input files (standard input default) for lines matching the regular expression. Normally, each line found is copied to the standard output. If the -v flag is used, only a count of matching lines is printed. If the  -c flag is used, only a count of matching lines is printed. If the -n flag is used, each line is preceded its relative line number in file. If the -b flag is used, each line is preceded by the block number on which it was found. This is sometimes useful in locating disk block numbers by context.&lt;/p&gt;

&lt;p&gt;In all cases the file name is shown if there is more than one input file.&lt;/p&gt;

&lt;p&gt;For a complete description of the regular expression, see ed (I). Care should be taken when using the characters $ * [^ | () and \ in the regular expression as they are also meaningful to the Shell. It is generally necessary to enclose the entire expression argument in quotes.&lt;/p&gt;

&lt;p&gt;SEE ALSO
    ed (I),sh (I)&lt;/p&gt;

&lt;p&gt;BUGS
    Liners are limited to 256 characters;longer lines are truncated&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;错误的生日&lt;/strong&gt;
可能因为在 Unixv4 中 grep 的 man 手册上写有日期 3/3/1973，许多因特网上的文章都假定这是 grep 被创造的时间，包括维基百科上 grep 的条目（直到我编辑修改之前）。&lt;/p&gt;

&lt;p&gt;Unixv4 上 grep 的 man 手册：&lt;/p&gt;

&lt;p&gt;.th GREP I 3/3/73
    .sh NAME
    grep *- search a file for a pattern&lt;/p&gt;

&lt;p&gt;由于缺少维基百科上关于创造日期的贡献和我并没有通过 Google 搜索到 Unix v4 的 man 手册，我抱着很小的希望转向了 Reddit 并且给 Ken Thompson 写了邮件。在 Reddit 上，一些人提供了 Unix v4 man 手册的链接。并且在第二天我收到了以下这封回信：&lt;/p&gt;

&lt;p&gt;From: Ken Thompson
    ken@google.com
    Date: Sun,Jan 12,2014 at 8:26PM
    Subject: Re: the birthday of grep
    To: benjamin
    benjaminrtz@gmail.com&lt;/p&gt;

&lt;p&gt;I don‘t remember what the date in .th macro means. It probably is the last modified date of the man page,not the command. I never recall that we ever noted when a command was created. Normally,we would only be able to say something like "it first appeared in version X of the manual.&lt;/p&gt;

&lt;p&gt;Even after saying that,we were very careful not to put junk into the utilities directory.Grep was a private command of mine for quite a while before i made it public.&lt;/p&gt;

&lt;p&gt;Thats the long answer.the short answer is "sometime before the 4th edition." &lt;/p&gt;

&lt;p&gt;ken&lt;/p&gt;

&lt;p&gt;On Sat ,Jan 11,2014 at 1:14PM,benjamin benjaminrtz@gmail.com
    wrote:
    Ken,&lt;/p&gt;

&lt;p&gt;Can you please confirm the birthday of grep?&lt;/p&gt;

&lt;p&gt;Grep was created by Ken Thompson as a standalone application adapted from the regular expression parser he had written for ed(which he also created).[3]In ed,the command g/re/p would print all lines matching a previously defined pattern.[4][5]Grep's official creation date is given as March 3,1973,in the Manual for Unix Version 4.[citation needed]&lt;a href="http://en.wikipedia.org/wiki/Grep" rel="nofollow" target="_blank"&gt;http://en.wikipedia.org/wiki/Grep&lt;/a&gt;
    -
    benjamin rualthanzauva&lt;/p&gt;

&lt;p&gt;我欣喜若狂的跑向我的妻子并向她展示邮件，尽管她几乎不可能明白这种兴奋。感谢 Ken 和 /r/linux.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;grep 的发明和背后的含义&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;一个叫 McIlroy 的人声称 grep 是为他发明的。在一个轻笔记上写着，我不是很确定。&lt;/p&gt;

&lt;p&gt;“一个下午我问 Ken Thompson 他是否可以把正则表达式从编辑器中抽离出来并且做成一个简单易用的程序。他说可以。第二天早上我在邮件里发现了一个 note 并且附带一个叫做 grep 的程序。它像一个小咒语。当我询问这个有趣的名字有什么含义，Ken 回答说那很明显。它代表着它模拟的编辑功能，g/re/p(global regular expression print)”&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.columbia.edu/~rh120/ch001j.c11" rel="nofollow" target="_blank" title=""&gt;Chapter 9,On the Early History and Impact of Unix Tools to Build the Tools for a New Millenium&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;grep 名字的起源也是被 Dennis MacAlistair Ritchie（1941 年 9 月 9 日－2011 年 10 月 12 日）确认的，他是 C 语言之父。如果你曾经记得的话，Dennis 是在 Jobs 去世后一周也离开了人世，但很少有人知道他。&lt;/p&gt;

&lt;p&gt;It has been alleged that the source is from the title of a paper "A General Regular Expression Parser",but dmr confirms the g/re/p etymology ---ESR&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.catb.org/~esr/jargon/html/G/grep.html" rel="nofollow" target="_blank" title=""&gt;The Jargon File&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;我从没有使用过 ed，它是 Ken Thompson 写的一个行编辑器，除了尝试这个功能：&lt;/p&gt;

&lt;p&gt;$ed /etc/passwd
      699
      g/bash/p
      root&lt;img title=":x:" alt="🇽" src="https://twemoji.ruby-china.com/2/svg/1f1fd.svg" class="twemoji"&gt;0:0:root:/root:/bin/bash
      brm&lt;img title=":x:" alt="🇽" src="https://twemoji.ruby-china.com/2/svg/1f1fd.svg" class="twemoji"&gt;1000&lt;img title=":100:" alt="💯" src="https://twemoji.ruby-china.com/2/svg/1f4af.svg" class="twemoji"&gt;:/home/brm:/bin/bash
      git&lt;img title=":x:" alt="🇽" src="https://twemoji.ruby-china.com/2/svg/1f1fd.svg" class="twemoji"&gt;619:619:git daemon user:/:/bin/bash
    $&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;fgrep,egrep&lt;/strong&gt;
fgrep 和 egrep 最初是作为独立的程序存在，因为他们是另外一些作者写的命令。因为历史原因，grep 和 egrep 发展的非常快。他们最终被合并进了同一个命令。今天 fgrep 和 egrep 为了能使遗留的脚本能正常运行所以有指向。今天正确的使用方法是 grep -F 和 grep -E。 -E 和 －F 选项是针对 POSIX 的。POSIX 定义了一套标准来兼容 Unix 和其他操作系统。&lt;/p&gt;

&lt;p&gt;Al Aho 也是一个贝尔实验室的研究员并且是 AWK 的联合作者，他在 1975 年的一个周末写了 egrep 和 fgrep。&lt;/p&gt;

&lt;p&gt;在一开始 Ken Thompson 写的 grep 这个搜索工具时，它从文本中选择并且打印出和模式匹配的文字。在 1975 年，就在第 6 版 Unix 发布的时候，AlAho 决定把理论应用于实际，并且实现了完整的正则表达式（包括变化和分组这些当年 grep 中没有的特点），他也在周末写了 egrep。Fgrep 也是在那个周末写的，用来处理多文本匹配。Egrep 在单个字符上的搜索功能比 grep 快 2 倍但在复杂文本上却要慢。（主要花费了大量时间在建立状态机用来识别模式。）&lt;/p&gt;

&lt;p&gt;从那之后，每一个工具都不定期的提升性能，大部分的像 grep 作者之间的 acfriendly rivalry（Thompson，和之后的 McMahon）和 egrep（Aho）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cs.tufts.edu/~nr/cs257/archive/andrew-hume/" rel="nofollow" target="_blank" title=""&gt;Grep Wars:The Strategic Search Initiative,Andrew Hume,1987&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;egrep 和 fgrep 在 Unix v8 的 grep 的 man 手册中。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GNU grep&lt;/strong&gt;
如果你在使用 Linux，那你正在使用 GNU grep。除非你自己安装了其他 grep。在 ESXi 终端中，你有一个受限制的 grep 版本。在 Mac 上，那是 BSD grep。你可以通过 grep －V 来查看自己使用的是什么版本。其他平台上也都是自己的 grep 版本。我建议你可以自己编译 GNU grep。&lt;/p&gt;

&lt;p&gt;GNU grep 是 Mike Haerkal 写的。版本一试在 1988 年发出。但是它是在 1987 年 Jan 在 GNU’s Bulletin 中的文章“The GNU'ls','grep','make' and 'ld' are in regular use”里作为第二条发出的。&lt;/p&gt;

&lt;p&gt;我问过 Mike 和 RMS 但是他们都不记得细节了。Mike 说 1988 年的夏天但是不记得具体的日期了，可能是在 6 月后期和 7 月前期。RMS 答复说
fgrep 和 egrep 最初是作为独立的程序存在，因为他们是另外一些作者写的命令。因为历史原因，grep 和 egrep 发展的非常快。他们最终被合并进了同一个命令。今天 fgrep 和 egrep 为了能使遗留的脚本能正常运行所以有指向。今天正确的使用方法是 grep -F 和 grep -E。 -E 和 －F 选项是针对 POSIX 的。POSIX 定义了一套标准来兼容 Unix 和其他操作系统。&lt;/p&gt;

&lt;p&gt;Al Aho 也是一个贝尔实验室的研究员并且是 AWK 的联合作者，他在 1975 年的一个周末写了 egrep 和 fgrep。&lt;/p&gt;

&lt;p&gt;在一开始 Ken Thompson 写的 grep 这个搜索工具时，它从文本中选择并且打印出和模式匹配的文字。在 1975 年，就在第 6 版 Unix 发布的时候，AlAho 决定把理论应用于实际，并且实现了完整的正则表达式（包括变化和分组这些当年 grep 中没有的特点），他也在周末写了 egrep。Fgrep 也是在那个周末写的，用来处理多文本匹配。Egrep 在单个字符上的搜索功能比 grep 快 2 倍但在复杂文本上却要慢。（主要花费了大量时间在建立状态机用来识别模式。）&lt;/p&gt;

&lt;p&gt;从那之后，每一个工具都不定期的提升性能，大部分的像 grep 作者之间的 acfriendly rivalry（Thompson，和之后的 McMahon）和 egrep（Aho）&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cs.tufts.edu/~nr/cs257/archive/andrew-hume/" rel="nofollow" target="_blank" title=""&gt;Grep Wars:The Strategic Search Initiative,Andrew Hume,1987&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;egrep 和 fgrep 在 Unix v8 的 grep 的 man 手册中。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GNU grep&lt;/strong&gt;
如果你在使用 Linux，那你正在使用 GNU grep。除非你自己安装了其他 grep。在 ESXi 终端中，你有一个受限制的 grep 版本。在 Mac 上，那是 BSD grep。你可以通过 grep －V 来查看自己使用的是什么版本。其他平台上也都是自己的 grep 版本。我建议你可以自己编译 GNU grep。&lt;/p&gt;

&lt;p&gt;GNU grep 是 Mike Haerkal 写的。版本一试在 1988 年发出。但是它是在 1987 年 Jan 在 GNU’s Bulletin 中的文章“The GNU'ls','grep','make' and 'ld' are in regular use”里作为第二条发出的。&lt;/p&gt;

&lt;p&gt;我问过 Mike 和 RMS 但是他们都不记得细节了。Mike 说 1988 年的夏天但是不记得具体的日期了，可能是在 6 月后期和 7 月前期。RMS 答复说&lt;/p&gt;

&lt;p&gt;I don't remember that sort of detail after 27 years. If we said it in the bulletin ,it must be true.&lt;/p&gt;

&lt;p&gt;可能 GNU grep 在 Mike 拿到之前已经存在了。Mike Haerkal 也是 AMD－V 的合作者，AMD 开发的 x86 CPU 的虚拟化扩展技术。&lt;/p&gt;

&lt;p&gt;如果你对 grep 的历史有兴趣并愿意分享，我会很乐意并且加进这篇文章。&lt;/p&gt;

&lt;p&gt;感谢你的阅读。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;本文由 GitCafe 翻译，原文作者为 Benjamin Rualthanzauva&lt;/strong&gt;，&lt;a href="https://medium.com/@rualthanzauva/grep-was-a-private-command-of-mine-for-quite-a-while-before-i-made-it-public-ken-thompson-a40e24a5ef48" rel="nofollow" target="_blank" title=""&gt;原文连接&lt;/a&gt;&lt;/p&gt;</description>
      <author>gitcafe</author>
      <pubDate>Tue, 13 Jan 2015 14:52:50 +0800</pubDate>
      <link>https://ruby-china.org/topics/23707</link>
      <guid>https://ruby-china.org/topics/23707</guid>
    </item>
  </channel>
</rss>
