Tải bản đầy đủ (.docx) (45 trang)

đồ án 2 ứng dụng luyện tập và dinh dưỡng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.29 MB, 45 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

<b>ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINHTRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN</b>

<b>KHOA CƠNG NGHỆ PHẦN MỀM</b>

<b>---</b>

<b>BÁO CÁO ĐỒ ÁN 2</b>

<b>ĐỀ TÀI: ỨNG DỤNG LUYỆN TẬP VÀ DINH DƯỠNG </b>

<b>Giảng viên hướng dẫn:</b>

Thạc sỹ Nguyễn Công Hoan

<b>Sinh viên thực hiện: 20521133 - Lưu Lê Bá Chính</b>

20521401 - Nguyễn Ngọc Quang Huy

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b>LỜI CẢM ƠN</b>

Lời đầu tiên cho phép nhóm em gửi lời cảm ơn chân thành và lòng biết ơn sâu sắcđến quý tập thể quý Thầy Cô Trường Đại học Công nghệ thông tin – ĐHQG TPHCM vàquý Thầy Cô khoa Công nghệ phần mềm, đặc biệt là Thầy Nguyễn Công Hoan đã truyềndạy những kiến thức cơ bản làm nền tảng để thực hiện đề tài và đã trực tiếp hướng dẫn,tận tình sửa chữa, đóng góp nhiều ý kiến, kinh nghiệm q báu cho nhóm hồn thành tốtbáo cáo môn học.

Trong suốt q trình thực hiện đề tài, nhóm em đã vận dụng tối đa những kiếnthức nền tảng đã tích lũy đồng thời nghiên cứu những kiến thức mới để phục vụ làm đồán. Tuy nhiên, chúng em cũng gặp nhiều khó khăn nhất định nên những hạn chế, thiếu sótlà điều khó tránh khỏi. Chính vì vậy chúng em rất mong nhận được sự góp ý, nhận xét từphía Thầy để bổ sung kiến thức khơng chỉ để hồn thiện cho chính bản thân mình. Nhómem xin chân thành cảm ơn.

Tp.HCM, ngày 25 tháng 12 năm 2023

<i>Nhóm sinh viên thực hiện</i>

Lưu Lê Bá ChínhNguyễn Ngọc Quang Huy

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

<b>NHẬN XÉT CỦA GIẢNG VIÊN</b>

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b>CHƯƠNG 1: GIỚI THIỆU1.1 Đặt vấn đề</b>

Trong thời kì mà đời sống con người ngày càng được cải thiện thì con người có xu hướngchăm sóc bản thân. Đặc biệt là sau đợt dịch Covid-19 bùng phát từ năm 2020 thì đến naycon người ngày càng quan tâm sức khoẻ và thấy vai trị của nó đối với cuộc sống. Mộtứng dụng liên quan đến tập luyện và dinh dưỡng sẽ là một cơng cụ cho bất kì ai đang theođuổi một lối sống khoa học, khỏe mạnh. Cùng với sự phát triển của công nghệ và kỹthuật, các ứng dụng phải ngày phức tạp với nhiều chức năng được tích hợp. Việc lựachọn ứng dụng cho người dùng cũng ngày càng khó khăn vì số lượng ứng dụng ngày mộtlớn. Nutrition Warrior ra đời như một giải pháp ưu việt để đem đến mọi thứ tiện lợi, thiếtthực và hữu dụng nhất đến với người dùng. Nutrition Warrior sẽ theo dõi sức khoẻ củabạn thơng qua 2 tiêu chí: luyện tập và chế độ dinh dưỡng. Ứng dụng sẽ bao gồm nhữngbài tập thể dục, được thiết kế để sắp xếp phù hợp cho từng đối tượng cũng như nhữngthơng tin về dinh dưỡng, món ăn giúp bạn tracking, điều chỉnh thói quen ăn uống trở nênkhoa học hơn bao giờ hết.

<b>1.2 Mục tiêu</b>

Ứng dụng luyện tập và dinh dưỡng Nutrition Warrior sẽ là ứng dụng đi đầu trong việcứng dụng “Detection” để kiểm sốt món ăn cũng như quản lý lượng calo nạp vào cơ thể.Thêm vào đó là hệ thống tập luyện khoa học và chế độ tập luyện, hỗ trợ tối đa cho ngườidùng. Nutrition Warrior đem lại cảm giác thoải mái khi sử dụng, bỏ qua chướng ngại vềtâm lý phải ép mình theo một khuôn khổ. Nutrition Warrior sẽ thay đổi con người từ thểchất đến tinh thần.

