hongweipeng 发布的文章

git 2.0的push


起步

好久没用linux了,命令都不熟悉了.linux下安装的git版本比较新,2.x版本,在push时候收到了下面的报错:

$ git push
warning: push.default 尚未设置,它的默认值在 Git 2.0 从 'matching'
变更为 'simple'。若要不再显示本信息并保持传统习惯,进行如下设置:

  git config --global push.default matching

若要不再显示本信息并从现在开始采用新的使用习惯,设置:

  git config --global push.default simple

当 push.default 设置为 'matching' 后,git 将推送和远程同名的所有
本地分支。

从 Git 2.0 开始,Git 缺省采用更为保守的 'simple' 模式,只推送当前
分支到远程关联的同名分支,即 'git push' 推送当前分支。

参见 'git help config' 并查找 'push.default' 以获取更多信息。
('simple' 模式由 Git 1.7.11 版本引入。如果您有时要使用老版本的 Git,
为保持兼容,请用 'current' 代替 'simple')

Matching

matching 参数是 Git 1.x 的默认行为,其意是如果你执行 git push 但没有指定分支,它将 push 所有你本地的分支到远程仓库中对应匹配的分支。

Simple

而 Git 2.x 默认的是 simple,意味着执行 git push 没有指定分支时,只有当前分支会被 push 到你使用 git pull 获取的代码。

修改默认设置

从上述消息提示中的解释,我们可以修改全局配置,使之不会每次 push 的时候都进行提示。对于 matching 输入如下命令即可:

$ git config --global push.default matching

而对于 simple ,请输入:

$ git config --global push.default simple

实用的git别名


程序员都是"懒惰"的,哪怕是执行一个命令的时候少敲了一个字母也感觉特舒坦。Git就允许为命令设置别名。 类似 git status 都要敲那么多字母。如果把status换成st,这种机(tou)智(lan)的做法用着很有魔性。

$ git config --global alias.st status

这句话就是让git明白,我把status取了外号叫st了,以后老子喊st就表示status了。 这时再敲下git st试试。 下面分享我常用的别名设置。

git config --global alias.l  "log --color --graph --decorate --pretty=oneline --abbrev-commit"
git config --global alias.l0 "log --color --graph --decorate --pretty=oneline --abbrev-commit -U0"
git config --global alias.la "log --color --graph --decorate --pretty=oneline --abbrev-commit --all"
git config --global alias.lb "log --color --graph --decorate --pretty=oneline --abbrev-commit --all --simplify-by-decoration"
git config --global alias.lg "log --color --graph --decorate" 
git config --global alias.dl  "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit"
git config --global alias.dla "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit --all"
git config --global alias.dlb "log --date-order --color --graph --decorate --pretty=oneline --abbrev-commit --all --simplify-by-decoration"
git config --global alias.dlg "log --date-order --color --graph --decorate"

git config --global alias.d  "diff --color"
git config --global alias.dc "diff --color --cached"
git config --global alias.d0 "diff --color --unified=0"

git config --global alias.ci "commit --verbose"

git config --global alias.co "checkout"
git config --global alias.tr "checkout --track"

git config --global alias.s  "status --short"
git config --global alias.st "status"

让json更懂中文


起步

相信很多人用php搭后台时候,当ajax用于交互时候,由于字符都被urf-8处理,所以用PHP的json_encode来处理中文的时候, 中文都会被编码, 变成不可读的, 类似”\u***”的格式, 而且还会在一定程度上增加传输的数据量。

<?php
$str = "让json更懂中文";
echo json_encode($str);
//输出:"\u8ba9json\u66f4\u61c2\u4e2d\u6587"

总结几种解决方法。

方法1:自己构造支持中文的 json_encode

思路是这样的,对字符串进行url加密处理,之后json_encode后再解密

<?php
function json_encode_zn($data) {
    //处理json的中文问题
    if(is_string($data)) {
        $data = urlencode($data);
    }else if(is_array($data)) {
        array_walk_recursive($data, function(&$value) {
            if(is_string($value)) {
                $value = urlencode($value);
            }
        });
    }
    return urldecode(json_encode($data));
}

$str = "让json更懂中文";
$arr = array("id"=>5,"name"=>"中文名字","arr"=>array(1,"weapon","中文"));
echo json_encode_zn($str);//"让json更懂中文"
echo json_encode_zn($arr);//{"id":5,"name":"中文名字","arr":[1,"weapon","中文"]}


用php写wifidog的认证服务器


路由器上wifidog的设置

1376869377-561c8368c251e.png 主要设置鉴权服务器主机名(域名或ip都可以)和加粗鉴权服务器路径

路由器会请求以下四个地址:

http://认证服务器/路径/login http://认证服务器/路径/auth http://认证服务器/路径/ping http://认证服务器/路径/portal http://认证服务器/路径/gw_message.php

所以我们需要每个请求建立一个文件夹下一个index.php


PHP mysqli 操作数据库


起步


由于mysql连接方式被废除,据说在php7中要使用mysql_connect()还需要额外下载组件。 使用mysqli有面向过程和面向对象两种方式。 mysqli提供了三个类:

  1. mysqli 连接相关的
  2. mysqli_result 处理结果集
  3. mysqli_stmt 预处理类

    数据库连接

<?php
$db_host = 'localhost';
$db_name = 'test';
$db_user = 'root';
$db_pwd = '';

//面向对象方式
$mysqli = new mysqli($db_host, $db_user, $db_pwd, $db_name);
//面向对象的昂视屏蔽了连接产生的错误,需要通过函数来判断
if(mysqli_connect_error()){
    echo mysqli_connect_error();
}
//设置编码
$mysqli->set_charset("utf8");//或者 $mysqli->query("set names 'utf8'")
//关闭连接
$mysqli->clise();

//面向过程方式的连接方式

$mysqli = mysqli_connect($db_host, $db_user, $db_pwd, $db_name);
//判断是否连接成功
if(!$mysqli ){
    echo mysqli_connect_error();
}
//关闭连接
mysqli_close($mysqli);
?>