├── .gitignore
├── 000_glossary
└── 01_glossary.md
├── 010_getting_started
├── 01_introduction.md
├── 01_introduction_cn.md
├── 05_uses.md
├── 05_uses_cn.md
├── 10_quickstart.md
├── 10_quickstart_cn.md
├── 15_ecosystem.md
├── 15_ecosystem_cn.md
├── 20_upgrade.md
└── 20_upgrade_cn.md
├── 020_api
├── 01_api.md
└── 01_api_cn.md
├── 030_configuration
├── 01_configuration.md
└── 01_configuration_cn.md
├── 040_design
├── 01_design.md
└── 01_design_cn.md
├── 050_implementation
├── 01_implementation.md
└── 01_implementation_cn.md
├── 060_operations
├── 01_ops.md
└── 01_ops_cn.md
├── 070_security
├── 01_security.md
└── 01_security_cn.md
├── 080_connect
├── 01_connect.md
└── 01_connect_cn.md
├── 090_streams
├── 01_streams.md
└── 01_streams_cn.md
├── GLOSSARY.md
├── README.md
├── SUMMARY.md
├── book.json
├── docs
├── .gitignore
├── 000_glossary
│ └── 01_glossary.html
├── 010_getting_started
│ ├── 01_introduction.html
│ ├── 01_introduction_cn.html
│ ├── 05_uses.html
│ ├── 05_uses_cn.html
│ ├── 10_quickstart.html
│ ├── 10_quickstart_cn.html
│ ├── 15_ecosystem.html
│ ├── 15_ecosystem_cn.html
│ ├── 20_upgrade.html
│ └── 20_upgrade_cn.html
├── 020_api
│ ├── 01_api.html
│ └── 01_api_cn.html
├── 030_configuration
│ ├── 01_configuration.html
│ └── 01_configuration_cn.html
├── 040_design
│ ├── 01_design.html
│ └── 01_design_cn.html
├── 050_implementation
│ ├── 01_implementation.html
│ └── 01_implementation_cn.md
├── 060_operations
│ ├── 01_ops.html
│ └── 01_ops_cn.md
├── 070_security
│ ├── 01_security.html
│ └── 01_security_cn.md
├── 080_connect
│ ├── 01_connect.html
│ └── 01_connect_cn.md
├── 090_streams
│ ├── 01_streams.md
│ └── 01_streams_cn.md
├── CNAME
├── GLOSSARY.html
├── docs
│ ├── .gitignore
│ ├── 000_glossary
│ │ └── 01_glossary.html
│ ├── 010_getting_started
│ │ ├── 01_introduction.html
│ │ ├── 01_introduction_cn.html
│ │ ├── 05_uses.html
│ │ ├── 05_uses_cn.html
│ │ ├── 10_quickstart.html
│ │ ├── 10_quickstart_cn.html
│ │ ├── 15_ecosystem.html
│ │ ├── 15_ecosystem_cn.html
│ │ ├── 20_upgrade.html
│ │ └── 20_upgrade_cn.html
│ ├── 020_api
│ │ ├── 01_api.html
│ │ └── 01_api_cn.html
│ ├── 030_configuration
│ │ ├── 01_configuration.html
│ │ └── 01_configuration_cn.html
│ ├── 040_design
│ │ ├── 01_design.html
│ │ └── 01_design_cn.html
│ ├── 050_implementation
│ │ ├── 01_implementation.html
│ │ └── 01_implementation_cn.md
│ ├── 060_operations
│ │ ├── 01_ops.html
│ │ └── 01_ops_cn.md
│ ├── 070_security
│ │ ├── 01_security.html
│ │ └── 01_security_cn.md
│ ├── 080_connect
│ │ ├── 01_connect.html
│ │ └── 01_connect_cn.md
│ ├── 090_streams
│ │ ├── 01_streams.md
│ │ └── 01_streams_cn.md
│ ├── CNAME
│ ├── GLOSSARY.html
│ ├── docs
│ │ ├── .gitignore
│ │ ├── 000_glossary
│ │ │ └── 01_glossary.html
│ │ ├── 010_getting_started
│ │ │ ├── 01_introduction.html
│ │ │ ├── 01_introduction_cn.html
│ │ │ ├── 05_uses.html
│ │ │ ├── 05_uses_cn.html
│ │ │ ├── 10_quickstart.html
│ │ │ ├── 10_quickstart_cn.html
│ │ │ ├── 15_ecosystem.html
│ │ │ ├── 15_ecosystem_cn.html
│ │ │ ├── 20_upgrade.html
│ │ │ └── 20_upgrade_cn.html
│ │ ├── 020_api
│ │ │ ├── 01_api.html
│ │ │ └── 01_api_cn.html
│ │ ├── 030_configuration
│ │ │ ├── 01_configuration.html
│ │ │ └── 01_configuration_cn.html
│ │ ├── 040_design
│ │ │ ├── 01_design.html
│ │ │ └── 01_design_cn.html
│ │ ├── 050_implementation
│ │ │ ├── 01_implementation.html
│ │ │ └── 01_implementation_cn.md
│ │ ├── 060_operations
│ │ │ ├── 01_ops.html
│ │ │ └── 01_ops_cn.md
│ │ ├── 070_security
│ │ │ ├── 01_security.html
│ │ │ └── 01_security_cn.md
│ │ ├── 080_connect
│ │ │ ├── 01_connect.html
│ │ │ └── 01_connect_cn.md
│ │ ├── 090_streams
│ │ │ ├── 01_streams.md
│ │ │ └── 01_streams_cn.md
│ │ ├── CNAME
│ │ ├── GLOSSARY.html
│ │ ├── docs
│ │ │ ├── .gitignore
│ │ │ ├── 000_glossary
│ │ │ │ └── 01_glossary.html
│ │ │ ├── 010_getting_started
│ │ │ │ ├── 01_introduction.html
│ │ │ │ ├── 01_introduction_cn.html
│ │ │ │ ├── 05_uses.html
│ │ │ │ ├── 05_uses_cn.html
│ │ │ │ ├── 10_quickstart.html
│ │ │ │ ├── 10_quickstart_cn.html
│ │ │ │ ├── 15_ecosystem.html
│ │ │ │ ├── 15_ecosystem_cn.html
│ │ │ │ ├── 20_upgrade.html
│ │ │ │ └── 20_upgrade_cn.html
│ │ │ ├── 020_api
│ │ │ │ ├── 01_api.html
│ │ │ │ └── 01_api_cn.html
│ │ │ ├── 030_configuration
│ │ │ │ ├── 01_configuration.html
│ │ │ │ └── 01_configuration_cn.html
│ │ │ ├── 040_design
│ │ │ │ ├── 01_design.html
│ │ │ │ └── 01_design_cn.html
│ │ │ ├── 050_implementation
│ │ │ │ ├── 01_implementation.html
│ │ │ │ └── 01_implementation_cn.md
│ │ │ ├── 060_operations
│ │ │ │ ├── 01_ops.html
│ │ │ │ └── 01_ops_cn.md
│ │ │ ├── 070_security
│ │ │ │ ├── 01_security.html
│ │ │ │ └── 01_security_cn.md
│ │ │ ├── 080_connect
│ │ │ │ ├── 01_connect.html
│ │ │ │ └── 01_connect_cn.md
│ │ │ ├── 090_streams
│ │ │ │ ├── 01_streams.md
│ │ │ │ └── 01_streams_cn.md
│ │ │ ├── CNAME
│ │ │ ├── GLOSSARY.html
│ │ │ ├── docs
│ │ │ │ ├── .gitignore
│ │ │ │ ├── 000_glossary
│ │ │ │ │ └── 01_glossary.html
│ │ │ │ ├── 010_getting_started
│ │ │ │ │ ├── 01_introduction.html
│ │ │ │ │ ├── 01_introduction_cn.html
│ │ │ │ │ ├── 05_uses.html
│ │ │ │ │ ├── 05_uses_cn.html
│ │ │ │ │ ├── 10_quickstart.html
│ │ │ │ │ ├── 10_quickstart_cn.html
│ │ │ │ │ ├── 15_ecosystem.html
│ │ │ │ │ ├── 15_ecosystem_cn.html
│ │ │ │ │ ├── 20_upgrade.html
│ │ │ │ │ └── 20_upgrade_cn.html
│ │ │ │ ├── 020_api
│ │ │ │ │ ├── 01_api.html
│ │ │ │ │ └── 01_api_cn.html
│ │ │ │ ├── 030_configuration
│ │ │ │ │ ├── 01_configuration.html
│ │ │ │ │ └── 01_configuration_cn.html
│ │ │ │ ├── 040_design
│ │ │ │ │ ├── 01_design.html
│ │ │ │ │ └── 01_design_cn.html
│ │ │ │ ├── 050_implementation
│ │ │ │ │ ├── 01_implementation.html
│ │ │ │ │ └── 01_implementation_cn.md
│ │ │ │ ├── 060_operations
│ │ │ │ │ ├── 01_ops.html
│ │ │ │ │ └── 01_ops_cn.md
│ │ │ │ ├── 070_security
│ │ │ │ │ ├── 01_security.html
│ │ │ │ │ └── 01_security_cn.md
│ │ │ │ ├── 080_connect
│ │ │ │ │ ├── 01_connect.html
│ │ │ │ │ └── 01_connect_cn.md
│ │ │ │ ├── 090_streams
│ │ │ │ │ ├── 01_streams.md
│ │ │ │ │ └── 01_streams_cn.md
│ │ │ │ ├── CNAME
│ │ │ │ ├── GLOSSARY.html
│ │ │ │ ├── gitbook
│ │ │ │ │ ├── fonts
│ │ │ │ │ │ └── fontawesome
│ │ │ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ │ │ └── fontawesome-webfont.woff2
│ │ │ │ │ ├── gitbook-plugin-anchors
│ │ │ │ │ │ └── plugin.css
│ │ │ │ │ ├── gitbook-plugin-baidu_gio
│ │ │ │ │ │ └── plugin.js
│ │ │ │ │ ├── gitbook-plugin-expandable-chapters-small
│ │ │ │ │ │ ├── expandable-chapters-small.css
│ │ │ │ │ │ └── expandable-chapters-small.js
│ │ │ │ │ ├── gitbook-plugin-fontsettings
│ │ │ │ │ │ ├── fontsettings.js
│ │ │ │ │ │ └── website.css
│ │ │ │ │ ├── gitbook-plugin-ga
│ │ │ │ │ │ └── plugin.js
│ │ │ │ │ ├── gitbook-plugin-github
│ │ │ │ │ │ └── plugin.js
│ │ │ │ │ ├── gitbook-plugin-lunr
│ │ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ │ └── search-lunr.js
│ │ │ │ │ ├── gitbook-plugin-prism
│ │ │ │ │ │ ├── prism-coy.css
│ │ │ │ │ │ ├── prism-dark.css
│ │ │ │ │ │ ├── prism-funky.css
│ │ │ │ │ │ ├── prism-okaidia.css
│ │ │ │ │ │ ├── prism-solarizedlight.css
│ │ │ │ │ │ ├── prism-tomorrow.css
│ │ │ │ │ │ ├── prism-twilight.css
│ │ │ │ │ │ └── prism.css
│ │ │ │ │ ├── gitbook-plugin-search
│ │ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ │ ├── search-engine.js
│ │ │ │ │ │ ├── search.css
│ │ │ │ │ │ └── search.js
│ │ │ │ │ ├── gitbook-plugin-sharing
│ │ │ │ │ │ └── buttons.js
│ │ │ │ │ ├── gitbook-plugin-splitter
│ │ │ │ │ │ ├── splitter.css
│ │ │ │ │ │ └── splitter.js
│ │ │ │ │ ├── gitbook.js
│ │ │ │ │ ├── images
│ │ │ │ │ │ ├── apple-touch-icon-precomposed-152.png
│ │ │ │ │ │ └── favicon.ico
│ │ │ │ │ ├── style.css
│ │ │ │ │ └── theme.js
│ │ │ │ ├── images
│ │ │ │ │ ├── consumer-groups.png
│ │ │ │ │ ├── kafka_log.png
│ │ │ │ │ ├── kafka_multidc.png
│ │ │ │ │ ├── kafka_multidc_complex.png
│ │ │ │ │ ├── log_anatomy.png
│ │ │ │ │ ├── log_cleaner_anatomy.png
│ │ │ │ │ ├── log_compaction.png
│ │ │ │ │ ├── mirror-maker.png
│ │ │ │ │ ├── producer_consumer.png
│ │ │ │ │ └── tracking_high_level.png
│ │ │ │ ├── index.html
│ │ │ │ ├── search_index.json
│ │ │ │ └── sitemap.xml
│ │ │ ├── gitbook
│ │ │ │ ├── fonts
│ │ │ │ │ └── fontawesome
│ │ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ │ └── fontawesome-webfont.woff2
│ │ │ │ ├── gitbook-plugin-anchors
│ │ │ │ │ └── plugin.css
│ │ │ │ ├── gitbook-plugin-baidu_gio
│ │ │ │ │ └── plugin.js
│ │ │ │ ├── gitbook-plugin-expandable-chapters-small
│ │ │ │ │ ├── expandable-chapters-small.css
│ │ │ │ │ └── expandable-chapters-small.js
│ │ │ │ ├── gitbook-plugin-fontsettings
│ │ │ │ │ ├── fontsettings.js
│ │ │ │ │ └── website.css
│ │ │ │ ├── gitbook-plugin-ga
│ │ │ │ │ └── plugin.js
│ │ │ │ ├── gitbook-plugin-github
│ │ │ │ │ └── plugin.js
│ │ │ │ ├── gitbook-plugin-lunr
│ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ └── search-lunr.js
│ │ │ │ ├── gitbook-plugin-prism
│ │ │ │ │ ├── prism-coy.css
│ │ │ │ │ ├── prism-dark.css
│ │ │ │ │ ├── prism-funky.css
│ │ │ │ │ ├── prism-okaidia.css
│ │ │ │ │ ├── prism-solarizedlight.css
│ │ │ │ │ ├── prism-tomorrow.css
│ │ │ │ │ ├── prism-twilight.css
│ │ │ │ │ └── prism.css
│ │ │ │ ├── gitbook-plugin-search
│ │ │ │ │ ├── lunr.min.js
│ │ │ │ │ ├── search-engine.js
│ │ │ │ │ ├── search.css
│ │ │ │ │ └── search.js
│ │ │ │ ├── gitbook-plugin-sharing
│ │ │ │ │ └── buttons.js
│ │ │ │ ├── gitbook-plugin-splitter
│ │ │ │ │ ├── splitter.css
│ │ │ │ │ └── splitter.js
│ │ │ │ ├── gitbook.js
│ │ │ │ ├── images
│ │ │ │ │ ├── apple-touch-icon-precomposed-152.png
│ │ │ │ │ └── favicon.ico
│ │ │ │ ├── style.css
│ │ │ │ └── theme.js
│ │ │ ├── images
│ │ │ │ ├── consumer-groups.png
│ │ │ │ ├── kafka_log.png
│ │ │ │ ├── kafka_multidc.png
│ │ │ │ ├── kafka_multidc_complex.png
│ │ │ │ ├── log_anatomy.png
│ │ │ │ ├── log_cleaner_anatomy.png
│ │ │ │ ├── log_compaction.png
│ │ │ │ ├── mirror-maker.png
│ │ │ │ ├── producer_consumer.png
│ │ │ │ └── tracking_high_level.png
│ │ │ ├── index.html
│ │ │ ├── search_index.json
│ │ │ └── sitemap.xml
│ │ ├── gitbook
│ │ │ ├── fonts
│ │ │ │ └── fontawesome
│ │ │ │ │ ├── FontAwesome.otf
│ │ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ │ └── fontawesome-webfont.woff2
│ │ │ ├── gitbook-plugin-anchors
│ │ │ │ └── plugin.css
│ │ │ ├── gitbook-plugin-baidu_gio
│ │ │ │ └── plugin.js
│ │ │ ├── gitbook-plugin-expandable-chapters-small
│ │ │ │ ├── expandable-chapters-small.css
│ │ │ │ └── expandable-chapters-small.js
│ │ │ ├── gitbook-plugin-fontsettings
│ │ │ │ ├── fontsettings.js
│ │ │ │ └── website.css
│ │ │ ├── gitbook-plugin-ga
│ │ │ │ └── plugin.js
│ │ │ ├── gitbook-plugin-github
│ │ │ │ └── plugin.js
│ │ │ ├── gitbook-plugin-lunr
│ │ │ │ ├── lunr.min.js
│ │ │ │ └── search-lunr.js
│ │ │ ├── gitbook-plugin-prism
│ │ │ │ ├── prism-coy.css
│ │ │ │ ├── prism-dark.css
│ │ │ │ ├── prism-funky.css
│ │ │ │ ├── prism-okaidia.css
│ │ │ │ ├── prism-solarizedlight.css
│ │ │ │ ├── prism-tomorrow.css
│ │ │ │ ├── prism-twilight.css
│ │ │ │ └── prism.css
│ │ │ ├── gitbook-plugin-search
│ │ │ │ ├── lunr.min.js
│ │ │ │ ├── search-engine.js
│ │ │ │ ├── search.css
│ │ │ │ └── search.js
│ │ │ ├── gitbook-plugin-sharing
│ │ │ │ └── buttons.js
│ │ │ ├── gitbook-plugin-splitter
│ │ │ │ ├── splitter.css
│ │ │ │ └── splitter.js
│ │ │ ├── gitbook.js
│ │ │ ├── images
│ │ │ │ ├── apple-touch-icon-precomposed-152.png
│ │ │ │ └── favicon.ico
│ │ │ ├── style.css
│ │ │ └── theme.js
│ │ ├── images
│ │ │ ├── consumer-groups.png
│ │ │ ├── kafka_log.png
│ │ │ ├── kafka_multidc.png
│ │ │ ├── kafka_multidc_complex.png
│ │ │ ├── log_anatomy.png
│ │ │ ├── log_cleaner_anatomy.png
│ │ │ ├── log_compaction.png
│ │ │ ├── mirror-maker.png
│ │ │ ├── producer_consumer.png
│ │ │ └── tracking_high_level.png
│ │ ├── index.html
│ │ ├── search_index.json
│ │ └── sitemap.xml
│ ├── gitbook
│ │ ├── fonts
│ │ │ └── fontawesome
│ │ │ │ ├── FontAwesome.otf
│ │ │ │ ├── fontawesome-webfont.eot
│ │ │ │ ├── fontawesome-webfont.svg
│ │ │ │ ├── fontawesome-webfont.ttf
│ │ │ │ ├── fontawesome-webfont.woff
│ │ │ │ └── fontawesome-webfont.woff2
│ │ ├── gitbook-plugin-anchors
│ │ │ └── plugin.css
│ │ ├── gitbook-plugin-baidu_gio
│ │ │ └── plugin.js
│ │ ├── gitbook-plugin-expandable-chapters-small
│ │ │ ├── expandable-chapters-small.css
│ │ │ └── expandable-chapters-small.js
│ │ ├── gitbook-plugin-fontsettings
│ │ │ ├── fontsettings.js
│ │ │ └── website.css
│ │ ├── gitbook-plugin-ga
│ │ │ └── plugin.js
│ │ ├── gitbook-plugin-github
│ │ │ └── plugin.js
│ │ ├── gitbook-plugin-lunr
│ │ │ ├── lunr.min.js
│ │ │ └── search-lunr.js
│ │ ├── gitbook-plugin-prism
│ │ │ ├── prism-coy.css
│ │ │ ├── prism-dark.css
│ │ │ ├── prism-funky.css
│ │ │ ├── prism-okaidia.css
│ │ │ ├── prism-solarizedlight.css
│ │ │ ├── prism-tomorrow.css
│ │ │ ├── prism-twilight.css
│ │ │ └── prism.css
│ │ ├── gitbook-plugin-search
│ │ │ ├── lunr.min.js
│ │ │ ├── search-engine.js
│ │ │ ├── search.css
│ │ │ └── search.js
│ │ ├── gitbook-plugin-sharing
│ │ │ └── buttons.js
│ │ ├── gitbook-plugin-splitter
│ │ │ ├── splitter.css
│ │ │ └── splitter.js
│ │ ├── gitbook.js
│ │ ├── images
│ │ │ ├── apple-touch-icon-precomposed-152.png
│ │ │ └── favicon.ico
│ │ ├── style.css
│ │ └── theme.js
│ ├── images
│ │ ├── consumer-groups.png
│ │ ├── kafka_log.png
│ │ ├── kafka_multidc.png
│ │ ├── kafka_multidc_complex.png
│ │ ├── log_anatomy.png
│ │ ├── log_cleaner_anatomy.png
│ │ ├── log_compaction.png
│ │ ├── mirror-maker.png
│ │ ├── producer_consumer.png
│ │ └── tracking_high_level.png
│ ├── index.html
│ ├── search_index.json
│ └── sitemap.xml
├── gitbook
│ ├── fonts
│ │ └── fontawesome
│ │ │ ├── FontAwesome.otf
│ │ │ ├── fontawesome-webfont.eot
│ │ │ ├── fontawesome-webfont.svg
│ │ │ ├── fontawesome-webfont.ttf
│ │ │ ├── fontawesome-webfont.woff
│ │ │ └── fontawesome-webfont.woff2
│ ├── gitbook-plugin-anchors
│ │ └── plugin.css
│ ├── gitbook-plugin-baidu_gio
│ │ └── plugin.js
│ ├── gitbook-plugin-expandable-chapters-small
│ │ ├── expandable-chapters-small.css
│ │ └── expandable-chapters-small.js
│ ├── gitbook-plugin-fontsettings
│ │ ├── fontsettings.js
│ │ └── website.css
│ ├── gitbook-plugin-ga
│ │ └── plugin.js
│ ├── gitbook-plugin-github
│ │ └── plugin.js
│ ├── gitbook-plugin-lunr
│ │ ├── lunr.min.js
│ │ └── search-lunr.js
│ ├── gitbook-plugin-prism
│ │ ├── prism-coy.css
│ │ ├── prism-dark.css
│ │ ├── prism-funky.css
│ │ ├── prism-okaidia.css
│ │ ├── prism-solarizedlight.css
│ │ ├── prism-tomorrow.css
│ │ ├── prism-twilight.css
│ │ └── prism.css
│ ├── gitbook-plugin-search
│ │ ├── lunr.min.js
│ │ ├── search-engine.js
│ │ ├── search.css
│ │ └── search.js
│ ├── gitbook-plugin-sharing
│ │ └── buttons.js
│ ├── gitbook-plugin-splitter
│ │ ├── splitter.css
│ │ └── splitter.js
│ ├── gitbook.js
│ ├── images
│ │ ├── apple-touch-icon-precomposed-152.png
│ │ └── favicon.ico
│ ├── style.css
│ └── theme.js
├── images
│ ├── consumer-groups.png
│ ├── kafka_log.png
│ ├── kafka_multidc.png
│ ├── kafka_multidc_complex.png
│ ├── log_anatomy.png
│ ├── log_cleaner_anatomy.png
│ ├── log_compaction.png
│ ├── mirror-maker.png
│ ├── producer_consumer.png
│ └── tracking_high_level.png
├── index.html
├── search_index.json
└── sitemap.xml
└── images
├── consumer-groups.png
├── kafka_log.png
├── kafka_multidc.png
├── kafka_multidc_complex.png
├── log_anatomy.png
├── log_cleaner_anatomy.png
├── log_compaction.png
├── mirror-maker.png
├── producer_consumer.png
└── tracking_high_level.png
/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/000_glossary/01_glossary.md:
--------------------------------------------------------------------------------
1 | ## 术语表
2 |
3 | 排序暂时按照文章中出现的顺序
4 |
5 | 英文 | 翻译
6 | ------------------|----------
7 | logs | 日志
8 | topic | 主题
9 | partition | 分区
10 | segment | 日志段
11 | offset | 偏移量
12 | Geo-Replication |
13 | producers | 生产者
14 | consumer | 消费者
15 | broker | 消息代理?
16 | Multi-tenancy | 多租户
17 | Metrics |
18 | pipeline | 管线、管道
19 | Replicated Logs | 副本日志
20 | In-Sync Replicas | 同步副本
21 | LEO | 日志文件最近偏移
22 | HW |
23 | rebalance |
24 | registry | 注册表
25 | rack |
26 |
--------------------------------------------------------------------------------
/010_getting_started/05_uses_cn.md:
--------------------------------------------------------------------------------
1 | ### [1.2 应用场景 Use Cases](#uses)
2 |
3 | 本章节介绍几种主流的 Apache Kafka 的应用场景。关于几个场景实践的概述可以参考[这篇博客](http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying).
4 |
5 | #### [信息系统 Messaging](#uses_messaging)
6 |
7 | Kafka 可以作为传统信息中间件的替代产品。消息中间件可能因为各种目的被引入到系统之中(解耦生产者和消费、堆积未处理的消息)。对比其他的信息中间件,Kafka 的高吞吐量、内建分区、副本、容错等特性,使得它在大规模伸缩性消息处理应用中成为了一个很好的解决方案。
8 |
9 | 根据我们的在消息系统场景的经验,系统常常需求的吞吐量并不高,但是要求很低的点到点的延迟并且依赖 Kafka 提供的强有力的持久化功能。
10 |
11 | 在这个领域 Kafka 常常被拿来与传统的消息中间件系统进行对比,例如 [**ActiveMQ**](http://activemq.apache.org/) 或者 [**RabbitMQ**](https://www.rabbitmq.com/)。
12 |
13 | #### [网站活动追踪 Website Activity Tracking](#uses_website)
14 |
15 | Kafka 原本的应用场景要求它能**重建一个用户活动追踪管线**作为一个实时的发布与订阅消息源。意思就是用户在网站上的动作事件(如浏览页面、搜索、或者其它操作)被发布到每个动作对应的中心化 Topic 上。使得这些数据源能被不同场景的需求订阅到,这些场景包括实时处理、实时监控、导入 Hadoop 或用于离线处理、报表的离线数据仓库中。
16 |
17 | 活动追踪通常情况下是非常高频的,因为很多活动消息是由每个用户的页面浏览产生的。
18 |
19 | #### [监控 Metrics](#uses_metrics)
20 |
21 | Kafka 常被用来**处理操作监控数据**。这涉及到聚合统计分布式应用的数据来产生一个中心化的操作数据数据源。
22 |
23 | #### [日志收集 Log Aggregation](#uses_logs)
24 |
25 | 很多人把 Kafka 用作**日志收集服务**的替换方案。日志收集基础就是从服务器收集物理日志文件并将其放到统一的地方(文件服务器或者 HDFS)存储以便后续处理。Kafka 抽象了文件的细节,为日志或者事件数据提供了一个消息流的抽象。这样就可以很好的支持低延迟处理需求、多数据源需求,分布式数据消费需求。与 Scribe 或 Flume 等其它的日志收集系统相比,Kafka 提供了同样优秀的性能,基于副本的更强的持久化保证和更低的点到点的延迟。
26 |
27 | #### [流处理 Stream Processing](#uses_streamprocessing)
28 |
29 | 许多 Kafka 用户是在一个多级组成的处理管道中处理数据的,他们的从 Kafka 的 Topic 上消费原始数据,然后对消息进行聚合、丰富、转发到新的 Topic 用于消费或者转入下一步处理。例如,一个推荐新闻文章的处理管线可能从 RSS 数据源爬取文章内容,然后将它发布到”articles“ Topic;然后后续的处理器再对文章内容进行规范化、去重,然后将规整的文章内容发布到一个新的 Topic 上;最后的处理管线可能尝试将这个内容推荐给用户。这样的处理管线通过一个个独立的 topic 构建起了一个实时数据流图。从 0.10.0.0 开始,Kafka 提供了一个称为 [**Kafka Streams**](http://kafka.apache.org/documentation.html#streams_overview) 的轻量级但强大的流处理包来实现如上所述的处理流程。从 Kafka Streams 开始,Kafka 成为了与 [**Apache Storm**](https://storm.apache.org/) 和 [**Apache Samza**](http://samza.apache.org/) 类似的开源流处理工具的新选择。
30 |
31 | #### [事件溯源 Event Sourcing](#uses_eventsourcing)
32 |
33 | [**事件溯源 Event sourcing**](http://martinfowler.com/eaaDev/EventSourcing.html) 是一种**将状态变更记录成一个时序队列**的应用设计模式。Kafka 对海量存储日志数据的支撑使得它可做这种应用非常好的后端支撑。
34 |
35 | #### [提交日志 Commit Log](#uses_commitlog)
36 |
37 | Kafka 可以作为分布式系统的**外部提交日志服务**。这些日志可以用于节点间数据复制和失败阶段的数据重同步过程。Kafka 的 [**日志合并 log compaction**](http://kafka.apache.org/documentation.html#compaction) 功能可以很好的支撑这种应用场景。Kafka 这种应用和 [**Apache BookKeeper**](http://zookeeper.apache.org/bookkeeper/) 功能相似。
38 |
--------------------------------------------------------------------------------
/010_getting_started/15_ecosystem.md:
--------------------------------------------------------------------------------
1 | ### [1.4 Ecosystem](#ecosystem)
2 |
3 | There are a plethora of tools that integrate with Kafka outside the main distribution. The [**ecosystem page**](https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem) lists many of these, including stream processing systems, Hadoop integration, monitoring, and deployment tools.
4 |
5 |
--------------------------------------------------------------------------------
/010_getting_started/15_ecosystem_cn.md:
--------------------------------------------------------------------------------
1 | ### [1.4 生态 Ecosystem](#ecosystem)
2 |
3 | 在 Kafka 的官方分发包之外,还有很多各式各样的和 Kafka 整合的工具。[**生态页面 (ecosystem page)**](https://cwiki.apache.org/confluence/display/KAFKA/Ecosystem) 列出了很多这样工具,包括流处理系统、Hadoop 整合、监控和部署工具等等。
4 |
5 |
--------------------------------------------------------------------------------
/GLOSSARY.md:
--------------------------------------------------------------------------------
1 | ## Glossary
2 |
3 | 这里是本书中包含的相关术语及解释
4 |
5 | # Kafka
6 | Apache Kafka 是一个分布式流平台。
7 |
8 | # Topic
9 | 用于划分 Message 的逻辑概念,一个 Topic 可以分布在多个 Broker 上。
10 |
11 | # Partition
12 | 翻译为分区,他是 Kafka 横向扩展和并行化的基础,每一个 Topic 都可以被至少分为一个 Partition。
13 |
14 | # Offset
15 | Message 在 Partition 中的偏移量,编号顺序在 Partition 中有序。
16 |
17 | # Consumer
18 | 消费者,从 broker 中消费 Message。
19 |
20 | # Producer
21 | 生产者,向 broker 中发送 Message。
22 |
23 | # Replication
24 | Kafka 支持以 Partition 为单位对 Message 进行冗余备份,每个 Partition 都可以配置至少 1 个 Replication(当仅 1 个 Replication 时即仅该 Partition 本身)。
25 |
26 | # Leader
27 | 每个 Replication 集合中的 Partition 都会选出一个唯一的 Leader,所有的读写请求都由 Leader 处理。其他 Replicas 从 Leader 处把数据更新同步到本地。
28 |
29 | # Broker
30 | Kafka 中使用 Broker 来接受 Producer 和 Consumer 的请求,并把 Message 持久化到本地磁盘。每个 Cluster 当中会选举出一个 Broker 来担任 Controller,负责处理 Partition 的 Leader 选举,协调 Partition 迁移等工作。
31 |
32 | # ISR
33 | `In-Sync Replica`, 是 Replicas 的一个子集,表示目前 Alive 且与 Leader 能够“Catch-up”的 Replicas 集合。由于读写都是首先落到 Leader 上,所以一般来说通过同步机制从 Leader 上拉取数据的 Replica 都会和 Leader 有一些延迟(包括了延迟时间和延迟条数两个维度),任意一个超过阈值都会把该 Replica 踢出 ISR。每个 Leader Partition 都有它自己独立的 ISR。
34 |
35 | # Consumer Group
36 | 消费者组,各个 consumer 可以组成一个组,每个消息只能被组中的一个 consumer 消费,如果想要一个消息被多个 consumer 消费的话,那么这些 consumer 必须在不同的组。
37 |
38 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Apache Kafka 官方文档中文版
2 |
3 | Apache Kafka是一个高吞吐量分布式消息系统。
4 |
5 | Kafka在国内很多公司都有大规模的应用,但关于它的中文资料并不多,只找到了12年某版本的[设计章节的翻译](http://www.oschina.net/translate/kafka-design?lang=chs&page=1#)。
6 |
7 | 为了方便大家学习交流,尽最大努力翻译一下完整的官方的手册。
8 |
9 | 原文版本选择当前最新的[Kafka 0.10.0的文档](http://kafka.apache.org/documentation.html)(2016-08)。
10 |
11 | 前辈们在OS China上翻译的[设计章节](http://www.oschina.net/translate/kafka-design?lang=chs&page=1#)非常优秀,如果之前没有阅读过推荐先参考一下。
12 |
13 | ** 翻译中 **
14 |
15 | 发现有小伙伴已经下载了,如果你发现后面还是英文不是我掺假是你着急了!
16 |
17 | ---
18 |
19 | 最近国内 Gitbook 比较不稳定,可以使用 Github Pages 地址阅读
20 |
21 | Github Pages:[Apache Kafka 官方文档中文版](http://kafkadoc.beanmr.com/)
22 |
23 | 源文档地址:[Kafka 0.10.0 Documentation](http://kafka.apache.org/documentation.html)
24 |
25 | Github: [BeanMr](https://github.com/BeanMr)/[apache-kafka-documentation-cn](https://github.com/BeanMr/apache-kafka-documentation-cn)
26 |
27 | Gitbook下载: [Apache Kafka Documentation CN](https://www.gitbook.com/book/ddfeng/apache-kafka-documentation-cn/details)
28 |
29 | ---
30 |
31 | 译者:[@D2Feng](https://github.com/BeanMr) [@Ein Verne](https://github.com/einverne)
32 |
33 | 翻译采用章节中英文对照的形式进行,未翻译的章节保持原文。
34 |
35 | 译文章节组织及内容尽量保持与原文一直,但有时某些句子直译会有些蹩脚,所以可能会进行一些语句上调整。
36 |
37 | 因为本人能力和精力有限,译文如有不妥欢迎[提issue](https://github.com/BeanMr/apache-kafka-documentation-cn/issues),更期望大家能共同参与进来。
38 |
39 | ## 参与翻译Pull Request流程
40 |
41 | 小伙伴[@numbbbbb](https://github.com/numbbbbb)在《The Swift Programming Language》对协作流程中进行了详细的介绍,小伙伴[@looly](https://github.com/looly)在他的ES翻译中总结了一下,我抄过来并再次感谢他们的分享。
42 |
43 | 1. 首先fork的项目[apache-kafka-documentation-cn](https://github.com/BeanMr/apache-kafka-documentation-cn)到你自己的Github
44 | 2. 把fork过去的项目也就是你的项目clone到你的本地
45 | 3. 运行 `git remote add ddfeng` 把我的库添加为远端库
46 | 4. 运行 `git pull ddfeng master` 拉取并合并到本地
47 | 5. 翻译内容或者更正之前的内容。
48 | 6. commit后push到自己的库(`git push origin master`)
49 | 7. 登录Github在你首页可以看到一个 `pull request` 按钮,点击它,填写一些说明信息,然后提交即可。
50 |
51 | 1~3是初始化操作,执行一次即可。
52 |
53 | 在提交前请先执行第4步同步库,这样可以及时发现和避免冲突,然后执行5~7既可。
54 |
55 | 如果嫌以上过程繁琐,你只是准备指出一些不当翻译,也可以点击段落后‘+’直接评论。
56 |
57 | 小伙伴 [@Ein Verne](https://github.com/einverne) 建议统一中文排版并提供了[参考规范](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.md),希望大家尽量采纳。
58 |
59 | JustDoIT,您的任何建议和尝试都值得尊重!*
60 |
61 | ----
62 |
63 | 因为在我天朝Gitbook比Github还不稳定,所以本人做了个 Hook 来将 Gitbook 生成的内容发布到 Github Pages 上。
64 |
65 | 在发布的过程会保留 /docs 目录下的 CNAME 文件,如果你要发布到自己的 Github Pages 请注意修改。
--------------------------------------------------------------------------------
/book.json:
--------------------------------------------------------------------------------
1 | {
2 | "gitbook": ">=3.0.0",
3 | "plugins": [
4 | "splitter",
5 | "github",
6 | "anchors",
7 | "sitemap",
8 | "prism",
9 | "-highlight",
10 | "baidu_gio",
11 | "ga",
12 | "expandable-chapters-small"
13 | ],
14 | "pluginsConfig": {
15 | "baidu_gio": {
16 | "token": "f11ab3e8c5f25638fa247efa47a6b1f6"
17 | },
18 | "ga": {
19 | "token": "UA-83895646-1"
20 | },
21 | "github": {
22 | "url": "https://github.com/BeanMr/apache-kafka-documentation-cn"
23 | },
24 | "prism": {
25 | "css": [
26 | "prismjs/themes/prism-coy.css"
27 | ]
28 | },
29 | "sharing": {
30 | "all": [
31 | "facebook",
32 | "google",
33 | "twitter",
34 | "weibo",
35 | "instapaper"
36 | ],
37 | "facebook": true,
38 | "google": true,
39 | "instapaper": true,
40 | "twitter": true,
41 | "vk": false,
42 | "weibo": true
43 | },
44 | "sitemap": {
45 | "hostname": "http://kafkadoc.beanmr.com/"
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/docs/CNAME:
--------------------------------------------------------------------------------
1 | kafkadoc.beanmr.com
--------------------------------------------------------------------------------
/docs/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/docs/docs/CNAME:
--------------------------------------------------------------------------------
1 | kafkadoc.beanmr.com
--------------------------------------------------------------------------------
/docs/docs/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/docs/docs/docs/CNAME:
--------------------------------------------------------------------------------
1 | kafkadoc.beanmr.com
--------------------------------------------------------------------------------
/docs/docs/docs/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/docs/docs/docs/docs/CNAME:
--------------------------------------------------------------------------------
1 | kafkadoc.beanmr.com
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/.gitignore:
--------------------------------------------------------------------------------
1 | # Node rules:
2 | ## Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
3 | .grunt
4 |
5 | ## Dependency directory
6 | ## Commenting this out is preferred by some people, see
7 | ## https://docs.npmjs.com/misc/faq#should-i-check-my-node_modules-folder-into-git
8 | node_modules
9 |
10 | # Book build output
11 | _book
12 |
13 | # eBook build output
14 | *.epub
15 | *.mobi
16 | *.pdf
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/CNAME:
--------------------------------------------------------------------------------
1 | kafkadoc.beanmr.com
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BeanMr/apache-kafka-documentation-cn/8d855de4801e730a20ab77fbbbe65a10709cf9c0/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/FontAwesome.otf
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BeanMr/apache-kafka-documentation-cn/8d855de4801e730a20ab77fbbbe65a10709cf9c0/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BeanMr/apache-kafka-documentation-cn/8d855de4801e730a20ab77fbbbe65a10709cf9c0/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BeanMr/apache-kafka-documentation-cn/8d855de4801e730a20ab77fbbbe65a10709cf9c0/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/BeanMr/apache-kafka-documentation-cn/8d855de4801e730a20ab77fbbbe65a10709cf9c0/docs/docs/docs/docs/docs/gitbook/fonts/fontawesome/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-anchors/plugin.css:
--------------------------------------------------------------------------------
1 |
2 | a.plugin-anchor {
3 | color: inherit !important;
4 | display: none;
5 | margin-left: -30px;
6 | padding-left: 40px;
7 | cursor: pointer;
8 | position: absolute;
9 | top: 0;
10 | left: 0;
11 | bottom: 0;
12 | }
13 |
14 | a.plugin-anchor i {
15 | margin-left: -30px;
16 | font-size: 15px !important;
17 | }
18 |
19 | h1, h2, h3, h4, h5, h6 {
20 | position: relative;
21 | }
22 |
23 | h1:hover a.plugin-anchor, h2:hover a.plugin-anchor, h3:hover a.plugin-anchor,
24 | h4:hover a.plugin-anchor, h5:hover a.plugin-anchor, h6:hover a.plugin-anchor {
25 | display: inline-block;
26 | }
27 |
28 | .book .book-body .page-wrapper .page-inner section.normal {
29 | overflow: visible;
30 | }
31 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-baidu_gio/plugin.js:
--------------------------------------------------------------------------------
1 | require(["gitbook"], function(gitbook) {
2 | gitbook.events.bind("start", function(e, config) {
3 | var baidu_gio = config.baidu_gio || {};
4 | var _hmt = _hmt || [];
5 | (function() {
6 | var hm = document.createElement("script");
7 | hm.src = '//hm.baidu.com/hm.js?' + baidu_gio['token'];
8 | var s = document.getElementsByTagName("script")[0];
9 | s.parentNode.insertBefore(hm, s);
10 | })();
11 |
12 | });
13 | });
14 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-expandable-chapters-small/expandable-chapters-small.css:
--------------------------------------------------------------------------------
1 | .book .book-summary .chapter > .articles {
2 | overflow: hidden;
3 | max-height: 0px;
4 | }
5 |
6 | .book .book-summary .chapter.expanded > .articles {
7 | max-height: 9999px;
8 | }
9 |
10 | .book .book-summary .exc-trigger {
11 | position: absolute;
12 | left: 12px;
13 | top: 12px;
14 | }
15 |
16 | .book .book-summary ul.summary li a,
17 | .book .book-summary ul.summary li span {
18 | padding-left: 30px;
19 | }
20 |
21 | .book .book-summary .exc-trigger:before {
22 | content: "\f105";
23 | }
24 |
25 | .book .book-summary .expanded > a .exc-trigger:before,
26 | .book .book-summary .expanded > span .exc-trigger:before {
27 | content: "\f107";
28 | }
29 |
30 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-expandable-chapters-small/expandable-chapters-small.js:
--------------------------------------------------------------------------------
1 | require(['gitbook', 'jQuery'], function(gitbook, $) {
2 | var TOGGLE_CLASSNAME = 'expanded',
3 | CHAPTER = '.chapter',
4 | ARTICLES = '.articles',
5 | TRIGGER_TEMPLATE = '',
6 | LS_NAMESPACE = 'expChapters';
7 | var init = function () {
8 | // adding the trigger element to each ARTICLES parent and binding the event
9 | $(ARTICLES)
10 | .parent(CHAPTER)
11 | .children('a')
12 | .append(
13 | $(TRIGGER_TEMPLATE)
14 | .on('click', function(e) {
15 | e.preventDefault();
16 | e.stopPropagation();
17 | toggle($(e.target).closest(CHAPTER));
18 | })
19 | );
20 | expand(lsItem());
21 | //expand current selected chapter with it's parents
22 | var activeChapter = $(CHAPTER + '.active');
23 | expand(activeChapter);
24 | expand(activeChapter.parents(CHAPTER));
25 |
26 |
27 | }
28 | var toggle = function ($chapter) {
29 | if ($chapter.hasClass('expanded')) {
30 | collapse($chapter);
31 | } else {
32 | expand($chapter);
33 | }
34 | }
35 | var collapse = function ($chapter) {
36 | if ($chapter.length && $chapter.hasClass(TOGGLE_CLASSNAME)) {
37 | $chapter.removeClass(TOGGLE_CLASSNAME);
38 | lsItem($chapter);
39 | }
40 | }
41 | var expand = function ($chapter) {
42 | if ($chapter.length && !$chapter.hasClass(TOGGLE_CLASSNAME)) {
43 | $chapter.addClass(TOGGLE_CLASSNAME);
44 | lsItem($chapter);
45 | }
46 | }
47 | var lsItem = function () {
48 | var map = JSON.parse(localStorage.getItem(LS_NAMESPACE)) || {}
49 | if (arguments.length) {
50 | var $chapters = arguments[0];
51 | $chapters.each(function (index, element) {
52 | var level = $(this).data('level');
53 | var value = $(this).hasClass(TOGGLE_CLASSNAME);
54 | map[level] = value;
55 | })
56 | localStorage.setItem(LS_NAMESPACE, JSON.stringify(map));
57 | } else {
58 | return $(CHAPTER).map(function(index, element){
59 | if (map[$(this).data('level')]) {
60 | return this;
61 | }
62 | })
63 | }
64 | }
65 | gitbook.events.bind('page.change', function() {
66 | init()
67 | });
68 | });
69 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-ga/plugin.js:
--------------------------------------------------------------------------------
1 | require(["gitbook"], function(gitbook) {
2 | // Load analytics.js
3 | gitbook.events.bind("start", function(e, config) {
4 | (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
5 | (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
6 | m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
7 | })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
8 |
9 | var cfg = config.ga;
10 | ga('create', cfg.token, cfg.configuration);
11 | });
12 |
13 | // Notify pageview
14 | gitbook.events.bind("page.change", function() {
15 | ga('send', 'pageview', window.location.pathname+window.location.search);
16 | });
17 | });
18 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-github/plugin.js:
--------------------------------------------------------------------------------
1 | require([ 'gitbook' ], function (gitbook) {
2 | gitbook.events.bind('start', function (e, config) {
3 | var githubURL = config.github.url;
4 |
5 | gitbook.toolbar.createButton({
6 | icon: 'fa fa-github',
7 | label: 'GitHub',
8 | position: 'right',
9 | onClick: function() {
10 | window.open(githubURL)
11 | }
12 | });
13 | });
14 | });
15 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-lunr/search-lunr.js:
--------------------------------------------------------------------------------
1 | require([
2 | 'gitbook',
3 | 'jquery'
4 | ], function(gitbook, $) {
5 | // Define global search engine
6 | function LunrSearchEngine() {
7 | this.index = null;
8 | this.store = {};
9 | this.name = 'LunrSearchEngine';
10 | }
11 |
12 | // Initialize lunr by fetching the search index
13 | LunrSearchEngine.prototype.init = function() {
14 | var that = this;
15 | var d = $.Deferred();
16 |
17 | $.getJSON(gitbook.state.basePath+'/search_index.json')
18 | .then(function(data) {
19 | // eslint-disable-next-line no-undef
20 | that.index = lunr.Index.load(data.index);
21 | that.store = data.store;
22 | d.resolve();
23 | });
24 |
25 | return d.promise();
26 | };
27 |
28 | // Search for a term and return results
29 | LunrSearchEngine.prototype.search = function(q, offset, length) {
30 | var that = this;
31 | var results = [];
32 |
33 | if (this.index) {
34 | results = $.map(this.index.search(q), function(result) {
35 | var doc = that.store[result.ref];
36 |
37 | return {
38 | title: doc.title,
39 | url: doc.url,
40 | body: doc.summary || doc.body
41 | };
42 | });
43 | }
44 |
45 | return $.Deferred().resolve({
46 | query: q,
47 | results: results.slice(0, length),
48 | count: results.length
49 | }).promise();
50 | };
51 |
52 | // Set gitbook research
53 | gitbook.events.bind('start', function(e, config) {
54 | var engine = gitbook.search.getEngine();
55 | if (!engine) {
56 | gitbook.search.setEngine(LunrSearchEngine, config);
57 | }
58 | });
59 | });
60 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-prism/prism-dark.css:
--------------------------------------------------------------------------------
1 | /**
2 | * prism.js Dark theme for JavaScript, CSS and HTML
3 | * Based on the slides of the talk “/Reg(exp){2}lained/”
4 | * @author Lea Verou
5 | */
6 |
7 | code[class*="language-"],
8 | pre[class*="language-"] {
9 | color: white;
10 | background: none;
11 | text-shadow: 0 -.1em .2em black;
12 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
13 | text-align: left;
14 | white-space: pre;
15 | word-spacing: normal;
16 | word-break: normal;
17 | word-wrap: normal;
18 | line-height: 1.5;
19 |
20 | -moz-tab-size: 4;
21 | -o-tab-size: 4;
22 | tab-size: 4;
23 |
24 | -webkit-hyphens: none;
25 | -moz-hyphens: none;
26 | -ms-hyphens: none;
27 | hyphens: none;
28 | }
29 |
30 | @media print {
31 | code[class*="language-"],
32 | pre[class*="language-"] {
33 | text-shadow: none;
34 | }
35 | }
36 |
37 | pre[class*="language-"],
38 | :not(pre) > code[class*="language-"] {
39 | background: hsl(30, 20%, 25%);
40 | }
41 |
42 | /* Code blocks */
43 | pre[class*="language-"] {
44 | padding: 1em;
45 | margin: .5em 0;
46 | overflow: auto;
47 | border: .3em solid hsl(30, 20%, 40%);
48 | border-radius: .5em;
49 | box-shadow: 1px 1px .5em black inset;
50 | }
51 |
52 | /* Inline code */
53 | :not(pre) > code[class*="language-"] {
54 | padding: .15em .2em .05em;
55 | border-radius: .3em;
56 | border: .13em solid hsl(30, 20%, 40%);
57 | box-shadow: 1px 1px .3em -.1em black inset;
58 | white-space: normal;
59 | }
60 |
61 | .token.comment,
62 | .token.prolog,
63 | .token.doctype,
64 | .token.cdata {
65 | color: hsl(30, 20%, 50%);
66 | }
67 |
68 | .token.punctuation {
69 | opacity: .7;
70 | }
71 |
72 | .namespace {
73 | opacity: .7;
74 | }
75 |
76 | .token.property,
77 | .token.tag,
78 | .token.boolean,
79 | .token.number,
80 | .token.constant,
81 | .token.symbol {
82 | color: hsl(350, 40%, 70%);
83 | }
84 |
85 | .token.selector,
86 | .token.attr-name,
87 | .token.string,
88 | .token.char,
89 | .token.builtin,
90 | .token.inserted {
91 | color: hsl(75, 70%, 60%);
92 | }
93 |
94 | .token.operator,
95 | .token.entity,
96 | .token.url,
97 | .language-css .token.string,
98 | .style .token.string,
99 | .token.variable {
100 | color: hsl(40, 90%, 60%);
101 | }
102 |
103 | .token.atrule,
104 | .token.attr-value,
105 | .token.keyword {
106 | color: hsl(350, 40%, 70%);
107 | }
108 |
109 | .token.regex,
110 | .token.important {
111 | color: #e90;
112 | }
113 |
114 | .token.important,
115 | .token.bold {
116 | font-weight: bold;
117 | }
118 | .token.italic {
119 | font-style: italic;
120 | }
121 |
122 | .token.entity {
123 | cursor: help;
124 | }
125 |
126 | .token.deleted {
127 | color: red;
128 | }
129 |
--------------------------------------------------------------------------------
/docs/docs/docs/docs/docs/gitbook/gitbook-plugin-prism/prism-funky.css:
--------------------------------------------------------------------------------
1 | /**
2 | * prism.js Funky theme
3 | * Based on “Polyfilling the gaps” talk slides http://lea.verou.me/polyfilling-the-gaps/
4 | * @author Lea Verou
5 | */
6 |
7 | code[class*="language-"],
8 | pre[class*="language-"] {
9 | font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
10 | text-align: left;
11 | white-space: pre;
12 | word-spacing: normal;
13 | word-break: normal;
14 | word-wrap: normal;
15 | line-height: 1.5;
16 |
17 | -moz-tab-size: 4;
18 | -o-tab-size: 4;
19 | tab-size: 4;
20 |
21 | -webkit-hyphens: none;
22 | -moz-hyphens: none;
23 | -ms-hyphens: none;
24 | hyphens: none;
25 | }
26 |
27 | /* Code blocks */
28 | pre[class*="language-"] {
29 | padding: .4em .8em;
30 | margin: .5em 0;
31 | overflow: auto;
32 | background: url('data:image/svg+xml;charset=utf-8,