怎么使用sublimeGDB+GoSublime调试Web程序
我写了一个简单的http服务器, 在server.go里的main主要使用github.com/codegangsta/cli来启动, 函数如: ```go func main() { app := cli.NewApp() app.Name = "myserver" // 一些配置和调用... app.Run(); } ``` 但我调试时候,在main里的断点都能stop,但是过了 app.run函数后就直接跳出debug了. 我想让这个debug进程常驻,然后输入一个http地址,可以访问到http处理函数进行调试.....阅读全文
使用golang构建一个redis交互命令行
介绍 这是一个使用golang开发的redis交互式命令行,希望能解决一些redis原生cli使用中的痛点。项目处于起步阶段,功能并不完全。 项目地址 原文地址 出发点: 在工作中,会生成很多规律的redis键,如:test_1,test_2,当需要人肉删除test_*键的时候,使用原生redis-cli,痛苦。 在工作中,redis键太多,常常会让人忘记redis键的类型,需要先type再用对应类型的查询命令查询,太累。 特点: 使用一个命令,查询string,hash,list,set,zset类型的数据 批量查询redis键的ttl 批量查询redis键的类型 使用通配符匹配redis键,选择或直接删除redis键 使用table直观展示redis操作情况 命令与使用: git clo...阅读全文
Pdf-Bot,用于使用Headless Chrome生成PDF的API / CLI(命令行接口)
 https://github.com/esbenp/pdf-bo...阅读全文
