基本是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篇书评的索引与书单

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

搜索本号的最优方法

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

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

  1. APP开发的三种技术对比

    目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...

  2. Hybrid App—Hybrid App开发模式介绍和各种开发模式对比

    什么是Hybrid App 最开的App开发只有原生开发这个概念,但自从H5广泛流行后,一种效率更高的开发模式Hybrid应运而生,它就是"Hybrid模式".Hybrid APP ...

  3. 给产品经理讲技术,不得不懂的TCP和UDP

    TCP/IP协议,你一定经常听说吧,其中TCP(Transmission Control Protocol)称为传输控制协议,IP(Internet Protocol)称为因特网互联协议,好吧,这都是 ...

  4. 产品经理如何赢得开发人员的尊重和支持?-摘自infoq

    对于产品经理来说,赢得开发人员的尊重和支持,从某种意义上讲,是产品迈向成功的坚实一步.最近,知乎社区上的开发人员和管理者在前.后两个帖子中对此展开了激烈的讨论,其中不乏真知灼见. 林志霖Cray认为产 ...

  5. 产品 | What's产品经理

    如果想知道什么是产品,首先需要知道什么是缔造者.其名曰:"产品经理". PS:产品经理一词在国内大多时候泛指"互联网产品经理". 对于产品经理这一职位,说实在很 ...

  6. 人人都是产品经理?关于PM你不知道的还有很多

    产品经理的职称最早出现在P&G宝洁公司,因效果非常显著,许多企业纷纷仿而效尤.硅谷知名的产品管理大师Marty Cagan在<Inspired: How To Create Produc ...

  7. Facebook新框架React Native,一套搞定App开发[转]

    Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...

  8. 写给Android App开发人员看的Android底层知识(1)

    这个系列的文章一共8篇,我酝酿了很多年,参考了很多资源,查看了很多源码,直到今天把它写出来,也是战战兢兢,生怕什么地方写错了,贻笑大方. (一)引言 早在我还是Android菜鸟的时候,有很多技术我都 ...

  9. 一个APP开发有那么难吗?

    app开发 idea:产品设计喵有一个想法. 人员配置: 攻城狮:前端后端服务器齐撸 产品设计:设计原型/UI效果图(界面/交互)齐撸] 流程分析: 1.产品设计喵反复打磨自己的想法,明确要做什么样的 ...

随机推荐

  1. Atitit.木马病毒强制强行关闭360&#160;360tray.exe的方法

    Atitit.木马病毒强制强行关闭360 360tray.exe的方法 1. taskkill /im 进程名称1 2. 用 wmic process where name="进程名称&qu ...

  2. 关于c3p0配置详细说明

    <!-- c3p0连接池配置 --> <property name="driverClass" value="${c3p0.driverClass}&q ...

  3. http://www.cnbc.com/2016/07/12/tensions-in-south-china-sea-to-persist-even-after-court-ruling.html

    http://www.cnbc.com/2016/07/12/tensions-in-south-china-sea-to-persist-even-after-court-ruling.html T ...

  4. Android -- Messager与Service

    如果你需要你的service和其他进程通信,那么你可以使用一个Messenger来提供这个接口. 这种方法允许你在不使用 AIDL的情况下,进行跨进程通信IPC. 实现步骤 下面是一个如何使用 Mes ...

  5. CSS自学笔记(16):CSS3 用户界面

    CSS3中,也新增了一些关于用户界面的属性,这些属性可以重设元素或者盒子的尺寸.轮廓等等. 新增的部分属性的浏览器支持情况 属性 浏览器支持 resize IE Firefox Chrome Safa ...

  6. cocos2d-x -------之笔记篇 环境的安装

    cocos2d-x -------之笔记篇 环境的安装 使用到的工具有VS2010  cygwin android-NDK eclipse android SDK 1.首先是android相关环境的安 ...

  7. reids配置参数详解

    转自:http://www.jb51.net/article/60627.htm reids配置参数详解 #daemonize no  默认情况下, redis 不是在后台运行的,如果需要在后台运行, ...

  8. C++ Builder string相互转换(转)

    源:http://www.cnblogs.com/zhcncn/archive/2013/05/20/3089084.html 1. char*->string (1)直接转换 const ch ...

  9. Hibernate最简单教程

    其实Hibernate本身是个独立的框架,它不需要任何web server或application server的支持.然而,大多数的Hibernate入门介绍都加入了很多非Hibernate的东西, ...

  10. Mongo 查询(可视化工具)

    distinct MongoDB 的 distinct 命令是获取特定字段中不同值列表的最简单工具. 该命令适用于普通字段.数组字段以及数组内嵌文档(集合对象). db.getCollection(' ...