邵珠庆の日记 生命只有一次,你可以用它来做很多伟大的事情–Make the world a little better and easier


411月/11

数据分析站点导航

发布在 邵珠庆

 

中文博客站点

数据挖掘与分析

小蚊子乐园

数据挖掘与数据分析

数据挖掘者

未来趋势—车品觉

数据化管理

沈浩老师

数据文化

数据挖掘营销应用

郑来轶

ExcelPro的图表博客

数据元素

庖丁的小刀

让数据说话

Flystarhj的博客

数据小兵

SAS数据挖掘

数据&分析

统计软件学习

图说企业文化

诸葛小川

数据之路

数据分析与研究

 

 

 

 

 

>>>待补充

 

 

网站分析

网站数据分析

网站分析在中国

MAR’S 观点

上海WA官方组织

网站分析

Tenly的互联网哲学

在线广告分析

邮件营销在中国

香港网站分析

蓝鲸的网站分析笔记

搜索引擎营销

So Marketing博客

SOYAN天空

网站分析与电子商务

搜索营销智库

数据营销宝

芒果运营

Keven网站分析博客

像风一样自由

IWOM研究

CIC网络口碑

互联网营销博客

 

 

 

 

 

>>>待补充

 

用户研究

腾讯用户研究

UCD中国用户研究

淘宝用户研究

阿里用户研究

当当用户研究

支付宝用户研究

搜狐用户研究

顺网用户研究

网易用户研究

百度泛用户体验

口碑用户研究

5173用户研究

19楼用户研究

 

 

 

 

 

 

>>>待补充

中文互联网数据资料来源

 

平台机构

易观国际

互联网信息中心

淘宝数据平台

百度数据研究中心

艾瑞咨询

电子商务研究中心

IDC中国

百度数据中心

计世资讯

互联网数据中心

智库数据

梅花网

CNZZ数据中心

缔元信互联网数据

第一财经

中国经济网数据中心

投资界

赛迪顾问

 

 

 

 

 

>>>待补充

 

分析论坛

人大经济论坛

中国商业智能网

中国统计网

SAS爱好者

市场调研论坛

数据挖掘研究院

数据挖掘论坛

SAS中文论坛

沃顿知识在线

中国数据分析网

数据仓库之路

SPSS论坛

统计家园

BI Think商业智能网

统计之都

中文自然语言处理

智能中国网

 

 

>>>待补充

 

 

其他

月光博客

中国网站排名

业网内

游戏大观

36

互联网的那点事

洪波的偏见

亿邦电商

草根网

互联网的一些

游戏邦

关于营销的那点事

派代网

IT 商业新闻网

中文互联网数据资讯中心

 

 

 

>>>待补充

3110月/11

电子商务网站数据分析指标、名词定义与解析

发布在 邵珠庆

网站分析采用指标可能有各种各样,根据网站目标和网站客户不同,可以有许多不同指标来衡量。常用网站分析指标有内容指标和商业指标,内容指标指是衡量访问者活动指标,商业指标是指衡量访问者活动转化为商业利润指标。

一、网站分析内容指标

转换率 Take Rates (Conversions Rates)

计算公式:转换率=进行了相应动作访问量/总访问量

指标意义:衡量网站内容对访问者吸引程度以及网站宣传效果

指标用法:当你在不同方测试新闻订阅、下载链接或注册会员,你可以使用不同链接名称、订阅方式、广告放置、付费搜索链接、付费广告(PPC)等等,看看那种方式是能够保持转换率在上升?如何增强来访者和网站内容相关性?如果这个值上升,说明相关性增强了,反之,则是减弱。

回访者比率 Repeat Visitor Share

计算公式:回访者比率=回访者数/独立访问者数

指标意义:衡量网站内容对访问者吸引程度和网站实用性(出自 业务员网:www.yewuyuan.com),你网站是否有令人感兴趣内容使访问者再次回到你网站。

指标用法:基于访问时长设定和产生报告时间段,这个指标可能会有很大不同。绝大多数网站都希望访问者回访,因此都希望这个值在不断提高,如果这个值 在下降,说明网站内容或产品质量没有加强。需要注意是,一旦你选定了一个时长和时间段,就要使用相同参数来产生你报告,否则就失去比较意义。

积极访问者比率 Heavy User Share

计算公式:积极用户比率=访问超过11页用户/总访问数

指标意义:衡量有多少访问者是对网站内容高度兴趣

指标用法:如果你网站针对正确目标受众并且网站使用方便,你可以看到这个指标应该是不断上升。如果你网站是内容型,你可以针对不同类别内容来区分不同积极访问者,当然你也可以定义20页以上才算是积极访问者。

忠实访问者比率 Committed Visitor Share

计算公式:访问时间在19分钟以上用户数/总用户数

指标意义:和上一个指标意义相同,只是使用停留时间取代浏览页数,取决于网站目标,你可以使用两个中一个或结合使用。

指标用法:访问者时长这个指标有很大争议,这个指标应结合其它指标一起使用,例如转换率,但总体来说,较长访问时长意味着用户喜欢呆在你网站,高忠实访问率当然是较好。同样,访问时长也可以根据不同需要自行设定。

忠实访问者指数 Committed Visitor Index

计算公式:忠实访问者指数=大于19分钟访问页数/大于19分钟访问者数

指标意义:指是每个长时间访问者平均访问页数,这是一个重要指标,它结合了页数和时间。

指标用法:如果这个指数较低,那意味着有较长访问时间但是较低访问页面(也许访问者正好离开吃饭去了)。通常都希望看到这个指数有较高值,如果你修改了网站,增加了网站功能和资料,吸引更多忠实访问者留在网站并浏览内容,这个指数就会上升。

忠实访问者量 Committed Visitor Volume

计算公式:忠实访问者量=大于19分钟访问页数/总访问页数

指标意义:长时间访问者所访问页面占所有访问页面数量

指标用法:对于一个靠广告驱动网站,这个指标尤其值注意,因为它代表了总体页面访问质量。如果你有10000访问页数却仅有1%忠实访问者率,这意味着你可能吸引了错误访问者,这些访问者没有啥价值,他们仅仅看一眼你网页就离开了。这是你应该考虑是否广告词语产生了误解。

访问者参与指数 Visitor Engagement Index

计算公式:访问者参与指数=总访问数/独立访问者数

指标意义:这个指标是每个访问者平均会话(session),代表着部分访问者多次访问趋势。

指标用法:与回访者比率不同,这个指标代表着回访者强烈度,如果有一个非常正确目标受众不断回访网站,这个指数将大大高于1;如果没有回访者,指数 将趋近于1,意味着每一个访问者都有一个新会话。这个指数高低取决于网站目标,大部分内容型和商业性网站都希望每个访问者在每周/每月有多个会话 (session);客户服务尤其是投诉之类页面或网站则希望这个指数尽可能接近于1。

回弹率(所有页面)Reject Rate/Bounce Rate

计算公式:回弹率(所有页面)=单页面访问数/总访问数

指标意义:代表着访问者看到仅有一页比率

指标意义:这个指标对于最高进入页面有很重要意义,因为流量就是从这些页面产生,当你对网站导航或布局设计进行调整时尤其要注意到这个参数。总而你是希望这个比率不断下降。

回弹率(首页)Reject Rate/Bounce Rate

计算公式:回弹率(首页)=仅仅访问首页访问数/所有从首页开始访问数

指标意义:这个指标代表所有从首页开始访问者中仅仅看了首页访问者比率

指标意义:这个指标是所有内容型指标中最重要一个,通常我们认为首页是最高进入页面(当然,如果你网站有其他更高进入页面,那么也应该把它加入到追 踪目标中)。对任意一个网站,我们可以想象,如果访问者对首页或最常见进入页面都是一掠而过,说明网站在某一方面有问题。如果针对目标市场是正确,说明是 访问者不能找到他想要东西,或者是网页设计上有问题(包括页面布局、网速、链接文字等等);如果网站设计是可行易用,网站内容可以很容易找到,那么问题可 能出在访问者质量上,即市场问题。

浏览用户比率 Scanning Visitor Share

计算公式:浏览用户比率=少于1分钟访问者数/总访问数

指标意义:这个指标一定程度上衡量网页吸引程度。

指标用法:大部分网站都希望访问者停留超过一分钟,如果这个指标值太高,那么就应该考虑一下网页内容是否过于简单,网站导航菜单是否需要改进。

浏览用户指数 Scanning Visitor Index

计算公式:浏览用户指数=少于1分钟访问页面数/少于1分钟访问者数

