<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>DBA Notes</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/" />
    <link rel="self" type="application/atom+xml" href="http://www.dbanotes.net/atom.xml" />
   <id>tag:www.dbanotes.net,2010://1</id>
    <link rel="service.post" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1" title="DBA Notes" />
    <updated>2010-02-09T08:06:48Z</updated>
    <subtitle>SELECT blog FROM Fenng.Thought 
 WHERE subjects IN (&apos;ORACLE&apos;, &apos;Web Arch&apos;, &apos;UNIX&apos;, &apos;Web 2.0&apos;, &apos;OPENSOURCE&apos;) ; 

     
        Weblog
                 JobsDigg
CNOUG
                 OpenRSS
Twitter
                                  Articles
                 About
               </subtitle>
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 5.01</generator>
 

<entry>
    <title>1e100.net，来自 Google</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/1e100_dot_net_google.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1385" title="1e100.net，来自 Google" />
    <id>tag:www.dbanotes.net,2010://1.1385</id>
    
    <published>2010-01-20T13:13:43Z</published>
    <updated>2010-02-09T08:06:48Z</updated>
    
    <summary>在 Alexa 上观测最近的一些数据的变化，发现了一个奇怪的域名: 1e100.net ，全球排名 45 。乍看上去，这个域名非常山寨，不过查询一下，发现这居然是 Google 的域名。Google 的名字是 Googol 这个单词拼错得来的，而 Googol 就是 10100 这个大数。1e100 = 1x10^100 = Googol  (refer)。Twitter 上也有网友对此进行了提示。



这么看来，1e100 这样的域名风格倒是很 Google 化。从网上的反馈看，Google 有不少服务都在使用 1e100.net 这个域名，最多的应该是 Google Chrome 浏览器的 Safe Browsing 特性对地址的使用(对 Firefox 也有影响)，而且会启用较多的并发连接，所以会有网站对此带来的压力无法承受而屏蔽 Google 的这个服务(refer)，此外也让我想起以前 Google Chrome 早期的版本解析 DNS 多少有点慢，不知道是否有相关因果关系。Google 的其它产品包括 Google Toolbar、Google Analytics、YouTube 、FeedBurner 等服务也用这个域名。也有人发现 Google IPV6 地址也是通过这域名在进行测试。不过直接访问 1e100.net 是访问不到的，Google 通过子域名的形式进行使用。

按理说，这种不对外提供服务的地址，Alexa 没必要统计流量的，或许是他们的小失误倒是让我们了解到 Google 的一点有趣的信息。

--EOF--

更多参考：


	Why is goog using 1e100.net?  解释了为什么不是 10e100.net 。
	Google 的 Project 10100 项目。
	Google doppelgänger casts riddle over interwebs


更新：最新的消息说是 Google 不同数据中心间用来&quot; identify servers, hinting that reverse DNS plays a role&quot; ，关键词&quot;Spanner&quot;。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>在 Alexa 上观测最近的一些数据的变化，发现了一个奇怪的域名: 1e100.net ，全球排名 45 。乍看上去，这个域名非常山寨，不过查询一下，发现这居然是 Google 的域名。Google 的名字是 <a href="http://en.wikipedia.org/wiki/Googol">Googol</a> 这个单词拼错得来的，而 Googol 就是 10<sup>100</sup> 这个大数。1e100 = 1x10^100 = Googol  (<a href="http://superuser.com/questions/75841/what-is-1e100-net-and-why-do-i-have-tcp-ports-open-to-it">refer</a>)。Twitter 上也有网友对此进行了提示。</p>

<p><img alt="1e100.net.png" src="http://www.dbanotes.net/Images/1e100.net.png" width="400" height="220" class="mt-image-none" style="" /></p>

<p>这么看来，1e100 这样的域名风格倒是很 Google 化。从网上的反馈看，Google 有不少服务都在使用 1e100.net 这个域名，最多的应该是 Google Chrome 浏览器的 <a href="http://www.google.com/tools/firefox/safebrowsing/">Safe Browsing</a> 特性对地址的使用(对 Firefox 也有影响)，而且会启用较多的并发连接，所以会有网站对此带来的压力无法承受而屏蔽 Google 的这个服务(<a href="http://kingofgng.com/eng/2009/08/29/why-the-fool-blocks-google-safe-browsing/">refer</a>)，此外也让我想起以前 Google Chrome 早期的版本解析 DNS 多少有点慢，不知道是否有相关因果关系。Google 的其它产品包括 Google Toolbar、Google Analytics、YouTube 、FeedBurner 等服务也用这个域名。也有人发现 Google IPV6 地址也是通过这域名在进行测试。不过直接访问 1e100.net 是访问不到的，Google 通过子域名的形式进行使用。</p>

<p>按理说，这种不对外提供服务的地址，Alexa 没必要统计流量的，或许是他们的小失误倒是让我们了解到 Google 的一点有趣的信息。</p>

<p>--EOF--</p>

<p>更多参考：</p>

<ul>
	<li><a href="http://www.webmasterworld.com/google/4050443.htm">Why is goog using 1e100.net?</a>  解释了为什么不是 10e100.net 。</li>
	<li>Google 的 <a href="http://www.project10tothe100.com/">Project 10<sup>100</sup></a> 项目。</li>
	<li><a href="http://www.theregister.co.uk/2010/02/08/google_mystery_domain/">Google doppelgänger casts riddle over interwebs</a></li>
</ul>

<p>更新：最新的消息说是 Google 不同数据中心间用来" identify servers, hinting that reverse DNS plays a role" ，关键词"Spanner"。</p>]]>
        
    </content>
</entry>

<entry>
    <title>消除小型 Web 站点单点故障(Single Point of Failure)</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_single_point_of_failure.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1264" title="消除小型 Web 站点单点故障(Single Point of Failure)" />
    <id>tag:www.dbanotes.net,2009://1.1264</id>
    
    <published>2009-11-26T12:08:34Z</published>
    <updated>2009-11-26T15:06:02Z</updated>
    
    <summary>针对小型站点的技术普及信息，中大型网站的牛人不用看，耽误您的时间我负不起这责任。用 Windows 做网站的也别看了，不适合。

说起单点故障(Single Point of Failure，SPOF)，倒是可以想起电影 《2012》中，一把焊枪把齿轮卡住，从而导致整个舱门无法关闭，进而整个引擎无法发动。这是个有点生动的例子--如此庞大的一个系统，居然因为一把小小的焊枪而险些毁于一旦。投入巨大人力物力生产的救命方舟居然做不到高可用(High availability)，这是致命的事情。

大脑对与人来说，就是一个单点，大脑损坏，人也完蛋；手是不是单点? 一只没了，另一只还能日常生活，从这个角度来说，不是单点。消除单点的最常见的做法：增加冗余。比如，人有两只手。其次，层次化。当然，分层的目的是便于隔离问题。电影 《2012》 中的这个问题，不知道谁是总架构师，看起来，隔离做得不太够 :) 

一般来说，只要系统能够比较清楚的分出层次来，要消除单点故障还是有章可循的事情。比如，一个网站，从基础的硬件层，到操作系统层，到数据库层，到应用程序层，再到网络层，都有可能产生单点故障。如果要有效的消除单点故障，最重要的一点是设计的时候要尽量避免引入单点，而随着架构的变化，定期审查系统潜在单点也是有必要的。

有人或许会问，假设一个起步中的站点，只有一台服务器，什么东西都在一个盒子里，到底要怎么做呢? 这里的建议是先抛开主板、CPU 、内存这些，首先必须考虑硬盘(存储层)的问题，如果机器只有一块硬盘，即使你备份计划再完善(不要说你的备份也是备份在这块硬盘上的)，还是建议你起码再弄一块。做镜像，让出错的概率降低，这是划算的投入，当然消除单点，成本几乎不可避免的要增加。如果硬盘多，或者有其他备份机制，可选的方法就更多，别刻舟求剑。

第二个要考虑网卡与网线的单点问题。先说网线，如果要问一个系统里面最容易物理损坏的是哪个组件，答案恐怕非网线莫属，对于网线这样多数时候因为距离需要定制的东西，总是购买成品还是有成本的，从我观察到的情况来看，各个 IDC 的网线使用手工制作的比例不小，这个质量几乎很难控制，一根线，两个水晶头，哪一个出问题都不能正常传输。怎么办? 想办法提升网线整体质量还是弄两根网线放在那里? 解决办法早都有了，网卡绑定 (NIC bonding)一个很简单很通用的办法(refer)，但是问题是并非很多人在用。多数 PC 服务器应该都是配置了多块网卡，如果是自己攒服务器，记得网卡多一块成本没多大，但是用处会有很多。如果耐着性子看到这里，先别急着去 Google，还有问题呢，两根网线如何接到上行交换机，什么样的交换机支持绑定，如何确定绑定是真正生效的? 答案是，尝试一下。

然后是什么? 是跑多个数据库，还是跑两个 Web 服务器，一个不行用另一个顶? 对于单台服务器，其它能消除单点的地方恐怕收效也不会特别大，现在少做无用功，或许要重点考虑如何备份，如何优化，以及出现问题的时候如何做到快速恢复。有一个或许会引起争议的建议是，除了 SSH 登录之外，要不要留一个 Telnet 登录的服务呢? 毕竟 SSH 服务器端守护进程不是百分百靠谱的事儿，如果 IDC 距离较远，需要斟酌一下。好吧，网站有了一点发展，用户量也增加了，感觉需要增加服务器了。再增加一台服务器，抗风险能力一下子加强了许多，毕竟一台机器质量再好，也有出错的时候。现在，Web 服务器、DB 服务器可以考虑引入 HA 的方案，如果单台服务能力够，主备模式也不错。随着网站的发展，服务器数量继续增加...

随着服务器数量的增加，到了必须要自己购买网络设备的时候了。同样的设备，一买恐怕就要买双份，原因无它--一台总要出错，哪怕是电源被拔错--而这样的情况实际上并不少见。如果预算不够，那就再等等，但是要记住，定期审查，有可能的话，进行弥补总不会错。

到现在，所有的服务器都还在一个 IDC 呢，IDC 本身也是个单点啊，服务器被黑怎么办? 机房光线被施工工人挖断怎么办? 机房停电怎么办? 找第二个机房吧。现在选 IDC 首先要考虑什么? 中国特色的互联网问题总要考虑吧，&quot;南北互通&quot;怎么样...或许在选择第一个机房的时候已经遇到了类似的问题，或许现在正在受到这个问题的困扰。选好 IDC 之后，首先计划一下数据如何备份过来，然后，网站的配置信息如何同步或备份过来(这是保证第一个 IDC 出了致命问题之后的最基本的恢复要求)。多个 IDC 之后不得不提上议程的要算 DNS 这个事儿了。你的 DNS 解析商靠谱么? 如果域名提供商遭受攻击，对自己的网站影响能承受么?

更多的服务器，提供更多的应用，更多的用户，更多的收入... 接下来该怎么办呢? 现在，您所面对的已经不是一个小型 Web 站点了，可以不用看这篇文章了。

到现在，我还没说人的问题，如果这些信息只有一个人知道，万一这个人出了点事情怎么办? 作为老板，还要考虑人的单点问题。

--EOF--


</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<pre>针对小型站点的技术普及信息，中大型网站的牛人不用看，耽误您的时间我负不起这责任。<br />用 Windows 做网站的也别看了，不适合。</pre>

