Skip to content

Commit 4fe19d6

Browse files
committed
Merge branch 'dev' into 'master'
Update gitbook and resource See merge request zalopay-oss/advanced-go-book!111
2 parents d36ec94 + 94e42c7 commit 4fe19d6

File tree

591 files changed

+346
-365302
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

591 files changed

+346
-365302
lines changed

SUMMARY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
* [3.3 Làm quen với gRPC](ch3-rpc/ch3-03-grpc.md)
2525
* [3.4 Một số vấn đề khác của gRPC](ch3-rpc/ch3-04-grpc-expand.md)
2626
* [3.5 gRPC và Protobuf extensions](ch3-rpc/ch3-05-grpc-ext.md)
27-
* [3.6 Công cụ grpcurl](ch3-rpc/ch3-06-grpc-curl.mdd)
27+
* [3.6 Công cụ grpcurl](ch3-rpc/ch3-06-grpc-curl.md)
2828
* [3.7 Lời nói thêm](ch3-rpc/ch3-07-supplementary-notes.md)
2929
* [Chương 4: Go và Web](ch4-web/README.md)
3030
* [4.1 Giới thiệu chương trình Web](ch4-web/ch4-01-intro.md)

ch3-rpc/ch3-03-grpc.md

-2
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
<img src="../images/grpc.png" width="800">
55
<br/>
66
</div>
7-
<br/>
87