指标意义:一分钟内访问者平均访问页数

指标用法:这个指数也接近于1,说明访问者对网站越没兴趣,他们仅仅是瞄一眼就离开了。这也许是导航问题,如果你对导航系统进行了显著改进,应该可以看到这个指数在上升;如果指数还是下降,应该是网站目标市场及使用功能有问题,应该着手解决。

将浏览用户比率和浏览用户指数结合起来使用,可以看出用户是在浏览有用信息还是厌烦而离开。

浏览用户量 Scanning Visitor Volume

计算公式:浏览用户量=少于1分钟浏览页数/所有浏览页数

指标意义:在一分钟内完成访问页面数比率

指标用法:根据网站目标不同,这个指标高低有不同要求,大部分网站希望这个指标降低。如果是搞广告驱动网站,这个指标太高对于长期目标是不利,因为这意味着尽管你通过广告吸引了许多访问者,产生很高访问页数,但是访问者质量却是不高,所能带来收益也就会受到影响。

二、网站分析商业指标

平均订货额 Average Order Amount (AOA)

计算公式:平均订货额=总销售额/总订货数

指标意义:用来衡量网站销售状况好坏

指标用法:将网站访问者转化为买家当然是很重要,同样重要是激励买家在每次访问是购买更多产品。跟踪这个指标可以找到更好改进方法。

转化率 Conversion Rate (CR)

计算公式:转化率=总订货数/总访问量

指标意义:这是一个比较重要指标,衡量网站对每个访问者销售情况

指标用法:通过这个指标你可以看到即使一些微小变化都可能给网站收入带来巨大变化。如果你还能够区分出新、旧访问者所产生订单,那么就可以细化这个指标,对新旧客户进行分别统计。

每访问者销售额 Sales Per Visit (SPV)

计算公式:每访问者销售额=总销售额/总访问数

指标意义:这个指标也是用来衡量网站市场效率

指标用法:这个指标和转化率差不多,只是表现形式不同。

单笔订单成本 Cost per Order (CPO)

计算公式:单笔订单成本=总市场营销开支/总订货数

指标意义:衡量平均订货成本

指标用法:每笔订单营销成本对于网站盈利和现金流都是非常关键。营销成本计算各人有不同标准,有些把全年网站营运费用摊入到每月成本中,有些则不这么做,关键要看那种最适合自己情况。如果能够在不增加市场营销成本情况下提高转化率,这个指标就应该会下降。

再订货率 Repeat Order Rate (ROR)

计算公式:再订货率=现有客户订单数/总订单数

指标意义:用来衡量网站对客户吸引力

指标用法:这个指标高低和客户服务有很大关系,只有满意用户产品体验和服务才能提高这个指标。

单个访问者成本 Cost Per Visit (CPV)

计算公式:单个访问者成本=市场营销费用/总访问数

指标意义:用来衡量网站流量成本

指标用法:这个指标衡量是你市场效率,目标是要降低这个指标而提高SPV,为此要将无效市场营销费用削减,增加有效市场投入。

订单获取差额 Order Acquisition Gap (OAG)

计算公式:订单获取差额=单个访问者成本(CPV)-单笔订单成本(CPO)

指标意义:这是一个衡量市场效率指标,代表着网站所带来访问者和转化访问者之间差异

指标用法:指标值应是一个负值,这是一个测量从非访问者中获客户成本。有两种方法来降低这个差额,当你增强了网站销售能力,CPO就会下降,这个差 额就会缩小,说明网站转化现有流量能力到了加强;同样,CPV可能升高而CPO保持不变或降低,这个差额也会缩小,表明网站所吸引流量都具有较高转化率, 这种情形通常发生在启用了PPC(pay per click)计划。

订单获取率 Order Acquisition Ratio (OAR)

计算公式:订单获取率=单笔订单成本(CPO)/单个访问者成本(CPV)

指标意义:用另一种形式来体现市场效率

指标用法:用比率形式往往比较容易为管理阶层所理解,尤其是财务人员。

每笔产出 Contribution per Order (CON)

计算公式:每笔产出=(平均订货数X平均边际收益)-每笔订单成本

指标意义:每笔订单给你带来现金增加净值

指标用法:公司财务总监总是对这个指标感兴趣,代表了你花了多少钱来赚多少钱。

投资回报率 Return on Investment (ROI)

计算公式: 投资回报率=每笔产出(CON) /每笔订单成本 (CPO)

指标意义: 用来衡量你广告投资回报

指标用法:比较你广告回报率,应该把钱分配给有最高回报率广告,但是这个回报率应当要有时间段限制,比如“25% RIO/每周”和“25% RIO/每年”是有很大差别。

248月/11

海量数据的处理分析经验

发布在 邵珠庆

在实际工作中,有幸接触到海量的数据处理问题,对其进行处理是一项艰巨而复杂的任务。原因有以下几个方面:

一、数据量过大,数据中什么情况都可能存在。如果说有10条数据,那么大不了每条去逐一 检查,人为处理,如果有上百条数据,也可以考虑,如果数据上到千万级别,甚至过亿,那不是手工能解决的了,必须通过工具或者程序进行处理,尤其海量的数据 中,什么情况都可能存在,例如,数据中某处格式出了问题,尤其在程序处理时,前面还能正常处理,突然到了某个地方问题出现了,程序终止了。
二、软硬件要求高,系统资源占用率高。对海量的数据进行处理,除了好的方法,最重要的就 是合理使用工具,合理分配系统资源。一般情况,如果处理的数据过TB级,小型机是要考虑的,普通的机子如果有好的方法可以考虑,不过也必须加大CPU和内 存,就象面对着千军万马,光有勇气没有一兵一卒是很难取胜的。
三、要求很高的处理方法和技巧。这也是本文的写作目的所在,好的处理方法是一位工程师长期工作经验的积累,也是个人的经验的总结。没有通用的处理方法,但有通用的原理和规则。
那么处理海量数据有哪些经验和技巧呢,我把我所知道的罗列一下,以供大家参考:
一、选用优秀的数据库工具
现在的数据库工具厂家比较多,对海量数据的处理对所使用的数据库工具要求比较高,一般使 用Oracle或者DB2,微软公司最近发布的SQL Server 2005性能也不错。另外在BI领域:数据库,数据仓库,多维数据库,数据挖掘等相关工具也要进行选择,象好的ETL工具和好的OLAP工具都十分必要, 例如Informatic,Eassbase等。笔者在实际数据分析项目中,对每天6000万条的日志数据进行处理,使用SQL Server 2000需要花费6小时,而使用SQL Server 2005则只需要花费3小时。
二、编写优良的程序代码
处理数据离不开优秀的程序代码,尤其在进行复杂数据处理时,必须使用程序。好的程序代码对数据的处理至关重要,这不仅仅是数据处理准确度的问题,更是数据处理效率的问题。良好的程序代码应该包含好的算法,包含好的处理流程,包含好的效率,包含好的异常处理机制等。
三、对海量数据进行分区操作
对海量数据进行分区操作十分必要,例如针对按年份存取的数据,我们可以按年进行分区,不 同的数据库有不同的分区方式,不过处理机制大体相同。例如SQL Server的数据库分区是将不同的数据存于不同的文件组下,而不同的文件组存于不同的磁盘分区下,这样将数据分散开,减小磁盘I/O,减小了系统负荷, 而且还可以将日志,索引等放于不同的分区下。
四、建立广泛的索引
对海量的数据处理,对大表建立索引是必行的,建立索引要考虑到具体情况,例如针对大表的 分组、排序等字段,都要建立相应索引,一般还可以建立复合索引,对经常插入的表则建立索引时要小心,笔者在处理数据时,曾经在一个ETL流程中,当插入表 时,首先删除索引,然后插入完毕,建立索引,并实施聚合操作,聚合完成后,再次插入前还是删除索引,所以索引要用到好的时机,索引的填充因子和聚集、非聚 集索引都要考虑。
五、建立缓存机制
当数据量增加时,一般的处理工具都要考虑到缓存问题。缓存大小设置的好差也关系到数据处理的成败,例如,笔者在处理2亿条数据聚合操作时,缓存设置为100000条/Buffer,这对于这个级别的数据量是可行的。
六、加大虚拟内存
如果系统资源有限,内存提示不足,则可以靠增加虚拟内存来解决。笔者在实际项目中曾经遇 到针对18亿条的数据进行处理,内存为1GB,1个P4 2.4G的CPU,对这么大的数据量进行聚合操作是有问题的,提示内存不足,那么采用了加大虚拟内存的方法来解决,在6块磁盘分区上分别建立了6个 4096M的磁盘分区,用于虚拟内存,这样虚拟的内存则增加为 4096*6 + 1024 = 25600 M,解决了数据处理中的内存不足问题。
七、分批处理
海量数据处理难因为数据量大,那么解决海量数据处理难的问题其中一个技巧是减少数据量。 可以对海量数据分批处理,然后处理后的数据再进行合并操作,这样逐个击破,有利于小数据量的处理,不至于面对大数据量带来的问题,不过这种方法也要因时因 势进行,如果不允许拆分数据,还需要另想办法。不过一般的数据按天、按月、按年等存储的,都可以采用先分后合的方法,对数据进行分开处理。
八、使用临时表和中间表
数据量增加时,处理中要考虑提前汇总。这样做的目的是化整为零,大表变小表,分块处理完 成后,再利用一定的规则进行合并,处理过程中的临时表的使用和中间结果的保存都非常重要,如果对于超海量的数据,大表处理不了,只能拆分为多个小表。如果 处理过程中需要多步汇总操作,可按汇总步骤一步步来,不要一条语句完成,一口气吃掉一个胖子。
九、优化查询SQL语句
在对海量数据进行查询处理过程中,查询的SQL语句的性能对查询效率的影响是非常大的, 编写高效优良的SQL脚本和存储过程是数据库工作人员的职责,也是检验数据库工作人员水平的一个标准,在对SQL语句的编写过程中,例如减少关联,少用或 不用游标,设计好高效的数据库表结构等都十分必要。笔者在工作中试着对1亿行的数据使用游标,运行3个小时没有出结果,这是一定要改用程序处理了。
十、使用文本格式进行处理
对一般的数据处理可以使用数据库,如果对复杂的数据处理,必须借助程序,那么在程序操作 数据库和程序操作文本之间选择,是一定要选择程序操作文本的,原因为:程序操作文本速度快;对文本进行处理不容易出错;文本的存储不受限制等。例如一般的 海量的网络日志都是文本格式或者csv格式(文本格式),对它进行处理牵扯到数据清洗,是要利用程序进行处理的,而不建议导入数据库再做清洗。
十一、       定制强大的清洗规则和出错处理机制
海量数据中存在着不一致性,极有可能出现某处的瑕疵。例如,同样的数据中的时间字段,有的可能为非标准的时间,出现的原因可能为应用程序的错误,系统的错误等,这是在进行数据处理时,必须制定强大的数据清洗规则和出错处理机制。
十二、       建立视图或者物化视图
视图中的数据来源于基表,对海量数据的处理,可以将数据按一定的规则分散到各个基表中,查询或处理过程中可以基于视图进行,这样分散了磁盘I/O,正如10根绳子吊着一根柱子和一根吊着一根柱子的区别。
十三、       避免使用32位机子(极端情况)
目前的计算机很多都是32位的,那么编写的程序对内存的需要便受限制,而很多的海量数据处理是必须大量消耗内存的,这便要求更好性能的机子,其中对位数的限制也十分重要。
十四、       考虑操作系统问题
海量数据处理过程中,除了对数据库,处理程序等要求比较高以外,对操作系统的要求也放到了重要的位置,一般是必须使用服务器的,而且对系统的安全性和稳定性等要求也比较高。尤其对操作系统自身的缓存机制,临时空间的处理等问题都需要综合考虑。
十五、       使用数据仓库和多维数据库存储
数据量加大是一定要考虑OLAP的,传统的报表可能5、6个小时出来结果,而基于Cube的查询可能只需要几分钟,因此处理海量数据的利器是OLAP多维分析,即建立数据仓库,建立多维数据集,基于多维数据集进行报表展现和数据挖掘等。
十六、       使用采样数据,进行数据挖掘
基于海量数据的数据挖掘正在逐步兴起,面对着超海量的数据,一般的挖掘软件或算法往往采 用数据抽样的方式进行处理,这样的误差不会很高,大大提高了处理效率和处理的成功率。一般采样时要注意数据的完整性和,防止过大的偏差。笔者曾经对1亿2 千万行的表数据进行采样,抽取出400万行,经测试软件测试处理的误差为千分之五,客户可以接受。
还有一些方法,需要在不同的情况和场合下运用,例如使用代理键等操作,这样的好处是加快了聚合时间,因为对数值型的聚合比对字符型的聚合快得多。类似的情况需要针对不同的需求进行处理。
海量数据是发展趋势,对数据分析和挖掘也越来越重要,从海量数据中提取有用信息重要而紧迫,这便要求处理要准确,精度要高,而且处理时间要短,得到有价值信息要快,所以,对海量数据的研究很有前途,也很值得进行广泛深入的研究。
227月/11

Google Analytics(分析):_trackEvent()

发布在 邵珠庆

pageTracker._trackEvent 的函数公式:

_trackEvent(category, action, optional_label, optional_value)

category, action, optional_label,三个是需要用引号定义字符(单双引号都行), optional_value是变量或者数字常量。

正确情况:

pageTracker._trackEvent("ABC", "cc", "Dir", 33)
pageTracker._trackEvent("ABC", "cc", "Dir")
pageTracker._trackEvent("ABC", "cc")
pageTracker._trackEvent("ABC", "cc", "", 33)

错误情况:

pageTracker._trackEvent("ABC", "cc", 33)

监测失效原因:第三个参数缺失。

pageTracker._trackEvent("ABC", "cc", "Dir", "33")

监测失效原因:第四个参数不能加引号。

pageTracker._trackEvent("ABC", "cc", Dir, 33)

监测失效原因:第三个参数没加引号。

监测函数不需要放在GA监测代码后面。可放在标签内任何地方,或者object(flash,JAVA等)内部。

 

附事件跟踪指南

目录

  1. 设置事件跟踪
  2. 事件跟踪详解
    1. 类别
    2. 操作
    3. 标签
    4. 隐含计数
  3. 实施注意事项

设置事件跟踪

您需要按照以下步骤在网站上设置跟踪功能,然后才能在报告中查看事件跟踪结果。

  1. 在您的网站上设置跟踪功能。确保您已为网站设置好了跟踪功能。要了解具体设置方法,请参阅跟踪网站
  2. 在网页对象、窗口小部件或视频的源代码中调用 _trackEvent() 方法

    _trackEvent() 方法的规范为:

    _trackEvent(category, action, opt_label, opt_value)
    • 类别(必填)

      为要跟踪的对象组指定的名称。

    • 操作(必填)

      与每个类别具有唯一对应关系的字符串,通常用于为网页对象定义用户互动的类型。

    • 标签(可选)

      为事件数据提供额外维度的可选字符串。

    • 值(可选)

      可以用来提供有关用户事件的数值数据的整数。

  3. 查看报告。在事件跟踪设置完毕并在您的网站上运行一天之后,请转到报告的“内容”部分并查看“事件跟踪”。

事件跟踪详解

事件跟踪数据模型由以下几部分组成,这些组成部分与 Google Analytics(分析)报告界面中的相应元素一一对应:

  • 类别
  • 操作
  • 标签
  • 隐含计数

以下是一个简单的例子,解释了如何使用事件跟踪方法来记录用户与您网页上的视频“播放”链接之间的互动。其中假设 pageTracker 是您的跟踪对象的名称。

<a href="#" onClick="_gaq.push(['_trackEvent', 'Videos', 'Play', 'Baby\'s First Birthday']);">Play</a>

在这个例子中,事件的报告会将 Videos 显示为“类别”,将 Play 显示为“操作”,将 Baby's First Birthday 显示为“标签”。下文将会详细说明这些组成部分。请注意,在实施事件跟踪时,您可以使用此数据模型作为指南,也可以直接使用 _trackEvent() 方法,以适用于您的数据的任意方式来细分用户互动。


类别

对于事件跟踪,“类别”是您指定的用于分组要跟踪的对象的方式。它是 _trackEvent() 方法中使用的第一个参数,并且是必填参数。

“类别”一词在报告界面里位于“事件概览”页上,名为“热门类别”。在此模型中,类别代表事件跟踪层级结构的“根级别”,您可以采用适合您的报告需要的任意方式使用该结构。一般来说,对于您想要归入指定类别的相关用户界面元素,您会多次用到同一类别名称。

例如,要跟踪同一个视频界面上的三个单独控件的用户互动情况,您可以使用以下函数:

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Pause', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Stop', 'Gone With the Wind']);

假设您还想要跟踪视频的下载次数。您可以使用:

gaq.push(['_trackEvent', 'Videos', 'Downloaded', 'Gone With the Wind']);

在这个例子中,“事件概览”页上的“热门类别”中将只有一个类别(即“Videos”),并且您会看到有关该视频对象整个元素集用户互动情况的汇总指标。

不过,通常您想要通过事件跟踪功能跟踪的对象很可能不止一个,因此在实施调用前最好先仔细考虑一下如何分类报告。例如,您可能希望跟踪“Videos”主类别下的所有不同影片,这样您就可以获得有关所有视频互动的汇总数据,无论用户实际观看的是哪部视频。

另一方面,您可以根据视频的类型创建单独的类别。例如,影片视频和音乐视频各占一个类别。您可能还希望为视频下载单独创建一个类别:

  • Videos - Movies
  • Videos - Music
  • Downloads

在这个例子中,您可以通过“事件总数”标签确定所有三个类别的总计事件数。“事件总数”指标显示的是您在事件跟踪实施中指定的所有类别的事件总数。不过,您无法在“Downloads”中单独查看所有视频的汇总指标,因为详细事件指标汇总在其各自所属的类别之下。

尽管事件跟踪对象模型非常灵活,您还是应该先规划好所需的报告结构,然后再为类似网页对象元素调用 _trackEvent() 方法。如果您打算在多个位置使用相同的类别名称,请务必按名称正确引用所需的类别。例如,如果您打算调用视频跟踪类别“Video”,而后来又因为记错而 使用了复数的“Videos”,其结果将是针对视频跟踪产生两个单独的类别。另外,如果您决定更改某个对象的类别名称,而该对象已通过不同的名称进行了跟 踪,则原类别的历史数据将不会得到重新处理,而这会导致同一个网页元素的指标列于报告界面中的两个类别之下。

返回页首

操作

事件跟踪模型中的“操作”一词指的是 _trackEvent() 方法中的第二个参数。它也是必填参数。

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);

一般来说,您会使用 action 参数来命名您希望针对特定网页对象跟踪的事件或互动的类型。例如,在一个“Videos”类别中,您可以使用此参数跟踪多个特定事件,如:

  • 视频完成载入的时间
  • “播放”按钮点击次数
  • “停止”按钮点击次数
  • “暂停”按钮点击次数

与类别一样,为 action 指定怎样的名称完全取决于您自己,不过,对于事件操作在报告中的使用方式,有两个要点需要注意:

  • 所有操作均独立于其母类别单独列出。
    而这一点正好可以在您为报告细分事件数据时派上用场。
  • 唯一身份事件取决于唯一身份操作名称。
    您可以在不同类别中使用重复的操作名称,但这可能会影响唯一身份事件的计算方式。有关详情,请参阅下文的建议以及隐含计数部分。