<p>说起单点故障(Single Point of Failure，SPOF)，倒是可以想起电影 《2012》中，一把焊枪把齿轮卡住，从而导致整个舱门无法关闭，进而整个引擎无法发动。这是个有点生动的例子--如此庞大的一个系统，居然因为一把小小的焊枪而险些毁于一旦。投入巨大人力物力生产的救命方舟居然做不到高可用(High availability)，这是致命的事情。</p>

<p>大脑对与人来说，就是一个单点，大脑损坏，人也完蛋；手是不是单点? 一只没了，另一只还能日常生活，从这个角度来说，不是单点。消除单点的最常见的做法：<strong>增加冗余</strong>。比如，人有两只手。其次，<strong>层次化</strong>。当然，分层的目的是便于隔离问题。电影 《2012》 中的这个问题，不知道谁是总架构师，看起来，隔离做得不太够 :) </p>

<p>一般来说，只要系统能够比较清楚的分出层次来，要消除单点故障还是有章可循的事情。比如，一个网站，从基础的硬件层，到操作系统层，到数据库层，到应用程序层，再到网络层，都有可能产生单点故障。如果要有效的消除单点故障，最重要的一点是设计的时候要尽量避免引入单点，而随着架构的变化，定期审查系统潜在单点也是有必要的。</p>

<p>有人或许会问，假设一个起步中的站点，只有一台服务器，什么东西都在一个盒子里，到底要怎么做呢? 这里的建议是先抛开主板、CPU 、内存这些，首先必须考虑硬盘(存储层)的问题，如果机器只有一块硬盘，即使你备份计划再完善(不要说你的备份也是备份在这块硬盘上的)，还是建议你起码再弄一块。做镜像，让出错的概率降低，这是划算的投入，当然消除单点，成本几乎不可避免的要增加。如果硬盘多，或者有其他备份机制，可选的方法就更多，别刻舟求剑。</p>

<p>第二个要考虑网卡与网线的单点问题。先说网线，如果要问一个系统里面最容易物理损坏的是哪个组件，答案恐怕非网线莫属，对于网线这样多数时候因为距离需要定制的东西，总是购买成品还是有成本的，从我观察到的情况来看，各个 IDC 的网线使用手工制作的比例不小，这个质量几乎很难控制，一根线，两个水晶头，哪一个出问题都不能正常传输。怎么办? 想办法提升网线整体质量还是弄两根网线放在那里? 解决办法早都有了，网卡绑定 (NIC bonding)一个很简单很通用的办法(<a href="http://www.cyberciti.biz/tips/linux-bond-or-team-multiple-network-interfaces-nic-into-single-interface.html">refer</a>)，但是问题是并非很多人在用。多数 PC 服务器应该都是配置了多块网卡，如果是自己攒服务器，记得网卡多一块成本没多大，但是用处会有很多。如果耐着性子看到这里，先别急着去 Google，还有问题呢，两根网线如何接到上行交换机，什么样的交换机支持绑定，如何确定绑定是真正生效的? 答案是，尝试一下。</p>

<p>然后是什么? 是跑多个数据库，还是跑两个 Web 服务器，一个不行用另一个顶? 对于单台服务器，其它能消除单点的地方恐怕收效也不会特别大，现在少做无用功，或许要重点考虑如何备份，如何优化，以及出现问题的时候如何做到快速恢复。有一个或许会引起争议的建议是，除了 SSH 登录之外，要不要留一个 Telnet 登录的服务呢? 毕竟 SSH 服务器端守护进程不是百分百靠谱的事儿，如果 IDC 距离较远，需要斟酌一下。好吧，网站有了一点发展，用户量也增加了，感觉需要增加服务器了。再增加一台服务器，抗风险能力一下子加强了许多，毕竟一台机器质量再好，也有出错的时候。现在，Web 服务器、DB 服务器可以考虑引入 HA 的方案，如果单台服务能力够，主备模式也不错。随着网站的发展，服务器数量继续增加...</p>

<p>随着服务器数量的增加，到了必须要自己购买网络设备的时候了。同样的设备，一买恐怕就要买双份，原因无它--一台总要出错，哪怕是电源被拔错--而这样的情况实际上并不少见。如果预算不够，那就再等等，但是要记住，<strong>定期审查</strong>，有可能的话，进行弥补总不会错。</p>

<p>到现在，所有的服务器都还在一个 IDC 呢，IDC 本身也是个单点啊，服务器被黑怎么办? 机房光线被施工工人挖断怎么办? 机房停电怎么办? 找第二个机房吧。现在选 IDC 首先要考虑什么? 中国特色的互联网问题总要考虑吧，"南北互通"怎么样...或许在选择第一个机房的时候已经遇到了类似的问题，或许现在正在受到这个问题的困扰。选好 IDC 之后，首先计划一下数据如何备份过来，然后，网站的配置信息如何同步或备份过来(这是保证第一个 IDC 出了致命问题之后的最基本的恢复要求)。多个 IDC 之后不得不提上议程的要算 DNS 这个事儿了。你的 DNS 解析商靠谱么? 如果域名提供商遭受攻击，对自己的网站影响能承受么?</p>

<p>更多的服务器，提供更多的应用，更多的用户，更多的收入... 接下来该怎么办呢? 现在，您所面对的已经不是一个小型 Web 站点了，可以不用看这篇文章了。</p>

<p>到现在，我还没说人的问题，如果这些信息只有一个人知道，万一这个人出了点事情怎么办? 作为老板，还要考虑人的单点问题。</p>

<p>--EOF--</p>

<p><br />
</p>]]>
        
    </content>
</entry>

<entry>
    <title>网站优化应重视 DNS 预获取(DNS Prefetching)</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/dns_prefetching.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1321" title="网站优化应重视 DNS 预获取(DNS Prefetching)" />
    <id>tag:74.207.252.114,2009://1.1321</id>
    
    <published>2009-07-12T12:41:03Z</published>
    <updated>2009-11-23T10:07:18Z</updated>
    
    <summary><![CDATA[网站优化技术总是在进化。今天重新阅读了一下以前的前端优化笔记，发现对于 YSlow 优化 34 条准则关于减少 DNS 查找 (Reduce DNS Lookups)的部分或许应该修正一下了。

DNS 作为互联网的基础协议，其解析的速度似乎容易被网站优化人员忽视。现在浏览器厂商已经有在针对 DNS 进行优化，典型的一次 DNS 解析耗费 20-120 毫秒，减少 DNS 解析数是个优化的方式，而能够缩减 DNS 解析的时间也是有经济效益的事情。这就是浏览器厂商重视 DNS Prefetching 的主要原因。DNS Prefetching 对于性能的收益可以简单的用"DNS 同步请求到异步"来解释，也就是具有此属性的域名不需要用户点击链接就在后台解析，而域名解析和内容载入是串行的网络操作，所以这个方式能减少用户的等待时间，提升用户体验。

Google Chrome 内置就有 DNS Prefetching 技术(注意之前有几个小版本因为这一特性反而带来了性能问题) ，而 Firefox 3.5 也引入了这一 新特性。至于 IE 8，暂时还看不到有什么举措(或许是我没注意到?)。 

对于一个网站来说，如果希望能充分利用用户浏览器端的这个功能，可以在页面添加 link 属性的锚点来做到。类似：

&lt;link rel="dns-prefetch" href="http://www.google-analytics.com/"&gt;


另外还有这个 x-dns-prefetch-control 也有必要适当用一下。对于某些站点引用了 Google 的某些服务脚本，可能这尤其有用。

另外一种加速 DNS 的途径是考虑使用 pdnsd 之类的缓存 DNS 代理服务器来加速某些 DNS 请求。

在 Chrome 中，可以通过在地址栏输入 about:histograms/DNS 来观测一些有趣的 DNS 性能数据。

--EOF--]]></summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>网站优化技术总是在进化。今天重新阅读了一下以前的<a href="http://www.dbanotes.net/web-performance.html">前端优化笔记</a>，发现对于 <a href="http://developer.yahoo.com/performance/">YSlow 优化 34 </a>条准则关于减少 DNS 查找 (Reduce DNS Lookups)的部分或许应该修正一下了。</p>

<p>DNS 作为互联网的基础协议，其解析的速度似乎容易被网站优化人员忽视。现在浏览器厂商已经有在针对 DNS 进行优化，典型的一次 DNS 解析耗费 20-120 毫秒，减少 DNS 解析数是个优化的方式，而能够缩减 DNS 解析的时间也是有经济效益的事情。这就是浏览器厂商重视 DNS Prefetching 的主要原因。DNS Prefetching 对于性能的收益可以简单的用"DNS 同步请求到异步"来解释，也就是具有此属性的域名不需要用户点击链接就在后台解析，而域名解析和内容载入是串行的网络操作，所以这个方式能减少用户的等待时间，提升用户体验。</p>

<p>Google Chrome 内置就有 <a href="http://blog.chromium.org/2008/09/dns-prefetching-or-pre-resolving.html">DNS Prefetching </a>技术(注意之前有几个小版本因为这一特性反而带来了性能问题) ，而 Firefox 3.5 也引入了这一 <a href="https://developer.mozilla.org/En/Controlling_DNS_prefetching">新特性</a>。至于 IE 8，暂时还看不到有什么举措(或许是我没注意到?)。 </p>

<p>对于一个网站来说，如果希望能充分利用用户浏览器端的这个功能，可以在页面添加 link 属性的锚点来做到。类似：</p>

<pre>&lt;link rel="dns-prefetch" href="http://www.google-analytics.com/"&gt;
</pre>

<p>另外还有这个 x-dns-prefetch-control 也有必要适当用一下。对于某些站点引用了 Google 的某些服务脚本，可能这尤其有用。</p>

<p>另外一种加速 DNS 的途径是考虑使用 <a href="http://members.home.nl/p.a.rombouts/pdnsd/index.html#aboutpdnsd">pdnsd</a> 之类的缓存 DNS 代理服务器来加速某些 DNS 请求。</p>

<p>在 Chrome 中，可以通过在地址栏输入 about:histograms/DNS 来观测一些有趣的 DNS 性能数据。</p>

<p>--EOF--</p>]]>
        
    </content>
</entry>

<entry>
    <title>登陆框的密码遮盖问题以及其他</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/stop_password_masking.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1320" title="登陆框的密码遮盖问题以及其他" />
    <id>tag:74.207.252.114,2009://1.1320</id>
    
    <published>2009-07-10T00:35:34Z</published>
    <updated>2009-11-23T10:07:18Z</updated>
    
    <summary>几天前看到的这个关于密码遮盖（Password Masking) 问题的讨论，顺着链接有找到了一些讨论来看，继而发现相关文章已经有人翻译了(refer)，但中文技术社区好像很少见到讨论(也可能是我孤陋寡闻)。

这是个令人印象深刻的话题，因为挑战的是习惯性的设计方式。放眼看去，所有需要输入密码才可登录的网站都是遮盖密码的。密码遮盖带来的坏处是显而易见--用户的输入成了盲区，不知道自己输入的是否对，点击登录变成了变相的试错操作，产生比较多的再次登录操作，对给用户造成非常糟糕的使用感受。然而似乎很少有人如何去考虑改进这个现状。关注别人视而不见的问题才会带来革新与创新，要不怎么说人家 Jakob Nielsen 是用户体验方面的大牛呢，要从别人口中出来这个论断可能会被人笑话，而大牛就敢于挑战常规，弄个问题就给大家带来思考了--扯远了。

