一步一步教你用 GitHub+Slack+TravisCI 构建 Go 的自动化持续集成
本文是基于 **[gitfeed](https://github.com/yangwenmai/gitfeed)** 项目来教你如何一步一步的用 Github+Slack+TravisCI 构建自动化持续集成。
欢迎大家使用 gitfeed 项目,有什么意见或想法都可以提 Issue 给我,更欢迎大家提 PR。
什么是持续集成?
持续集成(英语:Continuous integration,缩写为 CI),一种软件工程流程,将所有工程师对于软件的工作复本,每天集成数次到共用主线(mainline)上。 摘自维基百科。
(图片来源于网络)
持续集成的目的,就是让产品可以快速迭代,同时还能保持高质量。
持续集成的好处主要有两个:
(1)快速发现错误。每完成一些更新,就可以集成到主干,可以快速发现错误,定位错误也比较容易。
(2)防止分支大幅偏离主干。如果不是经常集成,主干又在不断更新,会导致以后集成的难度变大,甚至难以集成。
Martin Fowler 说过,“持续集成并不能消除 Bug,而是让它们非常容易发现和改正。“与持续集成相关的,还有两个概念,分别是持续交付和持续部署,本文暂未涉及,以后有机会再进行探讨和实践。
用 IFTTT 搭建属于你自己的跟踪通知系统
本文是一篇用 IFTTT 搭建属于你自己的跟踪通知系统的实战指南,希望能对你有所帮助。
占坑的帖子
Jaeger 分布式链路跟踪系统
本文是一篇 Jaeger 入门级指南。
以下是一篇转发
前言
随着公司的发展,业务不断的增加,模块的不断拆分,系统间业务调用就变得越复杂,对定位线上故障带来很大困难。整个调用链不透明,犹如系统被蒙上一块黑纱,当线上遇到故障时,整个技术部就陷入痛苦的漩涡。这时候分布式追踪系统应运而生,如揭开了黑纱,让阳光照进黑暗。
分布式系统调用过程

opentracing 协议
opentracing是一套分布式追踪协议,与平台,语言无关,统一接口,方便开发接入不同的分布式追踪系统。

简单理解opentracing
一个完整的opentracing调用链包含 Trace + span + 无限极分类
- Trace:追踪对象,一个Trace代表了一个服务或者流程在系统中的执行过程,如:test.com,redis,mysql等执行过程。一个Trace由多个span组成
- span:记录Trace在执行过程中的信息,如:查询的sql,请求的HTTP地址,RPC调用,开始、结束、间隔时间等。
- 无限极分类:服务与服务之间使用无限极分类的方式,通过HTTP头部或者请求地址传输到最低层,从而把整个调用链串起来。
基于 Docker 构建 ElasticSearch
本文是一篇基于 Docker 构建 ElasticSearch 的入门级指南。
其实用 Docker 来构建真的很简单,这里就给大家贴我的实际配置和运行命令吧。
。。。
检查 ElasticSearch 状态
curl -XGET http://localhost:9200/_cluster/health?pretty
|
|
增删改查
增加
|
|
执行结果:
|
|
查询
curl -XGET 'http://localhost:9200/twitter/tweet/1'
执行结果:
|
|
https://github.com/olivere/elastic/issues/312 https://github.com/olivere/elastic/wiki/Connection-Problems#how-to-figure-out-connection-problems
dep 入门指南
基于 Docker 构建 Wordpress
本文是一篇基于 Docker 构建 Wordpress 的入门级指南。
Docker 的安装以及 Docker 基本命令,都可以参考官网了解和学习,我这里只是简单介绍一下如何构建 Wordpress:
基本准备之一安装 Docker
见官网。
常用的命令:
docker --versiondocker-compose --versiondocker-machine --versiondocker psdocker ps -adocker run hello-world# 如果能显示:“”,则表示docker安装成功了。- Hello from Docker! This message shows that your installation appears to be working correctly.
docker run -it -rm ubuntu:latest bash# 启动一个ubuntu,并且进入bash命令行docker run -d -p 80:80 --name webserver nginx# 启动一个Nginx
基本准备之二
拉取镜像:
docker pull mysql
docker pull wordpress
go get 提示 io timeout 的解决之法
本文是一篇对go get不能方便拉取到代码的问题的解决方案总结。
go get -v golang.org/x/text,有一部分 google 的服务器被ZF q了,所以导致无法go get, -v 是可以打印执行的过程。
失败的原因就是遇到zf q 的问题了,即便是你设置了全局代理,也是不行的。因为全局代理对命令行不生效。
我们只能对 git 进行单独设置。
|
|
可以参考:http://www.cnblogs.com/ghj1976/p/5087049.html 网络请求的 http_proxy 和 git 的 代理 都需要设置才可以。
解决 go get 的问题(写一篇总结的文章)还可以参考另外一篇文章
还需要安装一个 cow 代理软件,然后再配置好 ~/.cow/rc
|
|
然后启动 cow(go get 安装到 gobin 目录下,可以直接运行的) 在运行 go get 之前,记得执行:
|
|
Go 语言反射法则 - The Laws of Reflection
本文是一篇[转载文章](https://github.com/williamhng/The-Laws-of-Reflection)
Go语言反射法则 - The Laws of Reflection
原文地址:http://blog.golang.org/laws-of-reflection
介绍
反射在计算机的概念里是指一段程序检查自身结构的能力,主要检查类型。它是元编程的一种形式。同样也是引起困扰的重大来源。
在这篇文章里我们试图阐明Go语言中的反射是如何工作的。每种语言的反射模型是不同的(许多语言压根不支持反射),然而本文只与Go有关,所以我们接下来所提到的“反射”都是指Go语言中的反射。
类型(types)与接口(interfaces)
由于反射是建立在类型系统(type system)上的,所以我们先来复习一下Go语言中的类型。
Go是一门静态类型的语言。每个变量都有一个静态类型,在编译时每个类型都明确并固定下来,例如:int, float32, *MyType, []byte 等。
GitChat 答疑:《BP 神经网络入门:从原理到应用》
本文主要是对于 GitChat 答疑《BP 神经网络入门:从原理到应用》的部分记录。
介绍
《BP 神经网络入门:从原理到应用》,作者:张仕超,研究生在读。 本科有过校赛培训经验,擅于清晰简明地讲解复杂的知识。本研期间获奖若干: robocup机器人中国赛亚军 类脑计算大赛二等奖 数模美赛一等奖……我的博客:http://blog.csdn.net/u014303046
QA
Q1. 文中的公式是怎么写的?
Q1. 文章都是 markdown 写的,公式是使用 latex 语法写的。
Q2. 公式都看不懂,数学基本都还给老师了,应该怎么办?
把数学都复习一下,复习建议:机器学习涉及到的数学知识主要包括:线性代数,概率统计和微积分。这些内容建议网上搜索斯坦福大学 CS229 课程(注意这里不是说的网易公开课的 CS 229 课程),课程所对应的补充资料里面都有这些内容的复习,这些内容比较精简,加起来大概 100 页不到,很适合初学者。