一棵波菜 | yikebocai 2017-01-02T12:29:12+08:00 yikebocai@gmail.com 如果利用YouTube学习英语 2017-01-02T00:00:00+08:00 yikebocai http://xinbo.me/2017/01/how-to-use-youtube-to-sudty-english 我从2016年4月开始重新鼓起勇气学习英语,尤其是听力,一开始我是从喜马拉雅FM上下载了很多英文演讲,尤其是TED的演讲,每天利用上下班的两个小时来听,但是里面的内容难度确实比较高,听了半年效果提升并不明显。后来我在在行上约到一位在海外生活多年,现在在浙江传媒学院英语播音专业任教的ALAN老师,他告诉了我另外一种方法,应该尝试听更加鲜活的Talkshow或Interview节目,这些内容更接近口语和日常化,因此聊完之后我就开始找这方面的资料。

首先想到的就是Itunes了,但是稍微看了一下,里面的内容并没有特别适合的,更多的英语节目是国内制作的,不是原汁原味的英语。之后就想到了YouTube,这个世界上最大的视频网站,上面的各种资料无所不有,并且质量非常高,只不过在国内被墙了。如果想看也难不倒,只不过需要稍微花点代价而已,我是买的轻云的服务,每月25块20G的流量足够用了,并且使用非常方便对日常上网完全透明。

在上面搜索Talkshow或Interview,可以找到很多相关的节目,但是有些不是特别适合,经过不断寻找,发现了一档访谈节目非常不错叫PandoMonthly,里面访谈的对象都是硅谷科技和投资界的大佬,比如科技界的Elon Musk、Reid Hoffman,投资界的John Doerr、Peter Thiel、Marc Andreessen等,即使不学英语,听听这些业界最顶尖精英的访谈也是很有收获的。还有号称脱口秀节目女王Operah Winfrey的节目也不错,里面访谈了非常多政要、娱乐明星等。

不过这些都是视频类的节目,不太方便放到手机里随身听,所以我就想把这些视频转成音频导入到我的手机里,在上下班路上听,但好像没有特别方便的办法。后来我发现有些工具可以直接录制音频节目,经过4、5款收费或免费软件的试用,找到了一个非常不错的工具叫Apowersoft Audio Recorder for Mac,录制的音频内容声音非常清晰,并且当中间声音有中断时还可以自动暂停,也可以对音频内容进行简单的剪辑。将这些音频录制下来之后,就修改好它的名字,直接导入我的iPhone上并不是很方便,所以我将它上传到喜马拉雅FM上面,经过它的压缩文件会小3~4倍,然后直接下载到手机的APP里,利用运动或上下班的空闲时间就可以练习了。

YouTube上面还有非常大量的优质英语学习资源,比如JamesESL English Lessons,通过思维导图的方式教授英语,已经十年左右的时间,讲的非常生动形象。上面还有非常多的儿童英语教学视频也非常不错,好好利用这些资源,学好英语,你的世界将会变得更加宽广!

]]>
我的2016 2016-12-31T00:00:00+08:00 yikebocai http://xinbo.me/2016/12/my-2016 总是觉得日子过的太快,转眼又到了年底最后一天,这个日子很特别不仅仅是因为一年的末尾,也是我们家二宝出生的日子,回顾过去的一年收获很多,遗憾也不少,经历过欢笑,也遇到过挫折,仅以此文纪念过去不平凡的一年。

工作

年初的时候,公司觉得产品和技术协同得不好,产品推进速度相对竞争对手来说太慢,然后对整个大的研发团队进行了大的调整,分成了两个业务线反欺诈和信贷及核心,产品、技术放到一起,组建功能相对完整的小团队,减少跨部门沟通和协调的内耗,提升研发效率。而我被安排去负责其中偏底层的平台工具团队,为业务线提供底层支撑。原先带了70来人的团队,突然变成了20来人,说实话心情还是非常郁闷的,感觉自己是不是不再被信任边缘化了,但是静下心来想一想,技术团队做的确实不够好,开发进度不够理想,线上故障非常多,性能问题也迟迟得不到解决,中间层也没有建立起来,虽然自己很努力但天天疲于奔命,整体结果并不是很理想。

面对变化我的一个优点是能很快能接受现状,让自己多往积极的一面思考,虽然团队被拆分带的人少了,但是我可以集中精力把系统的可用性和性能提升上去,彻底解决后顾之忧。

之后,做的第一件大事就是机房迁移,杭州的机房三天两头出故障实在无法让客户满意,经过多次考察和评估,最终选择了上海万国做为我们的核心机房,开始了长达6个月的系统架构改造、网络和安全架构改造、数据迁移、测试等一系列繁琐而复杂的工作,最终非常平稳地将绝大部分流量切到了上海,为整体系统的可用性奠定了良好的基础。

另外,通过持续不断的改进和优化我们的流计算技术框架,终于解决了线上绝大部分的性能问题,将200ms的占比提升到了99.9%,并且能够支持秒杀型的场景,也得到了客户的认可。

再者,线上质量体系的建设从无到有,有了非常大的进步,之前线上故障到底有多严重,记录的并不是很清楚,甚至有些数据都是错的,无法准确度量,质量如果好好到什么程度,如果坏坏到什么程度,没法度量就没法针对性的改进,所以第一件事就是把度量体系建立起来,现在所有的故障详细都能在质量平台上看得清清楚楚,多少个故障,都是什么级别的,归属到哪个团队和个人等,有了准确的质量度量,后面我们才能更好地提升整体的质量。通过新建的质量平台,不但把质量状况清清楚楚地呈现出来,也和我们的自动化发布系统连接了起来,一但创建项目,就会自动进行单元测试并提醒到相关开发人员,提测后会自动申请服务器资源自动构建整个测试环境进行接口自动化测试等,只有经过这些自动化的测试后才会到达测试人员手上,大大提升了测试自动化的效率,有了这些体系化的东西,我们才能在前面的基础上不断进步逐步完善,而不是光靠人的能力来保证。

另外,在基础架构支撑方面我们建立了日志中心、配置中心、统一权限系统,完善了报警监控系统,也在自动化运维方面取得了可喜的进展,服务器只要上架,后续我们就能通过自动化运维平台进行操作系统安装、虚拟化、安装配置等操作,所有线上的资源都通过系统管理起来,虽然还有很多不完善的地方,但是大体框架已具备。同时,我们也开始了Docker容器云的建设,春节前就会上线,为以后提升资源利用效率和弹性扩容奠定基础。

最后是大数据平台的建设,在经历负责人的变动影响之后,终于朝着原先设想的方向前行,前完成了数据交换、元数据管理、权限和安全、ETL等基础设施的初步建设,离我们提供一个完整的、可交互式的大数据平台越来越近了。大数据平台的完善,将对业务提供更好地支撑,为我们真正做到数据驱动业务打下基础。

团队方面,逐步完善了我的中间层,尤其是我们首架的到来,帮我分担了很多的技术压力,通过更科学、体系化的方式,将整体技术水平往上提升。现在团队在朝着我想要的方向前进,整体执行力相比之前也有较大的提高,随着团队结构的完善,我也有了更多的精力可以尝试其他方面的东西。

