BraveDu / zh-CN Step Of Mine Thu, 10 Jan 2019 00:55:11 +0800 Thu, 10 Jan 2019 00:55:11 +0800 女人和她衣橱的故事,阐述VUEX http://www.bravedu.com/archives/177/ http://www.bravedu.com/archives/177/ Thu, 10 Jan 2019 00:55:11 +0800 网络副手--寻路人 VUEX 是一种程序模式,来统一管理程序状态的。
诙谐点说: VUEX 就是一个女人对生活的一种态度,是一种管理、收纳自己用品的一种归置模式。

你喜欢把花放在电视机旁,她喜欢把花放到冰箱上,还有女人喜欢把衣服放到床上,等等等,都可以,这是一种归置的思想,电视剧、冰箱、床  这三个都是 容器,能容纳你放置的这些东西。

在VUE 里面也把这些个概念虚拟出来一个名称  叫做  Store,英文名字  Store 就是 仓储、容器的意思
那VUE 是通过什么来 虚拟这个 Store 的呢?通过new Vuex.Store({})来虚拟Store

VUEX 把虚拟的模式,为了具体化成为规定的仓库,就是 通过这个代码,他告诉这个女人,我要给你做一个容器了。

接下来,给这个女人做的容器,我给他起个名字 叫衣服厨子,  const store【衣服厨】= new Vuex.Store
女人为了和她的衣厨进行日常的生活,会和这个衣服厨进行打交道。
和衣橱生活的日中中包含   {    
    衣橱储物槽(state),   
    向衣橱储物槽放置东西这个行为(mutation) ,
    以及从衣物来源行为(Action)      
}

这个地方写代码的话可以是

state.js ( 衣服储物槽文件 )
    const state[储物槽] = {
     内衣槽,
     裤子槽,
     外套槽,
}

mutaion.js ( 向衣橱储物槽归置行为)
const mutations[行为集合] = {
     放到内衣槽行为 : function(state, payload ){
          state.内衣槽 = payload
     },
     放到裤子槽行为 : function(state, payload ){
          state.内衣槽 = payload
     }
}

这个 state 就是衣橱储物槽,目前所有的情况
payload 载荷,即为咱们要往具体的储物槽里面放置什么物品
这时候我们有个衣物来源行为归属

actions.js (女人填充填充衣橱行为)

const actions = { 
 买裤子({state, commit}, payload(此处为款式) ) {
      axios.post('去商场买', {  款式 }).then( res => {
           //买回来后干啥
           commit (' 放到裤子槽行为', XX款式裤子)
      })
 },
 洗内衣({state, commit}, payload(此处为款式) ) {
      axios.post('去商场买', {  款式  }).then( res => {
           //洗完干啥
           commit (' 放到内衣槽行为', XX款式内衣)
          })
 },
}

女人和衣橱的日常模式已经设定好了,则这个模式就是 VUEX 状态管理模式
(action.js) -> store.dispatch('买裤子行为', 牛仔裤);  -> (mutation)  ->  commit (' 放到裤子槽行为', 牛仔裤) -> (state)  state.牛仔槽 = payload(牛仔裤)

这个女人,出去了一趟,买了条牛仔裤,到和他的衣橱交互后,结果是,这个衣橱的槽里面,多了条牛仔裤
这个槽里面多了条牛仔裤,无论是这个女人,还是她的闺蜜,如果来他家打开这个储物槽,都能看到
这个 “能看到” 这个瞬间,就是

computed: {
     观察裤子槽 () {
      return this.$store.state.count  (出现了牛仔裤)
    }
  }
]]>
0 http://www.bravedu.com/archives/177/#comments http://www.bravedu.com/feed/archives/177/
Laravel 日志去掉stack trace http://www.bravedu.com/archives/176/ http://www.bravedu.com/archives/176/ Thu, 10 Jan 2019 00:48:12 +0800 网络副手--寻路人 一、
Setting APP_DEBUG=false in your .env file works fine for the frontend.

If you don't want the stack trace lines to be outputted in the log files only, try this.

二、
In /app/Exceptions/Handler.php add use Log; at the top, then add this in the report function:

