iamyoung001

iamyoung001 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织填写个人主网站
编辑

keep calm

个人动态

iamyoung001 回答了问题 · 2016-05-10

解决如何解决apscheduler定时任务自动重启,导致定点执行的任务未执行完成

misfire_grace_time 这个参数的前提是使用可持续化的jobstore,如果使用默认内存的jobstore,这个参数是没有意义的。

一般需要使用misfire_grace_time的场景,就是但是那个持久化jobstore的服务挂掉了,任务需要被调度的时候没有被调度成功,后期持久化的jobstore启动了,这个任务重新被调度了(从jobstore中获取job),misfire_grace_time决定这个任务在错过执行时间之后还需不需要执行

clipboard.png

clipboard.png

关注 3 回答 2

iamyoung001 发布了文章 · 2014-06-09

CDN工作原理

传统的网络访问形式为:

传统的网络访问形式

由上图可见,用户访问未使用CDN缓存网站的过程为:

  1. 用户向浏览器提供要访问的域名;
  2. 浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
  3. 浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;
  4. 浏览器根据域名主机返回的数据显示网页的内容。

通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,下面让我们看看访问使用CDN缓存后的网站的过程:

CDN工作原理

CDN客户使用CDN的方法:
对于CDN客户来说,不需要改动网站架构,只需要修改自己的DNS解析,设置一个CNAME指向CDN服务商即可。原理在下面会解释

通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:

  1. 用户向浏览器提供要访问的域名;
  2. 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库得到的是该域名对应的CNAME记录(由于现在已经是使用了CDN服务,CNAME为CDN服务商域名),为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。(CDN服务来提供最近的机器)
  3. 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
  4. 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
  5. 缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
  6. 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。

概念解析:

CNAME(Canonical Name)指别名记录也被称为规范名字,CNAME可以理解为对域名设置别名。比如一个域名www.domain.com,设置一个CNAME指向它,由于www.domain.com与一个ip进行绑定,如果设置多个CNAME指向它,以后修改CNAME指向的服务器时,只需要修改一个www.domain.com对应的ip即可。详细可以参考dns一些名词解释,

查看原文

赞 28 收藏 57 评论 1

iamyoung001 评论了回答 · 2014-06-09

redis数据库把它分散到两台机器

iamyoung001 赞了文章 · 2013-12-21

技术人攻略访谈十八:当数学家遇上大数据

请输入图片描述

文:Gracia

导语:本期采访对象@陆丹峰,大数据领域创业者。思维严谨,凡事讲求效率,习惯性地寻找最快、最优美的解决方案,关注事物的本质……北大数学系的7年时光显然在他身上烙下了深深的印记。正是由于这些特质,当下流行的“大数据”在他眼里并不难,阳光底下无新事,只要掌握了底层的原理和数学知识,一切就会像庖丁解牛般游刃有余。

他曾用半年时间完成了一篇SCI索引文章(SCI索引是博士毕业的标准),守着横溢的才华不挥霍那不是浪费吗!于是毕业的时候打着创业的幌子玩了半年游戏,游戏没做成,却发现不能再这么玩下去了。再后来的日子,他奋起直追。曾先后几次从无到有搭建技术团队,在上家公司,他负责搭建并管理近百人的研发团队,及公司核心产品线的架构与研发。可他心里清楚,团队再大,也是为了实现别人的梦想,而一直以来,他都想要追寻自己的梦。

终于还是辞职了。他看好大数据处理的未来,创业方向是基于社交媒体的流式数据加工和处理平台。对于这个曾经的数学家来说,大数据的算法复杂度是可以计算的,而创业则要面对更多的变量,在寻求优美架构的背后,还需要很多商业上的支撑。见面那天,他的日程安排得很紧张,下午刚参加完微软孵化器的面试,晚上还要继续见人。采访完成后,我们一起吹着冷风,步行从中关村去北大,二十分钟的路程,他一直在和客户做电话沟通。创业公司刚起步,为了团队能继续追梦,他不得不接一些算法优化方面的项目,在理想和现实间寻求平衡。过了这么多年,他早已不再像毕业时那般心高气傲,而是更加沉稳和实际,脚踏实地的追寻梦想。

  • 技术人攻略:听说你大学7年都在北大,能简单介绍一下求学过程吗?

我本科和研究生都在北大,专业是数学。研究生的方向是图像处理,毕业前用了半年,完成了一篇SCI的索引文章(SCI索引是博士毕业的标准)。论文的内容是关于曲面重建,通过采集到的零散的点,去掉噪音,把原有的场景和形状还原出来。当时非常疯狂,导师在美国,我在中国。每天大概7点去实验室,12点甚至1点回宿舍,半学期就完成了从理论到建模的工作。

05年毕业的时候导师想让我跟他去美国做研究,而我对互联网很感兴趣,想留在国内创业,所以连简历都没有写。当时创业气氛没有现在这么浓厚,北大毕业生这样做的比较少。

于是联合了另外两个本科同学打算做网游,怎么做呢?当时想的是要先玩好游戏才能做游戏。正好魔兽世界特别火,我们仨都沉浸在其中。半年里每天除了吃饭睡觉,就是打游戏,最后游戏没做成,却发觉不能这么玩下去了。

现在回想,这半年是一种很特殊的人生经历,可是这个过程中失去了非常多的东西。选择创业没有错,但当时的我们太心高气傲,不管是对市场、对怎么做这件事情和对自身,都没有一个足够清晰的定位和认知。如果能重新再来一次,我应该会做不一样的选择。

  • 技术人攻略:第一次创业失败之后又干了什么?

