《C#与.NET 3.5高级程序设计》(第4版)是C#领域久负盛名的经典著作,深入全面地叙述了C#编程语言和.NET平台核心,并以大量示例剖析相关概念。书中介绍了C#的各种语言构造、.NET 2.0的类、核心API、公共中间语言(CIL)、动态程序集和ASP.NET扩展等内容;同时也介绍了.NET 3.0和.NET 3.5中新的编程API,包括WPF 、WCF和WF 的功能;另外,还介绍了最新的C# 3.0编程语言、LINQ编程技术、COM与.NET 的互操作性以及平台无关的.NET开发。
第一部分 visual studio 2008简介.
第1章 visual studio 2008快速入门 2
1.1 ide中一些受欢迎的增强 3
1.1.1 在多项工作中使用一个工具 3
1.1.2 更整齐的窗口 4
1.1.3 保留设置 7
1.1.4 共享(和使用)社区代码 8
1.1.5 扩展的class designer支持 8
1.2 开发用户应用程序 8
1.2.1 提高web开发人员生产力 9
1.2.2 更智能的客户端 17
1.2.3 基于office的解决方案 20
1.2.4 以移动设备为目标 22
1.3 编写连接的、面向服务的解决方案 24
1.3.1 开发应用程序/商业流程 24
1.3.2 创建和使用服务 26
1.4 使用数据 27
1.4.1 设计数据 28
1.4.2 将对象映射到关系数据 28
1.4.3 构建偶尔连接的应用程序 29
1.5 visual studio产品系列 31
1.5.1 速成版 31
1.5.2 标准版 31
1.5.3 专业版 32
1.5.4 team systems 32
1.5.5 expression工具 34
1.6 小结 34
第2章 ide快速入门 35
2.1 安装visual studio 35
2.1.1 选择语言 35
2.1.2 配置开发环境 36
2.2 起始页 37
2.3 第一个项目 39
2.4 菜单栏 39
2.5 各种工具栏 42
2.5.1 标准工具栏 42
2.5.2 自定义工具栏 43
2.6 工具箱 44
2.7 可视化设计器 45
2.8 文本编辑器 46
2.8.1 代码编辑器 46
2.8.2 编辑器的自定义 47
2.9 解决方案资源管理器 48
2.10 属性窗口 49
2.11 管理ide中的各种窗口 49
2.11.1 钉住 50
2.11.2 停靠 50
2.12 小结 52
第3章 visual studio 2008中的.netframework和语言增强 53
3.1 从.net语言的角度概览visual studio 2008 ide增强 53
3.1.1 vb ide增强 54
3.1.2 c# ide增强 54
3.2 visual studio 2008中的.net语言扩展 55
3.2.1 根据赋值推断变量数据类型 56
3.2.2 用一行代码创建对象并设置属性 57
3.2.3 给已有类添加方法 58
3.2.4 创建不存在的类的实例 59
3.2.5 在代码中编写简单的未命名的函数 60
3.2.6 为生成的代码添加业务逻辑 61
3.2.7 使用.net语言访问和查询数据 63
3.2.8 将程序集拆分为多个文件 64
3.2.9 在代码中直接处理xml 64
3.2.10 从事件处理程序移除未使用的参数(仅vb) 65
3.2.11 创建自动实现的属性(仅c#) 65
3.3 .net framework 3.5增强 66
3.4 小结 68
第二部分 深入ide
第4章 解决方案和项目 70
4.1 解决方案 70
4.1.1 创建解决方案 70
4.1.2 使用解决方案 74
4.2 项目 78
4.2.1 创建项目 79
4.2.2 使用项目定义文件 81
4.2.3 使用项目 86
4.3 小结 89
第5章 浏览器和资源管理器 91
5.1 解决方案资源管理器 91
5.1.1 提示文字和图标 92
5.1.2 管理解决方案 95
5.1.3 管理项目 96
5.2 类视图 96
5.2.1 工具栏 97
5.2.2 搜索栏 97
5.2.3 对象窗格 97
5.2.4 成员窗格 98
5.3 服务器资源管理器 99
5.3.1 数据连接 100
5.3.2 服务器组件 100
5.4 对象浏览器 102
5.4.1 改变范围 103
5.4.2 浏览对象 104
5.5 文档大纲 105
5.6 小结 106
第6章 编辑器和设计器简介 107
6.1 基础知识 107
6.1.1 文本编辑器 107
6.1.2 visual studio设计器 109
6.2 使用代码编辑器编写代码 109
6.2.1 打开编辑器 110
6.2.2 在代码编辑器中编写代码 110
6.2.3 剖析代码编辑器窗口 111
6.2.4 代码导航工具 113
6.2.5 搜索文档 114
6.2.6 在文本编辑器中调试 119
6.2.7 打印代码 121
6.2.8 使用代码定义窗口 122
6.3 创建和编辑xml文档和模式 123
6.3.1 推断模式 123
6.3.2 编辑xslt样式表 124
6.4 使用css 124
6.4.1 添加样式规则 124
6.4.2 定义样式表属性 125
6.5 开发windows客户端应用程序 125
6.5.1 创建windows forms项目 125
6.5.2 创建一个wpf项目 131
6.6 开发web窗体 132
6.7 授权组件和控件 136
6.7.1 创建新的组件或控件 136
6.7.2 编写组件代码的更多说明 137
6.8 小结 138
第7章 .net社区——使用和创建共享代码 139
7.1 visual studio的社区功能 139
7.1.1 visual studio起始页 140
7.1.2 帮助菜单 143
7.2 发现和使用共享内容 151
7.2.1 共享内容的类型 151
7.2.2 查找正确的内容 152
7.2.3 安装和保存共享内容 153
7.3 回馈社区 153
7.3.1 创建共享项(项目和项模板) 154
7.3.2 创建项目模板 154
7.3.3 创建项模板 158
7.3.4 将作品打包 159
7.3.5 发布作品 164
7.4 小结 164
第三部分 编写和使用代码
第8章 visual studio中的生产力工具 166
8.1 文本编辑器的基本辅助功能 167
8.1.1 变更跟踪 167
8.1.2 代码问题指示器 168
8.1.3 活动超链接 168
8.1.4 语法着色 168
8.2 大纲和导航 169
8.2.1 代码大纲 169
8.2.2 html导航 171
8.3 智能标签和智能任务 172
8.3.1 html设计器 172
8.3.2 windows forms设计器 172
8.3.3 代码编辑器 173
8.4 智能感知 174
8.4.1 完成单词 174
8.4.2 快速信息 175
8.4.3 列表成员 175
8.4.4 参数信息 176
8.4.5 管理using语句 177
8.4.6 代码段和模板代码 177
8.4.7 花括号匹配 184
8.4.8 自定义智能感知 185
8.5 任务列表 186
8.5.1 注释任务 186
8.5.2 快捷任务 187
8.5.3 用户任务 187
8.6 小结 188
第9章 重构代码 189
9.1 visual studio重构基础 190
9.1.1 调用重构工具 190
9.1.2 预览更改 193
9.2 重命名 194
9.2.1 访问重命名操作 194
9.2.2 使用重命名对话框 195
9.3 提取方法 196
9.3.1 执行提取方法操作 196
9.3.2 提取方法 197
9.3.3 生成方法存根 202
9.4 提取接口 202
9.4.1 执行提取接口操作 203
9.4.2 提取接口 203
9.5 重构参数 205
9.5.1 移除参数 205
9.5.2 将局部变量提升为参数 206
9.5.3 重新排列参数 207
9.6 封装字段 208
9.6.1 执行封装字段操作 208
9.6.2 封装字段对话框 208
9.7 小结 209
第10章 代码调试 210
10.1 调试基础 210
10.1.1 场景 211
10.1.2 调试的多个阶段 211
10.1.3 调试应用程序(自检查) 211
10.1.4 调试基础小结 218
10.2 visual studio调试器 219
10.2.1 调试菜单和工具栏 219
10.2.2 调试选项 223
10.2.3 逐语句、跳出和逐过程代码调试 223
10.2.4 在代码中指定断点 228
10.2.5 使用跟踪点 233
10.2.6 在调试器中查看数据 235
10.2.7 使用编辑并继续特性 238
10.3 高级调试场景 239
10.3.1 远程调试 239
10.3.2 调试wcf服务 240
10.3.3 调试多线程应用程序 240
10.3.4 调试客户端脚本 243
10.4 小结 243
第四部分 扩展visual studio
第11章 自动化对象模型介绍 246
11.1 自动化对象模型概述 246
11.1.1 对象模型版本 247
11.1.2 自动化的种类 248
11.1.3 dte/dte2根对象 248
11.2 solution和project对象 249
11.2.1 控制解决方案中的项目 251
11.2.2 访问项目中的代码 252
11.3 窗口 255
11.3.1 引用窗口 255
11.3.2 与窗口交互 255
11.3.3 文本窗口和窗格 258
11.3.4 工具窗口的类型 259
11.3.5 链接窗口 265
11.4 命令栏 267
11.5 文档 269
11.6 命令对象 279
11.6.1 执行命令 280
11.6.2 映射快捷键 281
11.7 调试器对象 281
11.8 自动化事件 282
11.9 小结 282
第12章 编写宏 284
12.1 记录宏 284
12.2 使用宏资源管理器 285
12.3 使用宏ide编写宏 287
12.3.1 使用宏项目 287
12.3.2 编写宏 290
12.3.3 调试 292
12.3.4 处理事件 292
12.3.5 调用宏 297
12.4 小结 299
第13章 编写外接程序和向导 300
13.1 创建第一个外接程序项目 300
13.2 外接程序的结构 307
13.2.1 外接程序的生命周期 308
13.2.2 响应命令 312
13.2.3 管理外接程序 313
13.3 示例外接程序——调色板.. 314
13.3.1 让我们开始吧 315
13.3.2 创建用户控件 315
13.3.3 完成connect类 318
13.3.4 公开外接程序的设置 320
13.4 创建visual studio向导 333
13.4.1 向导的结构 333
13.4.2 创建add new item向导 336
13.5 小结 340
第五部分 创建企业应用程序
第14章 创建asp.net应用程序 342
14.1 asp.net网站基础 342
14.1.1 新建web应用程序项目 343
14.1.2 控制项目属性和选项 352
14.1.3 创建网页 356
14.2 设计用户界面 363
14.2.1 确定页面布局和控件位置 364
14.2.2 创建通用的界面外观 367
14.2.3 创建用户可配置的ui 381
14.3 使用asp.net控件 388
14.3.1 asp.net控件概述 389
14.3.2 asp.net标准控件 390
14.3.3 验证控件 391
14.3.4 登录控件 393
14.3.5 网站导航控件 395
14.3.6 data控件 396
14.3.7 用户控件 397
14.4 小结 398
第15章 构建windows forms应用程序 399
15.1 窗体设计基础 399
15.1.1 考虑最终用户 399
15.1.2 ui标准的角色 400
15.1.3 规划用户界面 401
15.2 创建窗体 401
15.2.1 windows应用程序项目类型 402
15.2.2 窗体的属性和事件 403
15.3 添加控件和组件 404
15.3.1 控件的布局和定位 405
15.3.2 使用容器 407
15.3.3 控件的外观和行为 410
15.3.4 使用toolstrip控件 411
15.3.5 显示数据 416
15.4 创建自定义控件 420
15.4.1 子类化现有控件 420
15.4.2 设计用户控件 421
15.4.3 创建自定义控件 422
15.5 小结 423
第16章 创建丰富、智能的用户界面 424
16.1 wpf平台 424
16.2 wpf设计器介绍 427
16.3 wpf编程 431
16.3.1 布局 431
16.3.2 样式和模板 435
16.3.3 数据绑定 437
16.3.4 路由事件 438
16.4 创建简单的图像查看应用程序 439
16.4.1 开始布局 440
16.4.2 保存图像 441
16.4.3 绑定图像 443
16.4.4 按钮事件处理程序和图像效果 444
16.4.5 使用通用对话框选择路径 445
16.5 小结 449
第17章 创建丰富的浏览器应用程序 450
17.1 在标准浏览器中创建有活力的客户端应用程序 450
17.1.1 asp.net ajax控件 451
17.1.2 创建ajax页面 451
17.1.3 asp.net ajax控件工具包开源库 454
17.2 通过浏览器创造windows上独特和丰富的体验 459
17.2.1 在单独的wpf和wpf xbap之间选择 459
17.2.2 创建wpf浏览器应用程序 460
17.2.3 安全考虑 461
17.2.4 部署wpf浏览器应用程序 464
17.3 跨平台提供交互式体验 467
17.3.1 开始使用silverlight 467
17.3.2 创建silverlight应用程序 468
17.3.3 在网页中使用silverlight 475
17.4 小结 477
第18章 使用数据库 478
18.1 创建表和关系 478
18.1.1 新建sql server数据库 478
18.1.2 定义表 479
18.1.3 使用数据库关系图设计器 481
18.2 使用sql语句 483
18.2.1 编写查询 484
18.2.2 创建视图 486
18.2.3 开发存储过程 486
18.2.4 创建触发器 489
18.2.5 创建用户定义函数 490
18.3 使用数据库项目 490
18.3.1 创建数据库项目 490
18.3.2 自动生成脚本 491
18.3.3 执行脚本 492
18.4 在托管代码中创建数据库对象 492
18.4.1 创建sql server项目 492
18.4.2 用c#创建存储过程 493
18.5 将控件绑定到数据 495
18.5.1 数据绑定简介 495
18.5.2 自动生成windows forms控件绑定 496
18.5.3 编辑类型化数据集 500
18.5.4 手动绑定windows forms控件 500
18.5.5 web控件上的数据绑定 503
18.6 对象关系映射 506
18.6.1 linq概述 507
18.6.2 使用o/r设计器映射 507
18.6.3 linq代码 509
18.7 小结 511
第19章 面向服务的应用程序 512
19.1 服务的基础知识 512
19.2 asp.net web服务应用程序 514
19.2.1 asp.net web服务项目模板 515
19.2.2 创建asp.net web服务 517
19.2.3 使用asp.net web服务 529
19.2.4 管理web服务中的异常 533
19.3 wcf服务应用程序 533
19.3.1 wcf项目模板 534
19.3.2 创建wcf服务 536
19.3.3 配置wcf服务 540
19.3.4 使用wcf服务 545
19.3.5 安放和部署wcf服务 546
19.4 小结 547
第20章 为应用程序嵌入工作流 548
20.1 wf 548
20.1.1 工作流组件 549
20.1.2 工作流项目组件 549
20.1.3 工作流设计器 550
20.1.4 工作流项模板 552
20.1.5 工作流活动 554
20.2 创建顺序工作流 555
20.2.1 设计工作流 555
20.2.2 配置codeactivity 560
20.2.3 配置ifelse活动和使用ruleconditioneditor 560
20.2.4 配置invokewebservice活动 561
20.2.5 配置handleexternalevent活动 562
20.2.6 定义工作流宿主和客户 564
20.2.7 运行工作流 570
20.3 创建状态机工作流 571
20.3.1 设计状态机工作流 571
20.3.2 初始化和转换状态 573
20.3.3 定义客户与宿主 579
20.3.4 运行状态机工作流 582
20.4 小结 583
第21章 开发office业务应用程序 584
21.1 office扩展功能概述 585
21.1.1 office功能 585
21.1.2 visual studio office项目类型 587
21.2 创建office外接程序 588
21.2.1 自定义功能区 589
21.2.2 自定义任务窗格 591
21.2.3 创建outlook表单区域 592
21.3 创建office文档扩展 594
21.3.1 宿主控件 594
21.3.2 创建操作窗格 596
21.3.3 在数据缓存中存放数据 597
21.3.4 实现自己的智能标签 598
21.4 小结 601
第六部分 vsts
第22章 团队协作和vsts 604
22.1 软件开发项目概览 604
22.1.1 msf agile 605
22.1.2 msf for cmmi 606
22.2 vsts简介 607
22.2.1 vsts架构版 608
22.2.2 vsts开发版 608
22.2.3 vsts测试版 610
22.2.4 vsts数据库版 611
22.2.5 tfs 611
22.3 小结 612
第23章 管理和使用团队项目 614
23.1 tfs剖析 614
23.1.1 应用程序层 614
23.1.2 数据层 616
23.1.3 安全 617
23.2 管理团队项目 619
23.2.1 新建团队项目 619
23.2.2 向项目团队中添加用户 621
23.2.3 控制项目结构和迭代 624
23.3 参与项目团队 625
23.3.1 与tfs连接 625
23.3.2 使用团队资源管理器 626
23.3.3 使用项目门户 626
23.3.4 使用microsoft office 627
23.3.5 使用项目警告 628
23.3.6 使用项目报表 629
23.4 小结 630
第24章 源代码控制 631
24.1 team foundation source control基础 631
24.1.1 基本架构 632
24.1.2 安全权限和许可 632
24.2 开始使用team foundation source control 633
24.2.1 配置visual studio 634
24.2.2 使用源代码控制资源管理器窗口 634
24.2.3 管理工作区 635
24.2.4 向源代码控制中添加文件 637
24.3 在源代码控制中编辑文件 638
24.3.1 从代码仓库中获取文件 638
24.3.2 签入变更 638
24.3.3 变更集的概念 642
24.3.4 搁置代码 643
24.3.5 合并更改 644
24.4 分支和合并 646
24.4.1 分支 647
24.4.2 合并 647
24.5 小结 648
第25章 工作项跟踪 649
25.1 工作项 650
25.1.1 工作项的角色和sdlc 650
25.1.2 为项目选择工作项集 650
25.1.3 工作项的共性 653
25.2 使用team explorer管理工作项 659
25.2.1 新建工作项 659
25.2.2 查找和过滤工作项 661
25.3 团队角色透视 664
25.3.1 项目的视角 664
25.3.2 项目经理 664
25.3.3 业务分析师 670
25.3.4 开发人员 671
25.3.5 测试人员 674
25.4 自定义工作项 675
25.4.1 将工作项植入流程 675
25.4.2 自定义现有工作项 679
25.5 小结 680
第26章 开发版 681
26.1 可视化代码开发 681
26.1.1 class designer 682
26.1.2 添加项 683
26.1.3 定义类之间的关系 684
26.1.4 定义方法、属性、字段和事件 686
26.2 开发人员的单元测试 686
26.2.1 单元测试示例 687
26.2.2 编写有效的单元测试 687
26.2.3 使用单元测试类和方法 688
26.2.4 创建单元测试 689
26.2.5 运行单元测试 690
26.2.6 代码覆盖率分析 692
26.3 性能分析 694
26.3.1 创建性能会话 694
26.3.2 配置会话 696
26.3.3 会话目标 699
26.3.4 报表 700
26.3.5 性能报告 700
26.4 代码分析 706
26.4.1 配置强制规则 707
26.4.2 把规则违例视为编码错误 707
26.4.3 禁止规则 708
26.4.4 分析 710
26.4.5 查看结果 710
26.4.6 更新说明性指导 711
26.5 代码度量 711
26.5.1 测量法 711
26.5.2 运行代码度量 712
26.5.3 处理结果 712
26.6 小结 714
第27章 架构版 715
27.1 team architect制品 715
27.1.1 项目模板 716
27.1.2 项模板 716
27.2 设计应用程序 717
27.3 定义系统 723
27.4 定义基础结构 725
27.5 部署应用程序 731
27.5.1 部署关系图 731
27.5.2 验证部署 732
27.5.3 部署报表 733
27.6 实现应用程序 733
27.6.1 设置实现属性 733
27.6.2 生成项目 734
27.7 小结 735
第28章 测试版 736
28.1 创建、配置和管理测试 736
28.1.1 测试项目 737
28.1.2 测试项 738
28.1.3 测试管理 739
28.1.4 测试配置 741
28.2 web测试 741
28.2.1 记录web测试 741
28.2.2 管理web测试请求 743
28.2.3 运行web测试和查看结果 743
28.2.4 为web测试设置数据 744
28.2.5 从web测试中提取值 749
28.2.6 请求验证规则 750
28.3 负载测试 751
28.3.1 创建负载测试 751
28.3.2 复审和编辑负载测试 756
28.3.3 运行负载测试和检查结果 756
28.4 手动测试 758
28.4.1 创建手动测试 758
28.4.2 执行手动测试 758
28.5 一般测试 759
28.6 顺序测试 759
28.7 小结 760
第29章 数据库版 761
29.1 数据库项目系统 761
29.1.1 创建数据库项目 762
29.1.2 schema view 767
29.2 比较架构 768
29.2.1 查看对象定义 769
29.2.2 架构更新脚本 770
29.2.3 比较选项 771
29.3 比较数据 771
29.3.1 浏览记录级别的详细信息 772
29.3.2 预览和执行更新脚本 773
29.4 重命名重构 774
29.4.1 重命名选项 774
29.4.2 预览架构更改 774
29.5 单元测试 775
29.5.1 创建单元测试 775
29.5.2 数据库单元测试设计器 777
29.6 生成数据 779
29.6.1 创建数据生成计划 779
29.6.2 预览生成的数据 781
29.6.3 生成数据 783
29.7 生成和部署 784
29.8 小结 785
第30章 team foundation build 786
30.1 team foundation build简介 786
30.2 新建生成 789
30.2.1 为生成命名 789
30.2.2 选择要生成的项目文件 790
30.2.3 定义生成项目文件 790
30.2.4 定义生成滞留策略 792
30.2.5 定义生成代理配置 792
30.2.6 生成计划或设置生成触发器 793
30.3 编辑生成定义 794
30.3.1 tfsbuild.proj项目文件 795
30.3.2 msbuild的作用 795
30.4 启动生成 795
30.5 监视和分析生成 796
30.5.1 team build explorer简介 796
30.5.2 生成报表 797
30.6 小结 798
《游戏设计梦工厂》是南加州大学互动媒体及游戏专业的系主任特雷西•弗雷顿教授的经典著作。作为一本将现代游戏工业与先进教学体系
《cdma2000 1x EV-DO系统、接口与无线网络优化》内容简介:《cdma2000 1x EV-DO系统、接口与无线网络优化》从EV-DO的各种技术版本...
DigitalCommunicationsisaclassicbookintheareathatisdesignedtobeusedasaseniororgra...
《全面深化改革与世界经济》内容简介:“世界经济是失衡的”、“世界经济需要再平衡”这样的命题是当今的普遍共识,但对于“谁应当
本书的目的是想让人们考虑设计虚拟世界的问题。问题不在于你是否赞同其中的观点,而在于——除非你能够提出自己的观点。从虚拟世
大数据下并行知识约简与知识获取 本书特色 本书针对大数据的数据体量大、数据类型繁多、处理速度快、价值密度高等特点,以粒计算方法为理论基础,以经典粗糙集模型和区间...
《基层党建与社会治理:以广州市花都区为例》内容简介:本书以广州市花都区为调研对象,通过对花都区全面加强基层组织建设实践的调
《天人合一》内容简介:“天人合一”由宋代著名思想张载明确提出,是中国传统思想中经久不衰的思想话题,集中体现了人与自然和谐相
《刘安评传(增订本)》内容简介:《刘安平传(增订本)》是一部以思想为着重点对西汉淮南王刘安进行全面评论的专著。书中对刘安其
《哲学的中国本土化叙事》内容简介:《哲学的中国本土化叙事》怀着一种积极而开放的情怀探索并追寻本土化的“中国哲学”。“中国哲
《PhoneGap实战》由来自腾讯的资深专家团队撰写,Adobe中国区专家和PhoneGap中国社区联袂推荐。《PhoneGap实战》内容全面、注重实
成功的网站设计团队依赖开发人员与客户之间的良好沟通,也离不开开发团队内部成员之间的沟通。线框图、站点地图、流程图和其他设
基于光纤技术的电信网络已经成为最主要的信息传输系统,无论是在陆地还是海底,已经形成了拥有巨大传输容量的光纤链路。各种不同
欧洲人用他们的浪漫洒脱,以及悠久的艺术传统造就了欧洲设计在世界上独树一帜的风采。本书汇集了奥地利著名设计学院历年的学生作
《冯唐成事心法》内容简介:他是热爱文艺的管理专家,是精通麦肯锡与曾国藩成事学的商业领袖,是医学博士出身的投资人。10年麦肯锡
中文版CoreIDRAW图形设计经典技法118例-含光盘1张 本书特色 《中文版CorelDRAW图形设计经典技法118例(附光盘)》(作者曾全、邱雅莉)主要面...
《文徵明行书琵琶行》内容简介:文徵明行书《琵琶行》,书于八十八岁(一五五七),现藏于湖南省博物馆。正文所录《琵琶行》是白居
《一目了然Web软件显性设计之路》通过深入浅出地讲解与丰富的实际案例,帮助读者理解、掌握显性设计的精髓,可轻松熟练地设计出简
《PowerShell for Office 365应用实战》内容简介:本书选取企业日常信息管理当中出现频率较高的应用场景,采用循序渐进的讲解方式,
LearnhowtobuildmappingapplicationsusingGeoDjango,theleadingopensourcegeographicw...