Web Analytics

Go defer的C实现

Go语言中引入了一个新的关键字defer,个人认为这个语法关键字让异常处理也变得得心应手许多,对改善代码的可读性和可维护性大有裨益,是典型的语法棒棒糖^_^。 像下面这种代码(伪代码): void foo() { apply resource1; retv = action1; if not success release resource1 apply resource2; retv = action2; if not success release resource1 release resource2 } 有了defer后,代码就变得优美多了。 void foo_with_defer() { apply resource1; defer (release_resource1) retv = action1; if not success return ...

February 3, 2013 · 6 min · Tony Bai

关于Python Package下的Module import方式

2012年有一个目标我没有达成,那就是深入学习和使用Python语言。这个目标被其他学习任务和工作无情的抢占了,当然最主要的原因还是我重视不够^_^。 近期恰逢有一些Python工程的开发工作要做,就顺便略微深入地学习了一下Python:看了几本Python的英文大部头,比如《Learning Python 4th Edition》、《Python Essential Reference 4th Edition》、《Programming Python 4th Edition》、《Expert Python Programming》以及《The Python standard library by example》,看得我有些要吐了^_^。虽然之前用Python开发过buildc,但自我感觉依旧还是一个Python的绝对beginner,这 次通过这几本书的学习算是对Python有了个较为系统的了解了。 ...

January 24, 2013 · 5 min · Tony Bai

buildc 0.2.2版本发布

随着buildc在项目中的深入使用,开发和测试人员都提出了不少良好意见,让我们有些应接不暇了,这次的版本更新也是为了满足这些意见和建议。 由于忙于应对这些眼前的需求,原本0.3.0的改进计划也被推迟了一些。 buildc 0.2.2版本包含了两个主要修正。 * 增加了–ignore-error命令行选项 ...

January 15, 2013 · 3 min · Tony Bai

buildc 0.2.1版本发布

buildc 0.2.1版本是一个bugfix版本,修正了两个重要问题。 * 修正执行buildc pack –cmode=32-bit时无法创建32位安装包的问题 之前的buildc pack命令在打包安装程序时忽略了–cmode这个选项,这样即便传入32-bit这个参数,打出的安装包中的应用程序依旧是64位编译的。这次修正了这个问题,让buildc真正支持打32位程序的安装包。 ...

December 6, 2012 · 3 min · Tony Bai

将Unity换成Gnome3

Ubuntu 12.04已经体验一天多了,Unity还是用的不大习惯,左侧的程序启动栏感觉还是别扭,以前用windows的时候就不喜欢将任务栏放在左侧或右侧; 应用窗口的菜单栏融合到桌面顶端也没给我太多惊喜;总而言之,给自己找几个换回Gome的理由还是很容易的^_^。况且Gnome也发生了巨变, 由传统的Gnome2更新到了全新的Gnome3,正好我也想体验一下Gnome3,于是继续折腾。 ...

December 6, 2012 · 3 min · Tony Bai

升级到Ubuntu 12.04LTS

Ubuntu 10.04 LTS已经伴随我两年了,经过我这么长时间的折腾,Ubuntu早已不堪重负^_^。在未升级前,Ubuntu 10.04已经表现出诸多问题: - 在家中连接无线路由器时间漫长,且经常掉线; - 在公司用有线网络经常掉线; - 由于反复安装软件,系统中残留较多垃圾数据; - Ubuntu 10.04官方源中的软件版本都有些低,很多软件手工安装高版本比较费力; ...

December 4, 2012 · 5 min · Tony Bai

使用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

也谈Go语言代码包分发

Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库,而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的公共代码库包只能以源码的形式分发了。 Go提供了get命令用于获取他人分发的代码包。我们通过get命令既可以获取一些知名代码托管站点上的代码,也可以获取组织内部版本控制服务器上的公共代码。 ...

October 25, 2012 · 3 min · Tony Bai

也谈Go语言声明语法

一直在从事C语言服务端应用开发,对C的变量声明语法早已烂熟于胸,同时也深知复杂的C变量声明十分晦涩难解。记得若干年前还特意花了一些时间研究理解复 杂C变量声明的方法,记忆中这些方法包括:《C专家编程》中提到的“优先级”规则、right-left规则以及顺时针/螺旋形规则等,幸运地是我们日常 开发中少有使用极为复杂的变量声明(如void (*signal (int signo, void (*func) (int)))(int);),但C语言中这一难点却是事实存在的。 ...

October 11, 2012 · 3 min · Tony Bai