Web Analytics

使用squid搭建http代理

近期在做一些基础设施搭建的过程中,又遭遇到了公司http代理的问题。主要是很多主机上的工具只支持不带身份鉴权信息的http_proxy设置,如只 支持诸如:export http_proxy=‘http://10.10.1.1:8090’,而不支持export http_proxy=‘http://tonybai:passwd@10.10.1.1:8090’这种形式的配置。 ...

November 21, 2012 · 5 min · Tony Bai

buildc 0.2.0版本发布

buildc的演进先后经历了构建管理和安装包工程管理两个阶段。其中buildc的构建管理功能在项目中应用较早,目前相对稳定可靠。但其支持的安装包工程是直到最近才被大家所正式使用的。不出意料,大家在使用过程发现了一些问题,于是我们也是边用边改。 目前一个setup工程一般具有类似如下源码组织结构: distributions/ setup.cfg src/ – README – app/ – conf/ – deps/ – layout.cfg – others/ – scripts/ – setup.py 按照最初的设计,deps目录下会存放一些目标程序运行时依赖的库、工具等。但就一些细节并未考虑清楚,比如如果一个程序需要在两个平台(linux和solaris)上运行,那deps下的依赖库应该如何存放? ...

November 6, 2012 · 2 min · Tony Bai

辩证地看待“重新发明轮子”

C程序员骨子里都有一种“重新发明轮子(Reinventing the Wheel)”的特质。在面向对象、组件化流行以及崇尚复用的今天,这种特质似乎总是被认为是反面教材。但伟大的毛主席教导我们:要辩证地看待一切事物, 凡事无绝对。事物都是有两面性的,有好就有坏,有坏就有好。拿“重新发明轮子”这事而言,我们除了看到其弊端外,还要充分领会到其好的一面,不能一棒子打 死,这样才能在特定的场景下作出正确合理地判断。 ...

November 2, 2012 · 2 min · Tony Bai

buildc 0.1.9版本发布

随着buildc使用的深入,越来越多的新需求暴露了出来。为了满足这些需求,我们组的小兄弟又对buildc进行了一些改造,这些变化如下: 1、支持将多个子工程打包到一个安装包中 最初buildc的设计思想是为每个子工程单独制作安装包,这样具有很强的灵活性。但在对现有N个工程进行构建脚本改造的过程中发现,有些工程间存在严重 依赖,比如工程A是一个业务级公共库工程,工程B和工程C都依赖工程A构建后生成的静态共享库。而工程A又无法被当成第三方库处理,这给我们的安装包构建 制造了难题。我们的解决方法就是改造安装包工程的setup.cfg文件,让其支持多source。从正规语义上来讲,我们这么做将使得buildc支持 将多个子工程打包到一个安装包中,而间接的作用则是解决了上述有依赖关系的工程安装包制作的问题,虽然看起来不那么美。 ...

July 19, 2012 · 3 min · Tony Bai

buildc 0.1.8版本发布

buildc这个小工具逐渐在项目组内部扩大了使用范围,还有一名专门的同事负责为每个项目制作安装包工程,这样也可以在使用中发现buildc的问题。 本次buildc 0.1.8的相关修正以及新增的feature就是我的这位年轻同事一手操刀完成的,他也是一个python新手,同样也是边翻手册边进行编码的。这次改动主要集中在templates目录下的几个文件,这里的文件多为因工程的不同而异的。 ...

July 2, 2012 · 2 min · Tony Bai

使用ssh通过http代理访问bitbucket

在很多公司内部,要想访问外部互联网都需要设置代理,我所在公司也是这样,有些时候这种限制真的可以让人骂娘。不过经过几年与代理的"斗争"后,大部分需 要访问外部网络的软件(比如subversion、apt-get、git、wgetc、filezilla等)经过设置后还都可以正常工作。不过前些日 子在折腾bitbucket上的源码库时又遇到了代理问题:无论通过https方式还是ssh方式都无法clone bitbucket上的git库。 ...

May 9, 2012 · 3 min · Tony Bai

buildc 0.1.7版本发布

最近针对buildc又有了一些新想法,于是今天上午又对buildc进行了多处修改,并相继发布了0.1.6版本和0.1.7版本。 * 对buildc cache upgrade的实现进行了修改。 在执行全量更新本地cache前,先对本地cache的情况进行一些检查,并判断是否与当前.buildc.rc中的配置相符。如果两者是一致的,那么只进行update操作;否则则执行真正的upgrade(remove and re-init)。 ...

April 19, 2012 · 3 min · Tony Bai

buildc 0.1.5版本发布

这两天对buildc的改动比较频繁,今天又修正了一些问题,也增加了一些小功能。主要包括这么几点: 1、在Make.rules.in中增加了STATIC_LIBS和DYNAMIC_LIBS 项目源代码和项目中单元测试代码使用同一个Make.rules,也此编译时也就共享同一个LIBS变量。对于静态共享库还好说,但对于动态共享库,诸如Oracle的instantclient库,单元测试代码中即使没有使用到动态共享库中的接口,也要对该动态共享库产生一个依赖。这样在执行单元测试用例时就会因无法寻得动态共享库而导致用例执行失败。 为此,我在Make.rules.in中增加了STATIC_LIBS和DYNAMIC_LIBS两个变量,即将原LIBS变量中的静态共享库和动态共享库分开,分别放入STATIC_LIBS和DYNAMIC_LIBS中。然后让项目中单元测试代码的编译只依赖STATIC_LIBS,上述问题就得到了解决(如果你的单元测试真实需要链接动态共享库,那就另当别论了)。 ...

April 13, 2012 · 3 min · Tony Bai

buildc 0.1.4版本发布

年后buildc开始逐渐在产品线的项目里应用了,随之而来的是大家反馈的各种意见和bug。尤其是bug,我都会很认真地应对,也会及时发布相应的版本修复这些bug。buildc 0.1.4版本就是一个bugfix版本,其修复的bug源于今天上午的一次持续集成的失败。 上午收到Jenkins发送的一个"build failed"的mail,一个安装包项目的CI job执行失败了,于是到Jenkins web页面上检查错误原因。这个Job会在两个slave node上执行集成,一个在x86 linux上,一个在x86 solaris上。这次失败是因为x86 linux上的一个配置问题导致的,页面显示x86 solaris那个节点的集成是成功的。我无意间查看了x86 solaris节点集成过程的命令行输出,发现如下内容: ...

April 12, 2012 · 3 min · Tony Bai

为buildc添加安装包制作相关功能

在"也谈C应用安装包制作与部署“一文中,我提到了为每一个源码工程建立单独的安装包制作工程(setup project)的想法,这两天我就一直在折腾这件事儿^_^。 最初我并没有想去搞一个通用的安装包制作工具,只是为一个现有的源码工程建立了一个试验性质的安装包工程,并实现了其构建脚本(build.py)。但之后考虑到各个项目都要建立一个对应的安装包工程,安装包工程的构建脚本build.py势必会沦落成被copy来copy去的下场,这显然不是一个很好的解决问题的办法。那是否需要再单独设计和实现一个安装包制作工具呢?工具多了,大家用起来肯定会很烦,不能自找没趣^_^。要知道为程序员编写工具可是一件很困难、很头疼,需要你很谨慎的事情。现在我们已经有了源码工程构建工具buildc,我前几天还为buildc添加了安装脚本,并用之改造了一个真实的工程,并给大家做了讲解,可以说大家对buildc算是接受了。 ...

February 10, 2012 · 4 min · Tony Bai