This is an automated email from the ASF dual-hosted git repository.

github-bot pushed a commit to branch asf-site
in repository 
https://gitbox.apache.org/repos/asf/incubator-dolphinscheduler-website.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new d660476  Automated deployment: Thu Dec 19 10:41:09 UTC 2019 
811385883a0fd263d6e99c30d613658bd06fe235
d660476 is described below

commit d6604761a8a96aa858540542093bd50025e8e71e
Author: dailidong <[email protected]>
AuthorDate: Thu Dec 19 10:41:10 2019 +0000

    Automated deployment: Thu Dec 19 10:41:09 UTC 2019 
811385883a0fd263d6e99c30d613658bd06fe235
---
 build/blog.js                                    |  2 +-
 build/blogDetail.js                              |  2 +-
 build/community.js                               |  4 +-
 build/documentation.js                           |  2 +-
 build/home.js                                    |  2 +-
 en-us/blog/meetup_2019_12_08.html                | 51 +++++++++++++++++
 en-us/blog/meetup_2019_12_08.json                |  6 ++
 en-us/community/index.html                       |  2 +-
 en-us/docs/development/architecture-design.html  | 14 ++---
 en-us/docs/development/architecture-design.json  |  2 +-
 en-us/docs/development/frontend-development.html |  6 +-
 en-us/docs/development/frontend-development.json |  2 +-
 en-us/docs/faq.html                              | 25 ++++----
 en-us/docs/faq.json                              |  2 +-
 zh-cn/blog/meetup_2019_12_08.html                | 51 +++++++++++++++++
 zh-cn/blog/meetup_2019_12_08.json                |  6 ++
 zh-cn/community/index.html                       |  2 +-
 zh-cn/docs/development/architecture-design.html  | 73 ------------------------
 zh-cn/docs/development/architecture-design.json  |  2 +-
 zh-cn/docs/faq.html                              | 42 +++++++-------
 zh-cn/docs/faq.json                              |  2 +-
 21 files changed, 170 insertions(+), 130 deletions(-)

diff --git a/build/blog.js b/build/blog.js
index c72d0ce..35c0e4a 100644
--- a/build/blog.js
+++ b/build/blog.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
+var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/blogDetail.js b/build/blogDetail.js
index 0da3d21..02ccabf 100644
--- a/build/blogDetail.js
+++ b/build/blogDetail.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
+var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/community.js b/build/community.js
index 6268f41..8324937 100644
--- a/build/community.js
+++ b/build/community.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
+var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
@@ -32,4 +32,4 @@ Object.defineProperty(t,"__esModule",{value:!0});var 
i="function"==typeof Symbol
  * Copyright © 2012-2019 Faisal Salman <[email protected]>
  * Licensed under MIT License
  */
