研发效率破局之道 Facebook工作法】的更多相关文章

如果你问中国和美国互联网公司都有什么差别,很多人会回答:低效加班文化.最近爆出的996大讨论,通过糙快猛打拼和996加班去抢占市场获得机会的成功案例越来越少.至此,只有提高效能才是出路. 由于软件开发的灵活性,导致研发效能的提高需要关注的点太多,或者是花了精力.加大了投入却看不到效果,甚至产出抵不上投入. 葛俊将基于硅谷和国内多年的从业经验,从研发流程.工程方法.个人效能.管理和文化入手,系统介绍研发效能的理论和实践,探讨协同.开发.测试.运维等关键研发步骤中高效的工程方法. 葛俊,前 Face…
在 Martin Fowler 的世界里,任何事情都有最优解. 1963年,Martin 出生于英格兰的沃尔索尔(Walsall),也在同样位于沃尔索尔的玛丽女王文法学校中接受中等教育.在这里的乡村中,他度过了一段简单.愉快的少年时光.上了中学之后,Martin 接触到了策略桌游.在桌游的"厮杀"中, 如何从复杂的局势中找出最简洁.直观的破局之法,就成为他想要寻找的答案,也成为日后他解决任何事情的目标. 1986年,Martin 毕业于伦敦大学学院,获得了电子工程与计算机科学的学士学位…
互联网时代,随着区块链.大数据.人工智能等技术的快速发展,产品迭代速度飞快.在这样的市场环境下,提升研发效率.降低研发成本,同时支撑业务的快速发展,是每个企业都追求的目标之一. 大中型企业如何快速转型升级,实现研发效率的提升?中小企业如何保证研发过程的稳定性与持续性,保持创新力与活力? 12月8-9日,第42届MPD工作坊(成都站),我们将邀请微软.腾讯.蘑菇街.京东.广联达等公司的技术专家,按照软件研发中心的岗位职能划分,从产品运营.团队管理.架构技术.测试管理.运维交付等领域进行深度分享,通…
本文来自腾讯云技术沙龙,本次沙龙主题为AI平台及智能语音应用解析 近年来,人工智能技术快速发展,与其他行业的结合也成为业界不断探索的方向.在人工智能基础和工具方面,AI平台已成为降低人工智能门槛的关键因素:而在人工智能应用方面,作为最成熟的应用方向之一,智能语音已在智能家居.智能车载等领域有了迅猛发展.以腾讯为代表的巨头企业,凭借强大的技术积累和在社交聊天.游戏娱乐等垂直领域定制化服务的丰富经验,在AI平台和智能语音两方面都推出了丰富的解决方案. 依照现状,AI平台如何降低人工智能门槛,帮助企业…
在新技术层出不穷.不断迭代的当下,多数企业都在面临技术能力提升,认知升级等问题.面对技术企业的研发环节,为什么你的效率总是提不上来?都在寻找创新的技术领域,为何别人总能抢占先机?提升自己的研发竞争力,你都有什么方法? 研发效能已经成为软件企业发展非常核心的竞争力.身处在高速发展的软件研发行业,除了需要提升自身技术外,行业的主流趋势.团队领导力也是助力于组织的研发效能提升的关键.如何借助外力提升研发效率? 第40届MPD软件工作坊将于7月14-15日在北京举行,本届MPD我们邀请了来自微软.三星.…
同样是做研发,为什么你的效率总是提不上来?都在寻找创新的技术领域,为何别人总能抢占先机?提升自己的研发竞争力,你都有什么方法? 研发效能已经成为软件企业发展非常核心的竞争力.身处在高速发展的软件研发行业,除了需要提升自身技术外,行业的主流趋势.团队领导力也是助力于组织的研发效能提升的关键.如何借助外力提升研发效率? 第40届MPD工作坊(北京站)给你答案,我们邀请了来自微软.三星.网易.豆瓣等企业的技术专家,按照软件研发中心的岗位职能划分,从产品运营.团队管理.架构技术.自动化运维等领域进行深度…
2018年上半年对于中国半导体行业而言是多事之秋,发生了几件让国人深入思考的大事.我作为IC产业的逃兵,最近也在思考很多的问题,包括资本市场.集成电路行业和研究所的一些不成熟的想法. 2008年进入华中科技大学电子系,中科院半导体所毕业后进入联发科从事手机芯片开发(没错,就是卖的不怎么好的X30).离开MTK之前有一段小插曲,招我进联发科的老大后来自己出来创业做安防芯片,当时喊我去他的团队,其实从一个技术员工或者说前途上看,选择前老大公司是确定无疑最好的出路(优秀的老大,出色的技术,看得见估值增…
本节主要来介绍一下,在C#中制造爬虫,最为常见.常用.实用的基础类 ------ WebRequest.WebResponse. 先来看一个示例 [1.2.1]: using System; using System.IO; using System.Net; using System.Text; class Program { static void Main(string[] args) { var request = WebRequest.Create(@"https://www.cnbl…
之前的章节也略有提及反爬策略,本节,我们就来系统的对反爬.反反爬的种种,做一个了结. 从防盗链说起: 自从论坛兴起的时候,网上就有很多人会在论坛里发布一些很棒的文章,与当下流行的“点赞”“分享”一样,很多人都会因为“欣赏”而选择“转发”到各大论坛.今时今日,我们大多数人在转载他人文章时,还会特别注明“转载自xxx”,可在以前,人们的意识还没有那么强,那时,在线播放的视频资源还是比较少的,转载的难度不高,手段也比较粗糙,仅凭复制粘贴就可以转载大部分的资源,导致优秀的作品很难找到出处,甚至搜索引擎前…
​2019年,国内人工智能领域的投融资热情大幅降低,相当数量的AI企业彻底消失在了历史的长河中,“人工智能寒潮已至”甚至成为行业年度热词. 与前几年创业与投资热情齐头并进的盛况相比,近段时间的AI行业显然萧条了很多. 究其原因,“AI落地难”要负主要责任. 从自动化时代到智能化时代,人工智能创造的价值在不断增长.与此同时,业务场景的精细度与复杂度也在不断提升,为人工智能技术的落地带来一系列挑战. 以国内人工智能企业为例.目前国内几个较大的人工智能独角兽企业,商业化落地主要集中在金融.安防监控.手…
这一次的两会过后,互联网最流行的一个词恐怕当属“互联网+”.尤其是总理关于“以互联网为载体.把线上线下互动的新兴消费搞得红红火火”的一席话,更是让国内的O2O从业者兴奋不已.百度李彦宏在两会接受记者采访时也表示,O2O一方面拉动了内需刺激了消费,另一方面也增加了就业.刘旷在这里则要大胆地预测,未来3-5年O2O必将会迎来全面爆发. 说到O2O的根源,其实我们要回归到团购.当年刘旷本人也亲身经历了千团大战,并创办了购团邦,最终失败并选择了退出.但是这一次的团购创业经历,却让自己对生活O2O有了更深…
atitit.提升研发效率的利器---重型框架与类库的差别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1. 类库 2 2.2. 应用框架 2 2.3. 框架与类库的差别主要表如今下面几个方面: 2 2.4. 框架模式就是參团游,而自由行则类似于库的组合 3 3. 框架的特点 3 3.1.  没有一个万能的框架 3 3.2. 框架是不可组合的 3 3.3. 框架设计的俩个方向::全栈式与精细化 4 4.…
第一境 ASP.Net MVC5项目初探 — 第三节:View层简单改造 MVC默认模板的视觉设计从MVC1到MVC3都没有改变,比较陈旧了:在MVC4中做了升级,好看些,在不同的分辨率下,也能工作得很好,但是HTML和CSS都是自定义的,改造起来,成本很高,也不够理想: 在MVC5中,采用了比较流行的Bootstrap框架,有很高的接受度,改造起来,成本也降低很多.当然,本书不会着重讲解Bootstrap框架. 模板页,是MVC视图的重要组成部分,MVC中,约定视图都存放在/Views目录中,…
第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. 我是谁,其实并不重要,我是高级开发.我是架构师.我是技术经理,这些都是我,跟各位没有半毛钱关系.最重要的是,我能给读者带来什么.接下来的日子里,就看看本书能给各位带来什么惊喜,也许到最后,你都不会记得我的名字,没有关系,相信我,那并不重要. 关于本书 本书是<破境之道>系列技术丛书中的一部分,将…
atitit.提升研发效率的利器---重型框架与类库的区别与设计原则 1. 框架的意义---设计的复用 1 1.1. 重型框架就是it界的重武器. 1 2. 框架 VS. 库 可视化图形化 1 2.1. 类库 2 2.2. 应用框架 2 2.3. 框架与类库的区别主要表现在以下几个方面: 2 2.4. 框架模式就是参团游,而自由行则类似于库的组合 3 3. 框架的特点 3 3.1.  没有一个万能的框架 3 3.2. 框架是不可组合的 3 3.3. 框架设计的俩个方向::全栈式与精细化 4 4.…
续上一节内容,本节主要讲解一下Web压缩数据的处理方法. 在HTTP协议中指出,可以通过对内容压缩来减少网络流量,从而提高网络传输的性能. 那么问题来了,在HTTP中,采用的是什么样的压缩格式和机制呢? 首先呢,先说压缩格式,主要有三种: DEFLATE,是一种使用 Lempel-Ziv 压缩算法(LZ77)和哈夫曼编码的数据压缩格式.定义于 RFC 1951 : DEFLATE Compressed Data Format Specification: ZLIB,是一种使用 DEFLATE 的…
续上一节内容,对Web爬虫进行进一步封装,通过委托将爬虫自己的状态变化以及数据变化暴露给上层业务处理或应用程序. 为了方便以后的扩展,我先定义一个蚂蚁抽象类(Ant),并让WorkerAnt(工蚁)继承自它. [Code 2.2.1] using System; public abstract class Ant { public UInt32 AntId { get; set; } public Action<Ant, JobEventArgs> OnJobStatusChanged { g…
首先欢迎您来到本书的第二境,本境,我们将全力打造一个实际生产环境可用的爬虫应用了.虽然只是刚开始,虽然路漫漫其修远,不过还是有点小鸡冻:P 本境打算针对几大派生类做进一步深耕,包括与应用的结合.对比它们之间的区别.综合共性.封装.One-By-One. System.IO.Packaging.PackWebRequest System.Net.FileWebRequest System.Net.FtpWebRequest System.Net.HttpWebRequest 第一节,我们先来说说最…
在第一境中,我们主要了解了爬虫的一些基本原理,说原理也行,说基础知识也罢,结果就是已经知道一个小爬虫是如何诞生的了~那么现在,请默默回想一下,在第一境中,您都掌握了哪些内容?哪些还比较模糊?如果还有什么不清楚或不牢固的地方,建议还是先返回去再看一遍,毕竟看比我写要快得多~ 如果都掌握差不多了,OK,本着本书”看完丢掉“的理念,就不用再去想它了,那么,恭喜各位已经阅读过本书第一境的朋友们,已经可以正式突破第一境,进入到爬虫境界的第二境了,接下来不要懈怠,让我们继续新的征程! 我们在第一境中,一直都…
为什么说到数据流了呢,因为上一节中介绍了一下异步发送请求.同样,在数据流的处理上,C#也为我们提供几个有用的异步处理方法.而且,爬虫这生物,处理数据流是基础本能,比较重要.本着这个原则,就聊一聊吧. 我们经常使用到的流有文件流.内存流.网络流,爬虫与这三种流都有着密不可分的联系,可以联想以下这些场景: 当我们采集的数据,是一个压缩包或者照片,那么要存储它们到硬盘上,就需要使用到文件流了: 当我们采集的数据,是经过GZip等压缩算法压缩过的,那么要解压它,就需要使用到内存流了: 当我们的爬虫运行起…
前两节,我们对WebRequest和WebResponse这两个类做了介绍,但两者还相对独立.本节,我们来说说如何将两者结合起来,方式有哪些,有什么不同. 1.4.1 说结合,无非就是我们如何发送一个Request以及如何得到一个Response. WebRequest提供了三组方法(Framework 4.6.1+,其它版本没去细看) [Code 1.4.1] public virtual WebResponse GetResponse(); -------------------------…
第二节中,我们介绍了WebRequest,它可以帮助我们发送一个请求,不过正所谓“来而不往非礼也”,对方收到我们的请求,不给点回复,貌似不太合适(不过,还真有脸皮厚的:P). 接下来,就重点研究一下,我们收到的回复,是个什么样的东东 [Code 1.3.1] // // Summary: // Provides a response from a Uniform Resource Identifier (URI). This is an abstract // class. public abs…
在构建本章节内容的时候,笔者也在想一个问题,究竟什么样的采集器框架,才能算得上是一个“全能”的呢?就我自己以往项目经历而言,可以归纳以下几个大的分类: 根据通讯协议:HTTP的.HTTPS的.TCP的.UDP的: 根据数据类型:纯文本的.json的.压缩包的.图片的.视频的: 根据更新周期:不定期更新的.定期更新的.增量更新的: 根据数据来源:单一数据源.多重数据源.多重数据源混合: 根据采集点分布:单机的,集群的: 根据反爬虫策略:控制频率的,使用代理的,使用特定UA的: 根据配置:可配置的,…
第一节:写作本书的目的 关于笔者 张晓亭(Mike Cheers),1982年出生,内蒙古辽阔的大草原是我的故乡. 没有高学历,没有侃侃而谈的高谈阔论,拥有的就是那一份对技术的执著,对自我价值的追求. 我是谁,其实并不重要,我是高级开发.我是架构师.我是技术经理,这些都是我,跟各位没有半毛钱关系.最重要的是,我能给读者带来什么.接下来的日子里,就看看本书能给各位带来什么惊喜,也许到最后,你都不会记得我的名字,没有关系,相信我,那并不重要. 关于本书 本书是<破境之道>系列技术丛书中的一部分,将…
之前的章节,我们陆续的介绍了使用C#制作爬虫的基础知识,而且现在也应该比较了解如何制作一只简单的Web爬虫了. 本节,我们来做一个完整的爬虫系统,将之前的零散的东西串联起来,可以作为一个爬虫项目运作流程的初探,但实际项目中,还需要解决其他一些问题,我们后续章节也将继续深耕:) 先来看一下解决方案的整体结构: 我们也希望我们的爬虫框架能够被应用到跨平台的项目中,所以,本项目采用了.Net Core Framework作为基础. 根据上图所示,项目结构还是很简单的.爬虫框架部分,与之前章节的内容并没…
在上一节中,我们完成了一个简单的采集示例.本节呢,我们先来小结一下,这个示例可能存在的问题: 没有做异常处理 没有做反爬应对策略 没有做重试机制 没有做并发限制 …… 呃,看似平静的表面下还是隐藏着不少杀机的…… 但本节不打算对付上述问题,而是先关注一个隐藏更深的问题,这个问题,可能会牵扯很多人(包括我☹,不包括我☺,包括我☹,不包括我☺)的编程习惯问题. 这里提出一个突出的问题,就是堆栈溢出的问题. 首先,我们以上一节的示例为例,解析一下造成的原因,下图演示了一个内容采集的游走路径,也就是调用…
今天正式开一本新书,<C# GDI+ 破镜之道>,同样是破镜之道系列丛书的一分子. 关于GDI+呢,官方的解释是这样的: GDI+ 是 Microsoft Windows 操作系统的窗体子系统应用程序编程接口 (API). GDI+ 是负责在屏幕和打印机上显示的信息. 顾名思义,GDI+ 是包含 GDI 与早期版本的 Windows 图形设备接口的后续版本. 好,两个关键信息: 窗体子系统应用的编程接口 图形设备接口 充分说明了GDI+的应用场景与用途.需要了解更多呢,就去查阅一下吧. 本书的…
有了上一节画线的基础,画矩形的各种边线就特别好理解了,所以,本节在矩形边线上,就不做过多的讲解了,关注一下画“随机矩形”的具体实现就好.与画线相比较,画矩形稍微复杂的一点就是在于它多了很多填充的样式.接下来,我们就来细细品味一番. 同样,一个窗体项目,窗体的布局风格与上一节的保持一致: namespace MikeWare.GdiPlus.Rectangles { using System; using System.Collections.Generic; using System.Drawi…
我们在第五节中提到一个问题,任务队列增长速度太快,与之对应的采集.分析.处理速度远远跟不上,造成内存快速增长,带宽占用过高,CPU使用率过高,这样是极度有害系统健康的. 我们在开发采集程序的时候,总是希望能够尽快将数据爬取下来,如果总任务数量很小(2~3K请求数之内),总耗费时长很短(1~2分钟之内),那么,对系统的正常运行不会造成太严重的影响,我们尽可以肆无忌惮.但,当总任务数量更多,总耗费时长更长,那么,无休止的任务堆积,就会给系统带来难以预料甚至是很严重的后果. 为此,我们不得不考虑几个问…
有了上一节画矩形的基础,画圆形就不要太轻松+EZ:)所以,本节在画边线及填充上,就不做过多的讲解了,关注一下画“随机椭圆”.“正圆”.“路径填充”的具体实现就好.与画矩形相比较,画椭圆与之完全一致,没有任何特别之处. 在画矩形时,我们使用: System.Drawing.Graphics.DrawRectangle(Brush brush, Rectangle rect); System.Drawing.Graphics.FillRectangle(Brush brush, Rectangle…