[套装书]自己动手做智能产品:嵌入式JavaScript实现+Nginx Lua开发实战(2册)

作者
[英] 戈登·F.威廉姆斯(Gordon F.Williams)李明江
丛书名
出版社
机械工业出版社
ISBN
9781911251643
简要
简介
内容简介书籍计算机书籍 ---------------------------自己动手做智能产品:嵌入式JavaScript实现--------------------------- 本书将通过简单的嵌入式编程,教会大家如何将日常物品转变为智能机器。当然市场中的ARM编程书籍多为平淡的教科书,相对复杂,编程语言对于初学者存在一定难度,本书采用读者易学易懂的编程语言,并结合实际动手操作来帮助读者实现产品智能化。 ---------------------------Nginx Lua开发实战--------------------------- 本书围绕Nginx下Lua开发语言、Nginx核心工作机制、Nginx配置方法、核心数据组件和配置及API指令进行详细讲解。本书主要分五部分:第壹部分介绍Nginx的基本操作,同时讲解了MySQL、PostgreSQL、Redis、Memcached、MongoDB、OpenResty的基本操作。第二部分详细讲解了Lua脚本语言和Lua通用库。第三部分讲解了在Nginx开发中经常使用到的一些技术,如:JSON数据交换格式、nginx.conf配置方法和配置指令;还讲解了Nginx下Lua开发的实现机制。第四部分详细介绍了常用Lua库和数据库等组件的使用方法,包括:Redis、MySQL、Memcached、PostgreSQL、MongoDB、Bit、lfs、restry.http、lcurl、FFI、cjson、Template、WebSocket。第五部分详细介绍了ngx_lua的配置指令和ngx_luaAPI,目的是帮助读者在工作中快速检索配置指令和API。
目录



---------------------------自己动手做智能产品:嵌入式JavaScript实现---------------------------


前言 1
第1章 简介 5
为何要将物品智能化 5
在实践中学习 5
利用JavaScript进行创造 6
工具和材料 7
第一部分 微控制器
第2章 微控制器为何物 13
ARM历史 14
利用微控制器编程 15
第3章 Espruino入门 19
准备工作 20
插入接口 21
软件安装 22
连接开发板 24
固件升级 25
命令行初体验 26
编辑器 27
第4章 开启JavaScript之旅 31
准备工作 31
注释 32
数据类型 32
数学计算 33
变量 35
自增与自减 37
对象 38
函数 38
数组 42
面向对象 44
按位运算 45
if语句 51
&&和|| 52
三元操作符 53
for循环 53
异常 55
第二部分 电动机
第5章 什么是电动机 59
实验1:法拉第的电动机 60
实验2:电动机换向器 64
无刷直流电动机 68
实验3:步进电动机 69
实验4:步进电动机控制 72
实验5:多个步进电动机控制 76
第6章 频闪仪 79
找到一个风扇 79
实验6:速度检测 81
实验7:频闪仪 84
实验8:照得更远的频闪仪 86
第7章 约翰·罗杰·贝尔德的电视机 89
实验9:视觉的持续性 89
实验10:约翰·罗杰·贝尔德的电视机 92
第三部分 机电部分
第8章 制作一个简单的机器人 101
实验11:试用伺服电机 102
实验12:制作一个简单的机器人 105
实验13:循光 113
第9章 铅笔绘图仪 117
实验14:铅笔绘图仪 117
第10章 数码针孔相机 131
实验15:制作一个数码相机 131
第11章 打印机 145
实验16:制作一个打印机 145
第四部分 通信
第12章 有线通信 161
时序 161
实验17:制作示波器 163
第13章 切断连线:红外线 169
实验18:制作红外接收器 169
实验19:解码红外线信号 171
实验20:使用解码信号 175
实验21:用dweet.io在网络上使用遥控器 176
实验22:通过IFTTT在网络上使用遥控器 178
第14章 切断连线:无线电信号 181
实验23:连接接收器 182
实验24:连接发射器 183
实验25:从Espruino发射 185
实验26:解码接收的数据 186
第15章 连接无线网络 193
实验27:将WiFi添加到你的Pico 194
实验28:测试你的布线 198
实验29:连接到WiFi 199
实验30:将数据发送到Internet 200
实验31:从Internet接收数据 202
实验32:建立一个服务器 206
控制物品 209
第16章 低功耗蓝牙 213
低功耗蓝牙如何工作 214
如何使用低功耗蓝牙 216
Web Bluetooth 216
实验33:使用Puck.js 217
实验34:制作一个开门计数器 219
实验35:广播开门次数 222
实验36:用Eddystone接收开门次数 223
第五部分 合而为一
第17章 XY绘图仪 229
实验37:制作XY表 229
实验38:控制XY表 235
第18章 联网绘图仪 243
实验39:联网绘图仪 245
第六部分 总结
第19章 未来如何 257
附录A 零件和材料 259
附录B 常见的Espruino命令和变量 271
附录C Espruino汇编 277



