3星|《给产品经理讲技术》:APP开发技术介绍,没有技术背景的话恐怕只能看懂书中的比喻和结论

 

基本是APP开发涉及到的相关技术的入门级介绍。涉及到的知识点与技术细节比较多,不少技术相关的内容并没有像标题暗示的那样没有技术背景也可以看懂,而是涉及到许多专业的术语、原理。也有一些内容是用比喻的方法讲原理。

 

可以看作是给开发人员的APP开发技术的一个索引。没有技术背景的产品经理也可以通过这本书知道需要再去详细了解哪些IT知识,可以学习到一些常识,比如说普通的人像照片没法转化成矢量图。

 

总体评价3星,有参考价值。

 

 

以下是书中一些内容的摘抄:

 

1:在一些视频网站上,所有的电影名、演员名都是立刻显示的,电影的海报是框架加载完成之后,再发起AJAX请求拉取的。采用这样的异步加载模式可以在最大程度上缓解用户等待时的焦虑感。P3

 

2:所以,浏览器在解析HTML文档时,会把每个标签抽象成代码里的对象,按照这种层次分明的结构组织,这就是DOM. P4

 

3:于是,有人发明了一种便捷的方法,叫作虚拟DOM。简单来说,就是用JavaScript模拟了一棵简单的DOM树,然后在这上面演练所有的DOM操作,等时机成熟时再把虚拟DOM树和真正的浏览器的DOM树做对比,算出差异,一次性地改变真正的DOM树。这两个步骤从整体上大大提高了JavaScript操纵DOM树的效率。P5

 

4:当然,要防御它是有办法的。开发者在引用一个第三方库时,在页面里写上它的散列值,如果第三方库被劫持,计算出的散列值与开发者写在页面里的不匹配,浏览器便不会执行它。还有另一种方案,就是使用HTTPS链接,这样可以解决大部分劫持问题。P13

 

5:使用WebSocket可以很好地解决这个问题.WebSocket是HTML5的一个主要特性,它是建立在TCP上的一种全双工协议,也就是说客户端可以向服务器发信息,服务器也可以向客户端推送消息。WebSocket在首次建立连接时,使用普通HTTP和服务器通信,同时告诉服务器后面的交互用WebSocket的方式。P24

 

6:总结一下:浏览器直接输出渲染好数据的HTML页面,简称“直出”.直出没什么神秘的,只不过需要Node.js的支持,服务器和前端都用JavaScript语言编写,相当于在服务器上也运行一个浏览器,它把渲染好的内容直接输出给客户端的浏览器。P25

 

7:单页的Web应用会在用户单击链接之后直接和服务器联系(不会告诉浏览器页面切换了),拉取数据。虽然看起来与多页Web应用没什么区别,但技术上的区别很大。P26

 

8:现在,移动端上的很多应用都采用了Hybrid APP的架构。所谓Hybrid APP,就是指使用原生和H5两种UI呈现内容。P36

 

9:看到路上的街景采集车(如图2-7所示)了吗?如果读者以为它们只是采集街景就想错了。它们在大街上漫游时,就记下了附近无线路由器的MAC地址和GPS信息。日复一日年复一年,一个庞大的Wi-Fi定位数据库就建立起来了。P42

 

10:发送心跳包是有代价的。为了省电,手机锁屏之后,CPU是处于休眠状态的,然而发送心跳包就会唤醒CPU,必然会增加电量的消耗。这还只是一条长连接通道的情况,如果手机里装了二三十个带有推送的APP呢?聪明的Android工程师和iOS工程师早就想到了这一点,他们分别设计了GCM(Google Cloud Messaging)和APNs(Apple Push Notification service)来解决多个APP有多个长连接通道的问题。P45

 

11:图2-11中猫咪的眼睛和鼻子都一起被模糊了,严重失真,所以我们一般选用一种特殊的高斯模糊算法:双边滤波。它的好处是可以保存边缘,比如皮肤和眉毛的交接处,经过双边滤波后眉毛没有变化,只有皮肤做了高斯模糊处理。在实际应用过程中,还会用到肤色检测,人脸识别等技术。P47

 

12:“以图搜图”的功能通过对图片进行缩放、灰度处理,最后提取出一个64位的散列值作为特征码,用它去做匹配。同样,要识别一首歌曲,也要先找到它的特征,也就是音乐的“指纹”,简称“乐纹”。P48

 

