存档

‘程序开发’ 分类的存档

【Shell】Argument list too long的问题

2017年6月12日 没有评论

使用getconf ARG_MAX命令可以查看系统命令行最大长度限制;这个参数是系统内核定义的常量

  • Windows下是32000
  • Max下是262144

显然Windows下短了很多,脚本兼容期间,但参数超长时就需要做判断或改变命令调用方式

分类: 程序开发 标签: 98次阅读

【Shell】特殊变量:$0, $#, $*, $@, $?, $$和命令行参数

2017年6月11日 没有评论
Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

特殊变量列表

变量	含义
$0		当前脚本的文件名
$n		传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#		传递给脚本或函数的参数个数。
$*		传递给脚本或函数的所有参数。
$@		传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?		上个命令的退出状态,或函数的返回值。一般情况下,大部分命令执行成功会返回 0,失败返回 1。
$$		当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。


$* 和 $@ 的区别
$* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出所有参数。
但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体,以"$1 $2 … $n"的形式输出所有参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。

下面的例子可以清楚的看到 $* 和 $@ 的区别:
#!/bin/bash
echo "\$*=" $*
echo "\"\$*\"=" "$*"
echo "\$@=" $@
echo "\"\$@\"=" "$@"
echo "print each param from \$*"
for var in $*
do
    echo "$var"
done
echo "print each param from \$@"
for var in $@
do
    echo "$var"
done
echo "print each param from \"\$*\""
for var in "$*"
do
    echo "$var"
done
echo "print each param from \"\$@\""
for var in "$@"
do
    echo "$var"
done

执行 ./test.sh "a" "b" "c" "d",看到下面的结果:
$*=  a b c d
"$*"= a b c d
$@=  a b c d
"$@"= a b c d
print each param from $*
a
b
c
d
print each param from $@
a
b
c
d
print each param from "$*"
a b c d
print each param from "$@"
a
b
c
d
说明:双引号包含时,"$*"的参数被当做一个整体,而"$@"还是遍历每一个参数

再举个带不带引号的例子

 #!/bin/bash

 str="a b c"
 for var in $str
 do
     echo "${var}"
 done

 for var in "$str"
 do
     echo "${var}"
 done
执行后看到的结果:
a
b
c
a b c

原文参考:Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

分类: 程序开发 标签: 96次阅读

【MySQL】索引优化说明

2017年6月1日 没有评论

总结几点

  1. where条件字段的顺序与索引是否命中无关,只要索引前几个字段都在where条件中即可命中
  2. order by字段顺序与索引条件有关,必须与索引字段顺序一致
  3. 如果有多个单字段索引命中,会变成合并索引,但效率还是会低于直接的复合索引
  4. 查看索引效果,可以用explain关键字加sql语句的方式查看

参考

  1. MySQL 优化之 index merge(索引合并)
  2. 要提高SQL查询效率where语句条件的先后次序应如何写
  3. sql查询调优之where条件排序字段以及limit使用索引的奥秘
分类: 程序开发 标签: 177次阅读

【Jenkins】推荐插件

2017年4月23日 没有评论

在完成了Github Pull Request提交时自动做PHPCS检查和修复的基本搭建之后,发现Jenkins是个神奇的世界。基本上常规能想到的都已经有插件或配置能解决了,十分好用。

  1. Build Failure Analyzer 分析构建错误日志并在构建页面显示错误
  2. Pre SCM BuildStep Plugin 在拉代码之前插入一些步骤
  3. SSH plugin 支持通过SSH执行脚本
  4. GitHub Pull Request Builder Github Pull Request时自动构建
  5. GitHub API Plugin Github API插件
  6. GitHub plugin Github与Jenkins集成
  7. GIT plugin Git与Jenkins集成
  8. GIT client plugin Git客户端插件
  9. thinbackup 配置备份插件

阅读全文...

分类: 程序开发 标签: 429次阅读

【Shell】Linux和Mac下脚本参数的解析

2017年4月23日 没有评论