Log::error('['.$e->getCode().'] "'.$e->getMessage().'" on line '.$e->getTrace()[0]['line'].' of file '.$e->getTrace()[0]['file']);

And remove:

parent::report($e);
]]>
0 http://www.bravedu.com/archives/176/#comments http://www.bravedu.com/feed/archives/176/
Sqlite3 数据库使用命令,很细节 http://www.bravedu.com/archives/175/ http://www.bravedu.com/archives/175/ Thu, 06 Dec 2018 23:06:42 +0800 网络副手--寻路人 今天晚了下Sqlite3 数据库,很细节,用起来还是很舒服的。
记录下文档:

一、链接数据库

sqlite3 db文件

二、进入后有完备的帮助文件

.help 查看帮助文档

.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail ON|OFF           Stop after hitting an error.  Default OFF
.databases             List names and files of attached databases
.dump ?TABLE? ...      Dump the database in an SQL text format
                         If TABLE specified, only dump tables matching
                         LIKE pattern TABLE.
.echo ON|OFF           Turn command echo on or off
.exit                  Exit this program
.explain ?ON|OFF?      Turn output mode suitable for EXPLAIN on or off.
                         With no args, it turns EXPLAIN on.
.header(s) ON|OFF      Turn display of headers on or off
.help                  Show this message
.import FILE TABLE     Import data from FILE into TABLE
.indices ?TABLE?       Show names of all indices
                         If TABLE specified, only show indices for tables
                         matching LIKE pattern TABLE.
.load FILE ?ENTRY?     Load an extension library
.log FILE|off          Turn logging on or off.  FILE can be stderr/stdout
.mode MODE ?TABLE?     Set output mode where MODE is one of:
                         csv      Comma-separated values
                         column   Left-aligned columns.  (See .width)
                         html     HTML <table> code
                         insert   SQL insert statements for TABLE
                         line     One value per line
                         list     Values delimited by .separator string
                         tabs     Tab-separated values
                         tcl      TCL list elements
.nullvalue STRING      Use STRING in place of NULL values
.output FILENAME       Send output to FILENAME
.output stdout         Send output to the screen
.print STRING...       Print literal STRING
.prompt MAIN CONTINUE  Replace the standard prompts
.quit                  Exit this program
.read FILENAME         Execute SQL in FILENAME
.restore ?DB? FILE     Restore content of DB (default "main") from FILE
.schema ?TABLE?        Show the CREATE statements
                         If TABLE specified, only show tables matching
                         LIKE pattern TABLE.
.separator STRING      Change separator used by output mode and .import
.show                  Show the current values for various settings
.stats ON|OFF          Turn stats on or off
.tables ?TABLE?        List names of tables
                         If TABLE specified, only list tables matching
                         LIKE pattern TABLE.
.timeout MS            Try opening locked tables for MS milliseconds
.trace FILE|off        Output each SQL statement as it is run
.vfsname ?AUX?         Print the name of the VFS stack
.width NUM1 NUM2 ...   Set column widths for "column" mode
.timer ON|OFF          Turn the CPU timer measurement on or off
]]>
0 http://www.bravedu.com/archives/175/#comments http://www.bravedu.com/feed/archives/175/
siege 安装+压测工具使用说明 http://www.bravedu.com/archives/174/ http://www.bravedu.com/archives/174/ Wed, 31 Oct 2018 14:12:00 +0800 网络副手--寻路人 一、安装:

wget http://download.joedog.org/siege/siege-4.0.4.tar.gz
tar -xzvf siege-4.0.4.tar.gz 
cd siege-4.0.4/
./configure --prefix="/usr/local/siege-404"
make && make install

ln -s /usr/local/siege-404/bin/siege.config /usr/local/bin/siege.config
ln -s /usr/local/siege-404/bin/siege.config /usr/bin/siege.config

ln -s /usr/local/siege-404/bin/siege /usr/local/bin/siege
ln -s /usr/local/siege-404/bin/siege /usr/bin/siege

二、常用命令介绍

2.1 Siege命令常用参数

-c 200 指定并发数200
-r 5 指定测试的次数5
-f urls.txt 制定url的文件
-i internet系统,随机发送url
-b 请求无需等待 delay=0
-t 5 持续测试5分钟,  如果需要精确掉秒 -t 5S
# -r和-t一般不同时使用