靠近年底的时候,我重新接手了核心产品团队,相对一年前不仅有了更大的技术团队还有相应的产品团队,产品需求繁杂而多样,如何通过火眼金睛识别出最有效的需求设计出来最能解决客户痛点的产品、改善目前团队面临的困境是我最大的挑战。另外一个挑战是,公司让我负责新入股的一家征信公司,在企业征信领域做一些探索,从一个负责技术的转型到负责一家公司,需要补的课还很多。

生活

生活方面最大的惊喜是,老婆在我长久的劝说下终于开始锻炼了,没几个月的时间减掉了十几斤,并且几乎每天早上坚持早起锻炼,这份毅力让我佩服,也看到了坚持的力量,自己最近这几个月反而有点懒惰懈怠,需要反思。

4月份的时候,我重拾信心,决定再次开始学英语,当时写了一篇《我这辈子还能学好英文吗?》,我下载了很多TED的英文演讲内容,利用每天上下班的时间不停的听,利用早上起来走跑的间隙听,原心意六个月的时间可以让我有个突飞猛进的进步,结果让我失望,但是还好没有绝望。我请教了一位在海外生活多年的英语专家,从听TED转到了听脱口秀和访谈类的节目,也重新调整了目标,六个月不行那就一年,一年不行那就三年,这次我是铁了心的要和英文死磕到底,一定要把这个短板补上。

我一直以来的其中一个梦想,就是在有生之年去尽可能多的地方去体验世界各地的风土人情,看看另外一个世界是什么样子,但是一直没时间也没钱去实现。在G20期间,这个愿望终于实现了,我们几个创始人去科技圣地硅谷转了一圈,近距离地观察了一下硅谷大小公司的情况,虽然只有短短的两周,还是感受到了硅谷创新的源泉和美国强大的文化。

圣诞节的时候,我在浙江卫视《华商启示录》栏目录制的节目《诚信是创业之根本》如期播出,第一次上电视,第一次做公开演讲,即紧张又新鲜刺激,总体表现还算及格,又一次挑战了自己的极限。

另外一个对我影响比较大的事情是,担任EGO杭州分会的会长,之前在社区并没有什么影响力,这个职位对我挑战还是挺大。我们小组活动虽然搞的还不错,但是整个分会搞的几次活动还不是让人特别满意,大家参与度也不是很高,对于比较高端的技术人员来说,虽然大家的诉求都是想有更大的进步,但是具体需求也千差万别,想要搞好还真不容易。

展望

2017年希望我们公司的业务能更上一层楼,和更多客户有更多深入的合作,早日实现建立智能诚信网络的梦想。

2017年希望能招到更多优秀的人才,让团队组织结构更加完善,提升团队的战斗力,取得更好的结果,每个人都能有收获有进步。

2017年希望我自己能够突破更多的极限,在我自己并不擅长的领域快速学习成长,尝试更多新的东西,不断进步成长为一个更好的自己。

2017年希望我的家人、朋友、同事,都能健健康康,希望我的两个小宝贝快乐成长!

--

]]>
技术合伙人如何向上管理 2016-05-30T00:00:00+08:00 yikebocai http://xinbo.me/2016/05/how-to-manage-your-boss 上周日杭城20多个创业公司和团队的CTO、技术负责人齐聚在西子湖畔,参加EGO杭州分会的预热活动,就各自遇到的问题做了深入地沟通,其中最引人关注的一个话题就是技术合作人如何和CEO、合作人更好地沟通和配合,我们那组对这个话题也作了深入的探讨,当时时间有限说的比较凌乱,现在试途回忆一下,做个简单的总结。

信任感

大家能够在一起做事,彼此信任是最基础的要求,问了一圈在座的CTO,和合伙人之间有信任问题的几乎没有,大家都是多年的老同学、老同事、老朋友,有非常深厚的感情基础,所以才能走到一起共同创业。虽然之前关系很好,但是在创业的环境中,利益冲突、方向冲突等还是非常常见的,再好的关系也需要持续维护,就像夫妻关系一样。大家总结了几点,来加强合伙人之间的信任感。

首先是要保持经常性的沟通,一对一的沟通,面对面或微信、电话,有的人会几乎每天都和CEO沟通,避免问题越积越多,最后小问题变成大问题。

其次要将工作关系上升到兄弟关系,不能只局限于工作中的沟通,还需要经常一起吃、喝、玩、乐,才能真正上从心底里认同对方,并在今后的合伙中彼此信任和支持。

如果之前没有特别强的信任关系,是需要通过一些实际案例来逐步建立信任关系,比如先做出一些成绩,然后再向老板要资源会更容易一点,尤其是一些涉及到底层技术改造,需要花费大量资源和时间的项目。

专业分工

有些CEO喜欢干涉下属的工作,比如技术出身的老板就喜欢干涉技术选型、项目进度,总觉得技术团队在变大之后没有当初创业时的激情,动不动指责技术团队工作不努力,这需要从一开始就明确各自的专业分工,不能过多干涉,尊重彼此的专业能力。

还有就是存在多个合伙人,每人负责一块的情况下,不能过多干预其他团队的决策,比如有些技术的去干预市场的决策,这明显不是一个好的举动。通过数字驱动,是避免扯皮和乱决策的一种重要手段,这需要首先需要高层有数据驱动的意识,其次建立数据采集和决策的系统,能够通过数字来证明到底哪个方案靠谱,这也是灰度发布的重要概念。

工作习惯

有些老板喜欢工作到半夜2、3点,而技术合伙人可能喜欢早睡早起,工作节奏不同步,可能会产生一些冲突。遇到这种情况,最好能做一个约定,比如晚上11点之后,可以留言给我,但不要打电话,早上起来会再处理。

共同成长

其实有一点我觉得也挺重要,就是合伙人要共同成长,如果有人无法跟上业务成长的步伐,成了所负责团队的瓶颈和阻碍,又不愿意主动腾出位置,迟早被产生矛盾,分道扬镳。

时间拖的有点久,很多内容记的不是很清楚了,简单记录一下。

]]>
七年就是一辈子 2016-05-10T00:00:00+08:00 yikebocai http://xinbo.me/2016/05/jiangtao-in-my-eyes 09年中旬,我离开拼打了近四年仍没有太大起色的创业公司,在休息了一段时间后于11月份正式加入了阿里。记得当时直接被分配到了叶博(现国际站技术部总监)带领的风控小组,虽然当初面试时团队的老大Tom(现万江龙CEO)稍微讲了一下是过来做风控的,但风控是什么完全没有概念,之前也从来没有接触过,没想到我人生从此和它结下了不解之缘。之后,叶博就把一个穿着蓝色冲锋衣牛仔裤不怎么修边幅的高大男生介绍给了我,穿着为什么过了这么久还记得这么清楚,是因为这套衣服出现在我面前的次数实在太多了,感觉大半年都没怎么换过:)。叶博跟我说,这位是蒋韬,刚从美国硅谷回来,我们风控团队的架构师,你跟着熟悉一下我们的环境尽快上手,后来我才知道他比我只早来了一个多月。我被安排坐他对面,这样方便有问题随时交流,虽然没有明确说明,但他成为了我在阿里事实上的导师,这为我们后来建立深厚的友谊打下了坚实的基础。

