把所有东西都放入版本控制系统
本文翻译自Dr. Dobb’s杂志主编Andrew Binstock的"Putting Absolutely Everything in Version Control“一文。 持续交付(Continuous Delivery)的一个关键原则就是将所有东西都放入版本控制系统中。这解决了一些重大问题,但也引入了一些其他问题。 ...
本文翻译自Dr. Dobb’s杂志主编Andrew Binstock的"Putting Absolutely Everything in Version Control“一文。 持续交付(Continuous Delivery)的一个关键原则就是将所有东西都放入版本控制系统中。这解决了一些重大问题,但也引入了一些其他问题。 ...
今天一早发现Ubuntu 12.04坏掉了,于是用了大半天对其做了修复,修复过程十分坎坷,但结果还不错,遂记之以备忘。 * 毁掉Ubuntu Ubuntu坏掉完全是由于我的错误决策。昨天一天Ubuntu桌面右上方的状态拦一直有一个红色的错误提示符,提示系统包冲突,建议执行sudo apt-get install -f解决。apt-get也提示索引冲突,无法卸载和安装任何包。于是执行了sudo apt-get install -f,虽然我不知道这个命令对系统做了哪些更改。但结果是那个错误提示符的确不见了。 ...
今天一位网上的朋友在使用reviewboard时遇到了问题,我们在评论中探讨了一下。他的问题目前已经定位,大致是这样的:他在Windows上用svn diff生成的patch文件在提交给reviewboard时出错,但在linux上生成的patch文件是没有问题的。后来他发现这两个patch文件内容稍有区别:Windows上的patch文件中的diff结果包含中文,比如“版本 10”;而在linux下生成的那份patch文件中,“版本 10"变成了"revision 10”。reviewboard拒绝了带中文的那份patch,估计是reviewboard的字符编码设置让其无法识别windows下的那个字符集。 ...
Ubuntu 10.04 LTS已经伴随我两年了,经过我这么长时间的折腾,Ubuntu早已不堪重负^_^。在未升级前,Ubuntu 10.04已经表现出诸多问题: - 在家中连接无线路由器时间漫长,且经常掉线; - 在公司用有线网络经常掉线; - 由于反复安装软件,系统中残留较多垃圾数据; - Ubuntu 10.04官方源中的软件版本都有些低,很多软件手工安装高版本比较费力; ...
气氛太平静,投石起波澜。 昨天下午无意中在内部发起了一场关于"何时发布版本"的论战。 论战的背景是这样的:部门内部有这样的一个项目A,它的目标是开发出可被其他项目或产品复用的组件(这里就暂称之为组件吧,我们内部称这类组件为可复用资产)。这个项目已经开发了大半年了,目前处于收尾阶段,绝大部分开发工作已经完成。测试(包括压力测试等)已经测试过至少一轮了;我们的产品线近期准备复用项目A成产出的这些组件,我们希望得到这些组件的某个发布版本。 ...
昨天在编译项目代码时遇到了这样一个错误: xx_base.h:72:2: 错误:#error “One of _BIG_ENDIAN or _LITTLE_ENDIAN must be defined.” 这是预编译器的错误输出。原因很明显:预编译器在处理xx_base.h时没有发现_BIG_ENDIAN或_LITTLE_ENDIAN的定义,#error预处理宏输出了如上错误。下面是出现错误位置的源码片断: ...
有了BuildBot搭建的持续集成环境还远未结束,具体的构建脚本还得自己来写。我们用的是Make工具,对应要编写的脚本就是Makefile。 Make是日常代码构建常用的工具,尤其是绝大多数C和C++项目都会将Make作为首选构建工具。平时多数情况大家都是直接敲入make命令便开始了构建过程,很少有人为make传入什么参数的(调试Makefile的情况除外)。但是有些时候自定义的Make命令行变量还是很有用处的,特别是在将Make与持续集成环境集成的时候。 ...
今天是Ubuntu 11.04版本(Natty Narwhal)发布的正日子!想必全世界的Ubuntu Fans们都会或多或少的兴奋上一阵儿。我接触Ubuntu这个Linux发行版较早,甚至可以追溯到Ubuntu 5.10。不过真正将Ubuntu作为我日常工作学习的第一操作系统还是在去年Ubuntu 10.04LTS版本发布之后。从那时起到现在整整有近一年时间了。这里我也来说说这一年来使用Ubuntu的感受。 ...
昨天晚饭后,打开本子继续工作,却发现无法连上无线路由器。最初以为路由器忘记打开了,可拿起路由器看了下,不是那么回事儿,路由器工作一切正常。我这才看到发现本子的无线网卡的指示灯不亮了,以前在这台x60本子上还从未出现此类情况,于是开始查找故障原因。 故障查找过程是痛苦的,一次次燃起希望,又一次次被冷水破灭: * 最初怀疑是我误点击了Fn + F5而把无线网卡关了,于是我又无数次的点击Fn + F5,居然一点反应都没有; * 我的T400上有无线网卡的硬件开关,我将x60翻转了几周,也没找到无线开关位置; * Ubuntu上Network Manager面板中,无线网络显示已停用,且菜单项为灰色,无法选择,无法启用; * N次重启机器,无果; * 切换到Win7下,Win7设备管理器显示无线网卡设备正常,驱动正常;反复停用、启用无线,都无法使指示灯亮起; * 重启机器,F1进入BIOS,查看网络设备也是Enabled,遂将BIOS恢复成默认出厂设置; * 再尝试进入Win7,蓝屏,提示修复,修复若干次依旧无法进入Win7,无线指示灯依旧处于熄灭状态; * 继续回到Ubuntu下折腾,卸载Network Manager,更换网络管理软件,用T400下载WCID,并用U盘COPY到x60里安装(家里没有备网线),WCID也没比自带的Network Manager好哪里去,依旧无法找到无线网卡; * 恢复Network Manager; * 用系统->系统管理->系统日志查看器查看系统日志,看到如下错误日志: dhclient: receive_packet failed on wlan0: Network is down wpa_supplicant[824]: Failed to initiate AP scan. NetworkManager: WiFi now disabled by radio killswitch NetworkManager: (wlan0): device state change: 8 -> 2 (reason 0) NetworkManager: (wlan0): deactivating device (reason: 0). NetworkManager: (wlan0): canceled DHCP transaction, dhcp client pid 2816 * 根据网上资料,按如下操作: – sudo -i – echo 1 > /sys/class/rfkill/rfkill0/state – 重启机器 问题依旧。 ...
除了autoconf和automake,GNU的autotools工具包中还有一种工具,它就是libtool。顾名思义,libtool是一个关于库文件制作、安装和使用的工具,它屏蔽了各个平台在库制作、安装和使用方面的差异,为上层提供了统一的接口。你可以直接使用libtool创建静态或共享库,也可以将libtool与autoconf、automake结合在一起使用。第二种方式显然更具实际意义,也更为简单。 在一个使用autoconf和automake构建的编译环境中添加libtool的支持,只需改动几处即可: 首先,你需要在configure.in(或configure.ac)中添加AC_PROG_LIBTOOL宏(注意:去掉AC_PROC_RANLIB宏)。 其次,修改Makefile.am: 如果是建立库文件,则需将lib_LIBRARIES改为lib_LTLIBRARIES,同时将库的后缀名由.a改为.la,这将告诉automake采用libtool来创建相关库: lib_LIBRARIES = libfoo.a => lib_LTLIBRARIES = libfoo.la libfoo_a_SOURCES = libfoo.c => libfoo_la_sources = libfoo.c ...