第一次创业失败之后,仍然还是想创业,跟着一个同学的前领导,开始做大型网站的质量分析和诊断。比如说一些国家机关的网站,做得非常庞大,我们就想办法帮它做优化,检查页面上是否有断链、提升访问速度、做SEO优化等。由于发展方向不是我喜欢的,所以07年离开了。

这个时候我感觉需要进入大公司学一些东西,补充自己在认知体系、经验方面的欠缺。正好日本电通成立了Digital Marketing部门,我加入进去负责整个IT部门和IT团队的搭建,工作内容一方面是公司内部IT的运维,另一方面是精准营销产品的开发,主要是广告数据的分析产品。

在互联网营销这个领域做了两年多以后,遇到 AdMaster的负责人闫曌。AdMaster专注于做网络广告的效果监测,刚拿了风投,需要加强研发团队,我们就一拍即合在一起了。本来研发团队都在上海,我去了后就开始有北京研发团队了。在电通,IT属于支持部门,发挥的空间也比较少。AdMaster是一家广告技术公司,可以有很大的成长空间。

我在AD的两年半里,从无到有建立了北京研发团队,重构了广告监测产品的底层并主导了基于社会化媒体的数据分析产品。但我骨子里还是喜欢自己创业,给人打工是帮别人实现梦想,就算挣几万块钱一个月,也无法完全支配自己的生活。

  • 技术人攻略:现在自己创业做什么方向呢?

我比较看好大数据和大数据处理的未来,我们正在做一个基于社交媒体的流式数据加工和处理平台,实时对社交数据做各种各样的加工,可以应用到精准营销、企业公关预警、行业趋势预测、竞品分析等领域。在数据获取到以后,我们可以在毫秒级别实现数据的实时处理及呈现。

这种对数据的需求,现在看来可能只是大企业愿意花钱,很多中小企业甚至个人没有办法去享受这种数据服务,一方面是因为服务太贵,另一方面是现在市面上的产品还达不到客户的需求。但是如果可以把这个服务变得非常方便,把收费的模式变得非常灵活,中小企业或个人都会有相应的需求。例如,我想买一个东西,特别希望了解背后的信息和评价。但是这些信息得靠我花时间去挖掘,未来通过我们的服务,瞬间就能把这些信息全部展现出来。

  • 技术人攻略:社交网站如新浪微博的活跃度在下降,会不会对产品造成影响?

不会。我们其实是做一个数据处理的架构,针对不同的平台会有不一样的数据获取方式,和数据源的关系不大。除了社交媒体之外,我们还会抓取一些视频媒体、电商媒体的数据。永远不要为数据担心,因为数据在五年以后,你不知道它会有什么样的变化。五年以前我们有这么多数据吗?根本没有。你现在觉得拿不到什么数据,以后的数据会越来越多。

  • 技术人攻略:你们的系统在数据的获取、清洗、处理、呈现这几个环节,哪块你感觉比较有技术挑战?

技术挑战是在流式处理的环节里,要加入很多的元素进去,通过数据之间的关联关系增强数据。如何增强呢?当从社交平台上拿到某一条数据的时候,里面可能有一个ID及这个ID说了什么话。但是并不知道ID背后的这个人是什么样的,我们会增强它。首先我们会找到ID背后是什么样的人,把性别、年龄,或者其他的数据算出来,这是一部分增强;第二是把他说的这句话做语义分析,让这条信息获得更多的含义,比如说包含什么样的主题和情感。

对于不同网站的数据,我们还考虑到数据之间的Map映射,通过Cookie、帐号、或者用户信息做关联匹配。比如说在微博上的用户名、邮箱、生日等信息,可以和豆瓣上的信息一起做相似度匹配,计算出来是否是同一个用户。

做大数据分析的门槛,一方面是要有构建大型系统的经验。大型系统有非常高的并发,非常大的数据量,要能预见到问题在什么地方,在什么样情况下有什么样的问题,用什么样解决方案,这个难点已经把大部分人挡在外面了。第二个难点,要能够运用数学知识。大数据涉及的机器学习、自然语言处理都逃不过数学,算法里的分类、聚类、预测、回归,无非都是数学。在什么样的场景下,用什么样的数学模型,调一个什么样的参数,这又把好多人挡在外面。

  • 技术人攻略:之前参加业界的一个会,讨论关于组建一个大数据团队需要多少钱。来自电商企业的一个技术经理认为,30个人左右的团队,加上几十台机器,一年至少需要投入一千万。你怎么看这个问题?你们团队有几个人?

需要几个人跟你做的事情和跟用什么样的人有关,Instagram 1.5亿用户的时候,技术团队才6个人。如果一个人能力抵几个人,那要不了那么大的团队。我在上一家公司搭建了完善的大数据离线和流式处理系统,每天大概有十几亿数据量的采集,50个Hadoop节点,可真正负责核心数据采集和Hadoop运维的人不超过四个。

对大公司来说人多好办事,可我觉得小而美反而会更好。Google的Analytics这个产品,最初始的原型就是一个印度人开发的。人不在于多,而在于精。你用什么样的方式去解决这个事情决定了时间和成本,有很多问题的解决方案有很多,但有一条方案有可能是最合适的、最省时间的、最便宜的,但是往往很多人找不到这样的方法。你能根据自己的经验和知识构建出好的解决方案,你就值得比其他人获得更多的回报。

我们团队加上我自己才四个半人,一个产品经理、一个做大数据的、一个算法工程师,半个是我们的在校实习生。他们的技术和知识面都非常广,并且数学功底都比较深。

  • 技术人攻略:大数据技术很火爆,市场究竟需要具备什么技能的大数据人才?