<b>1.3 Phạm vi</b>

❖ Lên kế hoạch luyện tập:

➢ Tạo và theo dõi kế hoạch luyện tập dựa trên mục tiêu cá nhân và cấp độ thể chất của người dùng.

➢ Cung cấp bài tập và chương trình tập luyện đa dạng.❖ Theo dõi hoạt động vận động:

➢ Ghi lại thông tin về các hoạt động vận động hàng ngày.❖ Quản lý dinh dưỡng:

➢ Theo dõi lịch sử ăn uống và cung cấp gợi ý về chế độ dinh dưỡng dựa trên mục tiêu cá nhân.

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

➢ Tính tốn lượng calo tiêu thụ và cung cấp thông tin dinh dưỡng của các thực phẩm.

❖ Nhắc nhở và lịch trình:

➢ Gửi thơng báo nhắc nhở về việc tập luyện và ăn uống.➢ Tạo lịch trình hợp lý cho các buổi tập và bữa ăn.❖ Theo dõi tiến trình và đạt được mục tiêu:

➢ Hiển thị biểu đồ và thống kê về tiến trình luyện tập và dinh dưỡng.➢ Đặt mục tiêu và theo dõi việc đạt được chúng.

❖ Đánh giá sức khỏe:

➢ Cung cấp các công cụ đánh giá sức khỏe như đo chỉ số BMI..

<b>1.4 Yêu cầu chức năng</b>

Đảm bảo tất cả chức năng từ cơ bản đến nâng cao:+ Xem các bài tập luyện

+ Tra cứu thơng tin món ăn

+ Nhận diện món ăn và thành phần dinh dưỡng+ Quản lý lượng calo nạp vào

+ Đặt lịch trình ăn uống và tập luyện+ Biểu đồ theo dõi q trình

+ Quản lý thơng tin cá nhân

+ Chia sẻ thông tin lên mạng xã hội

<b>1.5 Yêu cầu phi chức năng</b>

1. Hiệu suất:

Ứng dụng phải có thời gian phản hồi nhanh chóng khi người dùng tương tác với nó, đặc biệt là trong việc theo dõi và ghi lại thông tin về luyện tập và dinh dưỡng.

2. Dễ sử dụng và Giao diện người dùng:

Giao diện người dùng phải được thiết kế sao cho dễ hiểu và thân thiện với người dùng.3. Bảo mật và Quyền riêng tư:

Đảm bảo an tồn thơng tin cá nhân của người dùng, đặc biệt là thông tin liên quan đến sức khỏe và dinh dưỡng.

4. Đa nền tảng:

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

Cung cấp hỗ trợ cho nhiều ngôn ngữ để thuận tiện cho người sử dụng trên khắp thế giới.Đảm bảo ứng dụng hoạt động mượt mà trên nhiều nền tảng, chẳng hạn như iOS và Android.

5. Khả năng mở rộng:

Cung cấp cập nhật định kỳ để bổ sung tính năng mới và sửa lỗi.

Hỗ trợ q trình nâng cấp mà không làm mất dữ liệu cá nhân của người dùng.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b>CHƯƠNG 2: CÔNG NGHỆ1. 1 React Native</b>

<b>1.1. Giới thiệu</b>

React Native là một framework mã nguồn mở được sáng tạo bởi Facebook Nó

được sử dụng để phát triển ứng dụng di động Android, iOS, Web và UWP bằng cách chophép các nhà phát triển sử dụng React cùng với môi trường ứng dụng gốc (native). Trêncác phiên bản hệ điều hành Windows đều được trang bị sẵn tính năng Remote Desktop.Tuy nhiên để có thể sử dụng tính năng này bạn sẽ phải kích hoạt chúng trước tiên.

● Native App là tên gọi của những ứng dụng được xây dựng và phát triển bằngnhững công cụ do chính nhà phát triển cung cấp cho lập trình viên. Hai nhà pháttriển App hàng đầu là Android và iOs.

● Hybrid App là sự kết hợp giữa ứng dụng Web và ứng dụng mobile. Người dùng cóthể cài đặt lên điện thoại của mình giống như những ứng dụng Native bình thường,vừa có thể tìm thấy ở những kho ứng dụng trả phí.

<b>1.2. Nguyên lý hoạt động</b>

React Native được viết bằng sự kết hợp của JavaScript và JXL, một mã đánh dấu

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

đặc biệt giống với XML. Framework có khả năng thao tác với cả hai thread là mainthread và JS thread. Mỗi thread đều có vai trò riêng biệt.