当时阿里为了发展国际化业务,打破Alibaba.com单一的信息共享平台的局限,成立了一个新的团队叫全球速卖通,也就是现在已在全球非常流行的AliExpress,不过当时还没有自己的独立域名。虽然交易业务刚刚开始推出不久在阿里还是个新生的事物,GMV还非常低,但是存在的巨大风险漏洞迅速被世界各地的黑产盯上了,记得当时负责风控运营的同学跟我讲,最早的时候盗卡率达到40%,他们不得不把所有超过100美元的单子全部砍掉以防止进一步恶化,风控成长了业务发展的核心问题,跟当初PayPal刚起来时被恶意盗刷如出一辙。因为当时整个团队成立不久,人手非常短缺,自己从头开发已经来不及了,因此能做的第一件事就是尽快引进一个在外卡支付风控领域有专业经验的第三方公司,来解决燃眉之急。这件事情当时就落在了Tom和蒋韬身上,因为这个崭新的团队做的虽然是国际化业务,但是真正懂国际化的不多,甚至连会说英文的都没有几个,而他们两位都有硅谷工作的经验英文很好,Tom之前是Google电子商务的负责人,而蒋韬也刚从硅谷回来,对那边的情况非常了解,经过考察之后,他们很快确定了CyberSource这家当时在支付和风控领域非常有实力的公司,而蒋韬作为架构师参与了全面的技术评估。

之后双方迅速开展了合作,因为没有人手,蒋韬亲自写了第一版风控系统的代码,虽然只是完成了和CyberSource的对接,但是为解决当时的盗卡问题立下了汗马功劳,使得我们可以有喘息的机会去开发自己的风控系统。我到岗之后,成了风控团队第一位工程师,跟着蒋韬熟悉了整个系统之后,开始接手原来的系统,而他作为架构师一直紧密地支持我们。记得刚刚开始的时候,对阿里的那套环境还不熟悉,包括好多框架都没用过,甚至连SVN代码仓库都用的不多,中间遇到非常多的问题,不得不经常向蒋韬讨教,经常是他坐在我的电脑前亲自帮我调环境Debug代码,我坐在旁边跟着学习,一不小心就到了晚上十点以后。有了他前期手把手的教,很快我就熟悉了整个开发环境,开始独立承担主要的开发工作。

随着双方的了解加深以及对环境的熟悉,蒋韬发现当时团队在应对业务的快速发展,对代码质量的要求并不高,尤其是像单元测试这样可以明显提升代码质量的措施都没有,就找到我说能不能一起来推动一下这个事情,我刚好也非常有兴趣,就做了一些准备,参加了由当时整个国际站管理层主导的评审会,在得到认可后,我们就正式开始推动单元测试和持续集成在部门的普及。蒋韬主要负责说服各个团队的Leader,重视并能投入一定资源来配合推进,解决跨团队协作的问题,我主要负责单元测试和持续集成平台的搭建以及前期的技术预研和试点,还有就是技术支持工作。在我们的共同努力下,很快就建立了以当时内部单元测试框架intl-test+Hudson持续集成平台为主的一套技术体系,并逐渐推进到了各个产品线,大大提升了当时开发同学的质量意识并减少了各种故障的发生。因为效果比较好,后来国际站技术部等其它部门也来取经,逐步将单元测试的理念植入到所有开发人员的心中。

后来,B2B技术部希望自底向上推动一些技术的创新融合和跨团队的协作,启动了一个“B2B技术领域”的项目,由当时的CTO Andy亲自负责,当时引起了所有技术人员的极大关注,各个部门的技术大牛都在提交各种各样的领域主题。最开始我自己其实并没有多少信心去申请,但蒋韬找到我说可以去试试看,他可以在后面全力支持我,这给了我很大的鼓舞。经过多轮筛选和答辩,最终我们的反欺诈和风控领域从上百个项目中脱颖而出,聚集了国际站、中文站、数据、搜索等多个部门相关领域的技术人员,并在后来的通力合作下推进了多个项目的落地,比如Geoip项目就是一个比较典型的代表,将之前本地的IP包做成了一个整个公司通用的服务。当时我们还考虑是否可以把这个服务开放出去,给其他的公司使用,最终因为种种原因未能如愿,但这也为我们后来做风控的SaaS服务埋下了一颗种子。

AliExpress的业务发展迅猛,蒋韬开始支持越来越多的团队架构工作,我们相处的时间越来越少,突然有一天看到邮件说是准备回他所在的平台技术部了很是惊诧,因为我一直觉得他在AliExpress做的顺风顺水,怎么突然就离开了呢?不久后当面和蒋韬聊起这事,他告诉我要回去专心做风控平台的开发了,他特别喜欢做这个事情,我当时听了后虽然没有说什么但总觉得好像不太靠谱。因为当时在阿里,每个事业部都有自己对应的风控技术团队,支持各自业务线的所有需求,而蒋韬所在的部门并没有直接对口的业务团队,将来即使把东西做出来了,会有人用吗?带着满腹的疑问,结束了我们的会面。等过了一段时间再见到他时,已经有国际站P4P的业务开始用他们的服务了,后来陆陆续续又接了淘宝、天猫等团队的业务,硬是从无到有地开拓了一片天地,就这一点就让我对他刮目相看,在大公司推动一件事情的难度不亚于创业公司开辟一家新的客户,这也是我后来愿意跟着他一起出来创业的最重要因素之一。

后来部门大调整,我们又都到了集团安全部,见面的机会多了,但并没有太多深入的沟通。记得13年十一长假我从台湾环岛骑行回来后没两天,跟蒋韬在旺旺上聊天,想印证一下他是不是真的要出去创业了,因为当时我听说这件事后还挺震惊的,他升职的时间并不太长,按理来说有了更高的职位更好的收入更大的发展空间,高兴还来不及呢怎么会头脑一热准备去趟创业这个浑水呢?因为我之前趟过,所以知道里面的艰辛,因此更加不能理解。后来就约了见面聊聊,当时他拎了个大行李箱正要准备出差,就随便在园区找了个地方聊了一会儿,当他谈起他的新事业时,眉飞色舞充满自信,他要把这几年在阿里积累的经验运用到更大的市场中去,国内有很多的中小公司饱受各种欺诈的侵扰而无力应对,需要有一家第三方的公司为他们提供专业的服务,这是一个非常大的市场机会。没听多久,我就被他的激情感染了,他身上总是有一种魔力,可以让人快速信服。

当他向我提出加盟邀约时,我其实心底的天秤已经完全倒向他了,但是为了谨慎起见,我还是没有直接答应,要冷静地想一想这件事到底靠不靠谱。经过慎重的思考之后,我觉得自己这辈子最大的梦想就是想亲自参与创办一家了不起的公司,阿里是家非常伟大的公司可惜我去的时候已经长成参天大树了自己发挥的功能有限,而现在有这么一个机会摆在我的面前,以我对他的了解,我觉得他有成为一个真正企业家的素质和潜力,并且风控这个全新的市场我也非常看好,自己已经三十多了再不拼一把也许以后再也没有机会了。回家和家人一商量,他们全部反对,说我刚刚过了几天安稳日子又想瞎折腾了,在阿里工作稳定发展前景明朗,为什么要去创业呢,又不是没有吃过这方面的苦头,包括当时我在阿里一直追随的老板也极力挽留。不过,我心意已决,最终说服了他们。

