Monthly Archives: November 2012

bash脚本小记1

1. Bash中的数组
注意如果你头部使用了”#!/bin/sh”可能会不支持. 这个时候你需要改成”#!/bin/bash”
在bash中定义一个数组 myarray = (a b c)
里面每个元素之间用空格隔开.
计算当前数组的数量, ${#myarray[@]}
获取当前数组所以元素 ${myarray[@]}
或者其中某一个元素 ${myarray[index]} 例如第一个元素即${myarray[0]}

遍历数据

for el in "${myarray[@]}"; do echo "$el"; done 

1.1 数组转成字符串(相当于 join, concat这类js函数)

FOO=( a b c )
SAVE_IFS=$IFS
IFS=","
FOOJOIN="${FOO[*]}"
IFS=$SAVE_IFS
echo $FOOJOIN

2. Mysql
使用mysql命令行 将select的数据转成数据
只需要

MYSQL_BIN=`which mysql`
DUMPARGS="-u $DB_USER -p$DB_PASSWD --skip-triggers --compact --skip-extended-insert --no-create-info $DATABASE"
list=($($MYSQL_BIN $QUERY_ARGS 'SELECT aid FROM dede_addonarticle order by aid DESC LIMIT 0, 1000'))

echo ${#list[@]}
echo ${list[@]}

3 Mysqldump

mysqldump -u $DB_USER -p$DB_PASSWD --skip-triggers --compact --skip-extended-insert --no-create-info $DATABASE   table --where=""

在git中使用Python打补丁包


有时候, 我们写完一个项目需要对其进行打包. 打完成包非常简单, 我们可以使用git archive这个命令. 但是有时候我们需要对项目的一些特殊文件进行过滤. 这个时候, 可能会说这些文件可以放在.gitingore中. 我需要告诉的时, 在开发项目的时候, 有些文件也需要在git仓中, 以方便其他小组的人使用. 另一种情况, 我们需要打一个差异包出来, 如果没有任何特殊要求, 可以直接使用tar zxvf xxx-patch.tar.gz `git diff –name-only`进行打包. 但是你这个仓中含有很多个submodule时候, 使用这种方法, 会遇到一个很不幸的事, 不管这个子模块修改了一个, 还是多个文件, 他都会将这个子模块全部打包进去. 因此, 我们需要一个好的打包工具, 解决以上问题. 目前我是采用python + pygit2的方式. 同时你系统环境中要有git.

1. 获取git仓中tags列表

pygit2有一个已知的bug, 你给你的项目打tag, 如果打tag时候没有加上message. pygit2是无法读取到的.
读取git仓中的tag非常的简单. 代码如下

def get_tags(self):
 self.tags = [];
 print "=== Parsing package version";
 data = self.repo.listall_references();

 for item in data:
  ref = self.repo.lookup_reference(item);
  if (ref.type == pygit2.GIT_OBJ_COMMIT):
   oid = ref.oid;
   ref_obj = self.repo[oid];
   if isinstance(ref_obj, pygit2.Tag):
    self.tags.append(ref_obj);
   else:
    continue;
 self.tags.sort(lambda x,y: cmp(y.tagger.time, x.tagger.time));

获取tag之后, 我们可以使用tag下属性timer, 根据时间先后次序进行排序. 这样你想取最后一个tag作为目标进行打包 只要self.tags[0](倒序)就能直接获取到. 同样你需要获取两个版本的差异. 只要git diff tag[0]..tag[1]
Read more »

如何获取php中被禁用的函数

为了安全, php.ini中提供了disable_functions. 在给予用户使用的时候, 如果某个函数被禁止, 可能此功能会出现异常. 排查也会非常的麻烦. 可以在安装的时候, 将需要的一些关键函数(例如: fsockopen, set_time_limit)进行检测.

在PHP中没有提供get_disable_functions这类函数. 但是我们可以用过phpinfo函数查看到被禁用的函数. 这个时候我们只需要使用ini_get函数就可以获取到disable_functions

error_reporting(E_ALL);
$disabled_functions = ini_get('disable_functions');
if ($disabled_functions!='') {
  $arr = explode(',', $disabled_functions);
  sort($arr);
  print_r($arr);
}else {
  echo 'No functions disabled';
}