﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>IT博客网-阿里技术学习博客-随笔分类-技术</title><link>http://www.cnitblog.com/aliyiyi08/category/5193.html</link><description>分享学习经验</description><language>zh-cn</language><lastBuildDate>Fri, 07 Dec 2007 18:31:22 GMT</lastBuildDate><pubDate>Fri, 07 Dec 2007 18:31:22 GMT</pubDate><ttl>60</ttl><item><title>Rose与PowerDesigner：两款建模工具对比分析比较</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37474.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Fri, 07 Dec 2007 11:03:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37474.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/37474.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37474.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/37474.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/37474.html</trackback:ping><description><![CDATA[一、 二者的出身&nbsp;&nbsp;<br>&nbsp; &nbsp; 作为世界最著名的两大CASE工具，Rational Rose和PowerDesigner的名声可谓如雷贯耳。Rose是当时全球最大的CASE工具提供商Rational的拳头产品，UML建模语言就是由Rational公司的三位巨头Booch、Rumbaugh和Jacobson发明的，后来Rational被IBM收购，所以Rose 可谓出身名门，嫁入豪族。而PowerDesigner也有一段好玩的历史，作者王晓昀是一位中国人，在法国SDP软件公司工作时，由于苦觅一个好用的CASE工具未果，干脆自由开搞，整了个AMC*Designor出来，居然一炮打响，在法国卖得个&#8220;巴黎纸贵&#8221;，后来SDP被Powersoft公司收购，同年Sybase这只大黄雀又吃下了Powersoft这只螳螂，所以PowerDesigner也是惊艳出场，星光四射。<br><br>&nbsp;&nbsp;&nbsp; 但两者所走的明星路线却很不相同，Rose出道是时，走的是UML面向对象建模，而后再向数据库建模发展，而PowerDesigner则反其道而行之，它先是一个纯粹的数据库建模工具，后来才向面向对象建模，业务逻辑建模及需求分析建模进军，最终变成&#8220;演视歌三栖&#8221;明星。<br><br>&nbsp;&nbsp;&nbsp; 由于第一印象的影响，所以Rose常常给人的印象还是只是面向对象分析设计的工具，而PowerDesigner给人的印象则还停留在数据库建模工具上。其实，现在的Rose和PowerDesigner都即可以进行数据库建模，也可以进行面向对象建模，只是存在支持上的偏重而已。<br><br>二、 二者区别概述<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Rose和PowerDesigner虽然在项目分析设计领域已经成为被高度聚光的明星，但是在具体使用哪款工具的问题上，不同的公司，不同的人，出于成本，习惯抑或个人喜好，往往有自己的判断。由于笔者在不同的公司中被分别要求使用Rose或PowerDesigner进行分析设计工作，所以对二者有着较为细致的体验。<br><br>&nbsp;&nbsp;&nbsp; &nbsp;Rose走大而全，一站式的策略，它没有将数据库设计和面向对象设计清晰地分开，仅以不同的目录来区分。而PowerDesigner将两者划分到独立的模型文件中，分别对应不同的设计环境，并通过模型之间的转换工具建立各模型的关联。即使对于数据库设计模型，PowerDesigner也需要你选择一个具体的数据库产品及其版本，以便工作环境对具体数据库敏感。所以Rose显得大而化之，而PowerDesigner则比较精细和具体化。Rose的逆向工程，文档输出，代码生成等输入输出功能上表现得比较生硬单调，PowerDesigner在逆向工程，特别是文档输出和代码生成这些功能上提供了精细的控制，让用户拥有高度的自由度。<br>&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;Rose在操作体验上存在很多需要改进的地方，Rose偏向于让用户用鼠标进行操作，对键盘操作支持不好。而PowerDesigner在用户体验上得分很高，大部分操作都可以通过键盘完成，在充分熟悉其快捷键的前提下，PowerDesigner将给设计者一种行云流水的感觉，用户交互上更加人性化。此外，Rose往往占用更多的资源，容易异常退出，PowerDesigner则显得轻便稳定。所以，我个人对两者的体验就是&#8220;Rose笨拙，PD利索&#8221;。下面将具体列出Rose和PowerDesigner的一系列的区别，相信大家可以借由这些比较而见微知著，窥斑知豹，以资在选择工具时，提供参考。
<div id=1>三、 模型组织和层次结构上的区别<br>&nbsp;&nbsp;&nbsp; 1、模型组织Rose将数据库模型和对象模型放在一起，在进行数据表模型设计时，没有特性化的东西。而PowerDesigner将两者分开，其模型组织层级关系是：工作空间-&gt;模型类型-&gt;具体语言/数据库的模型-&gt;包-&gt;文件夹-&gt;Diagram-&gt;设计元素。在创建模型文件时，会让你选择模型类型，选择模型类型后，还可以选择模型类型下语言及版本相关的细分类。不同设计模型对应软件工程的不同阶段，如业务模型和需求模型属于项目需求阶段，而对象模型属于概要和详细设计阶段，数据库模型属于详细设计阶段。它们之间虽然有很强的内在联系，但差异性也很明显，硬将两者放到一起，就象把猴子和猩猩关进同一个笼子，为了兼顾和平衡两者之间的考量，其结果是两者都得不到很好的支持。<br>&nbsp;
<p align=center><img style="WIDTH: 526px; HEIGHT: 273px" height=300 alt="" src="http://image.it168.com/cms/2006-12-5/image/11(1).JPG" width=553></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; 图 1新建模型窗口（PD）&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height=448 alt="" src="http://image.it168.com/cms/2006-12-5/image/06125945.JPG" width=446></p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图 2新建模型窗口（Rose）<br><br>&nbsp;&nbsp;&nbsp;&nbsp; PowerDesinger可以通过模型转换工具进行数据库建模和面向对象模型的相互转换。但Rose不能将对象转换为表，也不能将表转换为对象。<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; 2、工作空间PowerDesigner有工作空间的概念，一个工作空间下可以同时打开多个设计模型文件；而Rose同时仅能打开一个设计文件，如果在设计时，需要参考其他的Rose设计模型，则需要反复关闭现有模型，打开参考模型，显得设计上比较欠考虑。这个问题上两者的差异恰似Eclipse和JBuilder的区别，Eclipse可以同时打开多个工程，而JBuilder只能同时打开一个工程。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 3、设计界面PowerDesigner的设计界面可以左右上下移动，而Rose只能向右，向下移动，此外。PowerDesigner可以将模型元素放大很多倍，而Rose只能放大到正常倍数，不过Rose的Overview工具可以使用户快速定位到设计区中特定的区域，有点类似于游戏界面中常用的小地图，挺不错；<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<img style="WIDTH: 577px; HEIGHT: 367px" height=401 alt="" src="http://image.it168.com/cms/2006-12-5/image/06125962.JPG" width=613><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图 3 Overview工具（Rose）<br>&nbsp;&nbsp; 而在PowerDesigner中，你可以通过F8快捷键查看Diagram的总览图，不过只得通过放大操作定位到定位区域。<br>4&nbsp; 对模型和语言的支持<br>&nbsp; ?&nbsp;对设计模型的支持力度和广度<br>PowerDesigner对对象模型和数据库建模两者的支持力度已经大抵相等，此外，还支持概念模型、业务模型、需求模型、XML模型、信息流模型、自由模型的分析设计。不过对后面这几个模型的支持比较初级，而且在实际的应用中，这些模型用得也比较少，PowerDesigner的突出亮点还是在数据库建模和对象模型的设计上。<br><br>&nbsp; &nbsp;&nbsp;&nbsp; 对于数据库模型，PowerDesigner支持20余种数据库，对于同一数据库的不同版本还提供单独的支持，以便在设计数据库模型时，提供数据库和版本相关的设计。对于面向对象模型，PowerDesigner支持11种主流语言，为对Java 5.0提供单独的支持。<br>Rose基本上可以说是一个对象模型设计工具，对数据库模型的支持相对粗糙，内嵌的只支持Oracle 8数据库，对其他数据库设计的支持需要通过安装插件的方式获得，且对数据库物理存储参数等较细粒度的内容支持得比较粗糙。Rose的对象模型主要支持Java、VC和VB三种语言。<br><br>?&nbsp;对Java语言的支持<br>Rose对Java语言的支持更好，不但为不同版本的JDK提供了支持（不过Rose 2003还不支持JDK 5.0），还为Java具体产品及设计模式（如EJB、Corba、Servlet，GOF设计模式等）提供了内嵌性的支持，这些支持直接反应在Rose的主菜单上。正因为如此，使Rose背上的沉重的历史负担，如EJB和Corba这种语言级的东西是易变且不断更新的，如何在这些具体产品的地位和影响已经降低时，对其作出割舍而又保证版本的兼容性，是摆在设计者面前的难题。<br>PowerDesigner仅提供语言级对象设计的支持，不涉及语言内部的具体产品。其次因为它的设计工作区是和具体的模型类型及语言细分类相关的，而非在主菜单中直接提供支持，所以PowerDesigner在升级时显得更加从容一些。<br>这也是为什么PowerDesigner能以每年一个版本的速度升级，而Rose在2003版本后，新版本还迟迟投入市场的内在原因，否则以IBM的财力，研发能力不至于对市场反应如果缓慢。<br><br>5&nbsp; 输入和输出功能的比较<br>?&nbsp;反向工程<br>从将程序代码转换为设计模型的逆向工程功能上看，Rose更象一个IDE，它会对需要逆向工程操作的程序代码进行深度语义检查，如果存在诸如程序代码引用了类库之外的类，反向工程将失败，而且在报告失败之前，窗口会陷入长时间无响应状态。<br>PowerDesigner仅对需逆向工程的程序代码进行浅度语法检查，这种浅度语法检查不涉及包，类之间的关联，仅对诸如类名是否和类文件名匹配，是否少了&#8220;}&#8221; 等语法性的内容进行检查。即便存在错误，PowerDesigner也允许你忽略错误，继续进行逆向工程操作，这种宽松的限制带来了很大的便利。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height=127 alt="" src="http://image.it168.com/cms/2006-12-5/image/06125997.JPG" width=384><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图 4逆向工程失败选择三种选择（PD）<br>&nbsp;&nbsp;&nbsp; 忽略错误后，PowerDesigner会尽量修补错误，例如代码中少了对应的&#8220;}&#8221;，它将会补上，类名和文件名不一致，将忽略类文件名保持类名不变。<br><br>&nbsp;&nbsp;&nbsp; Rose一直宣扬的理念是IDE和设计工程进行双向互通：在Rose中完成模型设计后导出为IDE所用的代码，IDE编码调整后又逆向工程到Rose。理念很美，深具吸引力，但是在实现中，往往很少有开发团队会这样做。一般CASE工具只是在分析设计阶段使用，甚至很大比例的设计师仅把它当成画图的工具。<br>真正进入编码开发阶段后，将加入大量设计时不涉及的类和方法，如果将这些非骨架性的东西Reverse到CASE工具中，反而会使原来清晰的设计变得雾里花，水中月。所以即使编码时，需要对原分析模型进行调整，一般也是手工去调整设计模型，而不是通过逆向工程去同步，毕竟分析设计是骨架性的，而编码是血肉性的，两者有属性上的区别。如果真的需要频繁进行的代码和UML转换，最好使用类似于Together一样的工具，它嵌入到IDE中，使代码和模型转换方便快捷。<br><br>?&nbsp;文档导出功能<br>PowerDesigner对文档导出提供了精细的控制，你不但可以对文档所包含的内容项进行设置，还可以对内容项的格式进行设置。如导出的表结构是否包括名称、数据类型、备注等项目，这些项目在表栏中的宽度占比，颜色，字号等等，不一而足。<br><br>&nbsp;&nbsp;&nbsp; PowerDesinger 12.0 还新增了一个多模型文档整合导出的Milti-Model Report模型，允许你以多个模型作为输入生成为统一文档，实现模型设计按阶段分开，文档又统一整合的目的。<br><br>&nbsp;&nbsp;&nbsp; 由于PowerDesigner文档导出的设置非常精细，所以要设置好一个文档导出模式实非不易。有鉴于此，PowerDesinger提供了三种常用的导出模板，用户也可以自己定义模板。通过模板可以迅速完成设计模型文档的导出工作。<br>而Rose没有导出模板的概念，更不能对导出项和格式进行设置，你只能按Rose的系统内置的方式进行模型文档的发布。<br><br>?&nbsp;代码导出<br>&nbsp;&nbsp;&nbsp;&nbsp; 在导出设计模型的代码时，PowerDesigner提供了精细的控制，不但可以进行对象级别，还可以进行代码级别的控制（如是否要生成字段备注的代码，外键代码在表体代码内声明还是在表体外部声明等），而Rose没有提供代码导出的控制，也只能按其系统内部设置的方式导出代码。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <img height=363 alt="" src="http://image.it168.com/cms/2006-12-5/image/06125934.JPG" width=584><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 图 5 数据库模型导出设置（PD）<br>?&nbsp;<br>&nbsp;&nbsp;&nbsp; 生成测试数据<br>&nbsp;&nbsp;&nbsp; PowerDesigner可为数据表生成批量的测试数据，而且你还可以制定测试数据的生成规则。这个功能给初期项目的开发测试带来很大的便利。Rose中没有提供类似的功能。</p>
</div><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/37474.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-12-07 19:03 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37474.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>mysql5配置主从库</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37471.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Fri, 07 Dec 2007 10:59:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37471.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/37471.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37471.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/37471.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/37471.html</trackback:ping><description><![CDATA[<p>安装mysql请参考以下文章<br><a href="http://blog.sina.com.cn/s/blog_4fe1599c01000b7t.html">http://blog.sina.com.cn/s/blog_4fe1599c01000b7t.html</a></p>
<p>下面直接记录下配置主从库的操作:<br>1.在主库建立要同步的数据库,建立主库的帐号和修改主库配置<br>首先连接上数据库<br>mysql -S /tmp/mysql-3108.sock<br>创建测试同步的数据库,"create database sinatest;"<br>然后建立负责同步的用户<br>grant all on *.* to <a href='&#109;&#97;&#105;&#108;&#116;&#111;&#58;&#97;&#108;&#105;&#64;&#34;&#37;'>ali@"%</a>" Identified by "abc111";</p>
<p><br>然后修改/data2/ali/mysql3308/my.cnf主库的配置,增加<br>binlog-do-db=sinatest</p>
<p>2.修改从库配置<br>然后修改/data2/ali/mysql3309/my.cnf主库的配置,增加<br>master-host=127.0.0.1<br>master-user=ali<br>master-password=abc111<br>master-port=3308<br>server-id=2<br>master-connect-retry=60<br>replicate-do-db=sinatest<br>log-slave-updates</p>
<p>3.重启mysql<br>/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3308/my.cnf&nbsp; --user=root &amp;<br>/usr/local/mysql/bin/mysqld_safe --defaults-file=/data2/ali/mysql3309/my.cnf&nbsp; --user=root &amp;</p>
<p>4.在主库创建数据表,检查从库是否同步正确<br>进入主库,创建数据表<br>mysql -S /tmp/mysql-3108.sock<br>CREATE TABLE if not exists ali_test_00 (<br>&nbsp; `id` int(11) unsigned NOT NULL auto_increment,<br>&nbsp; `my_id` varchar(16) binary NOT NULL default '',<br>&nbsp; `my_title` varchar(96) binary NOT NULL default '',<br>&nbsp; `status` int(11) unsigned NOT NULL default '1',<br>&nbsp; PRIMARY KEY&nbsp; (`id`),<br>&nbsp; KEY `my_id` (`my_id`)<br>) TYPE=MyISAM;</p>
<p>insert into ali_test_00 values (null,32,"aliwwww",1); <br>insert into ali_test_00 values (null,32,"aliwwww",1); </p>
<p>然后检查从库是否有该表和表中是否有数据</p>
<p>SHOW SLAVE STATUS;&nbsp;&nbsp; <br>SHOW MASTER STATUS;&nbsp; <br>slave stop; <br>slave start; </p>
<p>CHANGE MASTER TO <br>MASTER_HOST='127.0.0.1', <br>MASTER_USER='ali', <br>MASTER_PASSWORD='abc111', <br>MASTER_LOG_FILE='mysql-bin.000003', <br>MASTER_LOG_POS=0; <br></p><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/37471.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-12-07 18:59 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/12/07/37471.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PHP中使用XML-RPC构造Web Service简单入门[转]</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/09/26/34051.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Wed, 26 Sep 2007 07:23:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/09/26/34051.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/34051.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/09/26/34051.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/34051.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/34051.html</trackback:ping><description><![CDATA[PHP中使用XML-RPC构造Web Service简单入门<br><br><br>* 作者：heiyeluren<br>* 时间：2006-03-05<br>* 博客：http://blog.csdn.net/heiyeshuwu<br><br><br>[ Web Service介绍 ]<br><br>Web Service就是为了异构系统的通信而产生的，它基本的思想就是使用基于XML的HTTP的远程调用提供<br>一种标准的机制，而省去建立一种新协议的需求。目前进行Web Service通信有两种协议标准，一种是<br>XML-RPC，另外一种是SOAP。XML-RPC比较简单，出现时间比较早，SOAP比较复杂，主要是一些需要稳定<br>、健壮、安全并且复杂交互的时候使用。<br><br>PHP中集成了XML-RPC和SOAP两种协议的访问，都是集中在xmlrpc扩展当中。另外，在PHP的PEAR中，不管<br>是PHP 4还是PHP 5，都已经默认集成了XML-RPC扩展，而且该扩展跟xmlrpc扩展无关，能够独立实现XML<br>-RPC的协议交互，如果没有xmlrpc扩展，建议使用PEAR::XML-RPC扩展。<br><br>我们这里主要是以XML-RPC来简单描述Web Service的交互过程，部分内容来自PHP手册，更详细内容，建<br>议参考手册。<br><br><br>[ 安装xmlrpc扩展 ]<br><br>如果你的系统中没有安装xmlrpc的php扩展，那么请正确安装。<br><br>在Windows平台下，首先把PHP安装目录下的扩展php_xmlrpc.dll放到C:\Windows或者C:\Winnt目录下，<br>(PHP4的扩展在C:\php\extensions目录中，PHP5的扩展在C:\php\ext目录中)，同时在<br>C:\Windows\php.ini或者C:\Winnt\php.ini中把extension=php_xmlrpc.dll前面的分号";"去掉，然后重<br>启Web<nobr><strong class=kgb onmouseover='isShowAds = true;isShowAds2 = true;KeyGate_ads.Move(this,"","%u5FAE%u8F6F%u670D%u52A1%u5668%u7AEF%u4EA7%u54C1%u5927%u5168%uFF0C%u70B9%u51FB%u83B7%u5F97%u3002","20854","服务器","%u670D%u52A1%u5668","http%3A//go.microsoft.com/%3Flinkid%3D6331218", event)' style="FONT-WEIGHT: normal; CURSOR: hand; COLOR: #0000ff; TEXT-DECORATION: underline" onclick='javascript:window.open("http://s2.17luntan.com/ClickPortal/WebClick.aspx?id=20854&amp;k=%u670D%u52A1%u5668&amp;siteid=3dacfa40-5e60-4554-a298-258665cf5820&amp;url=http%3A//www.blog71.cn/user1/suneast009988/archives/2007/19375.html&amp;gourl=http%3A//go.microsoft.com/%3Flinkid%3D6331218&amp;parm=30513650B9599C028C12991B32CB3EE79C68B99C302F3975&amp;alliedsiteid=0");' onmouseout="isShowAds = false;isShowAds2 = false">服务器</strong></nobr>后查看phpinfo()有没有XML-RPC项目就能够确定是否已经正确安装xmlrpc扩展。<br><br>在Unix/Linux平台下，如果没有安装xmlrpc扩展，请在重新编译PHP，在configure的时候请加入 --<br>with-xmlrpc 选项，然后查看phpinfo()看是否正常安装xmlrpc。<br><br>(注意：以下操作都是建立在xmlrpc扩张正常安装前提下，请务必正确安装。)<br><br><br>[ XML-RPC工作原理 ]<br><br>XML-RPC大致就是整个过程就是使用XML来进行通信。首先构造一个RPC <nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u670D_u52A1_u5668_u7AEF";KeyGate_ads.ShowGgAds(this,"_u670D_u52A1_u5668_u7AEF",event)' style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BCgoFKAj6RumOJIz-sAKT8ZyfA4OYwC7D0JTPA8CNtwHQ6AwQARgBILHzmwkoFDgAUJTz8eQEYJ250IGQBaAB36m9_gOqAQoyMDAwMDA0ODYysgENd3d3LmJsb2c3MS5jbsgBAdoBQWh0dHA6Ly93d3cuYmxvZzcxLmNuL3VzZXIxL3N1bmVhc3QwMDk5ODgvYXJjaGl2ZXMvMjAwNy8xOTM3NS5odG1sgAIBqQLf5RTzA9-BPqgDAegDlgLoA0s&amp;num=1&amp;adurl=http://www.autolink.com.cn/jhoa.asp&amp;client=ca-pub-9553494669999741");GgKwClickStat("服务器端","www.autolink.com.cn","afc","2000004862");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u670D_u52A1_u5668_u7AEF"'>服务器端</strong></nobr>用来出来从RPC客户端传<br>递过来的使用XML封装的请求，并且把处理结果通过XML的形式返回给RPC客户端，客户端就去分析XML获<br>取自己需要的数据。<br><br>XML-RPC的<nobr><strong class=kgb onmouseover='isShowAds = false;isShowAds2 = false;isShowGg = true;InTextAds_GgLayer="_u670D_u52A1";KeyGate_ads.ShowGgAds(this,"_u670D_u52A1",event)' style="BORDER-RIGHT: 0px; PADDING-RIGHT: 0px; BORDER-TOP: 0px; PADDING-LEFT: 0px; FONT-WEIGHT: normal; PADDING-BOTTOM: 0px; MARGIN: 0px; BORDER-LEFT: 0px; CURSOR: hand; COLOR: #0000ff; PADDING-TOP: 0px; BORDER-BOTTOM: 0px; TEXT-DECORATION: underline" onclick='javascript:window.open("http://pagead2.googlesyndication.com/pagead/iclk?sa=l&amp;ai=BCgoFKAj6RumOJIz-sAKT8ZyfA4OYwC7D0JTPA8CNtwHQ6AwQARgBILHzmwkoFDgAUJTz8eQEYJ250IGQBaAB36m9_gOqAQoyMDAwMDA0ODYysgENd3d3LmJsb2c3MS5jbsgBAdoBQWh0dHA6Ly93d3cuYmxvZzcxLmNuL3VzZXIxL3N1bmVhc3QwMDk5ODgvYXJjaGl2ZXMvMjAwNy8xOTM3NS5odG1sgAIBqQLf5RTzA9-BPqgDAegDlgLoA0s&amp;num=1&amp;adurl=http://www.autolink.com.cn/jhoa.asp&amp;client=ca-pub-9553494669999741");GgKwClickStat("服务","www.autolink.com.cn","afc","2000004862");' onmouseout='isShowGg = false;InTextAds_GgLayer="_u670D_u52A1"'>服务</strong></nobr>器端必须有现成的函数提供给客户端调用，并且客户端提交的请求中的函数和方法必须和<br>服务器端的一致，否则将无法获取所需要的结果。<br><br>下面我进行简单的代码来描述整个过程。<br><br><br>[ XML-RPC实践 ]<br><br>服务器端使用xmlrpc_server_create函数产生一个服务器端，然后把需要需要暴露的RPC调用接口进行注<br>册，接受RPC客户端POST过来的XML数据，然后进行处理，处理结果通过XML的形式显示给客户端。<br><br>代码如下： rpc_server.php<br><br><?php <br>/**<br>* 函数：提供给RPC客户端调用的函数<br>* 参数：<br>* $method 客户端需要调用的函数<br>* $params 客户端需要调用的函数的参数数组<br>* 返回：返回指定调用结果<br>*/<br>function rpc_server_func($method, $params) {<br>$parameter = $params[0];<br>if ($parameter == "get")<br>{ <br>$return = ''This data by get method''; <br>}<br>else<br>{<br>$return = ''Not specify method or params'';<br>} <br>return $return; <br>} <br><br>//产生一个XML-RPC的服务器端<br>$xmlrpc_server = xmlrpc_server_create(); <br><br>//注册一个服务器端调用的方法rpc_server，实际指向的是rpc_server_func函数<br>xmlrpc_server_register_method($xmlrpc_server, "rpc_server", "rpc_server_func"); <br><br>//接受客户端POST过来的XML数据<br>$request = $HTTP_RAW_POST_DATA;<br><br>//执行调用客户端的XML请求后获取执行结果<br>$xmlrpc_response = xmlrpc_server_call_method($xmlrpc_server, $request, null); <br><br>//把函数处理后的结果XML进行输出<br>header(''Content-Type: text/xml''); <br>echo $xmlrpc_response; <br><br>//销毁XML-RPC服务器端资源<br>xmlrpc_server_destroy($xmlrpc_server); <br>?&gt;<br><br>服务器端构造好了，那么再构造我们的RPC客户端。客户端大致通过Socket访问XML-RPC服务器端的80端<br>口，然后把需要调用的RPC接口封装到XML里，通过POST请求提交给RPC服务器端，最后获取服务器端返回<br>结果。<br><br>代码如下：rpc_client.php<br><a href="http://www.shwujiao.com.cn/">上海保洁</a>:http://www.shwujiao.com.cn<br><?php<br>/**<br>* 函数：提供给客户端进行连接XML-RPC服务器端的函数<br>* 参数：<br>* $host 需要连接的主机<br>* $port 连接主机的端口<br>* $rpc_server XML-RPC服务器端文件<br>* $request 封装的XML请求信息<br>* 返回：连接成功成功返回由服务器端返回的XML信息，失败返回false<br>*/<br>function rpc_client_call($host, $port, $rpc_server, $request) { <br><br>//打开指定的服务器端<br>$fp = fsockopen($host, $port); <br><br>//构造需要进行通信的XML-RPC服务器端的查询POST请求信息<br>$query = "POST $rpc_server HTTP/1.0\nUser_Agent: XML-RPC Client\nHost: <br>".$host."\nContent-Type: text/xml\nContent-Length: ".strlen($request)."\n\n".$request."\n"; <br><br>//把构造好的HTTP协议发送给服务器，失败返回false<br>if (!fputs($fp, $query, strlen($query))) <br>{ <br>$errstr = "Write error"; <br>return false; <br>} <br><br>//获取从服务器端返回的所有信息，包括HTTP头和XML信息<br>$contents = ''''; <br>while (!feof($fp))<br>{ <br>$contents .= fgets($fp); <br>} <br><br>//关闭连接资源后返回获取的内容<br>fclose($fp); <br>return $contents; <br>} <br><br>//构造连接RPC服务器端的信息<br>$host = ''localhost''; <br>$port = 80; <br>$rpc_server = ''/~heiyeluren/rpc_server.php'';<br><a href="http://www.shwujiao.com.cn/">上海保洁公司</a>:http://www.shwujiao.com.cn<br>//把需要发送的XML请求进行编码成XML，需要调用的方法是rpc_server，参数是get<br>$request = xmlrpc_encode_request(''rpc_server'', ''get''); <br><br>//调用rpc_client_call函数把所有请求发送给XML-RPC服务器端后获取信息<br>$response = rpc_client_call($host, $port, $rpc_server, $request); <br><br>//分析从服务器端返回的XML，去掉HTTP头信息，并且把XML转为PHP能识别的字符串<br>$split = ''<?xml version="1.0" encoding="iso-8859-1"?>'';<br>$xml = explode($split, $response);<br>$xml = $split . array_pop($xml);<br>$response = xmlrpc_decode($xml);<br><br>//输出从RPC服务器端获取的信息<br>print_r($response);<br><br>?&gt; <br><br><br>大致我们上面的例子就是提交一个叫做rpc_server的方法过去，参数是get，然后获取服务器端的返回，<br>服务器端返回的XML数据是：<br><br><string>This data by get method</string><br></value></param>
</params>
</methodresponse><br><br>那么我们再通过xmlrpc_decode函数把这个XML编码为PHP的字符串，我们就能够随意处理了，整个Web <br>Service交互完成。<br><br><br>[ 结束语 ]<br><br>不管是XML-RPC也好，SOAP也罢，只要能够让我们稳定、安全的进行远程过程的调用，完成我们的项目，<br>那么就算整个Web Service就是成功的。另外，如果可以的话，也可以尝试使用PEAR中的XML-RPC来实现<br>上面类似的操作，说不定会更简单，更适合你使用。<br><br>简单的使用XML-RPC进行Web Service交互就完成了，部分代码参考PHP手册，想获取详细信息建议参考手<br>册，如果文章有不正确，请指正。<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/34051.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-09-26 15:23 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/09/26/34051.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>tcpdump 截取数据包</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33464.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Sat, 15 Sep 2007 09:10:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33464.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/33464.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33464.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/33464.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/33464.html</trackback:ping><description><![CDATA[应用服务端口是3333，发现有一端数据处理有问题，想确认网络数据的传输次序，就用tcpdump了，<br>tcpdump -w data.dmp host server_ip and port 3333<br><br>截下来用omnipeek分析，发现大的数据包数据长度总是slice length。查了一下才发现tcpdump缺省只截取一定长度的数据包。<br>-s 选项可以解决这个问题. -s 0 是指定保存完整的包，如果指定一个非零的数值，那么将会保存这个数值的长度。<br><br>tcpdump -w data.dmp -s 0 host server_ip and port 3333<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/33464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-09-15 17:10 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux下 不常用进程信息查看命令</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33463.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Sat, 15 Sep 2007 09:09:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33463.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/33463.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33463.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/33463.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/33463.html</trackback:ping><description><![CDATA[所打开的文件<br>获取方法1：<br># ls -l /proc/$PID/fd/<br><br>获取方法2：<br># lsof -p $PID<br><br>内存分配表<br>获取方法：<br># lcat /proc/$PID/maps<br><br>堆栈<br>获取方法：<br># pstack $PID<br><br>所发出的系统调用<br>获取方法：<br># strace -p $PID<br><br>所发出的库函数调用<br>获取方法：<br># ltrace -p $PID<br><br>进程继承关系<br>获取方法：<br>ps -eo user,pid,ppid,%cpu,%mem,vsz,rss,tty,stat,start,time,wchan,command --forest<br><br>运行时dumpcore<br>获取方法：<br># gcore $PID<br><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/33463.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-09-15 17:09 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/09/15/33463.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>web2.0网站如何设计UE/UI</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/08/28/32512.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Mon, 27 Aug 2007 18:49:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/08/28/32512.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/32512.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/08/28/32512.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/32512.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/32512.html</trackback:ping><description><![CDATA[<p>web2.0网站如何设计UE/UI <br>这些天总有些负责网站界面的设计人员找我咨询，怎么做用户访谈才感觉不像聊天，怎么样让用户参与到设计中来，得到更多的意见而不是简单的一句还可以或不错之类的评语，原型的改进花费时间总是太长怎么能缩短，设计的时候没什么把握，诸如此类的问题。。我想对此在msn上做的指导大量重复，需要在这里做一些入门级的解释了。。</p>
<p>Q1:首先，用户为中心的设计环节包括哪些活动？<br>答案：设计--〉原型--〉测试--〉再改进设计--〉原型--〉测试 --〉。。。看出来了吧，这是个迭代过程。。。你的设计没有把握，那么使用测试来验证，发现问题，再快速改进。。</p>
<p>Q2:这样的迭代，什么时候中止，递交给开发呢？<br>答案：没有完美的设计的，递交给开发前，保证你的设计没有一级易用性问题。否则上线的产品用户骂声一片。。但是还有一些小的bug好改的都改掉，不能改的下一版本吧。什么时候中止，那要看口袋里的钱，还剩的时间和人力等资源限制咯。看得出来吧，这里面肯定有很多的Tradeoff（妥协）的，做UE的和做开发的一定要搞好关系哦，这样，可以多改掉几个bug </p>
<p>Q3: 用户什么时候接触？他们最理想的介入时期是什么时候？<br>答案：作为UE/UI要记得，永远和用户保持紧密联系。不管项目进展到什么时刻，你都要思考，用户要干嘛，喜欢怎么干，这样的设计他们会不会觉得舒服流畅。要验证答案，那就赶紧去接触他们吧。</p>
<p>Q4：我知道在开发前期的设计工作，要做一些用户研究，问卷调查，用户访谈之类的，到底要研究些什么，出来些什么结果呢？<br>答案：在设计之前，你要明白的一件事情就是，为谁而设计。围绕这个谁，你需要回答：</p>
<p>1.他们的基本特征，比如年龄段分布，性别特征，家庭，行业，电脑经验，上网经验，收入阶层等等。。</p>
<p>2.你需要找到他们中间最典型的人群，需求最强烈的人群是怎样的一个形象。这个在UCD里面叫做角色提炼(Personas setting)。也许为10万个人设计，你什么都靠猜的，没可能满足10万个人的要求。但是你为这一个或者两个角色来设计吧，他们最典型，他们的需求满足好了，你就离成功不远了。</p>
<p>3.用户在使用你的网站到底舒服不，流畅不，主要是看他的操作习惯，行为方式和网站设计的是不是很匹配。你要研究什么，根本就是典型用户的操作习惯，行为方式，最后获得一个用户模型(User Model)。网站要创造出的用户体验，不是用户对你说，我要怎么样怎么样的，也不是设计者自己在那里想，嗯，这么设计比较容易，两步就能完成，一定很好。。两步就一定好么，你的用户很可能就习惯了走某固定的三步来完成，你的两步，很可能让他们满腹狐疑，忧心忡忡了。。</p>
<p>ok,现在你知道了，出来的结果是什么，用户群特点，典型用户的形象即角色(Persona),然后就是用户模型。。</p>
<p>Q5：知道研究什么呢，该怎么开展研究呢？<br>答案：用户研究的方法可以很灵活的，常常见到类似聊天一样的，一个问，一个来答，叫用户访谈。还有一些方法，比如问卷调查，焦点小组，数据分析等等。。根据不用的研究内容，还有时间，技术，成本来决定。。<br>至于怎么研究，一个前提就是，目的性明确。不管你做访谈也好，问卷也好，漫无目的，只会让你对这些形式的有效性产生怀疑。。比如问卷，设计多少个问题，设计哪些问题，你要规划好了。。问卷设计哪几个纬度，每个纬度需要几个问题可以得到结果，什么样的量表合适。。</p>
<p>Q6：项目已经进入开发了，做用户研究来不及了啊。<br>答案：嗬嗬，来得及来得及，只是要让你的第一批用户多多忍耐了。UCD是迭代过程嘛，已经开发了，你就研究着，准备对第一版本的产品进行测试评估和改进吧。。慢慢来，一个一个的改。</p>
<p>Q7：你所在的team(UI)是怎样跟一个团队(产品策划，程序员等)沟通合作的，又怎样更好的融入到产品的整个过程中的呢？<br>答：经历过很多种不同的Team,他们处在不同的位置上，常常承担的责任也不一样，因此作事情的方式也完全不一样了。UE在整个产品开发过程中的位置把握准确，相当的重要。关于位置怎么最合适，日后我再专门阐述。目前接触到较理想的工作方式，如何沟通合作，是和产品设计决策者一起工作，将你获得的研究或者评估结果，直接变成设计或建议，传递给产品设计决策者，判断问题的重要性，有哪几种可行的方案，如何改最合适，你们一起探讨。常常，在研究方案是否可行时，你需要跟程序员沟通，提出你的想法，询问是否能实现，实现难度，大致的时间。这样能够保证你方案的可快速执行。这存在很多的沟通技巧。最好的情况就是你， UE人员，要把以用户为中心的思想灌输给他，让他进入你设定的情景，站在你的立场去考虑问题，这样程序员会增加工作的责任感，他甚至可能发挥主观能动性，帮你想到更好的实现方法。。。这样的一种氛围中，整个的团队就像一根绳子往一个方向使劲，都全力想让产品做好，想想，那样的工作多让人充满激情吧。</p>
<p>这只是其中一部分，在你和产品决策者沟通时，甚至还有市场部门的同事参与，一方面，你要代表用户的利益，另一方面，你要试图了解公司希望创造的商业价值，从中找到一个平衡点。这种设计才最容易获得上层的支持，以最快的速度推行下去。可以看看偶翻译的用户体验设计师的职责那片文章。</p>
<p>Q8：界面(原型+设计)，交互(包括js)，测试等都由一个人做吗？如果不是的话，那么对用户体验的研究又怎样能证明自己的作用？<br>答：这些工作我都做过，一个人做这种情况其实非常的常见。但是一个人，并不理想，最好，还是培养一个团队。而且有些工作，一个人做不了，必须有协助。这主要看公司的不同状况了。如果是一个人，评估用户体验研究的效果，就可以对你的成绩进行评判了。<br>如何是一个Team,是好几个人协作完成，如何证明每一部份的工作成效?iceshow是问这个吧。<br>老实说，我对这个问题没有把握。因为UE的日常工作就是设计-原型-测试评估，是完整的流程，对工作的评估，只能考核整个流程下来的结果。单独一部份工作做得如何，我还没有研究过。。</p>
<p>白鸦在blog里面特意的提到我这个系列，标题的web2.0，应该改掉。我倒不想，出于UE知识的普及，这样的标题适合目标用户群-- web2.0用户体验实践者,可以抓住他们的眼球。这一群能人帮助只是迅速传播普及。另外在用户体验设计方面，之前3篇完全适用web2.0..</p>
<p>今天说说web2.0和1.0在用户体验方面的不同之处，但是，这只是我浅薄的理解，希望可以得到各位资深的实践者们的提点。其实以我的积累，应该是远远不够的。</p>
<p>用户体验包括四个因素：品牌，功能，usability和内容。现在大家常常误认为：用户体验=易用性（或者可用性/usability）。其实不然。</p>
<p>web2.0最不缺的是功能，每一个创业者都是认为自己发现了用户的某一种需求，而市场上没有任何产品可以去满足，因此觉得自己可以开发出具备某些功能的2.0产品。。这方面，不多说什么，只是说一点，细分用户群，必定会成为竞争趋势。。仔细研究了用户群，深入挖掘他们的特点和需求，在最开始就做到高的粘着力，是否更好了？</p>
<p>在品牌上，很多人对这一点的忽略，导致了用户体验的整个盲目。现在我问你，sina,sohu和网易,有什么差别？普通用户可不清楚，都是门户网站。。好像网易开发游戏，sohu还开发了搜索，sina,好像经常做赞助活动。。这就是品牌么？现在问你Nokia和Moto有什么差别？你能回答吧。。品牌和用户体验的关系，是互相影响的。。你用Nokia,发现它简单朴实，好用，还抗摔。就是样子有点。。那么nokia的品牌形象排除了价格因素后就是这样，简单朴实好用机身抗摔，样子一般了点。。现在如果有人推荐你，某个品牌，它是如何的有趣个性时尚，然后你一使用，发现：切，哪点特别的，跟 Nokia差不多，还不如买Nokia。。失败了吧，因为品牌没有独特的个性，带来的用户体验期望值和现实落差，将会让你的目标用户转头而去。。网易相册和其他的相册，有什么差别。。和flikr反正是大大的不同。。</p>
<p>在内容上面。虽然说，web2.0是用户参与，很多网站的内容都是用户来建设。。但是在用户参与之前，你要想，用户为什么要参与。。只因为我没有日记本，你给我一个日记本，我就一定要用你给的这个来写么？用户是否参与，参与程度多少，这些都取决于你现在的内容。。你现在是空的。。鬼知道你这个网站是不是快黄了，我干吗要在这写啊。。你现在很多，但是都是转载的，没几个用户在写。。骗我么？我写了根本就没有几个人看。。好，现在你的内容很多，用户也开始很多了。。但是，天啦，这些内容也未免太广告性了吧。。。或者，用户想，我写了你会不会到处转载啊。。你们这的用户素质怎么样啊。。。而且，形式上，你的品牌，说一点关联性，品牌你标语说时尚个性，网站样子看上去土拉吧唧的，马上用户的信任度就降低了。。</p>
<p>Usability,网站当然要好用了，很迅速的完成内容提交，或者找到目标内容，这是当然的。。但是不是随便一个你觉得交互方式很流畅的网站，都可以完全拷贝复制。幸亏世界如此丰富，不然我们做交互设计的，就跟做数学公式一样了，多没意思，一个套路。。不同的用户，习惯不同的交互方式，他们喜欢什么样子的，这便是用户研究里面要做的一部分工作。。这样的研究结果，帮助你的交互设计具备了自己的个性。。usability测试的结果，是要知道你的目标用户群的看法，发现的问题，而不是科学研究，三步如何变成两步。<br>&nbsp;<br></p><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/32512.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-08-28 02:49 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/08/28/32512.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>给你的网站加速 Squid-Linux下的使用详解</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/07/20/30286.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Fri, 20 Jul 2007 03:21:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/07/20/30286.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/30286.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/07/20/30286.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/30286.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/30286.html</trackback:ping><description><![CDATA[<p>&nbsp;本文出自: <a href="http://fanqiang.chinaunix.net/a6/b6/20010626/170400681.html">http://fanqiang.chinaunix.net/a6/b6/20010626/170400681.html</a> (2001-06-26 17:04:00) </p>
<p>做为眼下最流行的操作系统，Linux已经越来越受到世人的关注。虽然目前Linux的软件还不是很丰富， <br>替代WINDOWS作为普通PC机操作系统还为时过早，但是在服务器领域，Linux的稳定性，可操作性决不 <br>输于任何操作系统，并且也有优秀的软件支持。Squid就是其中之一。Linux加Squid的组合做为代理 <br>服务器，性能远远超过WINNT加MSPROXY2.0（个人观点），为几百人的小型局域网代理绰绰有余。下 <br>面，我就详细的介绍Squid的安装及使用技巧，希望大家能够喜欢上它。&nbsp; </p>
<p>1.Squid简介 </p>
<p>　　Squid是一个缓存internet数据的一个软件，它接收用户的下载申请，并自动处理所下载的数据。 <br>也就是说，当一个用户象要下载一个主页时，它向Squid发出一个申请，要Squid替它下载，然后Squid <br>连接所申请网站并请求该主页，接着把该主页传给用户同时保留一个备份，当别的用户申请同样的页面 <br>时，Squid把保存的备份立即传给用户，使用户觉得速度相当快。目前，Squid 可以代理HTTP, FTP,&nbsp; <br>GOPHER, SSL 和 WAIS 协议，暂不能代理POP, NNTP等协议。不过，已经有人开始修改Squid，相信不 <br>久的将来，Squid能够代理这些协议。 </p>
<p>　　Squid能够缓存任何数据吗？不是的。象缓存信用卡帐号、可以远方执行的scripts、经常变换的 <br>主页等是不合适的也是不安全的。Squid可以自动的进行处理，你也可以根据自己的需要设置Squid， <br>使之过滤掉你不想要的东西。 </p>
<p>　　Squid可以工作在很多的操作系统中，如AIX, Digital Unix, FreeBSD, HP-UX, Irix, Linux,&nbsp; <br>NetBSD, Nextstep, SCO, Solaris，OS/2等，也有不少人在其他操作系统中重新编译过Squid。 </p>
<p>　　Squid对硬件的要求是内存一定要大，不应小于128M，硬盘转速越快越好，最好使用服务器专用SCSI <br>硬盘，处理器要求不高，400MH以上既可。 </p>
<p>2. Squid的编译和运行 </p>
<p>　　其实现在的Linux发行套件中基本都有已经编译好的Squid，你所作的就是安装它既可。如果你手头 <br>没有现成的编译好的Squid或想使用最新的版本，去ftp:squid.nlanr.net下载一份，自己编译。 </p>
<p>　　Squid的编译是非常简单的，因为它基本上是自己配置自己。最容易出现的问题是你的系统上没有 <br>合适的编译器，这可以通过安装相应的编译器解决。如果出现其他问题，你可以问一下有经验的用户或 <br>到相应的邮件列表寻找帮助。 </p>
<p>　　编译Squid之前，最好建一个专门运行Squid的用户和组。我就在自己的服务器上建了一个名为 <br>squid的用户和组，用户目录设为/usr/local/squid。然后su为用户squid并从squid.nlanr.net下载 <br>Squid的源文件到目录 /usr/local/squid/src中，用如下命令进行解压： </p>
<p>　　％tar xzf squid-2.0.RELEASE-src.tar.gz </p>
<p>　　％cd /usr/local/squid/src/ squid-*.*.RELEASE / </p>
<p>　　％./configure </p>
<p>　　%make </p>
<p>　　％make install </p>
<p>　　第一个命令在目录/usr/local/squid/src中产生一个新的子目录/squid-*.*.RELEASE/。命令 <br>./configure会自动查询你的系统配置情况以及你系统中使用的头文件。不加参数的./configure会 <br>把Squid安装在目录/usr/local/squid中，如果你想使用其他目录，用如下命令 <br>./configure --prefix=/some/other/directory，这会把Squid安装在目录/some/other/directory中。 <br>make命令编译Squid，make install命令安装Squid。 </p>
<p>　　不出意外的话，目录/usr/local/squid中会出现如下目录： </p>
<p>　　/bin </p>
<p>　　/cache </p>
<p>　　/etc </p>
<p>　　/logs/ </p>
<p>　　/src （自己创建的） </p>
<p>　　目录/bin中含有Squid可执行程序，包括Squid本身，ftpget等。 </p>
<p>　　目录/cache包含Squid缓存的数据，其中包含象/00/ /01/ /02/ 以及/03/这样的目录，这些目录 <br>中还有子目录，因为目录多了比在一个目录成千上万的文件中寻找一个文件更容易，速度更快。 </p>
<p>　　目录/etc中包含Squid的唯一的配置文件squid.conf。 </p>
<p>　　目录/logs中包含Squid的日志。 </p>
<p><br>3. squid.conf文件的配置 </p>
<p>　　在安装Squid后，在目录/usr/local/squid /etc中会自动产生一个样本squid.conf文件，文件中 <br>对每一个选项都有详细的说明，用户可以通过修改该文件以满足不同的需要。 </p>
<p>　　总的来说，有如下几个重要选项： </p>
<p>　　&#183;http_port:设定Squid监听的端口，你最好设一个比较好记的端口号，以便在进行客户机配置 <br>时容易记住。我的机器上端口号设的是8080。缺省为3128。 </p>
<p>　　&#183;cache_mem：设定Squid占用的物理内存，根据我的经验，cache_mem的大小不应超过你的服务 <br>器物理内存的三分之一，否则将会影响机器的总体性能。 </p>
<p>　　&#183;maximum_object_size：设定Squid可以接收的最大对象的大小。Squid缺省值为4M，我自己入 <br>认为太大，你可以根据自己的需要进行设定。 </p>
<p>　　&#183;cache_dir：设定缓存的位置、大小。一般看起来形式如下 <br>&#8220;cache_dir /usr/local/squid/cache 100 16 256&#8221;。 /usr/local/squid/cache代表缓存的位置； <br>100代表缓存最大为100M；16和256代表一级和二级目录数。 </p>
<p>　　&#183;cache_effective_user：设定使用缓存的有效用户。缺省为用户nobody，如果你的系统中没 <br>有用户nobody，最好建一个或以非root用户运行Squid。 </p>
<p>　　下面我给出一个最简单的squid.conf文件： </p>
<p>　　#squid.conf - a very basic config file for squid </p>
<p>　　#Turn logging to it's lowest level </p>
<p>　　debug_options ALL,1 </p>
<p>　　#defines a group (or Access Control List) that includes all IP addresses </p>
<p>　　acl all src 0.0.0.0/0.0.0.0 </p>
<p>　　#define RAM used </p>
<p>　　cache_mem 32M </p>
<p>　　#defines the cache size </p>
<p>　　cache_dir /usr/local/squid/cache 100 16 256 </p>
<p>　　#allow all sites to use connect to us via HTTP </p>
<p>　　http_access allow all </p>
<p>　　#allow all sites to use us as a sibling </p>
<p>　　icp_access allow all </p>
<p>　　#test the following sites to check that we are connected </p>
<p>　　dns_testnames internic.net usc.edu cs.colorado.edu mit.edu yale.edu </p>
<p>　　#run as the squid user </p>
<p>　　cache_effective_user squid squid </p>
<p>　　这个配置文件允许所有人使用Squid，创建了100M缓存，使用32M内存，在缺省位置 <br>"/usr/local/squid/cache"缓存数据，所有缓存数据以组squid和用户squid身份保存，端口为3128。 <br>虽然这个配置很不安全，但是它已经能使用了。 </p>
<p><br>4. 运行Squid </p>
<p>　　首先以root身份登陆。运行如下命令： </p>
<p>　　％/usr/local/squid/bin/squid &#8211;z </p>
<p>　　该命令会产生Squid所有的缓存目录。 </p>
<p>　　如果你想前台执行Squid,接着执行命令： </p>
<p>　　％/usr/local/squid/bin/squid -NCd1 </p>
<p>　　该命令正式启动Squid。如果一切正常，你会看到一行输出 </p>
<p>　　Ready to serve requests. </p>
<p>　　如果想后台运行Squid，把它做为一个精灵进程，执行命令： </p>
<p>　　％/usr/local/squid/bin/squid </p>
<p>　　观察Squid是否运行使用命令： </p>
<p>　　% squid -k check </p>
<p>　　输出会告诉你Squid的当前状态。 </p>
<p><br>　　好了，文章先写到这里，其实这里介绍的都是最基本的东西，Squid有好多高级的功能， <br>如做WEB服务器的高速缓存，做二级代理服务器，做为防火墙，以及怎样设定过滤规则等，这里 <br>就不详述了，如果有机会再奉献给大家。 <br>&nbsp;<br></p><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/30286.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-07-20 11:21 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/07/20/30286.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Seomoz发布Web2.0排名</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28336.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Mon, 11 Jun 2007 17:42:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28336.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/28336.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28336.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/28336.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/28336.html</trackback:ping><description><![CDATA[今天，著名的搜索引擎营销公司<a title=SEOmoz href="http://www.seomoz.org/"><u><font color=#0000ff>SEOmoz</font></u></a>发布了<a title=2007年度Web2.0网站评选结果 href="http://www.seomoz.org/article/2007-web20"><u><font color=#0000ff>2007年度Web2.0评选结果</font></u></a>。
<p>　　SEOmoz 组织25名在Web2.0领域的专家组成一个专业团队，对数百个Web2.0网站进行评估，从41个种类中分别挑选出最受欢迎的前三名。不过此评选只针对英文的Web2.0网站进行，其他语言的Web2.0网站并未出现其中。</p>
<p>　　下面是获奖的网站名单：</p>
<table width=494 align=center border=1>
    <tbody>
        <tr bgColor=#c0c0c0>
            <td style="COLOR: #cc0000; TEXT-ALIGN: center" width=110>类别 </td>
            <td style="COLOR: #cc0000; TEXT-ALIGN: center" width=105>第一名 </td>
            <td style="COLOR: #cc0000; TEXT-ALIGN: center" width=105>第二名 </td>
            <td style="COLOR: #cc0000; TEXT-ALIGN: center" width=146>第三名 </td>
        </tr>
        <tr>
            <td>博客搜索类 </td>
            <td>Technorati </td>
            <td>Bloglines </td>
            <td>Findory </td>
        </tr>
        <tr>
            <td>书签类 </td>
            <td>Ma.gnolia </td>
            <td>Furl </td>
            <td>Clipmarks </td>
        </tr>
        <tr>
            <td>图书类 </td>
            <td>Lulu </td>
            <td>Biblio </td>
            <td>Library Thing </td>
        </tr>
        <tr>
            <td>商业类 </td>
            <td>Squidoo </td>
            <td>Instant Bull </td>
            <td>Shopify </td>
        </tr>
        <tr>
            <td>城市搜索和评论类 </td>
            <td>Yelp </td>
            <td>Judy's Book </td>
            <td>Yahoo! Local </td>
        </tr>
        <tr>
            <td>分类和目录类 </td>
            <td>Craigslist </td>
            <td>Oodle </td>
            <td>vFlyer </td>
        </tr>
        <tr>
            <td>协作写作和文字处理类 </td>
            <td>Google Docs and Spreadsheets </td>
            <td>Writeboard </td>
            <td>ThinkFree </td>
        </tr>
        <tr>
            <td height=20>通信类 </td>
            <td height=20>Meebo </td>
            <td height=20>Campfire </td>
            <td height=20>MailEmotion </td>
        </tr>
        <tr>
            <td>内容聚合和管理类 </td>
            <td>Wufoo </td>
            <td>ProjectStat.us </td>
            <td>EditGrid </td>
        </tr>
        <tr>
            <td>数字存储和远程访问类 </td>
            <td>Omnidrive </td>
            <td>Esnips </td>
            <td>TotoExpress </td>
        </tr>
        <tr>
            <td height=22>活动类 </td>
            <td height=22>Upcoming </td>
            <td height=22>Eventful </td>
            <td height=22>Confabb </td>
        </tr>
        <tr>
            <td>Feed管理类 </td>
            <td>Feedburner </td>
            <td>Attensa </td>
            <td>BlogBridge </td>
        </tr>
        <tr>
            <td>笑话类 </td>
            <td>Cocktail Builder </td>
            <td>One Sentence </td>
            <td>Fuzzmail </td>
        </tr>
        <tr>
            <td>游戏类 </td>
            <td>Arcaplay </td>
            <td>Games2Web </td>
            <td>Guess-The-Google </td>
        </tr>
        <tr>
            <td>保健类 </td>
            <td>PEERtrainer </td>
            <td>Medstory </td>
            <td>Healia </td>
        </tr>
        <tr>
            <td>维基服务类 </td>
            <td>Wetpaint </td>
            <td>PBwiki </td>
            <td>Stikipad </td>
        </tr>
        <tr>
            <td>排名和投票类 </td>
            <td>43 Things </td>
            <td>Statsaholic </td>
            <td>Listdump </td>
        </tr>
        <tr>
            <td>地图类 </td>
            <td>Google Maps </td>
            <td>Wayfaring </td>
            <td>Frappr </td>
        </tr>
        <tr>
            <td height=17>营销类 </td>
            <td height=17>Intellicontact </td>
            <td height=17>Conduit </td>
            <td height=17>PlugIM </td>
        </tr>
        <tr>
            <td>整合服务类 </td>
            <td>Ning </td>
            <td>Boxxet </td>
            <td>Coverpop </td>
        </tr>
        <tr>
            <td>移动技术类 </td>
            <td>Twitter </td>
            <td>Plusmo </td>
            <td>JuiceCaster </td>
        </tr>
        <tr>
            <td>音乐类 </td>
            <td>Pandora </td>
            <td>Last.fm </td>
            <td>Discrevolt </td>
        </tr>
        <tr>
            <td>网络桌面类 </td>
            <td>Goowy </td>
            <td>Desktoptwo </td>
            <td>EyeOS </td>
        </tr>
        <tr>
            <td>办公应用类 </td>
            <td>Google Apps </td>
            <td>Zoho </td>
            <td>Backpack </td>
        </tr>
        <tr>
            <td>慈善事业类 </td>
            <td>Care2 </td>
            <td>Donor Choose </td>
            <td>Be Green Now </td>
        </tr>
        <tr>
            <td>图片和数字照片类 </td>
            <td>Flickr </td>
            <td>Picasa </td>
            <td>Picnik </td>
        </tr>
        <tr>
            <td>播客服务类 </td>
            <td>Odeo </td>
            <td>PodShow </td>
            <td>PodOmatic </td>
        </tr>
        <tr>
            <td>专业网络类 </td>
            <td>LinkedIn </td>
            <td>Spoke </td>
            <td>Xing </td>
        </tr>
        <tr>
            <td>提问和建议类 </td>
            <td>Yahoo! Answers </td>
            <td>Minti </td>
            <td>Say-So </td>
        </tr>
        <tr>
            <td>房地产类 </td>
            <td>Zillow </td>
            <td>HousingMaps </td>
            <td>iiProperty </td>
        </tr>
        <tr>
            <td>零售类 </td>
            <td>Threadless </td>
            <td>Etsy </td>
            <td>WipBox </td>
        </tr>
        <tr>
            <td>搜索类 </td>
            <td>Rollyo </td>
            <td>Swicki </td>
            <td>Pipl </td>
        </tr>
        <tr>
            <td>社交网站类 </td>
            <td>Facebook </td>
            <td>Mingle2 </td>
            <td>Pipl </td>
        </tr>
        <tr>
            <td>社交新闻类 </td>
            <td>Digg </td>
            <td>Reddit </td>
            <td>Newsvine </td>
        </tr>
        <tr>
            <td>社交标签类 </td>
            <td>Del.icio.us </td>
            <td>StumbleUpon </td>
            <td>BlinkList </td>
        </tr>
        <tr>
            <td height=24>首页类 </td>
            <td height=24>Netvibes </td>
            <td height=24>PageFlakes </td>
            <td height=24>Personalized Google </td>
        </tr>
        <tr>
            <td height=24>旅游类 </td>
            <td height=24>Farecast </td>
            <td height=24>Kayak </td>
            <td height=24>RealTravel </td>
        </tr>
        <tr>
            <td height=24>视频类 </td>
            <td height=24>YouTube </td>
            <td height=24>Dailymotion </td>
            <td height=24>Metacafe </td>
        </tr>
        <tr>
            <td>视觉艺术类 </td>
            <td>ColorBlender </td>
            <td>Swivel </td>
            <td>The Broth </td>
        </tr>
        <tr>
            <td>网页开发和设计类 </td>
            <td>CakePHP </td>
            <td>Prototype Javascript Framework </td>
            <td>Yahoo! UI </td>
        </tr>
        <tr>
            <td>维基类 </td>
            <td>YourMinis </td>
            <td>SpringWidgets </td>
            <td>Flock </td>
        </tr>
    </tbody>
</table>
<br>原文: <a href="http://www.web2week.com/archives/2007/05/seomozweb20.html">http://www.web2week.com/archives/2007/05/seomozweb20.html</a>
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/28336.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-06-12 01:42 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28336.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>PC World近日发布了2007年度最佳产品前100名[荐]</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28335.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Mon, 11 Jun 2007 17:32:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28335.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/28335.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28335.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/28335.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/28335.html</trackback:ping><description><![CDATA[<a href="http://www.pcworld.com/">PC World</a>近日发布了2007年度最佳产品前100名，评选的范围包括电子产品、网站和服务。值得一提的是，其中包含了很多Web2.0网站。<br><br>
<h2 class=artSubtitle>The Top 100 Products, in Ranked Order</h2>
<ol>
    <li>Google Apps Premier Edition <a href="http://blogs.pcworld.com/techlog/archives/003783.html" target=_blank><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.google.com/a/help/intl/en/admins/editions.html" target=_blank><u><font color=#800080>Vendor Site</font></u></a>
    <li>Intel Core 2 Duo <a href="http://www.pcworld.com/article/id,126342/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,22879556-sortby,retailer/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Nintendo Wii <a href="http://www.pcworld.com/article/id,127869/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,27737371/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Verizon FiOS <a href="http://www22.verizon.com/content/ConsumerFios" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>RIM Blackberry 8800 <a href="http://www.pcworld.com/article/id,130213-c,cellphones/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,32970683/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Parallels Desktop <a href="http://www.pcworld.com/article/id,126824/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,35915982/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Pioneer Elite 1080p PRO-FHD1 <a href="http://www.pcworld.com/product/pricing/prtprdid,28081748/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Infrant Technologies ReadyNAS NV <a href="http://www.pcworld.com/product/pricing/prtprdid,28923799/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Apple Mac OS X 10.4 "Tiger" <a href="http://www.pcworld.com/article/id,130282/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,8422356/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Adobe Premiere Elements 3 <a href="http://www.pcworld.com/article/id,127281/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,27418009/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Apple TV <a href="http://www.pcworld.com/article/id,130468/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,32453085/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Samsung SyncMaster 244T <a href="http://www.pcworld.com/article/id,127306-page,1-c,monitors/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,13468535/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>BillP Studios WinPatrol <a href="http://www.pcworld.com/downloads/file/fid,22728-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>HP dv9000t <a href="http://www.pcworld.com/article/id,131020-c,notebooks/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,32703508/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>McAfee SiteAdvisor <a href="http://www.pcworld.com/downloads/file/fid,62594-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Canonical Ubuntu 7.04 <a href="http://www.pcworld.com/article/id,130110/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>Pandora.com <a href="http://blogs.pcworld.com/tipsandtweaks/archives/001913.html" target=_blank><u><font color=#0000ff>Review</font></u></a>
    <li>Microsoft Xbox 360 Elite <a href="http://www.pcworld.com/article/id,131416/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,35111287/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Paint.net <a href="http://www.pcworld.com/downloads/file/fid,64533-order,1-page,1/description.html"><u><font color=#800080>Download</font></u></a>
    <li>Hitachi Deskstar 7K1000 <a href="http://www.pcworld.com/article/id,131417-c,harddrives/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,36187293/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>SightSpeed 6 <a href="http://www.pcworld.com/downloads/file/fid,23087-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Kayak <a href="http://www.kayak.com/" target=_blank><u><font color=#800080>Web Site</font></u></a>
    <li>Nikon D40X <a href="http://www.pcworld.com/product/pricing/prtprdid,34451888/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>New York Times Times Reader <a href="http://select.nytimes.com/gst/timesreader.html" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Samsung BlackJack <a href="http://www.pcworld.com/article/id,128732-c,cellphones/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,29936786/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Apple iPod (80GB) <a href="http://www.pcworld.com/product/specs/id,29313-c,mp3players/specs.html"><u><font color=#0000ff>Test Report</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,26037922/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Yahoo Mail Beta <a href="http://advision.webevents.yahoo.com/mailbeta/" target=_blank><u><font color=#800080>Vendor Site</font></u></a>
    <li>TomTom One <a href="http://www.pcworld.com/article/id,126974/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,24580125/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Dell UltraSharp 2407WFP <a href="http://www.pcworld.com/article/id,127284-page,1-c,monitors/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,20885367/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Zoho <a href="http://www.pcworld.com/article/id,128248-page,2-c,sites/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>Google Gmail <a href="http://www.gmail.com/" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Sling Media Slingbox Pro <a href="http://www.pcworld.com/product/pricing/prtprdid,27670756/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Red Octane Guitar Hero 2 <a href="http://www.pcworld.com/video/id,430-page,1-bid,0/video.html"><u><font color=#0000ff>Video</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,35121454/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Google YouTube <a href="http://www.youtube.com/" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Mozilla Firefox 2 <a href="http://www.pcworld.com/downloads/file/fid,23160-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Google Picasa <a href="http://www.pcworld.com/downloads/file/fid,64528-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Nikon D80 <a href="http://www.pcworld.com/article/id,127910-c,cameras/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,23760800/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Skype 3 <a href="http://www.pcworld.com/downloads/file/fid,23523-order,1-page,1/description.html"><u><font color=#800080>Download</font></u></a>
    <li>Aliph Jawbone <a href="http://blogs.pcworld.com/digitalworld/archives/2006/12/wireless_versio_1.html" target=_blank><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,36002696/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Shure E500PTH <a href="http://www.pcworld.com/article/id,126509/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,21150194/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>CyberPower Gamer Infinity Ultimate <a href="http://www.pcworld.com/article/id,131171-c,desktoppcs/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,29853/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Asus w5fe-2P025E <a href="http://www.pcworld.com/article/id,131031/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,29879/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>AVS Forum<a href="http://www.avsforum.com/" target=_blank><u><font color=#0000ff> Web Site</font></u></a>
    <li>Yahoo Flickr <a href="http://www.pcworld.com/article/id,119985-page,3-c,sites/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>Apple iPod Nano (8GB) <a href="http://www.pcworld.com/product/pricing/prtprdid,26036013/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Nikon Coolpix S50c <a href="http://www.pcworld.com/product/pricing/prtprdid,33724692/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Dell UltraSharp 2007WFP <a href="http://www.pcworld.com/article/id,125925-c,monitors/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,18864442/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>OCZ Trifecta Secure Digital Memory Card <a href="http://www.pcworld.com/product/pricefinder/browse/category.html?id=10034&amp;filter=vendors[],PGOC|vendors[],PGOCZ"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Archos 704 Wi-Fi <a href="http://www.pcworld.com/article/id,130611/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,29884/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Lenovo ThinkPad X60 Tablet <a href="http://www.pcworld.com/article/id,131030/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,18451138/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Canon EOS 30D <a href="http://www.pcworld.com/article/id,125451/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,17423818/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>LaLa.com <a href="http://blogs.pcworld.com/staffblog/archives/001571.html" target=_blank><u><font color=#0000ff>Review</font></u></a>
    <li>Google Maps for Mobile <a href="http://www.google.com/gmm/index.html" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Canon Pixma iP4300 <a href="http://www.pcworld.com/article/id,128622-c,printers/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,24847869/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Kaspersky Anti-Virus <a href="http://www.pcworld.com/article/id,130873/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,9126300/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Microsoft Office 2007 <a href="http://www.pcworld.com/article/id,128266/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,29529/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Asus Crosshair <a href="http://www.pcworld.com/product/specs/id,29717/specs.html"><u><font color=#0000ff>Test Report</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,23143525/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Digg.com <a href="http://digg.com/" target=_blank><u><font color=#0000ff>Web Site</font></u></a>
    <li>Dell XPS M1210 <a href="http://www.pcworld.com/article/id,131029/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,34505012/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Creative Zen V Plus (8GB) <a href="http://www.pcworld.com/article/id,127376/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,30886199/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Apple iTunes <a href="http://www.pcworld.com/downloads/file/fid,23102-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Gigabyte GA-965P-DQ6 <a href="http://www.pcworld.com/product/specs/id,29712-chid,6287/specs.html"><u><font color=#0000ff>Test Report</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,22624820/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Iomega NAS 1TB <a href="http://www.pcworld.com/product/pricing/prtprdid,19070854/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Fujifilm FinePix F40fd <a href="http://www.pcworld.com/product/pricing/prtprdid,32672991/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Canon MP600 <a href="http://www.pcworld.com/article/id,128221-page,1-c,printers/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,25948985/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>37Signals Backpack <a href="http://www.pcworld.com/article/id,128248-page,11-c,sites/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>LG Electronics BH100 <a href="http://blogs.pcworld.com/staffblog/archives/003408.html" target=_blank><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,32683433/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Craigslist.org <a href="http://www.craigslist.org/" target=_blank><u><font color=#0000ff>Web Site</font></u></a>
    <li>BBB.org <a href="http://www.bbb.org/" target=_blank><u><font color=#0000ff>Web Site</font></u></a>
    <li>Fujitsu ScanSnap s500 <a href="http://www.pcworld.com/article/id,129085/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,18601595/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>NEC MultiSync 90GX2 <a href="http://www.pcworld.com/article/id,124349-page,1-c,monitors/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,17631073/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Adobe CS3 <a href="http://www.pcworld.com/article/id,128728/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,29682/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Dell XPS 410 <a href="http://www.pcworld.com/article/id,131173-c,desktoppcs/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,23142729/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Meebo <a href="http://www.pcworld.com/article/id,131664-c,webservices/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>SysInternals/Microsoft Process Explorer <a href="http://www.pcworld.com/downloads/file/fid,23780-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Wacom Graphire Bluetooth 6x8 Pen Tablet <a href="http://www.pcworld.com/product/pricing/prtprdid,8057504/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>VMWare Player <a href="http://www.vmware.com/download/player/" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Emusic <a href="http://www.emusic.com/" target=_blank><u><font color=#0000ff>Web Site</font></u></a>
    <li>TiVo Series3 HD Digital Media Recorder <a href="http://www.pcworld.com/article/id,126965/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,26543910/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Netvibes <a href="http://www.netvibes.com/" target=_blank><u><font color=#800080>Web Site</font></u></a>
    <li>TripAdvisor <a href="http://www.tripadvisor.com/" target=_blank><u><font color=#0000ff>Web Site</font></u></a>
    <li>Apple MacBook Pro <a href="http://www.pcworld.com/article/id,124879/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,28215798/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Avira AntiVir Personal Edition Classic <a href="http://www.pcworld.com/article/id,124487/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/id,27558/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Ning.com <a href="http://www.pcworld.com/article/id,130604/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>Check Point Software ZoneAlarm Internet Security Suite <a href="http://www.pcworld.com/article/id,129514/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.digitalriver.com/dr/v2/ec_Main.Entry17C?SID=89508&amp;SP=10023&amp;CID=0&amp;PID=699281&amp;PN=1&amp;V1=699281&amp;CUR=840&amp;DSP=&amp;PGRP=0&amp;ABCODE=&amp;CACHE_ID=0" target=_blank><u><font color=#0000ff>Download Store</font></u></a>
    <li>SanDisk Sansa Connect <a href="http://www.pcworld.com/article/id,131052-c,mp3players/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,35421113/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>VirusTotal.com <a href="http://blogs.pcworld.com/tipsandtweaks/archives/003589.html" target=_blank><u><font color=#0000ff>Review</font></u></a>
    <li>Flurry <a href="http://blogs.pcworld.com/staffblog/archives/003961.html" target=_blank><u><font color=#0000ff>Review</font></u></a>
    <li>Oki Printing Solutions C3400n <a href="http://www.pcworld.com/article/id,127556-c,printers/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,26184166/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>nVidia GeForce 8800 GTX <a href="http://www.pcworld.com/product/pricefinder/search?qt=8800+gtx&amp;id=1"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Microsoft Windows Media Player 11 <a href="http://www.pcworld.com/downloads/file/fid,63730-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Netflix Watch Now <a href="http://www.netflix.com/" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Audacity <a href="http://www.pcworld.com/downloads/file/fid,22513-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Congoo <a href="http://www.pcworld.com/article/id,130979-page,9-c,searchengines/article.html"><u><font color=#0000ff>Review</font></u></a>
    <li>Wladimir Palant Adblock Plus <a href="http://www.pcworld.com/downloads/file/fid,64454-order,1-page,1/description.html"><u><font color=#0000ff>Download</font></u></a>
    <li>Buffalo Nfiniti Dual Band Gigabit Router &amp; Access Point <a href="http://www.pcworld.com/product/pricing/prtprdid,31777292/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Panasonic HDC-SD1 <a href="http://www.pcworld.com/article/id,129478/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,32908613/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Logitech Harmony 880 <a href="http://www.pcworld.com/article/id,120438/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,7803953/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a>
    <li>Sling Media SlingPlayer Mobile <a href="http://us.slingmedia.com/page/slingplayermobile.html" target=_blank><u><font color=#0000ff>Vendor Site</font></u></a>
    <li>Shure SE210 <a href="http://www.pcworld.com/article/id,129479/article.html"><u><font color=#0000ff>Review</font></u></a> | <a href="http://www.pcworld.com/product/pricing/prtprdid,34312253/pricing.html"><u><font color=#0000ff>Check Prices</font></u></a></li>
</ol>
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/28335.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-06-12 01:32 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/06/12/28335.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一种正在网络上慢慢兴起的数据交换格式 JSON</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/05/31/27864.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Thu, 31 May 2007 08:32:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/05/31/27864.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/27864.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/05/31/27864.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/27864.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/27864.html</trackback:ping><description><![CDATA[JSON是一种正在网络上慢慢兴起的数据交换格式。就象AJAX并不是什么新技术一样，JSON也没有提供什么新格式，它基于ECMAScript标准中对ObjectLiteral的定义(ECMA-262, 11.1.5)，早就被javascript支持。格式定义非常简单，就是通过一组键值对来定义一个对象。在javascript中，你可以直接将这种格式的数据赋值给一个变量，然后通过键名取值。相对于使用xml来作为数据交换格式，如果要在javascript里使用，首先需要创建一个DOMParser，然后通过DOM接口访问节点对象，非常繁琐，更不用说不同浏览器的实现中DOMParser的实现和DOM接口都有诸多不同。为什么大量的AJAX应用中宁可直接返回一个HTML片断而不是直接把XML交给javascript处理，一个主要原因就是处理XML的过程比较复杂。JSON最重要的贡献就是简化了解析数据的过程。 del.icio.us提供的在网页上显示书签的javascript脚本就基于JSON，看一下这个脚本，再设想一下通过AJAX读取del.icio.us提供的RSS接口来实现这个功能，就能体会JSON的巧妙了。除此之外，更有人提出类似XSLT的JSONT，可以将JSON格式的内容转换成其他形式，虽然还暂时还没有XSLT灵活和强大，至少展示了一种可能性。 JSON解决的另一个传统AJAX中xmlhttprequest不能解决的问题就是跨域链接的问题。基于安全考虑，各种浏览器缺省都不允许xmlhttprequest跨域名链接，abc.com页面上的xmlhttprequest是无法连接def.com的内容的。在网页中，JSON可以采用引入script元素的方式导入数据，html中的script可以指定非本地脚本，跨域链接的问题得以解决。但使用这样的方式导入JSON数据，是一个同步的过程（是否可以用defer属性来实现异步？），这点上不如xmlhttpreqeust灵活。 
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/27864.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-05-31 16:32 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/05/31/27864.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>正则表达式[精]</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/05/30/27793.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Wed, 30 May 2007 12:00:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/05/30/27793.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/27793.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/05/30/27793.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/27793.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/27793.html</trackback:ping><description><![CDATA[<p>1．什么是正则表达式</p>
<p><br>简单的说，正则表达式是一种可以用于文字模式匹配和替换的强有力的工具。是由一系列普通字符和特殊字符组成的能明确描述文本字符串的文字匹配模式。</p>
<p>正则表达式并非一门专用语言，但也可以看作是一种语言，它可以让用户通过使用一系列普通字符和特殊字符构建能明确描述文本字符串的匹配模式。除了简单描述这些模式之外，正则表达式解释引擎通常可用于遍历匹配，并使用模式作为分隔符来将字符串解析为子字符串，或以智能方式替换文本或重新设置文本格式。正则表达式为解决与文本处理有关的许多常见任务提供了有效而简捷的方式。</p>
<p>正则表达式具有两种标准：</p>
<p>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基本的正则表达式(BRE &#8211; Basic Regular Expressions)</p>
<p>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 扩展的正则表达式(ERE &#8211; Extended Regular Expressions)。</p>
<p>ERE包括BRE功能和另外其它的概念。</p>
<p>&nbsp;</p>
<p>正则表达式目前有两种解释引擎：</p>
<p>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于字符驱动(text-directed engine)</p>
<p>&#183;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 基于正则表达式驱动(regex-directed engine) </p>
<p>Jeffery Friedl把它们称作DFA和NFA解释引擎。</p>
<p>&nbsp;</p>
<p>约定：</p>
<p>为了描述起来方便，在本文中做一些约定：</p>
<p>1.&nbsp;&nbsp;&nbsp;&nbsp; 本文所举例的所有表达时都是基于NFA解释引擎的。</p>
<p>2.&nbsp;&nbsp;&nbsp;&nbsp; 正则表达式，也就是匹配模式，会简写为Regex。</p>
<p>3.&nbsp;&nbsp;&nbsp;&nbsp; Regex的匹配目标，也就是目标字符串，会简写为String。</p>
<p>4.&nbsp;&nbsp;&nbsp;&nbsp; 匹配结果用会用黄色底色标识。</p>
<p>5.&nbsp;&nbsp;&nbsp;&nbsp; 用1\+1=2 括起来的表示这是一个regex。</p>
<p>6.&nbsp;&nbsp;&nbsp;&nbsp; 举例会用以下格式：</p>
<p>&nbsp;</p>
<p>test<br>This is a test<br>会匹配test，testcase等</p>
<p><br>&nbsp;&nbsp; <br>2．正则表达式的起源<br>正则表达式的&#8220;祖先&#8221;可以一直上溯至对人类神经系统如何工作的早期研究。Warren McCulloch 和 Walter Pitts 这两位神经生理学家研究出一种数学方式来描述这些神经网络。</p>
<p>1956 年, 一位叫 Stephen Kleene 的美国数学家在 McCulloch 和 Pitts 早期工作的基础上，发表了一篇标题为&#8220;神经网事件的表示法&#8221;的论文，引入了正则表达式的概念。正则表达式就是用来描述他称为&#8220;正则集的代数&#8221;的表达式，因此采用&#8220;正则表达式&#8221;这个术语。 </p>
<p>随后，发现可以将这一工作应用于使用Ken Thompson 的计算搜索算法的一些早期研究，Ken Thompson是Unix 的主要发明人。正则表达式的第一个实用应用程序就是 Unix 中的qed 编辑器。从那时起直至现在正则表达式都是基于文本的编辑器和搜索工具中的一个重要部分。具有完整语法的正则表达式使用在字符的格式匹配方面上，后来被应用到熔融信息技术领域。自从那时起，正则表达式经过几个时期的发展，现在的标准已经被ISO(国际标准组织)批准和被Open Group组织认定。 </p>
<p>哇哈哈...不可天下人负我!!!<br>穷！机子天天蓝屏......<br>&nbsp; </p>
<p>&nbsp;<br>3. 正则表达式使用祥解<br>最简单的正则表达式相信大家都已熟悉并且经常使用，那就是文字字符串。特定的字符串可通过文字本身加以描述；像 test这样的Regex模式可精确匹配输入的字符串&#8221;test&#8221;，但是它也可以匹配this is a testcase，这就不是我们想要得结果。</p>
<p>当然，使用正则表达式匹配等于它自身的精确字符串是没有价值的实现，不能体现正则表达式的真正作用。但是，假如要查找的不是test，而是所有以字母 t 开头的单词，或所有4个字母的单词，那该怎么办？这超出了文字字符串的合理范围。所以我们才需要深入地研究正则表达式。</p>
<p>3.1基本语法<br>虽然正则表达式并非一门专用语言，但它也有一些特殊的规定，也可以称之为基本语法。</p>
<p>正则表达式是由普通字符（例如字符 a 到 z）以及特殊字符（称为元字符）组成的文字模式。该模式描述在查找文字主体时待匹配的一个或多个字符串。正则表达式作为一个模板，将某个字符模式与所搜索的字符串进行匹配。</p>
<p>构造正则表达式的方法和创建数学表达式的方法一样。也就是用多种元字符与操作符将小的表达式结合在一起来创建更大的表达式。</p>
<p>可以通过在一对分隔符之间放入表达式模式的各种组件来构造一个正则表达式。</p>
<p>3.1.1普通字符<br>由所有那些未显式指定为元字符的打印和非打印字符组成。这包括所有的大写和小写字母字符，所有数字，所有标点符号以及一些符号。</p>
<p>3.1.2非打印字符<br>非打印字符也是普通字符，单独列出来便于参考。 </p>
<p>哇哈哈...不可天下人负我!!!<br>穷！机子天天蓝屏......<br>&nbsp; <br>非打印字符参考（有错大家矫正，JS手册都有）<br>\cx <br>匹配由x指明的控制字符。例如， \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则，将 c 视为一个原义的 'c' 字符。</p>
<p>\f <br>匹配一个换页符。等价于 \x0c 和 \cL。</p>
<p>\n <br>匹配一个换行符。等价于 \x0a 和 \cJ。</p>
<p>\r <br>匹配一个回车符。等价于 \x0d 和 \cM。</p>
<p>\s <br>匹配任何空白字符，包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。</p>
<p>\S <br>匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。</p>
<p>\t <br>匹配一个制表符。等价于 \x09 和 \cI。</p>
<p>\v <br>匹配一个垂直制表符。等价于 \x0b 和 \cK。</p>
<p>Regex中可以使用非打印字符。\t会匹配一个tab字符(ASC||)，\r 会匹配一个回车(0x0D)，\n 会匹配一个换行符(0x0A)。应该注意的是：Windows使用\r\n表示一行的结束，而UNIX使用\n 。</p>
<p>同样，我们可以在Regex中使用16进制的ASCⅡ码或者ANSI标准码。在拉丁语中，版权符号的代码是0xA9，所以我们也可以这样来匹配版权符号 \xA9 。另外一个匹配tab的写法是：\x09 。但是注意，第一位的&#8220;0&#8221;必须去掉。</p>
<p><br>特殊字符<br>特殊字符也叫做元字符，保留字符（Metacharactor），在Regex中表示特殊的意义，大部分的意思在不同的上下文中的意义是不同的，这里只列出最普遍的意义。</p>
<p>特殊字符共有11个：<br>$<br>匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性，则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身，请使用 \$。</p>
<p>( )<br>标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符，请使用 \( 和 \)。</p>
<p>*<br>匹配前面的子表达式零次或多次。要匹配 * 字符，请使用 \*。</p>
<p>+<br>匹配前面的子表达式一次或多次。要匹配 + 字符，请使用 \+。</p>
<p>.<br>匹配除换行符 \n之外的任何单字符。要匹配 .，请使用 \。</p>
<p>[ <br>标记一个中括号表达式的开始。要匹配 [，请使用 \[。</p>
<p>?<br>匹配前面的子表达式零次或一次，或指明一个非贪婪限定符。要匹配 ? 字符，请使用 \?。</p>
<p>\<br>将下一个字符标记为或特殊字符、或原义字符、或反向引用、或八进制转义符。例如， 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\"，而 '\(' 则匹配 "("。</p>
<p>^<br>匹配输入字符串的开始位置，除非在方括号表达式中使用，此时它表示不接受该字符集合。要匹配 ^ 字符本身，请使用 \^。</p>
<p>{<br>标记限定符表达式的开始。要匹配 {，请使用 \{。</p>
<p>|<br>指明两项之间的一个选择。要匹配 |，请使用 \|。</p>
<p>在元字符前加 \ 转义符，可以把特殊字符当作普通字符来使用。</p>
<p>比如：如要要匹配 1+1=2 ，正确的正则表达式应该为1\+1=2。否则， + 会被当作特殊字符对待。</p>
<p>除了特殊字符，所有的其他字符都不应该加 \ 。因为 \ 也是一个特殊字符。\ 和普通字符组合在一起也可以创造一种特殊的意义。比如 \d 表示匹配所有的数字。</p>
<p>作为程序员，单引号和双引号不是特殊字符会也许让我们感到很惊讶。但这是正确的。因为我们在编程的时候，编程语言会知道引号之间的哪些字符表示特殊意义，编译器在把字符串x传递给regex解释引擎之前，会把它们处理成regex。比如，在C#中，如果我们要匹配 1\+1=2 ，在程序中我们要这样写： &#8220;1\\+1=2&#8221; ，C#编译器会把 &#8220;\\&#8221; ，处理为一个&#8220;\&#8221; 。同样，如果要匹配 C:\Temp ，首先，正则表达式要这样写 C:\\Temp，然后在程序中我们应该这样写：&#8220; C:\\\\temp&#8221;。 </p>
<p>哇哈哈...不可天下人负我!!!<br>穷！机子天天蓝屏......<br>&nbsp; <br>&nbsp;</p>
<p><br>3.1.4字符集<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符集描述了一组字符，Regex解释器会认为匹配字符集中的一个字符就可以认为匹配成功。</p>
<p>字符集用[ ]括起来即可。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 比如gr[ae]y就可以匹配gray或者grey。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 字符集只能匹配一个字符，gr[ae]y就不能和graey匹配。字符集中的字符顺序是任意的，得到的结果都是唯一的。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 可以在字符集中用连字符&#8220;-&#8221;来表示一个范围。[0-9]的结果和[0123456789]的匹配结果都是相同的。字符集中的范围可以有多种。比如[0-9a-fA-F]表示匹配所有的16进制，包括大小写。也可以把范围和单个字符组合在一起用,[0-9a-fxA-FX]表示匹配所有的16进制或者一个字符X。字符集的顺序不会影响结果。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在字符集的开始标志&#8220;[&#8221;后面加上一个&#8220;^&#8221;符号，表示否定，表示匹配除字符集中定义的字符以外的所有字符。包括非打印字符和行结束符。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意：字符集匹配的一个字符，而不是一个位置。所以。q[^u]的意义不是&#8220;q后面的字符不是u&#8221;。而是&#8220;q后面的字符可以是除了u以外的所有字符&#8221;。</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; q[^u]不会和Iraq匹配。</p>
<p>但是会和Iraq is a country匹配，因为q后面的空格字符是一个&#8220;不是u的字符&#8221;。</p>
<p>3.1.5在字符集中使用元字符<br>字符集中的元字符只能是 &#8216;]&#8217;, &#8216;\&#8217;, &#8216;^&#8217;, 和 &#8216;-&#8216; 。</p>
<p>其他元字符在字符集中都失去了特殊意义，表示的只是一个普通字符。也不需要用加&#8220;\&#8221;。</p>
<p>比如：</p>
<p>匹配一个&#8220;*&#8221;或者&#8220;+&#8221;，用[*+]就足够了。即使给他们加上&#8220;\&#8221;，regex解释器也会把他们忽略掉。</p>
<p>&nbsp;</p>
<p>四种特殊字符的处理：</p>
<p>在字符集中要表示&#8220;]&#8221;，&#8220;^&#8221;和&#8220;-&#8221;需要在后面加上转义符&#8220;\&#8221;，来表示它们代表的分别是普通字符&#8220;]&#8221;，&#8220;^&#8221;和&#8220;-&#8221;。</p>
<p>也可以把它们放在一个不能表示特殊意义的位置，后一个方法比较好，因为他们不会影响可读性。</p>
<p>&#8220;^&#8221; <br>要想匹配一个&#8220;^&#8221;，可以把它放在除了紧跟&#8220;[&#8221;的任意一个位置。</p>
<p>Regex<br>String<br>Description</p>
<p>[x^]<br>A string with x and ^.<br>匹配x或者&#8220;^&#8221;</p>
<p>&nbsp;</p>
<p><br>&#8220;]&#8221; <br>可以把&#8220;]&#8221;放在紧跟着&#8220;[&#8221;的位置，或者使用否定字符集。</p>
<p>Regex<br>String<br>Description</p>
<p>[]x]<br>A string with x and ]<br>匹配x或者&#8220;]&#8221;</p>
<p>[^]x]<br>A string with x and ]<br>匹配除了x和&#8221;] &#8221;以外的所有字符</p>
<p><br>&#8220;\&#8221; <br>要想把&#8220;\&#8221;当作一个普通字符来匹配，而不是一个特殊字符，必须把&#8220;\&#8221;再用一个&#8220;\&#8221;括起来。</p>
<p><br>[\\x]<br>A string with x and \<br>匹配x或者&#8220;\&#8221;</p>
<p>&nbsp;</p>
<p><br>&#8220;-&#8221; <br>连字符可以放在紧跟着&#8220;[&#8221;的后面，或者正好&#8220;]&#8221;的前面，或者紧跟着&#8220;^&#8221;的后面。</p>
<p>&nbsp;</p>
<p>[-x]<br>A string with x and -<br>匹配x或者&#8220;-&#8221;</p>
<p>[x-]<br>A string with x and -<br>匹配x或者&#8220;-&#8221; </p>
<p>预定义字符集<br>因为很多字符集是经常使用的，所以Regex解释器预定义了一些常用字符集：</p>
<p>d<br>[0-9]<br>所有数字</p>
<p>\w<br>[a-zA-Z] <br>表示所有的字符，和文化字体有关</p>
<p>\s<br>[ \t\r\n] </p>
<p>空格，回车和tab。和文化字体有关</p>
<p>预订一字符集可以既可以用在字符集里面，也可以用在字符集外面。<br>\s\d<br>1&lt;space&gt;+&lt;space&gt;2&lt;space&gt;=&lt;space&gt;3<br>匹配后面紧跟着一个数字的空白符</p>
<p>[\s\d]<br>1&lt;space&gt;+&lt;space&gt;2&lt;space&gt;=&lt;space&gt;3<br>匹配一个单独的字符或者一个数字或者一个空白符</p>
<p>[\da-fA-F]和[0-9a-fA-F]的匹配结果是一样的。</p>
<p>&nbsp;</p>
<p>同样，在预定义字符集前面加一个&#8220;^&#8221;符号表示否定。它们也有预先定义好的表示：</p>
<p>\D<br>[^\d]<br>非数字</p>
<p>\W<br>[^\w] <br>非字符，和文化字体有关</p>
<p>\S<br>[^\s] <br>非空格，回车和tab。和文化字体有关</p>
<p>在&#8220;[]&#8221;使用否定预订一字符集时要特别心。[\D\S]不等于[^\d\s]。[^\d\s]会匹配除了数字和空白符以外的所有字符。而[\D\S]会匹配要么不是一个数字，要么是空白符。因为数字不是空白符，空白符也不是数字，所以[\D\S]会匹配任意的字符。</p>
<p>限定符<br>有时候不知道要匹配多少字符。为了能适应这种不确定性，正则表达式支持限定符的概念。这些限定符可以指定正则表达式的一个给定组件必须要出现多少次才能满足匹配。</p>
<p>下表给出了各种限定符及其含义的说明：</p>
<p>* 匹配前面的子表达式零次或多次。例如，zo* 能匹配 "z" 以及 "zoo"。 * 等价于{0,}。 <br>+ 匹配前面的子表达式一次或多次。例如，'zo+' 能匹配 "zo" 以及 "zoo"，但不能匹配 "z"。+ 等价于 {1,}。 <br>? 匹配前面的子表达式零次或一次。例如，"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。 <br>{n} n 是一个非负整数。匹配确定的 n 次。例如，'o{2}' 不能匹配 "Bob" 中的 'o'，但是能匹配 "food" 中的两个 o。 <br>{n,} n 是一个非负整数。至少匹配n 次。例如，'o{2,}' 不能匹配 "Bob" 中的 'o'，但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。 <br>{n,m} m 和 n 均为非负整数，其中n &lt;= m。最少匹配 n 次且最多匹配 m 次。刘， "o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。 <br>对一个很大的输入文档而言，章节数很轻易就超过九章，因此需要有一种方法来处理两位数或者三位数的章节号。限定符就提供了这个功能。下面的JScript 正则表达式可以匹配具有任何位数的章节标题：</p>
<p>/Chapter [1-9][0-9]*/<br>下面的 VBScript 正则表达式执行同样的匹配：</p>
<p>"Chapter [1-9][0-9]*"<br>请注意限定符出现在范围表达式之后。因此，它将应用于所包含的整个范围表达式，在本例中，只指定了从 0 到 9 的数字。</p>
<p>这里没有使用 '+' 限定符，因为第二位或后续位置上并不一定需要一个数字。同样也没有使用 '?' 字符，因为这将把章节数限制为只有两位数字。在 'Chapter' 和空格字符之后至少要匹配一个数字。</p>
<p>如果已知章节数限制只有99 章，则可以使用下面的 JScript 表达式来指定至少有一位数字，但不超过两个数字。</p>
<p>/Chapter [0-9]{1,2}/<br>对 VBScript 可以使用下述正则表达式：</p>
<p>"Chapter [0-9]{1,2}"<br>上述表达式的缺点是如果有一个章节号大于 99，它仍只会匹配前两位数字。另一个缺点是某些人可以创建一个 Chapter 0，而且仍能匹配。一个更好的用来匹配两位数的 JScript 表达式如下：</p>
<p>/Chapter [1-9][0-9]?/<br>或者</p>
<p>/Chapter [1-9][0-9]{0,1}/<br>对 VBScript 而言，下述表达式与上面等价：</p>
<p>"Chapter [1-9][0-9]?"<br>或者</p>
<p>"Chapter [1-9][0-9]{0,1}"<br>'*'、 '+'和 '?' 限定符都称之为贪婪的，也就是说，他们尽可能多地匹配文字。有时这根本就不是所希望发生的情况。有时则正好希望最小匹配。 </p>
<p>例如，你可能要搜索一个 HTML 文档来查找一处包含在 H1 标记中的章节标题。在文档中该文字可能具有如下形式：</p>
<p>&lt;H1&gt;Chapter 1 &#8211; Introduction to Regular Expressions&lt;/H1&gt;<br>下面的表达式匹配从开始的小于号 (&lt;) 到 H1 标记结束处的大于号之间的所有内容。</p>
<p>/&lt;.*&gt;/<br>VBScript 的正则表达式为：</p>
<p>"&lt;.*&gt;"<br>如果所要匹配的就是开始的 H1 标记，则下述非贪婪地表达式就只匹配 &lt;H1&gt;。</p>
<p>/&lt;.*?&gt;/<br>或者</p>
<p>"&lt;.*?&gt;"<br>通过在 '*'、 '+' 或 '?' 限定符后放置 '?'，该表达式就从贪婪匹配转为了非贪婪或最小匹配。 <br></p>
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/27793.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-05-30 20:00 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/05/30/27793.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转一篇非常好的MySQL优化的文章 </title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/05/19/27272.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Sat, 19 May 2007 11:22:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/05/19/27272.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/27272.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/05/19/27272.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/27272.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/27272.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 一、我们可以且应该优化什么？ <br><br>硬件 <br><br>操作系统/软件库 <br><br>SQL服务器(设置和查询) <br><br>应用编程接口(API) <br><br>应用程序 <br><br><br>-------------------------------------------------------------------------------- <br><br>二、优化硬件 <br><br>如果你需要庞大的数据库表(>2G)，你应该考虑使用64位的硬件结构，像Alpha、Sparc或即将推出的IA64。因为MySQL内部使用大量64位的整数，64位的CPU将提供更好的性能。 <br><br>对大数据库，优化的次序一般是RAM、快速硬盘、CPU能力。 <br><br>更多的内存通过将最常用的键码页面存放在内存中可以加速键码的更新。 <br><br>如果不使用事务安全(transaction-safe)的表或有大表并且想避免长文件检查，一台UPS就能够在电源故障时让系统安全关闭。 <br><br>对于数据库&nbsp;&nbsp;<a href='http://www.cnitblog.com/aliyiyi08/archive/2007/05/19/27272.html'>阅读全文</a><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/27272.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-05-19 19:22 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/05/19/27272.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>初步了解Bindows是什么[转]</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/05/10/26814.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Thu, 10 May 2007 02:25:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/05/10/26814.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/26814.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/05/10/26814.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/26814.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/26814.html</trackback:ping><description><![CDATA[<p><font face=Arial>通过 Bindows&#8482;，你可以开发Web页面中的全功能桌面应用程序，而无需任何插件。不论你是喜欢严格地按照最优方法进行 OOP，还是喜欢最近比较流行的 RAD，Bindows&#8482; 都为你提供了开发高效灵活的 Rich Internet Applications 的工具。 </font></p>
<p><font face=Arial>Bindows&#8482; 框架提供：</font></p>
<p><font face=Arial>基于类的面向对象 API； <br>一个完整的窗口系统，带有一组广泛支持的窗体小部件，包括菜单、表单、表格、滑块、量表以及更多； <br>开发零接触 SOA 客户端应用程序的最好的工具包； <br>内置 XML，SOAP 和 XML-RPC 支持； <br>从单用户到企业级的支持。 <br>&#8220;富&#8221;&#8220;瘦&#8221;兼备</font></p>
<p><font face=Arial>Bindows 突破了你必须要在富（界面）和瘦（客户端）之间选择的典范。<br>Bindows 应用程序可以如现代任何桌面应用程序一样华丽同时又极其瘦小（并且是零接触）。Bindows 应用程序是：</font></p>
<p><font face=Arial>华丽的，可定制的，有着桌面般的 GUI 组件 <br>运行于标准的浏览器中而无需任何安装的（零接触） <br>无需专门的客户端，运行时引擎，或者插件 <br>无依赖性</font></p>
<p><font face=Arial>Bindows 应用程序不依赖于：</font></p>
<p><font face=Arial>服务器 —— 任何服务器（Java，.NET，PHP 等都可以与 Bindows 结合使用） <br>后端平台 —— 任何后端硬件和后端软件 <br>操作系统 —— 客户端可以使用任何操作系统（只要它包含一个支持的浏览器） <br>语言 —— 所有的语言都支持。Bindows 支持 Unicode <br>浏览器 —— 大部分浏览器都支持（比如：Internet Explorer 5.5 及其更高版本，Mozilla 1.4 及其更高版本，Netscape 7.1 及其更高版本，Firefox，K-Meleon 和 Camino） </font></p>
<p><font face=Arial>Bindows 软件开发工具包（SDK）</font></p>
<p><font face=Arial>Bindows 是一个用来编写安全健壮的 Rich Internet Applications 的软件开发工具包（SDK）。Bindows 平台为瘦 Web 客户端提供了丰富的功能。Bindows 应用程序无需终端用户下载 —— 真正的零接触（不使用 Java、Flash 或者 ActiveX）</font></p>
<p><font face=Arial>XML 和 Web Services </font></p>
<p><font face=Arial>Bindows 应用程序通过 XML 文档来定义，并且支持标准的 SOAP Web Services. </font></p>
<p><font face=Arial>Bindows 开发环境</font></p>
<p><font face=Arial>支持企业级项目 <br>跨浏览器、跨平台支持 <br>不依赖于服务器的构架 <br>可以与新的和已存在的资源协同工作 <br>有统一的开发方式 </font></p>
<p><font face=Arial>Rich Internet Applications (RIA)</font></p>
<p><font face=Arial>Rich Internet Applications 将现代 PC 桌面程序般的界面与基于 Internet 的构架相结合，使得通过 Internet 浏览器访问到的程序拥有桌面软件一样的功能。RIA 允许 Web 站点在无需终端用户下载的情况下提供复杂的数据处理并有着快速的反应时间。</font></p>
<br><a href="http://news.csdn.net/n/20061221/99746.html">原文</a> 
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/26814.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-05-10 10:25 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/05/10/26814.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Sun第三财季盈利 存储表现欠佳</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/05/02/26572.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Wed, 02 May 2007 04:59:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/05/02/26572.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/26572.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/05/02/26572.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/26572.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/26572.html</trackback:ping><description><![CDATA[今天，Sun报告说公司第三季度继续赢利，尽管存储产品的表现持续欠佳。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 根据GAAP计算，Sun公司在这一季度净利润为6700万美元，每股收益2美分，这一业绩好于去年同期，2006财年第三季度，Sun的净亏损为2.17亿美元，每股亏损6美分。此前，分析师们估计该公司每股的收益会达1美分。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; Sun公司这一财季的收入是32.83亿美元，比去年同期增长3.3%，但未能达到分析师此前预期的34.2亿美元。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; Sun公司数据管理部门的收入，包括存储，共计5.5亿美元，同比下降0.2%，致使CEO Jonathan Schwartz在电话会议上抱怨说：&#8220;我们的存储业务有所进步，但表现没有达到预期。&#8221;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp;该业绩表明，Sun 还在为它的存储产品做着不懈的努力。该公司已经用41亿美元收购了StorageTek，去年一直在不断改进它的存储业务。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 尽管Sun公司的存储业务表现不佳，但它的归档产品和磁带产品表现不错，公司 CEO Jonathan Schwartz希望通过最近的开放其公司NAS源码的决定会扭转目前的局面。他说：&#8220;我们会继续开发Solaris，不只是在系统方面，还包括存储方面。&#8221;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp; &nbsp;CEO Jonathan Schwartz还抱怨美国和英国这一财季的业绩。他说：&#8220;我们预计第三季度只是季节性的问题----我们在美国和英国的市场处于困境，尤其是三月份。&#8221;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; Sun公司CFO Mike Lehman 也打算避开财务问题，也解释说是季节性问题，用户延迟购买他们的产品是因为Sun最近与日本富士通的合作。他说：&#8220;三月的这一季度一直是一个季节性问题。&#8221;&#8220;销售速度放缓是上星期Sun与富士通宣布会提供更高性能产品的必然结果。&#8221;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; 针对目前的情况，有分析师说，经历了重大调整的Sun可能正计划做出更大的变动。他说：&#8220;我们正密切关注Sun工作人员的一举一动。&#8221;<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp; Sun还介绍了它的新产品计划，这一周，该公司正计划推出它的第一个与视频有关的产品，该产品兼具服务器与存储的功能。它是一款新的刀片产品，兼备Intel, AMD, 和 Sun公司自己的SPARC处理器，将在六月份面市，命名为&#8220;Constellation&#8221;。<br>&nbsp;&nbsp;<br>&nbsp;&nbsp; 在随后的交易中，Sun股票下跌36美分，跌至5.59美元，跌幅为6.06%。 <a href="http://www.dostor.com/t/finance/2007-04-26/0002932681.shtml">原文</a> 
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/26572.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-05-02 12:59 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/05/02/26572.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序员不能不看的好文章[精转]</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/04/30/26414.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Sun, 29 Apr 2007 17:31:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/04/30/26414.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/26414.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/04/30/26414.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/26414.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/26414.html</trackback:ping><description><![CDATA[[转贴]学编程的人不能不看的好文章 [精华]&nbsp; 摘自中国java开发网<br><br>看了下面的这篇文章，深有感触，枣子碰到的问题也是我们大多数程序员的通病，也许我们大多数人都只是在做一些比较小型的软件，对软件运行的效率不在乎，就算对速度和效率在乎的也可能是一些在数据库操作方面的。大家看完了，也许会有很多感想，但这只是我同意枣子的个人观点。<br>(枣子原创--www.vcroad.net wutao8@263.net)<br>做为一名大四的学生,我面试过不少的单位，有成功的也有失败的，但是对我来说所有的失败在某种意义上都是一种成功，特别是我下面写的这些，写这篇文章的时候，我已经签了南京的一家软件公司，但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在<br>学习编程的一些情况我真的深有感触，这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分，1.是<br>我面试的具体经过2.是由面试想到的3.现今我应该做的。当然这些话很大程度上是我个人的意见，不可能完全得到大家的赞同，所以<br>在某些观点上如果哪位朋友觉得跟我的有很大出入，请不要介意，也不要对我攻击，就当我没有说过，欢迎和我联系共同探讨这些问题！我的EMAIL:wutao8@263.net<br>1.面试经过<br>大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知，通知我2月21日到苏州工业园区面试，接到面试后的几天我把一些专业<br>课温习了一遍，特别是C++和数据结构，由于大学几年里，我一直专研这些方面，加上通过了高级程序员的考试，对于一些常用的算法<br>我差不多也达到了烂熟于胸的地步，当时的感觉是如果问了我这些方面的问题我应该是没有问题的！<br>21日那天我被安排在4：30面试，由一位技术人员单独给我面试，在问了一些简单的问题之后他给我出了一道编程题目，题目是这样的：<br>(由于具体面试的题目比较烦琐，我将其核心思想提取出来分解成了两个独立的简单的问题，有可能问题分解的不当，请大家见谅，实际面试了一个的问题但比其复杂很多，而且涉及一些高等数学变换)<br>1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n<br>哼，我的心里冷笑一声！没想到这么简单，我有点紧张的心情顿时放松起来！<br>于是很快我给出我的解法：<br>long fn(long n)<br>{<br>long temp=0;<br>int i,flag=1;<br>if(n&lt;=0)<br>{<br>printf("error: n must &gt; 0);<br>exit(1);<br>}<br>for(i=1;i&lt;=n;i++)<br>{<br>temp=temp+flag*i;<br>flag=(-1)*flag;<br>}<br>return temp;<br>}<br>搞定！当我用期待的目光看着面试官的时候，他微笑着跟我说，执行结果肯定是没有问题！但当n很大的时候我这个程序执行效率很低，<br>在嵌入式系统的开发中，程序的运行效率很重要，能让CPU少执行一条指令都是好的，他让我看看这个程序还有什么可以修改的地方，<br>把程序优化一下！听了这些话，我的心情当时变的有点沉重，没想到他的要求很严格，之后我对程序进行了严格的分析，给出了改进了的方案！<br>long fn(long n)<br>{<br>long temp=0;<br>int j=1,i=1,flag=1;<br>if(n&lt;=0)<br>{<br>printf("error: n must &gt; 0);<br>exit(1);<br>}<br>while(j&lt;=n)<br>{<br>temp=temp+i;<br>i=-i;<br>i&gt;0?i++:i--;<br>j++;<br>}<br>return temp;<br>}<br>虽然我不敢保证我这个算法是最优的，但是比起上一个程序，我将所有涉及到乘法指令的语句改为执行加法指令，既达到要题目的要求而且<br>运算时间上缩短了很多！而代价仅仅是增加了一个整型变量！但是我现在的信心已经受了一点打击，我将信将疑的看者面试官，他还是微笑着<br>跟我说：&#8220;不错，这个程序确实在效率上有的很大的提高！&#8221;我心里一阵暗喜！但他接着说这个程序仍然不能达到他的要求，要我给出更优的<br>方案！天啊！还有优化！我当时真的有点崩溃了，想了一会后，我请求他给出他的方案！然后他很爽快的给出了他的程序！<br>long fn(long n)<br>{<br>if(n&lt;=0)<br>{<br>printf("error: n must &gt; 0);<br>exit(1);<br>}<br>if(0==n%2)<br>return (n/2)*(-1);<br>else<br>return (n/2)*(-1)+n;<br>}<br><br>搞笑，当时我目瞪口呆，没想到他是这个意思，这么简单的代码我真的不会写吗，但是我为什么没有往那方面上想呢！他说的没有错，在n很大很大的时候这三个程序运行时间的差别简直是天壤之别！当我刚想开口说点什么的时候，他却先开口了：&#8220;不要认为CPU运算速度快就把所有的问题都推给它去做，程序员应该将代码优化再优化，我们自己能做的决不要让CPU做，因为CPU是为用户服务的，不是为我们<br>程序员服务的！&#8221;多么精辟的语言，我已经不想再说什么了！接着是第二个问题：<br>2),他要求我用一种技巧性的编程方法来用一个函数实现两个函数的功能n为如：fn1(n)=n/2!+n/3!+n/4!+n/5!+n/6!<br>fn2(n)=n/5!+n/6!+n/7!+n/8!+n/9! 现在用一个函数fn(int n,int flag)实现，当flag为0时，实现fn1功能，如果flag为1时<br>实现fn2功能！他的要求还是效率，效率，效率！说实在话，如果我心情好的话我应该能给出一种比较好的算法，但我那时真的没有什么心思<br>再想了，我在纸上胡乱画了一些诸如6!=6*5!的公式后直截了当的跟他说要他给出他的答案！面试官也没有说什么，给出了他的思路：<br>定义一个二维数组 float t[2][5]存入[2!,3!,4!,5!,6!},{5!,6!,7!,8!,9!]然后给出一个循环：<br><br>for(i=0;i&lt;6;i++)<br>{<br>temp=temp+n/t[flag];<br>}<br>最后得到计算值！呵呵，典型的空间换时间的算法！<br>这些总共花了50分钟的时间，还有十分钟我就跟他很随意的聊聊天，聊了一些编程以及生活的问题，那时的我已经很放松了，<br>因为我知道这次面试结果只有一个：失败。5:30的时候面试官要我等通知，于是我离开了他们公司。这就是面试的整个经过！<br><br>2.由面试想到的<br><br>真的是很失败啊！我记得那天下好大的雨，气温也很低，我边走边想，从5:30一直走到7:30，全身都湿透了，又冷又饿，但是我只是一直走，脑子里面充满了疑惑，我也想让雨把自己淋醒！看到这里有些朋友可能觉得那些面试题目不算什么如果让自己做的话肯定能全部答对，我肯定相信你，因为我从未怀疑过中国程序员的能力，我认为中国有世界上最好的程序员，我也从未认为自己是高手，所以我做不出来不代表中国程序员比台湾或者别的地方的程序员差，所以我就从我的角度，我的所见所想来谈一些感想：<br><br>不错全世界都有优秀的程序员，中国也不例外，但是我疑惑的是：到底中国和台湾或者国外的优秀的程序员的比例到底是多少？台湾我不知道，中国100个程序员里有几个是优秀的呢?我根本算不上，从上面的表现就足以说明一切了！是1个？5个？10个？50个？这个数字我不敢乱猜，恐遭网友一顿痛骂，那么我们国内有多少人学习计算机呢？拿我们学校来说，计算机97级4个班，98级5个班，99级10个班，2000级 17个班，人多了，老师怎么办？我们学校的做法是让研究生上课，然后呢？补考一抓一大把，大把大把的补考费落入了学校的口袋，还说现在的学生素质低！真是好笑，我都不知道学校这么做是为了什么，为国内培养大量的程序员吗？学生们能真正学到计算机知识吗？好了，我敢讲，在我们学校学习编程学生和优秀程序员 (注意我指的是优秀，只会编几个糟烂程序的人算不上)的比例应该是100:0.1<br>在这种比例下虽然我们中国学习编程的人铺天盖地，但是想想有多少个人能真正为中国软件业发展作出贡献，有多少人能真正写出优秀的程序名扬海外！<br><br>我从学习编程以来，不管是自学还是老师指导，从来都是解决问题就好，编出程序来就行，我的疑惑是：我们有真正的强调过程序的效率，程序的质量吗？我们有仔细分析过我们写的东西，看看有没有可以改进的地方，看看有没有简单的方法来达到同样的目的呢？我问心自问，我发现，我从来没有对我写出来的程序进行过优化，最多就是进行详细的测试，然后Debug，但是这就足够了吗？这些天我偶尔发现我曾经写过的一个游戏，那是一年前我刚加入www.vcroad.net做为其中一员时候，感觉应该拿点东西出来，然后花了一个星期的时间写出来的！程序不算复杂，但是用到了不少数据结构的东西，也用到了一些精彩的算法，加上 windows的界面和游戏的可玩性，写完后受到了不少好评，我当时真的很佩服自己！但是现在看呢：没有一句注释，好多丑陋的函数名比如：void chushihua()，好多没有必要的变量，可以用简单语句完成工作的我使用华丽的算法，大量使用全局变量.....,说不好听的话，六百多行的程序除了能运行之外就是一陀屎！如果一年前我能听到一些反面意见的话，大概我能早一点觉悟，但是自从原代码在网站发布以来听到的都是赞美之词，没有一个人向我提出程序改进的意见，这又说明了一个什么问题呢？很值得思考啊！<br><br>还有一个疑惑是：我们说的和做的真的一样吗？我在学校的时候曾经受学院指派承办过一个计算机大赛，请了一个老师出决赛的题目，主要是一些算法题目，这个老师可能是我上大学以来唯一敬佩的老师了，从程序调试到打分，对于每个程序都仔细分析其时间效率和空间效率，然后综合打分，四十个人的卷子，老师从下午三点一直调试到晚上十点，在有些写的精彩的语句后还加上批注。我真是高兴很遇到这样的老师并且和他做深入的交流，但在事后，却发生了一件不愉快的事，在比赛中获得第二名的学生找到我，说他程序全部调试成功应该给他满分，并且应该得第一，我说不过他，最后调出了他的原程序和第一名的原程序对比，不错，两个程序都运行的很好，这时，那个同学开口了：&#8220;我的程序写的十分简捷明了，仅仅数行就完成了题目要求，而他的却写了一大堆，为什么给他的分多过给我的分。&#8221;我当时很是气愤，如果不是老师负责的话，那么现在第一名和第二名的位置真的要互调了，拜托，不是程序的行数越少程序的质量就越高，我记得我跟他大谈这方面的道理，最后说服他了！哈哈，但是我，只能说说而已，我不知道还有多少人一样，说起来头头是道，但心里却压根就从未重视过它！<br><br>3.我打算做的！<br>其实那天我想到的远不止上面那么多，但是我不想再说了，因为我猜想看这篇文章的网友大概都有一肚子的感想，一肚子的抱怨，借用这篇文章发泄可不是我想达到的目的，在上面我把自己骂的一文不值也不是妄自菲薄，但是在某些方面我真的做错了，或者说是偏离了正确方向，现在是矫正方向和重整旗鼓的时候了，就象我前面说过的，我相信中国有世界上最好的程序员，我也相信我的水平不会一直保持现状，我现在就收拾起牢骚真正的实干起来！<br>真的很巧，就写到这里的时候我在网上偶尔发现了这篇手册，我不知道这预示着什么，但是我想如果我照下面这个基本原则一直踏实做下去，我一定会实现我的理想---一名优秀的软件设计师!<br><br>（下面这些文字不是我的原创，是我偶尔在网上发现的，我真的很幸运能看到这些，这篇文章也随着下面的文字而结束，我真心的希望您能从这篇文章中得到启发,这篇文章欢迎大家随意转载，您可以不写作者是谁，但是请您写上www.vcroad.net原创，谢谢您的支持）<br><br>作者：金蝶中间件公司CTO袁红岗<br><br>不知不觉做软件已经做了十年，有成功的喜悦，也有失败的痛苦，但总不敢称自己是高手，因为和我心目中真正的高手们比起来，还差的太远。世界上并没有成为高手的捷径，但一些基本原则是可以遵循的。<br><br>　　1. 扎实的基础。数据结构、离散数学、编译原理，这些是所有计算机科学的基础，如果不掌握他们，很难写出高水平的程序。据我的观察，学计算机专业的人比学其他专业的人更能写出高质量的软件。程序人人都会写，但当你发现写到一定程度很难再提高的时候，就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP，即使你再精通OOP，遇到一些基本算法的时候可能也会束手无策。<br><br>　　2. 丰富的想象力。不要拘泥于固定的思维方式，遇到问题的时候要多想几种解决问题的方案，试试别人从没想过的方法。丰富的想象力是建立在丰富的知识的基础上，除计算机以外，多涉猎其他的学科，比如天文、物理、数学等等。另外，多看科幻电影也是一个很好的途径。<br><br>　　3. 最简单的是最好的。这也许是所有科学都遵循的一条准则，如此复杂的质能互换原理在爱因斯坦眼里不过是一个简单得不能再简单的公式：E=mc2。简单的方法更容易被人理解，更容易实现，也更容易维护。遇到问题时要优先考虑最简单的方案，只有简单方案不能满足要求时再考虑复杂的方案。<br><br>　　 4. 不钻牛角尖。当你遇到障碍的时候，不妨暂时远离电脑，看看窗外的风景，听听轻音乐，和朋友聊聊天。当我遇到难题的时候会去玩游戏，而且是那种极暴力的打斗类游戏，当负责游戏的那部分大脑细胞极度亢奋的时候，负责编程的那部分大脑细胞就得到了充分的休息。当重新开始工作的时候，我会发现那些难题现在竟然可以迎刃而解。<br><br>　　5. 对答案的渴求。人类自然科学的发展史就是一个渴求得到答案的过程，即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念，一定要找到问题的答案，你才会付出精力去探索，即使最后没有得到答案，在过程中你也会学到很多东西。<br><br>　　6. 多与别人交流。三人行必有我师，也许在一次和别人不经意的谈话中，就可以迸出灵感的火花。多上上网，看看别人对同一问题的看法，会给你很大的启发。<br><br>　　7. 良好的编程风格。注意养成良好的习惯，代码的缩进编排，变量的命名规则要始终保持一致。大家都知道如何排除代码中错误，却往往忽视了对注释的排错。注释是程序的一个重要组成部分，它可以使你的代码更容易理解，而如果代码已经清楚地表达了你的思想，就不必再加注释了，如果注释和代码不一致，那就更加糟糕。<br><br>　　8. 韧性和毅力。这也许是"高手"和一般程序员最大的区别。A good programming is 99 weat and 1ffee。高手们并不是天才，他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦，但过程却是无比的枯燥乏味。你不妨做个测试，找个 10000以内的素数表，把它们全都抄下来，然后再检查三遍，如果能够不间断地完成这一工作，你就可以满足这一条。<br>
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/26414.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-04-30 01:31 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/04/30/26414.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>CrazyEgg: 新型访问统计工具</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/04/27/26261.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Fri, 27 Apr 2007 05:46:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/04/27/26261.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/26261.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/04/27/26261.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/26261.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/26261.html</trackback:ping><description><![CDATA[<a href="http://www.crazyegg.com/"><u><font color=#0000ff><br><br>crazyegg</font></u></a> 的广告已经有大半年了，应该有很多人已经把那个广告都看烦了，疯狂的鸡蛋目的和其它的站点统计工具不太一样，他会提供一个页面的地图，上面显示各个链接被点击的次数，以此帮助我们选择最有效的投放广告的区域，最热门的链接，改善模板，调整布局，etc。而 crazyegg 漂亮的页面设计也应该算是他们的一大卖点。对于 crazyegg 另外两个功能 <a href="http://crazyegg.com/images/list.jpg"><u><font color=#0000ff>list</font></u></a>（不支持中文）和 <a href="http://crazyegg.com/images/heatmap.jpg"><u><font color=#0000ff>heatmap</font></u></a> 我感觉用处并不是很大。
<div style="WIDTH: 240px; TEXT-ALIGN: right"><a title="Zooomr :: Photo Sharing" href="http://beta.zooomr.com/photos/12771@Z01/157153/"><img style="BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-BOTTOM: #000 1px solid" height=146 alt="Crazy Egg — Reports1156432348871" src="http://static.zooomr.com/images/d3e56657de9186b109f88bd9aaa72985fbbca7bd.jpg" width=240></a></div>
<p>遗憾的是 crazyegg 的免费用户每月只有可怜区区 5000 的访问数可用，想没有拘束的用下去只有花钱了 <img class=wp-smiley alt=:( src="http://www.dancemoon.net/wp-includes/images/smilies/icon_sad.gif"> </p>
<p>其实 <a href="http://www.google.com/analytics/zh-CN/"><u><font color=#0000ff>Google Analyetics</font></u></a> 早就提供了这个功能，就在内容优化-&gt;导航分析-&gt;网站覆盖图，可不知道什么原因，这个功能被他们做的很不完善，很多链接都没有被统计，用着很不舒服，现在可以勉强用 crazyegg 代替了:p</p>
<img src ="http://www.cnitblog.com/aliyiyi08/aggbug/26261.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-04-27 13:46 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/04/27/26261.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>开源软件的几种版权</title><link>http://www.cnitblog.com/aliyiyi08/archive/2007/04/25/26150.html</link><dc:creator>阿里爸爸</dc:creator><author>阿里爸爸</author><pubDate>Tue, 24 Apr 2007 16:26:00 GMT</pubDate><guid>http://www.cnitblog.com/aliyiyi08/archive/2007/04/25/26150.html</guid><wfw:comment>http://www.cnitblog.com/aliyiyi08/comments/26150.html</wfw:comment><comments>http://www.cnitblog.com/aliyiyi08/archive/2007/04/25/26150.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cnitblog.com/aliyiyi08/comments/commentRss/26150.html</wfw:commentRss><trackback:ping>http://www.cnitblog.com/aliyiyi08/services/trackbacks/26150.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 　　自由/开源软件是一种有版权的软件，自由/开源软件是一种得到许可的软件。自由/开源软件许可协议(或许可证)是其版权实施的延伸。<br><br>　　自由/开源软件采用“左版”(CopyLeft)的概念，虽然其“版权”也应考虑到保护“作者对其作品享有权益”的作用，但由于自由开源运动的本质是发扬“自由、开放精神”，把重点放在扩大用户的自由和权益方面，放在用户在再传播(或再发布)时得到扩大的许可授权方面，而不是把重点放在对作者特权的保护方面(如表现为不收版权费，任何人都可自由获得、复制、修改、发布原创作品或升级产品的源代码，淡化作者的特权，甚至“模糊”可执行的“版权”，总之由原作者放弃自己的一些知识产权的权利，向公众公布许可等)。它不同于传统“版权”(即“右版”，CopyRight)在“保护作者对作品享有法定特权”方面所表现的刚性化的特征。<br><br>　　自由/开源软件的版权理论上属于原创软件作品的作者(writers、authors、developers)，以及升级软件作品的后续修改者(贡献者Contributors，志愿者Volunteers)，总称为所有者(owners)。&nbsp;&nbsp;<a href='http://www.cnitblog.com/aliyiyi08/archive/2007/04/25/26150.html'>阅读全文</a><img src ="http://www.cnitblog.com/aliyiyi08/aggbug/26150.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cnitblog.com/aliyiyi08/" target="_blank">阿里爸爸</a> 2007-04-25 00:26 <a href="http://www.cnitblog.com/aliyiyi08/archive/2007/04/25/26150.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>