市场肯定是缺大数据处理的人才的,但我说的是“人才”。现在也有培训公司在做大数据培训,但培训出来的那不叫人才,叫技术工人。培训公司教的就是Hadoop怎么搭、MapReduce怎么写,这种东西其实用不着培训,善学的人看看网上的资料就可以做了。真正的人才是理解数据的人,核心在于掌握大数据处理的思维方式。分布式处理技术老早之前就有了,自己写一套架构就可以实现,只不过Hadoop架构让这种服务变得非常便捷和廉价。

大数据的思维跟平常处理数据的思维不一样。几个重要的变化包括:用全量数据代替采样、通过寻找相关性代替寻找因果关系、拥抱杂乱无章的数据。这几点总结来自《大数据时代》那本书,引用一下。

采样的方法很难保证随机性,而且一旦采样采错了,最后的结论就是失之毫厘,谬以千里。用全量数据则没有这个问题。直接的因果关系往往难以找到,而相关关系比较容易挖掘,并且相关性也多种多样,比如强相关弱相关、正相关负相关、线性相关非线性相关等,都是我们日常中要经常遇到的。第三是使用各种各样的杂乱无章的数据,例如PC的、手机的、穿戴式设备的、脑电的,及线下的数据,你要想办法把他们揉杂在一起。数据越多,你描述一个东西就变得越丰富,越有可能接近真实的情况。

  • 技术人攻略:对于想进入大数据领域的人,除了思维上的变化,在技能上需要做什么准备?

技能方面最重要的是理解两点,第一是跟底层操作系统相关的方方面面,第二是数据处理的一些基本算法。

现代的技术逃脱不了操作系统相关的知识,分布式的算法也是一样,无非是把一些任务拆解分到不同的机器上,让不同机器上的数据在本机运算,然后再传回去而已。当你对操作系统各项东西都理解了,比如内存、进程、IO都弄清楚了,你就是一个很好的架构师,在当前技术领域里就没什么太大的难事,大数据在你面前就灰飞烟灭了。

市面上很多技术人员对IO的原理都搞不清楚,IO模型有几种,Windows用什么样的模型,Linux用什么样的模型,一台机器如何应对那么多的请求访问,高并发到底怎么实现,一个请求怎么产生的,在服务端怎么处理的,最后怎么返回给用户的,整个的环节操作系统是怎么控制的……而且很多小朋友对于算法复杂度,也是搞不清楚的。我实现一个东西,最低的算法复杂度是多高,都是可以计算出来的。

这就是你的知识体系问题,我们的教育体系在教的时候,没有特别好地让学生把这些做IT,做互联网最基本的知识学到脑子里。一些人在写代码的时候,用的逻辑简直非常可笑,不是严谨的,不是最精简的,不是一个合理的逻辑,只是实现了一个功能而已。为什么这些人找不到很好的方式去提升自己?或者学了一门新的语言就很得意。其实这一点意义都没有,语言可以在一天之内就学会,但如果不去关注这个语言为什么会产生,这门语言解决的问题是什么是没用的。他们的思维方式,需要经过磨炼才能够达到一个新层面。

第二就是数据处理的一些最基本的算法,做互联网要用到的算法包括分类、聚类、回归、协同过滤、推荐等。至少要去学一学,去了解一下,在什么情况下,我应该用什么样的算法去实现一个什么样的东西,这些都是在做数据处理的时候非常重要的。

  • 技术人攻略:你先后几次搭建新的技术团队,这个过程困难吗?你挑人的时候看重哪些方面?

搭建新团队的过程一般需要一两个月,因为搭建之前就对团队的目标和所需的技能心里有数了。核心团队主要来自于一些志同道合者,已经建立了非常好的信任关系,所以比较容易一起共事,在这个基础上再慢慢寻找其它成员。

上一家公司的研发团队接近100人,我面过几百个人。挑人的时候我主要看两方面。第一是人品、态度和为人处事,品格要端正,待人接物要懂礼貌。因为一旦要去做一些大的事情,必然要求这个人是很大气的,一个团队的短板,决定了一个团队能走多远,一个大气的人,一个心胸宽广,一个很沉着冷静的人,必然能做大事。而且往往在危机的关头,他也知道怎么去做,他也能挺过去。

第二点这个人一定要足够的聪明,学东西一定要足够的快,这方面通过交流过程中观察他的思维和逻辑来判断。通过一个人说话的方式,组织语言的方式,基本可以看出他平时怎么思考,他有没有在思考,他以前有没有思考过这些问题。

举个简单的例子,比方说我会问:你是怎么学语言的?有些人会说,就是把语法看一遍,习题做一做,然后就上手开始做东西,这些人往往有可能就是把一个经验用了好几年。另外一个人会说,我要先去了解这门语言,它是怎么产生的,为什么存在,它的特性有哪些,它适用于哪些场景,它有什么样的数据结构,它是一个函数式语言,还是面向对象的语言。如果面试者跟我谈这些,这个人的思维模式就对路子了,说明他在更高的层面上去看这件事,这种人往往具备较强的解决问题的能力。创业团队要面临着很多特殊的情况,不可总是让老大冲在前面,每个人都要有解决问题的能力。一个人的思维模式就代表了他是否具有处理问题的能力。

我会从各个层面去了解候选人,反而技术问题会谈得非常少,因为技术都是可以教的,但为人处事,或解决问题的能力是很难教的。一个热爱运动的人身上往往会有拼搏精神,有兴趣爱好说明他能长期坚持做一件事情。我现在的团队人,每个人都有自己的爱好,但是唯一最重要的一点,他们都有一颗善良的和包容的心。当然,在上家公司招聘的人里,有10%的人还是招错了。百分之一百把人看准了,这是不可能的。