● Main thread: Đảm nhiệm vai trò cập nhật giao diện người dùng và xử lý tương tácngười dùng.

● JS thread: Đảm bảo hệ thống hoạt động hiệu quả thông qua việc thực thi và xử lýcode JavaScript.

Nguyên lý hoạt động của RN gần như tương tự với React. React Native không sửdụng thao tác với DOM và HTML mà chạy một quá trình xử lý nền với nền tảnggốc.

React Native sử dụng Bridge (cầu nối). Mặc dù các thread JavaScript và nativeđược viết bằng các ngôn ngữ hồn tồn khác nhau, nhưng Bridge là tính năng cầunối giúp thao tác hai chiều có thể thực hiện dễ dàng hơn

● Vẫn đòi hỏi native code.

● Hiệu năng sẽ thấp hơn với app thuần native code.● Bảo mật không cao do dựa trên JS.

● Quản lý bộ nhớ.

● Khả năng tùy biến cũng không thực sự tốt đối với một vài module.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

<b>2. Django Rest Framework</b>

Django REST framework là một bộ công cụ mạnh mẽ và linh hoạt để xây dựng các APIweb.

Một số lý do bạn có thể muốn sử dụng REST framework:

● Web browsable API là một ưu điểm lớn về tính sử dụng cho các nhà phát triển của bạn.

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

● Các chính sách xác thực bao gồm các gói cho OAuth1a và OAuth2.● Serialization hỗ trợ cả nguồn dữ liệu ORM và không phải ORM.

● Tùy chỉnh linh hoạt - chỉ cần sử dụng các chế độ xem dựa trên hàm thông thường nếu bạn không cần những tính năng mạnh mẽ hơn.

● Tài liệu mở rộng và hỗ trợ cộng đồng tốt.

● Được sử dụng và tin cậy bởi các công ty được công nhận quốc tế bao gồm Mozilla, Red Hat, Heroku và Eventbrite.

<b>3. MongoDB</b>

<b>MongoDB là một database hướng tài liệu (document), một dạng NoSQL database. Vì</b>

thế, MongoDB sẽ tránh cấu trúc table-based của relational database để thích ứng với cáctài liệu như JSON có một schema rất linh hoạt gọi là BSON. <b>MongoDB</b> sử dụng lưu trữdữ liệu dưới dạng Document JSON nên mỗi một collection sẽ các các kích cỡ và cácdocument khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấnsẽ rất nhanh.

<b>Các feature của MongoDB gồm có:</b>

<b>● Các ad hoc query: hỗ trợ search bằng field, các phép search thông thường, </b>

regular expression searches, và range queries.

<b>● Indexing: bất kì field nào trong BSON document cũng có thể được index.● Replication: có ý nghĩa là “nhân bản”, là có một phiên bản giống hệt phiên bản</b>

đang tồn tại, đang sử dụng. Với cơ sở dữ liệu, nhu cầu lưu trữ lớn, đòi hỏi cơ sởdữ liệu tồn vẹn, khơng bị mất mát trước những sự cố ngồi dự đốn là rất cao. Vì vậy, người ta nghĩ ra khái niệm “nhân bản”, tạo một phiên bản cơ sở dữ liệu giống hệt cơ sở dữ liệu đang tồn tại, và lưu trữ ở một nơi khác, đề phịng có sự cố.

<b>● Aggregation: Các Aggregation operation xử lý các bản ghi dữ liệu và trả về </b>

kết quả đã được tính tốn. Các phép tốn tập hợp nhóm các giá trị từ nhiều

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

Document lại với nhau, và có thể thực hiện nhiều phép toán đa dạng trên dữ liệu đã được nhóm đó để trả về một kết quả duy nhất. Trong SQL, count(*) và GROUP BY là tương đương với Aggregation trong MongoDB.

<b>● Lưu trữ file: MongoDB được dùng như một hệ thống file tận dụng những </b>

function trên và hoạt động như một cách phân phối qua sharding.Ưu điểm của MongoDB

● Dữ liệu lưu trữ phi cấu trúc, không có tính ràng buộc, tồn vẹn nên tính sẵn sàng cao, hiệu suất lớn và dễ dàng mở rộng lưu trữ.

● Dữ liệu được caching (ghi đệm) lên RAM, hạn chế truy cập vào ổ cứng nên tốc độ đọc và ghi cao.

Nhược điểm của MongoDB