例子:

200个并发对http://www.baidu.com发送请求100次

siege -c 200 -r 100 http://www.baidu.com

随机选取urls.txt中列出所有的网址,200迸发 执行100次

siege -c 200 -r 100 -f urls.txt

随机选取urls.txt中列出所有的网址

siege -c 200 -r 100 -f urls.txt -i

#delay=0,更准确的压力测试,而不是功能测试

siege -c 200 -r 100 -f urls.txt -i -b

指定http请求头 文档类型

siege -H "Content-Type:application/json" -c 200 -r 100 -f urls.txt -i -b

在urls.txt 中PSOT类型的请求

http://www.baidu.com/index POST p1=v1&p2=v2 
注释:
POST参数之间用&符连接,K=V形式
如果url中含有空格和中文,要先进行url编码,否则siege发送的请求url不准确

输出结果介绍:

HTTP/1.1 200     0.01 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.01 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.00 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.00 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.00 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.00 secs:      69 bytes ==> POST http://www.baidu.com/index
HTTP/1.1 200     0.00 secs:      69 bytes ==> POST http://www.baidu.com/index

Transactions:             25500 hits  (请求数)
Availability:             100.00 %    (成功次数百分比)
Elapsed time:             68.42 secs  (总共耗时多少秒)
Data transferred:                   1.68 MB   (总共数据传输)
Response time:              0.48 secs (响应耗时)
Transaction rate:         372.70 trans/sec    (平均每秒处理请求数)
Throughput:             0.02 MB/sec       (吞吐率)
Concurrency:              179.11      (最高并发)
Successful transactions:       25500          (成功的请求数)
Failed transactions:               0      (失败的请求数)
Longest transaction:           15.12
Shortest transaction:           0.00

三、使用参数介绍

$ siege --help
SIEGE 4.0.4
Usage: siege [options]
       siege [options] URL
       siege -g URL
Options:
  -V, --version             VERSION, prints the version number.
  -h, --help                HELP, prints this section.
  -C, --config              CONFIGURATION, show the current config.
  -v, --verbose             VERBOSE, prints notification to screen.
  -q, --quiet               QUIET turns verbose off and suppresses output.
  -g, --get                 GET, pull down HTTP headers and display the
                            transaction. Great for application debugging.
  -p, --print               PRINT, like GET only it prints the entire page.
  -c, --concurrent=NUM      CONCURRENT users, default is 10
  -r, --reps=NUM            REPS, number of times to run the test.
  -t, --time=NUMm           TIMED testing where "m" is modifier S, M, or H
                            ex: --time=1H, one hour test.
  -d, --delay=NUM           Time DELAY, random delay before each requst
  -b, --benchmark           BENCHMARK: no delays between requests.
  -i, --internet            INTERNET user simulation, hits URLs randomly.
  -f, --file=FILE           FILE, select a specific URLS FILE.
  -R, --rc=FILE             RC, specify an siegerc file
  -l, --log[=FILE]          LOG to FILE. If FILE is not specified, the
                            default is used: PREFIX/var/siege.log
  -m, --mark="text"         MARK, mark the log file with a string.
                            between .001 and NUM. (NOT COUNTED IN STATS)
  -H, --header="text"       Add a header to request (can be many)
  -A, --user-agent="text"   Sets User-Agent in request
  -T, --content-type="text" Sets Content-Type in request
      --no-parser           NO PARSER, turn off the HTML page parser
      --no-follow           NO FOLLOW, do not follow HTTP redirects
]]>
0 http://www.bravedu.com/archives/174/#comments http://www.bravedu.com/feed/archives/174/
通过代理实现实现前后端分离跨域问题 http://www.bravedu.com/archives/173/ http://www.bravedu.com/archives/173/ Wed, 24 Oct 2018 18:42:00 +0800 网络副手--寻路人 一、跨域的理解:

跨域是指A域名页面想获取b域名资源,如果a、b的协议、域名、端口、子域名不同,所进行的访问行动都是跨域的,而浏览器为了安全问题一般都限制了跨域访问,也就是不允许跨域请求资源。注意:跨域限制访问,其实是浏览器的限制。理解这一点很重要!!!