似乎多数人赞同添加一个额外的检查框（CheckBox），安全性要求不高的应用，默认不遮挡，用户输入完毕之后，再选择旁边的检查框对密码进行遮挡；对于安全性要求比较高的应用，默认密码遮挡，但可以选择显示一下密码明文一下，方便用户检查是否有拼写错误。

如果你用过苹果的产品，比如 iPhone 新 OS 3.0 的版本，你会发现密码的处理又进了一步，密码输入时是显示明文的，方便用户确认没有输错，在几秒钟后或者输入下一个字符的时候再对这个字符遮盖。(很多移动厂商好像现在都这么设计了)


(截图有点喧宾夺主，对付着看吧)

这个想法真的很让人欣赏，对于手持设备能够比较有效的防止了窥探(peeking over your shoulder)，也减少了用户输入错误的频率。只是不知道是不是已经被手机厂商申请了专利。对于大屏幕显示器来说，窥探的可能性有多大？缺乏数据支持，很难说明。或许，这里的安全专家的分析对质疑者也会有点帮助。

其实我觉得密码遮盖问题在用户初次注册的时候带来的问题尤其严重。在这个环节如果添加一个 CheckBox 要用户知道自己连续两次输入的密码是什么应该是有必要的(有人举手同意麽?) ，否则的话，用户要的密码可能不是自己输入的，短时间内连续两次输入，出现键入错误的几率并非不存在。 

好吧，现在开始审视一下自己的网站登录框设计以及注册页面吧...新的问题或许是，你有勇气做点修改麽?



如果觉得上面说的都是废话，那么不妨考虑这两个问题：


	为什么我们之前就没考虑到这一点?
	如何才能先于别人一步想到这一点?


--EOF--

延伸阅读：Better Password Inputs, iPhone Style</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>几天前看到的这个<a href="http://www.webmasterworld.com/accessibility_usability/3939513.htm">关于密码遮盖（Password Masking) 问题</a>的讨论，顺着链接有找到了一些讨论来看，继而发现相关文章已经有人翻译了(<a href="http://www.yeeyan.com/articles/view/%E5%8D%9A%E8%B4%A4/48166?orgin=top">refer</a>)，但中文技术社区好像很少见到讨论(也可能是我孤陋寡闻)。</p>

<p>这是个令人印象深刻的话题，因为挑战的是习惯性的设计方式。放眼看去，所有需要输入密码才可登录的网站都是遮盖密码的。密码遮盖带来的坏处是显而易见--用户的输入成了盲区，不知道自己输入的是否对，点击登录变成了变相的试错操作，产生比较多的再次登录操作，对给用户造成非常糟糕的使用感受。然而似乎很少有人如何去考虑改进这个现状。关注别人视而不见的问题才会带来革新与创新，要不怎么说人家 <a href="http://www.useit.com/jakob/">Jakob Nielsen</a> 是用户体验方面的大牛呢，要从别人口中出来这个论断可能会被人笑话，而大牛就敢于挑战常规，弄个问题就给大家带来思考了--扯远了。</p>

<p>似乎多数人赞同添加一个额外的检查框（CheckBox），安全性要求不高的应用，默认不遮挡，用户输入完毕之后，再选择旁边的检查框对密码进行遮挡；对于安全性要求比较高的应用，默认密码遮挡，但可以选择显示一下密码明文一下，方便用户检查是否有拼写错误。</p>

<p>如果你用过苹果的产品，比如 iPhone 新 OS 3.0 的版本，你会发现密码的处理又进了一步，密码输入时是显示明文的，方便用户确认没有输错，在几秒钟后或者输入下一个字符的时候再对这个字符遮盖。(很多移动厂商好像现在都这么设计了)</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="iPhone_Password_Masking.png" src="http://www.dbanotes.net/Images/iPhone_Password_Masking.png" width="480" height="320" class="mt-image-none" style="" /></span><br />
<p>(截图有点喧宾夺主，对付着看吧)</p></p>

<p>这个想法真的很让人欣赏，对于手持设备能够比较有效的防止了窥探(peeking over your shoulder)，也减少了用户输入错误的频率。只是不知道是不是已经被手机厂商申请了专利。对于大屏幕显示器来说，窥探的可能性有多大？缺乏数据支持，很难说明。或许，这里的<a href="https://blogs.sans.org/appsecstreetfighter/2009/06/28/response-to-nielsens-stop-password-masking/">安全专家的分析</a>对质疑者也会有点帮助。</p>

<p>其实我觉得<strong>密码遮盖问题在用户初次注册的时候带来的问题尤其严重</strong>。在这个环节如果添加一个 CheckBox 要用户知道自己连续两次输入的密码是什么应该是有必要的(有人举手同意麽?) ，否则的话，用户要的密码可能不是自己输入的，短时间内连续两次输入，出现键入错误的几率并非不存在。 </p>

<p>好吧，现在开始审视一下自己的网站登录框设计以及注册页面吧...新的问题或许是，你有勇气做点修改麽?</p>

<hr />

<p>如果觉得上面说的都是废话，那么不妨考虑这两个问题：</p>

<ul>
	<li>为什么我们之前就没考虑到这一点?</li>
	<li>如何才能先于别人一步想到这一点?</li>
</ul>

<p>--EOF--</p>

<p>延伸阅读：<a href="http://css-tricks.com/better-password-inputs-iphone-style/">Better Password Inputs, iPhone Style</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>关于团队 BLOG 这件事</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/team_blog.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1284" title="关于团队 BLOG 这件事" />
    <id>tag:74.207.252.114,2009://1.1284</id>
    
    <published>2009-06-02T10:12:11Z</published>
    <updated>2010-01-11T14:09:31Z</updated>
    
    <summary>现在网络上已经可以看到很多公司的团队对外的 BLOG ，关于这个话题，在这里记录一下我的一些个人看法。当然贵团队如果已经开博或者即将开博的话，毋须照搬，这不是什么指导。

明确团队开博目的

首先必须确定要传递哪些信息给读者? 宣传公司团队文化? 技术宣传? 产品宣传? 还是兼而有之? 如果只是为了跟风，那就没必要的。实际上，我相信大部分团队 BLOG 不过是跟风而已，不过跟风跟的好，也能起到不错的作用。如果能认真经营 BLOG ，它就能给你带来价值，超乎你想象的价值。

一般而言，建议对外开博前，可以在内部先试运行一下，给大家熟悉网络环境一个缓冲期。

不与业绩指标挂钩 

据说很多团队的 BLOG 居然和 KPI 挂钩的，这是非常不适合的做法。很明显这会导致一个现象：到了接近考核的时候，团队每个成员都流水帐一样连发多篇文章凑数，对读者来说，是一种信息轰炸，起不到什么正面作用，对团队多数成员来说，也觉得这样圆满完成任务也不错嘛，势必影响真正用心写文章的成员。当然我相信很多人看了我这个帖子后会改变 KPI 的设置方式，比如&quot;每月要发布几篇&quot;... 简言之，本末倒置。

控制文章发布频率

团队 BLOG 管理员(没错，应该有个管理员)应该控制文章正式发布的频率。细水长流，尤佳。记住，节奏最有力量。

控制频率的另外一点是要做好长期性准备，不要几天热乎劲儿过去之后就乏于更新。如果潜在读者偶尔访问过来，发现最近一篇更新是一年前，或许就会留下负面印象。

不要强制团队成员

必须要认清的一件事情是，一个团队中，肯定有些人员的确不善于文字表达，如果要他写一篇文章，可能比杀了他还更难受。如果强制性的压着他憋文章，恐怕只能适得其反。好的方式是发起者能够引导团队成员中的那些低调者，使他觉得这事情有意思，可以尝试一下，能够更多锻炼自己。比如针对技术人员来说，写文章过程中如果熟悉一下 HTML 基本语法，在日常工作中也不无裨益。

不要堆砌垃圾文章

这里面的一条铁律是：不要转贴那些网上随处可见的&quot;心得&quot;，&quot;感悟&quot;之类的心灵鸡汤文章，那些文章不能改变外界对你团队的正面看法(当然有可能增加负面看法)。适当的转载关于自己团队或者公司的第三方文章是可以接受的。

记住，垃圾信息和网站质量成反比的。信息不是越多越好。

内容格式非常重要

内容是团队向外展示的载体，固然重要，可如果文章不经过很好的格式化，就好比一块好田地长满了庄稼也同样长满野草一样让人讨厌。这是如此简单的一点，但我们还是能看到有许多团队对此熟视无睹。一篇连段落都不分的技术文章内容再好，也不会有更多技术人喜欢看。

不但 Web 页面要注重格式化，对 RSS 输出也同样也要注意，甚至应该更加以重视。至于输出全文，那是必须的。团队 BLOG 不要在乎什么 PV 之类的事情，那是非常土鳖的做法。内容是否有价值，不在于有多少人看了这篇文章，而是有多少目标读者从中得到收益。

--待续-</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>现在网络上已经可以看到很多公司的团队对外的 BLOG ，关于这个话题，在这里记录一下我的一些个人看法。当然贵团队如果已经开博或者即将开博的话，毋须照搬，这不是什么指导。</p>

<h4>明确团队开博目的</h4>

<p>首先必须确定要传递哪些信息给读者? 宣传公司团队文化? 技术宣传? 产品宣传? 还是兼而有之? 如果只是为了跟风，那就没必要的。实际上，我相信大部分团队 BLOG 不过是跟风而已，不过跟风跟的好，也能起到不错的作用。如果能认真经营 BLOG ，它就能给你带来价值，超乎你想象的价值。</p>

<p>一般而言，建议对外开博前，可以在内部先试运行一下，给大家熟悉网络环境一个缓冲期。</p>

<h4>不与业绩指标挂钩 </h4>

<p>据说很多团队的 BLOG 居然和 KPI 挂钩的，这是非常不适合的做法。很明显这会导致一个现象：到了接近考核的时候，团队每个成员都流水帐一样连发多篇文章凑数，对读者来说，是一种信息轰炸，起不到什么正面作用，对团队多数成员来说，也觉得这样圆满完成任务也不错嘛，势必影响真正用心写文章的成员。当然我相信很多人看了我这个帖子后会改变 KPI 的设置方式，比如"每月要发布几篇"... 简言之，本末倒置。</p>

<h4>控制文章发布频率</h4>

<p>团队 BLOG 管理员(没错，应该有个管理员)应该控制文章正式发布的频率。细水长流，尤佳。记住，节奏最有力量。</p>

<p>控制频率的另外一点是要做好长期性准备，不要几天热乎劲儿过去之后就乏于更新。如果潜在读者偶尔访问过来，发现最近一篇更新是一年前，或许就会留下负面印象。</p>

<h4>不要强制团队成员</h4>

<p>必须要认清的一件事情是，一个团队中，肯定有些人员的确不善于文字表达，如果要他写一篇文章，可能比杀了他还更难受。如果强制性的压着他憋文章，恐怕只能适得其反。好的方式是发起者能够引导团队成员中的那些低调者，使他觉得这事情有意思，可以尝试一下，能够更多锻炼自己。比如针对技术人员来说，写文章过程中如果熟悉一下 HTML 基本语法，在日常工作中也不无裨益。</p>

<h4>不要堆砌垃圾文章</h4>