要确保在针对网站大范围实施事件跟踪时的报告效果,请在使用操作时注意以下几点:

  • 操作名称应与您的报告数据相关

    事件跟踪会将两个不同类别中具有相同操作名称的指标合并在一起。例如,如果您将操作名称“Click”同时用于“Downloads”类别和 “Videos”类别,那么“热门操作”报告中有关“Click”的指标会同时包含使用该名称标记的所有互动。您可以在下一报告级别中看到按类别细分的 “点击”操作的详细信息。不过,如果您在整个事件跟踪实施中不加区分地使用“click”操作,则报告中该细分的实用性就会大打折扣。如果您准备在网站上 大规模使用事件跟踪,那么您最好选择与您的数据类别相关的操作名称。例如,您可以选择为小工具互动保留“click”一词,而为视频播放器互动保留 “Play”、“Pause”、“Stop”等操作名称。

  • 以全局为背景使用操作名称以便汇总或区分用户互动

    例如,您可以为针对网站上所有视频的“Videos”类别使用“Play”作为操作名称。在此模型中,“热门操作”报告会为“Play”操作的事件提供汇总数据,而且您可以了解有关您的视频的这一事件与其他事件(如“暂停”或“停止”)的对比情况。

    不过,假设您想只在报告中使用一个视频类别,但是又想了解有关两个不同的视频播放器用户界面的信息。您可以使用操作名称来区分不同的视频播放器,而不必创建单独的视频类别。这样,报告就可以区分两个播放器的风格,同时还能汇总有关网站上所有视频的数据。

    _gaq.push(['_trackEvent', 'Videos', 'Play - Mac Chrome');
    _gaq.push(['_trackEvent', 'Videos', 'Play - Windows Chrome');
    
  • 操作并不总是意味着“操作”。

    您可以为操作参数指定任意字符串。某些情况下,实际的事件或操作名称可能并不实用,此时您可以使用操作参数来跟踪其他元 素。例如,如果您想要跟踪网页的下载情况,您可以将文档的文件类型指定为下载事件的操作参数。在这个例子中,有关“Downloads”类别的报告数据就 会按照文件类型(pdf、doc、xls 等)来划分。

  • 唯一身份事件数的累加取决于唯一身份操作数

    每当有用户与标为特定操作名称的对象进行互动时,其首次互动均会被记录为该操作名称的一次“唯一身份事件”。由该用户的会话触发的同一操作的其他任何互动均不会计入该特定操作的唯一身份事件。即使该用户离开相应对象,然后开始与标为相同操作名称的其他对象进行互动,情况也是如此。

    这会对报告的结果产生两个显著的影响。首先,假设某用户与两个类别各异的不同视频播放器的“Play”操作进行了互动。有关“Play”的“热门操作”报告只会列出一个唯一身份事件,虽然该用户实际上与两个不同的播放器进行了互动。其次,每个类别的“操作”报告会列出一个唯一身份操作,因为每个类别/操作配对确实有一个唯一身份事件。要了解详情,请参阅隐含计数部分。

返回页首

标签

事件跟踪数据模型中的“标签”一词指的是 _trackEvent() 方法中的第三个字符串参数。此参数是可选参数。通过标签,您可以为要跟踪的事件提供额外信息,例如以上示例中的影片标题,或是跟踪下载情况时的文件名称。

pageTracker._trackEvent('Downloads', 'PDF', '/salesForms/orderForm1.pdf');

与“类别”和“操作”一样,报告界面中有单独的部分来显示您为事件跟踪创建的所有标签。您可以将标签看作创建针对用户与网页对象之间互动的 额外报告维度的方法。例如,假设您的网页上有 5 个视频播放器需要跟踪用户与之的互动情况。这些视频播放器中的每一个都可以使用“Videos”类别和“Play”操作,但是每个播放器又可以使用单独的 标签(比如影片名称),这样它们就可以在报告中显示为不同的元素。

_gaq.push(['_trackEvent', 'Videos', 'Play', 'Gone With the Wind']);
_gaq.push(['_trackEvent', 'Videos', 'Play', 'Huckleberry Finn']);

“值”一词指的是 _trackEvent() 方法中使用的第四个参数,它是一个可选的参数。此参数与其他参数不同,因为它属于 integer 类型,而不是 string 类型,因此您可以使用它来为所跟踪的网页对象指定数字值。例如,您可以通过它来指定以秒计时的播放器载入时间,还可以在视频播放器播放到特定位置时触发一个美元价值。

_gaq.push(['_trackEvent', 'Videos', 'Video Load Time', 'Gone With the Wind', downloadTime]);

该值会按数字识别,并且报告会根据每个事件计数(请参阅下文的隐含计数)累加出总计值。报告还会确定相应类别的平均值。在上述示例中,_trackEvent() 方法会在视频载入完成时针对“Video Load Time”操作进行调用。视频的名称作为标记提供,算出的载入时间会针对各视频下载进行累加。这样,您就可以确定“Videos”类别所有“Video Load Time”操作的平均载入时间。假设您网站上的视频获得了 5 次唯一下载,其下载时间(以秒计算)为:

  • 10
  • 25
  • 8
  • 5
  • 5

报告界面会进行如下计算,该示例中的数字表示的是以秒计算的下载时间:

带来事件的访问 平均值
5 53 10.6

目前此参数还不支持负整数。

隐含计数

在事件跟踪中,每一次与所跟踪的网页对象之间的互动都会得到记录,并且每次互动都会与特定用户会话相关联。在报告中,“事件总数”计算的是 与某所跟踪网页对象之间的互动总数。另一方面,当某一用户会话(即访问)涉及一个或多个事件时,此指标就会计算为报告中的单个“带来事件的访问”或者“唯 一身份事件”。

比如说,如果一个用户对某视频上的同一按钮点击了 5 次,那么与该视频相关联的事件总数为 5,唯一身份事件数为 1。

以下表格解释了报告界面中某一指定事件类别的数据如何汇总。在该示例中,同一类别名称调用自两个不同的视频播放器,两个播放器各自具有不同的标签。这两个播放器共享“Play”和“Stop”操作,Flash 用户界面针对视频播放器采用的就是这一编程方式。

针对“Videos”类别的事件跟踪
操作类型 标签:“Gone With the Wind” 标签:“Mr Smith Goes to Washington” 总计
Play 10 次带来事件的访问 5 次带来事件的访问 15 次唯一身份事件“播放”
Pause 2 次带来事件的访问 8 次带来事件的访问 10 次唯一身份事件“暂停”
Stop 2 次带来事件的访问 3 次带来事件的访问 5 次唯一身份事件“停止”
总计 GWTW 获得了 14 次唯一身份事件 Mr Smith 获得了 16 次唯一身份事件 类别“videos”获得了 30 次唯一身份事件

上方的表格假设用户与“Gone With the Wind”和“Mr Smith Goes to Washington”之间的互动各自发生在单独的用户会话(访问)中。不过,下方的表格显示了如何在更为复杂和典型的情况下计算指定操作的事件次数, 即,一些用户只在一个视频中按了“播放”,而其他用户则在一次访问期间与多个视频进行了互动。在这里,唯一身份事件总数反映了所有标签的“Play”操作 的唯一身份事件总数。请注意,尽管每个标签/操作配对都对应有 17 次唯一身份事件,但报告中只列出相关维度的唯一身份事件次数。因此,对于所有操作,仅有 16 次唯一身份事件,对于“Videos”类别,总共有 16 次访问,其中包含类别为“Videos”的一个事件。

针对“Play”操作的事件跟踪计算
操作类型 标签:“Gone With the Wind” 标签:“Mr Smith Goes to Washington” 总计
Play 10 次带来事件的访问   10 次唯一身份事件“播放”
Play   5 次带来事件的访问 5 次唯一身份事件“播放”
Play 两部影片均有 1 次带来事件的访问(对“播放”的两次点击) 1 次唯一身份事件“播放”
总计 GWTW 获得了 11 次唯一身份播放事件 Mr Smith 获得了 6 次唯一身份播放事件 类别“Videos”获得了 16 次唯一身份事件,操作“Play”获得了 16 次唯一身份事件

实施注意事项

在为网站实施事件跟踪时,请注意以下几点。

跳出率的影响

一般来说,“跳出”是指用户只在您的网站上访问了一个网页。在 Google Analytics(分析)中,“跳出”特指仅触发了一次 GIF 请求的会话,例如,用户访问了您网站上的一个网页,然后就退出了网站,并且这次访问没有向 Google Analytics(分析)服务器发出有关这次会话的任何其他请求。不过,如果您为网站实施了事件跟踪,您可能会注意到实施了事件跟踪的网页的跳出率指标 有所不同。这是因为事件跟踪像网页跟踪一样被归类为互动请求。

例如,假设您的一个包含视频播放器的网页的跳出率一直很高,并且您没有为该网页实施事件跟踪。如果您随后为该播放器设置了事件跟踪,那么您可能会注 意到该网页的跳出率有所降低,这是因为 Google Analytics(分析)会记录用户与播放器的互动,并将互动作为额外的 GIF 请求发送给服务器。因此,即使在访问该网页的访问者中,仍有相同比例的访问者未查看您网站上的任何其他网页就退出网站,他们与视频播放器之间的互动同样会 触发事件跟踪调用,这样一来,他们的访问就不能算作跳出。

在这种计算方法中,对于实施了事件跟踪的网页,“跳出”所指的意义稍有不同:只访问一个页面,并且在该访问中,用户与跟踪的事件之间未发生任何互动。

请您务必注意,任何在网页载入时自动执行的事件跟踪都会导致该网页的零跳出率。如果您实施了 TimeTracker 示例或任何类似的事件跟踪功能,就会出现这种情况。

每次会话事件数限制

对于每次访问(用户会话),最多只能跟踪大概 500 个综合 GATC 请求(事件和浏览量)。在您通过编程方式生成事件时,请注意这一数量限制。另请注意:当一次会话中的事件数量接近上限时,您可能不能再跟踪更多事件。例如,您应该:

  • 避免将视频的脚本处理为每播放一秒就发送一次事件,以及其他重复次数过多的事件触发因素
  • 避免使用过多的鼠标移动跟踪
  • 避免使用可生成较高的事件次数的定时机制
127月/11

<<读懂自己,读懂他人>>之什么才算是完美的工作

发布在 邵珠庆

只有当你不再需要从做自己真正喜欢的事情和挣钱之间取舍的时候,你才能发挥最完美的自己。

很多人从过去的工作经 验中只知道自己不适合以及不喜欢做什么,依然对自己会适合什么以及真正热爱什么摸不着头脑。对自己目前或者曾经的工作感到厌恶的职场人在跳槽时,因为不清楚自己热爱做什么,盲目抉择下,考虑的最重要因素可能依然只是,哪一份工作收入更高。还有那些刚毕业的或者还没有毕业的大学生,他们的工作经验几乎为零, 根本不可能在繁杂多样的工作领域和职位中做出正确的选择。一片茫然中,选择的标准简化为“这份工作收入是否高”以及“它是否听起来很牛”。更别说那些懵懂 的高中生了,在自己对社会的运作规则还一窍不通的时候,竟要为自己未来几十年的职业生涯做出规划,然后相应的做出专业上的选择。

如果我们每一个人在规划或者重新选择职业道路的时候,能够根据自己的性格知道自己擅长什么,不适合什么,真正喜欢什么,可能会厌恶什么,很多曲折的道路和不必要的时间上的浪费都可以避免了。

因为,我们每一个人都不可能是无所不能的。一种技能如同一块肌肉,一旦缺乏反复的训练,它就会渐渐萎缩。选择自己真正喜爱的工作很重要,因为兴趣和 能力存在反馈的关系,兴趣促进了技能的提高,技能的提高又增加了兴趣。也许你会说,经过一定的训练和培养,你依然可以在一个让你毫无兴趣的职位上做到优 秀。但最卓越的你一定是做自己最擅长而且最热爱的工作。

如果你对自己的性格以及四种基本性格还不了解请先看《读懂自己,读懂他人(一)、(二)、(三)》

每个性格类型都有长木板与短木板。一份好的工作应该是能让你尽力发挥你的长板,同时不需要过多涉及你的短板。

 

SP(艺术创造者)型

SP的人喜欢随着自己的冲动自由的做事情。他们关心的是此时此刻可以完成的,充满挑战性,需要应用熟练技能的工作。他们喜欢没有过度计划和复杂结构的工作。喜欢处理实际和真实的问题,而不是理论和想法。

  • SP的长板:机变

SP类型的人是最敏锐的观察者,能够清楚的看见正在发生的事情,并且运用自己灵活的思维和丰富的经验将其处理好。同时,他们操作工具精准而实际,对技巧的专注达到了一种如痴如醉的地步。他们不会惧怕必要的冒险和即兴发挥,可以称为是机变的大师。他们考虑的是如何增加成功的可能性,而不是降低失败的风险率。他们不会被传统和规则所束缚,能成为很好的谈判者。总的来说,他们很自然的懂得自己要去哪里,同时该如何去那里的最近路线。

  • SP的短板:交际

SP在他人眼中是难以预测的,他们可能会在认真考虑之前就草率地随着感觉或者心情行事。对抽象的理论和概念不太关心导致他们可能缺乏大的图景,也难 以看见事物之间隐藏的重要联系。对灵活度和自由度的追求使得他们不太愿意遵守规则和计划,这可能让老板和一起工作的同事抓狂。在他人眼中,SP还可能是无 责任感,不可信赖,而且容易冲动的。

  • SP的完美工作是:

对SP类型的人来说,不可预料性可以满足他们对自发和体验此刻的需求,他们能充当团队中那个发现危机并处理危机的人,他们能够适时随机应变。(听从指示暗部就班的完成工作是你不喜欢的,看看这份工作是否能够给你提供自由和变化。)

他们喜欢利用自己丰富的知识来熟练的处理事务、执行任务,然后立即得到实际的结果。(理论型研究性的工作会让你觉得负担过重。)死气沉沉、繁杂约束的工作是他们极力想避免的;工作能和游戏结合起来就更完美了。(多考虑这个行业和这个职位会不会给你带来乐趣,让你兴奋。还有就是公司文化是否诙谐轻松。)

SJ(护卫者)

SJ类型的人非常实际而且相对保守,他们注重秩序、安全、规则和本分。SJ时常被一种为社会服务的动机所驱使,持续性的做正确的事情使得他们成为最可靠、可信而且有责任感的人。一旦制定了计划,它们往往能够坚毅的完成。

  • SJ的长板:部署

SJ类型的人细心、有条理、洞察力敏锐。他们注重政策、契约、规则、例行习惯和 时间期限。他们喜欢处理已经被验证的事实,然后利用它们来推进工作。他们在管理、监督、守卫等工作上能有非常好的表现。他们与生俱来的道德感使得他们无论 是对亲人、朋友还是老板、同事、客户都肩负有一种责任感。这种责任感让他们关心自己和他人是否做了应该做的事情,而不是做不应该做的事情。

  • SJ的短板:战略

SJ类型的人对理论和抽象事物缺乏兴趣,对未来图景的想象不如现实生活中即时发生的一切对他们有吸引力,这使得他们不擅长做长期的规划,时常做出草 率的决定。过于保守的心态和对安全感和条条框框的依赖使得他们不可能灵活的做出改变和适应,不太愿意尝试新鲜事物和还没有被验证的事物。他们眼中,世界非 黑即白,不能接受中间地带,可能是最教条主义、缺乏想象力和不知道变通的人。

  • SJ的完美工作是:

SJ擅长利用手头的资料尽可能的完美的把事情做好。他们或喜欢在台前管理和告诫他人应该做些什么,或喜欢在幕后进行检查和监督,对那些不符合规则的 东西时刻警惕,同时为他人提供需要的服务。(只有一份工作提供了标准化的操作方式和明文规定的操作准则的时候,你才是最满足的。)他们在工作中严肃认真, 工作努力,为他人服务。(注意一个公司是否有赏罚分明,这是你会在意而且喜欢的。)充满工作标准以及规章制度的组织,这给他们带来安全感。(相对于灵活多 变的小公司,比较庞大复杂的公司组织构架可能反而让你如鱼得水。)SJ有很高的责任感和忠心度,他们期望自己能够发挥作用来维护整个团队的利益,稳定组织构架和现状。(是否能从这个组织中得到归属感和安全感对你来说是很重要的。)

NF(理想主义者)

NF喜欢在世俗的繁杂的工作中探寻更深邃而有意义的东西。他们极具魅力而且充满活力,他们擅于用自己不竭的热情引导他人探索生命的意义。他们非常关心他人的自我形象和自我感觉,希望他人自尊、自爱、自信。

  • NF的长板:交际

培养人际关系特别是帮助他人充实自身的关系,对NF类型的人来说是很重要的。他们往往是杰出的交谈者。他们最不吝于赞美他人,同时知道如何取悦他人,对他人的微妙的需求极其敏感。他们非常重视人际关系的 真实和完整,而且容易把他人理想化。他们关注人生意义和自我发展的潜能,这使得他们自己不断变得卓越,同时也具备帮助他人发展的天赋。他们非常有创造性, 对自己的想法会赋予极大的热情,而且做这样的事情能够使他们得到极大的满足。不可否认的是,他们中的很多人都有领袖气质和魅力,容易被他人喜爱和认可。

  • NF的短板:机变

NF类型的人在做决定的时候时常被他人所左右,无论是关系亲近的人,还是并不那么重要的人。他们对别人的需求和态度过于关心,使得他们陷入两难的窘 境:不知道是该听从自己的心,考虑自己的需求,还是取悦他人,为他人付出。他们时常会为了维持和谐牺牲自己真正的想法和要求。最让人难以忍受的是,他们心 情起伏过大,时常冲动行事或者感情用事。对细节的忽略也使得他们很难跳出自己的大构想和大计划,踏踏实实的顺利完成一件事情。

  • NF完美的工作:

他们看着的不仅仅是利益或者规范,他们专注的是个人价值。(你期望做的应该是能够激发他人潜能,帮助他人解决矛盾、提升自我感觉的工作。)如果一份 工作能满足他们的使命感,那他们会真挚的信念和狂热的理想来接受它、拥护它、为之而战、为之而辩。(考虑一下这份工作是否能发挥你启发、开导、呼吁、暗示 的能力来帮助人们找到增强其幸福感 的方法。)他们最擅长的就是谈论别人想听的话,并聆听他人要说的事。(尽量选择能够和他人进行直接或者间接的交流的工作,发挥你同语言和文字打交道的能 力。尽量不要涉足工具、系统和物资等领域。)同时,太复杂的人际关系可能使他们会负担过大,这是要尽量避免的。(适合你的组织和公司文化会是自由的、民主 的、有激情的、不会有太多纠纷和矛盾的。)

NT(理性主义者)

NT类型的人旺盛的求知欲和出色的分析能力使得他们擅于发现事物的可能性,理解复杂的原理,为实际的或者假设的问题设计解决方案。他们时常觉得,其他人都在盲目的做着毫无意义的循环往复,不是缺乏目标性、创新性,就是缺乏战略指导。

  • NT的长板:战略

NT类型的人是最独立且求知欲最强的。对自己高标准的要求使得他们希望自己在所有领域都出类拔萃。他们擅长用自己独立的眼光和极有谋略的分析能力来找到问题的解决方案。可能性、复杂性和系统性是他们持续性的吸引力所在。他们喜欢做策划、计划和建立一个完整的系统来达成目标。他们自信、有智慧、极富创造力。习惯用逻辑来分析问题使得他们成为最冷静客观的人。他们不畏惧接受挑战,同时追求创新。他们是最能够接受建设性的批评的那群人。

  • NT的短板:部署

对抽象理论和构想的沉迷使得他们容易忽视真实的细节,这不仅在日常生活上给他们带来麻烦,也会让他们在具体的实际性的工作上不断摔跤。过强的怀疑精神和极高的标准时常让与他们一起工作的人感到沮丧和压力大。同时他们对形式主义和和谐友好并不是特别感兴趣,这导致NT的人在他人眼中看来时常是傲慢、孤僻、冷漠无情的。

  • NT的完美工作:

在NT类型的人眼中,工作和其它事情一样,不过是施展自己聪慧和谋略的棋子。 能让他们在自己脑袋里天马行空,做些有挑战性和创新性的工作才是他们期望的。(尽量不要做一份要求你听从指导去一步步的完成琐碎事情的工作,你会极度不耐 烦的。)他们对自己和他人都设下很高的标准。(你会期望自己的老板、同事、属下都是聪明而有能力的人,否则你会非常失望而且缺乏耐心。)对自己完美的期望 使得他们时常居于领导地位,因为高级职位能够给与他们处理复杂问题和运用自己远见和逻辑来制定长期战略的机会。即便还是在中下层的时候,他们也是非常有野 心和长远打算的员工。(考虑一份工作除了收入高低以外是否能够给你提供好的平台和资源,满足你长期发展的愿望。)他们希望一份工作能给自己保留足够的余 地,同时通过某些观念和构想引向成功。(考虑这个公司是否灵活,能否接纳你的建议进行创新性的改变。)

具体的每一种性格类型有自己的性格特征和擅长发挥的能力。请看MBTI十六种性格的全报告书,找到自己的性格类型对工作的期望和需求。

同时要提醒的是,不要简单的只看报告书中提到的那几个单一职业领域和职位选择。

首先,MBTI报告也不是绝对的职业分析书,每个人过去的教育背景和职业背景、经验都不尽相同,选择范围和机会 也不同。再者,即便同一个行业或者同一个职位也有很大差异。幼儿园的老师和大学老师这两种职位的适合人选是完全不同的,投行的高层和低层所要从事的工作也 有很大差异,即便都是称为市场专员的职位,每个公司每个部门需要做的具体事务也不同。

最后的总结是,找到一份完美的工作你需要做的是:先了解自己的性格类型的优点和缺点,然后整合自己的资源和经验,机会来临的时候,具体问题具体分析。

人生短暂,做自己擅长和热爱的工作是幸福的必要条件之一,不是吗?

同时附上此文博客(http://blog.sina.com.cn/yingpeng332)和MBTI论坛(http://www.mbtiforum.com/discuz/bbs/)

26月/10

apache的日志access_log分析

发布在 邵珠庆

当网站出问题时分析日志,第一步一般都不会是看访问日志。但是也不能忽视它,在访问日志中记录了很多的客户信息,如果你有心,可以从这个日志中获得很多有 用的信息!

访问日志access_log记录了所有对Web服务器的访问活动。
正如其名字所示,访问日志access_log记录了所有对Web服务器的访问活动。

下面是访问日志中一个典型的记录:

10.1.1.95 - e800 [18/Mar/2005:12:21:42 +0800] "GET /stats/awstats.pl?config=e800 HTTP/1.1" 200 899 "http://10.1.1.1/pv/" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Maxthon)"

这行内容由9项构成,上面的例子中有两项空白,但整行内容仍旧分成了9项。

第一项信息是远程主机的地址。如果你想知道这个IP地址的域名,可通过nslookup或者host命令来查看。如果你想让Apache自己找出这个IP 的主机名,可以打开这个开关:HostnameLookups。(建议最好不要打开,会影响Apache记录服务器日志的速度)

第二项是空白,用一个"-"占位符替代。实际上绝大多数时候这一项都是如此。这个位置用于记录浏览者的标识,这不只是浏览者的登录名字,而是浏览者的 email地址或者其他唯一标识符。这个信息由identd返回,或者直接由浏览器返回。很早的时候,那时Netscape 0.9还占据着统治地位,这个位置往往记录着浏览者的email地址。然而,由于有人用它来收集邮件地址和发送垃圾邮件,所以它未能保留多久,很久之前市 场上几乎所有的浏览器就取消了这项功能。因此,到了今天,我们在日志记录的第二项看到email地址的机会已经微乎其微了。

第三项也是e800。这个位置用于记录浏览者进行身份验证时提供的名字。当然,如果网站的某些内容要求用户进行身份验证,那么这项信息是不会空白的。但 是,对于大多数网站来说,日志文件的大多数记录中这一项仍旧是空白的。

日志记录的第四项是请求的时间。这个信息用方括号包围,而且采用所谓的"公共日志格式"或"标准英文格式"。因此,上例日志记录表示请求的时间是2005 年3月18日12:21:42。时间信息最后的"+0800"表示服务器所处时区位于UTC之后的8小时。

日志记录的第五项信息或许是整个日志记录中最有用的信息,它告诉我们服务器收到的是一个什么样的请求。该项信息的典型格式是"METHOD RESOURCE PROTOCOL",即"方法 资源 协议"。

RESOURCE是指浏览者向服务器请求的文档,或URL。在这个例子中,浏览者请求的是"/stats/awstats.pl?config=e800 "。

在上例中,METHOD是GET,其他经常可能出现的METHOD还有POST和HEAD。此外还有不少可能出现的合法METHOD,但主要就是这三种。

PROTOCOL通常是HTTP,后面再加上版本号。

日志记录的第六项信息是状态代码。它告诉我们请求是否成功,或者遇到了什么样的错误。大多数时候,这项值是200,它表示服务器已经成功地响应浏览器的 请求,一切正常。一般地说,以2开头的状态代码表示成功,以3开头的状态代码表示由于各种不同的原因用户请求被重定向到了其他位置,以4开头的状态代码表 示客户端存在某种错误,以5开头的状态代码表示服务器遇到了某个错误。

日志记录的第七项表示发送给客户端的总字节数。它告诉我们传输是否被打断(即,该数值是否和文件的大小相同)。把日志记录中的这些值加起来就可以得知服务 器在一天、一周或者一月内发送了多少数据。

日志记录的第八项记录的是客户在提出请求时所在的目录或URL。这次的是"http://10.1.1.1/pv/"即10.1.1.1的pv目录下的首 页。大多数情况下,首页会是在httpd.conf中DocumentRoot 指令后面规定的那些类型和名字的web文件。

日志记录的第九项表示客户端的详细信息,这样你就不难理解为什么有些网站能够在页面中显示你的IP、OS、Browser了。

213月/10

PHP抓取网页和分析

发布在 邵珠庆

<?PHP

//$url = "http://news.google.cn/news/section?pz=1&cf=all&ned=ccn&topic=i&ict=ln";
$url = "http://news.google.cn/news/section?pz=1&cf=all&ned=ccn&topic=t&ict=ln";
$lines_array = file($url);
$lines_string = implode('', $lines_array);

eregi('<head>(.*)</head>', $lines_string, $head1);
eregi('<table>(.*)</table>', $lines_string, $head2);
eregi('<div>(.*)</div>', $head2[0], $head3);
echo $head1[0];
echo $head3[0];

?>

 

译者:limodou
抓取和分析一个文件是非常简单的事。这个教程将通过一个例子带领你一步一步地去实现它。让我们开
始吧!

首先,我首必须决定我们将抓取的URL地址。可以通过在脚本中设定或通过$QUERY_STRING传递。为了简
单起见,让我们将变量直接设在脚本中。

<? $url = 'http://www.php.net'; ?>

第二步,我们抓取指定文件,并且通过file()函数将它存在一个数组里。

<? $url = 'http://www.php.net'; $lines_array = file($url); ?>

好了,现在在数组里已经有了文件了。但是,我们想分析的文本可能不全在一行里面。为了解决这个文
件,我们可以简单地将数组$lines_array转化成一个字符串。我们可以使用implode(x,y)函数来实现它。如
果在后面你想用explode(将字符串变量数组),将x设成"|"或"!"或其它类似的分隔符可能会更好。但是出于
我们的目的,最好将x设成空格。y是另一个必要的参数,因为它是你想用implode()处理的数组。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); ?>

现在,抓取工作就做完了,下面该进行分析了。出于这个例子的目的,我们想得到在<head>到</head>
之间的所有东西。为了分析出字符串,我们还需要叫做正规表达式的东西。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); eregi("<head>(.*)</head>", $lines_string, $head); ?>