二、教研平台解决跨域方案原理

通过中转服务器把用户请求,前端数据转发到前端服务器、后端请求转发到后端服务器,让浏览器出发域名一致,即可。

为了更方便解释上面一句话含义,下面通过一张图,形象的阐述开发老师发布代码到分别的服务器,访问的时候是如何解决跨域的。

教研平台-运维-实现前后端分离-跨域解决方案.jpg

upstream jyxxx.xesv5.com {
 server 10.19.1.255:80;
}
upstream jyxxxadmin.xesv5.com {
 server 10.19.1.244:80;
}
server {
        listen 80;
        server_name jyworkflow.xesv5.com;
        location / {
                proxy_pass http://jyxxx.xesv5.com;
                proxy_redirect          off;
                proxy_set_header        Host $host;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size    500m;
                client_body_buffer_size 128k;
                proxy_ignore_client_abort on;
                proxy_connect_timeout   60;
                proxy_send_timeout      60;
                proxy_read_timeout      60;
                proxy_buffer_size       128k;
                proxy_buffers           32 32k;
                proxy_busy_buffers_size 128k;
                proxy_temp_file_write_size 128k;
                proxy_next_upstream error timeout http_500 http_502 http_504;
                add_header Xes-App $upstream_http_server;
        }
    location /manager {
                proxy_pass http://jyxxxadmin.xesv5.com;
                proxy_redirect          off;
                proxy_set_header        Host jyxxxadmin.xesv5.com;
                proxy_set_header        X-Real-IP $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                client_max_body_size    500m;
                client_body_buffer_size 128k;
                proxy_ignore_client_abort on;
                proxy_connect_timeout   60;
                proxy_send_timeout      60;
                proxy_read_timeout      60;
                proxy_buffer_size       128k;
                proxy_buffers           32 32k;
                proxy_busy_buffers_size 128k;
                proxy_temp_file_write_size 128k;
                proxy_next_upstream error timeout http_500 http_502 http_504;
                add_header Xes-App $upstream_http_server;
        }
 
        access_log  /usr/local/openresty/nginx/logs/jyxxx.xesv5.com_access.log  main;
}
]]>
0 http://www.bravedu.com/archives/173/#comments http://www.bravedu.com/feed/archives/173/
Mac Shell 编辑器打造 http://www.bravedu.com/archives/168/ http://www.bravedu.com/archives/168/ Sat, 08 Sep 2018 16:27:51 +0800 网络副手--寻路人 Mac下自带的命令行工具真是难用,下面打造一款高颜值的Shell 编辑工具
准备:
一、iTerm2
二、配色方案
三、oh My zsh

一、安装iTerm2
官网: https://www.iterm2.com/,下载安装
或者: brew search iterm2 会看到有安装包
通过 brew install iterm2 安装

]]>
1 http://www.bravedu.com/archives/168/#comments http://www.bravedu.com/feed/archives/168/
VUE项目从零到一的构建 http://www.bravedu.com/archives/165/ http://www.bravedu.com/archives/165/ Sat, 11 Aug 2018 16:44:00 +0800 网络副手--寻路人 这里讲解下如何构建一个VUE项目,让想了解如何搭建一个VUE项目的朋友,能够更清新是如何搭建的,本节只说如何搭建,并跑通,后面的博文中我会更输入的讲解,如何构建一个成熟的项目,从开发环境、到上线部署,心急吃不了热豆腐吗~~

以下介绍都是基于MacOS系统,Win系统请自行准备环境
Mac下常用的工具 brew 工具,安装步骤见 https://brew.sh/

一、准备篇:

1. Nodejs 安装 
    1.1 brew install npm // 如果npm 已经安装完毕,忽略此步骤
    1.2 安装完后,命令:npm -v ,查看版本号,你发现只有6.2 版本,但最新的是 6.3,具体两版本有何不同,看文档升级详情,不做详述
    1.3 npm 更新到最新版本 ,  命令: npm install npm@latest -g