<p>这里面的一条铁律是：不要转贴那些网上随处可见的"心得"，"感悟"之类的心灵鸡汤文章，那些文章不能改变外界对你团队的正面看法(当然有可能增加负面看法)。适当的转载关于自己团队或者公司的第三方文章是可以接受的。</p>

<p>记住，垃圾信息和网站质量成反比的。信息不是越多越好。</p>

<h4>内容格式非常重要</h4>

<p>内容是团队向外展示的载体，固然重要，可如果文章不经过很好的格式化，就好比一块好田地长满了庄稼也同样长满野草一样让人讨厌。这是如此简单的一点，但我们还是能看到有许多团队对此熟视无睹。一篇连段落都不分的技术文章内容再好，也不会有更多技术人喜欢看。</p>

<p>不但 Web 页面要注重格式化，对 RSS 输出也同样也要注意，甚至应该更加以重视。至于输出全文，那是必须的。团队 BLOG 不要在乎什么 PV 之类的事情，那是非常土鳖的做法。内容是否有价值，不在于有多少人看了这篇文章，而是有多少目标读者从中得到收益。</p>

<p>--待续-</p>]]>
        
    </content>
</entry>

<entry>
    <title>Nutch 正式发布 1.0 版本</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/nutch_version_1.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1280" title="Nutch 正式发布 1.0 版本" />
    <id>tag:74.207.252.114,2009://1.1280</id>
    
    <published>2009-03-29T06:08:01Z</published>
    <updated>2009-11-23T10:07:11Z</updated>
    
    <summary>看到消息说 Nutch 正式发布 1.0 版本。这个 Lucene 的衍生项目，现在已经孵化长大。

很早以前我无聊的时候记录过一点使用 Nutch 的笔记(一、二)，现在还有人搜过来 :)  时过境迁，已经没啥用啦。

Apache 基金会下面的几个搜索项目应该说是极大解放了生产力，让搜索引擎这个看似高深莫测的东西走入寻常百姓家。很多公司自己的搜索引擎都参考了 Lucene 和 Nutch 不少吧。

--EOF--

几年前我说：
不久的将来，有 Nutch 支持的个人搜索引擎或是主题搜索引擎会大行其道。到了那个时候，或许 Google 这种垄断式搜索巨头的影响力已经不再！
原来只是痴人说梦。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>看到消息说 <a href="http://lucene.apache.org/nutch/">Nutch</a> 正式发布 <a href="http://lucene.apache.org/nutch/#23+March+2009+-+Apache+Nutch+1.0+Released">1.0 版本</a>。这个 <a href="http://lucene.apache.org/">Lucene</a> 的衍生项目，现在已经孵化长大。</p>

<p>很早以前我无聊的时候记录过一点使用 Nutch 的笔记(<a href="http://www.dbanotes.net/web/nutch.html">一</a>、<a href="http://www.dbanotes.net/web/nutch_1.html">二</a>)，现在还有人搜过来 :)  时过境迁，已经没啥用啦。</p>

<p>Apache 基金会下面的几个搜索项目应该说是极大解放了生产力，让搜索引擎这个看似高深莫测的东西走入寻常百姓家。很多公司自己的搜索引擎都参考了 Lucene 和 Nutch 不少吧。</p>

<p>--EOF--</p>

<p>几年前我<a href="http://www.dbanotes.net/web/nutch_apache.html">说</a>：</p>
<blockquote>不久的将来，有 Nutch 支持的个人搜索引擎或是主题搜索引擎会大行其道。到了那个时候，或许 Google 这种垄断式搜索巨头的影响力已经不再！</blockquote>
<p>原来只是痴人说梦。</p>]]>
        
    </content>
</entry>

<entry>
    <title>有道阅读的技术信息</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/youdao_reader.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1273" title="有道阅读的技术信息" />
    <id>tag:74.207.252.114,2009://1.1273</id>
    
    <published>2009-03-06T10:44:35Z</published>
    <updated>2009-11-23T10:07:10Z</updated>
    
    <summary>最近北京奇遇花园咖啡馆举办了一场 &quot;Beta 技术沙龙&quot;, 关于&quot;有道阅读器产品设计&quot;的话题。

在杭州也没办法过去参加，倒是第一时间看到了 PPT。又问了以下，PPT 可以进行传播。所以截取了两张图(版权属于有道)学习一下。先是交互易用性问题。有道的数据库缓存策略是把当天的数据缓存起来，用 Memcached ，不知道改造过过还是默认方式使用。有道的 Ajax 交互的响应速度相对比较快。也是 用 JQuery  -- 几乎快成了居家旅行必备 JavaScript 库了。



用 YSlow 分析了一下有道前端的一些策略，发现大部分都做得不错，挺专业。Web 服务器是 Apache (不是 Nginx )，不过大部分图片设置为一周过期有些问题，太保守了，其实图片不过期也没啥问题，RSS 阅读器中的静态文件其实几乎不变化--除了用户的头像。应该说，判断一个网站是否合格，看看前端优化做得如何就可以了，如果做的不好，要么是太有钱，不担心带宽和计算资源的浪费，要么是根本不考虑用户的使用感受。



对于抓取的数据全部保存的问题，我不知道有道对 Feed 抓取过的内容更新问题如何处理。谁让咱没去现场呢，等下次有机会再了解一下吧。最后一点期望：有道什么时候能把订阅数让 FeedBurner 正确识别? 相信对大一点的网站 Google 多少能重视一点吧 ? 

--EOF--

今年以来，一些小型但有针对性的技术沙龙逐渐活跃起来了，嗯，杭州，在 5 月份之后也将开搞，敬请期待。

肯定有人问哪里有 PPT ?  访问 Club.blogbeta.com 

另参见：霍钜的 《关于有道阅读的beta技术沙龙》</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>最近北京<a href="http://storygarden.me/">奇遇花园咖啡馆</a>举办了一场 "<a href="http://club.blogbeta.com/">Beta 技术沙龙</a>", 关于"有道阅读器产品设计"的话题。</p>

<p>在杭州也没办法过去参加，倒是第一时间看到了 PPT。又问了以下，PPT 可以进行传播。所以截取了两张图(版权属于有道)学习一下。先是交互易用性问题。有道的数据库缓存策略是把当天的数据缓存起来，用 Memcached ，不知道改造过过还是默认方式使用。有道的 Ajax 交互的响应速度相对比较快。也是 用 JQuery  -- 几乎快成了居家旅行必备 JavaScript 库了。</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Youdao_Data_Interactive.png.png" src="http://www.dbanotes.net/Images/Youdao_Data_Interactive.png.png" width="455" height="311" class="mt-image-none" style="" /></span></p>

<p>用 YSlow 分析了一下有道前端的一些策略，发现大部分都做得不错，挺专业。Web 服务器是 Apache (不是 Nginx )，不过大部分图片设置为一周过期有些问题，太保守了，其实图片不过期也没啥问题，RSS 阅读器中的静态文件其实几乎不变化--除了用户的头像。应该说，判断一个网站是否合格，看看前端优化做得如何就可以了，如果做的不好，要么是太有钱，不担心带宽和计算资源的浪费，要么是根本不考虑用户的使用感受。</p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Youdao_Data_Security.png" src="http://www.dbanotes.net/Images/Youdao_Data_Security.png" width="455" height="311" class="mt-image-none" style="" /></span></p>

<p>对于抓取的数据全部保存的问题，我不知道有道对 Feed 抓取过的内容更新问题如何处理。谁让咱没去现场呢，等下次有机会再了解一下吧。最后一点期望：有道什么时候能把订阅数让 FeedBurner 正确识别? 相信对大一点的网站 Google 多少能重视一点吧 ? </p>

<p>--EOF--</p>

<p>今年以来，一些小型但有针对性的技术沙龙逐渐活跃起来了，嗯，杭州，在 5 月份之后也将开搞，敬请期待。</p>

<p>肯定有人问哪里有 PPT ?  访问 <a href="http://Club.blogbeta.com">Club.blogbeta.com</a> </p>

<p>另参见：霍钜的 <a href="http://blog.devep.net/virushuo/2009/03/09/betasalon_youdaoreader.html">《关于有道阅读的beta技术沙龙》</a></p>]]>
        
    </content>
</entry>

<entry>
    <title>Lighttpd 的 spawn-fcgi 成为独立项目</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/lighttpd_spawn-fcgi.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1266" title="Lighttpd 的 spawn-fcgi 成为独立项目" />
    <id>tag:74.207.252.114,2009://1.1266</id>
    
    <published>2009-02-19T04:01:24Z</published>
    <updated>2009-11-23T10:07:09Z</updated>
    
    <summary>收到邮件说 Spawn-fcgi 成为独立项目，并且预发布了 1.6 版本。

原来很多人都用 Lighttpd 的 Spawn-fcgi 进行 FastCGI 模式下的管理工作，不过有不少缺点。而 PHP-fpm 的出现多少缓解了一些问题，但 PHP-fpm 有个缺点就是要重新编译，这对于一些已经运行的环境可能有不小的风险(refer)。

原来  spawn-fcgi  版本也比较乱的，期待独立后的项目能更稳定一些。这会给很多 Web 站点带来便利。

--EOF--</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>收到邮件说 <a href="http://blog.lighttpd.net/articles/2009/02/18/prerelease-of-spawn-fcgi-1-6-0-rc1-r16">Spawn-fcgi 成为独立项目</a>，并且预发布了 1.6 版本。</p>

<p>原来很多人都用 Lighttpd 的 Spawn-fcgi 进行 FastCGI 模式下的管理工作，不过有不少<a href="http://none.at/phpfm/docs/current_php_fastcgi_problems_en.html">缺点</a>。而 <a href="http://php-fpm.anight.org/">PHP-fpm</a> 的出现多少缓解了一些问题，但 PHP-fpm 有个缺点就是要重新编译，这对于一些已经运行的环境可能有不小的风险(<a href="http://www.dbanotes.net/web/php_fastcgi_phpfpm.html">refer</a>)。</p>

<p>原来  <a href="http://redmine.lighttpd.net/projects/spawn-fcgi">spawn-fcgi</a>  版本也比较乱的，期待独立后的项目能更稳定一些。这会给很多 Web 站点带来便利。</p>

<p>--EOF--</p>]]>
        
    </content>
</entry>

<entry>
    <title>Web Analytics 方法</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_analysis_method_compare.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1263" title="Web Analytics 方法" />
    <id>tag:74.207.252.114,2009://1.1263</id>
    
    <published>2009-02-12T11:01:02Z</published>
    <updated>2009-11-23T10:07:09Z</updated>
    
    <summary>在 Web Analytics 的几种方法中，分析 Web 服务器日志(Logfile Analysis) 与页面标记方法(Page Tagging/JavaScript Tagging, 也有称之为&quot;打点&quot;)相对更常见一些。今天发现一个关于二者的对比表格，感觉还是挺有帮助的，粗翻了一下，留作参考。 


(点击可看大图)

Page Tagging 的方式对业务控制(比如特定业务预警)更为灵活一些。其他的方法比如 Web Beacons(Web Bug) 的方法在 Web 1.0 的时候还是挺普遍的，对付当前的各种新型  Web 应用已经无能为力。

在设计 Web 应用的初期架构师就应该考虑 Web 分析的方法接口，就像在程序中预置性能调试接口那样，早点考虑，会少许多麻烦。

关于 Web Analytics，仍然存在许多误解与误用。冷暖自知吧。