---------------------------Nginx Lua开发实战---------------------------


前言
第一部分 Nginx操作基础
第1章 Nginx高效服务器 2
1.1 Nginx的特点 2
1.2 Nginx的安装 3
1.3 configure命令参数 7
1.4 小结 12
第2章 数据库的基本操作 13
2.1 Nginx应用中的数据库 13
2.2 MySQL关系型数据库 15
2.2.1 yum安装方法 16
2.2.2 使用mysql测试服务 18
2.2.3 MySQL文件分布 19
2.2.4 数据库操作 19
2.3 Redis内存数据库 22
2.3.1 Redis安装 22
2.3.2 启动Redis服务 23
2.3.3 Redis 配置 23
2.3.4 参数说明 26
2.3.5 数据类型 29
2.4 PostgreSQL关系型数据库 31
2.5 Memcached内存数据库 33
2.5.1 Memcached安装 34
2.5.2 连接编辑 34
2.5.3 管理Memcached服务 35
2.5.4 Memcached命令 37
2.6 MongoDB分布式NoSQL数据库 42
2.6.1 MongoDB安装 43
2.6.2 mongod.conf配置说明 45
2.7 小结 48
第3章 OpenResty 49
3.1 OpenResty:概述 49
3.2 OpenResty的组成 50
3.3 OpenResty的安装 52
3.4 Nginx多实例 54
3.5 小结 54
第4章 Nginx核心技术 55
4.1 Nginx设计目标 55
4.2 Nginx架构 57
4.2.1 事件驱动 57
4.2.2 异步多阶段处理 59
4.2.3 模块化设计 61
4.2.4 管理进程、工作进程设计 63
4.2.5 内存池 65
4.2.6 连接池 66
4.2.7 时间缓存 66
4.2.8 延迟关闭 67
4.2.9 跨平台 67
4.2.10 HTTP模块管道过滤模式 67
4.2.11 keepalive 68
4.2.12 pipeline 69
4.3 小结 69
第5章 Nginx的工作流程 70
5.1 Nginx的启动流程 70
5.2 管理进程的工作流程 72
5.3 工作进程的工作流程 75
5.4 配置加载流程 76
5.5 HTTP框架初始化流程 79
5.6 HTTP模块调用流程 81
5.7 HTTP请求处理流程 82
5.8 小结 83
第二部分 Lua脚本语言
第6章 Lua教程 86
6.1 Lua基础 86
6.1.1 Lua的特性 86
6.1.2 Lua的应用场景 87
6.1.3 安装Lua环境 87
6.2 Lua基本语法 88
6.2.1 第一个Lua程序 88
6.2.2 注释 89
6.2.3 标识符 90
6.2.4 关键词 90
6.2.5 全局变量 90
6.3 Lua的数据类型 90
6.4 Lua变量 96
6.4.1 赋值语句 96
6.4.2 索引 97
6.5 Lua循环 98
6.6 Lua流程控制 98
6.7 Lua函数 99
6.7.1 函数的定义 99
6.7.2 多返回值 100
6.7.3 可变参数 101
6.8 Lua运算符 101
6.8.1 算术运算符 102
6.8.2 关系运算符 102
6.8.3 逻辑运算符 103
6.8.4 其他运算符 104
6.8.5 运算符的优先级 105
6.9 Lua字符串 106
6.10 Lua数组 107
6.10.1 一维数组 107
6.10.2 多维数组 108
6.11 Lua迭代器 109
6.11.1 泛型for迭代器 109
6.11.2 无状态的迭代器 110
6.11.3 多状态的迭代器 111
6.12 Lua表 112
6.13 Lua模块与包 113
6.13.1 require函数 114
6.13.2 加载机制 115
6.13.3 C包 115
6.14 Lua元表 116
6.14.1 _index元方法 117
6.14.2 _newindex元方法 118
6.14.3 为表添加运算符 119
6.14.4 _call元方法 119
6.14.5 _tostring元方法 120
6.15 Lua协同程序 121
6.15.1 基本语法 121
6.15.2 生产者–消费者问题 124
6.16 Lua错误处理 125
6.16.1 语法错误 125
6.16.2 运行错误 125
6.16.3 错误处理 126
6.16.4 error函数 126
6.16.5 pcall、xpcall、debug 127
6.17 Lua调试 128
6.18 Lua垃圾回收 130
6.19 Lua面向对象 131
6.19.1 Lua中面向对象 132
6.19.2 Lua继承 134
6.20 Lua数据库访问 136
6.21 小结 137
第7章 Lua通用库 138
7.1 字符串库 138
7.2 表库 141
7.3 文件I/O库 143
7.3.1 简单模式 144
7.3.2 完全模式 145
7.3.3 其他方法 146
7.4 数学库 147
7.5 操作系统库 150
7.6 小结 151
第三部分 Nginx开发技术
第8章 JSON数据交换格式 154
8.1 什么是JSON 154
8.2 JSON转换为JavaScript对象 155
8.3 JSON与XML的比较 155
8.4 JSON语法规则 156
8.5 格式化 157
8.6 小结 158
第9章 nginx.conf文件配置 159
9.1 默认nginx.conf文件 159
9.2 nginx.conf示例 162
9.3 全局配置与顶层配置块 166
9.3.1 main全局配置 166
9.3.2 events配置块 170
9.3.3 http服务器配置块 172
9.3.4 ngx_http_core_module变量 194
9.3.5 stream 195
9.4 中文版nginx.conf 201
9.5 小结 204
第10章 Nginx下Lua实现机制 206
10.1 ngx_lua原理 206
10.2 HTTP请求的处理阶段 209
10.3 ngx_lua的处理阶段 210
10.4 Lua阶段解析 212
10.4.1 init_by_lua 212
10.4.2 init_worker_by_lua 213
10.4.3 set_by_lua 214
10.4.4 rewrite_by_lua 216
10.4.5 access_by_lua 217
10.4.6 content_by_lua 218
10.4.7 header_filter_by_lua 220
10.4.8 body_filter_by_lua 220
10.4.9 log_by_lua 220
10.4.10 balancer_by_lua_block 221
10.5 小结 222
第四部分 Nginx Lua开发实战
第11章 Redis操作 224
11.1 Redis操作方法概述 224
11.2 HttpRedis访问方法 225
11.2.1 示例 225
11.2.2 HttpRedis API 226
11.2.3 HttpRedis变量 228
11.3 HttpRedis2Module访问方法 229
11.3.1 示例 229
11.3.2 nginx.conf配置 230
11.3.3 常用指令 231
11.3.4 技术点 234
11.3.5 应答包解析 238
11.4 lua-resty-redis访问方法 239
11.4.1 示例 239
11.4.2 API函数 240
11.4.3 技术点 244
11.4.4 问题列表 246
11.4.5 限制 247
11.4.6 安装 247
11.5 小结 247
第12章 MySQL操作 248
12.1 lua-restry-mysql访问方式 248
12.1.1 示例 248
12.1.2 安装 250
12.1.3 方法与函数 251
12.1.4 多结果集返回示例 254
12.1.5 其他注意事项 255
12.1.6 限制 255
12.2 HttpDrizzleModule访问方式 255
12.2.1 示例 256
12.2.2 安装 257
12.2.3 技术点 258
12.2.4 配置指令 259
12.2.5 变量 263
12.2.6 输出格式 264
12.3 HttpDrizzleModule完整示例 265
12.4 小结 272
第13章 Memcached操作 273
13.1 mem-nginx-module访问方式 273
13.1.1 概述 273
13.1.2 命令 276
13.1.3 指令 279
13.1.4 安装 281
13.1.5 说明 281
13.1.6 示例 282
13.2 lua-resty-memcached 访问方式 285
13.2.1 概述 285
13.2.2 API 286
13.2.3 自动日志 291
13.2.4 限制 291
13.3 小结 291
第14章 PostgreSQL操作 292
14.1 概述 292
14.2 配置指令 293
14.3 配置变量 295
14.4 示例 296
14.5 小结 298
第15章 MongoDB操作 299
15.1 安装 299
15.2 配置 299
15.3 操作函数 300
15.3.1 连接对象方法 300
15.3.2 数据库对象方法 301
15.3.3 列对象方法 301
15.4 示例 302
15.5 小结 303
第16章 bit库的使用 304
16.1 示例 304
16.2 安装 305
16.3 函数 305
16.4 说明 307
16.5 小结 308
第17章 lfs库的使用 309
17.1 迭代示例 309
17.2 安装 310
17.3 LuaFileSystem函数 310
17.4 小结 312
第18章 resty.http库的使用 313
18.1 安装 313
18.2 概述 314
18.3 函数 315
18.3.1 连接类 315
18.3.2 应答类 318
18.3.3 代理类 319
18.3.4 工具类 319
18.4 小结 320
第19章 lcurl库的使用 321
19.1 安装 321
19.1.1 安装libcurl 321
19.1.2 安装lcurl 322
19.2 示例 322
19.3 函数 324
19.3.1 httpform类 325
19.3.2 easy类 327
19.3.3 multi类 331
19.3.4 error类 333
19.3.5 share类 333
19.4 常用变量 334
19.4.1 字符串数组类选项 334
19.4.2 字符串选项 334
19.4.3 数值型选项 336
19.4.4 布尔型选项 337
19.5 完整示例 338
19.6 小结 340
第20章 FFI扩展C库 341
20.1 示例 341
20.1.1 调用外部C函数 341
20.1.2 使用C结构体数据 342
20.2 FFI库的使用 344
20.2.1 载入FFI库 344
20.2.2 访问标准系统函数 344
20.2.3 访问zlib压缩库 345
20.2.4 为一个C类型定义元方法 346
20.2.5 转换C语法 347
20.3 FFI API 348
20.3.1 声明和访问外部符号 348
20.3.2 创建cdata对象 349
20.3.3 C类型信息 349
20.3.4 功能函数 350
20.3.5 特定目标信息 351
20.3.6 方法回调 351
20.3.7 扩展标准库函数 351
20.4 调用curl库的完整示例 352
20.5 小结 352
第21章 cjson库的使用 353
21.1 示例 353
21.2 函数 354
21.3 变量 358
21.4 小结 358
第22章 lua-resty-template类的使用 359
22.1 示例 359
22.2 模板符号 360
22.2.1 短转义符号 361
22.2.2 上下文表中的复杂key 361
22.2.3 HTML转义 361
22.2.4 保留的上下文key和评论 362
22.3 安装 363
22.3.1 Nginx/OpenResty配置 363
22.3.2 使用document_root 363
22.3.3 使用template_root 364
22.3.4 使用template_location 364
22.4 Lua API 364
22.5 模板预编译 368
22.6 模板助手 368
22.7 用法示例 369
22.7.1 引用模板 369
22.7.2 Layouts的views 370
22.7.3 使用Blocks 371
22.7.4 继承 373
22.7.5 Macros 374
22.7.6 调用模板中的方法 375
22.7.7 模板内嵌的Angular或其他标签/模板 376
22.7.8 模板内嵌的Markdown 376
22.7.9 LSP 377
22.8 FAQ 378
22.9 小结 379
第23章 WebSocket的使用 380
23.1 示例 381
23.2 安装 383
23.3 resty.websocket.server 383
23.4 resty.websocket.client 386
23.5 resty.websocket.protocol 389
23.6 使用注意事项 390
23.7 小结 390
第24章 TCP私有服务器实例 391
24.1 协议 391
24.1.1 协议总体要求 391
24.1.2 包头定义 392
24.1.3 协议命令 393
24.2 DDP系统架构 394
24.3 DDP服务实现 395
24.3.1 nginx.conf配置 395
24.3.2 init.lua 398
24.3.3 ddp.lua 399
24.3.4 DDP代码解析 405
24.3.5 Redis和MySQL的
location 407
24.3.6 管理页面REST操作 411
24.4 小结 412
第25章 WebSocket接入服务器实战 413
25.1 nginx.conf内容 413
25.2 ws_svr.lua内容 421
25.3 update_alarts代码 436
25.4 小结 438
第26章 Nginx应用简述 439
26.1 简单系统 439
26.2 读写分离系统 439
26.3 引入缓存系统 440
26.4 缓存主从系统 441
26.5 小结 442
第五部分 开发手册
第27章 ngx_lua_module模块配置指令详解 444
27.1 概述 444
27.2 Lua配置顺序 456
27.3 配置指令 457
27.4 小结 487
第28章 ngx_lua API详解 488
28.1 概述 488
28.2 API与常量 491
28.3 小结 565



有问题微信扫码联系

推荐

Understand China
桂ICP备20004708号-4