招聘的时候还遇到有一类人,是来自大公司的求职者。大公司的毛病往往在于,一个人就是一颗螺丝钉,这些人往往只会一个工具,在公司只做一件事情,工资还不低。他们换工作的原因是觉得无聊,必须要成长,不能在一个地方做两三年都做同一件事情。但是想摆脱这种困境需要做好准备,没做好准备怎么往上跳呢?所以在大公司工作一定要注意提升自己的视野和技能,这对长期成长来说,是非常重要的事。

  • 技术人攻略:你在广告领域做了这么多年,从行业大趋势和技术两方面,这个行业从你08年进去到现在有什么样的变化?

从08年开始,在线广告变得越来越火,这中间经历了视频网站、SNS、微博、电商的崛起,广告在这里面扮演了很重要的角色,每年有几百亿的市场在里面。虽然跟传统的广告相比还是很小的一块,但它的比重在变大,并且形式变得丰富多样,不仅仅是图片、文字、声音,还有地理位置,很多新东西在进入广告这个领域。互联网广告不停改善的目标,一方面是把营销变得更精准,另一方面是把广告变得不是那么突兀,而是以一个非常的自然的状态呈现。

但中国互联网有很多急功近利和不太好的地方,比方说做广告监测的时候,我们发现很多媒体都在作弊;还有就是媒体间竞争越来越激烈,同质化严重,例如视频网站的内容同质化,但慢慢地大家也在走差异化道路了;另外对于怎样避免广告干扰用户,怎样避免隐私被过渡使用,这是需要我们全行业去解决的。大家应该联合起来建立一套标准,把用户服务好,而不是想着瓜分用户、抢用户、不停骚扰用户,这样只会把这个行业毁掉。

技术的演变并没有什么特别的新的东西,但是技术在逐渐的被模块化和标准化。现在构建一个产品,已经可以根据业务的场景,用开源的服务把它搭建起来,生产力变得更加高效了,技术正变得易用、标准、开放、可拆卸。

  • 技术人攻略:你平时的兴趣爱好是什么?

早年听了很多摇滚,看了很多电影啊书什么的,算是文青。游戏打的也不少。现在这些基本都是需要放松一下时候才碰一下。但是运动还是要坚持的,跑跑步踢球游泳什么的,逮到机会并且空气也不太差的时候就锻炼一下,身体对于创业来讲非常重要,前几天因为劳累加吃坏了东西肠胃发炎,影响工作好几天。也可以说现在最大的兴趣爱好就是创业了,把这当游戏成就一样来看待,想想都是很兴奋有意思的事情。

请输入图片描述

图为2002年的世界数学家大会,和曾获得Fields奖(数学界的诺贝尔奖)的法国数学家拉弗格合影


技术人攻略访谈是关于技术人生活和成长的系列访问,欢迎和我们有共同价值观的你关注“技术人攻略”,邮箱 devlevelup@gmail.com,新浪微博 @devlevelup,希望能成为技术人成长的精神家园。
欢迎通过微信公众账号关注技术人攻略
请输入图片描述

感谢SegmentFault提供博客专栏及推广支持。
感谢迅达云成提供云主机及技术支持。

查看原文

赞 2 收藏 8 评论 4

iamyoung001 收藏了文章 · 2013-12-21

技术人攻略访谈十八:当数学家遇上大数据

请输入图片描述

文:Gracia

导语:本期采访对象@陆丹峰,大数据领域创业者。思维严谨,凡事讲求效率,习惯性地寻找最快、最优美的解决方案,关注事物的本质……北大数学系的7年时光显然在他身上烙下了深深的印记。正是由于这些特质,当下流行的“大数据”在他眼里并不难,阳光底下无新事,只要掌握了底层的原理和数学知识,一切就会像庖丁解牛般游刃有余。

他曾用半年时间完成了一篇SCI索引文章(SCI索引是博士毕业的标准),守着横溢的才华不挥霍那不是浪费吗!于是毕业的时候打着创业的幌子玩了半年游戏,游戏没做成,却发现不能再这么玩下去了。再后来的日子,他奋起直追。曾先后几次从无到有搭建技术团队,在上家公司,他负责搭建并管理近百人的研发团队,及公司核心产品线的架构与研发。可他心里清楚,团队再大,也是为了实现别人的梦想,而一直以来,他都想要追寻自己的梦。

终于还是辞职了。他看好大数据处理的未来,创业方向是基于社交媒体的流式数据加工和处理平台。对于这个曾经的数学家来说,大数据的算法复杂度是可以计算的,而创业则要面对更多的变量,在寻求优美架构的背后,还需要很多商业上的支撑。见面那天,他的日程安排得很紧张,下午刚参加完微软孵化器的面试,晚上还要继续见人。采访完成后,我们一起吹着冷风,步行从中关村去北大,二十分钟的路程,他一直在和客户做电话沟通。创业公司刚起步,为了团队能继续追梦,他不得不接一些算法优化方面的项目,在理想和现实间寻求平衡。过了这么多年,他早已不再像毕业时那般心高气傲,而是更加沉稳和实际,脚踏实地的追寻梦想。

  • 技术人攻略:听说你大学7年都在北大,能简单介绍一下求学过程吗?