● Không ứng dụng được cho các mơ hình giao dịch nào có u cầu độ chính xác cao do khơng có ràng buộc.

● Khơng có cơ chế transaction (giao dịch) để phục vụ các ứng dụng ngân hàng.● Dữ liệu lấy RAM làm trọng tâm hoạt động vì vậy khi hoạt động yêu cầu một bộ

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

tượng (object detection algorithm) sử dụng một neural network đơn để dự đoán đồng thờicác bounding box cùng với xác suất lớp cho mỗi đối tượng trong ảnh.

YOLO được giới thiệu vào năm 2015 bởi Joseph Redmon, Santosh Divvala, RossGirshick và Ali Farhadi trong nghiên cứu nổi tiếng của họ "You Only Look Once:Unified, Real-Time Object Detection".

4.1. Ưu điểm của YOLO:1. Tốc Độ:

YOLO vơ cùng nhanh chóng do nó khơng xử lý các pipelines phức tạp. Nó có thể xử lýhình ảnh ở tốc độ 45 khung hình mỗi giây (FPS). Ngồi ra, YOLO đạt được hơn gấp đơiĐộ chính xác Trung bình (mAP) so với các hệ thống thời gian thực khác, làm cho nó trởthành một ứng viên xuất sắc cho xử lý thời gian thực.

Từ biểu đồ dưới đây, chúng ta nhận thấy rằng YOLO vượt xa các bộ nhận diện đối tượngkhác với 91 FPS.

2. Độ chính xác cao trong nhận diện:

YOLO vượt xa các mơ hình tiên tiến khác về độ chính xác với rất ít lỗi nền.3. Tính Tổng quát Cao hơn:

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

YOLO đã có một bước tiến nhỏ so với các phiên bản trước bằng cách cung cấp một tổngthể tốt hơn cho các lĩnh vực mới, điều này làm cho nó trở thành lựa chọn tuyệt vời chocác ứng dụng dựa vào việc nhận diện đối tượng một cách nhanh chóng và mạnh mẽ.

4. Mã nguồn mở:

Việc làm cho YOLO trở thành mã nguồn mở đã đưa cộng đồng liên tục cải thiện mơhình. Điều này là một trong những lý do khiến YOLO có nhiều cải tiến trong thời gianngắn.

Yolo Architecture

Kiến trúc hoạt động như sau:

1. Điều chỉnh kích thước ảnh đầu vào thành 448x448 trước khi đi qua mạng tích chập(convolutional network).

2. Một tích chập 1x1 được áp dụng trước để giảm số lượng channels, sau đó là mộttích chập 3x3 để tạo ra đầu ra hình hộp chữ nhật (cuboidal).

3. Hàm kích hoạt được sử dụng là ReLU (Rectified Linear Unit), trừ lớp cuối cùng,nơi sử dụng hàm kích hoạt tuyến tính.

4. Một số kỹ thuật bổ sung, chẳng hạn như chuẩn hóa hàng loạt và loại bỏ, tương ứng

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

sẽ chuẩn hóa mơ hình và ngăn khơng cho mơ hình khớp q mức (overfitting)..4.2. Cách hoạt động của YOLO:

Thuật toán hoạt động dựa trên bốn phương pháp sau đây:● Residual blocks

● Bounding box regression

● Intersection Over Unions or IOU for short● Non-Maximum Suppression.

1. Residual blocks

Bước đầu tiên này bắt đầu bằng cách chia ảnh gốc (A) thành lưới ơ hình vng NxN cóhình dạng đồng đều, trong đó N trong trường hợp của chúng ta là 4 như được hiển thị trênhình ảnh bên phải. Mỗi ơ trong lưới này có trách nhiệm định vị và dự đốn lớp của đốitượng mà nó bao phủ, cùng với giá trị xác suất/độ tin cậy.

2. Bounding box regression

Bước tiếp theo là xác định các bounding box tương ứng với các hình chữ nhật làm nổi bậttất cả các đối tượng trong ảnh. Chúng ta có thể có nhiều bounding box bằng số lượng đốitượng trong một hình ảnh nhất định.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

YOLO xác định các thuộc tính của các hộp giới hạn này bằng cách sử dụng một mô-đunhồi quy duy nhất theo định dạng sau, trong đó Y là biểu diễn vectơ cuối cùng cho mỗihộp giới hạn.

Y = [pc, bx, by, bh, bw, c1, c2]

Điều này đặc biệt quan trọng trong giai đoạn training của mơ hình.

