这些天,对我之前的中间件项目越发嫌弃了起来,想重新写过可是又一直被安排做其他的事情,只能是吸取经验等以后有机会再写写别的了。今天,就想着看看别人的项目框架来找找感觉,瞄了两眼脸书的Proxygen,谈谈自己的看法。

1 用到了Travis、Dockerfile、Doxygen分别用来帮助持续构建项目,实现容器部署和生产文档。看起来也觉得正规,大公司的技术就是能跟得上时代潮流。

2 毕竟是Facebook的项目,Proxygen自然的牵扯到了自家的基础库(比如folly),还有一大堆依赖,这点稍微不爽。

3 优秀的代码风格。

最后,来看看构建项目的shell脚本。

# Parse args
JOBS=8
USAGE="./deps.sh [-j num_jobs]"
while [ "$1" != "" ]; do
  case $1 in
    -j | --jobs ) shift
                  JOBS=$1
                  ;;
    * )           echo $USAGE
                  exit 1
esac
shift
done

表示电脑太渣,跑不了这么多任务。

set -e
start_dir=`pwd`
trap "cd $start_dir" EXIT

set -e告诉bash如果任何语句的执行结果不是true则应该退出,好处是防止错误像滚雪球般变大导致一个致命的错误,这些错误本应该在之前就被处理掉。脚本退出时,也总是返回到初始路径。

# Must execute from the directory containing this script
cd "$(dirname "$0")"

如果不是在当前路径下执行脚本,首先进入脚本所在目录。

# Some extra dependencies for Ubuntu 13.10 and 14.04
sudo apt-get install -yq \
	cmake \
	g++ \
	flex \
	bison \
	...

安装依赖库,-y表示不交互(non-interactively),-q是Quit的意思。

if  ! sudo apt-get install -y libdouble-conversion-dev;
then
	if [ ! -e double-conversion ]; then
		echo "Fetching double-conversion from git (apt-get failed)"
		git clone https://github.com/floitsch/double-conversion.git double-conversion
		cd double-conversion
		cmake . -DBUILD_SHARED_LIBS=ON
		sudo make install
		cd ..
	fi
fi

apt-get install不成功,我们还可以去github上克隆源码编译安装。


大致就这些,代码倒是没细看,买椟还珠了。

魔都的雾霾太严重,这些天都是重度污染,hold不住。