Thoughs on goRBAC

Code refactoring is not an easy job, but it has to be done in most of the times. I just completed the lightweight role based access control library: goRBAC’s refactoring. There are some feedbacks and questions about the design and usage. I think it would be better writing something to share some design ideas and practice principles which will make things easier.

rbac

The master branch of current goRBAC’s source code is intended to be Version 2. While the previous version has been tagged as Version 1 with the v1.dev branch on Github. And this article will only discuss Version 2 (the master branch).

Continue reading Thoughs on goRBAC

Walking around Mt Albert – Part 2

Followed the previous post: Walking around Mt Albert – Part 1

Alberton, a farmhouse, was built as the residence of Allan Kerr Taylor, who was a notable New Zealand landowner and businessman. Taylor’s family contributed to Mt Albert region a lot. It’s said that the family gave the land to build St. Luck’s Church and donated the church bell. I was planning to visit the Church today as well, but …

Turn back to the house. The gate in the photo is not the original front gate actually. I’m even not sure that if it existed originally. The tour guide said the gate opened at this side just for the reception. The original gate which should be in front of the fountain does not exist anymore. I will show you the fountain latter.

alberton-gate

alberton-name-plate

Continue reading Walking around Mt Albert – Part 2

Walking around Mt Albert – Part 1

Being Auckland about 2 weeks I didn’t write any journals about my trip. One part is about my laziness, the other side is that I don’t have a good idea about my hiking map. I’ve walked back from the city to Mt Albert where I live currently(Yes, it’s 7 km and took me 2 hours). And I took some particular pictures with a lot of fun, something like “Mystery Tunnel”, “Cement Warrior”, etc. You won’t image that! But it didn’t have a clear timeline as a good guide. With some pre-investigations in place and digging on the Internet, I made a great plan. But … Yes! Any decent plan still has an embarrassing BUT … I didn’t complete it. Too far to walk! (Look at the map “Walking around Mt Albert“. BTW, some of the pictures below were shot before this day.)

Original Plan:
original-plan

But:
2016-01-16

Continue reading Walking around Mt Albert – Part 1

如何从源代码构建 Go 1.5 开发环境

请注意,本文正文含有大量链接。如果是转载或者使用某些不支持超链接的阅读器,就请自行脑补吧。

近期,Go Team 连续放出了几个大招来介绍即将在八月问世的 Go 1.5 这个划时代的版本。Rob 和 Andrew 分别在《Go in Go》和《The State of Go》中详细说明了出现在 Go 1.5 中的重要特性和细节变化。在这个版本中最主要的变化是移除了所有 C 代码,不论是 runtime 还是编译器都使用 Go 语言和一小部分的汇编来实现——也就是人们常说的自举。但是这样做也就意味着,Go 在 1.5 和以后的版本中,使用源代码构建 Go
开发环境将面临“鸡生蛋,蛋生鸡”的麻烦(当然了,如果你直接“买鸡蛋”——使用二进制安装包——是没有这个问题的)。
Continue reading 如何从源代码构建 Go 1.5 开发环境

如何用版本工具维护翻译项目

个人来说,一直希望能将《Go指南》这个项目的版本管理从 bitbucket 迁移到 github。但是由于上游英文源项目仍然在用 hg 作为版本管理工具所以一直也没有这么做。前几天 OlingCat 找我,希望将这个翻译项目放在 github 上的 go-zh 项目中。我当然欣然同意,虽然翻译工作还得用 hg 维护,但是 git 上能够有个镜像也是不错的事情。

(中间略过若干 hg –> git 的鸡零狗碎不说)

在等待同步的时候,我简单阅读了一下“Go 项目翻译规范”,发现一个让我觉得很不舒服的设定。

Continue reading 如何用版本工具维护翻译项目

“小”数据的危害

就我个人来说,离开学校进入工作之后,就离“入侵”啊、“破解”啊、“黑客”啊越来越远了。年龄越来越大,明白的事情理应越来越多。理应明白那些在 sunnet 百无聊赖瞎扯蛋的日子是回不来啦!

