您正在查看: HanSon 发布的文章

团队中使用git的正确姿势!

最近换到新公司后,对git又有更加深刻的认识了,git能够非常好的解决团队开发,解决冲突(配合JB[jetbrains]效果更棒)

谨记

无论如何,请在分支上开发,保持分支是干净的,仅有你这次任务的代码!

fork到自己的项目中

fork到项目中,然后从clone自己fork下来的任务,这样就能保证你每次都会push到自己的项目中

增加团队项目的地址

之后假若遇到冲突,是需要重新拉去团队项目的最新代码的,以及在新任务开始时,都需要从团队的master中创建分支

增加一个项目源 git remote add org git:***** org为你组织的名称,随便起名即可

创建属于这次任务的分支

开始任务前,第一件事就是为你即将开展的任务创建分支 git checkout -b yourbranch(必须要从项目的团队上线分支上checkout出来,例:org/master)

开发完本次任务后,不要急着push!不要急着push!不要急着push! 重要的事情说三遍

先commit,这样就能记录你本次任务所修改的文件

切换回自己的测试分支

一般团队也会有测试的分支,直接checkout 团队的测试分支即可

合并分支

切换后需要把你的开发分支merge进来

push!

这时候可以push了,要注意的就是请确保你push的是自己的项目源,一般是 origin ,因人而异

提交PR

如果没有任何冲突,这里会很流畅的显示能够自动合并,下方显示修改的文件只有你自己所修改的文件

不能自动合并怎么办?

这是通常是因为有人跟你在测试环境中修改了相同的文件,只要在你自己的测试分支中重新pull一下(记得是pull团队的测试分支),然后IDE就让你修改冲突,只要你修改完后就能重新提交了。

最近换到新公司后,对git又有更加深刻的认识了,git能够非常好的解决团队开发,解决冲突(配合JB[jetbrains]效果更棒)

谨记

无论如何,请在分支上开发,保持分支是干净的,仅有你这次任务的代码!

fork到自己的项目中

fork到项目中,然后从clone自己fork下来的任务,这样就能保证你每次都会push到自己的项目中

增加团队项目的地址

之后假若遇到冲突,是需要重新拉去团队项目的最新代码的,以及在新任务开始时,都需要从团队的master中创建分支

增加一个项目源 git remote add org git:***** org为你组织的名称,随便起名即可

创建属于这次任务的分支

开始任务前,第一件事就是为你即将开展的任务创建分支 git checkout -b yourbranch(必须要从项目的团队上线分支上checkout出来,例:org/master)

开发完本次任务后,不要急着push!不要急着push!不要急着push! 重要的事情说三遍

先commit,这样就能记录你本次任务所修改的文件

切换回自己的测试分支

一般团队也会有测试的分支,直接checkout 团队的测试分支即可

合并分支

切换后需要把你的开发分支merge进来

push!

这时候可以push了,要注意的就是请确保你push的是自己的项目源,一般是 origin ,因人而异

提交PR

如果没有任何冲突,这里会很流畅的显示能够自动合并,下方显示修改的文件只有你自己所修改的文件

不能自动合并怎么办?

这是通常是因为有人跟你在测试环境中修改了相同的文件,只要在你自己的测试分支中重新pull一下(记得是pull团队的测试分支),然后IDE就让你修改冲突,只要你修改完后就能重新提交了。

Windows下配置vagrant homestead环境

自从公司使用了vagrant后,觉得无比的舒服,便花一天时间在家也配置了一下

准备工作

先下载以下文件

virtualBox这里我是下载5.0.24的版本,至于为什么不下载最新的5.1.0,因为装了之后总是提示下载最新版本,4.* , 5.0.* ,就是没有提及5.1.0,便下载了5.0中最新的版本。

以上文件除了virtualBox外皆为当前最新版本(2016-7-17)
PS:请务必使用迅雷下载,毕竟迅雷有加速buff(别问我如何使用迅雷下载,问这话我觉得你应该转行了)

