php Callback回调类型

php 回调类型
Callback 回调类型
[p2em]自 PHP 5.4 起可用 callable 类型指定回调类型 callback。本文档基于同样理由使用 callback 类型信息。[/p2em]
[p2em]一些函数如 call_user_func() 或 usort() 可以接受用户自定义的回调函数作为参数。回调函数不止可以是简单函数,还可以是对象的方法,包括静态类方法。[/p2em]
传递
[p2em]一个 PHP 的函数以 string 类型传递其名称。可以使用任何内置或用户自定义函数,但除了语言结构例如:array(),echo,empty(),eval(),exit(),isset(),list(),print 或 unset()。[/p2em]
[p2em]一个已实例化的对象的方法被作为数组传递,下标 0 包含该对象,下标 1 包含方法名。[/p2em]
[p2em]静态类方法也可不经实例化该类的对象而传递,只要在下标 0 中包含类名而不是对象。自 PHP 5.2.3 起,也可以传递 ‘ClassName::methodName’。[/p2em]
[p2em]除了普通的用户自定义函数外,create_function() 可以用来创建一个匿名回调函数。自 PHP 5.3.0 起也可传递 closure 给回调参数。 [/p2em]
回调函数示例

<?php

// An example callback function
function my_callback_function() {
    echo 'hello world!';
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function');

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod'));

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A
?>

Closure 的示例

<?php
// Our closure
$double = function($a) {
    return $a * 2;
};

// This is our range of numbers
$numbers = range(1, 5);

// Use the closure as a callback here to 
// double the size of each element in our 
// range
$new_numbers = array_map($double, $numbers);

print implode(' ', $new_numbers);
#以上代码会输出
2 4 6 8 10

提示
[p2em]在函数中注册有多个回调内容时(如使用 call_user_func() 与 call_user_func_array()),如在前一个回调中有未捕获的异常,其后的将不再被调用。[/p2em]

产品经理学习之商业需求文档(BRD)撰写方法与技巧

产品经理学习之商业需求文档(BRD)撰写方法与技巧
一、BRD文档的目的
[p2em]①:发现(现有产品改进的可能、一个创新产品)。[/p2em]
[p2em]②:需要(要权重、要项目、要资源)。[/p2em]
二、BRD的汇报对象
[p2em]不要提笔就开始写,重要的是想清楚。BRD也是一个产品,BRD是有用户的(你 ,汇报对象),仔细思考,你的汇报对象处于什么样的场景中(职位、思维方式、他需要什么?)。[/p2em]
[p2em]①:资本背景。例如CFO(掌握钱、对数字敏感、收益预测、营收增长率、技术意识相对较弱)。[/p2em]
[p2em]②:运营背景。例如COO(拥有运营资源、关注推广资源,竞争对手,外部环境,营销资源、财务与技术意识相对较弱)。[/p2em]
[p2em]③:技术背景。例如CTO(技术资源、关注,功能模块,实现难度、商业意识相对较弱)。[/p2em]
[p2em]④:战略背景。例如CEO(权重资源、关注,是否合拍公司的战略规划,市场成长性,是否有利于企业的布局,风险是否可控)。[/p2em]
三、BRD文档的内容结构
[p2em]1.方案形成背景,2.方案价值,3.产品规划,4.盈利模式,5.收益与成本评估,6.风险和对策。下面的BRD文档结构能否擅自更改?(1000个人心中,有1000个哈姆雷特。重要的是达到你的目的,方法是灵活的,战术的是多样的,记住,结合你当下的特性环境来思考问题,切勿生搬硬套)。[/p2em]
[p2em]①:方案形成背景。市场环境分析、我们要做什么、要解决什么问题(这问题是迫切的问题吗? 这个问题是强烈的问题吗? 这个问题出现的频率高不高?如果要这么做,我们的优势在哪里?【技术优势、经验优势、资源优势 】),得到可行的结论。[/p2em]
[p2em]②:方案价值。我们将得到什么样的好处?(非经济类的好处-战略优势等,经济类-收入等),提出你的预测(目标、对应得到的好处)。[/p2em]
[p2em]③:产品规划。产品结构、产品路线。注意:BRD文档,尽量不要扯蛋太多关于产品形态细节的东西,产品形态可以粗放一点,避免被纠缠。方案获得认可后,根据汇总意见,在来做产品具体的东西。[/p2em]
[p2em]④:盈利模式。就是怎么样通过一系列的方式方法达到前面说的获得好处。注意: 利,可以理解为直接的收入,也有亦可能是有利于企业的一些客观条件。[/p2em]
[p2em]⑤:收益与成本评估。收益预估、成本预估。[/p2em]
[p2em]⑥:风险与对策。风险的种类(政策风险、经济风险、市场风险、行业风险、公司风险、技术风险、资本风险),应对办法(规避、接受、降低、分担、转移)。[/p2em]
四、优秀BRD应具备的要素
[p2em]①:重点突出(商业价值、收入与成本、 风险与对策)。[/p2em]
[p2em]②:是不是产品就不重要?( BRD很多时候是定性的东西,不要过多的去扯产品细节(技术驱动产品要两看)、 产品经理不要总是把目光定在产品上,要学会跳出来、集中火力,不扯淡)。[/p2em]
[p2em]③:说服力(演讲技巧、对公司战略的理解、对汇报对象思维方式的理解【多沟通,或与其合作伙伴沟通、平时多观察行事风格】)。[/p2em]
[p2em]④:见人说人话,见鬼说鬼话(要变通、但要有逻辑,理论有支撑,不是忽悠)。[/p2em]
[p2em]⑤:言简意赅,点到即止(有的话不能说透、一图胜千言、一句能说清楚,不要说两句、不要过多的使用专业术语、客观评估,不要给自己埋地雷,但该点到的问题都要点到(困难,风险等))。[/p2em]

产品经理学习之产品经理相关文档撰写

产品经理学习之产品经理相关文档撰写
一、产品经理撰写文档的主要工具
[p2em]①:Excel,Excel文档结构(版式设计,逻辑结构表现,色彩)、简单的函数计算(加、减、乘、除)、数据组织(筛选、排序、)、图标制作(饼状图,柱状图,条形图,折线图等)。[/p2em]
[p2em]②:PowerPoint(演示利器)。[/p2em]
[p2em]③:Word(文档)。[/p2em]
[p2em]④:Microsoft  Visio (流程图利器,信息结构图利器)。[/p2em]
[p2em]⑤::Axure(简易流程图 ,原型利器)注意: Axure虽好,谨记它只是工具,不要被他所左右。不要陷入到超级写实中去。[/p2em]
[p2em]⑥:Balsamiq  Mockups(原型图草图利器),可以快速构建你想要的东西 、很好的支持移动性能、元素丰富、不容易干扰UI设计。 [/p2em]
[p2em]⑦:Mindmanager(思维导图,收集,归纳,整理想法与思路)。[/p2em]
[p2em]⑧:最牛利器(2B铅笔),高速、简洁、灵敏、适用于很多场景(风暴,演示等)。[/p2em]
二、产品经理的三大文档
[p2em]①:商业需求文档  BRD  (Business  Requirement  Document)[/p2em]
[p2em]②:市场需求文档  MRD(Market  Requirement  Document)[/p2em]
[p2em]③:产品需求文档  PRD(Product  Requirement  Document)[/p2em]
三、在哪一个阶段,会用到什么样的文档
[p2em]①:BRD:商业需求文档。向公司申请需要的费用,资源得到各级领导支持、简洁,明了,易懂、通常用来讲述市场机遇,盈利方式等包括(商业价值、成本估算、收益预期)。工具推荐(PowerPoint、Word、Mindmanager)。[/p2em]
[p2em]②:MRD:市场需求文档。在获得了公司资源的支持以后,根据你的想法在产品层面的表述。收集、分析、定义主要的用户需求和产品特性包括(产品介绍、 竞品分析、用户需求调研结果、产品轮廓、功能需求 )。工具推荐(PowerPoint、Word、Mindmanager、Visio、Balsamiq  Mockups)。[/p2em]
[p2em]③:PRD:产品需求文档。对MRD中的内容进行指标化和技术化;明确产品的功能和性能包括(产品验收标准、产品流程图、产品用例、产品功能点说明、性能需求)。推荐工具(Word、Visio、Axure、Mindmanager)[/p2em]
四、BRD和MRD,有时候可能会融入到一个方案中,如何选择?
[p2em]①:看汇报对象[/p2em]
[p2em]②:看团队习惯[/p2em]
[p2em]③:看你的习惯[/p2em]
[p2em]④:看领导的喜欢[/p2em]
[p2em]注意:不是A和B的关系,是不同场合,不同环境具体抉择的问题。[/p2em]
五、三大文档总结
[p2em]①:发现并讲清楚你发现的商业价值  BRD。[/p2em]
[p2em]②:构思并讲清楚如何实现商业目标的方式  MRD。[/p2em]
[p2em]③:把这种方式具体实现的方法描述出来  PRD。[/p2em]
[p2em]④:这是一个宏观到微观的过程。[/p2em]
[p2em]⑤:这个是一个有逻辑的,经得起推敲,层层深入,逐渐细化落地的过程。[/p2em]
[p2em]⑥:这个是一个从获得认可>拿到资源>表述想法>指导实施>进行实施的过程。[/p2em]

nginx安装沃通免费SSL证书教程

https
一、安装,SSL证书的环境

1.1 SSl证书安装环境简介

Centos 6.5操作系统;

Nginx 1.9.9;

Openssl 1.0.1+;

SSL证书一张(备注:本站使用  tmy.me域名  OV SSL证书进行操作,通用其它版本证书)。

1.2网络环境要求

请确保站点是一个合法的外网可以访问的域名地址,可以正常通过或 http://XXX进行正常访问。
二、SSL证书的安装
2.1获取 ssl证书
成功在沃通申请证书后,会得到一个有密码的压缩包文件,输入证书密码后解压得到五个文件:for
Apache、for IIS、for Nginx、for Other Server,这个是证书的几种格式,Nginx上需要用到for Nginx格式的证
书。
ssl证书
2. 2解压证书文件
打开 for Nginx文件可以看到2个文件。包括公钥、私钥,如图1,新建一个sslkey文件夹将下图两个文件放到新建的sslkey文件夹内,并上传至nginx的conf目录
ssl公匙

2.3安装 SSL证书
打开Nginx相应网站的配置文件,本站中使用了nginx虚拟机配置,有两个配置文件如下图
nginxhttps配置文件
①:http 80端口 网站配置文件(以下配置为强制http访问跳转到https)

server {
    listen 80;
    server_name tmy.me www.tmy.me;
    return         301 https://$server_name$request_uri;   
}

②:https 443端口 网站配置文件(使用以下配置便可以开启全站https了,需安装nginx的ssl_module)

    server {
        listen       443 ssl;
	ssl                  on;
        server_name  tmy.me www.tmy.me;

        ssl_certificate      sslkey/1_tmy.me_bundle.crt;
        ssl_certificate_key  sslkey/2_tmy.me.key;
	ssl_session_timeout  5m;
	ssl_protocols  TLSv1 TLSv1.1 TLSv1.2;
	ssl_ciphers   ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
		
        ssl_session_cache    shared:SSL:1m;

        ssl_prefer_server_ciphers  on;
	
	access_log  /xxx/xxx/tmy.me.access.log;
	error_log   /xxx/xxx/tmy.me.error.log;

	location ~* .(ico|gif|bmp|jpg|jpeg|png|swf) {
	    root	/xxx/xxx/wp;
  	    expires 30d;
	}

	location / {
	    root /xxx/xxx/wp;
	    index index.php index.html index.htm;
	    try_files $uri $uri/ /index.php?$args;
	}	

	location ~ \.php$ {
	    root	/xxx/xxx/wp;
	    include fastcgi.conf;
	    fastcgi_pass   127.0.0.1:9000;
	}

    }

配置完成后重启nginx服务,即开启了全站https。
三、提示
①:如果出现网站图片,css,js等文件加载404错误,请检查是否设置了文件缓存有效期,如果设置请按照如上配置中,需要在location里边设置root参数值为“网站根目录”。
②:js报错,请检查是否引入的js文件是否为非https链接。

沃通免费SSL证书申请

1、申请入口

沃通免费SSL证书产品介绍站点:https://freessl.wosign.com

沃通免费SSL证书中文申请入口:https://buy.wosign.com/free

沃通免费SSL证书英文申请入口:https://buy.wosign.com/free/?lan=en

2、填写申请资料

2.1设置证书参数

在输入框输入需要使用SSL证书的域名,设置申请年限、证书语言、签名算法等证书参数。

注意:沃通CA 2016年起停止签发SHA-1证书

2.2 登录或创建帐户

已注册沃通账户的用户,请直接使用注册邮箱和密码登录;

未注册沃通账户的用户,可在这一步创建新帐户,填写注册邮箱,完成邮箱验证,设置账户密码即可完成注册。请牢记注册邮箱和密码,用于登录沃通数字证书商店(buy.wosign.com)。

注意:注册邮箱将用于接收取回证书的邮件,请确保邮箱正常使用。

My_Account_user_guide_freeSSL_clip_image002_0001

3、生成订单

申请资料填写完整后,点击【提交申请】自动跳转至【我的订单】页面,点击【验证域名】进行域名验证,完成域名验证才能进入下一步。

My_Account_user_guide_freeSSL_clip_image004_0000

4、验证域名

域名验证的方式有两种:一种是验证域名所有权,另一种是验证网站控制权,您可以自行选择验证方式。

My_Account_user_guide_freeSSL_clip_image006_0000

(域名所有权验证)

My_Account_user_guide_freeSSL_clip_image010_0000

5、提交证书申请文件(CSR)

完成了域名验证后,需要提交证书申请文件(CSR),这里提供两种生成方式:方式一,直接由系统帮你生成证书申请文件,比较简单快捷;方式二,由您自己在您的服务器端生成证书申请文件后在线提交。

My_Account_user_guide_freeSSL_clip_image012_0000

6、等待签发,取回证书

完成以上步骤之后,等待证书签发。证书签发后会发送下载链接至您的申请邮箱,登录邮箱点击下载链接取回证书。

注意:取回证书时需要设置【证书安装密码】,请牢记此密码,安装证书时需要输入。

My_Account_user_guide_freeSSL_clip_image014_0000

为什么要将网站更换为https

https
https的优点
[p2em]①:SEO方面:谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。百度搜索再次重磅推出:全面支持https页面直接收录;另外从相关性的角度,百度搜索引擎认为权值相同的站点,采用https协议的页面更加安全,排名上会优先对待。(以上两个都是官方的公告)[/p2em]
[p2em]②:使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;[/p2em]
[p2em]③:HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。(app接口由于是无状态的,所以使用http认证信息很容易被窃取)[/p2em]
[p2em]④:HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。[/p2em]
[p2em]⑤:我们的生活已经离不开互联网,安全已很重要,https是必然的趋势。[/p2em]

问哪天,会重遇

问哪天,会重遇
誓言幻作烟云字
费尽千般心思
情像火灼般热
怎烧一生一世
延续不容易
负情是你的名字
错付千般相思
情像水向东逝去
痴心枉倾注
愿那天未曾遇
只盼相依
哪管见尽遗憾世事
渐老芳华
爱火未灭人面变异
祈求在那天重遇
诉尽千般相思
祈望不再辜负我
痴心的关注
人被爱留住
祈望不再辜负我
痴心的关注
问哪天会 重遇

(胭脂扣)

阿里云快速硬盘挂载教程

阿里云快速硬盘挂载教程
Linux硬盘挂载是比较常见的管理操作之一。默认情况下数据盘没有挂载,需要手动挂载到系统中。 新用户买到服务器以后应该先进行硬盘挂载再安装环境,对数据盘怎么硬盘挂载使用比较迷惑,我们今天给大家介绍怎么快速的把硬盘挂载到系统上
具体操作步骤
[p2em]1)需要对磁盘进行格式化[/p2em]
[p2em]2)格式化后硬盘挂载到需要的挂载点[/p2em]
[p2em]3)最后还需要添加分区启动表,以便下次系统启动随机自动硬盘挂载。 [/p2em]
图文教程
①:查看数据盘在没有分区和格式化数据盘之前,使用 “df -lh ”命令,是无法看到数据盘的,可以使用“fdisk -l”命令查看
阿里云硬盘挂在第一步
查看新加的硬盘是 /dev/xvdb: 21.5 GB
②:将未使用的磁盘进行格式化,操作数据盘符前,请自行确认磁盘是否有使用过,如有重要数据请谨慎操作,以免导致数据丢失,带来不必要的麻烦。具体格式化命令为: mkfs.ext3 /dev/xvdb ,即为正在格式化中。这个时候请耐心等待格式化完毕(时间较久)。
阿里云硬盘挂在第二步
将格式化完的磁盘进行硬盘挂载,硬盘挂载前,先在服务器上创建一个需要挂载的挂载点,如可以在根目录下创建一个www目录。 默认情况下,跳转到根目录的命令为:cd .. 创建目录命令为: mkdir /www 硬盘挂载到www目录,
硬盘挂载命令:

mount /dev/xvdb  /www/

修改fstab,以便系统启动时自动硬盘挂载,添加分区信息写入新分区信息。

echo '/dev/xvdb   /www ext3    defaults    0  0' >> /etc/fstab

阿里云硬盘挂在第三步
执行:init 6 进行优雅重启服务器。重启服务器后,输入命令: df -lh 查看第2块磁盘是否有正常进行硬盘挂载,硬盘挂载正常的话您会看到,这样第2块盘就挂载好了。
阿里云硬盘挂在第四步

只要能创新,啥问题都能解决

只要能创新,啥问题都能解决
在网上看到两则故事,分享给大家。

一、手机被偷以后,手机被送回的故事
[p2em]一哥们在火车站附近手机被偷了,马上请朋友给自己手机发了一条信息:“哥,火车快开了,我等不到你,先上车了!欠你的两万块钱,我放在火车站寄存处A19号柜子里 ,密码是1685”。半小时后,偷手机的二货在火车站寄存处A19号柜子前被生擒。[/p2em]

二、人在哪里不重要,关键能解决问题。迎接挑战 必须转变观念。
[p2em]犯人收到妻子来信:

你进监狱了,咱家的几亩地没人翻,公婆干不动,我身体不好,还得看孩子。

犯人回信:

千万別翻地,地里埋着枪……

