上周四(6.20)GMTC2019大会的第一天,很荣幸作为「UI与图形渲染」专场出品人获得了与图形领域几位技术专家同场交流的机会。

图形技术在前端范畴内是一个相对小众的话题,虽然前端工程师几乎每天都在跟图形打交道(CSS)。CSS能够满足绝大多数的需求,即便偶尔遇到相对复杂的UI(比如描边文字),稍加使用canvas或SVG便足以应对。大多数前端工程师在日常开发工作中并不会(也没必要)思考每个CSS方块背后的底层技术原理。除了从事于数据可视化、地图、游戏等强依赖图形技术行业的人以外,Canvas/SVG/WebGL及其背后的数学知识对于大多前端工程师而言都比较陌生。所以在一个前端大会上,尤其是在“大前端”以及“全栈”概念越来越普及的时代背景下,一个受众群体非常有限的小众技术专场便显得异常冷门和特立独行。当然,做图形专场的目的并不是为了凸显自身的与众不同,而是因为图形技术对前端工程师至关重要,具体原因稍后再表。

主办方在筹备GMTC2019之初并未设定图形专场,后承蒙主办方首肯采纳本人的建议,将去年的「UI与动画」专场更名为「UI与图形渲染」。其实我之所以极力争取设立图形专场有一点小小的私心,因为我本人从事于地图行业,目前的工作绝大多数是跟WebGL打交道但是水平非常粗浅,所以很想跟此领域的技术专家们请教一些技术问题。然而仍然高估了这个领域的从业者规模,讲题的收集异常艰难。相比去年的「前端工程化」专场,线上提交的讲题数量差了两个量级。幸得几位朋友推荐,请到了阿里的@徐远同和Twitter的@郭桦,才能够凑满名额。

在会议开始之前,我有预想到上座率不会很高,但到场的观众竟然颇多,尤其是第三场更是座无虚席并且门口也挤满了人,确实令人有些意外。四位讲师的分享都颇为精彩,干货满满,我作为主持人并未半分贡献,就充当个记流水账的账房先生吧。

《基于Flutter引擎的TypeScript UI框架在树莓派上的应用》-阿里-@徐远同

这是本场四个讲题中最具技术深度的一个,内容并非是如何整合现有技术进行应用层UI开发,而是剖析渲染引擎的底层原理以及优化策略。每个前端工程师都或多或少地了解浏览器渲染HTML的流程和原理,这个讲题列出的渲染引擎技术与webkit大致类似,即便不是从事渲染引擎开发的普通前端工程师也能够通过此讲题更深入的了解渲染背后的技术细节。

《基于GLES的三维地图渲染技术工程实践》-高德-王前卫

本场演讲开始之前出了一点小事故,ppt没有提前拷贝到工作人员的设备中并且讲台不能直接连接讲师的macbook,所以造成了几分钟的时间延误。在此向当时参会的观众道一声抱歉。

我确信当时在场的观众有很大一部分是从事地图行业的,因为演讲结束之后的现场问答环节观众提出的三个问题都是关于地图的。这个讲题真的是非常硬核的GIS科普课,非此领域的人应该都会听的一头雾水,跟我同行的朋友听完本场之后满头的黑人问号。当然我听的确实津津有味,也了解了一些很有用的地图渲染技巧,比如用简单的纹理坐标扰动便可实现水波纹效果。

《结合React与D3进行数据可视化开发》-Twitter-郭桦

之前有预想这场的观众会很多,但是爆场确实有些意外。跟去年@Sky带来的Twitter前端工程化一样,可能国外大厂的名头有一定的“名人效应”加持,但更重要的是讲题本身的技术深度以及讲师对现场的把控能力。技术深度上,去年@Sky和今年@郭桦的讲题都非常优秀;演讲技巧上,@郭桦是我目前为止认为最好的演讲者,音量适当,不徐不疾,ppt简洁明了,时间掌握非常精准,40分钟的演讲时间刚刚好。并且所讲内容均聚焦于讲题本身,没有掺杂任何自我营销的成分。我比较反感把个人凌驾于讲题之上、语出惊人哗众取宠的“技术网红”,虽然不可否认网红的套路更容易引起关注和话题,但那不是技术从业者应有的态度。

D3.js对于接触过数据可视化的同学想必不会陌生,它更多地被应用于开发SVG charts。我第一份实习工作就是用D3.js做charts,那时候react还没问世,后来接触到react之后发现两者有一些相似之处,比如数据驱动UI,还写过一篇粗浅的文章。所以刚看到这个讲题时有些惊喜,因为终于有人跟我有相同的想法,在react诞生这么多年之后终于将其与D3.js结合并且应用于工业。虽然这个讲题的内容侧重于封装模式并未深入到底层技术,但这种探索和实践非常值得推广和借鉴。