第一次去同盾在福地创业园的临时办公场地,一个大房间坐着好几个创业团队,里面是非常的凌乱,房间最里面摆着一张破桌子是为我们准备的,放了两台蒋韬从家里搬过来的旧电脑,虽然知道创业条件艰苦和阿里的办公条件没法比,但还是有点出乎我的意料,因为当时华创和IDG已经决定要投了,又不是一穷而白,干么这么节俭呢。后来我才知道,敢情蒋韬就是这种风格,直到今天完成了4轮近亿美元的融资,并且公司也有非常好的现金流的情况下,他还总是跟我们说,投资人给我们钱是对我们的信任,不能乱花能省则省,做企业风控SaaS服务是个细活漫活,我们要做好长期艰苦奋斗的准备。

来同盾做的第一件事情,其实跟我们现在的业务关系并不大,是为我们第一家客户做一个数据管理系统,把线上所有数据库的访问规范起来,避免数据泄露,虽然在阿里时用过类似的系统,但里面实现的机制完全不了解,并且客户要求支持Oracle、MySQL、SQL Server三种数据库,还要支持在查询或数据导出能够自动脱敏,当时我心里是完全没底的,一没经验二没人手还要限定两个多月的工期,心底还在嘀咕蒋韬胆子真大,如果是为他们做个风控系统我还有充分的把握,但这个实在是有点强人所难,万一出师不利不是影响我们的招牌吗?不过抱怨归抱怨,我还是尽最大努力和客户不断沟通需求,并同时开始招聘开发人员,创业公司一无品牌二无实力,有经验能力强的人很难招进来,只招到几个刚毕业不久和实习生,团队好歹总算建起来了。经过大家不懈的努力,最后竟然如期地把这个项目漂亮地完成了,客户从开始的置疑到最后的肯定,让我们兴奋了好久。从这件事情上让我领悟到一个道理,凡事不要给自己设限,人的潜力比你想像的要大很多,同时也打心底里佩服蒋韬的眼光和开拓精神。

在同盾成立之初,其实就确定了两个业务方向,一个是给大的客户做企业级项目,把产品卖给他们,一个是给中小企业客户提供在线的SaaS服务,两条腿走路,既兼顾眼前利益又着眼长远,理想是美好的,但现实是残酷的。当我们和最初的几家大客户不断接触沟通,跑了一趟又一趟之后发现,像我们这样的初创公司想要把产品卖进去非常困难,经历不断的碰壁之后痛定思痛改变策略,蒋韬决定还是要尽快把SaaS服务做起来,并且要以SassS服务为主,正好第一个项目结束,我们就全力投入新产品的开发当中。经过几个月没日没夜的开发后,产品终于正式上线了,但又开始发愁客户了。

同盾最初的几个创始人都是技术出身,但运营一家公司面临的问题远超想像,各个方面都需要有专业的人才,但早期的时候其实团队结构很不完整并且非常偏科,比如说像销售一开始没人做,就只能由蒋韬亲自去跑客户,从跟代码打交道到跟人天天打交道,是个非常大的挑战。跟所有的客户接触下来都是同样的问题,有没有同行客户在使用,有没有数据可以证明产品的效果,数据安全问题怎么解决等。靠着蒋韬不懈努力地做说服工作,一趟趟地去客户那里亲自交流沟通,才好不容易邀请了几家客户过来免费试用,整个14年业务发展非常缓慢,上线头半年才接入了20来家客户,关键时刻还看到网上有置疑我们业务的声音出现,当时大家的情绪都非常低落,仿佛走在一条看不头的黑暗道路上,不知道什么时候才能走出这种困境。

我不知道当时蒋韬是怎么个想法,但我相信他一定承受了比我们大得多的压力,因为我发现他的白头发突然增加了好多分外刺眼。可即便如此,他也不忘给我们鼓励加油,认定风控SaaS服务一定是将来的方向,我们要坚持下去。这种状况没有持续太久,碰巧赶上了互联网金融的春天,越来越多的客户接入我们的平台,随着客户和数据的快速增长,效果也越来越好,从而吸引更多客户来使用,终于打开了局面,我们长长地舒了一口气。

在公司快速的发展过程中,总是会遇到各种各样的问题和差错,只要涉及到客户的问题,蒋韬总是非常敏感。他自己会潜伏在很多客户的对接群中,只要有严重的或共性的客户问题,他总是第一时间反馈给我,督促我们尽快解决并建立完善的客户问题处理机制,在他的直接参与下,客户服务的机制越来越越完善。我记得有一次,一个重要客户在微信群里说结果不准,问题还没有反馈到后台,他看到了之后马上跑到我们技术团队所在的办公室,要求我们当天把问题查清楚,给客户一个满意的答复。公司在制定年度目标时,客户满意度也总是会列在第一位。正是从公司最高层开始,对客户的高度重视,才有了同盾在客户中良好的口碑。

从09年入职阿里开始算起,我和蒋韬在一起共事了近七年,因风控而相识相知,又因风控而携手同行,真的是缘分。李笑来老师在《新生》这本最新的著作中说,七年就是一辈子,按照这个理论我们已经是一辈子的交情。希望在下个七年这辈子,我们能一起将同盾的事业推上巅峰,为更多的客户提供有价值的服务,此生就无憾了。

]]>
我这辈子还能学好英文吗? 2016-04-04T00:00:00+08:00 yikebocai http://xinbo.me/2016/04/can-i-study-english-well 从初中开始学习英语来算,我接触英语已经20多年了,虽然上学时英语成绩一直不错,但是听、说、读、写也只有读还勉强说的过去,看看一般的英文资料还凑合,但是其它几项完全不行。这么多年也尝试过多次努力,包括去英语角、听VOA练听写等,耐何因种种原因都先后失败,工作中用到英语的机会很少,因此就彻底放弃了,心想这辈子跟英语算是无缘了。

最近在看李笑来老师的《新生-七年就是一辈子》,又一本震憾到我的书籍。知道他还是因为去年看他的《把时间当作朋友》,一下子就把我给震住了,是真的震住,原来时间是不可管理的,能够管理只能是自己,从根子上讲清楚了人该如何有效利用时间。这本书我反复读了几遍,还把其中的精华内容做了一个几十页的Slides分享给了同事们,因此我对李笑来老师非常的敬仰。在从他的公众号上看到他的这本新书后,一开始阅读就深深地被吸引了,他用计算机操作系统来类比人类,操作系统需要定期升级,人也是一样,需要不断学习、精进,并讲述了很多学习路上遇到的困难。其中英语学习就在这本书中反复被提到,因此顺藤摸瓜,找到了他的另外一本书《人人都能用英语》,趁清明长假在家里看了前几章,终于明白我这些年为啥学不好英语了。

