0%

Github未记录contributions

这段时间提交到git上面的commit,突然发现没有被记录到contributions里面,导致那个面板看起来“很不友善”,经过短暂的研究(half hour),贡献出解决方案。

何为contributions

如图

1.pic.jpg

如果有提交的话,那么当天就会是一个绿色的格子,由提交的数量决定颜色的深浅。

未被记录的原因

看了看github的文档,发现有三种情况不会被记录:

  1. 用户名或者邮箱跟github没有关联上, github认为不是你提交的, 不统计。
  2. fork 的项目, 不统计
  3. 没有在版本库的master【默认分支】上提交

这里我检查了一下自己的项目,发现果然是因为账号没有关联上的原因。

阅读全文 »

ajax请求成功后的json字符串处理

通常而言,ajax的数据请求是双向的,意思就是服务端要处理前台的数据,同时前台也需要对服务端传递的数据进行处理,这里我注意了一下javascript对服务端传递过来的json字符串的处理。

服务端返回的json

1.pic.jpg

错误的前台javascript代码

$(function () {
    window.onload = function () {
        $.ajax({
            'url': $.lmParam.initDataUrl,
            'method': 'get',
            success : function (data) {
                  $(data).each (function (){
                  console.log(this);
                  });
            }

        });
  }

});

当然了,上面的代码是有错误的,前台的回应是无法识别后台传递的json

2.pic.jpg

正确的处理方式

通过eval函数处理后台返回的数据即可正常识别。

阅读全文 »

使用doctrine2抽象数据层的CURD操作

依然是在项目开发过程中碰到的问题,需要使用doctrine来解决。虽然doctrine2的英文文档解释的很全面,但是对于之前没有接触过doctrine的人来说,使用它还是有一定的难度,这里笔者通过我们常用的CURD操作,来解释doctrine2的运用。

下载安装

composer.phar require doctrine/orm 2.4.*

前提准备

下载安装完之后,官方手册讲了一大堆的配置,新建bootstrap.php文件,新建cli-config.php文件什么什么的,国内很多人的博客互相抄来抄去也只是把官方手册粗略的翻译了一下,而实际上,如果我们只需要使用doctrine2对数据库进行CURD操作的话,压根不需要这么多繁琐的配置。

话不多说,上代码。

代码Git地址:liumapp/dns.

项目目录结构

2.pic.jpg

阅读全文 »

gulp-uglify在压缩js文件上的一个坑

首先我们在使用gulp命令自动合并和压缩js文件的时候,往往要用到uglify,而在利用uglify压缩js文件后,$(function(){…..})里面包含的内容在压缩后全部为空。

问题原因

没有引入jquery包导致jquery的闭包不能被识别。

解决方案

需要引入uglifyjs

具体执行

npm install uglifyjs --save -g

uglifyjs yourJsFile.js -o result.min.js  --source-map result.min.js.map

总结

虽然使用uglifyjs可以完成包含jquery在内的js的文件压缩,但每一次压缩都需要使用一次命令行的命令,甚是麻烦,这边笔者的一个解决方案是:在开发过程中不进行压缩,只执行concat合并,等到最后可以发布到线上环境后再执行压缩命令即可。

阅读全文 »

Git后悔系列——gitignore忽略指定目录,但不忽略该目录下的指定文件

手头上正在处理whmcs闭源系统,因为是闭源,所以不能把所有的代码都加到Git库里,但是我写的代码肯定要加到Git库,因为怕哪天whmcs系统一个自动更新,把系统认为很奇怪的文件都删掉就麻烦了。
所以在编写.gitignore上,除了要把相当一部分被加密的whmcs源码写入忽略规则之外,我们还需要指定自己编写的文件不要被忽略。

案例

我们以whmcs系统的modules目录为例,该modules目录下的内容如图所示:

1.pic.jpg

现在接入了支付宝的gateway接口,所以我们引入了相关文件,如图

2.pic.jpg

画红框的表示额外引入的文件,那么现在我需要编写gitignore,既要忽视modules下的所有文件,又要不忽视接入的支付宝支付的相关文件。