我本科和研究生都在北大,专业是数学。研究生的方向是图像处理,毕业前用了半年,完成了一篇SCI的索引文章(SCI索引是博士毕业的标准)。论文的内容是关于曲面重建,通过采集到的零散的点,去掉噪音,把原有的场景和形状还原出来。当时非常疯狂,导师在美国,我在中国。每天大概7点去实验室,12点甚至1点回宿舍,半学期就完成了从理论到建模的工作。

05年毕业的时候导师想让我跟他去美国做研究,而我对互联网很感兴趣,想留在国内创业,所以连简历都没有写。当时创业气氛没有现在这么浓厚,北大毕业生这样做的比较少。

于是联合了另外两个本科同学打算做网游,怎么做呢?当时想的是要先玩好游戏才能做游戏。正好魔兽世界特别火,我们仨都沉浸在其中。半年里每天除了吃饭睡觉,就是打游戏,最后游戏没做成,却发觉不能这么玩下去了。

现在回想,这半年是一种很特殊的人生经历,可是这个过程中失去了非常多的东西。选择创业没有错,但当时的我们太心高气傲,不管是对市场、对怎么做这件事情和对自身,都没有一个足够清晰的定位和认知。如果能重新再来一次,我应该会做不一样的选择。

  • 技术人攻略:第一次创业失败之后又干了什么?

第一次创业失败之后,仍然还是想创业,跟着一个同学的前领导,开始做大型网站的质量分析和诊断。比如说一些国家机关的网站,做得非常庞大,我们就想办法帮它做优化,检查页面上是否有断链、提升访问速度、做SEO优化等。由于发展方向不是我喜欢的,所以07年离开了。

这个时候我感觉需要进入大公司学一些东西,补充自己在认知体系、经验方面的欠缺。正好日本电通成立了Digital Marketing部门,我加入进去负责整个IT部门和IT团队的搭建,工作内容一方面是公司内部IT的运维,另一方面是精准营销产品的开发,主要是广告数据的分析产品。

在互联网营销这个领域做了两年多以后,遇到 AdMaster的负责人闫曌。AdMaster专注于做网络广告的效果监测,刚拿了风投,需要加强研发团队,我们就一拍即合在一起了。本来研发团队都在上海,我去了后就开始有北京研发团队了。在电通,IT属于支持部门,发挥的空间也比较少。AdMaster是一家广告技术公司,可以有很大的成长空间。

我在AD的两年半里,从无到有建立了北京研发团队,重构了广告监测产品的底层并主导了基于社会化媒体的数据分析产品。但我骨子里还是喜欢自己创业,给人打工是帮别人实现梦想,就算挣几万块钱一个月,也无法完全支配自己的生活。

  • 技术人攻略:现在自己创业做什么方向呢?

我比较看好大数据和大数据处理的未来,我们正在做一个基于社交媒体的流式数据加工和处理平台,实时对社交数据做各种各样的加工,可以应用到精准营销、企业公关预警、行业趋势预测、竞品分析等领域。在数据获取到以后,我们可以在毫秒级别实现数据的实时处理及呈现。

这种对数据的需求,现在看来可能只是大企业愿意花钱,很多中小企业甚至个人没有办法去享受这种数据服务,一方面是因为服务太贵,另一方面是现在市面上的产品还达不到客户的需求。但是如果可以把这个服务变得非常方便,把收费的模式变得非常灵活,中小企业或个人都会有相应的需求。例如,我想买一个东西,特别希望了解背后的信息和评价。但是这些信息得靠我花时间去挖掘,未来通过我们的服务,瞬间就能把这些信息全部展现出来。

  • 技术人攻略:社交网站如新浪微博的活跃度在下降,会不会对产品造成影响?

不会。我们其实是做一个数据处理的架构,针对不同的平台会有不一样的数据获取方式,和数据源的关系不大。除了社交媒体之外,我们还会抓取一些视频媒体、电商媒体的数据。永远不要为数据担心,因为数据在五年以后,你不知道它会有什么样的变化。五年以前我们有这么多数据吗?根本没有。你现在觉得拿不到什么数据,以后的数据会越来越多。

  • 技术人攻略:你们的系统在数据的获取、清洗、处理、呈现这几个环节,哪块你感觉比较有技术挑战?

技术挑战是在流式处理的环节里,要加入很多的元素进去,通过数据之间的关联关系增强数据。如何增强呢?当从社交平台上拿到某一条数据的时候,里面可能有一个ID及这个ID说了什么话。但是并不知道ID背后的这个人是什么样的,我们会增强它。首先我们会找到ID背后是什么样的人,把性别、年龄,或者其他的数据算出来,这是一部分增强;第二是把他说的这句话做语义分析,让这条信息获得更多的含义,比如说包含什么样的主题和情感。

对于不同网站的数据,我们还考虑到数据之间的Map映射,通过Cookie、帐号、或者用户信息做关联匹配。比如说在微博上的用户名、邮箱、生日等信息,可以和豆瓣上的信息一起做相似度匹配,计算出来是否是同一个用户。

做大数据分析的门槛,一方面是要有构建大型系统的经验。大型系统有非常高的并发,非常大的数据量,要能预见到问题在什么地方,在什么样情况下有什么样的问题,用什么样解决方案,这个难点已经把大部分人挡在外面了。第二个难点,要能够运用数学知识。大数据涉及的机器学习、自然语言处理都逃不过数学,算法里的分类、聚类、预测、回归,无非都是数学。在什么样的场景下,用什么样的数学模型,调一个什么样的参数,这又把好多人挡在外面。

  • 技术人攻略:之前参加业界的一个会,讨论关于组建一个大数据团队需要多少钱。来自电商企业的一个技术经理认为,30个人左右的团队,加上几十台机器,一年至少需要投入一千万。你怎么看这个问题?你们团队有几个人?

