1、 编程排行 Billboard 3 8月编程语言排行榜:C语言助火星登陆 专题报道 架构师成长历程 7 架构师成长:行到水穷处,坐看云起时 9 陈皓:带队、沟通、成长与变化 11 淘宝专家嗷嗷:前端开发应如何去做 13 一淘清无:Nginx_lua的测试及选择 16 合格的架构师是如何炼成的 17 架构师的成长历程:实践出真知 技术热点 Techlogy hot 18 程序员成熟的标志 20 身居中国的法国程序员谈Python/PHP 22 大数据时代 数据分析师的尴尬 23 数据分析师的级别 24 代码整洁之道 26 你的代码值多少钱 ?你算过吗 28 国外程序员是如何准备面试的 30 全世
2、界有多少Java开发者? 32 开发人员眼中最好的代码编辑器 34 做有中国特色的程序员 目录 Contents 出版方: 北京无忧创想信息技术有限公司 责任编辑: 彭凡 张伟 林师授 封面设计: 钱靓 联系方法: pengfan 010-68476606(分机 8058) 出版日期: 2012 年 8 月 20 日 欢迎广大读者投稿 2012.08 51CTO.com 技术成就梦想 51CTO.com 技术成就梦想 编程排行 8月编程语言排行:C语言助火星登陆 2012 年 8 月, Tiobe 发布了 2012 年 8 月最新一期编程语言排行榜。C 语言继续其上升的 趋势, Java 份额
3、也在进一步下降。而 C#、 Python、 Perl 等语言保持原来的位置。今天我们要谈 到的是 C 语言, 正是他帮助 “好奇号” 2012 年 8 月 6 日登陆火星。 2012 年 8 月, Tiobe 发布了 2012 年 8 月最新 一期编程语言排行榜。 C语言继续其上升的趋势, Java 份额也在进一步下降。而 C#、 Python、 Perl 等语言保持原来的位置。今天我们要谈到的是 C 语言, 正是他帮助 “好奇号” 2012 年 8 月 6 日登 陆火星。以下是前 20 名编程语言排行: 美国东部时间 2012 年 8 月 6 日凌晨 1 时 30 分 (北京时间 6 日 1
4、3 时 30 分) , 新型火星探测器 “好奇” 号计划着陆火星表面。作为迄今为止设 计最为复杂精密的火星探测器, 好奇号探测车采 用的是风河公司业界领先的 VxWorks 实时操 作系统 (RTOS) 。好奇号采用 VxWorks 系统完 成被称为 EDL( 进入火星大气层、 下降以及着陆 ) 的复杂着陆过程。由于宇宙飞船安全着陆需要绝 对的精确度, 这一过程被称为 “恐怖七分钟” 。从 2011 年 11 月 26 日火箭离开地球那一刻起一直 到任务完成, VxWorks 作为火星探测车的核心操 作系统, 将在本次具有历史意义的活动上发挥至 关重要的作用。整个火星车里有 50 万行程序代
5、码, 运行在 VxWorks 操作系统上, 精准无误, 以毫 微妙计算。 VxWorks 与 C 语言 VxWorks 是美国 Wind River System 公司 ( 以下简称风河 公司 , 即 WRS 公司) 推出的一个 实时操作系统。Tornado 是 WRS 公司推出的一 套实时操作系统开发环境, 类似 Microsoft Visual C, 但是提供了更丰富的调试、 仿真环境和工具。 Wind River 和 VxWorks 相 信 很 多 嵌 入 式 程序员都不会陌生。VxWorks 支持 C 语言或者 C+ 进行开发, 并配备了叫 Tornado 的集成开 发环境。Torna
6、do 缺省使用 GNU 编译器, 支持 Ansiiso C, C+, 以及 AT&T 语法汇编 (非 Intel) 。 由于 C+ 很庞大, 而且在不断发展, 所以有些标 准 C+ 的特征可能 GNU 不支持 (基本没有编译 器支持所有 C+ 特征) 。程序员一般只要掌握 常用部分就能编出不赖的程序了。inb(),outb() 是 turbor cdos 下的, 不属于标准 C。Tornado 在 bsp 中提供了相应的 sysinbyte(),sysoutbyte() 等函数, 参考 bsp 下的 sysalib.s。 Tornado 结构的专门设计为开发人员和第三 51CTO.com 技术
7、成就梦想 编程排行 2012 年 8 月编程语言排行榜: C 语言助力火星登陆 II 方工具厂商提供了一个开放环境。已有部 分应用程序接口可以利用并附带参考书目, 内容 从开发环境接口到连接实现。 Tornado 包括强大的开发和调试工具 , 尤其 适用于面对大量问题的嵌入式开发人员。这些工 具包括 C 和 C+ 远程源级调试器 , 目标和工具 管理 , 系统目标跟踪 , 内存使用分析和自动配置 . 另外, 所有工具能很方便地同时运行, 很容易增加 和交互式开发。关于 VxWorks 组成部分, 请参考 VxWorks 组成部分 一文。 新一代开发工程助推器Wind River Workben
8、ch 集成化的开发环境意味着一个开发工作团 队运用同一种语言和工具, 不论在任何开发项目 的任何工作阶段, 都可以共同为所有的开发项目 做出贡献。 Wind River Workbench 提供了一种开放式、 基于标准的集成化设备软件开发环境。它使得企 业能够标准化它的整个设备软件开发过程到一个 公共平台下, 以其独特的将可靠性 , 功能性以及 端对端集成性整合到一起方式, 大幅优化了工程 人员、 项目团队和企业的工作效率。 与 VxWorks 6.x 系 列 配 套 的 IDE 组 件 是 Wind River Workbench, 这也是 Wind River GPP VxWorks 版的
9、重要组成部分之一。 比如 Wind River Workbench 2.2 可以最大限 度地优化电子产品制造企业的人力资源并使他们 做出最佳的表现。其中的诀窍在于把他们的时 间、 能力和经费都用于增加电子产品的特殊使用 价值, 而不是把这些资源浪费在低级、 普通、 一般 的工作中。凭借在设备软件开发领域多年积累的 丰富经验, 风河平台之中包括了功能齐全、 相互兼 容并且运行十分可靠的中间件, 可以满足许多不 同行业标准的特殊需求。而且, 由于多年来许多 行业都在广泛应用 VxWorks 实时操作系统, 已经 形成了一个稳定而良性的合作伙伴群体, 这就使 得 Wind River GPP VxW
10、orks 版具有非常好的完 备性, 很快就可以得到开发项目所需的所有资源, 从而可以更好地控制用户的经费预算和产品上市 时间。 可以说, 有了Wind River GPP VxWorks版, 再加上 Wind River 的合作伙伴全体和专业的培 训以及针对用户开发项目的指导方案, 你就可以 解决设备软件开发的所有问题了。 登陆火星用了多少代码? 根 据 51CTO 记 者 了 解 到 的 情 况, 本 次 Curiosity 好奇号登陆火星, 其包含 250 万行 C 语 言代码。这些代码运行在 BAE 制造的 RAD750 处理器上, 他们包括 150 个独立模型, 每个承担不 同的功能。
11、高度耦合的模块被抽象成组件, 被置 顶一个特定的功能或者行为。这些组件被进一步 组合为层, 整个火星登陆车包括不超过 10 个顶级 层组织。 好奇号项目中的软件开发经验 浩大的好奇号项目其实美国创意产业和商 业力量的结合, 并且 NASA 的项目管理者自有一 套创新和商业逻辑。在长达 9 年, 高达 25 亿美元 的投资中, 火星科学实验室项目 (好奇号火星登陆 项目) 其实是美国创意产业和商业力量的结合。 好奇号的登陆模拟团队同迪斯尼动画公司保持密 切联系, 从而使得 3D 登陆模拟更加精确。其它 的一些系统解决方案有来自石油公司的, 深海钻 探公司的, 甚至是农业公司的技术。 51CTO.
12、com 技术成就梦想 5 2012 年 8 月编程语言排行榜: C 语言助力火星登陆 III 这一浩大的工程是如何完成的? NASA 的 管理者自有其一套创新和商业逻辑。 允许在研发过程中的奇思妙想 一个典型的项目想法, 可能是起源于一张餐 巾纸上的草图, 然后变成 3D 模拟模型, 然后再变 成生产模型。 这一项目进行过程中, 研发人员充满了敏锐 的直觉和想象力。有时候, 他们会去想象在太空 中移动登录器的各个部件, 构建想法。 没有过于疯狂的想法, 真的! 在项目的最开始阶段, 没有批评想法的习 惯。研发人员, 凭空想出任何点子, 而其他人员不 是去评价这个点子有多么的疯狂甚至是批评, 而
13、 是去思考如何去改进这个点子。 乐于从草案开始 就像好的想法经常来源于之前的错误和过 去的经验一样, 项目的研发人员更倾向于从过去 的草案中起步, 而不是从头开始。 不要陷于复杂的事物, 将其分解为可控的最 小单元 因为有太多的复杂的、 不同的系统在好奇号 的平台上。项目的工程师们都是在相互区别的区 分的系统中完成他们的工作。他们将会把项目分 成无数的子系统, 子部件, 一遍解决单独的子问 题。 保持开门策略 无论是管理层, 还是基层员工, 每个人之间 都能保持一种坦诚的沟通, 并且能就具体问题进 行具体的分析。 不要重复发明轮子 火星登陆项目从现实商业项目中学到很多 经验, 当研发人员发现某
14、一部分的问题, 已经有现 成的解决方案的时候, 他们要做的不是重复发明 轮子, 而是直接拿来用。 允许没有伤害的小理由 在好奇号项目的软件中, 以为工程师曾经在 软件代码中添加了一段几年其过世的父亲的代 码。这些没有伤害的一些事情, 被允许从而使得 研发者对该项目充满了感情。 下面是本期编程语言排行榜的其他排名数 据和趋势走向。 前 10 名编程语言走势图 下面是第 50 到 100 的编程语言排名 (Visual) FoxPro, Apex, bc, BETA, Boo, CFML, CHILL, CL (OS/400), Clean, Clojure, Curl, Dart, Dylan,
15、 Eiffel, Emacs Lisp, F#, Gambas, Go, Groovy, Icon, Inform, Informix-4GL, J, JavaFX Script, LabVIEW, LabWindows/CVI, Ladder Logic, Maple, Modula-2, MUMPS, NATURAL, Oberon, OCaml, Occam, OpenCL, Oz, PowerShell, Processing, REALbasic, REXX, S, S-PLUS, SPARK, SPSS, Tcl, VBScript, Verilog, VHDL, X10, xBa
16、se 编程排行 51CTO.com 技术成就梦想 对于任何一个程序员来说, 架构师都是一个令人向往的角色。可以说除了 少部分对程序开发有着极度的热爱并愿意为之奋斗终身的程序员, 而大部分的 程序员都只是把写代码作为一个获得职业提升的一个必要的累积阶段。 在不断的开发和学习各种知识, 经验, 在自我培养和技能强化中不断的提 升, 为他们的未来中成为一名合格的架构师打下牢固的基础。 一名优秀的架构师, 他们都是带着极度的热情, 踏上正确的路上, 不断的坚 持!这就是一名优秀架构师的态度。在 51CTO 本期专题中, 有小编有幸采访到 了 51CTO 云计算架构师峰会的邀约讲师, 前任金蝶总体架构部
17、 SOA 架构师, 现 淘宝网高级专家彭渊 (花名: 千峰) 老师, 跟我们一起聊聊关于他的架构师历程。 51CTO 开发频道语 专题报道 51CTO.com 技术成就梦想 【51CTO 专稿】对于任何一个程序员来说, 架构师都是一个令人向往的角色。可以说除了少 部分对程序开发有着极度的热爱并愿意为之奋 斗终身的程序员, 而大部分的程序员都只是把写 代码作为一个获得职业提升的一个必要的累积阶 段。在不断的开发和学习各种知识, 经验, 在自我 培养和技能强化中不断的提升, 为他们的未来中 成为一名合格的架构师打下牢固的基础。 一名优秀的架构师, 他们都是带着极度的 热情, 踏上正确的路上, 不断
18、的坚持!这就是一 名优秀架构师的态度。下面小编有幸采访到了 51CTO 云计算架构师峰会的邀约讲师, 前任金蝶 总体架构部 SOA 架构师, 现淘宝网高级专家彭渊 (花名: 千峰) 老师, 跟我们一起聊聊关于他的架 构师历程。 前任金蝶总体架构部 SOA 架构师, 现淘宝网 高级专家 千峰 千峰简介: 从业 Java 技术领域十多年, 撰写 架构师成长:行到水穷处,坐看云起时 过多款开源软件, 拥有软件著作权的代表作有: BS 系列软件 (包括财务进销存、 OA 产品、 CRM 等) 、 FMS 视频会议、 Flash 网站生成软件。其中 BS 系列软件获得过风险投资, FMS 视频会议 获得
19、金山举办的首届中国优秀软件创新大赛优 秀奖。其中 BS 财务进销存 、FLASH 网站生 成软件 在华军、 天空可免费下载。 淘宝分布式 并行计算四合一框架 Fourinone是云计算方面 作品, 目前已经通过压测并用于淘宝业务场景 , wordcount 和排序等经典指标均优于 hadoop。 详见技术博客 ( 可下载开发包和 demo): 专长与研究领域: 千峰踏入 IT 行业至今差 不多 12 年了, 一直做 Java 技术领域, 几乎 Java SE, Java EE,Java ME 都涉及过。除此外, 他还比较熟 悉 FLASH 音视频技术和少量的 C 技术, 主要是 因为 Java
20、 在音视频和操作系统层面控制比较弱 的原因。而在应用方面, B/S 结构的企业软件架 构更是他的专长, 并拥有一系列软件著作权。在 淘宝先后在交易中心、 中间件、 核心系统部门, 主 要研究非法软件防范 (秒杀器, 炒信用, 代拍, 爬虫 等) 、 大数据处理、 语义分析、 分布式计算、 机器资 源利用等领域。 (以下内容均为第一人称) 从对 IT 热爱到程序员生涯 我在高中时买了台中英文小霸王游戏机 ( 那 编者按 这次来讲 MVC 中最后的 M。Model, 几乎可以说是网页应用的核心。之前课程提到过网页应用是由数 据库驱动, 而在很多场景, 数据库 = M ; M = 数据库。 51CT
21、O.com 技术成就梦想 架构师成长 : 行到水穷处 , 坐看云起时 时有电脑的家庭很少 ), 可以接在电视上玩, 里面有个 Basic 编程的, 我第一次学会了 goto 语 句。大学时喜欢打电脑游戏, 后来又觉的游戏打 的好不算什么, 当时流行做个人主页, 有个漂亮的 个人主页很有面子, 于是我就买了本 FrontPage 的 书, 暑假关着门学做网页, 穿插一些 js 动态效果和 applet 动画, 看见流行 flash 动画, 我又学习 flash 脚 本。后来去找实习工作, 别人说我搞的这些没用, 他们不需要网页制作, 他们要用 PB+SQL Server, 然后我又继续学习数据库
22、应用, 一直到毕业, 我自 学了很多 VC+/MFC/ODBC 等东西, 也学习了 Java。我大部分的编程都是靠自学 , 计算机课程 和老师教的帮助比较小 . 我的第一份工作是基于 Java 编程的, 还专门到 bea 公司进行了 J2EE 培训, 后来就一直做了下来。 有朋友问过我, 为什么只做 Java 编程, 不去 做 C 编程。实际上, 如果仅仅是编程语法语句, 任何一种语言我都可以很快学会。关键 Java 技 术已经是一个从无线到桌面到 Web 到 ic 卡的完 整的技术体系和规范, 并生长出各种技术生态系 统, 如果要考虑快速落地实现一个系统, 很多处理 经验是要积累起来的。 从
23、程序员到架构师的经历 “从感兴趣、 学习、 怀抱当比尔盖茨理想” 到 “走入这个行业靠编程谋生并成长为一个架构师” 是一个曲折蜕变的过程 , 我记的好像是在 2004 年左右, 架构师这个岗位从国外传入, 很多公司出 现了招聘架构师, 以前比较多出现系统分析员。 什么是架构师, 各公司的标准也不一样, 架构师更 多是个岗位, 你只要聘上了就是架构师。我自己 的经历大概是这样的: 1) 架构师要能 hold 的住一个软件或者系统 的设计和开发 2002 年我到广东发展没有经验, 被两个老 板骗到南海软件园包吃住干过一段时间, 当时去 投标一个南海民政的项目, 公司是打着北方一个 分公司名义的皮包
24、公司, 找了几个毕业不久的学 生当工程师, 又找了一个头衔多的海龟说是他们 的技术总监, 凑成一只廉价成本的团队去忽悠上 百万的项目, 老板说这个项目副市长亲口告诉他 已经交给我们做了, 只需要招标走走形式。 由于公司主要靠两个老板的关系, 没有自己 的技术产品, 当时老板从其他公司找来一套民政 系统软件, Web 化的, 老板说是其他公司一个资 深点小伙子写的, 说其实 1-2 个人就可以写了, 没什么难的, 叫我改成公司的产品去投标。当时 接到这套完整的 Web 系统软件时, 虽然是 Java 的, 但是没有用到多少 j2ee 里面花哨的东西, 都 是 jsp+Javabean 这种简化的
25、技术, 也有控制器等 角色, 都是 jsp 实现的, 里面复杂的页面流和大量 Javascript 脚本显示出开发者娴熟的 Web 编程功 底, 数据表可以自由搭建, 里面有些简化的生成管 理模块的工具。当时有种 hold 不住的感觉, 感觉 自己 Web 程序还写的太少, 还未积累大量 Web 编程的本文未完, 详细部分请参考原文 专题报道 51CTO.com 技术成就梦想 陈皓:带队、沟通、成长与变化 看过酷壳这个网站的朋友们应该对我们今天采访的故事主角不陌生, 他就是酷壳的董事会 主席兼 CEO 兼 COO 兼前端工程师兼开发人员兼美工兼主编的陈皓 ( 左耳朵耗子) 。身为 亚马逊中国的
26、研发经理, 他目前的工作是什么样的?他的成长过程中都有怎样的故事? 【51CTO 专 访】 刚 刚 在 深 圳 结 束 的 ArchSummit 大会上, 近千名工程师们以 “架构师” 之名聚集在一起, 讨论着有关架构师的种种。程 序员的世界就好像一个武林, 人们来自不同的师 承, 不同的派别, 而无师自通、 跨门派的修行者也 不在少数。而当你去一一接触他们, 了解他们的 时候, 会发现每个人都有自己独特的故事。 看过酷壳这个网站的朋友们应该对我们今 天故事的主角不陌生。 他在酷壳上这样介绍自己: “我不是高手, 我也不是牛人, 我只是在跟随 着我的兴趣和喜好去学习一些技术。 ” 陈皓 ( 左
27、耳朵耗子) , 14 年软件开发相关 工作经验, 8 年以上项目和团队管理经验, 6 年的 软件行业咨询经验。擅长底层技术架构, 团队建 设, 软件工程, 软件研发咨询, 以及全球软件团队 协作管理。对高性能, 高可用性, 分布式, 高并发, 以及大规模数据处理系统有一些经验和心得。喜 欢关注底层技术平台和互联网行业应用。技术擅 长 C/C+ / Java 和 Unix / Linux / Windows。现 于 Amazon 中国任研发经理, 负责电子商务全球 化业务 (全球开店) 的研发。 上面的简介是他自己写的。当然, 陈皓不会 在个人简介中提到自己每天晚上从 10 点阅读到 12 点,
28、 再更新酷壳到凌晨 2 点这种事情, 而这些 细节, 对于学习中的人们而言其实很关键。 51CTO 开发频道最近在筹备一个有关架构 师成长的专题, 一方面这是很多对自己职业成长 方向不确定的开发者们都很关注的话题, 另一方 面也是为了我们在 10 月底的云计算架构师峰会 做铺垫 (陈皓也是我们会议上的分享嘉宾之一) 。 因此, 我们会去接触很多架构师, 去了解他们的经 验, 以及对架构师的看法。 不过, 我觉得更重要的是去了解一种思路, 一种观察、 学习的方法, 而这些都隐藏在他们的故 事当中 那些有关成长的故事。 以下是 51CTO 本次对陈皓的采访内容实 录。 51CTO: 您的个人简介我
29、想就不用说了, 先 谈谈您现在的职责吧。 专题报道 51CTO.com 技术成就梦想 10 陈皓: 要说介绍的话, 就说我是酷壳的董事 会主席、 CEO、 COO、 前端工程师、 开发人员、 美 工、 主编这些 (笑) 。 我现在在亚马逊, 这边主要的职责, 第一个 就是带着团队做软件开发项目, 另外一个是制定 团队的计划, 来年的计划。然后还负责一些招聘 工作。基本上就这几大块。 51CTO: 这边团队主要是一个支持类的, 还 是一个产品类的? 陈皓: 就是一个研发, 带着大家去做技术选 型、 技术架构设计, 等等这些东西。 很多技术经理更多的是做计划、 管人, 但是 我不一样, 我喜欢技术
30、, 所以我更偏的做技术一 些。 我在亚马逊做第三方商户全球开店的项目, 目前在做的业务是 demand forecasting, 亚马逊内 部的库存需求预测, 就是下个月我要卖多少东西, 做机器学习。团队里面全都是 SDE(软件开发工 程师) 。也不分什么工。我们都是每个人负责一 个功能, 然后从头做到尾。从需求分析, 设计, 编 码, 测试, 到运维, 全部做。 51CTO: 那最初产品定义是您来制定? 陈皓: 产品定义我们有一个product manager, 或是 Technical Project Manager, 用户的需求会到 他们这里汇总, 然后他们会和研发团队讨论需求 应该怎么
31、实现, 优先级是什么, 怎么简化需求, 等 等。对于库存预测系统, 公司内的采购经理就是 我们的客户, 这个东西怎么操作会比较好, 预测的 准不准, 他可以进行哪些调整, 等等。对于第三方 商户的全球开店业务, 由 Product Manager 去调查 第三方商户的需求和现有的运营情况, 然后给研 发团队提需求。 有时候技术团队也要去见客户, 但主要是内 部的客户, 去问他一些东西, 怎么做, 做成这样行 不行。 51CTO: 团队人员搭配是怎样的? 陈皓: 团队里面基本上是这样: 有一个人非 常懂底层, C/C+ 出身的, 对操作系统的底层非 常熟, 喜欢看代码专研底层; 还有一个人是 J
32、2EE、 Java 出身, 对 Java 的架构和各种框架如 Spring, Struts 这些都很熟; 还有一个人对面向对象和软 件设计这些比较熟悉。还有人对软件的前端设计 比较熟, 做过 Web Portal 的设计; 还有人对机器 学习的算法和方法非常熟; 还有一个人也倾向于 底层, 但是稍微倾向于网络这边。这些人, 每个人 都有一块自己非常强的东西, 所以他们合作起来 也会很舒服, 因为他们可以从别人身上学东西, 而 且自己也能领着别人去做点东西。每个人都有自 己的领导力, 每个人都有自己的成长空间。我觉 得这是让团队比较和谐的原因。 另外, 我只是一个支持性的角色, 团队主导 一切,
33、 我只是在旁边支持他们。 51CTO: 他们愿意去学习自己不了解的领 域。 陈皓: 对。没有英雄。也没有闲人。每个人 都有自己的长处, 在这个长处上他可以领着别人 做事情, 同时也能从别人身上学到自己比较薄弱 的东西。 本文未完, 详细部分请参考原文 陈皓: 有带队、 沟通、 成长与变化 II 专题报道 51CTO.com 技术成就梦想 11 目前就职于淘宝网, 主要负责前端性能监 控、 优化等前端开发相关的工作。在会上嗷嗷以 “如何发现前端的性能问题” 为话题分享了如何 通过日志来分析问题, 如何通过 har 来分析问题 以及通过监控来发现问题等内容。 很多人认为学习前端开发其实高中生甚至
34、初中生都可以学, 学不了 C+ 以及 Java 才来 学前端开发, 在他们的眼中前端开发就是网站 制作的初级技能, 没有什么技术含量, 随便拿个 Dreamweaver 拖拖拉拉就是一个网页出来。 这不是前端开发! 严格来说, 上面的观点也只能是一个网页设 计的一个美工内容, 根本就不会涉及性能, 框架, 脚本等待问题, 所以也谈不上是前端开发者。那 么前端开发到目前为止有没有一个明确的定义 呢?有的!下面给出一个前端开发工程师需要掌 握的技能表。 前 端 开 发 工 程 师 不 仅 仅 需 要 掌 握 HTML+CSS+JS, 还需要长时间的去了解, 积累, 测试各种主流的浏览器兼容问题,
35、HACK 技术, 熟悉各种框架, 做 SEO 等等。 淘宝专家嗷嗷:前端开发应如何去做 而前端开发的性能优化往往是后台的专属, 但是作为前端开发的性能是极其的重要的。一个 优秀的前端开发工程师写出来的代码能够让服务 器压力小, 承载能力翻倍, 请求次数更少, 合理的 布局等等, 这是一个普通的前端开发人员所做不 到的。 我们从嗷嗷的介绍中就清楚, 一个优秀的前 端开发者, 除了掌握前端开发的相关技能, 对产 品, 后台, 设计以及项目管理都需要了解的。一专 多长, 这才是前端开发人员的最终需求。下面给 出一张图片, 详细的解释了前端开发如何去一转 多长。 做前端, 先做 “产品” ! 对于一些
36、交互设计, 内容布局, 良好的客户 体验, 往往关系着网站的成败。所以, 一个好的页 面, 要从如何去做好这个产品开始, 从做产品上掌 握并提高客户的体验。比如我们在 51CTO 的云 计算架构师峰会的购票页面里面填写了一个错误 的邮箱, 网站就能即时反馈输入错误的信息。如 图: 编者按 在 2012 年 7 月 7 日阿里技术嘉年华上记者遇到阿里巴巴前端技术专家刘杰 (花名: 嗷嗷) 。嗷嗷从事前 端开发多年, 期间做过设计转过产品, 混过后端, 写过 Web 标准设计 一书。 专题报道 51CTO.com 技术成就梦想 12 当然还有一些弹出提示层和 cookie 的记录等等, 只要 把客
37、户的需求做好了, 那么你这个 “产品” 就是成功的! 淘宝前端专家嗷嗷也是从设计, 产品以及后台开始, 他 认为, 从事前端开发在不同的阶段可能你需要了解到一些知 识也不一样, 比如你想深入了解后端的一些东西, 那你如果 作为一名前端的, 所以你了解的不够多也不够深入。或者是 即使你了解到的只是片面, 不知道他们为什么这么做。你只 有整个人切过去的时候才知道那你就可以比较深入的了解 他们为什么这么做, 这样做有什么好处。然后回过来的时候 你就会把这些偷来汇总应用。 现在国内的前端分很多种, 像淘宝的前端现阶段可能 稍微纯前端一种, 像我以前我在有些公司呆过, 前端他有写 一些后端开发的东西,
38、这些只是一个名字而已, 可能跟自己 的职者在不同的公司下区分还不一样。 做前端, 性能优化是重中之重! 性能优化这块往往是很多刚刚踏入前端开发人员忽略 的问题, 一个好的前端性能优化对于用户体验也是有着非常 大的影响。那么, 对于刚刚踏入前端的朋友, 嗷嗷也给了一 些建议。 嗷嗷认为, 对于刚进入前端的同学是比较幸运的, 因为 现在已经有一些大量的经验, 方法, 优化等等。对于刚刚入 门的时候, 认真学习这些东西已经足够了, 虽然这些东西比 较通用, 可能对于某些业务不具备非常好的优化, 但对于入 门的话用利用这些来了解为什么, 比如这些东西为什么这样 做会更好, 了解这些信息的时候, 这样你
39、的能力就会提升了。 当你了解这些信息的时候你就会针对业务做一些个性化的 定制或者处理。 对于前端性能的优化规范, 嗷嗷在这里强调了网站性 能优化的 34 条黄金法则, 我们称之为雅虎军规, 但也不能说 是规范, 这只是一个建议。但不同的公司都有着不同的背景 会导致每个公司都会加上自己的一些特殊的东西。所以让 人感觉有很多, 每个人出来讲都不一样了。其实最基础的我 还是觉得雅虎军规, 就是前人的方法总结了, 可能由于时代 在变, 有些方案也会发生变化, 所以要自己再去深入研究。 而雅虎现在前端没有以前那么好, 就是雅虎辉煌的时 候很多人都去看看人家是怎么做的。现在雅虎就没有像以 前那么重视了,
40、或者是由于公司的一些原因。我们可能也不 是太了解, 但是他们曾经留下那些经验是非常好的。 性能和视觉效果, 如何解决矛盾? 在前端开发商性能和视觉效果往往是同时存在的, 那 么鱼雨熊掌能否兼得呢?嗷嗷认为这很正常。比如设计师 喜欢用图, 因为图能更好的体现出 UI 效果, 但是这些图要在 客户端呈现的时候, 肯定需要下载花费时间的, 等待的时候 让你觉得性能变差了, 但这也不是完成不能解决的。一些方 案比如我们现在利用 CSS 技术把几个图合成一个, 尽量控制 它的请求数。也有一些我们比较推荐的是方案, 比如我们用 一些新技术, IE6 这种它不支持的, 那我们就可以跟设计帅 说那我们在好的浏
41、览器中就做出好的效果, 低版本的浏览器 达到可用的效果就可以, 消耗又少很多。这样就尽量找个平 衡点, 不能这个不能做, 那个不能做。 当然还有缓存的合理设置和资源的合并, 合理的缓存 设置以及本文未完, 详细部分请参考原文: h t t p : / / d e v e l o p e r . 5 1 c t o . c o m / 淘宝专家嗷嗷: 前端开发应如何去做 II 专题报道 51CTO.com 技术成就梦想 1 一淘清无:Nginx_lua的测试及选择 专家介绍: 王晓哲 (花名: 清无) , 一淘网技术 专家。任职于一淘数据部, 负责量子恒道整体技 术架构搭建。对海量数据处理、 高
42、性能高可用的 Web 服务相关技术有浓厚兴趣。 对于 Web 高性能服务器上的选择, 这个是很 多人头痛的问题。其实 Apache、 lighttpd、 Nginx 都用他们优点, 在什么情况下我们如何去选择适 合自己的 Web 高性能服务器, 如何去搭建一个 适合自己的架构环境, 这个是一个很麻烦的事 情。 接 下 来,在 ADC 2012(Alibaba Developer Conference 2012) 大会上, 51CTO 记者有幸采访 到了一淘数据平台与产品部技术专家清无 (花名) , 为我们解读 Nginx_lua 的一些优势及劣 势, 以及在高性能服务器上的选择。 首先让我们来
43、了解一下 Nginx_lua 的设计指 导思想: 1、 基于 Nginx 快速开发高性能、 大并发的网 络服务。 2、 提供 “同步非阻塞” 的 I/O 访问接口简 化 I/O 多路复用体系中的业务逻辑开发: “同步” 的主体是用户代码与其发起的 I/ O 请求处理流程之间的时序关系, 意即 I/O 请求 处理完成前用户代码将一直挂起。 “非阻塞”的主体是服务进程, 意即 I/O 请求的处理不会导致服务进程阻塞等待, 而是可 以继续处理其他请求的用户逻辑。 Nginx 的特点是占有内存少, 并发能力强, 事实上 nginx 的并发能力确实在同类型的网页伺 服器中表现较好。目前中国大陆使用 ng
44、inx 网站 用户有: 新浪、 网易、 腾讯, 另外知名的微网志 Plurk 也使用 Nginx。 Nginx 服务器及 Lua 版本的选择 1) Nginx 高性能开源 WEB 服务器的选择 清无是在 08 年开始接触 Nginx 服务器的, 当时高性能的开源 WEB 服务器还有 lighttpd, 那 么一淘网技术专家清无为什么会选择 Nginx 呢? Nginx 哪方面比较有它的优势?清无介绍说, lighttpd 和 Nginx 的比较中, 有一个很明显的缺点 就是 lighttpd 的模块机制设计的很不好, lighttpd 的模块机制过多的把模块本身的请求处理逻辑 和底层的网络事件
45、的处理组合在一起, 所以不像 Nginx 的模块结构这么清晰, 当然 Nginx 的模块 设计很大程度上也借鉴了 Apache 的这种模块设 计, 所以这块有一个先天的优势。当时其实他最 早接触 lighttpd, 然后 Nginx 出来以后, 就对比它 专题报道 文/林师授 51CTO.com 技术成就梦想 1 一淘清无: Nginx_lua 的测试及选择 II 们模块结构上的差异后, 觉得 Nginx 似乎更 有优势一些。实测对于我们这种网络 I/O 密集 型的应用来说, 只要不是你实现的这个逻辑有多 大缺陷, 其实在放 lighttpd 或者 Nginx 差别不是 特别大。 在比较选择的
46、过程中, 首先从架构出发, 如 果有问题的话无论你实现如何它都是有问题的, 所以我的比较首先在架构搭建上, 每连接或者每 请求单线程单进程这种服务模型, 直接就被刷 掉, 肯定不可能做到很高的服务能力。余下来清 一色的都是基于 RO 多路的这种结构体系, 那么 在这个体系上我们才去检验, 实际上拿一个 IPP 的请求来压测看它实现的质量如何, 通常来说这 部分一旦架构体系决定以后, 实测这个性能差异 不是特别的大, 除非说是某个特性一个实现另一 个没实现这种情况, 我们测出来的差异通常是在 10%-20% 上下波动而已。 2) Lua 版本的选择 在小编与清无的交流中了解到目前一淘网 所使用
47、lua 的版本是 5.1.2, 当小编提出是否版本 越高性能越强时, 清无则认为不太对。对于 lua 来说每一个版本的变化意味着它将加入新的语法 元素或者变更了内部的一些实现的方式。严格意 义上并不说明它的性能就好, 比如对 5.2 和 5.1 来 说, 不管对于环境表或者其它的一些机制的修改 上面, 严格的来说他都是一种新的语言了。所以 目前来说迁移到 5.2 最大的障碍其实还是 5.2 里 面对于底层接口的这种概念的变化。因为 5.1 里 面对于一些方面下了很多工夫, 然后使用它的全 局表加环境表这种机制。但是 5.2 里面彻底取消 了全局表的概念, 也取消了 CU 级别上一系列对 环境表
48、操作的接口, 对我们来说肯定是不能平滑 的迁移到 5.2, 如果有这个需求的话, 我们可以做, 但目前还没有看到这个需求。另外一个阻碍我 们升级版本号的问题是 Lua JIT, lua JIT 的性能比 标准的 lua 要高很多, 所以深层里面我们通常用 JIT, 但是 luaJIT 目前对 lua5.2 的支持并不是那么 紧, 它目前还是以 5.1 为主, 所以这块我没可能较 长的时间跟着 lua JIT 的脚步来。 在一淘网的应用中, 清无介绍说, Nginx_lua 主要应用在两块地方, 一块是传统的一淘数据 库量子统计店铺经, 数据接口部分完全是用 Nginx_lua 来做。另一块是一
49、淘的广告部门有一 部分数据接口也使用着 Nginx_lua。 Nginx_lua 的性能测试比较 其实也有很多人一直还在使用 Nginx_php 这种组合搭配, 对于 Nginx_lua 组合的优势在哪 里呢?清无介绍说, Nginx+php 之间是要有进程 之间通信的, 这样以来基础的性能开销就很大。 lua 是嵌在 Nginx 进程内部的, 它不需要有两套进 程在那里独立工作。所以这块从结构上来说就有 决定性的优势在里面。再加上线程之间通讯的时 候需要大量的反序列化和序列化的工作, 然后两 套进程带来额外情况是更多的进程更多的切换开 销, 所以单机上面 Nginx_php 要比 Nginx_lua 要 低很多。但是相对来说仍然要回到我们做什么事 情上面, 因为 Nginx_lua 目前最大的劣势就是周 边的模块相当的不健全, 我们需要大量的时间来 积累这些模块。php 积累了十几年的时间了, 如 果说你对性能的要求并不是那么高, 我的并发数 专题报道 51CTO.com 技术成就梦想 15 一淘清无: Nginx_lua 的测试及选择 III 就是几十, 那么你用 php 就是最