学习任何一种新的技能,都需要持续不断的学习,直到突破为止,这个过程肯定会漫长而痛苦,需要付极大的辛勤和汗水,如果半途而废,又要重头开始,就像那个著名的挖井的图,挖几下放弃了再选个地方,挖的差不多了又放弃,始终离有水的地方差那么一点。文中用神经细胞重组的理论来解释这一现象:

在科学家看来,学习一门技能,本质上来看就是大脑中的神经细胞建立连接的过程。美国加利福尼亚大学的退休名誉教授Michael Merzenich认为,每一项新技能的习得,都需要在大脑神经细胞之间中建立亿万个新的连接。这样艰巨的任务当然要耗费大量的时间。而在这耗时费力的过程中还存在所谓的“平台期”——即,某一段时间无论如何大量训练都看起来毫无进步。神经可塑性研究的鼻祖,Paul Bach-y-Rita教授认为,“平台期”只是一种表象,在此期间大脑并未停止发展,神经细胞之间新建的连接在不停地被巩固;如果中断练习,那么大脑就会遵循“不用即废”的原则丢弃那些无用的连接。那么神经细胞之间的连接需要巩固多长时间才能变得“难以弃用”呢?Paul Bach-y-Rita教授的解释是“六个月”——这个时限与人类生育普遍需要十月怀胎一样很难跨越。

但是大多数人普遍很难坚持六个月,我回顾自己过去学习英语的经历,也是如此,并且没有经过长时间大量的强化训练,所以神经细胞之间的连接根本没有完全建立起来,所以才一次又一次的失败。让人欣喜的是,文章中也提到,人的大脑有非常强的可塑性,并在文中举了很多例子,并且语言习得关键期并没有想像的那么重要,不管年龄、背景如何,只要坚持正确的方法,进行大量的练习,不要害怕丢面子,大胆的使用,最终都可以学会英语。因此,从明白这一点开始,我就马上决定,重新开始学习英语。

第一步要做的就是准备大量接收英语讯息,在喜马拉雅FM上下载了大量Ted的语音资料,准备在跑步中的半小时以及上下班的两个小时中不断播放收听,从而不断刺激自己的神经细胞重建连接。另外,也准备按照文中的建议,开始尝试记录自己每天的所思所想,虽然之前已有习惯记录工作日志,但只是限于工作而已,等养成习惯之后,尝试使用英文来记录,先从听力和写作上突破。

看到该文一位李笑来老师的学生,职业运动员,从零基础开始用了两年时间攻克英语考入英国大学的研究生,相比来说,我的基础比她强太多了,我相信这次一定能有所突破,加油!

]]>
我的2015 2015-12-31T00:00:00+08:00 yikebocai http://xinbo.me/2015/12/my-2015

今天是2015年的最后一天,也是我们家小宝一周岁的生日,可惜不能陪她了,有个客户晚上做大促得在公司盯着点。趁着大促还没有开始,2015年还有最后几个小时,对过去的一年也做个小结吧。

2015是我的本命年,果不出所料地遇到各种事情,一路跌跌撞撞算是走到了终点,总体上来说喜忧惨半,有遗憾也有收获。

  1. 去年底最后一天,我们家多了个小宝贝,这一年中看着她从那么一点点慢慢长大,从第一声啼哭到呀呀学语,从安静的乘孩子到调皮的磨人精,最大的感受就是养个孩子真不容易,真是辛苦娃儿她妈和奶,为了孩子无怨无悔地付出了极大的心血。而我因为工作忙的原因,很少有时间能照顾到她。
  2. 在小宝出院的当天,我妈不慎在卫生间滑倒摔断手腕,当时家里一个还不懂事的老大一个刚出生没几天的老二还有一个刚出院需要照顾的产妇,当时感觉老天怎么这么喜欢跟我开玩笑,屋漏偏逢连阴雨。晚上去医院安置好老妈已经半夜,看着她伤心的样子还不得不丢下她一个人,回去照顾家里的大小,心痛不已。好在我们都有兄弟姐妹,可以在遇到问题时能马上放下手头的工作赶过来帮忙,这也让我庆幸坚持要了老二的想法是正确,以后我们都老了动不了啦,姐妹俩起码还可以相互照顾。
  3. 上半年时客户数和调用量都波澜不惊,着急上火天天盼着量能上来,好让技术团队大展身手,到了下半年客户数和调用量都突飞猛进,本以为系统架构早已按照高可用、可扩展的分布式架构设计的,量上来了加机器就不行了,但是系统稳定性和性能受到了空前的挑战,很多原来以为没有问题地方,在调用量从每天几百万到几千万时,纷纷暴露出了短板,几次系统当机各种调用超时和性能抖动,虽然没有被客户和前面的团队骂得狗血喷头,但是每次看到、听到客户的各种抱怨,我却不能马上帮助他们彻底地解决问题常常羞愧难当心头像压了块大石头气都喘不上来,恨不得找个地缝钻进去逃避开这一切,但是谁让我是公司的技术负责人呢,只能厚着脸皮安慰客户承诺一定改进,硬着头皮开始长达数月的不断优化,从系统到网络,从应用到缓存,做了大量的改进,终于慢慢稳定了下来,客户对此的投诉大幅下降。当我准备喘口气的时候发现坏了,过多的精力投入在性能优化的事情上时,在人员招聘、团队建设、日常工作等方面就投入不足了,后期不得不面临开发资源常常紧缺,团队结构不够完善没人能帮我分担压力,产品推进速度不够快等各种新的棘手问题。而这些问题,更应该值得一个技术负责人投入大量精力,有了合适的人和合理的机制,一切问题都会迎刃而解。
  4. 上半年的时候参加了北京QCon的大会,然后接入加入了极客邦组织的高端技术人才组织EGO,得以结识很多传说中的大牛,从此混入了真正的互联网技术圈,对开拓自己的视野和拓展自己的人脉还是有挺大作用。只是遗憾的是,杭州参加的人太少,眼睁睁地看着北京、上海、深圳分会搞的热为朝天,自己只能干羡慕,等明年了。
  5. 从10月份开始坚持每天半个小时的走路/慢跑,坚持了3个多月了,出勤率达到了90%以上,从上周开始每天晚上开始半个小时的阅读,已完成《硅谷之谜》的阅读,我觉得这次能坚持下来跟定的策略有很大关系,每天半个小时的目标很不起眼比较容易能做到,不求一次练到位,但求能长久坚持,现在越来越发现,任何事情只要坚持做下去,总有一天会从量变到质变。
  6. 最近记性不太好了,其它的事情已记不得了,希望2016能走的更从容一点,公司、团队和我个人都能有比较大的进步,家人、同学、朋友都能平平安安,孩子们能健康成长!
]]>
招聘架构师面临的艰难选择 2015-10-28T00:00:00+08:00 yikebocai http://xinbo.me/2015/10/how-to-recruit-architect

最近公司业务发展很快,因此技术面临的挑战很大,也欠下了不少技术债务,一直想招一个架构能专注在整体系统架构优化、系统的稳定性和性能等方面,之前也面了好几个,但一直没有找到合适的人选。前两天猎头推了一个在几个大型互联网公司工作过的人选,聊了之后他对我们做的事情还挺感兴趣,但我感觉一般,如果放弃,技术架构层面确实需要有人来帮我分担压力,不然技术可能会拖业务的后腿,另外我也不确定自己是不是看走眼,也没有找到认识的人能打听一下他的真实情况,如果贸然招进来又有点不太放心,万一不适合对双方都是损失。

