程序语言评估标准

1、可读性。判断一个语言的优劣的一个最重要的标准是用它写的程序要好读,好懂。
一种语言的整体简单性极大的影响着他的可读性。一种具有大量基本结构的语言较只有少量基本结构的语言要难学得多,当然,过少也会非常难学,汇编就是如此。
2、正交性。正交性是指使用该语言中一组相对少量的基本结构,经过相对少的组合步骤,可以构成该语言的控制结构与数据接哦股。而且,它的基本结构的任何组合都是合法和有意义的。
3、控制语句。在20世纪50年代和60年代,一批程序设计语言由于缺乏控制语句,导致很差的可读性。随后的语言都兴起了结构化程序设计的革命。尤其是人们普遍意识到滥用goto会降低程序设计的可读性。
4、数据类型和数据结构。在程序设计语言中给出定义数据类型和数据结构的合理机制,是语言可读性的又一个重要辅助。
5、可写性。可写性是程序设计语言的在应用领域产生程序的难以程度的一种度量。大多数影响可读性的语言特征可以影响可写性。
6、支持抽象。抽象指的是以合法的省略许多细节的方式,来定义并且使用复杂结构或复杂运算的能力。
7、表达性。语言的表达性可以指语言中几种不同特征。一种是具有一些功能很强的运算符。一种是程序语言具有相对方便,非繁琐的方式来说明运算。
8、可靠性。如果一个程序在任何条件下的运行都能 达到他的说明标准。我们称这饿程序是可靠的。
9.代价。第一是训练程序员使用这种语言的代价。第二是使用这种语言来编写程序的代价。第三是编译程序的代价。第四是程序运行的代价。

软件构建中的理想设计特征

1、最小复杂度。设计的手艺好目标就是要复杂度最小,避免作出“聪明的”设计,因为“聪明的”设计常常难以理解

2、易于维护。 易于维护意味着在设计时为做维护的程序员着想。

3、松散耦合。松散耦合意味着在设计时让程序各个组织称部分之间的管理关系最小。通过应用类接口中合理还凑向、封装及信息隐藏等原则设计出相互关联尽可能小的类。减少关联也就是减少了集成、测试和维护时的工作量。

3、可扩展性。可扩展性是只可以增强系统功能而无须改变底层结构,可以改变某一个方面功能而不影响其他部分。

4、可重用性。可重用意味着代码可以在其他系统的组成部分中重复使用,降低整体的成本和提高生产效率。

5、高扇入。高扇入就是说让大量的类是有那个某个给定的类。这就是意味着设计出的系统很好的利用较低层次上的工具类。

6、低扇出。低扇出就是让一个类里少量或者适中的使用其他的类。高扇出说明了一个类使用了大量其他的类,因此可能变得过于复杂。

7、可移植性。可移植性是说应该设计的系统很方便的移植到其他的环境中。

8、精简性。精简就意味着系统没有多余的部分。这样有利于后面的单元测试。

9、层次性。层次性就意味着尽量保持系统各个层次保持可分解,使你能在任何层面观察系统。

10、标准技术。一个系统所依赖的外来的,古怪的东西越多,别人在第一次想要理解它的时候就越头痛。尽量使用标准化,常用的方法,让整个系统给人一种熟悉的感觉。

varnish安装记录

varnish和squid相比最大的优势就是简单快速,简单是安装和配置都简单,快速是运行速度比squid更快,当然,快的前提是varnish比squid占用更多的内存,估计当年设计squid的时候内存还是很贵的东西,所以更多的侧重硬盘,使用内存多,当然还有一个很显而易见的弱点是机器冷启动时候恢复缓存的时间相比squid要长。

wget http://downloads.sourceforge.net/project/varnish/varnish/2.0.6/varnish-2.0.6.tar.gz?use_mirror=ncu

tar zxvf varnish-2.0.6.tar.gz
cd varnish-2.0.6
./configure  –prefix=/srv/varnish
make
make install

