免费好用的SSL域名签名,Let’s Encrypt使用攻略

2016年12月20日 没有评论

Let’s Encrypt是由 ISRG(Internet Security Research Group,互联网安全研究小组)发起,由Mozilla、Cisco、Akamai、Electronic Frontier Foundation 和 Chrome 等众多公司和机构支持的免费、自动化、开放的证书签发服务。

Let’s Encrypt 与 IdenTrust 的 DST Root CA 做了交叉认证,兼容性还是非常不错的,目前能做到主流系统包括XP系统也能得到很好的支撑,同时安全性上面Let’s Encrypt支持ECC 证书(目测采用的是ECDHE 密钥交换、RSA 签名方式)

Let’s Encrypt目前完全免费,支持3个月证书有效期,到期可自动续签,关于有效期这个应该是一个就安全性考量的策略,好在自动化做的非常不错,再加上各种自动化的申请、过期续签方案,已经做到很方便了。

Let’s Encrypt 的证书签发过程使用的是 ACME (Automated Certificate Management Environment)协议,目前官方和第三方工具都是基于此协议,官方推荐工具列表在这里

这里推荐 acme.sh 实测系统兼容性非常好,对其他库的依赖和版本依赖相对较小,CentOS 5.8系统 python 2.4.3 完美实现,这里简单讲一下acme.sh的安装和使用吧,官方有中文教程 在这里 阅读全文…

创建PHP守护进程后台运行,监控状态退出自动重启

2016年10月6日 没有评论

经常用到PHP脚本写的小程序需要在服务器端保持后台运行,除了使用screen等工具外,这里介绍使用Linux shell编写一个小工具实现PHP脚本程序在后台保持运行,不受终端退出影响,且能自动监测脚本运行状态,对因其他因素导致程序退出的情况自动进行脚本重启,实现守护运行. 阅读全文…

分类: Linux, PHP 标签: ,

iOS应用上线刨坑日记

2016年9月10日 没有评论

经过漫长的等待,带着十二分复杂的心情,终于在前天下午收到苹果App Store官方客服的电话,告知我们的应用可以暂时先上线了(是的,是暂时上线,细节一会儿讲),当天晚上搜索关键词排第2位找到了我们的应用。

其实App Store 提交应用网上一堆的教程,这里没必要复述一遍,只因为这期间刨过的坑实在是有点匪夷所思(请原谅我用语有点过 🙂 ),按正常流程注册邓白氏编码、注册App Store开发者账号、提交申请上线再正常不过的了,但是就这3步确实让我领略到了为什么有专业代办注册上线的生意了,如果让我再选一次,我觉得确实有必要找代办,不然浪费的时间和机会确实有点得不偿失,好了下面说说我碰到的坑踩到的雷吧

1.应用内支付(IAP)

如果你的产品需要付费,如果你卖的是虚拟类产品,那就要注意了,很有可能需要强制使用苹果应用内支付,微信支付、支付宝、银联对不起统统不允许,只允许使用苹果应用内支付,而且还强制抽成30%。

关于虚拟类产品这个具体怎么定义有时间再研究研究,说实话这个真有点坑,我们是做在线教育类的产品,同行出现只使用苹果支付的,也出现可以使用微信支付的,仔细研究发现就在线教育产品而言,直播类产品基本上使用微信、支付宝没有问题,而录播类产品基本上都只能使用苹果应用内支付,没有发现同时有直播和录播类产品的APP使用微信、支付宝支付

其实如果仅仅只是接入苹果支付,咬咬牙放弃30%收入也就算了,但是仔细研究发现如果只能接入苹果支付制肘还不少

  • 苹果支付产品定价只能按苹果预设方案不能随意定价,比如¥6、¥8、¥20、¥58 …. ,而且每个产品还必须在苹果后台设定好
  • 抽成30%,说实话目前国内在线教育类公司盈利的真心凤毛麟角,就算是一般公司估计毛利能到30%都很少,就这点不能不说苹果公司有多黑了
  • 苹果支付普及率,本人亲自使用感受,如果绑定好了信用卡再走支付确实很方便,按一下指纹就可以,但是就绑定操作而言相对国内普及使用的微信、支付宝确实有点门坎,事实也确实国内使用苹果支付的不多,特别是某些特定市场用户像我们公司目前主要针对初、高中学生家长,这类人群恐怕苹果支付的普及率更低

就定价方案来说也有折中方案,比如提供预充值功能,让用户使用余额支付。我们临时增加了虚拟课币功能,这样用户往账户充值变换成课币,产品使用课币标价。 阅读全文…

