Gitea 发布 1.0.1版本

lunny 发表了文章 • 0 个评论 • 648 次浏览 • 2017-01-05 22:52 • 来自相关话题

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 查看全部

很高兴的宣布我们今天发布了Bug修订版 Gitea v1.0.1。这个版本我们合并了 9 个提交请求。你可以从 下载页面 下载二进制文件,注意选择适合你的平台。更多详细安装信息请参见 安装向导.


变更日志



  • BUGFIXES

    • Fixed localized MIN_PASSWORD_LENGTH #501

    • Fixed 500 error on organization delete #507

    • Ignore empty wiki repo on migrate #544

    • Proper check access for forking #563

    • Fix SSH domain on installer #506

    • Fix missing data rows on admin UI #580

    • Do not delete tags with releases by default #579

    • Fix missing session config data on admin UI #578

    • Properly show the version within footer on the UI #593


数人云Mesos调度器Swan v0.2最新功能演示

数人云 发表了文章 • 0 个评论 • 483 次浏览 • 2016-12-29 11:00 • 来自相关话题

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

数人云Mesos调度器Swan开源已经一个月啦,在社区和大家的共同呵护下成长了许多。小数带来了Swan v0.2的新版本,添加了很多新功能,工程师为了大家更好地了解Swan的新功能,为大家提供了录屏,欢迎收看!


腾讯地址:
https://v.qq.com/x/page/p0358dzspz5.html


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


关于数人云Mesos调度器Swan


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

推荐一发梯子工具kone

raindylong 发表了文章 • 2 个评论 • 778 次浏览 • 2016-12-20 16:31 • 来自相关话题

地址:https://github.com/xjdrew/kone (DNS欺骗+NAT2proxy工具,有webui可看统计信息)

利益相关:我司@...

地址:https://github.com/xjdrew/kone
(DNS欺骗+NAT2proxy工具,有webui可看统计信息)


利益相关:我司@xjdrew老湿的作品。。。

【goxel】Go 版的 axel 小工具

山羊wayne 发表了文章 • 0 个评论 • 650 次浏览 • 2016-12-20 14:21 • 来自相关话题

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我... 查看全部

之前练手写的一个小工具 goxel,类似于 axel,如果你感觉对你有用或者还不错,不要吝啬你的 Star 哈,当然有任何问题或者改进也请告诉我。


goxel




Description


goxel like axel tool

Installation


$ go get github.com/WayneZhouChina/goxel

Usage


goxel [options...] <url>

Options:
-n Numbers of blocks to run(must).
-H Add header string.
-v More status information.
-o Specify local output file(must).
-h Help information.
-V Version information.
-cpus Number of used cpu cores(Default is current machine cores).

Example:


goxel -n 10 -o outfile http://xxx.com

gbb-自己写的golang辅助编译工具(不知道这么描述是否确切),请大伙给点建议!

voidint 发表了文章 • 1 个评论 • 564 次浏览 • 2016-12-18 22:14 • 来自相关话题

groupcache 架构设计

Focinfi 发表了文章 • 1 个评论 • 944 次浏览 • 2016-12-15 16:49 • 来自相关话题

groupcache 是一个分布式缓存 go 语言库,支持多节点互备热数据,有良好的稳定性和较高的并发性。

这里有个简单的应用场景:

查看全部

groupcache 是一个分布式缓存 go 语言库,支持多节点互备热数据,有良好的稳定性和较高的并发性。


这里有个简单的应用场景:


groupcache.png


当 GET foo 打到 groupcache-1 后:



  1. groupcache-1 先看看自己的 cache 里有没有 foo,有的话直接返回

  2. 要是没有,看看这个请求归不归自己管,若是,去 DataSever 获取,否则问 group-2(假设 foo 归 -2管) 要数据,成功返回后 groupcache-1 本地也缓存一份

  3. 在 2 过程中,所有后来打到 groupcache-1 的 GET foo 都会阻塞,直到第一个请求返回


问题来了,如何判断 foo 由谁来处理?


consistenthash.png


如上图,利用hash将所有节点平均打散到全集,然后当 foo 进来后用相同hash算法就会得到一个唯值,落在那个区间就属于那个节点,要保证一致性。