NPMJS 官方文档: https://docs.npmjs.com/getting-started/updating-global-packages
Vue 脚手架介绍 https://cli.vuejs.org/zh/guide/

   我总结的一句话介绍Vue的脚手架:一个插件丰富的基于webpack工具来构建个人项目,并依附于cli-service运行,有可视化界面的vue管理工具,让你不需关注配置,只关注应用编写即可

wewrewrrre

2. 安装VUE 项目构建工具
npm install -g @vue/cli  ### vue 的命令行工具
npm install -g @vue/cli-service-global ### 为vue serve 开发提供全局扩展

二、项目构建篇:
1.通过VUE 脚手架创建一个 名为 brave-project 的项目

vue create brave-project 执行后,
让选择预处理器,这里选择babel
Please pick a preset: default (babel, eslint)

2.手动创建文件 vue.config.js
参考:https://cli.vuejs.org/zh/config/#%E7%9B%AE%E6%A0%87%E6%B5%8F%E8%A7%88%E5%99%A8

3.项目代码运行

执行命令: npm run serve

备注: serve 命令会启动一个开发服务器 (基于 webpack-dev-server) 并附带开箱即用的模块热重载 (Hot-Module-Replacement),进行实时进行修改热加载,除此外,你也可以使用 vue.config.js 里的 devServer 字段配置开发服务器 ,参考: https://cli.vuejs.org/zh/guide/cli-service.html#vue-cli-service-serve

4. 跑起来项目:
   简单配置了下 vue.config.js
    module.exports = {
        // 选项...
        outputDir : 'dist', //build 时生成的生产环境构建文件的目录
        //assetsDir : '', //放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
        indexPath : '/public/index.html',//指定生成的 index.html 的输出路径 (相对于 outputDir)。也可以是一个绝对路径
        //项目启动配置
        devServer: {
            host : 'localhost',
            port : 8083,
            //proxy: 'http://localhost:4000'
        }
    
    }

运行情况
111.png
项目目录
222.png

]]>
0 http://www.bravedu.com/archives/165/#comments http://www.bravedu.com/feed/archives/165/
VUE 自定义指令的一种应用场景 http://www.bravedu.com/archives/164/ http://www.bravedu.com/archives/164/ Fri, 10 Aug 2018 10:58:00 +0800 网络副手--寻路人 在写这篇技术文章的时候,我也在想如何能够写好,这篇文章,让看到的小伙伴有能够很好的收获,下面我就把解决问题的场景叙述下希望看到的小伙伴能有更好的印象加深。

首先解决此问题方案有几种:
方案一: 直接在代码中增加onkeyup 事件,但是有一点,苹果浏览器,手机端不支持

onkeyup="value=value.replace('/[^\d]/g','')"

方案二: 直接在代码里面通过VUE的input属性来定义方法,再方法中再进行上文信息修改,可以实现

<input @input="positiveIntegers($event)"/>
<script>
    methods:{
        positiveIntegers($event){
            $event.target.value = $event.target.value.replace('/[^\d]/g','');
        }
    }
</script>

一、应用场景
1.jpg

解决此奖品数量的需求,要求只能输入正整数,且编辑的时候还要对数据进行双向绑定。

<div class="layui-form-item set_asic">
                    <label class="layui-form-label">
                        <i>*</i>奖品数量
                    </label>
                    <div class="layui-input-block">
                        <input type="text" name="share-title" lay-verify="title" autocomplete="off" maxlength="30" placeholder="仅可填入正整数数字"  class="layui-input" :value="hsp_total_num" v-positive-integers="{key:'hsp_total_num',maxval:'1000',minval:'100'}">
                    </div>
  </div>

JAVASCRIPT 模块代码

<script>
export default {
        name: "home",
        typeAnswer: true,
        data:()=>{
            return{
                hsp_total_num: '',//奖品总数
             };
        },   
        methods: {
            //奖品--添加/编辑接口
            prizesAdded(){
                  alert(this.hsp_total_num); //打印双向绑定的数据
            }
        },
        mounted() {
        },
        directives: {
        positiveIntegers : {
            bind: function(el,binding,vnode) {
                el.handler = function() {
                    el.value = el.value.replace(/\D+/g, '')
                    //根据设置的规则,进行判断处理
                    if(binding.value.maxval && el.value > parseInt(binding.value.maxval)){
                        el.value = parseInt(binding.value.maxval);
                    }
                    //根据指令调取位置设置的规则Key,进行全局上文赋值
                    vnode['context'][binding.value.key] = el.value;
                }
                el.addEventListener('input', el.handler)
            },
        }
    }
        
     };