让我们看一下代码。正如你所见,eregi()函数按下面的格式执行:

eregi("<head>(.*)</head>", $lines_string, $head);

"(.*)"表示所有东西,可以解释为,"分析在<head>和</head>间的所以东西"。$lines_string是我们正
在分析的字符串,$head是分析后的结果存放的数组。
最后,我们可以输数据。因为仅在<head>和</head>间存在一个实例,我们可以安全的假设数组中仅存
在着一个元素,而且就是我们想要的。让我们把它打印出来吧。

<? $url = 'http://www.php.net'; $lines_array = file($url); $lines_string = implode('', $lines_array); eregi("<head>(.*)</head>", $lines_string, $head); echo $head[0]; ?>

这就是全部的代码了。

<?php

//获取所有内容url保存到文件
function  get_index ( $save_file ,  $prefix = "index_" ){
$count  =  68 ;
$i  =  1 ;
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open " .  $save_file  . " failed" );
while( $i < $count ){
$url  =  $prefix  .  $i  . ".htm" ;
echo  "Get " .  $url  . "..." ;
$url_str  =  get_content_url ( get_url ( $url ));
echo  " OK/n" ;
fwrite ( $fp ,  $url_str );
++ $i ;
}
fclose ( $fp );
}

//获取目标多媒体对象
function  get_object ( $url_file ,  $save_file ,  $split = "|--:**:--|" ){
if (! file_exists ( $url_file )) die( $url_file  . " not exist" );
$file_arr  =  file ( $url_file );
if (! is_array ( $file_arr ) || empty( $file_arr )) die( $url_file  . " not content" );
$url_arr  =  array_unique ( $file_arr );
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open save file " .  $save_file  . " failed" );
foreach( $url_arr  as  $url ){
if (empty( $url )) continue;
echo  "Get " .  $url  . "..." ;
$html_str  =  get_url ( $url );
echo  $html_str ;
echo  $url ;
exit;
$obj_str  =  get_content_object ( $html_str );
echo  " OK/n" ;
fwrite ( $fp ,  $obj_str );
}
fclose ( $fp );
}

