Go 语言在命令行以表格的形式输出结构体切片
刚写的小工具,可以在命令行以表格的形式输出结构体切片
* 表格每列自动对齐
* 支持自动适应列宽
* 结构体的字段支持所有数据类型(字符串,切片,映射等)
例如可以很方便清晰地将数据库查询结果列表(结构体切片)在命令行以表格的形式输出。
项目 Github 主页:
刚写的小工具,可以在命令行以表格的形式输出结构体切片
* 表格每列自动对齐
* 支持自动适应列宽
* 结构体的字段支持所有数据类型(字符串,切片,映射等)
例如可以很方便清晰地将数据库查询结果列表(结构体切片)在命令行以表格的形式输出。
项目 Github 主页:
乘着打盹的时间看了一眼前两天写的日期转换的开源工具: ts。发现管道 pipeline 的功能点可以放大一下, 就此记录一下以备将来只需。 管道是什么 但凡在类 Unix 系统上敲过命令的人,大多使用过管道功能. 所谓管道,就是将A程序的标准输出作为B程序的标准输入。而在类 Unix 系统只需要使用 | 符号,连接 A 和 B 程序即可, 即 A | B。通过多次管道连接,就可以实现非常强大的功能。所以在类 Unix 系统上开发命令行程序有个著名的原则: KISS,即 Keep It Simple Stupid。 画了张简单的图: Go 程序 在 Go 程序中实现管道功能及其简单,直接上码: //先取程序的标准输入属性信息 info, err := os.Stdin.Stat() if er...阅读全文
这篇原来是给公司里使用go开发的交流用的,主要是工具的安装,用markdown写的,发布了内部gitlab上,仓促发布到blog上面,也没改啥格式,现在整理一下,然后增加一点说明 基础开发工具 sublime text2下载 为何使用sublime text2?相信很多喜欢轻量级工具,开大量chrome网页以及使用大量小而精软件的开发者都喜欢editor吧,当然最主要是vim mode! 安装package control 打开后,按ctrl + ~打开命令行,或者在view->show console,复制如下代码,执行 import urllib2,os,hashlib; h = '7183a2d3e96f11eeadd761d777e62404' + 'e330c659d4bb41d3...阅读全文
Golang具有一套可以构建和处理go源代码的程序,作为命令行工具,这些程序也并非直接运行,而是由go程序调用。运行这些程序最常见的方式是作为go程序的子命令,例如 go fmt,该命令的运行方式是由go程序使用适合于包级处理的参数调用底层二进制文件,对go源代码的完整包进行操作;这些程序也可以作为独立的二进制文件运行,使用go tool子命令(如go tool cgo)使用未修改的参数;某些命令(如pprof)只能通过go tool子命令访问。go命令行作为日常开发的工具,能大大方便编译、调试、诊断程序性能等工作,本文是对常见go命令行工具使用的汇总 go命令 go命令管理go源代码并运行此处列出的其他命令。在终端输入go,会打印出如下信息 $ go Go is a tool for ma...阅读全文
昨日在ubuntu系统中,安装了golang的环境,今天在安装一个比较好用的编辑器来写代码,会提高很大的效率。 首先从官网下载goland https://www.jetbrains.com/go/... 解压安装 tar -zxvf xxx.tar.gzsudo mv xxx /opt/goland 建立别名,快速启动 - sudo vim ~/.bashrc 添加 alias goland='nohup sh /opt/goland/bin/goland.sh >/dev/null >/dev/null 2>&1 &' 保存 source ~/.bashrc 在命令行直接输入goland就可以启动啦~ 破解软件 http://idea.lanyus.com/ 1、打开这个网址,复制里边的...阅读全文
Go 命令 Go语言自带有一套完整的命令操作工具,你可以通过在命令行中执行go来查看它们: 图1.3 Go命令显示详细的信息 这些命令对于我们平时编写的代码非常有用,接下来就让我们了解一些常用的命令。 go build 这个命令主要用于测试编译。在包的编译过程中,若有必要,会同时编译与之相关联的包。 1.如果是普通包,就像我们在1.2节中编写的mymath包那样,当你执行go build之后,它不会产生任何文件。如果你需要在$GOPATH/pkg下生成相应的文件,那就得执行go install了。 2.如果是main包,当你执行go build之后,它就会在当前目录下生成一个可执行文件。如果你需要在$GOPATH/bin下生成相应的文件,需要执行go install,或者使用go build...阅读全文
在go 的程序中调用 c 代码, golang 提供了两种方法: cgo, swing 。gstreamer 是开源跨平台的多媒体框架库,主要是在gnome 基础核心库 glib 之上构建。下面有一个简单的使用cgo 包装 gstreamer playbin 插件的例子: gstuse.go package main /* #cgo pkg-config: gstreamer-1.0 #define _GNU_SOURCE #include
ydict 是一个基于命令行的有道词典工具,由于没有UI界面,无需点击鼠标,再输入单词,通过命令行就可以实现高效的单词和句子查询,非常适合热爱命令行的geek同学。ydict用到了goquery这个库,从有道词典扒数据,并展示。 主要支持的功能: * 中文翻译为英文 * 英文翻译为中文 * 查询不到单词时,自动显示推荐搜索提示 * 语音朗读功能,朗读你所查询的单词  项目已经开源,放在GitHub给有兴趣的同学参考: https://github.com/TimothyYe/ydict 安装...阅读全文
//有时候,我们希望 Go 能智能的处理 Unix 信号。例如,我们希望当服务器接收到一个 SIGTERM 信号时能够自动关机,或者一个命令行工具在接收到一个 SIGINT 信号时停止处理输入信息。这里讲的就就是在 Go 中如何通过通道来处理信号。 package main import "fmt" import "os" import "os/signal" import "syscall" func main() { //Go 通过向一个通道发送 os.Signal 值来进行信号通知。我们将创建一个通道来接收这些通知(同时还创建一个用于在程序可以结束时进行通知的通道)。 sigs := make(chan os.Signal, 1) done := make(chan bool, 1) ...阅读全文
这个题目的原文叫做《Gobs on the wire》,作者巧妙的用了“gob”这个词。gob本来是Golang的一个关于网络通信协议的包。而在这里,我感觉标题也可以翻译为《关于线上的那一大陀……》。好吧,我得承认,这么翻译实在不雅。 ————翻译分割线———— 飞翔的 gob 这周,我想跟大家谈谈如何用 Go 编写基于同步请求和异步事件通知的 Client/Server 系统。 为了帮助学习 Go,我克隆了一个Conserver 命令行服务。当然,现在对于世界来说没必要有另外一个命令行服务。然而由于Go语言带给开发者的特性,非常适合用来做命令行服务,所以这将会是一次非常有趣的体验。命令行服务的任务是从一个或者多个串口上汇总输出(或者说各种系统上的一个或者多个实现了使用TCP连接的Rteln...阅读全文
关于google app engine的安装使用 我下载了google app engine的zip压缩包,解压到c盘根目录,将“c:\go_appengine”添加到path里面,使用命令时出现问题。 1、在cmd命令行窗口可以使用goapp命令,但在gitbash下显示sh.exe:goapp:command not find。这是什么原因,到底要将哪个路径写进path里面。 2、我使用deploy命令上传时出现“could not find python interpreter: exec: "python": executable file not found in%PATH%”,大概意思是找不到Python编译器,这是什么原因,源文件到底放在哪个路径下面,我已经安装...阅读全文
Base64在不同语言对接时,其实是有些小坑的,之前有碰过。 首先Base64的是啥? 阮一峰有一篇写得很赞的文章说得很明白。 然后是怎么编码? 我用OpenSSL写了个Base64解编码实现: /* 用openssl来做Base64加解密. Author: xcl Date:2015-9-17 */ #include
 与大家所熟知的 MP3 一样, AAC 也是一种常见的音频格式。现如今常见的 AAC 规格有三种: LC-AAC (最基本的), HE-AAC ( AACPlus v1 ), HE-AAC v2 。 HE :“ High Efficiency ”(高效性)。 HE-AAC (又称 AACPlus v1 , SBR ),用容器的方法实现了 AAC ( LC )和 SBR(频段复制)技术。 SBR 把频谱切割开来,低频单独编码保存主要成分,高频单独放大编码保存音质,在减少文件大小的情况下还保存了音质。 HEv2...阅读全文
