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星|《人人都是产品经理(纪念版)》:产品经理入门,阿里产品流程

更多毒舌书评参见我的公众号:左其盛经管新书点评
3星|《给产品经理讲技术》:APP开发技术介绍,没有技术背景的话恐怕只能看懂书中的比喻和结论的更多相关文章
- 「给产品经理讲JVM」:垃圾收集算法
纠结的我,给我的JVM系列终于起了第三个名字,害,我真是太难了.从 JVM 到 每日五分钟,玩转 JVM 再到现在的给产品经理讲 JVM ,虽然内容为王,但是标题可以让更多的人看到我的文章,所以,历经 ...
- 💕《给产品经理讲JVM》:垃圾收集器
前言 在上篇中,我们把 JVM 中的垃圾收集算法有了一个大概的了解,又是一个阴雨连绵的周末,宅在家里的我们又开始了新一轮的学习: 产品大大:上周末我们说了垃圾收集算法,下面是不是要讲一下这些算法的应用 ...
- APP开发的三种技术对比
目前来说主流的App开发方式有三种:Native App .Web App.Hybird App.下面我们来分析一下这三种App开发方式的优劣对比: 一 :Native App 即 原生App开发 优 ...
- Hybrid App—Hybrid App开发模式介绍和各种开发模式对比
什么是Hybrid App 最开的App开发只有原生开发这个概念,但自从H5广泛流行后,一种效率更高的开发模式Hybrid应运而生,它就是"Hybrid模式".Hybrid APP ...
- 给产品经理讲技术,不得不懂的TCP和UDP
TCP/IP协议,你一定经常听说吧,其中TCP(Transmission Control Protocol)称为传输控制协议,IP(Internet Protocol)称为因特网互联协议,好吧,这都是 ...
- 产品经理如何赢得开发人员的尊重和支持?-摘自infoq
对于产品经理来说,赢得开发人员的尊重和支持,从某种意义上讲,是产品迈向成功的坚实一步.最近,知乎社区上的开发人员和管理者在前.后两个帖子中对此展开了激烈的讨论,其中不乏真知灼见. 林志霖Cray认为产 ...
- 产品 | What's产品经理
如果想知道什么是产品,首先需要知道什么是缔造者.其名曰:"产品经理". PS:产品经理一词在国内大多时候泛指"互联网产品经理". 对于产品经理这一职位,说实在很 ...
- 人人都是产品经理?关于PM你不知道的还有很多
产品经理的职称最早出现在P&G宝洁公司,因效果非常显著,许多企业纷纷仿而效尤.硅谷知名的产品管理大师Marty Cagan在<Inspired: How To Create Produc ...
- Facebook新框架React Native,一套搞定App开发[转]
Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...
随机推荐
- Python内置函数(36)——iter
英文文档: iter(object[, sentinel]) Return an iterator object. The first argument is interpreted very dif ...
- MySQL忘记密码后找回密码
停止mysql服务 在mysql配置文件里[mysqld]下添加skip-grant-tables 3.重启服务,进入mysql 4.修改密码: MariaDB [mysql]> update ...
- https和http共存的nginx简单配置
server{ listen 80; listen 443 ssl; ssl_certificate /usr/local/nginx/ssl/www.demo.com/www.demo.com.cn ...
- Visual Studio 2017中使用SourceLink调试ASP.NET Core源码
背景 当我们在学习ASP.NET Core或者调试ASP.NET Core程序的时候,有时候需要调试底层代码,但是当我们在Visual Studio中调试程序的时候,由于一些基础库或者第三方库缺少pd ...
- 通过LRU实现通用高效的超时连接探测
编写网络通讯都要面对一个问题,就是要把很久不存活的死连接清除,如果不这样做那死连接最终会占用大量内存影响服务运作!在实现过程中一般都会使用ping,pong原理,通过ping,pong来更新连接的时效 ...
- EF三种编程方式图文详解
Entity Framework4.1之前EF支持“Database First”和“Model First”编程方式,从EF4.1开始EF开始支持支持“Code First”编程方式,今天简单看一下 ...
- (一)你的第一个Socket程序
概述 本文通过一个最简单的Socket通信来对每一步做通俗易懂的讲解让你了解这些函数到底是干什么用的.下面的代码虽然是用Pyhton实现的,但是你要知道这些通信机制并不是Python所定义的,因为这些 ...
- MariaDB Galera Cluster 部署 + keepalived实现高可用
MariaDB Galera Cluster 部署 MariaDB作为Mysql的一个分支,在开源项目中已经广泛使用,例如大热的openstack,所以,为了保证服务的高可用性,同时提高系统的负载能力 ...
- 聊天框Demo:DotNetCore+ActiveMQ+Mqttjs 实现前后台消息监听
网上查了查 ActiveMQ + .net core 的例子很少,自己做一个demo 作为记录,另外FineUI Core基础版要来了,出来后我会用FineUI再做一版,为知识星球的引流... 1.安 ...
- C# 在PDF中绘制动态图章
我们知道,动态图章,因图章中的时间.日期可以动态的生成,因而具有较强的时效性.在本篇文章中将介绍通过C#编程在PDF中绘制动态图章的方法,该方法可自动获取当前系统登录用户名.日期及时间信息并生成图章. ...