标签 github 下的文章

也谈Go语言代码包分发

Go语言目前(截至1.0.2版本)尚不支持直接链接.a文件(这里的.a文件指的不是传统静态共享库,而是对golang的非main包build后的产物)。这样一来Go的第三方库包或组织内部的公共代码库包只能以源码的形式分发了。

Go提供了get命令用于获取他人分发的代码包。我们通过get命令既可以获取一些知名代码托管站点上的代码,也可以获取组织内部版本控制服务器上的公共代码。

Go get支持的托管站点包括github、google code、BitBucket以及Launchpad,针对这类情况,我们可以得到“特殊”语法的照顾:

go get github.com/bmizerany/assert
go get bitbucket.org/bmizerany/assert
go get code.google.com/p/assert
go get launchpad.net/assert

由于Go已经“内置”了github、google code等的版本控制工具类型,因此我们无需再做任何额外指定,只需用代码的url(去掉http://)即可。

执行get后,代码会被下载到GOPATH环境变量配置中的第一个路径下的src目录下面。例如:我们的GOPATH=/home/tonybai /goworkspace1:/home/tonybai/goworkspace2,执行go get github.com/bmizerany/assert后,我们将在/home/tonybai/goworkspace1下看到github.com 目录,而assert包在本地的完整路径就是/home/tonybai/goworkspace1/github.com/bmizerany /assert。这样我们在代码中直接import "github.com/bmizerany/assert"即可使用assert这个第三方包了。

在组织内部我们也会有自己的私有公共代码库,一份代码库可能被多个项目所使用。在每个项目中都保存一份公共库代码显然是不利于后续版本升级维护的,这样就需要各个项目统一从同一个地方获取或更新公共库代码。这种情况我们同样可以用go get命令来做。

假设内部使用subversion作为版本控制工具,公共库架设在10.10.12.13/svn0/share/golib。这时我们不能简单地的通 过"go get 10.10.12.13/svn0/share/golib"来获取到代码,我们需要告诉get我们采用哪种版本控制工具,而这种信息的传递是通过在库名称后面加上后缀的方式进行的。比如:

go get "10.10.12.13/svn0/share/golib.svn"

这样在/home/tonybai/goworkspace1下就会出现10.10.12.13/svn0/share/golib.svn目录结构。我 们在代码中可以直接import对应的包,比如import "10.10.12.13/svn0/share/golib.svn/assert"。

通过对get命令特性的了解,我们也可以确定分发的代码包到底应该如何组织。从上面的例子我们可以看出我们分发的代码包结构不需很复杂,直接在库的 repository下建立包目录即可,比如上面例子中库repository为golib,assert就是直接建立在下面的目录,同时也是包名。

go get可自动识别http_proxy环境变量,这样Go也可以通过代理获取外部代码包。

使用外部代码包的项目可以通过go get -u url来更新代码包版本为最新版本。

勇于面对

刚刚过去的这一周搞得我十分疲惫,起因是岳母生病了。

果果自出生以来一直是岳母照顾,这个五一岳母将果果带回老家待了一周,也许是太过操劳导致旧病复发(腰椎肩盘轻微突出),无法坚持照顾果果了。可这段时间 又恰逢我和我LP都很忙碌,但无奈身边没有亲戚,只能我请假待果果(LP那里集团领导检查,实在无法脱身),还要照顾生病的岳母。本以为病两三天就能好 转,但观察两天后仍不见好转,于是我只能将母亲大人请来照顾果果,好抽身上班。万没想到,我母亲刚来一天多,居然也生病了,估计是上火所致(母亲大人十分 易上火,尤其是出远门)。于是乎又将母亲送回家里,这一顿折腾啊,转眼间5天过去了,终于盼到了周末,老婆也休息了,疲惫的我也可以缓缓了。

躺在沙发上,闭目反思:像我和LP这样大学毕业后留在大城市的人有很多,父母亲属均不在身边,总会遇到各种困难,有些时候特别难,怎么办?只能勇于面对,依靠自己,不要抱怨,也不要退缩。

这段时间一直没有更新博客,都长草了,今天顺便借这里嘀咕嘀咕这段时间发生的一些事情。

1、《七周七语言》正式出版

大上周收到了《七周七语言》的样书(3本),甚是欣喜,不过样书没够分;又厚脸皮向出版社要了三本,还好出版社比较厚道,上周又寄来了三本,瞬间分光。 LP看到我翻译的样书,以一种甚为崇拜的眼光注视着我,让我很是不适应,心里想:这真的不算什么;下一个目标:自己写一本书^_^,还不知猴年马月可以实 现呢。

2、榜样

不知道是因为看了我的博客,还是无意中看到了网上的《七周七语言》译者中有了我的名字,几位同事都私下里向我表达了羡慕之意,更有同事借此机会表达了一直 以来都视我为榜样的心声。但我的确配不上“榜样”这个词,我觉得本人只是一个有目标、常实践、善于挤时间、有忍耐、爱思考、爱总结、养成了一些还不错的习 惯的普通人罢了,这些很多人都能做到,很多人也都是这样做的,比我做的好的多了去了。另外一个不得不承认的事实是:随着年龄的增长,家庭、工作压力都增加 好多,精力有限,要想保持原先的状态,甚至优于以前的状态,真得挺难的。

3、Web开发

以前一直在系统底层探索,对上层有些不屑。但最近了解和学习了一些Web开发方面的知识,感觉还不错。接触Web开发,这缘于之前有一些想法,想通过自己 并不熟悉的Web方式实现。至少目前对htmlcss的原理有了初步认识;开发采用了传统的LAMP;另外对于我这样的 beginner,Twitter开源的bootstrap是搭建Web UI的极好起点,上周已经完成了一稿UI Demo,自己感觉还不错;以前一直是做开源,用Google Code管理repository;这次是Private project,Github对Private repository是收费的,于是我用的是bitbucket,感觉也不错,也算是正式用上了git这个工具了。

4、PR值升1

上周发现我的这个博客的Google PR值由0升为1了,可能意味着更多朋友可以search到我的这个站点中的文章了。

5、 同学小聚

昨天一位高中同学结婚,我抽空也参加了婚礼。饭桌上和几位高中同学(还有远道从帝都赶来的)小聚了一下。有几点感悟:
  * 即使是同城,也是聚少离多。大家都处于事业和家庭双重高压力区间,时间精力十分有限啊;
  * 同学感情非同一般。以前在念书时,老师就说过同学的感情那不是同事和其他可比的,当时没有感觉。但工作后每次小聚都能深刻体会到这一点;
  * 我们这批80后大多都已结婚生子(饭桌上的一位同学刚当爸爸还不到5天,可喜可贺啊)。见面的话题已经逐渐向下一代的培养转移,甚至还谈到了生二胎,不知道是不是我们的心态已经变老了^_^。

如发现本站页面被黑,比如:挂载广告、挖矿等恶意代码,请朋友们及时联系我。十分感谢! Go语言第一课 Go语言精进之路1 Go语言精进之路2 Go语言编程指南
商务合作请联系bigwhite.cn AT aliyun.com

欢迎使用邮件订阅我的博客

输入邮箱订阅本站,只要有新文章发布,就会第一时间发送邮件通知你哦!

这里是 Tony Bai的个人Blog,欢迎访问、订阅和留言! 订阅Feed请点击上面图片

如果您觉得这里的文章对您有帮助,请扫描上方二维码进行捐赠 ,加油后的Tony Bai将会为您呈现更多精彩的文章,谢谢!

如果您希望通过微信捐赠,请用微信客户端扫描下方赞赏码:

如果您希望通过比特币或以太币捐赠,可以扫描下方二维码:

比特币:

以太币:

如果您喜欢通过微信浏览本站内容,可以扫描下方二维码,订阅本站官方微信订阅号“iamtonybai”;点击二维码,可直达本人官方微博主页^_^:
本站Powered by Digital Ocean VPS。
选择Digital Ocean VPS主机,即可获得10美元现金充值,可 免费使用两个月哟! 著名主机提供商Linode 10$优惠码:linode10,在 这里注册即可免费获 得。阿里云推荐码: 1WFZ0V立享9折!


View Tony Bai's profile on LinkedIn
DigitalOcean Referral Badge

文章

评论

  • 正在加载...

分类

标签

归档



View My Stats