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


282月/122

网站分析团队问题

发布在 邵珠庆

网站分析是一个新兴的也是比较复杂的行业,以下的议题会在网站分析过程中经常碰到。
一、成功

1.如果想要把网站分析提高到一个更高的层次,你必须向所在的组织证明以下提到团队的价值。
  1)如果想为公司带来价值,不应该仅停留在关注报告上
  2)外包常规的报告或者让报告自动化,从而来让分析师有时间关注在有意义的项目上
  3)寻找与内部团队合作的机会

2.和几个商业组织或者部门之间协同合作是很困难的,为了成功,你需要有效地管理这些团队。
  1)要积极主动,不能等到其他部门提需求才被动反应
  2)常规召开一个会议,确定工作优先级和检查进度
  3)分配不同的组员去负责不同部门的配合活动,给每个项目分配不同的PMO(project management officer).

二、策略

关于策略,一些人可能会说:“人们通常不知道目标是什么”还有“不理解策略是什么,因为关于什么是网站的重点都没有达成一致的意见。”同时,大家也意识到明确组织策略的重要性,因为直接影响到实施所产生的数据有效性和相关性。

Strategy

三、领导能力

在网站分析的项目中,很多人可能因为没有真正的决策权而很沮丧。这时候你需要有权威和影响力的人物支持你,但是这个过程最好是数据来驱动和支持,并不仅仅是人。

四、组织结构

Structure

 网站分析部门与IT部门的合作是比较大的一个障碍,例如涉及代码的部署和实施方面,这就需要分析人员有一定的代码基础,但是不是应该把网站分析放 在IT部门呢?其实不是的,应该把分析组放在市场营销部门,因为商业策略的理解是最主要的,代码的实施只是执行,一般来讲,不会有太大的难度,所以放到市 场营销部门是一个很不错的选择,这样可以减少沟通成本,提高工作效率。

五、培训

很多组织认识到正式培训的重要性,但是内部没有能力可以提供。组织内很多用户进入网站分析工具未能找到所需数据后,感觉很沮丧;解决的办法是可以成立一些会议定期解答工具使用方面的问题,必要时可以提供一帮一的培训。

六、数据

 
1)组织需要相信数据,否则分析团队会失去支持和信任,分析工具也会被视为没有价值
2)同时分析的实施是一个不断持续的过程,不是一劳永逸的,因为有很多新的网络营销目标被创建
3) 定期地审阅报告,看看报告是否相关,或者需要提高
4)确保所有实施的项目都包含数据校对的步骤
5)在所有新的页面,网站,程序,活动跟踪测试后,再正式地发布活动,确保活动万无一失

七、沟通
沟通是成功很重要的一个因素,尤其是在内部其中一个组更改其衡量指标以后,有很好的沟通机制能够确保其他组的人也知道这个事情。同时虽然制度或者系统文件的更新有时候很困难,但

是没有它的话,组织会变得手忙脚乱,特别是关键人物突然离职的时候。
以下是沟通中需要注意的地方:
1)每个报告都应该有具体的文档,并且每一个指标和变量都必须有解释性文字介绍定义和用途
2)制定网站量度与指标白皮书,并且在内部传播,提高透明度
3)发布一封关于分析组织结构的信息

282月/122

庞大企鹅帝国为何保持极强执行力

发布在 邵珠庆

在谈腾讯之前,我想说说,在一个团队里,执行力低下的主要原因:

1、Leader 的执行力低下,决策效率低,无法给团队传达明确清晰的目标;

2、员工对目标、以及所要执行的事情的重要性理解不够,或者是缺乏相应的激励或考核,或者是本身对于工作的热爱度不够高,因此想要做的欲望、激情动力不够;

3、员工不知道该如何执行,即需要执行的事情有难度,难到不知道该如何下手;

4、越大的团队,越大的公司,更容易有非常大的沟通成本,导致决策低下。

再来看看腾讯:

1、腾讯的创始人和高管们,都是极度热爱互联网产品、技术的人,他们几乎是腾讯里最勤奋的人,他们决策的效率之高,他们身体力行地关注用户反馈和产品改进,他们对于想要做的事情的决心之强,都可以在腾讯人的描述中看到,创始人和高官们的表率作用,深深打动和影响着腾讯员工:

他(Pony)过了一阵子回了一封长信过来:第一段里告诫我,在腾讯不允许说什么事情在技术上做不到。然后,他在信中列举了三四个部门里的Html高手,列出他们的名字和GM姓名,要求直接去联络他们,请求他们给与技术上的支持。

Pony的邮件一般在凌晨三点后到达,到凌晨7点左右停止。9点上班,如果项目很重要,Tony(张志东)会在白天跟进,反复在RTX上讨论,或给 邮件,傍晚会召开会议讨论总结。然后晚上9点多可以到家吃饭,洗澡。睡一会儿,三点左右,Pony的邮件会来,往来讨论到7时左右。休息两小时,9点开 始,Tony在线上等你。。。。。。

出自@和菜头

印象最深的是一天早上来到公司,发现pony凌晨4点半发的邮件。总裁10点回了邮件,VP10点半,几个总经理(在腾讯相当于中层)12点回复了讨论结论,到下午3点,技术方案已经有了,晚上10点,产品经理发出了该项目的详细排期,总共用时18个小时。

出自腾讯产品经理@朱小草

真的,我被这种体验的追求,用户角度出发的坚持深深吸引。

出自前腾讯人@焕德

即使是我这样的普通用户,都收到过腾讯高管们对我提及的产品反馈的直接回复,并且他们真的根据反馈快速改进了产品……

是的,腾讯的创始人和高管为腾讯注入的基因,不只是对于用户体验的极度关注,还有“腾讯没有技术上无法实现”的坚定信念和原则。我还记得在其他大公 司工作的朋友,看到这一点后极度激动,想起了自己所在公司常常遇到“技术上无法实现”的困境。不知道在其他互联网公司工作的朋友,看到这一点,是不是深有 感触?

2、腾讯在文化和制度上,都切实地强化着大家对产品和用户体验的关注度

腾讯的企业文化,吸引到的人才,大部分是热爱互联网产品和技术的,再加上腾讯有很完善的导师制度,产品人员和技术人员的晋升考核路径(具体的还是期 望腾讯的人亲自来说),相信在大部分时候,想做的欲望和动力,也都是足够的。尤其是,当自己崇拜的创始人、高管们如此深度地关注产品(我在腾讯微博上,常 常看到很多高管对于多个产品的用户反馈,不只是最重要的几个产品,都给予很高的重视),我想,在其中的人,怎么可能缺乏动力呢?

在这篇《学习腾讯的产品管理之道》 中,大家可以了解到腾讯具体是如何做的,随便引用几点:

设置一个质量监控小组,由经验非常丰富的高Level的产品人员构成,赋予他们很大的权力,去监控和规范所有的产品项目。并且用KPI来制约产品项 目服从这些规范。为了不搞教条主义,很多规范都是在立项之初,由项目经理和这个小组共同确认的,未必是硬性指派,一经确认就受到严格监控。确保好的规范不 流于空喊口号。

公司高层(包括小马哥)不定期巡查每一个产品论坛,一旦发现有不认真回复用户的情况,立即予以训诫。确保产品人员与用户长期保持近距离接触。

每个产品都设置内部的交流平台,分为两部分,一块类似留言板,由产品主管发布项目的进度、动态;另一块是论坛,向公司内部所有人开放,接纳反馈。在 腾讯内 部已经形成了非常活跃的氛围,甚至以该平台人气高涨为荣(至少你主管会喜欢这个),利用这个平台跨项目提意见,或是项目组内部交流思维碎片都很常见,达到 了群策群力,内部监督的效果。 http://www.uiven.com/?p=723

3、腾讯的内部分享、知识管理做得非常好,减少了“员工不知道怎么解决问题”的情况:

我常常听腾讯的朋友提起,他们每周都有很多产品、技术分享会,pony 等高管也时常参与分享,有不少会录制成视频,供大家长期学习。那些分享,含金量都很高。朋友说,看身边刚来的实习生,去听几次分享回来,都是进步飞跃。

