Skip to content

Commit 3d1a7be

Browse files
committed
update readme and docs
2 parents 78c1e22 + 8acb71c commit 3d1a7be

File tree

901 files changed

+380026
-4654
lines changed

Some content is hidden

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

901 files changed

+380026
-4654
lines changed

README.md

+20-15
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
# Go Language Advanced Programming
22

33
- [Go Language Advanced Programming](#go-language-advanced-programming)
4-
- [Giới thiệu](#gi%e1%bb%9bi-thi%e1%bb%87u)
5-
- [Tại sao chúng tôi thực hiện bộ tài liệu này ?](#t%e1%ba%a1i-sao-ch%c3%bang-t%c3%b4i-th%e1%bb%b1c-hi%e1%bb%87n-b%e1%bb%99-t%c3%a0i-li%e1%bb%87u-n%c3%a0y)
6-
- [Tài liệu tham khảo](#t%c3%a0i-li%e1%bb%87u-tham-kh%e1%ba%a3o)
7-
- [Mục lục](#m%e1%bb%a5c-l%e1%bb%a5c)
8-
- [Đọc online](#%c4%90%e1%bb%8dc-online)
9-
- [Tham gia phát triển](#tham-gia-ph%c3%a1t-tri%e1%bb%83n)
10-
- [Nhóm phát triển](#nh%c3%b3m-ph%c3%a1t-tri%e1%bb%83n)
11-
- [Liên hệ](#li%c3%aan-h%e1%bb%87)
4+
- [Giới thiệu](#giới-thiệu)
5+
- [Tại sao chúng tôi thực hiện bộ tài liệu này ?](#tại-sao-chúng-tôi-thực-hiện-bộ-tài-liệu-này-)
6+
- [Đối tượng sử dụng](#đối-tượng-sử-dụng)
7+
- [Tài liệu tham khảo](#tài-liệu-tham-khảo)
8+
- [Mục lục](#mục-lục)
9+
- [Đọc online](#đọc-online)
10+
- [Tham gia phát triển](#tham-gia-phát-triển)
11+
- [Nhóm phát triển](#nhóm-phát-triển)
12+
- [Liên hệ](#liên-hệ)
1213

1314
## Giới thiệu
1415

@@ -21,20 +22,24 @@
2122
</div>
2223
<br/>
2324

24-
Ngôn ngữ [Golang](https://golang.org/) không còn quá xa lạ trong giới lập trình nữa. Đây là một ngôn ngữ dễ học, các bạn có thể tự học Golang cơ bản ở trang [Go by Example](https://gobyexample.com/). Đa phần các tài liệu về Golang từ cơ bản hay đến nâng cao đều do các nhà lập trình viên nước ngoài biên soạn. Bộ tài liệu [Advanced Go Programming](#Go-Language-Advanced-Programming-Advanced-Go-Programming) được chúng tôi biên soạn hoàn toàn bằng Tiếng Việt. Bộ tài liệu này trình bày về những vấn đề nâng cao trong Golang như CGo, RPC framework, web framework, distributed systems,.... và các ví dụ minh họa cụ thể theo các chủ đề. Chúng tôi rất mong bộ tài liệu này sẽ giúp các bạn lập trình viên có thêm những kiến thức mới và nâng cao kỹ năng lập trình của bản thân.
25+
Ngôn ngữ [Golang](https://golang.org/) không còn quá xa lạ trong giới lập trình nữa. Đây là một ngôn ngữ dễ học, các bạn có thể tự học Golang cơ bản ở trang [Go by Example](https://gobyexample.com/). Đa phần các tài liệu về Golang từ cơ bản hay đến nâng cao đều do các nhà lập trình viên nước ngoài biên soạn. Bộ tài liệu [Advanced Go Programming](#Go-Language-Advanced-Programming-Advanced-Go-Programming) được chúng tôi biên soạn hoàn toàn bằng Tiếng Việt sẽ trình bày về những chủ đề nâng cao trong Golang như CGO, RPC framework, Web framework, Distributed systems,... và kèm theo các ví dụ minh họa cụ thể theo từng chủ đề. Chúng tôi rất mong bộ tài liệu này sẽ giúp các bạn lập trình viên có thêm nhiều kiến thức mới và nâng cao kỹ năng lập trình Golang cho bản thân.
2526

2627
## Tại sao chúng tôi thực hiện bộ tài liệu này ?
2728

2829
Chúng tôi thực hiện bộ tài liệu nhằm:
2930

30-
- Tạo ra bộ tài liệu về Go cho nội bộ Zalopay sử dụng.
31-
- Đây là cơ hội để mọi người biết tới teachnical stack của Zalopay.
31+
- Tạo ra bộ tài liệu về Go cho nội bộ ZaloPay sử dụng.
32+
- Đây là cơ hội để mọi người biết tới technical stack của ZaloPay.
3233
- Public ra bên ngoài để cộng đồng Golang Việt Nam có bộ tài liệu tiếng Việt do chính người Việt Nam biên soạn.
3334
- Đồng thời tạo ra sân chơi mới có cơ hội giao lưu mở rộng mối quan hệ với các bạn có cùng đam mê lập trình.
34-
35+
36+
## Đối tượng sử dụng
37+
38+
Tất cả các bạn có đam mê lập trình Golang và đã nắm được cơ bản về lập trình Golang. Ngoài ra, trong bộ tài liệu này chúng tôi cũng có nhắc lại vài điểm cơ bản trong lập trình Golang.
39+
3540
## Tài liệu tham khảo
3641

37-
Bộ tài liệu này được chúng tôi biên soạn dựa trên kinh nghiệm và kiến thức tích luỹ trong quá trình làm việc tại Zalopay. Đồng thời chúng tôi có tham khảo các tài liệu bên ngoài như:
42+
Bộ tài liệu này được chúng tôi biên soạn dựa trên kinh nghiệm và kiến thức tích luỹ trong quá trình làm việc tại ZaloPay. Đồng thời chúng tôi có tham khảo các tài liệu bên ngoài như:
3843
- [Advanced Go Programming](https://github.com/chai2010/advanced-go-programming-book).
3944
- [Khoá học Distributed Systems của Princeton](https://www.cs.princeton.edu/courses/archive/fall18/cos418/schedule.html).
4045

@@ -48,7 +53,7 @@ Xem trên [gitbook](https://zalopay-oss.github.io/go-advanced/).
4853

4954
## Tham gia phát triển
5055

51-
Để phát triển bộ tài liệu Advanced Go Programming hoàn chỉnh hơn trong tương lai, chúng tôi rất vui khi nhận được sự đóng góp từ mọi người.
56+
Chúng tôi biết tài liệu này còn nhiều hạn chế. Để trở nên hoàn chỉnh hơn trong tương lai, chúng tôi rất vui khi nhận được sự đóng góp từ mọi người.
5257

5358
Các bạn có thể đóng góp bằng cách:
5459

@@ -73,4 +78,4 @@ Dự án này được phát triển bởi các thành viên sau đây.
7378

7479
- Blog: [Medium ZaloPay Engineering](https://medium.com/zalopay-engineering)
7580

76-
- Bugs: [issues](https://github.com/zalopay-oss/go-advanced/issues)
81+
- Bugs report: [issues](https://github.com/zalopay-oss/go-advanced/issues)

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -903,7 +903,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
903903
<script>
904904
var gitbook = gitbook || [];
905905
gitbook.push(function() {
906-
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 Concurrent-oriented memory model","level":"1.2.5","depth":2,"path":"ch1-basic/ch1-05-mem.md","ref":"ch1-basic/ch1-05-mem.md","articles":[]},{"title":"1.6 Concurrency Mode","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-08-11T04:37:28.835Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-17T08:21:21.536Z"},"basePath":"..","book":{"language":""}});
906+
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 Concurrent-oriented memory model","level":"1.2.5","depth":2,"path":"ch1-basic/ch1-05-mem.md","ref":"ch1-basic/ch1-05-mem.md","articles":[]},{"title":"1.6 Concurrency Mode","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-08-17T09:04:34.624Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-18T10:33:30.740Z"},"basePath":"..","book":{"language":""}});
907907
});
908908
</script>
909909
</div>

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1119,7 +1119,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
11191119
<script>
11201120
var gitbook = gitbook || [];
11211121
gitbook.push(function() {
1122-
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-08-11T04:37:40.646Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-17T08:21:21.536Z"},"basePath":"..","book":{"language":""}});
1122+
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-08-17T09:04:34.624Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-18T10:33:30.740Z"},"basePath":"..","book":{"language":""}});
11231123
});
11241124
</script>
11251125
</div>

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -1198,7 +1198,7 @@ <h1 class="search-results-title">No results matching "<span class='search-query'
11981198
<script>
11991199
var gitbook = gitbook || [];
12001200
gitbook.push(function() {
1201-
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-08-11T04:37:11.271Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-17T08:21:21.536Z"},"basePath":"..","book":{"language":""}});
1201+
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-08-17T09:04:34.624Z","type":"markdown"},"gitbook":{"version":"3.2.3","time":"2019-08-18T10:33:30.740Z"},"basePath":"..","book":{"language":""}});
12021202
});
12031203
</script>
12041204
</div>

0 commit comments

Comments
 (0)