大家好,好久没有跟新博客了,今天给大家带来一篇Sublime Text 2的插件SublimeGDB的使用教程。 在很早之前,写过一篇关于Sublime Text 2配置Go语言开发环境的文章,如果您还没有看过,可以先看看这一篇文章,地址:http://golanger.cn/?p=32,还写过一篇关于Go使用GDB断点调试的文章,大家也可以看下,地址:http://golanger.cn/?p=91。 接下来我们看下SublimeGDB的安装以及使用: 一,安装SublimeGDB插件:打开Preferences菜单下,Package Control菜单,并选择 Install Package选项,如下图: 输入SublimeGDB,并选择安装,一段时间后,SublimeGDB就会安装成功...阅读全文
希望可以在空余时间完成nsq源码解读系列的文档。 本篇作为第一篇,简单介绍一下nsq. 参考 http://feilong.me/2013/05/nsq-realtime-message-processing-system 的介绍:NSQ是由知名短链接服务商bitly用Go语言开发的实时消息处理系统,具有高性能、高可靠、无视单点故障等优点,是一个非常不错的新兴的消息队列解决方案。 nsg易于配置和部署,所有参考都通过命令行指定,编译好的二进制文件,没有其它依赖项。而且支持多种消息格式。 源码下载地址: https://github.com/bitly/nsq 本系列文档下载的源码为0.2.27版本。 为更好的理解源码,最理想的起步当然是先了解nsq的用法。所以接下来会先讲解nsq的安装、使用...阅读全文
Go 1.5 Beta 3 发布,Go 1.5 主要改进如下: * 编译器和运行现在完全用 Go 写(带一点汇编)。C 不再参与实施,所以曾经是构建分布必不可缺的 C,如今已经不见了。 * 垃圾收集器现在是 [并发的](https://golang.org/s/go14gc) ,并且通过运行提供显著降低了的暂停时间,可能时候,能和其他的 goroutines 平行。 * 默认 Go 程序使用 GOMAXPROCS 变量来设置CPU核数,之前默认是1 * 对 [internal packages](http://golang.org/s/go14internal) 的支持延伸到所有仓库,不只是 Go 核心库 * go 命令提供体验支持 vendoring 外部依赖 * 全新的 ...阅读全文
发表失败全部丢失,写完了又重写一遍,csdn 都没个自动保存功能,强烈吐槽 go 里面有两个非常重要的环境变量 GOROOT 和 GOPATH,其中 GOROOT 是安装 go 的路径,而 GOPATH 是我们定义的自己的工作空间。 如果在安装的时候是一路 next 完的,那么默认就配置好了 ,无需手动配置。 如果在安装的时候修改了默认的安装路径,那么可能需要自己添加一下 。 首先在环境变量中添加 GOPATH,值为 go 的安装目录: 然后在环境变量 PATH 中添加 go 安装目录下的 bin 文件夹。 接着添加一个环境变量 GOPATH,值为你自己希望的工作目录。 最后重启一下 命令行工具,输入 go env 命令即可查看: Tips: 一定要记得重启下命令行工具,cmd 或者 cmd...阅读全文
本次是针对命令行来写的,如果使用goland工具则不存在此问题,其它IDE不清楚。 测试命令 go test -v 依赖文件 -test.run 方法名 备注:依赖文件指的是,你在测试用例文件需要引用到的其它文件,可空格分隔填写多个 -v,输出方法测试的开始与结束信息 如果依赖文件存在当前目录的比较多 go test -v ./ -test.run 方法...阅读全文
## 简介 Go 1.11 和 1.12 引入了[对 modules(模块)的初步支持](https://golang.org/doc/go1.11#modules),这是一个能让依赖项的版本信息更加明确和易于管理的依赖管理系统。本文旨在为你使用模块提供基本的操作指导。后续会有一篇文章来说明如何发布一个模块以供别人使用。 一个模块是一系列 [Go 代码包](https://golang.org/ref/spec#Packages) 的集合,它们保存在同一个文件树中。文件树的根目录中包含了一个 `go.mod` 文件。`go.mod` 文件定义了一个模块的 module path,这就是模块根目录的导入路径。`go.mod` 文件还定义了模块的 *dependency requirements...阅读全文
本人在日常golang项目开发中,用到了一些第三方开源库,大多都是优秀的开源项目,源码值得认真阅读研究。在此记录用到的一些库:1. 解析配置文件https://github.com/go-ini/ini,go-ini, go INI文件解析, 2. 命令行工具https://github.com/cheggaaa/pb, Terminal progress bar for Go, golang进度条3. golang web 开发https://github.com/gorilla, Gorilla web toolkit 一系列web开发套件,最常用的为http路由模块mux4. 存储相关https://github.com/klauspost/reedsolomon, RS纠删码 htt...阅读全文
下载地址:https://github.com/e421083458/gochat
本实例基于websocket和jQuery开发。
本实例特点如下:
1. 支持浏览器客户端和命令行客户端两种方式。
2. 支持私聊...阅读全文
Go 1.5.2 发布,更新内容请看:[1095 commits](https://github.com/golang/go/compare/go1.5.2...master) 。 下载页面:[go1.5.2](https://github.com/golang/go/tree/go1.5.2) Go 1.5 主要改进: * 编译器和运行现在完全用 Go 写(带一点汇编)。C 不再参与实施,所以曾经是构建分布必不可缺的 C,如今已经不见了。 * 垃圾收集器现在是 并发的 ,并且通过运行提供显著降低了的暂停时间,可能时候,能和其他的 goroutines 平行。 * 默认 Go 程序使用 GOMAXPROCS 变量来设置CPU核数,之前默认是1 * 对 intern...阅读全文
golang中同一个package中函数互相调用的问题 同一个packge中(test) a.go package main func main(){ Test() } b.go package main import "fmt" func Test(){ fmt.Println("Hello gopher!") } 编译的结果如下: D:\goWork\src\test>go run a.go # command-line-arguments .\a.go:4:2: undefined: Test 正常来说同一个package下,函数是可以相互调用的,不应该报错, 出现这种问题的原因是没有对这个package整体进行编译, 也就是说只编译了部分: 找到了问题,针对进行解决就可以了, 只要找...阅读全文
使用 cgo 让 Go 跟 C 一起工作已经不是啥稀奇的了。有大量的第三方包直接对 C 的库做了封装,提供给 Go 使用。从 Go 项目本身的代码中可以看到,不但有 C 代码,还有汇编代码存在。那么在自己的项目中是否能跟汇编结合呢?这篇文章完整并清晰的解说了如何让 Go 和汇编协同工作。真得性能敏感?上汇编吧!! ————翻译分隔线———— Go 和汇编 关于 Go,我最喜欢的部分之一就是它那坚定不移的实用主义线路。有时我们过于强调语言的设计,而忘记了编程所包含的其他内容。例如: Go 的编译器很快 Go 有着强大的标准库 Go 可以工作在多种平台下 Go 有着可以通过命令行/本地 Web 服务/ Internet 访问的完整文档 所有 Go 的代码是静态编译的,因此部署的问题微不足道 全部...阅读全文
文链接:Go Modules 详解 Go 1.11 和 Go 1.12 包含了初步的 Go Modules 支持,且计划在 2019 年 8 月发布的 Go 1.13 会在所有开发过程中默认使用 Go Modules。 Go Modules 是为了提升使用其他开发者代码,即添加**依赖项(模块、包)**时的体验,也是为了让代码的正确性、安全性得到保障。并且 Go Modules 可以使用 GOPROXY 环境变量来解决中国大陆无法使用 go get 的问题。 所以学习跟 Go Modules 有关的知识是很有必要的。 Golang Logo 模式 Go Modules 在 Go 1.11 及 Go 1.12 中有三个模式,根据环境变量 GO111MODULE 定义: 默认模式(未设置该环境变...阅读全文
基础知识 环境准备 使用golang 1.11以上版本的朋友,开启 GO11MODULE=on ,并且确保实验目录不在 GOPATH 中,命令行里执行。export GO11MODULE=onexport GO111MODULE=on2.golang 1.12和golang 1.13的朋友,确保实验目录不在 GOPATH 中。 3.加速下载,命令行里执行。export GOPROXY=https://goproxy.io 初始化go module环境 带git的项目 直接从github上面clone一个项目下来。 直接执行 go mod init 会自动生成带git地址的packagename 执行命令:go mod init不带git的项目直接执行go mod init packagena...阅读全文
示例:https://www.relive.cc/view/1078895740 看着好酷...阅读全文
文链接: http://www.cloudnoter.com/?p=131 flag包是用来处理命令参数的。总得来说,其通过将命令行标志与某一具体变量进行绑定,开发人员通过使用该变量进行业务逻辑处理。 一、FlagSet是该包的核心类型: type FlagSet struct { // Usage is the function called when an error occurs while parsing flags. // The field is a function (not a method) that may be changed to point to // a custom error handler. Usage func() name string parsed b...阅读全文
s3 是 aws 提供的分布式文件服务,价格比较优惠,经常被用来作为日志的持久化存储,大数据处理结果的输入输出等 s3 服务提供命令行工具,可以很方便地上传、下载、删除文件,普通 golang 程序如果需要访问 s3 上文件,一种简单方式可以先将 s3 上文件下载到本地,然后直接访问本地文件即可,但是这种方式需要一个额外的步骤,下载到本地,有额外的运维成本,需要额外的磁盘空间,使用上面不是很灵活,此外,微服务应该尽可能地降低对本地数据的依赖,这种设计也不符合微服务的设计思想 使用 aws-sdk-go 可以直接访问 s3 服务,实现文件的上传和读取 以下使用的代码:https://github.com/hatlonely/... 创建会话 首先需要创建一个会话,后续的访问都可以通过这个会话进...阅读全文
How to use github 地址:https://github.com/PolluxLee/GoServer 关闭防火墙 运行 GoServer.exe,不要关闭命令行窗口 将本地文件放到 go 文件根目录的 file 文件夹中即可实现内网共享文件 浏览器访问 http://localhost:8080/pollux/,将localhost替换成本地IP地址 GoServer.go package main import ( "log" "net/http" "os" ) func main() { os.Mkdir("file", 0777) http.Handle("/pollux/", http.StripPrefix("/pollux/", http.FileServer(h...阅读全文
分号 正式的语法使用分号“;”作为多个语句的分隔符。Go程序可以使用以下两种规则在大多数情况下省略这些分号: 当输入被断开为标记时,如果行末标记为 一个标识符一个整数、浮点数、虚数、字符或字符串文字关键字break、continue、fallthrough或return中的一个运算符和分隔符++、--、)、]或}中的一个 则分号将被自动插入到标记流中非空白行的末尾。 如果让复合语句占用单独一行,则在“)”或“"}"”后面的分号可以被省略。 为了反映习惯用法,本文档中的示例代码将依据此规则省略分号。 其实偶也没看懂...阅读全文
这里简单记录学习Golang之旅,方便自己回顾。 package main import "fmt"// 我们需要使用fmt包中的Println()函数 func main() { fmt.Println("Hello, world!") } 每个Go源代码文件的开头都是一个package声明,表示该Go代码所属的包。包是Go语言里最基本的分发单位,也是工程管理中依赖关系的体现。要生成Go可执行程序,必须建立一个名字为main的包,并且在该包中包含一个叫main()的函数(该函数是Go可执行程序的执行起点)。 Go语言的main()函数不能带参数,也不能定义返回值。命令行传入的参数在os.Args变量中保存。如果需要支持命令行开关,可使用flag包。 在包声明之后,是一系列的import语句...阅读全文
今天折腾了一天的VPS,装了HHVM、FTP,装不成功VPN。 GO语言也安装完成了,但中途也遇到一些问题,主要还是英文的问题,所以说学计算机的人啊,必须先学好英语。 本文首发于:http://www.zzzzy.com/201411023370.html 言归正传,golang.org作为一个技术的官网,居然被墙了。天朝不会凡谷歌的东西都要墙掉吧?呵呵。 首先肯定是下载资源包了,链接汇总在http://www.golangtc.com/download,我用的是 http://www.golangtc.com/static/go/go1.4beta1.linux-amd64.tar.gz 这个版本的镜像地址。 按照说明cd 进入 /usr/local 目录,然后执行 wget -c htt...阅读全文
1. 安装Sublime Text 3 Sublime Text 3(以下简称ST)的下载与安装我就不说啦,目前还是一个测试版,不过据说比ST2增加了好多新功能,下载地址: http://www.sublimetext.com/3 ST3的破解还是挺方便的(ST你不仁,79刀还是多少刀啊,就别怪我不义啦),推荐朽木博客的方法: http://www.xiumu.org/note/sublime-text-3.shtml 这里说注意一下破解时要注意的: 以下是运行的注册机: 注意椭圆部分,要先点这一个把ST的启动exe给替换掉,然后再打开ST把生成的Key输入才能注册,不然会注册失败的,:) 2. 安装Package Control 接下来还要注意就是ST3下Package Control的安...阅读全文
由于开发的要求,需要在本地配置不同的node.exe,而开发环境是Win,所以无法使用nvm,而nvmw又不是特别好使,因此索性自己写了一个。 使用GO编写,代码已经放在[github](https://github.com/kenshin/gnvm),不过没什么特别的地方,就是一个自动化的CLI工具,节省了手动下载/配置的麻烦。 文档(详细介绍) -------- https://github.com/kenshin/gnvm 下载 -------- * [32-bit](https://app.box.com/gnvm/1/2014967291) | [64-bit](https://app.box.com/gnvm/1/2014967689) **常用地址...阅读全文
事情是这样的 一个人程序员,用golang写了个server,写完后...不会部署 : ) 是的,这个人就是我... 今天真的是要被自己笑死 终于有机会在公司项目中使用golang进行开发,整个开发过程相当亢奋!然而...当跟前端小哥哥联调完接口后,小哥哥问我什么时候能给线上地址 (一脸懵)忘记还有上线这回事了 往往自己业余写的golang项目就直接 go build 然后拖到服务器然后运行一下搞定 但是这是公司项目啊!!! 会给你ftp??? 你可以碰到服务器??? (仿佛听到了DBA小哥哥的心声) 于是... 我找到了DBA小哥哥,问该如何发布 “你直接打包一个rpm或者给个docker吧” 哈? rpm? 你确定不是npm? docker??? (卧槽,我好像两年前就该看看了) 我还没...阅读全文
我想去掉这个命令行界...阅读全文
windows系统安装go开发环境 国内网络,可以到https://golang.org/dl/下载最新安装包,注意这里要下载windows对应的下载包。 下载对应安装包 下载后直接双击msi文件安装,默认安装在c:\go。 双击安装 安装完成后默认会在环境变量 Path 后添加 Go 安装目录下的 bin 目录 c:\go\bin\,并添加环境变量 GOROOT,值为 Go 安装根目录 c:\go\ 验证是否安装成功,在运行中输入 cmd 打开命令行工具,在提示符下输入 go 验证安装成功 通常会出现这样的提示,表示我们的机器上已经安装好Go开发环境了。快写个Go版本的HelloWorld来Play一下吧...阅读全文
http://blog.chinaunix.net/uid-24774106-id-3990722.html 我们写习惯了C代码,都知道了解析输入参数argc argv,获取环境变量env,常见的C语言main函数有: int main(int argc,char* argv[],char** envp) 我们首先给出C语言的获取命令行参数和环境变量的代码: manu@manu-hacks:~/code/c/self/env$ cat env.c #include
目的:使用gdb附加到一个正在运行的进程上,然后做一些调试,并安全退出。 1. 修改Ubuntu配置,允许gdb附加到进程上,如何修改如下: http://askubuntu.com/questions/41629/after-upgrade-gdb-wont-attach-to-process 2. 查看进程id #ps ax 或者 #ps au 3. 启动gdb 4. 使用file命令来指定进程所联系的程序源代码和符号表,例如: file /home/yourihua/workplace/rhino/bin/console 5. attach <进程ID> 6. 打断点,如下: b /home/yourihua/workplace/rhino/src/github.com/yourihu...阅读全文
go语言有一个标准库,log,提供了最基本的日志功能,但是没有什么高级的功能,如果需要高级的特性,可以选择glog或log4go。 glog是google提供的,类似于google的c++ log库,使用起来非常简单,下面介绍一下;log4go的用法和log4j一样,可配置性比较高。 glog只提供了少数几个选项,通过命令行控制,例如: -log_dir: 日志文件保存目录 -alsologtostderr: 日志写入文件的同时,输出到stderr -v:配置V输出的等级。 glog使用非常简单,只需要import就可以了。glog package的init函数会初始化并启动一个glog 的flushDaemon协程,你只需要使用glog.Info, glog.Warning, glog.E...阅读全文
环境安装:go1.2.windows-386.msi 在命令行是能编译的,环境安装没出什么问题 IDEA安装上能编译单文件的,如:helloworld等 但如果有导入了自己写的包时就提示找不到那个包了 如图: ![enter image description here][1] [1]: http://static.oschina.net/uploads/space/2014/0212/094129_NhZr_1258821.png ...阅读全文
【编者按】Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源。Docker提供了一种在安全、可重复的环境中自动部署软件的方式,它的出现拉开了基于云计算平台发布产品方式的变革序幕。为了更好的促进Docker在国内的发展以及传播,我们决定开设《深入浅出Docker》专栏,邀请Docker相关的布道师、开发人员、技术专家来讲述Docker的各方面内容,让读者对Docker有更深入的了解,并且能够积极投入到新技术的讨论和实践中。另外,欢迎加入InfoQ Docker技术交流群交流Docker的最佳实践,QQ群号:365601355。 1. 背景 敏捷开发已经流行了很长时间,如今有越来越...阅读全文
1.安装步骤a.下载地址 下载SDK后,解压到自己喜欢的目录(后面配置PATH需要用到)b.配置PATH,有很多个地方可以配置具体可参考此链(PATH配置详解),我是直接修改的~/.bash_profile来设置环境变量,因为该文件一般用户都能更改,没有涉及到任何权限问题,具体参考此链接粗暴配置。在此文件输入export GOROOT=$HOME/goexport GOPATH=$HOME/go:$HOME/MyGOexport PATH=$PATH:$GOROOT/bin:$GOPATH/bin其中GOROOT对应的就是前面的Go源码包解压路径,GOPATH可以设置多个看你自己想在哪里新建都行,按:分开就行如上面所示就是如此简单,环境就配置好了,可在命令行输入go 看是否安装成功2.目录结...阅读全文
项目简介: gstunnel 是 基于go 语言开发的一个安全网络管道,支持tcp协议。 gstunnel分为client和server两部分。 gstunnel 基于aes进行数据加密。 流程示意: 网络中,a到b的网络通信。 a-->b 使用gstunnel 后, a到b的网络通信。 a-->gstunnel client -->gstunnel server -->b gstunnel 为a、b之间的网络通信提供了一个加密层。 使得a、b的通信数据,变为了加密数据,这样第三方就不能获知a、b的通信内容。从而保证了a、b网络通信的安全。 支持的应用: http proxy(squid3等)、email、socks 5 p...阅读全文
今天我们一起来写一个从csv文件将数据导入elastic search的小程序 准备工作 在gopath的src文件夹下创建csv2es文件夹,并创建main.go文件。下载一些csv文件备用 解析命令行参数 首先我们需要使用flag package解析命令行参数,代码如下 func main() { // 解析命令行输入 host := flag.String("host", "http://localhost:9200", "host, e.g. http://localhost:9200") file := flag.String("file", "", "file path") esIndex := flag.String("index", "", "elastic search i...阅读全文
go语言内置的flag包实现了命令行参数的解析,flag包使得开发命令行工具更为简单。 os.Args 如果你只是简单的想要获取命令行参数,可以像下面的示例代码一样使用os.Args来获取命令行参数 package main import "fmt" import "os" func main(){ if len(os.Args)>0 { for index , value := range os.Args { fmt.Println(index, value) } } } 将上面的代码执行go build -o "args_demo"编译之后,执行: 0 ./args_demo 1 a 2 b 3 c 4 d os.Args是一个存储命令行参数的字符串切片,它的第一个元素是执行文件的名称。...阅读全文
在网上看到某人实现了一个简单的clock,发现代码编译不过,略作修改: 1 package main 2 3 import ( 4 "bufio" 5 "image" 6 "image/color" 7 "image/png" 8 "math" 9 "os" 10 "time" 11 ) 12 13 const clock_size = 200 14 const radius = clock_size / 3 15 16 var colour color.RGBA 17 18 func circle(clock *image.RGBA) { 19 for angle := float64(0); angle < 360; angle++ { 20 radian_angle := math.P...阅读全文
1、下载go的zip文件。并且一定要把文件解压到c:\go目录下。 2、配置windows的高级环境变量。包括:GOROOT、GOOS、GOBIN、GOARCH。并且在path变量里面把c:\go\bin加入。以便可以在命令行直接运行go命令。 举例:我的机器: set GOARCH=386 set GOOS=windows set GOROOT=c:\go set GOBIN=%GOROOT%\bin set GOPATH=%GOROOT%;F:\workspace\goSample01; GOPATH=%GOROOT%;%GOROOT%\src;F:\workspace\goSample01; GOBIN=%GOROOT%\bin;F:\workspace\goSample01\bin;...阅读全文