-return"string"==typeof e?e.replace(/[^\d\.]/g,"").split(".")[0]:void 
0},trim:function(e){return 
e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},h={rgx:function(e,t){for(var
 n,r,o,i,a,c,s=0;s<t.length&&!a;){var 
l=t[s],u=t[s+1];for(n=r=0;n<l.length&&!a;)if(a=l[n++].exec(e))for(o=0;o<u.length;o++)c=a[++r],i=u[o],"object"==typeof
 i&&i.length>0?2==i.length?"function"==typeof 
i[1]?this[i[0]]=i[1].call(this,c):this[i[0]]=i[1]:3==i.length?"function"!=typeof
 i[1]||i[1].exec&&i[1].test?this[i [...]
\ No newline at end of file
+return"string"==typeof e?e.replace(/[^\d\.]/g,"").split(".")[0]:void 
0},trim:function(e){return 
e.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"")}},h={rgx:function(e,t){for(var
 n,r,o,i,a,c,s=0;s<t.length&&!a;){var 
l=t[s],u=t[s+1];for(n=r=0;n<l.length&&!a;)if(a=l[n++].exec(e))for(o=0;o<u.length;o++)c=a[++r],i=u[o],"object"==typeof
 i&&i.length>0?2==i.length?"function"==typeof 
i[1]?this[i[0]]=i[1].call(this,c):this[i[0]]=i[1]:3==i.length?"function"!=typeof
 i[1]||i[1].exec&&i[1].test?this[i [...]
\ No newline at end of file
diff --git a/build/documentation.js b/build/documentation.js
index 1cad27c..c76ffb1 100644
--- a/build/documentation.js
+++ b/build/documentation.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
+var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/build/home.js b/build/home.js
index 3626a35..2a92124 100644
--- a/build/home.js
+++ b/build/home.js
@@ -8,7 +8,7 @@ object-assign
 (c) Sindre Sorhus
 @license MIT
 */
-var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
+var 
o=Object.getOwnPropertySymbols,i=Object.prototype.hasOwnProperty,a=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var
 e=new 
String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var
 
t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map(function(e){return
 t[e]}).join(""))return!1;var 
r={};return"abcdefghijklmnopqrst".split("").forEach(function(e){r[e]=e}),"abcdefghijklmn
 [...]
  * react-is.production.min.js
  *
  * Copyright (c) Facebook, Inc. and its affiliates.
diff --git a/en-us/blog/meetup_2019_12_08.html 
b/en-us/blog/meetup_2019_12_08.html
new file mode 100644
index 0000000..b6a17b0
--- /dev/null
+++ b/en-us/blog/meetup_2019_12_08.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+       <meta charset="UTF-8">
+       <meta name="viewport" content="width=device-width, initial-scale=1.0, 
maximum-scale=1.0, user-scalable=no">
+       <meta name="keywords" content="meetup_2019_12_08" />
+       <meta name="description" content="meetup_2019_12_08" />
+       <!-- 网页标签标题 -->
+       <title>meetup_2019_12_08</title>
+       <link rel="shortcut icon" href="/img/docsite.ico"/>
+       <link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+       <div id="root"><div class="blog-detail-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/en-us/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">中</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant-m [...]
+<p>Apache ShardingSphere &amp; DolphinScheduler joint Meetup</p>
+<p>Address: 7th Floor, Haizhi Venture Capital Building, No. 34 Beijing Haidian 
Street</p>
+<p>Meeting time: December 8, 2019 14:00 ~ 17: 30</p>
+<p><strong>Meetup description</strong></p>
+<p>Today, open source is blooming in China, and the open source trend is 
unstoppable. The Apache community already has more than 10 open source projects 
from our native China. This time, users and technology enthusiasts who joined 
the two Apache community projects gathered together to share open source 
technologies together for China's native open source contribution!</p>
+<p>Apache ShardingSphere (Incubator) is a set of open source distributed 
database middleware. It aims to fully and reasonably utilize the computing and 
storage capabilities of relational databases in distributed scenarios, and 
provides standardized data sharding, distributed transactions, and database 
governance. Functions can be applied to various diverse application scenarios 
such as Java isomorphism, heterogeneous languages, and cloud native.</p>
+<p>Apache DolphinScheduler (Incubator) is a distributed decentralized, easily 
scalable visual DAG workflow task scheduling system. Committed to solving the 
intricate dependencies in the data processing process, it has features such as 
high reliability (HA), easy expansion, support for most task scenarios, and 
ease of use (visual drag), and has been used by dozens of companies.</p>
+<p>The two communities are invited to use the theory and practice of partners 
and Committer to share experience and communicate on the spot. At the end of 
the event, there will be wonderful discussions on how to join the Apache 
community and become a Committer or PPMC. Contribute to open source 
together!</p>
+<p><strong>The agenda is as follows</strong></p>
+<ul>
+<li>14:00 - 14:40 The integration of DolphinScheduler and containerization 
(Xiaochun Liu) <a 
href="/download/2019-12-08/DolphinScheduler_liuxiaochun.pptx">PPT</a></li>
+<li>14:40 - 15:20 Analyzing of Sharding-Proxy principle (Yonglun Zhang <a 
href="/download/2019-12-08/ShardingSphere_zhangyonglun.pptx">PPT</a></li>
+<li>15:20 - 16:00 Migration and application of DolphinScheduler in Baiwang 
(Shuang Yang)<a 
href="/download/2019-12-08/DolphinScheduler_yangshuang.pptx">PPT</a></li>
+<li>16:10 - 16:40 The Architecture of ShardingSphere and Roadmap (Juan Pan)  
<a href="/download/2019-12-08/ShardingSphere_panjuan.pptx">PPT</a></li>
+<li>16:40 - 17:20 Roundtable Discussion - How to join the Apache community and 
to be a committer</li>
+<li>Free discussion</li>
+</ul>
+<p><strong>Wonderful moment</strong></p>
+<p><img src="/img/2019-12-08/951576036704_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/961576036709_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/971576036713_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/981576036714_.pic.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/991576036717_.pic_hd.jpg" alt="avatar"></p>
+</section><footer class="footer-container"><div class="footer-body"><img 
src="/img/ds_gray.svg"/><div class="cols-container"><div class="col 
col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort 
undergoing incubation at The Apache Software Foundation (ASF), sponsored by 
Incubator. 
+Incubation is required of all newly accepted projects until a further review 
indicates 
+that the infrastructure, communications, and decision making process have 
stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or 
stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the 
ASF.</p></div><div class="col col-6"><dl><dt>Documentation</dt><dd><a 
href="/en-us/docs/developer_guide/architecture-design.html" 
target="_self">Overview</a></dd><dd><a 
href="/en-us/docs/user_doc/quick-start.html" target="_self">Quick 
start</a></dd><dd><a href="/en-us/docs/development/developers.html" 
target="_self">Developer guide</a></dd></dl></div><div class="col 
col-6"><dl><dt>ASF</dt><dd><a href="http://www.apache [...]
+       <script 
src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js";></script>
+       <script 
src="https://f.alicdn.com/react/15.4.1/react-dom.min.js";></script>
+       <script>
+               window.rootPath = '';
+  </script>
+       <script src="/build/blogDetail.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/en-us/blog/meetup_2019_12_08.json 
b/en-us/blog/meetup_2019_12_08.json
new file mode 100644
index 0000000..430744d
--- /dev/null
+++ b/en-us/blog/meetup_2019_12_08.json
@@ -0,0 +1,6 @@
+{
+  "filename": "meetup_2019_12_08.md",
+  "__html": "<p><img src=\"/img/2019-12-08/941576036700_.pic_hd.jpg\" 
alt=\"avatar\"></p>\n<p>Apache ShardingSphere &amp; DolphinScheduler joint 
Meetup</p>\n<p>Address: 7th Floor, Haizhi Venture Capital Building, No. 34 
Beijing Haidian Street</p>\n<p>Meeting time: December 8, 2019 14:00 ~ 17: 
30</p>\n<p><strong>Meetup description</strong></p>\n<p>Today, open source is 
blooming in China, and the open source trend is unstoppable. The Apache 
community already has more than 10 open source pr [...]
+  "link": "/en-us/blog/meetup_2019_12_08.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/en-us/community/index.html b/en-us/community/index.html
index d6d60c0..98b6e5e 100644
--- a/en-us/community/index.html
+++ b/en-us/community/index.html
@@ -12,7 +12,7 @@
        <link rel="stylesheet" href="/build/community.css" />
 </head>
 <body>
-       <div id="root"><div class="community-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/en-us/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">中</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant-men [...]
+       <div id="root"><div class="community-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/en-us/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">中</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant-men [...]
 Incubation is required of all newly accepted projects until a further review 
indicates 
 that the infrastructure, communications, and decision making process have 
stabilized in a manner consistent with other successful ASF projects. 
 While incubation status is not necessarily a reflection of the completeness or 
stability of the code, 
diff --git a/en-us/docs/development/architecture-design.html 
b/en-us/docs/development/architecture-design.html
index 902da86..98a0cb6 100644
--- a/en-us/docs/development/architecture-design.html
+++ b/en-us/docs/development/architecture-design.html
@@ -28,11 +28,11 @@
 <p><strong>Task type</strong>: Currently supports SHELL, SQL, SUB_PROCESS 
(sub-process), PROCEDURE, MR, SPARK, PYTHON, DEPENDENT (dependency), and plans 
to support dynamic plug-in extension, note: the 
sub-<strong>SUB_PROCESS</strong> is also A separate process definition that can 
be launched separately</p>
 <p><strong>Schedule mode</strong> :  The system supports timing schedule and 
manual schedule based on cron expressions. Command type support: start 
workflow, start execution from current node, resume fault-tolerant workflow, 
resume pause process, start execution from failed node, complement, timer, 
rerun, pause, stop, resume waiting thread. Where <strong>recovers the 
fault-tolerant workflow</strong> and <strong>restores the waiting 
thread</strong> The two command types are used by the sc [...]
 <p><strong>Timed schedule</strong>: The system uses <strong>quartz</strong> 
distributed scheduler and supports the generation of cron expression 
visualization</p>
-<p><strong>Dependency</strong>: The system does not only support 
<strong>DAG</strong> Simple dependencies between predecessors and successor 
nodes, but also provides <strong>task dependencies</strong> nodes, support for 
custom task dependencies between processes**</p>
+<p><strong>Dependency</strong>: The system does not only support 
<strong>DAG</strong> Simple dependencies between predecessors and successor 
nodes, but also provides <strong>task dependencies</strong> nodes, support for 
<strong>custom task dependencies between processes</strong></p>
 <p><strong>Priority</strong>: Supports the priority of process instances and 
task instances. If the process instance and task instance priority are not set, 
the default is first in, first out.</p>
 <p><strong>Mail Alert</strong>: Support <strong>SQL Task</strong> Query Result 
Email Send, Process Instance Run Result Email Alert and Fault Tolerant Alert 
Notification</p>
 <p><strong>Failure policy</strong>: For tasks running in parallel, if there 
are tasks that fail, two failure policy processing methods are provided. 
<strong>Continue</strong> means that the status of the task is run in parallel 
until the end of the process failure. <strong>End</strong> means that once a 
failed task is found, Kill also drops the running parallel task and the process 
ends.</p>
-<p><strong>Complement</strong>: Complement historical data, support ** 
interval parallel and serial ** two complement methods</p>
+<p><strong>Complement</strong>: Complement historical data, support 
<strong>interval parallel and serial</strong> two complement methods</p>
 <h3>2.System architecture</h3>
 <h4>2.1 System Architecture Diagram</h4>
 <p align="center">
@@ -53,7 +53,7 @@ When the MasterServer service starts, it registers a 
temporary node with Zookeep
 <p><strong>Distributed Quartz</strong> distributed scheduling component, 
mainly responsible for the start and stop operation of the scheduled task. When 
the quartz picks up the task, the master internally has a thread pool to be 
responsible for the subsequent operations of the task.</p>
 </li>
 <li>
-<p><strong>MasterSchedulerThread</strong> is a scan thread that periodically 
scans the <strong>command</strong> table in the database for different business 
operations based on different ** command types**</p>
+<p><strong>MasterSchedulerThread</strong> is a scan thread that periodically 
scans the <strong>command</strong> table in the database for different business 
operations based on different <strong>command types</strong></p>
 </li>
 <li>
 <p><strong>MasterExecThread</strong> is mainly responsible for DAG task 
segmentation, task submission monitoring, logic processing of various command 
types</p>
@@ -191,7 +191,7 @@ Interfaces include workflow creation, definition, query, 
modification, release,
 <p>Here we must first distinguish between the concept of task failure retry, 
process failure recovery, and process failure rerun:</p>
 <ul>
 <li>Task failure Retry is task level, which is automatically performed by the 
scheduling system. For example, if a shell task sets the number of retries to 3 
times, then the shell task will try to run up to 3 times after failing to 
run.</li>
-<li>Process failure recovery is process level, is done manually, recovery can 
only be performed from the failed node ** or ** from the current node **</li>
+<li>Process failure recovery is process level, is done manually, recovery can 
only be performed <strong>from the failed node</strong> or <strong>from the 
current node</strong></li>
 <li>Process failure rerun is also process level, is done manually, rerun is 
from the start node</li>
 </ul>
 <p>Next, let's talk about the topic, we divided the task nodes in the workflow 
into two types.</p>
@@ -199,16 +199,16 @@ Interfaces include workflow creation, definition, query, 
modification, release,
 <li>One is a business node, which corresponds to an actual script or 
processing statement, such as a Shell node, an MR node, a Spark node, a 
dependent node, and so on.</li>
 <li>There is also a logical node, which does not do the actual script or 
statement processing, but the logical processing of the entire process flow, 
such as sub-flow sections.</li>
 </ul>
-<p>Each ** service node** can configure the number of failed retries. When the 
task node fails, it will automatically retry until it succeeds or exceeds the 
configured number of retries. <strong>Logical node</strong> does not support 
failed retry. But the tasks in the logical nodes support retry.</p>
+<p>Each <strong>service node</strong> can configure the number of failed 
retries. When the task node fails, it will automatically retry until it 
succeeds or exceeds the configured number of retries. <strong>Logical 
node</strong> does not support failed retry. But the tasks in the logical nodes 
support retry.</p>
 <p>If there is a task failure in the workflow that reaches the maximum number 
of retries, the workflow will fail to stop, and the failed workflow can be 
manually rerun or process resumed.</p>
 <h5>V. Task priority design</h5>
 <p>In the early scheduling design, if there is no priority design and fair 
scheduling design, it will encounter the situation that the task submitted 
first may be completed simultaneously with the task submitted subsequently, but 
the priority of the process or task cannot be set. We have redesigned this, and 
we are currently designing it as follows:</p>
 <ul>
 <li>
-<p>According to ** different process instance priority ** prioritizes ** same 
process instance priority ** prioritizes ** task priority within the same 
process ** takes precedence over ** same process ** commit order from high Go 
to low for task processing.</p>
+<p>According to <strong>different process instance priority</strong> 
prioritizes <strong>same process instance priority</strong> prioritizes 
<strong>task priority within the same process</strong> takes precedence over 
<strong>same process</strong> commit order from high Go to low for task 
processing.</p>
 <ul>
 <li>
-<p>The specific implementation is to resolve the priority according to the 
json of the task instance, and then save the ** process instance priority _ 
process instance id_task priority _ task id** information in the ZooKeeper task 
queue, when obtained from the task queue, Through string comparison, you can 
get the task that needs to be executed first.</p>
+<p>The specific implementation is to resolve the priority according to the 
json of the task instance, and then save the <strong>process instance priority 
_ process instance id_task priority _ task id</strong> information in the 
ZooKeeper task queue, when obtained from the task queue, Through string 
comparison, you can get the task that needs to be executed first.</p>
 <ul>
 <li>
 <p>The priority of the process definition is that some processes need to be 
processed before other processes. This can be configured at the start of the 
process or at the time of scheduled start. There are 5 levels, followed by 
HIGHEST, HIGH, MEDIUM, LOW, and LOWEST. As shown below</p>
diff --git a/en-us/docs/development/architecture-design.json 
b/en-us/docs/development/architecture-design.json
index e44b97c..61514b6 100644
--- a/en-us/docs/development/architecture-design.json
+++ b/en-us/docs/development/architecture-design.json
@@ -1,6 +1,6 @@
 {
   "filename": "architecture-design.md",
-  "__html": "<h2>Architecture Design</h2>\n<p>Before explaining the 
architecture of the schedule system, let us first understand the common nouns 
of the schedule system.</p>\n<h3>1.Noun 
Interpretation</h3>\n<p><strong>DAG:</strong> Full name Directed Acyclic 
Graph,referred to as DAG。Tasks in the workflow are assembled in the form of 
directed acyclic graphs, which are topologically traversed from nodes with zero 
indegrees of ingress until there are no successor nodes. For example, the fol 
[...]
+  "__html": "<h2>Architecture Design</h2>\n<p>Before explaining the 
architecture of the schedule system, let us first understand the common nouns 
of the schedule system.</p>\n<h3>1.Noun 
Interpretation</h3>\n<p><strong>DAG:</strong> Full name Directed Acyclic 
Graph,referred to as DAG。Tasks in the workflow are assembled in the form of 
directed acyclic graphs, which are topologically traversed from nodes with zero 
indegrees of ingress until there are no successor nodes. For example, the fol 
[...]
   "link": "/en-us/docs/development/architecture-design.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/en-us/docs/development/frontend-development.html 
b/en-us/docs/development/frontend-development.html
index 5b90a1b..b7d25d0 100644
--- a/en-us/docs/development/frontend-development.html
+++ b/en-us/docs/development/frontend-development.html
@@ -61,7 +61,7 @@ API_BASE = http://192.168.xx.xx:12345
 <blockquote>
 <h5>! ! ! Special attention here. If the project reports a &quot;node-sass 
error&quot; error while pulling the dependency package, execute the following 
command again after execution.</h5>
 </blockquote>
-<pre><code>npm install node-sass --unsafe-perm //单独安装node-sass依赖
+<pre><code>npm install node-sass --unsafe-perm //Install node-sass dependency 
separately
 </code></pre>
 <ul>
 <li>
@@ -413,7 +413,7 @@ test.then(res =&gt; {
   msg:'success'
 }
 </code></pre>
-<p>错误返回</p>
+<p>Error return</p>
 <pre><code>{
   code:10000, 
   data:{}
@@ -469,7 +469,7 @@ test.then(res =&gt; {
 <p>(4) Common components used inside the node component are 
under<code>_source</code>, and <code>commcon.js</code> is used to configure 
public data.</p>
 <h5>2.Increase the status type</h5>
 <p>(1) Find the <code>tasksState</code> object in 
<code>src/js/conf/home/pages/dag/_source/config.js</code> and add it to it.</p>
-<pre><code> 'WAITTING_DEPEND': {  // 'WAITTING_DEPEND': {  //后端定义状态类型 前端用作key值
+<pre><code> 'WAITTING_DEPEND': {  // 'WAITTING_DEPEND': {  //Backend defines 
state type, frontend is used as key value
   id: 11,  // front-end definition id is used as a sort
   desc: `${i18n.$t('waiting for dependency')}`,  // tooltip desc
   color: '#5101be',  // The color represented is mainly used for tree and gantt
diff --git a/en-us/docs/development/frontend-development.json 
b/en-us/docs/development/frontend-development.json
index 43d9201..1f31b10 100644
--- a/en-us/docs/development/frontend-development.json
+++ b/en-us/docs/development/frontend-development.json
@@ -1,6 +1,6 @@
 {
   "filename": "frontend-development.md",
-  "__html": "<h1>Front-end development documentation</h1>\n<h3>Technical 
selection</h3>\n<pre><code>Vue mvvm framework\n\nEs6 ECMAScript 6.0\n\nAns-ui 
Analysys-ui\n\nD3  Visual Library Chart Library\n\nJsplumb connection plugin 
library\n\nLodash high performance JavaScript utility 
library\n</code></pre>\n<h3>Development environment</h3>\n<ul>\n<li>\n<h4>Node 
installation</h4>\n</li>\n</ul>\n<p>Node package download (note version 8.9.4) 
<code>https://nodejs.org/download/release/v8.9.4/</c [...]
+  "__html": "<h1>Front-end development documentation</h1>\n<h3>Technical 
selection</h3>\n<pre><code>Vue mvvm framework\n\nEs6 ECMAScript 6.0\n\nAns-ui 
Analysys-ui\n\nD3  Visual Library Chart Library\n\nJsplumb connection plugin 
library\n\nLodash high performance JavaScript utility 
library\n</code></pre>\n<h3>Development environment</h3>\n<ul>\n<li>\n<h4>Node 
installation</h4>\n</li>\n</ul>\n<p>Node package download (note version 8.9.4) 
<code>https://nodejs.org/download/release/v8.9.4/</c [...]
   "link": "/en-us/docs/development/frontend-development.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/en-us/docs/faq.html b/en-us/docs/faq.html
index 6473c4f..2f5f042 100644
--- a/en-us/docs/faq.html
+++ b/en-us/docs/faq.html
@@ -74,13 +74,12 @@
 <p>A: Install <strong>npm install node-sass --unsafe-perm</strong> separately, 
then <strong>npm install</strong></p>
 <hr>
 <h2>Q: UI cannot log in normally.</h2>
-<p>A: 1, if it is node startup, check whether the .env API_BASE configuration 
under dolphinscheduler-ui is the Api Server service address.</p>
-<pre><code>2, If it is nginx booted and installed via 
**install-dolphinscheduler-ui.sh**, check if the proxy_pass configuration in 
**/etc/nginx/conf.d/dolphinscheduler.conf** is the Api Server service. address
-
- 3, if the above configuration is correct, then please check if the Api Server 
service is normal, curl 
http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info, check the Api 
Server log, if Prompt 
cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info 
is null, which proves that the Api Server service is normal.
-
-4, if there is no problem above, you need to check if **server.context-path 
and server.port configuration** in **application.properties** is correct
-</code></pre>
+<p>A:   1, if it is node startup, check whether the .env API_BASE 
configuration under dolphinscheduler-ui is the Api Server service address.</p>
+<p>​       2, If it is nginx booted and installed via <strong><a 
href="http://install-dolphinscheduler-ui.sh";>install-dolphinscheduler-ui.sh</a></strong>,
 check if the proxy_pass                             configuration in 
<strong>/etc/nginx/conf.d/dolphinscheduler.conf</strong> is the Api Server 
service address</p>
+<p>​       3, if the above configuration is correct, then please check if the 
Api Server service is normal,</p>
+<p>​              curl <a 
href="http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info";>http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info</a>,
 check the Api Server log,</p>
+<p>​          if  Prompt 
cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session info 
is null,                which proves that the Api Server service is normal.</p>
+<p>​           4, if there is no problem above, you need to check if 
<strong>server.context-path and server.port configuration</strong> in 
<strong>application.properties</strong> is correct</p>
 <hr>
 <h2>Q: After the process definition is manually started or scheduled, no 
process instance is generated.</h2>
 <p>A:   1, first <strong>check whether the MasterServer service exists through 
jps</strong>, or directly check whether there is a master service in zk from 
the service monitoring.</p>
@@ -89,7 +88,7 @@
 <h2>Q : The task status is always in the successful submission status.</h2>
 <p>A:   1, <strong>first check whether the WorkerServer service exists through 
jps</strong>, or directly check whether there is a worker service in zk from 
the service monitoring.</p>
 <p>​       2,If the <strong>WorkerServer</strong> service is normal, you need 
to <strong>check whether the MasterServer puts the task task in the zk queue. 
You need to check whether the task is blocked in the MasterServer log and the 
zk queue.</strong></p>
-<p>​       3, if there is no problem above, you need to locate whether the 
Worker group is specified, but <strong>the machine grouped by the worker is not 
online</strong>.**</p>
+<p>​       3, if there is no problem above, you need to locate whether the 
Worker group is specified, but <strong>the machine grouped by the worker is not 
online</strong>.</p>
 <hr>
 <h2>Q: Is there a Docker image and a Dockerfile?</h2>
 <p>A: Provide Docker image and Dockerfile.</p>
@@ -142,8 +141,8 @@
 <h2>Q: Is there a valid time range for timing?</h2>
 <p>A: Yes, <strong>if the timing start and end time is the same time, then 
this timing will be invalid timing. If the end time of the start and end time 
is smaller than the current time, it is very likely that the timing will be 
automatically deleted.</strong></p>
 <h2>Q : There are several implementations of task dependencies</h2>
-<p>A:  1, the task dependency between <strong>DAG</strong>, is <strong>from 
the zero degree</strong> of the DAG segmentation</p>
-<p>​   2, there are <strong>task dependent nodes</strong>, you can achieve 
cross-process tasks or process dependencies, please refer to the (DEPENDENT) 
node design in the system-manual.</p>
+<p>A:  1, the task dependency between <strong>DAG</strong>, is <strong>from 
the zero degree</strong> of the DAG segmentation</p>
+<p>​           2, there are <strong>task dependent nodes</strong>, you can 
achieve cross-process tasks or process dependencies, please refer to the 
(DEPENDENT) node design in the system-manual.</p>
 <p>​   Note: <strong>Cross-project processes or task dependencies are not 
supported</strong></p>
 <h2>Q: There are several ways to start the process definition.</h2>
 <p>A:   1, in <strong>the process definition list</strong>, click the 
<strong>Start</strong> button.</p>
@@ -151,19 +150,19 @@
 <p>​       3, process definition <strong>view or edit</strong> the DAG page, 
any <strong>task node right click</strong> Start process definition.</p>
 <p>​       4, you can define DAG editing for the process, set the running flag 
of some tasks to <strong>prohibit running</strong>, when the process definition 
is started, the connection of the node will be removed from the DAG.</p>
 <h2>Q : Python task setting Python version</h2>
-<p>A:  1,<strong>for the version after 1.0.3</strong> only need to modify 
PYTHON_HOME in conf/env/.dolphinscheduler_env.sh</p>
+<p>A:  1,<strong>for the version after 1.0.3</strong> only need to modify 
PYTHON_HOME in conf/env/.dolphinscheduler_env.sh</p>
 <pre><code>export PYTHON_HOME=/bin/python
 </code></pre>
 <p>Note: This is <strong>PYTHON_HOME</strong> , which is the absolute path of 
the python command, not the simple PYTHON_HOME. Also note that when exporting 
the PATH, you need to directly</p>
 <pre><code>export 
PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
 </code></pre>
-<p>​   2,For versions prior to 1.0.3, the Python task only supports the Python 
version of the system. It does not support specifying the Python version.</p>
+<p>​           2,For versions prior to 1.0.3, the Python task only supports 
the Python version of the system. It does not support specifying the Python 
version.</p>
 <h2>Q:Worker Task will generate a child process through sudo -u tenant sh 
xxx.command, will kill when kill</h2>
 <p>A:  We will add the kill task in 1.0.4 and kill all the various child 
processes generated by the task.</p>
 <h2>Q : How to use the queue in DolphinScheduler, what does the user queue and 
tenant queue mean?</h2>
 <p>A : The queue in the DolphinScheduler can be configured on the user or the 
tenant. <strong>The priority of the queue specified by the user is higher than 
the priority of the tenant queue.</strong> For example, to specify a queue for 
an MR task, the queue is specified by mapreduce.job.queuename.</p>
 <p>Note: When using the above method to specify the queue, the MR uses the 
following methods:</p>
-<pre><code>    Configuration conf = new Configuration();
+<pre><code>          Configuration conf = new Configuration();
         GenericOptionsParser optionParser = new GenericOptionsParser(conf, 
args);
         String[] remainingArgs = optionParser.getRemainingArgs();
 </code></pre>
diff --git a/en-us/docs/faq.json b/en-us/docs/faq.json
index 44f1fa3..8eb92b9 100644
--- a/en-us/docs/faq.json
+++ b/en-us/docs/faq.json
@@ -1,6 +1,6 @@
 {
   "filename": "faq.md",
-  "__html": "<h2>Q: DolphinScheduler service introduction and recommended 
running memory</h2>\n<p>A: DolphinScheduler consists of 5 services, 
MasterServer, WorkerServer, ApiServer, AlertServer, LoggerServer and 
UI.</p>\n<table>\n<thead>\n<tr>\n<th>Service</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MasterServer</td>\n<td>Mainly
 responsible for DAG segmentation and task status 
monitoring</td>\n</tr>\n<tr>\n<td>WorkerServer/LoggerServer</td>\n<td>Mainly 
responsible for  [...]
+  "__html": "<h2>Q: DolphinScheduler service introduction and recommended 
running memory</h2>\n<p>A: DolphinScheduler consists of 5 services, 
MasterServer, WorkerServer, ApiServer, AlertServer, LoggerServer and 
UI.</p>\n<table>\n<thead>\n<tr>\n<th>Service</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MasterServer</td>\n<td>Mainly
 responsible for DAG segmentation and task status 
monitoring</td>\n</tr>\n<tr>\n<td>WorkerServer/LoggerServer</td>\n<td>Mainly 
responsible for  [...]
   "link": "/en-us/docs/faq.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/blog/meetup_2019_12_08.html 
b/zh-cn/blog/meetup_2019_12_08.html
new file mode 100644
index 0000000..a8614d1
--- /dev/null
+++ b/zh-cn/blog/meetup_2019_12_08.html
@@ -0,0 +1,51 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+       <meta charset="UTF-8">
+       <meta name="viewport" content="width=device-width, initial-scale=1.0, 
maximum-scale=1.0, user-scalable=no">
+       <meta name="keywords" content="meetup_2019_12_08" />
+       <meta name="description" content="meetup_2019_12_08" />
+       <!-- 网页标签标题 -->
+       <title>meetup_2019_12_08</title>
+       <link rel="shortcut icon" href="/img/docsite.ico"/>
+       <link rel="stylesheet" href="/build/blogDetail.css" />
+</head>
+<body>
+       <div id="root"><div class="blog-detail-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/zh-cn/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">En</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant- [...]
+Apache ShardingSphere &amp; DolphinScheduler联合Meetup。</p>
+<p>地址:北京海淀大街34号海置创投大厦7层创业邦</p>
+<p>会议时间:2019年12月8日 14:00 ~17:30</p>
+<p><strong>活动介绍</strong></p>
+<p>如今,开源在中国遍地开花,开源之势不可挡,Apache社区已经有10多个来自咱们中国本土的开源项目,本次联合两个Apache社区项目的用户以及技术爱好者欢聚一堂,一起分享开源技术,一起为中国本土开源献力!</p>
+<p>Apache 
ShardingSphere(Incubator)是一套开源的分布式数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应用场景。</p>
+<p>Apache 
DolphinScheduler(Incubator)是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,具有高可靠性(HA)、易扩展、支持绝大多数任务场景、简单易用(可视化拖拽)等特性,已在数十家公司使用。</p>
+<p>特邀请到两个社区的使用伙伴和Committer等理论+实践进行干货分享以及现场交流,活动的最后,会有如何加入Apache社区并成为Committer或PPMC的精彩讨论,引导大家成为开源社区的贡献者,一起为开源献一份力!</p>
+<p><strong>议程如下</strong></p>
+<ul>
+<li>14:00 - 14:40 DolphinScheduler与容器化的融合( 趣加游戏 &amp; Committer   刘小春)<a 
href="/download/2019-12-08/DolphinScheduler_liuxiaochun.pptx">PPT</a></li>
+<li>14:40 - 15:20 Sharding-Proxy原理解析(京东数科 &amp; PPMC  张永伦 )<a 
href="/download/2019-12-08/ShardingSphere_zhangyonglun.pptx">PPT</a></li>
+<li>15:20 - 16:00 DolphinScheduler在百望云的迁移和应用(大数据平台部总监   杨爽 )<a 
href="/download/2019-12-08/DolphinScheduler_yangshuang.pptx">PPT</a></li>
+<li>16:10 - 16:40 ShardingSphere的架构及未来规划 ( 京东数科高级DBA &amp;&amp; PPMC    潘娟 )<a 
href="/download/2019-12-08/ShardingSphere_panjuan.pptx">PPT</a></li>
+<li>16:40 - 17:20 圆桌讨论 - 如何加入Apache社区并且成为Committer</li>
+<li>自由讨论</li>
+</ul>
+<p><strong>精彩时刻</strong></p>
+<p><img src="/img/2019-12-08/951576036704_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/961576036709_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/971576036713_.pic_hd.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/981576036714_.pic.jpg" alt="avatar"></p>
+<p><img src="/img/2019-12-08/991576036717_.pic_hd.jpg" alt="avatar"></p>
+</section><footer class="footer-container"><div class="footer-body"><img 
src="/img/ds_gray.svg"/><div class="cols-container"><div class="col 
col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort 
undergoing incubation at The Apache Software Foundation (ASF), sponsored by 
Incubator. 
+Incubation is required of all newly accepted projects until a further review 
indicates 
+that the infrastructure, communications, and decision making process have 
stabilized in a manner consistent with other successful ASF projects. 
+While incubation status is not necessarily a reflection of the completeness or 
stability of the code, 
+it does indicate that the project has yet to be fully endorsed by the 
ASF.</p></div><div class="col col-6"><dl><dt>文档</dt><dd><a 
href="/zh-cn/docs/developer_guide/architecture-design.html" 
target="_self">概览</a></dd><dd><a href="/zh-cn/docs/user_doc/quick-start.html" 
target="_self">快速开始</a></dd><dd><a 
href="/zh-cn/docs/development/developers.html" 
target="_self">开发者指南</a></dd></dl></div><div class="col 
col-6"><dl><dt>ASF</dt><dd><a href="http://www.apache.org"; 
target="_self">基金会</a></dd>< [...]
+       <script 
src="https://f.alicdn.com/react/15.4.1/react-with-addons.min.js";></script>
+       <script 
src="https://f.alicdn.com/react/15.4.1/react-dom.min.js";></script>
+       <script>
+               window.rootPath = '';
+  </script>
+       <script src="/build/blogDetail.js"></script>
+</body>
+</html>
\ No newline at end of file
diff --git a/zh-cn/blog/meetup_2019_12_08.json 
b/zh-cn/blog/meetup_2019_12_08.json
new file mode 100644
index 0000000..633c635
--- /dev/null
+++ b/zh-cn/blog/meetup_2019_12_08.json
@@ -0,0 +1,6 @@
+{
+  "filename": "meetup_2019_12_08.md",
+  "__html": "<p><img src=\"/img/2019-12-08/941576036700_.pic_hd.jpg\" 
alt=\"avatar\">\nApache ShardingSphere &amp; 
DolphinScheduler联合Meetup。</p>\n<p>地址:北京海淀大街34号海置创投大厦7层创业邦</p>\n<p>会议时间:2019年12月8日
 14:00 
~17:30</p>\n<p><strong>活动介绍</strong></p>\n<p>如今,开源在中国遍地开花,开源之势不可挡,Apache社区已经有10多个来自咱们中国本土的开源项目,本次联合两个Apache社区项目的用户以及技术爱好者欢聚一堂,一起分享开源技术,一起为中国本土开源献力!</p>\n<p>Apache
 
ShardingSphere(Incubator)是一套开源的分布式数据库中间件,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如Java同构、异构语言、云原生等各种多样化的应
 [...]
+  "link": "/zh-cn/blog/meetup_2019_12_08.html",
+  "meta": {}
+}
\ No newline at end of file
diff --git a/zh-cn/community/index.html b/zh-cn/community/index.html
index d544d82..d3d4efb 100644
--- a/zh-cn/community/index.html
+++ b/zh-cn/community/index.html
@@ -12,7 +12,7 @@
        <link rel="stylesheet" href="/build/community.css" />
 </head>
 <body>
-       <div id="root"><div class="community-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/zh-cn/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">En</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant-me [...]
+       <div id="root"><div class="community-page" data-reactroot=""><header 
class="header-container header-container-normal"><div class="header-body"><a 
href="/zh-cn/index.html"><img class="logo" 
src="/img/hlogo_colorful.svg"/></a><div class="search search-normal"><span 
class="icon-search"></span></div><span class="language-switch 
language-switch-normal">En</span><div class="header-menu"><img 
class="header-menu-toggle" src="/img/system/menu_gray.png"/><div><ul 
class="ant-menu blackClass ant-me [...]
 Incubation is required of all newly accepted projects until a further review 
indicates 
 that the infrastructure, communications, and decision making process have 
stabilized in a manner consistent with other successful ASF projects. 
 While incubation status is not necessarily a reflection of the completeness or 
stability of the code, 
diff --git a/zh-cn/docs/development/architecture-design.html 
b/zh-cn/docs/development/architecture-design.html
index 3039cb4..952d0f8 100644
--- a/zh-cn/docs/development/architecture-design.html
+++ b/zh-cn/docs/development/architecture-design.html
@@ -301,79 +301,6 @@ ZooKeeper Master容错完成之后则重新由DolphinScheduler中Scheduler线程
 </code></pre>
 <h3>总结</h3>
 <p>本文从调度出发,初步介绍了大数据分布式工作流调度系统--DolphinScheduler的架构原理及实现思路。未完待续</p>
-<p>有些流程需要先于其他流程进行处理。 可以在流程开始时或计划开始时进行配置。 有5个级别,依次为最高,高,中,低和最低。 如下所示</p>
-<pre><code>  &lt;p align=&quot;center&quot;&gt;
-     &lt;img 
src=&quot;https://analysys.github.io/easyscheduler_docs_cn/images/process_priority.png&quot;
 alt=&quot;Process Priority Configuration&quot; width=&quot;40%&quot; /&gt;
-   &lt;/p&gt;
-
-- The priority of the task is also divided into 5 levels, followed by HIGHEST, 
HIGH, MEDIUM, LOW, and LOWEST. As shown below
-
-  &lt;p align=&quot;center&quot;&gt;
-     &lt;img 
src=&quot;https://analysys.github.io/easyscheduler_docs_cn/images/task_priority.png&quot;
 alt=&quot;task priority configuration&quot; width=&quot;35%&quot; /&gt;
-   &lt;/p&gt;
-</code></pre>
-<h5>VI. Logback和gRPC实现日志访问</h5>
-<ul>
-<li>由于Web(UI)和工作器不一定位于同一台计算机上,因此查看日志的方式与查询本地文件的方式不同。 有两种选择:
-<ul>
-<li>将日志放在ES搜索引擎上</li>
-<li>通过gRPC通信获取远程日志信息</li>
-</ul>
-</li>
-<li>考虑到DolphinScheduler的轻巧性,选择了gRPC来实现远程访问日志信息。</li>
-</ul>
- <p align="center">
-   <img src="https://analysys.github.io/easyscheduler_docs_cn/images/grpc.png"; 
alt="grpc remote access" width="50%" />
- </p>
-<ul>
-<li>我们使用自定义的Logback FileAppender和Filter函数为每个任务实例生成一个日志文件。</li>
-<li>FileAppender的主要实现如下:</li>
-</ul>
-<pre><code class="language-java"> <span class="hljs-comment">/**
-  * task log appender
-  */</span>
- Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span 
class="hljs-title">TaskLogAppender</span> <span 
class="hljs-keyword">extends</span> <span 
class="hljs-title">FileAppender</span>&lt;<span 
class="hljs-title">ILoggingEvent</span> </span>{
- 
-     ...
-
-    <span class="hljs-meta">@Override</span>
-    <span class="hljs-function">Protected <span 
class="hljs-keyword">void</span> <span class="hljs-title">append</span><span 
class="hljs-params">(ILoggingEvent event)</span> </span>{
-
-        If (currentlyActiveFile == <span class="hljs-keyword">null</span>){
-            currentlyActiveFile = getFile();
-        }
-        String activeFile = currentlyActiveFile;
-        <span class="hljs-comment">// thread name: 
taskThreadName-processDefineId_processInstanceId_taskInstanceId</span>
-        String threadName = event.getThreadName();
-        String[] threadNameArr = threadName.split(<span 
class="hljs-string">"-"</span>);
-        <span class="hljs-comment">// logId = 
processDefineId_processInstanceId_taskInstanceId</span>
-        String logId = threadNameArr[<span class="hljs-number">1</span>];
-        ...
-        <span class="hljs-keyword">super</span>.subAppend(event);
-    }
-}
-</code></pre>
-<p>以/ process definition id / process instance id / task instance 
id.log的形式生成日志</p>
-<ul>
-<li>过滤器匹配以TaskLogInfo开头的线程名称:</li>
-<li>TaskLogFilter is implemented as follows:</li>
-</ul>
-<pre><code class="language-java"> <span class="hljs-comment">/**
- * task log filter
- */</span>
-Public <span class="hljs-class"><span class="hljs-keyword">class</span> <span 
class="hljs-title">TaskLogFilter</span> <span 
class="hljs-keyword">extends</span> <span 
class="hljs-title">Filter</span>&lt;<span 
class="hljs-title">ILoggingEvent</span> </span>{
-
-    <span class="hljs-meta">@Override</span>
-    <span class="hljs-function">Public FilterReply <span 
class="hljs-title">decide</span><span class="hljs-params">(ILoggingEvent 
event)</span> </span>{
-        If (event.getThreadName().startsWith(<span 
class="hljs-string">"TaskLogInfo-"</span>)){
-            Return FilterReply.ACCEPT;
-        }
-        Return FilterReply.DENY;
-    }
-}
-</code></pre>
-<h3>摘要</h3>
-<p>从调度开始,介绍了大数据分布式工作流调度系统DolphinScheduler的体系结构原理和实现思路。 未完待续</p>
 </div></section><footer class="footer-container"><div class="footer-body"><img 
src="/img/ds_gray.svg"/><div class="cols-container"><div class="col 
col-12"><h3>Disclaimer</h3><p>Apache DolphinScheduler (incubating) is an effort 
undergoing incubation at The Apache Software Foundation (ASF), sponsored by 
Incubator. 
 Incubation is required of all newly accepted projects until a further review 
indicates 
 that the infrastructure, communications, and decision making process have 
stabilized in a manner consistent with other successful ASF projects. 
diff --git a/zh-cn/docs/development/architecture-design.json 
b/zh-cn/docs/development/architecture-design.json
index 28bf5f3..459d7c4 100644
--- a/zh-cn/docs/development/architecture-design.json
+++ b/zh-cn/docs/development/architecture-design.json
@@ -1,6 +1,6 @@
 {
   "filename": "architecture-design.md",
-  "__html": 
"<h2>系统架构设计</h2>\n<p>在对调度系统架构说明之前,我们先来认识一下调度系统常用的名词</p>\n<h3>1.名词解释</h3>\n<p><strong>DAG:</strong>
 全称Directed Acyclic 
Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:</p>\n<p 
align=\"center\">\n  <img src=\"/img/dag_examples_cn.jpg\" alt=\"dag示例\"  
width=\"60%\" />\n  <p align=\"center\">\n        <em>dag示例</em>\n  
</p>\n</p>\n<p><strong>流程定义</strong>:通过拖拽任务节点并建立任务节点的关联所形成的可视化<strong>DAG</strong></p>\n<p><strong>流程实例</strong>:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成,
 [...]
+  "__html": 
"<h2>系统架构设计</h2>\n<p>在对调度系统架构说明之前,我们先来认识一下调度系统常用的名词</p>\n<h3>1.名词解释</h3>\n<p><strong>DAG:</strong>
 全称Directed Acyclic 
Graph,简称DAG。工作流中的Task任务以有向无环图的形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。举例如下图:</p>\n<p 
align=\"center\">\n  <img src=\"/img/dag_examples_cn.jpg\" alt=\"dag示例\"  
width=\"60%\" />\n  <p align=\"center\">\n        <em>dag示例</em>\n  
</p>\n</p>\n<p><strong>流程定义</strong>:通过拖拽任务节点并建立任务节点的关联所形成的可视化<strong>DAG</strong></p>\n<p><strong>流程实例</strong>:流程实例是流程定义的实例化,可以通过手动启动或定时调度生成,
 [...]
   "link": "/zh-cn/docs/development/architecture-design.html",
   "meta": {}
 }
\ No newline at end of file
diff --git a/zh-cn/docs/faq.html b/zh-cn/docs/faq.html
index 5f443b8..9b44949 100644
--- a/zh-cn/docs/faq.html
+++ b/zh-cn/docs/faq.html
@@ -75,28 +75,28 @@
 <hr>
 <h2>Q:UI 不能正常登陆访问</h2>
 <p>A: 1,如果是node启动的查看dolphinscheduler-ui下的.env API_BASE配置是否是Api Server服务地址</p>
-<pre><code>2,如果是nginx启动的并且是通过 **install-dolphinscheduler-ui.sh** 安装的,查看        
                                                                                
        **/etc/nginx/conf.d/dolphinscheduler.conf** 中的proxy_pass配置是否是Api 
Server服务地址
-
-3,如果以上配置都是正确的,那么请查看Api Server服务是否是正常的,curl 
http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info,查看Api 
Server日志,如果提示 cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] 
- session info is null,则证明Api Server服务是正常的
-
-4,如果以上都没有问题,需要查看一下 **application.properties** 中的 **server.context-path 和 
server.port 配置**是否正确
-</code></pre>
+<p>​       2,如果是nginx启动的并且是通过<strong><a 
href="http://install-dolphinscheduler-ui.sh";>install-dolphinscheduler-ui.sh</a></strong>安装的,查看</p>
+<p>​              
<strong>/etc/nginx/conf.d/dolphinscheduler.conf</strong>中的proxy_pass配置是否是Api 
Server服务地址</p>
+<p>​        3,如果以上配置都是正确的,那么请查看Api Server服务是否是正常的,</p>
+<p>​                   curl <a 
href="http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info";>http://192.168.xx.xx:12345/dolphinscheduler/users/get-user-info</a>
 查看Api Server日志,</p>
+<p>​                   
如果提示cn.dolphinscheduler.api.interceptor.LoginHandlerInterceptor:[76] - session 
info is null,则证                  明Api Server服务是正常的</p>
+<p>​        4,如果以上都没有问题,需要查看一下<strong>application.properties</strong> 中的 
<strong>server.context-path 和                                                   
server.port 配置</strong>是否正确</p>
 <hr>
 <h2>Q: 流程定义手动启动或调度启动之后,没有流程实例生成</h2>
 <p>A: 1,首先通过<strong>jps 
查看MasterServer服务是否存在</strong>,或者从服务监控直接查看zk中是否存在master服务</p>
-<p>​   2,如果存在master服务,查看 <strong>命令状态统计</strong> 或者 
<strong>t_ds_error_command</strong> 中是否增加的新记录,如果增加了,<strong>请查看 message 
字段定位启动异常原因</strong></p>
+<p>​      2,如果存在master服务,查看 <strong>命令状态统计</strong> 或者 
<strong>t_ds_error_command</strong> 中是否增加的新记录,如果增加了,<strong>请查看 message 
字段定位启动异常原因</strong></p>
 <hr>
 <h2>Q : 任务状态一直处于提交成功状态</h2>
 <p>A: 1,首先通过<strong>jps 
查看WorkerServer服务是否存在</strong>,或者从服务监控直接查看zk中是否存在worker服务</p>
 <p>​       2,如果 <strong>WorkerServer</strong> 服务正常,需要 
<strong>查看MasterServer是否把task任务放到zk队列中</strong> 
,<strong>需要查看MasterServer日志及zk队列中是否有任务阻塞</strong></p>
-<p>​   3,如果以上都没有问题,需要定位是否指定了Worker分组,但是 <strong>Worker分组的机器不是在线状态</strong></p>
+<p>​      3,如果以上都没有问题,需要定位是否指定了Worker分组,但是 
<strong>Worker分组的机器不是在线状态</strong></p>
 <hr>
 <h2>Q : <a href="http://install.sh";>install.sh</a> 中需要注意问题</h2>
 <p>A:  1,如果替换变量中包含特殊字符,<strong>请用 \ 转移符进行转移</strong></p>
-<p>​   
2,installPath=&quot;/data1_1T/dolphinscheduler&quot;,<strong>这个目录不能和当前要一键安装的install.sh目录是一样的</strong></p>
-<p>​   
3,deployUser=&quot;dolphinscheduler&quot;,<strong>部署用户必须具有sudo权限</strong>,因为worker是通过sudo
 -u 租户 sh xxx.command进行执行的</p>
-<p>​   
4,monitorServerState=&quot;false&quot;,服务监控脚本是否启动,默认是不启动服务监控脚本的。<strong>如果启动服务监控脚本,则每5分钟定时来监控master和worker的服务是否down机,如果down机则会自动重启</strong></p>
-<p>​   
5,hdfsStartupSate=&quot;false&quot;,是否开启HDFS资源上传功能。默认是不开启的,<strong>如果不开启则资源中心是不能使用的</strong>。如果开启,需要conf/common/hadoop/hadoop.properties中配置fs.defaultFS和yarn的相关配置,如果使用namenode
 HA,需要将core-site.xml和hdfs-site.xml复制到conf根目录下</p>
+<p>​       
2,installPath=&quot;/data1_1T/dolphinscheduler&quot;,<strong>这个目录不能和当前要一键安装的install.sh目录是一样的</strong></p>
+<p>​       
3,deployUser=&quot;dolphinscheduler&quot;,<strong>部署用户必须具有sudo权限</strong>,因为worker是通过sudo
 -u 租户 sh xxx.command进行执行的</p>
+<p>​      
4,monitorServerState=&quot;false&quot;,服务监控脚本是否启动,默认是不启动服务监控脚本的。<strong>如果启动服务监控脚本,则每5分钟定时来监控master和worker的服务是否down机,如果down机则会自动重启</strong></p>
+<p>​           
5,hdfsStartupSate=&quot;false&quot;,是否开启HDFS资源上传功能。默认是不开启的,<strong>如果不开启则资源中心是不能使用的</strong>。如果开启,需要conf/common/hadoop/hadoop.properties中配置fs.defaultFS和yarn的相关配置,如果使用namenode
 HA,需要将core-site.xml和hdfs-site.xml复制到conf根目录下</p>
 <p>​   注意:<strong>1.0.x版本是不会自动创建hdfs根目录的,需要自行创建,并且需要部署用户有hdfs的操作权限</strong></p>
 <hr>
 <h2>Q : 流程定义和流程实例下线异常</h2>
@@ -126,7 +126,7 @@
 <h2>Q :  多Master和多Worker状态下,服务掉了,怎么容错</h2>
 <p>A:  <strong>注意:Master监控Master及Worker服务。</strong></p>
 <p>​   1,如果Master服务掉了,其它的Master会接管挂掉的Master的流程,继续监控Worker task状态</p>
-<p>​   2,如果Worker服务掉,Master会监控到Worker服务掉了,如果存在Yarn任务,Kill Yarn任务之后走重试</p>
+<p>​   2,如果Worker服务掉了,Master会监控到Worker服务掉了,如果存在Yarn任务,Kill Yarn任务之后走重试</p>
 <p>具体请看容错设计:<a 
href="https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1.html#%E7%B3%BB%E7%BB%9F%E6%9E%B6%E6%9E%84%E8%AE%BE%E8%AE%A1";>https://analysys.github.io/easyscheduler_docs_cn/系统架构设计.html#系统架构设计</a></p>
 <hr>
 <h2>Q : 对于Master和Worker一台机器伪分布式下的容错</h2>
@@ -137,28 +137,28 @@
 <h2>Q: 定时有有效时间范围吗</h2>
 
<p>A:有的,<strong>如果定时的起止时间是同一个时间,那么此定时将是无效的定时</strong>。<strong>如果起止时间的结束时间比当前的时间小,很有可能定时会被自动删除</strong></p>
 <h2>Q : 任务依赖有几种实现</h2>
-<p>A:  1,<strong>DAG</strong> 之间的任务依赖关系,是从 <strong>入度为零</strong> 进行DAG切分的</p>
-<p>​   2,有 <strong>任务依赖节点</strong> ,可以实现跨流程的任务或者流程依赖,具体请参考 依赖(DEPENDENT)节点:<a 
href="https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html#%E4%BB%BB%E5%8A%A1%E8%8A%82%E7%82%B9%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE";>https://analysys.github.io/easyscheduler_docs_cn/系统使用手册.html#任务节点类型和参数设置</a></p>
+<p>A:  1,<strong>DAG</strong> 之间的任务依赖关系,是从 <strong>入度为零</strong> 进行DAG切分的</p>
+<p>​       2,有 <strong>任务依赖节点</strong> ,可以实现跨流程的任务或者流程依赖,具体请参考 
依赖(DEPENDENT)节点:<a 
href="https://analysys.github.io/easyscheduler_docs_cn/%E7%B3%BB%E7%BB%9F%E4%BD%BF%E7%94%A8%E6%89%8B%E5%86%8C.html#%E4%BB%BB%E5%8A%A1%E8%8A%82%E7%82%B9%E7%B1%BB%E5%9E%8B%E5%92%8C%E5%8F%82%E6%95%B0%E8%AE%BE%E7%BD%AE";>https://analysys.github.io/easyscheduler_docs_cn/系统使用手册.html#任务节点类型和参数设置</a></p>
 <p>​   注意:<strong>不支持跨项目的流程或任务依赖</strong></p>
 <h2>Q: 流程定义有几种启动方式</h2>
 <p>A: 1,在 <strong>流程定义列表</strong>,点击 <strong>启动</strong> 按钮</p>
-<p>​   2,<strong>流程定义列表添加定时器</strong>,调度启动流程定义</p>
-<p>​   3,流程定义 <strong>查看或编辑</strong> DAG 页面,任意 <strong>任务节点右击</strong> 
启动流程定义</p>
-<p>​   4,可以对流程定义 DAG 编辑,设置某些任务的运行标志位 
<strong>禁止运行</strong>,则在启动流程定义的时候,将该节点的连线将从DAG中去掉</p>
+<p>​           2,<strong>流程定义列表添加定时器</strong>,调度启动流程定义</p>
+<p>​           3,流程定义 <strong>查看或编辑</strong> DAG 页面,任意 <strong>任务节点右击</strong> 
启动流程定义</p>
+<p>​           4,可以对流程定义 DAG 编辑,设置某些任务的运行标志位 
<strong>禁止运行</strong>,则在启动流程定义的时候,将该节点的连线将从DAG中去掉</p>
 <h2>Q : Python任务设置Python版本</h2>
-<p>A:  1,对于1**.0.3之后的版本**只需要修改 
conf/env/.dolphinscheduler_env.sh中的PYTHON_HOME</p>
+<p>A:  1,对于<strong>1.0.3之后的版本</strong>只需要修改 
conf/env/.dolphinscheduler_env.sh中的PYTHON_HOME</p>
 <pre><code>export PYTHON_HOME=/bin/python
 </code></pre>
 <p>注意:这了 <strong>PYTHON_HOME</strong> ,是python命令的绝对路径,而不是单纯的 
PYTHON_HOME,还需要注意的是 export PATH 的时候,需要直接</p>
 <pre><code>export 
PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
 </code></pre>
-<p>​   2,对 1.0.3 之前的版本,Python任务只能支持系统的Python版本,不支持指定Python版本</p>
+<p>​           2,对 1.0.3 之前的版本,Python任务只能支持系统的Python版本,不支持指定Python版本</p>
 <h2>Q: Worker Task 通过sudo -u 租户 sh xxx.command会产生子进程,在kill的时候,是否会杀掉</h2>
 <p>A: 我们会在1.0.4中增加kill任务同时,kill掉任务产生的各种所有子进程</p>
 <h2>Q : DolphinScheduler中的队列怎么用,用户队列和租户队列是什么意思</h2>
 <p>A : DolphinScheduler 
中的队列可以在用户或者租户上指定队列,<strong>用户指定的队列优先级是高于租户队列的优先级的。</strong>,例如:对MR任务指定队列,是通过 
mapreduce.job.queuename 来指定队列的。</p>
 <p>注意:MR在用以上方法指定队列的时候,传递参数请使用如下方式:</p>
-<pre><code>    Configuration conf = new Configuration();
+<pre><code>                            Configuration conf = new 
Configuration();
         GenericOptionsParser optionParser = new GenericOptionsParser(conf, 
args);
         String[] remainingArgs = optionParser.getRemainingArgs();
 </code></pre>
diff --git a/zh-cn/docs/faq.json b/zh-cn/docs/faq.json
index 339c980..9641899 100644
--- a/zh-cn/docs/faq.json
+++ b/zh-cn/docs/faq.json
@@ -1,6 +1,6 @@
 {
   "filename": "faq.md",
-  "__html": "<h2>Q:DolphinScheduler服务介绍及建议运行内存</h2>\n<p>A: 
DolphinScheduler由5个服务组成,MasterServer、WorkerServer、ApiServer、AlertServer、LoggerServer和UI。</p>\n<table>\n<thead>\n<tr>\n<th>服务</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MasterServer</td>\n<td>主要负责
 <strong>DAG</strong> 
的切分和任务状态的监控</td>\n</tr>\n<tr>\n<td>WorkerServer/LoggerServer</td>\n<td>主要负责任务的提交、执行和任务状态的更新。LoggerServer用于Rest
 Api通过 <strong>RPC</strong> 
查看日志</td>\n</tr>\n<tr>\n<td>ApiServer</td>\n<td>提供Rest Api服务,供UI进行 [...]
+  "__html": "<h2>Q:DolphinScheduler服务介绍及建议运行内存</h2>\n<p>A: 
DolphinScheduler由5个服务组成,MasterServer、WorkerServer、ApiServer、AlertServer、LoggerServer和UI。</p>\n<table>\n<thead>\n<tr>\n<th>服务</th>\n<th>说明</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>MasterServer</td>\n<td>主要负责
 <strong>DAG</strong> 
的切分和任务状态的监控</td>\n</tr>\n<tr>\n<td>WorkerServer/LoggerServer</td>\n<td>主要负责任务的提交、执行和任务状态的更新。LoggerServer用于Rest
 Api通过 <strong>RPC</strong> 
查看日志</td>\n</tr>\n<tr>\n<td>ApiServer</td>\n<td>提供Rest Api服务,供UI进行 [...]
   "link": "/zh-cn/docs/faq.html",
   "meta": {}
 }
\ No newline at end of file

Reply via email to