网上公开的介绍“腾讯内部的e-learning系统主要有哪些课程?

第一类是公司高层的重要讲话和一些政策;第二,职业素质、职业技能方面的一些课程,比如说压力管理、时间管理、商务礼仪等;第三类是我们外购的课 程,比如《哈佛商业导师》;还有一类是“腾讯大讲堂”,这个大讲堂我们每两周做一次,一次两三个小时,请不同的技术专家来讲腾讯的产品、技术、研发,包括 公司历史上一些很成功的产品研发的过程,我们把每一讲都拍下来,编辑成课件,也放到网上去。

4、腾讯并非没有沟通的成本,只不过比起其他互联网公司,由于高层的重视,以及高层决策的高效,群体性的勤奋,会比一般的大公司,更高效一些。 (这并不是说,勤奋带来了高的执行力,而是强调,核心领导层对执行力的重要影响)

最后想说,其实很多道理,互联网从业者都明白,然而真正做到的,又有多少呢?同样身在互联网公司,我都深切地体会到,作为一个团队,快速响应用户反馈改进产品的不易(不是给用户回复就够了,而是要真正解决用户的问题)。腾讯做到的,真的值得大家学习。

很简单的事情,能日复一日,年复一年,一直都做到,而且是达到高的标准,真的,不容易。

272月/122

电子商务ROI计算公式及推广手段汇总图

发布在 邵珠庆


 

 
上图是运营流程的简明表。
 
以上是几个指标的介绍和说明
 
以上图是比较简单明了的说明图。


详细解说~~~

效果指标	动因

CPC	素材制作 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
	产品的类目价位以及品牌知名度 
	点位日期 
	广告位价值 
CPM	页面流量 
	点位日期 
	广告位价值 
点击率	素材制作 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
	产品的类目价位以及品牌知名度 
	点位日期 
收藏率	产品的类目价位以及品牌知名度 
	店铺装修:产品类别、品牌、店招、促销区、自定义、分类、橱窗展示区、宝贝详情描述、购物专题等等 
	人员配备:客服、售后、物流查询、导购等等 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
	素材制作 
成交转换率	产品的类目价位以及品牌知名度 
	店铺装修:产品类别、品牌、店招、促销区、自定义、分类、橱窗展示区、宝贝详情描述、购物专题等等 
	产品历史评价 
	人员配备:客服、售后、物流查询、导购等等 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
	素材制作 
行业人均访问数	店铺装修:产品类别、品牌、店招、促销区、自定义、分类、橱窗展示区、宝贝详情描述、购物专题等等 
	产品类目价位以及描述、品牌知名度 
	人员配备:客服、售后、物流查询、导购等等 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
人均店内停留时间	人员配备:客服、售后、物流查询、导购等等 
	店铺装修:产品类别、品牌、店招、促销区、自定义、分类、橱窗展示区、宝贝详情描述、购物专题等等 
	营销方案:买一送一、全场包邮、几折促销、买多少减多少、搭配销售等等 
回头率	产品性价比 
	售后服务、物流以及人员配备(客服、售后、物流查询、导购等等) 
	店铺装修:产品类别、品牌、店招、促销区、自定义、分类、橱窗展示区、宝贝详情描述、购物专题等等 
	营销方案二次传播途径:通过旺旺、邮件、老会员优惠等等 
	CRM利用:客户概况分析、客户忠诚度分析、客户利润分析、客户性能分析、客户未来分析、客户产品分析、客户促销分析 
232月/120

告诉你wamp5多站点配置教程

发布在 邵珠庆

