iovxw

坑开的有点多了

吐槽

又过了很长时间没写博客了

这次真不是因为懒

各种忙

然后还不小心开了几个大坑


近期做过的事:

先是帮go-zh翻译了一个package(只有几行的翻译量,结果还各种不准确,几乎都是minux纠正过来的)

又写了个各种意义上都弃坑了的golang下载package

一旦下载超大文件就会直接挂掉,是因为线程分配的问题(直接平均分配给每个线程,所以缓冲区会爆掉),但是也懒得改了。要是有人发现了,发个issue可能会给我点动力

然后又为了给coding.net的PaaS弄个Dart的Buildpack

用着电信的渣出口从google code拖了1.7G的源码,编译了最新的Dart SDK

又因为各种原因以及buildpack原作者的脚本有些许问题,弄了2天才下载好了完整的源码

简直生不如死

关键是,最后部署的时候,才想起来dart的包管理网站 被!墙!了!

于是所有的package都要预先下载好再改包管理路径然后全部提交到git

又涉及到了协议什么的一大堆东西,果断还是弃坑不维护了

在用go写一些小程序的时候需要用到图形界面。而go的ui库我基本都用遍了

缺点大致如下(部分问题可能有解决方法,如果知道还请留言告诉我哈):

于是!

就开始写一个用node-webkit做框架的ui库

用html+js做控件,然后可以自定义css,前后端通信用websocket

依赖只有一个nwjs,基本什么平台都可以用

然后支持很方便的自定义控件(只要实现一个方法即可,会自动用反射来调用),以及写一个自定义控件的教程(计划中)

来一段例子:

	var w *Window
	w = &Window{
		Title:  "window",
		Width:  800,
		Height: 600,
		Controls: []interface{}{
			&Button{
				ID:   "btn0",
				Text: "button",
				OnClick: func() {
					println(GetConByID("btn0").(*Button).Text)
				},
			},
			&Button{
				ID:   "btn1",
				Text: "button",
			},
		},
	}
	w.Show()

当然这个库还只是写了个框架(就是说上面说的大部分功能都还没实现(别激动别激动))

控件什么的也只写了一个按钮和一个自定义窗口边框来做演示

上张图(实际运行截图):

img

然后就在这货刚写完框架之后

我又开了个坑(因为Stepladder在长链接下会有几率始终占满一个CPU线程的使用率(具体触发原因不明),然后因为是tcp所以延迟什么的还比较大)

于是准备重写个基于udp的

在github上翻了一遍发现这货https://github.com/skywind3000/kcp

以浪费10%流量为代价换取更低的延迟?

貌似不错

还有人弄了个go版本的https://github.com/vzex/dog-tunnel

就是里面的ikcp,貌似是直接用的c2go转换的,所以编码风格还是有点奇怪

c版本的源码协议是GPL,但是这个是转换的所以貌似可以不用?

总之拖了一份到本地,然后修改了一下编码风格

这货就诞生了https://github.com/go-ukcp/ukcp(里面的ikcp文件夹)

只是把编码风格转换了一下,然后ukcp本来是想封装一下的

但是因为发送端的判断什么的(还要传给kcp所以识别很麻烦),就又弃坑了……

(不过里面的ikcp还是可以单独拿出来用用的)

当然还不能放弃,开始自己封装一个udphttps://github.com/iovxw/rudp

然后嘛……现在为止还没写完


就这么多了,坑还是慢慢填吧