代码

/modules/*

!/modules/gateways

/modules/gateways/*

!/modules/gateways/callback

/modules/gateways/callback/*

!/modules/gateways/alipay.php

!/moduels/gateways/callback/alipay.*

!/modules/gateways/callback/alipay*

!/modules/gateways/callback/cacert.pem
阅读全文 »

Git后悔系列——删tag和回滚master

代码push带git库里了,打好tag了,结果反悔了,怎么办?删tag,回滚线上的master呗。

话不多说,直接干。

删除本地和线上的tag

假设希望被删除的tag为v1.1.0

删除本地tag:

git tag -d v1.1.0

删除线上tag:

git push origin :refs/tags/v1.1.0

回滚线上的master

阅读全文 »

whmcs系统添加网银支付接口

其实利用whmcs系统的文档,按照规范编写网银支付接口是很简单的,但是问题在于,我要如何去使用现成的代码来完成这个接口呢。这里我们使用payment项目(笔者针对支付功能进行封装的一个library)来在whmcs系统上实现这个支付接口。

具体代码已经部署在github上,具体链接为whmcs-union

那么我们直接把重点放在whmcs系统中对外部项目的引用。

不能直接使用composer

笔者的whmcs系统版本为7.x,下载的源文件中并没有composer.json,所以在whmcs根目录下,冒然执行composer init然后require项目,将会覆盖掉vendor目录下原有的composer文件,导致whmcs系统无法正常定位到其本身依赖的库文件。

解决办法

在根目录下新建一个目录,名为vendor2,再在vendor2中执行composer init ,再require你需要引入的项目即可,但是要注意一点,不能直接requireone ‘./vendor2/vendor/autoload.php’文件,因为系统将会直接报错,换句话说,可以使用composer下载依赖,但是定位依赖的spl_autoload_register需要自己写。

spl_autoload_register示范

仅供参考,毕竟每一个不通的依赖,spl_autoload_register都是有可能不一样的,所以我们在具体调用的位置再去编写。

阅读全文 »

一时心血来潮,把一台服务器的CentOS升级到了7版本,结果发现ftp服务无法进行远程链接,通过排查错误,最终发现,CentOS7默认的防火墙不再是iptables,而是firewall。

开通常用端口

对于开启ftp服务而言,我们最需要的就是20和21端口(20端口涉及到ftp-data),话不多说,直接上代码:

firewall-cmd --add-port=20/tcp --permanent

firewall-cmd --add-port=20/udp --permanent

firewall-cmd --add-port=21/tcp --permanent

firewall-cmd --add-port=21/udp --permanent

systemctl restart firewalld.service

开启20和21端口的介绍没有问题,那最后一个systemctl是个什么鬼?没错,CentOS下面默认也不使用service和sysConfig,而是通过systemctl来实现软件的start,stop,restart等常用的操作,简单点说,就相当于把service和sysConfig两个命令合并到一个systemctl里面。

基本命令

启动: systemctl start firewalld

查看状态: systemctl status firewalld

停止: systemctl disable firewalld

禁用: systemctl stop firewalld

阅读全文 »

CentOS自动化部署LNMP环境


因为公司项目较多,而且每一个项目一般都部署在一台独立的服务器上,每台服务器的环境部署其实是一个重复的工作,所以就用shell做了一个LNMP环境的自动化部署。

预期目标

通过执行一个shell脚本,暂且命名为install.sh,自动在CentOS系统上安装php-5.6.30,nginx-1.12.0,mysql-5.5.37,同时完成相关配置文件的调整、目录的索引、依赖库的安装、ftp、jpeg、libevent、libiconv、libmycrypt、libpng、pcre、openssl、zlib等CentOS常用程序的安装。

通过执行一个shell脚本,暂且命名为uninstall.sh,自动删除安装过的所有程序。

设计思路

1.使用固定的版本

2.所有程序的源代码跟shell脚本部署在相同目录下

3.shell脚本使用以程序名称命名的目录来分别运行,install.sh作为入口文件和主文件,具体的安装脚本分割开来

阅读全文 »