这个问题让我挺挠头,因此在EGO会员群把这个问题抛出去了,得到各大互联网公司技术负责人、资深架构师的反馈,我把这些精彩发言整理了一下,放出来和大家分享。同时也问了一下大家对架构师这个职位的理解,一并整理如下。

  1. 业务和技术需要,急需招聘架构师,但很长时间没有合适的人选,最近猎头推荐一个在几家大型知名互联网公司候选人,面试后感觉一般,是先招进来解决燃眉之急用用看再说,还是坚持高标准直到合适的为止?

    • 有同学说宁缺勿滥,必须把好招聘关,不能为了招人而招人,请神容易送神难,只有招到优秀的人才,公司才能发展的更好
    • 也有同学说可以多从他的潜力上考虑,找人多打听一下,然后可以先考虑招进来,先给他个机会尝试一下,想好如果不行planB策略是啥,包括他和继续招的人
    • 有同学觉得还是相信自己感觉,如果真的觉得不合适就不要勉强……如果真的实在缺人或者不确认,就用试用期任务加强考察就好喽,然后同时找planB
    • 直接一点的办法是丢一大堆你现实碰到的问题给他/她,看是否有共同语言,或者提供不错的思路,同时还没被吓跑的,就能进入背景调查阶段了。更直接的是上来先上机做题。
    • 还有涉及到行业潜规则的,猎头催得越紧,越要多考虑一下
    • 也有同学觉得技术架构可能找像阿里这样公司里靠谱的P6就可以了,但也有同学觉得如果希望是有个人能够为公司架构层面带来质的变化,包括引领发展,P6级别还差得远。我个人觉得,P6级别的更多的是给他指个方向,他能把事情搞定,可能在更高层面上的想法还相对少一点,公司需要不同层次的人员
    • 有的公司招聘这样的人会有五个不同的人面试,五个人面试之前会沟通每个人面试的侧重点,面试回来之后沟通对这个人的理解。好在哪里,差在哪里。
    • 但是对于创业公司,名气没有积累到一定程度的公司,做多轮招聘或者做招聘委员会不太现实,首先公司里没有足够多的人有能力去面试一个高阶的人才,另外就是一个人没有足够强的动力被这么轮流长时间面
    • 最后,招人是互联网科技企业第一等大事,急不来,要看缘分
  2. 架构师应该具备什么能力和素质,大家主要看注哪些?

    • 首先是技术基础以及架构设计能力和技术上的视野,譬如在做局部优化时是否关注整体的收益情况等等
    • 其次是解决实际问题的能力(根据各种实际现状,因地制宜找办法,包括不仅限于摆平各种人际关系的手腕)
    • 除了技术,架构师的软性技能也非常重要,比如沟通和待人处事的能力,能和各个团队不同层级的人进行合作,另外方案和思想的推广可能也是非常重要的
    • 架构师还要懂得平衡,在各种tradeoff中能够做到让大家都happy,这是架构师最大的能力
    • 另外,人品,学习能力,处理问题的思维方式,工作主动性,习惯是否良好,心态等也是要考虑的问题
    • 如何评测软技能呢,有同学觉得更多是从感性和直觉方面考虑,就是双方是否聊得来,其实就是不是愿意一起工作,我是否愿意被他lead。也有同学觉得其实和找对象没啥区别,互相衡量,最终是看是否有共同的价值观,否则嘛,不和谐阿
    • 架构的很多情况下是管理问题,好的架构师是能够做到通过架构来管理不断变化的业务,好的管理者则是通过合适的制度来管理不断变化的人。抛开技能层面的差别,一个优秀管理者所需要具备的品德,如远见、坚持、公平,都是一个出色的架构师所需要具备
    • 最后,一般而言,不要指望外人带给你天翻地覆的变化,除非你找的就已经是业内极其牛的,就如当初ben wang和章文嵩加入淘宝那样子
]]>
也谈谈微服务 2015-10-16T00:00:00+08:00 yikebocai http://xinbo.me/2015/10/micro-service

最近微服务的话题非常火爆,尤其是在Netflix这样的明星公司的引导下,好像现在不搞微服务就已经落后了一样,这对追求新潮技术的架构师或程序员来说,是可忍熟不可忍。因此,我也不可避免地卷入这波浪潮中,因为除了保持对新技术的关注外,同盾在系统架构发展中确实遇到了一些服务上的问题,急需一些新的思路来打破常规。

微服务(Microservices)大概最早是从Martin Fowler这哥们那里开始推广流行开的吧,我把InfoQ中国上关于微服务的大部分文章都看了一下遍,感觉和之前的SOA服务化的思想也没有本质上的不同,无非是把服务的粒度拆分的更细,之前可能很多服务都放在一个应用里提供,或者说是多个服务运行在同一个进程空间中,现在改成每个服务都有一个独立的进程空间,能够独立运行,甚至之前多个服务共享一个数据库,变成现在每个服务都有自己单独的数据库,这种方式确实带来了诸多便利,比如因为服务变得更小,更方便开发和维护,更方便独立部署,可以充分利用硬件资源,更好地隔离故障等,但是是不是放之四海而皆准呢,我觉得需要从如下几个方便考量。

业务的复杂性

如果业务相对比较简单,网站的访问量也不是很大,比如每天只有几万几十万的访问量,团队可能也就十个人不到,可能一个应用就能支撑住所有的业务,完全没有必要考虑微服务,甚至服务化可能都不需要,技术的最终目的是为了解决业务问题,不是为了炫技,能用最简单的方案解决的最好不过,就像淘宝最早就是PHP+MySQL搭的一个小网站,之后很多年也是一个大应用,包括商品、交易、支付等几乎所有的逻辑,等到业务越来越复杂,团队规模越来越大时,才不得不进行拆分,进行服务化的改造。

就是写代码一样,最开始那就那么几行代码,有必要考虑什么模块化吗,可能一个方法就搞定了,等到越来越复杂时,为了可维护性,才需要按不同功能把代码放到不同的方法中,将一个类拆成多个类,把一个模块拆成多个模块,微服务也是一样的道理。

性能

服务化之后必定带来性能的损耗,网络间的通讯必定比不过内存间的通讯,如果你的业务对性能的要求不是特别高,为了维护方便可能需要对服务进行拆分,但如果性能要求特别高,甚至可能要反其道而行之,比如我们的服务中调用到一个Geoip的基础服务,从架构上看,应该做服务调用,但是为了提升性能,我们将该服务组件嵌入到主应用里,减少网络开销。

成本

目前流行的虚拟化方式是Xen或KVM,在一台物理机上虚出多个机器来,每个虚拟机跑一个单独的应用,像我们线上就是用的KVM,一般是一虚六,如果微服务化了,那就意味着最好每个虚拟机只部署一个服务,但这样从成本的角度来看,可能不是很划算,还不如把多个服务放在一个应用里,部署到一台机器上合算,并且也完全能满足性能等方面的要求。