--EOF--</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>在 <a href="http://www.dbanotes.net/web/web_analytics_an_hour_a_day.html">Web Analytics</a> 的几种方法中，分析 Web 服务器日志(Logfile Analysis) 与页面标记方法(Page Tagging/JavaScript Tagging, 也有称之为"打点")相对更常见一些。今天发现一个关于二者的<a href="http://www.advanced-web-metrics.com/blog/wp-content/uploads/2007/10/hyrids.gif">对比表格</a>，感觉还是挺有帮助的，粗翻了一下，留作参考。 </p>

<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><a href="http://www.dbanotes.net/Images/Web%20Analysis%20Compare.png"><img alt="Web Analysis Compare.png" src="http://www.dbanotes.net/assets_c/2009/02/Web Analysis Compare-thumb-500x292-177.png" width="500" height="292" class="mt-image-none" style="" /></a></span><br />
(点击可看大图)</p>

<p>Page Tagging 的方式对<strong>业务控制</strong>(比如特定业务预警)更为灵活一些。其他的方法比如 Web Beacons(Web Bug) 的方法在 Web 1.0 的时候还是挺普遍的，对付当前的各种新型  Web 应用已经无能为力。</p>

<p>在设计 Web 应用的初期架构师就应该考虑 Web 分析的方法接口，就像在程序中预置性能调试接口那样，早点考虑，会少许多麻烦。</p>

<p>关于 Web Analytics，仍然存在许多误解与误用。冷暖自知吧。</p>

<p>--EOF--</p>]]>
        
    </content>
</entry>

<entry>
    <title>关于移动 Web 设计的闲言碎语</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/mobile_web_design.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1252" title="关于移动 Web 设计的闲言碎语" />
    <id>tag:74.207.252.114,2009://1.1252</id>
    
    <published>2009-01-15T07:06:28Z</published>
    <updated>2009-11-23T10:07:08Z</updated>
    
    <summary>前几天 3G 牌照下来，一时间 Buzz 信息很多，不过关于 3G 对 Web 技术影响的分析倒是并不多见。今天再次读了一遍这篇 2009 移动 Web设计趋势 (Mobile Web Design Trends For 2009)，加上这几天在分析使用 iPhone 上的某些 App 设计，还是记录一点笔记吧。

这篇文章提到了如下五点：

简单的可选项(Simple options) 如无必要，勿增实体。基本的、核心功能就行了。
留白(White space)  我觉得 UCWeb 针对 iPhone 的设计就很一般，完全是把 iPhone 当成小屏幕显示器设计的。堆砌的网址站看起来不方便，点击起来并不方便，倒是应该弄个 LOGO 或许更好。
少用图片(Lack of images) 这倒是和上一条矛盾。能少用就少用，而不是不用。而用了图片，如果方式不合适，还不如不用。
用子域名而不是用 .mobi 域名(Sub-domains instead of .mobi or separate domains) 精简域名长度，精简！用 &quot;i.&quot; 就很好，别用 &quot;mobile. &quot;。
内容优先(Prioritized content) 只有设计是没有用的。

我的额外建议：

可点击的目标锚点一定要大。因为你的手指肚更大 :) 如果一个手指尖范围内还有其它可点击目标，很容易误点。最简单的方式就是看看 iPhone  自己桌面菜单设计。而我之所以说 Taobao 商城 iPhone 版设计的不错，也是因为这一点考虑得很地道。Gmail for iPhone 的设计上，用户浏览邮件内容的时候，那个 &quot;Inbox&quot; 的按钮就设计的非常不好。很容易误点击到 &quot;Archive&quot; 按钮上。
分页设计   对于分页的链接，一定要隔开一些，如果&quot;上一页&quot;、&quot;下一页&quot;挨在一起，用户会很困扰。毕竟，手持设备没有鼠标，用户不可能具备&quot;精确点击&quot;的能力。
登录框设计  在 iPhone 上登录某些站点是非常痛苦的一件事情。可考虑的事情：如果用户 ID 是邮件地址的话，是否考虑无需用户输入&quot;@&quot; 字符? [iPhone 2.2 固件已经改进了许多]

另外，2009 移动 Web设计趋势 (Mobile Web Design Trends For 2009) 还提到了设计中的常见挑战以及需要慎重考虑的地方，这篇文章信息量还是挺大的。

--EOF--

唠叨完了，发现基本上是针对 iPhone 说事儿的，我还不是标准的移动互联网用户。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>前几天 3G 牌照下来，一时间 Buzz 信息很多，不过关于 3G 对 Web 技术影响的分析倒是并不多见。今天再次读了一遍这篇 <a href="http://www.smashingmagazine.com/2009/01/13/mobile-web-design-trends-2009/">2009 移动 Web设计趋势 (Mobile Web Design Trends For 2009)</a>，加上这几天在分析使用 iPhone 上的某些 App 设计，还是记录一点笔记吧。</p>

<p>这篇文章提到了如下五点：</p>

<ul><li><strong>简单的可选项(Simple options)</strong> 如无必要，勿增实体。基本的、核心功能就行了。</li>
<li><strong>留白(White space) </strong> 我觉得 UCWeb 针对 iPhone 的设计就很一般，完全是把 iPhone 当成小屏幕显示器设计的。堆砌的网址站看起来不方便，点击起来并不方便，倒是应该弄个 LOGO 或许更好。</li>
<li><strong>少用图片(Lack of images)</strong> 这倒是和上一条矛盾。能少用就少用，而不是不用。而用了图片，如果方式不合适，还不如不用。</li>
<li><strong>用子域名而不是用 .mobi 域名(Sub-domains instead of .mobi or separate domains)</strong> 精简域名长度，精简！用 "i." 就很好，别用 "mobile. "。</li>
<li><strong>内容优先(Prioritized content)</strong></li> 只有设计是没有用的。</ul>

<p>我的额外建议：</p>

<ul><li><strong>可点击的目标锚点一定要大</strong>。因为你的手指肚更大 :) 如果一个手指尖范围内还有其它可点击目标，很容易误点。最简单的方式就是看看 iPhone  自己桌面菜单设计。而我之所以说 Taobao 商城 iPhone 版设计的不错，也是因为这一点考虑得很地道。Gmail for iPhone 的设计上，用户浏览邮件内容的时候，那个 "Inbox" 的按钮就设计的非常不好。很容易误点击到 "Archive" 按钮上。</li>
<li><strong>分页设计</strong>   对于分页的链接，一定要隔开一些，如果"上一页"、"下一页"挨在一起，用户会很困扰。毕竟，手持设备没有鼠标，用户不可能具备"精确点击"的能力。</li>
<li><strong>登录框设计</strong>  在 iPhone 上登录某些站点是非常痛苦的一件事情。可考虑的事情：如果用户 ID 是邮件地址的话，是否考虑无需用户输入"@" 字符? [iPhone 2.2 固件已经改进了许多]</li></ul>

<p>另外，<a href="http://www.smashingmagazine.com/2009/01/13/mobile-web-design-trends-2009/">2009 移动 Web设计趋势 (Mobile Web Design Trends For 2009)</a> 还提到了设计中的常见挑战以及需要慎重考虑的地方，这篇文章信息量还是挺大的。</p>

<p>--EOF--</p>

<p>唠叨完了，发现基本上是针对 iPhone 说事儿的，我还不是标准的移动互联网用户。</p>]]>
        
    </content>
</entry>

<entry>
    <title>Cookie, iframe 与 P3P 的那点事儿</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/cookie_p3p.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1251" title="Cookie, iframe 与 P3P 的那点事儿" />
    <id>tag:74.207.252.114,2009://1.1251</id>
    
    <published>2009-01-13T04:57:13Z</published>
    <updated>2009-11-23T10:07:08Z</updated>
    
    <summary>且说我使用有些网络服务的时候常常能遇到比较怪异的问题。昨天在某个页面遇到个 Redirect Loop 错误提示：

Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

同样的问题，同样的页面，同样是 Firefox 浏览器，以前就遇到过，提交给相关负责人之后没了响应，后来也忘掉了。同事说是我浏览器版本的问题，后来发现这和&quot;是否接受第三方 Cookie&quot; 的设置有关：

[x] Accept cookies from sites
    [ ] Accept third-party cookies

我的浏览器不接受第三方 Cookie。设置接收后该页面显示正常。

搜索了一下，发现之所以该页面是这样，还是因为页面用了 iframe 而导致的问题，比较通用的办法是设置 p3p http header 。

这个 P3P(Platform for Privacy Preferences Project)，要搞明白，可真是有点小孩没娘，说来话长。简单的说，就是个协议，通过其声明它是好人，允许我收集浏览器用户行为吧... 可现实中，大家都可以说自己是好人，背地里没准儿干啥坏事呢。这就是其分歧所在。[参考] 国内多数网站，都不关注这个 P3P。隐私问题可能没国外(微软的隐私声明)重视吧。

再说 Firefox ，过去的几个大版本中，对 Cookie 的处理方式还是有很大变化的。

这个问题影响最大的还是 Facebook 等开放平台的应用，使用了 iframe 就会遇到(eg: FriendFeed 遇到过，估计还比较头疼)。

对于浏览器来说，第三方 Cookie ，默认情况下，浏览器接受与否，是个大问题。如果不接受，会给很多用户带来混淆，如果接受，则在隐私问题上，有很大的挑战。

实际上，Firefox 的开发者在这个地方的处理方式也在摇摆当中(参见), 不过能确定的是 &quot;the ability to make decisions based on p3p policies was removed for firefox 3&quot;。

各家浏览器在这个地方都可能有 Bug。比如 IE7 曾经有的 Cookie 问题，IE8 Beta 也有类似问题。

或许，最好的办法就是别去种这个 Cookie 了...  网站开发者，你们愿意么? 

--EOF--

更多阅读：Windows Internet Explorer (Pre-Release Version 8) Privacy Statement微软 Cookie 说明

另请参见文本后面 axis 同学的留言。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>且说我使用有些网络服务的时候常常能遇到比较怪异的问题。昨天在某个页面遇到个 <strong>Redirect Loop</strong> 错误提示：</p>

<pre>Firefox has detected that the server is redirecting the request for this address in a way that will never complete.</pre>

<p>同样的问题，同样的页面，同样是 Firefox 浏览器，以前就遇到过，提交给相关负责人之后没了响应，后来也忘掉了。同事说是我浏览器版本的问题，后来发现这和"是否接受第三方 Cookie" 的设置有关：</p>

<pre>[x] Accept cookies from sites
    [ ] Accept third-party cookies</pre>

<p>我的浏览器不接受第三方 Cookie。设置接收后该页面显示正常。</p>

<p>搜索了一下，发现之所以该页面是这样，还是因为页面用了 iframe 而导致的问题，比较通用的办法是<a href="http://viralpatel.net/blogs/2008/12/how-to-set-third-party-cookies-with-iframe.html">设置 p3p http header</a> 。</p>

<p>这个 <a href="http://en.wikipedia.org/wiki/P3P">P3P</a>(Platform for Privacy Preferences Project)，要搞明白，可真是有点小孩没娘，说来话长。简单的说，就是个协议，通过其声明它是好人，允许我收集浏览器用户行为吧... 可现实中，大家都可以说自己是好人，背地里没准儿干啥坏事呢。这就是其分歧所在。[<a href="http://www.oreillynet.com/lpt/a/1554">参考</a>] 国内多数网站，都不关注这个 P3P。隐私问题可能没国外(<a href="http://www.flickr.com/photos/fenng/3193001715/">微软的隐私声明</a>)重视吧。</p>