第一要做的是安装第二个apache服务
一、找到Apache2的htppd.conf文件.例如:我的wamp是安装在G盘的,我的就是G:\wamp\Apache2\conf目录下.大家自己的是安装在哪里的自己换路径,后面不再重复说这话了。
二、复制htppd.conf,粘贴后在conf目录下后更名www2.conf(这里www2是自定义的,你想变成什么名字都可以。不过没试过中文的可行不。)
三、用用编辑器打开(用什么编辑器无所谓了,记事本就可以)打开www2.conf 找到如下代码
Listen 80
ServerName localhost:80
DocumentRoot "G:/wamp/www"
<Directory "G:/wamp/www">
更改为
Listen 8080//8080是新的apache服务监听的端口,可以自己改成自己想监听的。例如:8888
ServerName localhost:8080
DocumentRoot "G:/wamp/www2"//www2是我们第二个网站的目录
<Directory"G:/wamp/www2">
然后在G:/wamp下建一新文件夹为 www2
四、接下来就是安装服务了,
方法一:打开G:\wamp\Apache2\bin目录,新建一个txt文档,文档内容如下:(红色字部分)
httpd.exe -k install -n "www2" -f "G:\wamp\Apache2\conf\web2.conf"

保存后,更改文件名字以及后缀为www2.bat,双击运行就可以了
方法二:windows下面点击“开始”-“运行”输入“cmd”然后回车,打开命令提示符
把命令提示符切换到G:\wamp\Apache2\bin
输入
httpd.exe -kinstall -n "www2" -f "G:\wamp\Apache2\conf\web2.conf"
后按回车就可以了。
然后我们在www2下放一个html文件来做测试,在ie输入 http://localhost:8080OK。服务正常

第二要做的就是服务安装好之后 就是怎么用wamp控制台来控制新安装的服务了
一、打开wamp目录,找到wampmanager.ini用编辑器打开(用什么编辑器无所谓了,记事本就可以)
二、主要更改的有(更改过的是红色的)
1
[Services]
Name: wampapache
Name: wampmysqld

[Services]
Name: wampapache
Name: wampmysqld
Name: www2

2
[StartupAction]
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors

[StartupAction]
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors
Action: service; Service: www2; ServiceAction: startresume; Flags:ignoreerrors

3
[Menu.Left]
Type: separator; Caption: "WAMP5"
Type: item; Caption: "Localhost"; Action: run; FileName:"C:\WINDOWS\explorer.exe"; Parameters: "http://localhost/";Glyph: 5
Type: item; Caption: "phpMyAdmin"; Action: run; FileName:"C:\WINDOWS\explorer.exe"; Parameters: "http://localhost/phpmyadmin/"; Glyph: 5
Type: item; Caption: "www 目录(&)"; Action:shellexecute; FileName: "G:/wamp/www"; Glyph: 5

[Menu.Left]
Type: separator; Caption: "WAMP5"
Type: item; Caption: "Localhost"; Action: run; FileName:"C:\WINDOWS\explorer.exe"; Parameters: "
http://localhost/"; Glyph: 5
Type: item; Caption: "Localhost:8080"; Action: run; FileName:"C:\WINDOWS\explorer.exe"; Parameters: "
http://localhost:8080/"; Glyph: 5
Type: item; Caption: "phpMyAdmin"; Action: run; FileName:"C:\WINDOWS\explorer.exe"; Parameters: "
http://localhost/phpmyadmin/";Glyph: 5
Type: item; Caption: "www 目录(&)"; Action:shellexecute; FileName: "G:/wamp/www"; Glyph: 5
Type: item; Caption: "www2目录(&)"; Action:shellexecute; FileName: "G:/wamp/www2"; Glyph: 5

4
[StartAll]
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors

[StartAll]
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors
Action: service; Service: www2; ServiceAction: startresume; Flags:ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors

5
[StopAll]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors

[StopAll]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: www2; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors

6
[RestartAll]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors waituntilterminated
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors waituntilterminated
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors waituntilterminated
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors waituntilterminated

[RestartAll]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors waituntilterminated
Action: service; Service: www2; ServiceAction: stop; Flags:ignoreerrors waituntilterminated
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors waituntilterminated
Action: service; Service: wampapache; ServiceAction: startresume;Flags: ignoreerrors waituntilterminated
Action: service; Service: www2; ServiceAction: startresume; Flags:ignoreerrors waituntilterminated
Action: service; Service: wampmysqld; ServiceAction: startresume;Flags: ignoreerrors waituntilterminated

7
[myexit]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors
Action: exit