《基于DOM 的可协作幻灯片编辑器架构模式》-石墨文档-刘怡年

可协作云应用非常复杂,可讲的技术点也很多,整体来说@刘怡年的分享还不错,但是仍有一些细节可待改进。我个人有两个建议:第一是ppt中表情包图片不宜过多,当然这也是我的责任,没有把控好ppt终稿的质量;第二是尽量减少一些表面的知识,比如仿射变换这种基础数学对于做图形编程的人来说基本上就是1+1=2,根本不值得单拎出来讲。@刘怡年应该是第一次做公开演讲,希望能够吸取一定的经验吧。

好,流水账就记到这里。总体上这次图形专场比较满意,当然主要得益于四位讲师精彩的分享。现在回到一开始的问题:为什么前端工程师需要具备图形编程能力?

前端似乎一直在试图“抢别人的饭碗”:用Node.js做web server;用RN&Flutter做app。虽然每个技术工种的定义都需要放在特定的时代背景下才有讨论的意义,历史推动人们对前端的重新认知,但是不论前端将来的定位如何,始终不会变的是前端始终聚焦于应用层和表现层,其核心竞争力集中在对交互逻辑和UI的把控,前端架构体系的设计自然也是围绕两者展开。目前来看,Node.js是serverless架构的优秀选型,但支撑大后端还略显吃力。所以即便使用serverless,前端架构的重点仍然是交互逻辑和UI。进一步讲,交互逻辑最终也需要借助UI给予用户反馈,所以UI对前端的重要性不言而喻。掌握一定的图形技术能够帮助开发者在前端架构设计之初进行精准的UI技术选型,哪些用CSS可以实现?哪些用SVG最佳?哪些需要借助Canvas甚至WebGL?这些问题的答案不是选择某一个库或者框架,而是在选择框架之前必须确立的底层技术栈。如果选择了不恰当的底层技术栈,待问题积攒爆发而不得不重构时,其痛苦程度远不是迁移框架能够比拟的。这对于初创团队尤为重要,因为技术选型决定如何打造人才梯队。然而如果对以上这些图形技术只停留在了解的阶段是远远不够的,必须有一定的深入理解和实践才可以精准地选定底层技术栈。比如大家都知道大数据场景下svg由于节点过多而性能上逊于WebGL,但是如果节点数没有接近四位数,那么在现有的浏览器技术背景下为了追求webgl并不明显的性能优势而放弃svg的便捷api、富交互性以及与css的融合性等优势则是得不偿失。

图形技术的最高殿堂必然是游戏,这个观点在跟@徐远同交流中达成了共识。然而游戏是相对独立的领域,跟前端的关联性不大。所以设立图形技术专场的目的并不是吸引更多人加入到图形编程领域,而是希望能够借此机会阐明图形对前端的重要性,即便不是从事图形编程的传统前端工程师也需要关注。甚至更进一步,希望能够引起大家对前端原生技术的重视。这几年各大框架百花齐放,今年Flutter更是一枝独秀,前端工程师们似乎一直被框架牵着鼻子走而一定程度上忽略了原生技术。当然会有人说“流水的框架铁打的思想,用框架是为了学习它的设计理念”,但并非所有的思想都值得借鉴,有些必然会成为时代的弃儿,比如jquery早期版本$(document).ready诡异的实现方案放到今天几乎再没有合适的应用场景。但原生技术,尤其是相对底层的技术是永不过时的。