- 阅读剩余部分 -

laravel 中 Facades的原理以及代码剖析

Facades

原理

In the context of a Laravel application, a facade is a class that provides access to an object from the container. The machinery that makes this work is in the Facade class. Laravel's facades, and any custom facades you create, will extend the base Illuminate\Support\Facades\Facade class.

A facade class only needs to implement a single method: getFacadeAccessor. It's the getFacadeAccessor method's job to define what to resolve from the container. The Facade base class makes use of the __callStatic() magic-method to defer calls from your facade to the resolved object.

简单来说,门面是通过一个魔术方法__callStatic()把静态方法映射到真正的方法上。

本文我们用Route来举例,

Route::get('/', function(){
    # 
}

- 阅读剩余部分 -

laravel Encryption 详解

laravel Encryption 详解

简介

Encryption是laravel自带的一个加密模块,让我们先来看看文档说明

Configuration

Before using Laravel's encrypter, you should set the key option of your config/app.php configuration file to a 32 character, random string. If this value is not properly set, all values encrypted by Laravel will be insecure.

意思就是在使用laravel的encrypter前,需要在config/app.php设置一下key(秘钥)和cipher(加密方式)。

# from config/app.php
'key' => env('APP_KEY'),
'cipher' => 'AES-256-CBC',

env方法指明了读取.env文件的APP_KEY,这个只能够通过 php artisan key:generate生成,也是整个应用程序的key,cipher表明了加密的方式,默认AES-256-CBC

- 阅读剩余部分 -

shell脚本生成mysql数据库以及用户

此脚本可以根据自定义做合适的修改,自己知道自己做什么就好了

#!/bin/bash

# Functions
ok() { echo -e '\e[32m'$1'\e[m'; } # Green

EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`

Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON $1.* TO '$2'@'%' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"

if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi

$MYSQL -uroot -e "$SQL"

ok "Database $1 and user $2 created with a password $3"

简单讲解就是新建个shell脚本,例如:mysql_create.sh。

执行的时候带上3个参数,分别是数据库,用户名,密码

此脚本可以根据自定义做合适的修改,自己知道自己做什么就好了

#!/bin/bash

# Functions
ok() { echo -e '\e[32m'$1'\e[m'; } # Green

EXPECTED_ARGS=3
E_BADARGS=65
MYSQL=`which mysql`

Q1="CREATE DATABASE IF NOT EXISTS $1;"
Q2="GRANT ALL ON $1.* TO '$2'@'%' IDENTIFIED BY '$3';"
Q3="FLUSH PRIVILEGES;"
SQL="${Q1}${Q2}${Q3}"

if [ $# -ne $EXPECTED_ARGS ]
then
  echo "Usage: $0 dbname dbuser dbpass"
  exit $E_BADARGS
fi

$MYSQL -uroot -e "$SQL"

ok "Database $1 and user $2 created with a password $3"

简单讲解就是新建个shell脚本,例如:mysql_create.sh。

执行的时候带上3个参数,分别是数据库,用户名,密码

crontab 基本用法

crontab -l 当前定时脚本

crontab -e 编辑定时脚本

          • php script.php

5个星星对应如下

minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

crontab -l 当前定时脚本

crontab -e 编辑定时脚本

          • php script.php

5个星星对应如下

minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

typecho_material_theme 增加二级分类导航栏

从当时有人提出想增加二级分类到现在已经半年了,终于在闲着蛋疼的情况下撸了出来,比想象中简单很多 - -

要改的代码其实不多,就是改了一下原来遍历输出增加了条件判断

下拉插件请参考

了解typecho的API感觉真不容易,文档个人感觉并不全

首先在遍历 category 时需要判断该 category 是否有children
<?php if(count($category->children)):?>

有的话就遍历该category的children

    <ul class="dropdown-menu">
        <li><a href="<?php echo $category->permalink(); ?>"><?php echo $category->name ?></a></li>
        <?php foreach($category->children as $k=>$v):?>
            <li><a href="<?php echo $v['permalink'] ?>"><?php echo $v['name'] ?></a></li>
        <?php endforeach; ?>
    </ul>

- 阅读剩余部分 -

centos7 下安装php7&mysql

花了半天时间把另外一个服务器安装php7,并且安装mariadb

在此做下记录

首先按照官网来安装php7 php官网

但是其中configure是错误的,会导致报错

./configure --enable-fpm --with-mysql

改为

./configure --enable-fpm --with-mysqli

到这里基本安装php7就没什么大问题了,期间在./configure的时候可能会提示确实某些包,百度然后yum安装就好了

2.安装mysql

yum install mysql mysql-devel

然后会下载安装相应的mariadb版本

接着安装 yum install mariadb-server (我也不知道为什么mysql没有mysql-server)

安装完mariadb服务器版就多了mysql用户组,然后就进行权限赋值

chmod -R mysql:mysql /var/lib/mysql

接着设置开机启动以及启动
systemctl enable mariadb.service
systemctl start mariadb.service

然后运行 mysql -uroot

最后设置密码

UPDATE mysql.user SET Password=PASSWORD('password') where USER='root';
flush privileges;

花了半天时间把另外一个服务器安装php7,并且安装mariadb

在此做下记录

首先按照官网来安装php7 php官网

但是其中configure是错误的,会导致报错

./configure --enable-fpm --with-mysql

改为

./configure --enable-fpm --with-mysqli

到这里基本安装php7就没什么大问题了,期间在./configure的时候可能会提示确实某些包,百度然后yum安装就好了

2.安装mysql

yum install mysql mysql-devel

然后会下载安装相应的mariadb版本

接着安装 yum install mariadb-server (我也不知道为什么mysql没有mysql-server)

安装完mariadb服务器版就多了mysql用户组,然后就进行权限赋值

chmod -R mysql:mysql /var/lib/mysql

接着设置开机启动以及启动
systemctl enable mariadb.service
systemctl start mariadb.service

然后运行 mysql -uroot

最后设置密码

UPDATE mysql.user SET Password=PASSWORD('password') where USER='root';
flush privileges;

解决echarts上axislabel不会自动换行的问题

Introduce

许多人使用百度的echarts.js时候会出现数据名太长覆盖的情况,newline-echarts.js能够很好解决这种换行问题
github地址

Usage

newline(option, 6, 'yAxis')

  • 参数一:是你的option
  • 参数二:是多少个字就换行
  • 参数三:是x轴还是y轴 可选项 'yAxis' OR 'xAxis'

Example

var chart = echarts.init(document.getElementById("main"));
<script src="js/echarts.js"></script>
var option = 
{
    # your options
}

option = newline(option, 6, 'yAxis')
chart.setOption(option)

参考图片

Introduce

许多人使用百度的echarts.js时候会出现数据名太长覆盖的情况,newline-echarts.js能够很好解决这种换行问题
github地址

Usage

newline(option, 6, 'yAxis')

  • 参数一:是你的option
  • 参数二:是多少个字就换行
  • 参数三:是x轴还是y轴 可选项 'yAxis' OR 'xAxis'

Example

var chart = echarts.init(document.getElementById("main"));
<script src="js/echarts.js"></script>
var option = 
{
    # your options
}

option = newline(option, 6, 'yAxis')
chart.setOption(option)

参考图片

vim 设置以及常用插件安装

cd ~/.vim #没有就 mkdir ~/.vim
git clone https://github.com/heulizeyang/vim.git
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
wget http://hanc.cc/.vimrc ~/.vimrc
vim ~/.vimrc
:BundleInstall

.vimrc 下载链接

cd ~/.vim #没有就 mkdir ~/.vim
git clone https://github.com/heulizeyang/vim.git
git clone http://github.com/gmarik/vundle.git ~/.vim/bundle/vundle
wget http://hanc.cc/.vimrc ~/.vimrc
vim ~/.vimrc
:BundleInstall

.vimrc 下载链接