[myexit]
Action: service; Service: wampapache; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: www2; ServiceAction: stop; Flags:ignoreerrors
Action: service; Service: wampmysqld; ServiceAction: stop; Flags:ignoreerrors
Action: exit

三、更改完成之后保存,并重启wamp就ok了。下面图是我在机子上装有3个服务之后的样子了。

我不说具体的更改的用处是希望大家能自己琢磨下,想表达的观点:最好学习方法就是实践

最后,看帖子要顶哦

232月/120

告诉你怎样配置apache虚拟主机

发布在 邵珠庆

基于不同情况下配置apache虚拟主机的方法,一共八种情况。首先查看你虚拟主机属于哪一种情况,然后对号入座就好了。过程不复杂,关键在于对症下药。

 

步骤/方法

  1. 基于ip地址的虚拟主机
    Listen 80
    <VirtualHost 172.20.30.40>
    DocumentRoot /home/httpd/html1
    ServerName www.ok1.com
    ErrorLog /usr/local/apache/logs/error1_log
    CustomLog /usr/local/apache/logs/access1_log combined
    </VirtualHost>
    <VirtualHost 172.20.30.50>
    DocumentRoot /home/httpd/html2
    ServerName www.ok2.com
    ErrorLog /usr/local/apache/logs/error2_log
    CustomLog /usr/local/apache/logs/access2_log combined
    </VirtualHost>
     
  2. 基于IP 和多端口的虚拟主机配置
    Listen 172.20.30.40:80
    Listen 172.20.30.40:8080
    Listen 172.20.30.50:80
    Listen 172.20.30.50:8080

    <VirtualHost 172.20.30.40:80>
    DocumentRoot /www/example1-80
    ServerName www.example1.com
    </VirtualHost>
    <VirtualHost 172.20.30.40:8080>

    DocumentRoot /www/example1-8080
    ServerName www.example1.com
    </VirtualHost>
    <VirtualHost 172.20.30.50:80>
    DocumentRoot /www/example2-80
    ServerName www.example1.org
    </VirtualHost>
    <VirtualHost 172.20.30.50:8080>
    DocumentRoot /www/example2-8080
    ServerName www.example2.org
    </VirtualHost>

     

  3. 单个IP 地址的服务器上基于域名的虚拟主机配置
    # Ensure that Apache listens on port 80
    Listen 80
    # Listen for virtual host requests on all IP addresses
    NameVirtualHost *:80
    <VirtualHost *:80>
    DocumentRoot /www/example1
    ServerName www.example1.com
    ServerAlias example1.com. *.example1.com
    # Other directives here
    </VirtualHost>
    <VirtualHost *:80>
    DocumentRoot /www/example2
    ServerName www.example2.org
    # Other directives here
    </VirtualHost>
  4. 在多个IP 地址的服务器上配置基于域名的虚拟主机
    Listen 80
    # This is the "main" server running on 172.20.30.40
    ServerName server.domain.com
    DocumentRoot /www/mainserver

    # This is the other address
    NameVirtualHost 172.20.30.50
    <VirtualHost 172.20.30.50>
    DocumentRoot /www/example1
    ServerName www.example1.com
    # Other directives here ...
    </VirtualHost>
    <VirtualHost 172.20.30.50>
    DocumentRoot /www/example2
    ServerName www.example2.org
    # Other directives here ...
    </VirtualHost>

  5. 在不同的端口上运行不同的站点(基于多端口的服务器上配置基于域名的虚拟主机)
    Listen 80
    Listen 8080
    NameVirtualHost 172.20.30.40:80
    NameVirtualHost 172.20.30.40:8080
    <VirtualHost 172.20.30.40:80>
    ServerName www.example1.com
    DocumentRoot /www/domain-80
    </VirtualHost>
    <VirtualHost 172.20.30.40:8080>
    ServerName www.example1.com
    DocumentRoot /www/domain-8080
    </VirtualHost>
    <VirtualHost 172.20.30.40:80>
    ServerName www.example2.org
    DocumentRoot /www/otherdomain-80
    </VirtualHost>
    <VirtualHost 172.20.30.40:8080>
    ServerName www.example2.org
    DocumentRoot /www/otherdomain-8080

    </VirtualHost>

     

  6. 基于域名和基于IP 的混合虚拟主机的配置
    Listen 80
    NameVirtualHost 172.20.30.40
    <VirtualHost 172.20.30.40>
    DocumentRoot /www/example1
    ServerName www.example1.com
    </VirtualHost>
    <VirtualHost 172.20.30.40>
    DocumentRoot /www/example2
    ServerName www.example2.org
    </VirtualHost>
    <VirtualHost 172.20.30.40>
    DocumentRoot /www/example3
    ServerName www.example3.net
    </VirtualHost>