13:所以平时我们使用搜索引擎时,它的搜索结果并不是实时査找出来的,而是使用了提前做好的倒排索引,将关键词的索引结果合并展示出来。P79

 

14:CSRF攻击的本质是,浏览器无法区分一个请求是用户在当前网站自愿发起的,还是其他网站模拟用户行为发出来的。

15:因此,避免CSRF攻击的措施之一便是区分当前请求的来源网站。P133

 

16:最后,搬运一个应用的流程就变成“下载应用——反编译——篡改代码——重新打包——国内分发”,这个流程很简单,将其做成一个批量处理任务只需十来分钟,可是开发一个应用最少要耗费开发者几个月的时间。P138

 

17:一个好的产品设计是这样的:本地要默认写死一些常在展示、不怎么变化的频道,这些称为打底数据或默认数据。如果没有这份写死的数据,你的客户端运行时,至网络数据传回前或者无网络时,头部都没有任何信息展示。所以打底数据主要用于解决用户体验问题,在无网络或初次启动时,告知用户这个客户端已经在正常运行。P161

 

18:所以,JSON并不是凭空想出来的高深概念,而只是为了解决“对象”在网络上传输的问题而诞生的。这时再看它的英文名JavaScript Object Notation(JavaScript的对象标记法),是不是觉得确实是这么回事?P180

 

19:那么问题来了,如何才能充分调动显卡的强大能力,帮助我们绘制图形呢?OpenGL就是为此而生的。OpenGL是一组API,这些API可以运行在不同的平台上,可以支持各种语言。最重要的是,它能利用显卡的硬件加速能力,帮助我们绘制图形。P181

 

20:OpenGL这两年比较火,主要还是因为iOS和Android都靠它来做游戏、写界面。严格地说,在移动平台上,大家用的是OpenGL-ES,是OpenGL的一个子集。OpenGL有700多个API,OpenGL-ES裁掉了其中不常用的、移动端不好用的一些API。P182

 

21:既然矢量图可以做到缩放不失真,为什么不把所有图片都做成矢量图呢?答案是,做不到。一张普通的图片里,有人物也有风景,每一个细节是无法用数学方程式来描述的,只能按照点对点的映射做成一张位图,而这张位图的分辨率就取决于镜头的分辨率。P188

 

22:React是Facebook推出的一个前端框架,准确地说,它是一个前端的UI组件库。P197

 

23:ReactNative是Facebook推出的一个用JavaScript语言就能同时编写iOS,Android及后台的技术.ReactNative于2016年9月发布的Android版本在IT圈里掀起了一波热潮,不断有喜欢尝鲜的程序员投人这个领域。P198

 

24:因为ReactNative引擎的启动耗时,所以首屏速度可能会稍微慢一点儿。另外,ReactNative会多出一些JStoNative的通信成本。除此之外,翻译后的UI布局因为用的是纯原生的实现方式,动画,滑动都会跟原生一样顺滑。但React有一个硬伤,就是List(列表)的性能较差。P200

 

25:谷歌正式发布了Flutter,它一经推出便受到众多开发者的追捧。不像ReactNative那样站在ReactJS的肩膀上,Flutter的诞生显得平淡了很多。它的开发者来自谷歌的Chrome团队,没错,就是那些做浏览器的技术人员,他们试图把浏览器的渲染技术用在普通的APP上,改着改着,就改出了一个令所有人振奋的框架。P202

 

26:谷歌之所以用Dart而不用JavaScript还有一层原因.Dart语言既可以像Java那样预先编译成二进制代码预装在APK包里,也可以像JavaScript那样动态下发,随时解释执行。P203

 

 

 

全文完

 

相关链接:

 

3.5星|《硅谷产品》:Facebook网红社区产品经理经验谈

 

3星|《人人都是产品经理(纪念版)》:产品经理入门,阿里产品流程

 

增长黑客6本书

 

3星|周鸿祎《极致产品》:360软硬件产品遇到过的坑

 

3星|《大产品,小团队》:携程软件开发流程改进的故事

 


 

2019左其盛好书榜,没见过更好的榜单(截至3月31日)

 

2019左其盛差评榜,罕见的差书榜(截至3月31日)

 

2019年读过评过的99本书(截至3月31日)

 

本号909篇书评的索引与书单

 

想跟小编讨论请移步知识星球

 

搜索本号的最优方法

更多毒舌书评参见我的公众号:左其盛经管新书点评

原文地址:https://www.cnblogs.com/zuoqs/p/10695307.html