//遍历目录获取文件内容
function  get_dir ( $save_file ,  $dir ){
$dp  =  opendir ( $dir );
if ( file_exists ( $save_file )) @ unlink ( $save_file );
$fp  =  fopen ( $save_file ,  "a+" ) or die( "Open save file " .  $save_file  . " failed" );
while(( $file  =  readdir ( $dp )) !=  false ){
if ( $file != "."  &&  $file != ".." ){
echo  "Read file " .  $file  . "..." ;
$file_content  =  file_get_contents ( $dir  .  $file );
$obj_str  =  get_content_object ( $file_content );
echo  " OK/n" ;
fwrite ( $fp ,  $obj_str );
}
}
fclose ( $fp );
}

//获取指定url内容
function  get_url ( $url ){
$reg  =  '/^http:////[^//].+$/' ;
if (! preg_match ( $reg ,  $url )) die( $url  . " invalid" );
$fp  =  fopen ( $url ,  "r" ) or die( "Open url: " .  $url  . " failed." );
while( $fc  =  fread ( $fp ,  8192 )){
$content  .=  $fc ;
}
fclose ( $fp );
if (empty( $content )){
die( "Get url: " .  $url  . " content failed." );
}
return  $content ;
}

//使用socket获取指定网页
function  get_content_by_socket ( $url ,  $host ){
$fp  =  fsockopen ( $host ,  80 ) or die( "Open " .  $url  . " failed" );
$header  =  "GET /" . $url  . " HTTP/1.1/r/n" ;
$header  .=  "Accept: */*/r/n" ;
$header  .=  "Accept-Language: zh-cn/r/n" ;
$header  .=  "Accept-Encoding: gzip, deflate/r/n" ;
$header  .=  "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; InfoPath.1; .NET CLR 2.0.50727)/r/n";
$header  .=  "Host: " .  $host  . "/r/n" ;
$header  .=  "Connection: Keep-Alive/r/n" ;
//$header .= "Cookie: cnzz02=2; rtime=1; ltime=1148456424859; cnzz_eid=56601755-/r/n/r/n";
$header  .=  "Connection: Close/r/n/r/n" ;

fwrite ( $fp ,  $header );
while (! feof ( $fp )) {
$contents  .=  fgets ( $fp ,  8192 );
}
fclose ( $fp );
return  $contents ;
}