202月/120

邵珠庆博客 11年通过justgive为中国儿童慈善捐款$250美金

发布在 邵珠庆

from:support@justgive.org

邵珠庆博客 通过justgive为中国儿童慈善捐款$250美金确认邮件

Dear Shao Zhuqing:

Thank you for redeeming your GiveNow Card. Together, we are making a difference: JustGive has generated over $150 million for tens of thousands of great causes!

We hope you'll continue your relationship with JustGive, The destination for online giving®. To register with us and make additional gifts to charity, please visit www.JustGive.org. It's the only address you need to give when, how and as often as you want to more than 1.8 million charities working throughout the world. To buy a GiveNowCard, please see our Charity Gift Cards area. 

If you have any questions, please email us: support@justgive.org.

Reviews on GreatNonprofits help other donors make better giving decisions. Support your favorite charities and share what they mean to you—Write a Review.

Best Regards,
The JustGive Team
www.JustGive.org

This is your receipt. Please keep it with your tax records.

YOUR DONATIONS:
Donation #: 639395
Donation Date: January 4, 2012
Donor's Name: Shao Zhuqing

Donations:
CHINESE CHILDREN CHARITIES $250
This donation is designated to CHINESE CHILDREN CHARITIES

Total: $250

* While gift card redemptions are not tax-deductible, any donations charged to your credit card are deductible to the same extent as donations made by cash or check. Our Tax ID #, reflecting our nonprofit 501(c)(3) status, is 94-3331010. If you need further information about tax deductibility, please confer with your tax advisor.

142月/129

Google Analytic 数据导出API接口GAPI之PHP脚本

发布在 邵珠庆

支持自定义报表和条件过滤,请注意账户需要管理员权限

 

GAPI 即 Google Analytics PHP5 Interface的主要功能有:

  • 自动选择连接方式是curl或fopen
  • 支持GA维度指标数据
  • 账户数据映射-获得参数的方法
  • 报告数据映射-获得维度和指标的方法
  • 容易使用的过滤器
  • 面向对象的代码可以让你在其他系统中使用。

GAPI使用示例:

<?php
define('ga_email','username@gmail.com');
define('ga_password','password');
define('ga_profile_id_cn_0','1234567'); 
require 'gapi.class.php';

$start = mktime(0,0,0,date("m"),date("d")-30,date("Y"));
$end = mktime(0,0,0,date("m"),date("d")-2,date("Y"));
$start_date = date("Y-m-d",$start);
$end_date = date("Y-m-d",$end);
$ga = new gapi(ga_email,ga_password,isset($_SESSION['ga_auth_token'])?$_SESSION['ga_auth_token']:null);
$_SESSION['ga_auth_token'] = $ga->getAuthToken();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" dir="ltr" lang="zh-CN">
<head profile="http://gmpg.org/xfn/11">
 <title>EDM流量数据</title>
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>

<strong>EDM流量数据</strong>
<table><tr><th>日期</th><th>访问者</th><th>浏览量</th><th>跳出率</th><th>订单数</th></tr>
<?php $filter = "medium==edm";?>
<?php $ga->requestReportData(ga_profile_id_cn_0,array('date'),array('visits','pageviews','bounces','entrances','goal1Completions','goal2Completions','goal3Completions','goal4Completions','goal5Completions'),'-date',$filter,$start_date,$end_date); ?>
<?php foreach($ga->getResults() as $result):?>
<tr>
<td><?php echo $result; ?></td>
<td><?php echo $result->getVisits(); ?></td>
<td><?php echo $result->getPageviews(); ?></td>
<td><?php echo round($result->getBounces()/$result->getEntrances()*100,2).'%'; ?></td>
<td><?php echo $result->getGoal1Completions() ?></td>
</tr>
<?php endforeach;?>
</table>
</body>
</html>