但是随着Docker这种轻量级的虚拟化方案的流行,给我们带来了新的机会,它能够以非常低的资源占用率来启动一个应用,一台物理机上能部署几十上百个容器,这样成本就能低到足以让我们能够接受。

基础平台

这个也是很多人可能会忽略的问题,微服务是很好,但是这是需要非常多的基础平台支撑的。

比如要使用Docker,要一个能够完善的容器管理平台,得知道目前哪个物理机上还有资源,可以让我正式放得下一个微服务,并且要有服务注册和发现的平台,让服务的消费方能马上知道你的服务地址。如果是对外暴露的服务,你得有一个API网关,能够及时地知道有哪些服务是可用的,分布在哪些位置,要有健康检查的机制,自动限流的机制等。

再比如服务多了,监控也是个大问题,如果之前你用的是像Zabbix这样的开源监控框架,每次增加一台机器都要做模板的配置,那就很痛苦了,你得必须有一套自动注册的机制,得让监控系统知道这个应用集群中有哪些机器或容器,这些机器都IP地址和端口是多少,因为如果容器化了,每次部署IP和端口都可能会变化,不过也听到Mesosphere的哥们说他们开发了一套IP自动跟随的技术,每次启动一个容器都可以动态给他分配相同的IP地址,不过目前应该还没有普及。

只有这些基础设施完备了,才能在上面方便地进行服务的构建和扩展,因此还是要根据自己的业务实际情况,量体裁衣,不可什么流行就一哄而上。

]]>
同盾研发技能表 2015-04-01T00:00:00+08:00 yikebocai http://xinbo.me/2015/04/tongdun-rd-skills

v0.93, 2015/4/8

软性技能

  • 不甘平庸。每个人都有自己的梦想。
    • 向业界和身边优秀的人看齐
    • 从小事做起,并把它做好
      • 代码的逻辑正确无误
      • 代码的执行效率很高
      • 代码的结构清晰易懂
      • 代码的可扩展性良好
      • 重复的工作自动化
  • 积极主动。态度决定一切。
    • 发现工作中的问题及时反馈
    • 自己主动承担把问题解决掉
    • 协调资源推动他人一起解决
  • 保持好奇心。对技术敏感,知其然也知其所以然。
    • 追踪最新技术动态
    • 阅读源码
      • GitHub:最大的源代码托管站
    • 尝试一门新的语言
  • 勤奋好学。快速、持久的学习能力是技术人最重要的素质之一。
  • 乐于沟通。你可以不喜欢交际,但一定要学会沟通。
    • 及时沟通,信息透明
    • 尊重他人,学会提问
    • 沟通方式
      • 正式:Email
      • 非正式:微信/QQ
      • 特殊情况:面对面
    • 工作周报
      • 按时发送
      • 抄送所有相关人
      • 清晰、明了、美观
      • 不要敷衍写一句话周报
      • 目标、过程、结果、思考
    • 合理使用Teambition
      • 及时更新工作进展
      • 追踪重点技术项目
  • 学会分享。输出是最好的输入。
  • 团队意识。公司利益大于个人利益,公司利益最大化才能让个人利益最终最大化。
    • 要有大局观
    • 杜绝小团伙
    • 别太在意个人得失
  • 掌握做事方法。正确的方法可以事半功倍。
    • Plan(计划):从问题的定义到行动计划
    • Do(执行):实施行动计划
    • Check(检查):对过程中的关键点和最终结果进行检查
    • Act(修正):总结经验教训,将好的方面进行标准化
  • 管理好自己的时间。事情要分轻重缓急,优先做重要并紧急的事情。

专业技能

Linux

  • 常用命令
    • 文档和目录:ls,pwd,cd,cp,mv,rm,mkdir,cat,find,tar,<,>,tail,head,more,ln,open,touch,sort,uniq
    • 权限和账户:chown,chmod,passwd,su
    • 系统和服务:ps,kill,fg,bg,nohup,reboot,shutdown,date,time,uname,df,fdisk,top,free,history,mount,chkconfig,service,crontab
    • 网络:netstat,ping,telnet,ifup,ifdown,nslookup,scp,ssh
    • 其它:alias,man,echo,xargs,grep
    • 扩展:vim,tree,wget,curl,yum,apt-get,brew
  • 高级功能
    • awk:做一些复杂的处理文本非常方便
    • sed:利用正则来做查找、替换等
    • iptable:Linux自带的防火墙
    • 性能诊断
  • bash
    • echo
    • if
    • for
    • 数学运算

Web前端

  • HTTP协议
  • HTML
    • HTML5
      • WebSocket:从服务器端可以直接推送消息到浏览器
  • CSS
    • 盒模型
  • JavaScript
    • ajax
  • 框架
    • bootstrap:Twitter开源的、目前最流行的前端框架
    • jquery:让js小白也能实现很多强大的前端交互
    • highcharts:最好的前端图表框架
    • echarts:百度出品的前端图表框架
    • Angularjs:Google出品的函数库
  • 图形
    • SVG
    • WebGL
  • 工具
    • Chrome开发者模式
      • 审查元素
      • 网络请求
    • FireFox FireBug 插件
  • 浏览器工作原理

Java

  • 容器类
    • List
    • Set
    • Map
  • IO/NIO
    • File
    • Network
    • ByteBuffer
      • DirectByteBuffer
      • HeapByteBuffer
  • 并发和多线程
    • sychronized
    • volatile
    • lock
      • ReentranLock
    • Semaphore
    • ConcurrentHashMap
    • LinkedBlockingQueue
    • Callable
    • Future
    • Executor
    • ThreadPoolExecutor
    • ForkJoinPool
  • JDBC
    • Druid:阿里开源的目前最强大数据库连接池
  • JVM
    • 内存模型
      • Heap
        • 年轻代(Young Generation)
          • eden
          • S0
          • S1
        • 老年代(Old Generation,tenured)
        • 永久代(Permanent Generation)
      • Stack
      • Method Area
      • Native Method
      • PC Registers
    • 配置参数
      • -Xmx3g:设置整个堆的大小
      • -Xms3g:设置初始化堆的大小
      • -Xmn1g:设置新生代的大小
      • -XX:PermSize=192m:设置Perm区大小
      • -Xss256k:设置线程栈的大小
      • -XX:+UseConcMarkSweepGC:垃圾回收算法,CMS
      • -XX:+UseCMSInitiatingOccupancyOnly
      • -XX:CMSInitiatingOccupancyFraction=70:设置执行CMS垃圾回收的阈值
      • -XX:+PrintGCDateStamps:打印GC时间戳
      • -XX:+PrintGCDetails:打印GC详情
      • -Xloggc:$APP_OUTPUT/logs/gc.log:设置GC日志路径
      • -XX:+PrintGCApplicationStoppedTime
      • -XX:+PrintGCApplicationConcurrentTime
      • -XX:ErrorFile=$APPOUTPUT/logs/hserr_pid%p.log
    • 垃圾回收算法
      • Serial
      • Parallel
      • CMS
      • G1
    • javap
    • 工具
      • jps
      • jmap
      • jstack
      • jstat
  • 框架
    • Webx:在阿里大规模使用的MVC框架
    • Spring:IoC框架
    • MyBatis:ORM框架
    • Netty:异步事件驱动的高性能网络通讯框架
    • Logback:log4j作者打造的下一代日志框架
    • Drools:规则引擎
    • Fastjon:阿里开源的Json序列化和反序列化框架
    • Velocity:模板引擎
    • Akka:基于消息驱动的弹性高并发分布式框架
  • 中间件
    • Dubbo:阿里开源的RPC框架
    • Kafka:分布式消息中间件系统
  • 应用服务器
    • Tomcat:最流行的应用服务器
    • Jetty:轻量级的应用服务器

