Google JavaScript 编码规范指南
JavaScript编码遵循Google JavaScript编码规范指南
参考资料
http://docs.kissyui.com/1.4/docs/html/tutorials/style-guide/google-js-style.html
清净无为
JavaScript编码遵循Google JavaScript编码规范指南
http://docs.kissyui.com/1.4/docs/html/tutorials/style-guide/google-js-style.html
PSR 是 PHP Standard Recommendations 的简写,由 PHP FIG 组织制定的 PHP 规范,是 PHP 开发的实践标准。
PHP编码遵循PSR的建议
主要包括以下几个方面:
详细内容见: https://psr.phphub.org/ 和 https://github.com/PizzaLiu/PHP-FIG
代码审核时将遵守以上规范
使用https协议
将API的版本号放入URL,如https://mqtt.lianluo.com/v1/
1xx范围的状态码是保留给底层HTTP功能使用的,并且估计在你的职业生涯里面也用不着手动发送这样一个状态码出来。
2xx范围的状态码是保留给成功消息使用的,你尽可能的确保服务器总发送这些状态码给用户。
3xx范围的状态码是保留给重定向用的。大多数的API不会太常使用这类状态码,但是在新的超媒体样式的API中会使用更多一些。
4xx范围的状态码是保留给客户端错误用的。例如,客户端提供了一些错误的数据或请求了不存在的内容。这些请求应该是幂等的,不会改变任何服务器的状态。
5xx范围的状态码是保留给服务器端错误用的。这些错误常常是从底层的函数抛出来的,并且开发人员也通常没法处理。发送这类状态码的目的是确保客户端能得到一些响应。收到5xx响应后,客户端没办法知道服务器端的状态,所以这类状态码是要尽可能的避免。
1 | Accept-Language: zh-CN |
以下是常用语言:
字段 | 值 | 说明 |
---|---|---|
Accept-Language | zh-CN | 简体中文 |
Accept-Language | zh-TW | 繁体中文 |
Accept-Language | en-US | 英文 |
所有错误可以在HTTP请求处, 统一处理
1 | { |
3.状态码为 422(验证失败)时返回的信息为一个对象数组, 每个对象中包含field和message信息, 如1
2
3
4
5
6
7
8
9
10[
{
"field": "verify_code",
"message": "短信验证码不正确"
},
{
"field": "phone",
"message": "手机号已被注册"
}
]
所有API请求结果的Header中携带X-Debug-Tag参数,该参数为请求的id
调试时, 打开/debug网址, 然后使用debug-tag过滤找到相应的请求
只用以下常见的3种body format:
返回结果中提供链接,连向其他API方法,使得用户不查文档,也知道下一步应该做什么
1 | {"link": { |
上面代码表示,文档中有一个link属性,用户读取这个属性就知道下一步该调用什么API了。rel表示这个API与当前网址的关系(collection关系,并给出该collection的网址),href表示API的路径,title表示API的标题,type表示返回类型。
可以使用pecl进行安装 ,如 pecl install swool
, 注意加上版本号
或者使用构建好的docker镜像,这里使用构建好的 zacksleo/php:7.1-alpine-fpm-swoole
镜像
1 | composer require jesusslim/mqttclient |
1 |
|
由于该客户端需要常驻内存,所以需要在 terminal 运行,如
1 | ./yii mqtt/client |
为了防止进程被杀死,获取因为异常退出,可以使用进程管理工具进行管理,如 supervisor
更多内容,参见 [[使用supervisor管理进程]]
在安装完 docker 后, 我们常常安装 docker-compose 来简化 docker 的日常维护,
但是由于 GitHub 在国内较慢, 经常安装不了,所以使用 DaoCloud 提供的镜像来快速安装
yum install docker
1 | $ curl -L "https://github.com/docker/compose/releases/download/1.10.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
yum install docker
1 | $ curl -L https://get.daocloud.io/docker/compose/releases/download/1.11.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose |
由于下载镜像较慢, 可以使用 DaoCloud 提供的镜像对 Docker 进行加速
1 | $ curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://0835afe2.m.daocloud.io |
接口授权和认证有许多处理方案, 其中最简单的一种使用appkey和appsecret的方式进行验证
另外还有一种是通过对接口中的参数排序并按照一定加密算法求得哈希值, 作为授权验证的令牌
本文介绍基于OAuth2的通用授权认证规则
简言之, 客户端首先通过一定方式获取访问令牌, 然后在每次调用接口时, 携带该令牌, 服务端验证该令牌
2.如果需要, 安装python的requests模块和argparse模块
1 | pip install requests |
1 | curl https://raw.githubusercontent.com/zacksleo/docker-hook/master/docker-hook > /usr/local/bin/docker-hook; chmod +x /usr/local/bin/docker-hook |
4.脚本安装完成后即可使用docker-hook 命令, 默认监听8555端口
1 | nohup docker-hook -t <auth-token> -c <command> & |
其中, auth-token 替换为授权token, command替换为要执行的命令, 例如
auth-token为auto-deploy-pushserver
,command为sh /mnt/pushserver/deploy.sh
则执行命令: docker-hook -t auto-deploy-pushserver -c sh /mnt/pushserver/deploy.sh
deploy.sh的内容为:1
git push origin dev
nohup+&命令为该进程设置为守护进程, 防止进程退出
5.在GitLab的项目设置里面,设置Webhooks, 本例子中则为139.198.9.141:8555/audo-deploy-pushserver
1 | nohup docker-hook -t <auth-token2> -c <command2> --port 8556 & |
通过重写CI_Exceptions, 当程序出错时, 通过调用GitLab中提交issue的API, 将相关信息自动提交
如果是Yii2项目,见 Yii自动上报Bug
在此提供一个方法, 给自己提交一个issue, 提交时审查HTML, 可以找到 issue_assignee_id和 data-project-id
1 | // to enable, set this to true |
1 | <?php if (!defined('BASEPATH')) { |
yii2在程序报错时, 会执行指定action, 通过重写ErrorAction, 实现Bug自动提交至GitLab的issue
1 | public function actions() |
如何获取project_id和assignee_id见 WIKI
1 | namespace app\helpers\web; |
先解析markdown为HTML, 然后解析出h1-h10标签, 根据h标签的前后大小, 决定ul的层级, 以此生成ul序列的嵌套
<li></li>
,<ul>
</ul><ul><li></li>
$file为文件路径, $docs为解析后的html字串
1 | $content = file_get_contents($file); |
1 | $dom = new \DOMDocument(); |
1 | <ul> |