Go 每日一库之 cobra】的更多相关文章

简介 cobra是一个命令行程序库,可以用来编写命令行程序.同时,它也提供了一个脚手架, 用于生成基于 cobra 的应用程序框架.非常多知名的开源项目使用了 cobra 库构建命令行,如Kubernetes.Hugo.etcd等等等等. 本文介绍 cobra 库的基本使用和一些有趣的特性. 关于作者spf13,这里多说两句.spf13 开源不少项目,而且他的开源项目质量都比较高. 相信使用过 vim 的都知道spf13-vim,号称 vim 终极配置. 可以一键配置,对于我这样的懒人来说绝对是…
简介 上一篇文章介绍 cobra 的时候提到了 viper,今天我们就来介绍一下这个库. viper 是一个配置解决方案,拥有丰富的特性: 支持 JSON/TOML/YAML/HCL/envfile/Java properties 等多种格式的配置文件: 可以设置监听配置文件的修改,修改时自动加载新的配置: 从环境变量.命令行选项和io.Reader中读取配置: 从远程配置系统中读取和监听修改,如 etcd/Consul: 代码逻辑中显示设置键值. 快速使用 安装: $ go get githu…
缘起 我一直在想,有什么方式可以让人比较轻易地保持每日学习,持续输出的状态.写博客是一种方式,但不是每天都有想写的,值得写的东西. 有时候一个技术比较复杂,写博客的时候经常会写着写着发现自己的理解有偏差,或者细节还没有完全掌握,要去查资料,了解了之后又继续写,如此反复. 这样会导致一篇博客的耗时过长. 我在每天浏览思否.掘金和Github的过程中,发现一些比较好的想法,有JS 每日一题,NodeJS 每日一库,每天一道面试题等等等等. https://github.com/parro-it/aw…
简介 上一篇文章Go 每日一库之 viper中,我们介绍了 viper 可以监听文件修改进而自动重新加载. 其内部使用的就是fsnotify这个库,它是跨平台的.今天我们就来介绍一下它. 快速使用 先安装: $ go get github.com/fsnotify/fsnotify 后使用: package main import ( "log" "github.com/fsnotify/fsnotify" ) func main() { watcher, err…
简介 在上一篇文章中,我们介绍了flag库.flag库是用于解析命令行选项的.但是flag有几个缺点: 不显示支持短选项.当然上一篇文章中也提到过可以通过将两个选项共享同一个变量迂回实现,但写起来比较繁琐: 选项变量的定义比较繁琐,每个选项都需要根据类型调用对应的Type或TypeVar函数: 默认只支持有限的数据类型,当前只有基本类型bool/int/uint/string和time.Duration: 为了解决这些问题,出现了不少第三方解析命令行选项的库,今天的主角go-flags就是其中一…
简介 今天我们来看一个很小,很实用的库go-homedir.顾名思义,go-homedir用来获取用户的主目录. 实际上,使用标准库os/user我们也可以得到这个信息: package main import ( "fmt" "log" "os/user" ) func main() { u, err := user.Current() if err != nil { log.Fatal(err) } fmt.Println("Hom…
简介 ini 是 Windows 上常用的配置文件格式.MySQL 的 Windows 版就是使用 ini 格式存储配置的. go-ini是 Go 语言中用于操作 ini 文件的第三方库. 本文介绍go-ini库的使用. 快速使用 go-ini 是第三方库,使用前需要安装: $ go get gopkg.in/ini.v1 也可以使用 GitHub 上的仓库: $ go get github.com/go-ini/ini 首先,创建一个my.ini配置文件: app_name = awesome…
关于我 我的博客|文章首发 顾名思义,go-homedir用来获取用户的主目录.实际上,通过使用标准库os/user我们也可以得到内容,使用以下方式 标准库使用 package main import ( "fmt" "log" "os/user" ) func main() { u, err := user.Current() if err != nil { log.Fatal(err) } fmt.Println("Home dir…
High performance logging profiler 官方文档:http://docs.python.org/2/library/hotshot.html#module-hotshot 在 2.x 中,hotshot 用来做性能统计,开销比 profile/cProfile 更小.但 3.x 开始, hotshot 就不大行了.   只需要启动 hotshot.Profile(),并执行要统计的代码段. 代码段: 1. test.py # test.py import hotsho…
go 语言中文网(每日资讯)_2020-02-27 一.Go 语言中文网 如何正确看待 Google 宣布 Fuchsia 操作系统没有选 Go 作为终端开发语言 Actor 还是 CSP?Go 中的并发模式还能讲这么细致 [每日一库]让你的 json 可以 grep:gron 介绍一款 Go 项目热编译工具-gowatch 从零开始入门 K8s | 有状态应用编排 - StatefulSet 二.Go 夜读 第 76 期 Kubernetes Scheduler 设计与实现[点开即可观看] 三…
本文的目标读者 对用 Golang 代码生成折线图.扇形图等图表有兴趣的朋友. 本文摘要 主要介绍 Go 中用以绘图的开源库,分别是: GitHub - wcharczuk/go-chart: go chart is a basic charting library in go. GitHub - vicanso/go-charts: A charts library for Golang GitHub - vdobler/chart: Provide basic charts in go Gi…
官方安装: freeCAD稳定版 freeCAD官方提供了几个稳定版本供开发者使用: Windows (XP, Vista and 7, 32 and 64bits), Mac OS X (Lion 10.7), 和 Debian-based Linux systems (Debian, Ubuntu, 32 and 64bits). 以下几个链接为freeCAD的稳定版本. 也有不稳定版本: FreeCAD Files page , 提供最前沿的新功能,工具,但可能更容易崩溃或包含与早期的版本…
HighCharts是开源的Web图表js组件,与D3.js一样,经常用于数据可视化.HighCharts图表类型丰富,功能非常强大,是很好的数据可视化解决方案,其官方网站为:http://www.hcharts.cn/,感兴趣的读者可以自行去下载HighCharts并按照给出的Example尝试着开发,基本上按照示例中的例子,把数据部分替换成自己想要展示的数据就可以了,非常容易上手.本篇博客将结合ASP.NET MVC和HighCharts开发统计图表功能,为简单起见,这里只演示三个最基本.最…
本文首发于InfoQ https://www.infoq.cn/article/1sm0Mq5LyY_021HGuXer 作者:Anton Hägerstrand 翻译:杨振涛 目录: 数据量 版本 节点配置 索引结构 性能 Meltwater每天要处理数百万量级的帖子数据,因此需要一种能处理该量级数据的存储和检索技术. 从0.11.X 版本开始我们就已经是Elasticsearch的忠实用户了.在经历了一些波折之后,最终我们认为做出了正确的技术选型. Elasticsearch 用于支持我们的…
go 语言中文网(每日资讯)_2020-02-28 一.Go 语言中文网 Gopher 学习效率低怎么办?曹大谈工程师应该怎么学习 Go 的 http 包中默认路由匹配规则 [每日一库]Web 表单验证利器:go-playground/validator 从零开始入门 K8s | Kubernetes 存储架构及插件使用 二.图解源码 图解 kubernetes Pod 创建流程大揭秘 三. 新亮笔记 究竟什么样的开发流程是规范的? 四.阿里云大学 阿里云&CNCF 云原生技术公开课 五.学而思…
Compile-time Dependency Injection With Go Cloud's Wire - The Go Blog https://blog.golang.org/wire Compile-time Dependency Injection With Go Cloud's Wire Compile-time Dependency Injection With Go Cloud's Wire Robert van Gent9 October 2018 Overview The…
简介 Casbin是一个强大的,高效的开源访问控制框架,其权限管理机制支持多种访问控制模型 支持编程语言 不同语言中支持的特性 我们一直致力于让 Casbin 在不同的编程语言中拥有相同的特性. 但是现实总是不完美的. 上方的表格展示了当前的进度. Watcher 和 Role Manager 的 仅代表 Casbin 对该编程语言有接口, 是否实现了 watcher 或 role manager 接口则是另一回事了. Casbin是什么? Casbin 可以: 支持自定义请求的格式,默认的请求…
背景 ​ 最近在工作和业余开源贡献中,和单元测试接触的比较频繁.但是在这两个场景之下写出来的单元测试貌似不太一样,即便是同一个代码场景,今天写出来的单元测试和昨天写的也不是很一样,我感受到了对于单元测试,我没有一个比较统一的规范和一套单元测试实践的方法论.在写了一些单元测试之后我开始想去了解写单元测试的一些最佳实践和技巧.(其实后来我反思的时候觉得,我应该先去学习单元测试相关的最佳实践,现有一个大致的概念,再去实操会好一些.)在这里总结成一篇文章分享给大家,希望读者朋友们有所收获. 1. 为什么…
简介 Cobra既是一个用来创建强大的现代CLI命令行的golang库,也是一个生成程序应用和命令行文件的程序.下面是Cobra使用的一个演示: Cobra提供的功能 简易的子命令行模式,如 app server, app fetch等等 完全兼容posix命令行模式 嵌套子命令subcommand 支持全局,局部,串联flags 使用Cobra很容易的生成应用程序和命令,使用cobra create appname和cobra add cmdname 如果命令输入错误,将提供智能建议,如 ap…
将cobra下载到 $GOPATH,用命令: go get -v github.com/spf13/cobra/cobra 然后使用 go install github.com/spf13/cobra/cobra, 安装后在 $GOBIN 下出现了cobra 可执行程序.如果你没有配置 $GOBIN,那么可以在$GOPATH/bin 下找到 cobra的可执行软件. cobra程序只能在GOPATH之下使用,所以首先你需要进入到GOPATH的src目录之下,在该目录下,输入: cobra ini…
因为docker及Kubernetes都在用cobra库,所以记录一下. 自定义的地方,高红标出. root.go /* Copyright © 2019 NAME HERE <EMAIL ADDRESS> Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You ma…
golang常用库:cli命令行/应用程序生成工具-cobra使用 一.Cobra 介绍 我前面有一篇文章介绍了配置文件解析库 Viper 的使用,这篇介绍 Cobra 的使用,你猜的没错,这 2 个库都是同一个作者 spf13,他开发了很多与 golang 相关的库,他目前在 google 领导着 golang 产品相关开发工作. Cobra 是关于 golang 的一个命令行解析库,用它能够快速创建功能强大的 cli 应用程序和命令行工具. 它被很多知名的项目使用,比如 Kubernetes…
github地址:https://github.com/spf13/cobra Cobra功能 简单子命令cli 如  kubectl verion    kubectl get 自动识别-h,--help 帮助更过参考官方手册:https://github.com/spf13/cobra kubectl get pod --all-namespaces    get代表命令(command) pod代表事务(args)  --all-namespaces代表标识(flag),command代表…
标准库 string 类型 string 类型支持长度可变的字符串.C++ 标准库将负责管理与存储字符相关的内存,以及提供各种实用的操作.标准库string 类型的目的就是满足对字符串的一般应用. 与其它的标准库类型一样,用户程序要使用 string 类型对象.必须包括相关头文件.假设提供了合适的 using 声明,那么编写出来的程序将会变得简短些: #include <string> using std::string; 1.1 string 对象的定义和初始化 string 标准库支持几个…
package main import "flag" var b bool var q *bool func init(){ var b bool //方式一 flag.Type()*Type Type可以使bool stringint Duration q = flag.Bool("q",false,"新的绑定方式返回的是指向bool类型地址") // 方式2 flag.TypeVar 绑定 flag.BoolVar(&b,"…
死循环延迟调用方法,使用bs4库检索博客首页文章的日期是否与今天日期匹配,不匹配则说明今天没写文章,调用pywin32库进行弹窗提醒我写博客.…
(此文章同时发表在本人微信公众号"dotNET每日精华文章",欢迎右边二维码来关注.) 题记:这是一个简单的入门向导,涉及到GitHub.AppVeyor和Nuget.org. 最近在开发钉钉相关东西,遂简单包装了一个钉钉SDK并开源(https://github.com/keyroads/DingtalkSDK),这就涉及到如何进行持续集成并自动发布Nuget包的问题.之前一直都是使用TFS或者VSTS来做CI,既然是一个托管在GitHub中的开源项目,就从大家常用的持续集成平台(A…
我的车就差一个轮子啦,造好轮子,我就飞上天与太阳肩并肩啦,想想都激动.什么你要自己造轮子,是不是傻,商店里不都是别人造好的吗,又好又方便,只需一点money,你没有money,那你只能做个安静的美男子啦.幸运的是编程世界中的轮子不需要money,今天就来看看如何调用库中的轮子. 今天的内容: 一.修改bug  这篇博客是接着上篇的,没有看的,请点击此出查看:上一篇随笔 现在揭示那个程序的最大的bug:…
(此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:ASP.NET 5和之前的ASP.NET版本有很大的不同,其中之一就是对前端库的管理不再使用Nuget,而是使用业界常用的做法——依赖Bower来管理.那么如何方便的添加前端库呢,今天就简单分享一下我的心得. 要通过Bower来添加前端库(以之前文章介绍过的MetroUI安装为例),打开项目下面的bower.json文件,在“dependencies”里面,添加一行描述:"metro": &q…
在上一篇项目 管理实践教程二.源代码控制[Source Control Using VisualSVN Server and TortoiseSVN]中 我们已经讲解了如何使用TortoiseSVN和VisualSVN Server来做简单的版本控制,这一篇我们将会讲解使用CruiseControl.NET和MSBuild来搭建每日构建系统. 在第一篇项目 管理实践教程一.工欲善其事,必先利其器[Basic Tools] 中我们已经安装了CruiseControl.NET 1.4,因为我们还要用…