开发者的10个最佳代码游乐场
如果你是开发者,在寻找最佳的代码游乐场,享受代码的乐趣,那么你来到了正确的地方。在这篇文章中我已经收集了用于测试、调试和分享代码的10个最好的免费代码游乐场(Code Playground)和沙盒工具。如果你知道其他好的代码游乐场,可以通过评论告诉我。Enjoy!
1. Codepen
CodePen是一个web前后端游乐场。它基于激发、传授和分享。能高亮热门示例(“Pen”),且提供高级功能,如共享和嵌入。需要建立一个减少测试案例来演示并找出一个bug?CodePen绝对适合这个场景。想炫耀你的最新创作和获得同行的反馈? CodePen是绝一不二的选择。
2. CSSDesk
CSSDesk是一个在线CSS沙箱。它使人们能够快速测试的CSS代码片段,并观察实时结果。我有非常看好这个项目。有行号和文本框输入实时语法高亮显示。其中一个最好的一点是它允许用户与他人分享他们的代码。
谷歌的代码游乐场是一个基于Web的工具,可以让Web开发人员尝试谷歌所有提供的API,调整代码,和查看结果。谷歌的代码游乐场可以让您尽情享受而不必打开一个外部编辑器,所有的API都被装载在(左侧)“Pick an API”框中。
4. JS Bin
JS Bin是一个web app,专门设计于帮助JavaScript和CSS亲们在某些上下文中测试和协作调试代码。 JS Bin允许你编辑和测试JavaScript和HTML。一旦满意,你可以保存并发送这URL给同行审查或寻求帮助。然后,他们可以做更进一步的修改,如果需要保存更新。
5. JSFiddle
JSFiddle中是一个shell编辑器,通过创建基于流行JS框架的自定义环境,简化JavaScript的编写。你可以选择框架和版本(可选的有MooTools,jQuery,ojo, Prototype, YUI, Glow,Vanilla)。此外,如果行的话,你可以添加jQuery UI或MooTools More之类的免费框架。它具有一个极好的特征是能够产生一个唯一的URL以保存和分享代码。另外,JSFiddle也自带嵌入特征。它是无需网站就可尝试和分享JS代码的极佳平台。
6. Dabblet
Dabblet是快速测试CSS和HTML代码片段的交互式游乐场。它使用-prefix-free,不必在你的CSS代码添加任何前缀。可以在Github gist保存工作内容,将其嵌入到其他网站和与他人分享。它目前只支持Chrome,Safari和Firefox的现代版本。所有发布的代码属于发布者,没有强制许可证。 Dabblet本身是开源软件,在NPOSL-3.0许可下发布。
7. Editr
Editr是一个集HTML,CSS和JavaScript的游乐场,你可以在自己的服务器上托管。它是基于ACE的编辑器。它的超级容易安装。它支持一个页面多个实例。可以通过JS对象或HTML属性进行配置。 Editr支持3种视觉布局:水平,垂直和单一。前两个是用于在线编辑。第三个是用于演示。 Editr基于MIT License。
8. Livewave
Liveweave是用于HTML5、CSS3、JavaScript的游乐场和用于网页设计师和开发者实时编辑器。这是用来测试,练习和分享成果的好工具!面板大小可调,可以让你随心所欲写(或织,如我们称呼它名字一样)代码。 Liveweave还内置了对HTML5和CSS3的标签/属性上下文敏感的代码提示,使生活变得更加简单。
D3.js设计目的在于让你能够以交互方式使用D3.js库。每一次编辑(产生有效代码)都会实时影响D3.js游乐场。因为CSS是可视化的重要组成部分,你也可以在线编辑CSS。
10. HTML5 Playground
HTML5的游乐场包括一个可以看HTML5动作的代码库。它们包括一些基础启动例程,如HTML5 Doctype和音频标记(仍然是兼容浏览器中回放特性的好demo)。拥有一个交互表格,包含HTML5元素,如范围、日期输入和针对电子邮件地址和网站的自动验证。
阿泡的产品管理心得
A Business Is Not a Democracy(商业无民主可言)
Product Management is Inherently Political(产品管理就是内部政治)
- 我们为谁做产品决定了我们要做什么样的产品,我们做什么样的产品决定了我们的产品能走多远,我们的产品能走多远才最终决定了我们的企业能走多远。
- 在产品团队中,产品经理不是最聪明的人,最聪明的人在你的团队中,去发现这些聪明的人、聪明的想法。
- 产品经理想做好工作,必需要具备“五个一”:一个脑袋、一双眼睛、一对耳朵、一双手以及一双脚。
- 主动是要找到目标,好学是要实现目标,对产品经理这个人是如此,对产品经理的工作更是如此。
- 对于“产品”的认识决定了产品经理工作的广度,对于“需求”的认识决定了产品经理工作的深度。
- 对于产品经理来说,根本要关注的是如何提供给用户解决问题的最好方法,而不是提供给用户一个完美的产品。
- 一个好产品并不一定是一个能挣钱的产品,而能挣钱的产品,对于企业来说,则肯定是一个好产品。
- 作为一个产品经理,如果你还做不到为企业挣钱,那么就要先做到为企业省钱。
- 用户可以影响我们的产品方向,但不能决定我的产品方向。
- 教育用户这个问题的根本不是是否需要教育用户,而是教育用户的成本到底由谁来承担,这绝不能成为产品经理的一种惯性思维,一定视情况而论。
- 产品经理的理想且终极的目标就是:在合适的时间、合适的地点向合适的用户推出合适的产品!
- 产品经理,一个在跷跷板上工作的人,一边是用户的利益,一边是企业的利益,做好了是左右逢源,做不好就是左右为难
- 一个合格的产品经理应该是拉出去可以冲锋陷阵,拉回来可以排兵布阵,既有参谋的眼光,又有指挥官的果断!
- 一个产品经理需要了解的技术领域,宽度需要两英里,深度需要两英寸!
- 产品经理无非就做两件事情:知道做什么、知道怎么做。前者就是产品经理的战略规划,后者就是产品经理的战术指导。
- 产品经理,要相信自己的双腿,不要相信自己的耳朵!
- 作为一个产品经理,不要向别人轻易地承诺,也不要相信别人轻易的承诺。
- 情感是热血的,商业是冷血的,产品经理应该很多时候是一个凭热血去做冷血事情的角色。
- 产品经理在公司内的关系很简单,要么去和稀泥,要么去得罪人,但现在看,得罪人要比和稀泥更有前途。
- 都说忠言逆耳利于行,但对于产品经理来说,不但要有忠言,关键还得顺耳,才有可能利于行,这或许就是产品经理沟通能力的最高体现吧。
- 作为一个产品经理,在决策建议上可以允许失误,但绝对不能允许愚蠢。
- 成功就是不打折扣的执行,失败则是一个折扣接着又一个折扣的执行,因此,产品经理是不允许在业务执行上打折扣的。
- 无数的事实已经证明,一个产品的成功并不是由这个产品经理做对了多少决定的,而是由他的竞争对手做错了多少决定的。
- 产品经理一定是一个动脑比动腿多的职位,但要想更好地动脑,前提是腿必须先动起来。
- 这个世界上并不是没有需求,而是我们缺乏发现需求的眼睛。
- 都说产品经理的第一能力就是沟通交流的能力,怎么沟通、怎么交流,不是说你把该说的说了就可以了,而应该是把该说的说好了、说对了,说到团队成员的心窝子里才能证明你会沟通、会交流。
- 产品经理要面对的各类角色太多,很多时候都会形成一种对立面,在不涉及原则的情况,产品经理要学会先往后退。
- 产品经理一定要学会说“不”,面对的对象可能是我们的高层、伙伴以及客户,之所以这样,究其根本,是为了避免市场向我们说“不”。
- 对于产品经理来说,不是我们产品的机会越来越少,而是我们挖掘和发现机会的难度越来越大
- 对于产品经理而言,要处理好各种关系,不但要以人为本,还要以人的利益为本。
- 对于产品经理而言,知道不做什么要比知道做什么更有价值。
- 把任何想法都记录下来,如果不记录下来,这个想法将永远只是“想法”。
- 对于产品经理而言,应该是没事不找事,有事不怕事。
- 产品经理最大的智慧就是把别人的智慧变成自己的智慧。
2014世界杯冠军预测图(基于大数据与JS)
四年一度的球迷狂欢节就要到了,32强已经准备就绪,6月13日开始将为全世界的球迷带来顶级的足坛盛宴。
自32强分组以来,关于各支球队胜负的预测从未停止过。就连《时间简史》的作者、世界著名物理学家霍金都通过科学公式预测出英格兰队要想在2014世界杯上夺冠需要具备的要素。
开发者Andrew Yuan利用大数据和前端技术制作了一个预测信息图,来看看你支持的球队夺冠几率如何吧?(足球是圆的,一切皆有可能,本文不对该数据负责)。
演示地址:http://andrewyuan.github.io/EDAV-project.html
鼠标放在图中某个节点、国家名称、地图区域上,左图中即会显示该国家队在世界杯各轮比赛中获胜的几率。
该项目的实现方式:
收集数据:自1930年以来的FIFA官方比赛比分、自1993年以来215个不同国家的排名、32个国家的Google地图数据
将CSV格式数据汇总,转换为JSON格式
通过各种公式计算概率
使用D3.js将结果可视化
具体实现方式:
http://andrewyuan.github.io/methodology.html (使用方向键查看)
项目源码:
https://github.com/andrewyuan/andrewyuan.github.io/blob/master/EDAV-project.html
玩小游戏 《2048》 的一些感想心得
最近走在上下班的路上看到很多人都在玩2048的一个游戏,我也尝试下载玩了几天,有些感悟跟大家分享一下。
2048游戏规则我就不多说了,安装下载拿到手划拉几下就知道怎么玩了,进入游戏基本没有什么学习成本。
十六个格子,2+2=4,4+4=8,8+8=16… 似乎和消除类游戏一样。
游戏说明:
1、游戏中的多米诺骨牌效应,包含了周易的博大思想,所谓一生二二生三三生万物,就是这个道理。
2、相同数字可以相加,包含了物以类聚人以群分思想。
3、小小十六格子,就象征了资源的有限性。
4、每次随机出现的数字2或者4就是新生事物,或者说是机遇,或者说是不稳定因素,如何妥善安排这些资源则是能否长久发展的关键。
5、只有通过不断的整合资源升级改造,让数字不停流动起来,才能发展壮大获取更多分数,如果数字流动不起来基本就玩完了。
6、总是想着把相同的数并起来,没有一个规划,搞得我不知道怎么游戏就这样结束了。后来慢慢明白,就是一个金字塔,一定要有一个目标,从小到大慢慢的合并数字。
7、做事情的时候多动脑,先思考再行动,不要盲目的去做事情,思路清晰方法正确剩下就是时间问题。
游戏感悟:
人不要贪心,目标要专一,一步步走好,不要太着急,目标总会实现。
1、基本素质:一定要有耐心,淡定的平常心。
2、游戏原则:数字按顺序紧邻排列,以大数字所在的一行为主要移动方向,分清主次。
3、战略布局:首先保证最大数字和第二大数字所在在的那一列/行是满的。
4、排兵布阵:最大的数字尽量放在角落,在中间会影响较小数字的发展空间。
5、关键角色:注意活动较大数“32”以上,旁边要有相近的数。
6、方向目标:最高单格子分数65536,理论游戏最高得分3932160,越往后得分越高,敢挑战下去会发现自己的潜力无限。
7、2048是个游戏,完蛋了还可以从新开始,人生不行…
8、好像经历了生命中一次奇特的旅行
GitHub开源2048代码:
https://github.com/gabrielecirulli/2048
就像地球就这么大,但是社会要往前发展,技术的革新,意识形态的发展,社会组织形式的进步,所有的一切都不是凭空出现的,都是需要一定的社会积累,就是所谓的物质和科技的积累。关键的是,这样的积累必须是规则有序的,体现在现实社会中就是,个体必须服从约束。总共16格子,如果混乱无序,容纳不了多少数据就会相互堵塞,当再也容纳不了一个新数字的诞生,也就代表了这个游戏的结束。
如果把自己看做其中的一个数字,就会得到如下的情形:你随机出现在一个位置,可能是2可能是4,这就代表了你的出身,有人出生名门贵族(位置优势可以跟附近的数字组合),有人出身贫寒(位置不利于自己发展),有人天赋聪颖(数字4),有人稍显愚钝(数字2)。生命中充满了冒险,只有不断跟自己相同的数字去接近,融合然后发展成为更大的自己,然后接近更大的数字,得到更大的发展……
有句话叫“谋事在人,成事在天”大概就是说的是这个意思吧。。。在你足够努力,谨慎,拼搏,机敏过后,在你充分的发挥了你的天赋过后。。。可能冥冥之中,真的有一只手在帮助你达到你可以达到的高度。。。真的有一个雅典娜(女神)在控制着你的小宇宙。。。你能达到的最终高度,真的不是你决定的。。。当然,只是很多人(包括我自己)还远远没有达到需要拼天赋的时候,因为我们都不够努力。。。
大数据行业生态图谱3.0–信息图
点击上图,即可打开大图
2012年,FirstMark资本的MattTurck绘制了大数据生态地图2.0版本,涵盖了大数据的38种商业模式,被业界奉为大数据创业投资的清明上河图。两年后的今天,经过漫长的等待,Turck终于推出大数据生态地图3.0版本。(期间bloomberg推出过一个2013版大数据生态地图)
在大数据生态地图3.0版中,Turck从一个风险投资者的角度对两年来大数据市场的最新发展进行了深入的研判,并对未来趋势进行解读,以下是Turck眼中大数据市场的几个最为关键的演变趋势:
竞争加剧:创业者们纷纷涌入大数据市场,尾随的VC们也是挥金如土,导致大数据创业市场目前已经非常拥挤。例如一些创业项目类别,例如数据库(无论是NoSQL还是NewSQL),或者社交媒体分析,目前正面临整合或去泡沫化(随着Twitter收购BlueFin和GNIP,社交分析领域的整合已经开始)
虽然大数据创业市场已经人山人海,但是依然有足够的空间给新的创业公司,现阶段大数据基础设施和分析工具领域的创新吸引了大量的资金,当然,这类大数据创业本来就是资金密集型项目。
大数据市场尚处于初期阶段:虽然大数据的概念已经热炒了数年,但我们依然处于市场的早期阶段,虽然过去几年类似Drawn和Scale这样的公司失败了,但是相当多的公司已经看到了胜利的曙光,例如Infochimps、Causata、Streambase、ParAccel、Aspera、GNIP、BlueFinLanbs、BlueKai等。
还有不少大数据创业公司已经形成规模和气候,并且获得了海量融资,例如MongoDB已经募集2.3亿美元,Plalantir9亿,Cloudera1亿。但是就成功的IPO或公司而言,市场尚处于早期阶段(虽然已经有Splunk、Tableau等成功IPO)。
此外,目前阶段一些传统IT巨头已经展开了收购大战,例如Oracle收购BlueKai和IBM收购Cloudant。在很多大数据创业领域,创业公司们依然在为市场领袖的地位展开混战。
从炒作回归现实:虽然经过几年声嘶力竭的热潮后,媒体对大数据已经有些审美疲劳,但这恰恰是大数据真正落地的重要阶段的开始。未来几年是大数据市场竞争的关键时期,企业的大数据应用从概念验证和实验走向生产环境,这意味着大数据厂商的收入将快速增长。当然,这也是一个检验大数据是否真的有“大价值”的时期。
大数据基础设施:虽然Hadoop已经确立了其作为大数据生态系统基石的地位,但市场上依然有不少Hadoop的竞争和替代产品,但这些产品还需要时间进化。基于Hadoop分布式文件系统的开源框架Spark近来成为人们讨论的热门话题,因为Spark能够弥补Hadoop的短板,例如提高互动速度和更好的编程界面。而快数据(实时)和内存计算也始终是大数据领域最热门的话题。一些新的热点也在不断涌现,例如数据转换整理工具Trifacta、Paxata和DataTamer等。
时下一个关键的争论是企业数据是否会转移到云端(公有云或者私有云),如果是,什么时候会发生?一些基于云端的Hadoop服务创业公司例如Qubole、Mortar坚信从长远看所有企业数据最终都会转移到云端。
大数据分析工具:就创业者和VC的活跃度而言,大数据分析是大数据市场最活跃的领域。从电子表格到时间线动画再到3D可视化,大数据创业公司们提供了各种各样的分析工具和界面,有的面向数据科学家,有的选择绕过数据科学家直接面向业务部门,由于不同的企业对分析工具的类型有不同的偏好,因此每个创业公司在自己的细分领域都有机会。
大数据应用:大数据应用的发展进程相对缓慢,但目前阶段大数据确实已经进入了应用层。从大数据生态地图3.0中我们可以看到,一些创业公司开发出了大数据通用应用,例如大数据营销工具、CRM工具或防欺诈解决方案等。还有一些大数据创业公司开发出了面向行业用户的垂直应用。金融和广告行业是大数据应用起步最早的行业,甚至在大数据概念出现之前就已经开始了。未来大数据还将在更多行业得到广泛应用,例如医疗、生物科技(尤其是基因组学)和教育等。
Google Analytics细分功能大升级:更强大更好用
Justin Cutroni早在7月份就发布了博文介绍了升级后GA细分功能: http://cutroni.com/blog/2013/07/16/google-analytics-segmentation/。可以说这次细分功能的升级将是GA有史以来非常重要的一次升级。这些更新将在未来几个月内对所有使用者逐步开放。如果大家觉得GA有哪些地方不好用或是有一些新的需要,可以直接在Justin的博客后边发布你的意见或建议,通常他都会给你回复。
下边我们将从Justin的视角去了解一下更新后的细分功能:
细分功能可能是网站分析工具中最重要的功能。不细分,毋定死。这也充分说明了细分的重要性。通过使用升级后的Google Analytics细分功能,你可以创新性地对数据进行细分分析。
下边我们将具体看一下GA细分功能的升级点及其在网站或APP分析中的应用。
Google Analytics细分新功能:
这一次GA的细分功能和之前相比主要有以下三大方面的不同:
1.真正的用户细分 高级细分功能将支持真正的用户细分。这意味着Google Analytics将可以把访问一个网站或者使用一个应用程序的人群明确细分开来。这也意味着我们将可以进行群组分析(把在某个时间段内具有同一特征或同一行为的用户细分出来进行分析,比如,在一月份第一次访问过analyticskey.com网站的用户。注:这里把cohort译为群组,以方便理解,后期GA的官方中文说法可能会有些不同)。
要注意的是,因为用户细分的数据是需要后台实时处理的,这是一项较大的工作,为了保证数据可以快速显示,这里对用户细分是有一定的限度:你最多只能把用户细分应用于90天的时间范围内。
2.顺序过滤器 这同样是一项非常大的改进。现在,我们可以实现真正的用户细分,我们可以跟踪同一用户在多个会话中的行为。例如,你可以创建这样一个细分:点击了某个广告系列并在一段时间后购买了产品的用户。
3.界面升级 更整洁更符合操作逻辑的界面。一些高级用户可能认为界面过于简单化了,原来有的一些功能变得不太好找,但实际上原有的功能仍然保留了下来。新的界面将方便大家更容易创建和管理一些常用的细分。
升级的界面如下图所示。
下边我们将深入了解一下新升级的细分功能。
了解用户细分、访问细分和Hit细分有什么不同
用户细分将返回所有与该用户相关的数据。这意味着这包含了该用户在你的时间框架中产生的所有访问数据。你可以针对用户、访问或Hit设置限制条件。
例如,我可以创建一个基于收入(Revenue)的用户细分,我想看到所有产生了500美元的收入的用户的数据。在这个条件设置里,收入(Revenue)这个指标的限制条件将应用于单个用户。
里边的某个用户可以在经过多次访问产生的收入才超过500美元,而另一个用户在一次访问中产生的收入就超过了500美元。这个细分会把这两类用户的数据都包含在一起,因为这批用户中每一个人产生的收入都超过了$500。
访问细分将基本访问返回所有符合过滤条件的数据。这与现在存在的功能相同。
现在我们从访问的角度来看看同样一个例子。如果我们创建了一个基于访问的单次收入大于$500收入的访问细分,GA将匹配找到所有满足该条件的访问,并返回所有相关的数据。
最后,还有一类Hit级别的细分。这在某种程度上,也类似于我们今天所使用的Google Analytics。你可以设置一个Hit级别的条件,比如综合浏览量或事件,系统将会返回所有与这些浏览量或事件相关的访问的数据 - 而不只是返回那些符合条件的浏览量或事件数据。
创建简单的分类
现在我们大概知道了不同类型的细分之间的差异,下边让我们创建一些简单的分类。
导航的左侧部分提供了一个维度组的列表,你可以从中找到一些最常见的维度或指标。例如,在电子商务(Ecommerce)的组里,你可以找到下边这一些常见的维度(比如产品Product和产品类别Product Category)与指标(如收入Revenue)。
这里的每个指标或维度都是有相应的条件逻辑的。这与之前我们经常使用的高级细分的设置比较相似。另外这里还有一个地方要输入细分条件的值。
对于指标来说,你可以把条件选项应用于用户或会话。通过下拉菜单可进行选择。
我们要创建的是一个用户收入超过$500的细分。首先要把这个细分应用到用户级别,然后再设置合适的条件数值,在“收入”(Revenue)字段中输入500。
请注意,当添加一个条件时,在界面右侧将会有相应的汇总显示。
如果要在这个细分中添加额外的条件,需要进入到另一个维度组并添加条件。
比如要在这个细分中添加一个地理位置的条件,需要点击人口统计组(Demographics),创建一个条件:仅包括来自马萨诸塞州(Massachusetts)的访问。
现在创建好了用户细分群组是,来自马萨诸塞州并在网站上花费超过$500的用户。
我可以把这个细分应用于少于90天的时间范围内。
另一个要注意的事项是:使用选项链接(Option)你可以把这个细分应用到到任何其他的你常用的配置文件中。旧版的细分功能也有此选项。当然,如果不是很必要,可以仅应用于当前的配置文件。
创建高级细分
现在,我们已经掌握了基本的细分创建方法,下边我们将了解一下较为复杂的高级细分如何设置。高级细分可用于创建包括多个用户条件、多个访问条件或者是用户条件与访问条件的组合条件的细分。
这种细分可以用于衡量在某一段较长的时间段内一个用户的一次访问的行为情况。例如,你想了解一下阅读了你的博客的访问行为是否会影响到一个用户的长期价值。
下边我们将建立这样一个细分。
首先,创建一个基于价值(Revenue)的用户过滤器。然后再添加一个访问过滤器以匹配浏览过博客内容的访次。
这两个过滤器将分两个阶段进行应用。
首先,GA将基于用户过滤器(包括所有这些用户的访问)把这符合条件的用户过滤出来。
然后,GA将再从符合第一个条件(用户条件)过滤得到的数据中选择满足第二个条件(访问条件)的访问数据筛选出来。
这个非常简单的设置可用于回答这样的问题:“我的博客内容有助于推动更多的销售和收入吗?” 在过去这确实是这个不好回答的较为纠结的问题,现在终于有了一个相对完善的解决方案。
这将对于内容营销有极大的促进作用。用原文作者的话说,所有内容营销的粉丝都流口水了吧?
创建顺序细分
顺序细分(Sequence Segments)是GA新的细分工具的另一个高级功能。这里所说的顺序可以是基于不同的访次或是基于同一次访问。这非常类似于再营销功能中所使用的顺序细分。
顺序过滤器可以把按一次的先后顺序浏览了两个页面(不一定要是页面条件,详情可见下边的示例)的用户细分出来。这有些类似购物车中的两个步骤。
细分示例:有些用户进入了购物流程但并没有最终购买。它采用了一个页面条件来表示添加货品到购物车。因为没有达成购买,交易是在会话期间为零。
当你需要查看某两个动作之间的关系或相关数据,可以使用顺序细分。
在GA中创建用户群组
当然在新的细分功能发布之前我们是可以通过配置自定义变量的方法来跟踪和细分用户群组,这是基于代码的方法,实现起来有点麻烦。而现在我们可以直接在Google Analytics中创建基本的用户群组,这是一个巨大的进行。
群组(cohort),就是把在某个时间段内具有同一特征或同一行为的用户。一个群组基本上就是一个包含了某些日期条件的细分。例如,我要看所有在1月份中第一次访问网站的用户的相关数据。 他们在1月份之后有没有回访我们的网站呢,有没有继续产生销售呢?
要查看到这些信息,我们需要创建一个基于用户的第一次访问的群组。GA提供了这样一个新的维度:第一次访问的日期(Date of Fist Visit)。这意味着,我们为可以为第一次访问指定一个特定的日期范围。
注:该群组的日期范围不能超过31天。
当然,在创建其他的细分时你也可以使用第一次访问的日期作为细分的维度。例如,对于一个电商网站来说,通过需要把用户第一次访问的细分与用户产生的销售合并起来。
下边为第一次访问与电子商务的条件相合并的设置方法。
由此产生的数据是这样的:
要注意的是,基于用户的细分只能应用于不超过90天的时间范围内。因此,任何创建的群组使用这种方法最多也只能应用于90天。
另一示例:如果我是一名出版商,我想看一下在特定的月份第一次访问网站用户他们在附后的时间里的行为表现。我可以为每一个月可以创建一个细分(第一次访问的用户群组)并查看每一个群组在随后的时间段中的数据变化情况。
如果对于某一个群组,你要查看的数据的时间段超过了90天,那你可能还得使用自定义变量或事件跟踪的方法来收集和查看数据。
还有一些要注意的事项:我们还不能根据转化创建群组;在GA中还没有第一次转化日期的维度,现在只有第一次访问日期的维度。
细分管理变得更简单
相比于之前,新的界面让你的细分管理变得更加简单。
现在界面提供了过滤功能,你可以直接输入过滤条件快速查找到你之前设置的细分。另外你还可以使用星标标注出哪些是你最常用的细分
若要编辑某个细分,把鼠标悬停在该细分上面,并点击弹出的齿轮工具即可。
小结
这篇文章有点长(作者原话)。我较早前就看到了这个功能的介绍,但因为之前一段时间较忙一直拖着没有把它整理出来。这可能是Google Analytics有史以来最重要的升级之一。用户细分的功能将会改变人们对于的GA使用方式。而且,我们即将进入通用分析的世界,我们将会有更多的数据,因此,更有效地对用户进行细分将显得尤为重要。
从Google Analytics升级Universal Analytics
从Urchin到Google Analytics,再到如今的Universal Analytics。Google的分析工具总是在不断的升级,完善中。搞的我们这些使用者一刻也不敢懈怠。努力的跟上这升级的节奏,不敢落后。从本篇文章开始,我们的注意力将从Google Analytics转移到对Universal Analytics的关注。
本篇文章将分两大部分来介绍Universal Analytics的代码。第一部分是Universal Analytics的全局代码,也就是网站中每个页面都需要添加的那部分常规追踪代码。第二部分是Universal Analytics的自定义代码。下面我们来分别看下这两部分追踪代码如何设置和实施,以及和Google Analytics追踪代码的区别。
第一部分 Universal Analytics全局代码
1,在返回数据时的变化
在对Universal Analytics的追踪代码和实施过程进行介绍之前,我想有必要先来介绍一个细节的变化。就是Google 分析工具在向服务器返回数据时的请求URL和方式的变化。在Google Analytics中,所有追踪到的数据会以对utm.gif图像的请求参数形式返回到Google服务器。因此,我们在检查Google Analytics时最常见的是以http://www.google-analytics.com/__utm.gif开头的URL地址。
但是现在,无论是你的网站部署的是Google Analytics,还是Universal Analytics,当你对返回数据进行检查时,都会发现一些变化。返回数据不再只有之前的一个URL地址了。而是可能会变成以下三个中的一个。
三类Google 分析工具返回数据URL地址
- http://www.google-analytics.com/__utm.gif
- http://www.google-analytics.com/collect
- http://stats.g.doubleclick.net/__utm.gif
这三类地址都可以正常返回访问者的行为数据,产生三类不同返回数据URL地址的原因在于网站中实施的Google分析工具。其中第一个是网站部署Google Analytics默认全局代码时返回数据的URL地址,第二个是网站部署Universal Analytics默认全局代码时返回数据的URL地址。第三个URL地址比较有意思,当我们启用受众特征和兴趣报告,并对默认的全局追踪代码进行定制时返回数据URL地址。
启用受众特征和兴趣报告需对Google分析的全局代码进行修改,并且在账户中的媒体资源部分选择启用受众特征和兴趣报告
下面我们以代码示例来说明下不同情况下可能产生的返回数据URL情况。
如果你的网站实施的是默认的Google Analytics全局追踪代码。
1
2
3
4
5
6
7
8
9
10
11
|
<script type= "text/javascript" > var _gaq = _gaq || []; _gaq.push([ '_setAccount' , 'UA-12347890-2' ]); _gaq.push([ '_trackPageview' ]); ( function () { var ga = document.createElement( 'script' ); ga.type = 'text/javascript' ; ga.async = true ; ga.src = ( 'https:' == document.location.protocol ? 'https://ssl' : 'http://www' ) + '.google-analytics.com/ga.js' ; var s = document.getElementsByTagName( 'script' )[0]; s.parentNode.insertBefore(ga, s); })(); </script> |
那么你将看到以http://www.google-analytics.com/__utm.gif开头的返回数据URL地址。
1
|
http://www.google-analytics.com/__utm.gif?utmwv=5.4.6&utms=1&utmn=1896906760&utmhn= bluewhale.cc &utmcs=utf-8&utmsr=1120x700&utmvp=1103x33&utmsc=24-bit&utmul=zh-cn&utmje=1&utmfl=11.9%20r900& utmdt=%E8%93%9D%E9%B2%B8%E7%9A%84%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0%20%7C%20%E5%85%B3%E6%B3%A8Google%20Analytics%E5%BA%94%E7%94%A8%E4%B8%8E%E6%8A%80%E5%B7%A7&utmhid=1955227755&utmr=-&utmp=%2F&utmht=1387982554877&utmac=UA-24113315-1&utmcc=__utma%3D1.1231777628.1385699116.1387959194.1387982555.8%3B%2B__utmz%3D1.1387959194.7.1.utmcsr%3Dbaidu123%7Cutmccn%3D(not%2520set)%7Cutmcmd%3D(not%2520set)%3B&utmu=qFEAg~ |
如果你的网站实施的是默认的Universal Analytics全局追踪代码。
1
2
3
4
5
6
7
8
9
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ga' ); ga( 'create' , 'UA-12347890-11' , 'bluewhale.cc' ); ga( 'send' , 'pageview' ); </script> |
那么你将看到以http://www.google-analytics.com/collect开头的返回数据URL地址。
1
|
http://www.google-analytics.com/collect?v=1&_v=j15&a=2124808192&t=pageview&_s=1&dl=http%3A%2F%2Fbluewhale.cc%2Ftest%2Fua_test.html&ul=zh-cn&de=gb2312&dt=UAcode%E6%B5%8B%E8%AF%95%E9%A1%B5%E9%9D%A2&sd=24-bit&sr=1120x700&vp=1103x33&je=1&fl=11.9%20r900&_utma=127635166.34592685.1383186536.1387941519.1387981700.19&_utmz=127635166.1387352120.16.8.utmcsr%3Dgoogle%7Cutmccn%3D(organic)%7Cutmcmd%3Dorganic%7Cutmctr%3D%25E8%2593%259D%25E9%25B2%25B8%25E7%25BD%2591%25E7%25AB%2599%25E5%2588%2586%25E6%259E%2590&_utmht=1387982003772&_u=MACC~&cid=34592685.1383186536&tid=UA-12347890-11&z=994756508 |
如果你的Google分析启用了受众特征和兴趣报告,并对默认的全局追踪代码进行了定制。
1
2
3
4
5
6
7
8
9
10
11
|
<script type= "text/javascript" > var _gaq = _gaq || []; _gaq.push([ '_setAccount' , 'UA-12347890-11' ]); _gaq.push([ '_trackPageview' ]); ( function () { var ga = document.createElement( 'script' ); ga.type = 'text/javascript' ; ga.async = true ; ga.src = ( 'https:' == document.location.protocol ? 'https://' : 'http://' ) + 'stats.g.doubleclick.net/dc.js' ; var s = document.getElementsByTagName( 'script' )[0]; s.parentNode.insertBefore(ga, s); })(); </script> |
那么无论你的网站中实施Google Analytics还是Universal Analytics,你都会看到以http://stats.g.doubleclick.net/__utm.gif开头的返回数据URL地址。
1
|
http://stats.g.doubleclick.net/__utm.gif?utmwv=5.4.6dc&utms=1&utmn=894009105&utmhn=bluewhale.cc&utmcs=utf-8&utmsr=1120x700&utmvp=1120x33&utmsc=24-bit&utmul=zh-cn&utmje=1&utmfl=11.9%20r900&utmdt=%E8%93%9D%E9%B2%B8%E7%9A%84%E7%BD%91%E7%AB%99%E5%88%86%E6%9E%90%E7%AC%94%E8%AE%B0%20%7C%20%E5%85%B3%E6%B3%A8Google%20Analytics%E5%BA%94%E7%94%A8%E4%B8%8E%E6%8A%80%E5%B7%A7&utmhid=853429841&utmr=-&utmp=%2F&utmht=1387981699675&utmac=UA-12347890-1&utmcc=__utma%3D127635166.34592685.1383186536.1387941519.1387981700.19%3B%2B__utmz%3D127635166.1387352120.16.8.utmcsr%3Dgoogle%7Cutmccn%3D(organic)%7Cutmcmd%3Dorganic%7Cutmctr%3D%25E8%2593%259D%25E9%25B2%25B8%25E7%25BD%2591%25E7%25AB%2599%25E5%2588%2586%25E6%259E%2590%3B&utmu=qAE~ |
2,返回数据的类型变化
在介绍Google Analytics的文章中我们曾说过,Google Analytics支持5种数据类型。
而在Universal Analytics中对数据类型的标记和分类更加清晰,同时支持的数据类型也有增加。
在Universal Analytics的返回数据中通过参数t来记录本次记录到的数据属于哪种类型。除了我们之前介绍的5种类型以外,Universal Analytics还支持时间类型和社交类型的返回数据。
如上表所示,当t=pageview时表示页面类的数据,t=event时表示事件类的数据,t=Transaction或Item时表示电商类的订单数据,t=Social时表示社交类的数据,t=timing时表示计时类的数据。t参数的值不存在为空的情况。后面部分我们会详细介绍对触发不同类型数据代码的定制和实施方法。
3,Universal Analytics全局代码定制变化
前面介绍了返回数据URL的变化和数据类型的变化情况,下面我们进入正题,开始介绍Universal Analytics的全局代码。Universal Analytics的追踪代码与Google Analytics相比,更加简单,易用,并且可读性也更强。即使是一个非技术背景的分析人员,也能大概读懂代码所表示的含义并对追踪代码进行简单的定制工作。
常用代码定制界面化
首先,对于Google Analytics中我们使用最频繁的几项代码定制的工作,如添加新搜索引擎来源,访问次数超时设置,Cmapaign来源有效期设置,以及搜索关键词排除设置等操作在Universal Analytics中都不再需要对全局追踪代码进行修改或定制,这些操作在Universal Analytics中都被以友好的界面方式呈现,并且有清晰的引导和说明信息。
上图是Universal Analytics中添加搜索引擎来源的操作界面,你可以在报告界面中的“管理”部分找到这些定制操作界面。在这类界面中即使没有技术背景的分析师也可以完成对代码的定制工作,并且也不需要重复的对页面中的代码进行修改。当然你也可以选择通过Google Tag Manager来减少修改代码对网站及页面的影响,但界面化的操作比直接面对代码要友好很多。
自定义追踪代码全局变量
Universal Analytics的全局代码中允许我们对全局变量进行自定义。在Universal Analytics全局代码第一段的最后一部分,是默认的全局变量ga,对于这个全局变量,我们可以进行修改和自定义。
这是默认的默认的Universal Analytics全局追踪代码。第一部分最后的全局变量名称是ga,同时第二部分中的创建账户以及返回数据代码也都使用了ga这个全局变量。
1
2
3
4
5
6
7
8
9
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ga' ); ga( 'create' , 'UA-12347890-11' , 'bluewhale.cc' ); ga( 'send' , 'pageview' ); </script> |
我们对Universal Analytics的全局变量名称进行修改,将ga修改为ua,同时代码第二部分中所使用的全局变量名称也都需要手动修改为ua。
1
2
3
4
5
6
7
8
9
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ua' ); ua( 'create' , 'UA-12347890-11' , 'bluewhale.cc' ); ua( 'send' , 'pageview' ); </script> |
——————————————————重要提示————————————————————
注意:本部分以后的代码我们都将以ua作为Universal Analytics的全局变量进行定制和实施介绍。在使用代码时请注意,如你的网站使用默认Universal Analytics全局代码,请将ua更改为ga再使用。否则可能导致代码无法正常工作!
———————————————————————————————————————————
Cookie有效期设置及名称
在Universal Analytics中除了修改全局变量名称外,我们还可以修改记录访客的Cookie有效期。Universal Analytics默认的cookie有效期为两年,我们可以通过设置cookieExpires修改这个cookie的有效期。
在上面的截图中,我们将Universal Analytics的Cookie名称改为uaCookie,并将过期时间从2年改为1天。具体的代码修改如下:
在Universal Analytics全局代码第二部分增加cookieExpires值的设置,以秒为单位,示例中86400秒等于24小时,即1天。(86400秒/60=1440分钟/60=24小时)
1
2
3
4
5
6
7
8
9
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ua' ); ua( 'create' , 'UA-12347890-11' ,{ 'cookieExpires' : 86400}); ua( 'send' , 'pageview' ); </script> |
更改Cookie名称的方法和修改有效期类似,在Universal Analytics全局代码中相同的位置对 cookieName值进行设置即可。
1
2
3
4
5
6
7
8
9
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ua' ); ua( 'create' , 'UA-12347890-11' ,{ 'cookieName' : 'uaCookie' , 'cookieExpires' : 86400}); ua( 'send' , 'pageview' ); </script> |
需要说明的是,对Cookie有效期及名称的修改请在代码初次实施前完成,并且需要保证所有页面代码保持一致,否则你可能会因为同时存在多个不同名称及生存期的Cookie而导致网站的数据不准确。
第二部分 Universal Analytics自定义代码
对于Universal Analytics自定义代码的定制和实施与Google Analytics中变化不大。下面我们分别来介绍虚拟页面,事件追踪,社交追踪和电商代码的定制和实施。所有的Universal Analytics自定义代码我们都将以onclick事件为例。并且以定制后的ua作为Universal Analytics全局变量进行介绍。如你的网站中使用默认的Universal Analytics全局代码,请讲ua更改为ga。否则代码可能无法正常工作。
1, 虚拟页面
常规的虚拟页面代码如下,在pageview后添加虚拟页面的命名规则即可,添加的虚拟页面名称以URL的形式出现在Universal Analytics的所有页面报告中。
1
|
< a href = "http://bluewhale.cc" onClick = "javascript:ua('send', 'pageview', '/virtual_pageviews_test');" >虚拟页面</ a > |
与Google Analytics不同的是,Universal Analytics中除了可以定制虚拟页面的URL,还可以定制虚拟页面的title。在title后添加虚拟页面的title名称即可。这将大大提高虚拟页面在报告中的数据可读性。
1
|
< a href = "http://bluewhale.cc" onClick = "javascript:ua('send', 'pageview', {'page':'/virtual_pageviews_test','title':'virtual_page'});" >虚拟页面测试(自定义页面URL及title)</ a > |
2, 事件追踪
Universal Analytics中的事件追踪与Google Analytics没有太大差别,同样使用事件类别,行动和标签三个默认参数来标记事件。
1
|
< a href = "http://bluewhale.cc" onClick = "javascript:ua('send', 'event', 'category', 'action', 'label');" >事件追踪</ a > |
3, 社交追踪
Universal Analytics中的社交追踪与事件非常相似,你可以对网站中的各类社交分享按钮进行追踪,这里允许记录社交媒体的名称,社交按钮的行为,目标URL等信息。具体社交追踪代码如下。
1
|
< a href = "http://bluewhale.cc" onClick = "javascript:ga('send', 'social', 'socialNetwork', 'socialAction', 'socialTarget');" >社交媒体</ a > |
加强型的社交追踪代码除了前面介绍的三个参数外,还能标记社交按钮被触发的页面名称。
1
|
< a href = "http://bluewhale.cc" onClick = "javascript:ua('send', 'social', 'socialNetwork', 'socialAction', 'socialTarget', {'page': '/my-new-page'});" >社交媒体</ a > |
4,电子商务追踪
最后介绍的Universal Analytics定制代码是电商代码,结构和功能与Google Analytics类似,唯一不同的是Universal Analytics为了保证analytics.js的文件大小,没有把电商的代码放在里面,因此在使用电商代码时,需要单独调用ecommerce.js文件。另外,在使用电商代码前,需要先在Google分析管理后台开通电商报告功能。
以下是Universal Analytics电子商务代码示例。所有全局变量以及改为ua,请注意。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<script> ( function (i,s,o,g,r,a,m){i[ 'GoogleAnalyticsObject' ]=r;i[r]=i[r]|| function (){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1* new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, 'script' , '//www.google-analytics.com/analytics.js' , 'ua' ); ua( 'create' , 'UA-12347890-11' , 'bluewhale.cc' ); ua( 'send' , 'pageview' ); ua( 'require' , 'ecommerce' , 'ecommerce.js' ); ua( 'ecommerce:addTransaction' , { 'id' : '1234' , // Transaction ID. Required. 'affiliation' : 'Acme Clothing' , // Affiliation or store name. 'revenue' : '11.99' , // Grand Total. 'shipping' : '5' , // Shipping. 'tax' : '1.29' // Tax. }); ua( 'ecommerce:addItem' , { 'id' : '1234' , // Transaction ID. Required. 'name' : 'Fluffy Pink Bunnies' , // Product name. Required. 'sku' : 'DD23444' , // SKU/code. 'category' : 'Party Toys' , // Category or variation. 'price' : '11.99' , // Unit price. 'quantity' : '1' // Quantity. }); ua( 'ecommerce:send' ); </script> |
本篇文章我们简单介绍了Universal Analytics的全局代码和自定义代码的定制和实施。更多Universal Analytics全局代码的定制内容请参看Google官方文档。
—【所有文章及图片版权归 蓝鲸(王彦平)所有。欢迎转载,转自“蓝鲸网站分析博客”。】—
升级Universal Analytics部署代码
https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced
<!-- Google Analytics --> <script> /** * Creates a temporary global ga object and loads analy tics.js. * Paramenters o, a, and m are all used internally. They could have been declared using 'var', * instead they are declared as parameters to save 4 bytes ('var '). * * @param {Window} i The global context object. * @param {Document} s The DOM document object. * @param {string} o Must be 'script'. * @param {string} g URL of the analytics.js script. Inherits protocol from page. * @param {string} r Global name of analytics object. Defaults to 'ga'. * @param {DOMElement?} a Async script tag. * @param {DOMElement?} m First script tag in document. */ (function(i, s, o, g, r, a, m){ i['GoogleAnalyticsObject'] = r; // Acts as a pointer to support renaming. // Creates an initial ga() function. The queued commands will be executed once analytics.js loads. i[r] = i[r] || function() { (i[r].q = i[r].q || []).push(arguments) }, // Sets the time (as an integer) this tag was executed. Used for timing hits. i[r].l = 1 * new Date(); // Insert the script tag asynchronously. Inserts above current tag to prevent blocking in // addition to using the async attribute. a = s.createElement(o), m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m) })(window, document, 'script', '//www.google-analytics.com/analytics.js', 'ga'); ga('create', 'UA-XXXX-Y', 'auto'); // Creates the tracker with default parameters. ga('send', 'pageview'); // Sends a pageview hit. </script> <!-- End Google Analytics -->
马云内部邮件:为什么这15年我们能幸运的生存下来
5月7日凌晨消息,据新浪科技报道,阿里巴巴集团董事局主席马云通过内部邮件向阿里巴巴员工宣布,阿里巴巴集团正式向美国证券监管委员会递交上市注册登记书,并提醒全体阿里巴巴人,感恩过去,敬畏未来。
附,马云邮件全文:
新的机会 新的挑战 新的征程
各位阿里人,
几分钟后我们将会正式向美国证劵监管委员会首次递交上市注册登记书。这将意味着阿里巴巴即将进入新的挑战时代。
15年前,阿里巴巴18个创始人立志创建一家中国人创立的属于全世界的互联网公司,希望能成为全球十大网络公司之一,成为一家能生存102年的企业。15年过去了,我们幸运的生存了下来。我们活的比我们当年想像的好得多。
我们明白这不是因为我们多么的努力,或者是多么的聪明能干让我们走到了今天,而是因为我们幸运的生活在这个时代。感谢互联网,感谢生气勃勃的年轻人,感谢在一路相伴的创业者和追梦人,感谢这个国家改革和开放的进程。。。
我们深知,我们生存下来不是因为战略多么的宏远,执行力多么的完美,而是我们十五年来坚持了“让天下没有难做的生意”这个使命,坚持了我们“客户第一”的价值观,坚持了相信未来,相信相信,坚持了平凡人一起做非凡事。
相信公司的注册登记书(内含招股书)第一版公布之后,我们将会面临各类评论。15年来,在大量的支持,赞语和掌声背后,我们从来不缺指责,批评,漫骂和质疑。回应这一切最好的办法是用我们感恩和敬畏的心态,一如既往的追随“让天下没有难做的生意”的使命,专注工作,让小企业成功,让时间让结果去说明一切。
上市从来就不是我们的目标,它是我们实现自己使命的一个重要策略和手段,是前行的加油站。但阿里人要清醒的认识到资本市场巨大利益诱惑背后有着无比巨大的无情和压力。只有很少数的杰出企业能够在资本市场持久驰骋。阿里巴巴这次在国际资本市场必将会因为规模,期待值,国界意识,文化冲突,区域政经。。。。遭遇空前绝后的挑战和压力。只有坚持我们的坚持,相信我们的相信,我们才有可能在压力和诱惑中度过未来艰辛的87年。能够面临这样全球性挑战的企业并不多,我们荣幸成为其中一个。
上市后我们仍将坚持“客户第一,员工第二,股东第三”的原则。我们相信做任何艰难的决定,不管是在过去还是将来,坚持原则才是对各方利益最大的尊重和保护。上市某种意义上是让我们更有力量去帮助客户、支持员工、守护股东利益。
最后,提醒大家注意严格遵守证券监管法规及集团的保密规定,不要对招股书做任何公开评论,所有采访须知会集团公关部,通过集团公关部进行协调。
至于每个员工的股票事宜,集团HR将会发出处理方案。这是件令人高兴的事。我们也必须坚持“认真生活 快乐工作”的原则,请大家处理好自己的财富,在照顾好自己,家人的同时,力所能及的做些回报社会的工作和捐助。谢谢大家了。
“兴于诗 立于礼 成于乐”,阿里人,过去15年我们过的很艰难,但很精彩。未来的每一天注定不会平凡,不会简单。今天不努力,我们可能看不到后天的太阳。没有一家企业会持久顺利,我们在坚持我们坚持的同时,必须为客户而变,为世界而变,为未来而变。
马云
阿里巴巴集团董事局主席
2014。5。7
阿里大事记