Goroutine 审查工具
https://github.com/linuxerwang/goroutine-inspec...阅读全文
https://github.com/linuxerwang/goroutine-inspec...阅读全文
折腾了 3天终于找到一个 goLang vim的好配置了 git clone https://github.com/gmarik/Vundle.vim.git ~/.vim/bundle/Vundle.vim 首先添加 Vundle 管理工具 vim 直接用yum 添加就可以了 然后修改家目录下面的 .vimrc文件 syntax on " set color theme "colorscheme busybee set background=dark " solarized options colorscheme solarized " Configuration section of vundle filetype off " required! set rtp+=~/.vim/bund...阅读全文
govendor 是 go 的一个比较好用包版本管理工具。主要用来保证 go 项目在协同开发或发版部署时,保证部署安装的依赖包版本对当前项目是稳定可用的。 为什么要使用包版本管理工具 java 的 maven,php 的 composer,nodejs 的 npm,python 的 requirement.txt,golang 的 govendor。 例1:你的项目依赖一个github.com/foo 1.0.0的包,如果不使用包版本管理工具,他人在本地部署安装你的项目时,安装的包版本可能是最新的github.com/foo 2.0.0,如果两个版本存在兼容问题,就会出现crashed。 例2:使用 go get 安装的项目依赖包的存放位置为 $GOPATH/src,即与你的项目路径同级,我...阅读全文
昨天,Russ Cox 发布了 [vgo](https://research.swtch.com/vgo),作为一个现有 go 构建命令的继任者,添加了一直缺失的包版本管理功能。虽然它只是一个大胆的尝试,但是在大家都认为 [dep](https://github.com/golang/dep) 将要成为 Go 语言官方正式的包管理工具的时候,它的出现多少让大家有点意外。Russ 写的 [vgo 简介](https://research.swtch.com/vgo-intro) 和一起发布的 [vgo 使用指南](https://research.swtch.com/vgo-tour) 是了解 vgo 很好的参考资料,尽管许多人对文章中的一些观点有些误解,我还是强烈建议第一次接触 vgo 的朋...阅读全文
提供可视化界面的定时任务管理工具。 允许设置每个脚本的超时时间,超时操作可选择邮件通知管理者,或强杀脚本进程。 允许设置脚本的最大并发数。 一台server管理多个client。 每个脚本都可在server端灵活配置,如测试脚本运行,查看日志,强杀进程,停止定时...。 允许添加脚本依赖(支持跨服务器),依赖脚本提供同步和异步的执行模式。 友好的web界面,方便用户操作。 脚本出错时可选择邮箱通知多人。 jiacrontab由server,client两部分构成,两者完全独立通过rpc通信。 server:向用户提供可视化界面,调度多个client。 client:实现定时逻辑,隔离用户脚本,将client布置于多台服务器上可由server统一管理。 每个脚本的定时格式完...阅读全文
在windows下golang开发环境搭建时(具体步骤网上很多,百度搜索括号前的文字即可找到),遇到了很尴尬的情况(如下图),百度也没有找到想类似的情况, 解决办法:手动安装gosublime插件:1.从 工具栏--- Preferences----可以看到 Browse Package(第一个就是),打开后,即找到了插件安装路径,如:C:\Users.....AppData\Roaming\Sublime Text 3\Packages 2.打开网页https://github.com/DisposaBoy/GoSublime,下载gosublime的zip包,解压到上一步的路径上3.解压后的文件名字改为GoSublime (注意要下载master分支的zip,下载后文件名为GoSubli...阅读全文
revive 是一个 Go 语言的代码质量检测工具(Linter for Go),具有快速、可配置、可扩展、灵活和美观这些特性,可作为 golint 的替代方案。 revive 为自定义规则的开发提供了一个框架,你也可以定义一个严格的预设来增强开发和代码审查流程。 revive 与 golint 的不同之处 可以使用配置文件来启用或禁用规则 使用 TOML 文件配置 linting 规则 运行相同的规则,比 golint 快两倍 与 golint 相比,revive 提供了更多规则 每个人都可以使用自定义规则或格式化器轻松对它进行扩展 ……  aurora 是一个 Golang 编写的基于 Web 的 Beanstalk 消息队列服务器管理工具,单文件无需依赖其他组件,支持管理本地和远程多个队列服务器。 特点 - 跨平台支持 macOS/Linux/Windows 32/64-bit - 单文件简单易部署 - 不依赖其他组件 - 支持读取配置文件方式启动 + 登陆用户认证 - 定时刷新 Beanstalk 队列服务器状态 - 对每个 Tube 的 ready/delayed/buried 状态进行管理 - 支持...阅读全文
什么是gsmake gsmake是一个类似于gradle的自动构建工具,使用go语言开发: gsmake是一个包管理/下载工具; 每个包有它全局唯一的包名,以及版本号; 包可以定义一系列的任务(task),任务支持由golang语言编写; 包可以相互引用,但是不能出现引用环; gsmake能够容易的执行包定义的任务; 通过上面描述不难看出,gsmake不仅仅可以用替代make管理golang代码。通过编写一系列插件 支持c/c++工程管理也是可行的,甚至你用它来编写一本《gsmake入门》的书也是有可能的这个 例子在介绍maven/gradle的时候经常提到,总之一句话你可以把它想象成maven/gradle的golang 实现版。 为啥重新发明轮子 程序员通病,自己的轮子还是要更圆些; 我...阅读全文
step1 购买主机: 搬瓦工 屌丝的福音 比阿里华为便宜多了 具体我就不多少了.png 缺点:网络不稳定 没有洛杉矶的稳定优点:价格便宜 重新安装系统 默认32位的,不是最新系统 .png 说明:centos-7不支持界面安装Shadowsocks centos6才支持 此处有坑 安装Shadowsocks: 管理工具 https://bwh1.net 直接可以访问谷歌了.png step 2 环境搭建 liunx下安装http://www.golangtc.com/download选择版本:go1.8.linux-amd64.tar.gz export GOROOT=/home/xx/ob_rel/goexport PATH=$PATH:$GOROOT/binexport GOPATH=...阅读全文
What you are wasting today is tomorrow for those who died yesterday; what you hate now is the future you can not go back. 你所浪费的今天是昨天死去的人奢望的明天; 你所厌恶的现在是未来的你回不去的曾经。 简单的记录一下吧。 package main import ( "reflect" "fmt" "strings" ) type Foo struct { A int `tag1:"Tag1" tag2:"Second Tag"` B string } func main(){ f := Foo{A: 10, B: "Salutations"} fPtr := &f m ...阅读全文
restic 是一个 Go 语言编写的备份工具,特点是快速、高效而且安全...阅读全文
https://evilmartians.com/chronicles/introducing-imgproxy 源码:https://github.com/DarthSim/imgprox...阅读全文
redis web 管理工具, 参考 redisMaster, 该项目主要是因为使用 redisMaster 处理大数据量的时候容易卡死, 很不爽, 所以用 ivew + golang 仿写了一个 web 界面的 redis 管理工...阅读全文
Weave Scope 用于监控、可视化和管理 Docker 以及 Kubernetes。 Weave Scope 这个项目会自动生成容器之间的关系图,方便理解容器之间的关系,也方便监控容器化和微服务化的应用。 **Weave Scope 的功能特性** 拓扑映射 Scope 中的视图 图形或表格模式 灵活的过滤 强大的搜索 实时的应用和容器指标 使用插件 API 生成自定义指标  。 终于,在go1.11 版本中,新增了module管理模块功能,用来管理依赖包。 要知道,在这个之前,想要对go语言包进行管理,只能依赖第三方库实现,比如Vendor,GoVendor,GoDep,Dep,Glide等等,对于初学者来说,真的是选择困难症。 关于Workspaces和GOPATH 在 go1.11 之前,如...阅读全文
我们知道一个项目中除设计之外,代码质量是一个项目成功与健壮的基础,再好的设计但是实现代码混乱,风格混杂,明显性错误百出,我们仍然会认为这是一个失败的项目;相反,即使一个项目在架构和设计上无新奇之处,但代码实现质量高,例如风格统一,测试完善,接口明确,无冗余代码,实现中无明显错误或不安全用法,圈复杂度低等等,无论是对于项目的实现上还是后期代码维护都是有益的。所以,一个项目的代码质量是一个项目成功的关键基础。 C/C++,Java等等语言都有自己的代码质量检测工具,例如Cppcheck,PC-Lint,Splint等等,Golang语言出现时间不实很长,这方面的生态还不是非常完善。goreporter,一个golang代码检测的工具,它合并了多种检测工具,相当于很多工具的集合,使用起来非常容易...阅读全文
qb是用来让使更容易使用数据库的go语言的数据库工具包。它受Python最喜欢的ORM SQLAlchemy的启发,既是一个ORM,也是一个查询生成器。它在表达api和查询构建东西的情形下是相当模块化的。 特征: * 支持 postgres,mysql & sqlite3 * 简单的查询生成器 * 在初始化表迁移时会结构化表DDL映射器 * 表达式生成器可内置几乎所有的SQL语句 * Transactional Session API 可自动映射到结构查询 * 使用标签结构的外键定义 * 单及复合列索引 * Relationships(很快......阅读全文
go的map和java的map在操作上区别不大。 不过有些内容还是不一样的。 1. 检测某个键是否存在: elem, ok = m[key] 如果 key 在 m 中,`ok` 为 true 。否则, ok 为 `false`,并且 elem 是 map 的元素类型的零值。 2. 如果某个键不存在,直接用这个键读value的话,返回的是 map 的元素类型的零值 例如: m := make(map[string]int) m["Answer"] = 42 fmt.Println("The value:", m["Answer"]) delete(m, "Answer") fmt.Println("The value:", m["Answer"]) 运行结果为: The value: 42 T...阅读全文
google/pprof是一个性能可视化和分析工具,由Google的工程师开发。虽然自称不是Google官方的工具,但是项目挂在google的team下,而且还在Google其它项目中得到应用,是非常好的一个性能剖析工具。 go tool pprof 复制了一份google/pprof的代码, 封装了一个golang的工具,用来分析Go pprof包产生的剖析数据,也就是最终数据的处理和分析还是通过gogole/pprof来实现的。 这样,你至少就用两种方式来分析Go程序的 pprof数据: go tool pprof : Go封装的pprof的工具 pprof: 原始的pprof工具 pprof读写一组profile.proto格式的数据,产生可视化的数据分析报告,数据是protocol ...阅读全文
对于任何编程语言,依赖管理都是其必须考虑的一个问题。尤其是在大规模协作的软件开发中,如何保证大家都使用同一份依赖,项目能够随时随地重复编译, 是考核编程语言成熟度的重要指标之一。一些成熟的编程语言,例如Java、Python在这方面已经做得比较好了,但是对于新秀Golang,还要比较长的一段路要走。 Golang团队一直秉持着”简约”的设计原则,甚至强调代码的简洁和清晰度胜过代码的复用。因此,他们对依赖管理的设计非常重视和谨慎,直到v1.5才开始逐步 引入依赖管理的设计。在v1.5中实验性地加了vendor目录来支持本地依赖管理,通过环境变量GO15VENDOREXPERIMENT来控制是否使用该特性,默认不启用。 如果要使用vendor特性,需要设置环境变量GO15VENDOREXPERI...阅读全文
https://aadrake.com/posts/2017-05-29-faster-command-line-tools-with-go.htm...阅读全文
什么是gsmake gsmake是一个类似于gradle的自动构建工具,使用go语言开发: gsmake是一个包管理/下载工具; 每个包有它全局唯一的包名,以及版本号; 包可以定义一系列的任务(task),任务支持由golang语言编写; 包可以相互引用,但是不能出现引用环; gsmake能够容易的执行包定义的任务; 通过上面描述不难看出,gsmake不仅仅可以用替代make管理golang代码。通过编写一系列插件 支持c/c++工程管理也是可行的,甚至你用它来编写一本《gsmake入门》的书也是有可能的这个 例子在介绍maven/gradle的时候经常提到,总之一句话你可以把它想象成maven/gradle的golang 实现版。 为啥重新发明轮子 程序员通病,自己的轮子还是要更圆些; 我...阅读全文
https://github.com/hacdias/filemanage...阅读全文
一直关注golang和kotlin, 刚好最近有个小项目, 考虑了一番, 决定用golang尝试一下. 不得不吐槽, golang的依赖管理确实是相当烂, 和maven, npm这种完全不能比, 一直喜欢最佳实践之类的东西, 所以一直想要找一个最佳的目录结构, 直到看到了这个项目 https://github.com/golang-standards/project-layout Screen Shot 2018-06-26 at 16.10.07.png 依旧期待出现类似maven的依赖管理工...阅读全文
区块链钱包(Block Chain Wallet): 是密钥的管理工具,它只包含密钥而不是确切的某一个代币;钱包中包含成对的私钥和公钥,用户用私钥来签名交易,从而证明该用户拥有交易的输出权;而输出的交易信息则存储在区块链中;用户在使用钱包时, 你的 Keystore, 助记词, 明文私钥, 都是钱包;Keystore 是你加了”锁”的钱包,而助记词和明文私钥是完全暴露在外的钱包,没有任何安全性可言,所以在使用助记词和明文私钥时,一定要注意保密安全存储数字货币的多币种虚拟币钱包定制。钱包作为交易的入口价值钱包由于沉淀了很多用户的数字资产,当用户需要进行交易时,比较麻烦的一点就是需要转到交易所,如果比较拥堵,时间还长,容易耽误事。上了交易所,如果交易深度不够,或者价格不合适,往往也难以成交。如...阅读全文
https://github.com/fortytw2/leaktes...阅读全文
初识Go语言,就被它深深地吸引住了,解放思想,关注真正该专注的东西,感觉看到了编程语言发展的未来! 接下来谈下安装方法吧 1、Homebrew 由于公司用的Mac,而所有用mac的开发人员,都离不开Homebrew这个软件包管理工具,它同样集成了Go语言,所以安装起来毫无压力 一句话搞定Go安装(过程可能有点慢,别着急) brew install go 接下来看下是否安装成功,输入 ‘go version‘ go version go version go1.4.2 darwin/amd64 好了,版本为1.4.2,安装成功,开始我们的Go语言之旅...阅读全文
近况: 最近项目太忙,所以更新得不多,但请放心,不会弃坑的,再说关注又不会怀孕对吧,更何况关注这个公众号的男女比例 98 : 2. 所有撸过代码都懂项目上线的苦,在上线前,代码就像自己的亲儿子,怎么看都是那么的完美。一上线,就人设崩塌,不停的在心中暗骂 “当时TMD怎么想的”。最近都是在这种状态下维持生活,你们是不是都能隔着屏幕闻到bug的味道? image 即将发布的Go 1.11将加入对go mod的支持,解决了go一直存在的依赖管理的短板。不过这篇文章并不是要介绍go module本身,而是打算说一下go团队和社区之间的冲突——你可以从中看到go team的做事风格,也可以当做是单纯的八卦。 先说一下背景。Go作为Google内部孵化的项目,其对的设计非常符合Google内部的使用场景...阅读全文
The liteide x5 version for golang. LiteIDE is a simple, open source,cross-platform IDE. Version: x5 v0.78125 Website: http://code.google.com/p/golangide Download: http://code.google.com/p/golangide/downloads/list Source: http://code.google.com/p/liteide Features: Plugins Extension System File Based Build System Multi Build Environment System Kate S...阅读全文
本文从Maven谈起,分析了Maven的主要思想以及Gradle对Maven的改进,最后谈了下Go语言面临的依赖管理问题。 为什么要有依赖管理工具? 谈依赖管理之前我们先谈谈为什么要有依赖管理工具这东西。 我们学了一种编程语言,然后写了个『Hello World』,然后宣称自己学了一门语言,这时候确实不需要关心依赖问题。 然而,当你要写一个稍微复杂点的应用,那怕就是留言板这样的,需要读写数据库,就需要依赖数据库驱动,就会遇到依赖管理的问题了。 再进一步,你写了一个库,想共享给别人使用,更需要了解依赖管理的问题。 当然,如果项目足够简单,你可以直接将依赖方的源码放置在自己的项目中,或者将依赖库的二进制文件(比如jar,dll)放置在项目的lib里。要提供给别人呢?把二进制包提供下载或者给别人传...阅读全文
# mgweb go语言编写的 mongodb web管理工具 项目使用beego框架实现 ## [](https://github.com/29392964/mgweb#项目依赖)项目依赖 项目基于beego,mgo等项目,使用时需提前安装依赖库 ## [](https://github.com/29392964/mgweb#安装)安装 $ git clone [https://github.com/29392964/mgweb](https://github.com/29392964/mgweb) $ go build $ ./mgweb ## [](https://github.com/29392964/mgweb#相关配置)相关配置 可以在con...阅读全文
本文首发于 blog.befovy.com/2019/12/fvm… 周末时间用 Go 语言完成了 Flutter 多版本管理工具的初个版本 fvm v0.1.0。我必须承认,这个版本完全是在造轮子,而且还是和 leoafarias fvm 一模一样。 为什么造轮子 简单说就是有需求:在开发 fijkplayer (一个 Flutter 的媒体播放器)的过程中,我逐渐从开始只有 Android、iOS 的移动端版本,发展到 Flutter 桌面版本。在 fijkplayer 桌面版的开发中,我用的是 go-flutter 为 Flutter 提供桌面支持,go-flutter 默认用的是 flutter beta 版本,而移动端 fijkplayer 用的是 Flutter stable 版...阅读全文
写在前面的话 最近在开发Go项目,发现Go语言本身存在的error并没有像触发panic时显示详细的调试信息。对于复杂的系统而言,这会让我们开发者需要一定的时间才能定位到错误。所以我们基本Go本身的error封装了一个可以快速定位错误工具包。下面让我们来看看这个工具包是怎么实现的。 设计思想 工具包提供Err和Errf两个完善来登记错误,其用法分别类似于fmt.Print和fmt.Printf的使用方式,在参数的定义中添加了innerError参数来实现错误的传递,其值可为nil. 对外提供StackTrace函数,方便使用者获取错误产生的堆栈信息。 通过SetConfig方式实现对错误信息显示的配置,如在生产环境不需要打印堆栈信息。通过响应的配置即可关闭。 实现思路 工具包中主要是对堆栈信...阅读全文
来自tiobe官网2019年的编程语言排名表 2019年编程语言排行榜 go语言位列第16位,比2018年上涨了3位。其他的不敢狂言,但是单单从国内目前至少有5个比较优秀的IT培训机构,都力推go语言,go语言会进去排行榜前十的。2019年我们拭目以待。(但是这个跟我们普通人来,有关系,但是关系不大,关系大的看下文)go也能干大事不是因为这个编程语言排行榜go进入了前20名才出来的,我们之前有一套课程叫SEO也能干大事,也有一套课程叫thinkphp也能干大事,都获得了预期好评,然后由于之前接触了(Electron),这家伙是干嘛的呢?它可以开发桌面软件,最开始版本的时候,我们是用c#开发站群系统的,后来随着客户越来越多,Mac用户多了起来,不断反应,为什么没有Mac端的管理工具。码农就是苦...阅读全文
一、背景作为DevOps交付流水线的开发者,为支持CI/CD中各项任务的自动化,都需要依赖多种包管理工具来下载各种相关的工具,比如针对产生最终交付件的构建过程,就需要在构建流程的第一步,自动地把相关工具,如Curl、wget、Maven、Gradle、npm等等,下载到CI服务器。这些工具的下载,通常都需要依靠对应的公网服务器和包管理工具来支持。而这样通过公网来下载工具,有时会遇到稳定性的问题,也就是所谓的环境问题,导致工具下载失败,进而导致构建任务的失败。因此,我们需要引入新的技术来克服这些问题,保证工具包下载的稳定和可靠。二、工具包管理的痛点——缺乏稳定性通常,我们会使用各种各样的包管理工具来帮助我们下载和管理这些工具包,如Windows上的Chocolatey,Mac/Linux上的H...阅读全文
glide可以每个项目单独管理包, 在项目根目录vendor文件夹下 安装glide go get github.com/Masterminds/glide go install github.com/Masterminds/glide cd $GOPATH/src/github.com/Masterminds/glide go build cp glide /usr/local/bin 基本命令 glide create|init 初始化项目并创建glide.yaml文件. glide get 获取单个包 --all-dependencies 会下载所有关联的依赖包 -s 删除所有版本控制,如.git -v 删除嵌套的vendor glide install 安装包 glide updat...阅读全文
go mod go官方的module管理工具 原文:https://github.com/googege/blog 用法: 在一个非go path的路径中新建一个项目,然后使用go mod init 就可以初始化一个新的包(要开启这个 export GO111MODULE=on写入.bash_profile即可 win的同学自己找找设置 GO111MODULE的win版本设置方法哈),其实跟github(gitlab都行)用在一起更好 在github上新建一个项目,例如说 test 在本地将这个远程包给clone过来,然后这个文件夹里面就是一个.git 隐藏的文件项目这个就是git的管理文件包 将此包放在远离 go path的文件路径里,然后使用 go mod init 就可以创建一个名为 ...阅读全文
为什么不再需要设置 GOROOT 呢?推荐读两篇英文文章,我意译了下,将它们放在了一篇里。 第一篇是关于 Go 1.10 之前,怎么设置 GOROOT,发表与 2013 年。第二篇是从 Go 1.10 开始,如何处理 GOROOT,时间是 2018 年,Go 源码提交日志。这篇非常短小。 读完后,你会发现,大多数情况下,我们都不用手动设置 GOROOT 了。 第一篇 作者:Dave Cheney | 地址:you-dont-need-to-set-goroot-really 一篇小短文,解释了为什么在编译和使用 Go 时,不需要设置 GOROOT。 概要性介绍 一般来说,在 Go 1.0 之后,编译和使用 GO 不再需要设置 GOROOT。事实上,如果你的电脑上存在多个版本的 Go 语言环境...阅读全文
go文件 package main import ( "fmt" "encoding/xml" "os" "text/template" ) type Member struct { Name string `xml:"name,attr"` Comment string `xml:"comment,attr"` } type Struct struct { Name string `xml:"name,attr"` Comment string `xml:"comment,attr"` Members []Member `xml:"member"` } type Result struct { XMLName xml.Name `xml:"result"` Structs []Struct...阅读全文
安装 dep需要golang版本在1.9以上go get -u github.com/golang/dep/cmd/dep dep工作流 因为有墙,所以使用之前请先设置命令行代理,梯子自备 export {http,https}_proxy='127.0.0.1:1080' 新建项目 // 项目需要创建在gopath下 cd $GOPATH/src mkdir my-project dep init -v dep init 新项目或还未使用包管理的项目初始化init会分析go文件中import的包并安装,将依赖信息写入Gopkg.toml文件,安装的revision写入Gopkg.lock文件 dep ensure 同步依赖包 一个命令可以完成包的安装缺失的包、卸载无用的包,使代码中的imp...阅读全文