这两年业内的发展还真有点另人惊讶,不停的有新的数据泄漏,有新的重大安全漏洞,有新的安全事故发生,只是似乎从手法上来说并无新意。依然老三篇:0day + 社工 + 易入目标。但是想想也对,自古打劫的就是威胁、恐吓、讲道理。手中的武器怎么更替,这根基是不会动摇的。不过有这么多数据样本,不玩玩实在是对不起人民群众啊!

一不留神,扯了很多的蛋出来。那么回到主题,这两天疑似 12306 又泄漏了数据了。我拿到的是一个有 131653 条记录的文本文件。原始编码是 GB18030。至于这个数据到底是 12306 还是其他抢票平台泄漏的这个无从追究(或者不必要追究了)。在这次事件中,我遇到的对于这份数据最常见的反应(不论是技术人员还是非技术人员)都颇为一致:我搜了,里面没我……。确实,相对 12306 那庞大的用户信息库来说(数据总量估计是这个样本数据的一万倍以上,但是即便就是这个总量距离我们概念上的大数据还是很小的),要在这个小样本数据中找到自己其实不并不容易。那么换句话说,我们是不是就可以认为,这个广为流传的样本的价值(危害)很小了呢?

Continue reading “小”数据的危害

[翻译]理解 Go 语言的内存使用

许多人在刚开始接触 Go 语言时,经常会有的疑惑就是“为什么一个 Hello world 会占用如此之多的内存?”。Understanding Go Lang Memory Usage 很好的解释了这个问题。不过“简介”就是“简介”,更加深入的内容恐怕要读者自己去探索了。另外,文章写到最后,作者飘了,估计引起了一些公愤,于是又自己给自己补刀,左一刀,右一刀……

————翻译分隔线————

理解 Go 语言的内存使用

2014年12月22日,星期一

温馨提示:这仅是关于 Go 语言内存的简介,俗话说不入虎穴、焉得虎子,读者可以进行更加深入的探索。

大多数 Go 开发者都会尝试像这样简单的 hello world 程序:

package main

import (
"fmt"
"time"
)

func main() {
fmt.Println("hi")

time.Sleep(30 * time.Second)
}

然后他们就完全崩溃了。

Continue reading [翻译]理解 Go 语言的内存使用

编程源于生活

一个不懂得生活的程序员,就永远不能感受编程的乐趣。于是各种爱生活的程序员涌现出来,爱吃爱玩爱生活……的确,编程本来就源于生活,以下内容为证。这些内容,可能大家早就看过了,但是我作为一个每天在做这些事情的人,每次看到、想起,依然觉得很有趣。我希望你也能感同身受吧……

Bug

在软件行业,Bug,通常是说某种错误、瑕疵、故障或缺陷Grace Hopper 被认为,在 1946 年为 Harvard Mark II 项目工作的时候抓到了第一只“虫子”。

debug

Continue reading 编程源于生活

[翻译]这根本不是 BASH 的 bug!

在前几天看到 CVE-2014-6277 这个 BASH 的 bug 的时候,我就觉得挺奇葩的:这这种明显是有意实现的功能怎么会存在这么大的安全隐患呢?我不是专门搞安全的,同时觉得,这个 bug 可能虽然影响广泛,但并不是什么很有技术含量的利用思路。所以我就把这个事情放下没去想它。然而,随之而来的国内国外的各种媒体宣传、安全专家的联名建议、茶余饭后的坊间畅谈……对于 BASH 的这个 bug 无人不认为是个大 bug。不少人为此还在幸灾乐祸……但是我却没从各种评论中找到我的问题的答案。

但是,当我看到这篇随笔时,我不得不赞同作者的观点:这根本不是 BASH 的 bug!

所以我将原文翻译至此,希望能够带来一些思考。

也许我们今天看到的一个愚蠢的 bug,在历史上的某一天,是一个有意而为之的神奇特性。也许我们应该思考的不仅仅是这一刻的 bug 或者安全隐患本身,而是在软件项目这个极具工程和创作品双重特性的活动中,如何有效的保证某个特性不会变成 bug。所以什么规范了,文档了,可真得不是纸上谈兵!

不过话说回来,无论如何,我仍然坚信:“Less is exponentially more!(大道至简)”少一点 Feature 或许就是少一点 Bug 呢?

bug-vs-feature

Continue reading [翻译]这根本不是 BASH 的 bug!

As Golang beyond PHP