pc tương ứng với điểm xác suất của lưới chứa một đối tượng. Chẳng hạn, tất cả các lướimàu đỏ sẽ có điểm xác suất cao hơn 0. Hình ảnh bên phải là phiên bản đơn giản hóa vìxác suất của mỗi ơ màu vàng bằng 0 (không đáng kể).

bx, by là tọa độ x và y của tâm bounding box đối với ô lưới bao quanh.

bh, bw tương ứng với chiều cao và chiều rộng của bounding box đối với ô lưới baoquanh.

c1 và c2 tương ứng với hai lớp Người chơi và Bóng. Chúng ta có thể có nhiều lớp tùytheo yêu cầu của trường hợp sử dụng.

3. Intersection Over Unions or IOU

Trong hầu hết các trường hợp, một đối tượng trong ảnh có thể có nhiều hộp lưới (grid

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

boxes) để dự đốn, mặc dù khơng phải tất cả chúng đều phù hợp. Mục tiêu của IOU (giátrị từ 0 đến 1) là loại bỏ các hộp lưới như vậy để chỉ giữ lại những hộp có liên quan. Đâylà logic đằng sau nó:

Người dùng xác định ngưỡng IOU của mình, ví dụ: có thể là 0,5.

Sau đó, YOLO tính tốn IOU của mỗi ơ lưới là Intersection area chia cho Union Area.Cuối cùng, nó bỏ qua dự đốn về các ơ lưới có ngưỡng IOU bé hơn và xem xét những ơcó ngưỡng IOU lớn hơn ngưỡng đã đề ra ở trên (ví dụ 0,5).

Dưới đây là hình minh họa việc áp dụng quy trình chọn lưới cho đối tượng phía dưới bêntrái. Chúng ta có thể quan sát rằng đối tượng ban đầu có 2 lưới được dự đốn, sau đó chỉcó “Lưới 2” được chọn ở cuối.

4. Non-Max Suppression or NMS

Việc đặt ngưỡng cho IOU không phải lúc nào cũng đủ vì một đối tượng có thể có nhiềuhộp có IOU vượt quá ngưỡng và việc để lại tất cả các hộp đó có thể gây ra nhiễu. Đây lànơi chúng ta có thể sử dụng NMS để chỉ giữ lại những hộp có điểm xác suất phát hiệncao nhất.

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

4.3. Yolov8

YOLOv8 là phiên bản mới nhất của thuật toán YOLO, vượt trội hơn các phiên bản trướcđó bằng cách giới thiệu các sửa đổi khác nhau như mô-đun chú ý không gian, hợp nhấttính năng và tổng hợp ngữ cảnh.

Những cải tiến này dẫn đến việc phát hiện đối tượng nhanh hơn và chính xác hơn, khiếnYOLOv8 trở thành một trong những thuật toán phát hiện đối tượng quan trọng trong lĩnhvực này.

4.3.1. Các Tính Năng Quan Trọng của YOLOv8

Trong YOLOv8, có nhiều tính năng quan trọng cần tập trung. Dưới đây là một số điểmnổi bật của YOLOv8:

● Tăng Cường Độ Chính Xác: YOLOv8 nâng cao độ chính xác trong việc nhận diệnđối tượng so với các phiên bản trước thông qua việc tích hợp các kỹ thuật và tối ưuhóa mới.

● Tăng Tốc Độ Mạnh Mẽ: YOLOv8 đạt được tốc độ suy luận nhanh hơn so với cácmơ hình nhận diện đối tượng khác trong khi vẫn duy trì độ chính xác cao.

● Nhiều Backbones: YOLOv8 hỗ trợ nhiều backbones khác nhau như EfficientNet,ResNet và CSPDarknet, mang lại sự linh hoạt cho người dùng để lựa chọn mô

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

hình phù hợp nhất cho trường hợp sử dụng cụ thể của họ.

● Huấn Luyện Linh Hoạt: YOLOv8 sử dụng huấn luyện linh hoạt để tối ưu hóa tỷ lệhọc và cân bằng hàm mất mát trong quá trình huấn luyện, từ đó cải thiện hiệu suấtcủa mơ hình.

● Tăng Cường Dữ Liệu: YOLOv8 sử dụng các kỹ thuật tăng cường dữ liệu tiên tiếnnhư MixUp và CutMix để cải thiện tính đồng nhất và tổng qt của mơ hình.● Kiến Trúc Có Thể Tùy Chỉnh: Kiến trúc của YOLOv8 có tính tùy chỉnh cao, cho