写脚本增加参数解析是常见需求,但发现脚本在Linux上运行好好的,跑到Mac上就不正常了,调试后发现是getopt命令在Mac上定义不一致导致的。

差异是:

  • getopt命令在linux上遵循的是gnu-getopt;getopt --test命令响应为4,与mac上不同
  • mac上遵循的是mac的getopt

解决办法:

阅读全文...

分类: 程序开发 标签: 340次阅读

【PHPStorm】Windows下error: cannot spawn .git/hooks/pre-commit: no such file or directory报错的解决办法

2017年4月20日 没有评论

Windows的PHPStorm部署了pre-commit后,提交代码提示“cannot spawn .git/hooks/pre-commit: no such file or directory”,几经搜索无果,最终灵光一闪自己解决了。记录一下。

解决方案:

  1. 安装CygwinGit,并将Cygwin和Git安装目录里的bin目录添加到Windows的PATH系统变量里,这样bash和git就可以全局访问了
  2. 确认pre-commit第一行为 #!/bin/bash
  3. 执行cat pre-commit | tr -d '\r' > pre-commit,删除windows下自动添加的\r换行符

阅读全文...

分类: 程序开发 标签: 359次阅读

【Jenkins】忽略”Can one of the admins verify this patch?”的解决办法

2017年4月18日 没有评论

刚搭建完Jenkins系统做PR检查,上线后发现每个新团队成员的PR都会出现Can one of the admins verify this patch?感觉很骚扰,没有必要。官方的GitHub pull request builder插件说明,只说了通过加whitelist来处理,却没有说怎么彻底关掉这个提示。

经过大量的搜索,终于在JENKINS FOR PULL REQUESTS AND PROMOTED BUILDS DEPLOYING TO MULTIPLE ENVIRONMENTS这篇的提示下找到了答案

阅读全文...

分类: 程序开发 标签: 384次阅读

【Jenkins】集成PHPCS校验脚本

2017年4月16日 没有评论

脚本如下

#!/bin/bash

CMD_PATH=`dirname "$0"`
LOG_DIR=${CMD_PATH}/log/
if [ ! -d ${LOG_DIR} ];then
    mkdir -p ${LOG_DIR}
fi

LOG_FILE=${LOG_DIR}/$(date +%Y%m%d).log
${CMD_PATH}/phpcs-check | tee -a ${LOG_FILE}
STATUS=${PIPESTATUS[0]}
echo "Code check status: " ${STATUS}
exit ${STATUS}

阅读全文...

分类: 程序开发 标签: 405次阅读

【Jenkins】Github Pull Request提交时自动做PHPCS检查和修复

2017年4月16日 没有评论

代码规范的推进需要借助PHPCS来做自动化的校验和修复,而落地时需要结合Github Pull Request做提交时的自动检查。这里面就需要借助到了系统集成工具Jenkins,亲自做了一遍完整部署供大家参考。

Jenkins安装

  1. 安装java环境
  2. 下载Jenkins:执行 wget http://mirrors.jenkins-ci.org/war/latest/jenkins.war
  3. 运行Jenkins:执行java -jar jenkins.war,后台方式运行执行nohup java -jar jenkins.war &。启动后war包会解压到~/.jenkins目录并生成配置文件和目录
  4. 网页打开http://localhost:8080/进行后续配置,非本地访问可采用IP或域名

阅读全文...

分类: 程序开发, 酷软搜索 标签: 493次阅读

【PHP】代码质量检查工具PHPMD

2017年3月26日 没有评论

除了PHPCS外,再给大家推荐一个代码质量检查工具PHPMD。

项目官网:https://phpmd.org

用法

# phpmd 代码路径 报告格式 规则xml文件
phpmd /path/to/source text /phpmd_ruleset.xml
# phpmd 代码路径 报告格式 规则列表
phpmd /path/to/source text codesize,unusedcode,naming

阅读全文...

分类: 程序开发 标签: 457次阅读

无觅相关文章插件,快速提升流量