开源软件

开源软件

终于有一个靠谱的Go写GUI的库了

文章分享tkk 回复了问题 • 25 人关注 • 17 个回复 • 12522 次浏览 • 2017-04-05 16:41 • 来自相关话题

版本更新 | Mesos调度器Swan v0.2来啦

开源程序数人云 发表了文章 • 0 个评论 • 460 次浏览 • 2016-12-13 19:22 • 来自相关话题

数人云Mesos调度器 Swan开源已经... 查看全部


数人云Mesos调度器 Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。今天小数带来了Swan v0.2的新版本,添加了很多新功能,大家快来看看吧——




Feature List



  • Uri 支持:支持自定义资源,支持多资源下载

  • PortIndex:支持端口命名,健康检测支持portIndex,portName和portValue

  • Cli:命令行工具

  • Heathcheck:支持mesos自带的healthcheck,http和tcp两种

  • Raft:高可用,分布式数据复制和leader选举

  • Proxy:自带proxy功能,支持负载均衡

  • DNS:自带DNS功能,支持域名解析

  • 一容器一IP:支持IP地址固定分配,一容器一IP

  • Constraints:支持约束条件,UNIQUE和LIKE


Fork me on GitHub!
https://github.com/Dataman-Cloud/swan


关于数人云Mesos调度器Swan


Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

json 解析器哪家强?

开源程序taowen 发表了文章 • 8 个评论 • 1197 次浏览 • 2016-12-07 12:42 • 来自相关话题

全文链接: https://github.com/json-iterator/go-benchmark查看全部

全文链接: https://github.com/json-iterator/go-benchmark


