update toc

This commit is contained in:
Jerry Lee
2018-06-22 23:24:24 +08:00
parent 3a06f2b336
commit 557181cdcc
17 changed files with 245 additions and 180 deletions

View File

@@ -10,16 +10,16 @@
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [1. 其实没有受检异常(`checked exception`](#1-%E5%85%B6%E5%AE%9E%E6%B2%A1%E6%9C%89%E5%8F%97%E6%A3%80%E5%BC%82%E5%B8%B8%EF%BC%88checked-exception%EF%BC%89)
- [1. 其实没有受检异常(`checked exception`](#1-%E5%85%B6%E5%AE%9E%E6%B2%A1%E6%9C%89%E5%8F%97%E6%A3%80%E5%BC%82%E5%B8%B8checked-exception)
- [2. 可以有只是返回类型不同的重载方法](#2-%E5%8F%AF%E4%BB%A5%E6%9C%89%E5%8F%AA%E6%98%AF%E8%BF%94%E5%9B%9E%E7%B1%BB%E5%9E%8B%E4%B8%8D%E5%90%8C%E7%9A%84%E9%87%8D%E8%BD%BD%E6%96%B9%E6%B3%95)
- [3. 所有这些写法都是二维数组!](#3-%E6%89%80%E6%9C%89%E8%BF%99%E4%BA%9B%E5%86%99%E6%B3%95%E9%83%BD%E6%98%AF%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84%EF%BC%81)
- [3. 所有这些写法都是二维数组!](#3-%E6%89%80%E6%9C%89%E8%BF%99%E4%BA%9B%E5%86%99%E6%B3%95%E9%83%BD%E6%98%AF%E4%BA%8C%E7%BB%B4%E6%95%B0%E7%BB%84)
- [4. 你没有掌握条件表达式](#4-%E4%BD%A0%E6%B2%A1%E6%9C%89%E6%8E%8C%E6%8F%A1%E6%9D%A1%E4%BB%B6%E8%A1%A8%E8%BE%BE%E5%BC%8F)
- [5. 你没有掌握复合赋值运算符](#5-%E4%BD%A0%E6%B2%A1%E6%9C%89%E6%8E%8C%E6%8F%A1%E5%A4%8D%E5%90%88%E8%B5%8B%E5%80%BC%E8%BF%90%E7%AE%97%E7%AC%A6)
- [6. 随机`Integer`](#6-%E9%9A%8F%E6%9C%BAinteger)
- [7. `GOTO`](#7-goto)
- [8. `Java`是有类型别名的](#8-java%E6%98%AF%E6%9C%89%E7%B1%BB%E5%9E%8B%E5%88%AB%E5%90%8D%E7%9A%84)
- [9. 有些类型的关系是不确定的](#9-%E6%9C%89%E4%BA%9B%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%85%B3%E7%B3%BB%E6%98%AF%E4%B8%8D%E7%A1%AE%E5%AE%9A%E7%9A%84)
- [10. 类型交集(`Type intersections`](#10-%E7%B1%BB%E5%9E%8B%E4%BA%A4%E9%9B%86%EF%BC%88type-intersections%EF%BC%89)
- [10. 类型交集(`Type intersections`](#10-%E7%B1%BB%E5%9E%8B%E4%BA%A4%E9%9B%86type-intersections)
- [结论](#%E7%BB%93%E8%AE%BA)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->

View File

@@ -4,7 +4,7 @@
# `Erlang`之父学习`Elixir`语言的一周
## 译序
## 🍎 译序
作为`Erlang`之父 _Joe Armstrong_,对`Erlang VM`上的新语言`Elixir`做了很精彩的评论和思考。『特定领域专家的专业直觉』、『编程语言设计的三定律』、『数据的版本化设计』、『管道运算符避免恶心代码』、『静态单赋值』、『`Elixir``sigil`引出的程序语言如何定义/解释字符串』、『函数定义和函数字面量在`Shell`的不一致性』等等主题的讨论,个性鲜明又幽默诙谐的行文风格,都能强烈感受到 _Joe Armstrong_ 深入广博的老黑客风范。
@@ -34,7 +34,7 @@ PS为什么要整理和审校翻译 参见 [译跋](translation-postscript.md
- [8. `defmacro`的引用和反引用](#8-defmacro%E7%9A%84%E5%BC%95%E7%94%A8%E5%92%8C%E5%8F%8D%E5%BC%95%E7%94%A8)
- [9. 额外的符号](#9-%E9%A2%9D%E5%A4%96%E7%9A%84%E7%AC%A6%E5%8F%B7)
- [10. 奇怪的空白符](#10-%E5%A5%87%E6%80%AA%E7%9A%84%E7%A9%BA%E7%99%BD%E7%AC%A6)
- [11. 闭包行为完全正确 —— 哦耶](#11-%E9%97%AD%E5%8C%85%E8%A1%8C%E4%B8%BA%E5%AE%8C%E5%85%A8%E6%AD%A3%E7%A1%AE-%E2%80%94%E2%80%94-%E5%93%A6%E8%80%B6)
- [11. 闭包行为完全正确 —— 哦耶](#11-%E9%97%AD%E5%8C%85%E8%A1%8C%E4%B8%BA%E5%AE%8C%E5%85%A8%E6%AD%A3%E7%A1%AE--%E5%93%A6%E8%80%B6)
- [结束语](#%E7%BB%93%E6%9D%9F%E8%AF%AD)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->

View File

@@ -19,11 +19,11 @@
- [`Java`的通用`I/O` `API`设计](#java%E7%9A%84%E9%80%9A%E7%94%A8io-api%E8%AE%BE%E8%AE%A1)
- [API](#api)
- [标准化`I/O`](#%E6%A0%87%E5%87%86%E5%8C%96io)
- [拦截传输过程](#%E6%8B%A6%E6%88%AA%E4%BC%A0%E8%BE%93%E8%BF%87%E7%A8%8B)
- [Usage in the `Qi4j` `SPI`](#usage-in-the-qi4j-spi)
- [结论](#%E7%BB%93%E8%AE%BA)
- [API](#api)
- [标准化`I/O`](#%E6%A0%87%E5%87%86%E5%8C%96io)
- [拦截传输过程](#%E6%8B%A6%E6%88%AA%E4%BC%A0%E8%BE%93%E8%BF%87%E7%A8%8B)
- [Usage in the `Qi4j` `SPI`](#usage-in-the-qi4j-spi)
- [结论](#%E7%BB%93%E8%AE%BA)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->

View File

@@ -2,7 +2,7 @@
译文发在[博乐在线](http://www.jobbole.com/) [http://blog.jobbole.com/76550/](http://blog.jobbole.com/76843/)2014-09-14
PS原文的老链接和标题是[Git Workflows and Tutorials](https://www.atlassian.com/git/workflows)`atlassian`改地址后换了文章标题,译文保留使用原标题。
## 🍎 译序
## 🍎 译序
关于`Git`工作流主题,也许这是目前最全面最深入的说明。这篇指南以大家在`SVN`中已经广为熟悉使用的集中式工作流作为起点,循序渐进地演进到其它高效的分布式工作流,还介绍了如何配合使用便利的`Pull Request`功能,体系地讲解了各种工作流的应用。
如果你`Git`用的还不多,可以从前面的讲的工作流开始操练。操作过程去感受指南的讲解:解决什么问题、如何解决问题,这样理解就深了,也方便活用。
@@ -90,73 +90,74 @@ PS原文的老链接和标题是[Git Workflows and Tutorials](https://www.atl
目录
-----------------
- [译序](#apple-译序)
- [概述](#git工作流指南)
- [🍎 译序](#-%E8%AF%91%E5%BA%8F)
- [概述](#-%E6%A6%82%E8%BF%B0)
- [集中式工作流](workflow-centralized.md)
- [工作方式](workflow-centralized.md#beer-工作方式)
- [冲突解决](workflow-centralized.md#冲突解决)
- [示例](workflow-centralized.md#beer-示例)
1. [有人先初始化好中央仓库](workflow-centralized.md#有人先初始化好中央仓库)
1. [所有人克隆中央仓库](workflow-centralized.md#所有人克隆中央仓库)
1. [小明开发功能](workflow-centralized.md#小明开发功能)
1. [小红开发功能](workflow-centralized.md#小红开发功能)
1. [小明发布功能](workflow-centralized.md#小明发布功能)
1. [小红试着发布功能](workflow-centralized.md#小红试着发布功能)
1. [小红在小明的提交之上`rebase`](workflow-centralized.md#小红在小明的提交之上rebase)
1. [小红解决合并冲突](workflow-centralized.md#小红解决合并冲突)
1. [小红成功发布功能](workflow-centralized.md#小红成功发布功能)
- [下一站](workflow-centralized.md#beer-下一站)
- [🍺 工作方式](workflow-centralized.md#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [冲突解决](workflow-centralized.md#%E5%86%B2%E7%AA%81%E8%A7%A3%E5%86%B3)
- [🍺 示例](workflow-centralized.md#-%E7%A4%BA%E4%BE%8B)
- [有人先初始化好中央仓库](workflow-centralized.md#%E6%9C%89%E4%BA%BA%E5%85%88%E5%88%9D%E5%A7%8B%E5%8C%96%E5%A5%BD%E4%B8%AD%E5%A4%AE%E4%BB%93%E5%BA%93)
- [所有人克隆中央仓库](workflow-centralized.md#%E6%89%80%E6%9C%89%E4%BA%BA%E5%85%8B%E9%9A%86%E4%B8%AD%E5%A4%AE%E4%BB%93%E5%BA%93)
- [小明开发功能](workflow-centralized.md#%E5%B0%8F%E6%98%8E%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD)
- [小红开发功能](workflow-centralized.md#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD)
- [小明发布功能](workflow-centralized.md#%E5%B0%8F%E6%98%8E%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [小红试着发布功能](workflow-centralized.md#%E5%B0%8F%E7%BA%A2%E8%AF%95%E7%9D%80%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [小红在小明的提交之上`rebase`](workflow-centralized.md#%E5%B0%8F%E7%BA%A2%E5%9C%A8%E5%B0%8F%E6%98%8E%E7%9A%84%E6%8F%90%E4%BA%A4%E4%B9%8B%E4%B8%8Arebase)
- [小红解决合并冲突](workflow-centralized.md#%E5%B0%8F%E7%BA%A2%E8%A7%A3%E5%86%B3%E5%90%88%E5%B9%B6%E5%86%B2%E7%AA%81)
- [小红成功发布功能](workflow-centralized.md#%E5%B0%8F%E7%BA%A2%E6%88%90%E5%8A%9F%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [🍺 下一站](workflow-centralized.md#-%E4%B8%8B%E4%B8%80%E7%AB%99)
- [功能分支工作流](workflow-feature-branch.md)
- [工作方式](workflow-feature-branch.md#beer-工作方式)
- [🍺 工作方式](workflow-feature-branch.md#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [`Pull Requests`](workflow-feature-branch.md#pull-requests)
- [示例](workflow-feature-branch.md#beer-示例)
1. [小红开始开发一个新功能](workflow-feature-branch.md#小红开始开发一个新功能)
1. [小红要去吃个午饭](workflow-feature-branch.md#小红要去吃个午饭)
1. [小红完成功能开发](workflow-feature-branch.md#小红完成功能开发)
1. [小黑收到`Pull Request`](workflow-feature-branch.md#小黑收到pull-request)
1. [小红再做修改](workflow-feature-branch.md#小红再做修改)
1. [小红发布她的功能](workflow-feature-branch.md#小红发布她的功能)
1. [与此同时,小明在做和小红一样的事](workflow-feature-branch.md#与此同时小明在做和小红一样的事)
- [下一站](workflow-feature-branch.md#beer-下一站)
- [🍺 示例](workflow-feature-branch.md#-%E7%A4%BA%E4%BE%8B)
- [小红开始开发一个新功能](workflow-feature-branch.md#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%A7%8B%E5%BC%80%E5%8F%91%E4%B8%80%E4%B8%AA%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红要去吃个午饭](workflow-feature-branch.md#%E5%B0%8F%E7%BA%A2%E8%A6%81%E5%8E%BB%E5%90%83%E4%B8%AA%E5%8D%88%E9%A5%AD)
- [小红完成功能开发](workflow-feature-branch.md#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8A%9F%E8%83%BD%E5%BC%80%E5%8F%91)
- [小黑收到`Pull Request`](workflow-feature-branch.md#%E5%B0%8F%E9%BB%91%E6%94%B6%E5%88%B0pull-request)
- [小红再做修改](workflow-feature-branch.md#%E5%B0%8F%E7%BA%A2%E5%86%8D%E5%81%9A%E4%BF%AE%E6%94%B9)
- [小红发布她的功能](workflow-feature-branch.md#%E5%B0%8F%E7%BA%A2%E5%8F%91%E5%B8%83%E5%A5%B9%E7%9A%84%E5%8A%9F%E8%83%BD)
- [与此同时,小明在做和小红一样的事](workflow-feature-branch.md#%E4%B8%8E%E6%AD%A4%E5%90%8C%E6%97%B6%E5%B0%8F%E6%98%8E%E5%9C%A8%E5%81%9A%E5%92%8C%E5%B0%8F%E7%BA%A2%E4%B8%80%E6%A0%B7%E7%9A%84%E4%BA%8B)
- [🍺 下一站](workflow-feature-branch.md#-%E4%B8%8B%E4%B8%80%E7%AB%99)
- [`Gitflow`工作流](workflow-gitflow.md)
- [工作方式](workflow-gitflow.md#beer-工作方式)
- [历史分支](workflow-gitflow.md#历史分支)
- [功能分支](workflow-gitflow.md#功能分支)
- [发布分支](workflow-gitflow.md#发布分支)
- [维护分支](workflow-gitflow.md#维护分支)
- [示例](workflow-gitflow.md#beer-示例)
1. [创建开发分支](workflow-gitflow.md#创建开发分支)
1. [小红和小明开始开发新功能](workflow-gitflow.md#小红和小明开始开发新功能)
1. [小红完成功能开发](workflow-gitflow.md#小红完成功能开发)
1. [小红开始准备发布](workflow-gitflow.md#小红开始准备发布)
1. [小红完成发布](workflow-gitflow.md#小红完成发布)
1. [最终用户发现`Bug`](workflow-gitflow.md#最终用户发现bug)
- [下一站](workflow-gitflow.md#beer-下一站)
- [🍺 工作方式](workflow-gitflow.md#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [历史分支](workflow-gitflow.md#%E5%8E%86%E5%8F%B2%E5%88%86%E6%94%AF)
- [功能分支](workflow-gitflow.md#%E5%8A%9F%E8%83%BD%E5%88%86%E6%94%AF)
- [发布分支](workflow-gitflow.md#%E5%8F%91%E5%B8%83%E5%88%86%E6%94%AF)
- [维护分支](workflow-gitflow.md#%E7%BB%B4%E6%8A%A4%E5%88%86%E6%94%AF)
- [🍺 示例](workflow-gitflow.md#-%E7%A4%BA%E4%BE%8B)
- [创建开发分支](workflow-gitflow.md#%E5%88%9B%E5%BB%BA%E5%BC%80%E5%8F%91%E5%88%86%E6%94%AF)
- [小红和小明开始开发新功能](workflow-gitflow.md#%E5%B0%8F%E7%BA%A2%E5%92%8C%E5%B0%8F%E6%98%8E%E5%BC%80%E5%A7%8B%E5%BC%80%E5%8F%91%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红完成功能开发](workflow-gitflow.md#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8A%9F%E8%83%BD%E5%BC%80%E5%8F%91)
- [小红开始准备发布](workflow-gitflow.md#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%A7%8B%E5%87%86%E5%A4%87%E5%8F%91%E5%B8%83)
- [小红完成发布](workflow-gitflow.md#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8F%91%E5%B8%83)
- [最终用户发现`Bug`](workflow-gitflow.md#%E6%9C%80%E7%BB%88%E7%94%A8%E6%88%B7%E5%8F%91%E7%8E%B0bug)
- [🍺 下一站](workflow-gitflow.md#-%E4%B8%8B%E4%B8%80%E7%AB%99)
- [`Forking`工作流](workflow-forking.md)
- [工作方式](workflow-forking.md#beer-工作方式)
- [正式仓库](workflow-forking.md#正式仓库)
- [`Forking`工作流的分支使用方式](workflow-forking.md#forking工作流的分支使用方式)
- [示例](workflow-forking.md#beer-示例)
1. [项目维护者初始化正式仓库](workflow-forking.md#项目维护者初始化正式仓库)
1. [开发者`fork`正式仓库](workflow-forking.md#开发者fork正式仓库)
1. [开发者克隆自己`fork`出来的仓库](workflow-forking.md#开发者克隆自己fork出来的仓库)
1. [开发者开发自己的功能](workflow-forking.md#开发者开发自己的功能)
1. [开发者发布自己的功能](workflow-forking.md#开发者发布自己的功能)
1. [项目维护者集成开发者的功能](workflow-forking.md#项目维护者集成开发者的功能)
1. [开发者和正式仓库做同步](workflow-forking.md#开发者和正式仓库做同步)
- [下一站](workflow-forking.md#beer-下一站)
- [🍺 工作方式](workflow-forking.md#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [正式仓库](workflow-forking.md#%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [`Forking`工作流的分支使用方式](workflow-forking.md#forking%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%9A%84%E5%88%86%E6%94%AF%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F)
- [🍺 示例](workflow-forking.md#-%E7%A4%BA%E4%BE%8B)
- [项目维护者初始化正式仓库](workflow-forking.md#%E9%A1%B9%E7%9B%AE%E7%BB%B4%E6%8A%A4%E8%80%85%E5%88%9D%E5%A7%8B%E5%8C%96%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [开发者`fork`正式仓库](workflow-forking.md#%E5%BC%80%E5%8F%91%E8%80%85fork%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [开发者克隆自己`fork`出来的仓库](workflow-forking.md#%E5%BC%80%E5%8F%91%E8%80%85%E5%85%8B%E9%9A%86%E8%87%AA%E5%B7%B1fork%E5%87%BA%E6%9D%A5%E7%9A%84%E4%BB%93%E5%BA%93)
- [开发者开发自己的功能](workflow-forking.md#%E5%BC%80%E5%8F%91%E8%80%85%E5%BC%80%E5%8F%91%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8A%9F%E8%83%BD)
- [开发者发布自己的功能](workflow-forking.md#%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%91%E5%B8%83%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8A%9F%E8%83%BD)
- [项目维护者集成开发者的功能](workflow-forking.md#%E9%A1%B9%E7%9B%AE%E7%BB%B4%E6%8A%A4%E8%80%85%E9%9B%86%E6%88%90%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E5%8A%9F%E8%83%BD)
- [开发者和正式仓库做同步](workflow-forking.md#%E5%BC%80%E5%8F%91%E8%80%85%E5%92%8C%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93%E5%81%9A%E5%90%8C%E6%AD%A5)
- [🍺 下一站](workflow-forking.md#-%E4%B8%8B%E4%B8%80%E7%AB%99)
- [`Pull Requests`](pull-request.md)
- [解析`Pull Request`](pull-request.md#解析pull-request)
- [工作方式](pull-request.md#beer-工作方式)
- [在功能分支工作流中使用`Pull Request`](pull-request.md#在功能分支工作流中使用pull-request)
- [在`Gitflow`工作流中使用`Pull Request`](pull-request.md#在gitflow工作流中使用pull-request)
- [在`Forking`工作流中使用`Pull Request`](pull-request.md#在forking工作流中使用pull-request)
- [示例](pull-request.md#beer-示例)
1. [小红`fork`正式项目](pull-request.md#小红fork正式项目)
1. [小红克隆她的`Bitbucket`仓库](pull-request.md#小红克隆她的bitbucket仓库)
1. [小红开发新功能](pull-request.md#小红开发新功能)
1. [小红`push`功能到她的`Bitbucket`仓库中](pull-request.md#小红push功能到她的bitbucket仓库中)
1. [小红发起`Pull Request`](pull-request.md#小红发起pull-request)
1. [小明review `Pull Request`](pull-request.md#小明review-pull-request)
1. [小红补加提交](pull-request.md#小红补加提交)
- [下一站](pull-request.md#beer-下一站)
- [解析`Pull Request`](pull-request.md#%E8%A7%A3%E6%9E%90pull-request)
- [🍺 工作方式](pull-request.md#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [在功能分支工作流中使用`Pull Request`](pull-request.md#%E5%9C%A8%E5%8A%9F%E8%83%BD%E5%88%86%E6%94%AF%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [在`Gitflow`工作流中使用`Pull Request`](pull-request.md#%E5%9C%A8gitflow%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [在`Forking`工作流中使用`Pull Request`](pull-request.md#%E5%9C%A8forking%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [🍺 示例](pull-request.md#-%E7%A4%BA%E4%BE%8B)
- [小红`fork`正式项目](pull-request.md#%E5%B0%8F%E7%BA%A2fork%E6%AD%A3%E5%BC%8F%E9%A1%B9%E7%9B%AE)
- [小红克隆她的`Bitbucket`仓库](pull-request.md#%E5%B0%8F%E7%BA%A2%E5%85%8B%E9%9A%86%E5%A5%B9%E7%9A%84bitbucket%E4%BB%93%E5%BA%93)
- [小红开发新功能](pull-request.md#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%8F%91%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红`push`功能到她的`Bitbucket`仓库中](pull-request.md#%E5%B0%8F%E7%BA%A2push%E5%8A%9F%E8%83%BD%E5%88%B0%E5%A5%B9%E7%9A%84bitbucket%E4%BB%93%E5%BA%93%E4%B8%AD)
- [小红发起`Pull Request`](pull-request.md#%E5%B0%8F%E7%BA%A2%E5%8F%91%E8%B5%B7pull-request)
- [小明review `Pull Request`](pull-request.md#%E5%B0%8F%E6%98%8Ereview-pull-request)
- [小红补加提交](pull-request.md#%E5%B0%8F%E7%BA%A2%E8%A1%A5%E5%8A%A0%E6%8F%90%E4%BA%A4)
- [小明接受`Pull Request`](pull-request.md#%E5%B0%8F%E6%98%8E%E6%8E%A5%E5%8F%97pull-request)
- [🍺 下一站](pull-request.md#-%E4%B8%8B%E4%B8%80%E7%AB%99)

View File

@@ -1,20 +1,28 @@
`Pull Request`工作流
=======================
- [解析`Pull Request`](#解析pull-request)
- [工作方式](#beer-工作方式)
- [在功能分支工作流中使用`Pull Request`](#在功能分支工作流中使用pull-request)
- [在`Gitflow`工作流中使用`Pull Request`](#在gitflow工作流中使用pull-request)
- [在`Forking`工作流中使用`Pull Request`](#在forking工作流中使用pull-request)
- [示例](#beer-示例)
1. [小红`fork`正式项目](#小红fork正式项目)
1. [小红克隆她的`Bitbucket`仓库](#小红克隆她的bitbucket仓库)
1. [小红开发新功能](#小红开发新功能)
1. [小红`push`功能到她的`Bitbucket`仓库中](#小红push功能到她的bitbucket仓库中)
1. [小红发起`Pull Request`](#小红发起pull-request)
1. [明review `Pull Request`](#小明review-pull-request)
1. [小红补加提交](#小红补加提交)
- [下一站](#beer-下一站)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [解析`Pull Request`](#%E8%A7%A3%E6%9E%90pull-request)
- [🍺 工作方式](#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [在功能分支工作流中使用`Pull Request`](#%E5%9C%A8%E5%8A%9F%E8%83%BD%E5%88%86%E6%94%AF%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [在`Gitflow`工作流中使用`Pull Request`](#%E5%9C%A8gitflow%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [在`Forking`工作流中使用`Pull Request`](#%E5%9C%A8forking%E5%B7%A5%E4%BD%9C%E6%B5%81%E4%B8%AD%E4%BD%BF%E7%94%A8pull-request)
- [🍺 示例](#-%E7%A4%BA%E4%BE%8B)
- [小红`fork`正式项目](#%E5%B0%8F%E7%BA%A2fork%E6%AD%A3%E5%BC%8F%E9%A1%B9%E7%9B%AE)
- [红克隆她的`Bitbucket`仓库](#%E5%B0%8F%E7%BA%A2%E5%85%8B%E9%9A%86%E5%A5%B9%E7%9A%84bitbucket%E4%BB%93%E5%BA%93)
- [小红开发新功能](#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%8F%91%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红`push`功能到她的`Bitbucket`仓库中](#%E5%B0%8F%E7%BA%A2push%E5%8A%9F%E8%83%BD%E5%88%B0%E5%A5%B9%E7%9A%84bitbucket%E4%BB%93%E5%BA%93%E4%B8%AD)
- [小红发起`Pull Request`](#%E5%B0%8F%E7%BA%A2%E5%8F%91%E8%B5%B7pull-request)
- [小明review `Pull Request`](#%E5%B0%8F%E6%98%8Ereview-pull-request)
- [小红补加提交](#%E5%B0%8F%E7%BA%A2%E8%A1%A5%E5%8A%A0%E6%8F%90%E4%BA%A4)
- [小明接受`Pull Request`](#%E5%B0%8F%E6%98%8E%E6%8E%A5%E5%8F%97pull-request)
- [🍺 下一站](#-%E4%B8%8B%E4%B8%80%E7%AB%99)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
`Pull Requests``Bitbucket`上方便开发者之间协作的功能。
提供了一个用户友好的`Web`界面,在集成提交的变更到正式项目前可以对变更进行讨论。

View File

@@ -1,19 +1,25 @@
集中式工作流
=================================
- [工作方式](#beer-工作方式)
- [冲突解决](#冲突解决)
- [示例](#beer-示例)
1. [有人先初始化好中央仓库](#有人先初始化好中央仓库)
1. [所有人克隆中央仓库](#所有人克隆中央仓库)
1. [小明开发功能](#小明开发功能)
1. [小红开发功能](#小红开发功能)
1. [小明发布功能](#小明发布功能)
1. [小红试着发布功能](#小红试着发布功能)
1. [红在小明的提交之上`rebase`](#小红在小明的提交之上rebase)
1. [小红解决合并冲突](#小红解决合并冲突)
1. [红成功发布功能](#小红成功发布功能)
- [下一站](#beer-下一站)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [🍺 工作方式](#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [冲突解决](#%E5%86%B2%E7%AA%81%E8%A7%A3%E5%86%B3)
- [🍺 示例](#-%E7%A4%BA%E4%BE%8B)
- [有人先初始化好中央仓库](#%E6%9C%89%E4%BA%BA%E5%85%88%E5%88%9D%E5%A7%8B%E5%8C%96%E5%A5%BD%E4%B8%AD%E5%A4%AE%E4%BB%93%E5%BA%93)
- [所有人克隆中央仓库](#%E6%89%80%E6%9C%89%E4%BA%BA%E5%85%8B%E9%9A%86%E4%B8%AD%E5%A4%AE%E4%BB%93%E5%BA%93)
- [明开发功能](#%E5%B0%8F%E6%98%8E%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD)
- [小红开发功能](#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%8F%91%E5%8A%9F%E8%83%BD)
- [发布功能](#%E5%B0%8F%E6%98%8E%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [小红试着发布功能](#%E5%B0%8F%E7%BA%A2%E8%AF%95%E7%9D%80%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [小红在小明的提交之上`rebase`](#%E5%B0%8F%E7%BA%A2%E5%9C%A8%E5%B0%8F%E6%98%8E%E7%9A%84%E6%8F%90%E4%BA%A4%E4%B9%8B%E4%B8%8Arebase)
- [小红解决合并冲突](#%E5%B0%8F%E7%BA%A2%E8%A7%A3%E5%86%B3%E5%90%88%E5%B9%B6%E5%86%B2%E7%AA%81)
- [小红成功发布功能](#%E5%B0%8F%E7%BA%A2%E6%88%90%E5%8A%9F%E5%8F%91%E5%B8%83%E5%8A%9F%E8%83%BD)
- [🍺 下一站](#-%E4%B8%8B%E4%B8%80%E7%AB%99)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
![Git Workflows: SVN-style](images/git-workflow-svn.png)

View File

@@ -1,17 +1,24 @@
功能分支工作流
======================
- [工作方式](#beer-工作方式)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [🍺 工作方式](#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [`Pull Requests`](#pull-requests)
- [示例](#beer-示例)
1. [小红开始开发一个新功能](#小红开始开发一个新功能)
1. [小红要去吃个午饭](#小红要去吃个午饭)
1. [小红完成功能开发](#小红完成功能开发)
1. [小黑收到`Pull Request`](#小黑收到pull-request)
1. [小红再做修改](#小红再做修改)
1. [小红发布她的功能](#小红发布她的功能)
1. [与此同时,小明在做和小红一样的事](#与此同时小明在做和小红一样的事)
- [下一站](#beer-下一站)
- [🍺 示例](#-%E7%A4%BA%E4%BE%8B)
- [小红开始开发一个新功能](#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%A7%8B%E5%BC%80%E5%8F%91%E4%B8%80%E4%B8%AA%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红要去吃个午饭](#%E5%B0%8F%E7%BA%A2%E8%A6%81%E5%8E%BB%E5%90%83%E4%B8%AA%E5%8D%88%E9%A5%AD)
- [小红完成功能开发](#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8A%9F%E8%83%BD%E5%BC%80%E5%8F%91)
- [小黑收到`Pull Request`](#%E5%B0%8F%E9%BB%91%E6%94%B6%E5%88%B0pull-request)
- [小红再做修改](#%E5%B0%8F%E7%BA%A2%E5%86%8D%E5%81%9A%E4%BF%AE%E6%94%B9)
- [小红发布她的功能](#%E5%B0%8F%E7%BA%A2%E5%8F%91%E5%B8%83%E5%A5%B9%E7%9A%84%E5%8A%9F%E8%83%BD)
- [与此同时,小明在做和小红一样的事](#%E4%B8%8E%E6%AD%A4%E5%90%8C%E6%97%B6%E5%B0%8F%E6%98%8E%E5%9C%A8%E5%81%9A%E5%92%8C%E5%B0%8F%E7%BA%A2%E4%B8%80%E6%A0%B7%E7%9A%84%E4%BA%8B)
- [🍺 下一站](#-%E4%B8%8B%E4%B8%80%E7%AB%99)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
![](images/git-workflow-feature-branch-1.png)

View File

@@ -1,18 +1,25 @@
`Forking`工作流
=======================
- [工作方式](#beer-工作方式)
- [正式仓库](#正式仓库)
- [`Forking`工作流的分支使用方式](#forking工作流的分支使用方式)
- [示例](#beer-示例)
1. [项目维护者初始化正式仓库](#项目维护者初始化正式仓库)
1. [开发者`fork`正式仓库](#开发者fork正式仓库)
1. [开发者克隆自己`fork`出来的仓库](#开发者克隆自己fork出来的仓库)
1. [开发者开发自己的功能](#开发者开发自己的功能)
1. [开发者发布自己的功能](#开发者发布自己的功能)
1. [项目维护者集成开发者的功能](#项目维护者集成开发者的功能)
1. [开发者和正式仓库做同步](#开发者和正式仓库做同步)
- [下一站](#beer-下一站)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [🍺 工作方式](#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [正式仓库](#%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [`Forking`工作流的分支使用方式](#forking%E5%B7%A5%E4%BD%9C%E6%B5%81%E7%9A%84%E5%88%86%E6%94%AF%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F)
- [🍺 示例](#-%E7%A4%BA%E4%BE%8B)
- [项目维护者初始化正式仓库](#%E9%A1%B9%E7%9B%AE%E7%BB%B4%E6%8A%A4%E8%80%85%E5%88%9D%E5%A7%8B%E5%8C%96%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [开发者`fork`正式仓库](#%E5%BC%80%E5%8F%91%E8%80%85fork%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93)
- [开发者克隆自己`fork`出来的仓库](#%E5%BC%80%E5%8F%91%E8%80%85%E5%85%8B%E9%9A%86%E8%87%AA%E5%B7%B1fork%E5%87%BA%E6%9D%A5%E7%9A%84%E4%BB%93%E5%BA%93)
- [开发者开发自己的功能](#%E5%BC%80%E5%8F%91%E8%80%85%E5%BC%80%E5%8F%91%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8A%9F%E8%83%BD)
- [开发者发布自己的功能](#%E5%BC%80%E5%8F%91%E8%80%85%E5%8F%91%E5%B8%83%E8%87%AA%E5%B7%B1%E7%9A%84%E5%8A%9F%E8%83%BD)
- [项目维护者集成开发者的功能](#%E9%A1%B9%E7%9B%AE%E7%BB%B4%E6%8A%A4%E8%80%85%E9%9B%86%E6%88%90%E5%BC%80%E5%8F%91%E8%80%85%E7%9A%84%E5%8A%9F%E8%83%BD)
- [开发者和正式仓库做同步](#%E5%BC%80%E5%8F%91%E8%80%85%E5%92%8C%E6%AD%A3%E5%BC%8F%E4%BB%93%E5%BA%93%E5%81%9A%E5%90%8C%E6%AD%A5)
- [🍺 下一站](#-%E4%B8%8B%E4%B8%80%E7%AB%99)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
`Forking`工作流和前面讨论的几种工作流有根本的不同。
这种工作流不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库。

View File

@@ -1,19 +1,26 @@
`Gitflow`工作流
============================
- [工作方式](#beer-工作方式)
- [历史分支](#历史分支)
- [功能分支](#功能分支)
- [发布分支](#发布分支)
- [维护分支](#维护分支)
- [示例](#beer-示例)
1. [创建开发分支](#创建开发分支)
1. [小红和小明开始开发新功能](#小红和小明开始开发新功能)
1. [小红完成功能开发](#小红完成功能开发)
1. [小红开始准备发布](#小红开始准备发布)
1. [小红完成发布](#小红完成发布)
1. [最终用户发现`Bug`](#最终用户发现bug)
- [下一站](#beer-下一站)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
- [🍺 工作方式](#-%E5%B7%A5%E4%BD%9C%E6%96%B9%E5%BC%8F)
- [历史分支](#%E5%8E%86%E5%8F%B2%E5%88%86%E6%94%AF)
- [功能分支](#%E5%8A%9F%E8%83%BD%E5%88%86%E6%94%AF)
- [发布分支](#%E5%8F%91%E5%B8%83%E5%88%86%E6%94%AF)
- [维护分支](#%E7%BB%B4%E6%8A%A4%E5%88%86%E6%94%AF)
- [🍺 示例](#-%E7%A4%BA%E4%BE%8B)
- [创建开发分支](#%E5%88%9B%E5%BB%BA%E5%BC%80%E5%8F%91%E5%88%86%E6%94%AF)
- [小红和小明开始开发新功能](#%E5%B0%8F%E7%BA%A2%E5%92%8C%E5%B0%8F%E6%98%8E%E5%BC%80%E5%A7%8B%E5%BC%80%E5%8F%91%E6%96%B0%E5%8A%9F%E8%83%BD)
- [小红完成功能开发](#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8A%9F%E8%83%BD%E5%BC%80%E5%8F%91)
- [小红开始准备发布](#%E5%B0%8F%E7%BA%A2%E5%BC%80%E5%A7%8B%E5%87%86%E5%A4%87%E5%8F%91%E5%B8%83)
- [小红完成发布](#%E5%B0%8F%E7%BA%A2%E5%AE%8C%E6%88%90%E5%8F%91%E5%B8%83)
- [最终用户发现`Bug`](#%E6%9C%80%E7%BB%88%E7%94%A8%E6%88%B7%E5%8F%91%E7%8E%B0bug)
- [🍺 下一站](#-%E4%B8%8B%E4%B8%80%E7%AB%99)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
![Git Workflows: Gitflow Cycle](images/git-workflows-gitflow.png)

View File

@@ -12,7 +12,7 @@
值得单独拿出来看看。这里翻译一下。
PS
PS
交互思考有相通的之处,下面的几篇说了不错的话题,也可以看看:
* [大众点评移动客户端的“轻”点评模式](http://ifredric.me/post/2012-10-31/dianping_test_2 "大众点评移动客户端的“轻”点评模式")

View File

@@ -2,8 +2,7 @@
基于开源中国社区的译文稿: [日志:每个软件工程师都应该知道的有关实时数据的统一概念](http://www.oschina.net/translate/log-what-every-software-engineer-should-know-about-real-time-datas-unifying)
译文发在[伯乐在线](http://blog.jobbole.com/)[The Log每个程序员都应该知道有关实时数据的统一抽象](http://blog.jobbole.com/89674/) 2015-08-21
译序
-----------------
## 🍎 译序
这篇文章是`LinkedIn``Kreps`发表的一篇博文,虽然很长,但被称为[程序员史诗般必读文章](http://bryanpendleton.blogspot.hk/2014/01/the-log-epic-software-engineering.html)。
@@ -50,30 +49,30 @@ PS
目录
-----------------
- [译序](#译序)
- [🍎 译序](#译序)
- [概述](#日志每个软件工程师都应该知道的有关实时数据的统一抽象)
- [第一部分:日志是什么?](part1-what-is-a-log.md)
1. [数据库中的日志](part1-what-is-a-log.md#数据库中的日志)
1. [分布式系统中的日志](part1-what-is-a-log.md#分布式系统中的日志)
1. [变更日志(`changelog`101表与事件的二象性`duality`](part1-what-is-a-log.md#变更日志changelog101表与事件的二象性duality)
1. [接下来的内容](part1-what-is-a-log.md#接下来的内容)
1. [数据库中的日志](part1-what-is-a-log.md#%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E7%9A%84%E6%97%A5%E5%BF%97)
1. [分布式系统中的日志](part1-what-is-a-log.md#%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%97%A5%E5%BF%97)
1. [变更日志(`changelog`101表与事件的二象性`duality`](part1-what-is-a-log.md#%E5%8F%98%E6%9B%B4%E6%97%A5%E5%BF%97changelog101%E8%A1%A8%E4%B8%8E%E4%BA%8B%E4%BB%B6%E7%9A%84%E4%BA%8C%E8%B1%A1%E6%80%A7duality)
1. [接下来的内容](part1-what-is-a-log.md#%E6%8E%A5%E4%B8%8B%E6%9D%A5%E7%9A%84%E5%86%85%E5%AE%B9)
- [第二部分:数据集成](part2-data-integration.md)
1. [数据集成:两个难题](part2-data-integration.md#数据集成两个难题)
- [事件数据管道](part2-data-integration.md#事件数据管道)
- [专用数据系统(`specialized data systems`)的爆发](part2-data-integration.md#专用数据系统specialized-data-systems的爆发)
1. [日志结构化的(`log-structured`)数据流](part2-data-integration.md#日志结构化的log-structured数据流)
1. [在`LinkedIn`](part2-data-integration.md#linkedin)
1. [`ETL`与数据仓库的关系](part2-data-integration.md#etl与数据仓库的关系)
1. [日志文件与事件](part2-data-integration.md#日志文件与事件)
1. [构建可伸缩的日志](part2-data-integration.md#构建可伸缩的日志)
1. [数据集成:两个难题](part2-data-integration.md#%E6%95%B0%E6%8D%AE%E9%9B%86%E6%88%90%E4%B8%A4%E4%B8%AA%E9%9A%BE%E9%A2%98)
- [事件数据管道](part2-data-integration.md#%E4%BA%8B%E4%BB%B6%E6%95%B0%E6%8D%AE%E7%AE%A1%E9%81%93)
- [专用数据系统(`specialized data systems`)的爆发](part2-data-integration.md#%E4%B8%93%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B3%BB%E7%BB%9Fspecialized-data-systems%E7%9A%84%E7%88%86%E5%8F%91)
1. [日志结构化的(`log-structured`)数据流](part2-data-integration.md#%E6%97%A5%E5%BF%97%E7%BB%93%E6%9E%84%E5%8C%96%E7%9A%84log-structured%E6%95%B0%E6%8D%AE%E6%B5%81)
1. [在`LinkedIn`](part2-data-integration.md#%E5%9C%A8linkedin)
1. [`ETL`与数据仓库的关系](part2-data-integration.md#etl%E4%B8%8E%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93%E7%9A%84%E5%85%B3%E7%B3%BB)
1. [日志文件与事件](part2-data-integration.md#%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%B8%8E%E4%BA%8B%E4%BB%B6)
1. [构建可伸缩的日志](part2-data-integration.md#%E6%9E%84%E5%BB%BA%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%9A%84%E6%97%A5%E5%BF%97)
- [第三部分:日志与实时流处理](part3-logs-and-real-time-stream-processing.md)
1. [数据流图(`data flow graphs`](part3-logs-and-real-time-stream-processing.md#数据流图data-flow-graphs)
1. [有状态的实时流处理](part3-logs-and-real-time-stream-processing.md#有状态的实时流处理)
1. [日志合并(`log compaction`](part3-logs-and-real-time-stream-processing.md#日志合并log-compaction)
1. [数据流图(`data flow graphs`](part3-logs-and-real-time-stream-processing.md#%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BEdata-flow-graphs)
1. [有状态的实时流处理](part3-logs-and-real-time-stream-processing.md#%E6%9C%89%E7%8A%B6%E6%80%81%E7%9A%84%E5%AE%9E%E6%97%B6%E6%B5%81%E5%A4%84%E7%90%86)
1. [日志合并(`log compaction`](part3-logs-and-real-time-stream-processing.md#%E6%97%A5%E5%BF%97%E5%90%88%E5%B9%B6log-compaction)
- [第四部分:系统构建(`system building`](part4-system-building.md)
1. [分解单品方式而不是打包套餐方式(`Unbundling`](part4-system-building.md#分解单品方式而不是打包套餐方式unbundling)
1. [日志在系统架构中的地位](part4-system-building.md#日志在系统架构中的地位)
1. [分解单品方式而不是打包套餐方式(`Unbundling`](part4-system-building.md#%E5%88%86%E8%A7%A3%E5%8D%95%E5%93%81%E6%96%B9%E5%BC%8F%E8%80%8C%E4%B8%8D%E6%98%AF%E6%89%93%E5%8C%85%E5%A5%97%E9%A4%90%E6%96%B9%E5%BC%8Funbundling)
1. [日志在系统架构中的地位](part4-system-building.md#%E6%97%A5%E5%BF%97%E5%9C%A8%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E4%B8%AD%E7%9A%84%E5%9C%B0%E4%BD%8D)
- [结束语及参考资料](the-end.md)
1. [学术论文、系统、讨论和博客](the-end.md#学术论文系统讨论和博客)
1. [一些相关的开源软件](the-end.md#一些相关的开源软件)
1. [学术论文、系统、讨论和博客](the-end.md#%E5%AD%A6%E6%9C%AF%E8%AE%BA%E6%96%87%E7%B3%BB%E7%BB%9F%E8%AE%A8%E8%AE%BA%E5%92%8C%E5%8D%9A%E5%AE%A2)
1. [值得关注的开源软件](the-end.md#%E5%80%BC%E5%BE%97%E5%85%B3%E6%B3%A8%E7%9A%84%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6)
- [译跋](translation-postscript.md)

View File

@@ -1,10 +1,16 @@
第一部分:日志是什么?
=====================================================================
1. [数据库中的日志](#数据库中的日志)
1. [分布式系统中的日志](#分布式系统中的日志)
1. [变更日志(`changelog`101表与事件的二象性`duality`](#变更日志changelog101表与事件的二象性duality)
1. [接下来的内容](#接下来的内容)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1. [数据库中的日志](#%E6%95%B0%E6%8D%AE%E5%BA%93%E4%B8%AD%E7%9A%84%E6%97%A5%E5%BF%97)
1. [分布式系统中的日志](#%E5%88%86%E5%B8%83%E5%BC%8F%E7%B3%BB%E7%BB%9F%E4%B8%AD%E7%9A%84%E6%97%A5%E5%BF%97)
1. [变更日志(`changelog`101表与事件的二象性`duality`](#%E5%8F%98%E6%9B%B4%E6%97%A5%E5%BF%97changelog101%E8%A1%A8%E4%B8%8E%E4%BA%8B%E4%BB%B6%E7%9A%84%E4%BA%8C%E8%B1%A1%E6%80%A7duality)
1. [接下来的内容](#%E6%8E%A5%E4%B8%8B%E6%9D%A5%E7%9A%84%E5%86%85%E5%AE%B9)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
日志可能是一种最简单的不能再简单的存储抽象,只能追加、按照时间完全有序(`totally-ordered`)的记录序列。日志看起来的样子:

View File

@@ -1,14 +1,20 @@
第二部分:数据集成
================================
1. [数据集成:两个难题](#数据集成两个难题)
- [事件数据管道](#事件数据管道)
- [专用数据系统(`specialized data systems`)的爆发](#专用数据系统specialized-data-systems的爆发)
1. [日志结构化的(`log-structured`)数据流](#日志结构化的log-structured数据流)
1. [在`LinkedIn`](#在linkedin)
1. [`ETL`与数据仓库的关系](#etl与数据仓库的关系)
1. [日志文件与事件](#日志文件与事件)
1. [构建可伸缩的日志](#构建可伸缩的日志)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1. [数据集成:两个难题](#%E6%95%B0%E6%8D%AE%E9%9B%86%E6%88%90%E4%B8%A4%E4%B8%AA%E9%9A%BE%E9%A2%98)
- [事件数据管道](#%E4%BA%8B%E4%BB%B6%E6%95%B0%E6%8D%AE%E7%AE%A1%E9%81%93)
- [专用数据系统(`specialized data systems`)的爆发](#%E4%B8%93%E7%94%A8%E6%95%B0%E6%8D%AE%E7%B3%BB%E7%BB%9Fspecialized-data-systems%E7%9A%84%E7%88%86%E5%8F%91)
1. [日志结构化的(`log-structured`)数据流](#%E6%97%A5%E5%BF%97%E7%BB%93%E6%9E%84%E5%8C%96%E7%9A%84log-structured%E6%95%B0%E6%8D%AE%E6%B5%81)
1. [在`LinkedIn`](#%E5%9C%A8linkedin)
1. [`ETL`与数据仓库的关系](#etl%E4%B8%8E%E6%95%B0%E6%8D%AE%E4%BB%93%E5%BA%93%E7%9A%84%E5%85%B3%E7%B3%BB)
1. [日志文件与事件](#%E6%97%A5%E5%BF%97%E6%96%87%E4%BB%B6%E4%B8%8E%E4%BA%8B%E4%BB%B6)
1. [构建可伸缩的日志](#%E6%9E%84%E5%BB%BA%E5%8F%AF%E4%BC%B8%E7%BC%A9%E7%9A%84%E6%97%A5%E5%BF%97)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
先解释一下我说的『数据集成』(`data integration`)是什么,还有为什么我觉得它很重要,然后我们再来看看它是如何和日志建立关系的。

View File

@@ -1,9 +1,15 @@
第三部分:日志与实时流处理
=================================
1. [数据流图(`data flow graphs`](#数据流图data-flow-graphs)
1. [有状态的实时流处理](#有状态的实时流处理)
1. [日志合并(`log compaction`](#日志合并log-compaction)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1. [数据流图(`data flow graphs`](#%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BEdata-flow-graphs)
1. [有状态的实时流处理](#%E6%9C%89%E7%8A%B6%E6%80%81%E7%9A%84%E5%AE%9E%E6%97%B6%E6%B5%81%E5%A4%84%E7%90%86)
1. [日志合并(`log compaction`](#%E6%97%A5%E5%BF%97%E5%90%88%E5%B9%B6log-compaction)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
到目前为止,我只讲述了系统之间拷贝数据的理想机制。但是在存储系统之间搬运字节不是所要讲述内容的全部。
最终会发现,『日志』是流的另一种说法,

View File

@@ -1,8 +1,14 @@
第四部分:系统构建(`system building`
===============================
1. [分解单品方式而不是打包套餐方式(`Unbundling`](#分解单品方式而不是打包套餐方式unbundling)
1. [日志在系统架构中的地位](#日志在系统架构中的地位)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1. [分解单品方式而不是打包套餐方式(`Unbundling`](#%E5%88%86%E8%A7%A3%E5%8D%95%E5%93%81%E6%96%B9%E5%BC%8F%E8%80%8C%E4%B8%8D%E6%98%AF%E6%89%93%E5%8C%85%E5%A5%97%E9%A4%90%E6%96%B9%E5%BC%8Funbundling)
1. [日志在系统架构中的地位](#%E6%97%A5%E5%BF%97%E5%9C%A8%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E4%B8%AD%E7%9A%84%E5%9C%B0%E4%BD%8D)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
最后我要讨论的是在线数据系统设计中日志的角色。

View File

@@ -1,8 +1,14 @@
结束语及参考资料
=============================
1. [学术论文、系统、讨论和博客](#学术论文系统讨论和博客)
1. [值得关注的开源软件](#值得关注的开源软件)
<!-- START doctoc generated TOC please keep comment here to allow auto update -->
<!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
1. [学术论文、系统、讨论和博客](#%E5%AD%A6%E6%9C%AF%E8%AE%BA%E6%96%87%E7%B3%BB%E7%BB%9F%E8%AE%A8%E8%AE%BA%E5%92%8C%E5%8D%9A%E5%AE%A2)
1. [值得关注的开源软件](#%E5%80%BC%E5%BE%97%E5%85%B3%E6%B3%A8%E7%9A%84%E5%BC%80%E6%BA%90%E8%BD%AF%E4%BB%B6)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->
如果你从头一直读到了这,那么我对日志的理解你大部分都知道了。

View File

@@ -13,7 +13,7 @@
- [译注](#%E8%AF%91%E6%B3%A8)
- [个人讨论](#%E4%B8%AA%E4%BA%BA%E8%AE%A8%E8%AE%BA)
- [参考/阅读资料](#%E5%8F%82%E8%80%83%E9%98%85%E8%AF%BB%E8%B5%84%E6%96%99)
- [`Python` Philosophy原文](#python-philosophy原文)
- [`Python` Philosophy原文](#python-philosophy%E5%8E%9F%E6%96%87)
<!-- END doctoc generated TOC please keep comment here to allow auto update -->