官方地址:http://code.google.com/p/gapi-google-analytics-php-interface/

GA维度和指标:http://code.google.com/intl/en/apis/analytics/docs/gdata/gdataReferenceDimensionsMetrics.html

 

数据导出API请求地址:

https://www.google.com/analytics/feeds/data

?ids=ga:12345
&dimensions=ga:source,ga:medium
&metrics=ga:visits,ga:bounces
&sort=-ga:visits
&filters=ga:medium%3D%3Dreferral
&segment=gaid::10 OR dynamic::ga:medium%3D%3Dreferral
&start-date=2012-01-20
&end-date=2012-01-30
&start-index=10
&max-results=100
&v=2
&prettyprint=true

请求参数说明:

  • ids (必需)Google Analytics中对应的配置文件ID
  • dimensions (可选)维度,一次请求最多可有7个维度
  • metrics (必需)指标,一次请求最多可有10个指标
  • sort (可选)排序,排序只能使用在维度和指标中的参数,添加(-)号可改变排序的顺序
  • filters (可选)过滤条件
  • segment (可选)群体细分 可以使群体细分的ID,也可以使和过滤器一样的条件
  • start-date (必需)开始时间
  • end-date (必需)结束时间
  • start-index (可选)索引起始位置,默认为1
  • max-results (可选)返回数据的最大条目 一次请求最多返回1万条数据
  • v (可选)API版本
  • prettyprint (可选)为供稿 XML 添加额外空格,以提高其可读性。
122月/121

用户数据和商业数据

发布在 邵珠庆

真正的现代企业的数据化运营是企业全员的积极参与,全员的数据分析应用意识。

老板需要第一个了解这些数据背后的含义,然后指导员工去怎样通过分析这些数据,调整执行方案。

电子商务的数据可分为两类:前端行为数据和后端商业数据。

前端行为数据指访问量、浏览量、点击流及站内搜索等反应用户行为的数据;

而后端数据更侧重商业数据,比如交易量、投资回报率,以及全生命周期管理等。

112月/120

数据库表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

发布在 邵珠庆

第一部分、查询理论

连接查询方式有:

内连接、外连接(左连接、右连接、全连接)、交叉连接

左连接和右连接的区别:

左连接以左表为基准进行查询,左表数据会全部显示出来,右表如果和左表匹配的数据则显示相应字段的数据,如果不匹配,则显示为NULL;右连接刚好相反。

全连接就是先以左表进行左外连接,然后以右表进行右外连接。

说明:所谓的基本,就是以某张表的限制条件查询条件为准!

具体如下:

一、内连接

内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种:

1、等值连接:在连接条件中使用等于号(=)运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。

2、不等连接:在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。

3、自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。

 

二、外连接

返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。

 

三、交叉连接

交叉连接不带WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行 数。例,titles表中有6类图书,而publishers表中有8家出版社,则下列交叉连接检索到的记录数将等于6*8=48行。

第二部分、实例说明

  • 实例

Book表:

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

 Student表:

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)
 

一、内连接

select *

from [Book] as b,[Student] as s

where b.StudentId=s.StudentId

         等价于如下(也可以不要关键字inner,此为系统默认)

select *

from [Book] as b inner join [Student] as s

ON b.StudentId=s.StudentId

         结果为:

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

         执行过程

相当于内连接的向右连接。以from  [Book] inner join [Student]等式右边为基准,即以Student表(等式右表,s表)的s.StudentId为基准,遍历Book表(等式左表,Book表)中 与之匹配的b.StudentId,然后拼接返回。结果含有重复的列,b.StudentId和s.StudentId。

         说明

这与where b.StudentId=s.StudentId或者s.StudentId=b.StudentId位置没有关系。它仅仅代表满足条件而已,不判定谁为基准。以下外连接,交叉连接相同操作。

 