GMTC2019会后:做一场冷门的技术专场是什么体验的更多相关文章

  1. 年终汇报、总结、述职:教你做一场B格满满的技术大会演讲

    什么样的演讲和呈现最受听众欢迎,内容干货?逻辑清晰?长相帅气? 偶尔被邀作为speaker参加一些圈内的技术大会进行演讲.这里我分享下自己的经验,如何做一场B格满满的技术大会演讲,希望给做汇报.总结. ...

  2. UIView封装动画--iOS利用系统提供方法来做转场动画

    UIView封装动画--iOS利用系统提供方法来做转场动画 UIViewAnimationOptions option; if (isNext) { option=UIViewAnimationOpt ...

  3. 用Python自动办公,做职场高手(完结)

    教程目录: ┣━07.S2 Word自动化处理,又快又好做文档┃  ┣━36 本章介绍┣━08.[Word]S2-1 轻松用Python快速生成Word文档┃  ┣━45.[真实案例]S2-1-3 批 ...

  4. 平安技术开放日质量保证技术专场第一期 [附部分 ppt]

    4月8号在上海平安大厦,平安证券和Tester联合举办了一场质量保证技术专场,附上部分PPT 平安技术开放日介绍   ppt下载 A/B测试的大数据架构实践 链接: http://pan.baidu. ...

  5. 开源大数据技术专场(下午):Databircks、Intel、阿里、梨视频的技术实践

    摘要: 本论坛第一次聚集阿里Hadoop.Spark.Hbase.Jtorm各领域的技术专家,讲述Hadoop生态的过去现在未来及阿里在Hadoop大生态领域的实践与探索. 开源大数据技术专场下午场在 ...

  6. 用uniGUI做B/S下业务系统的产品原型体验

    从10月份到重庆工作后,一直忙于工作,感兴趣的几个方面的技术都处于暂停. 一个多月来,按照公司要求在做B/S集中式基卫产品的原型,主要是画原型图,开始是用Axure,弄来弄去感觉功能还是弱了些,尤其是 ...

  7. 开源大数据技术专场(上午):Spark、HBase、JStorm应用与实践

    16日上午9点,2016云栖大会“开源大数据技术专场” (全天)在阿里云技术专家封神的主持下开启.通过封神了解到,在上午的专场中,阿里云高级技术专家无谓.阿里云技术专家封神.阿里巴巴中间件技术部高级技 ...

  8. 【EatBook】-NO.2.EatBook.2.JavaArchitecture.1.001-《修炼Java开发技术在架构中体验设计模式和算法之美》-

    1.0.0 Summary Tittle:[EatBook]-NO.2.EatBook.2.JavaArchitecture.1.001-<修炼Java开发技术在架构中体验设计模式和算法之美&g ...

  9. 【重磅资料】ArchSummit全球架构师峰会·2019华为云技术专场资料下载

    ArchSummit全球架构师峰会是InfoQ中国团队推出的重点面向高端技术管理者.架构师的技术会议,54%参会者拥有8年以上工作经验.ArchSummit聚焦业界强大的技术成果,秉承"实践 ...

随机推荐

  1. 创建maven项目pom.xml出现错误(依赖Missing)

    Maven的依赖问题 在聚合模块时候,发现在父工程目录中的依赖存在一些问题.一开始是${pagehelper.version},后来将版本直接填写相应的版本如图下 依赖添加失败 * 在父工程的jar包 ...

  2. Linq复杂对象查询

    复杂的查询对象, using System; using System.Collections.Generic; using System.Linq; using System.Text; using ...

  3. mysql字符设置乱码问题

    在操作系统中对于任意一个字符而言是没有编码格式概念的:同样的字母在不同的编码集里面可能代表不同的东西:关键在于你用什么样的软件打开它,软件本身是以什么样的编码格式来显示你的字符,那么你的字符当前就是什 ...

  4. 使用Spring实现MySQL读写分离(转)

    使用Spring实现MySQL读写分离 为什么要进行读写分离 大量的JavaWeb应用做的是IO密集型任务, 数据库的压力较大, 需要分流 大量的应用场景, 是读多写少, 数据库读取的压力更大 一个很 ...

  5. JavaWeb学习笔记:Tomcat

    Tomcat 开源的 Servlet 容器. 部署并启动 tomcat server. 解压 apache-tomcat-6.0.16.zip 到一个非中文文件夹下. 配置一个环境变量. java_h ...

  6. UVA - 10167 - Birthday Cake (简单枚举)

    思路:简单枚举 AC代码: #include <cstdio> #include <cstring> #include <iostream> #include &l ...

  7. 计蒜客 429(腾讯手机地图-pi的精确值)

    腾讯手机地图的定位功能用到了用户手机的多种信号.这当中有的信号的作用范围近.有的信号作用的范围则远一些.有的信号相对于用户在不同的方位强度是不同的.有的则是在不论什么一个方向上信号强度都一致的. 已知 ...

  8. js02 变量数据类型

    变量 JavaScript 是一种弱类型的脚本语言 var c = 3:即变量的声明(变量使用之前必须加var声明,编程规范) 变量的命名规则! 1.变量命名必须以字母或是下标符号”_”或者”$”为开 ...

  9. Android学习笔记进阶15之Shader渲染

    Android提供的Shader类主要是渲染图像以及一些几何图形. Shader有几个直接子类: BitmapShader    : 主要用来渲染图像 LinearGradient  :用来进行线性渲 ...

  10. Android学习笔记进阶九之Matrix对称变换

    网上很多的倒影特效实际上就是一个对称变换,在改变透明度即可. Matrix对称变换包括很多种,有关于Y轴对称,关于X轴对称,关于y= -x对称等等. 1 关于Y轴对称 // 获取资源文件的引用res ...