因为 foo 和某资源一一对应,这就要求 groupcache 只有 get 没有 update。


一个简单的HTTP groupcache Server:


package main

import "github.com/golang/groupcache"

import "github.com/gin-gonic/gin"
import "net/http"
import "time"
import "bytes"

// 虚拟文件生成方法
func generateThumbnail(fileName string) []byte {
return []byte("fake file")
}

func main() {
// 本机 ip
me := "http://10.0.0.1"
peers := groupcache.NewHTTPPool(me)
// 设置互备的 node
peers.Set("http://10.0.0.1", "http://10.0.0.2", "http://10.0.0.3")
// 创建一个 cache group,最大缓存为64M
var thumbNails = groupcache.NewGroup("thumbnail", 64<<20, groupcache.GetterFunc(
func(ctx groupcache.Context, key string, dest groupcache.Sink) error {
fileName := key
dest.SetBytes(generateThumbnail(fileName))
return nil
}))

// 设置 thumbnail 的 peers
groupcache.RegisterPeerPicker(func() groupcache.PeerPicker {
return peers
})

// 起一个 HTTP server
server := gin.Default()
server.GET("/files/:name", gin.HandlerFunc(
func(ctx *gin.Context) {
var data []byte
name := ctx.Param("name")
// 获取缓存
err := thumbNails.Get(ctx, name, groupcache.AllocatingByteSliceSink(&data))
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"mesage": "file not found"})
return
}
// 返回给客户端
http.ServeContent(ctx.Writer, ctx.Request, name, time.Now(), bytes.NewReader(data))
}))
server.Run("10.0.0.1:80")
}

Group


groupcache.NewGroup(addr string)
Group 代表一个 cache资源库


type Group struct {
name string
getter Getter // cache 没有命中,从数据库获取
peersOnce sync.Once
peers PeerPicker // peer 节点调度器
cacheBytes int64 // 最大cache字节数
mainCache cache // 此节点缓存
hotCache cache // 其他节点缓存
loadGroup flightGroup // 请求并发控制器
Stats Stats // 统计数据
}

对于一个 Group 来说,会缓存自己节点的数据和访问比较频繁的 peer节点 的数据,用LRU算法控制缓存。


当 cache 没有命中的时候,首先看看这个请求归不归该节点管,若是就是调用 getter:


Getter


type Getter interface {
Get(ctx Context, key string, dest Sink) error
}

对于一个 cache 来说,他不知道如何拉取需要缓存的数据,所以他说啊,你要是想缓存新的东西,就得有个 type 实现 Getter 接口,然后给我一个 Getter 对象,这样cache没有命中的时候我能靠这个对象拉取数据。


这个 Getter 类似于 http.Handler,抽象拉取要缓存的数据这个行为,Context(interface{}) 是操作的附带信息,key 请求的 id,Sink 类似于 http.ResponseWriter,抽象了数据载体的行为:


Sink


type Sink interface {
// SetString 写入 string
SetString(s string) error

// SetBytes 写入字节数组,调用者会保留 v 引用
SetBytes(v []byte) error

// SetProto 写入proto.Message,调用者会保留 m 应用
SetProto(m proto.Message) error

// ...
}

groupcache 提供了一些常用的 Sink 如 StringSink,BytesSliceSink 和 ProtoSink,这个 proto 是github.com/golang/protobuf/proto,groupcache 规定内部 peer 节点之间数据通信格式使用 google/protobuf,为了抽象 peer 节点,定义了 ProtoGetter:


ProtoGetter


type ProtoGetter interface {
Get(context Context, in *pb.GetRequest, out *pb.GetResponse) error
}

pb.GetRequestpb.GetResponse 定义了请求和响应 struct,这个抽象可以分离底层传输方式。


当然还需要对节点调度器抽象,PeerPicker:


PeerPicker


type PeerPicker interface {
// PickPeer 根据 key 返回应该处理这个 key 的节点
// ok 为 true 代表找到了节点
// nil, false 代表当前节点就是 key 的处理器
PickPeer(key string) (peer ProtoGetter, ok bool)
}

调度器主要负责根据管理 key 和节点的一致性映射。