//获取指定内容里的url
function  get_content_url ( $host_url ,  $file_contents ){

//$reg = '/^(#|JavaScript.*?|ftp:////.+|http:////.+|.*?href.*?|play.*?|index.*?|.*?asp)+$/i';
//$reg = '/^(down.*?/.html|/d+_/d+/.htm.*?)$/i';
$rex  =  "/([hH][rR][eE][Ff])/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*/i" ;
$reg  =  '/^(down.*?/.html)$/i' ;
preg_match_all  ( $rex ,  $file_contents ,  $r );
$result  =  "" ;  //array();
foreach( $r  as  $c ){
if ( is_array ( $c )){
foreach( $c  as  $d ){
if ( preg_match ( $reg ,  $d )){  $result  .=  $host_url  .  $d . "/n" ; }
}
}
}
return  $result ;
}

//获取指定内容中的多媒体文件
function  get_content_object ( $str ,  $split = "|--:**:--|" ){
$regx  =  "/href/s*=/s*['/"]*([^>'/"/s]+)[/"'>]*/s*(.*?<//b>)/i" ;
preg_match_all ( $regx ,  $str ,  $result );

if ( count ( $result ) ==  3 ){
$result [ 2 ] =  str_replace ( "多媒体: " ,  "" ,  $result [ 2 ]);
$result [ 2 ] =  str_replace ( " " ,  "" ,  $result [ 2 ]);
$result  =  $result [ 1 ][ 0 ] .  $split  . $result [ 2 ][ 0 ] .  "/n" ;
}
return  $result ;
}

?>

512月/07

2007年下半年信息系统监理师下午试题分析及答案

发布在 邵珠庆

第一题的解答:

1、关于招标文件中规定的投标人工期低于16个月的,将折算成综合报价进行评标,其后面规定提前一个月折算成20万元进行计算。此规定合理,因为第一点已经说明评标采用最低评标价中标的原则,也就是评标采用的是综合评标法,并且进行折算的计算方法已经公开。如果采用投标人最低报价中标,那么该规定就不合理。
中标人的投标应当符合下列条件之一:
(一)能够最大限度地满足招标文件中规定的各项综合评价标准;
(二)能够满足招标文件的实质性要求,并且经评审的投标价格最低;但是投标价格低于成本的除外。

2、招标代理机构工作人员拒绝投标人C的补充材料的做法不正确。该补充资料是在投标截止日当天送到,题目中并没有规定投标截止日的具体截至时间,并且该资料是在开标前1个小时送到。没有违反招投标法的相关规定。招投标法第二十九条规定:投标人在招标文件要求提交投标文件的截止时间前,可以补充、修改或者撤回已提交的投标文件,并书面通知招标人。补充、修改的内容为投标文件的组成部分。

3,投标总工期的计算网友“天使和鱼”分析的很正确。

A的工期16天,成本:2084.7

B的工期16天,成本:2235.51

C的工期15天,成本:2180.24
建议中标单位:A

第二题的解答:

1、综合布线由建筑群子系统、设备间子系统、垂直子系统、管理子系统、水平子系统和工作区子系统等6个子系统组成。

2、设备采购单位应该应提交到或设备的清单,监理工程师组织业主、监理和承建单位代表到到货现场进行设备的开箱检查,检查的主要内容有:

检查外包装是否有损伤,包装名称、数量是否与提交的清单相符合;
开箱检查箱内设备是否有无缺少、损坏;
核对所有设备的名称、型号、数量、规格;
检查附带的产品合格证、说明书、用户手册等资料是否齐全;
电子设备应进行通电测试
对于损坏或者缺少的设备,应该书面通知业主和采购单位;
对检查过的设备应该进行登记,做好交接记录,办理移交手续。

3、常用的质量统计图标:散布图、直方图、控制图、推移图(折线图)
散布图:很容易通过点的分布状态来判断两个因素之间有无关系
直方图:便于了解制程中的品质散布的情形及问题点所在及制程、能力等
控制图:找出质量偏差及范围
推移图:质量随时间的变化

第三题的解答:

1、监理规划编制依据:监理委托合同;监理大纲;工程文档资料;有关法律、法规、标准、规范;其他有关文件。

2、
(1)验收分为施工方初验和竣工验收,初验的实施者为施工方自身,初验合格后,提交初验报告和竣工验收申请,竣工验收是监理协助甲方进行的,参与者为监理、甲方、施工方和相关的专家。因此要监理来测试,并为其测试结果承担风险是不合理的。
(2)实施方案是施工单位提出的,谁提出谁就是第一责任人,因此不可能不负责任。另外施工过程中会出现很多变动的因素,因此施工方案也要作相应的调整,没有一成不变的方案。

3、这个问题要分开来看,如果监理没有对施工操作程序进行审查,则要负监理责任,如果在现场的监理工程师看到施工人员违反规程而没有指出,则也需要负相应的责任。但是,如果监理审核了施工操作程序,强调了按操作程序施工的贯彻执行,并且没有看到施工人员违规操作,而是施工人员明知故犯,则监理不需要承担责任,而由施工单位承担。
监理方如果不将工地上的质量和事故问题反应给甲方则没有履行监理义务,是不正确的。发生了这种事情之后不仅要向甲方汇报,还可以配合监理通知单进行操作规程上的强调,并可以在监理会议上提出。
第四题的解答:

1、关键路径:1-2-3-5-7-8-10
1-3不是关键工作
1-4的总时差=1
3-6的自由时差=0,因为6-7的最早开始时间为9,而3-6的最早开始时间为5
4-8的自由时差=1
6-10的总时差=3
因此对错判断为:错,对,错,错,对

2、(1)错,需求分析只需要尽可能的挖掘客户的需求,不需要考虑设计的事情。
(2)错,注释有利于软件维护,如何能够全部删除?
(3)对,进行软件维护的时候,不可避免的要查查需求、设计等资料。
(4)错,全局变量增加了模块的耦合性,不利于维护。
(5)错,应该是要保证软件易读性和易理解性的情况下,尽量选择效率高的结构和算法
(6)对,应该考虑硬件平台的提供,在存储空间充足的时候就不需要将年改成两位表示,应该考虑到软件的扩展性和理解性。
(7)对,好的层次结构易于阅读、理解和修改。
(8)对,工具和环境的搭建,能够提高软件的可维护性,如配制管理工具。
(9)错,正确的做法是高内聚、低耦合。
(10)对,高级语言比低级语言具有更好的可读和可理解性,易于维护。
3、排列图要按照频数从左到右以从高到低的顺序排列,其他原因应该排最后。

第五题的解答:

1、

2、监理单位要求承建单位提供测试计划,对测试计划中的内容进行审核。对测试用例进行审核并定期审查软件测试的工程活动和工作进度。对承建单位的测试报告进行审阅,根据实际需要对软件测试工程活动进行跟踪、审查和评估。对软件测试工程活动和产品进行评审和(或)审核,并报告结果。

3、乙侵权,因为根据委托合同,著作权归甲方,而乙方私自在原来的基础上做了改进后,将其销售给其他的公司。
依据有《合同法》、《著作权法》