98
[gRPC](https://grpc.io/) là một framework RPC Open source đa ngôn ngữ được Google phát triển dựa trên [Protobuf](https://developers.google.com/protocol-buffers/) và giao thức HTTP/2. Phần này sẽ giới thiệu một số cách sử dụng gRPC để xây dựng service đơn giản.
109

@@ -19,7 +18,6 @@ Kiến trúc gRPC trong Go:
1918
<i>gRPC technology stack</i>
2019
</span>
2120
</div>
22-
<br/>
2321

2422
Lớp dưới cùng là giao thức TCP hoặc [Unix Socket](https://en.wikipedia.org/wiki/Unix_domain_socket). Ngay trên đấy là phần hiện thực của giao thức [HTTP/2](https://en.wikipedia.org/wiki/HTTP/2). Thư viện gRPC core cho Go được xây dựng ở lớp kế. Stub code được tạo ra bởi chương trình thông qua plug-in gRPC giao tiếp với thư viện gRPC core.
2523

docs/.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
.vscode
33
.txt
44
_book
5-
**/DS_Store
5+
**/.DS_Store
66
gen.sh

docs/ch1-basic/ch1-01-genesis.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -414,9 +414,9 @@
414414

415415
</li>
416416

417-
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.mdd">
417+
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.html">
418418

419-
<span>
419+
<a href="../ch3-rpc/ch3-06-grpc-curl.html">
420420

421421

422422
3.6 Công cụ grpcurl
@@ -860,7 +860,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
860860
<script>
861861
var gitbook = gitbook || [];
862862
gitbook.push(function() {
863-
gitbook.page.hasChanged({"page":{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"next":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},"previous":{"title":"Chương 1: Nền tảng ngôn ngữ Go","level":"1.2","depth":1,"path":"ch1-basic/README.md","ref":"ch1-basic/README.md","articles":[{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"path":"ch1-basic/ch1-01-genesis.md","ref":"ch1-basic/ch1-01-genesis.md","articles":[]},{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"path":"ch1-basic/ch1-03-array-string-and-slice.md","ref":"ch1-basic/ch1-03-array-string-and-slice.md","articles":[]},{"title":"1.4 Functions, Methods và Interfaces","level":"1.2.4","depth":2,"path":"ch1-basic/ch1-04-func-method-interface.md","ref":"ch1-basic/ch1-04-func-method-interface.md","articles":[]},{"title":"1.5 Khái niệm xử lý đồng thời và song song","level":"1.2.5","depth":2,"path":"ch1-basic/ch1-05-concurrency-parallelism.md","ref":"ch1-basic/ch1-05-concurrency-parallelism.md","articles":[]},{"title":"1.6 Mô hình thực thi đồng thời","level":"1.2.6","depth":2,"path":"ch1-basic/ch1-06-common-concurrency-mode.md","ref":"ch1-basic/ch1-06-common-concurrency-mode.md","articles":[]},{"title":"1.7 Error và Exceptions","level":"1.2.7","depth":2,"path":"ch1-basic/ch1-07-error-and-panic.md","ref":"ch1-basic/ch1-07-error-and-panic.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-01-genesis.md","mtime":"2019-09-22T16:25:50.428Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-23T01:54:22.813Z"},"basePath":"..","book":{"language":""}});
863+
gitbook.page.hasChanged({"page":{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"next":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},"previous":{"title":"Chương 1: Nền tảng ngôn ngữ Go","level":"1.2","depth":1,"path":"ch1-basic/README.md","ref":"ch1-basic/README.md","articles":[{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"path":"ch1-basic/ch1-01-genesis.md","ref":"ch1-basic/ch1-01-genesis.md","articles":[]},{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"path":"ch1-basic/ch1-03-array-string-and-slice.md","ref":"ch1-basic/ch1-03-array-string-and-slice.md","articles":[]},{"title":"1.4 Functions, Methods và Interfaces","level":"1.2.4","depth":2,"path":"ch1-basic/ch1-04-func-method-interface.md","ref":"ch1-basic/ch1-04-func-method-interface.md","articles":[]},{"title":"1.5 Khái niệm xử lý đồng thời và song song","level":"1.2.5","depth":2,"path":"ch1-basic/ch1-05-concurrency-parallelism.md","ref":"ch1-basic/ch1-05-concurrency-parallelism.md","articles":[]},{"title":"1.6 Mô hình thực thi đồng thời","level":"1.2.6","depth":2,"path":"ch1-basic/ch1-06-common-concurrency-mode.md","ref":"ch1-basic/ch1-06-common-concurrency-mode.md","articles":[]},{"title":"1.7 Error và Exceptions","level":"1.2.7","depth":2,"path":"ch1-basic/ch1-07-error-and-panic.md","ref":"ch1-basic/ch1-07-error-and-panic.md","articles":[]}]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-01-genesis.md","mtime":"2019-09-22T16:25:50.428Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-25T10:59:08.649Z"},"basePath":"..","book":{"language":""}});
864864
});
865865
</script>
866866
</div>

docs/ch1-basic/ch1-02-hello-revolution.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -414,9 +414,9 @@
414414

415415
</li>
416416

417-
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.mdd">
417+
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.html">
418418

419-
<span>
419+
<a href="../ch3-rpc/ch3-06-grpc-curl.html">
420420

421421

422422
3.6 Công cụ grpcurl
@@ -1078,7 +1078,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
10781078
<script>
10791079
var gitbook = gitbook || [];
10801080
gitbook.push(function() {
1081-
gitbook.page.hasChanged({"page":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"next":{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"path":"ch1-basic/ch1-03-array-string-and-slice.md","ref":"ch1-basic/ch1-03-array-string-and-slice.md","articles":[]},"previous":{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"path":"ch1-basic/ch1-01-genesis.md","ref":"ch1-basic/ch1-01-genesis.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-02-hello-revolution.md","mtime":"2019-09-22T16:25:50.429Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-23T01:54:22.813Z"},"basePath":"..","book":{"language":""}});
1081+
gitbook.page.hasChanged({"page":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"next":{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"path":"ch1-basic/ch1-03-array-string-and-slice.md","ref":"ch1-basic/ch1-03-array-string-and-slice.md","articles":[]},"previous":{"title":"1.1 Nguồn gốc của ngôn ngữ Go","level":"1.2.1","depth":2,"path":"ch1-basic/ch1-01-genesis.md","ref":"ch1-basic/ch1-01-genesis.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-02-hello-revolution.md","mtime":"2019-09-22T16:25:50.429Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-25T10:59:08.649Z"},"basePath":"..","book":{"language":""}});
10821082
});
10831083
</script>
10841084
</div>

docs/ch1-basic/ch1-03-array-string-and-slice.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -414,9 +414,9 @@
414414

415415
</li>
416416

417-
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.mdd">
417+
<li class="chapter " data-level="1.4.6" data-path="../ch3-rpc/ch3-06-grpc-curl.html">
418418

419-
<span>
419+
<a href="../ch3-rpc/ch3-06-grpc-curl.html">
420420

421421

422422
3.6 Công cụ grpcurl
@@ -1215,7 +1215,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
12151215
<script>
12161216
var gitbook = gitbook || [];
12171217
gitbook.push(function() {
1218-
gitbook.page.hasChanged({"page":{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"next":{"title":"1.4 Functions, Methods và Interfaces","level":"1.2.4","depth":2,"path":"ch1-basic/ch1-04-func-method-interface.md","ref":"ch1-basic/ch1-04-func-method-interface.md","articles":[]},"previous":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-03-array-string-and-slice.md","mtime":"2019-09-23T01:51:59.979Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-23T01:54:22.813Z"},"basePath":"..","book":{"language":""}});
1218+
gitbook.page.hasChanged({"page":{"title":"1.3 Array, strings và slices","level":"1.2.3","depth":2,"next":{"title":"1.4 Functions, Methods và Interfaces","level":"1.2.4","depth":2,"path":"ch1-basic/ch1-04-func-method-interface.md","ref":"ch1-basic/ch1-04-func-method-interface.md","articles":[]},"previous":{"title":"1.2 Sự tiến hóa của chương trình \"Hello World\"","level":"1.2.2","depth":2,"path":"ch1-basic/ch1-02-hello-revolution.md","ref":"ch1-basic/ch1-02-hello-revolution.md","articles":[]},"dir":"ltr"},"config":{"gitbook":"*","theme":"default","variables":{},"plugins":[],"pluginsConfig":{"highlight":{},"search":{},"lunr":{"maxIndexSize":1000000,"ignoreSpecialCharacters":false},"sharing":{"facebook":true,"twitter":true,"google":false,"weibo":false,"instapaper":false,"vk":false,"all":["facebook","google","twitter","weibo","instapaper"]},"fontsettings":{"theme":"white","family":"sans","size":2},"theme-default":{"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"},"showLevel":false}},"structure":{"langs":"LANGS.md","readme":"README.md","glossary":"GLOSSARY.md","summary":"SUMMARY.md"},"pdf":{"pageNumbers":true,"fontSize":12,"fontFamily":"Arial","paperSize":"a4","chapterMark":"pagebreak","pageBreaksBefore":"/","margin":{"right":62,"left":62,"top":56,"bottom":56}},"styles":{"website":"styles/website.css","pdf":"styles/pdf.css","epub":"styles/epub.css","mobi":"styles/mobi.css","ebook":"styles/ebook.css","print":"styles/print.css"}},"file":{"path":"ch1-basic/ch1-03-array-string-and-slice.md","mtime":"2019-09-23T01:51:59.979Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-09-25T10:59:08.649Z"},"basePath":"..","book":{"language":""}});
12191219
});
12201220
</script>
12211221
</div>

0 commit comments

Comments
 (0)