一月后他妻子回信::警察来了3、4批,把咱家地翻了好几遍,累的吐血了也没找到枪,你把枪藏哪了?

犯人回信:

本来就没枪,警察帮忙把地翻了,你赶紧种地吧,其它忙我也帮不上了![/p2em]

三、只要思想不滑坡!办法总比困难多!
[p2em]一帅哥在傍晚陪爷爷散步,不远处有一个气质美女,忍不住多看了两眼。爷爷问:喜欢吗?帅哥不好意思点点头。爷爷又问:想要她的电话号码吗?帅哥瞬间脸红了。 爷爷说:看我的。然后转身向美女走去。几分钟后帅哥的电话响了,里面传来一个甜美的声音:你好,你爷爷迷路了,赶紧过来吧,我们在公园大门处。帅哥对爷爷简直佩服的五体投地,然后默默的把这个电话存下了,高手在民间啊![/p2em]

给阿里云主机分类虚拟内存

阿里云
问题描述
[p2em]购买的Linux服务器,Linux服务器的内存为1024M。在编译PHP的时候会提示:virtual memory exhausted: Cannot allocate memory,编译失败。[/p2em]
解决方法
[p2em]发生该问题的原因是服务器的内存不够,从而导致编译失败。而购买的Linux服务器,未给你分配虚拟内存,所以可以通过自行增加虚拟内存的方法予以解决[/p2em]

dd if=/dev/zero of=/swap bs=1024 count=2048000
mkswap /swap
swapon /swap
echo “/swap  swap  swap  sw  0  0″ >> /etc/fstab