diff --git a/10-things-you-didnt-know-about-java/README.md b/10-things-you-didnt-know-about-java/README.md index 824763c..8e96ad9 100644 --- a/10-things-you-didnt-know-about-java/README.md +++ b/10-things-you-didnt-know-about-java/README.md @@ -10,16 +10,16 @@ -- [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) diff --git a/a-week-with-elixir/README.md b/a-week-with-elixir/README.md index df0e9d8..28b3e8d 100644 --- a/a-week-with-elixir/README.md +++ b/a-week-with-elixir/README.md @@ -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) diff --git a/generic-io-api-in-java-and-api-design/README.md b/generic-io-api-in-java-and-api-design/README.md index 8b5cb38..c8a3ee7 100644 --- a/generic-io-api-in-java-and-api-design/README.md +++ b/generic-io-api-in-java-and-api-design/README.md @@ -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) diff --git a/git-workflows-and-tutorials/README.md b/git-workflows-and-tutorials/README.md index 154e0e6..b2aed53 100644 --- a/git-workflows-and-tutorials/README.md +++ b/git-workflows-and-tutorials/README.md @@ -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) diff --git a/git-workflows-and-tutorials/pull-request.md b/git-workflows-and-tutorials/pull-request.md index c530bfb..b3fbc10 100644 --- a/git-workflows-and-tutorials/pull-request.md +++ b/git-workflows-and-tutorials/pull-request.md @@ -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-下一站) + + + + +- [解析`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) + + + `Pull Requests`是`Bitbucket`上方便开发者之间协作的功能。 提供了一个用户友好的`Web`界面,在集成提交的变更到正式项目前可以对变更进行讨论。 diff --git a/git-workflows-and-tutorials/workflow-centralized.md b/git-workflows-and-tutorials/workflow-centralized.md index b7005df..13796c2 100644 --- a/git-workflows-and-tutorials/workflow-centralized.md +++ b/git-workflows-and-tutorials/workflow-centralized.md @@ -1,19 +1,25 @@ 集中式工作流 ================================= -- [工作方式](#beer-工作方式) - - [冲突解决](#冲突解决) -- [示例](#beer-示例) - 1. [有人先初始化好中央仓库](#有人先初始化好中央仓库) - 1. [所有人克隆中央仓库](#所有人克隆中央仓库) - 1. [小明开发功能](#小明开发功能) - 1. [小红开发功能](#小红开发功能) - 1. [小明发布功能](#小明发布功能) - 1. [小红试着发布功能](#小红试着发布功能) - 1. [小红在小明的提交之上`rebase`](#小红在小明的提交之上rebase) - 1. [小红解决合并冲突](#小红解决合并冲突) - 1. [小红成功发布功能](#小红成功发布功能) -- [下一站](#beer-下一站) + + + + +- [🍺 工作方式](#-%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) + + ![Git Workflows: SVN-style](images/git-workflow-svn.png) diff --git a/git-workflows-and-tutorials/workflow-feature-branch.md b/git-workflows-and-tutorials/workflow-feature-branch.md index 2d8e595..b87ed71 100644 --- a/git-workflows-and-tutorials/workflow-feature-branch.md +++ b/git-workflows-and-tutorials/workflow-feature-branch.md @@ -1,17 +1,24 @@ 功能分支工作流 ====================== -- [工作方式](#beer-工作方式) + + + + +- [🍺 工作方式](#-%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) + + + ![](images/git-workflow-feature-branch-1.png) diff --git a/git-workflows-and-tutorials/workflow-forking.md b/git-workflows-and-tutorials/workflow-forking.md index 986ef42..13c8658 100644 --- a/git-workflows-and-tutorials/workflow-forking.md +++ b/git-workflows-and-tutorials/workflow-forking.md @@ -1,18 +1,25 @@ `Forking`工作流 ======================= -- [工作方式](#beer-工作方式) - - [正式仓库](#正式仓库) - - [`Forking`工作流的分支使用方式](#forking工作流的分支使用方式) -- [示例](#beer-示例) - 1. [项目维护者初始化正式仓库](#项目维护者初始化正式仓库) - 1. [开发者`fork`正式仓库](#开发者fork正式仓库) - 1. [开发者克隆自己`fork`出来的仓库](#开发者克隆自己fork出来的仓库) - 1. [开发者开发自己的功能](#开发者开发自己的功能) - 1. [开发者发布自己的功能](#开发者发布自己的功能) - 1. [项目维护者集成开发者的功能](#项目维护者集成开发者的功能) - 1. [开发者和正式仓库做同步](#开发者和正式仓库做同步) -- [下一站](#beer-下一站) + + + + +- [🍺 工作方式](#-%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) + + + `Forking`工作流和前面讨论的几种工作流有根本的不同。 这种工作流不是使用单个服务端仓库作为『中央』代码基线,而让各个开发者都有一个服务端仓库。 diff --git a/git-workflows-and-tutorials/workflow-gitflow.md b/git-workflows-and-tutorials/workflow-gitflow.md index 14151c4..c0be247 100644 --- a/git-workflows-and-tutorials/workflow-gitflow.md +++ b/git-workflows-and-tutorials/workflow-gitflow.md @@ -1,19 +1,26 @@ `Gitflow`工作流 ============================ -- [工作方式](#beer-工作方式) - - [历史分支](#历史分支) - - [功能分支](#功能分支) - - [发布分支](#发布分支) - - [维护分支](#维护分支) -- [示例](#beer-示例) - 1. [创建开发分支](#创建开发分支) - 1. [小红和小明开始开发新功能](#小红和小明开始开发新功能) - 1. [小红完成功能开发](#小红完成功能开发) - 1. [小红开始准备发布](#小红开始准备发布) - 1. [小红完成发布](#小红完成发布) - 1. [最终用户发现`Bug`](#最终用户发现bug) -- [下一站](#beer-下一站) + + + + +- [🍺 工作方式](#-%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) + + + ![Git Workflows: Gitflow Cycle](images/git-workflows-gitflow.png) diff --git a/gui-and-cli-principles/README.md b/gui-and-cli-principles/README.md index 236e780..ff263f2 100644 --- a/gui-and-cli-principles/README.md +++ b/gui-and-cli-principles/README.md @@ -12,7 +12,7 @@ 值得单独拿出来看看。这里翻译一下。 -PS: +PS: 交互思考有相通的之处,下面的几篇说了不错的话题,也可以看看: * [大众点评移动客户端的“轻”点评模式](http://ifredric.me/post/2012-10-31/dianping_test_2 "大众点评移动客户端的“轻”点评模式") diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/README.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/README.md index ac67793..7fff5bd 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/README.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/README.md @@ -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) diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md index 530e13d..ca483a3 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part1-what-is-a-log.md @@ -1,10 +1,16 @@ 第一部分:日志是什么? ===================================================================== -1. [数据库中的日志](#数据库中的日志) -1. [分布式系统中的日志](#分布式系统中的日志) -1. [变更日志(`changelog`)101:表与事件的二象性(`duality`)](#变更日志changelog101表与事件的二象性duality) -1. [接下来的内容](#接下来的内容) + + + + +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) + + 日志可能是一种最简单的不能再简单的存储抽象,只能追加、按照时间完全有序(`totally-ordered`)的记录序列。日志看起来的样子: diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md index aeb5f54..ea0ec99 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part2-data-integration.md @@ -1,14 +1,20 @@ 第二部分:数据集成 ================================ -1. [数据集成:两个难题](#数据集成两个难题) - - [事件数据管道](#事件数据管道) - - [专用数据系统(`specialized data systems`)的爆发](#专用数据系统specialized-data-systems的爆发) -1. [日志结构化的(`log-structured`)数据流](#日志结构化的log-structured数据流) -1. [在`LinkedIn`](#在linkedin) -1. [`ETL`与数据仓库的关系](#etl与数据仓库的关系) -1. [日志文件与事件](#日志文件与事件) -1. [构建可伸缩的日志](#构建可伸缩的日志) + + + + +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) + + 先解释一下我说的『数据集成』(`data integration`)是什么,还有为什么我觉得它很重要,然后我们再来看看它是如何和日志建立关系的。 diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part3-logs-and-real-time-stream-processing.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part3-logs-and-real-time-stream-processing.md index f720f89..0c55ead 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part3-logs-and-real-time-stream-processing.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part3-logs-and-real-time-stream-processing.md @@ -1,9 +1,15 @@ 第三部分:日志与实时流处理 ================================= -1. [数据流图(`data flow graphs`)](#数据流图data-flow-graphs) -1. [有状态的实时流处理](#有状态的实时流处理) -1. [日志合并(`log compaction`)](#日志合并log-compaction) + + + + +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) + + 到目前为止,我只讲述了系统之间拷贝数据的理想机制。但是在存储系统之间搬运字节不是所要讲述内容的全部。 最终会发现,『日志』是流的另一种说法, diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part4-system-building.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part4-system-building.md index e89c8d9..340230a 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part4-system-building.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/part4-system-building.md @@ -1,8 +1,14 @@ 第四部分:系统构建(`system building`) =============================== -1. [分解单品方式而不是打包套餐方式(`Unbundling`)?](#分解单品方式而不是打包套餐方式unbundling) -1. [日志在系统架构中的地位](#日志在系统架构中的地位) + + + + +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) + + 最后我要讨论的是在线数据系统设计中日志的角色。 diff --git a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md index 429e0dd..09758d3 100644 --- a/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md +++ b/log-what-every-software-engineer-should-know-about-real-time-datas-unifying/the-end.md @@ -1,8 +1,14 @@ 结束语及参考资料 ============================= -1. [学术论文、系统、讨论和博客](#学术论文系统讨论和博客) -1. [值得关注的开源软件](#值得关注的开源软件) + + + + +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) + + 如果你从头一直读到了这,那么我对日志的理解你大部分都知道了。 diff --git a/python-philosophy/README.md b/python-philosophy/README.md index cf09fe2..8c00fd7 100644 --- a/python-philosophy/README.md +++ b/python-philosophy/README.md @@ -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)