<p>再说 Firefox ，过去的几个大版本中，对 Cookie 的处理方式还是有很大<a href="http://kb.mozillazine.org/Network.cookie.cookieBehavior">变化</a>的。</p>

<p>这个问题影响最大的还是 Facebook 等开放平台的应用，使用了 iframe 就会遇到(eg: <a href="http://friendfeed.com/e/1e78f47b-92a3-48da-8244-1f2b218b246c/If-you-uncheck-Accept-third-party-cookies-Firefox/">FriendFeed 遇到</a>过，估计还比较头疼)。</p>

<p>对于浏览器来说，第三方 Cookie ，<strong>默认情况</strong>下，浏览器接受与否，是个大问题。如果不接受，会给很多用户带来混淆，如果接受，则在隐私问题上，有很大的挑战。</p>

<p>实际上，Firefox 的开发者在这个地方的处理方式也在摇摆当中(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=417800#c11">参见</a>), 不过能确定的是 "the ability to make decisions based on p3p policies was removed for firefox 3"。</p>

<p>各家浏览器在这个地方都可能有 Bug。比如 <a href="http://aspnetresources.com/blog/frames_webforms_and_rejected_cookies.aspx">IE7 曾经有的 Cookie 问题</a>，IE8 Beta 也有<a href="http://connect.microsoft.com/IE/feedback/ViewFeedback.aspx?FeedbackID=369240">类似问题</a>。</p>

<p>或许，最好的办法就是别去种这个 Cookie 了...  网站开发者，你们愿意么? </p>

<p>--EOF--</p>

<p>更多阅读：<a href="http://www.microsoft.com/windows/ie/ie8/privacy/ieprivacy_8.mspx">Windows Internet Explorer (Pre-Release Version 8) Privacy Statement</a><br /><a href="http://support.microsoft.com/kb/260971/zh-tw">微软 Cookie 说明</a></p>

<p>另请参见文本后面 <a href="http://www.dbanotes.net/web/cookie_p3p.html#comment-72283">axis</a> 同学的留言。</p>]]>
        
    </content>
</entry>

<entry>
    <title>精通 Web Analytics</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_analytics_an_hour_a_day.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1247" title="精通 Web Analytics" />
    <id>tag:74.207.252.114,2009://1.1247</id>
    
    <published>2009-01-06T04:34:59Z</published>
    <updated>2009-11-23T10:07:07Z</updated>
    
    <summary>没看这本书之前我以为我懂 Web 分析，看了之后才发现之前其实并不明白。
算起来，用 AWstats 做了几年的小实验，尽管一些基本的东西是有所了解，但如果要详细说明背后的含义，还是并不清晰。这可能不是我一个人的感受吧? 我遇到过一些做 Web 分析的同仁，整天看网站数据报表，也看不出什么东西来。尽管我们常看到 Web 分析工具的更新，但国内互联网的 Web 分析思路似乎并没有&quot;与时俱进&quot;。 不管承认与否，毕竟是现实一种。


普及这本书，我想能有效避免 Web 分析中的一些误区，以 PageView 为核心的 Web 分析时代应该已经过去。结合自己的实际业务，通过数据去了解客户，真正做点能起到&quot;正反馈&quot;的事儿，而不是到了节假日弄一些无聊活动疯狂弹出一些用户烦透的垃圾页面。这对你们公司也是莫大的损失。

负责网站数据分析的主管啊经理啊总监啊都把这本书偷着买回去仔细读两遍，然后整点靠谱的针对 Web 的 KPI 出来，也让下面的员工心里服气你还算个合格的管理者。把这本书当作了解 Web 的另一面镜子(如果是从传统行业过来的话)，通过另一个角度(数据)观察 Web。

此书翻译质量一般...但我想不影响阅读。

Web Analytics，An Hour a Day ，不需那么多，只要一点点。

--EOF--

作者 Avinash Kaushik ，感兴趣的话还可以观看他的相关采访视频。更多信息访问豆瓣上的 精通Web Analytics页面，如果买书直接点击豆瓣上的链接去买吧，也算支持豆瓣了 :)

又及：这本书也被我列入豆列 Web 2.0 网站架构不可或缺的图书。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p><span class="mt-enclosure mt-enclosure-image" style="display: inline;"><img alt="Web Analytics  An Hour a Day" src="http://www.dbanotes.net/Images/WebAnalytics.jpg" width="168" height="240" class="mt-image-right" style="float: right; margin: 0 0 20px 20px;" /></span>没看这本书之前我以为我懂 Web 分析，看了之后才发现之前其实并不明白。</p>
<p>算起来，用 <a href="http://awstats.sourceforge.net/">AWstats</a> 做了几年的小实验，尽管一些基本的东西是有所了解，但如果要详细说明背后的含义，还是并不清晰。这可能不是我一个人的感受吧? 我遇到过一些做 Web 分析的同仁，整天看网站数据报表，也看不出什么东西来。尽管我们常看到 Web 分析工具的更新，但国内互联网的 Web 分析思路似乎并没有"与时俱进"。 不管承认与否，毕竟是现实一种。
</p>

<p>普及这本书，我想能有效避免 Web 分析中的一些误区，以 <a href="http://en.wikipedia.org/wiki/Page_view">PageView </a>为核心的 Web 分析时代应该已经过去。结合自己的实际业务，通过数据去了解客户，真正做点能起到"正反馈"的事儿，而不是到了节假日弄一些无聊活动疯狂弹出一些用户烦透的垃圾页面。这对你们公司也是莫大的损失。</p>

<p>负责网站数据分析的主管啊经理啊总监啊都把这本书偷着买回去仔细读两遍，然后整点靠谱的针对 Web 的 KPI 出来，也让下面的员工心里服气你还算个合格的管理者。把这本书当作了解 Web 的另一面镜子(如果是从传统行业过来的话)，通过另一个角度(数据)观察 Web。</p>

<p>此书翻译质量一般...但我想不影响阅读。</p>

<p>Web Analytics，An Hour a Day ，不需那么多，只要一点点。</p>

<p>--EOF--</p>

<p>作者 <a href="http://www.kaushik.net/avinash/">Avinash Kaushik</a> ，感兴趣的话还可以观看他的相关<a href="http://www.youtube.com/watch?v=Qmxh9bD367A">采访视频</a>。更多信息访问豆瓣上的 <a href="http://www.douban.com/subject/3260737/">精通Web Analytics</a>页面，如果买书直接点击豆瓣上的链接去买吧，也算支持豆瓣了 :)</p>

<p>又及：这本书也被我列入豆列 <a href="http://www.douban.com/doulist/176732/">Web 2.0 网站架构不可或缺的图书</a>。</p>]]>
        
    </content>
</entry>

<entry>
    <title>网站运维之道 之自动化管理</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_operations_automatic.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1231" title="网站运维之道 之自动化管理" />
    <id>tag:74.207.252.114,2008://1.1231</id>
    
    <published>2008-12-10T04:31:52Z</published>
    <updated>2009-11-23T10:07:04Z</updated>
    
    <summary>还是继续这个网站运维的话题吧。前面谈了知识管理与积累，这次谈一下运维过程中的自动化管理。

在进行这篇的扯淡之前，让我想起了《太平广记》里的一个《 板桥三娘子》的故事，姓赵的客商窥探到客栈老板娘三娘子在小箱子中取出小孩玩具大小的木头牛，木头人，喷口水，木头人、牛开始犁地耕作，撒一粒荞麦种子，木头小人种下，不一会儿，荞麦长成开花结实，木头人收割，乃至磨成面粉。然后三娘子把木头牛、人收入箱中，用得来的面粉做了数张面饼。多么好的一个自动化场景呀。

自动化的目的
自动化管理是网站规模化之后必须要面对的问题。为什么要自动化?肯定不是为了炫技，针对一个发展中的网站来说，自动化的主要目的还是为了节省维护成本，提升运维成熟度能力。另外一个经常被忽略的收益是能让运维工作更有趣味性一些，不那么无聊，不无聊的有益副作用是减少人为出错的可能。

自动化针对的范围大致可以分为安装自动化、部署自动化、软件发布自动化、升级自动化、监控自动化等几个方面。优化自动化? 别，这个稍微&quot;高级&quot;并且不靠谱了一点。

自动化要解决的问题是 N 次循环的过程，如果 N 不具备延续性，那么自动化未必有必要。比如某个过程可能只是短时间内需要临时进行几次，是否有必要将其自动化就有待于商榷。如果计划和开发自动化过程的成本高于非自动化成本就没必要了。

开发自动化过程
如果看过古龙的小说，他曾经描述过几个有趣的懒人，懒人造了一些木头人和机关来帮自己干一些不愿意做的事情。自动化多少就是&quot;懒人&quot;要做的事情，因为懒嘛，所以才会想办法节省时间和其他成本。一般来说，这个过程的开发者也是使用者，所以没必要一定要按照所谓的项目过程去走，但是开发者必须能够产出一份文档给同团队的伙伴(如果有的话)。

考虑到多数的网站运维可能都是在 Unix like 环境中的，而 Unix 的哲学思想之一就是&quot;Write programs that do one thing and do it well&quot;，每个过程只做一件事情就很关键，&quot;功能单一的自动化模块&quot;是有必要的，把不同的模块拼装起来再去完成更复杂的需求。

Unix 相比 Windows 来说，天生具备可自动化能力。如 Shell/BASH(自动化日常操作)、CronTab(自动化任务调度) 、Expect (自动化交互场景) 、rsync(数据远程同步)等 啊都是一些需要注意的技术内容。

优化自动化过程

自动化过程一般要有个生命周期，定期升级、优化也是有必要的。面对不同的应用场景应该逐渐改进自动化的可用性。

示例：自动部署 Linux

对于批量的 Linux 安装，RedHat  提供有 Kickstart Installations 自动安装解决方案，不过该方案相对比较繁琐，前不久推出的 Cobbler 是让人眼前一亮的好工具(参见 hutuworm 的介绍文章)。我一直怀疑 Cobbler 是中国人命名的项目，因为 PXE 发音为&quot;pixie&quot;(皮鞋)，而 Cobbler 的中文意思是&quot;补鞋匠&quot;。

OS 安装完毕之后的软件安装、更新是个麻烦事。在一个 Linux 的环境中，SA 一定不要为软件相互依赖性浪费太多的时间。什么 YUM、APT、YAST 啊，能用就用上。别太迷信自己编译软件所能带来的优化收益，实际上犯错的几率更大。达到某个规模后，本地建立、维护一个软件资料库(repositories)也是有必要的。

Linux 软件安装进化之路：

手工预编译--&gt;RPM--&gt;APT 等工具

已经进化到更好的阶段了，没必要还走着老路在原地折腾。

其他参考：Flickr 运维曾经采用 System Image 来自动化 Linux 相关的的运维工作。或许也可以尝试一下。

在系统配置管理(别混淆到另一个配置管理上去)方面，其实 cfengine 就挺好用的。更多类似工具参考这个比较列表。

标准化，减少后续维护成本是节省人力资源的一大法门。

自动化的一些风险

必须要承认的是，自动化有的时候是容易带来一些风险的，比如&quot;冲掉&quot;原有配置文件信息，不恰当的自动化脚本给系统带来额外负载等，在运维过程中需要不断总结经验。(又落入俗套)

