0%

基本信息

名称: Windows内核情景分析:采用开源代码ReactOS(上、下册)
作者信息: 作者: 浏览全部评论 [ 中文 pdf ]

简单介绍

•市面上唯一一本讲述Windows内核分析的图书。•历时三年,近1500页篇幅,毛德操老师最新力作!《Windows内核情景分析:采用开源代码ReactOS》:历时3年,近1500页篇幅,毛德操老师重磅著作

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
上册
第1章 概述 1
1.1 Windows操作系统发展简史 1
1.2 用户空间和系统空间 3
1.3 Windows内核 4
1.4 开源项目ReactOS及其代码 9
1.5 Windows内核函数的命名 10

第2章 系统调用 12 2.1 内核与系统调用 12 2.2 系统调用的内核入口KiSystemService() 22 2.3 系统调用的函数跳转 29 2.4 系统调用的返回 32 2.5 快速系统调用 35 2.6 从内核中发起系统调用 42

第3章 内存管理 44 3.1 内存区间的动态分配 47 3.1.1 内核对用户空间的管理 48 3.1.2 内核对于物理页面的管理 60 3.1.3 虚存页面的映射 67 3.1.4 Hyperspace的临时映射 78 3.1.5 系统空间的映射 86 3.1.6 系统调用NtAllocateVirtualMemory() 90 3.2 页面异常 97 3.3 页面的换出 107 3.4 共享映射区(Section) 115 3.5 系统空间的缓冲区管理 133

第4章 对象管理 136 4.1 对象与对象目录 136 4.2 对象类型 148 4.3 句柄和句柄表 162 4.4 对象的创建 169 4.5 几个常用的内核函数 179 4.5.1 ObReferenceObjectByHandle() 179 4.5.2 ObReferenceObjectByPointer() 187 4.5.3 ObpLookupEntryDirectory() 188 4.5.4 ObpLookupObjectName() 192 4.5.5 ObOpenObjectByName() 209 4.5.6 ObReferenceObjectByName() 213 4.5.7 ObDereferenceObject() 214 4.6 对象的访问控制 218 4.7 句柄的遗传和继承 218 4.8 系统调用NtDuplicateObject() 223 4.9 系统调用NtClose() 233

第5章 进程与线程 241 5.1 概述 241 5.2 Windows进程的用户空间 253 5.3 系统调用NtCreateProcess() 273 5.4 系统调用NtCreateThread() 284 5.5 Windows的可执行程序映像 300 5.6 Windows的进程创建和映像装入 305 5.7 Windows DLL的装入和连接 329 5.8 Windows的APC机制 358 5.9 Windows线程的调度和切换 381 5.9.1 x86系统结构与线程切换 382 5.9.2 几个重要的数据结构 385 5.9.3 线程的切换 388 5.9.4 线程的调度 395 5.10 线程和进程的优先级 409 5.11 线程本地存储TLS 421 5.12 进程挂靠 434 5.13 Windows的跨进程操作 442 5.14 Windows线程间的相互作用 450

第6章 进程间通信 467 6.1 概述 467 6.2 共享内存区(Section) 469 6.3 线程的等待/唤醒机制 470 6.4 信号量(Semaphore) 499 6.5 互斥门(Mutant) 505 6.6 事件(Event) 512 6.7 命名管道(Named Pipe)和信插(Mailslot) 516 6.8 本地过程调用(LPC) 521 6.9 视窗报文(Message) 555

第7章 视窗报文 556 7.1 视窗线程与Win32k扩充系统调用 556 7.2 视窗报文的接收 566 7.3 Win32k的用户空间回调机制 590 7.4 用户空间的外挂函数 602 7.5 视窗报文的发送 615 7.6 键盘输入线程 628 7.7 鼠标器输入线程 642 7.8 默认的报文处理 662

第8章 结构化异常处理 665 8.1 结构化异常处理的程序框架 666 8.2 系统空间的结构化异常处理 683 8.3 用户空间的结构化异常处理 710 8.4 软异常 720

下册 第9章 设备驱动 729 9.1 Windows的设备驱动框架 729 9.2 一个“老式”驱动模块的实例 745 9.3 DPC函数及其执行 769 9.4 内核劳务线程 778 9.5 一组PnP设备驱动模块的实例 783 9.6 中断处理 817 9.7 一个过滤设备驱动模块的示例 828 9.8 设备驱动模块的装载 830 9.9 磁盘的设备驱动堆叠 858 9.9.1 类驱动disk.sys 860 9.10 磁盘的Miniport驱动模块 887 9.11 命名管道与Mailslot 896 9.12 MDL 918 9.13 同步I/O与异步I/O 932 9.14 IRP请求的完成与返回 946

第10章 网络操作 957 10.1 概述 957 10.2 NDIS及其实现 959 10.3 Windows的网络驱动堆叠 974 10.3.1 NIC驱动 975 10.3.2 LAN驱动模块 997 10.3.3 TCP/IP驱动模块 1014 10.3.4 AFD驱动与Winsock 1035 10.4 Socket的无连接通信 1062 10.5 Socket的有连接通信 1089 10.6 Winsock的实现 1093

第11章 文件操作 1099 11.1 Win32 API函数CreateFileW() 1099 11.2 NT路径名 1109 11.3 文件路径名的解析 1119 11.4 FAT32文件系统 1144 11.5 文件系统驱动的装载和初始化 1169 11.6 文件卷的安装 1175 11.7 文件的创建 1199 11.8 缓存管理 1214 11.9 文件的读写 1237 11.10 NTFS文件系统简介 1252

第12章 操作系统的安全性 1278 12.1 概述 1278 12.2 证章 1289 12.3 安全描述块和ACL 1305 12.4 访问权限检查 1322

第13章 注册表 1351 13.1 注册表操作 1351 13.2 注册表的初始化和装载 1369 13.3 库函数RtlQueryRegistryValues() 1376

第14章 系统管理进程与服务进程 1394 14.1 系统管理进程Smss 1394 14.2 Windows子系统的服务进程Csrss 1408 14.3 服务管理进程Services 1424 14.4 服务进程Svchost 1449 跋 1464 参考文献 1466

亚马逊链接

基本信息

名称: Python学习手册(第3版)
作者信息: 作者: Mark Lutz [ 中文 pdf ]

简单介绍