</script> 

上面HEML 模块的input 框中,做了以下几点:

  1. :value 来做默认数据绑定,再编辑的时候进行数据绑定
  2. v-positive-integers //此位置为自定义指令,在底部 directives,内部定义了 指令 positiveIntegers,因此再页面中可以用 v-positive-integers 或者 v-positiveIntegers 都是允许的,驼峰式名命会被采用 - 来解析,但是JS中指令名称,一定不能有 - 。
  3. 变相实现双向绑定。 在指令是有一些属性的,
    详情移步到,VUE官网,https://cn.vuejs.org/v2/guide/custom-directive.html
    这里主要看的就是虚拟节点,次节点的 context 可以指向上文属性,从而实现双向绑定。
    这里有一篇很不错的代码讲解: https://segmentfault.com/a/1190000008291645

以上为对此小功能点的剖析和多种解决方案的筛选,做此分享,希望小伙伴能拓展些思路。

]]>
0 http://www.bravedu.com/archives/164/#comments http://www.bravedu.com/feed/archives/164/
GIT 一些常用的技巧 http://www.bravedu.com/archives/162/ http://www.bravedu.com/archives/162/ Wed, 01 Aug 2018 20:21:00 +0800 网络副手--寻路人 一、Git 的基本⽤用法
Git 是分布式的代码管理⼯工具,远程的代码管理是基于 SSH的,所以要使⽤用远程的 Git 则需要 SSH 的配置。
设置 Git 的 username 和 email,⽤用来显⽰示提交的作者信息:
$ git config --global user.name “duchaoqun"
$ git config --global user.email “duchaoqun@xxx.com"
$ git config --list 查看配置列表

二、⽣生成SSH密钥过程
$ ssh-keygen -t rsa -C “duchaoqun@xxx.com”

三、基本命令
git init #⽤用来初始化项⽬目
git clone url #⽤用来下载代码到本地
git add file #把⽂文件从modify区放到workspace区 git add .
git commit -m “***” #提交到本地仓库
git pull origin master #获取远端的master分⽀支上的代码 git push origin master #提交到远端的master分⽀支
git stash/apply #暂存
git tag –a x.x.x #打标签

四、分支操作
git branch branchname #创建分⽀支
git checkout branchname #切换分⽀支
git checkout -b branchname #创建并切换分⽀支 git branch/branch –r #查看远程分⽀支
git branch -d branchname #删除本地分⽀支
git push origin branchname
git push origin –delete branchname #删除远程分⽀支

五、Git 修改管理
git checkout -- README.md #放弃修改
git reset HEAD README.md #回退暂存区 git checkout branchname #切换分⽀支
git rm filename #删除⽂文件
git merge branchname #合并分⽀支
git commit –m ‘’ –i #冲突解决

六、Git ⽇日志分析
git log #查看所有提交的分⽀支
-p 按补丁格式显⽰示每个更新之间的差异。 -num
--stat 显⽰示每次更新的⽂文件修改统计信息。
--shortstat 只显⽰示 --stat 中最后的⾏行数修改添加移除统计。
--name-only 仅在提交信息后显⽰示已修改的⽂文件清单。
--name-status 显⽰示新增、修改、删除的⽂文件清单。
--abbrev-commit 仅显⽰示 SHA-1 的前⼏几个字符,⽽而⾮非所有的 40 个字符。 --relative-date 使⽤用较短的相对时间显⽰示(⽐比如,“2 weeks ago”)。 --graph 显⽰示 ASCII 图形表⽰示的分⽀支合并历史。
--pretty 使⽤用其他格式显⽰示历史提交信息。可⽤用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
--author “提交⼈人”
--grep “” 搜索提交关键词
-n num 显⽰示近期提交的数量
-since, --after 仅显⽰示指定时间之后的提交。
--until, --before 仅显⽰示指定时间之前的提交。
--author 仅显⽰示指定作者相关的提交。
--committer 仅显⽰示指定提交者相关的提交。
来看⼀一个实际的例⼦子,如果要查看 Git 仓库中,2018 年 04 ⽉月期间,duchaoqun 提交的但未 合并的测试脚本(位于项⽬目的 t/ ⽬目录下的⽂文件),可以⽤用下⾯面的查询命令:
git log --pretty="%h - %s" --author=duchaoqun --since="2018-04-01" \ --before="2018-04-18" - -no-merges -- t/
git show commit #查看提交的⽇日志详情
git log --pretty=online ⽂文件名 #查看指定⽂文件提交的记录
git blame file_name #查看指定⽂文件、⽤用户修改记录、时间

