ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THỰC TẬP TỐT NGHIỆP ĐỀ TÀI Integrate AI Model to Flutter Công ty thực tập Vitalify Asia Co , Ltd Lớp SE501 N1[.]
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM THỰC TẬP TỐT NGHIỆP ĐỀ TÀI: Integrate AI Model to Flutter Công ty thực tập: Vitalify Asia Co., Ltd Lớp: SE501.N11.PMCL Sinh viên thực hiện: Bùi Thiện Nhân – 19521927 TP Hồ Chí Minh, ngày 26 tháng 12 năm 2022 Bùi Thiện Nhân Thực tập tốt nghiệp NHẬN XÉT (Của giảng viên) Bùi Thiện Nhân Thực tập tốt nghiệp MỤC LỤC CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP Giới thiệu chung công ty I 6 II Cơ cấu tổ chức III Tổng quan việc kinh doanh CHƯƠNG 2: NỘI DUNG THỰC TẬP Công nghệ, giải pháp quy trình áp dụng I 10 11 12 13 Giới thiệu Git Giới thiệu VSCode Giới thiệu mơ hình làm việc Agile – Scrum Tìm hiểu RESTful API Tìm hiểu Flutter Flutter cho Mobile Tìm hiểu Atomic Design Tìm hiểu quản lý state với MobX Tìm hiểu Google ML kit Tìm hiểu Flutter Specific code với MethodChannel Tìm hiểu package Pigeon Tìm hiểu Framwork Vision Apple Tìm hiểu Flutter Isolate II Dự án integrate AI Model vào Flutter Bối cảnh đời dự án Nhiệm vụ sinh viên giao 11 11 11 14 16 20 21 22 24 24 25 26 27 28 28 28 28 29 CHƯƠNG 3: NHẬT KÝ THỰC TẬP 29 CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC QUA ĐỢT THỰC TẬP 32 I Kết thu 32 II Các điểm yếu thân 32 III Gợi ý cho chương trình học 32 IV Cảm nhận công ty 32 DANH MỤC TÀI LIỆU THAM KHẢO 34 Bùi Thiện Nhân Thực tập tốt nghiệp LỜI NĨI ĐẦU Ngày nay, ngành cơng nghiệp phát triển ứng dụng web phận thiếu ngành công nghiệp phần mềm Với tốc độ phát triển vô mạnh mẽ, ngành phát triển ứng dụng web nhân tố kích thích phát triển công nghệ thông tin giới, phần cứng phần mềm Cùng với xu phát triển giới, Việt Nam ngoại lệ Ngành công nghiệp phát triển web non trẻ Việt Nam phát triển mạnh mẽ, để hòa nhập với công ty hàng đầu xây dựng tảng web giới Bên cạnh phát triển web ngành nghề tiếp cận người dùng cách nhanh chóng ta thấy mạng xã hội hay website bán hàng trực tuyến thịnh hành giới lẫn Việt Nam Sau ba năm học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tìm hiểu, bổ sung kiến thức mơi trường chun nghiệp, em có dự định thực tập học kì Vì vậy, em định chọn Công Ty TNHH Vitalify Asia - môi trường lý tưởng, đại, chuyên nghiệp - nơi giúp em thực dự định Bùi Thiện Nhân Thực tập tốt nghiệp LỜI CẢM ƠN Em xin chân thành cảm ơn ban giám hiệu quý thầy cô trường Đại học Công nghệ Thông tin cung cấp bồi dưỡng cho em kiến thức suốt năm ngồi giảng đường đại học, để từ em có tảng áp dụng vào đợt thực tập cách hiệu Em xin gửi lời cảm ơn quý Công Ty TNHH Vitalify Asia tạo điều kiện cho em thực tập công ty cung cấp, bổ sung cho em kiến thức mà em cịn thiếu sót Q cơng ty hỗ trợ em nhiều suốt thời gian thực tập vừa qua, dạy em kỹ cần thiết, truyền đạt cho em kinh nghiệm mà anh chị trải qua trình làm việc, trao đổi với khách hàng, tác phong tinh thần trách nhiệm trước cơng việc giao, suy nghĩ tích cực Các anh chị tạo cho em nhiều điều kiện để ứng dụng kiến thức học vào thực tế để xây dựng dự án thực tiễn từ lúc ban đầu, nâng cao trình độ, tốc độ lập trình trí thức thêm bậc Em xin chân thành cảm ơn Vì kiến thức thân hạn chế lần va chạm tiếp xúc với thực tế, áp dụng lý thuyết vào công việc nên thân cịn bỡ ngỡ lúng túng, khơng tránh khỏi thiếu sót, mong q Thầy (Cơ) đóng góp ý kiến để em hồn thiện Em xin chân thành cảm ơn! Bùi Thiện Nhân TP Hồ Chí Minh, ngày 26 tháng 12 năm 2022 Bùi Thiện Nhân Thực tập tốt nghiệp DANH MỤC CÁC CỤM TỪ VIẾT TẮT TNHH : Trách nhiệm Hữu hạn Bùi Thiện Nhân Thực tập tốt nghiệp CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP I - Giới thiệu chung cơng ty Tên đơn vị: CƠNG TY TNHH VITALIFY Á CHÂU (VITALIFY ASIA CO., LTD) Lĩnh vực hoạt động: Xuất phần mềm Địa chỉ: 224A-224B Điện Biên Phủ, Phường Võ Thị Sáu, Quận 3, Thành phố Hồ Chí Minh, Việt Nam Trang web: https://www.vitalify.asia/ Email: info@vitalify.asia Điện thoại: +84 (028) 3932 6293 Thời gian làm việc: Thứ đến thứ 6: 08h30 - 17h35 Vision: “Delivering Happiness Through the Internet” Value: Providing Value to User Hình 1.1: Logo Công ty TNHH Vitalify Asia - - Vitalify Asia công ty phát triển ứng dụng web di động Công ty cung cấp dịch vụ phát triển cải tiến sản phẩm nhanh chóng sở DevOps với nhóm cam kết cung cấp giá trị cho người dùng; giải thứ, từ lập kế hoạch đến triển khai dịch vụ nhanh chóng, cải tiến tăng trưởng cho doanh nghiệp doanh nghiệp Kể từ thành lập vào năm 2008, Vitalify Asia tham gia phát triển phần mềm tập trung vào thiết bị di động để đạt tầm nhìn "Mang lại hạnh phúc thông qua Internet” Với mục tiêu trở thành nhóm chuyên nghiệp thực cạnh tranh phạm vi toàn cầu, kỹ sư/thành viên/PM mở rộng vai trò phạm vi trách nhiệm cá nhân cam kết cung cấp giá trị cho người dùng với cấu trúc chia nhóm nhỏ ưu tú Bây giờ, 10 năm sau thành lập, Vitalify Asia thử thách giai đoạn để nâng cao giá trị lực kỹ thuật họ Việt Nam Công ty tạo nhiều sản phẩm "Made In Vietnam" bán chúng Bùi Thiện Nhân Thực tập tốt nghiệp khắp giới Để đạt mục tiêu này, Vitalify Asia tiếp tục nỗ lực cải tiến hàng ngày II Cơ cấu tổ chức Vitalify Asia phát triển ứng dụng web di động để phù hợp với nhu cầu kinh doanh bạn Nhóm đa quốc gia cơng ty Thành phố Hồ Chí Minh, Việt Nam, tham gia nhóm khách hàng từ xa cam kết mang lại giá trị cho người dùng cuối phát triển dịch vụ khách hàng để đảm bảo triển khai dịch vụ nhanh chóng cải tiến Với kinh nghiệm phát triển hệ thống cho nhiều ngành công nghiệp sử dụng công nghệ nổi, Vitalify Asia chuyên hệ thống có khả di động thời gian thực Cơng ty linh hoạt hỗ trợ giai đoạn lập kế hoạch, bàn giao hoạt động phát triển dịch vụ Vitalify Asia chia thành nhiều lab, lab bao gồm nhiều nhóm dự án nhóm dự án tổ chức theo mơ hình Agile Scrum Về số nguyên tắc công việc: - Mỗi sprint kéo dài từ 1-2 tuần tuỳ vào dự án Ngày bắt đầu sprint thứ Mỗi ngày developer gửi lại báo cáo công việc cho BPM quản lý trước 16h45 Sprint retrospective tổ chức linh hoạt sau hoàn thành xong phase Internal weekly meeting gồm có - Code review - Sprint review - Sprint retrospective - Estimate cho spr III Tổng quan việc kinh doanh Một số đặc điểm Vitalify Asia: - Sự phát triển công ty tập trung vào phát triển sản phẩm cung cấp giá trị cho người dùng khách hàng Với suy nghĩ này, đảm bảo chất lượng cải thiện hiệu suất ưu tiên - từ phân tích kinh doanh đến mắt sản phẩm thơng qua xác định triển khai u cầu Ngồi ra, để tiếp Bùi Thiện Nhân Thực tập tốt nghiệp tục tăng trưởng sản phẩm sau phát hành, công ty giới thiệu loạt biện pháp để tăng hiệu đồng thời đáp ứng nhanh chóng linh hoạt nhu cầu thị trường phản hồi người dùng Vitalify Asia chuyên hiệu suất di động, thời gian thực phát triển hệ thống di động cho số ngành: - Chăm sóc sức khỏe (Telemedicine) - Fintech - VR/AR/MR, Metaverse - Startup (from MVP) - Mobile / Hyper-casual Games Trong 13 năm qua, công ty có 400 sản phẩm thành cơng Mặc dù nhiều thành tựu số bị hạn chế thỏa thuận bảo mật, sản phẩm cho phép nhắc đến khách hàng công ty: Hankyou Baizou Kun 反響倍増くん Visit site: https://www.retechraas.com/hankyobaizokun/index.php Hình 1.2 Hankyou Baizou Kun 反響倍増くん Bùi Thiện Nhân Thực tập tốt nghiệp Silly Walkers Visit site: https://play.google.com/store/apps/details?id=asia.vitalify.sillywalkers Và số game In house khác: https://play.google.com/store/apps/developer?id=Vitalify+Asia+Co.,Ltd Hình 1.3 Silly Walkers MAL Smart HRM Hình 1.4 MAL Smart HRM - Ứng dụng check in chấm công Bùi Thiện Nhân - - - Thực tập tốt nghiệp bên dưới) Công việc lập kế hoạch bao gồm việc chọn lựa yêu cầu cần phải phát triển, phân tích nhận biết công việc phải làm kèm theo ước lượng thời gian cần thiết để hoàn tất tác vụ Chia nhỏ công việc thành backlog (task) để theo dõi tiến độ dự án dễ dàng Scrum sử dụng cách thức lập kế hoạch phần tăng dần theo thời gian, theo đó, việc lập kế hoạch khơng diễn lần vòng đời dự án mà lặp lặp lại, có thích nghi với tình hình thực tiễn tiến trình đến sản phẩm Daily Scrum (Họp Scrum ngày): Scrum Master tổ chức cho Đội sản xuất họp ngày khoảng 15 phút để Nhóm Phát triển chia sẻ tiến độ cơng việc chia sẻ khó khăn gặp phải trình phát triển phần mềm suốt Sprint Sprint Review (Họp Sơ kết Sprint): Cuối Sprint, nhóm phát triển với Product Owner rà soát lại cơng việc hồn tất (DONE) Sprint vừa qua đề xuất chỉnh sửa thay đổi cần thiết cho sản phẩm Sprint Retrospective (Họp Cải tiến Sprint): Dưới trợ giúp Scrum Master, nhóm phát triển rà sốt lại tồn diện Sprint vừa kết thúc tìm cách cải tiến quy trình làm việc thân sản phẩm Tìm hiểu RESTful API API (Application Programming Interface) tập quy tắc chế mà theo đó, ứng dụng hay thành phần tương tác với ứng dụng hay thành phần khác API trả liệu mà bạn cần cho ứng dụng kiểu liệu phổ biến JSON hay XML REST (REpresentational State Transfer) dạng chuyển đổi cấu trúc liệu, kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp máy Vì vậy, thay sử dụng URL cho việc xử lý số thông tin người dùng, REST gửi yêu cầu HTTP GET, POST, DELETE, vv đến URL để xử lý liệu RESTful API tiêu chuẩn dùng việc thiết kế API cho ứng dụng web để quản lý resource RESTful kiểu thiết kế API sử dụng phổ biến ngày ứng dụng (web, mobile…) khác giao tiếp với REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động nêu sử dụng phương thức HTTP riêng ● ● GET (SELECT): Trả Resource danh sách Resource POST (CREATE): Tạo Resource 20 Bùi Thiện Nhân ● ● Thực tập tốt nghiệp PUT (UPDATE): Cập nhật thông tin cho Resource DELETE (DELETE): Xoá Resource Những phương thức hay hoạt động thường gọi CRUD tương ứng với Create, Read, Update, Delete – Tạo, Đọc, Sửa, Xóa Tìm hiểu Flutter Hình 2.11: Logo Flutter Flutter phát triển nhằm giải toán thường gặp mobile Fast Development Native Performance Nếu React Native đảm bảo Fast Development code native đảm bảo Native Performance Flutter làm điều So sánh với Android: 21 Bùi Thiện Nhân o o o o Thực tập tốt nghiệp Điểm khác biệt Flutter Android: tạo ứng dụng chạy iOS Android Là SDK đa tảng, ứng dụng Flutter hoạt động iOS Android Nó thủ thuật khơn khéo để tương thích với framework UI hai hệ điều hành Các ứng dụng không biên dịch trực tiếp với ứng dụng native Android iOS Đóng gói engine kèm ứng dụng làm cho kích thước cài đặt lớn hẳn Trang Hỏi đáp Flutter cho biết, ứng dụng “trống” thông thường khoảng 6-7MB Android, dù ứng dụng nào, phần kích thước tăng lên nhiều Nhưng lợi ích việc ứng dụng nhanh Flutter thiết kế từ đầu để đạt tới tốc độ khung hình 60fps Trong số gặp iOS, với Android, bạn cảm thấy khác biệt rõ rệt Cũng nhờ việc xuất xưởng với tảng cho ứng dụng mình, nhà phát triển tránh nhiều vấn đề phân mảnh Android Flutter cho Mobile - Sử dụng DART Một ngơn ngữ lập trình hướng đối tượng Google phát triển DART static type language nên AOT (Ahead of Time), compile xong hết chạy Trong JIT (Just in Time) giống dynamic type language Khi dev sử dụng JIT để hỗ trợ Hot Load build release dùng AOT để tối ưu hiệu native code bình thường 22 Bùi Thiện Nhân Thực tập tốt nghiệp Hình 2.12: Flutter Framework Architecture - - - Ngoài DART hướng tới việc trở thành ngơn ngữ chạy nhiều platform khác nhau, có máy ảo (VM) làm nhiệm vụ dịch source code sang bytecode Java Hiện DART transpile ngơn ngữ khác JS để chạy trình duyệt Cái khơng liên quan mobile nhiên ưu điểm lớn ngôn ngữ nên bỏ qua Vậy native module ? Khác với JS Bridge, Flutter “nói chuyện” với native module native interface Mặc dù gọi “bridge”, nhiên nhanh nhiều gân khơng bị “thắc cổ chai” React Native Ngoài module kiến trúc theo “plugin”, module viết cho Flutter phải tuân thủ rule Cá nhân thấy viết native module cho Flutter tự nhiên, không cần phải học syntax macro C/C++ RN Theo doc Flutter Engine, có tới threads (runners) sử dụng app: Platform Task Runner, UI Task Runner, GPU Task Runner IO Task Runner Các threads độc lập không share memory với nhau, chúng giao tiếp với thông qua channels… tới fan golang hiểu thích pattern 23 Bùi Thiện Nhân - Thực tập tốt nghiệp Về document: sở hữu doc phải nói khơng bỏ sót thứ Đi từ cài đặt, hướng dẫn viết app CI/CD, debug, test profiling Bộ profiling Flutter hay dùng để đo đạc số performance chi tiết Tìm hiểu Atomic Design “Atomic Design Một phương pháp thiết kế giao diện mà Designer ưu tiên thực thiết kế thành phần riêng lẻ kết hợp chúng lại với nhau, thay thiết kế trang.” Thuật ngữ giới thiệu Brad Forst năm 2013 Atomic Design cách tiếp cận kiểu thiết kế giao diện cách xây dựng nên hệ thống components thay trang Phương pháp trọng đến đối tượng nhỏ, độc lập, tái sử dụng thành phần để kết hợp chúng lại tạo thành tổng thể Điều cho phép hồn thành sản phẩm nhanh chóng, giao diện thống dễ dàng bảo trì Trong Atomic Design: giao diện chia thành phần: - - - Atoms: thành phần nhỏ nhất, block khơng thể nhỏ (ví dụ: buttons, input fields, checkboxes, links) Chúng trừ tượng colours, fonts chữ Molecules: gồm atom kết hợp vs phần tử bên đơn vị (ví dụ: input field button kết hợp thành khung tìm kiếm) Organisms: nhóm Molecules giống khác để tạo thành thành phần hoàn chỉnh giao diện Templates: kết hợp organisms với tạo thành trang Pages: trang cụ thể Nó kiểm tra templates làm việc với nội dung thực tế nào, cho phép designers quay trở lại để chỉnh sửa molecules, organisms, templates cần thiết Tìm hiểu quản lý state với MobX MobX thư viện quản lý state đơn giản, dễ mở rộng Mobx mutable, có nghĩa thay đổi hoàn toàn trực tiếp Code Mobx cực ngắn dễ hiểu MobX Flutter: - Observable: Tất thuộc tính, array, map, sets quan sát (observable) Điều để làm cho đối tượng quan sát định annotation cho thuộc tính cách sử dụng makeObservable Observable đại diện cho giá trị component quan sát 24 Bùi Thiện Nhân - - Thực tập tốt nghiệp Observer: Trong Observable đại diện cho giá trị component quan sát Observer HOC hay decorator subscribes mà giúp cho component có khả quan sát Kết là, component tự động render giá trị observables liên quan thay đổi Action: Tất ứng dụng có hành động (action) Một hành động (action) đoạn mã sửa đổi trạng thái (state) Về nguyên tắc, hành động (action) xảy để đáp lại kiện (event) Ví dụ: nút nhấp, số đầu vào thay đổi, thông báo websocket đến, MobX yêu cầu khai báo hành động (action) ứng dụng Chỉ nên sử dụng hành động (action) chức có ý định sửa đổi trạng thái Các chức lấy thông tin (thực tra cứu lọc liệu) không đánh dấu hành động phép MobX theo dõi yêu cầu chúng Tìm hiểu Google ML kit - Tại Google I/O 2018, Google mắt công cụ phát triển phần mềm (SDK) có tên ML Kit Beta tích hợp vào Firebase Nó cung cấp cơng nghệ học máy google nhiều năm nghiên cứu cho mobile developer, cho phép họ tích hợp số mơ hình học máy vào ứng dụng cách dễ dàng - ML Kit thích hợp với tất developer cấp độ Cho dù người bắt đầu hay có kinh nghiệm machine learning, ta dễ dàng thực chức vài dịng code Khơng cần phải có kiến thức sâu neural networks hay model optimization để bắt đầu Mặt khác, bạn nhà phát triển có kinh nghiệm, xem Mơ hình học máy tùy chỉnh với bảng mã ML Kit để tìm hiểu cách ML Kit giúp bạn dễ dàng sử dụng mơ hình TensorFlow Lite tùy chỉnh ứng dụng di động - Face Detections Key capabilities : • Nhận dạng định vị đặc điểm khuôn mặt Nhận tọa độ mắt, tai, má, mũi miệng khn mặt phát • Tìm hiểu đường nét đặc điểm khn mặt Xem đường nét khuôn mặt phát mắt, lông mày, môi mũi họ • Nhận biết biểu cảm khuôn mặt Xác định xem người cười hay nhắm mắt • Theo dõi khn mặt khung hình video Nhận mã nhận dạng cho khuôn mặt phát riêng biệt Giá trị nhận dạng quán lệnh gọi, vậy, bạn thực thao tác với hình ảnh người cụ thể luồng video 25 Bùi Thiện Nhân Thực tập tốt nghiệp • Xử lý khung hình video theo thời gian thực Tính phát khuôn mặt thực thiết bị đủ nhanh để dùng ứng dụng theo thời gian thực, chẳng hạn thao tác với video 10 Tìm hiểu Flutter Specific code với MethodChannel - Flutter sử dụng hệ thống linh hoạt để gọi API dành riêng cho tảng có sẵn Android code Java Kotlin code ObjectiveC Swift iOS Ý tưởng chung việc truy cập code dành riêng cho tảng Flutter thông qua giao thức nhắn tin(messaging protocol) Thông báo chuyển máy khách (Giao diện người dùng) Máy chủ (Nền tảng) cách sử dụng kênh thông báo chung Nó có nghĩa khách hàng gửi tin nhắn đến Host cách sử dụng kênh tin nhắn Tiếp theo, Host lắng nghe kênh thông báo đó, nhận thơng báo, thực chức phù hợp cuối trả kết cho máy khách 26 Bùi Thiện Nhân Thực tập tốt nghiệp Hình 2.13: Flutter Platform Channel Architecture 11 Tìm hiểu package Pigeon - Pigeon công cụ tạo mã giúp giao tiếp Flutter tảng máy chủ trở nên an toàn, dễ dàng nhanh - Hiện tại, Pigeon hỗ trợ tạo mã Objective-C Swift thử nghiệm để sử dụng iOS, Java Kotlin thử nghiệm cho Android, đồng thời có hỗ trợ thử nghiệm C++ dành cho Windows Object-C truy cập Swift mã Java truy cập Kotlin 27 Bùi Thiện Nhân - Thực tập tốt nghiệp Link thư viện: Pigeon | Dart Package (pub.dev) 12 Tìm hiểu Framwork Vision Apple - Vision framework giới thiệu phiên iOS11 Framework Vision cho phép lập trình viên dễ dàng sử dụng kỹ thuật, thuật toán xử lý hinh ảnh ứng dụng phát khuôn mặt, phát đặc điểm khuôn mặt (như mặt cười, nhíu mày ), phát barcode, phát theo dõi đối tượng - Tài liệu Vision: Vision | Apple Developer Documentation 13 Tìm hiểu Flutter Isolate - Theo mặc định, Dart thực thi tất mã lệnh luồng đơn - Mọi hàm lệnh gọi async-await hoạt động luồng (cho đến trừ định) - Isolate tham chiếu đến vùng cách ly, thường khác với vùng cách ly Hay nói dễ hiểu Isolate phiên tương ứng Thread ngơn ngữ lập trình Dart Nó tương tự với Vịng lặp kiện (Event Loop) có số điểm khác biệt sau: • Nó vùng cách ly với nhớ riêng, biệt lập • Nó khơng thể chia sẻ trực tiếp liệu với vùng biệt lập khác • Bất kể liệu truyền vùng biệt lập bị trùng lặp - Mỗi Isolate có Vịng lặp kiện (Event Loop) riêng nhờ chúng hoạt động song song độc lập với II Dự án integrate AI Model vào Flutter Bối cảnh đời dự án Nhiệm vụ công ty Vitalify Asia phải cung cấp sản phẩm kỹ thuật số tạo tác động thực tích cực cho người dùng doanh nghiệp tổ chức Vì việc liên tục cải tiến ứng dụng để đáp ứng khách hàng tiềm thực cần thiết Trong diễn biến giới COVID-19, Công ty buộc phải làm việc từ xa Và Hybrid Office (làm việc trực tiếp văn phòng làm việc từ xa – work from home remotely) trở thành môi trường làm việc quen thuộc công ty tương lai, máy chấm cơng bớt phần quan trọng việc quản lý sức khỏe tinh thần nhân viên trở nên quan trọng Vì thế, cơng ty muốn thay đổi cách thức chấm công công ty từ web, nhấn chọn nút để thực hành viên chấm công sang ứng dụng điện thoại di động, thực chấm công cách nhận diện khuôn mặt 3d (detect face) nhận diện cảm xúc nhân viên chấm công (detect emotion) 28 Bùi Thiện Nhân Thực tập tốt nghiệp Sau trình khởi chạy dự án, việc thực phát triển phần mềm tảng IOS Android native tiêu tốn chi phí hoạt động việc tìm nguồn lực cho native trở nên khó khăn, ban quản lý dự án muốn chuyển từ native sang Flutter để dễ dàng build môi trường mà cần thay đổi vài dịng config phù hợp Bởi vì, AI Model ứng dụng phát triển native, nên bắt đầu chuyển sang Flutter sử dụng phương thức giao tiếp Flutter để gọi đến native bắt đầu load AI Model Nhiệm vụ sinh viên giao - Đáp ứng quy định coding rule, checklist khách hàng để đảm bảo tiêu chuẩn đầu sản phẩm - Hoàn thiện task giao - Thực demo trước cho Flutter chưa bao hoàn thiện tính để đánh giá lực, thời gian, nguồn lực để phát triển dự án - Tìm hiểu phương thức cách Flutter giao tiếp với Native - Tìm hiểu cách hoạt động biến, tham số cần thiết việc xử lý Google ML kit để nhận diện khn mặt nhận diện cảm xúc - Triển khai bắt đầu gọi native để load AI model Flutter - Đánh giá khả triển khai, hiệu ứng dụng tính khả thi dự án - Trình bày tiến độ triển khai, khó khăn gặp phải, khả xử lý vấn đề, đề xuất giải pháp cho trình triển khai ứng dụng CHƯƠNG 3: NHẬT KÝ THỰC TẬP Tuần Tuần Nội dung thực tập Người hướng dẫn Manager: anh Chung Hiếu Nghĩa PM: anh Trần Ngọc - Làm quen với cách làm việc theo mô hình Agile Phúc cơng ty - Tìm hiểu công ty, cách tổ chức công ty 29 Bùi Thiện Nhân Thực tập tốt nghiệp - Làm quen với công cụ làm việc công ty (kênh chat trực tuyến công ty - Chatwork, email công ty), Redmi Mentor: anh Bùi Bình Trung - Cài đặt môi trường để chuẩn bị cho dự án - Thực code task để làm quen với dự án Tuần - Xây dựng ứng dựng demo cho phần front end ứng dụng tại, chưa bao gồm tính khác - Bắt đầu làm việc với anh Mentor vấn đề cần phải làm tham gia dự án - Tham gia vào buổi meet team dự án - Báo cáo phần công việc thân chờ xét duyệt để chuyển sang nội dung Tuần 3, Tuần Tuần 5, - Tìm hiểu MobX để quản lý trạng thái cho Flutter - Tìm hiểu Flutter Method Channel để thực giao tiếp với native - Xây dựng ứng dụng có sử dụng MobX, có sử dụng MethodChannel để gọi native, có call API đơn giản, xử lý exception từ phần cứng từ server - Báo cáo cho PM Mentor để xét duyệt, tham gia vào dự án - PM Mentor đánh giá cá nhân trình thực tập - Bắt đầu nhận task cụ thể để tham gia vào dự án, tích hợp AI Model từ native vào Flutter - Tìm hiểu syntax Kotlin GoogleMLKit cho native 30 Bùi Thiện Nhân Thực tập tốt nghiệp Tuần 6, Tuần 7, Tuần - Tìm hiểu cách xử lý frame ảnh bắt đầu stream camera Flutter - Xử lý mã hóa, giải mã ảnh gửi từ Flutter sang Native (image -> uint8List -> bytearray -> bitmap) - Xử lý biến nhận trả kết cho Flutter từ Native - Nhận kết quả, xử lý trạng thái, vẽ UI tương ứng Flutter - Lưu trữ kiểm thử kết có hoạt động Đăng ký khn mặt (quét 3d) -> Chuyển hướng sang hình với tham số kết đăng ký > thực so sánh khuôn mặt nhận diện camera với kết khuôn mặt đăng ký - Báo cáo, làm việc với mentor supporter cho trình triển khai công việc Tuần 9, Tuần 10, Tuần 11, Tuần 12 - Tìm hiểu syntax Swift AppleVision cho ios để làm việc với AI - Xử lý uint8list gửi từ Flutter để convert thành UIImage Swift để bắt đầu xử lý đăng ký khuôn mặt - Tìm hiểu với Isolate làm việc đa luồng cho Flutter để giảm giật lag giao diện, cải thiện trải nghiệm người dùng - Gọi native để xử lý nhận diện cảm xúc Android IOS - Build SDK cho Android – java từ API 26 lên 32 kiểm thử Android 12 - Báo cáo, làm việc với mentor cho q trình triển khai cơng việc - Làm demo cho android native sử dụng kotlin, camera, call API, xử lý bất đồng bộ, có submit data, sử dụng bloc design pattern cho phần quản lý trạng thái để luân chuyển sang dự án 31 Bùi Thiện Nhân Thực tập tốt nghiệp CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC QUA ĐỢT THỰC TẬP Kết thu I - Trải nghiệm quy trình làm việc từ đầu đến cuối dự án thực tế theo mơ hình làm việc Agile Scrum - Xây dựng ứng dụng có tích hợp AI - Trau dồi nhiều kiến thức Mobile - Thao tác lập trình, tư duy, ý tưởng xử lý luồng liệu hiệu - Nâng cao khả research - Nhận người có cách coding riêng, cần chấp nhận nhìn nhận điều để thân phát triển hơn, tránh lãng phí chi phí làm việc - Biết cách dùng đồng đội tập trung vào mục tiêu cần giải buổi họp, lắng nghe thấu hiểu nhiều - Tự nhìn nhận đánh giá thân thơng qua buổi họp nhìn nhận rút kinh nghiệm để cải thiện công việc, rút ngắn thời gian làm việc - Kỹ giao tiếp, tư phản biện, giải vấn đề nâng cao Các điểm yếu thân II - Bản thân cần trau dồi kỹ research Cần cải thiện kỹ giải thích vấn đề thân III Gợi ý cho chương trình học - Rèn luyện kỹ mềm môi trường làm việc tốt IV Cảm nhận công ty - Cơ sở vật chất tốt, phịng rộng rãi, thống mát, thoải mái, - Phúc lợi tốt 32 Bùi Thiện Nhân Thực tập tốt nghiệp - Địa điểm cơng ty trung tâm, dễ tìm, tan ca dễ kẹt xe; nhiên công ty cho phép Work from home để giảm bớt chi phí ăn uống, lại thực tập sinh nhân viên - Có nơi nghỉ ngơi, - Thiết bị, máy móc hiệu làm việc cao, đường truyền internet mạnh - Mentor, đội ngũ phụ trách hướng dẫn giảng dạy thực tập đa dạng, vơ tận tâm nhiệt tình, trình độ chun mơn cao, hịa đồng, vui vẻ Review code thường xuyên 33 Bùi Thiện Nhân Thực tập tốt nghiệp DANH MỤC TÀI LIỆU THAM KHẢO [1] https://www.vitalify.asia/ [2] https://stackoverflow.com/ [3] https://viblo.asia/p/tim-hieu-ve-atomic-design-JlkRymxqRZW 34 ... Triển khai bắt đầu gọi native để load AI model Flutter - Đánh giá khả triển khai, hiệu ứng dụng tính khả thi dự án - Trình bày tiến độ triển khai, khó khăn gặp phải, khả xử lý vấn đề, đề xuất... dịng config phù hợp Bởi vì, AI Model ứng dụng phát triển native, nên bắt đầu chuyển sang Flutter sử dụng phương thức giao tiếp Flutter để gọi đến native bắt đầu load AI Model Nhiệm vụ sinh viên... server - Báo cáo cho PM Mentor để xét duyệt, tham gia vào dự án - PM Mentor đánh giá cá nhân trình thực tập - Bắt đầu nhận task cụ thể để tham gia vào dự án, tích hợp AI Model từ native vào Flutter