Docker学习笔记:常用命令

2016年8月6日 没有评论

Usage: docker search [OPTIONS] TERM
$docker search -s 3 centos
搜索命令,参数 -s 指定镜像评价星级

Usage: docker pull [OPTIONS] NAME[:TAG|@DIGEST]
$docker pull centos:centos6.8
从默认镜像源下载镜像,docker pull NAME[:TAG],其中NAME是镜像仓库名称(用来区分镜像),TAG是镜像标签(往往用来表示版本),不指定TAG则拉取 latest 标签镜像,镜像仓库名称前面可以添加仓库地址从指定仓库下载

Usage: docker images [OPTIONS] [REPOSITORY[:TAG]]
$docker images
查看本地镜像列表

Usage: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
$docker tag 0cd centos:ali
注意源镜像使用ID作为参数,目的镜像如果不传参数TAG的话则标签设置为默认值latest

Usage: docker inspect [OPTIONS] NAME|ID [NAME|ID…]
获取镜像详细信息

Usage: docker rmi [OPTIONS] IMAGE [IMAGE…]
删除一个或多个镜像,其中镜像需要指定明确,如果只指定镜像不指定标签则默认删除 latest标签镜像,可以使镜像ID,镜像只有在所有标签都被删除的时候才会被删除,镜像存在容器的时候也不能被删除

Usage: docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
$docker create -it –name=”create_2″ centos:centos6.8
创建容器,不马上启动

Usage: docker start [OPTIONS] CONTAINER [CONTAINER…]
docker start -it 3ca

启动容器

Usage: docker stop [OPTIONS] CONTAINER [CONTAINER…]
关停一个容器

Usage: docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
$docker run -it –name=”run_test” centos:centos6.8 /bin/bash
创建并启动容器

Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
$docker exec -it 1aab /bin/bash
进入一个在后台运行的容器

分类: 架构 标签:

简单的提升Android SDK下载速度方法

2016年7月31日 没有评论

因为服务器在国外,很多软件下载更新速度很慢,像Android Studio 下载 Android SDK,还有Xcode也有类似的问题,如果手上有VPN可以娴熟地F墙还好,不过仔细观察发现使用阿里云服务器下载也很快,这让我想到了一个快速实现的方法,简单到1、2、3就可以迅速提高下载速度,亲自体验家里20M带宽可以跑满。

使用到的必要工具

  1. 阿里云服务器,国内的就可以如果发现下载速度慢可以试试香港或国外的
  2. 端口转发工具,我选择SecureCRT

阿里云如果没有现成的服务器,可以租个按时间计算的配置,用完释放花不了几块钱,需要注意的是带宽最好选择按流量计算的,且一定要注意把带宽设置足够大,因为阿里按流量计算虽然理论上带宽可以达到G的水平,但是为了避免用户受到攻击带来流量损失做了一个极限带宽设置,设置100M即可。另外系统选择一个Linux发行版本的就可以了,主要是后面使用到端口转发使用SSH账号,Windows版的方法没有试过,其实原理差不多这里就不做研究了,有兴趣大家可以DIY 阅读全文…

拍照搜题产品的一点思路

2016年7月23日 没有评论

在线教育似乎火了有一段时间了,公司总算下定决心趟这个浑水,临危受命从原来团队跳出来组建团队,本以为跳出坑了,没想到又进了另外一个大坑。算是在认真做产品了,自我安慰一下 🙂

除了线上产品外,还有线下传统纸质教辅发行,打着『互联网+教辅』的概念,让传统教辅通过APP与线上资源和系统结合起来,既是对传统教辅的升级把内容形式丰富起来,又可以通过APP搜集用户数据,推荐个性化学习资源,将线下用户导到线上。这就是我们的故事 🙂

好了,回归正题,现在计划做一款『拍照搜题』功能,是的类似于小猿搜题、学霸君等产品。。。

总体思路其实也算简单

  1. APP拍题照片上传
  2. 后台采用OCR识别出照片文字内容
  3. 根据文字内容匹配后台题库
  4. 展现匹配到的题库内容

阅读全文…

分类: 产品 标签: ,

关于PHP做文件下载效率优化和体验提升

2015年9月28日 没有评论

Web开发中我们经常会遇到需要PHP处理要下载的文件,比如需要用户登陆才能下载文件,被下载的文件不允许直接访问,下载后的文件需要重命名等,通常我们可以使用下面的代码实现:

<?php
  authenticate(); //权限判断
  // 读取文件内容
  $content=file_get_contents($file);
  // 发送合适的 HTTP 头
  header("Content-type: application/octet-stream");
  header('Content-Disposition: attachment; filename="' . basename($file) . '"');
  header("Content-Length: ". filesize($file));
  echo $content; // 或者 readfile($file);
?>

但是这样做性能极低,你可以想像用户每次下载的时候程序都会一次一次地经过一个固定的buffer读取文件内容到内存,再发送到前端服务器,最后才能发送到客户端,还有各种网络超时和大量内存消耗,这将会是一个相当糟糕的设计。下面将介绍一个更直接高效的方式来实现。

X-Sendfile 是一种将文件下载请求由后端转交给前端服务器,由前端服务器直接处理文件下载请求的一种机制。它可以有效缓解后端服务器压力,将文件下载请求直接将由擅长处理静态文件请求的前端服务器如:Nginx、Lighthttpd等,极大地提高了文件下载请求效率。

X-Sendfile是通过一个非标准化的特定HTTP header实现的,后端服务器发送一个特定的HTTP header到前端服务器的时候,前端服务器从X-Sendfile得到请求的文件地址后,前端服务器将利用自身的功能机制将文件直接发送给用户。

X-Sendfile实际上是一种服务器内部的跳转机制,这种处理请求并不会将实际需要请求的文件地址暴露给用户,X-Sendfile做为一种非标准化的机制,不同的服务器的实现有所区别

SENDFILE 头 使用的 WEB 器
X-Sendfile Apache, Lighttpd v1.5, Cherokee
X-LIGHTTPD-send-file Lighttpd v1.4
X-Accel-Redirect Nginx, Cherokee

阅读全文…

分类: PHP 标签: , ,

ThinkPHP使用Uploadify等flash上传插件无法传递session的问题

2015年8月28日 没有评论

在ThinkPHP在使用Uploadify或其他基于Flash的上传插件的时候很多人会碰到上传控件无法传递Session的问题,特别是Firefox浏览器上面。官方解释可以将session id通过插件参数传递到后端,以下是Uploadify官方解决方案,但实测无法实现传递Session.

阅读全文…

OSX系统下面编译PHP的memcache等客户端扩展

2015年7月31日 没有评论

之前的一编文章『OS X 系统PHP 5.5.9 的 MongoDB、Memcache、Redis客户端模块分享』因为微云分享官方修改了分享策略导致连接失效的原因文件无法下载(已更新链接),看了文章的网友抓狂实在不好意思,所以决定写一篇详细的编辑方法,希望能授人以渔。

PHP客户端编辑主要步骤如下:

解压缩扩展的源文件压缩包

在解压后的根目录下面执行phpize命令

/usr/bin/phpize

这里大家要注意了,因为OSX系统自带一个比较老版本的php安装,如果大家想使用最新版的PHP的话上面的命令使用新版phpize的命令地址,下面其他PHP命令类似

然后在根目录下面执行 configure 命令

 ./configure –with-php-config=/usr/bin/php-config

注意这个时候可能提示找不到 configure命令,那看看是不是没有安装 autoconf 和 automake,安装相关程序再次执行即可

另外一定要注意参数–with-php-config 的版本和路径

接下来执行编辑

make

make install

这个时候如果编辑安装成功的话会提示生成的拓展位置,在 php.ini 文件添加 extension=memcache.so

查看 phpinfo() 函数结果可查看memcache 拓展信息说明安装成功,如果你很不幸依然不成功,可以在『关于我』里面找到本人的联系方式

分类: OS X, PHP 标签: , ,

PHP短标签(short_open_tag ),还是忘了它吧

2014年12月28日 没有评论

是的,PHP默认是开启PHP短标签的,即默认情况下short_open_tag=ON,大家看看PHP的官方说明上面讲的很清楚下面的官方配置文件上面也是这样说的(绿色和红色标)。

; This directive determines whether or not PHP will recognize code between

; <? and ?> tags as PHP source which should be processed as such. It is

; generally recommended that <?php and ?> should be used and that this feature

; should be disabled, as enabling it may result in issues when generating XML

; documents, however this remains supported for backward compatibility reasons.

; Note that this directive does not control the <?= shorthand tag, which can be

; used regardless of this directive.

; Default Value: On

; Development Value: Off

; Production Value: Off

; http://php.net/short-open-tag

short_open_tag = Off

不过在这里我还是建议大家还是忘了这个默认设置吧,最好还是不要使用短标签的好。

阅读全文…

分类: PHP 标签: ,