需要几个人跟你做的事情和跟用什么样的人有关,Instagram 1.5亿用户的时候,技术团队才6个人。如果一个人能力抵几个人,那要不了那么大的团队。我在上一家公司搭建了完善的大数据离线和流式处理系统,每天大概有十几亿数据量的采集,50个Hadoop节点,可真正负责核心数据采集和Hadoop运维的人不超过四个。

对大公司来说人多好办事,可我觉得小而美反而会更好。Google的Analytics这个产品,最初始的原型就是一个印度人开发的。人不在于多,而在于精。你用什么样的方式去解决这个事情决定了时间和成本,有很多问题的解决方案有很多,但有一条方案有可能是最合适的、最省时间的、最便宜的,但是往往很多人找不到这样的方法。你能根据自己的经验和知识构建出好的解决方案,你就值得比其他人获得更多的回报。

我们团队加上我自己才四个半人,一个产品经理、一个做大数据的、一个算法工程师,半个是我们的在校实习生。他们的技术和知识面都非常广,并且数学功底都比较深。

  • 技术人攻略:大数据技术很火爆,市场究竟需要具备什么技能的大数据人才?

市场肯定是缺大数据处理的人才的,但我说的是“人才”。现在也有培训公司在做大数据培训,但培训出来的那不叫人才,叫技术工人。培训公司教的就是Hadoop怎么搭、MapReduce怎么写,这种东西其实用不着培训,善学的人看看网上的资料就可以做了。真正的人才是理解数据的人,核心在于掌握大数据处理的思维方式。分布式处理技术老早之前就有了,自己写一套架构就可以实现,只不过Hadoop架构让这种服务变得非常便捷和廉价。

大数据的思维跟平常处理数据的思维不一样。几个重要的变化包括:用全量数据代替采样、通过寻找相关性代替寻找因果关系、拥抱杂乱无章的数据。这几点总结来自《大数据时代》那本书,引用一下。

采样的方法很难保证随机性,而且一旦采样采错了,最后的结论就是失之毫厘,谬以千里。用全量数据则没有这个问题。直接的因果关系往往难以找到,而相关关系比较容易挖掘,并且相关性也多种多样,比如强相关弱相关、正相关负相关、线性相关非线性相关等,都是我们日常中要经常遇到的。第三是使用各种各样的杂乱无章的数据,例如PC的、手机的、穿戴式设备的、脑电的,及线下的数据,你要想办法把他们揉杂在一起。数据越多,你描述一个东西就变得越丰富,越有可能接近真实的情况。

  • 技术人攻略:对于想进入大数据领域的人,除了思维上的变化,在技能上需要做什么准备?

技能方面最重要的是理解两点,第一是跟底层操作系统相关的方方面面,第二是数据处理的一些基本算法。

现代的技术逃脱不了操作系统相关的知识,分布式的算法也是一样,无非是把一些任务拆解分到不同的机器上,让不同机器上的数据在本机运算,然后再传回去而已。当你对操作系统各项东西都理解了,比如内存、进程、IO都弄清楚了,你就是一个很好的架构师,在当前技术领域里就没什么太大的难事,大数据在你面前就灰飞烟灭了。

市面上很多技术人员对IO的原理都搞不清楚,IO模型有几种,Windows用什么样的模型,Linux用什么样的模型,一台机器如何应对那么多的请求访问,高并发到底怎么实现,一个请求怎么产生的,在服务端怎么处理的,最后怎么返回给用户的,整个的环节操作系统是怎么控制的……而且很多小朋友对于算法复杂度,也是搞不清楚的。我实现一个东西,最低的算法复杂度是多高,都是可以计算出来的。

这就是你的知识体系问题,我们的教育体系在教的时候,没有特别好地让学生把这些做IT,做互联网最基本的知识学到脑子里。一些人在写代码的时候,用的逻辑简直非常可笑,不是严谨的,不是最精简的,不是一个合理的逻辑,只是实现了一个功能而已。为什么这些人找不到很好的方式去提升自己?或者学了一门新的语言就很得意。其实这一点意义都没有,语言可以在一天之内就学会,但如果不去关注这个语言为什么会产生,这门语言解决的问题是什么是没用的。他们的思维方式,需要经过磨炼才能够达到一个新层面。

第二就是数据处理的一些最基本的算法,做互联网要用到的算法包括分类、聚类、回归、协同过滤、推荐等。至少要去学一学,去了解一下,在什么情况下,我应该用什么样的算法去实现一个什么样的东西,这些都是在做数据处理的时候非常重要的。

  • 技术人攻略:你先后几次搭建新的技术团队,这个过程困难吗?你挑人的时候看重哪些方面?

搭建新团队的过程一般需要一两个月,因为搭建之前就对团队的目标和所需的技能心里有数了。核心团队主要来自于一些志同道合者,已经建立了非常好的信任关系,所以比较容易一起共事,在这个基础上再慢慢寻找其它成员。

上一家公司的研发团队接近100人,我面过几百个人。挑人的时候我主要看两方面。第一是人品、态度和为人处事,品格要端正,待人接物要懂礼貌。因为一旦要去做一些大的事情,必然要求这个人是很大气的,一个团队的短板,决定了一个团队能走多远,一个大气的人,一个心胸宽广,一个很沉着冷静的人,必然能做大事。而且往往在危机的关头,他也知道怎么去做,他也能挺过去。

第二点这个人一定要足够的聪明,学东西一定要足够的快,这方面通过交流过程中观察他的思维和逻辑来判断。通过一个人说话的方式,组织语言的方式,基本可以看出他平时怎么思考,他有没有在思考,他以前有没有思考过这些问题。