这方面值得推荐的一本书是《UNIX和Linux自动化管理》，借鉴一下其中的思路和方法。

对了，补充一下前面的《板桥三娘子》的故事发展，三娘子的面饼如果被客人吃下，则会变成驴......  同样，自动化有的时候会把人陷进去的，运维人不要变成自动化的奴隶。

这个话题还需要继续下去么? 我再想想 ... </summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>还是继续这个<strong>网站运维</strong>的话题吧。前面谈了<a href="http://www.dbanotes.net/web/web_operations_knowledge_management.html">知识管理与积累</a>，这次谈一下运维过程中的自动化管理。</p>

<p>在进行这篇的扯淡之前，让我想起了《太平广记》里的一个《 板桥三娘子》的故事，姓赵的客商窥探到客栈老板娘三娘子在小箱子中取出小孩玩具大小的木头牛，木头人，喷口水，木头人、牛开始犁地耕作，撒一粒荞麦种子，木头小人种下，不一会儿，荞麦长成开花结实，木头人收割，乃至磨成面粉。然后三娘子把木头牛、人收入箱中，用得来的面粉做了数张面饼。多么好的一个自动化场景呀。</p>

<h4>自动化的目的</h4>
<p>自动化管理是网站规模化之后必须要面对的问题。为什么要自动化?肯定不是为了炫技，针对一个发展中的网站来说，自动化的主要目的还是为了节省维护成本，提升运维成熟度能力。另外一个经常被忽略的收益是能让运维工作更有趣味性一些，不那么无聊，不无聊的有益副作用是减少人为出错的可能。</p>

<p>自动化针对的范围大致可以分为安装自动化、部署自动化、软件发布自动化、升级自动化、监控自动化等几个方面。优化自动化? 别，这个稍微"高级"并且不靠谱了一点。</p>

<p>自动化要解决的问题是 N 次循环的过程，如果 N 不具备延续性，那么自动化未必有必要。比如某个过程可能只是短时间内需要临时进行几次，是否有必要将其自动化就有待于商榷。如果计划和开发自动化过程的成本高于非自动化成本就没必要了。</p>

<h4>开发自动化过程</h4>
<p>如果看过古龙的小说，他曾经描述过几个有趣的懒人，懒人造了一些木头人和机关来帮自己干一些不愿意做的事情。自动化多少就是"懒人"要做的事情，因为懒嘛，所以才会想办法节省时间和其他成本。一般来说，这个过程的开发者也是使用者，所以没必要一定要按照所谓的项目过程去走，但是开发者必须能够产出一份文档给同团队的伙伴(如果有的话)。</p>

<p>考虑到多数的网站运维可能都是在 Unix like 环境中的，而 Unix 的哲学思想之一就是"Write programs that do one thing and do it well"，每个过程只做一件事情就很关键，"功能单一的自动化模块"是有必要的，把不同的模块拼装起来再去完成更复杂的需求。</p>

<p>Unix 相比 Windows 来说，天生具备可自动化能力。如 Shell/BASH(自动化日常操作)、CronTab(自动化任务调度) 、<a href="http://en.wikipedia.org/wiki/Expect">Expect </a>(自动化交互场景) 、<a href="http://samba.anu.edu.au/rsync/">rsync</a>(数据远程同步)等 啊都是一些需要注意的技术内容。</p>

<h4>优化自动化过程</h4>

<p>自动化过程一般要有个生命周期，定期升级、优化也是有必要的。面对不同的应用场景应该逐渐改进自动化的可用性。</p>

<h4>示例：自动部署 Linux</h4>

<p>对于批量的 Linux 安装，RedHat  提供有 <a href="http://www.redhat.com/docs/manuals/enterprise/RHEL-5-manual/Installation_Guide-en-US/ch-kickstart2.html">Kickstart Installations</a> 自动安装解决方案，不过该方案相对比较繁琐，前不久推出的 <a href="https://fedorahosted.org/cobbler/">Cobbler</a> 是让人眼前一亮的好工具(参见 <a href="http://hutuworm.blogspot.com/2008/08/cobblerlinux.html">hutuworm 的介绍文章</a>)。我一直怀疑 Cobbler 是中国人命名的项目，因为 PXE 发音为"pixie"(皮鞋)，而 Cobbler 的中文意思是"补鞋匠"。</p>

<p>OS 安装完毕之后的软件安装、更新是个麻烦事。<strong>在一个 Linux 的环境中，SA 一定不要为软件相互依赖性浪费太多的时间</strong>。什么 <a href="http://yum.baseurl.org/">YUM</a>、<a href="http://en.wikipedia.org/wiki/Advanced_Packaging_Tool">APT</a>、<a href="http://en.opensuse.org/YaST">YAST</a> 啊，能用就用上。<strong>别太迷信自己编译软件所能带来的优化收益</strong>，实际上犯错的几率更大。达到某个规模后，本地建立、维护一个软件资料库(repositories)也是有必要的。</p>

<p>Linux 软件安装进化之路：</p>

<pre>手工预编译-->RPM-->APT 等工具</pre>

<p>已经进化到更好的阶段了，没必要还走着老路在原地折腾。</p>

<p>其他参考：Flickr 运维曾经采用 <a href="http://wiki.systemimager.org/index.php/Main_Page">System Image</a> 来自动化 Linux 相关的的运维工作。或许也可以尝试一下。</p>

<p>在系统配置管理(别混淆到另一个配置管理上去)方面，其实 <a href="http://www.cfengine.org/">cfengine</a> 就挺好用的。更多类似工具参考这个<a href="http://en.wikipedia.org/wiki/Comparison_of_open_source_configuration_management_software">比较列表</a>。</p>

<p>标准化，减少后续维护成本是节省人力资源的一大法门。</p>

<h4>自动化的一些风险</h4>

<p>必须要承认的是，自动化有的时候是容易带来一些风险的，比如"冲掉"原有配置文件信息，不恰当的自动化脚本给系统带来额外负载等，在运维过程中需要不断总结经验。(又落入俗套)</p>

<p>这方面值得推荐的一本书是<a href="http://www.douban.com/subject/1238125/">《UNIX和Linux自动化管理》</a>，借鉴一下其中的思路和方法。</p>

<p>对了，补充一下前面的《板桥三娘子》的故事发展，三娘子的面饼如果被客人吃下，则会变成驴......  同样，自动化有的时候会把人陷进去的，运维人不要变成自动化的奴隶。</p>

<p>这个话题还需要继续下去么? 我再想想 ... </p>]]>
        
    </content>
</entry>

<entry>
    <title>网站运维之道 之知识管理与积累</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_operations_knowledge_management.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1224" title="网站运维之道 之知识管理与积累" />
    <id>tag:74.207.252.114,2008://1.1224</id>
    
    <published>2008-12-02T11:24:56Z</published>
    <updated>2009-11-23T10:07:03Z</updated>
    
    <summary>接上一篇《流程规范》，继续谈谈知识管理与知识积累的相关内容。

所谓&quot;知识管理与知识积累&quot;，其实有点绕，我们不如就说说&quot;运维技术文档&quot;的事儿吧，这样可能还直白一点。因为每次说起类似的话题，总有兄弟用不屑的语气说，不就是写写文档的事儿么?  

运维友好的文档
不同的团队对文档要求可能都有不同的&quot;风格&quot;--更多的时候是运维主管要看着舒服。就运维来说，必须能够创建&quot;运维人员友好&quot;的文档。

一般来说，运维文档应该具备如下特点：

易读性 便于阅读，便于技术人员阅读。尤其是内容不应引起歧义、转码等。可搜索性 针对具体内容便于查找，便于发现。版本化控制 这里不是普通的 V1.0，V2.0 之类的简单标识版本，而是要能够获取所有的内容改变过程，便于回溯。通行格式 能够适应不同的操作系统平台。信息完备性 具备足够丰富的交叉引用，反复保存的时候不会丢失信息等。

可能还有其他特性没在这里一一列出。有的网友看了上面的描述，这不就是 Wiki 嘛! Bingo! 基于 HTML 的 Wiki 页面，绝对是对运维友好的，尤其是网站运维团队。 我见过很多团队用 Word 写文档，这是非常糟糕的事情。在版本化控制、可搜索性方面具备天生缺陷。或许书写运维报告用 Word 是好的选择，但是运维技术文档的积累绝对不能用 Word。

运维友好的 Wiki

你们的运维团队在用 Wiki 么? 

一般来说，具备一顶的语言背景可能更喜欢用该语言开发的工具(嗯，我说的是&quot;一般&quot;)，有一定 Java 背景的程序员可能会喜欢用 Confluence 之类的 Wiki 工具。而对运维人员来说呢，什么是他们的语言背景? Shell ? No !  Perl/Python/PHP ，一般运维人员可能都熟悉三者之中的东西。

我个人多少喜欢一点 TWiki ，尽管我对 Perl 不那么熟悉。而很多中小 Web 网站，可能是 PHP 为开发语言，搂柴火打兔子，捎带脚让程序员帮着定制一些功能就成了。这是不是有点扯远了? 什么是运维友好的 Wiki 呢? 我的意见是要能促进运维人员技能的 Wiki 软件，比如选用了 TWiki，那么在维护的时候，Perl 背景技能就能派上用场并能进一步促进，多少有点以战养战的意味在里面。

此外，应该强制运维人员提交 Wiki 标记化的文档，而不是简单上传一些 Word 文档、PPT 甚至 HTML 附件。Wiki 编辑器里别直接粘贴从 Word 文档 Copy 来得内容。

如果团队足够大，应该有人专门定期检查文档质量，乃至对新人做一些简单的示例或者培训什么的。写一份好的文档甚至比写一大段好的代码更重要。

知识管理与积累

Wiki 上都记录什么? 最佳实践、技术心得、配置文档、软硬件信息 ... 乃至团队人员联系方式，随时记录是需要的，但保持更新更重要。

知识管理(KM, Knowledge Management)是干啥的? 这四个字说来话长，维基百科解释道：

... comprises a range of practices used in an organisation to identify, create,  represent, distribute  and enable adoption of insights and experiences.

用我的土话说，要把信息沉淀下来并传递给更多的人用。一个人写的文档，团队其他的人要能看明白，要理解，要能拿着这文档做事情。没有知识管理意识的团队，成员之间的信息交流或许也有些不顺畅，可能会在人员的使用上存在很多瓶颈，遇到一点技术上的小事情，原来负责的人不在场，其他人可能搞不定，这是风险！

有些团队对待知识管理的态度上是&quot;拿来主义&quot;但缺乏分享精神，比如复制大量网络上的信息到内部，但是不愿意对外分享团队的心得，这样不好! 

积累，意味着这是一件长期的事情。不是一窝蜂搞一下就结束不管的。一份运维文档应该贯穿网站建设的始终，逐渐丰富完善。


后记：如果还有兴趣，写写关于《自动化维护》的话题? 要不算了吧。今天这个话题写的有点匆忙，因为不是对媒体供稿，所以行文语气很散，有待于收到反馈后更新吧... </summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>接上一篇<a href="http://www.dbanotes.net/web/web_operations_rules.html">《流程规范》</a>，继续谈谈知识管理与知识积累的相关内容。</p>

<p>所谓"知识管理与知识积累"，其实有点绕，我们不如就说说"运维技术文档"的事儿吧，这样可能还直白一点。因为每次说起类似的话题，总有兄弟用不屑的语气说，不就是写写文档的事儿么? </p> 

