数据分析——如何使用AARRR模型

AARRR是Acquisition、Activation、Retention、Revenue、Refer,这个五个单词的所写,分别对应这一款移动应用生命周期中的5个重要环节。

一、获取用户(Acquisition)
这个阶段,最初大家最关心的数据是下载量。到今天,一些媒体的报道中也还经常用下载量来衡量一个应用的用户规模和是否成功。不过,下载了应用不等于一定会安装,安装了应用也不等于一定使用了该应用。所以很快激活量成为了这个层次中大家最关心的数据,甚至是有些推广人员唯一关注的数据。通常激活量(即新增用户数量)的定义是新增的启动了该应用的独立设备的个数。从字面上看激活量似乎更应该是第二层Activation的指标,但是因为下载量、安装量这些数据都比较虚,不能真实反映用户是否已经被获取。所以大家都要看激活,这才是真正获取到了新的用户。


另一个非常重要的数据,就是分渠道统计的激活量。因为在渠道推广时,很多应用开发者选择了付费推广。结算的时候,自然要了解在某个渠道有多少真正激活的用户。即使没有付费关系,开发者也需要知道哪个渠道是最有效果的。
但是站在更高的高度看,CAC(用户获取成本 Customer Acquisition Cost)才是最需要去关注的数据。目前行业里有种粗略的说法,每个Android用户的获取成本大约在4元左右,而iOS用户大约在8元以上。当然,应用市场下载、手机预置、广告等各种不同的渠道的获取成本是完全不同的。这里面有个性价比的问题,有些渠道的获取成本比较高,但是用户质量也比较高(什么样的叫质量高,后面会有说明)。

- 阅读剩余部分 -

PHP中header()输出问题