举个简单的例子,比方说我会问:你是怎么学语言的?有些人会说,就是把语法看一遍,习题做一做,然后就上手开始做东西,这些人往往有可能就是把一个经验用了好几年。另外一个人会说,我要先去了解这门语言,它是怎么产生的,为什么存在,它的特性有哪些,它适用于哪些场景,它有什么样的数据结构,它是一个函数式语言,还是面向对象的语言。如果面试者跟我谈这些,这个人的思维模式就对路子了,说明他在更高的层面上去看这件事,这种人往往具备较强的解决问题的能力。创业团队要面临着很多特殊的情况,不可总是让老大冲在前面,每个人都要有解决问题的能力。一个人的思维模式就代表了他是否具有处理问题的能力。

我会从各个层面去了解候选人,反而技术问题会谈得非常少,因为技术都是可以教的,但为人处事,或解决问题的能力是很难教的。一个热爱运动的人身上往往会有拼搏精神,有兴趣爱好说明他能长期坚持做一件事情。我现在的团队人,每个人都有自己的爱好,但是唯一最重要的一点,他们都有一颗善良的和包容的心。当然,在上家公司招聘的人里,有10%的人还是招错了。百分之一百把人看准了,这是不可能的。

招聘的时候还遇到有一类人,是来自大公司的求职者。大公司的毛病往往在于,一个人就是一颗螺丝钉,这些人往往只会一个工具,在公司只做一件事情,工资还不低。他们换工作的原因是觉得无聊,必须要成长,不能在一个地方做两三年都做同一件事情。但是想摆脱这种困境需要做好准备,没做好准备怎么往上跳呢?所以在大公司工作一定要注意提升自己的视野和技能,这对长期成长来说,是非常重要的事。

  • 技术人攻略:你在广告领域做了这么多年,从行业大趋势和技术两方面,这个行业从你08年进去到现在有什么样的变化?

从08年开始,在线广告变得越来越火,这中间经历了视频网站、SNS、微博、电商的崛起,广告在这里面扮演了很重要的角色,每年有几百亿的市场在里面。虽然跟传统的广告相比还是很小的一块,但它的比重在变大,并且形式变得丰富多样,不仅仅是图片、文字、声音,还有地理位置,很多新东西在进入广告这个领域。互联网广告不停改善的目标,一方面是把营销变得更精准,另一方面是把广告变得不是那么突兀,而是以一个非常的自然的状态呈现。

但中国互联网有很多急功近利和不太好的地方,比方说做广告监测的时候,我们发现很多媒体都在作弊;还有就是媒体间竞争越来越激烈,同质化严重,例如视频网站的内容同质化,但慢慢地大家也在走差异化道路了;另外对于怎样避免广告干扰用户,怎样避免隐私被过渡使用,这是需要我们全行业去解决的。大家应该联合起来建立一套标准,把用户服务好,而不是想着瓜分用户、抢用户、不停骚扰用户,这样只会把这个行业毁掉。

技术的演变并没有什么特别的新的东西,但是技术在逐渐的被模块化和标准化。现在构建一个产品,已经可以根据业务的场景,用开源的服务把它搭建起来,生产力变得更加高效了,技术正变得易用、标准、开放、可拆卸。

  • 技术人攻略:你平时的兴趣爱好是什么?

早年听了很多摇滚,看了很多电影啊书什么的,算是文青。游戏打的也不少。现在这些基本都是需要放松一下时候才碰一下。但是运动还是要坚持的,跑跑步踢球游泳什么的,逮到机会并且空气也不太差的时候就锻炼一下,身体对于创业来讲非常重要,前几天因为劳累加吃坏了东西肠胃发炎,影响工作好几天。也可以说现在最大的兴趣爱好就是创业了,把这当游戏成就一样来看待,想想都是很兴奋有意思的事情。

请输入图片描述

图为2002年的世界数学家大会,和曾获得Fields奖(数学界的诺贝尔奖)的法国数学家拉弗格合影


技术人攻略访谈是关于技术人生活和成长的系列访问,欢迎和我们有共同价值观的你关注“技术人攻略”,邮箱 devlevelup@gmail.com,新浪微博 @devlevelup,希望能成为技术人成长的精神家园。
欢迎通过微信公众账号关注技术人攻略
请输入图片描述

感谢SegmentFault提供博客专栏及推广支持。
感谢迅达云成提供云主机及技术支持。

查看原文

iamyoung001 发布了文章 · 2013-12-18

cenos6.4下搭建svn服务器

svn安装的准备工作

首先安装svn

#yum install httpd mod_dav_svn subversion mod_ssl

测试apache、svn是否安装正确:

#service httpd status
#svn --version

如果输出都是正常的,我们可以接下来进行配置

配置svn

初始化版本仓库

新建SVN目录

#mkdir /root/svn

新建SVN仓库

#svnadmin create /root/svn/project

初始化版本仓库

#cd /root/svn/project

将svn项目目录权限设置为apache,这样以后方面和apache集成

#chown -R apache.apache project

配置用户权限

主要配置两个文件,project/conf目录下的authzpasswd文件,passwd文件主要用来添加用户authz文件主要是用来设置目录权限
passwd文件如下,在这个文件中添加了young001这个用户,密码为young001:

[users]
# harry = harryssecret
# sally = sallyssecret
young001 = young001

authz文件如下,在groups下添加了一个用户组,我添加了一个super用户组,里面的用户名为young001,设置super用户组的用户可以对与文件的根目录进行读写:

