读 《构建可扩展的Web站点》笔记

 

从目录中就可以看出来这是一本超越纯粹代码范畴的书涉及到开发工具开发方法开发过程体系结构应用分层常用web功能举例和注意事项性能瓶颈扩展并提出一些解决方法最后还涉及到性能的监控方法.

 

扩展Web应用程序

 

一、概念

 

简单的来说,如果一个系统可扩展,那么你可以通过扩展来提供系统的性能。这代表着系统能够容纳更高的负载、更大的数据集,并且系统是可维护的。扩展和语言、某项具体的技术都是无关的。扩展可以分为两种:

1. 垂直扩展(stade up),通俗的说就是将某台单一的机器的性能提升的更高,如添加内存、更换更强的处理器等等。

2. 水平扩展(out),通俗的说就是添加新的机器。

对比可以发现,水平扩展比垂直扩展有更强大的扩展性,可以说是“无限”扩展,毕竟单台的机器的性能总是有限的,硬件的技术发展还赶不上web的发展。但同时,水平扩展也来了更高的维护成本。实际中,需要根据具体情况来寻求一个平衡点。 (全文…)

驱动测试开发的几条TIPs

拿到《测试驱动开发》这本书10天左右, 我便"粗鲁"的把它看了一遍, 说是粗鲁, 是因为我这是我一次正式的阅读关于极限编程的书籍, 同时又看的比较快, 对于诸多内容有些囫囵吞枣的嫌疑. 尽管如此, 我还是不得不感叹 Kent Beck(作者)的伟大思想, 给我感觉测试驱动开发更是一门方法学, 而非简单的软件工程解决方案.
激动与感慨之余, 顺便从书中摘抄了一些比较重要的TIps.

1.从测试开始, 而不是从建立对象开始.

2.测试开始之前, 写一个包含所有你认为必须要编写的测试的清单. 最后, 列出所有你认为这一轮编程结束后为了获得整洁代码而必须要完成的重构.

3.开始时的目的是为了让测试能够运行, 而非获得完美的解决方案.

4.测试驱动培养的是你在软件开发中一小步一小步的进行开发的能力, 而非教条的一小步一小步的进行开发.

5.首先解决目标的可用性, 之后再解决代码整洁性的问题.

6.尽量减少测试程序和代码之间的耦合度.

7.如果引入了新的测试, 你需要把新的测试记在清单上.

8.除非有更好的动机,否则不要引入过多的设计.

9.每一个周期,考虑重构一次代码,去掉重复部分.clear一下代码.

10.各种测试之间应该没有任何的相互影响.

11.相互独立的测试意味着所有的测试都是不依赖于顺序的.

12.试着从一开始就编写断言.

13.使用让人容易理解的测试数据.

14.测试从不做任何工作开始.

15.一次只解决一个问题.

16.注意休息.

相关资源:  
1 PHP测试驱动开发介绍
2 豆瓣讨论