目的不是推销 json-iterator 。而是证明 json-iterator 不比其他的库更慢,从而使得大家可以把吐槽点放到其他方面:比如特性是不是齐全, api 是不是友好。重新发明 json 解析器是因为经常需要处理奇怪格式的 json ,而又不想把数据转两遍。市面上没有 api 满足我的需求的,后面我会专门写一篇 api 介绍的文章来演示 json-iterator 的独特性。( https://github.com/json-iterator/go/blob/master/README.md



  • jsonparser: https://github.com/buger/jsonparser

  • jsoniter pull-api: https://github.com/json-iterator/go

  • jsoniter reflect-api: https://github.com/json-iterator/go/blob/master/jsoniter_reflect.go

  • encoding/json: golang standard lib

  • easy json: https://github.com/mailru/easyjson


测试设备



  • CPU: i7-6700K @ 4.0G

  • Level 1 cache size: 4 x 32 KB 8-way set associative instruction caches

  • Level 2 cache size: 4 x 256 KB 4-way set associative caches

  • Level 3 cache size: 8 MB 16-way set associative shared cache

  • Go: 1.8beta1


small payload


https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_small_payload_test.go



































jsonparser jsoniter pull-api jsoniter reflect-api encoding/json easyjson
599 ns/op 515 ns/op 684 ns/op 2453 ns/op 687 ns/op
64 B/op 64 B/op 256 B/op 864 B/op 64 B/op
2 allocs/op 2 allocs/op 4 allocs/op 31 allocs/op 2 allocs/op

encoding/json 在 i7-6700K 上性能还不错,但是在缓存小一些的 cpu 上性能要比这慢更多。


small


medium payload



































jsonparser jsoniter pull-api jsoniter reflect-api encoding/json easyjson
5238 ns/op 4111 ns/op 4708 ns/op 24939 ns/op 7361 ns/op
104 B/op 104 B/op 368 B/op 808 B/op 248 B/op
4 allocs/op 4 allocs/op 14 allocs/op 18 allocs/op 8 allocs/op

https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go


json-iterator 的反射 api 也是相当快的。


medium


large payload


https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_large_payload_test.go



























jsonparser jsoniter pull-api encoding/json
38334 ns/op 38463 ns/op 290778 ns/op
0 B/op 0 B/op 2128 B/op
0 allocs/op 0 allocs/op 46 allocs/op

jsonparser 在大部分字段不使用的时候,要快那么一丁点。


large


large file


test file used: https://github.com/json-iterator/test-data/blob/master/large-file.json



























jsonparser jsoniter pull-api encoding/json
42698634 ns/op 37760014 ns/op 235354502 ns/op
67107104 B/op 4248 B/op 71467896 B/op
19 allocs/op 5 allocs/op 272477 allocs/op

jsonparser 等其他一大票 json 解析器都是以 []byte 作为输入的,简直是为跑分而生。关于这一点 jackson 的作者也有吐槽( https://www.infoq.com/news/2014/05/jackson-founder-responds )。而 jsoniter 可以支持 io.Reader 作为输入,对于大文件处理非常友好。


large-file

视频教程:玩转数人云Mesos调度器Swan

开源程序数人云 发表了文章 • 0 个评论 • 425 次浏览 • 2016-11-17 11:25 • 来自相关话题

数人云开源第二弹!

数人云Mesos调度器Swan开源已经... 查看全部

数人云开源第二弹!


数人云Mesos调度器Swan开源已经一周多了,收到很多小伙伴的帮助和反馈,小数在这里表示感谢^_^
数人云工程师为Swan的使用录制了视频,帮助大家更好更快地了解Swan。


视频地址:http://v.qq.com/x/page/r0346559nfx.html


Fork me on GitHub!!https://github.com/Dataman-Cloud/swan


关于Swan


Swan基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。未来,数人云Swan团队还将努力实现调度策略、高可用服务发现、网络管理、编排,以及任务抢占等功能。

golang内存检测工具

文章分享sheepbao 回复了问题 • 8 人关注 • 4 个回复 • 1781 次浏览 • 2016-11-09 19:22 • 来自相关话题

动手造轮 | 一款Bash 脚本 +HTTP 请求工具 +JSON 解析工具组成的测试小工具

开源程序数人云 发表了文章 • 2 个评论 • 661 次浏览 • 2016-11-03 12:23 • 来自相关话题

数人云开源一款容器管理工具Crane,Crane开发过程中,为了保证API的健壮性和稳定性, 数人云开发团... 查看全部


数人云开源一款容器管理工具Crane,Crane开发过程中,为了保证API的健壮性和稳定性, 数人云开发团队自制了一套适合Crane API测试的小工具。它也适用于其他接口测试,小数发现很多朋友对它感兴趣,就勤劳地搬运过来,希望能为大家提供一个参考和思路。



针对Crane团队只向外输出API的特点, 选择测试工具是秉着以下原则的:



  • 第一, 功能不要太复杂,学习曲线不能太陡, 功能够用就行;

  • 第二, 可编程要好, 最好不要有界面,程序员友好。


于是一款简单的Bash脚本+HTTP 请求工具+JSON解析工具组成的测试小工具雏形出现了。


下面给大家展现这款工具的构成


Bash脚本: 测试工具的粘合剂, 不是Java也不是Python, 用Bash简单易用,功能强大。
Httpie: 一款类似curl的http工具, 不过比curl简单的多, 尤其是想发个JSON请求时候, 更简单。
jq: jq是一款命令行解析JSON文本的工具, 支持非常多的语法解析构造重组JSON文本。


下面依次给大家介绍一下httpie和jq的基本用法


1. 例子说明如何使用httpie


httpie在terminal下的命令是http, 先来几个简单的例子给演示一下用法。


http get http://httpbin.org/get header:header-content



其中, http是命令, get是请求method, http://httpbin.org 是请求地址, httpbin是一个http的测试服务; 用冒号相连的参数代表着HTTP请求头, 用等号连接为请求body中的JSON键和值。 httpie默认的请求为json请求, 所以不用过多指明,header已经加上了Content-Type:application/json。


http post http://httpbin.org/post header:header-content json-key=json-value



http支持很多命令行选项, 介绍一个有意思的是 --check-status, check-status是把http response的非200值设置成进程的exit code, 比如:



如上所示, 请求一个不存在的地址时候进程退出符号变成了4。 我们将大量使用这个feature来判断返回值。


2. 例子说明如何使用jq


下面我们用几个例子介绍一下jq的用法。



上图演示如何提取一个json的key。



如何提取一个嵌套的key。



提取数组中的元素。


篇幅关系我们不过多展示jq的高级功能, 除了基本的解析和构造以外,jq支持大量的filter, 如有兴趣可参考https://stedolan.github.io/jq/ ... tions


3. Crane测试工具的几个场景


场景一: 我期望测试API的HTTP测试的返回状态比如200, 404, 500


首先bash造了几个基本的函数来输出错误, 和判断状态



使用方法



场景二: 登录过程测试



更多的测试例子可参考https://github.com/Dataman-Clo ... _test


至此,一款可用的测试工具出炉了, 虽然简单,不过功能恰到好处,非常适合我们的场景, 再也不怕API出错发现不了了。 聪明的同事们把这工具配到了jenkins和单元测试一起执行, 出错了还能得到邮件通知, 酷极了。

go+lua的分布式计算工具--Gleam

文章分享themoonstone 发表了文章 • 0 个评论 • 1223 次浏览 • 2016-10-29 21:04 • 来自相关话题

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。 Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go... 查看全部

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。
Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go中构建,用户定义的计算可以用Lua,Unix管道工具或其它任何流程序编写。下面是它的安装方式和具体使用实例:


安装方式:


1、安装go



2、安装luaJIT



3、将自定义的MessagePack.lua放在luajit可以找到的文件夹下。



4、 安装测试


如果出现以下问题,只需复制MessagePack.lua到其中一个路径。



  • luajit: (command line):1: module 'MessagePack' not found:

  • no field package.preload['MessagePack']

  • no file './MessagePack.lua'

  • no file '/usr/local/share/luajit-2.0.4/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack/init.lua'

  • no file './MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/loadall.so'


使用实例:


package main

import (
"os"

"github.com/chrislusf/gleam"
)

func main() {

gleam.New().TextFile("/etc/passwd").FlatMap(`
function(line)
return line:gmatch("%w+")
end
`).Map(`
function(word)
return word, 1
end
`).ReduceBy(`
function(x, y)
return x + y
end
`).Fprintf(os.Stdout, "%s,%d\n").Run()
}

通过以上内容、我们知道Geam的安装和使用都比较简单、而且基于golang和lua简单的语法规则和高效和并发性能、它也可以给用户带来更好的开发体验。希望有兴趣的同学可以享受到Gleam给大家带来的便利


源文链接:


https://github.com/chrislusf/gleam

SSH 服务器teleport

开源程序itfanr 发表了文章 • 0 个评论 • 541 次浏览 • 2016-10-25 12:34 • 来自相关话题

Teleport 1.2 版本发布了,Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器。其目的是为了替代 sshd。

查看全部

Teleport 1.2 版本发布了,Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器。其目的是为了替代 sshd。


https://github.com/gravitational/teleport

TensorFlow支持Go语言了

文章分享astaxie 发表了文章 • 1 个评论 • 2872 次浏览 • 2016-10-19 11:12 • 来自相关话题

TensorFlow 简介

TensorFlow是Google在2015年11月份开源的人工智能系统(Github项目地址),是之前所开发的深度学习基础架构DistBelief的改进版本,该系统可以被用于语音识别、图片识别等多个领域。<... 查看全部

TensorFlow 简介


TensorFlow是Google在2015年11月份开源的人工智能系统(Github项目地址),是之前所开发的深度学习基础架构DistBelief的改进版本,该系统可以被用于语音识别、图片识别等多个领域。


官网上对TensorFlow的介绍是,一个使用数据流图(data flow graphs)技术来进行数值计算的开源软件库。数据流图中的节点,代表数值运算;节点节点之间的边,代表多维数据(tensors)之间的某种联系。你可以在多种设备(含有CPU或GPU)上通过简单的API调用来使用该系统的功能。TensorFlow是由Google Brain团队的研发人员负责的项目。


https://github.com/tensorflow/tensorflow/tree/master/tensorflow/go


详细的讨论在这里,https://github.com/tensorflow/tensorflow/issues/10#issuecomment-245687757

可视化系统监控工具 Cloudinsight Agent 正式开源

开源程序Cloudinsight 发表了文章 • 5 个评论 • 1153 次浏览 • 2016-10-18 16:03 • 来自相关话题

很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议... 查看全部


很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎各位参与到 Cloudinsight Agent 的开发和迭代中来。


为什么要用 Golang 重写和开源


Cloudinsight是一个可视化系统监控工具,能够对数据指标进行聚合、分组、过滤、 管理、计算;并提供团队协作功能,共同管理数据和报警事件。而这些的关键,正是 Cloudinsight Agent。


目前探针存在的问题:



  • 各个服务的数据抓取存在强依赖关系,任何一个服务阻塞都可能导致探针进程挂掉。

  • 缺乏对 log 和 json 的支持,用户需要通过 sdk 解析相关数据。

  • 针对 自定义Plugin 的支持不够灵活,用户需要熟悉 Python,并按照探针定义好的接口上传数据。

  • 探针使用 Omnibus 进行打包部署,虽然能解决用户安装上的一些问题,但对于新人来说,上手确实不是件容易的事,况且这个项目本身也有一些 bug,经历过的人自然懂。


用 Golang 重写:



  • 解决以上提到的种种问题。

  • 优化探针架构。

  • 提升探针性能。

  • 开源,接受社区的监督,让深度用户可以参与到探针的版本迭代中来。


现在 Golang 版探针还是 Beta 版,所以支持的平台服务还不多,但这正是我们将 Cloudinsight Agent 上的工作推向开源的第一步,也希望有更多的开发者参与进来,让项目能有更快的进展。


项目计划


增加支持的平台和平台服务


目前用 Golang 重写的 Cloudinsight Agent 仅在 Linux 上进行了测试,未来会逐渐将原有 Python 探针支持的平台和平台服务替换至 Golang 版本,包括但不限于:


加入项目



$ mkdir -p $GOPATH/src/github.com/cloudinsight 
$ cd $GOPATH/src/github.com/cloudinsight
$ git clone https://github.com/cloudinsight/cloudinsight-agent
$ cd cloudinsight-agent $ make build

使用


首次使用需设置 License Key,可在 https://cloud.oneapm.com/#/settings 中获取


$ cp cloudinsight-agent.conf.example cloudinsight-agent.conf 
$ vi cloudinsight-agent.conf
...
license_key = "*********************"

在前台中运行命令


$ ./bin/cloudinsight-agent

致谢


从 15 年 8 月至今,Cloudinsight Agent 经过了 20 余次的迭代,从第一天的的 20 个用户发展到现在 5 万多的探针数,感谢长久以来支持 Cloudinsight 和提供宝贵建议的用户和开发者们,也再次感谢以下影响了我们的优秀的开源项目:



在项目中有代码贡献的开发者,Cloudinsight 将送出一件限量 Tee 作为答谢。


Cloudinsight 官网:Cloudinsight.oneapm.com 欢迎访问了解



图:在 Cloudinsight 中用标签进行集群管理

实时文件监控

文章分享themoonstone 发表了文章 • 1 个评论 • 2051 次浏览 • 2016-10-15 14:11 • 来自相关话题

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改 查看全部

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改

特征:



  • 可同时构建,安装,测试,Fmt和运行

  • 支持在文件更改时重新加载(重新构建,重新安装和重新运行)

  • 支持观看自定义路径

  • 支持观看特定的文件扩展名

  • 多个项目支持

  • 支持输出流

  • 执行时间

  • 高度可定制

  • 快速运行


原文链接:
https://github.com/tockins/realize

Rikka - 极简多插件私人图床

开源程序7sDream 发表了文章 • 3 个评论 • 1074 次浏览 • 2016-10-14 12:23 • 来自相关话题

OvO 终于有个 Go 社区了……我来发个学 Golang 的时候练手的一个东西吧……

简介

Rikka 是一个极简的图床系统,设计理念是让每个人都能有个自己的好用的图床。为了极简,去掉了上传历史的功能,所有的一切都按照 ... 查看全部

OvO 终于有个 Go 社区了……我来发个学 Golang 的时候练手的一个东西吧……


简介


Rikka 是一个极简的图床系统,设计理念是让每个人都能有个自己的好用的图床。为了极简,去掉了上传历史的功能,所有的一切都按照 上传-复制-关闭-粘贴 的使用流程来设计。为了方便每个人自己部署,封装成了 Docker Image。DaoCloud 的一个 128M 的实例都能愉快的跑 Rikka,内存占用大约 10 - 20M。


因为是在我刚学 Go 的时候开的项目,所以我在有意的尽量不使用其他模块,专注于用自带 package 完成功能,对于其他初学者可能是个不错的例子哟。


特点/Feature:



  • 极简,不保存上传历史

  • 支持将图片链接复制成多种格式

  • 文件储存部分插件化,有很多可用的插件,比如:新浪微博,七牛云,又拍云,腾讯云等

  • 提供 API

  • Web 服务和 RESTful API 服务模块化

  • CLI 工具

  • 只保证支持较新版本的 Chrome/Firefox/Safari

  • 首页标志很可爱

  • 维护者貌似很活跃 :)


目前支持的图片储存插件



  • 本地服务器

  • 七牛云

  • 又拍云

  • 新浪微博

  • 腾讯云 COS

  • 腾讯云 CI


可能以后还会加啦,因为是插件形式,所以加起来很简单。应该以后会有 Imgur 和 Flickr 插件吧。
恩,其实可以自己写插件的,但是我现在还没写插件的编写文档。不过把目前我写的几个插件看完应该也就明白怎么写了,很 Easy 的~


截图/Demo


首页:


homepage


预览页面:


viewpage


我在 DaoCloud 用免费配额搭了个 Rikka 做 Demo:http://7sdream-rikka-demo.daoapp.io/


密码是:rikka


感兴趣的可以去试试,最大图片大小 5M。不过这只是 Demo 哟,不要真的用这个啦,如果想自己搭个自用的 Rikka 的话可以看:部署文档图文教程


我自己也在腾讯云部署了一个:http://akkir.me 但是这个就不告诉你们密码咯……毕竟是自用的。


API/CLI


Rikka 是有 RESTFul 的 API 的,文档在这里


然后我还写了个 CLI 工具方便命令行使用:文档|下载


放个使用截图吧:



然后是多张上传:



计划中是有跨平台 GUI 想法的,不过现在还没动手。


项目地址


嘎嘎嘎 项目地址留在最后:https://github.com/7sDream/rikka


Docker Image:https://hub.docker.com/r/7sdream/rikka/


如果刚开始学 Golang 的小伙伴应该可以稍微看看当作入门例子。


功力雄厚的同志们就来多提提意见吧~不甚感激!


对了对了,有谁知道 Docker Container 的 Logs 怎么和 Fail2Ban 结合起来使用呀?只能在 Container 里装个 Fail2Ban 么?

myLG, 命令行网络诊断工具

Go开源项目ityike 回复了问题 • 13 人关注 • 7 个回复 • 1720 次浏览 • 2016-10-14 09:21 • 来自相关话题

实时文件监控

文章分享themoonstone 发表了文章 • 1 个评论 • 2051 次浏览 • 2016-10-15 14:11 • 来自相关话题

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改 查看全部

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改

特征:



  • 可同时构建,安装,测试,Fmt和运行

  • 支持在文件更改时重新加载(重新构建,重新安装和重新运行)

  • 支持观看自定义路径

  • 支持观看特定的文件扩展名

  • 多个项目支持

  • 支持输出流

  • 执行时间

  • 高度可定制

  • 快速运行


原文链接:
https://github.com/tockins/realize

终于有一个靠谱的Go写GUI的库了

回复

文章分享tkk 回复了问题 • 25 人关注 • 17 个回复 • 12522 次浏览 • 2017-04-05 16:41 • 来自相关话题

golang内存检测工具

回复

文章分享sheepbao 回复了问题 • 8 人关注 • 4 个回复 • 1781 次浏览 • 2016-11-09 19:22 • 来自相关话题

myLG, 命令行网络诊断工具

回复

Go开源项目ityike 回复了问题 • 13 人关注 • 7 个回复 • 1720 次浏览 • 2016-10-14 09:21 • 来自相关话题

版本更新 | Mesos调度器Swan v0.2来啦

开源程序数人云 发表了文章 • 0 个评论 • 460 次浏览 • 2016-12-13 19:22 • 来自相关话题

数人云Mesos调度器 Swan开源已经... 查看全部


数人云Mesos调度器 Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。今天小数带来了Swan v0.2的新版本,添加了很多新功能,大家快来看看吧——




Feature List



  • Uri 支持:支持自定义资源,支持多资源下载

  • PortIndex:支持端口命名,健康检测支持portIndex,portName和portValue

  • Cli:命令行工具

  • Heathcheck:支持mesos自带的healthcheck,http和tcp两种

  • Raft:高可用,分布式数据复制和leader选举

  • Proxy:自带proxy功能,支持负载均衡

  • DNS:自带DNS功能,支持域名解析

  • 一容器一IP:支持IP地址固定分配,一容器一IP

  • Constraints:支持约束条件,UNIQUE和LIKE


Fork me on GitHub!
https://github.com/Dataman-Cloud/swan


关于数人云Mesos调度器Swan


Swan是基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

json 解析器哪家强?

开源程序taowen 发表了文章 • 8 个评论 • 1197 次浏览 • 2016-12-07 12:42 • 来自相关话题

全文链接: https://github.com/json-iterator/go-benchmark查看全部

全文链接: https://github.com/json-iterator/go-benchmark


目的不是推销 json-iterator 。而是证明 json-iterator 不比其他的库更慢,从而使得大家可以把吐槽点放到其他方面:比如特性是不是齐全, api 是不是友好。重新发明 json 解析器是因为经常需要处理奇怪格式的 json ,而又不想把数据转两遍。市面上没有 api 满足我的需求的,后面我会专门写一篇 api 介绍的文章来演示 json-iterator 的独特性。( https://github.com/json-iterator/go/blob/master/README.md



  • jsonparser: https://github.com/buger/jsonparser

  • jsoniter pull-api: https://github.com/json-iterator/go

  • jsoniter reflect-api: https://github.com/json-iterator/go/blob/master/jsoniter_reflect.go

  • encoding/json: golang standard lib

  • easy json: https://github.com/mailru/easyjson


测试设备



  • CPU: i7-6700K @ 4.0G

  • Level 1 cache size: 4 x 32 KB 8-way set associative instruction caches

  • Level 2 cache size: 4 x 256 KB 4-way set associative caches

  • Level 3 cache size: 8 MB 16-way set associative shared cache

  • Go: 1.8beta1


small payload


https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_small_payload_test.go



































jsonparser jsoniter pull-api jsoniter reflect-api encoding/json easyjson
599 ns/op 515 ns/op 684 ns/op 2453 ns/op 687 ns/op
64 B/op 64 B/op 256 B/op 864 B/op 64 B/op
2 allocs/op 2 allocs/op 4 allocs/op 31 allocs/op 2 allocs/op

encoding/json 在 i7-6700K 上性能还不错,但是在缓存小一些的 cpu 上性能要比这慢更多。


small


medium payload



































jsonparser jsoniter pull-api jsoniter reflect-api encoding/json easyjson
5238 ns/op 4111 ns/op 4708 ns/op 24939 ns/op 7361 ns/op
104 B/op 104 B/op 368 B/op 808 B/op 248 B/op
4 allocs/op 4 allocs/op 14 allocs/op 18 allocs/op 8 allocs/op

https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_medium_payload_test.go


json-iterator 的反射 api 也是相当快的。


medium


large payload


https://github.com/json-iterator/go-benchmark/blob/master/src/github.com/json-iterator/go-benchmark/benchmark_large_payload_test.go



























jsonparser jsoniter pull-api encoding/json
38334 ns/op 38463 ns/op 290778 ns/op
0 B/op 0 B/op 2128 B/op
0 allocs/op 0 allocs/op 46 allocs/op

jsonparser 在大部分字段不使用的时候,要快那么一丁点。


large


large file


test file used: https://github.com/json-iterator/test-data/blob/master/large-file.json



























jsonparser jsoniter pull-api encoding/json
42698634 ns/op 37760014 ns/op 235354502 ns/op
67107104 B/op 4248 B/op 71467896 B/op
19 allocs/op 5 allocs/op 272477 allocs/op

jsonparser 等其他一大票 json 解析器都是以 []byte 作为输入的,简直是为跑分而生。关于这一点 jackson 的作者也有吐槽( https://www.infoq.com/news/2014/05/jackson-founder-responds )。而 jsoniter 可以支持 io.Reader 作为输入,对于大文件处理非常友好。


large-file

视频教程:玩转数人云Mesos调度器Swan

开源程序数人云 发表了文章 • 0 个评论 • 425 次浏览 • 2016-11-17 11:25 • 来自相关话题

数人云开源第二弹!

数人云Mesos调度器Swan开源已经... 查看全部

数人云开源第二弹!


数人云Mesos调度器Swan开源已经一周多了,收到很多小伙伴的帮助和反馈,小数在这里表示感谢^_^
数人云工程师为Swan的使用录制了视频,帮助大家更好更快地了解Swan。


视频地址:http://v.qq.com/x/page/r0346559nfx.html


Fork me on GitHub!!https://github.com/Dataman-Cloud/swan


关于Swan


Swan基于Mesos Restful API编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。未来,数人云Swan团队还将努力实现调度策略、高可用服务发现、网络管理、编排,以及任务抢占等功能。

动手造轮 | 一款Bash 脚本 +HTTP 请求工具 +JSON 解析工具组成的测试小工具

开源程序数人云 发表了文章 • 2 个评论 • 661 次浏览 • 2016-11-03 12:23 • 来自相关话题

数人云开源一款容器管理工具Crane,Crane开发过程中,为了保证API的健壮性和稳定性, 数人云开发团... 查看全部


数人云开源一款容器管理工具Crane,Crane开发过程中,为了保证API的健壮性和稳定性, 数人云开发团队自制了一套适合Crane API测试的小工具。它也适用于其他接口测试,小数发现很多朋友对它感兴趣,就勤劳地搬运过来,希望能为大家提供一个参考和思路。



针对Crane团队只向外输出API的特点, 选择测试工具是秉着以下原则的:



  • 第一, 功能不要太复杂,学习曲线不能太陡, 功能够用就行;

  • 第二, 可编程要好, 最好不要有界面,程序员友好。


于是一款简单的Bash脚本+HTTP 请求工具+JSON解析工具组成的测试小工具雏形出现了。


下面给大家展现这款工具的构成


Bash脚本: 测试工具的粘合剂, 不是Java也不是Python, 用Bash简单易用,功能强大。
Httpie: 一款类似curl的http工具, 不过比curl简单的多, 尤其是想发个JSON请求时候, 更简单。
jq: jq是一款命令行解析JSON文本的工具, 支持非常多的语法解析构造重组JSON文本。


下面依次给大家介绍一下httpie和jq的基本用法


1. 例子说明如何使用httpie


httpie在terminal下的命令是http, 先来几个简单的例子给演示一下用法。


http get http://httpbin.org/get header:header-content



其中, http是命令, get是请求method, http://httpbin.org 是请求地址, httpbin是一个http的测试服务; 用冒号相连的参数代表着HTTP请求头, 用等号连接为请求body中的JSON键和值。 httpie默认的请求为json请求, 所以不用过多指明,header已经加上了Content-Type:application/json。


http post http://httpbin.org/post header:header-content json-key=json-value



http支持很多命令行选项, 介绍一个有意思的是 --check-status, check-status是把http response的非200值设置成进程的exit code, 比如:



如上所示, 请求一个不存在的地址时候进程退出符号变成了4。 我们将大量使用这个feature来判断返回值。


2. 例子说明如何使用jq


下面我们用几个例子介绍一下jq的用法。



上图演示如何提取一个json的key。



如何提取一个嵌套的key。



提取数组中的元素。


篇幅关系我们不过多展示jq的高级功能, 除了基本的解析和构造以外,jq支持大量的filter, 如有兴趣可参考https://stedolan.github.io/jq/ ... tions


3. Crane测试工具的几个场景


场景一: 我期望测试API的HTTP测试的返回状态比如200, 404, 500


首先bash造了几个基本的函数来输出错误, 和判断状态



使用方法



场景二: 登录过程测试



更多的测试例子可参考https://github.com/Dataman-Clo ... _test


至此,一款可用的测试工具出炉了, 虽然简单,不过功能恰到好处,非常适合我们的场景, 再也不怕API出错发现不了了。 聪明的同事们把这工具配到了jenkins和单元测试一起执行, 出错了还能得到邮件通知, 酷极了。

go+lua的分布式计算工具--Gleam

文章分享themoonstone 发表了文章 • 0 个评论 • 1223 次浏览 • 2016-10-29 21:04 • 来自相关话题

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。 Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go... 查看全部

此处是一个通过Go和LuaJIT编写的快速和可扩展的分布式映射/缩减系统,很好的将Go的高并发性与Luajit高性能相结合,可独立运行或用于分布式计算。
Gleam是一个高性能和高效的分布式执行系统,具备高性能、简单,通用,灵活和易于定制的特点。它在Go中构建,用户定义的计算可以用Lua,Unix管道工具或其它任何流程序编写。下面是它的安装方式和具体使用实例:


安装方式:


1、安装go



2、安装luaJIT



3、将自定义的MessagePack.lua放在luajit可以找到的文件夹下。



4、 安装测试


如果出现以下问题,只需复制MessagePack.lua到其中一个路径。



  • luajit: (command line):1: module 'MessagePack' not found:

  • no field package.preload['MessagePack']

  • no file './MessagePack.lua'

  • no file '/usr/local/share/luajit-2.0.4/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack.lua'

  • no file '/usr/local/share/lua/5.1/MessagePack/init.lua'

  • no file './MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/MessagePack.so'

  • no file '/usr/local/lib/lua/5.1/loadall.so'


使用实例:


package main

import (
"os"

"github.com/chrislusf/gleam"
)

func main() {

gleam.New().TextFile("/etc/passwd").FlatMap(`
function(line)
return line:gmatch("%w+")
end
`).Map(`
function(word)
return word, 1
end
`).ReduceBy(`
function(x, y)
return x + y
end
`).Fprintf(os.Stdout, "%s,%d\n").Run()
}

通过以上内容、我们知道Geam的安装和使用都比较简单、而且基于golang和lua简单的语法规则和高效和并发性能、它也可以给用户带来更好的开发体验。希望有兴趣的同学可以享受到Gleam给大家带来的便利


源文链接:


https://github.com/chrislusf/gleam

SSH 服务器teleport

开源程序itfanr 发表了文章 • 0 个评论 • 541 次浏览 • 2016-10-25 12:34 • 来自相关话题

Teleport 1.2 版本发布了,Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器。其目的是为了替代 sshd。

查看全部

Teleport 1.2 版本发布了,Gravitational Teleport 是一个先进的 SSH 服务器,可通过 SSH 或者 HTTPS 远程访问 Linux 服务器。其目的是为了替代 sshd。


https://github.com/gravitational/teleport

TensorFlow支持Go语言了

文章分享astaxie 发表了文章 • 1 个评论 • 2872 次浏览 • 2016-10-19 11:12 • 来自相关话题

TensorFlow 简介

TensorFlow是Google在2015年11月份开源的人工智能系统(Github项目地址),是之前所开发的深度学习基础架构DistBelief的改进版本,该系统可以被用于语音识别、图片识别等多个领域。<... 查看全部

TensorFlow 简介


TensorFlow是Google在2015年11月份开源的人工智能系统(Github项目地址),是之前所开发的深度学习基础架构DistBelief的改进版本,该系统可以被用于语音识别、图片识别等多个领域。


官网上对TensorFlow的介绍是,一个使用数据流图(data flow graphs)技术来进行数值计算的开源软件库。数据流图中的节点,代表数值运算;节点节点之间的边,代表多维数据(tensors)之间的某种联系。你可以在多种设备(含有CPU或GPU)上通过简单的API调用来使用该系统的功能。TensorFlow是由Google Brain团队的研发人员负责的项目。


https://github.com/tensorflow/tensorflow/tree/master/tensorflow/go


详细的讨论在这里,https://github.com/tensorflow/tensorflow/issues/10#issuecomment-245687757

可视化系统监控工具 Cloudinsight Agent 正式开源

开源程序Cloudinsight 发表了文章 • 5 个评论 • 1153 次浏览 • 2016-10-18 16:03 • 来自相关话题

很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议... 查看全部


很高兴地宣布 Cloudinsight Agent 在 BSD 开源协议下正式开源了。我们的工程师在开源前已将代码用 Golang 重写,更加清晰简洁,欢迎各位参与到 Cloudinsight Agent 的开发和迭代中来。


为什么要用 Golang 重写和开源


Cloudinsight是一个可视化系统监控工具,能够对数据指标进行聚合、分组、过滤、 管理、计算;并提供团队协作功能,共同管理数据和报警事件。而这些的关键,正是 Cloudinsight Agent。


目前探针存在的问题:



  • 各个服务的数据抓取存在强依赖关系,任何一个服务阻塞都可能导致探针进程挂掉。

  • 缺乏对 log 和 json 的支持,用户需要通过 sdk 解析相关数据。

  • 针对 自定义Plugin 的支持不够灵活,用户需要熟悉 Python,并按照探针定义好的接口上传数据。

  • 探针使用 Omnibus 进行打包部署,虽然能解决用户安装上的一些问题,但对于新人来说,上手确实不是件容易的事,况且这个项目本身也有一些 bug,经历过的人自然懂。


用 Golang 重写:



  • 解决以上提到的种种问题。

  • 优化探针架构。

  • 提升探针性能。

  • 开源,接受社区的监督,让深度用户可以参与到探针的版本迭代中来。


现在 Golang 版探针还是 Beta 版,所以支持的平台服务还不多,但这正是我们将 Cloudinsight Agent 上的工作推向开源的第一步,也希望有更多的开发者参与进来,让项目能有更快的进展。


项目计划


增加支持的平台和平台服务


目前用 Golang 重写的 Cloudinsight Agent 仅在 Linux 上进行了测试,未来会逐渐将原有 Python 探针支持的平台和平台服务替换至 Golang 版本,包括但不限于:


加入项目



$ mkdir -p $GOPATH/src/github.com/cloudinsight 
$ cd $GOPATH/src/github.com/cloudinsight
$ git clone https://github.com/cloudinsight/cloudinsight-agent
$ cd cloudinsight-agent $ make build

使用


首次使用需设置 License Key,可在 https://cloud.oneapm.com/#/settings 中获取


$ cp cloudinsight-agent.conf.example cloudinsight-agent.conf 
$ vi cloudinsight-agent.conf
...
license_key = "*********************"

在前台中运行命令


$ ./bin/cloudinsight-agent

致谢


从 15 年 8 月至今,Cloudinsight Agent 经过了 20 余次的迭代,从第一天的的 20 个用户发展到现在 5 万多的探针数,感谢长久以来支持 Cloudinsight 和提供宝贵建议的用户和开发者们,也再次感谢以下影响了我们的优秀的开源项目:



在项目中有代码贡献的开发者,Cloudinsight 将送出一件限量 Tee 作为答谢。


Cloudinsight 官网:Cloudinsight.oneapm.com 欢迎访问了解



图:在 Cloudinsight 中用标签进行集群管理

实时文件监控

文章分享themoonstone 发表了文章 • 1 个评论 • 2051 次浏览 • 2016-10-15 14:11 • 来自相关话题

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改 查看全部

由GO构建的实时重载和输出流的文件监控系统、在自定义路径下运行、构建和观察文件更改

特征:



  • 可同时构建,安装,测试,Fmt和运行

  • 支持在文件更改时重新加载(重新构建,重新安装和重新运行)

  • 支持观看自定义路径

  • 支持观看特定的文件扩展名

  • 多个项目支持

  • 支持输出流

  • 执行时间

  • 高度可定制

  • 快速运行


原文链接:
https://github.com/tockins/realize

Rikka - 极简多插件私人图床

开源程序7sDream 发表了文章 • 3 个评论 • 1074 次浏览 • 2016-10-14 12:23 • 来自相关话题

OvO 终于有个 Go 社区了……我来发个学 Golang 的时候练手的一个东西吧……

简介

Rikka 是一个极简的图床系统,设计理念是让每个人都能有个自己的好用的图床。为了极简,去掉了上传历史的功能,所有的一切都按照 ... 查看全部

OvO 终于有个 Go 社区了……我来发个学 Golang 的时候练手的一个东西吧……


简介


Rikka 是一个极简的图床系统,设计理念是让每个人都能有个自己的好用的图床。为了极简,去掉了上传历史的功能,所有的一切都按照 上传-复制-关闭-粘贴 的使用流程来设计。为了方便每个人自己部署,封装成了 Docker Image。DaoCloud 的一个 128M 的实例都能愉快的跑 Rikka,内存占用大约 10 - 20M。


因为是在我刚学 Go 的时候开的项目,所以我在有意的尽量不使用其他模块,专注于用自带 package 完成功能,对于其他初学者可能是个不错的例子哟。


特点/Feature:



  • 极简,不保存上传历史

  • 支持将图片链接复制成多种格式

  • 文件储存部分插件化,有很多可用的插件,比如:新浪微博,七牛云,又拍云,腾讯云等

  • 提供 API

  • Web 服务和 RESTful API 服务模块化

  • CLI 工具

  • 只保证支持较新版本的 Chrome/Firefox/Safari

  • 首页标志很可爱

  • 维护者貌似很活跃 :)


目前支持的图片储存插件



  • 本地服务器

  • 七牛云

  • 又拍云

  • 新浪微博

  • 腾讯云 COS

  • 腾讯云 CI


可能以后还会加啦,因为是插件形式,所以加起来很简单。应该以后会有 Imgur 和 Flickr 插件吧。
恩,其实可以自己写插件的,但是我现在还没写插件的编写文档。不过把目前我写的几个插件看完应该也就明白怎么写了,很 Easy 的~


截图/Demo


首页:


homepage


预览页面:


viewpage


我在 DaoCloud 用免费配额搭了个 Rikka 做 Demo:http://7sdream-rikka-demo.daoapp.io/


密码是:rikka


感兴趣的可以去试试,最大图片大小 5M。不过这只是 Demo 哟,不要真的用这个啦,如果想自己搭个自用的 Rikka 的话可以看:部署文档图文教程


我自己也在腾讯云部署了一个:http://akkir.me 但是这个就不告诉你们密码咯……毕竟是自用的。


API/CLI


Rikka 是有 RESTFul 的 API 的,文档在这里


然后我还写了个 CLI 工具方便命令行使用:文档|下载


放个使用截图吧:



然后是多张上传:



计划中是有跨平台 GUI 想法的,不过现在还没动手。


项目地址


嘎嘎嘎 项目地址留在最后:https://github.com/7sDream/rikka


Docker Image:https://hub.docker.com/r/7sdream/rikka/


如果刚开始学 Golang 的小伙伴应该可以稍微看看当作入门例子。


功力雄厚的同志们就来多提提意见吧~不甚感激!


对了对了,有谁知道 Docker Container 的 Logs 怎么和 Fail2Ban 结合起来使用呀?只能在 Container 里装个 Fail2Ban 么?