<h4>运维友好的文档</h4>
<p>不同的团队对文档要求可能都有不同的"风格"--更多的时候是运维主管要看着舒服。就运维来说，必须能够创建"运维人员友好"的文档。</p>

<p>一般来说，运维文档应该具备如下特点：</p>

<ul><li><strong>易读性</strong> 便于阅读，便于技术人员阅读。尤其是内容不应引起歧义、转码等。</li><li><strong>可搜索性</strong> 针对具体内容便于查找，便于发现。</li><li><strong>版本化控制</strong> 这里不是普通的 V1.0，V2.0 之类的简单标识版本，而是要能够获取所有的内容改变过程，便于回溯。</li><li><strong>通行格式</strong> 能够适应不同的操作系统平台。</li><li><strong>信息完备性</strong> 具备足够丰富的交叉引用，反复保存的时候不会丢失信息等。</li></ul>

<p>可能还有其他特性没在这里一一列出。有的网友看了上面的描述，这不就是 Wiki 嘛! Bingo! 基于 HTML 的 Wiki 页面，绝对是对运维友好的，尤其是网站运维团队。 我见过很多团队用 Word 写文档，这是非常糟糕的事情。在版本化控制、可搜索性方面具备天生缺陷。或许书写运维报告用 Word 是好的选择，但是运维技术文档的积累绝对不能用 Word。</p>

<h4>运维友好的 Wiki</h4>

<p>你们的运维团队在用 Wiki 么? </p>

<p>一般来说，具备一顶的语言背景可能更喜欢用该语言开发的工具(嗯，我说的是"一般")，有一定 Java 背景的程序员可能会喜欢用 Confluence 之类的 Wiki 工具。而对运维人员来说呢，什么是他们的语言背景? Shell ? No !  Perl/Python/PHP ，一般运维人员可能都熟悉三者之中的东西。</p>

<p>我个人多少喜欢一点 <a href="http://www.twiki.org">TWiki</a> ，尽管我对 Perl 不那么熟悉。而很多中小 Web 网站，可能是 PHP 为开发语言，搂柴火打兔子，捎带脚让程序员帮着定制一些功能就成了。这是不是有点扯远了? 什么是运维友好的 Wiki 呢? 我的意见是要<strong>能促进运维人员技能的 Wiki 软件</strong>，比如选用了 TWiki，那么在维护的时候，Perl 背景技能就能派上用场并能进一步促进，多少有点以战养战的意味在里面。</p>

<p>此外，应该强制运维人员提交 Wiki 标记化的文档，而不是简单上传一些 Word 文档、PPT 甚至 HTML 附件。Wiki 编辑器里别直接粘贴从 Word 文档 Copy 来得内容。</p>

<p>如果团队足够大，应该有人专门定期检查文档质量，乃至对新人做一些简单的示例或者培训什么的。写一份好的文档甚至比写一大段好的代码更重要。</p>

<h4>知识管理与积累</h4>

<p>Wiki 上都记录什么? 最佳实践、技术心得、配置文档、软硬件信息 ... 乃至团队人员联系方式，随时记录是需要的，但<strong>保持更新</strong>更重要。</p>

<p>知识管理(KM, <a href="http://en.wikipedia.org/wiki/Knowledge_management">Knowledge Management</a>)是干啥的? 这四个字说来话长，维基百科解释道：

<pre>... comprises a range of practices used in an organisation to identify, create, <br /> represent, distribute  and enable adoption of insights and experiences.</pre>

<p>用我的土话说，要把信息沉淀下来并传递给更多的人用。一个人写的文档，团队其他的人要能看明白，要理解，要能拿着这文档做事情。没有知识管理意识的团队，成员之间的信息交流或许也有些不顺畅，可能会在人员的使用上存在很多瓶颈，遇到一点技术上的小事情，原来负责的人不在场，其他人可能搞不定，这是风险！</p></p>

<p>有些团队对待知识管理的态度上是"拿来主义"但缺乏分享精神，比如复制大量网络上的信息到内部，但是不愿意对外分享团队的心得，这样不好! </p>

<p>积累，意味着这是一件长期的事情。不是一窝蜂搞一下就结束不管的。一份运维文档应该贯穿网站建设的始终，逐渐丰富完善。</p>

<p><br />
<p><strong>后记</strong>：如果还有兴趣，写写关于《自动化维护》的话题? 要不算了吧。今天这个话题写的有点匆忙，因为不是对媒体供稿，所以行文语气很散，有待于收到反馈后更新吧... </p></p>]]>
        
    </content>
</entry>

<entry>
    <title>网站运维之道 之流程规范</title>
    <link rel="alternate" type="text/html" href="http://www.dbanotes.net/web/web_operations_rules.html" />
    <link rel="service.edit" type="application/atom+xml" href="http://www.dbanotes.net/cgi-bin/mt-atom.cgi/weblog/blog_id=1/entry_id=1223" title="网站运维之道 之流程规范" />
    <id>tag:74.207.252.114,2008://1.1223</id>
    
    <published>2008-11-29T15:33:57Z</published>
    <updated>2009-11-23T10:07:03Z</updated>
    
    <summary>接上一篇《容量规划》，谈一下流程规范这个话题。

流程规范

对于相对正规的网站维护工作，所有网站的所有变更必须能做到有记录，可回溯。如果是单枪匹马作战，那么要实现这个目标并不是很难，只需要把好习惯培养起来就成了，可如果要面对一个团队，那么就必须要依赖流程规范来进行约束。

所谓&quot;流程规范&quot;，在初期也可以拆开来对待：流程 + 规范(废话!)。

关于流程(Process)，直白的说就是&quot;把大象放入冰箱需要几步?&quot;的问题。比如上线一台服务器，那么可能要经过至少前期的选型规划、基准测试、压力测试......等等诸多步骤。如果跳过某个环节(比如缺少基准测试)而直接上线，遇到问题的时候几乎就会因为缺乏对比数据而走弯路。

关于规范(Norm)，在运维的过程中是个范围比较大的话题，因为 Web 站点环境因为各种原因而不可复制，在另一个公司可用的规范照搬到另外一家公司未必管用。如果能够意识到并且尽早抽象出来标准化组件，并着手推进，那么规范必然会逐渐丰富起来并完善。比如 Web 服务器配置规范、Linux 主机配置规范、SAN 存储系统测试规范，都是可以尽早抽象出来并且可具体化的东西。

流程规范建立容易，但是如何确保执行却是一个很有挑战性的问题。从这一点来说，对于运维团队的领导的要求还是比较高的。如果要成功管理一个运维团队，起码要有足够的技术经验(当然，也容易看到外行领导内行的运维团队)，而且要有足够强的执行力。

在流程规范的建立过程中，往往容易陷入为了规范而规范的误区，或是生搬硬套 ITIL(Information Technology Infrastructure Library，&quot;信息技术基础架构库&quot;) 那一套大而无当的东西进来(这里不是说 ITIL 不好，但最合适自己的才是最好的)，必须明确，规范的最终目的是为了运维团队更快而不是变成束缚，所以，千万要避免技术人员对规范的抵触。

在运维团队发展的某个阶段，推行&quot;流程规范&quot;所引入的 ITIL 等事物是一把双刃剑，运用得当会很好的促进团队成长，运用不好则会阻碍一部分激进成员的积极性，这一点需要注意。

补充一点，对于流程规范，不是死的东西，必须具备不断反馈、改进、进化的能力，运维团队也应该定期修正流程规范的有关内容。有一句耳熟能详的话是：遵守流程而不拘泥于流程，这里的&quot;不拘泥&quot;切不可变成钻空子的借口，要知道我们生活中很多无形成本就是钻空子引起的。

未完待续，下一部分谈一下关于《知识管理与知识积累》等方面的内容。

--EOF--

强烈推荐一篇相关文章 运维的工序流程. Hutuworm 的大作。</summary>
    <author>
        <name>Fenng</name>
        <uri>http://www.dbanotes.net</uri>
    </author>
    
        <category term="Web" />
    
    <content type="html" xml:lang="en" xml:base="http://www.dbanotes.net/">
        <![CDATA[<p>接上一篇<a href="http://www.dbanotes.net/web/web_operations_capacity_planning.html">《容量规划》</a>，谈一下流程规范这个话题。</p>

<h4>流程规范</h4>

<p>对于相对正规的网站维护工作，所有网站的所有变更必须能做到有记录，可回溯。如果是单枪匹马作战，那么要实现这个目标并不是很难，只需要把好习惯培养起来就成了，可如果要面对一个团队，那么就必须要依赖流程规范来进行约束。</p>

<p>所谓"流程规范"，在初期也可以拆开来对待：流程 + 规范(废话!)。</p>

<p>关于流程(Process)，直白的说就是"<strong>把大象放入冰箱需要几步?</strong>"的问题。比如上线一台服务器，那么可能要经过至少前期的选型规划、基准测试、压力测试......等等诸多步骤。如果跳过某个环节(比如缺少基准测试)而直接上线，遇到问题的时候几乎就会因为缺乏对比数据而走弯路。</p>

<p>关于规范(Norm)，在运维的过程中是个范围比较大的话题，因为 Web 站点环境因为各种原因而不可复制，在另一个公司可用的规范照搬到另外一家公司未必管用。如果能够意识到并且尽早抽象出来标准化组件，并着手推进，那么规范必然会逐渐丰富起来并完善。比如 Web 服务器配置规范、Linux 主机配置规范、SAN 存储系统测试规范，都是可以尽早抽象出来并且可具体化的东西。</p>

<p>流程规范建立容易，但是<strong>如何确保执行</strong>却是一个很有挑战性的问题。从这一点来说，对于运维团队的领导的要求还是比较高的。如果要成功管理一个运维团队，起码要有足够的技术经验(当然，也容易看到外行领导内行的运维团队)，而且要有足够强的执行力。</p>

<p>在流程规范的建立过程中，往往容易陷入为了规范而规范的误区，或是生搬硬套 <a href="http://en.wikipedia.org/wiki/ITIL">ITIL</a>(Information Technology Infrastructure Library，"信息技术基础架构库") 那一套大而无当的东西进来(这里不是说 ITIL 不好，但最合适自己的才是最好的)，必须明确，<strong>规范的最终目的是为了运维团队更快而不是变成束缚</strong>，所以，千万要避免技术人员对规范的抵触。</p>

<p>在运维团队发展的某个阶段，推行"流程规范"所引入的 ITIL 等事物是一把双刃剑，运用得当会很好的促进团队成长，运用不好则会阻碍一部分激进成员的积极性，这一点需要注意。</p>

<p>补充一点，对于流程规范，不是死的东西，必须具备不断<strong>反馈、改进、进化</strong>的能力，运维团队也应该定期修正流程规范的有关内容。有一句耳熟能详的话是：遵守流程而不拘泥于流程，这里的"不拘泥"切不可变成钻空子的借口，要知道我们生活中很多无形成本就是钻空子引起的。</p>

<p>未完待续，下一部分谈一下关于《知识管理与知识积累》等方面的内容。</p>

<p>--EOF--</p>

<p>强烈推荐一篇相关文章 <a href="http://hutuworm.blogspot.com/2008/11/blog-post_29.html">运维的工序流程</a>. Hutuworm 的大作。</p>]]>
        
    </content>
</entry>

</feed> 