groupcache 实现了一个 HTTP 的 PeerPicker,HTTPPool。


至此,groupcache 通过 Getter,PeerPicker,ProtoGetter 三个 interface 定义了cache,节点和调度器之间的连接方式,可以有效地控制耦合度,也提供了比较大的灵活性。

基于 Web 的 Go 语言 IDE - Wide 1.5.2 发布!

DL88250 发表了文章 • 2 个评论 • 613 次浏览 • 2016-12-15 11:08 • 来自相关话题

这个版本由热心的开源贡献者加入了韩语支持,欢迎各位 gophers 加入到 Wide 的开源开发中。另外,这个版本还改进了 Playground,使其更稳定和易用。目前查看全部

这个版本由热心的开源贡献者加入了韩语支持,欢迎各位 gophers 加入到 Wide 的开源开发中。另外,这个版本还改进了 Playground,使其更稳定和易用。目前黑客派社区已经支持嵌入 Wide,也欢迎其他广大技术社区进行接入(允许 src 使用来自于 https://wide.b3log.org 的 iframe 嵌入即可)。


Playground


如果你还没有 golang 入门,请访问我们汇编好的 《Go 学习笔记》 进行学习吧 :)


Wide 简介


Wide 是一个基于 Web 的 Go 语言 IDE, 其目标不是彻底代替本地 IDE,而是做本地 IDE 很难做到的事情:



  • 分享代码:类似 playground,但支持多文件并提供嵌入方式,在其他网站(比如技术社区帖子)展现、运行代码

  • 团队协同:比如标记代码 issue 并通知、编辑状态显示,这个特性很类似一些即时战略游戏中的玩家协作,这里是特性设计:英雄模式

  • 随时随地:不用装环境(或者说不用经常升级吧),能联网就能开发。当然,也可以本地跑 Wide

  • 支持移动设备,即使不支持开发(或者是支持的体验很差),但是可以运行,可以浏览代码

  • 易于和其他系统进行集成、扩展


大家可以使用我们提供的 Wide 在线服务,也可以自行下载并在本地环境运行 Wide 私服


Playground


Wide 目前提供了运行单文件的 Playground,可以看作是 golang.org 的 Go Playground 的增强版:



  • 语法高亮、自动完成

  • 通过 WebSocket 进行实时运行输出

  • 能够方便地嵌入其他站点(比如个人博客)


使用截图


自动完成

Autocomplete


快速打开文件
Goto File


多主题

Theme


显示构建错误

Build Error Info


交叉编译

Cross-Compilation


项目





PS:黑客派社区目前是邀请制注册,需要注册的朋友请私信我索要邀请码。

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

数人云 发表了文章 • 0 个评论 • 586 次浏览 • 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编写的应用调度框架,可以帮助用户轻松发布应用,实现应用的滚动更新,并根据用户指定的策略做应用的健康检测和故障转移。

chizuru

easonme 回复了问题 • 2 人关注 • 1 个回复 • 739 次浏览 • 2016-12-10 00:01 • 来自相关话题

Go 语言 udpproxy 调试工具

kevin 回复了问题 • 3 人关注 • 1 个回复 • 983 次浏览 • 2016-12-09 19:45 • 来自相关话题

Go 语言 Redis 服务端 API 框架

Akagi201 发表了文章 • 5 个评论 • 791 次浏览 • 2016-12-09 16:50 • 来自相关话题

RedFace


Repo: https://github.com/Akagi201/redface


Build Status Coverage Status Go Report Card GoDoc


RedFace means redis interface.


It can be used as a redis server-side api in golang.


Features



  • [x] Suport tcp protocol.

  • [x] Support unix socket protocol.

  • [x] Support net/http like interface.

  • [x] Add benchmarks.

  • [ ] Support pipelining.

  • [ ] Support telnet commands.

  • [ ] Support redis lua script.

  • [ ] Support TLS.

  • [ ] Support net/context.


Install



  • go get github.com/Akagi201/redface


Import



  • import "github.com/Akagi201/redface/resp"

  • import "github.com/Akagi201/redface/server"


Benchmarks


redis-benchmark


Redis: Single-threaded, no disk persistence.