二、外连接

1、左外连接

         代码

select *

from [Book] as b left join [Student] as s

ON b.StudentId=s.StudentId

         结果

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

         执行过程

即以from [Book] left join [Student]的Book表为基准,即以Book表(b表)的b.StudentId为基准。遍历Student表(s表)中与之匹配的 b.StudentId。若b.StudentId含有s.StudentId匹配项,则进行拼接,然后遍历Student表的下一条 s.StudentId,当查询完毕则进入下一条b.StudentId。若b.StudentId没有相应s.StudentId匹配项时,则显示左表 的项,拼接右表的项显示为NULL。

 

2、右外连接

         代码

select *

from [Book] as b right join [Student] as s

ON b.StudentId=s.StudentId

         结果

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

         执行过程

即以from [Book] right join [Student]的Student表为基准,即以Student表(s表)的s.StudentId为基准。遍历Book表(b表)中与之匹配的 s.StudentId。若s.StudentId含有b.StudentId匹配项,则进行拼接,然后遍历Book表的下一条b.StudentId, 当查询完毕则进入下一条s.StudentId。若s.StudentId没有相应b.StudentId匹配项时,则显示右表的项,拼接左表的项显示为 NULL。

 

3、全外连接

         代码

select *

from [Book] as b full outer join [Student] as s

ON b.StudentId=s.StudentId

         结果

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

         执行过程

即以from [Book] full outer join [Student]中先以Book表进行左外连接,然后以Student表进行右外连接。

 

三、交叉连接

         代码

select *

from [Book] as b CROSS Join [Student] as a

Order by b.BookId

         结果

数据库表与表连接的方式(内连接、外连接[左连接、右连接、全连接]、交叉连接)

         执行过程

即是按照Order排序的Id,把要Join的右表无条件拼接过来。这样依次执行,这样这种记录便为两个表的记录的笛卡尔积。

92月/123

linux 查看文件方式总结

发布在 邵珠庆

查看文件的命令有:cat、more、less、head、sed和tail等。

例:
查看文件的前5行:  head -5 test.log
查看文件的后2行: tail -2 test.log  或 tail -n 2 test.log
查看文件中间一段:sed -n '5,10p' test.log
这样你就可以只查看文件的第5行到第10行。

另外有个比较常用的效果是实时监视,即不停地读取最新内容,这时可以用tail命令加-f参数:
tail -f test.log
用Ctrl+c终止。

tail语法格式:
    tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]
    或者
    tail [ -r ] [ -n Number ] [ File ]
使用说明:
    tail 命令从指定点开始将 File 参数指定的文件写到标准输出。如果没有指定文件,则会使用标准输入。 Number 变量指定将多少单元写入标准输出。 Number 变量的值可以是正的或负的整数。如果值的前面有 +(加号),从文件开头指定的单元数开始将文件写到标准输出。如果值的前面有 -(减号),则从文件末尾指定的单元数开始将文件写到标准输出。如果值前面没有 +(加号)或 -(减号),那么从文件末尾指定的单元号开始读取文件。
主要参数:

-b Number 从 Number 变量表示的 512 字节块位置开始读取指定文件。
-c Number 从 Number 变量表示的字节位置开始读取指定文件。
-f 如果输入文件是常规文件或如果 File 参数指定 FIFO(先进先出),那么 tail 命令不会在复制了输入文件的最后的指定单元后终止,而是继续从输入文件读取和复制额外的单元(当这些单元可用时)。如果没有指定 File 参数,并且标准输入是管道,则会忽略 -f 标志。tail -f 命令可用于监视另一个进程正在写入的文件的增长。
-k Number 从 Number 变量表示的1KB 块位置开始读取指定文件。
-m Number 从 Number 变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。
-n Number 从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移。
-r 从文件末尾以逆序方式显示输出。-r 标志的缺省值是以逆序方式显示整个文件。  
如果文件大于 20,480 字节,那么-r标志只显示最后的 20,480 字节。 -r 标志只有   与 -n 标志一起时才有效。否则,就会将其忽略。

   下一页