go-nsq分布式实时消息平台用法

NSQ是一个基于Go语言的分布式实时消息平台,可用于大规模系统中的实时消息服务,并且每天能够处理数亿级别的消息,其设计目标是为在分布式环境下运行的去中心化服务提供一个强大的基础架构。

NSQ非常容易配置和部署,且具有最大的灵活性,支持众多消息协议。支持主流库(Go、Python、nodejs、Java、C see: Client Libraries )

Read More

Chrome WebRTC泄露内网IP,惊呆了

这段时间免费申请证书的网站如雨后春笋不断冒出,看来HTTPS时代即将来临,势不可挡。

发现 https://zerossl.com/ 这家的 https://do-know.com/privacy-test.html 隐私测试页面,点进去吓一跳,我的内网IP、CPU核数都显示出来了。朋友测试说他家3个路由器级连,3个内部IP都显示出来了,这不是路由追踪(traceroute)的功能么,怎么出现在网页上😱。

测试Safari 9.1.2 没这问题,Chrome 版本 52.0.2743.82 还有这个问题,查到是WebRTC功能导致,结果Mac Chrome还不能关WebRTC,据说Chrome OS、Android 版Chrome可以关,自家的东西在乎安全,别家的就不管了么,Google不厚道啊。

Read More

RESTful API设计规范整理

随着微服务架构的流行,RESTful API也成了API事实上的标准,之前的SOAP也都转向RESTful API。 目前我参与的项目中使用 RAML 进行API设计。

在HTTP2的普及和互联网安全的威胁下, HTTP开始开始快速转向HTTPS(Chrome已对HTTP标记为不安全),RESTful API也推荐一定要使用SSL。

Read More

使用HPKP防止中间人攻击

HTTP Public Key Pinning(HPKP)是为了防止其他可信CA未经你的授权(也许是因为身份审核疏忽)为你的网站颁发证书,并用于中间人攻击(数据截获分析) 。对于浏览器来说,只要是一家已预埋根证书的可信CA颁发的证书,信任状态都是一样的,用户一般也很难识别出来是否存在伪造。

HPKP可以通过绑定你信赖的CA或证书的公钥sha256指纹来避免伪造证书造成的中间人攻击。

启用HPKP

生成Public Key指纹

pin-sha256 一般推荐使用中间证书生成指纹,也可以选择像Symantec(前身VeriSign)这样的行业知名CA的根。

PEM格式证书(常见 ):

Read More

MacVim打造Golang开发环境

环境配置

  1. 安装 MacVim:

    brew install macvim --with-lua

    PS:

    • neocomplete 插件需要lua支持
    • brew 安装macvim需要全功能Xcode,只安装了Xcode Command Line Tools 不行,App Store 下载太慢,可以找同事通过AirDrop共享 Xcode.app
    • brew linkapps macvim 可以在应用(/Applications)中找到

    Read More

Mac 上交叉编译Golang项目到Linux(sqlite3)

改造个人网站用golang + sqlite3重新搭建,替代8年前老旧的.asp程序,部署时发现go没法在Mac OSX上交叉编译到Linux,原因是go-sqlite3使用了cgo。

打算用Docker解决编译Golang程序的问题,服务器上Docker部署过项目,Mac上有尝试过boot2docker,体验不是很好,最近发现docker官方出了 Docker for Mac 基于QEMU,不用另外安装VirtualBox,也不用单独下载Linux镜像,虽然还是beta版,在Mac中使用已经非常方便和Linux一样用法,直接执行 docker ps

安装好后,一句话搞定:

Read More