❯ redis-server --port 6379  --appendonly no

❯ redis-benchmark -p 6379 -t set,get -n 1000000 -q -P 512 -c 512
SET: 767459.75 requests per second
GET: 941619.56 requests per second

RedFace: Single-threaded, no disk persistence.


GOMAXPROCS=1 go run example/clone/main.go

❯ redis-benchmark -p 6389 -t set,get -n 1000000 -q -P 512 -c 512
SET: 68861.04 requests per second
GET: 65261.37 requests per second

RedFace: Multi-threaded, no disk persistence.


GOMAXPROCS=0 go run example/clone/main.go

❯ redis-benchmark -p 6389 -t set,get -n 1000000 -q -P 512 -c 512
SET: 30049.88 requests per second
GET: 30422.88 requests per second

Hardward info


❯ system_profiler SPHardwareDataType
Hardware:

Hardware Overview:

Model Name: MacBook Pro
Model Identifier: MacBookPro11,3
Processor Name: Intel Core i7
Processor Speed: 2.3 GHz
Number of Processors: 1
Total Number of Cores: 4
L2 Cache (per Core): 256 KB
L3 Cache: 6 MB
Memory: 16 GB
Boot ROM Version: MBP112.0138.B17
SMC Version (system): 2.19f12
Serial Number (system): C02MG6L8FD57
Hardware UUID: EB84A5CF-F1BA-5604-B1A6-534E30EA95C1

Go 语言 WebSocket 调试工具

Akagi201 发表了文章 • 1 个评论 • 802 次浏览 • 2016-12-09 16:49 • 来自相关话题

wsutil

Repo: https://github.com/Akagi201/wsutil

WebSocket util... 查看全部

wsutil


Repo: https://github.com/Akagi201/wsutil


WebSocket utils to help debug WebSocket applications


Tools



  • client WebSocket client.

  • dump WebSocket client with echo test.

  • proxy simple single WebSocket proxy.


Run



  • ./client --ws=ws://echo.websocket.org/

  • ./client --ws=ws://localhost:8327

  • ./proxy --upstream=ws://localhost:8328

  • ./dump --listen=0.0.0.0:8328 --echo

Go 语言 http/https 文件服务器

Akagi201 发表了文章 • 0 个评论 • 838 次浏览 • 2016-12-09 16:49 • 来自相关话题

serve

Repo: https://github.com/Akagi201/serve

Simple http serve... 查看全部

serve


Repo: https://github.com/Akagi201/serve


Simple http server for localhost development


Features



  • [x] Use gohttp as http framework.

  • [x] Static http file server.

  • [x] Support https.

  • [ ] Support http2.

  • [ ] Support WebSocket.

  • [ ] Support browser-sync like features.


Build



  • docker: docker build -t serve .

  • go build -o serve


Install



  • go get github.com/Akagi201/serve


Run



  • ./serve -h

  • openssl genrsa -out server.key 2048

  • openssl req -new -x509 -key server.key -out server.crt -days 365

  • sudo ./serve --http=0.0.0.0:8888 --domains=akagi201.org

Go 语言 udpproxy 调试工具

Akagi201 发表了文章 • 0 个评论 • 482 次浏览 • 2016-12-09 16:47 • 来自相关话题

udpproxy


Repo: https://github.com/Akagi201/udpproxy


A simple UDP Proxy Server in Golang.


Features



  • [x] one source, multi target based on copy.


Build



  • docker: docker build -t udpproxy .

  • go build main.go -o udpproxy


Run



  • --source: data source, default source is :2203.

  • --target: data target, e.g. ip:port.

  • --quiet: whether to print logging info or not.

  • --buffer: default is 10240.

最简 Go 语言 类 koa web 框架

Akagi201 发表了文章 • 0 个评论 • 707 次浏览 • 2016-12-09 13:19 • 来自相关话题

light


Repo: https://github.com/Akagi201/light


Build Status Coverage Status Go Report Card GoDoc


light


Light is a minimal web framework in Go.


Features



  • [x] Use pat as http router

  • [x] Use alice to manage middlewares.


Install



  • go get github.com/Akagi201/light


Import



  • import "github.com/Akagi201/light"