* Bản dịch này mục đích để khuyến khích các bạn đóng góp vào dự án sách, khóa học miễn phí này mà chưa thể đọc tốt được Tiếng Anh. Mình cũng mong Việt Nam có thể có nhiều hơn những khóa học, những cuốn sách miễn phí về lập trình để giúp các bạn trẻ hiện nay có thể sớm tiếp cận với công nghệ, phát triển sớm được niềm đam mê của bản thân.
* Bản dịch này mục đích để khuyến khích các bạn đóng góp vào dự án `free-programming-books` mà chưa thể đọc tốt được Tiếng Anh. Tôi cũng mong Việt Nam có thể có nhiều hơn những khóa học, những cuốn sách miễn phí về lập trình để giúp các bạn trẻ hiện nay có thể sớm tiếp cận với công nghệ, phát triển sớm được niềm đam mê của bản thân.
* Mình đã cố gắng dịch cho chính xác, nhưng cũng khó có thể tránh khỏi sai sót, có một số mong các bạn lượng thứ.
* Tôi đã cố gắng dịch chính xác, nhưng khó có thể tránh khỏi một số sai sót, mong các bạn lượng thứ.
* Mọi ý kiến, đóng góp về bản dịch, vui lòng [tạo một issue mới](/issues/new) hoặc bạn có thể chỉnh sửa và tạo Pull Request.
* Mọi ý kiến, đóng góp về bản dịch, vui lòng [tạo một issue mới](/issues/new) hoặc bạn có thể chỉnh sửa và tạo pull Request.
---
---
## Giấy Phép Thỏa Thuận Cộng Tác Viên
## Giấy Phép Thỏa Thuận Cộng Tác Viên
Bằng cách đóng góp, bạn đồng ý với [LICENSE](https://github.com/EbookFoundation/free-programming-books/blob/master/LICENSE) của repo này.
Bằng cách đóng góp, bạn đồng ý với [LICENSE](https://github.com/EbookFoundation/free-programming-books/blob/master/LICENSE) của kho lưu trữ này.
## Quy Tắc Ứng Xử của Cộng Tác Viên
## Quy Tắc Ứng Xử của Cộng Tác Viên
Bằng cách đóng góp, bạn đồng ý tôn trọng [Quy Tắc Ứng Xử](https://github.com/EbookFoundation/free-programming-books/blob/master/CODE_OF_CONDUCT.md) của repo này.
Bằng cách đóng góp, bạn đồng ý tôn trọng [Quy Tắc Ứng Xử](https://github.com/EbookFoundation/free-programming-books/blob/master/CODE_OF_CONDUCT.md) của kho lưu trữ này.
## Tóm Tắt
## Tóm Tắt
1. "Một liên kết để tải một cuốn sách" không có nghĩa nó là một cuốn sách *miễn phí*. Vui lòng chỉ đóng góp nội dung miễn phí. Đảm bảo rằng nó là miễn phí. Chúng tôi không chấp nhận các liên kết đến các trang có *yêu cầu bắt buộc* nhập địa chỉ email để nhận sách.
1. "Một liên kết để tải một cuốn sách" không có nghĩa nó là một cuốn sách *miễn phí*. Vui lòng chỉ đóng góp nội dung miễn phí. Đảm bảo rằng nó là miễn phí. Chúng tôi không chấp nhận các liên kết đến các trang có *yêu cầu bắt buộc* nhập địa chỉ email để nhận sách, nhưng chúng tôi hoan nghênh những danh sách yêu cầu chúng.
2. Bạn không cần phải biết về Git: nếu bạn tìm được thứ gì đó thú vị *và chưa có trong kho lưu trữ này*, vui lòng mở một [Issue](https://github.com/EbookFoundation/free-programming-books/issues) với các đề xuất mà bạn muốn đóng góp.
2. Bạn không cần phải biết về Git: nếu bạn tìm được thứ gì đó thú vị *và chưa có trong kho lưu trữ này*, vui lòng mở một [Issue](https://github.com/EbookFoundation/free-programming-books/issues) với các đề xuất mà bạn muốn đóng góp.
- Nếu bạn biết Git, vui lòng Fork repo này và gửi pull requests.
- Nếu bạn biết Git, vui lòng Fork kho lưu trữ này và gửi pull requests.
3. Chúng tôi có 5 loại tài liệu, bạn có thể chọn một trong những cái dưới đây:
3. Chúng tôi có 5 loại tài liệu, bạn có thể chọn một trong những cái dưới đây:
- *Sách* : PDF, HTML, ePub, một trang web dựa trên gitbook.io, a Git repo, vv.
- *Sách* : PDF, HTML, ePub, một trang web dựa trên gitbook.io, một kho lưu trữ Git, v.v.
- *Khóa Học* : Một khóa học là một tài liệu học tập, không phải là sách. [Đây là một khóa học](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/).
- *Khóa Học* : Một khóa học là một tài liệu học tập, không phải là sách. [Đây là một khóa học](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/).
- *Hướng Dẫn Tương Tác* : Một trang web cho phép người dùng gõ Code và chạy chương trình dựa trên kết quả và đánh giá. Ví dụ: [Try Haskell](http://tryhaskell.org), [Try Github](http://try.github.io).
- *Hướng Dẫn Trực Quan* : Một trang web cho phép người dùng lập trình hoặc chạy chương trình dựa trên kết quả và đánh giá. Ví dụ: [Try Haskell](http://tryhaskell.org), [Try Github](http://try.github.io).
- *Podcasts and Screencasts* : Podcasts và screencasts.
- *Podcasts và Screencasts* : Podcasts và screencasts.
- *Đặt Vấn Đề & Cuộc Thi Lập Trình* : Trang web hoặc phần mềm cho phép bạn đánh giá kỹ năng lập trình của mình bằng cách giải quyết các vấn đề đơn giản hoặc phức tạp, có hoặc không có đánh giá Code, có hoặc không so sánh kết quả với những người khác.
- *Bài Tập & Cuộc Thi Lập Trình* : Trang web hoặc phần mềm cho phép bạn đánh giá kỹ năng lập trình của mình bằng cách giải quyết các vấn đề đơn giản hoặc phức tạp, có hoặc không có đánh giá mã nguồn, có hoặc không so sánh kết quả với những người khác.
4. Đảm bảo tuân thủ theo [những nguyên tắc bên dưới](#Những Nguyên Tắc) và đảm bảo sử dụng đúng những [định dạng Markdown](#Định Dạng).
4. Đảm bảo tuân thủ theo [những nguyên tắc bên dưới](#Những Nguyên Tắc) và đảm bảo sử dụng đúng [định dạng Markdown](#Định Dạng).
5. Github Actions sẽ chạy các test để đảm bảo danh sách của bạn được sắp xếp theo thứ tự bảng chữ cái và các quy tắc định dạng được tuân thủ. Đảm bảo kiểm tra xem các thay đổi của bạn có vượt qua các bài test hay không.
5. Github Actions sẽ chạy các test để đảm bảo danh sách của bạn được sắp xếp theo thứ tự bảng chữ cái và các nguyên tắc định dạng được tuân thủ. Kiểm tra để đảm bảo các thay đổi của bạn có vượt qua các bài test.
### Những Nguyên Tắc
### Những Nguyên Tắc
- đảm bảo rằng một cuốn sách là miễn phí. Kiểm tra kỹ nếu cần. Nó sẽ giúp ích cho các quản trị viên nếu bạn nhận xét trong phần PR về lý do tại sao bạn cho rằng cuốn sách là miễn phí.
- đảm bảo rằng một cuốn sách là miễn phí. Kiểm tra kỹ nếu cần. Nó sẽ giúp cho các quản trị viên nếu bạn nhận xét trong phần PR về lý do tại sao bạn cho rằng cuốn sách là miễn phí.
- chúng tôi không chấp nhận các tệp được lưu trữ trên google drive, dropbox, mega, scribd, issu và các nền tảng tải lên tệp tương tự khác.
- chúng tôi không chấp nhận các tệp được lưu trữ trên google drive, dropbox, mega, scribd, issu và các nền tảng tải lên tệp tương tự khác.
- chèn các liên kết của bạn theo thứ tự bảng chữ cái. Nếu bạn thấy một liên kết bị đặt sai vị trí, vui lòng sắp xếp lại nó và gửi một PR.
- chèn các liên kết của bạn theo thứ tự bảng chữ cái. Nếu bạn thấy một liên kết bị đặt sai vị trí, vui lòng sắp xếp lại nó và gửi một PR.
- sử dụng liên kết với nguồn có thẩm quyền nhất (có nghĩa là trang web của tác giả tốt hơn trang web của người biên tập tốt hơn trang web của bên thứ ba)
- sử dụng liên kết với nguồn có thẩm quyền nhất (có nghĩa là trang web của tác giả tốt hơn trang web của người biên tập, tốt hơn trang web của bên thứ ba)
+ không có dịch vụ lưu trữ tệp (điều này bao gồm (nhưng không giới hạn) liên kết Dropbox và Google Drive)
+ không có dịch vụ lưu trữ tệp (điều này bao gồm (nhưng không giới hạn) liên kết Dropbox và Google Drive)
- một liên kết `https` tốt hơn liên kết có giao thức `http` - miễn là chúng ở trên cùng một domain và phân phát cùng một nội dung.
- một giao thức `https` tốt hơn giao thức `http` - miễn là chúng ở trên cùng một domain và thể hiện cùng một nội dung.
- trên các miền gốc, bỏ dấu gạch chéo sau: `http://example.com` thay vì `http://example.com/`
- trên các miền gốc, bỏ dấu gạch chéo sau: `http://example.com` thay vì `http://example.com/`
- luôn luôn ưu tiên đường dẫn ngắn: `http://example.com/dir/` tốt hơn là `http://example.com/dir/index.html`
- luôn luôn ưu tiên đường dẫn ngắn: `http://example.com/dir/` tốt hơn là `http://example.com/dir/index.html`
+ không sử dụng rút gọn link
+ không sử dụng link rút gọn
- thường ưu tiên những liên kết "mới nhất" hơn những liên kết có "phiên bản (version)": `http://example.com/dir/book/current/` tốt hơn `http://example.com/dir/book/v1.0.0/index.html`
- thường ưu tiên những liên kết "mới nhất" hơn những liên kết có "phiên bản (version)": `http://example.com/dir/book/current/` tốt hơn `http://example.com/dir/book/v1.0.0/index.html`
- nếu một liên kết có chứng chỉ hết hạn như chứng chỉ tự ký / chứng chỉ SSL hoặc các vấn đề tương tự:
- nếu một liên kết có chứng chỉ hết hạn như chứng chỉ/ tự chứng chỉ / chứng chỉ SSL hoặc các vấn đề tương tự:
1. *thay thế nó* bằng giao thức `http` nếu có thể (bởi vì việc chấp nhận các lỗi ngoại lệ có thể phức tạp trên thiết bị di động)
1. *thay thế nó* bằng giao thức `http` nếu có thể (bởi vì việc chấp nhận các lỗi ngoại lệ có thể phức tạp trên các thiết bị di động)
2. *để nguyên* nếu không thể sử dụng `http` nhưng liên kết có thể truy cập được thông qua `https` bằng cách thêm một ngoại lệ vào trình duyệt hoặc có thể bỏ qua cảnh báo
2. *giữ nguyên* nếu không thể sử dụng `http` nhưng liên kết có thể truy cập được thông qua `https` bằng cách thêm một ngoại lệ vào trình duyệt hoặc có thể bỏ qua cảnh báo
3. *xóa nó đi* nếu không thể làm gì khác
3. *xóa nó đi* nếu không thể làm gì khác
- nếu một liên kết tồn tại ở nhiều định dạng, hãy thêm một liên kết riêng với ghi chú về từng định dạng
- nếu một liên kết tồn tại ở nhiều định dạng, hãy thêm một ghi chú riêng về từng định dạng
- nếu một tài liệu tồn tại ở những nơi khác nhau trên Internet
- nếu một tài liệu tồn tại ở những nơi khác nhau trên Internet
+ sử dụng liên kết với nguồn có thẩm quyền nhất (có nghĩa là trang web của tác giả tốt hơn trang web của người biên tập và tốt hơn trang web của bên thứ ba)
+ sử dụng liên kết với nguồn có thẩm quyền nhất (có nghĩa là trang web của tác giả tốt hơn trang web của người biên tập và tốt hơn trang web của bên thứ ba)
+ nếu chúng liên kết đến các ấn bản khác nhau và bạn đánh giá các ấn bản này đủ khác nhau để có giá trị giữ chúng, hãy thêm một liên kết riêng với ghi chú về từng ấn bản (xem [Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353) để đóng góp vào cuộc thảo luận về định dạng.)
+ nếu chúng liên kết đến các ấn bản khác nhau và bạn đánh giá các ấn bản này đủ khác nhau để có giá trị giữ chúng, hãy thêm một ghi chú riêng về từng ấn bản (xem [Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353) để đóng góp vào cuộc thảo luận về định dạng.)
- ưu tiên các commit nhỏ (atomic commits - một commit chỉ có thêm, xóa hoặc sửa) hơn các commit lớn. Không cần phải giấu giếm các commits của bạn trước khi gửi PR. (Chúng tôi sẽ không bao giờ thực thi những thứ này vì nó thuận tiện sau này cho người bảo trì)
- ưu tiên các commit nhỏ (atomic commits - một commit chỉ có thêm, xóa hoặc sửa) hơn các commit lớn. Không cần phải giấu các commits của bạn trước khi gửi PR. (Chúng tôi sẽ không bao giờ thực thi những thứ này vì nó thuận tiện sau này cho người bảo trì)
- nếu sách cũ hơn, hãy bao gồm ngày xuất bản cùng với tên sách.
- nếu sách cũ, hãy bao gồm ngày xuất bản cùng với tên sách.
- bao gồm tên tác giả hoặc tên nếu thích hợp. Bạn có thể rút ngắn danh sách tác giả với "et al."
- bao gồm tên tác giả hoặc tên nếu thích hợp. Bạn có thể rút ngắn danh sách tác giả với "et al."
- nếu cuốn sách chưa hoàn thành và vẫn đang được hoàn thiện, hãy thêm ký hiệu "đang xử lý", như được mô tả [dưới đây.](#in_process)
- nếu cuốn sách chưa hoàn thành và vẫn đang được hoàn thiện, hãy thêm ký hiệu "đang xử lý", như được mô tả [dưới đây.](#in_process)
- nếu địa chỉ email hoặc thiết lập tài khoản được yêu cầu trước khi kích hoạt tải xuống, hãy thêm ghi chú phù hợp với ngôn ngữ trong ngoặc đơn, ví dụ: `(địa chỉ email *được yêu cầu*, không bắt buộc)`
- nếu địa chỉ email hoặc thiết lập tài khoản được yêu cầu trước khi kích hoạt tải xuống, hãy thêm ghi chú phù hợp với ngôn ngữ trong ngoặc đơn, ví dụ: `(địa chỉ email *được yêu cầu*, không bắt buộc)`
@ -66,7 +66,7 @@ Bằng cách đóng góp, bạn đồng ý tôn trọng [Quy Tắc Ứng Xử](h
- `2` dòng trống giữa liên kết cuối cùng và phần mới
- `2` dòng trống giữa liên kết cuối cùng và phần mới
- `1` dòng trống giữa tiêu đề và liên kết đầu tiên của phần của nó
- `1` dòng trống giữa tiêu đề và liên kết đầu tiên của phần của nó
- `0` dòng trống giữa hai liên kết
- `0` dòng trống giữa hai liên kết
- `1` dòng trống ở cuối mỗi tệp` .md`
- `1` dòng trống ở cuối mỗi tệp`.md`
Ví dụ:
Ví dụ:
@ -139,16 +139,16 @@ Danh sách của chúng tôi cung cấp một metadata: tiêu đề, URL, ngư
##### Tiêu Đề
##### Tiêu Đề
- Không được chế ra tiêu đề. Chúng tôi cố gắng lấy các tiêu đề từ chính các nguồn tài liệu đó; những người đóng góp được khuyến cáo không chế ra tiêu đề hoặc chỉnh sửa chúng nếu điều này có thể tránh được. Một ngoại lệ là đối với các tác phẩm cũ hơn; nếu họ chủ yếu quan tâm đến lịch sử, thêm số năm vào trong dấu ngoặc đơn nằm trong tiêu đề sẽ giúp người dùng biết liệu họ có quan tâm hay không.
- Không được phát minh ra tiêu đề. Chúng tôi cố gắng lấy các tiêu đề từ chính các nguồn tài liệu đó; những người đóng góp được khuyến cáo không phát minh ra tiêu đề hoặc chỉnh sửa chúng nếu điều này có thể tránh được. Một ngoại lệ là đối với các tác phẩm cũ hơn; nếu họ chủ yếu quan tâm đến lịch sử, thêm số năm vào trong dấu ngoặc đơn nằm trong tiêu đề sẽ giúp người dùng biết liệu họ có quan tâm hay không.
- Không sử dụng tiêu đề ALLCAPS (tiêu đề sử dụng toàn bộ bằng chữ In Hoa). Thông thường, viết hoa tiêu đề là phù hợp, nhưng khi không chắc chắn, hãy sử dụng chữ viết hoa từ nguồn.
- Không sử dụng tiêu đề viết hoa toàn bộ. Thông thường, viết hoa tiêu đề là phù hợp, nhưng khi không chắc chắn, hãy sử dụng chữ viết hoa từ nguồn.
##### URLs
##### Các Liên Kết
- Chúng tôi không cho phép các URL rút gọn.
- Chúng tôi không cho phép các liên kết rút gọn.
- Mã theo dõi phải được xóa khỏi URL.
- Mã theo dõi phải được xóa khỏi liên kết.
- URL quốc tế phải được thoát. Các thanh trình duyệt thường hiển thị chúng thành Unicode, nhưng vui lòng sử dụng sao chép và dán.
- Liên kết quốc tế phải được thoát. Các thanh trình duyệt thường hiển thị chúng thành Unicode, nhưng vui lòng sử dụng sao chép và dán.
- Các URL an toàn (https) luôn được ưu tiên hơn các url không an toàn (http) nơi https đã được triển khai.
- Các liên kết an toàn (https) luôn được ưu tiên hơn các liên kết không an toàn (http) nơi https đã được triển khai.
- Chúng tôi không thích các URL trỏ đến các trang web không lưu trữ tài liệu được liệt kê, mà thay vào đó trỏ đến nơi khác.
- Chúng tôi không thích các liên kết trỏ đến các trang web không lưu trữ tài liệu được liệt kê, mà thay vào đó trỏ đến nơi khác.
##### Người Sáng Tạo
##### Người Sáng Tạo
@ -159,8 +159,8 @@ Danh sách của chúng tôi cung cấp một metadata: tiêu đề, URL, ngư
##### Nền Tảng và Ghi Chú Truy Cập
##### Nền Tảng và Ghi Chú Truy Cập
- Các khóa học. Đặc biệt đối với danh sách khóa học của chúng tôi, nền tảng là một phần quan trọng của mô tả tài liệu. Điều này là do các nền tảng khóa học có khả năng chi trả và mô hình truy cập khác nhau. Mặc dù chúng tôi thường không liệt kê một cuốn sách yêu cầu đăng ký, nhưng nhiều nền tảng khóa học có khả năng chi trả không hoạt động nếu không có một số loại tài khoản. Các nền tảng khóa học ví dụ bao gồm Coursera, EdX, Udacity và Udemy. Khi một khóa học phụ thuộc vào một nền tảng, tên nền tảng phải được liệt kê trong ngoặc đơn.
- Các khóa học. Đặc biệt đối với danh sách khóa học của chúng tôi, nền tảng là một phần quan trọng của mô tả tài liệu. Điều này là do các khóa học nền tảng có khả năng chi trả và mô hình truy cập khác nhau. Mặc dù chúng tôi thường không liệt kê một cuốn sách yêu cầu đăng ký, nhưng nhiều nền tảng khóa học có khả năng không hoạt động nếu không có một số loại tài khoản. Các nền tảng khóa học ví dụ bao gồm Coursera, EdX, Udacity và Udemy. Khi một khóa học phụ thuộc vào một nền tảng, tên nền tảng phải được liệt kê trong ngoặc đơn.
- YouTube. Chúng tôi có nhiều khóa học bao gồm các danh sách phát trên YouTube. Chúng tôi không cho rằng Youtube như một nền tảng, chúng tôi cố gắng liệt kê người sáng tạo nội dung trên Youtube, thường là một nền tảng phụ.
- YouTube. Chúng tôi có nhiều khóa học bao gồm các danh sách phát trên YouTube. Chúng tôi không cho rằng Youtube như một nền tảng, chúng tôi cố gắng liệt kê người sáng tạo nội dung trên YouTube, thường là một nền tảng phụ.
- Video trên YouTube. Chúng tôi thường không có các liên kết đến các video YouTube riêng lẻ trừ khi chúng dài hơn một giờ và có cấu trúc giống như một khóa học hoặc một hướng dẫn.
- Video trên YouTube. Chúng tôi thường không có các liên kết đến các video YouTube riêng lẻ trừ khi chúng dài hơn một giờ và có cấu trúc giống như một khóa học hoặc một hướng dẫn.
- Leanpub. Leanpub lưu trữ sách với nhiều mô hình truy cập. Đôi khi một cuốn sách có thể được đọc mà không cần đăng ký; đôi khi một cuốn sách yêu cầu tài khoản Leanpub để được truy cập miễn phí. Do chất lượng của sách và sự hỗn hợp và tính linh hoạt của các mô hình truy cập Leanpub, chúng tôi cho phép liệt kê mô hình sau cùng với ghi chú truy cập *(yêu cầu tài khoản Leanpub hoặc email hợp lệ)*
- Leanpub. Leanpub lưu trữ sách với nhiều mô hình truy cập. Đôi khi một cuốn sách có thể được đọc mà không cần đăng ký; đôi khi một cuốn sách yêu cầu tài khoản Leanpub để được truy cập miễn phí. Do chất lượng của sách và sự hỗn hợp và tính linh hoạt của các mô hình truy cập Leanpub, chúng tôi cho phép liệt kê mô hình sau cùng với ghi chú truy cập *(yêu cầu tài khoản Leanpub hoặc email hợp lệ)*
@ -182,7 +182,7 @@ Vì Internet rất rộng lớn, chúng tôi không đưa chúng vào danh sách
- IRC hoặc Telegram
- IRC hoặc Telegram
- Slacks hoặc danh sách mail
- Slacks hoặc danh sách mail
Danh sách của chúng tôi không nghiêm ngặt về những loại trừ này. Phạm vi của repo được xác định bởi cộng đồng; nếu bạn muốn đề xuất thay đổi hoặc bổ sung, vui lòng tạo một Issue để đưa ra đề xuất.
Danh sách của chúng tôi không nghiêm ngặt về những loại trừ này. Phạm vi của kho lưu trữ được xác định bởi cộng đồng; nếu bạn muốn đề xuất thay đổi hoặc bổ sung, vui lòng tạo một Issue để đưa ra đề xuất.
##### Sách so với Nội dung khác
##### Sách so với Nội dung khác
@ -204,23 +204,23 @@ Có rất nhiều sách mà chúng tôi liệt kê không có các thuộc tính
Đôi khi chúng có thể khó phân biệt!
Đôi khi chúng có thể khó phân biệt!
Các khóa học thường có sách giáo khoa liên quan, mà chúng tôi sẽ liệt kê trong danh sách sách của chúng tôi. Các khóa học có các bài giảng, bài tập, bài kiểm tra, ghi chú hoặc các hỗ trợ giáo khoa khác. Bản thân một bài giảng hoặc video không phải là một khóa học. Powerpoint không phải là một khóa học.
Các khóa học thường có sách giáo trình liên quan, mà chúng tôi sẽ liệt kê trong danh sách sách của chúng tôi. Các khóa học có các bài giảng, bài tập, bài kiểm tra, ghi chú hoặc các hỗ trợ giáo khoa khác. Bản thân một bài giảng hoặc video không phải là một khóa học. Powerpoint không phải là một khóa học.
##### Hướng dẫn tương tác so với những thứ khác
##### Hướng Dẫn Trực Quan so với những thứ khác
Nếu bạn có thể in nó ra và giữ lại bản chất của nó, thì đó không phải là Hướng dẫn tương tác.
Nếu bạn có thể in nó ra và giữ lại bản chất của nó, thì đó không phải là Hướng Dẫn Trực Quan.
### Tự động hóa
### Tự động hóa
- Việc thực thi quy tắc định dạng được tự động hóa qua [Github Actions](https://docs.github.com/en/actions) sử dụng [fpb-lint](https://github.com/vhf/free-programming-books-lint) (xem file [.github/workflows/fpb-lint.yml](.github/workflows/fpb-lint.yml))
- Việc thực thi nguyên tắc định dạng được tự động hóa qua [Github Actions](https://docs.github.com/en/actions) sử dụng [fpb-lint](https://github.com/vhf/free-programming-books-lint) (xem file [.github/workflows/fpb-lint.yml](.github/workflows/fpb-lint.yml))
- Sử dụng xác thực URL [awesome_bot](https://github.com/dkhamsing/awesome_bot)
- Sử dụng xác thực liên kết [awesome_bot](https://github.com/dkhamsing/awesome_bot)
- Để kích hoạt xác thực URL, hãy push một commit bao gồm một commit message chứa `check_urls=file_to_check`:
- Để kích hoạt xác thực liên kết, hãy push một commit bao gồm một commit message chứa `check_urls=file_to_check`:
- Bạn có thể chỉ định nhiều tệp để kiểm tra, sử dụng một khoảng trắng duy nhất để tách từng mục nhập.
- Bạn có thể chỉ định nhiều tệp để kiểm tra, sử dụng một khoảng trắng duy nhất để tách từng mục nhập.
- Nếu bạn chỉ định nhiều hơn một tệp, kết quả của việc build sẽ dựa trên kết quả của tệp cuối cùng được kiểm tra. Bạn nên biết rằng bạn có thể nhận được bản build thành công, vì vậy hãy đảm bảo kiểm tra build log ở cuối pull request bằng cách nhấp vào "Show all checks" -> "Details".
- Nếu bạn chỉ định nhiều hơn một tệp, kết quả của việc xây dựng sẽ dựa trên kết quả của tệp cuối cùng được kiểm tra. Bạn nên biết rằng bạn có thể nhận được bản xây dựng thành công, vì vậy hãy đảm bảo kiểm tra log ở cuối pull request bằng cách nhấp vào "Show all checks" -> "Details".