7年之痒:读《谁偷了MySpace》
MySpace,一度如日中天的名字,社交网络的代表公司,11年以3500万美元价格由新闻集团甩卖,标志着这个网站的衰落。这家04年创立的网站,前后走了七年,在08年达到它的颠覆,随后快速陨落,中间,究竟发生了什么?
精选技术长文、实践记录与系统化阅读
低噪声、高可扫读;标题、摘要、来源、标签一目了然。
采集自各技术站点的近期文章。
MySpace,一度如日中天的名字,社交网络的代表公司,11年以3500万美元价格由新闻集团甩卖,标志着这个网站的衰落。这家04年创立的网站,前后走了七年,在08年达到它的颠覆,随后快速陨落,中间,究竟发生了什么?
本文会是“选项内容”的最后一期讲解,主要会讲讲-w和-r两个选项。tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来学习了。实在研究不懂的,可以找我探讨:) == 做过网络流量分析的同学,或许都有一个共同的需求,那就是“流量保存”和“流量回放”,这就恰好对应了今天要讲解的-w选项和-r选项。 “流量保存”就是把抓到的网络包能存储到磁盘上,保存下来,为后续使用。 “流量回放”就是把历史上的某一时间段的流量,重新模拟回放出来,用于流量分析。
在最近的一次用户升级中,客户将数据库从11.2.0.1升级到了11.2.0.3版本,虽然只是一个小版本的变化,确引起了严重的性能问题。原本正常的SQL执行计划,因为使用了布隆过滤,导致了百倍的性能衰减。在版本升级中,严格的性能测试必不可少,比对SQL执行计划变化,是测试评估的必要步骤。
上篇文章说过,tcpdump会分成“选项”、“过滤表达式”和“输出信息”三部分讲解。 截止到目前,我们一直在围绕tcpdump的选项部分进行讲解,已经介绍过的选项包括-i选项、-nn选项、-c选项、-X选项、-e选项、-l选项。 今天仍然不例外,我们继续有关选项的内容。
先简单介绍下Dump Plugin的由来,在搜索Dump中心服务化的项目中,我们把Dump中心的增量数据产出分为2个阶段,Loader阶段和Join阶段,Loader阶段把数据准备成Key-Values形式,Join阶段将数据取出,计算各种业务逻辑并产出最终数据。业务逻辑的计算是相当繁琐且易出错,这类事情做一遍足以,所以设计了一个接口,按照业务自身划分成一个个小块逻辑实现接口。这些个小业务逻辑模块即构成Dump的业务Plugin。这样做的好处: 1, 按业务本身划分,结构相对清晰,容易维护。 2, 架构和业务通过接口交互,重构架构将尽可能少的影响业务代码 3, 每个业务模块的耗时能准确统计出并能做针对性的优化。
很有趣的事情。如果不发生交易,一个家庭的“钱”的数量应该是不变的。比如,在这个时刻,我们象木头人游戏那样喊“停!”,然后谁都不要动,每个人手里的钱的数量就会不动。这个时候假设一种情况:你开始把自己的一个坏了的相机修好了,这个时刻你的钱虽然没有发生变化,但是你的财富发生了变化,你变得比原来多了一个“好相机减去坏相机的差价”那么多财富,广义上来说,整个人类社会的财富增加了这么多。 钱仅仅是一种流通的符号。在任何时候,钱的总量应该是比较固定的,至少纸币是这样,因为政府保证了它的稀缺性,就是总量的稳定。如果一个人拿到了一张纸币,一定有另外一个人少了一张纸币。如果广义的把所有电子货币也算进去,其实总量还是固定的,除非中央银行干点儿事情。从这个角度上来讲,钱是大小不变的蛋糕,我们只是决定怎么分蛋糕,如果多点,有人就会少点。 但财富不是。如果你拿一张白纸出来,画了幅画,你就在改变手里的财富。如果你是个好
基本类型如何使用元表 在lua里只能为表设置元表,而在c程序里面可以为基本类型进行元表操作,但上篇博文提到了普通类型的很多操作是不会走到元表,下面的例子针对数字类型,添加多种事件,只有部分事件会生效.下面的例子在c代码里对数字类型添加元表对__add,__len都设置事件.
表是如何调度到元表的呢,上篇博文的例子我们看到当键值未能被查找到之后会调用__index事件对应的函数.现在举一个”__add”事件来遍历重要环节的源码..... arith_op是个宏,会针对操作数进行类型判断,如果是数字类型就会立即进行相加,这就是为什么基本类型即便设置了加减等事件函数后还是没有效果,例如你为数字的加法设置了__add事件后数字相加不会掉用这个元表方法,后面会举一个例子.
lua metatable(以下简称元表)类似c++的operator overloads,可以对复合结构进行操作,在lua里最常见的就是对表的操作.举例来说,当两个表作加法操作的时候,Lua会检查表的元表中是否有”__add”事件是否对应一个函数(metamethod)。如果存在Lua会调用这个函数来执行一次表的加法操作. __index和__newindex是表常常要添加的事件,用于处理键值在表无法被查找到之后的处理.
在绘制业务流程图前,思考如何精美,如何交互,使用什么工具,都不应该是重点。 真正重点的是将业务流程图的关键要素给搜集一番。请试图回答清楚以下几个问题,否则不要开始绘制流程图:整个流程的起始点是什么?整个流程的终结点是什么?在整个流程中,涉及到的角色都是谁?在整个流程中,都需要做什么事情?(可是是一个会议,可以是一个任务) 这些会议和任务是可选还是必选的?分别产出什么文档?这有点像一个头脑风暴,能够帮助你将所需用到的原材料获取到,有了这些“米”和“水”,那就不愁去如何烹饪了。
还记得我们前文谈到的优化路径吗?在这个路径中,我们强调从定义KBR开始,然后分解影响KBR绩效的驱动因素,然后再确定这些驱动因素中哪些是基础驱动因素,哪些是非基础驱动因素,再尝试分析基础驱动因素并着手改进,同样,尝试分析非基础驱动因素并着手改进,这之后测试你的这些改进是否有效并固定有效的改进(优化)。由于优化不可能是针对所有人群和兴趣的,所以最后你要在优化的基础上进行动态处理(定制化)。
创业这件事 我有表达的欲望,恰好我又有书写的能力。这些文字只与我的这些欲望有关。 1. 2012年5月,我30周岁,我开了一家公司。 而在此之前呢,我在一家外企干了4年,职位做到企业架构师,薪资丰厚,每年平均飞行4万公里,在美国呆一个月晒晒加州的太阳。这家公司于2011年上市。 在公司呆了4年,职位越来越高,薪水越来越好,事情越来越少,但是我越来越迷茫。老东家是我呆过的最好的公司,这里的4年也是我成长最快的4年,可是4年真的太久了。 读《与理想有关》,读到这么一段。 拉拉又说:“如果有可能,我希望过的生活是,不用操心ppt里的excel附件,不用和李卫东争着表现,事实上,对我来说,这样的事情实在是累人累心,我并不擅长此道,我本来就是自觉自愿努力干活的人,可我不喜欢我的努力是被迫的,也不喜欢我的工作节奏不由我的掌控——其实这不是我个人的问题,你看,奴隶社会为什么生产力就特别低下?
功能与商业确定需求(的价值、范围)后,便着手思考解决方案。很多方案是对产品功能的添删和改善,比如上传图片: 「上传图片」按钮。但一次只能上传1张图片 添加「批量上传」按钮,一次最多可以上传25张图片 删除「上传图片」按钮,更新「批量上传」按钮为「上传」,一次可以上传30张图片 优化视觉,突出「上传按钮」 优化方式,允许用于拖动图片到网页即可上传。同时将上限提高到50张 然而,功能通常滞后,而且容易被竞争对手模仿。功能上的改进对专业的竞争对手来说几近透明,还记得脸谱用更改颜色来验证校内网「反应速度」的例子吧(别在意是否真实)。反之亦然,自己的产品也可以跟风很酷的功能。
在第一招中,我们给大家演示了用tcpdump抓包的简单方法。接下来,我们会比较系统的来介绍tcpdump工具了。 从我的理解来看,tcpdump可以分为三大部分内容,第一是“选项”,第二是“过滤表达式”,第三是“输出信息”。 下面的文章,会分别从这三个方面来重点介绍。 == tcpdump的选项,我还真是专门数了一下,总共有50个之多。在这个系列文章中,实在很难全都覆盖,我尽量挑选重要且常用的选项来讲解, 一些不常用的选项,大家抽空可以自己去了解一下。 在《第一招》中讲到了-i选项、-nn选项、-c选项、-X选项。今天,我们继续介绍另外两个重要的选项,即-e选项和-l选项。
通常在产品可用性测试之后,我们能收集到诸多的定量数据,比如:任务正确率、求助次数、任务完成时间和用户主观满意度等方面的数据,并能通过任务完成中的观察和测试之后与参加者的交流获得一些定性数据(如可用性问题和优点),进而通过对这些数据的统计分析获知被测产品的总体可用性状况。但是由于这些度量指标具有不同的属性,对其所进行的简单统计分析就不足以形成对产品可用性的一个可衡量的标准。层次分析的模糊综合评价方法(AHP)为我们处理这些评价数据提供了一种可用的量化统计方式,从而获得用户体验质量的综合性评判。但与灰色关联分析不同:灰色关联分析更侧重于对产品设计的多个方案或者时间版本进行比较分析,其方法是建立在比较的基础之上,而层次分析的综合评价方法则可以对单个产品或设计方案的可用性进行衡量和量化。
虽然可用性测试是相对严谨的用户研究方法,但是其对无关变量控制的严格程度和真正的心理学实验还是有一定的差距;并且心理学实验对每组参与者数量的最低要求是30人,这样得出的结论(数量比例)才具有推论至一般的意义。而可用性测试一般才8人左右的参与人数(尽管招募的参与者在质的方面非常具有代表性),但却无法把可用性测试中出现的所有数量比例简单推论至一般。8个参与者中有1人发现某个问题,不代表现实中出现同样问题的真实用户只有12.5%,更不代表这个问题不是真正的/严重的可用性问题。
通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包。 形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,海关人员总要打开箱子,看看里面都装了点啥。 学术的说,tcpdump是一种嗅探器(sniffer),利用以太网的特性,通过将网卡适配器(NIC)置于混杂模式(promiscuous)来获取传输在网络中的信息包。
你是否有这样的经历: 加入一个新项目,装了一天环境,精疲力竭,但是,我并没有写一行代码。在网上看到了一个自己有兴趣的开源项目,clone下来,构建一下失败,折腾半天环境都没搞定,最初的兴趣荡然无存。我要测试一个东西,但要配A,弄B,折腾C,别人问及进展,还没开始呢!作为项目的主力,每来一个新人,我都要帮他搭建开发环境,这些人咋就不能自己搞定呢?产品环境来bug了,可是,我本地根本重现不了。这群笨蛋,我都根他们说了多少遍,为什么还在用C的命名方式命名Java函数呢?这个要调试必须部署到远端的服务器上才能做。 …… 这样的例子,作为一个软件开发愤青,我还能举出很多。这些年软件做下来,我总能在各种各样的场景下遇到各种各样的问题,究其根源,无非是基础设施出了问题。与其说出问题,不如说是人们忽略了基础设施在软件开发项目中的重要性。
火云邪神语录:天下武功,无坚不破,唯快不破!Nginx的看家本领就是速度,Lua的拿手好戏亦是速度,这两者的结合在速度上无疑有基因上的优势。 最先将Nginx,Lua组合到一起的是OpenResty,它有一个ngx_lua模块,将Lua嵌入到了Nginx里面;随后Tengine也包含了ngx_lua模块。至于二者的区别:OpenResty是Nginx的Bundle;而Tengine则是Nginx的Fork。值得一提的是,OpenResty和Tengine均是国人自己创建的项目,前者主要由春哥和晓哲开发,后者主要由淘宝打理。
曾经作为评委参与过一个移动运营商的视频内容供应商招标活动,搜狐视频派出的员工非常骄傲地告诉在场的人:网民感兴趣什么,搜狐都知道。其实我一点也不怀疑这个说法,搜狐的确有这样一份资源。而这份资源,是大数据时代数据竞争的前提。在我看来,搜狐完全没有必要去拼命折腾微博。新浪在微博上深耕三年,至今还不知道大部分用户是谁(v字认证除外),搜狐依靠搜狗三件套,就足以了解用户了,也为互联网广告从广播式广告向定向广告转变建立自己的前提。