php 在手机浏览器中出现
Warning: Cannot modify header information - headers already sent by (output started a...
解决方法

出这个错误是因为
header('Content-Type:text/html;charset= UTF-8');
发送头之前不能有任何输出,空格也不行,需要将header(...)之前的空格去掉,或者其他输出的东西去掉,如果他上面include其他文件了,你还要检查其他文件里是否有输出。

1、程序开头加ob_start();
2、用editplus 或者其它的 去掉UTF8-bom 换成 UTF8

以上两个执行一个就OK了

dirname(__FILE__) 的使用总结

dirname(__FILE__) 
php中定义了一个很有用的常数,即

__file__

这个内定常数是当前php程序的完整路径(路径+文件名)。

即使这个文件被其他文件引用(include或require),__file__始终是它所在文件的完整路径,而不是引用它的那个文件完整路径。

例子:

/home/data/demo/test/a.php

<?php
$the_full_name=__FILE__;
$the_dir=dirname(__FILE__);
echo $the_full_name; //返回/home/data/demo/test/a.php
echo $the_dir;            //返回/home/data/demo/test
?>

- 阅读剩余部分 -

php 获取数组中的重复数据

1、利用php提供的函数,array_unique和array_diff_assoc来实现


array_unique() 函数移除数组中的重复的值,并返回结果数组。
当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。返回的数组中键名不变。

array_diff_assoc() 函数用于比较两个(或更多个)数组的键名和键值 ,并返回差集。



<?php  
function FetchRepeatMemberInArray($array) {  
    // 获取去掉重复数据的数组  
    $unique_arr = array_unique ( $array );  
    // 获取重复数据的数组  
    $repeat_arr = array_diff_assoc ( $array, $unique_arr );  
    return $repeat_arr;  
}  

// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );

?>



(2)自己写函数实现这个功能,利用两次for循环


<?php  
function FetchRepeatMemberInArray($array) {  
    $len = count ( $array );  
    for($i = 0; $i < $len; $i ++) {  
        for($j = $i + 1; $j < $len; $j ++) {  
            if ($array [$i] == $array [$j]) {  
                $repeat_arr [] = $array [$i];  
                break;  
            }  
        }  
    }  
    return $repeat_arr;  
}  

// 测试用例
$array = array (
'apple',
'iphone',
'miui',
'apple',
'orange',
'orange'
);
$repeat_arr = FetchRepeatMemberInArray ( $array );
print_r ( $repeat_arr );

?>


html 中几次方,平方米,立方米,下标,上标,删除线等的表示方法

html 中几次方,平方米,立方米,上标,下标,删除线等的表示方法


上标下标删除线 小号字 插入字 M2 54

X24+Y1<3=100

N5N



<sup>上标</sup>


<sub>下标</sub>

<del>删除线</del>

<small>小号字</small>

<ins>插入字</ins>

M<sup>2</sup>

5<sup>4</sup> 

<p>X<sub>2</sub><sup>4</sup>+Y<sub>1</sub><<sup>3</sup>=<del>100</del></p>

<p>N<ins>5</ins><small>N</small></p>

kindeditor显示代码高亮

配置好SyntaxHighlighter后,修改kindeditor中plugins/code/code.js

代码45行左右改成如下即可

var type = K('.ke-code-type', dialog.div).val(),
code = textarea.val(),
html = '
<pre class="brush:' + type + ';toolbar:false">\n' + K.escape(code) + '</pre>
';


PHP数组的总结

一、什么是数组
数组就是一组数据的集合,把一系列数据组织起来,形成一个可操作的整体。数组的每个实体都包含两项:键和值。

二、声明数据
在PHP中声明数组的方式主要有两种:一是应用array()函数声明数组,一是直接为数组元素赋值。
<1>array()函数声明的数组的方式array([mixed...]) 参数mixed的语法为key=>value
如,

<?php
$array=array("1"=>"编","2"=>"程","3"=>"词","4"=>"典");
print_r($array);
echo "<br>";
echo $array[1]; //注意:下标默认是从0开始       
echo $array[2];        
echo $array[3];        
echo $array[4];        
?>


- 阅读剩余部分 -

PPG陨落曲线

B2C从来不缺神话!

网络再一次彗星般的缔造了一个新的成功品牌——PPG。没有实体店,没有中间商,没有厂房,当然也没有壁垒,这个把直销引进了服装行业的哈雷彗星,在上海滩的上空却顶不住自身激进的轻狂、同行竞争性的绞杀,以及舆论始终若隐若现的质疑,把一切消费者和行业赋予的光鲜感挥霍一空后,2010年3月,PPG这个彗星一样光芒的直销激进者,在历经了4年零5个月的辉煌与曲折之后,终于陨落上海滩!

第一战 初入之战

2005年,有着蓝衫(Lands End)营销经验上海籍旅美青年李亮决定借鉴蓝衫B2C模式,回国创业。

★拷贝Land’s 牛津突破

在李亮创建PPG之前,淘宝网、当当网、卓越网等一批电子商务网站迅速崛起,B2C(互联网直销)风起云涌,国内著名服装品牌雅戈尔(Youngor)甚至也筹划B2C模式。李亮决定速战速决,打一个抢位战。

- 阅读剩余部分 -

我奋斗了十八年不是为了和你一起喝杯咖啡

3年前,麦子的一篇《我奋斗了18年才和你坐在一起喝咖啡》引起多少共鸣,一个农家子弟经过18年的奋斗,才取得和大都会里的同龄人平起平坐的权利,一代人的真实写照。然而,3年过去,我恍然发觉,他言之过早。18年又如何?再丰盛的年华叠加,我仍不能和你坐在一起喝咖啡。

那年我25,无数个夙兴夜寐,换来一个学位,额上的抬头纹分外明显,脚下却半步也不敢停歇。如果不想让户口打回原籍,子子孙孙无穷匮,得赶紧地找份留京工作。你呢?你不着急,魔兽世界和红色警报?早玩腻了!你野心勃勃地筹划着“创业创业”。当时李彦宏、陈天桥、周云帆,牛人们还没有横空出世,百度、Google、完美时空更是遥远的名词,可青春所向披靡不可一世,你在校园里建起配送网站,大张旗鼓地招兵买马,大小媒体的记者蜂拥而至。334寝室很快在全楼名噪一时,小姑娘们从天南地北寄来粉粉的信纸,仰慕地写道:“从报上得知你的精彩故事……”得空,爬上楼顶吹吹风,你眉飞色舞地转向我,以照顾自己人的口气说,兄弟,一起发财如何?

- 阅读剩余部分 -

响应式web设计之CSS3 Media Queries

开始研究响应式web设计,CSS3 Media Queries是入门。

Media Queries,其作用就是允许添加表达式用以确定媒体的环境情况,以此来应用不同的样式表。换句话说,其允许我们在不改变内容的情况下,改变页面的布局以精确适应不同的设备。

那么,Media Queries是如何工作的?

两种方式,一种是直接在link中判断设备的尺寸,然后引用不同的css文件:

<link rel="stylesheet" type="text/css" href="styleA.css" media="screen and (min-width: 400px)">

意思是当屏幕的宽度大于等于400px的时候,应用styleA.css

- 阅读剩余部分 -