两段常用配置:

    git config --global alias.lm  "log --no-merges --color --date=format:'%Y-%m-%d %H:%M:%S' 
--author='你的名字!自己修改!' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
    git config --global alias.lms  "log --no-merges --color --stat --date=format:'%Y-%m-%d %H:%M:%S' 
--author='你的名字!自己修改!' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
    git config --global alias.ls "log --no-merges --color --graph --date=format:'%Y-%m-%d %H:%M:%S' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' 
--abbrev-commit"
    
    
        git config --global alias.lss "log --no-merges --color --stat --graph 
    --date=format:'%Y-%m-%d %H:%M:%S' 
--pretty=format:'%Cred%h%Creset -%C(yellow)%d%Cblue %s %Cgreen(%cd) %C(bold blue)<%an>%Creset' --abbrev-commit"
]]>
0 http://www.bravedu.com/archives/162/#comments http://www.bravedu.com/feed/archives/162/
Laravel 框架项目开发实战 http://www.bravedu.com/archives/161/ http://www.bravedu.com/archives/161/ Mon, 25 Dec 2017 23:01:00 +0800 网络副手--寻路人 前言:
近期很多朋友都在问如何使用Laravel 框架开发项目,一直都感觉Laravel 很好,但是不知道如何入手Laravel. 也有很多的疑问。说实话Laravel 在很多专家的润色后,确实让人感觉很难入手。但是真正用起来后,你会发现Laravel确实是个很不错的框架。
这里我分享一套Laravel 框架项目实战,让所有人能轻松上手,信手拈来。跟上节奏,猥琐发育,别浪~~~。

本课程以实战为蓝本,目的不是为了学习框架而学习框架,会在这套课程体系学习中学习到大量的真正互联网大型项目开发的思想。
1、大型项目开发的不同维度的剖析、设计、技术方案选择、涉及的技术选择.
2、数据的合理化设计。 
3、应用环境的搭建
4、PHP 新特性穿插介绍
5、面向对象设计的思想
6、缓存应用
7、异步解耦技术应用
8、部署上线.
9、性能压测
10、异常、日志、监控等维度信息的收集和报警.

当然,这套框架大部分代码都是使用Laravel 框架实现的开发. 而且采用诙谐、幽默的语言风格让大家更好的熟悉什么叫浪~~,漫步到我不知道我知道的境界。有点牛逼了哈~,你知道我很嘚瑟。

项目背景:
设计、并开发一个日均PV在5000万的在线问答平台。类似于360问答、百度知道类似的项目。

本课程设置为六大章节,有分为N小节,我不喜欢把简单的事情复杂化,搞得章节越多显得越高大上,而我喜欢高内聚,高效率. 复杂的事情简单化。

项目课程设置:

一、项目需求分析、技术方案选择、数据库设计(原理、思路、实战)
    1.1 项目需求分析
    1.2 技术方案选择
    1.3 数据库表设计、引擎选择、拆裤、拆表原理

二、环境搭建
    2.1 技术方案中设计的环境搭建
    2.2 框架代码搭建
    2.3 如何让你的环境适合多人协作开发.
    2.4 如何制定合理的团队开发规范.

三、代码开发
    3.1 后台管理系统开发(实战)
        3.1.1 用户登录模块
        3.1.2 权限管理模块
        3.1.3 内容管理模块
        3.1.4 ......   

    3.2 页面展示前端开发(实战)

四、代码部署

五、性能压测

六、项目监控
]]>
0 http://www.bravedu.com/archives/161/#comments http://www.bravedu.com/feed/archives/161/