《Python学习手册(第3版)》为机械工业出版社出版。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
前言
第一部分 使用入门第1章 问答环节
人们为何使用Python
软件质量
开发者效率
Python是“脚本语言”吗
好吧,Python的缺点是什么呢
如今谁在使用Python
使用Python可以做些什么
系统编程
用户图形接口
Internet脚本
组件集成
数据库编程
快速原型
数值计算和科学计算编程
游戏.图像.人工智能.XML.机器人等
Python有哪些技术上的优点
面向对象
免费
可移植
功能强大
可混合
使用简单
Python是工程,不是艺术
简单易学
名字来源于MontyPython
Python和其他语言比较起来怎么样
本章小结
头脑风暴
本章习题
习题解答
第2章 Python如何运行程序.
Python解释器简介
程序执行
程序员的视角
Python的视角
执行模块的变种
Python实现的替代者
执行优化工具
冻结二进制文件
未来的可能性
本章小结
头脑风暴
本章习题
习题解答
第3章 如何运行程序
交互模式下编写代码
在交互提示模式下测试代码
使用交互提示模式
系统命令行和文件
使用命令行和文件
UNIX可执行脚本(#!)
UNIXenv查找技巧
点击文件图标
在Windows中点击图标
raw_input的技巧
图标点击的其他限制
模块导入和重载
模块的显要特性:属性
import和reload的使用注意事项
IDLE用户界面
IDLE基础
使用IDLE
高级IDLE工具
其他的IDE
嵌入式调用
动付二进制的可执行性
文本编辑器启动的选择
其他的启动选择
未来的可能
我应该选用哪种
本章小结74..
头脑风暴
本章习题
习题解答
头脑风暴:第一部分 练习题

第二部分 类型和运算第4章 介绍Python对象类型. 为什么使用内置类型 Python的核心数据类型 数字 字符串 序列的操作 不可变性 类型特定的方法 寻求帮助 编写字符串的其他方法 模式匹配 列表 序列操作 类型特定的操作 边界检查 嵌套 列表解析 字典 映射操作 重访嵌套 键的排序:for循环 迭代和优化 不存在的键:if测试 元组 为什么要用元组 文件 其他文件类工具 其他核心类型 如何破坏代码的灵活性 用户定义的类 剩余的内容 本章小结 头脑风暴 本章习题 习题解答 第5章 数字 Python的数字类型 数字常量 内置数学工具和扩展 Python表达式操作符 混合操作所遵循的操作符优先级. 括号分组的子表达式 混合类型自动升级 预习:运算符重载 在实际应用中的数字 变量和基本的表达式 数字显示的格式 str和repr显示格式 除法:传统除法.Floor除法和真除法. 位操作 长整型数 复数 十六进制和八进制记数 其他的内置数学工具 其他数字类型 小数数字 集合 布尔型 第三方扩展 本章小结 头脑风暴 本章习题 习题解答 第6章 动态类型简介. 缺少类型声明语句的情况 变量.对象和引用 类型属于对象,而不是变量 对象的垃圾收集 共享引用 共享引用和在原处修改 共享引用和相等 动态类型随处可见 本章小结 头脑风暴 本章习题 习题解答 第7章 字符串 字符串常量 单双引号字符串是一样的 用转义序列代表特殊字节 字符串抑制转义 三重引号编写多行字符串块 字符串编码更大的字符集 实际应用中的字符串 基本操作 索引和分片 为什么要在意:分片 字符串转换工具 修改字符串 字符串格式化 更高级的字符串格式化 基于字典的字符串格式化 字符串方法 字符串方法实例:修改字符串 字符串方法实例:文本解析 实际应用中的其他常见字符串方法 最初的字符串模块 通常意义下的类型分类 同样分类的类型共享其操作集合 可变类型能够在原处修改 本章小结 头脑风暴 本章习题 习题解答 第8章 列表与字典. 列表 实际应用中的列表 基本列表操作 索引.分片和矩阵 原处修改列表 字典 实际应用中的字典 字典的基本操作 原处修改字典 其他字典方法 语言表 字典用法注意事项 为什么要在意字典接口 本章小结 头脑风暴 本章习题 习题解答 第9章 元组.文件及其他 元组 实际应用中的元组 为什么有了列表还要元组 文件 打开文件 使用文件 实际应用中的文件 其他文件工具 重访类型分类 为什么要在意操作符重载 对象灵活性 引用VS拷贝 比较.相等性和真值 Python中真和假的含义 Python的类型层次 Python中的其他类型 内置类型陷阱 赋值生成引用,而不是拷贝 重复能够增加层次深度. 留意循环数据结构 不可变类型不可以在原处改变 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第二部分 练习题

第三部分 语句和语法第10章 Python语句简介. 重访Python程序结构 Python的语句 两个if的故事 Python增加了什么 Python删除了什么 终止行就是终止语句 为什么使用缩进语法 几个特殊实例 简短实例:交互循环 一个简单的交互式循环 对用户输入数据做数学运算 用测试输入数据来处理错误 用try语句处理错误 嵌套代码三层 本章小结 头脑风暴 本章习题 习题解答 第11章 赋值.表达式和打印 赋值语句 赋值语句的形式 序列赋值 多目标赋值语句 增强赋值语句 变量命名规则 表达式语句 表达式语句和在原处的修改 打印语句 Python的“HelloWorld”程序 重定向输出流 print>>file扩展 本章小结 头脑风暴 本章习题 习题解答 第12章 if测试. if语句 通用格式 基本例子 多路分支 Python语法规则 代码块分隔符 语句的分隔符 一些特殊情况 真值测试 if/else三元表达式 为什么要在意布尔值 本章小结 头脑风暴 本章习题 习题解答 第13章 while和for循环 while循环 一般格式 例子 break.continue.pass和循环else 一般循环格式 例子 为什么要在意“模拟C语言的while循环” for循环 一般格式 例子 为什么要在意“文件扫描” 迭代器:初探 文件迭代器 其他内置类型迭代器 其他迭代环境 用户定义的迭代器 编写循环的技巧 循环计数器:while和range 非完备遍历:range 修改列表:range 并行遍历:zip和map 产生偏移和元素:enumerate 列表解析:初探 列表解析基础 对文件使用列表解析 扩展列表解析语法 本章小结 头脑风暴 本章习题 习题解答 第14章 文档 Python文档资源

注释

dir函数 文档字符串:doc PyDoc:help函数 PyDoc:HTML报表 标准手册集 网络资源 已出版的书籍. 常见编写代码的陷阱 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第三部分 练习题

第四部分 函数第15章 函数基础 为何使用函数 编写函数 def语句 def语句是实时执行的 第一个例子:定义和调用 定义 调用 Python中的多态 第二个例子:寻找序列的交集 定义 调用 重访多态 本地变量 本章小结 头脑风暴 本章习题 习题解答 第16章 作用域和参数 作用域法则 函数作用域基础 变量名解析:LEGB原则 作用域实例 内置作用域 global语句 最小化全局变量 最小化文件间的修改 其他访问全局变量的方法 作用域和嵌套函数 嵌套作用域的细节 嵌套作用域举例 传递参数 参数和共享引用 避免可变参数的修改 对参数输出进行模拟 特定的参数匹配模型 关键字参数和默认参数的实例 任意参数的实例 关键字参数和默认参数的混合 min调用 一个更有用的例子:通用set函数 参数匹配:细节 为什么要在意:关键字参数 本章小结 头脑风暴 本章习题 习题解答 第17章 函数的高级话题. 匿名函数:lambda lambda表达式 为什么使用lambda 如何(不要)让Python代码变得晦涩难懂 嵌套lambda和作用域 作为参数来应用函数 内置函数apply 为什么要在意:回调 传入关键字参数 和apply类似的调用语法 在序列中映射函数:map 函数式编程工具:filter和reduce 重访列表解析:映射 列表解析基础 增加测试和嵌套循环 列表解析和矩阵 理解列表解析 为什么要在意:列表解析和map 重访迭代器:生成器 生成器函数实例 扩展生成器函数协议:send和next 迭代器和内置类型 生成器表达式:迭代器遇到列表解析 对迭代的各种方法进行计时 函数设计概念 函数是对象:简洁调用 函数陷阱 本地变量是静态检测的 默认和可变对象 没有return语句的函数 嵌套作用域的循环变量 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第四部分 练习题

第五部分 模块第18章 模块:宏伟蓝图. 为什么使用模块 Python程序构架 如何组织一个程序 导入和属性 标准库模块 import如何工作 搜索 编译(可选) 运行 第三方工具:distutils 本章小结 头脑风暴 本章习题 习题解答 第19章 模块代码编写基础. 模块的创建 模块的使用 import语句 from语句 from语句 导入只发生一次 import和from是赋值语句 文件间变量名的改变 import和from的对等性 from语句潜在的陷阱 模块命名空间 文件生成命名空间 属性名的点号运算 导入和作用域 命名空间的嵌套 重载模块 reload基础 reload实例 为什么要在意:模块重载 本章小结 头脑风暴 本章习题 习题解答 第20章 模块包 包导入基础 包和搜索路径设置 init.py包文件 包导入实例 包对应的from和import 为什么要使用包导入 三个系统的传说 为什么要在意:模块包 本章小结 头脑风暴 本章习题 习题解答 第21章高级模块话题 在模块中隐藏数据 最小化from的破坏:_X和all. 启用以后的语言特性 混合用法模式:name和main 以name进行单元测试 修改模块搜索路径 importas扩展 相对导入语法 为什么使用相对导入 模块设计理念 模块是对象:元程序 模块陷阱 顶层代码的语句次序的重要性 通过变量名字符串导入模块 from复制变量名,而不是连接 from*会让变量语义模糊 reload不会影响from导入 reload.from以及交互模式测试 reload的使用没有传递性 递归形式的fromimport无法工作 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第五部分 练习题

第六部分 类和OOP第22章OOP:宏伟蓝图 为何使用类 概览OOP 属性继承搜索 类和实例 类方法调用 编写类树 OOP是为了代码重用 本章小结 头脑风暴 本章习题 习题解答 第23章类代码编写基础. 类产生多个实例对象 类对象提供默认行为 实例对象是具体的元素 第一个例子 类通过继承进行定制 第二个例子 类是模块内的属性 类可以截获Python运算符 第三个例子 为什么要使用运算符重载 世界上最简单的Python类 本章小结 头脑风暴 本章习题 习题解答 第24章类代码编写细节. class语句 一般形式 例子 方法 例子 调用超类的构造器 其他方法调用的可能性 继承 属性树的构造 继承方法的专有化 类接口技术 抽象超类 运算符重载 常见的运算符重载方法 getitem拦截索引运算 getitem和iter实现迭代 用户定义的迭代器 getattr和setattr捕捉属性的引用 模拟实例属性的私有性 repr和str会返回字符串表达形式 radd处理右侧加法 call拦截调用 函数接口和回调代码 del是析构器 命名空间:完整的内容 简单变量名:如果赋值就不是全局变量 属性名称:对象命名空间 Python命名空间的“禅”:赋值将变量名分类 命名空间字典 命名空间链接 一个更实际的例子 本章小结 头脑风暴 本章习题 习题解答 第25章类的设计 Python和OOP 通过调用标记进行重载(或不要) 类作为记录 类和继承:“是一个”关系 类和组合:“有一个”关系 重访流处理器 为什么要在意:类和持续性 OOP和委托 多重继承 类是对象:通用对象的工厂 为什么有工厂 方法是对象:绑定或无绑定 重访文档字符串 为什么要在意:绑定方法和回调函数 类和模块 本章小结 头脑风暴 本章习题 习题解答 第26章类的高级主题 扩展内置类型 通过嵌入扩展类型 通过子类扩展类型 类的伪私有属性 变量名压缩概览 为什么使用伪私有属性 新式类 钻石继承变动 其他新式类的扩展 静态和类方法 使用静态和类方法 函数装饰器 装饰器例子 类陷阱 修改类属性的副作用 多重继承:顺序很重要 类.方法以及嵌套作用域 “过度包装” 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第六部分 练习题

第七部分 异常和工具第27章异常基础 为什么使用异常 异常的角色 异常处理:简明扼要 try/except/else语句 try语句分句 try/else分句 例子:默认行为 例子:捕捉内置异常 try/finally语句 例子:利用try/finally编写终止行为 统一try/except/finally 通过嵌套合并finally和except 合并try的例子 raise语句 例子:引发并捕捉用户定义的异常 例子:利用raise传入额外的数据 例子:利用raise传递异常 assert语句 例子:收集约束条件(但不是错误) with/as环境管理器 基本使用 环境管理协议 为什么要在意:错误检查 本章小结 头脑风暴 本章习题 习题解答 第28章异常对象 基于字符串的异常 字符串异常就要出局了 基于类的异常 类异常例子 为什么使用类异常 内置Exception类 定义异常文本 发送额外数据和实例行为 raise语句的一般形式 本章小结 头脑风暴 本章习题 习题解答 第29章异常的设计 嵌套异常处理器 例子:控制流程嵌套 例子:语法嵌套化 异常的习惯用法 异常不总是错误 函数信号条件和raise 在try外进行调试 运行进程中的测试 关于sys.exc_info 与异常有关的技巧 应该包装什么 捕捉太多:避免空except语句 捕捉过少:使用基于类的分类 异常陷阱 字符串异常匹配是通过同一性而不是通过值 捕捉到错误的异常 核心语言总结 Python工具集 大型项目的开发工具 本章小结 头脑风暴 本章习题 习题解答 头脑风暴:第七部分 练习题 第八部分 附录 附录A安装和配置 附录B每部分练习题解答

亚马逊链接

基本信息

名称: Web标准之道 博客园精华集
作者信息: 作者: 阿一 [ 中文 pdf ]

简单介绍

《Web标准之道:博客园精华集》由人民邮电出版社出版。半年前,在博客同这杆大旗下的感召下,一群园友聚到了一起,组成了博客园精华集编委会,酝酿着一出好戏。这期间,有过争执,但更多的是合作。长期的磨合,使得来自五湖四海的编委会成员互相熟悉,甚至无话不谈。这,也是一种财富。今天,博客园这坛好酒,在陈酿了五年之后,终于要开封了。这是一本关于Web标准、前端编程、网站优化的集大成之作,代表了博客园在Web领域的最高水准。所选文章大多是经验之谈,所谓技术人士的“心灵老鸭汤”:全书最有撼力的文章,莫过于Cat Chen的《欲练CSS,必先宫IE》;鸟食轩和老赵的文章偏实用,主要集中在Javascript领域;爆牙齿的《重构之美》系列,则有“采菊东篱下,悠然见南山”的意境。 妙笔生花之作不胜枚举,正所谓:备美酒兮以飨佳朋,身心俱醉。博客园的草根技术文集,博客园五年精华与沉淀,众多MVP倾情奉献。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
第一部分 HTML/CSS 

谈谈网页设计中的字体应用(1)——Font Set 2 目前的网页还是以文字信息为主,而字体作为文字表现形式的最重要参数之一,自然有着相当重要的地位。可惜字体的重要性在很长时间内并没有得到足够的重视

谈谈网页设计中的字体应用(2)——serif和sans-serif 5 有多少人可以正确地使用它们呢?有多少人真正了解这两个通用字体族呢?本文将给您一个最清楚深入的剖析

谈谈网页设计中的字体应用(3)——实战应用篇•上 10

谈谈网页设计中的字体应用(4)——实战应用篇•下 14 纸上谈兵终是虚,让我们在战场上学习更多的技能

让CSS区分各种各样的input 19 input代表的实在太多了,但它们却不可能使用相同的样式,当我们不想添加成片的class时,试试这里的方法,四个解决方案,总有一个您需要的

一个常被问到的问题: 如何让层盖住select 25 IE 6依然是目前的主流浏览器,IE 6的select也一直“高高在上”,经常遇到的问题却成为一直以来的话题,本文将为您展现终极解决方案

兼容IE、Firefox的图片自动缩放的CSS 29 厌烦了写大量的JavaScript来控制一个个的图片,那么来用CSS(当您不能确定expression将会带来什么的时候,请谨慎使用)

第二部分 Web标准

Web标准页面设计——要注意的很多 32 本文是作者在做完一个大型项目之后的总结,提到了很多方面,相信这些知识点对所有走在Web标准化道路上的人都有很大的帮助

欲练CSS,必先宫IE 39 Win国天下,欲练CSS之人不在少数,大多不得要领,又或是走火入魔,全为IE所累。故曰:欲练CSS,必先宫IE

你有table/强迫症吗 42 如果你宫了IE然而还是觉得不得要领,那就该怀疑自己是不是有传说中的table强迫症了

根本不存在DIV + CSS布局这回事 44 看了上面的两篇文章,您是不是已经开始拿DIV+CSS布局来和table布局进行比较了?实际上,用于布局的只有CSS,根本不存在DIV+CSS布局这回事

慎用XHTML标签的自关闭写法 47 请注意:并不是所有标签都可以自关闭

Web标准不标准 49 一群会用table蹩脚布局的网页初学者嘲笑着那些对网页制作一窍不通的门外汉;而一群自认为Table布局无所不能的Table布局拥护者则嘲笑着那群用Table蹩脚布局的网页初学者;那些刚试着将几个页面中的TABLE换成DIV的所谓的Web标准设计者则嘲笑着那群死抱Table布局不放的table布局设计者;而一群焦头烂额终于在网站上贴上“W3C验证通过HTML网站”图标的自认高人的Web标准设计者则嘲笑着那群以为“DIV+CSS”就是Web标准的Web标准设计初学者;但是当我们把网页放在不同的浏览器中的时候,却发现我们全部都被“Web标准设计”嘲笑了

走在Web标准化设计的路上[唠叨先] 53 晕,现在才谈XHTML是不是太晚了点,这东东2004就火了一把了。其实,作为一项技术,没有火与不火的说法,也没有早与晚的说法。技术的生命力和火没有关系,不知道不理解没学会怎么都不晚

走在Web标准化设计的路上——振臂一呼:CSS,Stop! 55 近几年Web标准的推广变成了CSS的推广,CSS重要吗?我们不要CSS行不行?你找一大堆完全合理的理由……“行不行?”“行!”那就对了,我说不要你的CSS,我要他的CSS,又行不行?那么和XHTML相比,CSS重要在哪里

走在Web标准化设计的路上——对HTML/XHTML/XML/XSL的 一些认识 57 让我们从这里开始更深入地了解这些L们

走在Web标准化设计的路上——深入结构:理解h系列的不合理 60 HTML中的6个标题Tag(h1/h2/h3/h4/h5/h6),设计得是否合理?理由?解决办法

走在Web标准化设计的路上——深入结构:合理运用DIV和SPAN 66 把DIV看成是布局元素的人非常多,类似有“用div代替table进行布局”、“实战CSS+DIV布局”等,太多了,可是,DIV却不是布局元素,更可怕的是XHTML中根本不存在一个布局元素

走在Web标准化设计的路上深入结构:DIV再议以及对SPAN的迷惑 70 上篇文章中主要否定了使用DIV进行布局这种说法,提出DIV应当用于组织代码结构,现在我们再深入一点,DIV拥有语义吗

走在Web标准化设计的路上——复杂表单 74

走在Web标准化设计的路上[复杂表单:Reload] 77 一直有种说法:Table用于数据表,对于复杂表单,Table也是最好的选择,那么,到底复杂表单是否应该使用Table

走在Web标准化设计的路上[深入语义:列表和表格的抉择] 83 问题:XHTML中的列表Tag(ul/ol)和表格Tag(Table)区别何在?对于单列多行下的数据表,如何判断和选择

IE 7标准之道——1. 更丰富的CSS选择符 86 IE 7最令网页设计者兴奋的改进,便是支持更多、更丰富的CSS选择符,因此可以更方便地实现一些在IE 6中很难实现或者无法实现的效果。下面就让我们看看这些令人兴奋的、IE 7新支持的选择符

IE 7标准之道——2:引起页面布局混乱的祸首 98 页面乱了!谁搞的?让本文带您进入侦探之路

IE 7标准之道——3:歌剧院魅影bug 114 估计很多朋友都对这个华丽的“歌剧院魅影”有眼前一亮的感觉,其实这纯粹是一个标题党作为,这个Bug和歌剧院半毛钱关系都没有。这个bug在国际上比较获得认可的名字叫做——“IE 6重复文字Bug”。这是一个非常好玩但是又很令人摸不透的bug

IE 7标准之道——4:上去了!终于上去了 118 这是IE 6一个很著名且诡异的bug,很简单,也很容易重现。说白了就是:列表框(select)一直把DIV踩在脚底下。因为这个bug,不知道多少浮动菜单被破坏

IE 7标准之道——5:置换元素与行距bug 122 也许您没有听说过“置换元素”这个词,但这个问题您一定遇到过

IE 7标准之道——6:float双倍margin bug 129 很出名,很常见,很简单,如何修正呢?这里有最好的答案

IE 7标准之道——7:躲猫猫bug 134 我的文字不见了!躲哪里去了?IE开发团队都不知道,我们怎么可能知道?但是我们却有办法找出这个猫猫

IE 7标准之道——8:疯了的边框线 138 疯了,边框线算是彻底地疯掉了,这里却没有“为什么”,还好,我们有“怎么办”

第三部分 安全与优化

Web开发中你注意这些问题了吗(前台构架篇) 146 Web 2.0带给我们更好的用户体验和更炫、更酷的效果,Javascript、Flash、Silverlight都跃跃欲试。于是,我们网站中有了越来越多的JS和CSS的文件和代码。随着数量的增多,如何管理这些文件和这些代码、如何通过合理的方式来提升性能,已经是我们必须面对的问题

如何利用客户端缓存对网站进行优化 151 你的网站在并发访问量很大并且无法承受压力的情况下,你会如何优化?很多人会回答服务器缓存,其实这里有更好的方式—客户端才是我们真正的战场

如何提高网页的效率(上篇)——提高网页效率的14

条准则 155 网站最基本的东西是什么?——内容?SEO(搜索引擎优化)?UE(用户体验)?都不对!是速度

如何提高网页的效率(下篇)——使用Yslow掌握网站慢的原因 164 工欲善其事,必先利其器,上篇讲到网站最基本要素是速度,这一次将为大家带来很好用的工具,来协助我们提升网站的速度

关于Web应用程序安全的思考 169 没有绝对的安全,在Web上更没有。对于一个Web程序来讲,至少我们应该做到:自己(一个有经验的Web开发人员)攻不破这个系统。HTTP是开放的﹐因此谁都能向网络上公开的Web服务器发送request请求﹐要求一个URL,但可惜的是,Web服务器对于请求方的识别能力是很低的。使用URL进行安全管控的关键不是判断URL,而是判断每次request,检查每次request是否合法,以防止安全漏洞

SEO——我们是不是走错了路 194 多少公司把钱给了搜索引擎?多少人每天为SEO而工作?我们的工作是必要的吗?SEOer的存在是正确的吗?是不是在这条路上我们走进了迷途?存在即是合理,但我们依然可以停下来想一想,什么才应该是我们真正的追求

第四部分 JavaScript

JavaScript变量作用域及可访问性的探讨 200 永远的话题,永远的焦点,不过,你可能永远无法找到比这里更好的探讨

JavaScript中的this关键字 207

你不知道的JavaScript——“this” 215 两大高手共论“this”:太常用了,所有写过JavaScript的人都用过,以至于我们每个人都会认为自己很了解它,但是,我们真的了解吗?是不是在我们的理解之外,还有什么是我们没有想到的?看过这两篇文章后,你会发现一个不一样的“this”

JavaScript代码压缩、加密算法分析及工具实现 220 现在网上很多JavaScript都进行了压缩,同时代码变得不可直接阅读,也相当于一种简单的加密了,本文对其中一种典型的算法进行分析,并介绍如何解密代码和重新实现

JavaScript Table排序 230 网上也有很多其他的Table排序函数,有的基于数组,有的不够灵活。这个函数能在原有Table结构上加入功能,不用太多改动,基于OO的结构也易于使用(当然前提是对JS有一定认识)。这里只是满足基本需求,你可以自己动手扩展

设计模式在JavaScript中的应用(1)——MVC 236 采用了设计模式,程序无疑将具有更好的健壮性,可维护性以及可读性。所以,作为能工巧匠的您,也一定不会放过令程序蓬荜生辉的机会。让我们一起领略MVC模式

设计模式在JavaScript中的应用(2)——Observer 243 上篇我们讨论了Web开发中最重要的设计模式MVC,这一篇我们要讨论的是Observer模式。与MVC这样的大型设计模式相比,Observer模式则要轻量很多

JavaScript面向对象之属性实现 248 属性是对私有变量的一种保护手段,同时提供了像public变量一样的使用效果。近代的高级编程语言,(例如C#和Java)都支持属性这一特点,让我们在JavaScript里实现相同的功能

基于“甘露模型”的多重继承和接口实现,附带“准”桥接模式的验证 251 你是否听过“甘露模型”呢?是否觉得它在某些地方还不是特别完善?那么,在这篇文章里,让我们继续这个话题,让甘露来得更多一些

在JavaScript面向对象编程中使用继承(1) 257 前面几篇提到了使用JavaScript进行面向对象编程的一些内容,上一篇中实现了多重继承,在这里,让我们开始全面的了解“继承”在JavaScript中的应用,本篇列出了4种实现继承的方式

在JavaScript面向对象编程中使用继承(2) 261 本篇详细介绍了继承构造法,适用于:小规模类之间的继承,基类和子类的属性方法在5~8个,还有就是以构造函数中赋值方式导入类的属性和方法,而不用prototype导入的类编写习惯的时候

在JavaScript面向对象编程中使用继承(3) 264 原型继承法一样有它的缺点,仅适用于基类没有属性的情形,而优点也是相当明显:保持了子类构造函数的完整,可以不在里面添加任何和继承有关的代码,所有继承和重载操作都由对原型(prototype)的操作来完成

在JavaScript面向对象编程中使用继承(4) 267 本文介绍实例继承法,此种方法没有太经典的应用场景,不过对于基类比较复杂,而子类需要添加的属性方法很少,实例法还是显得挺清晰的。特别是对于Javacript对象动态扩展很熟悉的人,就更觉得明确了

在JavaScript面向对象编程中使用继承(5) 269 附加继承法,此方法由本系列作者独创,解决了上面3种经典继承方式的很多问题,使用起来异常强大,就像作者所说,适用场景为anywhere, anytime, anybody

挣脱浏览器的束缚(1)——前言 273 工欲善,必先利其器

挣脱浏览器的束缚(2)——别让脚本引入坏了事 276 Web应用中需要的脚本越来越多,传统的脚本引入方式已经越来越无法适应这种变化,在本篇中,老赵带我们一起看看如何完美解决脚本引入的问题

挣脱浏览器的束缚(3)——两个连接还不够“并行” 281 浏览器很傻,但是我们很聪明,于是,就有了突破浏览器双连接限制的方法

挣脱浏览器的束缚(4)——王道!动态添加script元素 285 突破双连接限制解决了一个很大的问题,但依然有更多的问题需要解决。动态添加script元素也同样有着很多的麻烦和问题,但这并不妨碍它成为“王道”,且听老赵慢慢道来

挣脱浏览器的束缚(5)——哭笑不得的IE Bug 289 在IE中,如果同时建立两个以上“连接状态”的连接,那么就很不幸地出现了问题:浏览器停止响应了!不过还好,浏览器很傻,JavaScript也很傻,我们可以很容易地骗过去

亚马逊链接

基本信息

名称: Python UNIX和Linux系统管理指南
作者信息: 作者: 杨明华 [ 中文 pdf ]

简单介绍

《Python UNIX和Linux系统管理指南》是由机械工业出版社出版的。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35

前言
第1章 Python简介
为什么要选Python
学习的动力
一些基础知识
在Python中执行命令
在Python中使用函数
通过Import语句实现代码复用

第2章 IPython 安装IPython 基础知识 从功能强大的函数获得帮助 UNIX Shell 信息搜集 自动和快捷方式 本章小结

第3章 文本 Python的内建功能及模块 Element Tree 本章小结

第4章 文档与报告 自动信息收集 手工信息收集 信息格式化 信息发布 本章小结

第5章 网络 网络客户端 远程过程调用 SSH Twisted Scapy 使用Scapy创建脚本

第6章 数据 引言 使用OS模块与Data进行交互 拷贝、移动、重命名和删除数据 使用路径.目录和文件 数据比较 合并数据 对文件和目录的模式匹配 包装rsync 元数据:关于数据的数据 存档.压缩.映像和恢复 使用tarfile模块创建TAR归档 使用tarfile模块检查TAR文件内容

第7章 SNMP 引言 对SNMP的简要介绍 IPython与Net-SNMP 查找数据中心 使用Net-SNMP获取多个值 创建混合的SNMP工具 Net-SNMP扩展 SNMP设备控制 整合Zenoss的企业级SNMP

第8章 操作系统什锦 引言 Python中跨平台的UNIX编辑 PyInotify OSX Red Hat Linux系统管理 Ubuntu管理 Solaris系统管理 虚拟化 云计算 使用Zenoss从Linux上管理Windows服务器

第9章 包管理 引言 Setuptools和Python Egg 使用easy install Easy install的高级特征 创建egg 进入点及控制台脚本 使用Python包索引注册一个包 Distutils Buildout 使用Buildout 使用Buildout进行开发 virtualenv EPM包管理 EPM总结:真的非常简单

第10章 进程与并发 引言 子进程 使用Supervisor来管理进程 使用Screen来管理进程 Python中的线程 进程 Processing模块 调度Python进程 daemonizer 本章小结

第11章 创建GUI GUI创建理论 生成一个简单的PyGTK应用 使用PyGTK创建Apache日志浏览器 使用Curses创建Apache日志浏览器 Web应用 DJango 本章小结

第12章 数据持久性 简单序列化 关系序列化 本章 小结

第13章 命令行 引言 基本标准输入的使用 Optparse简介 简单的Optparse使用模式 UnixMashups:整合Shell命令到Python命令行工具中 整合配置文件 本章小结

第14章 实例 使用Python管理DNS 使用OpenLDAP.ActiveDirectory以及其他Python工具实现LDAP Apache日志报告 FTP镜像 附录回调

亚马逊链接

基本信息

名称: JavaScript宝典(第6版)
作者信息: 作者: 古德曼 (Goodman.D.) [ 中文 pdf ]

简单介绍

使用JavaSc ript。让您的网页在浩瀚的网络海洋中焕发出夺目光彩 这本专家级的指南,是畅销书《JavaScript Bible》的升级换代 不管您是JavaScript高手,还是初学者,《JavaScript宝典(第6版)》都值得JavaScript Web开发人员一遍一遍地反复研读。·掌握JavaSc ript基础,编写您的第一个实用脚本;·为单平台和跨平台用户开发代码,并满足不断发展的标准。·获悉文档对象模型以及HTML元素对象的要点;·编写脚本,动态修改Web网页,以响应用户操作;·学会新的Ajax技术,创建有效的网页用户接口;·应用最新的JavaScript异常处理,以及定制对象的技术;·创建站点的交互能力,如Google Maps。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
第1部分 JavaScript起步
第1章 JavaScript在万维网及其他方面的作用3
1.1 Web上的竞争3
1.2 其他Web技术4
1.2.1 超文本标记语言(HTML和XHTML)4
1.2.2 CSS(层叠样式表)4
1.2.3 服务器编程4
1.2.4 辅助程序和插件程序5
1.3 JavaScript:语言的集大成者6
1.3.1 LiveScript变成了JavaScript6
1.3.2 微软世界6
1.4 JavaScript:灵活好用的工具7

第2章 开发适用于各种浏览器的JavaScript8 2.1 相互竞争8 2.2 相互包容9 2.3 当今的兼容性问题9 2.3.1 将语言从对象中独立出来9 2.3.2 核心语言标准10 2.3.3 文档对象模型11 2.3.4 层叠样式表11 2.3.5 动态HTML和定位12 2.4 开发脚本编写策略12

第3章 第1个JavaScript脚本13 3.1 软件工具13 3.1.1 选择文本编辑器13 3.1.2 选择浏览器14 3.2 设置编写环境14 3.2.1 Windows14 3.2.2 MacOSX14 3.2.3 重载问题15 3.3 第一个脚本的功能15 3.4 输入第一个脚本16 3.5 检查脚本17 3.5.1 HTML文档17 3.5.2 script标记17 3.5.3 运行脚本的触发器17 3.5.4 插入文本17 3.5.5 获得浏览器信息18 3.6 轻松编写脚本18

第2部分 JavaScript教程 第4章 浏览器对象和文档对象21 4.1 脚本运行初步21 4.2 何时使用JavaScript22 4.3 文档对象模型22 4.3.1 HTML结构和DOM23 4.3.2 浏览器窗口中的DOM23 4.4 载入文档时24 4.4.1 一个简单的文档24 4.4.2 添加段落元素24 4.4.3 添加段落文本24 4.4.4 生成新元素24 4.5 对象引用25 4.5.1 对象命名25 4.5.2 引用特定对象25 4.6 节点术语26 4.6.1 node概述26 4.6.2 父与子26 4.7 如何定义对象27 4.7.1 属性27 4.7.2 方法28 4.7.3 事件28 4.8 习题29

第5章 脚本和HTML文档30 5.1 脚本放在文档何处30 5.1.1 script标记30 5.1.2 标记位置31 5.1.3 处理旧版本的浏览器32 5.2 JavaScript语句32 5.3 脚本语句何时执行33 5.3.1 文档载入时,即刻执行33 5.3.2 延时脚本33 5.4 观察脚本错误35 5.5 脚本和编程35 5.6 习题36

第6章 程序设计基础之一37 6.1 关于JavaScript语言37 6.2 处理信息37 6.3 变量38 6.3.1 创建变量38 6.3.2 变量名38 6.4 表达式和求值39 6.4.1 脚本中的表达式39 6.4.2 表达式和变量40 6.5 数据类型转换40 6.5.1 将字符串转换为数值41 6.5.2 将数值转换为字符串41 6.6 操作符41 6.6.1 算术操作符41 6.6.2 比较操作符42 6.7 习题42

第7章 程序设计基础之二43 7.1 决策和循环43 7.2 控制结构43 7.2.1 if结构44 7.2.2 if…else结构44 7.3 重复循环45 7.4 函数45 7.4.1 函数参数45 7.4.2 变量作用域46 7.5 大括号47 7.6 数组48 7.6.1 创建数组48 7.6.2 存取数组数据48 7.6.3 关联数组49 7.6.4 数组中的document对象50 7.7 习题50

第8章 window和document对象51 8.1 顶层对象51 8.2 window对象51 8.2.1 访问窗口属性和方法52 8.2.2 创建窗口52 8.3 window对象的属性和方法53 8.3.1 window.alert()方法53 8.3.2 window.confirm()方法53 8.3.3 window.prompt()方法54 8.3.4 load事件54 8.4 location对象54 8.5 navigator对象55 8.6 document对象55 8.6.1 document.forms[]属性55 8.6.2 document.images[]属性56 8.6.3 document.write()方法56 8.6.4 document.createElement()和document.createTextNode()方法57 8.6.5 document.getElementById()方法58 8.7 习题58

第9章 表单和表单元素59 9.1 form对象59 9.1.1 作为对象和容器的表单59 9.1.2 访问表单属性60 9.1.3 form.elements[]属性60 9.2 作为对象的表单控件60 9.2.1 文本相关的输入对象61 9.2.2 按钮对象62 9.2.3 复选框对象62 9.2.4 单选按钮对象63 9.2.5 select对象64 9.3 向函数传递表单数据和元素65 9.4 提交和预验证表单66 9.5 习题67

第10章 String、Math和Date对象68 10.1 核心语言对象68 10.2 String对象68 10.2.1 连接字符串69 10.2.2 字符串方法69 10.3 Math对象70 10.4 Date对象71 10.5 日期计算72 10.6 习题73

第11章 用脚本编写框架和多窗口74 11.1 框架:父框架和子框架74 11.2 家庭成员间的引用75 11.2.1 父到子的引用75 11.2.2 子到父的引用75 11.2.3 子到子的引用76 11.3 框架脚本编程提示76 11.4 iframe元素简介76 11.5 控制多框架——导航条77 11.6 多窗口引用78 11.7 习题79

第12章 图像和动态HTML80 12.1 image对象80 12.1.1 可互换的图像80 12.1.2 预缓存图像81 12.1.3 创建图像翻转82 12.2 无须脚本的翻转84 12.3 Javascript:伪URL85 12.4 流行的动态HTML技术85 12.4.1 更改样式表设置86 12.4.2 通过W3CDOM节点实现动态内容86 12.4.3 通过innerHTML属性实现动态内容86 12.5 习题87

第3部分 文档对象参考 第13章 JavaScript基础91 13.1 JavaScript版本91 13.2 核心语言标准——ECMAScript92 13.3 在HTML文档中嵌入脚本92 13.3.1 script标记92 13.3.2 从旧浏览器中隐藏脚本语句93 13.3.3 完全隐藏脚本94 13.3.4 向XHTML验证程序隐藏脚本94 13.3.5 脚本库(.js文件)95 13.4 浏览器版本检测95 13.4.1 非脚本浏览器的编码95 13.4.2 为不同的浏览器编写脚本96 13.5 兼容性设计99 13.5.1 处理beta版浏览器99 13.5.2 TheEvaluatorSr.1 00 13.5.3 参考章 节中的兼容性等级100 13.6 有经验程序员的语言基础101 13.7 对象模型的发展103

第14章 文档对象模型基础104 14.1 对象模型层次104 14.1.1 作为路径图的层次104 14.1.2 浏览器文档对象路径图105 14.2 文档对象的产生过程105 14.3 对象属性106 14.4 对象方法106 14.5 对象事件处理器107 14.6 对象模型概述107 14.7 基本对象模型108 14.8 基本附加图像对象模型108 14.9 Navigator4扩展109 14.9.1 事件捕获模型109 14.9.2 层109 14.10 InternetExplorer4+扩展110 14.10.1 HTML元素对象110 14.10.2 元素包含层次110 14.10.3 层叠样式表111 14.10.4 事件冒泡111 14.11 InternetExplorer5+扩展111 14.12 W3CDOM112 14.12.1 DOM层112 14.12.2 规范中衡定不变的部分113 14.12.3 W3CDOM中不具备的特性113 14.12.4 新的HTML惯例113 14.12.5 新DOM概念114 14.12.6 静态W3CDOMHTML对象119 14.12.7 双向事件模型120 14.13 脚本编程趋势121 14.13.1 将内容与脚本分离121 14.13.2 尽可能使用W3CDOM122 14.13.3 处理事件122 14.14 标准兼容模式(DOCTYPE切换)122 14.15 JavaScript对象模型基础小结123

第15章 通用html元素对象124 15.1 语法126 15.2 关于这些对象127 15.3 属性127 15.4 方法167 15.5 事件处理器211 15.6 常用键盘事件任务228

第16章 window对象和frame对象239 16.1 window对象术语239 16.2 框架239 16.2.1 创建框架240 16.2.2 框架对象模型240 16.2.3 引用框架240 16.2.4 top和parent241 16.2.5 防止页面在其他Web站点的框架中显示241 16.2.6 确认页面载入框架集241 16.2.7 从有框架到去掉框架242 16.2.8 继承性和封装性242 16.2.9 框架同步242 16.2.10 空白框架242 16.2.11 查看框架源代码243 16.2.12 框架和frame元素对象243 16.3 window对象243 16.3.1 语法245 16.3.2 关于window对象245 16.3.3 属性246 16.3.4 方法268 16.3.5 事件处理器300 16.4 frame元素对象304 16.4.1 语法304 16.4.2 关于frame对象304 16.4.3 属性304 16.5 frameset元素对象308 16.5.1 语法308 16.5.2 关于frameset对象309 16.5.3 属性309 16.6 iframe元素对象312 16.6.1 语法312 16.6.2 关于iframe对象313 16.6.3 属性313 16.7 popup对象316 16.7.1 语法316 16.7.2 关于popup对象316 16.7.3 属性317 16.7.4 方法317

第17章 location对象和history对象320 17.1 location对象320 17.1.1 语法320 17.1.2 关于location对象320 17.1.3 属性322 17.1.4 方法329 17.2 history对象331 17.2.1 语法331 17.2.2 关于history对象331 17.2.3 属性332 17.2.4 方法333

第18章 document对象和body对象336 18.1 document对象336 18.1.1 语法338 18.1.2 关于document对象338 18.1.3 属性339 18.1.4 方法365 18.1.5 事件处理器380 18.2 body元素对象381 18.2.1 语法381 18.2.2 关于body对象381 18.2.3 属性382 18.2.4 方法385 18.2.5 事件处理器386 18.3 TreeWalker对象386 18.3.1 语法386 18.3.2 关于此对象386 18.3.3 属性387 18.3.4 方法387

第19章 Link和Anchor对象389

第20章 lmage对象、Area对象、Map对象和Canvas对象394 20.1 image和img元素对象394 20.1.1 语法395 20.1.2 关于此对象395 20.1.3 属性396 20.1.4 事件处理器405 20.2 area元素对象407 20.2.1 语法407 20.2.2 关于此对象407 20.2.3 属性408 20.3 map元素对象409 20.3.1 语法409 20.3.2 关于此对象409 20.3.3 属性410 20.4 canvas对象411 20.4.1 语法412 20.4.2 关于此对象412 20.4.3 属性414 20.4.4 方法416

第21章 Form及其相关对象419 21.1 对象层次中的表单419 21.2 form对象419 21.2.1 语法420 21.2.2 关于该对象420 21.2.3 引用表单控件420 21.2.4 将表单和元素传递到函数421 21.2.5 用电子邮件传输表单423 21.2.6 改变表单属性424 21.2.7 表单按钮424 21.2.8 提交后的重定位424 21.2.9 表单元素数组424 21.2.1 0关于input元素对象425 21.2.1 1属性425 21.2.1 2方法428 21.2.1 3事件处理器430 21.3 fieldset和legend元素对象431 21.3.1 语法431 21.3.2 关于这些对象431 21.4 label元素对象432 21.4.1 语法432 21.4.2 关于该对象432 21.4.3 属性432 21.5 脚本编程和WebForms2.0432 21.5.1 什么是WebForms2.0433 21.5.2 WebForms2.0和JavaScript433

第22章 按钮对象434 22.1 button元素对象以及button、submit、reset输入对象434 22.1.1 语法434 22.1.2 关于这些对象435 22.1.3 属性436 22.1.4 方法436 22.1.5 事件处理器437 22.2 复选框输入对象438 22.2.1 语法438 22.2.2 关于该对象438 22.2.3 属性438 22.2.4 方法440 22.2.5 事件处理器441 22.3 单选button输入对象442 22.3.1 语法442 22.3.2 关于该对象442 22.3.3 属性443 22.3.4 方法445 22.3.5 事件处理器445 22.4 图像输入对象446 22.4.1 语法446 22.4.2 关于该对象447 22.4.3 属性447

第23章 文本相关表单对象448 23.1 文本输入对象448 23.1.1 语法448 23.1.2 关于该对象449 23.1.3 文本域和事件449 23.1.4 属性450 23.1.5 方法454 23.1.6 事件处理器456 23.2 password输入对象458 23.2.1 语法458 23.2.2 关于该对象458 23.3 hidden输入对象458 23.3.1 语法458 23.3.2 关于该对象458 23.4 textarea表单对象459 23.4.1 语法459 23.4.2 关于该对象459 23.4.3 文本域中的回车460 23.4.4 属性460 23.4.5 方法461

第24章 选择、选项和文件上传对象462 24.1 select元素对象462 24.1.1 语法462 24.1.2 关于select对象463 24.1.3 修改select选项(NN3+、IE4+)464 24.1.4 修改select选项(IE4+)466 24.1.5 修改select选项(W3CDOM)467 24.1.6 属性468 24.1.7 方法473 24.1.8 事件处理器473 24.2 option元素对象474 24.2.1 语法475 24.2.2 关于该对象475 24.2.3 属性475 24.3 optgroup元素对象475 24.3.1 语法476 24.3.2 关于该对象476 24.3.3 属性476 24.4 file输入元素对象477 24.4.1 语法477 24.4.2 关于该对象477

第25章 event对象479 25.1 事件479 25.1.1 事件的内容和事件何时发生480 25.1.2 静态event对象480 25.2 事件传播480 25.2.1 NN4事件传播481 25.2.2 IE4+事件传播482 25.2.3 W3C事件传播485 25.3 引用事件对象488 25.4 绑定事件488 25.4.1 通过标记属性绑定事件489 25.4.2 通过对象属性绑定事件489 25.4.3 通过IE附加绑定事件490 25.4.4 通过W3C监听器绑定事件490 25.4.5 跨浏览器事件绑定解决方案491 25.5 事件对象兼容性491 25.6 深入事件模型493 25.6.1 检查跨平台的修改键493 25.6.2 跨平台的按键捕获494 25.7 事件类型494 25.8 IE4+事件对象496 25.8.1 语法497 25.8.2 关于该对象497 25.8.3 属性497 25.9 NN6+/Moz/Safarievent对象510 25.9.1 语法511 25.9.2 关于该对象511 25.9.3 属性511 25.9.4 方法523

第26章 styleSheet表和style对象525 26.1 理解对象名称525 26.2 导入样式表526 26.3 读取样式属性527 26.4 style元素对象527 26.4.1 语法527 26.4.2 关于该对象527 26.4.3 属性528 26.5 styleSheet对象528 26.5.1 语法529 26.5.2 关于该对象529 26.5.3 属性529 26.5.4 方法533 26.6 cssRule和rule对象534 26.6.1 语法535 26.6.2 关于这些对象535 26.6.3 属性535 26.7 currentStyle、runtimeStyle和style对象536 26.7.1 语法537 26.7.2 关于这些对象537 26.7.3 Style属性537 26.7.4 属性值538 26.7.5 文本和字体属性540 26.7.6 内联显示和布局属性544 26.7.7 定位属性548 26.7.8 背景属性549 26.7.9 边框和边界属性550 26.7.1 0列表属性553 26.7.1 1滚动条属性554 26.7.1 2表属性554 26.7.1 3页面和打印属性555 26.7.1 4杂项属性555 26.7.1 5听觉属性556 26.8 filter对象557 26.8.1 语法557 26.8.2 关于该对象557 26.8.3 WinIE5.5 +滤镜语法变化561

第27章 Ajax和XML565 27.1 元素和节点565 27.2 xml元素对象567 27.2.1 语法567 27.2.2 关于此对象567 27.2.3 属性567 27.3 XMLHttpRequest对象568 27.3.1 语法568 27.3.2 关于此对象568 27.3.3 属性570 27.3.4 方法572

第4部分JavaScript核心语言参考

第28章 string对象577 28.1 字符串和数值数据类型577 28.1.1 简单字符串577 28.1.2 建立长字符串变量578 28.1.3 连接字符串文字和变量578 28.1.4 特殊内嵌字符578 28.2 string对象579 28.2.1 语法579 28.2.2 关于该对象579 28.2.3 属性580 28.2.4 解析方法581 28.3 字符串使用函数593 28.4 URL字符串编码和译码595

第29章 Math、Number和Boolean对象596 29.1 JavaScript中的数值596 29.1.1 整型和浮点数值596 29.1.2 十六进制和八进制整数598 29.1.3 将字符串转换为数值598 29.1.4 将数值转换为字符串599 29.1.5 数值不是数值型时599 29.2 Math对象600 29.2.1 语法600 29.2.2 关于该对象600 29.2.3 属性600 29.2.4 方法600 29.2.5 创建随机数601 29.2.6 Math对象的快捷引用601 29.3 Number对象602 29.3.1 语法602 29.3.2 关于该对象602 29.3.3 属性602 29.3.4 方法603 29.4 Boolean对象604 29.4.1 语法604 29.4.2 关于该对象604

第30章 date对象605 30.1 时区和GMT605 30.2 date对象606 30.2.1 创建date对象606 30.2.2 内部对象的属性和方法607 30.2.3 日期方法607 30.2.4 处理时区610 30.2.5 字符串日期610 30.2.6 适于以前浏览器的日期格式610 30.2.7 更多的转换611 30.2.8 日期和时间运算611 30.2.9 计算天数612 30.2.1 0早期浏览器中日期的bug和漏洞614 30.3 表单中确认日期输入的方法614

第31章 Array对象617 31.1 结构化数据617 31.2 创建空数组618 31.3 向数组添加数据618 31.4 JavaScript数组创建环境619 31.5 删除数组项619 31.6 并行数组619 31.7 多维数组621 31.8 模拟Hash表622 31.9 array对象属性622 31.1 0array对象方法623

第32章 控制结构和异常处理633 32.1 if和if…else判定633 32.1.1 简单判定633 32.1.2 关于(条件)表达式634 32.1.3 复杂判定634 32.1.4 嵌套if…else语句635 32.2 条件表达式636 32.3 重复(for)循环636 32.3.1 使用循环计数器637 32.3.2 跳出循环638 32.3.3 使用continue继续循环639 32.4 while循环639 32.5 do-while循环640 32.6 循环遍历属性(for-in)640 32.7 with语句641 32.8 标签语句642 32.9 switch语句643 32.10 异常处理645 32.10.1 异常和错误645 32.10.2 异常机制645 32.11 使用try-catch-finally结构646 32.12 产生异常648 32.13 error对象650 32.13.1 语法651 32.13.2 关于该对象651 32.13.3 属性651 32.13.4 方法652

第33章 JavaScript操作符653 33.1 操作符类别653 33.2 比较操作符654 33.3 不同数据类型的比较654 33.4 结合操作符655 33.5 赋值操作符657 33.6 布尔操作符658 33.6.1 布尔运算658 33.6.2 使用布尔操作符660 33.7 按位操作符660 33.8 对象操作符661 33.9 其他操作符663 33.10 操作符优先级665

第34章 函数和自定义对象667 34.1 Function对象667 34.1.1 语法667 34.1.2 关于该对象667 34.1.3 创建函数668 34.1.4 嵌套函数668 34.1.5 函数参数669 34.1.6 属性669 34.1.7 方法671 34.2 函数应用注意事项672 34.2.1 调用函数672 34.2.2 变量范围:全局还是局部673 34.2.3 参数变量675 34.2.4 递归函数675 34.2.5 创建函数库676 34.2.6 封闭区间的意义676 34.3 使用面向对象的JavaScript创建自定义对象677 34.3.1 对象的具体细节678 34.3.2 例子:行星对象679 34.3.3 进一步封装682 34.3.4 创建对象数组682 34.3.5 利用嵌套对象683 34.3.6 创建对象的现代方法684 34.3.7 定义对象属性的获得者和设置者684 34.4 面向对象的概念685 34.4.1 增加原型685 34.4.2 原型继承686 34.4.3 嵌套对象和原型继承686 34.5 object对象687 34.5.1 语法687 34.5.2 关于该对象687 34.5.3 方法688

第35章 全局函数和语句690 35.1 函数690 35.2 语句695

第5部分 附录 附录A JavaScript和浏览器对象快速参考703

附录B JavaScript保留字718

附录C 练习答案719 C.1 第4章 答案719 C.2 第5章 答案720 C.3 第6章 答案721 C.4 第7章 答案721 C.5 第8章 答案724 C.6 第9章 答案725 C.7 第10章 答案727 C.8 第11章 答案728 C.9 第12章 答案728

附录D JavaScript和DOMInternet资源729 D.1 本书的技术支持和更新729 D.2 新闻组729 D.3 FAQ730 D.4 在线文档730 D.5 万维网730

附录E 本书配套光盘内容731 E.1 系统需求731 E.2 光盘内容731 E.2.1 文本编辑器的JavaScript清单731 E.2.2 附录A的JavaScript和浏览器对象快速参考的可打印版本732 E.2.3 本书主题参考的PDF版本732 E.3 疑难解答732

第6部分 附赠章 节(本部分内容在光盘中) 第36章 主体文本对象735 36.1 blockquote和q元素对象735 36.1.1 语法735 36.1.2 关于这些对象736 36.1.3 属性736 36.2 br元素对象736 36.2.1 语法736 36.2.2 关于该对象736 36.2.3 属性736 36.3 font元素对象736 36.3.1 语法737 36.3.2 关于本对象737 36.3.3 属性737 36.4 h1…h6元素对象739 36.4.1 语法739 36.4.2 关于这些对象739 36.4.3 属性739 36.5 hr元素对象740 36.5.1 语法740 36.5.2 关于该对象740 36.5.3 属性740 36.6 label元素对象742 36.6.1 语法742 36.6.2 关于该对象742 36.6.3 属性742 36.7 marquee元素对象743 36.7.1 语法743 36.7.2 关于该对象744 36.7.3 属性744 36.8 方法746 36.9 事件处理器746 36.10 Range对象747 36.10.1 语法747 36.10.2 关于该对象748 36.10.3 使用range748 36.10.4 属性749 36.10.5 方法751 36.11selection对象762 36.11.1 语法762 36.11.2 关于该对象762 36.11.3 属性763 36.11.4 方法764 36.12 ext和TextNode对象766 36.12.1 语法767 36.12.2 关于该对象767 36.1.3 属性767 36.12.4 方法768 36.13 extRange对象770 36.13.1 语法771 36.13.2 关于该对象771 36.13.3 使用文本范围772 36.13.4 关于浏览器兼容性773 36.13.5 属性773 36.13.6 方法775 36.14 extRectangle对象790 36.14.1 语法790 36.14.2 关于该对象790 36.14.3 属性791

第37章 HTML指示性对象793 37.1 HTML元素对象793 37.1.1 语法793 37.1.2 关于该对象794 37.1.3 属性794 37.2 head元素对象794 37.2.1 语法794 37.2.2 关于该对象794 37.2.3 属性794 37.3 base元素对象795 37.3.1 语法795 37.3.2 关于该对象795 37.3.3 属性795 37.4 link元素对象795 37.4.1 语法796 37.4.2 关于该对象796 37.4.3 属性796 37.4.4 事件处理器798 37.5 meta元素对象798 37.5.1 语法798 37.5.2 关于该对象798 37.5.3 属性799 37.6 script元素对象799 37.6.1 语法799 37.6.2 关于该对象800 37.6.3 属性800 37.7 title元素对象801 37.7.1 语法801 37.7.2 关于该对象801 37.7.3 属性801

第38章 表和列表对象802 38.1 表对象层次结构802 38.1.1 填充表单元格804 38.1.2 修改表单元格内容804 38.1.3 修改表行805 38.1.4 修改表列809 38.1.5 W3CDOM表对象类811 38.2 table元素对象811 38.2.1 语法812 38.2.2 关于该对象812 38.2.3 属性812 38.2.4 方法820 38.3 tbody、tfoot和thead元素对象822 38.3.1 语法822 38.3.2 关于这些对象822 38.3.3 属性823 38.4 caption元素对象823 38.4.1 语法823 38.4.2 关于该对象823 38.5 col和colgroup元素对象824 38.5.1 语法824 38.5.2 关于这些对象824 38.5.3 属性825 38.6 tr元素对象825 38.6.1 语法825 38.6.2 关于该对象826 38.6.3 属性826 38.6.4 方法827 38.7 td和th元素对象827 38.7.1 语法828 38.7.2 关于这些对象828 38.7.3 属性828 38.8 ol元素对象830 38.8.1 语法830 38.8.2 关于该对象830 38.8.3 属性831 38.9 ul元素对象831 38.9.1 语法832 38.9.2 关于该对象832 38.9.3 属性832 38.10 i元素对象832 38.10.1 语法832 38.10.2 关于该对象832 38.1 0.3 属性832 38.11dl、DT和DD元素对象833 38.11.1 语法833 38.11.2 关于这些对象833 38.12dir和menu元素对象834 38.12.1 语法834 38.12.2 关于这些对象834

第39章 Navigator和其他环境对象835 39.1 clientInformation对象(IE4+)和navigator对象(所有浏览器)835 39.1.1 语法836 39.1.2 关于该对象836 39.1.3 属性836 39.1.4 使用appVersion属性837 39.1.5 userAgent属性细节838 39.1.6 方法846 39.2 mimeType对象849 39.2.1 语法849 39.2.2 关于该对象849 39.2.3 属性849 39.3 plugin对象851 39.3.1 语法851 39.3.2 关于该对象851 39.3.3 属性852 39.3.4 方法852 39.4 查找mime类型和插件程序852 39.4.1 概述:使用mimeType和plugin对象853 39.4.2 验证mime类型853 39.4.3 验证插件程序853 39.4.4 验证插件程序和mime类型854 39.4.5 管理手工插件程序安装855 39.4.6 WinIE中的插件程序检测855 39.5 screen对象857 39.5.1 语法858 39.5.2 关于该对象858 39.5.3 属性858 39.6 userProfile对象860 39.6.1 语法860 39.6.2 关于该对象860 39.6.3 方法862

第40章 定位对象864 40.1 层的概念864 40.2 现代DOM中的定位元素865 40.2.1 改变元素背景865 40.2.2 剪切层866 40.2.3 嵌套层的脚本编写870 40.2.4 将外部HTML装入层874 40.2.5 定位元素的可见行为875 40.2.6 堆栈顺序的脚本编程876 40.2.7 拖动层和调整层的大小877

第41章 嵌入对象882 41.1 applet元素对象883 41.1.1 语法883 41.1.2 关于该对象883 41.1.3 属性884 41.2 object元素885 41.2.1 语法886 41.2.2 关于该对象886 41.2.3 属性886 41.3 embed元素对象890 41.3.1 语法890 41.3.2 关于该对象890 41.3.3 属性890 41.4 param元素的特例891

第42章 正则表达式和RegExp对象892 42.1 正则表达式和模式892 42.2 语言基础893 42.2.1 简单模式893 42.2.2 特殊字符893 42.2.3 分组和向后引用895 42.3 对象关系895 42.4 使用正则表达式897 42.4.1 是否有匹配897 42.4.2 获得匹配信息898 42.4.3 字符串替换900 42.5 正则表达式对象901 42.5.1 语法901 42.5.2 关于该对象901 42.5.3 属性901 42.5.4 方法902 42.6 RegExp对象903 42.6.1 语法903 42.6.2 关于该对象903 42.6.3 属性904

第43章 数据输入验证906 43.1 实时验证与批处理验证906 43.1.1 实时验证触发器906 43.1.2 批处理(模式)验证907 43.2 设计筛选器908 43.3 构建筛选器函数库908 43.3.1 isEmpty()908 43.3.2 isPosInteger()909 43.3.3 isInteger()909 43.3.4 isNumber()909 43.3.5 自定义验证函数909 43.4 复合验证函数910 43.5 日期和时间验证911 43.6 工业级强度的验证方案913 43.6.1 结构913 43.6.2 调度机制914 43.6.3 验证示例915 43.6.4 最后的检查921 43.6.5 检验922 43.7 设计数据验证922

第44章 脚本化Javaapplet和插件923 44.1 NPAPI概述923 44.2 为什么要控制Javaapplet924 44.3 关于Java924 44.3.1 Java基础类924 44.3.2 Java方法924 44.3.3 Javaapplet“属性”926 44.3.4 访问Java字段926 44.4 脚本化applet实练926 44.4.1 了解可脚本化方法926 44.4.2 applet的局限性928 44.4.3 匿名applet929 44.4.4 数据类型转换931 44.5 applet与脚本间的交互/通信931 44.5.1 applet需要什么931 44.5.2 HTML需要什么932 44.5.3 关于JSObject类932 44.5.4 数据类型转换933 44.5.5 applet到脚本的应用程序示例933 44.6 插件的脚本化935 44.6.1 HTML端935 44.6.2 API方法936 44.6.3 构建点唱机938 44.6.4 嵌入多个声音939 44.7 直接脚本化Java类941

第45章 脚本调试943 45.1 语法错误与运行时错误943 45.2 错误消息通知943 45.2.1 MozillaConsole窗口944 45.2.2 Safari错误944 45.2.3 多重错误消息944 45.3 详细错误消息945 45.3.1 错误文件名945 45.3.2 错误定位945 45.3.3 错误消息文本946 45.4 Mozilla控制台中的警告949 45.5 问题嗅探949 45.5.1 检查HTML标签949 45.5.2 阅读源代码949 45.5.3 时序问题950 45.5.4 重新打开文档950 45.5.5 找出什么能正常工作950 45.5.6 注释语句951 45.5.7 检查运行时表达式赋值951 45.6 调试工具951 45.6.1 WinIE脚本调试器951 45.6.2 Mazilla的Venkman调试器952 45.6.3 Firefox的FireBug调试器952 45.6.4 Safari的Drosera调试器952 45.6.5 使用可嵌入的Evaluator952 45.6.6 直接赋值953 45.7 一个简单的跟踪工具954 45.7.1 trace()函数954 45.7.2 为trace.js准备文档954 45.7.3 调用trace()955 45.8 浏览器缓存955 45.9 问题预防956 45.9.1 结构正确956 45.9.2 逐步构建956 45.9.3 测试表达式求值956 45.9.4 创建函数工作台956 45.1 0检测作品956

第46章 安全和NetScape签名脚本958 46.1 未雨绸缪958 46.2 当出现冲突时959 46.3 Java沙箱959 46.4 安全策略959 46.5 同源策略960 46.5.1 设置document.domain960 46.5.2 源检查960 46.6 Netscape签名脚本策略961 46.6.1 签名对象和脚本962 46.6.2 从签名脚本能获得什么962 46.7 数字证书962 46.7.1 如何获得证书962 46.7.2 激活codebase原则963 46.8 脚本签名963 46.8.1 签名工具963 46.8.2 准备好为脚本签名964 46.8.3 访问签名脚本964 46.8.4 编辑和移动签名脚本964 46.9 访问受保护的属性和方法964 46.9.1 获得权限964 46.9.2 指定目标965 46.10 脚本中加入权限966 46.10.1 保持小窗口966 46.10.2 考虑用户966 46.11 示例966 46.11.1 访问私有浏览器信息966 46.11.2 访问受保护的窗口属性967 46.12 处理权限管理器错误967 46.13 签名脚本其他相关事宜968 46.13.1 导出和导入签名脚本968 46.13.2 锁定签名页面968 46.13.3 国际字符968

第47章 跨浏览器动态HTML问题969 47.1 什么是DHTML969 47.2 力争兼容性970 47.3 处理不兼容性971 47.3.1 老式兼容技巧971 47.3.2 现代方法实现兼容性973 47.3.3 处理非DHTML浏览器975 47.4 DHTMLAPI示例975

第48章 InternetExplorer的行为977 48.1 脚本样式表977 48.2 嵌入行为组件978 48.2.1 链入行为组件978 48.2.2 启用和禁用行为978 48.3 组件结构978 48.3.1 脚本语句978 48.3.2 变量的作用域979 48.3.3 指派事件处理器979 48.3.4 导出属性和方法979 48.4 行为示例979 48.4.1 示例1:元素拖动行为980 48.4.2 示例2:文本的鼠标划过行为981 48.5 参考资料983

第49章 应用程序:表格和日历984 49.1 关于日历984 49.2 静态表格985 49.3 动态表格986 49.4 混用988 49.5 动态HTML表格988 49.6 深层思考991

第50章 应用程序:查找表992 50.1 无服务器数据库992 50.2 数据库992 50.3 实现计划993 50.4 代码993 50.5 深层思考998

第51章 应用程序:较小的订单999 51.1 确定任务999 51.2 设计表单1000 51.3 表单HTML和脚本1000 51.3.1 全局调整1000 51.3.2 数学计算1001 51.3.3 “炮制”HTML1002 51.3.4 丢掉冗长1002 51.3.5 取回冗长1002 51.4 深层思考1003

第52章 应用程序:分级式目录1004 52.1 实现计划1004 52.2 代码1005 52.2.1 设置框架1005 52.2.2 分级结构代码1005 52.2.3 装配分级目录1007 52.3 Ajax(XML)分级结构1008 52.3.1 XML规范的生成1008 52.3.2 OPML分级属性1009 52.3.3 XML和HTML代码1009 52.3.4 设置脚本状态1010 52.3.5 堆积HTML1011 52.3.6 开关节点展开1013 52.3.7 结束1014 52.4 深层思考1014

第53章 应用程序:计算和绘图1015 53.1 计算1015 53.2 用户界面构思1015 53.3 代码1016 53.3.1 基本数组1016 53.3.2 计算和格式化1017 53.3.3 预加载图片1017 53.3.4 任意更换图片1018 53.3.5 创建select对象1018 53.3.6 绘制初始图片1019 53.4 深层思考1020

第54章 应用程序:智能Updated标志位1021 54.1 Cookie之谜1021 54.2 时间不在你这一边1022 54.3 应用程序1022 54.4 代码1023 54.4.1 设置状态1024 54.4.2 日期比较1025 54.4.3 实时body1025 54.5 深层思考1026

第55章 应用程序:DecisionHelper1027 55.1 应用程序1027 55.2 设计1027 55.3 文件1028 55.4 代码1028 55.4.1 index.htm1029 55.4.2 dhNav.htm1032 55.4.3 dh1.htm1033 55.4.4 dh2.htm1034 55.4.5 dh3.htm1035 55.4.6 dh4.htm1037 55.4.7 dh5.htm1038 55.4.8 dhHelp.htm1040 55.5 深层思考1041

第56章 应用程序:跨浏览器DHTML拼图游戏1042 56.1 拼图设计1042 56.2 实现细节1043 56.2.1 自定义API1043 56.2.2 主程序1043 56.3 本课要点1050

第57章 转换XML数据1051 57.1 应用程序概述1051 57.2 实施计划1052 57.3 代码1053 57.3.1 样式表1053 57.3.2 初始化序列1053 57.3.3 转换数据1054 57.3.4 JavaScript数据库排序1055 57.3.5 构建表格1058 57.3.6 选择控件1059 57.4 构想其他视图1060

第58章 应用程序:创建自定义google地图1061 58.1 GoogleMaps入门1061 58.2 GoogleMaps定制基础1063 58.2.1 获得自己的API密钥1063 58.2.2 GoogleMapsAPI内部1063 58.2.3 获得地点的地理坐标1064 58.3 设计GoogleMaps应用1065 58.4 开发自定义地图文档1065 58.5 整合自定义GoogleMap1066 58.5.1 显示自定义地图1066 58.5.2 自定义信息窗口样式设计1068 58.5.3 测试成品地图1069 58.6 深层思考1069

亚马逊链接

基本信息

名称: jQuery用户界面库学习指南
作者信息: 作者: 韦尔曼(Dan Wellman) [ 中文 pdf ]

简单介绍

《jQuery用户界面库学习指南》提供了使用jQuery用户界面库的完整体验.书中依次介绍了每种组件,并通过大量从初级到高级用法的示例,循序渐进地帮助读者掌握这些知识。《jQuery用户界面库学习指南》内容:用tab和aCCordion形式将相关内容的不同部分组织起来以节省页面空间;使用对话框控件显示消息、图片和表单型的交互内容;在应用程序中使用滑动条进行音量或颜色控制,通过动态地左右拖动来显示不同的取值范围;允许页面访问者通过日期选择控件从日历中选择日期;使用自动完成控件丰富页面功能;提供拖放机制使用户能够直接安排页面中的各种元素;选择元素群组中的几个元素。并对它们应用统一的动作;创建带有多个内容框的页面。并且根据访问者的个性化需求,将这些内容框排列到不同的位置。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
第1章 jQuery UI简介 1
1.1 本书适合我吗 2
1.2 程序库的下载 3
1.3 建立开发环境 4
1.4 程序库结构 4
1.4.1 单元测试 5
1.4.2 控件主题 6
1.4.3 简化的打包组件 6
1.5 主题定制器 7
1.6 简化的API 8
1.7 组件的类别 9
1.8 浏览器支持 10
1.9 本书范例 10
1.10 程序库的许可 11
1.11 小结 11

第2章 选项卡控件 13 2.1 选项卡的基本实现 14 2.2 选项卡风格 16 2.3 可配置属性 17 2.4 过渡效果 21 2.5 选项卡控件的事件 23 2.6 使用选项卡方法 27 2.6.1 激活和禁用选项卡 27 2.6.2 增加和除去选项卡 29 2.6.3 模拟点击 32 2.6.4 创建选项卡的幻灯效果 33 2.7 AJAX选项卡 36 2.8 选项卡的乐趣 43 2.9 小结 46

第3章 Accordion控件 47 3.1 Accordion控件的结构 48 3.2 设置Accordion的样式 50 3.3 配置accordion 55 3.4 Accordion控件的方法 61 3.4.1 销毁方法 61 3.4.2 激活和禁用 63 3.4.3 打开“抽屉” 68 3.5 Accordion动画 69 3.6 Accordion事件 72 3.7 Accordion的乐趣 73 3.8 小结 78

第4章 对话框 79 4.1 基本对话框 80 4.2 自定义对话框皮肤 82 4.3 对话框属性 85 4.4 使用对话框的回调属性 90 4.5 使用对话框动画 92 4.6 以编程方式控制对话框 94 4.7 从对话框中获取数据 99 4.8 对话框的乐趣 102 4.9 小结 107

第5章 滑动条 108 5.1 实现滑动条 109 5.2 改写默认的主题 110 5.3 可配置属性 113 5.4 使用滑动条的回调函数 116 5.5 滑动条的方法 119 5.6 滑动条动画 122 5.7 多手柄的滑动条 122 5.8 滑动条的乐趣 125 5.9 小结 129

第6章 日期选择器 130 6.1 默认的日期选择器 131 6.2 定制日期选择器的皮肤 132 6.3 日期选择器的可配置属性 135 6.3.1 改变日期的格式 138 6.3.2 本地化 140 6.3.3 回调属性 146 6.3.4 触发按钮 149 6.3.5 多月选择 150 6.3.6 激活日期范围选择 152 6.3.7 配置可选动画 154 6.3.8 日期选择控件的方法 155 6.4 日期选择器的乐趣 165 6.5 小结 172

第7章 自动完成控件 173 7.1 基 本 实 现 174 7.2 可配置属性 175 7.2.1 滚动 178 7.2.2 自动完成控件的样式 180 7.2.3 多项选择 185 7.2.4 高级格式 186 7.2.5 匹配属性 192 7.2.6 远程数据 194 7.2.7 向服务端发送附加数据 196 7.2.8 缓存 197 7.3 自动完成控件的方法 197 7.4 自动完成控件的乐趣 200 7.5 小结 204

第8章 拖放组件 205 8.1 使用拖放组件 206 8.2 拖动助手 206 8.3 配置拖动属性 208 8.3.1 重设拖动后的元素 212 8.3.2 拖动手柄 213 8.3.3 Helper元素 215 8.3.4 限制拖动区域 218 8.3.5 Snapping 220 8.4 拖动事件回调函数 222 8.5 使用拖动组件的方法 227 8.6 投放组件 229 8.7 配置投放对象 231 8.8 投放事件回调函数 238 8.9 投放组件的方法 245 8.10 投放组件的乐趣 245 8.11 小结 250

第9章 尺寸改变组件 252 9.1 尺寸改变组件的基本实现 253 9.2 定制尺寸改变组件的皮肤 255 9.3 尺寸改变组件的属性 256 9.3.1 配置尺寸改变手柄 257 9.3.2 定义尺寸限制 260 9.3.3 尺寸改变的阴影(ghosts) 262 9.3.4 限制尺寸改变的范围和宽高比 264 9.3.5 尺寸改变动画 266 9.4 尺寸改变组件的回调函数 268 9.5 尺寸改变组件的方法 271 9.6 尺寸改变组件的乐趣 271 9.7 小结 274

第10章 选择组件 275 10.1 基本实现 275 10.2 Selectee样式类名 279 10.2.1 选择类的配置属性 280 10.2.2 过滤选择项 280 10.3 选择组件的回调函数 282 10.4 选择组件的方法 285 10.5 选择组件的乐趣 289 10.6 小结 301

第11章 排序组件 302 11.1 基本实现 302 11.2 配置排序组件的属性 306 11.2.1 占位符 311 11.2.2 排序助手 313 11.2.3 排序条目 315 11.2.4 连接列表 317 11.3 对排序事件的响应 321 11.4 连接列表的相关回调属性 327 11.5 排序方法 330 11.6 控件兼容性 334 11.7 排序组件的乐趣 336 11.8 小结 352

第12章 UI特效 353 12.1 核心特效文件 354 12.1.1 颜色动画 354 12.1.2 样式类切换 356 12.1.3 高级缓冲动画 358 12.2 highlight 359 12.3 boucing 361 12.4 shaking 363 12.5 transference 365 12.6 scaling 368 12.7 element explosion 370 12.8 puff特效 372 12.9 pulsate 374 12.10 drop 376 12.11 slide 379 12.12 clip 382 12.13 blind 383 12.14 fold 385 12.15 小结 388

亚马逊链接

基本信息

名称: Python高级编程
作者信息: 作者: 夏海轮 [ 中文 pdf ]

简单介绍

Python专家TarekZiade将带你漫游Python应用程序开发的全过程。《Python高级编程》首先介绍如何配置最优的开发环境,然后以Python敏捷开发方法为线索,告诉你如何将经过验证的面向对象原则应用到自己的设计中。《Python高级编程》是关于Python最佳实践以及适用于Python应用程序的敏捷开发方法的权威说明,用实例展示了设计、编码和交付Python软件的实践过程。 你将从《Python高级编程》中学到以下技能:配置高效的开发环境;自定义Python提示符和用于部署的setlJptools;编写高效语法iterator、generator和decorator;根据设计设置参数,遵循设计API的最佳实践;构建、发布和交付应用程序;编写基于多个egg的应用程序;使用zc.buildout交付、部署应用程序;构建并发布软件包,安排开发周期;使用版本管理系统和持续集成策略管理代码;实践测试驱动开发;对代码进行监测与优化。提高软件运行速度;在应用程序中使用设计模式。 旧金山湾Python社区主持人 Shannon-jj Behrens倾情作序

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
第1章 准备工作 1
1.1 安装Python 1
1.1.1 Python实现版本 2
1.1.2 在Linux环境下安装 3
1.1.3 在Windows环境下安装 5
1.1.4 在Mac OS X环境下安装 8
1.2 Python命令行 9
1.2.1 定制交互式命令行 10
1.2.2 iPython:增强型命令行 11
1.3 安装setuptools 12
1.3.1 工作原理 12
1.3.2 使用EasyInstall安装setuptools 13
1.3.3 将MinGW整合到distutils中 15
1.4 工作环境 15
1.4.1 使用文本编辑器与辅助工具的组合 15
1.4.2 使用集成开发环境 19
1.5 小结 22

第2章 语法最佳实践——低于类级 23 2.1 列表推导 24 2.2 迭代器和生成器 25 2.2.1 生成器 27 2.2.2 协同程序 31 2.2.3 生成器表达式 33 2.2.4 itertools模块 34 2.3 装饰器 37 2.3.1 如何编写装饰器 39 2.3.2 参数检查 40 2.3.3 缓存 42 2.3.4 代理 45 2.3.5 上下文提供者 46 2.4 with和contextlib 47 2.4.1 contextlib模块 49 2.4.2 上下文实例 50 2.5 小结 52

第3章 语法最佳实践——类级 53 3.1 子类化内建类型 53 3.2 访问超类中的方法 55 3.2.1 理解Python的方法解析顺序 56 3.2.2 super的缺陷 60 3.3 最佳实践 63 3.4 描述符和属性 64 3.4.1 描述符 65 3.4.2 属性 71 3.5 槽 74 3.6 元编程 75 3.6.1 new方法 75 3.6.2 metaclass方法 77 3.7 小结 80

第4章 选择好的名称 81 4.1 PEP 8和命名最佳实践 81 4.2 命名风格 82 4.2.1 变量 82 4.2.2 函数和方法 86 4.2.3 属性 88 4.2.4 类 89 4.2.5 模块和包 89 4.3 命名指南 90 4.3.1 使用“has”或“is”前缀命名布尔元素 90 4.3.2 用复数形式命名序列元素 90 4.3.3 用显式的名称命名字典 90 4.3.4 避免通用名称 91 4.3.5 避免现有名称 91 4.4 参数最佳实践 92 4.4.1 根据迭代设计构建参数 92 4.4.2 信任参数和测试 93 4.4.3 小心使用*args和**kw魔法参数 94 4.5 类名 96 4.6 模块和包名称 96 4.7 使用API 97 4.7.1 跟踪冗长 97 4.7.2 构建命名空间树 98 4.7.3 分解代码 100 4.7.4 使用Egg 101 4.7.5 使用deprecation过程 101 4.8 有用的工具 102 4.8.1 Pylint 103 4.8.2 CloneDigger 104 4.9 小结 105

第5章 编写一个包 106 5.1 用于所有包的公共模式 106 5.2 基于模板的方法 118 5.2.1 Python Paste 118 5.2.2 创建模板 120 5.3 创建包模板 120 5.4 开发周期 125 5.5 小结 128

第6章 编写一个应用程序 129 6.1 Atomisator概述 129 6.2 整体描述 130 6.3 工作环境 131 6.3.1 添加一个测试运行程序 133 6.3.2 添加一个包结构 133 6.4 编写各个包 134 6.4.1 atomisator.parser 134 6.4.2 atomisator.db 139 6.4.3 atomisator.feed 143 6.4.4 atomisator.main 145 6.5 分发Atomisator 147 6.6 包之间的依赖性 148 6.7 小结 149

第7章 使用zc.buildout 150 7.1 zc.buildout原理 151 7.1.1 配置文件结构 151 7.1.2 buildout命令 152 7.1.3 recipe 154 7.1.4 Atomisator buildout环境 157 7.1.5 更进一步 158 7.2 发行与分发 159 7.2.1 发行包 160 7.2.2 添加一个发行配置文件 160 7.2.3 构建和发行应用程序 161 7.3 小结 162

第8章 代码管理 163 8.1 版本控制系统 163 8.1.1 集中式系统 163 8.1.2 分布式系统 165 8.1.3 集中还是分布 167 8.1.4 Mercurial 167 8.1.5 使用Mercurial进行项目管理 171 8.2 持续集成 178 8.3 小结 183

第9章 生命周期管理 184 9.1 不同的方法 184 9.1.1 瀑布开发模型 184 9.1.2 螺旋开发模型 185 9.1.3 迭代开发模型 185 9.2 定义生命周期 187 9.2.1 计划 188 9.2.2 开发 188 9.2.3 整体调试 188 9.2.4 发行 188 9.3 建立一个跟踪系统 189 9.3.1 Trac 189 9.3.2 使用Trac管理项目生命周期 194 9.4 小结 196

第10章 编写项目文档 197 10.1 技术性写作的7条规则 197 10.1.1 分两步编写 198 10.1.2 以读者为目标 199 10.1.3 使用简单的风格 199 10.1.4 限制信息的范围 200 10.1.5 使用真实的代码示例 200 10.1.6 保持简单,够用即可 201 10.1.7 使用模板 202 10.2 reStructuredText入门 202 10.2.1 小节结构 204 10.2.2 列表 205 10.2.3 内联标签 205 10.2.4 文字块 206 10.2.5 链接 206 10.3 构建文档 207 10.4 建立自己的工件集 214 10.5 小结 220

第11章 测试驱动开发 221 11.1 我不测试 221 11.1.1 测试驱动开发原理 221 11.1.2 哪一类测试 225 11.2 我测试 229 11.2.1 Unittest的缺陷 229 11.2.2 Unittest替代品 230 11.2.3 仿真和模拟 236 11.2.4 文档驱动开发 240 11.3 小结 242

第12章 优化:通用原则和剖析技术 243 12.1 优化的3条规则 243 12.1.1 首先使它能够正常工作 243 12.1.2 从用户的观点进行 244 12.1.3 保持代码易读(从而易于维护) 245 12.2 优化策略 245 12.2.1 寻找其他原因 245 12.2.2 度量硬件 246 12.2.3 编写速度测试 246 12.3 查找瓶颈 247 12.3.1 剖析CPU的使用情况 247 12.3.2 剖析内存使用情况 256 12.3.3 剖析网络使用情况 262 12.4 小结 263

第13章 优化:解决方案 264 13.1 降低复杂度 265 13.1.1 测量回路复杂度 265 13.1.2 测量大O记号 265 13.1.3 简化 268 13.2 多线程 274 13.2.1 什么是多线程 274 13.2.2 Python处理线程的方式 274 13.2.3 什么时候应该使用线程 275 13.3 多进程 280 13.4 缓存 284 13.4.1 确定性缓存 284 13.4.2 非确定性缓冲 287 13.4.3 主动式缓冲 288 13.5 小结 289

第14章 有用的设计模式 290 14.1 创建型模式 290 14.2 结构型模式 293 14.3 行为型模式 299 14.3.1 观察者 299 14.3.2 访问者 301 14.3.3 模板 304 14.4 小结 306

亚马逊链接

基本信息

名称: Python Cookbook(第2版)中文版
作者信息: 作者: 马特利(Alex Martelli) [ 中文 pdf ]

简单介绍

《Python Cookbook(第2版)中文版》是在Python程序员圈子中备受推崇的一部著作。在《Python Cookbook(第2版)中文版》中,你会发现很多常见Python编程问题的实用解决方案,而这些方案来自Python社区。几年来,Python程序员在 ActiveState建立的在线Python Cookbook贡献的代码和文章构成了《Python Cookbook(第2版)中文版》的主体。这些代码和解决方案都经历过实践的检验,被反复地审查、精练和加强,并最终汇集到《Python Cookbook(第2版)中文版》中。《Python Cookbook(第2版)中文版》包含了三百多个解决方案和技巧,主要覆盖以下主题:搜索和排序;操纵文本;文件处理;面向对象编程;多线程编程;系统管理;Web编程;网络编程;XML处理;分布式编程;调试和测试;元编程。《Python Cookbook(第2版)中文版》中所有的方案和技巧都是根据不同的主题来组织的。每章以一段引言开始,这些引言的作者都是Python社区中知名的杰出人物。《Python Cookbook(第2版)中文版》的主要编辑是Alex Martelli他也是Python in a Nutshell一书的作者。Anna MartelliRavensCroft是一位热心的Python用户和会议发言者。ACtiveState的David Ascher是LearningPython一书的合著者之一。Python之父Guido van Rossum为《Python Cookbook(第2版)中文版》第13章撰写了引言。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
第1章 文本 1
引言 1
1.1 每次处理一个字符 6
1.2 字符和字符值之间的转换 7
1.3 测试一个对象是否是类字符串 8
1.4 字符串对齐 10
1.5 去除字符串两端的空格 11
1.6 合并字符串 11
1.7 将字符串逐字符或逐词反转 14
1.8 检查字符串中是否包含某字符集合中的字符 15
1.9 简化字符串的translate方法的使用 18
1.10 过滤字符串中不属于指定集合的字符 20
1.11 检查一个字符串是文本还是二进制 23
1.12 控制大小写 25
1.13 访问子字符串 26
1.14 改变多行文本字符串的缩进 29
1.15 扩展和压缩制表符 31
1.16 替换字符串中的子串 33
1.17 替换字符串中的子串-Python 2.4 34
1.18 一次完成多个替换 36
1.19 检查字符串中的结束标记 39
1.20 使用Unicode来处理国际化文本 40
1.21 在Unicode和普通字符串之间转换 43
1.22 在标准输出中打印Unicode字符 45
1.23 对Unicode数据编码并用于XML和HTML 46
1.24 让某些字符串大小写不敏感 49
1.25 将HTML文档转化为文本显示到UNIX终端上 52

第2章 文件 55 引言 55 2.1 读取文件 59 2.2 写入文件 62 2.3 搜索和替换文件中的文本 64 2.4 从文件中读取指定的行 65 2.5 计算文件的行数 66 2.6 处理文件中的每个词 68 2.7 随机输入/输出 70 2.8 更新随机存取文件 71 2.9 从zip文件中读取数据 73 2.10 处理字符串中的zip文件 74 2.11 将文件树归档到一个压缩的tar文件 76 2.12 将二进制数据发送到Windows的标准输出 77 2.13 使用C++的类iostream语法 78 2.14 回退输入文件到起点 80 2.15 用类文件对象适配真实文件对象 83 2.16 遍历目录树 84 2.17 在目录树中改变文件扩展名 85 2.18 从指定的搜索路径寻找文件 86 2.19 根据指定的搜索路径和模式寻找文件 87 2.20 在Python的搜索路径中寻找文件 88 2.21 动态地改变Python搜索路径 89 2.22 计算目录间的相对路径 91 2.23 跨平台地读取无缓存的字符 93 2.24 在Mac OS X平台上统计PDF文档的页数 94 2.25 在Windows平台上修改文件属性 95 2.26 从OpenOffice.org文档中提取文本 96 2.27 从微软Word文档中抽取文本 97 2.28 使用跨平台的文件锁 98 2.29 带版本号的文件名 100 2.30 计算CRC-64循环冗余码校验 102

第3章 时间和财务计算 105 引言 105 3.1 计算昨天和明天的日期 111 3.2 寻找上一个星期五 112 3.3 计算日期之间的时段 114 3.4 计算歌曲的总播放时间 115 3.5 计算日期之间的工作日 116 3.6 自动查询节日 118 3.7 日期的模糊查询 121 3.8 检查夏令时是否正在实行 123 3.9 时区转换 124 3.10 反复执行某个命令 125 3.11 定时执行命令 127 3.12 十进制数学计算 129 3.13 将十进制数用于货币处理 130 3.14 用Python实现的简单加法器 133 3.15 检查信用卡校验和 136 3.16 查看汇率 137

第4章 Python技巧 139 引言 139 4.1 对象拷贝 140 4.2 通过列表推导构建列表 144 4.3 若列表中某元素存在则返回之 146 4.4 循环访问序列中的元素和索引 147 4.5 在无须共享引用的条件下创建列表的列表 148 4.6 展开一个嵌套的序列 149 4.7 在行列表中完成对列的删除和排序 152 4.8 二维阵列变换 154 4.9 从字典中取值 155 4.10 给字典增加一个条目 157 4.11 在无须过多援引的情况下创建字典 158 4.12 将列表元素交替地作为键和值来创建字典 159 4.13 获取字典的一个子集 161 4.14 反转字典 163 4.15 字典的一键多值 164 4.16 用字典分派方法和函数 166 4.17 字典的并集与交集 167 4.18 搜集命名的子项 169 4.19 用一条语句完成赋值和测试 171 4.20 在Python中使用printf 174 4.21 以指定的概率获取元素 174 4.22 在表达式中处理异常 176 4.23 确保名字已经在给定模块中被定义 178

第5章 搜索和排序 180 引言 180 5.1 对字典排序 185 5.2 不区分大小写对字符串列表排序 185 5.3 根据对象的属性将对象列表排序 187 5.4 根据对应值将键或索引排序 189 5.5 根据内嵌的数字将字符串排序 192 5.6 以随机顺序处理列表的元素 193 5.7 在增加元素时保持序列的顺序 195 5.8 获取序列中最小的几个元素 197 5.9 在排序完毕的序列中寻找元素 199 5.10 选取序列中最小的第n个元素 200 5.11 三行代码的快速排序 203 5.12 检查序列的成员 206 5.13 寻找子序列 208 5.14 给字典类型增加排名功能 210 5.15 根据姓的首字母将人名排序和分组 214

第6章 面向对象编程 217 引言 217 6.1 温标的转换 223 6.2 定义常量 225 6.3 限制属性的设置 227 6.4 链式字典查询 229 6.5 继承的替代方案-自动托管 231 6.6 在代理中托管特殊方法 234 6.7 有命名子项的元组 237 6.8 避免属性读写的冗余代码 239 6.9 快速复制对象 240 6.10 保留对被绑定方法的引用且支持垃圾回收 243 6.11 缓存环的实现 245 6.12 检查一个实例的状态变化 249 6.13 检查一个对象是否包含某种必要的属性 252 6.14 实现状态设计模式 255 6.15 实现单例模式 257 6.16 用Borg惯用法来避免“单例”模式 259 6.17 Null对象设计模式的实现 263 6.18 用 init 参数自动初始化实例变量 266 6.19 调用超类的 init 方法 267 6.20 精确和安全地使用协作的超类调用 270

第7章 持久化和数据库 273 引言 273 7.1 使用marshal模块序列化数据 275 7.2 使用pickle和cPickle模块序列化数据 277 7.3 在Pickling的时候压缩 280 7.4 对类和实例使用cPickle模块 281 7.5 Pickling被绑定方法 284 7.6 Pickling代码对象 286 7.7 通过shelve修改对象 288 7.8 使用Berkeley DB数据库 291 7.9 访问MySQL数据库 294 7.10 在MySQL数据库中储存BLOB 295 7.11 在PostgreSQL中储存BLOB 296 7.12 在SQLite中储存BLOB 298 7.13 生成一个字典将字段名映射为列号 300 7.14 利用dtuple实现对查询结果的灵活访问 302 7.15 打印数据库游标的内容 304 7.16 适用于各种DB API模块的单参数传递风格 306 7.17 通过ADO使用Microsoft Jet 308 7.18 从Jython Servlet访问JDBC数据库 310 7.19 通过Jython和ODBC获得Excel数据 313

第8章 调试和测试 315 引言 315 8.1 阻止某些条件和循环的执行 316 8.2 在Linux上测量内存使用 317 8.3 调试垃圾回收进程 318 8.4 捕获和记录异常 320 8.5 在调试模式中跟踪表达式和注释 322 8.6 从traceback中获得更多信息 324 8.7 当未捕获异常发生时自动启用调试器 327 8.8 简单的使用单元测试 328 8.9 自动运行单元测试 330 8.10 在Python 2.4中使用doctest和unittest 331 8.11 在单元测试中检查区间 334

第9章 进程、线程和同步 336 引言 336 9.1 同步对象中的所有方法 339 9.2 终止线程 342 9.3 将Queue.Queue用作优先级队列 344 9.4 使用线程池 346 9.5 以多组参数并行执行函数 349 9.6 用简单的消息传递协调线程 351 9.7 储存线程信息 353 9.8 无线程的多任务协作 357 9.9 在Windows中探测另一个脚本实例的运行 359 9.10 使用MsgWaitForMultipleObjects处理Windows消息 360 9.11 用popen驱动外部进程 363 9.12 获取UNIX Shell命令的输出流和错误流 364 9.13 在UNIX中fork一个守护进程 367

第10章 系统管理 370 引言 370 10.1 生成随机密码 371 10.2 生成易记的伪随机密码 372 10.3 以POP服务器的方式验证用户 375 10.4 统计Apache中每个IP的点击率 376 10.5 统计Apache的客户缓存的命中率 378 10.6 在脚本中调用编辑器 379 10.7 备份文件 381 10.8 选择性地复制邮箱文件 383 10.9 通过邮箱创建一个邮件地址的白名单 384 10.10 阻塞重复邮件 386 10.11 检查你的Windows声音系统 388 10.12 在Windows中注册和反注册DLL 388 10.13 检查并修改Windows自动运行任务 390 10.14 在Windows中创建共享 391 10.15 连接一个正在运行的Internet Explorer实例 392 10.16 读取Microsoft Outlook Contacts 393 10.17 在Mac OS X中收集详细的系统信息 396

第11章 用户界面 400 引言 400 11.1 在文本控制台中显示进度条 402 11.2 避免在编写回调函数时使用lambda 404 11.3 在tkSimpleDialog函数中使用默认值和区间 405 11.4 给Tkinter列表框增加拖曳排序能力 406 11.5 在Tkinter部件中输入一个重音字符 408 11.6 在Tkinter中嵌入内联的GIF 410 11.7 转换图片格式 412 11.8 在Tkinter中实现一个秒表 415 11.9 用线程实现GUI和异步I/O 的结合 417 11.10 在Tkinter中使用IDLE的 Tree部件 421 11.11 在Tkinter Listbox中支持单行多值 423 11.12 在Tkinter部件之间复制Geometry方法和选项 427 11.13 在Tkinter中实现一个带标签的记事本 429 11.14 使用wxPython实现带面板的记事本 431 11.15 在Jython中实现一个ImageJ插件 433 11.16 用Swing和Jython来通过URL查看图片 434 11.17 在Mac OS中获得用户输入 434 11.18 程序化地创建Python Cocoa GUI 437 11.19 用IronPython实现淡入窗口 439

第12章 XML处理 441 引言 441 12.1 检查XML的格式完好性 443 12.2 计算文档中标签的个数 444 12.3 获得XML文档中的文本 445 12.4 自动探测XML的编码 447 12.5 将一个XML文档转化成Python对象树 449 12.6 从XML DOM节点的子树中删除仅有空白符的文本节点 451 12.7 解析Microsoft Excel的XML 452 12.8 验证XML文档 454 12.9 过滤属于指定命名空间的元素和属性 455 12.10 用SAX合并连续的文本事件 458 12.11 使用MSHTML来解析XML或HTML 461

第13章 网络编程 462 引言 462 13.1 通过Socket数据报传输消息 464 13.2 从Web抓取文档 466 13.3 过滤FTP站点列表 467 13.4 通过SNTP协议从服务器获取时间 468 13.5 发送HTML邮件 469 13.6 在MIME消息中绑入文件 471 13.7 拆解一个分段MIME消息 474 13.8 删除邮件消息中的附件 475 13.9 修复Python 2.4的email.FeedParser 解析的消息 477 13.10 交互式地检查POP3邮箱 479 13.11 探测不活动的计算机 482 13.12 用HTTP监视网络 487 13.13 网络端口的转发和重定向 489 13.14 通过代理建立SSL隧道 492 13.15 实现动态IP协议 495 13.16 登录到IRC并将消息记录到磁盘 498 13.17 访问LDAP服务 500

第14章 Web编程 502 引言 502 14.1 测试CGI是否在工作 503 14.2 用CGI脚本处理URL 506 14.3 用CGI上传文件 507 14.4 检查web页面的存在 509 14.5 通过HTTP检查内容类型 510 14.6 续传HTTP下载文件 512 14.7 抓取Web页面时处理Cookie 513 14.8 通过带身份验证的代理进行HTTPS导航 516 14.9 用Jython实现Servlet 517 14.10 寻找Internet Explorer的cookie 519 14.11 生成OPML文件 521 14.12 聚合RSS Feed 524 14.13 通过模板将数据放入Web页面 527 14.14 在Nevow中呈现任意对象 530

第15章 分布式编程 534 引言 534 15.1 实现一个XML-RPC方法调用 536 15.2 服务XML-RPC请求 537 15.3 在Medusa中使用XML-RPC 539 15.4 允许XML-RPC服务被远程终止 541 15.5 SimpleXMLRPCServer的一些细节 542 15.6 给一个XML-RPC服务提供一个wxPython GUI 544 15.7 使用Twisted的Perspective Broker 546 15.8 实现一个CORBA服务和客户 549 15.9 使用telnetlib执行远程登录 551 15.10 使用SSH执行远程登录 554 15.11 通过HTTPS验证一个SSL客户端 557

第16章 关于程序的程序 559 引言 559 16.1 验证字符串是否代表着一个合法的数字 564 16.2 导入一个动态生成的模块 565 16.3 导入一个名字在运行时被确定的模块 567 16.4 将参数和函数联系起来 568 16.5 组合函数 571 16.6 使用内建的Tokenizer给Python源码上色 572 16.7 合并和拆解Token 575 16.8 检查字符串是否有平衡的圆括号 577 16.9 在Python中模拟枚举 580 16.10 在创建列表推导时引用它自身 583 16.11 自动化py2exe将脚本编译成Windows可执行文件的过程 585 16.12 在UNIX中将主脚本和模块绑成一个可执行文件 587

第17章 扩展和嵌入 590 引言 590 17.1 实现一个简单的扩展类型 592 17.2 用Pyrex实现一个简单的扩展类型 597 17.3 在Python中使用C++库 598 17.4 调用Windows DLL的函数 601 17.5 在多线程环境中使用SWIG生成的模块 603 17.6 用PySequence_Fast将Python序列转为 C数组 604 17.7 用迭代器逐个访问Python序列的元素 608 17.8 从Python可调用的C函数中返回None 611 17.9 用gdb调试动态载入的C扩展 613 17.10 调试内存问题 614

第18章 算法 616 引言 616 18.1 消除序列中的重复 619 18.2 在保留序列顺序的前提下消除其中的重复 621 18.3 生成回置采样 625 18.4 生成无回置的抽样 626 18.5 缓存函数的返回值 627 18.6 实现一个FIFO容器 629 18.7 使用FIFO策略来缓存对象 631 18.8 实现一个Bag(Multiset)收集类型 634 18.9 在Python模拟三元操作符 637 18.10 计算素数 640 18.11 将整数格式化为二进制字符串 642 18.12 以任意数为基将整数格式化为字符串 644 18.13 通过法雷分数将数字转成有理数 646 18.14 带误差传递的数学计算 648 18.15 以最大精度求和 651 18.16 模拟浮点数 653 18.17 计算二维点集的凸包和直径 656

第19章 迭代器和生成器 660 引言 660 19.1 编写一个类似range的浮点数递增的函数 663 19.2 从任意可迭代对象创建列表 665 19.3 生成Fibonacci序列 667 19.4 在多重赋值中拆解部分项 669 19.5 自动拆解出需要的数目的项 670 19.6 以步长n将一个可迭代对象切成n片 672 19.7 通过重叠窗口循环序列 674 19.8 并行地循环多个可迭代对象 678 19.9 循环多个可迭代对象的矢量积 680 19.10 逐段读取文本文件 683 19.11 读取带有延续符的行 685 19.12 将一个数据块流处理成行流 687 19.13 用生成器从数据库中抓取大记录集 688 19.14 合并有序序列 690 19.15 生成排列、组合以及选择 694 19.16 生成整数的划分 696 19.17 复制迭代器 697 19.18 迭代器的前瞻 701 19.19 简化队列消费者线程 703 19.20 在另一个线程中运行迭代器 705 19.21 用itertools.groupby来计算汇总报告 706

第20章 描述符、装饰器和元类 710 引言 710 20.1 在函数调用中获得常新的默认值 712 20.2 用嵌套函数来编写property属性 715 20.3 给属性值起别名 717 20.4 缓存属性值 719 20.5 用同一个方法访问多个属性 722 20.6 封装一个方法来给类增加功能 723 20.7 增强所有方法来给类增加功能 726 20.8 在运行时给一个类实例添加方法 728 20.9 检查接口的实现 730 20.10 在自定义元类中正确地使用 new 和 init _ 732 20.11 允许对List的可变方法的链式调用 734 20.12 通过更紧凑的语法使用协作的超类调用 736 20.13 不使用 init _来初始化实例属性 738 20.14 实例属性的自动初始化 740 20.15 重新加载时自动更新类实例 743 20.16 在编译时绑定常量 747 20.17 解决元类冲突 752

亚马逊链接

基本信息

名称: Linux程序设计(第4版)
作者信息: 作者: 马修(Neil Matthew) [ 中文 pdf ]

简单介绍

《Linux程序设计(第4版)》:最负盛名的Linux程序设计图书,内容全面深入,全球开源社区集体智慧结晶。时至今日,Linux系统已经从一个个人作品发展为可以用于各种关键任务的成熟、高效和稳定的操作系统,因为具备跨平台、开源、支持众多应用软件和网络协议等优点,它得到了各大主流软硬件厂商的支持,也成为广大程序设计人员理想的开发平台。《Linux程序设计(第4版)》是Linux程序设计领域的经典名著,以简单易懂、内容全面和示例丰富而广受好评。中文版前两版出版后。在国内的Linux爱好者和程序员中引起了强烈反响。这一热潮一直持续至今。《Linux程序设计(第4版)》是国内读者翘首以待的第4版,此次新版内容组织更加严谨,译者更是细心雕琢,保留了这部权威著作的原汁原味。对Ljnux所提供的功能全面而准确的阐述,以及贯穿全书的示例程序体验,使《Linux程序设计(第4版)》不仅成为初学者的最佳Linux程序设计指南。而且是中高级程序员不可或缺的参考书。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
第1章 入门
1.1 LNIX、Linux和GNU简介
1.1.1 什么是IYNIX
1.1.2 什么是Linux
1.1.3 GNL,项目和自由软件基金会
1.1.4 Linux发行版
1.2 Linux程序设计.
1.2.1 Linux程序
1.2.2 文本编辑器
1.2.3 C语言编译器
1.2.4 开发系统导引
1.3 获得帮助
1.4 小结

第2章 shell程序设计 2.1 为什么使用shell编程 2.2 一点哲学 2.3 什么是shell 2.4 管道和重定向 2.4.1 重定向输出 2.4.2 重定向输入 2.4.3 管道 2.5 作为程序设计语言的shell 2.5.1 交互式程序 2.5.2 创建脚本 2.5.3 把脚本设置为可执行 2.6 shell的语法 2.6.1 变量 2.6.2 条件 2.6.3 控制结构 2.6.4 函数 2.6.5 命令 2.6.6 命令的执行 2.6.7 1aere文档 2.6.8 调试脚本程序 2.7 迈向图形化:dialog工具 2.8 综合应用 2.8.1 需求 2.8.2 设计 2.8.3 应用程序的说明 2.9 小结

第3章 文件操作. 3.1 Linux文件结构 3.1.1 目录 3.1.2 文件和设备 3.2 系统调用和设备驱动程序 3.3 库函数 3.4 底层文件访问 3.4.1 write系统调用 3.4.2 read系统调用 3.4.3 open系统调用 3.4.4 访问权限的初始值 3.4.5 其他与文件管理有关的系统调用 3.5 标准I/O库 3.5.1 fopen函数 3.5.2 fread函数 3.5.3 fwrite函数 3.5.4 fclose函数 3.5.5 f£1ush函数 3.5.6 fseek函数 3.5.7 fgetc、getc和getchar函数 3.5.8 fputc、putc和putchar函数 3.5.9 fgets和gets函数 3.6 格式化输入和输出 3.6.1 printf、fprintf和sprin七函数 3.6.2 scanf、fscanf和sscanf函数 3.6.3 其他流函数 3.6.4 文件流错误 3.6.5 文件流和文件描述符 3.7 文件和目录的维护 3.7.1 chIrrod系统调用 3.7.2 chown系统调用 3.7.3 unlink、1ink和symlink系统调用 3.7.4 mkdJ.r和rmdir系统调用 3.7.5 chdir系统调用和getcwd函数 3.8 扫描目录 3.8.1 opendir函数 3.8.2 readdir函数 3.8.3 elldir函数 3.8.4 see]kdir函数 3.8.5 closedir函数 3.9 错误处理 3.9.1 strerror函数 3.9.2 perror函数 3.10 proc文件系统 3.11 高级主题:fcntl和mmap 3.11.1 fcntl系统调用 3.11.2 map函数 3.12 小结

第4章 Linux环境 4.1 程序参数 4.1.1 qetopt 4.1.2 getooptlong 4.2 环境变量 4.2.1 环境变量的用途 4.2.2 environ变量 4.3 时间和日期 4.4 临时文件 4.5 用户信息 4.6 主机信息 4.7 日志 4.8 资源和限制 4.9 小结

第5章 终端 5.1 对终端进行读写 5.2 与终端进行对话 5.3 终端驱动程序和通用终端接口 5.3.1 概述 5.3.2 硬件模型 5.4 temios结构 5.4.1 输入模式 5.4.2 输出模式 5.4.3 控制模式 5.4.4 本地模式 5.4.5 特殊控制字符 5.4.6 终端速度 5.4.7 其他函数 5.5 终端的输出 5.5.1 终端的类型 5.5.2 识别终端类型 5.5.3 使用teminfo功能标志 5.6 检测击键动作 5.7 虚拟控制台 5.8 伪终端 5.9 小结

第6章 使用curses函数库管理基于文本的屏幕 6.1 用curses函数库进行编译 6.2 curses术语和概念 6.3 屏幕 6.3.1 输出到屏幕 6.3.2 从屏幕读取 6.3.3 清除屏幕 6.3.4 移动光标 6.3.5 字符属性 6.4 键盘 6.4.1 键盘模式 6.4.2 键盘输入 6.5 窗口 6.5.1 wINDOW结构 6.5.2 通用函数 6.5.3 移动和更新窗口 6.5.4 优化屏幕刷新 6.6 子窗口 6.7 keypad模式 6.8 彩色显示 6.9 pad 6.10 CD唱片应用程序 6.10.1 新CD唱片应用程序的开始部分 6.10.2 main函数 6.10.3 建立菜单 6.10.4 操作数据库文件 6.10.5 查询CD数据库 6.11 小结

第7章 数据管理 7.1 内存管理 7.1.1 简单的内存分配 7.1.2 分配大量的内存 7.1.3 滥用内存 7.1.4 空指针 7.1.5 释放内存 7.1.6 其他内存分配函数 7.2 文件锁定 7.2.1 创建锁文件 7.2.2 区域锁定 7.2.3 锁定状态下的读写操作 7.2.4 文件锁的竞争 7.2.5 其他锁命令 7.2.6 死锁 7.3 数据库 7.3.1 dbm数据库 7.3.2 dbm例程 7.3.3 d.bm访问函数 7.3.4 其他dbm函数 7.4 CD唱片应用程序 7.4.1 更新设计 7.4.2 使用dbm数据库的CD唱片应用程序 7.5 小结

第8章 MySQL 8.1 安装 8.1.1 MySQL软件包 8.1.2 安装后的配置 8.1.3 安装后的故障修复 8.2 MySQL管理 8.2.1 命令 8.2.2 创建用户并赋予权限 8.2.3 密码 8.2.4 创建数据库 8.2.5 数据类型 8.2.6 创建表 8.2.7 图形化工具 8.3 使用C语言访问。MySQL数据 8.3.1 连接例程 8.3.2 错误处理 8.3.3 执行SQL语句 8.3.4 更多的函数 8.4 CD数据库应用程序 8.4.1 创建表 8.4.2 添加数据 8.4.3 使用C语言访问数据 8.5 小结

第9章 开发工具 9.1 多个源文件带来的问题 9.2 make命令和makefile文件 9.2.1 mekefile的语法 9.2.2 make命令的选项和参数 9.2.3 makefile文件中的注释 9.2.4 mekefile文件中的宏 9.2.5 多个目标 9.2.6 内置规则 9.2.7 后缀和模式规则 9.2.8 用make管理函数库 9.2.9 高级主题:makefile文件和子目录 9.2.1 0GNUmake和qcc 9.3 源代码控制 9.3.1 RCS 9.3.2 SCCS 9.3.3 RCS和SCCS的比较 9.3.4 CVS 9.3.5 CVS的前端程序 9.3.6 SubvcrsiOn 9.4 编写手册页 9.5 发行软件 9.5.1 pach程序 9.5.2 其他软件发行工具 9.6 RPM软件包 9.6.1 使用RPM软件包文件 9.6.2 安装RPM软件包 9.6.3 创建RPM软件包 9.7 其他软件包格式 9.8 开发环境 9.8.1 KDevelop 9.8.2 其他开发环境 9.9 小结

第10章 调试 10.1 错误类型 10.2 常用调试技巧 10.2.1 有漏洞的程序 10.2.2 代码检查 10.2.3 取样法 10.2.4 程序的受控执行 10.3 使用gdb进行调试 10.3.1 启动gdb 10.3.2 运行一个程序 10.3.3 栈跟踪 10.3.4 检查变量 10.3.5 列出程序源代码 10.3.6 设置断点 10.3.7 用调试器打补丁 10.3.8 深入学习gdb 10.4 其他调试工具 10.4.1 lint清理程序中的“垃圾” 10.4.2 函数调用工具 10.4.3 用prof/gprof产生执行存档 10.5 断言 10.6 内存调试 10.6.1 ElectnicFence函数库 10.6.2 valgrind 10.7 小结

第11章 进程和信号 11.1 什么是进程 11.2 进程的结构 11.2.1 进程表 11.2.2 查看进程 11.2.3 系统进程 11.2.4 进程调度 11.3 启动新进程 11.3.1 等待一个进程 11.3.2 僵尸进程 11.3.3 输入和输出重定向 11.3.4 线程 11.4 信号 11.4.1 发送信号 11.4.2 信号集 11.5 小结

第12章 POSlX线程 12.1 什么是线程 12.2 线程的优点和缺点 12.3 第一个线程程序 12.4 同时执行 12.5 同步 12.5.1 用信号量进行同步 12.5.2 用互斥量进行同步 …… 第13章 进程音通信:管道 第14章 信号量、共享内存和消息队列 第15章 套接字 第16章 用GTK+进行+GNOME编程 第17章 用Qt进行KDE编程 第18章 Linux标准

亚马逊链接

基本信息

名称: SEO必知必会51技
作者信息: 作者: 利布(Rebecca Lieb) [ 中文 pdf ]

简单介绍

《SEO必知必会51技》:大道至简的SEO思想高效卓著的SEO技巧网络营销人员的掌中宝还在苦于你的SEO没有带来流量么?或许你还游离在某些技巧之外,从而觉得:SEO与管理、营销和公共关系领域毫不相干;关键词?链接策略?开玩笑!我可以随处spam;SEO还需要技巧?我分分钟就可以搞定。来自一线专家的51条技巧将颠覆你原有的SEO理念,让你快速掌握实用的SEO技能。

目录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
第1部分 搜索引擎的基本知识
第1技 获得蜘蛛、机器人和爬虫的关注
第2技 学会与Google共舞
第3技 流量?不,是有价值的流量
第4技 网上有你的口碑

第2部分 让站点脱颖而出 第5技 SEO是一个持续性工程,千万别做完了就扔在那 第6技 SEO不是马后炮 第7技 SEO效果不是马上生效,也不是持久不变 第8技 你不再有主页 第9技 就算不是出版商,你也要像他们一样思考 第10技 网站和网页设计盘点 第11技 为用户撰写内容,搜索引擎随之而至 第12技 关键字才是关键 第13技 使用关键字分析和研究工具 第14技 网站统计也会带来坏消息 第15技 对新技术要三思而后行 第16技 内容管理系统的问题多多

第3部分 这就是奇妙的标签 第17技 标题中有什么?所有…… 第18技 元标签的相对重要性 第19技 图像、音频、视频和其他媒体的标签问题

第4部分 关于链接 第20技 相同的链接在搜索引擎面前会出现不同的结果 第21技 通过目录网站建立链接 第22技 将SEO公共关系作为链接策略 第23技 付费链接 第24技 交换链接 第25技 广告也是链接 第26技 让您的网站择邻而居 第27技 博客是巧妙的链接策略 第28技 关于nofollow

第5部分 那些也是搜索引擎吗 第29技 搜索正在垂直化 第30技 本地搜索 第31技 目录网站提交 第32技 站外搜索引擎优化 第33技 通用搜索和个性化搜索

第6部分 你生活在社会化网络中 第34技 为搜索引擎优化建立博客 第35技 使用RSS feeds来提升搜索引擎优化工作效果 第36技 让用户为你创建内容 第37技 为图像、视频、链接和其他媒体打上标签

第7部分 搜索排名 第38技 排名 第一的悄然改变 第39技 PageRank不是关系网站生死存亡的关键因素 第40技 摇摆的长尾

第8部分 关于SEO管理 第41技 内部维护还是外包 第42技 雇用一名优秀的搜索专家 第43技 优秀的SEO应该注重细节的东西

第9部分 不作恶 第44技 小心黑帽搜索引擎优化 第45技 搜索引擎对关键词堆砌和垃圾广告不“感冒” 第46技 不要建立链接工厂 第47技 想取消屏蔽是很难的 第48技 换到新域名将面临一定的压力

第10部分 除此以外 第49技 全球搜索引擎优化 第50技 移动SEO比以往更重要 第51技 有时候你并不希望被找到

亚马逊链接