仿照laravel-artisan实现简易go开发脚手架
# 像Laravel-Artisan一样执行go命令 ## 前言 作为一个`laravel`重度患者,`artisan`是一个不可或缺的功能,可以说这是`laravel`的开发脚手架 可以快速创建需要的文件,加快开发速度 而我目前正在开发的`bingo`框架正是受到`laravel`启发,希望可以快速构建web应用 而一个脚手架是必不可少的东西,所以我实现了一个`bingo sword` 工具 ### laravel-artisan实现思路 我曾经写过artisan的解析,链接在这里[laravel artisan 原理解析](https://silsuer.github.io/2018/08/06/laravel-commands/) 简而言之,就是将 `kernel.php` 中注册的所...阅读全文
开源命令行工具 Parse CLI
Parse 命令行工具允许你通过终端与你的云端代码进行交互。Parse 可以用来创建新的 [Parse](http://www.oschina.net/p/parse) 应用,部署 Cloud Code 到一个现有的应用中,查看一个应用的所有版本等等。 
Hyperledger Fabric v1.1.0安装记录(国内源版) 1. 安装虚拟机 虚拟机软件采用:VirtualBox 操作系统选择:Ubuntu 14.04 内存:4G CPU:2核 硬盘:20G 2.(可选)更改ssh配置使得root可以通过SSH登录 为root设置密码 sudo passwd root 编辑/etc/ssh/sshd_config配置文件,允许root用户通过SSH登录 sudo vi /etc/ssh/sshd_config 修改内容 PermitRootLogin yes 重启sshd服务 sudo service ssh restart 3. 安装必要的工具 sudo apt-get update sudo apt-get install apt-tra...阅读全文
命令行程序构建工具 mkideal/cli
cli是一个用go语言写成的用于快速构建go语言命令行程序的工具。 ## 有些什么特色呢 * 简单,容易上手 * 有安全检查. 包括类型检查,值范围检查,更强大的是自定义的验证函数. * 基于go语言的tag属性实现,参数定义结构化,简洁优雅.支持4种tag: cli,usage,dft, name. * 支持默认值标签dft,可以用环境变量做默认值,支持required声明. * 支持单个flag多个名字,像 -h --help 这样的. * 支持命令树形结构,N层子命令随意玩. * 支持子命令错误纠正提示,hlp会问你是要help吗 * 天然的命令树形结构摇身一变就可以变成HTTP路由了,像$app hello world -> /hello/world * 支...阅读全文
Vue 使用websocket + json + protobuf 与后端交互golang
看这篇文章的时候,千万不要害怕代码,重要的核心的都加注释了,原理很简单!!祝阅读顺利 当学习一门新的语言的时候,总是喜欢先建立一个Demo项目,通过构建一个基本的项目,来了解语言的特点。 对于web的交互,以前常用的技术主要是Ajax、Form表单提交这类,如果要做长连接,可以使用Websocket 关于websocket和socket其实是两个东西,如果要比较的话,应该是拿websocket和http 来比较。 websocket 发送json websocket发送json这是一种常规的方式 值得一提的是,Vue框架中使用axios发送POST请求的时候,默认Content-Type是application/json,所以在后端接受的时候,要做流处理。 比如像PHP的话,要用php://...阅读全文
go语言零基础教程:Redis介绍安装和使用
## Redis介绍安装和使用 ###### @author:Davie ###### 版权所有:北京千锋互联科技有限公司 ### Redis介绍 我们日常的开发,数据都需要进行持久化存储,常见的持久化存储有很多种,比如数据库,文件,计算机内存,甚至云服务器等都是持久化存储数据的方式。而就数据库而言,经常又会被人们分为关系型数据库和非关系型数据库。在我们的项目中,关系型数据库我们使用的是mysql,关系型数据库中存储的数据主要是一些核心业务数据;另外,在我们的项目中,还有一部分数据可能是不太可能变化的,比如应用中的地区数据,城市列表,或者说每天的应用人数的增加量的统计等,这些数据对时效性要求不是特别的高,因此,这个时候我们为了提高应用程序的存储效率,提高程序性能,我们会把一些数据变化不太明显...阅读全文
Go 中使用别名,简单且高效
 ℹ️ 本文基于 Go 1.13。 Go 1.9 版本引入了别名,开发者可以为一个已存在的类型赋其他的名字。这个特性旨在促进大型代码库的重构,这对大型的项目至关重要。在思考了几个月应该以哪种方式让 Go 语言支持别名后,这个特性才被实现。[最初的提案](https://go...阅读全文
centos7快速搭建一个Fabric 1.0的环境
安装docker yum -y install docker docker version 启用docker官方中国区加速器: vim /etc/sysconfig/docker --registry-mirror=https://registry.docker-cn.com service docker start 安装docker-compose yum -y install epel-release yum -y install python-pip pip install --upgrade pip pip install docker-compose 安装go wget https://storage.googleapis.com/golang/go1.8.3.linux-amd6...阅读全文
golang使用github.com/fsouza/go-dockerclient访问container的stats信息
golang使用github.com/fsouza/go-dockerclient访问container的stats信息 例子使用/fsouza/go-dockerclient收集一个container的stats信息,包括CPU percent,Memory Usage和Limit;对于其他值,方法类似参阅API文档获取对应的项即可。 package main import ( "fmt" "time" docker "github.com/fsouza/go-dockerclient" ) func main() { var endpoint string = "unix:///var/run/docker.sock" var client *docker.Client var err ...阅读全文
色温设置库go-sct
Go-sct 是一个色温设置库,操作方式与 f.lux 和 Redshift 相似的 CLI。命令行应用程序会通过 GeoIP 自动确定你的位置并且按时调整色温...阅读全文
IRISnet发起币安DEX上币提案,助力赢50,000 IRIS大奖!
致IRISnet社区成员:我们很高兴地宣布IRISnet(IRIS)现已正式在币安DEX提案并已生效。希望大家来支持本次的上币提案!IRIS Hub 是一个跨链服务枢纽,目前我们已经发布了链接IRIS Hub与币安链(DEX)的网关,并即将在Rainbow 钱包支持通过这个网关的实现双向转账。未来当在IBC(跨链通信协议)启动后,我们计划将此网关转变为IBC的中继。我们相信,IRIS Hub与DEX的整合可以为跨链生态系统带来许多创新机会。详情请看:我们为什么要链接IRIS Hub和币安DEX?但现在目前仅仅是进行了提案,所以我们需要你的帮助!下一步币安链的验证人将对提案进行投票。IRISnet和币安链的验证人们都期待看到我们社区在币安提案贴下的活跃参与,他们尤其关注投票数、回复和浏览量...阅读全文
Go处理PDF
工作中经常会遇到一些pdf文件处理的问题,一千种pdf有一千种处理方式,每次都是绞尽脑汁和这些pdf战斗到底。 本人又是一个gopher,所以这篇文章会以一个goper的视角,列举一下我所经历过的每一种pdf处理场景,比如: pdf渲染 pdf校验 pdf加水印 pdf获取页数 pdf合并 pdf拆分 修复受损pdf pdf转png 识别pdf中的字体 pdf解密 ... 本文大多是场景问题的罗列,可以根据标题摘取自己有兴趣的部分查看 很多pdf的问题我也不是特别专业,如果问题或者疑问欢迎与我交流 一、HTML页面渲染PDF 根据html页面渲染pdf,我使用过以下两种方案: wkhtmltopdf chromedp 1. 使用wkhtmltopdf渲染pdf wkhtmltopdf是一个命...阅读全文
好玩又实用,阿里巴巴开源混沌工程工具 ChaosBlade
减少故障的最好方法就是让问题经常性的发生。在可控范围或环境下,通过不断重复失败过程,持续提升系统的容错和弹性能力。 那么,实施一次高效的混沌工程实验,需要几步呢? 答案:2 步。 ① 登陆 ChaosBlade ② 下载 release 版本,打造故障演练专属工具 高可用架构是保障服务稳定性的核心。 阿里巴巴在海量互联网服务以及历年双11场景的实践过程中,沉淀出了包括全链路压测、线上流量管控、故障演练等高可用核心技术,并通过开源和云上服务的形式对外输出,以帮助企业用户和开发者享受阿里巴巴的技术红利,提高开发效率,缩短业务的构建流程。 例如,借助阿里云性能测试 PTS,高效率构建全链路压测体系,通过开源组件 Sentinel 实现限流和降级功能。这一次,经历了 6 年时间的改进和实践,累计在线...阅读全文
使用 GB 构建 Go project
GB 介绍 Site: https://getgb.io/ Github: https://github.com/constabula... 官网首页介绍A project based build tool for the Go programming language. 所以gb 是一个构建工具,依赖管理插件完成的 gb-vendordoc 为什么用gb,最喜欢的一点是 Project based workflow 基于 projectbashd,而不是 GOPATH bashd 项目不需要必须在 GOPATH 下 项目结构 两个重要的目录 $PROJECT/src/ 我们自己的业务代码 $PROJECT/vendor/src/ 第三方的依赖在这 比如 一个 名...阅读全文
fabric nodejs链码示例2
0 导言 智能合约是区块链中一个非常重要的概念和组成部分。在Fabric中内成为Chaincode,中文翻译为链码。涉及到链码地方都是 Chaincode. 本示例是一个资产交易的示例 主要实现如下的功能: 初始化 A、B 两个账户,并为两个账户赋初始资产值; 在 A、B 两个账户之间进行资产交易; 分别查询 A、B 两个账户上的余额,确认交易成功; 删除账户。 新增账户 主要函数 Init:初始化 A、B 两个账户; Invoke:调用其它函数的入口; transfer:实现 A、B 账户间的转账; query:查询 A、B 账户上的余额; delete:删除账户。 create: 新增账户 注意:Fabric官方提供了两种开发node.js链码的途径:fabric-shim和fabric...阅读全文
Hyperledger Fabric环境搭建
Hyperledger Fabric环境搭建手册 软件及版本要求 软件要求: docker docker-compose git golang 版本要求: docker版本: 17.06.2-ce以上 docker-compose版本:1.14.0以上 golang版本:1.10.x以上 软件安装 Golang安装 下载解压golang压缩包 wget https://storage.googleapis.com/golang/go1.9.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.9.linux-amd64.tar.gz 配置环境变量 vi /etc/profile 添加环境变量配置 #GOBIN export GOBIN=/usr...阅读全文
简单易用的命令行应用,工具库
Golang下的简单易用的命令行应用,工具库。包含运行命令,颜色风格,数据展示,进度显示,交互方法等 ## 截图展示  ## 功能特色 - 使用简单方便,轻量级,无额外依赖 - 支持添加多个命令,并且支持给命令添加别名 - 输入的命令错误时,将会提示相似命令(包含别名提示) - 快速方便的添加选项绑定 `--long`,支持添加短选项 `-s` - 支持绑定参数到指定名称, 支持必须`required`,可选,数组`isArray` 三种设定 - 运行命令时将会自...阅读全文
Golang 如何操作DB2的?
go-db2-example ibm db2是款商用的db,默认支持的编程语言中没有Go,也没有介绍过,今天就演示下Go通过odbc方式连接ibm db2的例子。 DB2 ODBC driver 安装DB2 ODBC driver DB2 ODBC driver的来源有一下几种: db2安装包自带odbc驱动,和常用的jdbc驱动一样,odbc驱动一般都是在安装包中自带。 此外,一些单独的db2套件也含有odbc驱动,如:DB2 Application Development Client, Db2 Run-time Client, Db2 Data Server Runtime client等等 单独的免安装odbc驱动包:db2 driver for ODBC Cli 其中,db2 cl...阅读全文
Codis 3.2 部署配置
Codis 3.2 部署配置一,Codis简介Codis 是一个分布式 Redis 解决方案, 对于上层的应用来说, 连接到 Codis Proxy 和连接原生的 Redis Server 没有显著区别 (不支持的命令列表), 上层应用可以像使用单机的 Redis 一样使用, Codis 底层会处理请求的转发, 不停机的数据迁移等工作, 所有后边的一切事情, 对于前面的客户端来说是透明的, 可以简单的认为后边连接的是一个内存无限大的 Redis 服务。不支持命令列表https://github.com/CodisLabs/codis/blob/release3.2/doc/unsupported_cmds.mdredis的修改https://github.com/CodisLabs/codi...阅读全文
使用Ceph RBD为Kubernetes集群提供存储卷
一旦走上使用Kubernetes的道路,你就会发现这条路并不好走,充满荆棘。即便你使用Kubernetes建立起的集群规模不大,也是需要“五脏俱全”的,否则你根本无法真正将kubernetes用起来,或者说一个半拉子Kubernetes集群很可能无法满足你要支撑的业务需求。在目前我正在从事的一个产品就是这样,光有K8s还不够,考虑到”有状态服务”的需求,我们还需要给Kubernetes配一个后端存储以支持Persistent Volume机制,使得Pod在k8s的不同节点间调度迁移时,具有持久化需求的数据不会被清除,且Pod中Container无论被调度到哪个节点,始终都能挂载到同一个Volume。 Kubernetes支持多种Volume类型,这里选择Ceph RBD(Rados Bloc...阅读全文
在 Go 中构建网络命令行界面
在本文中,我们将使用 `Github` 上提供的软件包 `urfave/cli` 在 Go 中构建一个非常简单的命令行界面,软件包位于 https://github.com/urfave/cli。 我最近在各种托管服务提供商中进行了一次或两次域名迁移,并认为构建一个可用于查询网站名称服务器,CNAME,IP 地址等内容的工具或程序是一个很酷的主意。 本教程的总体目标是让您了解如何构建自己的 CLI,这些 CLI 可以执行各种其他操作,例如网络监视,图像处理等。 > 注 - 可在此处找到本教程的完整代码:[TutorialEdge/Go/go-cli-tutorial](https://github.com/TutorialEdge/Go/tree/master/go-cli-tutorial...阅读全文
golang cli 应用
golang cli 应用封装 命令行应用,基本调用封装、参数获取 go get github.com/ctfang/command 基础使用 代码在 go get github.com/ctfang/command/examples/main.go package main import ( "github.com/ctfang/command" "log" ) func main() { app := command.New() app.AddCommand(Echo{}) app.AddCommand(Hello{}) app.Run() } // Echo 需要实现接口 CommandInterface type Echo struct { } func (Echo) Configu...阅读全文
深入学习 GRPC - 2. 加密非流式的字节结构
本篇主要进行加密非流式 GRPC 的通信在字节层面的讨论,使用带 TLSv1.2 的 nginx 节点代理非加密的 golang 服务端节点,密钥交换使用椭圆曲线,在服务端使用自签名证书,不使用客户端证书,假设读者对 TLS 等已有基本的了解。 使用以下命令生成椭圆曲线密钥和服务端自签名证书: openssl ecparam -genkey -name secp256r1 | openssl ec -out hot.key -aes128 openssl req -new -x509 -days 365 -key hot.key -out hot.crt 上一篇的 proto 和 golang 服务端代码不变,golang 客户端代码变为: package main import ( "co...阅读全文
一个docker命令的访问流程
谢绝转载 序言 之前搞了一段时间docker volume plugin, 为了搞清楚plugin的工作机制,又研究了一阵docker源码的命令执行流程,程序员的记忆空间都是时刻刷新的,为了防止数据丢失,写下来方便以后温习.研究比较粗浅,有不对的地方请各位读者多提意见. docker 版本:docker-ce(18.09) 本文会列出一些docker源码中的函数或者方法,因为篇幅原因会用'...'来省略一些内容,只留下我认为在调用流程中重要的一些内容. 在部分函数中会用注释标注关键点. 以下开始正文 一个docker命令的访问流程 以下是docker-ce代码的主要结构,主要关注前两个文件夹,即客户端和服务端. markdown-img-paste-2018102921143250.png ...阅读全文
Go 网络编程(三) (TCP)
svr : package main import ( "bufio" "fmt" "net" "strings" ) func main() { fmt.Println("Launching server...") ln, _ := net.Listen("tcp", ":8081") conn, _ := ln.Accept() for { message, _ := bufio.NewReader(conn).ReadString('\n') fmt.Print("Message Received:", string(message)) newmessage := strings.ToUpper(message) conn.Write([]byte(newmessage + "\n")...阅读全文
以太坊教程:搭建环境、编写编译一个智能合约
本以太坊教程主要是介绍:搭建一个开发环境、编写编译一个智能合约。 ### 以太坊是什么 以太坊(Ethereum)是一个开源的有智能合约功能的公共区块链平台。通过其专用加密货币以太币(Ether)提供去中心化的虚拟机(“以太虚拟机” Ethereum Virtual Machine)来处理点对点合约。 以太坊的概念首次在2013至2014年间由程序员Vitalik Buterin,受比特币启发后提出,大意为“下一代加密货币与去中心化应用平台”,在2014年通过ICO众筹得以开始发展。目前以太币是市值第二高的加密货币,仅次于比特币。 ### 以太坊区块链是什么? 以太坊区块链有 2 个主要组件: - 数据存储:网络中每笔交易都存储在区块链上。当你部署合约时,就是一笔交易。当你执行合约功能时,也...阅读全文
Golang通过thrift连接Hive简单demo
网上关于golang操作hive的文章很少, 最近在用, 研究的过程中记一点代码片段. package my_hive_cli import ( "..../hive/tcliservice" "git.apache.org/thrift.git/lib/go/thrift" ) func NewClient(host string, username string, password string, dbname string) (*tcliservice.TCLIServiceClient, error) { transport, err := thrift.NewTSocket(host) if err != nil { return nil, err } if err := tran...阅读全文
golang 控件发生器、前端的代码库和扩展包和移动微服务
吐血整理的GO语言部分框控件、库代码集和包和扩展应用的应用包!带你开启机器学习!还有人对大脑的实际初始化的新的能力不平昀砥跖。 2014年6月23号从 · Pearl 转移到 第五大代的设计应用语言筵等作为一个Perl设计语言工作者,Go语言,很多程序员无法及时了解到Go语言的框架控件、代码库和软件应用扩展包。近日,avelino分享了一张非常完整且庞大的表单,包括命令行、数据库、Web框架、机器学习、自然语言处理......以下是部分内容截取,感谢咖啡的开发人员给予配合。 标准CLI 用于构建标准或基本命令行应用程序的库。 argv - 使用bash语法将库命令行字符串拆分为参数数组。 cli - 基于golang的功能丰富且易于使用的命令行程序包。 cli-init - 开始构建Gola...阅读全文
Kubernetes 基于GlusterFS的动态存储管理StorageClass
说明 最近由于需要部署有状态服务,没有云环境的支持,不能很好的通过cloud provider调用云磁盘EBS,所以在node节点部署了一套glusterFS分布式文件存储系统,用来提供非结构化数据存储,存储图片,大文件等等. Kubernetes中使用GlusterFS作为持久化存储,要提供storageClass使用需要依赖Heketi工具。Heketi是一个具有resetful接口的glusterfs管理程序,作为kubernetes的Storage存储的external provisioner。 “Heketi提供了一个RESTful管理界面,可用于管理GlusterFS卷的生命周期。借助Heketi,像OpenStack Manila,Kubernetes和OpenShift这样的...阅读全文
Go的错误处理是优雅的
英文原文链接:http://davidnix.io/post/error-handling-in-go/ Go的初学者经常批评Go的错误处理机制。请注意,我没有说异常处理。Go没有异常,虽然可以用panic and recover的模拟它和恢复。但我强烈建议反对。这是一个反模式,如果使用过于频繁。我记得上个月七牛的许式伟在上海GopherMeetup上也提到过这个问题。 Go允许多个返回值,按照惯例,如果事情会出错,函数返回一个错误,因为它的最后一个返回值 func ETPhoneHome(msg string) (string, error) { // implementation } 123 func ETPhoneHome(msg string) (string, error) { /...阅读全文
ProtoBuf — Golang 简单的例子
greet.proto syntax = "proto3"; package greet; option go_package = "greetpb"; message Greeting { string first_name = 1; string last_name = 2; } message GreetRequest { Greeting greeting = 1; } message GreetResponse { string result = 1; } message GreetManytimesRequest { Greeting greeting = 1; } message GreetManytimesResponse { string result = 1; } mes...阅读全文
Building a CLI tool?
<p>I highly recommend trying <a href="https://github.com/jawher/mow.cli">https://github.com/jawher/mow.cli</a></p> <p>Our project (<a href="https://pki.io">https://pki.io</a>) was using docopt, but the requirements changed and docopt wasn't flexible enough to cope. I looked at alter...阅读全文
Etcd clientV3 使用TLS证书存取KV
为了保证数据传输的安全行Etcd clientV3提供了通过tls,https通讯。通过tls.Config可以轻松实现。具体看如下示例代码就能理解 package main import ( "fmt" "io/ioutil" "log" "time" "crypto/tls" "crypto/x509" "go.etcd.io/etcd/clientv3" "golang.org/x/net/context" ) var ( dialTimeout = 5 * time.Second requestTimeout = 4 * time.Second endpoints = []string{"https://172.17.84.204:2379", "https://172.17.84....阅读全文
GoCenter 助力 Golang 全速前进
关注世界领先 DevOps 平台 JFrog背景Go 语言是 Google 开发的一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言。为了方便搜索和识别,有时会将其称为 Golang。自2009年11月 Google 正式宣布推出,成为开放源代码项目以来,Go 语言已成为当今开发人员和 DevOps 领域最流行的语言之一, 它被用于设计和编写 Kubernetes 和 Helm。但是,相比语言本身已经得到了广泛的普及和使用,Go 语言的包管理方案却大大滞后了。 Go 语言生态系统中缺少的是标准化——没有用于依赖关系管理的标准工具, 也没有标准的包格式或兼容的包仓库规范。这意味着开发人员无法使用 Go 语言创建可重现的构建, 这是一个相当大的问题。这些年来, 社区推出了诸如 dep、...阅读全文
使用go的io.Pipe优雅的优化中间缓存
BEFORE 今天发现,go的优势除了它的轻量线程(goroutine)提供了更方便灵活的并发编程模式之外,它的I/O机制也设计的非常给力。 之前,我在向其他服务器发送json数据时,都需要先声明一个bytes缓存,然后通过json库把结构体中的内容mashal成字节流,再通过Post函数发送。代码如下: package main import ( "bytes" "encoding/json" "io/ioutil" "log" "net/http" ) func init() { log.SetFlags(log.Lshortfile) } func main() { cli := http.Client{} msg := struct { Name, Addr string Price...阅读全文
Hyperledger Fabric1.3安装部署以及动态Org、Peer的实现
基础环境安装与配置 关闭防火墙 systemctl stop firewalld.service systemctl disable firewalld.service 设置安全 vim /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELi...阅读全文
兄弟连区块链教程以太坊源码分析CMD深入分析(一)
兄弟连区块链教程以太坊源码分析CMD深入分析。 cmd包分析 cmd下面总共有13个子包,除了util包之外,每个子包都有一个主函数,每个主函数的init方法中都定义了该主函数支持的命令,如 geth包下面的: func init() { // Initialize the CLI app and start Geth app.Action = geth app.HideVersion = true // we have a command to print the version app.Copyright = "Copyright 2013-2017 The go-ethereum Authors" app.Commands = []cli.Command{ // See chaincm...阅读全文
Go 的 Raft 实现Finn
Finn 是在 Go 中构建 Raft 实现的一个快速而简单的框架。 它使用 Redcon 进行网络传输和 Hashicorp Raft。 还可以选择使用 LevelDB,BoltDB 或 FastLog 进行日志持久化。 用于快速创建容错群集的简单 API 使用 raft-redcon 传输的快速网络协议 用于日志持久性的可选后端。 LevelDB,BoltDB 或 FastLog 可调一致性和耐久性标准 全功能的实例帮助 jumpstart 集成 内置 raft 命令,用于监视和管理集群 支持 Redis 日志格式 与客户端工作,如 redigo,redis-py,node_redis,jedis 和 redis-cli 安装 Go 然后运行 `go get`...阅读全文
用 Go 构建一个区块链 -- Part 4: 交易(1)
翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 交易(transaction)是比特币的核心所在,而区块链的唯一目的,也正是为了能够安全可靠地存储交易。在区块链中,交易一旦被创建,就没有任何人能够再去修改或是删除它。在今天的文章中,我们将会开始实现交易这个部分。不过,由于交易是很大的话题,我会把它分为两部分来讲:在今天这个部分,我们会实现交易的通用机制。在第二部分,我们会继续讨论它的一些细节。 此外,由于代码实现变化很大,就不在文章中罗列所有代码了,这里 可以看到所有的改动。 没有...阅读全文
Golang之命令行操作(第三章)
参考 简书说明系列 https://www.jianshu.com/c/bef4e958ecd6 视频教学系列 https://www.imooc.com/learn/1021 正文 进入到项目代码 main包的路径下执行 go install命令,会在 GOPATH/bin路径下面生成一个可执行文件,比如 coin.exe 然后通过 coin 命令 参数的形式执行 go代码,每次输入一次,都表示执行一次main方法(支持带参数的执行main方法),而不是启动一个进程持续监听 代码实现:依赖 flag和 os 类库,读取执行main方法的参数的个数和参数值 flag指向一个命令,os用来获取参数的值和个数 默认命令算一个参数 比如 coin addCoin 命令就是2个参数 func (cl...阅读全文
Socket.io 快速搭建 和 注意事项
websocket是一种比较简单的协议,各种语言中都有很多实现版本,实际上它们差别不大,都是在websocket的基础上做些封装,随便选一个即可。 socket.io就是众多websocket库中的一种,它并不像其它库那样简单地实现了一下websocket,而是在websocket外面包裹了厚厚的一层。普通的websocket(例如ws库)只需要服务端就够了,socket.io自定义了一种基于websocket的协议,所以socket.io的服务端和客户端必须配套。简言之,如果服务端使用socket.io,那么客户端就没得选了,必然也用socket.io的客户端。 socket.io的服务端是基于node实现的(只提供了这一种语言的服务端实现),同时它提供了多种语言的客户端,包括JavaSc...阅读全文
shortcut-redis-cli.sh:通用redis-cli终端运维管理快捷脚本(源码持续更新)
shortcut-redis-cli通用redis-cli终端运维管理快捷脚本 Version 1.0.0shortcut-redis-cli.sh:通用redis-cli终端运维管理快捷连接脚本(持续更新) 【主要用途】不同运维场景下快捷使用redis-cli终端连接和切换Copyright: 2016 Jack Liu (Liu Jianqiu 秋)License: MITVersion: Version 1.0.0Email: ceophp@163.comQQ: 1099729311 404691073(work used) Created Init By Date: 2016-03-18【编写原因】实际工作中几乎每天经常用到redis-cli管理redis实例, 一些重复性的操作习惯...阅读全文
在Ubuntu 18.04上搭建HyperLedger Fabric 1.2.0 环境
00 导言 由 Linux 基金会发起创建的开源区块链分布式账本 —— Hyperledger Fabric,已经迎来了 1.2.0 版本。该项目着重于性能和可靠性,以及推动区块链和分布式账本技术的跨行业协作。Hyperledger Fabric 可用于全球供应链管理、金融交易、资产账和去中心化的社交网络等场景,但无意以此来构建一种加密货币。 下面我们将带着大家一步一步来搭建自己的HyperLedger Fabric开发环境。老司机已经发车,赶紧跟上。。。 01 操作系统准备 我们选择了ubuntu18.04这个版本。具体怎么安装请参考我们之前的文章 《在VirtualBox里安装用于区块链开发的Ubuntu操作系统》 02 安装curl 后面的步骤我们需要用到curl命令来下载安装脚本和其...阅读全文
Hyperledger Fabric 链码的开发环境
title: Hyperledger Fabric 链码的开发环境 tags: Hyperledger Fabric ,Blockchain,Chaincode 前面介绍过Hyperledger Fabric环境搭建和网络部署,现在我们开始链码开发。 Fabric的fabric-sample项目中提供了一个chaincode的开发环境,使chaincode在开发阶段可以进行快速开发、构建、运行、调试。 1. 编写chaincode代码 首先我们应该编写自己的智能合约,然后在fabric-samples/chaincode下新建文件夹,并把代码存放在改文件夹下面。 在chaincode目录下给我自带了几个项目,我们选择sacc这个项目。 image 2.启动网络 打开一个终端 首先进入chai...阅读全文