启动命令:
/srv/varnish/sbin/varnishd -a :8088 -b localhost:8080

由于我指定了安装目录,所以加上了路径,-a参数表示varnish的监听端口,正常情况下应该监听是80端口,也就是web服务端口,我测试机上被使用掉了,所以用了8088端口, -b 是表示后端(backend)的地址,如果backend在这里指定,那么只能指定一个后端,如果使用的配置文件可以指定多个backend,我的配置文件位置位于/srv/varnish/etc/varnish。

在web服务器的目录中创建一个index.html文件,然后通过varnish进行代理访问.

第一次访问结果如下:

2

第二次访问结果如下:
3

根据请求头,我们看到的确是通过vanish来代理访问后端的,第一次访问age 为0 ,第二次访问age为71,说明这个文件已经在varnish中缓存了,此时可以通过/srv/varnish/bin/varnishstat 来查看一些参数,其中Hitrate 一行应该为1,因为命中了一次。
varnish 配置文件还是很有搞头的一个东西,有点类似与Nginx的语法,虽然不是很像,比如对正则的支持,可以绑定和去除head、Cookie等等功能,有时间的话,翻译一下varnish的introduction

HTML重构的一些最佳实践

以下所有内容都摘自《重构HTML这本书》,留在这里做个笔记。版权属于原作者。

1、将名称改为小写。所有的元素和属性的名称都要小写,大部分实体名称也要小写,当然设计大写字母的除外。
2、给所有的属性都加上引号。
3、补足遗漏的属性值。为所有不带属性值的属性加上属性值。如:<input type=”radio” checked>应该改成:<input type=”radio” checked=”checked”>
4、将空标签替换成空元素标签,如将<br>这样的元素替换为<br class=”empty” />
5、添加结束标签。关闭所有的段落、清单项目、表格单元格和其他非空的元素
6、消除重叠,在父级元素上关闭每个子元素
7、把文本转换成UTF-8,因为他是唯一全平台支持的字符集
8、转义小于号,尽管有些浏览器有时候能够复原未转义的小于号,但并不是所有的浏览器都能。一个未转义的小于号更有可能导致浏览器中的内容被隐藏。就算你没有完全转换成XHTML,这也是一个需要修复的问题。
9、转义&符号,把&转换成&amp;尽管大部分浏览器都可以处理空格后原始的&符号,但是如果没有空格会迷惑一小部分浏览器。未经转义的&符号会对读者隐藏。
10、替换虚构的实体引用,如将&copyright; 替换成&copy;
11、加入根元素,确保每个页面都一个html根元素。

迟到的2009总结

2008年末在车东的要求下写了08总结,其实08年没有什么好总结的,干了一点点小的事情,不错也算是第一步,如果09年的是充满机遇的一年,那么08年也算是一个准备吧,刚哥也好,神仙也好,曹宇伟也好,甚至科科和小龙都给了我莫大的帮助和指导。

2009年一年实现了很多梦想,或者说是设想吧:

  1. 加入一个快速成长的公司,不为生存发愁,
  2. 能够给予父母一些物质上的反哺,能够一年回两次家
  3. 能够住一次5星级酒店,
  4. 能够出门旅游一次,
  5. 能够方便的回去见女友,
  6. 能够在同学、老师、朋友面前证明自己的价值,
  7. 能够读完30本书
  8. 玩一次黑莓
  9. 买一台mac
  10. 参加一次技术聚会

细细数来,除了mac没买之外,其他的都实现了,貌似2009年一年没白活,那么2010年来一点更高的愿望吧

  1. 买一台笔记本,性能要好,是不是mac不重要
  2. 为女友买一台单反相机
  3. 接父母来杭州住一段时间
  4. 完成一个开源作品
  5. 好好学好两个语言,英语和Python
  6. 学会理财
  7. 参加两次以上的技术聚会
  8. 看完《代码大全》《程序设计语言原理》《high performance mysql》
  9. 再读一遍曼昆的《经济学原理》
  10. 每周至少健身一次