[groups]
# harry_and_sally = harry,sally
# harry_sally_and_joe = harry,sally,&joe
super = young001

[/]
@super=rw
*=

[project:/]
@super=rw
*=

最后在conf/svnserver.conf这个文件中进行一些配置:

启用[general]的几行
anon-access = read
auth-access = write
password-db = passwd
authz-db = authz

启动svn

配置完成之后,就可以启动svn

#svnserve -d -r /root/svn
#svn co svn://machine_ip/project

参考资料

  1. http://marionette.iteye.com/blog/1952577
  2. http://blog.csdn.net/vipyhd/article/details/9174091
查看原文

赞 0 收藏 2 评论 0

iamyoung001 发布了文章 · 2013-12-17

一些有意思的blog(待更新)

看起来很舒服的blog

  1. devops and security 应该是基于ruby写的blog,主题很好看.
查看原文

赞 1 收藏 0 评论 1

iamyoung001 发布了文章 · 2013-12-17

在centos6.4下安装gollum(使用markdown的wiki)

gollum 是一个可以使用markdown来写作的wiki,在安装过程中,记录一下。

gollum介绍

特点有以下几个方面:
* lightweight
* use Markdown
* web-based
* Can be easily stored in Git
github地址为Gollum,It’s a Sinatra based application. It supports, amongst others, Markdown. Evertime you make a change, it commits it in a local git repository. Also, the nice folks at Github open sourced it.

gollum安装

#yum -y install ruby ruby-devel rubygems make gcc libxml2-devel libxslt-devel git libicu-devel

由于默认使用的ruby版本太低,我们需要安装高版本的ruby,使用rvm来安装。
首先我们需要安装rvm

#\curl -sSL https://get.rvm.io | bash

待rvm安装成功之后,安装高版本的ruby,我安装的是1.9.2

#rvm install 1.9.2

安装1.9.2版本的ruby之后,需要把ruby 1.9.2设为默认的ruby版本

#rvm use 1.9.2 --default

接下来安装gollum和redcarpet(用来解析markdown语法)

#gem install gollum redcarpet

接下来,我们创建开始创建wiki

# mkdir wiki
# cd wiki
# git init
# gollum

这样已经搭建成功了gollum,gollum默认在4567端口,所以访问http://url:4567即可。

效果如图:
主界面

注意事项

gollum必须在wiki这个目录下执行,如果你在别的路径下执行gollum会报错,所以为了方便期间,可以自己写脚本来启动。
比如将下列保存为markdown_wiki

#!/usr/bin/env bash
gollum /root/wiki                

以后执行markdown_wiki即可。

我们需要将这个进程后台执行

nohup markdown_wiki

参考资料

  1. http://failshell.io/ruby/Markdown-based-wiki-using-gollum/
查看原文

赞 0 收藏 4 评论 1

iamyoung001 赞了回答 · 2013-12-17

解决SegmentFault 编辑器语法指南

代码段

对于大段的代码,代码段前使用 4 空格缩进,再贴上代码,实现 <pre> 的效果,展示的时候,我们就可以高亮代码了

代码段方法

通常我们会根据您的代码片段适配合适的高亮方法,但你也可以用 ``` 包裹一段代码,并指定一种语言(当你的代码较多时推荐使用这种方法)

```javascript
$(document).ready(function () {
    alert('hello world');
});
```

换行

回车新起一行,实现 <br> 的效果

换行方法

如果要新起一个段落,请空一行,实现 <p> 的效果

粗体/斜体

*斜体文本*    _斜体文本_
**粗体文本**    __粗体文本__
***粗斜体文本***    ___粗斜体文本___

网址链接

常用方法:

文字链接 [链接名称](http://链接网址)
网址链接 <http://链接网址> 或 http://链接网址

高级技巧:

这个链接用 1 作为网址变量 [Google][1].
这个链接用 yahoo 作为网址变量 [Yahoo!][yahoo].
然后在文档的结尾为变量赋值(网址)

  [1]: http://www.google.com/
  [yahoo]: http://www.yahoo.com/

标题

文章内容较多时,可以用标题分段,标题 1 字体最大,标题 3 字体最小

标题 1
========

标题 2
--------

# 标题 1 #
## 标题 2 ##
### 标题 3 ###

分隔符

如果你有写分割线的习惯,可以使用下面这种分隔符

---

列表

普通列表:

- 列表文本前使用 [减号+空格]
+ 列表文本前使用 [加号+空格]
* 列表文本前使用 [星号+空格]

带数字的列表:

1. 列表前使用 [数字+空格]
2. 我们会自动帮你添加数字
7. 不用担心数字不对,显示的时候我们会自动把这行的 7 纠正为 3

引用

> 引用文本前使用 [大于号+空格]
> 折行可以不加,新起一行都要加上哦

图片

跟链接的方法区别在于前面加了个感叹号!

![图片名称](http://图片网址)

符号转义

如果你的描述中需要用到 markdown 的符号,比如 _ # * 等,但又不想他被转义,这时候可以在这些符号前加反斜杠,如 \_ \# \* 进行避免。

\_不想这里的文本变斜体\_
\*\*不想这里的文本被加粗\*\*

扩展

支持jsfiddle和gist扩展,直接填写url,会展开相关内容。

https://gist.github.com/123
http://jsfiddle.net/abc/

关注 6 回答 7

认证与成就

  • 获得 30 次点赞
  • 获得 10 枚徽章 获得 1 枚金徽章, 获得 4 枚银徽章, 获得 5 枚铜徽章

擅长技能
编辑

(゚∀゚ )
暂时没有

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2013-02-07
个人主页被 303 人浏览