phép người dùng dễ dàng điều chỉnh cấu trúc và các tham số của mơ hình phù hợpvới nhu cầu cụ thể của họ.

● Mơ Hình Đã Được Huấn Luyện Trước: YOLOv8 cung cấp các mơ hình đã đượchuấn luyện sẵn để sử dụng dễ dàng và có thể chuyển giao cho nhiều bộ dữ liệukhác nhau.

● Giám sát: YOLOv8 có thể được sử dụng trong các hệ thống giám sát để phát hiệnvà theo dõi các đối tượng và con người trong thời gian thực.

● Bán lẻ: YOLOv8 có thể được sử dụng trong các cửa hàng bán lẻ để theo dõi mứctồn kho, phát hiện kẻ trộm và theo dõi hành vi của khách hàng.

● Hình ảnh y tế: YOLOv8 có thể được sử dụng trong hình ảnh y tế để phát hiện vàphân loại các dị thường và bệnh khác nhau, chẳng hạn như ung thư, khối u và gãyxương.

● Nông nghiệp: YOLOv8 có thể theo dõi sự phát triển của cây trồng, phát hiện bệnhcây trồng và xác định sâu bệnh.

● Robotics: YOLOv8 có thể được sử dụng trong robot để giúp robot nhận biết và

</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21">

tương tác với các vật thể trong môi trường của chúng.Source YOLOv8: Docker</b>

5.1. Tại sao lại chọn Docker?:

Lúc chúng ta phát triển ứng dụng trên môi trường phát triển và mục tiêu cuối cùng củachúng ta là release sản phẩm, mục tiêu của chúng ta là sản phẩm chạy tốt trên mơi trườngproduction. Nhưng có 1 vấn đề nảy sinh là môi trường phát triển thực sự khác với môitrường thử nghiệm (testing) và thực sự khác với môi trường production, khi đó chúng ta lấygì đảm bảo rằng code chúng ta chạy tốt trên mơi trường dev thì cũng chạy tốt trên môitrường testing và cũng sẽ chạy tốt trên production?

Từ đó Docker ra đời:

● Docker là một nền tảng mở cho phát triển, vận chuyển và chạy ứng dụng.

● Docker cho phép bạn tách các ứng dụng ra khỏi cơ sở hạ tầng của mình để có thể cung cấp phần mềm một cách nhanh chóng.

● Với Docker, bạn có thể quản lý cơ sở hạ tầng theo cùng cách quản lý ứng dụng của mình.

● Bằng cách tận dụng các phương pháp của Docker để vận chuyển, thử nghiệm và triển khai code một cách nhanh chóng, bạn có thể làm giảm đáng kể sự chậm trễ giữa việc viết code và chạy nó trong mơi trường thực tế

</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">

● Images: là một khn mẫu để tạo một container. Thường thì image sẽ dựa trên 1image có sẵn với những tùy chỉnh thêm. Ví dụ bạn build 1 image dựa trên imageCentos mẫu có sẵn để chạy Nginx và những tùy chỉnh, cấu hình để ứng dụng webcủa bạn có thể chạy được. Bạn có thể tự build một image riêng cho mình hoặc sửdụng những image được chia sẽ từ cộng đồng Docker Hub. Một image sẽ đượcbuild dựa trên những chỉ dẫn của Dockerfile.

● Container: là một instance của một image. Bạn có thể create, start, stop, move ordelete container dựa trên Docker API hoặc Docker CLI.

● Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host.

● Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý các đối tượngnhư Container, Image, Network và Volumes thông qua REST API. Các DockerDaemon cũng giao tiếp với nhau để quản lý các Docker Service.

● Dockerfile: là một tập tin bao gồm các chỉ dẫn để build một image . ● Volumes: là phần dữ liệu được tạo ra khi container được khởi tạo.

<b>6. Appium </b>

Appium là một “mobile app testing framework” mã nguồn mở hồn tồn miễn phí sử dụng.Chúng ta có thể sử dụng nó để kiểm tra tất cả các loại ứng dụng di động, cho dù chúng đượcviết bằng Kotlin hay Java cho Android hay Swift hay Objective-C cho iOS. Thậm chí có thểthử nghiệm các ứng dụng di động được viết bằng các ngôn ngữ như React Native hoặcFlutter, sử dụng chế độ xem web để tạo ứng dụng trên nhiều thiết bị di động.

Appium là một máy chủ web sử dụng giao thức WebDriver. Giao thức này được phát minh bởi Selenium, một phần mềm tự động cũng được sử dụng cho tự động hóa thiết bị

</div>

×