Python

  • 集合
    • list/tuple
    • dict
    • set
    • 切片:lst[1:3]
    • 迭代:for c in 'abc'
    • 生成器:range(10)
  • 函数
    • 函数定义
    • 字符串
      • len
      • join
      • encode
      • decode
      • 格式化
    • 高阶函数
      • map
      • reduce
      • filter
      • sorted
    • 匿名函数
    • 偏函数
  • 装饰器
  • 对象
    • 类和实例
    • 访问限制
    • 继承和多态
  • 错误
    • try...except
  • 单元测试
  • 进程和线程
  • 协程gevent
  • 正则表达式
  • 组件
    • MySQLdb
    • json
    • logging
    • datetime
    • os
    • re
  • 框架
  • 教程

其它语言

移动开发

  • Android

    • 环境
      • Android Studio(推荐)
      • Eclipse + Android SDK + ADT
    • 四大组件
      • Activity
        • 生命周期
        • AsyncTask:轻量级异步任务
        • Handler,Message,Looper:线程间通信
      • Service
        • startService/bindService:非粘性/粘性
        • AIDL、Messenger:进程间通信
      • BroadcastReceiver
        • 两种注册方式:xml,代码动态注册
      • ContentProvider
    • 数据存储方式
      • SharePreferences
      • I/O流文件读写
      • 网络存储:httpClient和httpServer
      • SQlite
      • 属性系统
    • UI设计
      • 常用布局
        • FrameLayout:框架布局
        • LinearLayout:线性布局
        • AbsoluteLayout:绝对布局
        • RelativeLayout:相对布局
        • TableLayout:表格布局
      • 两种动画
        • Teen Animation:补间动画
        • Frame Animation:逐帧动画
      • GUI警告
        • Dialog对话框
        • Menu菜单
        • Notification
      • 常用UI控件
      • ListView、下拉刷新
      • Fragment
      • WebView混合开发
      • 适配
        • 字符串和国际化
        • 屏幕尺寸适配
    • NDK开发
    • 传感器
    • 大位图处理
    • Manifest.xml配置文件:组件注册、权限设置
    • Android开源项目
  • iOS

    • 编译环境
      • Mac OS +Xcode
    • 常用语言
      • c语言(熟练)
      • obective-c(熟练)
      • swift(了解)
    • OC内存管理关机机制
      • ARC
      • MRC
    • 类的类别和扩展
      • Categories
      • Extensions
    • 常用设计模式
      • 代理模式
      • 观察者模式
      • MVC模式
      • 单例模式
      • 工厂模式
      • Target-Action模式
    • 第三方开源库
      • jsonjson编码解码
      • GTMBase64 base64编码解码
      • TouchXML 解析
      • SFHFKeychainUtils 安全保存用户密码到keychain中
      • MBProgressHUD很棒的一个加载等待特效框架
      • ASIHTTPRequest 等相关协议封装
      • MJRefresh 下拉刷新代码
      • AsyncImageView 异步加载图片并缓存代码
      • 类似setting的竖立也分栏程序
      • MBProgressHUD——进展指示符库
      • Flurry——详尽的使用统计
      • CorePlot——2D图形绘图仪
      • GData client——iPhone上所有Google相关服务的类库
      • SDWebImage——简化网络图片处理
      • RegexKitLite——正则表达式支持
    • 多线程开发
      • NSThread
      • NSOperation
      • GCD
      • 数据持久化
      • 属性列表(NSUserDefaults)
      • 对象归档、
      • SQLite3
      • Core Data
    • NSNotification和KVO
      • NSNotification
      • KVO
    • UI设计
      • 动画的使用:旋转,偏移,消失,出现等
      • 首手势的使用:点击,侧滑,长按等;
      • AutoLayout
      • Size classes
    • 其他常用技能
      • 熟悉系统自带框架以及熟练使用
      • 熟练使用Block进行功能的实现
      • 对新机型进行适配
      • 在API文档中寻求解决问题的能力
      • 同时熟悉面对对象和图形化开发

缓存

数据库

  • MySQL
    • 存储引擎
      • MyISAM
      • Innodb
    • 索引
      • Btree
      • Hash
  • Berkeley DB
  • LevelDB:Cassandra有类似的数据结构

代理/负载均衡

  • HAProxy:高性能的TCP/HTTP负载匀衡器
  • Nginx:最流行的Web服务器和反向代理服务器
  • Apache:老牌的Web服务器
  • Keepalived:热备切换工具

大数据

  • 论文
  • 算法
    • DHT
    • Gossip
    • Paxos
  • Hadoop
    • HDFS
    • Hive
      • Hive on Spark
      • Hive on Tez
    • Hbase
  • Spark
    • SparkSQL
    • Spark Streaming
    • Spark MLLib
    • Spark Graphx
  • Storm:分布式实时计算框架
  • Cassandra:分布式、P2P结构的NoSQL数据库
  • ElasticSearch:实时搜索引擎

运维

  • 自动化
    • ansible:部署、配置工具
    • puppet
  • 虚拟化
    • KVM / Xen
    • Docker
    • Vagent
    • OpenStack

测试

  • TestNG
  • Selenium
  • Jekins

环境工具

  • Git
    • git add
    • git clone
    • git commit
    • git pull
    • git push
    • git branch
    • git merge
    • git log
    • git push
    • git status
    • gitlab
  • Maven
    • mvn eclipse:clean eclipse:eclipse
    • mvn clean install
    • mvn assembly:assembly
    • mvn dependency:tree
  • Mac
    • Alfred: Mac下第一神器
    • iTerm:比自带的终端更好用
    • zsh + oh-my-zsh: 比bash更加强大
    • tmux: 终端多窗口分屏工具
    • CatchMouse: 快捷键多屏切换
    • Reeder:最好的RSS阅读工具
    • VMWare:无缝的虚拟机软件
    • MacDown:markdown编辑器
    • Dash:各种文档资源,非常好用的snnipets
    • VirtualDiff:代码比较工具
  • Linux
    • Terminator:终端多窗口分屏工具
    • VirtualBox:开源虚拟化软件
  • Python
    • ipython
    • pip
    • PyCharm CE
  • Java
    • Eclipse
    • IntelliJ idea
  • 其它
    • Navicat:跨平台的MySQL客户端
    • Sublime Text 2:跨平台的文本编辑器
    • Pocket:跨平台的稍后阅读工具
    • Xmind:跨平台的思维导图工具

推荐阅读

]]>
【读书】从0到1 2015-03-22T00:00:00+08:00 yikebocai http://xinbo.me/2015/03/from-zero-to-one PDF摘要

--

推荐等级:★★★★☆

]]>